# vim: foldmethod=marker ### Appearance ###{{{ ## Wallpaper ## {{{ set $wall_set feh --bg-fill ~/Desktop/walls/0f1111.png #set $wall_set wal -e -s -i ~/Desktop/walls/canvas.jpg # pywal will set the wallpaper and change the colors only for # rofi and some other things #}}} ## Borders ## {{{ # Border style |none|pixel> default_border none default_floating_border none # Hide edge_borders hide_edge_borders none # Change border style |none|toggle> bindsym $mod+u border toggle #}}} ## Gaps ## {{{ gaps inner 10 gaps outer -4 bindsym $mod+Shift+0 gaps inner current set 0 , gaps outer current set 0 bindsym $mod+Shift+9 gaps inner current set 10 , gaps outer current set -4 #gaps used if only more than one container on the workspace smart_gaps on # Gaps Mode set $mode_gaps Gaps: (o) outer, (i) inner, (r) reset current, (R) reset all, (0) Zero gaps current 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+v mode "$mode_gaps" mode "$mode_gaps" { bindsym o mode "$mode_gaps_outer" bindsym i mode "$mode_gaps_inner" bindsym r gaps inner current set 10 , gaps outer current set -4 , mode "default" bindsym Shift+r gaps inner all set 10 , gaps outer all set -4 , mode "default" bindsym 0 gaps inner current set 0 , gaps outer current set 0 , mode "default" bindsym Return mode "default" bindsym Escape mode "default" } mode "$mode_gaps_inner" { bindsym plus gaps inner current plus 5 bindsym minus 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 plus gaps outer current plus 5 bindsym minus 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" } #}}} ## Color Variables ##{{{ # Slightly modified Arc theme colors set $arc_blue #5294E2 set $arc_dark_blue #2f343f set $arc_darker_blue #181b21 set $arc_white #ededed set $arc_grey #777777 set $arc_red #cc575d # Mist colors set $mist_green #4a6a38 set $mist_dark_blue #040f18 set $mist_darker_blue #01060a #Brown colors set $brown_dark #1e0106 set $brown_darker #0f0000 set $brown_gold #d17f27 # Base16 Seti UI by # template by Matt Parnell, @parnmatt set $base00 #151718 set $base01 #8ec43d set $base02 #3B758C set $base03 #41535B set $base04 #43a5d5 set $base05 #d6d6d6 set $base06 #eeeeee set $base07 #ffffff set $base08 #Cd3f45 set $base09 #db7b55 set $base0A #e6cd69 set $base0B #9fca56 set $base0C #55dbbe set $base0D #55b5db set $base0E #a074c4 set $base0F #8a553f # client.focused $base0D $base0D $base00 $base01 # client.focused_inactive $base02 $base02 $base03 $base01 # client.unfocused $base01 $base01 $base03 $base01 # client.urgent $base02 $base08 $base07 $base08 #}}} ## Window Decorations ##{{{ # class border backgr. text indic. child_border client.focused $arc_dark_blue $arc_dark_blue $arc_white client.focused_inactive $arc_darker_blue $arc_darker_blue $arc_white client.unfocused $arc_darker_blue $arc_darker_blue $arc_grey client.urgent $arc_red $arc_red $arc_white client.placeholder #000000 #0c0c0c #ffffff #000000 client.background #2B2C2B #}}} ## Pywal Color Scheme ##{{{ # set_from_resource $fg i3wm.color8 #f0f0f0 # set_from_resource $bg i3wm.color0 #f0f0f0 # set_from_resource $c2 i3wm.color2 #f0f0f0 # set_from_resource $c7 i3wm.color7 #f0f0f0 # # # class border backgr. text indicator child_border # client.focused $bg $bg $fg $c7 $c2 # client.focused_inactive $bg $bg $fg $c7 $c2 # client.unfocused $bg $bg $fg $c7 $c2 # client.urgent $bg $bg $fg $c7 $bg # client.placeholder $bg $bg $fg $c7 $bg # # client.background $bg #}}} #}}} ### Application Launcher Key Bindings ###{{{ set $dmenu_args -nb "#000" -sb "#FFF" -sf "#000" -h 20 bindsym $mod+Return exec --no-startup-id st bindsym $mod+Shift+Return exec --no-startup-id samedir bindsym $mod+b exec st -e "nnn" bindsym $mod+Ctrl+b exec terminal -e 'bmenu' # bindsym $mod+d exec "rofi -show run -lines 3 -padding 25" # bindsym $mod+d exec --no-startup-id `cat .config/launcher | dmenu -nb "#000" -sb "#FFF" -sf "#000" -h 20` bindsym $mod+d exec --no-startup-id `cat .config/launcher | dmenu $dmenu_args` bindsym $mod+i exec --no-startup-id clipmenu $dmenu_args -l 15 # Desktop application launcher #bindsym $mod+Shift+d exec --no-startup-id "rofi -show drun" bindsym $mod+Shift+d exec --no-startup-id "runa -a" # bindsym $mod+i exec --no-startup-id "qutebrowser" # PD bindsym $mod+p exec --no-startup-id dmenu_run $dmenu_args -l 20 # window swticher using rofi bindsym $mod+v exec --no-startup-id "rofi -show window -width 70" #bindsym $mod+Shift+u exec mpv "$(xsel -b)" bindsym $mod+slash exec --no-startup-id st -e zsh -c 'rifle "$(fzf --reverse)"' #}}} ### Window Management ###{{{ ## Window focus ##{{{ 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 # 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 #}}} ## Window resize ##{{{ # Resize window (you can also use the mouse for that) bindsym $mod+r mode "resize" mode "resize" { bindsym h resize shrink width 5 px or 5 ppt bindsym j resize shrink height 5 px or 5 ppt bindsym k resize grow height 5 px or 5 ppt bindsym l resize grow width 5 px or 5 ppt bindsym Shift+h resize shrink width 10 px or 10 ppt bindsym Shift+j resize grow height 10 px or 10 ppt bindsym Shift+k resize shrink height 10 px or 10 ppt bindsym Shift+l resize grow width 10 px or 10 ppt # exit resize mode: Enter or Escape bindsym Return mode "default" bindsym Escape mode "default" } #}}} ## Workspace ##{{{ # Workspace names #set $ws2 2: 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 $wsq q # 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+q workspace $wsq # 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+q move container to workspace $wsq # 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+q move container to workspace $wsq; workspace $wsq workspace_auto_back_and_forth no bindsym $mod+Tab workspace back_and_forth bindsym $mod+Shift+Tab move container to workspace back_and_forth; workspace back_and_forth #navigate workspaces next / previous bindsym $mod+Ctrl+l workspace next bindsym $mod+Ctrl+h workspace prev #}}} ## Containter ##{{{ # split orientation bindsym $mod+m split h bindsym $mod+n split v # toggle fullscreen mode for the focused container bindsym $mod+f fullscreen toggle # change container layout (stacked, tabbed, toggle split) 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+semicolon 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+semicolon scratchpad show #}}} ## Window Criteria ##{{{ # Open specific applications in floating mode for_window [title="JavaTest"] floating enable, position center for_window [title="Screen Layout Editor"] floating enable for_window [title="Application Finder"] floating enable, resize set 500 700, move position center for_window [class="TelegramDesktop"] floating enable border pixel 1 for_window [title="alsamixer"] floating enable border pixel 1 for_window [class="Calamares"] floating enable border normal for_window [class="Clipgrab"] floating enable for_window [title="File Transfer*"] floating enable for_window [class="Galculator"] floating enable border pixel 1 for_window [class="GParted"] floating enable border normal for_window [title="i3_help"] floating enable sticky enable border normal for_window [class="Lightdm-gtk-greeter-settings"] floating enable for_window [class="Lxappearance"] floating enable sticky enable border normal for_window [class="Manjaro-hello"] floating enable for_window [class="Manjaro Settings Manager"] floating enable border normal for_window [title="MuseScore: Play Panel"] floating enable for_window [class="Nitrogen"] floating enable sticky enable border normal for_window [class="Oblogout"] fullscreen enable for_window [class="octopi"] floating enable for_window [title="About Pale Moon"] floating enable for_window [class="Pamac-manager"] floating enable for_window [class="Pavucontrol"] floating enable for_window [class="qt5ct"] floating enable sticky enable border normal for_window [class="Qtconfig-qt4"] floating enable sticky enable border normal for_window [class="Simple-scan"] floating enable border normal for_window [class="(?i)System-config-printer.py"] floating enable border normal for_window [class="Skype"] floating enable border normal for_window [class="Thus"] floating enable border normal for_window [class="Timeset-gui"] floating enable border normal for_window [class="(?i)virtualbox"] floating enable border normal for_window [class="Xfburn"] floating enable # Resize floating file chooser for_window [window_role="GtkFileChooserDialog"] resize set 840 580, move position center #}}} #}}} ### Dual Monitor Settings ###{{{ ## Mode - Monitor Positions ##{{{ set $monitor_top "xrandr --output HDMI1 --mode 1280x1024 --pos 46x0 --rotate normal --output eDP1 --mode 1366x768 --pos 0x1024 --rotate normal" set $monitor_right "xrandr --output HDMI1 --mode 1280x1024 --pos 1366x0 --rotate normal --output eDP1 --mode 1366x768 --pos 0x0 --rotate normal" set $monitor_none "xrandr --output HDMI1 --off --output eDP1 --mode 1366x768 --pos 0x0 --rotate normal" set $monitor_duplicate "xrandr --output eDP1 --primary --mode 1366x768 --scale 1x1 --output HDMI1 --same-as eDP1 --mode 1280x1024 --scale 0.75x0.75" set $monitor_right_r_left "xrandr --output HDMI1 --mode 1280x1024 --pos 1370x0 --rotate left --output eDP1 --primary --mode 1366x768 --pos 0x0 --rotate normal" set $mode_monitor_position (T)-Monitor Top , (Y)-Monitor right , (G)-Monitor None , (F)-Monitor Mirror , ()-Monitor Right Rotate Left bindsym $mod+y mode "$mode_monitor_position" mode "$mode_monitor_position" { # these keybindings change the monitor position and then write to file the same command # is used to set the the respective position of the monitor. That command is then executed at startup # sets the monitor to the top bindsym t exec $monitor_top , exec $wall_set && sleep 0.01 , exec echo $monitor_top > ~/.screenlayout/last_layout , mode "default" # sets monitor to the right bindsym y exec $monitor_right , exec $wall_set && sleep 0.01 , exec echo $monitor_right > ~/.screenlayout/last_layout , mode "default" # when there is no external monitor connected bindsym g exec $monitor_none , exec $wall_set && sleep 0.01 , exec echo $monitor_none > ~/.screenlayout/last_layout , mode "default" # duplicate the laptop screen to an external monitor bindsym f exec $monitor_duplicate , exec $wall_set && sleep 0.01 , exec echo $monitor_duplicate > ~/.screenlayout/last_layout , mode "default" # sets monitor to the left and rotates it to left bindsym Ctrl+y exec --no-startup-id $monitor_right_r_left , exec $wall_set && sleep 0.01 , exec echo $monitor_right_r_left > ~/.screenlayout/last_layout , mode "default" bindsym Escape mode "default" bindsym Return mode "default" } ##}}} ## Mode - Move to Monitor ##{{{ set $mode_monitor_move Use h,j,k,l keys to move the workspace to another monitor bindsym $mod+a mode "$mode_monitor_move" mode "$mode_monitor_move"{ bindsym h move workspace to output left bindsym j move workspace to output down bindsym k move workspace to output up bindsym l move workspace to output right bindsym Shift+h move container to output left bindsym Shift+j move container to output down bindsym Shift+k move container to output up bindsym Shift+l move container to output right bindsym Escape mode "default" bindsym Return mode "default" } #}}} #}}} ### Autostart Applications/Scripts ###{{{ exec --no-startup-id newsboat-cron exec --no-startup-id clipmenud # Typematic delay and rate (Autorepeating key in X server) exec --no-startup-id xset r rate 250 50 # chaning keyboard layout using Alt+Caps from US to IN exec --no-startup-id setxkbmap -layout us,in -option "grp:alt_caps_toggle" exec --no-startup-id /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 exec --no-startup-id compton -b exec --no-startup-id nm-applet exec --no-startup-id xfce4-power-manager exec --no-startup-id xautolock -time 10 -locker blurlock exec_always --no-startup-id ff-theme-util exec_always --no-startup-id fix_xcursor # Configures the monitors according to the last set layout using xrandr exec --no-startup-id ~/.screenlayout/last_layout exec_always --no-startup-id $wall_set # disable the trackpad exec --no-startup-id toggle_touchpad exec --no-startup-id syncthing -no-browser #}}} ### Misc ### {{{ #Modifier Key set $mod Mod4 # Use Mouse+$mod to drag floating windows floating_modifier $mod # exec_always --no-startup-id "killall flashfocus ; flashfocus" bindsym $mod+F2 exec --no-startup-id toggle_touchpad # Font for window titles. Will also be used by the bar unless a different font # is used in the bar {} block below. font pango:Roboto 8 # kill focused window bindsym $mod+o kill bindsym $mod+Ctrl+o --release exec --no-startup-id xkill # Screenshot 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 # Screenshots for notes bindsym $mod+g exec --no-startup-id notes_scrot #exec --no-startup-id volumeicon bindsym $mod+Ctrl+m exec terminal -e 'alsamixer' # Screen brightness controls # bindsym XF86MonBrightnessUp exec "xbacklight -inc 10; notify-send 'brightness up'" # bindsym XF86MonBrightnessDown exec "xbacklight -dec 10; notify-send 'brightness down'" # switch to workspace with urgent window automatically for_window [urgent=latest] focus # 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 # 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 i3exit lock, mode "default" bindsym s exec --no-startup-id i3exit suspend, 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 i3exit hibernate, 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" } # }}} ### Status Bar ###{{{ #Start i3bar to display a workspace bar (plus the system information i3status if available) bar { i3bar_command i3bar status_command i3blocks position top font pango:Hack 9 # separator_symbol " ╱ " separator_symbol "│" bindsym button 4 workspace prev bindsym button 5 workspace next modifier none tray_output primary colors { separator #333333 background #000000 # background $base00 statusline $base05 # border, backgr, text focused_workspace #CCCCCC #CCCCCC #222222 active_workspace #333333 #333333 $eeeeee inactive_workspace #000000 #000000 $eeeeee urgent_workspace $base08 $base08 $base07 } } # hide/unhide i3bar bindsym $mod+Shift+m bar mode toggle #}}}