i3: use include to simplify config

This commit is contained in:
Guillaume Dott 2026-08-21 14:17:44 +02:00
parent 2d3f1bf1bd
commit ad8de20a25
9 changed files with 337 additions and 306 deletions

76
i3/conf.d/05-modes.conf Normal file
View File

@ -0,0 +1,76 @@
# resize window (you can also use the mouse for that)
mode "resize" {
bindsym t resize shrink width 10 px or 10 ppt
bindsym s resize grow height 10 px or 10 ppt
bindsym r resize shrink height 10 px or 10 ppt
bindsym n 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"
}
mode "move" {
set $normal 50
set $withshift 5
set $withcontrol 100
set $withmod 200
bindsym t move left $normal px
bindsym s move down $normal px
bindsym r move up $normal px
bindsym n move right $normal px
bindsym Left move left $normal px
bindsym Down move down $normal px
bindsym Up move up $normal px
bindsym Right move right $normal px
bindsym Shift+t move left $withshift px
bindsym Shift+s move down $withshift px
bindsym Shift+r move up $withshift px
bindsym Shift+n move right $withshift px
bindsym Shift+Left move left $withshift px
bindsym Shift+Down move down $withshift px
bindsym Shift+Up move up $withshift px
bindsym Shift+Right move right $withshift px
bindsym Control+t move left $withcontrol px
bindsym Control+s move down $withcontrol px
bindsym Control+r move up $withcontrol px
bindsym Control+n move right $withcontrol px
bindsym Control+Left move left $withcontrol px
bindsym Control+Down move down $withcontrol px
bindsym Control+Up move up $withcontrol px
bindsym Control+Right move right $withcontrol px
bindsym $mod+t move left $withmod px
bindsym $mod+s move down $withmod px
bindsym $mod+r move up $withmod px
bindsym $mod+n move right $withmod px
bindsym $mod+Left move left $withmod px
bindsym $mod+Down move down $withmod px
bindsym $mod+Up move up $withmod px
bindsym $mod+Right move right $withmod px
bindsym Return mode "default"
bindsym Escape mode "default"
}
mode "launch" {
bindsym f exec firefox; mode "default"
bindsym t exec thunderbird; mode "default"
bindsym s exec steam; mode "default"
bindsym Escape mode "default"
bindsym Return mode "default"
}

View File

@ -0,0 +1,146 @@
# start a terminal
bindsym $mod+Return exec alacritty
bindsym $mod+b exec i3lock -i ~/.config/i3/matrix.png -t
# kill focused window
bindsym $mod+Shift+q kill
# start dmenu (a program launcher)
bindsym $mod+i exec rofi -show
# change focus
bindsym $mod+h focus left
bindsym $mod+j focus down
bindsym $mod+k focus up
bindsym $mod+l focus right
# alternatively, you can use the cursor keys:
bindsym $mod+Left focus left
bindsym $mod+Down focus down
bindsym $mod+Up focus up
bindsym $mod+Right focus right
# move focused window
bindsym $mod+Shift+h move left
bindsym $mod+Shift+j move down
bindsym $mod+Shift+k move up
bindsym $mod+Shift+l move right
# alternatively, you can use the cursor keys:
bindsym $mod+Shift+Left move left
bindsym $mod+Shift+Down move down
bindsym $mod+Shift+Up move up
bindsym $mod+Shift+Right move right
bindsym $mod+Control+t focus output left
bindsym $mod+Control+n focus output right
bindsym $mod+Control+Left move workspace to output left
bindsym $mod+Control+Right move workspace to output right
# split in horizontal orientation
bindsym $mod+c split h
# split in vertical orientation
bindsym $mod+period split v
# enter fullscreen mode for the focused container
bindsym $mod+f fullscreen toggle
# change container layout (stacked, tabbed, toggle split)
bindsym $mod+u layout stacking
bindsym $mod+t layout tabbed
bindsym $mod+p layout toggle split
bindsym $mod+z sticky toggle
# toggle tiling / floating
bindsym $mod+space floating toggle
# change focus between tiling / floating windows
bindsym $mod+Shift+space focus mode_toggle
# focus the parent container
bindsym $mod+a focus parent
# focus the child container
#bindsym $mod+d 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+Tab workspace next_on_output
bindsym $mod+Shift+Tab workspace prev_on_output
# 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
# reload the configuration file
bindsym $mod+Shift+x reload
# restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
bindsym $mod+Shift+o restart
# exit i3 (logs you out of your X session)
bindsym $mod+Shift+p 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'"
# dunst
bindsym Control+space exec dunstctl close
bindsym Control+Shift+space exec dunstctl close-all
bindsym Control+grave exec dunstctl history-pop
bindsym Control+period exec dunstctl context
# scratchpad
bindsym $mod+Shift+grave move scratchpad
bindsym $mod+grave scratchpad show
bindsym $mod+o mode "resize"
bindsym $mod+m mode "move"
bindsym $mod+e mode "launch"
bindsym XF86Calculator exec "alacritty --class Alacritty,Float"
bindsym XF86HomePage workspace $ws_browser_1
bindsym $mod+XF86HomePage workspace $ws_browser_2
bindsym $mod+Shift+XF86HomePage move container to workspace $ws_browser_1
bindsym $mod+Control+XF86HomePage move container to workspace $ws_browser_2
bindsym XF86Mail workspace $ws_mail
bindsym $mod+Shift+XF86Mail move container to workspace $ws_mail
bindsym $mod+XF86Mail workspace $ws_im
bindsym $mod+Control+XF86Mail move container to workspace $ws_im
# Pulse Audio controls
bindsym XF86AudioRaiseVolume exec --no-startup-id "wpctl set-volume @DEFAULT_SINK@ 0.05+ && pkill -RTMIN+10 i3blocks"
bindsym XF86AudioLowerVolume exec --no-startup-id "wpctl set-volume @DEFAULT_SINK@ 0.05- && pkill -RTMIN+10 i3blocks"
bindsym Shift+XF86AudioRaiseVolume exec --no-startup-id "wpctl set-volume @DEFAULT_SINK@ 0.02+ && pkill -RTMIN+10 i3blocks"
bindsym Shift+XF86AudioLowerVolume exec --no-startup-id "wpctl set-volume @DEFAULT_SINK@ 0.02- && pkill -RTMIN+10 i3blocks"
bindsym XF86AudioMute exec --no-startup-id "pactl set-sink-mute @DEFAULT_SINK@ toggle && pkill -RTMIN+10 i3blocks"
# Media player controls
bindsym XF86AudioPlay exec --no-startup-id mpc toggle
bindsym XF86AudioNext exec --no-startup-id mpc next
bindsym XF86AudioPrev exec --no-startup-id mpc prev
bindsym Print exec "flameshot gui"

24
i3/conf.d/20-apps.conf Normal file
View File

@ -0,0 +1,24 @@
assign [class="^firefox" instance="^Navigator$"] workspace $ws_browser_1
assign [class="^org.mozilla.Thunderbird$"] workspace $ws_mail
assign [class="^Alacritty$" instance="^lucy-code$"] workspace 1
assign [class="^Alacritty$" instance="^lucy-server$"] workspace 6
assign [class="^URxvt$" instance="-code$"] workspace 3
assign [class="^URxvt$" instance="^lesportecles-rails$"] workspace 8
assign [class="^URxvt$" instance="-server$"] workspace 8
assign [class="^xfreerdp$"] workspace 8
assign [class="^Microsoft Teams" title="Microsoft Teams(?! Notification)"] workspace $ws_im
assign [class="^steam$"] workspace $ws_steam
assign [class="^net.lutris.Lutris$"] workspace $ws_lutris
assign [class="^Mattermost$"] workspace $ws_im
assign [class="^discord$"] workspace $ws_im
for_window [class="^Gcolor3$"] floating enable
for_window [class="^Alacritty$" instance="^Float$"] floating enable
for_window [class="^mpv$"] floating enable
for_window [class="^Pinentry$"] floating enable
for_window [class="^TeamViewer$"] floating enable
for_window [title="Microsoft Teams Notification"] floating enable, sticky enable
for_window [title="^Steam - News"] floating enable
for_window [title="^Origin$"] floating enable
for_window [class="Yad"] floating enable

24
i3/config Normal file
View File

@ -0,0 +1,24 @@
set $mod Mod4
set $leftoutput DP-3
set $rightoutput HDMI-0
set $ws_browser_1 10:browser:1
set $ws_browser_2 11:browser:2
set $ws_steam steam
set $ws_lutris lutris
set $ws_mail 12:mail
set $ws_im 13:im
font pango:monospace 8
floating_modifier $mod
workspace_auto_back_and_forth no
hide_edge_borders smart
mouse_warping none
default_border pixel 2
include conf.d/*.conf
include `hostnamectl hostname`.conf

1
i3/kyo.conf Normal file
View File

@ -0,0 +1 @@
include `hostnamectl hostname`/`autorandr --current`.conf

28
i3/kyo/mobile.conf Normal file
View File

@ -0,0 +1,28 @@
set $output eDP-1
bar {
output $output
strip_workspace_numbers yes
font pango:DejaVu Sans Mono, FontAwesome 8
status_command i3blocks -c ~/.config/i3blocks/left-config
}
workspace 1 output $output
workspace 2 output $output
workspace 3 output $output
workspace 4 output $output
workspace 5 output $output
workspace $ws_browser_1 output $output
workspace $ws_browser_2 output $output
workspace $ws_steam output $output
workspace $ws_lutris output $output
workspace 6 output $output
workspace 7 output $output
workspace 8 output $output
workspace 9 output $output
workspace 10 output $output
workspace $ws_mail output $output
workspace $ws_im output $output

1
i3/multi/conf.d Symbolic link
View File

@ -0,0 +1 @@
../conf.d

View File

@ -1,306 +0,0 @@
set $mod Mod4
set $leftoutput DP-3
set $rightoutput HDMI-0
font pango:monospace 8
floating_modifier $mod
# start a terminal
bindsym $mod+Return exec alacritty
bindsym $mod+b exec i3lock -i ~/.config/i3/matrix.png -t
# kill focused window
bindsym $mod+Shift+q kill
# start dmenu (a program launcher)
bindsym $mod+i exec rofi -show
# change focus
bindsym $mod+h focus left
bindsym $mod+j focus down
bindsym $mod+k focus up
bindsym $mod+l focus right
# alternatively, you can use the cursor keys:
bindsym $mod+Left focus left
bindsym $mod+Down focus down
bindsym $mod+Up focus up
bindsym $mod+Right focus right
# move focused window
bindsym $mod+Shift+h move left
bindsym $mod+Shift+j move down
bindsym $mod+Shift+k move up
bindsym $mod+Shift+l move right
# alternatively, you can use the cursor keys:
bindsym $mod+Shift+Left move left
bindsym $mod+Shift+Down move down
bindsym $mod+Shift+Up move up
bindsym $mod+Shift+Right move right
bindsym $mod+Control+t focus output left
bindsym $mod+Control+n focus output right
bindsym $mod+Control+Left move workspace to output left
bindsym $mod+Control+Right move workspace to output right
# split in horizontal orientation
bindsym $mod+c split h
# split in vertical orientation
bindsym $mod+period split v
# enter fullscreen mode for the focused container
bindsym $mod+f fullscreen toggle
# change container layout (stacked, tabbed, toggle split)
bindsym $mod+u layout stacking
bindsym $mod+t layout tabbed
bindsym $mod+p layout toggle split
bindsym $mod+z sticky toggle
# toggle tiling / floating
bindsym $mod+space floating toggle
# change focus between tiling / floating windows
bindsym $mod+Shift+space focus mode_toggle
# focus the parent container
bindsym $mod+a focus parent
# focus the child container
#bindsym $mod+d 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+Tab workspace next_on_output
bindsym $mod+Shift+Tab workspace prev_on_output
# 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
# reload the configuration file
bindsym $mod+Shift+x reload
# restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
bindsym $mod+Shift+o restart
# exit i3 (logs you out of your X session)
bindsym $mod+Shift+p 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'"
# dunst
bindsym Control+space exec dunstctl close
bindsym Control+Shift+space exec dunstctl close-all
bindsym Control+grave exec dunstctl history-pop
bindsym Control+period exec dunstctl context
# scratchpad
bindsym $mod+Shift+grave move scratchpad
bindsym $mod+grave scratchpad show
# resize window (you can also use the mouse for that)
mode "resize" {
bindsym t resize shrink width 10 px or 10 ppt
bindsym s resize grow height 10 px or 10 ppt
bindsym r resize shrink height 10 px or 10 ppt
bindsym n 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+o mode "resize"
mode "move" {
set $normal 50
set $withshift 5
set $withcontrol 100
set $withmod 200
bindsym t move left $normal px
bindsym s move down $normal px
bindsym r move up $normal px
bindsym n move right $normal px
bindsym Left move left $normal px
bindsym Down move down $normal px
bindsym Up move up $normal px
bindsym Right move right $normal px
bindsym Shift+t move left $withshift px
bindsym Shift+s move down $withshift px
bindsym Shift+r move up $withshift px
bindsym Shift+n move right $withshift px
bindsym Shift+Left move left $withshift px
bindsym Shift+Down move down $withshift px
bindsym Shift+Up move up $withshift px
bindsym Shift+Right move right $withshift px
bindsym Control+t move left $withcontrol px
bindsym Control+s move down $withcontrol px
bindsym Control+r move up $withcontrol px
bindsym Control+n move right $withcontrol px
bindsym Control+Left move left $withcontrol px
bindsym Control+Down move down $withcontrol px
bindsym Control+Up move up $withcontrol px
bindsym Control+Right move right $withcontrol px
bindsym $mod+t move left $withmod px
bindsym $mod+s move down $withmod px
bindsym $mod+r move up $withmod px
bindsym $mod+n move right $withmod px
bindsym $mod+Left move left $withmod px
bindsym $mod+Down move down $withmod px
bindsym $mod+Up move up $withmod px
bindsym $mod+Right move right $withmod px
bindsym Return mode "default"
bindsym Escape mode "default"
}
bindsym $mod+m mode "move"
set $mode_launcher launch
bindsym $mod+e mode "$mode_launcher"
mode "$mode_launcher" {
bindsym f exec firefox; mode "default"
bindsym t exec thunderbird; mode "default"
bindsym s exec steam; mode "default"
bindsym Escape mode "default"
bindsym Return mode "default"
}
bar {
output $leftoutput
strip_workspace_numbers yes
font pango:DejaVu Sans Mono, FontAwesome 8
status_command i3blocks -c ~/.config/i3blocks/left-config
}
bar {
output $rightoutput
strip_workspace_numbers yes
font pango:DejaVu Sans Mono, FontAwesome 8
status_command i3blocks -c ~/.config/i3blocks/right-config
}
workspace_auto_back_and_forth no
hide_edge_borders smart
set $ws_browser_1 10:browser:1
set $ws_browser_2 11:browser:2
set $ws_steam steam
set $ws_lutris lutris
set $ws_mail 12:mail
set $ws_im 13:im
workspace 1 output $leftoutput
workspace 2 output $leftoutput
workspace 3 output $leftoutput
workspace 4 output $leftoutput
workspace 5 output $leftoutput
workspace $ws_browser_1 output $leftoutput
workspace $ws_browser_2 output $rightoutput
workspace $ws_steam output $leftoutput
workspace $ws_lutris output $leftoutput
workspace 6 output $rightoutput
workspace 7 output $rightoutput
workspace 8 output $rightoutput
workspace 9 output $rightoutput
workspace 10 output $rightoutput
workspace $ws_mail output $rightoutput
workspace $ws_im output $rightoutput
assign [class="^firefox" instance="^Navigator$"] workspace $ws_browser_1
assign [class="^org.mozilla.Thunderbird$"] workspace $ws_mail
assign [class="^Alacritty$" instance="^lucy-code$"] workspace 1
assign [class="^Alacritty$" instance="^lucy-server$"] workspace 6
assign [class="^URxvt$" instance="-code$"] workspace 3
assign [class="^URxvt$" instance="^lesportecles-rails$"] workspace 8
assign [class="^URxvt$" instance="-server$"] workspace 8
assign [class="^xfreerdp$"] workspace 8
assign [class="^Microsoft Teams" title="Microsoft Teams(?! Notification)"] workspace $ws_im
assign [class="^steam$"] workspace $ws_steam
assign [class="^Lutris$"] workspace $ws_lutris
assign [class="^Mattermost$"] workspace $ws_im
assign [class="^discord$"] workspace $ws_im
bindsym XF86Calculator exec "alacritty --class Alacritty,Float"
for_window [class="^Gcolor3$"] floating enable
for_window [class="^Alacritty$" instance="^Float$"] floating enable
for_window [class="^mpv$"] floating enable
for_window [class="^Pinentry$"] floating enable
for_window [class="^TeamViewer$"] floating enable
for_window [title="Microsoft Teams Notification"] floating enable, sticky enable
for_window [title="^Steam - News"] floating enable
for_window [title="^Origin$"] floating enable
for_window [class="Yad"] floating enable
bindsym XF86HomePage workspace $ws_browser_1
bindsym $mod+XF86HomePage workspace $ws_browser_2
bindsym $mod+Shift+XF86HomePage move container to workspace $ws_browser_1
bindsym $mod+Control+XF86HomePage move container to workspace $ws_browser_2
bindsym XF86Mail workspace $ws_mail
bindsym $mod+Shift+XF86Mail move container to workspace $ws_mail
bindsym $mod+XF86Mail workspace $ws_im
bindsym $mod+Control+XF86Mail move container to workspace $ws_im
# Pulse Audio controls
bindsym XF86AudioRaiseVolume exec --no-startup-id "wpctl set-volume @DEFAULT_SINK@ 0.05+ && pkill -RTMIN+10 i3blocks"
bindsym XF86AudioLowerVolume exec --no-startup-id "wpctl set-volume @DEFAULT_SINK@ 0.05- && pkill -RTMIN+10 i3blocks"
bindsym Shift+XF86AudioRaiseVolume exec --no-startup-id "wpctl set-volume @DEFAULT_SINK@ 0.02+ && pkill -RTMIN+10 i3blocks"
bindsym Shift+XF86AudioLowerVolume exec --no-startup-id "wpctl set-volume @DEFAULT_SINK@ 0.02- && pkill -RTMIN+10 i3blocks"
bindsym XF86AudioMute exec --no-startup-id "pactl set-sink-mute @DEFAULT_SINK@ toggle && pkill -RTMIN+10 i3blocks"
# Media player controls
bindsym XF86AudioPlay exec --no-startup-id mpc toggle
bindsym XF86AudioNext exec --no-startup-id mpc next
bindsym XF86AudioPrev exec --no-startup-id mpc prev
bindsym Print exec "flameshot gui"
new_window pixel 2
mouse_warping none

1
i3/multi/config Symbolic link
View File

@ -0,0 +1 @@
../config

36
i3/onizuka.conf Normal file
View File

@ -0,0 +1,36 @@
set $leftoutput DP-3
set $rightoutput HDMI-0
bar {
output $leftoutput
strip_workspace_numbers yes
font pango:DejaVu Sans Mono, FontAwesome 8
status_command i3blocks -c ~/.config/i3blocks/left-config
}
bar {
output $rightoutput
strip_workspace_numbers yes
font pango:DejaVu Sans Mono, FontAwesome 8
status_command i3blocks -c ~/.config/i3blocks/right-config
}
workspace 1 output $leftoutput
workspace 2 output $leftoutput
workspace 3 output $leftoutput
workspace 4 output $leftoutput
workspace 5 output $leftoutput
workspace $ws_browser_1 output $leftoutput
workspace $ws_browser_2 output $rightoutput
workspace $ws_steam output $leftoutput
workspace $ws_lutris output $leftoutput
workspace 6 output $rightoutput
workspace 7 output $rightoutput
workspace 8 output $rightoutput
workspace 9 output $rightoutput
workspace 10 output $rightoutput
workspace $ws_mail output $rightoutput
workspace $ws_im output $rightoutput