* .local/bin/change-theme: Only call emacsclient there is an emacs process.
[~bandali/configs] / .config / i3 / config
1 exec --no-startup-id ~/.local/bin/startup-progs
2
3 # super
4 set $mod Mod4
5 # alt
6 set $mod2 Mod1
7 # hyper
8 set $mod3 Mod3
9
10 # window title and bar font (unless specified differently in 'bar {}'
11 font pango:Source Code Pro 9.5
12 # font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
13
14 # for dragging floating windows with mouse
15 floating_modifier $mod
16
17 # default tabbed
18 workspace_layout tabbed
19
20 # terminal
21 bindsym $mod+Return exec xterm
22 bindsym $mod+Shift+Return exec xterm -name floating
23 for_window [class="XTerm" instance="floating"] floating enable
24
25 # kill focused window (not necessarily its application)
26 bindsym $mod+Shift+w kill
27 # kill an application
28 #bindsym --release $mod+Shift+x exec xkill
29
30 # rofi launcher and pass
31 bindsym $mod+space exec rofi -show run -display-run ' > ' -display-window ' 🗔 '
32 bindsym $mod+backslash exec rofi -show window -display-run ' > ' -display-window ' 🗔 '
33 bindsym $mod+Shift+space exec rofi-pass
34
35 # brightness
36 bindsym $mod+apostrophe exec rofi-light # rofi-based brightness chooser
37 bindsym XF86MonBrightnessUp exec light -A 5 # increase screen brightness
38 bindsym XF86MonBrightnessDown exec light -U 5 # decrease screen brightness
39
40 # volume
41 bindsym $mod+semicolon exec rofi-pamixer # rofi-based volume chooser
42 bindsym XF86AudioRaiseVolume exec pamixer --allow-boost --increase 5
43 bindsym XF86AudioLowerVolume exec pamixer --allow-boost --decrease 5
44 bindsym XF86AudioMute exec pamixer --toggle-mute
45 bindsym XF86AudioMicMute exec pactl set-source-mute 1 toggle
46
47 # window focus
48 bindsym $mod+h focus left
49 bindsym $mod+j focus down
50 bindsym $mod+k focus up
51 bindsym $mod+l focus right
52 bindsym $mod+Left focus left
53 bindsym $mod+Down focus down
54 bindsym $mod+Up focus up
55 bindsym $mod+Right focus right
56
57 # window move
58 bindsym $mod+Shift+h move left
59 bindsym $mod+Shift+j move down
60 bindsym $mod+Shift+k move up
61 bindsym $mod+Shift+l move right
62 bindsym $mod+Shift+Left move left
63 bindsym $mod+Shift+Down move down
64 bindsym $mod+Shift+Up move up
65 bindsym $mod+Shift+Right move right
66
67 # horizontal and vertical orientation
68 bindsym $mod+shift+backslash split h
69 bindsym $mod+minus split v
70
71 # enter fullscreen mode for the focused container
72 bindsym $mod+f fullscreen toggle
73
74 # change container layout (stacked, tabbed, toggle split)
75 bindsym $mod+s layout stacking
76 bindsym $mod+w layout tabbed
77 bindsym $mod+e layout toggle split
78
79 # toggle tiling / floating
80 bindsym $mod+Shift+f floating toggle
81 bindsym $mod+period floating toggle
82 # toggle tiling / floating focus
83 bindsym $mod+grave focus mode_toggle
84 bindsym $mod+comma focus mode_toggle
85
86 # toggle sticky
87 bindsym $mod+shift+s sticky toggle
88
89 # focus parent / child
90 bindsym $mod+a focus parent
91 bindsym $mod+Shift+a focus child
92
93 # switch to workspace
94 bindsym $mod+1 workspace 1
95 bindsym $mod+2 workspace 2
96 bindsym $mod+3 workspace 3
97 bindsym $mod+4 workspace 4
98 bindsym $mod+5 workspace 5
99 bindsym $mod+6 workspace 6
100 bindsym $mod+7 workspace 7
101 bindsym $mod+8 workspace 8
102 bindsym $mod+9 workspace 9
103 bindsym $mod+0 workspace 10
104 bindsym $mod+bracketleft workspace prev
105 bindsym $mod+bracketright workspace next
106
107 # move focused container to workspace
108 bindsym $mod+Shift+1 move container to workspace 1
109 bindsym $mod+Shift+2 move container to workspace 2
110 bindsym $mod+Shift+3 move container to workspace 3
111 bindsym $mod+Shift+4 move container to workspace 4
112 bindsym $mod+Shift+5 move container to workspace 5
113 bindsym $mod+Shift+6 move container to workspace 6
114 bindsym $mod+Shift+7 move container to workspace 7
115 bindsym $mod+Shift+8 move container to workspace 8
116 bindsym $mod+Shift+9 move container to workspace 9
117 bindsym $mod+Shift+0 move container to workspace 10
118 bindsym $mod+Shift+bracketleft move container to workspace prev
119 bindsym $mod+Shift+bracketright move container to workspace next
120
121 # bspwm-esque workspace switch and container move
122 bindsym $mod2+bracketleft exec b-ws-util i3 switch prev
123 bindsym $mod2+bracketright exec b-ws-util i3 switch next
124 bindsym $mod2+Shift+bracketleft exec b-ws-util i3 move prev follow
125 bindsym $mod2+Shift+bracketright exec b-ws-util i3 move next follow
126
127 set $mode_system System (l)ock | (e)xit i3 | (s)uspend | (h)ibernate | (r)eboot | (S)hutdown
128 mode "$mode_system" {
129 bindsym l exec i3lock, mode "default"
130 bindsym e exec i3-msg exit, mode "default"
131 bindsym s exec systemctl suspend, mode "default"
132 bindsym h exec systemctl hibernate, mode "default"
133 bindsym r exec systemctl reboot, mode "default"
134 bindsym Shift+s exec systemctl poweroff -i, mode "default"
135
136 bindsym Return mode "default"
137 bindsym Escape mode "default"
138 bindsym q mode "default"
139 }
140
141 bindsym $mod+Shift+c reload
142 bindsym $mod+Shift+r restart
143 bindsym $mod+Shift+e mode "$mode_system"
144
145 # resize window (you can also use the mouse for that)
146 mode "resize" {
147 # These bindings trigger as soon as you enter the resize mode
148
149 # Pressing left will shrink the window’s width.
150 # Pressing right will grow the window’s width.
151 # Pressing up will shrink the window’s height.
152 # Pressing down will grow the window’s height.
153 bindsym j resize shrink width 10 px or 10 ppt
154 bindsym k resize grow height 10 px or 10 ppt
155 bindsym l resize shrink height 10 px or 10 ppt
156 bindsym semicolon resize grow width 10 px or 10 ppt
157
158 # same bindings, but for the arrow keys
159 bindsym Left resize shrink width 10 px or 10 ppt
160 bindsym Down resize grow height 10 px or 10 ppt
161 bindsym Up resize shrink height 10 px or 10 ppt
162 bindsym Right resize grow width 10 px or 10 ppt
163
164 # back to normal: Enter or Escape
165 bindsym Return mode "default"
166 bindsym Escape mode "default"
167 }
168 bindsym $mod+r mode "resize"
169
170 # change theme mode
171 set $mode_theme theme (d)ark | (l)ight
172 mode "$mode_theme" {
173 bindsym d exec change-theme dark, mode "default"
174 bindsym l exec change-theme light, mode "default"
175 bindsym Return mode "default"
176 bindsym Escape mode "default"
177 bindsym q mode "default"
178 }
179 bindsym $mod+t mode "$mode_theme"
180
181 # application-specific window configurations
182 for_window [class="mpv"] floating enable
183 for_window [class="Mumble"] floating enable
184 for_window [class="Nm-connection-editor"] floating enable
185 for_window [class="Virt-manager"] floating enable
186
187 # no title bars
188 for_window [class="^.*"] border pixel 4
189
190 # i3bar and system info from i3status
191 bar {
192 status_command i3status | my-i3status
193 tray_output primary
194 }