-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathi3config-full
652 lines (591 loc) · 25.4 KB
/
i3config-full
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
# vim: filetype=config fdm=marker sw=4 ts=4 commentstring=#\ %s
# Modifiers {{{
set $shift Shift
set $ctrl Control
set $meta Mod4
set $alt Mod1
# }}}
# Direction keys {{{
set $up k
set $down j
set $left h
set $right l
# }}}
# Colors {{{
# class border backgr. text indicator child_border
# client.focused #4c7899 #285577 #ffffff #2e9ef4 #285577
# client.focused #00ff00 #007000 #ffffff #ffff00 #007000
client.focused #ee4400 #ff0000 #ffffff #ffff00 #ff0000
client.focused_inactive #333333 #5f676a #ffffff #484e50 #5f676a
client.unfocused #333333 #222222 #888888 #292d2e #222222
client.urgent #2f343a #900000 #ffffff #900000 #900000
client.placeholder #000000 #0c0c0c #ffffff #000000 #0c0c0c
client.background #ffffff
# }}}
# Font {{{
set $font "pango:DejaVu Sans Mono 9"
# set $font "pango:DejaVu Sans Mono 100"
# set $font pango:monospace 10
# set $font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
# set $font pango:Noto Sans Mono 10
font $font
# set $i3input i3-input -f "$font"
# TODO: make eval on right side of set work
set $i3input i3-input -f "pango:DejaVu Sans Mono 10"
# set $i3input i3-input -f "pango:DejaVu Sans Mono 50"
# }}}
# Default applications {{{
# set $browser google-chrome-stable --profile-directory=Default
set $browser google-chrome-stable
set $terminal kitty -o allow_remote_control=socket-only --listen-on unix:/tmp/kittyctrl --single-instance
set $terminal_tmux kitty -o allow_remote_control=socket-only --listen-on unix:/tmp/kittyctrl --single-instance zsh -ic 'tmm'
set $lock_now ~/bin/i3lock-wrapper.sh
# }}}
# Options {{{
# bindsym $meta+x exec i3-msg for_window [class=".*"] title_format "<b>%title</b> (%class - %instance)"
# for_window [class=".*"] title_format "%title"
# for_window [class=".*"] title_format "<b>%title</b> (%class - %instance)"
bindsym $meta+$alt+$ctrl+a exec /usr/bin/arandr
bindsym $meta+$alt+$ctrl+c exec /usr/bin/arandr
for_window [class="scrcpy"] move left, resize shrink width 700
# for_window [class="scrcpy"] resize set 40 0
# for_window [class="Arandr"] floating enable, resize set 400 400
bindsym $meta+$alt+$ctrl+e exec /usr/bin/xeyes
bindsym $meta+$alt+$ctrl+n exec /usr/bin/xeyes
for_window [class="XEyes"] floating enable, border none
# for_window [class="XEyes"] floating enable, resize set 350 200, border none
# bindsym $meta+$alt+$ctrl+p exec pavucontrol
bindsym $meta+$alt+$ctrl+p exec /usr/bin/pavucontrol
bindsym $meta+$alt+$ctrl+$shift+p exec /usr/bin/blueman-manager
# for_window [class="Pavucontrol"] floating enable, resize set 600 750
for_window [class="Pavucontrol"] floating enable, resize set 600 750
# for_window [class="Pidgin" window_role="buddy_list"] floating enable, resize set 540 260
for_window [class="jetbrains-studio" title="Breakpoints"] floating disable
for_window [class="jetbrains-studio" title="Change Signature"] floating disable
for_window [class="jetbrains-studio" title="Settings"] floating disable
# WM_NAME(STRING) = "Breakpoints" WM_CLASS(STRING) = "jetbrains-studio", "jetbrains-studio"
for_window [class="copyq" floating] floating disable
# assign [class="copyq"] $WS_LOG
# for_window [con_mark=""] title_format "T: <b>%title</b> (%class - %instance)"
hide_edge_borders none
floating_minimum_size 200 x 200
floating_modifier $alt
focus_follows_mouse yes
focus_wrapping yes # focus_wrapping force
force_display_urgency_hint 666 ms
no_focus [window_role="pop-up"]
popup_during_fullscreen leave_fullscreen # ignore, smart
show_marks yes
workspace_auto_back_and_forth yes
workspace_layout default # default, stacking, tabbed
# }}}
# Key bindings {{{
# Focus workspaces {{{
bindsym $meta+$alt+1 workspace number 1
bindsym $meta+$alt+2 workspace number 2
bindsym $meta+$alt+3 workspace number 3
bindsym $meta+$alt+4 workspace number 4
bindsym $meta+$alt+5 workspace number 5
bindsym $meta+$alt+6 workspace number 6
bindsym $meta+$alt+7 workspace number 7
bindsym $meta+$alt+8 workspace number 8
bindsym $meta+$alt+9 workspace number 9
bindsym $meta+$alt+0 workspace number 0
bindsym $meta+$shift+0 exec zsh ~/.dotfiles/bin/i3-win-last
# }}}
# Focus windows/containers {{{
bindsym $meta+$left focus left
bindsym $meta+c exec i3-win-cycle
bindsym $meta+shift+c exec i3-win-cycle
# bindsym $meta+shift+c focus mode_toggle
bindsym $meta+$right focus right
bindsym $meta+$up focus up
bindsym $meta+$down focus down
bindsym $meta+$shift+a focus parent
bindsym $meta+$ctrl+a focus parent
bindsym $meta+$shift+d focus child
bindsym $meta+$ctrl+d focus child
bindsym $meta+$shift+p focus output primary
bindsym $meta+$shift+s sticky toggle
# }}}
# Focus standard applications {{{
# bindsym $meta+$shift+3 [class="Google-chrome"] focus
# bindsym $meta+shift+1 fullscreen disable; [class="(?i)chrome" workspace="root"] focus
bindsym $meta+shift+3 [window_role="(?i)browser"] focus
# }}}
# Launch standard applications {{{
# Start a terminal {{{
bindsym $meta+Return exec $terminal_tmux
bindsym $meta+$shift+Return exec $terminal
bindsym $meta+7 split horizontal, exec $terminal
bindsym $meta+$shift+7 split horizontal, exec $terminal_tmux
bindsym $meta+8 split vertical, exec $terminal
bindsym $meta+$shift+8 split vertical, exec $terminal_tmux
# }}}
# Start a browser {{{
# bindsym $ctrl+Return exec $browser
bindsym $meta+n exec i3 workspace $(2> /dev/null shuf -n 1 /usr/share/dict/words || date '+%s'), exec $browser, exec ~/.dotfiles/bin/i3-ws-enum,
# TODO: Add delay such that new terminal show up on new workspace
# bindsym $shift+$meta+n exec i3 workspace $(2> /dev/null shuf -n 1 /usr/share/dict/words || date '+%s'), exec $terminal_tmux, exec ~/.dotfiles/bin/i3-ws-enum,
# }}}
# }}}
# Move focused container to workspace {{{
bindsym $meta+$alt+$shift+1 move container to workspace number 1
bindsym $meta+$alt+$shift+2 move container to workspace number 2
bindsym $meta+$alt+$shift+3 move container to workspace number 3
bindsym $meta+$alt+$shift+4 move container to workspace number 4
bindsym $meta+$alt+$shift+5 move container to workspace number 5
bindsym $meta+$alt+$shift+6 move container to workspace number 6
bindsym $meta+$alt+$shift+7 move container to workspace number 7
bindsym $meta+$alt+$shift+8 move container to workspace number 8
bindsym $meta+$alt+$shift+9 move container to workspace number 9
bindsym $meta+$alt+$shift+0 move container to workspace number 0
# }}}
# Switch active workspace {{{
bindsym $meta+3 workspace back_and_forth
# bindsym $meta+3 focus right
bindsym $meta+x [urgent=latest] focus
bindsym $meta+BackSpace focus output left
bindsym $meta+$shift+BackSpace focus output right
bindsym $meta+1 workspace prev_on_output
bindsym $meta+0x2c workspace prev_on_output
bindsym $meta+2 workspace next_on_output
bindsym $meta+0x2e workspace next_on_output
bindsym $ctrl+$meta+$alt+9 workspace prev
bindsym $ctrl+$meta+$alt+0 workspace next
bindsym $meta+$shift+1 workspace prev
bindsym $meta+$shift+2 workspace next
# exec --no-startup-id i3-msg 'workspace ii; exec kitty'
# exec --no-startup-id i3-msg 'workspace ii; exec kitty'
# workspace next
# bindsym $mod+x move container to workspace 3; workspace 3
# set workspace check
bindsym $meta+9 workspace $WS_COMS
bindsym $meta+0 workspace $WS_LOG
### }}}
# Kill focused window {{{
bindsym $meta+q kill
bindsym $meta+$shift+q kill
bindsym $alt+F4 kill
# }}}
# Change split {{{
bindsym $meta+v split toggle
bindsym $meta+shift+v layout toggle
# }}}
# Resize focused window {{{
bindsym $meta+$ctrl+$shift+$right resize grow width $step_size
bindsym $meta+$ctrl+$shift+$left resize shrink width $step_size
bindsym $meta+$ctrl+$shift+$up resize shrink height $step_size
bindsym $meta+$ctrl+$shift+$down resize grow height $step_size
bindsym $meta+shift+$right resize grow width $step_size; resize grow width $step_size; resize grow width $step_size
bindsym $meta+shift+$left resize shrink width $step_size; resize shrink width $step_size; resize shrink width $step_size
bindsym $meta+shift+$up resize shrink height $step_size; resize grow height $step_size; resize grow height $step_size
bindsym $meta+shift+$down resize grow height $step_size; resize shrink height $step_size; resize shrink height $step_size
# }}}
# Change container layout {{{
bindsym $meta+$ctrl+$left move left
bindsym $meta+$ctrl+$right move right
bindsym $meta+$ctrl+$up move up
bindsym $meta+$ctrl+$down move down
bindsym $meta+$ctrl+u focus left; split vertical; focus right; move left; layout stacking
bindsym $meta+$ctrl+i focus right; split vertical; focus left; move right; layout stacking
bindsym $meta+$ctrl+o focus right; split vertical; focus left; move right; layout stacking
bindsym $meta+e layout toggle split
bindsym $meta+s layout stacking
bindsym $meta+t layout tabbed
# }}}
# Move container to output {{{
bindsym $meta+$alt+$left move container to output left
bindsym $meta+$alt+$right move container to output right
bindsym $meta+0x5b move container to output left
bindsym $meta+$shift+0x5b move container to output left; focus output left
bindsym $meta+0x5d move container to output right
bindsym $meta+$shift+0x5d move container to output right; focus output right
# }}}
# Move container to workspace {{{
bindsym $meta+$ctrl+0x5b move container to workspace prev
bindsym $meta+$ctrl+0x5d move container to workspace next
bindsym $meta+$ctrl+$shift+0x5b move container to workspace prev; workspace prev
bindsym $meta+$ctrl+$shift+0x5d move container to workspace next; workspace next
# }}}
# Move workspace to output {{{
bindsym $meta+$alt+$shift+$left move workspace to output left; focus output left
bindsym $meta+$alt+$shift+$right move workspace to output right; focus output right
# }}}
# Fullscreen {{{
bindsym $meta+f layout toggle tabbed splith
bindsym $meta+$shift+f fullscreen
# bindsym $meta+$shift+f fullscreen disable; focus parent; layout toggle tabbed splith; focus child
bindsym $meta+z fullscreen disable; focus parent; layout toggle tabbed splith; focus child
# bindsym $meta+$ctrl+$shift+f fullscreen global
bindsym $meta+$ctrl+$shift+f fullscreen global
bindsym $meta+$shift+z fullscreen global
# }}}
# Toggle tiling / floating {{{
bindsym $meta+i focus mode_toggle
bindsym $meta+shift+i floating toggle
# }}}
# Changing border style {{{
bindsym $meta+b border toggle
bindsym $meta+$shift+b border toggle
# }}}
# Screen brightness {{{
bindsym $meta+$alt+$ctrl+$down exec lux -s 90
bindsym $meta+$alt+$ctrl+$up exec lux -a 90
bindsym $meta+$alt+$ctrl+$shift+$down exec lux -S 1%
bindsym $meta+$alt+$ctrl+$shift+$up exec lux -S 100%
bindsym $meta+$alt+$ctrl+$right exec redshift -x
bindsym $meta+$alt+$ctrl+$left exec redshift -O 4500
# }}}
# Lock screen {{{
bindsym $meta+a exec $lock_now
bindsym $meta+w exec $lock_now & sleep 0.01 && pgrep i3lock && ~/bin/sus || notify-send -u critical "WARNING: i3lock failed."
bindsym $meta+$shift+w exec sus || notify-send -u critical "WARNING: suspend failed."
bindsym $meta+$ctrl+w exec $lock_now & sleep 0.01 && pgrep i3lock && hib || notify-send -u critical "WARNING: i3lock failed."
bindsym $meta+$ctrl+$shift+w exec hib || notify-send -u critical "WARNING: hibernate failed."
bindsym $meta+$ctrl+$alt+w exec rfkill list wifi | grep -q -- "Soft blocked: yes" && rfkill unblock wifi || rfkill block wifi
bindsym $meta+$ctrl+$alt+b exec rfkill block all
bindsym $meta+$ctrl+$alt+$shift+b exec rfkill block all
# }}}
# Pulse audio volume control {{{
set $pa_toggle_mute_sink exec pactl set-sink-mute @DEFAULT_SINK@ toggle
set $pa_volume_down exec pactl set-sink-volume @DEFAULT_SINK@ '-4%'
set $pa_volume_up exec pactl set-sink-volume @DEFAULT_SINK@ '+6%'
bindsym $alt+F9 $pa_toggle_mute_sink
bindsym $alt+F10 $pa_volume_down
bindsym $alt+F11 $pa_volume_up
bindsym $alt+F12 $pa_toggle_mute_sink
bindsym XF86AudioMute $pa_toggle_mute_sink
bindsym XF86AudioLowerVolume $pa_volume_down
bindsym XF86AudioRaiseVolume $pa_volume_up
bindsym $meta+$alt+$ctrl+0x2c $pa_volume_down
bindsym $meta+$alt+$ctrl+0x2e $pa_volume_up
bindsym $meta+$alt+$ctrl+0x2f $pa_toggle_mute_sink
bindsym $meta+$alt+$ctrl+m $pa_toggle_mute_sink
set $pa_toggle_mute_source exec pactl set-source-mute @DEFAULT_SOURCE@ toggle
set $pa_volume_down_source exec pactl set-source-volume @DEFAULT_SOURCE@ '-4%'
set $pa_volume_up_source exec pactl set-source-volume @DEFAULT_SOURCE@ '+6%'
bindsym $alt+$shift+F9 $pa_toggle_mute_source
bindsym $alt+$shift+F10 $pa_volume_down_source
bindsym $alt+$shift+F11 $pa_volume_up_source
bindsym $alt+$shift+F12 $pa_toggle_mute_source
bindsym $meta+$alt+$ctrl+$shift+0x2c $pa_volume_down_source
bindsym $meta+$alt+$ctrl+$shift+0x2e $pa_volume_up_source
bindsym $meta+$alt+$ctrl+$shift+0x2f $pa_toggle_mute_source
bindsym $meta+$alt+$ctrl+$shift+m $pa_toggle_mute_source
# }}}
# Rofi {{{
bindsym $alt+Tab exec rofi -fullscreen -show window
# TODO: make it toggle-cycle through windows (...and move binding)
# bindsym $alt+Tab workspace back_and_forth
bindsym $alt+space exec rofi -mesg ok -fullscreen -show combi
bindsym $meta+space exec rofi -mesg ok -fullscreen -show combi
# bindsym $meta+space exec rofi -show run -sidebar-mode -lines 0
bindsym $alt+$ctrl+$shift+s exec python ~/.dotfiles/bin/rofimoji.py
# }}}
# Miscellaneous {{{
bindsym $meta+$shift+r reload
bindsym $meta+$ctrl+$shift+r restart
bindsym $meta+$shift+n bar mode toggle
# bindsym $meta+$alt+space exec $i3input -F 'workspace "%s"\' -P 'New workspace: '
bindsym $meta+$alt+space exec i3-ws-new $(dmenu -p 'New workspace: ')
bindsym $meta+d workspace desktop
# bindsym $meta+$alt+space exec notify-send O,exec notify-send P
# bindsym $meta+$alt+space exec $i3input -F 'exec notify-send O,exec notify-send P -P 'New workspace: '
# }}}
# Mode bindings {{{
set $mode_i3 "[i3: b:border h:hide, i:float, m:scratchpad, r:rename ws, s:toggle bar, t:tag, y:sticky]"
set $mode_move "[move: hjkl]"
set $mode_resize "[resize: hjkl+shift/ctrl]"
set $mode_manipulate "[manipulate: hjkl+shift/ctrl]"
set $mode_system "[system: l:lock, s:suspend, S:lock&suspend, h:hibernate]"
set $mode_wallpaper "[walpaper: n:next, p:previous, d:disable, e:enable, f:favorite]"
set $mode_return mode "default"
set $step_size 20 px
# Mode "i3" {{{
set $mode_i3_key u
bindsym $meta+$mode_i3_key mode $mode_i3
mode $mode_i3 {
bindsym $shift+h move window to workspace "new", $mode_return
bindsym a exec xrandr --output eDP-1 --primary --auto --output HDMI-1 --off --output HDMI-2 --off --output DP-1-1 --off --output DP-1-2 --off --output DP-1-3 --off --output DP-2-1 --off --output DP-2-2 --off --output DP-2-3 --off, exec i3-ws-primary, $mode_return
# bindsym x exec xrandr --output eDP-1 --off --output DP-2-1 --auto --primary --right-of eDP-1, $mode_return
bindsym x exec xrandr --output eDP-1 --off --output DP-1-1 --auto --primary, $mode_return
bindsym x exec xrandr --output eDP-1 --auto --output DP-1-1 --auto --primary --right-of eDP-1, $mode_return
bindsym c exec autorandr --change, $mode_return
bindsym $shift+x exec i3-ws-primary, $mode_return
bindsym b border toggle
bindsym h move scratchpad, $mode_return
bindsym i floating toggle, $mode_return
bindsym m scratchpad show, $mode_return
bindsym n move window to workspace "new", exec ~/.dotfiles/bin/i3-ws-enum, $mode_return
bindsym r exec $i3input -F 'rename workspace to "%s"' -P 'Rename workspace: ', $mode_return
bindsym $shift+r exec reload, $mode_return
bindsym 0x2c exec $i3input -F 'rename workspace to "%s"' -P 'Rename workspace: ', $mode_return
bindsym s bar mode toggle, $mode_return
bindsym t exec $i3input -F 'mark "%s"' -P 'tag: ', $mode_return
bindsym v split toggle
bindsym y sticky toggle, $mode_return
# bindsym $meta+u exec i3 workspace $(2> /dev/null shuf -n 1 /usr/share/dict/words || date '+%s'), exec $browser, exec ~/.dotfiles/bin/i3-ws-enum,
bindsym $meta+u exec notify-send "i3: Entering recursive mode", exec ln -sf ~/.dotfiles/i3config-recursive ~/.config/i3/config, reload, $mode_return
# TODO: Make the following binding work
# bindsym "," exec $i3input -F 'rename workspace to "%s"' -P 'Rename workspace: ', $mode_return
# bindsym n exec $i3input -F 'move container to workspace %s' -P 'Move container to new workspace: ', $mode_return
bindsym n exec i3-ws-move, $mode_return
bindsym $shift+n exec i3-ws-move -f, $mode_return
# Exit mode
bindsym $ctrl+c $mode_return
bindsym $ctrl+0x5b $mode_return
bindsym Return $mode_return
bindsym Escape $mode_return
bindsym $meta+$mode_i3_key $mode_return
}
# }}}
# Mode "move" {{{
bindsym $meta+m mode $mode_move
mode $mode_move {
bindsym $left move left
bindsym $up move up
bindsym $down move down
bindsym $right move right
bindsym $shift+$left move left 80
bindsym $shift+$up move up 80
bindsym $shift+$down move down 80
bindsym $shift+$right move right 80
# TODO: add shift mod to move faster (i.e. more pixels)
# Exit mode
bindsym $ctrl+c $mode_return
bindsym $ctrl+0x5b $mode_return
bindsym Return $mode_return
bindsym Escape $mode_return
bindsym $meta+m $mode_return
bindsym $meta+r mode $mode_resize
bindsym r mode $mode_resize
bindsym $meta+$shift+m mode $mode_manipulate
bindsym $shift+m mode $mode_manipulate
bindsym m mode $mode_manipulate
}
# }}}
# Mode "resize" {{{
bindsym $meta+r mode $mode_resize
mode $mode_resize {
# bindsym $right resize shrink width $step_size
bindsym $left resize shrink width $step_size
bindsym $right resize grow width $step_size
bindsym $up resize shrink height $step_size
bindsym $down resize grow height $step_size
bindsym $ctrl+$left resize shrink width $step_size; resize shrink height $step_size
bindsym $ctrl+$right resize grow width $step_size; resize grow height $step_size
bindsym $ctrl+$up resize shrink width $step_size; resize shrink height $step_size
bindsym $ctrl+$down resize grow height $step_size; resize grow width $step_size
bindsym shift+$left move left $step_size
bindsym shift+$up move up $step_size
bindsym shift+$down move down $step_size
bindsym shift+$right move right $step_size
# Exit mode
bindsym $ctrl+c $mode_return
bindsym $ctrl+0x5b $mode_return
bindsym Return $mode_return
bindsym Escape $mode_return
bindsym $meta+r $mode_return
bindsym $meta+m mode $mode_move
bindsym m mode $mode_move
bindsym r mode $mode_move
bindsym $meta+shift+m mode $mode_manipulate
}
# }}}
# Mode "manipulate" {{{
bindsym $meta+shift+m mode $mode_manipulate
mode $mode_manipulate {
bindsym $left resize shrink width $step_size
bindsym $up resize shrink height $step_size
bindsym $down resize grow height $step_size
bindsym $right resize grow width $step_size
bindsym $ctrl+$left resize shrink width $step_size; resize shrink height $step_size
bindsym $ctrl+$right resize grow width $step_size; resize grow height $step_size
bindsym $ctrl+$up resize shrink width $step_size; resize shrink height $step_size
bindsym $ctrl+$down resize grow height $step_size; resize grow width $step_size
bindsym shift+$left move left $step_size
bindsym shift+$up move up $step_size
bindsym shift+$down move down $step_size
bindsym shift+$right move right $step_size
bindsym 1 resize set 250 0
bindsym 2 resize set 500 0
bindsym 3 resize set 50ppt 0
bindsym 4 resize set 60ppt 0
bindsym 9 resize set 30ppt 0
bindsym 0 resize set 90ppt 0
bindsym i floating toggle
# Exit mode
bindsym $ctrl+c $mode_return
bindsym $ctrl+0x5b $mode_return
bindsym Return $mode_return
bindsym Escape $mode_return
bindsym $meta+shift+m $mode_return
bindsym $meta+r mode $mode_resize
bindsym k mode $mode_resize
bindsym $meta+m mode $mode_move
bindsym m mode $mode_move
}
# }}}
# # Mode "system" {{{
# bindsym $meta+o mode $mode_system
# mode $mode_system {
# bindsym l exec $lock_now, $mode_return
# bindsym s exec sus, $mode_return
# bindsym $shift+l exec $lock_now && sleep 0.1 && sus, $mode_return
# bindsym o exec $lock_now && sleep 0.1 && sus, $mode_return
# bindsym $shift+s exec $lock_now && sleep 0.1 && sus, $mode_return
# bindsym h exec $lock_now && sleep 0.1 && hib, $mode_return
# bindsym $shift+h exec $lock_now && sleep 0.1 && hib, $mode_return
# # Exit mode
# bindsym $ctrl+c $mode_return
# bindsym $ctrl+0x5b $mode_return
# bindsym Return $mode_return
# bindsym Escape $mode_return
# bindsym $meta+f $mode_return
# bindsym $meta+o $mode_return
# }
# # }}}
# Mode "wallpaper" {{{
bindsym $meta+p mode $mode_wallpaper
mode $mode_wallpaper {
bindsym n workspace --no-auto-back-and-forth desktop, exec variety --next
bindsym p exec variety --previous
bindsym f exec variety --favorite, $mode_return
# bindsym $shift+P exec variety --show-preferences, $mode_return
bindsym d exec variety --quit, exec xsetroot -solid black, exec rm -f /tmp/i3lock.png, $mode_return
bindsym e exec variety, exec xsetroot -solid black, $mode_return
bindsym c exec variety --current | tr -d \n | xclip, $mode_return
# Exit mode
bindsym $ctrl+c $mode_return
bindsym $ctrl+0x5b $mode_return
bindsym Return $mode_return
bindsym Escape $mode_return
bindsym $meta+f $mode_return
bindsym $meta+o $mode_return
}
# }}}
# }}}
# }}}
# Mouse bindings {{{
bindsym --release --whole-window $meta+button1 floating toggle
bindsym --release --whole-window $meta+button2 kill
bindsym --release button2 kill
bindsym button3 floating toggle
bindsym button4 resize shrink width $step_size
bindsym button5 resize grow width $step_size
bindsym $shift+button4 resize shrink height $step_size
bindsym $shift+button5 resize grow height $step_size
# bindsym $alt+$shift+button4 resize shrinkg height $step_size, resize shrink height $step_size
# bindsym $alt+$shift+button5 resize grow height $step_size, resize grow height $step_size
bindsym --whole-window $alt+button4 resize shrink height $step_size, resize shrink width $step_size
bindsym --whole-window $ctrl+$alt+button4 resize shrink height $step_size
bindsym --whole-window $shift+$alt+button4 resize shrink width $step_size
bindsym --whole-window $alt+button5 resize grow height $step_size, resize grow width $step_size
bindsym --whole-window $ctrl+$alt+button5 resize grow height $step_size
bindsym --whole-window $shift+$alt+button5 resize grow width $step_size
# The side buttons move the window around
bindsym button8 move right
bindsym button9 move left
# bindsym --whole-window $mod+button1 move right
# }}}
# Bars {{{
bar {
position top
font $font
status_command ~/bin/i3status_wrapper
tray_output primary
tray_padding 3 px
separator_symbol "|"
strip_workspace_numbers no
strip_workspace_name no
binding_mode_indicator yes
workspace_buttons yes
# mode dock
# hidden_state show
colors {
background #000000
statusline #ffffff
separator #709099
focused_workspace #4c7899 #007000 #ffffff
active_workspace #555555 #5f676a #ffffff
inactive_workspace #333333 #222222 #888888
urgent_workspace #2f343a #900000 #ffffff
binding_mode #2f343a #909000 #ffffff
}
}
# }}}
# Default workspaces {{{
# WS_LOG {{{
set $WS_LOG "0:log"
# assign [class="copyq"] $WS_LOG
exec --no-startup-id i3-msg 'workspace $WS_LOG; exec $terminal_tmux'
# }}}
# WS_COMS {{{
set $WS_COMS "1:coms"
exec --no-startup-id i3-msg 'workspace $WS_COMS; exec $terminal_tmux'
assign [class="Google-chrome" title="Telegram Web - Google Chrome"] $WS_COMS
assign [class="Signal" ] $WS_COMS
assign [instance="crx_nckgahadagoaajjgafhacjanaoiihapd"] $WS_COMS
assign [class="Pidgin"] $WS_COMS
# }}}
# # WS_ROOT {{{
# set $WS_ROOT "2:root"
# exec --no-startup-id i3-msg 'workspace $WS_ROOT; exec $terminal_tmux'
# # exec --no-startup-id i3-msg 'workspace $WS_ROOT; exec $browser'
# # }}}
# WS_NGEN {{{
set $WS_NGEN "2:ngen"
exec --no-startup-id i3-msg 'workspace $WS_NGEN; exec $terminal_tmux'
# exec --no-startup-id i3-msg 'workspace $WS_NGEN; exec $browser'
# }}}
# WS_UML {{{
set $WS_UML "3:UML"
# exec --no-startup-id i3-msg 'workspace $WS_UML; exec $terminal_tmux'
# exec --no-startup-id i3-msg 'workspace $WS_UML; exec $browser'
# }}}
# WS_WWW {{{
set $WS_WWW "4:www"
exec --no-startup-id i3-msg 'workspace $WS_WWW; exec $terminal_tmux'
# exec --no-startup-id i3-msg 'workspace $WS_WWW; exec $browser'
# }}}
# WS_TV {{{
set $WS_TV "5:TV"
exec --no-startup-id i3-msg 'workspace $WS_TV; exec $terminal_tmux'
# exec --no-startup-id i3-msg 'workspace $WS_TV; exec $browser'
# }}}
# WS_QEMU {{{
set $WS_QEMU "qemu"
assign [class="qemu-system-x86_64"] $WS_QEMU
assign [title="Emulator"] $WS_QEMU
# for_window [title="Emulator"] floating enable
for_window [title="Emulator"] floating disable
# }}}
# }}}
# Autostart {{{
exec_always --no-startup-id xset -b -c r rate 200 140 dpms 0 0 2400 s off
exec_always --no-startup-id setxkbmap -layout us,de -option grp:alt_caps_toggle
exec_always --no-startup-id xmodmap -e "keycode 94 = asciitilde asciitilde asciitilde asciitilde"
exec_always --no-startup-id systemctl is-active --user --quiet dunst.service || dunst
bindsym $ctrl+$shift+space exec dunstctl close
bindsym $ctrl+$shift+1 exec dunstpaused
bindsym $ctrl+$shift+2 exec dunstpause
bindsym $ctrl+$shift+3 exec dunstctl history-pop
# xautolock's hotcorner seem to get confused when switching monitor setup
# exec_always --no-startup-id xautolock -time 9 -corners '--++' -cornerdelay 1 -cornerredelay 60 -locker i3lock-wrapper.sh -detectsleep
exec_always --no-startup-id xss-lock --verbose --transfer-sleep-lock -- ~/.dotfiles/bin/i3lock-wrapper.sh
exec_always --no-startup-id nm-applet
exec_always --no-startup-id pa-applet
exec_always --no-startup-id killall unclutter ; unclutter --ignore-scrolling --fork --timeout 5
exec_always --no-startup-id copyq
# exec_always --no-startup-id firewall-applet
exec_always --no-startup-id xsetroot -solid black
# exec_always --no-startup-id variety --next
# exec_always --no-startup-id blueman-tray
exec_always --no-startup-id blueman-applet
exec_always --no-startup-id pgrep -x firewall-applet || firewall-applet
exec_always --no-startup-id xsetroot -solid black
# exec_always --no-startup-id variety --next
exec_always --no-startup-id blueman-tray
exec_always --no-startup-id notify-send "i3config loaded."
# }}}