diff --git a/_local/kanaya_work/.config/i3/config b/_local/kanaya_work/.config/i3/config new file mode 100644 index 0000000..694cc40 --- /dev/null +++ b/_local/kanaya_work/.config/i3/config @@ -0,0 +1,388 @@ +# ~/.config/i3/config -- i3 config file (v4) +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# Author: binaryDiv +# Host-specific config for: kanaya (work profile) +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +# COMMON VARIABLES +# ~~~~~~~~~~~~~~~~ + +# ~~ Set modifier: Mod4 = Super/Win key +set $mod Mod4 + +# ~~ Define output displays (primary, secondary monitor) +set $OUTPUT1 HDMI-A-0 +set $OUTPUT2 DVI-D-0 + + +# GENERAL SETTINGS +# ~~~~~~~~~~~~~~~~ + +# ~~ Use Mouse+$mod to drag and resize windows +floating_modifier $mod + +# ~~ No auto focussing via mouseover +focus_follows_mouse no + + +# APPEARANCE +# ~~~~~~~~~~ + +# ~~ Define font +font pango:Liberation Sans 9.5 + +# Alternative: Monospace font +#font pango:DejaVu Sans Mono 9 + +# ~~ Define colors +# class border backgr. text indicator child_border +client.focused #880044 #bb0066 #ffffff #9933dd #880044 +client.focused_inactive #333333 #5f676a #ffffff #484e50 #5f676a +client.unfocused #333333 #222222 #888888 #292d2e #222222 +client.urgent #2f343a #c00000 #ffffff #900000 #900000 +client.placeholder #000000 #0c0c0c #ffffff #000000 #0c0c0c +client.background #ffffff + + +# STATUS BAR +# ~~~~~~~~~~ + +# ~~ Start i3bar with i3status +bar { + status_command i3status + + tray_output primary + tray_padding 0 + + colors { + background #000000 + statusline #ffffff + separator #666666 + + focused_workspace #880044 #bb0066 #ffffff + active_workspace #333333 #5f676a #ffffff + inactive_workspace #333333 #222222 #888888 + urgent_workspace #2f343a #900000 #ffffff + binding_mode #2f343a #900000 #ffffff + } +} + + +# KEYBINDINGS: i3 MANAGEMENT +# ~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# ~~ Reload i3 config 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'" + + +# KEYBINDINGS: OPENING AND CLOSING WINDOWS +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# ~~ Start a terminal +bindsym $mod+Return exec i3-sensible-terminal + +# ~~ Start a terminal in floating mode (works at least with mate-terminal, parameters may vary) +for_window [window_role="floating"] floating enable +bindsym $mod+Shift+Return exec i3-sensible-terminal --window --role=floating + +# ~~ Start application launcher (dmenu) +# Regular dmenu: +bindsym $mod+d exec dmenu_run +# This one only displays .desktop file applications +bindsym $mod+Shift+d exec --no-startup-id i3-dmenu-desktop + +# ~~ Kill focused window +bindsym $mod+Shift+q kill + +# ~~ Kill window with middle button +bindsym --release button2 kill + +# ~~ Open empty container +#bindsym $mod+o open + + +# WINDOW MOVEMENT AND LAYOUTS +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# ~~ Change window focus with [hjkl] +bindsym $mod+h focus left +bindsym $mod+j focus down +bindsym $mod+k focus up +bindsym $mod+l focus right + +# ~~ Move focused window with [hjkl] +bindsym $mod+Shift+h move left +bindsym $mod+Shift+j move down +bindsym $mod+Shift+k move up +bindsym $mod+Shift+l move right + +# ~~ Split in horizontal and vertical orientation with [s] and [v] +bindsym $mod+s split h +bindsym $mod+v split v + +# ~~ Change container layout (toggle split orientation, tabbed, stacking) +bindsym $mod+e layout toggle split +bindsym $mod+t layout tabbed +#bindsym $mod+s layout stacking + +# ~~ Focus the parent or child container +bindsym $mod+a focus parent +bindsym $mod+shift+a focus child + +# ~~ Toggle floating / tiling window +bindsym $mod+Shift+space floating toggle + +# ~~ Switch focus between floating / tiling windows +bindsym $mod+space focus mode_toggle + +# ~~ Enter fullscreen mode for the focused container +bindsym $mod+f fullscreen toggle + +# ~~ Define resize mode +mode "resize" { + # Resize window with [hjkl] + bindsym h resize shrink width 10 px or 10 ppt + bindsym j resize grow height 10 px or 10 ppt + bindsym k resize shrink height 10 px or 10 ppt + bindsym l resize grow width 10 px or 10 ppt + + # Exit to default mode + bindsym Return mode "default" + bindsym Escape mode "default" + bindsym $mod+r mode "default" +} + +bindsym $mod+r mode "resize" + + +# WORKSPACE AND DISPLAY MANAGEMENT +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# ~~ Define workspace names +set $WS0 0 +set $WS1 "1: www" +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: mail" +set $WS11 "11: music" + +# Alternative set of workspaces for secondary monitor +set $WSf1 "F1: com" +set $WSf2 "F2" +set $WSf3 "F3" +set $WSf4 "F4" +set $WSf5 "F5" +set $WSf6 "F6" +set $WSf7 "F7" +set $WSf8 "F8" +set $WSf9 "F9" +set $WSf10 "F10" +set $WSf11 "F11" +set $WSf12 "F12" + +# Specialized workspaces +set $WS_www $WS1 +set $WS_mail $WS10 +set $WS_music $WS11 +set $WS_com $WSf1 + +# ~~ Assign workspaces to displays +workspace $WS1 output $OUTPUT1 +workspace $WS2 output $OUTPUT1 +workspace $WS3 output $OUTPUT1 +workspace $WS4 output $OUTPUT1 +workspace $WS5 output $OUTPUT1 +workspace $WS6 output $OUTPUT1 +workspace $WS7 output $OUTPUT1 +workspace $WS8 output $OUTPUT1 +workspace $WS9 output $OUTPUT1 +workspace $WS10 output $OUTPUT1 +workspace $WS11 output $OUTPUT1 +workspace $WS0 output $OUTPUT1 + +workspace $WSf1 output $OUTPUT2 +workspace $WSf2 output $OUTPUT2 +workspace $WSf3 output $OUTPUT2 +workspace $WSf4 output $OUTPUT2 +workspace $WSf5 output $OUTPUT2 +workspace $WSf6 output $OUTPUT2 +workspace $WSf7 output $OUTPUT2 +workspace $WSf8 output $OUTPUT2 +workspace $WSf9 output $OUTPUT2 +workspace $WSf10 output $OUTPUT2 +workspace $WSf11 output $OUTPUT2 +workspace $WSf12 output $OUTPUT2 + +# ~~ Keybindings to switch workspaces +bindsym $mod+grave workspace number $WS0 +bindsym $mod+1 workspace number $WS1 +bindsym $mod+2 workspace number $WS2 +bindsym $mod+3 workspace number $WS3 +bindsym $mod+4 workspace number $WS4 +bindsym $mod+5 workspace number $WS5 +bindsym $mod+6 workspace number $WS6 +bindsym $mod+7 workspace number $WS7 +bindsym $mod+8 workspace number $WS8 +bindsym $mod+9 workspace number $WS9 +bindsym $mod+0 workspace number $WS10 +bindsym $mod+minus workspace number $WS11 + +bindsym $mod+equal workspace $WSf1 +bindsym $mod+F1 workspace $WSf1 +bindsym $mod+F2 workspace $WSf2 +bindsym $mod+F3 workspace $WSf3 +bindsym $mod+F4 workspace $WSf4 +bindsym $mod+F5 workspace $WSf5 +bindsym $mod+F6 workspace $WSf6 +bindsym $mod+F7 workspace $WSf7 +bindsym $mod+F8 workspace $WSf8 +bindsym $mod+F9 workspace $WSf9 +bindsym $mod+F10 workspace $WSf10 +bindsym $mod+F11 workspace $WSf11 +bindsym $mod+F12 workspace $WSf12 + +# ~~ Keybindings to move focused container to workspaces +bindsym $mod+Shift+grave move container to workspace number $WS0; workspace $WS0 +bindsym $mod+Shift+1 move container to workspace number $WS1; workspace $WS1 +bindsym $mod+Shift+2 move container to workspace number $WS2; workspace $WS2 +bindsym $mod+Shift+3 move container to workspace number $WS3; workspace $WS3 +bindsym $mod+Shift+4 move container to workspace number $WS4; workspace $WS4 +bindsym $mod+Shift+5 move container to workspace number $WS5; workspace $WS5 +bindsym $mod+Shift+6 move container to workspace number $WS6; workspace $WS6 +bindsym $mod+Shift+7 move container to workspace number $WS7; workspace $WS7 +bindsym $mod+Shift+8 move container to workspace number $WS8; workspace $WS8 +bindsym $mod+Shift+9 move container to workspace number $WS9; workspace $WS9 +bindsym $mod+Shift+0 move container to workspace number $WS10; workspace $WS10 +bindsym $mod+Shift+minus move container to workspace number $WS11; workspace $WS11 + +bindsym $mod+Shift+equal move container to workspace $WSf1; workspace $WSf1 +bindsym $mod+Shift+F1 move container to workspace $WSf1; workspace $WSf1 +bindsym $mod+Shift+F2 move container to workspace $WSf2; workspace $WSf2 +bindsym $mod+Shift+F3 move container to workspace $WSf3; workspace $WSf3 +bindsym $mod+Shift+F4 move container to workspace $WSf4; workspace $WSf4 +bindsym $mod+Shift+F5 move container to workspace $WSf5; workspace $WSf5 +bindsym $mod+Shift+F6 move container to workspace $WSf6; workspace $WSf6 +bindsym $mod+Shift+F7 move container to workspace $WSf7; workspace $WSf7 +bindsym $mod+Shift+F8 move container to workspace $WSf8; workspace $WSf8 +bindsym $mod+Shift+F9 move container to workspace $WSf9; workspace $WSf9 +bindsym $mod+Shift+F10 move container to workspace $WSf10; workspace $WSf10 +bindsym $mod+Shift+F11 move container to workspace $WSf11; workspace $WSf11 +bindsym $mod+Shift+F12 move container to workspace $WSf12; workspace $WSf12 + +# ~~ Keybindings for moving focus/containers/workspaces between monitors +bindsym $mod+comma focus output $OUTPUT3 +bindsym $mod+period focus output primary +bindsym $mod+slash focus output $OUTPUT2 + +bindsym $mod+Shift+comma move container to output $OUTPUT3; focus output $OUTPUT3 +bindsym $mod+Shift+period move container to output primary; focus output primary +bindsym $mod+Shift+slash move container to output $OUTPUT2; focus output $OUTPUT2 + +bindsym Control+$mod+comma move workspace to output $OUTPUT3 +bindsym Control+$mod+period move workspace to output primary +bindsym Control+$mod+slash move workspace to output $OUTPUT2 + + +# APP-SPECIFIC WINDOW RULES +# ~~~~~~~~~~~~~~~~~~~~~~~~~ + +# ~~ Make windows on workspace F1 (messengers) floating by default +for_window [workspace=$WSf1] floating enable + +# ~~ Waterfox, Firefox +assign [class="^(Water|Fire)fox$"] number $WS_www +for_window [class="^(Water|Fire)fox$"] layout tabbed + +# ~~ Thunderbird +assign [class="^Thunderbird$"] number $WS_mail +for_window [class="^Thunderbird$"] layout tabbed + +# ~~ Telegram +assign [class="^TelegramDesktop$"] output $OUTPUT2 +assign [class="^TelegramDesktop$"] number $WS_com +for_window [class="^TelegramDesktop$" title="^Telegram"] floating enable + +# ~~ Gajim +assign [class="^Gajim$"] output $OUTPUT2 +assign [class="^Gajim$"] number $WS_com +for_window [class="^Gajim$"] floating enable + +# ~~ VS Code +for_window [class="^code-oss$"] layout tabbed + +# ~~ Jetbrains IDE +for_window [class="^jetbrains-"] layout tabbed +for_window [class="^jetbrains-" title="Commit Changes"] floating disable + +# ~~ Steam +for_window [class="^Steam$"] layout tabbed +for_window [title="^Friends List"] floating disable + +# ~~ Misc other apps +for_window [class="^Pavucontrol$"] floating enable + +# ~~ Zulip, Teams +assign [class="^Zulip$"] output $OUTPUT2 +assign [class="^Zulip$"] workspace $WS_com +for_window [class="^Zulip$"] floating enable + +assign [class="^Microsoft Teams"] output $OUTPUT2 +assign [class="^Microsoft Teams"] workspace $WS_com +for_window [class="^Microsoft Teams"] floating enable + +# ~~ Time tracker (web app running in Chromium) +assign [instance="^timetracker"] output $OUTPUT2 +assign [instance="^timetracker"] workspace $WS_com +for_window [instance="^timetracker"] floating enable + + +# DESKTOP AND APPLICATION KEYBINDINGS +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# ~~ Suspend and lock screen +bindsym $mod+Pause exec --no-startup-id "sleep 1; systemctl suspend" +bindsym $mod+Shift+Pause exec --no-startup-id "loginctl lock-session" + +# ~~ Volume keys +bindsym XF86AudioRaiseVolume exec --no-startup-id "volctl up" +bindsym XF86AudioLowerVolume exec --no-startup-id "volctl down" +bindsym XF86AudioMute exec --no-startup-id "volctl mute toggle" + +# Bind volume control to Print/ScrollLock/Pause for TKL keyboard +bindsym Print exec --no-startup-id "volctl down" +bindsym Scroll_Lock exec --no-startup-id "volctl up" +bindsym Pause exec --no-startup-id "volctl mute toggle" + +# ~~ Switch between display profiles +bindsym $mod+p exec --no-startup-id "displayprofile auto" +bindsym $mod+Scroll_Lock exec --no-startup-id "displayprofile auto" +bindsym $mod+Ctrl+Scroll_Lock exec --no-startup-id "displayprofile default" + +# ~~ Password manager: passmenu +bindsym $mod+Shift+p exec --no-startup-id passmenu +bindsym $mod+Shift+Ctrl+p exec --no-startup-id passmenu-private + +# ~~ Screenshot tool +bindsym $mod+Print exec gnome-screenshot -i + + +# INITIALIZATION AND AUTOSTART +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# ~~ Run background applications +exec --no-startup-id redshift-gtk + diff --git a/_local/kanaya_work/.config/i3status/config b/_local/kanaya_work/.config/i3status/config new file mode 100644 index 0000000..acfa74a --- /dev/null +++ b/_local/kanaya_work/.config/i3status/config @@ -0,0 +1,64 @@ +# ~/.config/i3status/config -- i3status config file +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# Author: binaryDiv +# Host-specific config for: kanaya +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# (See "man i3status" for documentation.) + +# ~~ General i3status settings +general { + colors = true + interval = 1 +} + + +# ~~ Define order of status bar elements +order += "ethernet tun0" +order += "ethernet _first_" +order += "cpu_temperature 0" +order += "load" +order += "tztime local" +order += "volume master" + + +# ~~ Ethernet status +ethernet _first_ { + format_up = "🌐 %ip (%speed)" + format_down = "🌐 No Ethernet" +} + +# ~~ VPN status via tun0 device +ethernet tun0 { + format_up = "VPN: %ip" + format_down = "No VPN" + color_good = "#FF0000" + color_bad = "#666666" +} + +# ~~ Date and time +tztime local { + format = "%Y-%m-%d %H:%M:%S" +} + +# ~~ Volume control display +volume master { + format = "🔉 %volume" + format_muted = "🔇 %volume" + device = "pulse" +} + +# ~~ CPU temperature +cpu_temperature 0 { + format = "%degrees °C" + format_above_threshold = "🔥 %degrees °C" + max_threshold = 70 + path = "/sys/devices/pci0000:00/0000:00:18.3/hwmon/hwmon1/temp1_input" +} + +# ~~ CPU average load +load { + format = "%1min" +} +