# vim: filetype=i3config # https://i3wm.org/docs/userguide.html # set modifiers set $mod Mod4 set $alt Mod1 # use mouse+$mod to drag floating windows to their wanted position floating_modifier $alt ## autostart exec --no-startup-id xsettingsd & exec --no-startup-id picom -b exec --no-startup-id flashfocus & exec --no-startup-id nextcloud & exec --no-startup-id copyq & exec --no-startup-id redshift & exec --no-startup-id nm-applet & exec --no-startup-id udiskie --automount --file-manager thunar --tray --notify & exec --no-startup-id /usr/lib/pam_kwallet_init exec --no-startup-id remind -z -k'dunstify --appname="remind" --icon="view-calendar" "⏰ reminder!" "%s" &' ~/.reminders & exec --no-startup-id $HOME/.config/polybar/launch.sh & exec i3-layouts # start the screensaver, '' at the end is not a typo exec --no-startup-id xidlehook --not-when-fullscreen --not-when-audio --timer normal 300 'betterlockscreen -l dimblur -t "Welcome Back"' '' # swap caps lock and escape, set keyboard layout exec --no-startup-id setxkbmap -model pc105 -layout us -variant colemak -option caps:backspace # tap ctrl to esc, hold ctrl to ctrl exec --no-startup-id xcape -e 'Control_L=Escape' & # set the wallpaper exec --no-startup-id ~/.fehbg # font for window titles font pango:Iosevka 11 gaps inner 5 gaps outer 0 ## bindings ### dunstctl - dunst shortcuts have been deprecated # close notifications with mod+x bindcode $mod+53 exec --no-startup-id dunstctl close bindcode $mod+shift+53 exec --no-startup-id dunstctl close-all # give context menu with mod+o bindcode $mod+47 exec --no-startup-id dunstctl context # show history items with mod+0 (like the old times) bindcode $mod+19 exec --no-startup-id dunstctl history-pop # done, {task,time}warrior control suite bindcode $mod+42 exec --no-startup-id ~/.local/bin/done # type the contents of the clipboard with mod+p bindcode --release $mod+27 exec --no-startup-id ~/.local/bin/type_clipboard.sh # launch emoji picker with mod+c bindcode $mod+54 exec --no-startup-id rofimoji --skin-tone neutral # get the mouse out of the way bindcode $mod+32 exec --no-startup-id xdotool mousemove 1920 1080 # bookmark from clipboard bindcode $mod+30 exec --no-startup-id ~/.local/bin/bukuadd_c # use flameshot with print screen bindsym Print exec flameshot gui # make the currently focused window a scratchpad bindcode $mod+Shift+20 move scratchpad # show the first scratchpad window bindcode $mod+20 scratchpad show # pause notifications for a while with mod+shift+y bindcode $mod+Shift+32 exec ~/.local/bin/toggle_notifications.sh ## shortcuts for frequent programs # zotero on mod+shift+z bindcode $mod+Shift+52 exec zotero # thunar on mod+shift+t bindcode $mod+Shift+41 exec thunar # start a terminal bindsym $mod+Return exec kitty # start rofi with mod+s bindcode $mod+40 exec rofi -show drun # launch the poweroff menu bindsym $mod+Shift+Escape exec --no-startup-id ~/.local/bin/power.sh # kill focused window bindcode $mod+Shift+24 kill bindsym --whole-window $mod+button2 kill # change focus on mod+hnei (qwerty hjkl) bindcode $mod+43 focus left bindcode $mod+44 focus down bindcode $mod+45 focus up bindcode $mod+46 focus right # move focused window on mod+shift+hnei bindcode $mod+Shift+43 exec i3l move left bindcode $mod+Shift+44 exec i3l move down bindcode $mod+Shift+45 exec i3l move up bindcode $mod+Shift+46 exec i3l move right # split in horizontal orientation with mod+b bindcode $mod+56 split h # split in vertical orientation with mod+v bindcode $mod+55 split v # enter fullscreen mode for the focused container with mod+t bindcode $mod+41 fullscreen toggle # change container layout (stacked, tabbed, toggle split) bindcode $mod+39 layout stacking bindcode $mod+25 layout tabbed bindcode $mod+26 layout toggle split # toggle tiling / floating bindsym $mod+Shift+space floating toggle # toggle sticky floating window with mod+a bindcode $mod+38 sticky toggle # change focus between tiling / floating windows bindsym $mod+space focus mode_toggle # Define names for default workspaces for which we configure key bindings later on. # We use variables to avoid repeating the names in multiple places. # Workspace icons are added at polybar set $ws1 "1" set $ws2 "2" set $ws3 "3" set $ws4 "4" set $ws5 "5" set $ws6 "6" set $ws7 "7" set $ws8 "8" set $ws9 "9" set $ws10 "0" set $wsmusic "music" set $wszotero "zotero" set $wsdesktop "desktop" set $wsbrowser "browser" # 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+9 workspace $wssteam bindsym $mod+m workspace $wsmusic bindcode $mod+49 workspace $wszotero bindcode $mod+60 workspace $wsdesktop bindcode $mod+21 workspace $wsbrowser # move focused container to workspace bindsym $mod+Shift+1 move container to workspace $ws1 bindsym $mod+Shift+2 move container to workspace $ws2 bindsym $mod+Shift+3 move container to workspace $ws3 bindsym $mod+Shift+4 move container to workspace $ws4 bindsym $mod+Shift+5 move container to workspace $ws5 bindsym $mod+Shift+6 move container to workspace $ws6 bindsym $mod+Shift+7 move container to workspace $ws7 bindsym $mod+Shift+8 move container to workspace $ws8 bindsym $mod+Shift+9 move container to workspace $wssteam bindsym $mod+Shift+m move container to workspace $wsmusic bindcode $mod+Shift+49 move container to workspace $wszotero bindcode $mod+Shift+60 move container to workspace $wsdesktop bindcode $mod+Shift+21 move container to workspace $wsbrowser # reload the configuration file bindcode $mod+Shift+54 reload # restart i3 inplace (preserves your layout/session, can be used to upgrade i3) bindcode $mod+Shift+27 restart default_border pixel 0 default_floating_border pixel 2 for_window [class="Zotero" instance="Toplevel" title="Quick Format Citation"] floating enable for_window [class="Zotero" instance="Toplevel" title="Progress"] floating enable for_window [class="Zotero" window_role="pref"] floating enable for_window [class="zoom" title="Chat"] floating enable for_window [class="Dia" window_role="toolbox_window"] floating enable for_window [class="Pavucontrol" title="Volume Control"] floating enable assign [class="^firefox$"] $wsbrowser assign [class="^Zotero$"] $wszotero for_window [class="Spotify"] move --no-auto-back-and-forth container to workspace $wsmusic # class border background text indicator child_border client.focused #ae81ff #080808 #85dc85 #ff5454 #ae81ff client.focused_inactive #ae81ff #9e9e9e #080808 #ff5454 #5f676a client.unfocused #ae81ff #323437 #b2b2b2 #ff5454 #222222 client.urgent #ae81ff #900000 #b2b2b2 #ff5454 #900000 client.placeholder #ae81ff #0c0c0c #b2b2b2 #ff5454 #0c0c0c client.background #ffffff # config hide_edge_borders none workspace_auto_back_and_forth yes focus_follows_mouse no mouse_warping none focus_wrapping no set $layout_mode Layout: [v]stack [h]stack [s]piral [2]columns [3]columns [c]ompanion [a]utosplit [n]one bindcode $mod+Shift+30 mode "$layout_mode" mode "$layout_mode" { bindcode 55 exec i3l vstack 0.6 bindcode 43 exec i3l hstack 0.6 bindcode 40 exec i3l spiral bindcode 11 exec i3l 2columns bindcode 12 exec i3l 3columns bindcode 54 exec i3l companion bindcode 38 exec i3l autosplit bindcode 44 exec i3l none bindsym Escape mode "default" bindsym Return mode "default" }