# i3 config file (v4) # Please see http://i3wm.org/docs/userguide.html for a complete reference! # Set mod key (Mod1=, Mod4=) set $mod Mod4 # custom bindsym $mod+Shift+Return exec cool-retro-term; #for_window [class="cool-retro-term"] fullscreen enable #bindsym $mod+Ctrl+o exec keepass --auto-type bindsym Ctrl+Shift+4 exec /home/kageru/bin/ppsh # bindsym Ctrl+Shift+8 exec /home/kageru/bin/pyshare -e 1 # bindsym $mod+Shift+u exec /home/kageru/bin/pyshare -m text bindsym $mod+x exec "rofi -show window -modi window,run,drun" # -font Hack\ 20 -lines 8 -location 2 -width 100 -no-fixed-num-lines -fuzzy -levenshtein-sort # -color-normal "argb:ff222222, argb:cccccc, argb:333333, argb:663333, argb:ffffff" -color-window "#222222, #cccccc, #333333, #663333, #ffffff" -color-urgent "#222222, #cccccc, #333333, #663333, #ffffff" -color-active "#222222, #cccccc, #333333, #663333, #ffffff" bindsym --whole-window $mod+button3 kill floating_maximum_size 2560x1440 # Media #bindsym XF86AudioPlay exec wine /home/kageru/.foobar2000/foobar2000.exe /playpause #bindsym XF86AudioNext exec wine /home/kageru/.foobar2000/foobar2000.exe /next bindsym XF86AudioPlay exec mpc toggle bindsym XF86AudioNext exec mpc next # These are the keycodes for F13 and F14 respectively. The corsair volume controller doesn’t seem to be recognized natively, so I rebounnd the volume wheel to those keys. And yes, xinput supports F-keys from 1-24 bind 191 exec amixer -D pulse sset Master 5%+; exec --no-startup-id notify-send "`amixer -c 1 -M -D pulse get Master| grep -o -E '[[:digit:]]+%' | uniq`" -t 300 bind 192 exec amixer -D pulse sset Master 5%-; exec --no-startup-id notify-send "`amixer -c 1 -M -D pulse get Master| grep -o -E '[[:digit:]]+%' | uniq`" -t 300 bindsym --whole-window button15 exec mpc toggle bindsym --whole-window button11 exec mpc next bindsym XF86MonBrightnessUp exec xbacklight -inc 10; exec notify-send $(xbacklight -get) -t 300 bindsym XF86MonBrightnessDown exec xbacklight -dec 10; exec notify-send $(xbacklight -get) -t 300 # most certainly not the best way, but works on my machine™ bindsym $mod+z exec --no-startup-id notify-send "`amixer -c 1 -M -D pulse get Master| grep -o -E '[[:digit:]]+%' | uniq`" bindsym XF86AudioRaiseVolume exec amixer -D pulse sset Master 5%+; exec --no-startup-id notify-send "`amixer -c 1 -M -D pulse get Master| grep -o -E '[[:digit:]]+%' | uniq`" -t 300 bindsym XF86AudioLowerVolume exec amixer -D pulse sset Master 5%-; exec --no-startup-id notify-send "`amixer -c 1 -M -D pulse get Master| grep -o -E '[[:digit:]]+%' | uniq`" -t 300 #bindsym XF86AudioRaiseVolume exec pactl set-sink-volume alsa_output.pci-0000_00_1b.0.analog-stereo +2%; exec notify-send $(amixer -c 1 -M -D pulse get Master | grep -o -E '[[:digit:]]+%' | uniq) #bindsym XF86AudioLowerVolume exec pactl set-sink-volume alsa_output.pci-0000_00_1b.0.analog-stereo -2%; exec notify-send $(pactl list sinks | grep '^\s*Volume' | grep -Po '\d+%' | uniq) -t 300 # set default desktop layout (default is tiling) # workspace_layout tabbed # Configure border style new_window pixel 3 new_float pixel 3 #new_window pixel 1 #new_float normal # Hide borders hide_edge_borders none # change borders bindsym $mod+u border none bindsym $mod+y border pixel 3 # Font for window titles. Will also be used by the bar unless a different font # is used in the bar {} block below. font xft:Hack 10 # Use Mouse+$mod to drag floating windows floating_modifier $mod # start a terminal #exec --no-startup-id urxvtd bindsym $mod+Return exec alacritty # kill focused window bindsym $mod+q kill # start program launcher bindsym $mod+d exec --no-startup-id dmenu_run ################################################################################################ ## sound-section - DO NOT EDIT if you wish to automatically upgrade Alsa -> Pulseaudio later! ## ################################################################################################ bindsym $mod+Ctrl+m exec pavucontrol ################################################################################################ # Start Applications bindsym $mod+F2 exec qutebrowser #bindsym $mod+F2 exec firefox-nightly #bindsym $mod+F3 exec cool-retro-term -e ranger # these workarounds are necessary because I use base16 in zsh to set my terminal colors #bindsym $mod+F3 exec st -e zsh -ci ranger #bindsym $mod+F5 exec st -e zsh -ci ncmpcpp bindsym $mod+F3 exec alacritty -e ranger bindsym $mod+F5 exec st -e ncmpcpp bindsym $mod+t exec --no-startup-id pkill picom bindsym $mod+Ctrl+t exec --no-startup-id picom -b bindsym $mod+Shift+d --release exec "killall dunst; exec notify-send 'restart dunst'" bindsym Print exec --no-startup-id i3-scrot bindsym $mod+Print --release exec --no-startup-id i3-scrot -w bindsym $mod+Shift+Print --release exec --no-startup-id i3-scrot -s bindsym $mod+Ctrl+x --release exec --no-startup-id xkill # focus_follows_mouse no # 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 40px bindsym $mod+Shift+j move down 40px bindsym $mod+Shift+k move up 40px bindsym $mod+Shift+l move right 40px # 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 # workspace back and forth (with/without active container) workspace_auto_back_and_forth yes bindsym $mod+b workspace back_and_forth bindsym $mod+Shift+b move container to workspace back_and_forth; workspace back_and_forth # split orientation bindsym $mod+g split h bindsym $mod+v split v # bindsym $mod+q split toggle # toggle 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+space floating toggle # change focus between tiling / floating windows bindsym $mod+space focus mode_toggle # toggle sticky bindsym $mod+Shift+s sticky toggle # focus the parent container bindsym $mod+a focus parent # move the currently focused window to the scratchpad bindsym $mod+Shift+minus move scratchpad # Show the next scratchpad window or hide the focused scratchpad window. # If there are multiple scratchpad windows, this command cycles through them. bindsym $mod+minus scratchpad show #navigate workspaces next / previous bindsym $mod+Ctrl+Right workspace next bindsym $mod+Ctrl+Left workspace prev # Workspace names # to display names or symbols instead of plain workspace numbers you can use # something like: set $ws1 1:mail # set $ws2 2: set $ws1 一 set $ws2 二 set $ws3 三 set $ws4 四 set $ws5 五 set $ws6 六 set $ws7 七 set $ws8 八 set $ws11 十一 set $ws12 十二 set $ws13 十三 set $ws14 十四 set $ws15 十五 set $ws16 十六 set $ws17 十七 set $ws18 十八 set $ws19 十九 # default screens #workspace $ws1 output DP-0 #workspace $ws1 output HDMI-1 workspace $ws2 output DisplayPort-0 workspace $ws3 output HDMI-A-0 workspace $ws4 output DisplayPort-0 # switch to workspace bindsym $mod+1 workspace $ws1 bindsym $mod+2 workspace $ws2 bindsym $mod+3 workspace $ws3 bindsym $mod+4 workspace $ws4 bindsym $mod+5 workspace $ws5 bindsym $mod+6 workspace $ws6 bindsym $mod+7 workspace $ws7 bindsym $mod+8 workspace $ws8 bindsym $mod+KP_1 workspace $ws11 bindsym $mod+KP_2 workspace $ws12 bindsym $mod+KP_3 workspace $ws13 bindsym $mod+KP_4 workspace $ws14 bindsym $mod+KP_5 workspace $ws15 bindsym $mod+KP_6 workspace $ws16 bindsym $mod+KP_7 workspace $ws17 bindsym $mod+KP_8 workspace $ws18 bindsym $mod+KP_9 workspace $ws19 # Move focused container to workspace bindsym $mod+Ctrl+1 move container to workspace $ws1 bindsym $mod+Ctrl+2 move container to workspace $ws2 bindsym $mod+Ctrl+3 move container to workspace $ws3 bindsym $mod+Ctrl+4 move container to workspace $ws4 bindsym $mod+Ctrl+5 move container to workspace $ws5 bindsym $mod+Ctrl+6 move container to workspace $ws6 bindsym $mod+Ctrl+7 move container to workspace $ws7 bindsym $mod+Ctrl+8 move container to workspace $ws8 bindsym $mod+Ctrl+KP_1 move container to workspace $ws11 bindsym $mod+Ctrl+KP_2 move container to workspace $ws12 bindsym $mod+Ctrl+KP_3 move container to workspace $ws13 bindsym $mod+Ctrl+KP_4 move container to workspace $ws14 bindsym $mod+Ctrl+KP_5 move container to workspace $ws15 bindsym $mod+Ctrl+KP_6 move container to workspace $ws16 bindsym $mod+Ctrl+KP_7 move container to workspace $ws17 bindsym $mod+Ctrl+KP_8 move container to workspace $ws18 bindsym $mod+Ctrl+KP_9 move container to workspace $ws19 # Move to workspace with focused container bindsym $mod+Shift+1 move container to workspace $ws1; workspace $ws1 bindsym $mod+Shift+2 move container to workspace $ws2; workspace $ws2 bindsym $mod+Shift+3 move container to workspace $ws3; workspace $ws3 bindsym $mod+Shift+4 move container to workspace $ws4; workspace $ws4 bindsym $mod+Shift+5 move container to workspace $ws5; workspace $ws5 bindsym $mod+Shift+6 move container to workspace $ws6; workspace $ws6 bindsym $mod+Shift+7 move container to workspace $ws7; workspace $ws7 bindsym $mod+Shift+8 move container to workspace $ws8; workspace $ws8 bindsym $mod+Shift+KP_1 move container to workspace $ws11; workspace $ws11 bindsym $mod+Shift+KP_2 move container to workspace $ws12; workspace $ws12 bindsym $mod+Shift+KP_3 move container to workspace $ws13; workspace $ws13 bindsym $mod+Shift+KP_4 move container to workspace $ws14; workspace $ws14 bindsym $mod+Shift+KP_5 move container to workspace $ws15; workspace $ws15 bindsym $mod+Shift+KP_6 move container to workspace $ws16; workspace $ws16 bindsym $mod+Shift+KP_7 move container to workspace $ws17; workspace $ws17 bindsym $mod+Shift+KP_8 move container to workspace $ws18; workspace $ws18 bindsym $mod+Shift+KP_9 move container to workspace $ws19; workspace $ws19 exec --no-startup-id i3-msg 'workspace $ws4; layout stacking; exec keepassxc; exec thunderbird; exec hexchat' # Open applications on specific workspaces # assign [class="mpv"] $ws5 assign [class="Thunderbird"] $ws4 assign [class=".*discord.*"] $ws1 #assign [class="steam"] $ws3 # Open specific applications in floating mode for_window [class="Pavucontrol"] floating enable #for_window [class="(?i)virtualbox"] floating enable border normal for_window [class="mpv"] floating enable for_window [class="tModLoader.bin.x86_64"] floating enable for_window [class="mono-sgen"] floating enable for_window [class="feh"] floating enable for_window [workspace=$ws12] floating enable for_window [urgent=latest] none #no_focus [class="Firefox"] #no_focus [class="Nightly"] no_focus [class="jetbrains-.*"] no_focus [class=".*discord.*"] # reload the configuration file bindsym $mod+Shift+c reload # restart i3 inplace (preserves your layout/session, can be used to upgrade i3) bindsym $mod+Shift+r restart # exit i3 (logs you out of your X session) bindsym $mod+Shift+e exec i3-msg exit # Set shut down, restart and locking features bindsym $mod+0 mode "$mode_system" set $mode_system (l)ock, (e)xit, switch_(u)ser, (s)uspend, (h)ibernate, (r)eboot, (Shift+s)hutdown mode "$mode_system" { bindsym l exec --no-startup-id i3lock -i ~/Pictures/bg.png -t, mode "default" bindsym s exec --no-startup-id systemctl suspend -i, mode "default" bindsym u exec --no-startup-id i3exit switch_user, mode "default" bindsym e exec --no-startup-id i3exit logout, mode "default" bindsym h exec --no-startup-id systemctl hibernate -i, mode "default" bindsym r exec --no-startup-id i3exit reboot, mode "default" bindsym Shift+s exec --no-startup-id i3exit shutdown, mode "default" # exit system mode: "Enter" or "Escape" bindsym Return mode "default" bindsym Escape mode "default" } # Resize window (you can also use the mouse for that) bindsym $mod+r mode "resize" 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 h resize shrink width 20 px or 10 ppt bindsym j resize grow height 20 px or 10 ppt bindsym k resize shrink height 20 px or 10 ppt bindsym l resize grow width 20 px or 10 ppt # same bindings, but for the arrow keys bindsym Left resize shrink width 2 px or 1 ppt bindsym Down resize grow height 2 px or 1 ppt bindsym Up resize shrink height 2 px or 1 ppt bindsym Right resize grow width 2 px or 1 ppt # exit resize mode: Enter or Escape bindsym Return mode "default" bindsym Escape mode "default" } # Lock screen bindsym $mod+9 exec --no-startup-id i3lock -i ~/Pictures/bg.png -t # Autostart applications exec ~/bin/autostart exec --no-startup-id picom -b exec_always ~/bin/restart_polybar # Color palette used for the terminal ( ~/.extend.Xresources file ) # Colors are gathered based on the documentation: # https://i3wm.org/docs/userguide.html#xresources # Change the variable name at the place you want to match the color # of your terminal like this: # [example] # If you want your bar to have the same background color as your # terminal background change the line 362 from: # background $i3_background # to: # background $term_background # Same logic applied to everything else. set_from_resource $term_background background set_from_resource $term_foreground foreground set_from_resource $term_color0 color0 set_from_resource $term_color1 color1 set_from_resource $term_color2 color2 set_from_resource $term_color3 color3 set_from_resource $term_color4 color4 set_from_resource $term_color5 color5 set_from_resource $term_color6 color6 set_from_resource $term_color7 color7 set_from_resource $term_color8 color8 set_from_resource $term_color9 color9 set_from_resource $term_color10 color10 set_from_resource $term_color11 color11 set_from_resource $term_color12 color12 set_from_resource $term_color13 color13 set_from_resource $term_color14 color14 set_from_resource $term_color15 color15 # Color palette used for i3 # Variables are set based on the documentation: # https://i3wm.org/dovs/userguide.html#variables # Changing the value of one of the variables will # effect all the areas with the same color. set $i3_background #2B2C2B set $i3_text #F9FAF9 set $i3_separator #454947 set $i3_color1 #3b4252 set $i3_color2 #434c5e set $i3_color3 #4c566a set $i3_color4 #d8dee9 set $i3_color5 #e5e9f0 set $i3_color6 #eceff4 set $i3_color7 #8fbcbb #set $i3_color10 #5e81ac #set $i3_color8 #00ff66 #set $i3_color9 #22dd88 # split direction set $i3_color8 #aa7934 # border set $i3_color9 #d89a52 set $i3_color10 #666666 set $i3_color11 #bf616a set $i3_color12 #d08770 set $i3_color13 #ebcb8b set $i3_color14 #a3be8c set $i3_color15 #b48ead # Start i3bar to display a workspace bar (plus the system information i3status if available) #bar { # status_command i3status # position bottom ## please set your primary output first. Example: 'xrandr --output eDP1 --primary' # tray_output primary # tray_output eDP1 # bindsym button4 nop # bindsym button5 nop # font xft:Noto Sans 10.5 # strip_workspace_numbers yes # colors { # background $transparent # background $i3_background # statusline $i3_text # separator $i3_separator # border backgr. text # focused_workspace $i3_color1 $i3_color4 $i3_text # active_workspace $i3_color2 $i3_color3 $i3_color5 # inactive_workspace $i3_color2 $i3_color3 $i3_color6 # urgent_workspace $i3_color4 $i3_color5 $i3_color7 # } #} bindsym $mod+m exec "mpv --force-window=immediate --player-operation-mode=pseudo-gui --profile=db -- \\"`xsel -ob`\\"" # Theme colors # class border backgr. text indic. child_border client.focused $i3_color10 $i3_color9 $i3_color11 $i3_color8 client.focused_inactive $i3_color10 $i3_color10 $i3_color4 $i3_color10 client.unfocused $i3_color10 $i3_color10 $i3_color4 $i3_color10 client.urgent $i3_color13 $i3_color12 $i3_color4 $i3_color14 client.placeholder $i3_color15 $i3_color15 $i3_color15 $i3_color15 $i3_color15 client.background $i3_background ############################# ### settings for i3-gaps: ### ############################# # Set inner/outer gaps gaps inner 15 gaps outer -5 # Additionally, you can issue commands with the following syntax. This is useful to bind keys to changing the gap size. # gaps inner|outer current|all set|plus|minus # gaps inner all set 10 # gaps outer all plus 5 # Smart gaps (gaps used if only more than one container on the workspace) #smart_gaps yes # Smart borders (draw borders around container only if it is not the only container on this workspace) # on|no_gaps (on=always activate and no_gaps=only activate if the gap size to the edge of the screen is 0) smart_borders on # Press $mod+Shift+g to enter the gap mode. Choose o or i for modifying outer/inner gaps. Press one of + / - (in-/decrement for current workspace) or 0 (remove gaps for current workspace). If you also press Shift with these keys, the change will be global for all workspaces. set $mode_gaps Gaps: (o) outer, (i) inner set $mode_gaps_outer Outer Gaps: +|-|0 (local), Shift + +|-|0 (global) set $mode_gaps_inner Inner Gaps: +|-|0 (local), Shift + +|-|0 (global) bindsym $mod+Shift+g mode "$mode_gaps" mode "$mode_gaps" { bindsym o mode "$mode_gaps_outer" bindsym i mode "$mode_gaps_inner" bindsym Return mode "default" bindsym Escape mode "default" } mode "$mode_gaps_inner" { bindsym k gaps inner current plus 5 bindsym j gaps inner current minus 5 bindsym 0 gaps inner current set 0 bindsym Shift+plus gaps inner all plus 5 bindsym Shift+minus gaps inner all minus 5 bindsym Shift+0 gaps inner all set 0 bindsym Return mode "default" bindsym Escape mode "default" } mode "$mode_gaps_outer" { bindsym k gaps outer current plus 5 bindsym j gaps outer current minus 5 bindsym 0 gaps outer current set 0 bindsym Shift+plus gaps outer all plus 5 bindsym Shift+minus gaps outer all minus 5 bindsym Shift+0 gaps outer all set 0 bindsym Return mode "default" bindsym Escape mode "default" }