summaryrefslogtreecommitdiffstats
path: root/.config/i3/config
blob: 59fc1b13a34962708bc56b2876001ab1aa65d913 (plain) (blame)
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
exec --no-startup-id ~/.local/bin/startup-progs

# super
set $mod Mod4
# alt
set $mod2 Mod1
# hyper
set $mod3 Mod3

# window title and bar font (unless specified differently in 'bar {}'
# font pango:Source Code Pro 9.5
font pango:Inconsolata 11.5
# font -misc-fixed-medium-r-normal--13-120-75-75-c-70-iso10646-1
# font -misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso10646-1

# for dragging floating windows with mouse
floating_modifier $mod

# default tabbed
workspace_layout tabbed

# terminal
bindsym $mod+Return exec xterm
bindsym $mod+Shift+Return exec xterm -name floating
for_window [class="XTerm" instance="floating"] floating enable

# kill focused window (not necessarily its application)
bindsym $mod+Shift+w kill
# kill an application
#bindsym --release $mod+Shift+x exec xkill

# rofi launcher and pass
bindsym $mod+space exec rofi -show run -display-run ' > ' -display-window ' 🗔 '
bindsym $mod+backslash exec rofi -show window -display-run ' > ' -display-window ' 🗔 '
bindsym $mod+Shift+space exec rofi-pass

# brightness
bindsym $mod+apostrophe exec rofi-light        # rofi-based brightness chooser
bindsym XF86MonBrightnessUp exec light -A 5    # increase screen brightness
bindsym XF86MonBrightnessDown exec light -U 5  # decrease screen brightness

# volume
bindsym $mod+semicolon exec rofi-pamixer       # rofi-based volume chooser
bindsym XF86AudioRaiseVolume exec pamixer --allow-boost --increase 5
bindsym XF86AudioLowerVolume exec pamixer --allow-boost --decrease 5
bindsym XF86AudioMute        exec pamixer --toggle-mute
bindsym XF86AudioMicMute     exec pactl set-source-mute 1 toggle

# window focus
bindsym $mod+h focus left
bindsym $mod+j focus down
bindsym $mod+k focus up
bindsym $mod+l focus right
bindsym $mod+Left focus left
bindsym $mod+Down focus down
bindsym $mod+Up focus up
bindsym $mod+Right focus right

# window move
bindsym $mod+Shift+h move left
bindsym $mod+Shift+j move down
bindsym $mod+Shift+k move up
bindsym $mod+Shift+l move right
bindsym $mod+Shift+Left move left
bindsym $mod+Shift+Down move down
bindsym $mod+Shift+Up move up
bindsym $mod+Shift+Right move right

# horizontal and vertical orientation
bindsym $mod+shift+backslash split h
bindsym $mod+minus split v

# enter fullscreen mode for the focused container
bindsym $mod+f fullscreen toggle

# change container layout (stacked, tabbed, toggle split)
bindsym $mod+s layout stacking
bindsym $mod+w layout tabbed
bindsym $mod+e layout toggle split

# toggle tiling / floating
bindsym $mod+Shift+f floating toggle
bindsym $mod+period floating toggle
# toggle tiling / floating focus
bindsym $mod+grave focus mode_toggle
bindsym $mod+comma focus mode_toggle

# toggle sticky
bindsym $mod+shift+s sticky toggle

# focus parent / child
bindsym $mod+a focus parent
bindsym $mod+Shift+a focus child

# switch to workspace
bindsym $mod+1 workspace 1
bindsym $mod+2 workspace 2
bindsym $mod+3 workspace 3
bindsym $mod+4 workspace 4
bindsym $mod+5 workspace 5
bindsym $mod+6 workspace 6
bindsym $mod+7 workspace 7
bindsym $mod+8 workspace 8
bindsym $mod+9 workspace 9
bindsym $mod+0 workspace 10
bindsym $mod+bracketleft  workspace prev
bindsym $mod+bracketright workspace next

# move focused container to workspace
bindsym $mod+Shift+1 move container to workspace 1
bindsym $mod+Shift+2 move container to workspace 2
bindsym $mod+Shift+3 move container to workspace 3
bindsym $mod+Shift+4 move container to workspace 4
bindsym $mod+Shift+5 move container to workspace 5
bindsym $mod+Shift+6 move container to workspace 6
bindsym $mod+Shift+7 move container to workspace 7
bindsym $mod+Shift+8 move container to workspace 8
bindsym $mod+Shift+9 move container to workspace 9
bindsym $mod+Shift+0 move container to workspace 10
bindsym $mod+Shift+bracketleft  move container to workspace prev
bindsym $mod+Shift+bracketright move container to workspace next

# bspwm-esque workspace switch and container move
bindsym $mod2+bracketleft        exec b-ws-util i3 switch prev
bindsym $mod2+bracketright       exec b-ws-util i3 switch next
bindsym $mod2+Shift+bracketleft  exec b-ws-util i3 move   prev follow
bindsym $mod2+Shift+bracketright exec b-ws-util i3 move   next follow

set $mode_system System (l)ock | (e)xit i3 | (s)uspend | (h)ibernate | (r)eboot | (S)hutdown
mode "$mode_system" {
    bindsym l       exec i3lock,                mode "default"
    bindsym e       exec i3-msg exit,           mode "default"
    bindsym s       exec systemctl suspend,     mode "default"
    bindsym h       exec systemctl hibernate,   mode "default"
    bindsym r       exec systemctl reboot,      mode "default"
    bindsym Shift+s exec systemctl poweroff -i, mode "default"

    bindsym Return  mode "default"
    bindsym Escape  mode "default"
    bindsym q       mode "default"
}

bindsym $mod+Shift+c reload
bindsym $mod+Shift+r restart
bindsym $mod+Shift+e mode "$mode_system"

# resize window (you can also use the mouse for that)
mode "resize" {
        # These bindings trigger as soon as you enter the resize mode

        # Pressing left will shrink the window’s width.
        # Pressing right will grow the window’s width.
        # Pressing up will shrink the window’s height.
        # Pressing down will grow the window’s height.
        bindsym j resize shrink width 10 px or 10 ppt
        bindsym k resize grow height 10 px or 10 ppt
        bindsym l resize shrink height 10 px or 10 ppt
        bindsym semicolon resize grow width 10 px or 10 ppt

        # same bindings, but for the arrow keys
        bindsym Left resize shrink width 10 px or 10 ppt
        bindsym Down resize grow height 10 px or 10 ppt
        bindsym Up resize shrink height 10 px or 10 ppt
        bindsym Right resize grow width 10 px or 10 ppt

        # back to normal: Enter or Escape
        bindsym Return mode "default"
        bindsym Escape mode "default"
}
bindsym $mod+r mode "resize"

# change theme mode
set $mode_theme theme (d)ark | (l)ight
mode "$mode_theme" {
        bindsym d exec change-theme dark,  mode "default"
        bindsym l exec change-theme light, mode "default"
        bindsym Return mode "default"
        bindsym Escape mode "default"
        bindsym q      mode "default"
}
bindsym $mod+t mode "$mode_theme"

# application-specific window configurations
for_window [class="mpv"] floating enable
for_window [class="Mumble"] floating enable
for_window [class="Nm-connection-editor"] floating enable
for_window [class="Virt-manager"] floating enable

# no title bars
for_window [class="^.*"] border pixel 4

# i3bar and system info from i3status
bar {
    status_command i3status | my-i3status
    tray_output primary
}