# vim:filetype=i3 # # i3 config file # # Please see http://i3wm.org/docs/userguide.html for a complete reference! # # Set mod key (Mod1=, Mod4=) set $mod Mod4 # set default desktop layout (default is tiling) # workspace_layout tabbed # big monitors: workspace_layout stacking # small monitors: #workspace_layout tabbed #################### ## Visual Section ## #################### # Configure border style #new_window pixel 1 new_float normal # thin borders hide_edge_borders both # change borders bindsym $mod+u border none bindsym $mod+y border pixel 1 bindsym $mod+n border normal # Font for window titles. Will also be used by the bar unless a different font # is used in the bar {} block below. font pango:Hack, Fira Sans, FontAwesome, PowerlineSymbols 11 #-> Colors # Use custom colors for black set $black #282828 set $darkblack #1d2021 set $transparent #000000 set $bg-color #444444 set $inactive-bg-color #2f343f set $text-color #f3f4f5 set $inactive-text-color #676E7D set $urgent-bg-color #E53935 # window colors # border background text indicator client.focused $bg-color $bg-color $text-color #00ff00 client.unfocused $inactive-bg-color $inactive-bg-color $inactive-text-color #00ff00 client.focused_inactive $inactive-bg-color $inactive-bg-color $inactive-text-color #00ff00 client.urgent $urgent-bg-color $urgent-bg-color $text-color #00ff00 ################# ## Bar Section ## ################# bar { status_command i3blocks -c ~/.config/i3/i3blocks.conf colors { background $inactive-bg-color separator #757575 # 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 } position bottom } ######################## ## Workspaces Section ## ######################## # Cheat: http://fontawesome.io/cheatsheet/ # Terminal  set $workspace1 "1 " # Web, Downloads and Transfers      set $workspace2 "2 " # Work GUI dependent      set $workspace3 "3 " # Development       set $workspace4 "4 " set $workspace5 "5 " set $workspace6 "6 " set $workspace7 "7 " set $workspace8 "8 " # Mailing and Chatting  (icons for smartphone handling ->  ) set $workspace9 "9 " # Multimedia / Graphical Work    set $workspace10 "10 " # Open applications on specific workspaces assign [class="Thunderbird"] $workspace9 assign [class="Rhythmbox"] $workspace10 #assign [class="Firefox"] $workspace2 assign [class="Atril"] $workspace3 assign [class="TelegramDesktop"] $workspace9 assign [class="Hexchat"] $workspace9 # Display the popup if it belongs to the fullscreen application only. This is # the default and should be reasonable behavior for most users. # Modes are smart|ignore|leave_fullscreen popup_during_fullscreen smart # Open specific applications in floating mode 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="^ThunarHome$"] floating enable for_window [title="^File Operation Progress$"] floating enable for_window [class="Galculator"] floating enable border pixel 1 for_window [class="Qalculate-gtk"] 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="Cinnamon-settings.py"] 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="Xfburn"] floating enable for_window [class="qTox"] floating enable for_window [class="Gnome-system-monitor"] floating enable for_window [class="Gpk-update-viewer"] floating enable for_window [title="^Current Media Information$"] floating enable for_window [class="^Xfrun4$"] floating enable for_window [class="^Xfce4-appfinder$"] floating enable no_focus [class="^Xfce4-notifyd$" ] for_window [class="^cameraclient$"] floating enable for_window [class="^blueman-manager$"] floating enable for_window [class="^galculator$"] floating enable for_window [class="^vlc$"] floating enable for_window [class="Vlc"] floating enable for_window [class="^Vlc$"] floating enable for_window [class="^ffplay$"] floating enable for_window [class="^mpv$"] floating enable for_window [class="^Yad$"] floating enable border normal for_window [class="^xpad$"] floating enable for_window [class="^Rsvg-view-3$"] floating enable for_window [class="^Volumeicon$"] floating enable for_window [class="^Pavucontrol$"] floating enable for_window [class="^Nm-connection-editor"] floating enable for_window [class="Gdebi-gtk"] floating enable border normal for_window [class="TelegramDesktop"] floating enable border normal # GNUplot and Virtualbox dislike i3 although I tried for_window [class="^gnuplot$"] floating enable #for_window [class="(?i)virtualbox"] floating enable border normal # Gajim stuff assign [class="^Gajim$"] → $workspace1 for_window [class="^Gajim$" window_role="buddy_list"] layout splith, resize shrink width 0 px or 30 ppt, move right for_window [class="^Gajim$" window_role="conversation"] resize grow width 0 px or 30 ppt, move left bindsym $mod+i [class="^Gajim$" window_role="(?i)conversation"] focus; [class="^Gajim$"] focus ########################## ## Key-Bindings Section ## ########################## #-> Workspace related # switch to workspace bindsym $mod+1 workspace $workspace1 bindsym $mod+2 workspace $workspace2 bindsym $mod+3 workspace $workspace3 bindsym $mod+4 workspace $workspace4 bindsym $mod+5 workspace $workspace5 bindsym $mod+6 workspace $workspace6 bindsym $mod+7 workspace $workspace7 bindsym $mod+8 workspace $workspace8 bindsym $mod+9 workspace $workspace9 bindsym $mod+0 workspace $workspace10 # move focused container to workspace bindsym $mod+Shift+1 move container to workspace $workspace1 bindsym $mod+Shift+2 move container to workspace $workspace2 bindsym $mod+Shift+3 move container to workspace $workspace3 bindsym $mod+Shift+4 move container to workspace $workspace4 bindsym $mod+Shift+5 move container to workspace $workspace5 bindsym $mod+Shift+6 move container to workspace $workspace6 bindsym $mod+Shift+7 move container to workspace $workspace7 bindsym $mod+Shift+8 move container to workspace $workspace8 bindsym $mod+Shift+9 move container to workspace $workspace9 bindsym $mod+Shift+0 move container to workspace $workspace10 # 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 # Cycle through active workspaces bindsym $mod+Tab workspace next bindsym $mod+Shift+Tab workspace prev # switch to workspace with urgent window automatically for_window [urgent=latest] focus # sticky window bindsym $mod+Shift+s sticky toggle # Make the currently focused window a scratchpad bindsym $mod+Shift+minus move scratchpad # Show the first scratchpad window bindsym $mod+minus scratchpad show #-> General Behavior # Use Mouse+$mod to drag floating windows to their wanted position floating_modifier $mod # change focus (VIM like setup) 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 (VIM like setup) bindsym $mod+Shift+h move left bindsym $mod+Shift+j move down bindsym $mod+Shift+k move up bindsym $mod+Shift+l move right # 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 # kill focused window bindsym $mod+Shift+q kill # Alias for the command above bindsym Mod1+F4 kill # split in horizontal orientation (VIM like setup) bindsym $mod+comma split h # split in vertical orientation bindsym $mod+v split v # enter 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 # focus the parent container bindsym $mod+a focus parent # focus the child container bindsym $mod+c focus child # 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 # Resize window (you can also use the mouse for that) 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. #commented for VIM like setup #bindsym j resize shrink width 5 px or 5 ppt #bindsym k resize grow height 5 px or 5 ppt #bindsym l resize shrink height 5 px or 5 ppt #bindsym semicolon resize grow width 5 px or 5 ppt bindsym $mod+h resize shrink width 5 px or 5 ppt bindsym $mod+j resize grow height 5 px or 5 ppt bindsym $mod+k resize shrink height 5 px or 5 ppt bindsym $mod+l resize grow width 5 px or 5 ppt # same bindings, but for the arrow keys bindsym Left resize shrink width 10 px or 10 ppt bindsym Down resize grow height 10 px or 10 ppt bindsym Up resize shrink height 10 px or 10 ppt bindsym Right resize grow width 10 px or 10 ppt # exit resize mode: Enter or Escape bindsym Return mode "default" bindsym Escape mode "default" } bindsym $mod+r mode "resize" #################### ## System Control ## #################### #--> Volume Control # Pulse Audio controls bindsym XF86AudioRaiseVolume exec --no-startup-id ~/.config/i3/scripts/volume_level.sh up #increase sound volume bindsym XF86AudioLowerVolume exec --no-startup-id ~/.config/i3/scripts/volume_level.sh down #decrease sound volume bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute 0 toggle # mute sound bindsym $mod+o exec pavucontrol # Sreen brightness controls bindsym XF86MonBrightnessUp exec --no-startup-id xbright +90 # increase screen brightness bindsym XF86MonBrightnessDown exec --no-startup-id xbright -90 # decrease screen brightness # Media player controls #bindsym XF86AudioPause exec "playerctl play-pause || cmus-remote -u" #bindsym $mod+backslash exec "sh -c 'i3-msg \"workspace $workspace10; exec kitty -e ~/.config/i3/scripts/cmus-play.sh \"'" #bindsym XF86AudioNext exec "playerctl next || cmus-remote --next" #bindsym XF86AudioPrev exec "playerctl previous || cmus-remote --prev" # Disable touchpad bindsym XF86Sleep exec --no-startup-id ~/.config/i3/scripts/touchpad.sh ######################## ## Start Applications ## ######################## bindsym $mod+Return exec i3-sensible-terminal bindsym $mod+F3 exec kitty -e 'ranger' bindsym Print exec xfce4-screenshooter bindsym $mod+Ctrl+x --release exec --no-startup-id xkill bindsym $mod+Shift+f exec firefox bindsym $mod+Shift+m exec thunderbird bindsym Ctrl+Shift+1 exec gnome-system-monitor bindsym $mod+Shift+t exec pcmanfm bindsym $mod+Shift+n exec netbeans ################ ## Start Menu ## ################ # start dmenu (a program launcher) bindsym Mod1+F2 exec --no-startup-id dmenu_run #bindsym Mod1+F2 exec --no-startup-id j4-dmenu-desktop [--dmenu="dmenu -i"] [--term="i3-sensible-terminal"] # start j4-dmenu-desktop which only displays applications # shipping a .desktop file. It is a wrapper around dmenu, so you need that # installed. bindsym $mod+d exec --no-startup-id i3-dmenu-desktop #bindsym $mod+d exec --no-startup-id j4-dmenu-desktop [--dmenu="dmenu -i"] [--term="i3-sensible-terminal"] # launch categorized menu bindsym $mod+z exec --no-startup-id ~/.config/i3/scripts/morc_menu.sh ################ ## Power Menu ## ################ # lock bindsym $mod+Shift+x exec light-locker-command -l # alias for the command above bindsym Ctrl+Mod1+l exec light-locker-command -l set $mode_system "System (l) lock, (e) logout, (s) suspend, (r) reboot, (Shift+s) shutdown" mode $mode_system { bindsym l exec --no-startup-id ~/.config/i3/scripts/exit_menu.sh lock, mode "default" bindsym e exec --no-startup-id ~/.config/i3/scripts/exit_menu.sh logout, mode "default" bindsym s exec --no-startup-id ~/.config/i3/scripts/exit_menu.sh suspend, mode "default" bindsym r exec --no-startup-id ~/.config/i3/scripts/exit_menu.sh reboot, mode "default" bindsym Shift+s exec --no-startup-id ~/.config/i3/scripts/exit_menu.sh poweroff, mode "default" # back to normal: Enter or Escape bindsym Return mode "default" bindsym Escape mode "default" } bindsym $mod+Pause mode $mode_system #bindsym XF86Sleep exec --no-startup-id ~/.config/i3/scripts/exit_menu.sh suspend, mode "default" ############################ ######## KEYBOARD ########## ############################ exec --no-startup-id xmodmap /home/xellos/.Xmodmap & bindsym mod3+Tab exec --no-startup-id xdotool key Caps_Lock bindsym mod3+Escape exec --no-startup-id ~/.config/i3/scripts/exit_menu.sh poweroff ############################ ## Autostart applications ## ############################ #-> System related exec --no-startup-id nm-applet & #exec --no-startup-id /usr/lib/policykit-1-gnome/polkit-gnome-authentication-agent-1 & exec --no-startup-id package-update-indicator & exec --no-startup-id xfsettingsd --sm-client-disable & exec --no-startup-id xfce4-power-manager & #exec --no-startup-id compton & exec --no-startup-id light-locker & exec --no-startup-id nitrogen --restore & #-> Session AutoStart exec --no-startup-id ~/.config/i3/scripts/autostart.sh #exec --no-startup-id parcellite & #exec --no-startup-id blueman-applet & #exec --no-startup-id redshift-gtk & #exec --no-startup-id indicator-kdeconnect & #exec --no-startup-id /usr/bin/nextcloud & #exec --no-startup-id gajim & #exec --no-startup-id hexchat --minimize=2 & #exec --no-startup-id /opt/Telegram/Telegram -startintray & #exec --no-startup-id /opt/spotlight.sh & # Display Mode bindsym $mod+p mode "$mode_display" set $mode_display Ext Screen: (z) VGA, (x) HDMI, (c) External OFF mode "$mode_display" { bindsym z mode "$mode_display_vga" bindsym x mode "$mode_display_hdmi" bindsym c exec --no-startup-id xrandr --output VGA1 --off --output HDMI2 --off --output DP2-3 --off, mode "default" # Return to exit out, Escape to go back to external output bindsym Return mode "default" bindsym Escape mode "default" } # VGA settings set $mode_display_vga Ext Screen (VGA): (z) On, (x) Mirrored # Set the shortcuts and what they do mode "$mode_display_vga" { bindsym z exec --no-startup-id xrandr --output VGA1 --auto --left-of LVDS1, mode "default" bindsym x exec --no-startup-id xrandr --output VGA1 --auto --output LVDS1 --auto --same-as LVDS1, mode "default" # Return to exit out, Escape to go back to external output bindsym Return mode "default" bindsym Escape mode "$mode_display" } # HDMI settings set $mode_display_hdmi Ext Screen (HDMI): (z) On, (x) Mirrored # Set the shortcuts and what they do mode "$mode_display_hdmi" { bindsym z exec --no-startup-id xrandr --output HDMI2 --auto --left-of LVDS1, mode "default" bindsym x exec --no-startup-id xrandr --output HDMI2 --auto --output LVDS1 --auto --same-as HDMI2, mode "default" bindsym c exec --no-startup-id xrandr --output HDMI2 --auto --off, mode "default" # Return to exit out, Escape to go back to external output bindsym Return mode "default" bindsym Escape mode "$mode_display" } exec --no-startup-id ~/.config/i3/scripts/remaps.sh