aboutsummaryrefslogtreecommitdiffstats
path: root/i3
diff options
context:
space:
mode:
authorSpacedio <spacedio@thernusen.net>2026-04-28 22:04:12 -0400
committerSpacedio <spacedio@thernusen.net>2026-04-28 22:04:12 -0400
commita82c20fbc2d736cba174502fccbcba648ce978e9 (patch)
tree7c7b24458599790508411f07eb0386eb6437108e /i3
parent5a4e777e5d18faf6e829d95aa6947ec396f6dff8 (diff)
downloaddotfiles-a82c20fbc2d736cba174502fccbcba648ce978e9.tar.gz
Cleanup of i3 config and added a power menu for rofi.laptop/blade-stealth
Diffstat (limited to 'i3')
-rw-r--r--i3/.config/i3/config318
-rwxr-xr-xi3/.config/i3/scripts/powermenu.sh21
-rwxr-xr-xi3/.config/i3/scripts/powertimer.sh (renamed from i3/.config/i3/scripts/power_timer.sh)0
3 files changed, 103 insertions, 236 deletions
diff --git a/i3/.config/i3/config b/i3/.config/i3/config
index 8472507..db04490 100644
--- a/i3/.config/i3/config
+++ b/i3/.config/i3/config
@@ -1,188 +1,84 @@
-# 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 https://i3wm.org/docs/userguide.html for a complete reference!
-
+# --- i3 Config File (v4) ---
set $mod Mod4
-# Font for window titles. Will also be used by the bar unless a different font
-# is used in the bar {} block below.
-font pango:Hasklug Nerd Font Mono 12
-
-# 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:Hasklug Nerd Font Mono 12
-
-# Start XDG autostart .desktop files using dex. See also
-# https://wiki.archlinux.org/index.php/XDG_Autostart
-#exec --no-startup-id dex --autostart --environment i3
-exec --no-startup-id pulseaudio --start &
+# --- Appearance ---
+font pango:Hasklug Nerd Font 12
+
+# Borders & Focus
+focus_follows_mouse yes
+default_border pixel 3
+default_floating_border pixel 3
+for_window [class="^.*"] border pixel 3
+hide_edge_borders smart
+
+# Gaps (i3-gaps/i3-rounded)
+gaps inner 0
+gaps outer 0
+smart_gaps on
+
+# Tokyo Night-ish Color Palette
+# class border backgr. text indicator child_border
+client.focused #9aa5ce #364A82 #c0caf5 #9aa5ce #9aa5ce
+client.focused_inactive #16161d #16161d #c0caf5 #16161d #16161d
+client.unfocused #16161d #16161d #c0caf5 #16161d #16161d
+
+# --- Autostart ---
+exec --no-startup-id pulseaudio --start
exec --no-startup-id /usr/bin/openrazer-daemon
exec --no-startup-id brightnessctl set 40%
-exec_always --no-startup-id feh --bg-scale ~/.config/backgrounds/bg3.jpg
-exec_always --no-startup-id ~/.config/polybar/launch.sh
-#exec_always --no-startup-id "picom --config ~/.config/picom/picom.conf"
-
-# The combination of xss-lock, nm-applet and pactl is a popular choice, so
-# they are included here as an example. Modify as you see fit.
-
-# xss-lock grabs a logind suspend inhibit lock and will use i3lock to lock the
-# screen before suspend. Use loginctl lock-session to lock your screen.
exec --no-startup-id xss-lock -- physlock -m -d
-exec --no-startup-id ~/.config/i3/scripts/power_timer.sh
-
-# NetworkManager is the most popular way to manage wireless networks on Linux,
-# and nm-applet is a desktop environment-independent system tray GUI for it.
-#exec --no-startup-id nm-applet
-
-# Autofocus on hover, also when switching workspaces
- focus_follows_mouse yes
-
- # Borders
- # Also removes all title bars
- for_window [class="^.*"] border pixel 3
- default_border pixel 3
- default_floating_border pixel 3
-
- # Hide borders at the edge of the screen
- hide_edge_borders smart
-
- # Set colours various window states
- # Syntax: client.<class> <border> <background> <text> [<indicator> [<child_border>]]
- # The available classes are:
- # client.focused: The window that has focus.
- # client.focused_inactive: The most recently focused view within a container which is not focused.
- # client.placeholder: Ignored (present for i3 compatibility).
- # client.unfocused: A view that does not have focus.
- # client.urgent: A view with an urgency hint. Note: Native Wayland windows do not support urgency. Urgency only works for Xwayland windows.
- #The meaning of each color is:
- # border: The border around the title bar.
- # background: The background of the title bar.
- # text: The text color of the title bar.
- # indicator: The color used to indicate where a new view will open. In a tiled container, this would paint the right border of the current view if a new view would be opened to the right.
- # child_border: The border around the view itself.
- # The default colors are:
- # class border background text indicator child_border
- # background n/a #ffffff n/a n/a n/a
- # focused #4c7899 #285577 #ffffff #2e9ef4 #285577
- # focused_inactive #333333 #5f676a #ffffff #484e50 #5f676a
- # unfocused #333333 #222222 #888888 #292d2e #222222
- # urgent #2f343a #900000 #ffffff #900000 #900000
- # placeholder #000000 #0c0c0c #ffffff #000000 #0c0c0c
- client.focused #9aa5ce #364A82 #c0caf5 #9aa5ce #9aa5ce
- client.focused_inactive #16161d #16161d #c0caf5 #16161d #16161d
- client.unfocused #16161d #16161d #c0caf5 #16161d #16161d
-
- # Gaps
- # gaps inner|outer|horizontal|vertical|top|right|bottom|left <amount>
- # Sets default amount pixels of inner or outer gap
- # the inner affects spacing around each view
- # the outer affects the spacing around each workspace
- # To reduce or remove outer gaps, outer gaps can be set to a negative value.
- gaps inner 0
- gaps outer 0
- gaps top 0
- gaps bottom 0
-
- # Hide gaps when there is only 1 window
- smart_gaps on
-
-
-
-
+exec --no-startup-id ~/.config/i3/scripts/powertimer.sh
+exec_always --no-startup-id feh --bg-scale ~/.config/backgrounds/bg3.jpg
+exec_always --no-startup-id ~/.config/polybar/launch.sh
+# --- Keybindings ---
-# Use pactl to adjust volume in PulseAudio.
-set $refresh_i3status killall -SIGUSR1 i3status
-bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +10% && $refresh_i3status
-bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -10% && $refresh_i3status
-bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle && $refresh_i3status
-bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle && $refresh_i3status
-bindsym XF86MonBrightnessUp exec --no-startup-id brightnessctl s +5%
+# Audio & Brightness
+bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +5%
+bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -5%
+bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle
+bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle
+bindsym XF86MonBrightnessUp exec --no-startup-id brightnessctl s +5%
bindsym XF86MonBrightnessDown exec --no-startup-id brightnessctl s 5%-
-
-# Use Mouse+$mod to drag floating windows to their wanted position
-floating_modifier $mod
-
-# move tiling windows via drag & drop by left-clicking into the title bar,
-# or left-clicking anywhere into the window while holding the floating modifier.
-tiling_drag modifier titlebar
-
-# start a terminal
-bindsym $mod+Return exec alacritty
-
-# kill focused window
-bindsym $mod+Shift+q kill
-
-# start dmenu (a program launcher)
-bindsym $mod+d exec --no-startup-id rofi -show drun
-bindsym $mod+b exec firefox
-# A more modern dmenu replacement is rofi:
-# bindcode $mod+40 exec "rofi -modi drun,run -show drun"
-# There also is i3-dmenu-desktop which only displays applications shipping a
-# .desktop file. It is a wrapper around dmenu, so you need that installed.
-# bindcode $mod+40 exec --no-startup-id i3-dmenu-desktop
-
-# change focus
-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
-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
-
-# split in horizontal orientation
-bindsym $mod+z 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+d focus child
-
-# Define names for default workspaces for which we configure key bindings later on.
-# We use variables to avoid repeating the names in multiple places.
+# Essentials
+bindsym $mod+Return exec alacritty
+bindsym $mod+Shift+q kill
+bindsym $mod+d exec --no-startup-id rofi -show drun
+bindsym $mod+b exec firefox
+floating_modifier $mod
+tiling_drag modifier titlebar
+
+# Navigation (Vim-style)
+bindsym $mod+h focus left
+bindsym $mod+j focus down
+bindsym $mod+k focus up
+bindsym $mod+l focus right
+
+# Movement (Vim-style)
+bindsym $mod+Shift+h move left
+bindsym $mod+Shift+j move down
+bindsym $mod+Shift+k move up
+bindsym $mod+Shift+l move right
+
+# Layout Controls
+bindsym $mod+z split h
+bindsym $mod+v split v
+bindsym $mod+f fullscreen toggle
+bindsym $mod+s layout stacking
+bindsym $mod+w layout tabbed
+bindsym $mod+e layout toggle split
+bindsym $mod+Shift+space floating toggle
+bindsym $mod+space focus mode_toggle
+bindsym $mod+a focus parent
+
+# System Management
+bindsym $mod+Shift+c reload
+bindsym $mod+Shift+r restart
+bindsym $mod+Shift+e exec --no-startup-id ~/.config/i3/scripts/powermenu.sh
+
+# --- Workspaces ---
set $ws1 "1"
set $ws2 "2"
set $ws3 "3"
@@ -194,7 +90,7 @@ set $ws8 "8"
set $ws9 "9"
set $ws10 "10"
-# switch to workspace
+# Switch to workspace
bindsym $mod+1 workspace number $ws1
bindsym $mod+2 workspace number $ws2
bindsym $mod+3 workspace number $ws3
@@ -206,7 +102,7 @@ bindsym $mod+8 workspace number $ws8
bindsym $mod+9 workspace number $ws9
bindsym $mod+0 workspace number $ws10
-# move focused container to workspace
+# Move to workspace
bindsym $mod+Shift+1 move container to workspace number $ws1
bindsym $mod+Shift+2 move container to workspace number $ws2
bindsym $mod+Shift+3 move container to workspace number $ws3
@@ -218,68 +114,18 @@ bindsym $mod+Shift+8 move container to workspace number $ws8
bindsym $mod+Shift+9 move container to workspace number $ws9
bindsym $mod+Shift+0 move container to workspace number $ws10
-# 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
-# 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'"
-
-
-# Define the menu labels
-set $sysmenu System: (l)ock, (e)xit i3, (s)uspend, (r)eboot, (Shift+s)hutdown
-
-mode "$sysmenu" {
- # Lock the screen
- bindsym l exec --no-startup-id physlock -p "Authentication required" -m -d, mode "default"
+assign [class="Firefox"] $ws2
- # THE CHOICE YOU WANTED: Just exit i3 (Logout)
- bindsym e exec --no-startup-id i3-msg exit, mode "default"
+# --- Modes ---
- # Power states (using elogind)
- bindsym s exec --no-startup-id loginctl suspend, mode "default"
- bindsym r exec --no-startup-id loginctl reboot, mode "default"
- bindsym Shift+s exec --no-startup-id loginctl poweroff, mode "default"
+# Resize Mode
+bindsym $mod+r mode "resize"
+mode "resize" {
+ 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
- # Return to default mode (Cancel)
bindsym Return mode "default"
bindsym Escape mode "default"
}
-
-# Bind it to a key - replacing the default exit behavior
-bindsym $mod+Shift+e mode "$sysmenu"
-
-# 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.
- bindsym j resize shrink width 10 px or 10 ppt
- bindsym k resize grow height 10 px or 10 ppt
- bindsym l resize shrink height 10 px or 10 ppt
- bindsym semicolon resize grow width 10 px or 10 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
-
- # back to normal: Enter or Escape or $mod+r
- bindsym Return mode "default"
- bindsym Escape mode "default"
- bindsym $mod+r mode "default"
-}
-
-bindsym $mod+r mode "resize"
-
-assign [class="Firefox"] $ws2
-
-# Start i3bar to display a workspace bar (plus the system information i3status
-# finds out, if available)
-#bar {
-# status_command i3status
-#}
diff --git a/i3/.config/i3/scripts/powermenu.sh b/i3/.config/i3/scripts/powermenu.sh
new file mode 100755
index 0000000..0385759
--- /dev/null
+++ b/i3/.config/i3/scripts/powermenu.sh
@@ -0,0 +1,21 @@
+#!/bin/bash
+
+# Define the options
+options="Lock\nExit\nSuspend\nReboot\nShutdown"
+
+# Get the choice from Rofi
+chosen=$(echo -e "$options" | rofi -dmenu -i -p "System:" -theme-str 'window {width: 15em;}')
+
+# Execute based on the choice
+case $chosen in
+ Lock)
+ physlock -p "Auth required" -m -d ;;
+ Exit)
+ i3-msg exit ;;
+ Suspend)
+ loginctl suspend ;;
+ Reboot)
+ loginctl reboot ;;
+ Shutdown)
+ loginctl poweroff ;;
+esac
diff --git a/i3/.config/i3/scripts/power_timer.sh b/i3/.config/i3/scripts/powertimer.sh
index bb1166a..bb1166a 100755
--- a/i3/.config/i3/scripts/power_timer.sh
+++ b/i3/.config/i3/scripts/powertimer.sh