]> git.friedersdorff.com Git - max/saltfiles.git/blob - states/i3/files/config.jinja
Display i3 bar
[max/saltfiles.git] / states / i3 / files / config.jinja
1 {% set host = grains['host'] %}
2
3 # Colors
4 set $black #000000
5 set $black_super #555555
6
7 set $red #f92672
8 set $red_super #dd4278
9
10 set $green #74e22e
11 set $green_super #9dc54b
12
13 set $yellow #e6db74
14 set $yellow_super #d1ca89
15
16 set $blue #66d9ef
17 set $blue_super #7accda
18
19 set $magenta #ae81ff
20 set $magenta_super #b392ef
21
22 set $cyan #00d9d9
23 set $cyan_super #c8f0f0
24
25 set $white #f5deb3
26 set $white_super #ffffff
27
28 client.focused $black $yellow_super $black $black $black
29 client.focused_inactive $black $black_super $white $black $black 
30
31 set $mod Mod4
32
33 # Font for window titles. Will also be used by the bar unless a different font
34 # is used in the bar {} block below.
35 font pango:monospace 10
36
37 # This font is widely installed, provides lots of unicode glyphs, right-to-left
38 # text rendering and scalability on retina/hidpi displays (thanks to pango).
39 #font pango:DejaVu Sans Mono 8
40
41 # The combination of xss-lock, nm-applet and pactl is a popular choice, so
42 # they are included here as an example. Modify as you see fit.
43
44 exec xset dpms 600 900 0
45 # xss-lock grabs a logind suspend inhibit lock and will use i3lock to lock the
46 # screen before suspend. Use loginctl lock-session to lock your screen.
47 exec --no-startup-id xss-lock --transfer-sleep-lock -- i3lock -i ~/Pictures/lockscreen_full_blurred_1.png --nofork
48
49 # NetworkManager is the most popular way to manage wireless networks on Linux,
50 # and nm-applet is a desktop environment-independent system tray GUI for it.
51 exec --no-startup-id nm-applet
52
53 bindsym $mod+Shift+l exec systemctl suspend
54
55 # Use pactl to adjust volume in PulseAudio.
56 set $refresh_i3status killall -SIGUSR1 i3status
57 bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +10% && $refresh_i3status
58 bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -10% && $refresh_i3status
59 bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle && $refresh_i3status
60 bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle && $refresh_i3status
61
62 # Use Mouse+$mod to drag floating windows to their wanted position
63 floating_modifier $mod
64
65 # start a terminal
66 bindsym $mod+Return exec termite
67
68 # kill focused window
69 bindsym $mod+Shift+q kill
70
71 # start dmenu (a program launcher)
72 bindsym $mod+s exec "rofi -modi drun,run -show drun"
73 # A more modern dmenu replacement is rofi:
74 # bindcode $mod+40 exec rofi -modi drun,run -show drun
75 # There also is i3-dmenu-desktop which only displays applications shipping a
76 # .desktop file. It is a wrapper around dmenu, so you need that installed.
77
78 # change focus
79 bindsym $mod+n focus left
80 bindsym $mod+e focus down
81 bindsym $mod+i focus up
82 bindsym $mod+o focus right
83
84 # alternatively, you can use the cursor keys:
85 bindsym $mod+Left focus left
86 bindsym $mod+Down focus down
87 bindsym $mod+Up focus up
88 bindsym $mod+Right focus right
89
90 # move focused window
91 bindsym $mod+Shift+n move left
92 bindsym $mod+Shift+e move down
93 bindsym $mod+Shift+i move up
94 bindsym $mod+Shift+o move right
95
96 # alternatively, you can use the cursor keys:
97 bindsym $mod+Shift+Left move left
98 bindsym $mod+Shift+Down move down
99 bindsym $mod+Shift+Up move up
100 bindsym $mod+Shift+Right move right
101
102 # split in horizontal orientation
103 bindsym $mod+h split h
104
105 # split in vertical orientation
106 bindsym $mod+v split v
107
108 # enter fullscreen mode for the focused container
109 bindsym $mod+t fullscreen toggle
110
111 # change container layout (stacked, tabbed, toggle split)
112 bindsym $mod+r layout stacking
113 bindsym $mod+w layout tabbed
114 bindsym $mod+f layout toggle split
115
116 # toggle tiling / floating
117 bindsym $mod+Shift+space floating toggle
118
119 # change focus between tiling / floating windows
120 bindsym $mod+space focus mode_toggle
121
122 # focus the parent container
123 bindsym $mod+a focus parent
124
125 # focus the child container
126 #bindsym $mod+d focus child
127
128 # Define names for default workspaces for which we configure key bindings later on.
129 # We use variables to avoid repeating the names in multiple places.
130 set $ws1 "1"
131 set $ws2 "2"
132 set $ws3 "3"
133 set $ws4 "4"
134 set $ws5 "5"
135 set $ws6 "6"
136 set $ws7 "7"
137 set $ws8 "8"
138 set $ws9 "9"
139 set $ws10 "10"
140
141 set $music "Music"
142 set $chat "Chat"
143
144 # switch to workspace
145 bindsym $mod+1 workspace number $ws1
146 bindsym $mod+2 workspace number $ws2
147 bindsym $mod+3 workspace number $ws3
148 bindsym $mod+4 workspace number $ws4
149 bindsym $mod+5 workspace number $ws5
150 bindsym $mod+6 workspace number $ws6
151 bindsym $mod+7 workspace number $ws7
152 bindsym $mod+8 workspace number $ws8
153 bindsym $mod+9 workspace number $ws9
154 bindsym $mod+0 workspace number $ws10
155 bindsym $mod+m workspace $music
156 bindsym $mod+z workspace $chat
157
158 # move focused container to workspace
159 bindsym $mod+Shift+1 move container to workspace number $ws1
160 bindsym $mod+Shift+2 move container to workspace number $ws2
161 bindsym $mod+Shift+3 move container to workspace number $ws3
162 bindsym $mod+Shift+4 move container to workspace number $ws4
163 bindsym $mod+Shift+5 move container to workspace number $ws5
164 bindsym $mod+Shift+6 move container to workspace number $ws6
165 bindsym $mod+Shift+7 move container to workspace number $ws7
166 bindsym $mod+Shift+8 move container to workspace number $ws8
167 bindsym $mod+Shift+9 move container to workspace number $ws9
168 bindsym $mod+Shift+0 move container to workspace number $ws10
169 bindsym $mod+Shift+m move container to workspace $music
170 bindsym $mod+Shift+z move container to workspace $chat
171
172 # reload the configuration file
173 bindsym $mod+Shift+c reload
174 # restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
175 bindsym $mod+Shift+p restart
176 # exit i3 (logs you out of your X session)
177 bindsym $mod+Shift+f exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -B 'Yes, exit i3' 'i3-msg exit'"
178
179 # resize window (you can also use the mouse for that)
180 mode "resize" {
181         # These bindings trigger as soon as you enter the resize mode
182
183         # Pressing left will shrink the window’s width.
184         # Pressing right will grow the window’s width.
185         # Pressing up will shrink the window’s height.
186         # Pressing down will grow the window’s height.
187         bindsym n resize shrink width 10 px or 10 ppt
188         bindsym e resize grow height 10 px or 10 ppt
189         bindsym i resize shrink height 10 px or 10 ppt
190         bindsym o resize grow width 10 px or 10 ppt
191
192         # same bindings, but for the arrow keys
193         bindsym Left resize shrink width 10 px or 10 ppt
194         bindsym Down resize grow height 10 px or 10 ppt
195         bindsym Up resize shrink height 10 px or 10 ppt
196         bindsym Right resize grow width 10 px or 10 ppt
197
198         # back to normal: Enter or Escape or $mod+r
199         bindsym Return mode "default"
200         bindsym Escape mode "default"
201         bindsym $mod+p mode "default"
202 }
203
204 bindsym $mod+p mode "resize"
205
206 # Slight gaps around windows
207 gaps inner 6
208
209 {% if host == 'barium' %}
210 bar {
211   id bar_left
212   status_command ~/.local/bin/conky-i3bar
213   position top
214   output "HDMI-1"
215   font pango:Liberation Mono 11
216   colors {
217     background $black_super
218     focused_background $black
219     focused_workspace $black_super $yellow_super $black
220     active_workspace $black_super $blue_super $black
221     inactive_workspace $black_super $black_super $white_super
222     urgent_workspace $black $red_super $white
223     separator $white
224   }
225 }
226
227 bar {
228   id bar_internal
229   status_command ~/.local/bin/conky-i3bar
230   position top
231   output "eDP-1"
232   font pango:Liberation Mono 12
233   colors {
234     background $black_super
235     focused_background $black
236     focused_workspace $black_super $yellow_super $black
237     active_workspace $black_super $blue_super $black
238     inactive_workspace $black_super $black_super $white_super
239     urgent_workspace $black $red_super $white
240     separator $white
241   }
242 }
243
244 bar {
245   id bar_right
246   status_command ~/.local/bin/conky-i3bar
247   position top
248   output "DVI-I-2-1"
249   font pango:Liberation Mono 13
250   colors {
251     background $black_super
252     focused_background $black
253     focused_workspace $black_super $yellow_super $black
254     active_workspace $black_super $blue_super $black
255     inactive_workspace $black_super $black_super $white_super
256     urgent_workspace $black $red_super $white
257     separator $white
258   }
259 }
260
261 focus_on_window_activation urgent
262 no_focus [class="(!?.*pinentry.*)"]
263
264 workspace 2 output HDMI-A-1
265 workspace 4 output HDMI-A-1
266 workspace 1 output DP-1
267 workspace 3 output DP-1
268
269 workspace $music output DP-1
270 workspace $chat output DP-1 
271
272 assign [class="music"] workspace $music
273 for_window [class="music"] move workspace number $music
274 assign [class="spotify"] workspace $music
275 for_window [class="spotify"] move workspace number $music
276 assign [class="qutebrowser"] workspace number $ws1
277 for_window [class="qutebrowser"] move workspace number $ws1
278 assign [class="zoom"] workspace $chat
279 for_window [class="zoom"] move workspace $chat
280
281 exec "zoom"
282 exec "spotify"
283
284 {% elif host == 'dubnium' %}
285 bar {
286   id bar_left
287   position top
288   output "DP-0"
289   font pango:Liberation Mono 12
290   colors {
291     background $black_super
292     focused_background $black
293     focused_workspace $black_super $yellow_super $black
294     active_workspace $black_super $blue_super $black
295     inactive_workspace $black_super $black_super $white_super
296     urgent_workspace $black $red_super $white
297     separator $white
298   }
299 }
300
301 bar {
302   id bar_right
303   status_command ~/.local/bin/conky-i3bar
304   position top
305   output "DP-2"
306   font pango:Liberation Mono 12
307   colors {
308     background $black_super
309     focused_background $black
310     focused_workspace $black_super $yellow_super $black
311     active_workspace $black_super $blue_super $black
312     inactive_workspace $black_super $black_super $white_super
313     urgent_workspace $black $red_super $white
314     separator $white
315   }
316 }
317
318 workspace 1 output DP-0
319 workspace 2 output DP-2
320
321 {% elif host == 'rhenium' %}
322 bar {
323   id bar_right
324   status_command ~/.local/bin/conky-i3bar
325   position top
326   output "eDP-1"
327   font pango:Liberation Mono 12
328   colors {
329     background $black_super
330     focused_background $black
331     focused_workspace $black_super $yellow_super $black
332     active_workspace $black_super $blue_super $black
333     inactive_workspace $black_super $black_super $white_super
334     urgent_workspace $black $red_super $white
335     separator $white
336   }
337 }
338 {% endif %}
339
340 exec dunst
341 exec picom -i 0.95 -D 4