* .local/bin/change-theme: Only call emacsclient there is an emacs process.
[~bandali/configs] / .config / i3 / config
CommitLineData
17d2cfa0
AB
1exec --no-startup-id ~/.local/bin/startup-progs
2
3# super
4set $mod Mod4
5# alt
6set $mod2 Mod1
7# hyper
8set $mod3 Mod3
9
10# window title and bar font (unless specified differently in 'bar {}'
11font 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
15floating_modifier $mod
16
17# default tabbed
18workspace_layout tabbed
19
20# terminal
08b0fb0a
AB
21bindsym $mod+Return exec xterm
22bindsym $mod+Shift+Return exec xterm -name floating
23for_window [class="XTerm" instance="floating"] floating enable
17d2cfa0
AB
24
25# kill focused window (not necessarily its application)
26bindsym $mod+Shift+w kill
27# kill an application
28#bindsym --release $mod+Shift+x exec xkill
29
30# rofi launcher and pass
31bindsym $mod+space exec rofi -show run -display-run ' > ' -display-window ' 🗔 '
32bindsym $mod+backslash exec rofi -show window -display-run ' > ' -display-window ' 🗔 '
33bindsym $mod+Shift+space exec rofi-pass
34
35# brightness
36bindsym $mod+apostrophe exec rofi-light # rofi-based brightness chooser
37bindsym XF86MonBrightnessUp exec light -A 5 # increase screen brightness
38bindsym XF86MonBrightnessDown exec light -U 5 # decrease screen brightness
39
40# volume
e064bdbf 41bindsym $mod+semicolon exec rofi-pamixer # rofi-based volume chooser
17d2cfa0
AB
42bindsym XF86AudioRaiseVolume exec pamixer --allow-boost --increase 5
43bindsym XF86AudioLowerVolume exec pamixer --allow-boost --decrease 5
44bindsym XF86AudioMute exec pamixer --toggle-mute
45bindsym XF86AudioMicMute exec pactl set-source-mute 1 toggle
46
47# window focus
48bindsym $mod+h focus left
49bindsym $mod+j focus down
50bindsym $mod+k focus up
51bindsym $mod+l focus right
52bindsym $mod+Left focus left
53bindsym $mod+Down focus down
54bindsym $mod+Up focus up
55bindsym $mod+Right focus right
56
57# window move
58bindsym $mod+Shift+h move left
59bindsym $mod+Shift+j move down
60bindsym $mod+Shift+k move up
61bindsym $mod+Shift+l move right
62bindsym $mod+Shift+Left move left
63bindsym $mod+Shift+Down move down
64bindsym $mod+Shift+Up move up
65bindsym $mod+Shift+Right move right
66
67# horizontal and vertical orientation
68bindsym $mod+shift+backslash split h
69bindsym $mod+minus split v
70
71# enter fullscreen mode for the focused container
72bindsym $mod+f fullscreen toggle
73
74# change container layout (stacked, tabbed, toggle split)
75bindsym $mod+s layout stacking
76bindsym $mod+w layout tabbed
77bindsym $mod+e layout toggle split
78
79# toggle tiling / floating
80bindsym $mod+Shift+f floating toggle
230f7fe8 81bindsym $mod+period floating toggle
17d2cfa0
AB
82# toggle tiling / floating focus
83bindsym $mod+grave focus mode_toggle
230f7fe8 84bindsym $mod+comma focus mode_toggle
17d2cfa0
AB
85
86# toggle sticky
87bindsym $mod+shift+s sticky toggle
88
89# focus parent / child
90bindsym $mod+a focus parent
91bindsym $mod+Shift+a focus child
92
93# switch to workspace
94bindsym $mod+1 workspace 1
95bindsym $mod+2 workspace 2
96bindsym $mod+3 workspace 3
97bindsym $mod+4 workspace 4
98bindsym $mod+5 workspace 5
99bindsym $mod+6 workspace 6
100bindsym $mod+7 workspace 7
101bindsym $mod+8 workspace 8
102bindsym $mod+9 workspace 9
103bindsym $mod+0 workspace 10
104bindsym $mod+bracketleft workspace prev
105bindsym $mod+bracketright workspace next
106
107# move focused container to workspace
108bindsym $mod+Shift+1 move container to workspace 1
109bindsym $mod+Shift+2 move container to workspace 2
110bindsym $mod+Shift+3 move container to workspace 3
111bindsym $mod+Shift+4 move container to workspace 4
112bindsym $mod+Shift+5 move container to workspace 5
113bindsym $mod+Shift+6 move container to workspace 6
114bindsym $mod+Shift+7 move container to workspace 7
115bindsym $mod+Shift+8 move container to workspace 8
116bindsym $mod+Shift+9 move container to workspace 9
117bindsym $mod+Shift+0 move container to workspace 10
118bindsym $mod+Shift+bracketleft move container to workspace prev
119bindsym $mod+Shift+bracketright move container to workspace next
120
121# bspwm-esque workspace switch and container move
122bindsym $mod2+bracketleft exec b-ws-util i3 switch prev
123bindsym $mod2+bracketright exec b-ws-util i3 switch next
124bindsym $mod2+Shift+bracketleft exec b-ws-util i3 move prev follow
125bindsym $mod2+Shift+bracketright exec b-ws-util i3 move next follow
126
127set $mode_system System (l)ock | (e)xit i3 | (s)uspend | (h)ibernate | (r)eboot | (S)hutdown
128mode "$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
141bindsym $mod+Shift+c reload
142bindsym $mod+Shift+r restart
143bindsym $mod+Shift+e mode "$mode_system"
144
145# resize window (you can also use the mouse for that)
146mode "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}
168bindsym $mod+r mode "resize"
169
298f42fe
AB
170# change theme mode
171set $mode_theme theme (d)ark | (l)ight
172mode "$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}
179bindsym $mod+t mode "$mode_theme"
180
17d2cfa0
AB
181# application-specific window configurations
182for_window [class="mpv"] floating enable
183for_window [class="Mumble"] floating enable
184for_window [class="Nm-connection-editor"] floating enable
185for_window [class="Virt-manager"] floating enable
186
187# no title bars
188for_window [class="^.*"] border pixel 4
189
190# i3bar and system info from i3status
191bar {
192 status_command i3status | my-i3status
193 tray_output primary
194}