### Variables # # Logo key. Use Mod1 for Alt. set $mod Mod4 # Home row direction keys, like vim set $left h set $down j set $up k set $right l set $term sakura ### Key bindings # # Basics: # # start a terminal bindsym $mod+Return exec $term # kill focused window bindsym $mod+Shift+q kill # start your launcher bindsym $mod+d exec --no-startup-id i3-dmenu-desktop # desktop applications bindsym $mod+x exec --no-startup-id dmenu_run # all executables # Drag floating windows by holding down $mod and left mouse button. # Resize them with right mouse button + $mod. # Despite the name, also works for non-floating windows. # Change normal to inverse to use left mouse button for resizing and right # mouse button for dragging. # floating_modifier $mod normal floating_modifier $mod # 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-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'" # # Moving around: # # Move your focus around bindsym $mod+$left focus left bindsym $mod+$down focus down bindsym $mod+$up focus up bindsym $mod+$right focus right # or use $mod+[up|down|left|right] bindsym $mod+Left focus left bindsym $mod+Down focus down bindsym $mod+Up focus up bindsym $mod+Right focus right # _move_ the focused window with the same, but add Shift bindsym $mod+Shift+$left move left bindsym $mod+Shift+$down move down bindsym $mod+Shift+$up move up bindsym $mod+Shift+$right move right # ditto, with arrow 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 # # Workspaces: # # rename workspace bindsym $mod+n exec i3-msg rename workspace to "$(i3-msg -t get_workspaces | jq '.[] | select(.focused==true).num'):$(dmenu -p 'Rename workspace to ')" # reset custom name of workspace bindsym $mod+Shift+n exec i3-msg rename workspace to "$(i3-msg -t get_workspaces | jq '.[] | select(.focused==true).num')" # 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 # 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 # move focused workspace to monitor bindsym $mod+Control+$left move workspace to output left bindsym $mod+Control+$down move workspace to output down bindsym $mod+Control+$up move workspace to output up bindsym $mod+Control+$right move workspace to output right # or use the arrow keys bindsym $mod+Control+Left move workspace to output left bindsym $mod+Control+Down move workspace to output down bindsym $mod+Control+Up move workspace to output up bindsym $mod+Control+Right move workspace to output right # # Layout stuff: # # You can "split" the current object of your focus with # $mod+b or $mod+v, for horizontal and vertical splits # respectively. bindsym $mod+b splith bindsym $mod+v splitv # Switch the current container between different layout styles bindsym $mod+s layout stacking bindsym $mod+w layout tabbed bindsym $mod+e layout toggle split # Make the current focus fullscreen bindsym $mod+f fullscreen # Toggle the current focus between tiling and floating mode bindsym $mod+Shift+space floating toggle # Swap focus between the tiling area and the floating area bindsym $mod+space focus mode_toggle # move focus to the parent container bindsym $mod+a focus parent bindsym $mod+z focus child # hide and show status bar bindsym $mod+t bar mode toggle # # Scratchpad: # # Sway has a "scratchpad", which is a bag of holding for windows. # You can send windows there and get them back later. # 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 # # Resizing containers: # mode "resize" { # left will shrink the containers width # right will grow the containers width # up will shrink the containers height # down will grow the containers height bindsym $left resize shrink width 10 px or 3 ppt bindsym $down resize grow height 10 px or 3 ppt bindsym $up resize shrink height 10 px or 3 ppt bindsym $right resize grow width 10 px or 3 ppt # ditto, with arrow keys bindsym Left resize shrink width 10 px or 3 ppt bindsym Down resize grow height 10 px or 3 ppt bindsym Up resize shrink height 10 px or 3 ppt bindsym Right resize grow width 10 px or 3 ppt # return to default mode bindsym Return mode "default" bindsym Escape mode "default" } bindsym $mod+r mode "resize" ### Styling # # Basics: # font pango:Ubuntu, FontAwesome 10 set $bg-color #464f63 set $inactive-bg-color #020202 set $text-color #f3f4f5 set $inactive-text-color #f3f4f5 #set $inactive-text-color #676e7d #set $urgent-bg-color #f90900 set $urgent-bg-color #676e7d # # Window colors: # border background text indicator client.focused $bg-color $bg-color $text-color $bg-color client.unfocused $inactive-bg-color $inactive-bg-color $inactive-text-color $inactive-bg-color client.focused_inactive $inactive-bg-color $inactive-bg-color $inactive-text-color $inactive-bg-color client.urgent $urgent-bg-color $urgent-bg-color $text-color $urgent-bg-color # # Window borders: # #default_border pixel 1 new_window pixel 1 # # Status Bar: # # Read `man 5 sway-bar` for more information about this section. bar { mode hide position top status_command i3blocks -c ~/.config/i3/i3blocks.conf colors { statusline #ffffff # border background text focused_workspace $bg-color $bg-color $text-color inactive_workspace $inactive-bg-color $inactive-bg-color $inactive-text-color urgent_workspace $urgent-bg-color $urgent-bg-color $text-color } } set $background_image ".background" # desktop background exec_always --no-startup-id feh --bg-scale $background_image ### Special keys # # Sound: # bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ '-5%', exec pkill -SIGRTMIN+10 i3blocks bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ '+5%', exec pkill -SIGRTMIN+10 i3blocks bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle, exec pkill -SIGRTMIN+10 i3blocks # # Backlight: # bindsym XF86MonBrightnessDown exec --no-startup-id brightnessctl set 2%-, exec pkill -SIGRTMIN+10 i3blocks bindsym XF86MonBrightnessUp exec --no-startup-id brightnessctl set 2%+, exec pkill -SIGRTMIN+10 i3blocks # # Other utilities: # bindsym Print exec --no-startup-id gnome-screenshot bindsym $mod+Sift+Control+l exec --no-startup-id systemctl suspend # # Common applications # bindsym $mod+Enter exec $term bindsym $mod+y exec ~/bin/passmenu --type, mode "default" bindsym $mod+u exec emacsclient --alternate-editor='' --create-frame --no-wait , mode "default" bindsym $mod+i exec firefox bindsym $mod+p exec --no-startup-id ~/bin/open-project bindsym $mod+Shift+i exec firefox --private-window # # Quick launch menu # mode "media" { bindsym space \ exec --no-startup-id dbus-send --print-reply \ --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 \ org.mpris.MediaPlayer2.Player.PlayPause, \ exec pkill -SIGRTMIN+10 i3blocks, \ mode "default" bindsym $right \ exec --no-startup-id dbus-send --print-reply \ --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 \ org.mpris.MediaPlayer2.Player.Next, \ exec pkill -SIGRTMIN+10 i3blocks bindsym $left \ exec --no-startup-id dbus-send --print-reply \ --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 \ org.mpris.MediaPlayer2.Player.Previous, \ exec pkill -SIGRTMIN+10 i3blocks bindsym Return mode "default" bindsym Escape mode "default" } bindsym $mod+m mode "media" # # Session and power management # exec --no-startup-id xss-lock --transfer-sleep-lock -- ~/bin/lock set $mode_system [0-3] monitor, (l) lock, (e) logout, (s) suspend, (r) reboot, (S) shutdown mode "$mode_system" { bindsym 0 exec --no-startup-id ~/bin/setup mirror, mode "default" bindsym 1 exec --no-startup-id ~/bin/setup single, mode "default" bindsym 2 exec --no-startup-id ~/bin/setup double, mode "default" bindsym 3 exec --no-startup-id ~/bin/setup triple, mode "default" bindsym l exec --no-startup-id ~/bin/lock, mode "default" bindsym e exec --no-startup-id i3-msg exit, mode "default" bindsym s exec --no-startup-id systemctl suspend, mode "default" bindsym r exec --no-startup-id systemctl reboot, mode "default" bindsym Shift+s exec --no-startup-id systemctl poweroff, mode "default" bindsym Return mode "default" bindsym Escape mode "default" } bindsym $mod+Escape mode "$mode_system" # utility applications # disable audible bell exec xset -b # enable tap to click on touchpad exec_always --no-startup-id xinput set-prop "SynPS/2 Synaptics TouchPad" "libinput Tapping Enabled" 1 # increase pointer acceleration on touchpad exec_always --no-startup-id xinput set-prop "SynPS/2 Synaptics TouchPad" "libinput Accel Speed" 0.5 exec --no-startup-id redshift exec --no-startup-id sakura --name=sakura_scratchpad for_window [instance="sakura_scratchpad"] move scratchpad # layout preferences for_window [class="Spotify"] move to workspace number 10 # exec spotify assign [instance="slack"] 8 #exec --no-startup-id slack