Skip to content

Instantly share code, notes, and snippets.

@jgillman
Last active November 11, 2023 02:33
Show Gist options
  • Save jgillman/f3a53d6ccc8848da0b9e to your computer and use it in GitHub Desktop.
Save jgillman/f3a53d6ccc8848da0b9e to your computer and use it in GitHub Desktop.
i3 config from /u/twodogsdave
If this is hard to read in your browser, just copy the text and paste it into your editor.
Turn 'line wrapping' on. :)
This is a 'how to' for anyone interested in a i3 setup and also for anyone currently
using i3 and wants to tweak there setup a little more. I am constantly updating my
i3 config with cool 'stuff.' I hope you enjoy reading and if you use some of the code,
great! I don't know everything and am still learning, too. :)
This is my system settings for i3. Specifically, I use [Manjaro i3](https://forum.manjaro.org/index.php?topic=28022.0).
This is not a list of all keyboard shortcuts. Just the ones I use a lot.
My i3 config file is tweaked alot and everything works. If you were to install
Manjaro i3 on your computer and replace the default config with my config and,
assuming you had everything installed that I have installed, it should (?) work perfectly.
YMMV.
After I installed Manjaro i3 on my computer, I updated (yaourt -Syua) and removed
mousepad, palemoon and nitrogen (replaced with geany, firefox and hsetroot).
Extra software that I installed..
yaourt -S radiotray tty-clock-borderless grub-customizer urxvtcd geany-themes firefox
mplayer moc ranger transmission-gtk figlet cowsay jre8-openjdk feh imagemagick
scrot screenfetch gimp gimp-help-en htop agave soundconverter easytag bleachbit
youtube-dl ffmpeg mencoder vlc hddtemp galculator w3m lolcat
I don't use a login manager. I prefer to enter name, password and startx. I also like my
grub background to be the same as my desktop background. I create a link and then
use grub-customizer to select the background. Do something like this in terminal -->
sudo ln -s ~/Pictures/login_background/bg.png /usr/share/grub/bg.png and open
grub-customizer to select the new background and save. Tip: I save all my fave wallpapers
in ~/Pictures/login_background/ and I rename the wallpaper that I want to use now to bg.png
(my .xinitrc file sources that image and applies it using hsetroot).
I also use xcolors [link](https://github.com/linuxbbq/xcolors) to apply a pretty color pallete to all
my terminal apps, and I use a few custom bash scripts that are in my ~/bin folder (env-info,
grabber, pacli, torrent done and upgrade to name a few).
I have also included my .Xresourses and .xinitrc files.
shift = S
alt= A
ctl= C
super= M
M + d dmenu
MS + f pcmanfm
SA + f root pcmanfm
MS + t urxvtc
MS + e geany
MS + w firefox
S + q close window
M + z previous workspace
M + x next workspace
M + c back and forth workspace
MS + space toggle floating
A + c calculator
A + t transmission
A + p toggle (hide) icon system tray in bar
M + o no gaps
M + p gaps in and out (10 pixels)
MS + p gaps out (40 pixels) in (10 pixels)
MS + o gaps out (200 pixels) in (10 pixels)
M + r resize windows, escape to exit
MS + g gaps mode, enter i or o, shift + (-/+), escape to exit
MS + v open a floating terminal window
MS + z open tty-clock in a tiny window
MS + x open lxappearance
MS + m start Minecraft
MS + n rename the workspace
# __ _
# ___ ___ _ __ / _(_) __ _
# / __/ _ \| '_ \| |_| |/ _` |
# | (_| (_) | | | | _| | (_| |
# \___\___/|_| |_|_| |_|\__, |
# |___/
#
# This file has been auto-generated by i3-config-wizard(1).
# It will not be overwritten, so edit it as you like.
#
# Should you change your keyboard layout some time, delete
# this file and re-run i3-config-wizard(1).
#
# i3 config file (v4)
# Please see http://i3wm.org/docs/userguide.html for a complete reference!
##########################################################################
# general #
##########################################################################
# Set mod key (Mod1=<Alt>, Mod4=<Super>)
# Mod4 = Super key
# Mod1 = Alt key
set $mod Mod4
# Color chooser
# arch blue #1793D1
# debian red #D70A53
# manjaro green #2ECC71
# plasma green #18B092
# matrix green #00FF00
# mint green #5FAA24
# numix #C84433
# ubuntu orange #F37320
# vertex dark #2C6FF0
set $color1 #15967D
set $color2 #666666
# Set default desktop layout (default is tiling)
# workspace_layout tabbed <stacking|tabbed>
# Window border multiplier
set $borders 1
# Configure border style <normal|1pixel|pixel xx|none|pixel>
new_window pixel $borders
new_float pixel $borders
# Hide borders
hide_edge_borders none
# Change borders
bindsym $mod+u border none
bindsym $mod+y border pixel 2
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:Droid Sans 8
# Use Mouse+$mod to drag floating windows
floating_modifier $mod
# Start a terminal
# bindsym $mod+Return exec i3-sensible-terminal
# bindsym $mod+Return exec terminal
# Start a floating terminal
bindsym $mod+Shift+v exec --no-startup-id urxvt -name "floating_urxvt"
for_window [class="URxvt" instance="floating_urxvt$"] floating toggle
# Kill focused window
bindsym $mod+Shift+q kill
# Scratchpad
bindsym $mod+Shift+minus move scratchpad
bindsym $mod+minus scratchpad show
##########################################################################
# gap settings #
##########################################################################
# Disable and enable gaps
bindsym $mod+o gaps inner current set 0; gaps outer current set 0
bindsym $mod+p gaps inner current set 10; gaps outer current set 10
bindsym $mod+Shift+p gaps inner current set 10; gaps outer current set 40
bindsym $mod+Shift+o gaps inner current set 10; gaps outer current set 200
# Disable window titlebars entirely
for_window [class="^.*"] border pixel 2
# Set inner/outer gaps
gaps inner 0
gaps outer 0
# 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 <px>
# 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 on
# 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 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"
}
##########################################################################
# dmenu #
##########################################################################
# Start program launcher
bindsym $mod+d exec --no-startup-id dmenu_recency -l 100
##########################################################################
# applications #
##########################################################################
# Start Applications
bindsym $mod+shift+w exec firefox
bindsym $mod+shift+f exec pcmanfm
bindsym mod1+shift+f exec gksu pcmanfm
bindsym $mod+shift+t exec urxvtc
bindsym $mod+shift+e exec geany
bindsym $mod+t exec --no-startup-id pkill compton
bindsym $mod+Ctrl+t exec --no-startup-id compton -b --config ~/.compton.conf
bindsym $mod+shift+m exec ~/bin/startup_minecraft.sh
bindsym $mod+shift+y exec ~/bin/wallview
bindsym $mod+shift+z exec "urxvtc -geometry 35x9 -e tty-clock -b -c -C 3 -D"
bindsym mod1+c exec galculator
bindsym mod1+t exec transmission-gtk
bindsym $mod+shift+x exec lxappearance
bindsym $mod+Shift+d exec killall dunst && exec notify-send 'restart dunst'
bindsym Print exec scrot -e 'mv $f ~/Screenshots' && sleep 1 && exec notify-send 'screenshot has been saved in ~/Screenshots'
bindsym $mod+Print exec scrot -ue 'mv $f ~/Screenshots' && sleep 1 && exec notify-send 'screenshot has been saved in ~/Screenshots'
bindsym $mod+Shift+Print exec notify-send 'selection will be saved in ~/Screenshots' & exec scrot -se 'mv $f ~/Screenshots' && sleep 1 && exec notify-send 'screenshot has been saved in ~/Screenshots'
# Open applications on specific workspaces
# assign [class="Firefox"] 2
# assign [class="Pcmanfm"] 3
# assign [class="Transmission-gtk"] → transmission
# assign [class="Minecraft"] → minecraft
# Open specific applications in floating mode
for_window [title="alsamixer"] floating enable border pixel 2
for_window [title="tty-clock"] floating enable border pixel 2
for_window [class="Clipgrab"] floating enable
for_window [title="File Transfer*"] floating enable
for_window [class="Galculator"] floating enable border pixel 2
for_window [class="GParted"] floating enable border normal
for_window [class="Lxappearance"] floating enable
for_window [class="Pamac-manager"] floating enable
for_window [class="(?i)System-config-printer.py"] floating enable border normal
for_window [class="(?i)virtualbox"] floating enable border normal
for_window [class="net-minecraft-bootstrap-Bootstrap"] floating enable
for_window [class="Minecraft 1.7.10"] floating enable
for_window [class="Transmission-gtk"] floating enable
for_window [class="Vlc"] floating enable border pixel 2
for_window [class="Arista-gtk"] floating enable border pixel 2
##########################################################################
# focus #
##########################################################################
# Change focus
# focus_follows_mouse no
focus_follows_mouse true
popup_during_fullscreen smart
# Change focus
bindsym $mod+j focus left
bindsym $mod+k focus down
bindsym $mod+l focus up
bindsym $mod+odiaeresis 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+j move left
bindsym $mod+Shift+k move down
bindsym $mod+Shift+l move up
bindsym $mod+Shift+odiaeresis 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
# Workspace back and forth (with/without active container)
workspace_auto_back_and_forth yes
bindsym $mod+c workspace back_and_forth
bindsym $mod+Shift+c move container to workspace back_and_forth; workspace back_and_forth
# Split in horizontal orientation
bindsym $mod+h split h;exec notify-send 'split horizontally'
# Split in vertical orientation
bindsym $mod+v split v;exec notify-send 'split vertically'
# 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
# Focus the parent container
bindsym $mod+a focus parent
# Toggle sticky
bindsym $mod+Shift+s sticky toggle
##########################################################################
# workspaces #
##########################################################################
# Workspace names
set $tag1 "1  urxvtc"
set $tag2 "2  pcmanfm"
set $tag3 "3  geany"
set $tag4 "4  firefox"
# Switch to workspace
bindsym $mod+1 workspace $tag1
bindsym $mod+2 workspace $tag2
bindsym $mod+3 workspace $tag3
bindsym $mod+4 workspace $tag4
bindsym $mod+5 workspace 5
bindsym $mod+6 workspace 6
bindsym $mod+7 workspace 7
bindsym $mod+8 workspace 8
bindsym $mod+9 workspace 9
bindsym $mod+0 workspace 0
# Navigate workspaces next / previous
bindsym $mod+x workspace next
bindsym $mod+z workspace prev
# Move focused container to workspace
bindsym $mod+Ctrl+1 move container to workspace $tag1
bindsym $mod+Ctrl+2 move container to workspace $tag2
bindsym $mod+Ctrl+3 move container to workspace $tag3
bindsym $mod+Ctrl+4 move container to workspace $tag4
bindsym $mod+Ctrl+5 move container to workspace number 5
bindsym $mod+Ctrl+6 move container to workspace number 6
bindsym $mod+Ctrl+7 move container to workspace number 7
bindsym $mod+Ctrl+8 move container to workspace number 8
bindsym $mod+Ctrl+9 move container to workspace number 9
bindsym $mod+Ctrl+0 move container to workspace number 0
# Move to workspace with focused container
bindsym $mod+Shift+1 move container to workspace $tag1; workspace $tag1
bindsym $mod+Shift+2 move container to workspace $tag2; workspace $tag2
bindsym $mod+Shift+3 move container to workspace $tag3; workspace $tag3
bindsym $mod+Shift+4 move container to workspace $tag4; workspace $tag4
bindsym $mod+Shift+5 move container to workspace number 5; workspace 5
bindsym $mod+Shift+6 move container to workspace number 6; workspace 6
bindsym $mod+Shift+7 move container to workspace number 7; workspace 7
bindsym $mod+Shift+8 move container to workspace number 8; workspace 8
bindsym $mod+Shift+9 move container to workspace number 9; workspace 9
bindsym $mod+Shift+0 move container to workspace number 0; workspace 0
# Rename workspace with i3-input using numbers and text
bindsym $mod+Shift+n exec i3-input -F 'rename workspace to "%s"' -P 'New name: '
# Switch to workspace with urgent window automatically
for_window [urgent=latest] focus
##########################################################################
# resize windows #
##########################################################################
# Resize windows
bindsym $mod+r mode "resize"
mode "resize" {
# These bindings trigger as soon as you enter the resize mode
bindsym h resize shrink width 5 px or 5 ppt
bindsym j resize grow height 5 px or 5 ppt
bindsym k resize shrink height 5 px or 5 ppt
bindsym 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 shrink height 10 px or 10 ppt
bindsym Up resize grow 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"
}
##########################################################################
# restore window layouts #
##########################################################################
# Start my defaults layouts on boot
# exec --no-startup-id "i3-msg 'workspace 1; append_layout ~/.config/i3/workspace-1.json'"
# exec --no-startup-id "i3-msg 'workspace 2; append_layout ~/.config/i3/workspace-2.json'"
# exec --no-startup-id "i3-msg 'workspace 3; append_layout ~/.config/i3/workspace-3.json'"
# exec --no-startup-id "i3-msg 'workspace 4; append_layout ~/.config/i3/workspace-4.json'"
##########################################################################
# bar settings and colors #
##########################################################################
bindsym mod1+P bar mode toggle
# Start i3bar to display a workspace bar with a system tray
bar {
# status_command $HOME/.i3/conky-i3bar
status_command i3status -c ~/.i3/i3status.conf
# height 25
# strip_workspace_numbers yes
# position top
# wheel_up_cmd nop
# wheel_down_cmd nop
modifier Mod1
font pango:Droid Sans,Icons 8
colors {
separator $color2
background #000000
statusline $color2 #border backgr. text
focused_workspace $color1 $000000 $color1
# active_workspace #000000 #A4A28D #FFFFFF
inactive_workspace $color2 #000000 $color2
urgent_workspace #900000 #000000 #900000
}
}
# Start i3bar to display a workspace bar without a system tray
bar {
# status_command $HOME/.i3/conky-i3bar
status_command i3status -c ~/.i3/i3status.conf
# height 25
# strip_workspace_numbers yes
# position top
# wheel_up_cmd nop
# wheel_down_cmd nop
mode hide
hidden_state hide
tray_output none
modifier Mod1
font pango:Droid Sans,Icons 8
colors {
separator $color2
background #000000
statusline $color2 #border backgr. text
focused_workspace $color1 $000000 $color1
# active_workspace #000000 #A4A28D #FFFFFF
inactive_workspace $color2 #000000 $color2
urgent_workspace #900000 #000000 #900000
}
}
# Theme colors border backgr. text
client.focused $color1 $color1 #000000 #FFFFFF
client.unfocused #222222 #222222 $color #222222
client.urgent #274D01 #900000 #FFFFFF #900000
##########################################################################
# volume keybinds #
##########################################################################
# Multimedia Keys
# Alsamixer
# bindsym Mod1+k exec amixer -q set Master 5%+ unmute
# bindsym Mod1+j exec amixer -q set Master 5%- unmute
# bindsym Mod1+m exec amixer -q set Master mute
##########################################################################
# autostart #
##########################################################################
# Autostart applications
exec --no-startup-id /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
exec --no-startup-id nm-applet
exec --no-startup-id volumeicon
exec --no-startup-id xfce4-power-manager
exec --no-startup-id pamac-tray
# exec --no-startup-id compton -b
# exec --no-startup-id nitrogen --restore
# exec --no-startup-id radiotray
# exec --no-startup-id clipit
# exec --no-startup-id octopi-notifier
# exec --no-startup-id ~/.conky/start_conky_grey
# exec --no-startup-id start_conky_green
# exec --no-startup-id qpdfview i3_help.pdf
exec --no-startup-id xautolock -time 5 -locker blurlock
##########################################################################
# shut down / restart #
##########################################################################
# 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'"
# Set shut down, restart and locking features
bindsym $mod+Shift+Return 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"
}
#!/bin/sh
# _ _ _
# __ _(_)_ __ (_) |_ _ __ ___
# \ \/ / | '_ \| | __| '__/ __|
# > <| | | | | | |_| | | (__
# /_/\_\_|_| |_|_|\__|_| \___|
#
# Executed by startx (run your window manager from here)
#
# Start dbus
if [ -d /etc/X11/xinit/xinitrc.d ] ; then
for f in /etc/X11/xinit/xinitrc.d/?*.sh ; do
[ -x "$f" ] && . "$f"
done
unset f
fi
# Set a basic backdrop
# xsetroot -bg "#111111" -mod 3 3 &
# xsetroot -bg "#5a5a5a" -mod 2 2 &
# Set a nice backdrop
hsetroot -fill /home/dave/Pictures/login_background/bg.png &
# Start urxvtd
/usr/bin/urxvtd -q -f -o &
# Reload Xresources
xrdb -merge .Xresources
# Drop some shadows
compton -b -f --config ~/.compton.conf
sleep 2 && urxvtc -geometry 35x9 -e tty-clock -b -c -C 3 -D &
# Start window manager
export GTK2_RC_FILES="$HOME/.gtkrc-2.0"
exec i3 >> ~/.i3/.i3log 2>&1
#!/bin/sh
# _ _ _
# __ _(_)_ __ (_) |_ _ __ ___
# \ \/ / | '_ \| | __| '__/ __|
# > <| | | | | | |_| | | (__
# /_/\_\_|_| |_|_|\__|_| \___|
#
# Executed by startx (run your window manager from here)
#
# Start dbus
if [ -d /etc/X11/xinit/xinitrc.d ] ; then
for f in /etc/X11/xinit/xinitrc.d/?*.sh ; do
[ -x "$f" ] && . "$f"
done
unset f
fi
# Set a basic backdrop
# xsetroot -bg "#111111" -mod 3 3 &
# xsetroot -bg "#5a5a5a" -mod 2 2 &
# Set a nice backdrop
hsetroot -fill /home/dave/Pictures/login_background/bg.png &
# Start urxvtd
/usr/bin/urxvtd -q -f -o &
# Reload Xresources
xrdb -merge .Xresources
# Drop some shadows
compton -b -f --config ~/.compton.conf
sleep 2 && urxvtc -geometry 35x9 -e tty-clock -b -c -C 3 -D &
# Start window manager
export GTK2_RC_FILES="$HOME/.gtkrc-2.0"
exec i3 >> ~/.i3/.i3log 2>&1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment