Created
June 7, 2022 11:20
-
-
Save HoneyBearCodes/4728810d0a0dd775c717fd5ef416e050 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
exec --no-startup-id ~/set_once_i3.sh | |
####################### | |
# config starts here: # | |
####################### | |
# Font for window titles. Will also be used by the bar unless a different font | |
# is used in the bar {} block below. | |
# This font is widely installed, provides lots of unicode glyphs, right-to-left | |
# text rendering and scalability on retina/hidpi displays (thanks to pango). | |
font pango: Noto Sans Regular 10 | |
# set the mod key to the winkey: | |
set $mod Mod4 | |
##################### | |
# workspace layout: # | |
##################### | |
# default i3 tiling mode: | |
workspace_layout default | |
# i3 stacking layout: | |
# Each window will be fullscreen and tabbed top to bottom. | |
#workspace_layout stacking | |
# i3 tabbed layout: | |
# Each new window will open fullscreen as a tab (left to right) | |
#workspace_layout tabbed | |
############################## | |
# extra options for windows: # | |
############################## | |
#border indicator on windows: | |
new_window pixel 1 | |
# thin borders | |
# hide_edge_borders both | |
# Set inner/outer gaps | |
gaps inner 6 | |
gaps outer 3 | |
# show window title bars (not officially supported with i3gaps) | |
#default_border normal | |
# window title alignment | |
#title_align center | |
# Use Mouse+$mod to drag floating windows to their wanted position | |
floating_modifier $mod | |
# 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 $ws9 | |
bindsym $mod+0 workspace $ws10 | |
# switch to workspace with numpad keys | |
bindcode $mod+87 workspace 1 | |
bindcode $mod+88 workspace 2 | |
bindcode $mod+89 workspace 3 | |
bindcode $mod+83 workspace 4 | |
bindcode $mod+84 workspace 5 | |
bindcode $mod+85 workspace 6 | |
bindcode $mod+79 workspace 7 | |
bindcode $mod+80 workspace 8 | |
bindcode $mod+81 workspace 9 | |
bindcode $mod+90 workspace 10 | |
# switch to workspace with numlock numpad keys | |
bindcode $mod+Mod2+87 workspace $ws1 | |
bindcode $mod+Mod2+88 workspace $ws2 | |
bindcode $mod+Mod2+89 workspace $ws3 | |
bindcode $mod+Mod2+83 workspace $ws4 | |
bindcode $mod+Mod2+84 workspace $ws5 | |
bindcode $mod+Mod2+85 workspace $ws6 | |
bindcode $mod+Mod2+79 workspace $ws7 | |
bindcode $mod+Mod2+80 workspace $ws8 | |
bindcode $mod+Mod2+81 workspace $ws9 | |
bindcode $mod+Mod2+90 workspace $ws10 | |
# 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 $ws9 | |
bindsym $mod+Shift+0 move container to workspace $ws10 | |
# move focused container to workspace with numpad keys | |
bindcode $mod+Shift+Mod2+87 move container to workspace $ws1 | |
bindcode $mod+Shift+Mod2+88 move container to workspace $ws2 | |
bindcode $mod+Shift+Mod2+89 move container to workspace $ws3 | |
bindcode $mod+Shift+Mod2+83 move container to workspace $ws4 | |
bindcode $mod+Shift+Mod2+84 move container to workspace $ws5 | |
bindcode $mod+Shift+Mod2+85 move container to workspace $ws6 | |
bindcode $mod+Shift+Mod2+79 move container to workspace $ws7 | |
bindcode $mod+Shift+Mod2+80 move container to workspace $ws8 | |
bindcode $mod+Shift+Mod2+81 move container to workspace $ws9 | |
bindcode $mod+Shift+Mod2+90 move container to workspace $ws10 | |
# move focused container to workspace with numpad keys | |
bindcode $mod+Shift+87 move container to workspace $ws1 | |
bindcode $mod+Shift+88 move container to workspace $ws2 | |
bindcode $mod+Shift+89 move container to workspace $ws3 | |
bindcode $mod+Shift+83 move container to workspace $ws4 | |
bindcode $mod+Shift+84 move container to workspace $ws5 | |
bindcode $mod+Shift+85 move container to workspace $ws6 | |
bindcode $mod+Shift+79 move container to workspace $ws7 | |
bindcode $mod+Shift+80 move container to workspace $ws8 | |
bindcode $mod+Shift+81 move container to workspace $ws9 | |
bindcode $mod+Shift+90 move container to workspace $ws10 | |
###################################### | |
# keybindings for different actions: # | |
###################################### | |
# start a terminal | |
bindsym $mod+Return exec /usr/bin/alacritty | |
# kill focused window | |
bindsym $mod+q kill | |
# exit-menu | |
bindsym $mod+Shift+e exec ~/.config/i3/scripts/powermenu | |
# Lock the system | |
# lock with a picture: | |
# bindsym $mod+l exec i3lock -i ~/.config/i3/i3-lock-screen.png -p default|win -t | |
# lock by blurring the screen: | |
# bindsym $mod+l exec ~/.config/i3/scripts/blur-lock | |
bindsym $mod+l exec ~/.config/i3/scripts/dracula-lock.sh | |
# reload the configuration file | |
bindsym $mod+Shift+c reload | |
# restart i3 inplace (preserves your layout/session, can be used to update i3) | |
bindsym $mod+Shift+r restart | |
# keybinding in fancy rofi (automated): | |
# bindsym F1 exec ~/.config/i3/scripts/keyhint-2 | |
bindsym F1 exec ~/.config/i3/scripts/rofi-emoji.sh | |
# alternative | |
# keybinding list in editor: | |
# bindsym $mod+F1 exec xed ~/.config/i3/keybindings | |
# Backlight control | |
bindsym XF86MonBrightnessUp exec xbacklight +5 && notify-send "Brightness - $(xbacklight -get | cut -c1-2)%" | |
bindsym XF86MonBrightnessDown exec xbacklight -5 && notify-send "Brightness - $(xbacklight -get | cut -c1-2)%" | |
# change focus | |
bindsym $mod+j focus left | |
bindsym $mod+k focus down | |
bindsym $mod+b focus up | |
bindsym $mod+o 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+b move up | |
bindsym $mod+Shift+o 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 | |
# split in horizontal orientation | |
bindsym $mod+h 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+g 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 | |
# open new empty workspace | |
bindsym $mod+Shift+n exec ~/.config/i3/scripts/empty_workspace | |
# Multimedia Keys | |
# volume | |
bindsym XF86AudioRaiseVolume exec amixer -D pulse sset Master 5%+ && pkill -RTMIN+1 i3blocks | |
bindsym XF86AudioLowerVolume exec amixer -D pulse sset Master 5%- && pkill -RTMIN+1 i3blocks | |
# gradular volume control | |
bindsym $mod+XF86AudioRaiseVolume exec amixer -D pulse sset Master 1%+ && pkill -RTMIN+1 i3blocks | |
bindsym $mod+XF86AudioLowerVolume exec amixer -D pulse sset Master 1%- && pkill -RTMIN+1 i3blocks | |
# mute | |
bindsym XF86AudioMute exec amixer sset Master toggle && killall -USR1 i3blocks | |
# audio control | |
bindsym XF86AudioPlay exec playerctl play | |
bindsym XF86AudioPause exec playerctl pause | |
bindsym XF86AudioNext exec playerctl next | |
bindsym XF86AudioPrev exec playerctl previous | |
# Redirect sound to headphones | |
bindsym $mod+p exec /usr/local/bin/switch-audio-port | |
## App shortcuts | |
bindsym $mod+w exec /usr/bin/microsoft-edge-stable | |
bindsym $mod+n exec /usr/bin/alacritty --class ranger -e /usr/bin/ranger | |
bindsym Print exec scrot ~/Pictures/Screenshots/%Y-%m-%d-%T-screenshot.png && notify-send "Screenshot saved to ~/Pictures/Screenshots/$(date +"%Y-%m-%d-%T")-screenshot.png" | |
bindsym --release Shift+Print exec "scrot -s '%Y-%m-%d-%T-selection.png' -e 'mv $f ~/Pictures/Screenshots/'" | |
# Power Profiles menu switcher (rofi) | |
bindsym $mod+Shift+p exec ~/.config/i3/scripts/power-profiles | |
########################################## | |
# configuration for workspace behaviour: # | |
########################################## | |
# Define names for default workspaces for which we configure key bindings later on. | |
# We use variables to avoid repeating the names in multiple places. | |
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 "10" | |
# use workspaces on different displays: | |
# where you have to replace VGA-0/HDMI-0 with the names for your displays | |
# you can get from xrandr command | |
#workspace $ws1 output VGA-0 | |
#workspace $ws2 output VGA-0 | |
#workspace $ws3 output HDMI-0 | |
#workspace $ws4 output HDMI-0 | |
#workspace $ws5 output HDMI-0 | |
# bind program to workspace and focus to them on startup: | |
assign [instance="Alacritty"] $ws1 | |
assign [class="(?i)microsoft-edge"] $ws2 | |
assign [class="Alacritty" instance="ranger"] $ws4 | |
assign [class="mpv"] $ws5 | |
assign [class="qBittorrent"] $ws6 | |
# automatic set focus new window if it opens on another workspace then the current: | |
for_window [class=Alacritty] focus | |
for_window [class=(?i)microsoft-edge] focus | |
for_window [class="Alacritty" instance=ranger] focus | |
for_window [class=mpv] floating enable # enable floating for mpv player | |
for_window [class=Code] focus | |
for_window [class=qBittorrent] focus | |
############## | |
# compositor # | |
############## | |
# transparency | |
# uncomment one of them to be used (picom package is installed per default) | |
# options could need changes, related to used GPU and drivers. | |
# to find the right setting consult the archwiki or ask at the forum. | |
# | |
# xcompmgr: https://wiki.archlinux.org/title/Xcompmgr | |
# manpage: https://man.archlinux.org/man/xcompmgr.1.en | |
#exec --no-startup-id xcompmgr -C -n & | |
# or an more specialized config like this: | |
#exec --no-startup-id xcompmgr -c -C -t-5 -l-5 -r4.2 -o.55 & | |
# | |
# or: | |
# | |
# picom: https://wiki.archlinux.org/title/Picom | |
# manpage: https://man.archlinux.org/man/picom.1.en | |
exec_always --no-startup-id picom -b --experimental-backends | |
#exec_always --no-startup-id killall picom && picom -b | |
#exec_always --no-startup-id picom --config ~/.config/picom.conf | |
############################################# | |
# autostart applications/services on login: # | |
############################################# | |
#get auth work with polkit-gnome | |
exec --no-startup-id /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 | |
# dex execute .desktop files | |
# keep in mind that it can cause issues | |
# when second to i3 a DE is installed or mixed usage of i3 + xfce4 or GNOME | |
# in this cases better disable dex and use manual starting apps using xdg/autostart | |
# if enabled you should comment welcome app. | |
#exec --no-startup-id dex -a -s /etc/xdg/autostart/:~/.config/autostart/ | |
exec --no-startup-id dex --autostart --environment i3 | |
# start welcome app | |
#exec --no-startup-id sh /usr/share/endeavouros/scripts/welcome --startdelay=3 | |
# num lock activated | |
#exec --no-startup-id numlockx on | |
# configure multiple keyboard layouts and hotkey to switch (Alt+CAPSLOCK in this example) | |
#exec --no-startup-id setxkbmap -layout 'us,sk' -variant altgr-intl,qwerty -option 'grp:alt_caps_toggle' | |
# start conky: | |
#exec_always --no-startup-id conky | |
# start a script to setup displays or | |
# uncomment the next line, use arandr to setup displays and save the file as monitor: | |
exec --no-startup-id ~/.config/i3/scripts/StartupScripts/setup_monitors.sh | |
# set wallpaper | |
exec_always --no-startup-id sleep 3 && nitrogen --restore | |
#exec --no-startup-id feh --bg-fill /usr/share/endeavouros/backgrounds/endeavouros_i3.png | |
# set powersavings for display: | |
exec --no-startup-id xset s 480 dpms 600 600 600 | |
# disable power saving (for example if using xscreensaver) | |
#exec --no-startup-id xset -dpms | |
# use xautolock to use autosuspend rules for mobile devices | |
# https://wiki.archlinux.org/title/Session_lock#xautolock | |
#exec --no-startup-id xautolock -time 60 -locker "systemctl suspend" | |
# xscreensaver | |
# https://www.jwz.org/xscreensaver | |
#exec --no-startup-id xscreensaver --no-splash | |
# Desktop notifications | |
exec --no-startup-id dbus-launch dunst --config ~/.config/dunst/dunstrc | |
# alternative if you installed aside with XFCE4: | |
# exec --no-startup-id /usr/lib/xfce4/notifyd/xfce4-notifyd & | |
# autotiling script | |
# https://github.com/nwg-piotr/autotiling | |
# `yay -S autotiling ;) (it is in AUR) | |
#exec_always --no-startup-id autotiling | |
# Autostart apps as you like | |
#exec --no-startup-id sleep 2 && xfce4-terminal | |
#exec --no-startup-id sleep 7 && firefox https://github.com/endeavouros-team/endeavouros-i3wm-setup/blob/main/force-knowledge.md | |
#exec --no-startup-id sleep 3 && thunar | |
############### | |
# system tray # | |
############### | |
# if you do not use dex: exec --no-startup-id dex --autostart --environment i3 | |
# you need to have tray apps started here: | |
# start blueberry app for managing bluetooth devices from tray: | |
#exec --no-startup-id blueberry-tray | |
# networkmanager-applet | |
#exec --no-startup-id nm-applet | |
# clipman-applet | |
#exec --no-startup-id xfce4-clipman | |
################## | |
# floating rules # | |
################## | |
# set floating (nontiling) for apps needing it | |
for_window [class="Yad" instance="yad"] floating enable | |
for_window [class="Galculator" instance="galculator"] floating enable | |
for_window [class="Blueberry.py" instance="blueberry.py"] floating enable | |
# set floating (nontiling) for special apps | |
for_window [class="Xsane" instance="xsane"] floating enable | |
for_window [class="Pavucontrol" instance="pavucontrol"] floating enable | |
for_window [class="qt5ct" instance="qt5ct"] floating enable | |
for_window [class="Blueberry.py" instance="blueberry.py"] floating enable | |
for_window [class="Bluetooth-sendto" instance="bluetooth-sendto"] floating enable | |
for_window [class="Pamac-manager"] floating enable | |
for_window [window_role="About"] floating enable | |
# set border of floating window | |
for_window [class="urxvt"] border pixel 1 | |
# set size of floating window | |
#for_window [window_role="(?i)GtkFileChooserDialog"] resize set 640 480 #to set size of file choose dialog | |
#for_window [class=".*"] resize set 640 480 #to change size of all floating windows | |
# set position of floating window | |
#for_window [class=".*"] move position center | |
###################################### | |
# color settings for bar and windows # | |
###################################### | |
# define colors for windows: | |
# class border bground text indicator child_border | |
client.focused #6272A4 #6272A4 #F8F8F2 #6272A4 #6272A4 | |
client.focused_inactive #44475A #44475A #F8F8F2 #44475A #44475A | |
client.unfocused #282A36 #282A36 #BFBFBF #282A36 #282A36 | |
client.urgent #44475A #FF5555 #F8F8F2 #FF5555 #FF5555 | |
client.placeholder #282A36 #282A36 #F8F8F2 #282A36 #282A36 | |
############################################ | |
# bar settings (input comes from i3blocks) # | |
############################################ | |
# Start i3bar to display a workspace bar | |
# (plus the system information i3status finds out, if available) | |
bar { | |
font pango: Noto Sans Regular 10 | |
status_command i3blocks -c ~/.config/i3/i3blocks.conf | |
position top | |
i3bar_command i3bar --transparency | |
# it could be that you have no primary display set: set one (xrandr --output <output> --primary) | |
# reference: https://i3wm.org/docs/userguide.html#_tray_output | |
tray_output primary | |
tray_padding 0 | |
# When strip_workspace_numbers is set to yes, | |
# any workspace that has a name of the form | |
# “[n][:][NAME]” will display only the name. | |
strip_workspace_numbers yes | |
##strip_workspace_name no | |
colors { | |
#background #282A3680 | |
background #282A36CC | |
statusline #F8F8F2 | |
separator #44475A | |
focused_workspace #44475A #44475A #F8F8F2 | |
active_workspace #282A36 #44475A #F8F8F2 | |
inactive_workspace #282A36 #282A36 #BFBFBF | |
urgent_workspace #FF5555 #FF5555 #F8F8F2 | |
binding_mode #FF5555 #FF5555 #F8F8F2 | |
} | |
} | |
# you can add different bars for multidisplay setups on each display: | |
# set output HDMI-0 to the display you want the bar, --transparency can be set. | |
# Transparency needs rgba color codes to be used where the last two letters are the transparency factor see here: | |
# https://gist.github.com/lopspower/03fb1cc0ac9f32ef38f4 | |
# #08052be6 --> e6=90% | |
# bar { | |
# font pango: Noto Sans Regular 10 | |
# status_command i3blocks -c ~/.config/i3/i3blocks-2.conf | |
# i3bar_command i3bar --transparency | |
# output HDMI-0 | |
# position bottom | |
# | |
# When strip_workspace_numbers is set to yes, | |
# any workspace that has a name of the form | |
# “[n][:][NAME]” will display only the name. | |
#strip_workspace_numbers yes | |
##strip_workspace_name no | |
# | |
# colors { | |
# separator $purple | |
# background $darkbluetrans | |
# statusline $white | |
# border bg txt indicator | |
# focused_workspace $lighterblue $lighterblue $darkblue $purple | |
# active_workspace $lightdblue $lightdblue $darkblue $purple | |
# inactive_workspace $darkblue $darkblue $lightdblue $purple | |
# urgent_workspace $urgentred $urgentred $white $purple | |
# } | |
#} | |
##################################### | |
# Application menu handled by rofi: # | |
##################################### | |
## rofi bindings fancy application menu ($mod+d /F9 optional disabled) | |
bindsym $mod+d exec rofi -modi drun -show drun \ | |
-config ~/.config/rofi/rofidmenu.rasi | |
#bindsym F9 exec rofi -modi drun -show drun \ | |
# -config ~/.config/rofi/rofidmenu.rasi | |
## rofi bindings for window menu ($mod+t /F10 optional disabled) | |
bindsym $mod+t exec rofi -show window \ | |
-config ~/.config/rofi/rofidmenu.rasi | |
#bindsym F10 exec rofi -show window \ | |
# -config ~/.config/rofi/rofidmenu.rasi | |
## rofi bindings to manage clipboard (install rofi-greenclip from the AUR) | |
exec --no-startup-id greenclip daemon>/dev/null | |
bindsym $mod+c exec --no-startup-id rofi -modi "clipboard:greenclip print" -show clipboard \ | |
-config ~/.config/rofi/rofidmenu.rasi | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment