vincentbernat.i3wm-configur.../config
Vincent Bernat a94dcb7b8a i3: remove some no_focus rules
The no_focus rules are for window activation or when they request focus.
This is not why we put the rules. We don't want to give them focus at
all and this is not the way to do.
2025-06-09 16:07:06 +02:00

177 lines
7 KiB
Text

# i3 config file (v4)
set $mod Mod4
set $up l
set $down k
set $left j
set $right semicolon
set $term vbeterm
set $mediaplayer spotify
set $borderpx 3
font pango:Iosevka Aile 9
# style and colors
default_border pixel $borderpx
default_floating_border pixel $borderpx
# class border backgr. text indicator child_border
client.focused #cc5c00 #cc5c00 #ffffff #ee9c31 #cc5c00
client.focused_inactive #5f676a #5f676a #ffffff #484e50 #5f676a
client.unfocused #222222 #222222 #888888 #292d2e #222222
client.urgent #d00000 #d00000 #ffffff #d00000 #d00000
client.placeholder #0c0c0c #0c0c0c #ffffff #000000 #0c0c0c
client.background #ffffff
# gaps
gaps inner 10
# smart_gaps on
# audio
bindsym XF86AudioRaiseVolume exec --no-startup-id exec pactl set-sink-volume @DEFAULT_SINK@ +5%
bindsym $mod+Up exec --no-startup-id exec pactl set-sink-volume @DEFAULT_SINK@ +5%
bindsym XF86AudioLowerVolume exec --no-startup-id exec pactl set-sink-volume @DEFAULT_SINK@ -5%
bindsym $mod+Down exec --no-startup-id exec pactl set-sink-volume @DEFAULT_SINK@ -5%
bindsym XF86AudioMute exec --no-startup-id exec ~/.config/i3/bin/toggle-mute sink
bindsym XF86AudioMicMute exec --no-startup-id exec ~/.config/i3/bin/toggle-mute source
bindsym XF86AudioPlay exec --no-startup-id exec playerctl -p $mediaplayer play-pause
bindsym $mod+Left exec --no-startup-id exec playerctl -p $mediaplayer play-pause
bindsym XF86AudioPause exec --no-startup-id exec playerctl -p $mediaplayer pause
bindsym XF86AudioStop exec --no-startup-id exec playerctl -p $mediaplayer stop
bindsym XF86AudioNext exec --no-startup-id exec playerctl -p $mediaplayer next
bindsym $mod+Right exec --no-startup-id exec playerctl -p $mediaplayer next
bindsym XF86AudioPrev exec --no-startup-id exec playerctl -p $mediaplayer previous
bindsym $mod+s exec --no-startup-id exec ~/.config/i3/bin/rofi-mediaplayer $mediaplayer
# brightness
bindsym XF86MonBrightnessUp exec --no-startup-id exec brightnessctl -q set +5%
bindsym XF86MonBrightnessDown exec --no-startup-id exec brightnessctl -q set 5%-
# use Mouse+$mod to drag floating windows to their wanted position
floating_modifier $mod
floating_minimum_size 55 x 30
# start a terminal
bindsym $mod+Return exec exec $term
# kill focused window
bindsym $mod+x kill
# execute command
set $rofi exec rofi -modi drun -show drun -show-icons -drun-match-fields name
bindsym $mod+r exec --no-startup-id $rofi
bindsym XF86LaunchA exec --no-startup-id $rofi
# change focus
bindsym $mod+$left focus left
bindsym $mod+$down focus down
bindsym $mod+$up focus up
bindsym $mod+$right focus right
focus_follows_mouse no
# move focused window
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+o move container to output next ; focus output next
# resize focused window
bindsym $mod+Ctrl+$left resize shrink width 10 px or 4 ppt
bindsym $mod+Ctrl+$down resize grow height 10 px or 4 ppt
bindsym $mod+Ctrl+$up resize shrink height 10 px or 4 ppt
bindsym $mod+Ctrl+$right resize grow width 10 px or 4 ppt
# enter fullscreen mode for the focused container
bindsym $mod+f fullscreen toggle
bindsym $mod+Shift+f fullscreen toggle global
# change container layout (tabbed, toggle split)
bindsym $mod+w layout toggle splitv splith tabbed
bindsym $mod+v split toggle
# toggle tiling / floating
bindsym $mod+Shift+space floating toggle
# toggle sticky
bindsym $mod+period sticky toggle
# change focus between tiling / floating windows
bindsym $mod+space focus mode_toggle
# focus the parent container
bindsym $mod+a focus parent
# default workspace layout: tabbed
workspace_layout tabbed
# switch to workspace
bindsym $mod+1 workspace number 1
bindsym $mod+2 workspace number 2
bindsym $mod+3 workspace number 3
bindsym $mod+4 workspace number 4
bindsym $mod+5 workspace number 5
bindsym $mod+6 workspace number 6
bindsym $mod+7 workspace number 7
bindsym $mod+8 workspace number 8
bindsym $mod+9 workspace number 9
bindsym $mod+0 workspace number 10
bindsym $mod+Tab nop "previous-workspace"
bindsym $mod+Ctrl+o focus output next
bindsym $mod+n nop "new-workspace"
focus_wrapping no
# move focused container to workspace
bindsym $mod+Shift+1 move container to workspace number 1
bindsym $mod+Shift+2 move container to workspace number 2
bindsym $mod+Shift+3 move container to workspace number 3
bindsym $mod+Shift+4 move container to workspace number 4
bindsym $mod+Shift+5 move container to workspace number 5
bindsym $mod+Shift+6 move container to workspace number 6
bindsym $mod+Shift+7 move container to workspace number 7
bindsym $mod+Shift+8 move container to workspace number 8
bindsym $mod+Shift+9 move container to workspace number 9
bindsym $mod+Shift+0 move container to workspace number 10
bindsym $mod+Shift+o move workspace to output next
bindsym $mod+Ctrl+Shift+o nop "move-all-workspaces-to-next-output"
bindsym $mod+Shift+n nop "move-to-new-workspace"
# lock screen
bindsym XF86ScreenSaver exec --no-startup-id exec loginctl lock-session
bindsym $mod+Delete exec --no-startup-id exec loginctl lock-session
# print screen
bindsym Print exec --no-startup-id exec ~/.config/i3/bin/screenshot window
bindsym $mod+Print exec --no-startup-id exec ~/.config/i3/bin/screenshot desktop
bindsym $mod+F12 exec --no-startup-id exec ~/.config/i3/bin/screenshot window
# Quake window
bindsym $mod+grave nop "quake-console:$term:QuakeConsole:0.3"
# get info about container/workspace
bindsym $mod+i nop "container-info"
bindsym $mod+Shift+i nop "workspace-info"
# random rules
focus_on_window_activation smart
no_focus [window_type="splash"]
for_window [tiling] border pixel $borderpx
for_window [class="Nm-connection-editor"] floating enable
for_window [class="Shadow"] fullscreen enable
for_window [window_role="PictureInPicture"] floating enable, resize set 1280 720
for_window [class="pavucontrol"] floating enable
# Firefox sharing indicator
for_window [floating title="Firefox — Sharing Indicator"] border none, sticky enable, move position 15 ppt -5 px
# Chromium sharing indicator
for_window [floating title=" is sharing your screen.$"] border none, sticky enable, move position 15 ppt -5 px
# Jitsi sharing indicator
for_window [floating title="Screen Sharing Tracker" instance="jitsi meet"] border none, sticky enable, move position 15 ppt -5 px
# Zoom (😱?)
for_window [class="^zoom$" title="^Zoom($|\s)"] floating disable, border pixel $borderpx
for_window [class="^zoom$" title="^zoom"] floating enable, border none
# start stuff
exec_always --no-startup-id exec systemctl --user start --no-block i3-session.target
exec --no-startup-id exec i3-msg "\
workspace number 1; append_layout ~/.config/i3/ws-emacs.json; exec exec emacs; exec exec $term; exec exec $term; \
workspace number 2; exec nm-online -q -t 5 && exec firefox; \
workspace number 3; exec test -d ~/.thunderbird && exec thunderbird; \
workspace number 1"