initial commit
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
# ===========================================================================
|
||||
# betterlockscreen — Catppuccin Macchiato
|
||||
# All colours are RRGGBBAA (i3lock-color format, no leading '#').
|
||||
# Docs: https://github.com/betterlockscreen/betterlockscreen
|
||||
# ===========================================================================
|
||||
|
||||
# Which cached image variant `betterlockscreen -l` uses when given no argument
|
||||
display_on=0
|
||||
span_image=false
|
||||
|
||||
# --- ring ------------------------------------------------------------------
|
||||
insidecolor=24273a00
|
||||
ringcolor=c6a0f6ff
|
||||
insidevercolor=8aadf41c
|
||||
insidewrongcolor=ed879633
|
||||
ringvercolor=8aadf4ff
|
||||
ringwrongcolor=ed8796ff
|
||||
|
||||
# --- keypress highlight ----------------------------------------------------
|
||||
keyhlcolor=a6da95ff
|
||||
bshlcolor=f5a97fff
|
||||
separatorcolor=00000000
|
||||
|
||||
# --- text ------------------------------------------------------------------
|
||||
verifcolor=cad3f5ff
|
||||
timecolor=cad3f5ff
|
||||
datecolor=a5adcbff
|
||||
layoutcolor=a5adcbff
|
||||
loginbox=24273aaa
|
||||
locktext="Type password to unlock"
|
||||
font="Inconsolata Nerd Font"
|
||||
|
||||
time_format="%H:%M"
|
||||
date_format="%A, %d %B"
|
||||
|
||||
# --- ring geometry ---------------------------------------------------------
|
||||
ring_width=6
|
||||
radius=120
|
||||
|
||||
# --- greeter ---------------------------------------------------------------
|
||||
greetercolor=c6a0f6ff
|
||||
greeter_text="Welcome back, $USER"
|
||||
|
||||
# --- blur strength used by `betterlockscreen -u <img> --blur <n>` ----------
|
||||
blur_level=1
|
||||
|
||||
# --- behaviour -------------------------------------------------------------
|
||||
# Show the failed-attempt count and blank the screen after 60s of lock idle
|
||||
lock_timeout=60
|
||||
quiet=true
|
||||
@@ -0,0 +1,127 @@
|
||||
# ===========================================================================
|
||||
# dunst — Catppuccin Macchiato
|
||||
# Font: Inconsolata Nerd Font
|
||||
# Docs: man 5 dunst
|
||||
# ===========================================================================
|
||||
|
||||
[global]
|
||||
monitor = 0
|
||||
follow = mouse
|
||||
|
||||
# --- geometry ---------------------------------------------------------
|
||||
width = (280, 440)
|
||||
height = (0, 300)
|
||||
origin = top-right
|
||||
offset = (12, 42) # 42 clears the 30pt polybar
|
||||
scale = 0
|
||||
notification_limit = 6
|
||||
|
||||
progress_bar = true
|
||||
progress_bar_height = 8
|
||||
progress_bar_frame_width = 0
|
||||
progress_bar_min_width = 150
|
||||
progress_bar_max_width = 400
|
||||
progress_bar_corner_radius = 4
|
||||
|
||||
indicate_hidden = yes
|
||||
transparency = 5
|
||||
separator_height = 4
|
||||
padding = 12
|
||||
horizontal_padding = 14
|
||||
text_icon_padding = 10
|
||||
frame_width = 2
|
||||
frame_color = "#c6a0f6"
|
||||
gap_size = 6
|
||||
separator_color = frame
|
||||
sort = yes
|
||||
corner_radius = 10
|
||||
|
||||
# --- text -------------------------------------------------------------
|
||||
font = Inconsolata Nerd Font 11
|
||||
line_height = 0
|
||||
markup = full
|
||||
format = "<b>%s</b>\n%b"
|
||||
alignment = left
|
||||
vertical_alignment = center
|
||||
show_age_threshold = 60
|
||||
ellipsize = middle
|
||||
ignore_newline = no
|
||||
stack_duplicates = true
|
||||
hide_duplicate_count = false
|
||||
show_indicators = yes
|
||||
|
||||
# --- icons ------------------------------------------------------------
|
||||
enable_recursive_icon_lookup = true
|
||||
icon_theme = "Papirus-Dark, Adwaita"
|
||||
icon_position = left
|
||||
min_icon_size = 32
|
||||
max_icon_size = 64
|
||||
|
||||
# --- history ----------------------------------------------------------
|
||||
sticky_history = yes
|
||||
history_length = 25
|
||||
|
||||
# --- misc -------------------------------------------------------------
|
||||
dmenu = /usr/bin/rofi -dmenu -p dunst
|
||||
browser = /usr/bin/xdg-open
|
||||
always_run_script = true
|
||||
title = Dunst
|
||||
class = Dunst
|
||||
ignore_dbusclose = false
|
||||
|
||||
# --- wayland (unused under i3, harmless) -------------------------------
|
||||
force_xwayland = false
|
||||
|
||||
# --- mouse ------------------------------------------------------------
|
||||
mouse_left_click = do_action, close_current
|
||||
mouse_middle_click = close_all
|
||||
mouse_right_click = close_current
|
||||
|
||||
[experimental]
|
||||
per_monitor_dpi = false
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Urgency styling
|
||||
# ---------------------------------------------------------------------------
|
||||
[urgency_low]
|
||||
background = "#24273a"
|
||||
foreground = "#a5adcb"
|
||||
frame_color = "#8bd5ca"
|
||||
highlight = "#8bd5ca"
|
||||
timeout = 5
|
||||
|
||||
[urgency_normal]
|
||||
background = "#24273a"
|
||||
foreground = "#cad3f5"
|
||||
frame_color = "#c6a0f6"
|
||||
highlight = "#c6a0f6"
|
||||
timeout = 8
|
||||
|
||||
[urgency_critical]
|
||||
background = "#24273a"
|
||||
foreground = "#cad3f5"
|
||||
frame_color = "#ed8796"
|
||||
highlight = "#ed8796"
|
||||
timeout = 0
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Rules
|
||||
# ---------------------------------------------------------------------------
|
||||
# Volume / brightness OSD: replace in place instead of stacking up.
|
||||
[osd]
|
||||
appname = "osd"
|
||||
format = "<b>%s</b>\n%b"
|
||||
timeout = 2
|
||||
history_ignore = yes
|
||||
urgency = low
|
||||
|
||||
# Screenshot notifications get a longer read and a click-to-open action.
|
||||
[screenshot]
|
||||
appname = "screenshot"
|
||||
timeout = 6
|
||||
urgency = normal
|
||||
|
||||
# Battery warnings should never disappear on their own.
|
||||
[battery-critical]
|
||||
appname = "battery"
|
||||
urgency = critical
|
||||
@@ -0,0 +1,17 @@
|
||||
[Settings]
|
||||
gtk-theme-name=catppuccin-macchiato-mauve-standard+default
|
||||
gtk-icon-theme-name=Papirus-Dark
|
||||
gtk-cursor-theme-name=catppuccin-macchiato-dark-cursors
|
||||
gtk-cursor-theme-size=24
|
||||
gtk-font-name=Inconsolata Nerd Font 11
|
||||
gtk-application-prefer-dark-theme=1
|
||||
gtk-enable-animations=1
|
||||
gtk-primary-button-warps-slider=1
|
||||
gtk-toolbar-style=GTK_TOOLBAR_ICONS
|
||||
gtk-menu-images=1
|
||||
gtk-button-images=1
|
||||
gtk-decoration-layout=appmenu:none
|
||||
gtk-xft-antialias=1
|
||||
gtk-xft-hinting=1
|
||||
gtk-xft-hintstyle=hintslight
|
||||
gtk-xft-rgba=rgb
|
||||
@@ -0,0 +1,11 @@
|
||||
[Settings]
|
||||
gtk-theme-name=catppuccin-macchiato-mauve-standard+default
|
||||
gtk-icon-theme-name=Papirus-Dark
|
||||
gtk-cursor-theme-name=catppuccin-macchiato-dark-cursors
|
||||
gtk-cursor-theme-size=24
|
||||
gtk-font-name=Inconsolata Nerd Font 11
|
||||
gtk-application-prefer-dark-theme=1
|
||||
gtk-xft-antialias=1
|
||||
gtk-xft-hinting=1
|
||||
gtk-xft-hintstyle=hintslight
|
||||
gtk-xft-rgba=rgb
|
||||
@@ -0,0 +1,333 @@
|
||||
# ===========================================================================
|
||||
# i3 window manager — Catppuccin Macchiato
|
||||
# Font: Inconsolata Nerd Font
|
||||
# Docs: https://i3wm.org/docs/userguide.html
|
||||
# ===========================================================================
|
||||
|
||||
set $mod Mod4
|
||||
set $alt Mod1
|
||||
|
||||
# --- Catppuccin Macchiato palette -----------------------------------------
|
||||
set $rosewater #f4dbd6
|
||||
set $flamingo #f0c6c6
|
||||
set $pink #f5bde6
|
||||
set $mauve #c6a0f6
|
||||
set $red #ed8796
|
||||
set $maroon #ee99a0
|
||||
set $peach #f5a97f
|
||||
set $yellow #eed49f
|
||||
set $green #a6da95
|
||||
set $teal #8bd5ca
|
||||
set $sky #91d7e3
|
||||
set $sapphire #7dc4e4
|
||||
set $blue #8aadf4
|
||||
set $lavender #b7bdf8
|
||||
set $text #cad3f5
|
||||
set $subtext1 #b8c0e0
|
||||
set $subtext0 #a5adcb
|
||||
set $overlay2 #939ab7
|
||||
set $overlay1 #8087a2
|
||||
set $overlay0 #6e738d
|
||||
set $surface2 #5b6078
|
||||
set $surface1 #494d64
|
||||
set $surface0 #363a4f
|
||||
set $base #24273a
|
||||
set $mantle #1e2030
|
||||
set $crust #181926
|
||||
|
||||
# --- fonts -----------------------------------------------------------------
|
||||
font pango:Inconsolata Nerd Font 11
|
||||
|
||||
# --- applications ----------------------------------------------------------
|
||||
set $term kitty
|
||||
set $filemanager thunar
|
||||
set $menu rofi -show drun
|
||||
set $window_menu rofi -show window
|
||||
set $runner rofi -show run
|
||||
set $powermenu ~/.config/rofi/scripts/powermenu.sh
|
||||
set $lock betterlockscreen --lock dimblur
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Appearance
|
||||
# ---------------------------------------------------------------------------
|
||||
# class border backgr. text indicator child_border
|
||||
client.focused $mauve $mauve $crust $lavender $mauve
|
||||
client.focused_inactive $surface0 $surface0 $text $surface0 $surface0
|
||||
client.unfocused $surface0 $base $subtext0 $surface0 $surface0
|
||||
client.urgent $red $red $crust $red $red
|
||||
client.placeholder $base $base $text $base $base
|
||||
client.background $base
|
||||
|
||||
# Gaps + borders (i3 >= 4.22 has gaps built in)
|
||||
default_border pixel 2
|
||||
default_floating_border pixel 2
|
||||
hide_edge_borders smart
|
||||
gaps inner 8
|
||||
gaps outer 4
|
||||
smart_gaps on
|
||||
smart_borders on
|
||||
|
||||
# Focus behaviour
|
||||
focus_follows_mouse no
|
||||
mouse_warping none
|
||||
focus_on_window_activation smart
|
||||
popup_during_fullscreen smart
|
||||
workspace_auto_back_and_forth yes
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Autostart
|
||||
# ---------------------------------------------------------------------------
|
||||
# exec_always => re-run on config reload; exec => only on i3 start.
|
||||
|
||||
# Wallpaper (feh restores whatever set-wallpaper.sh last applied)
|
||||
exec_always --no-startup-id ~/.local/bin/set-wallpaper
|
||||
|
||||
# Compositor
|
||||
exec_always --no-startup-id ~/.local/bin/restart-daemon picom
|
||||
|
||||
# Status bar
|
||||
exec_always --no-startup-id ~/.config/polybar/launch.sh
|
||||
|
||||
# Notification daemon
|
||||
exec_always --no-startup-id ~/.local/bin/restart-daemon dunst
|
||||
|
||||
# XDG autostart entries (nm-applet etc. that ship .desktop files)
|
||||
exec --no-startup-id dex --autostart --environment i3
|
||||
|
||||
# PolicyKit authentication agent (GUI password prompts for gparted, etc.)
|
||||
exec --no-startup-id /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
|
||||
|
||||
# Tray applets
|
||||
exec --no-startup-id nm-applet
|
||||
exec --no-startup-id blueman-applet
|
||||
exec --no-startup-id udiskie --tray --no-automount --notify
|
||||
|
||||
# Auto-lock: lock on suspend and after 10 min of idle time
|
||||
exec --no-startup-id xss-lock --transfer-sleep-lock -- $lock --nofork
|
||||
exec --no-startup-id xset s 600 600
|
||||
exec --no-startup-id numlockx on
|
||||
|
||||
# Cursor theme for the root window
|
||||
exec_always --no-startup-id xsetroot -cursor_name left_ptr
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Key bindings — launching
|
||||
# ---------------------------------------------------------------------------
|
||||
bindsym $mod+Return exec --no-startup-id $term
|
||||
bindsym $mod+Shift+Return exec --no-startup-id $term --class kitty-float
|
||||
bindsym $mod+e exec --no-startup-id $filemanager
|
||||
bindsym $mod+d exec --no-startup-id $menu
|
||||
bindsym $mod+Shift+d exec --no-startup-id $runner
|
||||
bindsym $mod+Tab exec --no-startup-id $window_menu
|
||||
bindsym $mod+Shift+e exec --no-startup-id $powermenu
|
||||
bindsym $mod+q kill
|
||||
bindsym $mod+Shift+q exec --no-startup-id xkill
|
||||
|
||||
# Lock / session
|
||||
bindsym $mod+Shift+x exec --no-startup-id $lock
|
||||
bindsym $mod+Shift+c reload
|
||||
bindsym $mod+Shift+r restart
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Key bindings — focus & movement
|
||||
# ---------------------------------------------------------------------------
|
||||
# vim keys …
|
||||
bindsym $mod+h focus left
|
||||
bindsym $mod+j focus down
|
||||
bindsym $mod+k focus up
|
||||
bindsym $mod+l focus right
|
||||
# … and arrows
|
||||
bindsym $mod+Left focus left
|
||||
bindsym $mod+Down focus down
|
||||
bindsym $mod+Up focus up
|
||||
bindsym $mod+Right focus right
|
||||
|
||||
bindsym $mod+Shift+h move left
|
||||
bindsym $mod+Shift+j move down
|
||||
bindsym $mod+Shift+k move up
|
||||
bindsym $mod+Shift+l move right
|
||||
bindsym $mod+Shift+Left move left
|
||||
bindsym $mod+Shift+Down move down
|
||||
bindsym $mod+Shift+Up move up
|
||||
bindsym $mod+Shift+Right move right
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Key bindings — layout
|
||||
# ---------------------------------------------------------------------------
|
||||
bindsym $mod+b split h
|
||||
bindsym $mod+v split v
|
||||
bindsym $mod+f fullscreen toggle
|
||||
bindsym $mod+s layout stacking
|
||||
bindsym $mod+w layout tabbed
|
||||
bindsym $mod+g layout toggle split
|
||||
bindsym $mod+Shift+space floating toggle
|
||||
bindsym $mod+space focus mode_toggle
|
||||
bindsym $mod+a focus parent
|
||||
bindsym $mod+Shift+a focus child
|
||||
bindsym $mod+minus scratchpad show
|
||||
bindsym $mod+Shift+minus move scratchpad
|
||||
|
||||
# Gap tweaks on the fly
|
||||
bindsym $mod+plus gaps inner current plus 4
|
||||
bindsym $mod+Shift+plus gaps inner current minus 4
|
||||
bindsym $mod+Shift+g gaps inner current set 8; gaps outer current set 4
|
||||
|
||||
# Drag floating windows with the modifier held
|
||||
floating_modifier $mod
|
||||
tiling_drag modifier titlebar
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Workspaces
|
||||
# ---------------------------------------------------------------------------
|
||||
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: "
|
||||
|
||||
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+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
|
||||
bindsym $mod+Shift+4 move container to workspace number $ws4
|
||||
bindsym $mod+Shift+5 move container to workspace number $ws5
|
||||
bindsym $mod+Shift+6 move container to workspace number $ws6
|
||||
bindsym $mod+Shift+7 move container to workspace number $ws7
|
||||
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
|
||||
|
||||
# Cycle workspaces
|
||||
bindsym $mod+Ctrl+Right workspace next
|
||||
bindsym $mod+Ctrl+Left workspace prev
|
||||
bindsym $alt+Tab workspace back_and_forth
|
||||
|
||||
# Move workspace between monitors
|
||||
bindsym $mod+Ctrl+Shift+Right move workspace to output right
|
||||
bindsym $mod+Ctrl+Shift+Left move workspace to output left
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Media / hardware keys
|
||||
# ---------------------------------------------------------------------------
|
||||
bindsym XF86AudioRaiseVolume exec --no-startup-id ~/.local/bin/volume up
|
||||
bindsym XF86AudioLowerVolume exec --no-startup-id ~/.local/bin/volume down
|
||||
bindsym XF86AudioMute exec --no-startup-id ~/.local/bin/volume mute
|
||||
bindsym XF86AudioMicMute exec --no-startup-id ~/.local/bin/volume micmute
|
||||
bindsym XF86AudioPlay exec --no-startup-id playerctl play-pause
|
||||
bindsym XF86AudioNext exec --no-startup-id playerctl next
|
||||
bindsym XF86AudioPrev exec --no-startup-id playerctl previous
|
||||
bindsym XF86MonBrightnessUp exec --no-startup-id ~/.local/bin/brightness up
|
||||
bindsym XF86MonBrightnessDown exec --no-startup-id ~/.local/bin/brightness down
|
||||
|
||||
# Screenshots (maim)
|
||||
bindsym Print exec --no-startup-id ~/.local/bin/screenshot full
|
||||
bindsym Shift+Print exec --no-startup-id ~/.local/bin/screenshot area
|
||||
bindsym $mod+Print exec --no-startup-id ~/.local/bin/screenshot window
|
||||
|
||||
# Notification control
|
||||
bindsym $mod+n exec --no-startup-id dunstctl history-pop
|
||||
bindsym $mod+Shift+n exec --no-startup-id dunstctl close-all
|
||||
bindsym $mod+Ctrl+n exec --no-startup-id dunstctl set-paused toggle
|
||||
|
||||
# Wallpaper shuffle
|
||||
bindsym $mod+Shift+w exec --no-startup-id ~/.local/bin/set-wallpaper --random
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Modes
|
||||
# ---------------------------------------------------------------------------
|
||||
mode "resize" {
|
||||
bindsym h resize shrink width 4 px or 4 ppt
|
||||
bindsym j resize grow height 4 px or 4 ppt
|
||||
bindsym k resize shrink height 4 px or 4 ppt
|
||||
bindsym l resize grow width 4 px or 4 ppt
|
||||
|
||||
bindsym Left resize shrink width 4 px or 4 ppt
|
||||
bindsym Down resize grow height 4 px or 4 ppt
|
||||
bindsym Up resize shrink height 4 px or 4 ppt
|
||||
bindsym Right resize grow width 4 px or 4 ppt
|
||||
|
||||
bindsym Return mode "default"
|
||||
bindsym Escape mode "default"
|
||||
bindsym $mod+r mode "default"
|
||||
}
|
||||
bindsym $mod+r mode "resize"
|
||||
|
||||
set $mode_display Display: [a]uto [d]uplicate [e]xtend-right [l]aptop-only
|
||||
mode "$mode_display" {
|
||||
bindsym a exec --no-startup-id "~/.local/bin/display auto", mode "default"
|
||||
bindsym d exec --no-startup-id "~/.local/bin/display duplicate", mode "default"
|
||||
bindsym e exec --no-startup-id "~/.local/bin/display extend", mode "default"
|
||||
bindsym l exec --no-startup-id "~/.local/bin/display internal", mode "default"
|
||||
bindsym Return mode "default"
|
||||
bindsym Escape mode "default"
|
||||
}
|
||||
bindsym $mod+p mode "$mode_display"
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Window rules
|
||||
# ---------------------------------------------------------------------------
|
||||
for_window [class="^.*"] title_format "<span foreground='#cad3f5'>%title</span>"
|
||||
|
||||
# Float dialogs and small utilities
|
||||
for_window [window_role="pop-up"] floating enable
|
||||
for_window [window_role="bubble"] floating enable
|
||||
for_window [window_role="dialog"] floating enable
|
||||
for_window [window_type="dialog"] floating enable
|
||||
for_window [window_type="menu"] floating enable
|
||||
for_window [window_type="utility"] floating enable
|
||||
for_window [window_type="toolbar"] floating enable
|
||||
for_window [window_type="splash"] floating enable
|
||||
|
||||
for_window [class="Pavucontrol"] floating enable, resize set 900 600, move position center
|
||||
for_window [class="Blueman-manager"] floating enable, resize set 800 560, move position center
|
||||
for_window [class="Nm-connection-editor"] floating enable, resize set 800 560, move position center
|
||||
for_window [class="Lxappearance"] floating enable, move position center
|
||||
for_window [class="Thunar" instance="^dialog$"] floating enable
|
||||
for_window [class="File-roller"] floating enable, move position center
|
||||
for_window [class="Xarchiver"] floating enable, move position center
|
||||
for_window [class="kitty-float"] floating enable, resize set 1000 620, move position center
|
||||
for_window [title="^Picture-in-Picture$"] floating enable, sticky enable, resize set 640 360, move position 1250 700
|
||||
|
||||
# Assign apps to workspaces
|
||||
assign [class="(?i)firefox|chromium|Brave-browser"] $ws2
|
||||
assign [class="Thunar"] $ws4
|
||||
|
||||
# No focus stealing from these
|
||||
no_focus [class="Steam"]
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# i3bar — disabled; polybar handles the status bar.
|
||||
# Kept as a commented fallback in case polybar ever fails to start.
|
||||
# ---------------------------------------------------------------------------
|
||||
# bar {
|
||||
# status_command i3status
|
||||
# colors {
|
||||
# background $base
|
||||
# statusline $text
|
||||
# focused_workspace $mauve $mauve $crust
|
||||
# active_workspace $surface0 $surface0 $text
|
||||
# inactive_workspace $base $base $subtext0
|
||||
# urgent_workspace $red $red $crust
|
||||
# }
|
||||
# }
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Local overrides — anything in this directory wins, and it is never
|
||||
# overwritten by the bootstrap script.
|
||||
# ---------------------------------------------------------------------------
|
||||
include ~/.config/i3/config.d/*.conf
|
||||
@@ -0,0 +1,117 @@
|
||||
# ===========================================================================
|
||||
# kitty — Catppuccin Macchiato
|
||||
# Font: Inconsolata Nerd Font
|
||||
# Docs: https://sw.kovidgoyal.net/kitty/conf/
|
||||
# ===========================================================================
|
||||
|
||||
# --- font ------------------------------------------------------------------
|
||||
font_family Inconsolata Nerd Font
|
||||
bold_font Inconsolata Nerd Font Bold
|
||||
italic_font auto
|
||||
bold_italic_font auto
|
||||
font_size 12.0
|
||||
|
||||
# Inconsolata is a touch tight vertically; give the lines a little air.
|
||||
adjust_line_height 110%
|
||||
adjust_column_width 0
|
||||
disable_ligatures never
|
||||
|
||||
# Fall back to the symbol font for glyphs Inconsolata Nerd Font lacks
|
||||
symbol_map U+E000-U+E00A,U+EA60-U+EBEB,U+E0A0-U+E0C8,U+E0CA,U+E0CC-U+E0D7,U+E200-U+E2A9,U+E300-U+E3E3,U+E5FA-U+E6B1,U+E700-U+E7C5,U+F000-U+F2FF,U+F300-U+F375,U+F400-U+F533,U+F0001-U+F1AF0 Symbols Nerd Font Mono
|
||||
|
||||
# --- cursor ----------------------------------------------------------------
|
||||
cursor_shape beam
|
||||
cursor_beam_thickness 1.6
|
||||
cursor_blink_interval -1
|
||||
cursor_stop_blinking_after 15.0
|
||||
|
||||
# --- scrollback ------------------------------------------------------------
|
||||
scrollback_lines 10000
|
||||
scrollback_pager less --chop-long-lines --RAW-CONTROL-CHARS +INPUT_LINE_NUMBER
|
||||
wheel_scroll_multiplier 3.0
|
||||
|
||||
# --- mouse -----------------------------------------------------------------
|
||||
mouse_hide_wait 2.0
|
||||
url_color #8aadf4
|
||||
url_style curly
|
||||
open_url_with default
|
||||
detect_urls yes
|
||||
copy_on_select no
|
||||
strip_trailing_spaces smart
|
||||
focus_follows_mouse no
|
||||
|
||||
# --- performance -----------------------------------------------------------
|
||||
repaint_delay 8
|
||||
input_delay 2
|
||||
sync_to_monitor yes
|
||||
|
||||
# --- bell ------------------------------------------------------------------
|
||||
enable_audio_bell no
|
||||
visual_bell_duration 0.0
|
||||
window_alert_on_bell yes
|
||||
bell_on_tab " "
|
||||
|
||||
# --- window ----------------------------------------------------------------
|
||||
remember_window_size no
|
||||
initial_window_width 110c
|
||||
initial_window_height 30c
|
||||
window_padding_width 10
|
||||
window_margin_width 0
|
||||
placement_strategy center
|
||||
hide_window_decorations yes
|
||||
confirm_os_window_close 0
|
||||
|
||||
# --- tabs ------------------------------------------------------------------
|
||||
tab_bar_edge bottom
|
||||
tab_bar_style powerline
|
||||
tab_powerline_style slanted
|
||||
tab_bar_min_tabs 2
|
||||
tab_title_template "{index}: {title}"
|
||||
active_tab_font_style bold
|
||||
inactive_tab_font_style normal
|
||||
|
||||
# --- layouts ---------------------------------------------------------------
|
||||
enabled_layouts splits,stack,tall,fat,grid
|
||||
# i3 does the tiling; kitty splits are here for the occasional full-screen use.
|
||||
|
||||
# --- misc ------------------------------------------------------------------
|
||||
shell .
|
||||
editor .
|
||||
allow_remote_control yes
|
||||
listen_on unix:@kitty
|
||||
term xterm-kitty
|
||||
update_check_interval 0
|
||||
clipboard_control write-clipboard write-primary read-clipboard read-primary
|
||||
|
||||
# ===========================================================================
|
||||
# Keybindings
|
||||
# ===========================================================================
|
||||
kitty_mod ctrl+shift
|
||||
|
||||
map kitty_mod+c copy_to_clipboard
|
||||
map kitty_mod+v paste_from_clipboard
|
||||
map kitty_mod+t new_tab_with_cwd
|
||||
map kitty_mod+w close_tab
|
||||
map kitty_mod+right next_tab
|
||||
map kitty_mod+left previous_tab
|
||||
map kitty_mod+n new_os_window_with_cwd
|
||||
|
||||
map kitty_mod+enter launch --location=split --cwd=current
|
||||
map kitty_mod+h neighboring_window left
|
||||
map kitty_mod+j neighboring_window down
|
||||
map kitty_mod+k neighboring_window up
|
||||
map kitty_mod+l neighboring_window right
|
||||
|
||||
map kitty_mod+equal change_font_size all +1.0
|
||||
map kitty_mod+minus change_font_size all -1.0
|
||||
map kitty_mod+backspace change_font_size all 0
|
||||
|
||||
map kitty_mod+f show_scrollback
|
||||
map kitty_mod+u scroll_page_up
|
||||
map kitty_mod+d scroll_page_down
|
||||
map kitty_mod+e open_url_with_hints
|
||||
|
||||
# ===========================================================================
|
||||
# Colours
|
||||
# ===========================================================================
|
||||
include themes/catppuccin-macchiato.conf
|
||||
@@ -0,0 +1,76 @@
|
||||
# vim:ft=kitty
|
||||
## name: Catppuccin Kitty Macchiato
|
||||
## author: Catppuccin Org
|
||||
## license: MIT
|
||||
## upstream: https://github.com/catppuccin/kitty
|
||||
|
||||
# The basic colors
|
||||
foreground #CAD3F5
|
||||
background #24273A
|
||||
selection_foreground #24273A
|
||||
selection_background #F4DBD6
|
||||
|
||||
# Cursor colors
|
||||
cursor #F4DBD6
|
||||
cursor_text_color #24273A
|
||||
|
||||
# URL underline color when hovering with mouse
|
||||
url_color #F4DBD6
|
||||
|
||||
# Kitty window border colors
|
||||
active_border_color #B7BDF8
|
||||
inactive_border_color #6E738D
|
||||
bell_border_color #EED49F
|
||||
|
||||
# OS Window titlebar colors
|
||||
wayland_titlebar_color system
|
||||
macos_titlebar_color system
|
||||
|
||||
# Tab bar colors
|
||||
active_tab_foreground #181926
|
||||
active_tab_background #C6A0F6
|
||||
inactive_tab_foreground #CAD3F5
|
||||
inactive_tab_background #1E2030
|
||||
tab_bar_background #181926
|
||||
|
||||
# Colors for marks (marked text in the terminal)
|
||||
mark1_foreground #24273A
|
||||
mark1_background #B7BDF8
|
||||
mark2_foreground #24273A
|
||||
mark2_background #C6A0F6
|
||||
mark3_foreground #24273A
|
||||
mark3_background #7DC4E4
|
||||
|
||||
# The 16 terminal colors
|
||||
|
||||
# black
|
||||
color0 #494D64
|
||||
color8 #5B6078
|
||||
|
||||
# red
|
||||
color1 #ED8796
|
||||
color9 #ED8796
|
||||
|
||||
# green
|
||||
color2 #A6DA95
|
||||
color10 #A6DA95
|
||||
|
||||
# yellow
|
||||
color3 #EED49F
|
||||
color11 #EED49F
|
||||
|
||||
# blue
|
||||
color4 #8AADF4
|
||||
color12 #8AADF4
|
||||
|
||||
# magenta
|
||||
color5 #F5BDE6
|
||||
color13 #F5BDE6
|
||||
|
||||
# cyan
|
||||
color6 #8BD5CA
|
||||
color14 #8BD5CA
|
||||
|
||||
# white
|
||||
color7 #B8C0E0
|
||||
color15 #A5ADCB
|
||||
@@ -0,0 +1,108 @@
|
||||
# ===========================================================================
|
||||
# picom — compositor
|
||||
# Tuned to be subtle: no wobbly nonsense, just tear-free rendering,
|
||||
# soft shadows and a hint of transparency on unfocused terminals.
|
||||
# Docs: man 5 picom
|
||||
# ===========================================================================
|
||||
|
||||
# --- backend ---------------------------------------------------------------
|
||||
backend = "glx";
|
||||
vsync = true;
|
||||
use-damage = true;
|
||||
|
||||
glx-no-stencil = true;
|
||||
glx-no-rebind-pixmap = false;
|
||||
|
||||
# --- shadows ---------------------------------------------------------------
|
||||
shadow = true;
|
||||
shadow-radius = 14;
|
||||
shadow-opacity = 0.45;
|
||||
shadow-offset-x = -14;
|
||||
shadow-offset-y = -12;
|
||||
shadow-color = "#181926";
|
||||
|
||||
shadow-exclude = [
|
||||
"name = 'Notification'",
|
||||
"class_g = 'Conky'",
|
||||
"class_g ?= 'Notify-osd'",
|
||||
"class_g = 'Cairo-clock'",
|
||||
"class_g = 'Polybar'",
|
||||
"class_g = 'i3-frame'",
|
||||
"_GTK_FRAME_EXTENTS@:c",
|
||||
"window_type = 'dock'",
|
||||
"window_type = 'desktop'"
|
||||
];
|
||||
|
||||
# --- fading ----------------------------------------------------------------
|
||||
fading = true;
|
||||
fade-in-step = 0.06;
|
||||
fade-out-step = 0.06;
|
||||
fade-delta = 6;
|
||||
fade-exclude = [];
|
||||
|
||||
# --- transparency ----------------------------------------------------------
|
||||
inactive-opacity = 0.94;
|
||||
active-opacity = 1.0;
|
||||
frame-opacity = 1.0;
|
||||
inactive-opacity-override = false;
|
||||
inactive-dim = 0.0;
|
||||
|
||||
opacity-rule = [
|
||||
"100:class_g = 'firefox'",
|
||||
"100:class_g = 'Chromium'",
|
||||
"100:class_g = 'mpv'",
|
||||
"100:fullscreen",
|
||||
"95:class_g = 'kitty' && focused",
|
||||
"88:class_g = 'kitty' && !focused",
|
||||
"95:class_g = 'Rofi'",
|
||||
"100:class_g = 'Polybar'",
|
||||
"100:class_g = 'Dunst'"
|
||||
];
|
||||
|
||||
# --- corners (picom 9+) ----------------------------------------------------
|
||||
corner-radius = 10;
|
||||
rounded-corners-exclude = [
|
||||
"window_type = 'dock'",
|
||||
"window_type = 'desktop'",
|
||||
"class_g = 'Polybar'",
|
||||
"class_g = 'i3-frame'"
|
||||
];
|
||||
|
||||
# --- blur (comment out on weak GPUs) ---------------------------------------
|
||||
blur: {
|
||||
method = "dual_kawase";
|
||||
strength = 4;
|
||||
background = false;
|
||||
background-frame = false;
|
||||
background-fixed = false;
|
||||
}
|
||||
|
||||
blur-background-exclude = [
|
||||
"window_type = 'dock'",
|
||||
"window_type = 'desktop'",
|
||||
"class_g = 'Polybar'",
|
||||
"_GTK_FRAME_EXTENTS@:c"
|
||||
];
|
||||
|
||||
# --- general ---------------------------------------------------------------
|
||||
mark-wmwin-focused = true;
|
||||
mark-ovredir-focused = true;
|
||||
detect-rounded-corners = true;
|
||||
detect-client-opacity = true;
|
||||
detect-transient = true;
|
||||
detect-client-leader = true;
|
||||
use-ewmh-active-win = true;
|
||||
unredir-if-possible = false;
|
||||
dbe = false;
|
||||
log-level = "warn";
|
||||
|
||||
wintypes:
|
||||
{
|
||||
tooltip = { fade = true; shadow = true; opacity = 0.95; focus = true; full-shadow = false; };
|
||||
dock = { shadow = false; clip-shadow-above = true; };
|
||||
dnd = { shadow = false; };
|
||||
popup_menu = { opacity = 0.98; shadow = true; };
|
||||
dropdown_menu= { opacity = 0.98; shadow = true; };
|
||||
utility = { shadow = false; };
|
||||
notification = { shadow = true; };
|
||||
};
|
||||
@@ -0,0 +1,318 @@
|
||||
; ==========================================================================
|
||||
; polybar — Catppuccin Macchiato
|
||||
; Font: Inconsolata Nerd Font
|
||||
; Docs: https://github.com/polybar/polybar/wiki
|
||||
;
|
||||
; Hardware-specific values (battery, adapter, network interfaces, backlight)
|
||||
; are injected as environment variables by launch.sh, with sane fallbacks.
|
||||
; ==========================================================================
|
||||
|
||||
[colors]
|
||||
rosewater = #f4dbd6
|
||||
flamingo = #f0c6c6
|
||||
pink = #f5bde6
|
||||
mauve = #c6a0f6
|
||||
red = #ed8796
|
||||
maroon = #ee99a0
|
||||
peach = #f5a97f
|
||||
yellow = #eed49f
|
||||
green = #a6da95
|
||||
teal = #8bd5ca
|
||||
sky = #91d7e3
|
||||
sapphire = #7dc4e4
|
||||
blue = #8aadf4
|
||||
lavender = #b7bdf8
|
||||
text = #cad3f5
|
||||
subtext1 = #b8c0e0
|
||||
subtext0 = #a5adcb
|
||||
overlay2 = #939ab7
|
||||
overlay1 = #8087a2
|
||||
overlay0 = #6e738d
|
||||
surface2 = #5b6078
|
||||
surface1 = #494d64
|
||||
surface0 = #363a4f
|
||||
base = #24273a
|
||||
mantle = #1e2030
|
||||
crust = #181926
|
||||
|
||||
background = ${colors.base}
|
||||
background-alt = ${colors.surface0}
|
||||
foreground = ${colors.text}
|
||||
primary = ${colors.mauve}
|
||||
secondary = ${colors.lavender}
|
||||
alert = ${colors.red}
|
||||
disabled = ${colors.overlay0}
|
||||
transparent = #00000000
|
||||
|
||||
; --------------------------------------------------------------------------
|
||||
; Bar
|
||||
; --------------------------------------------------------------------------
|
||||
[bar/main]
|
||||
monitor = ${env:MONITOR:}
|
||||
monitor-strict = false
|
||||
override-redirect = false
|
||||
|
||||
width = 100%
|
||||
height = 30pt
|
||||
radius = 0
|
||||
|
||||
background = ${colors.background}
|
||||
foreground = ${colors.foreground}
|
||||
|
||||
line-size = 3pt
|
||||
border-size = 0pt
|
||||
border-color = ${colors.transparent}
|
||||
|
||||
padding-left = 1
|
||||
padding-right = 1
|
||||
module-margin = 1
|
||||
separator = "│"
|
||||
separator-foreground = ${colors.surface2}
|
||||
|
||||
font-0 = Inconsolata Nerd Font:style=Regular:size=11;2
|
||||
font-1 = Inconsolata Nerd Font:style=Bold:size=11;2
|
||||
font-2 = Symbols Nerd Font Mono:size=13;3
|
||||
font-3 = Noto Color Emoji:scale=10;2
|
||||
|
||||
modules-left = i3 xwindow
|
||||
modules-center = date
|
||||
modules-right = ${env:MODULES_RIGHT:filesystem memory cpu temperature pulseaudio systray}
|
||||
|
||||
cursor-click = pointer
|
||||
cursor-scroll = ns-resize
|
||||
|
||||
enable-ipc = true
|
||||
wm-restack = i3
|
||||
|
||||
; --------------------------------------------------------------------------
|
||||
; Modules
|
||||
; --------------------------------------------------------------------------
|
||||
[module/i3]
|
||||
type = internal/i3
|
||||
pin-workspaces = true
|
||||
show-urgent = true
|
||||
strip-wsnumbers = true
|
||||
index-sort = true
|
||||
enable-click = true
|
||||
enable-scroll = true
|
||||
wrapping-scroll = false
|
||||
reverse-scroll = false
|
||||
fuzzy-match = true
|
||||
|
||||
format = <label-state> <label-mode>
|
||||
|
||||
label-mode = %mode%
|
||||
label-mode-padding = 1
|
||||
label-mode-background = ${colors.peach}
|
||||
label-mode-foreground = ${colors.crust}
|
||||
|
||||
label-focused = %name%
|
||||
label-focused-background = ${colors.surface0}
|
||||
label-focused-foreground = ${colors.mauve}
|
||||
label-focused-underline = ${colors.mauve}
|
||||
label-focused-padding = 1
|
||||
|
||||
label-unfocused = %name%
|
||||
label-unfocused-foreground = ${colors.overlay1}
|
||||
label-unfocused-padding = 1
|
||||
|
||||
label-visible = %name%
|
||||
label-visible-foreground = ${colors.lavender}
|
||||
label-visible-padding = 1
|
||||
|
||||
label-urgent = %name%
|
||||
label-urgent-background = ${colors.red}
|
||||
label-urgent-foreground = ${colors.crust}
|
||||
label-urgent-padding = 1
|
||||
|
||||
[module/xwindow]
|
||||
type = internal/xwindow
|
||||
label = %title:0:80:...%
|
||||
label-foreground = ${colors.subtext0}
|
||||
label-empty =
|
||||
|
||||
[module/date]
|
||||
type = internal/date
|
||||
interval = 1
|
||||
date = %a %d %b
|
||||
time = %H:%M
|
||||
date-alt = %A, %d %B %Y
|
||||
time-alt = %H:%M:%S
|
||||
format-prefix = " "
|
||||
format-prefix-foreground = ${colors.lavender}
|
||||
label = %date% %time%
|
||||
label-foreground = ${colors.text}
|
||||
|
||||
[module/filesystem]
|
||||
type = internal/fs
|
||||
interval = 60
|
||||
mount-0 = /
|
||||
warn-percentage = 85
|
||||
format-mounted-prefix = " "
|
||||
format-mounted-prefix-foreground = ${colors.green}
|
||||
format-warn-prefix = " "
|
||||
format-warn-prefix-foreground = ${colors.peach}
|
||||
label-mounted = %percentage_used%%
|
||||
label-warn = %percentage_used%%
|
||||
label-unmounted =
|
||||
click-left = kitty --class kitty-float -e btop
|
||||
|
||||
[module/memory]
|
||||
type = internal/memory
|
||||
interval = 3
|
||||
warn-percentage = 90
|
||||
format-prefix = " "
|
||||
format-prefix-foreground = ${colors.yellow}
|
||||
format-warn-prefix = " "
|
||||
format-warn-prefix-foreground = ${colors.red}
|
||||
label = %percentage_used%%
|
||||
label-warn = %percentage_used%%
|
||||
label-warn-foreground = ${colors.red}
|
||||
|
||||
[module/cpu]
|
||||
type = internal/cpu
|
||||
interval = 3
|
||||
warn-percentage = 90
|
||||
format-prefix = " "
|
||||
format-prefix-foreground = ${colors.blue}
|
||||
format-warn-prefix = " "
|
||||
format-warn-prefix-foreground = ${colors.red}
|
||||
label = %percentage:2%%
|
||||
label-warn = %percentage:2%%
|
||||
label-warn-foreground = ${colors.red}
|
||||
|
||||
[module/temperature]
|
||||
type = internal/temperature
|
||||
interval = 5
|
||||
thermal-zone = 0
|
||||
base-temperature = 20
|
||||
warn-temperature = 80
|
||||
units = true
|
||||
format = <ramp> <label>
|
||||
format-warn = <ramp> <label-warn>
|
||||
label = %temperature-c%
|
||||
label-warn = %temperature-c%
|
||||
label-warn-foreground = ${colors.red}
|
||||
ramp-0 =
|
||||
ramp-1 =
|
||||
ramp-2 =
|
||||
ramp-3 =
|
||||
ramp-0-foreground = ${colors.sky}
|
||||
ramp-1-foreground = ${colors.green}
|
||||
ramp-2-foreground = ${colors.yellow}
|
||||
ramp-3-foreground = ${colors.peach}
|
||||
|
||||
[module/backlight]
|
||||
type = internal/backlight
|
||||
card = ${env:BACKLIGHT:intel_backlight}
|
||||
use-actual-brightness = true
|
||||
enable-scroll = true
|
||||
format = <ramp> <label>
|
||||
label = %percentage%%
|
||||
ramp-0 =
|
||||
ramp-1 =
|
||||
ramp-2 =
|
||||
ramp-3 =
|
||||
ramp-foreground = ${colors.yellow}
|
||||
|
||||
[module/pulseaudio]
|
||||
type = internal/pulseaudio
|
||||
use-ui-max = false
|
||||
interval = 5
|
||||
format-volume = <ramp-volume> <label-volume>
|
||||
label-volume = %percentage%%
|
||||
label-muted = " muted"
|
||||
label-muted-foreground = ${colors.overlay0}
|
||||
ramp-volume-0 =
|
||||
ramp-volume-1 =
|
||||
ramp-volume-2 =
|
||||
ramp-volume-foreground = ${colors.teal}
|
||||
click-right = pavucontrol
|
||||
scroll-up = ~/.local/bin/volume up
|
||||
scroll-down = ~/.local/bin/volume down
|
||||
|
||||
[module/wlan]
|
||||
type = internal/network
|
||||
interface = ${env:WLAN_IFACE:}
|
||||
interface-type = wireless
|
||||
interval = 5
|
||||
format-connected = <ramp-signal> <label-connected>
|
||||
format-disconnected = <label-disconnected>
|
||||
label-connected = %essid:0:14%
|
||||
label-connected-foreground = ${colors.text}
|
||||
label-disconnected = " offline"
|
||||
label-disconnected-foreground = ${colors.overlay0}
|
||||
ramp-signal-0 =
|
||||
ramp-signal-1 =
|
||||
ramp-signal-2 =
|
||||
ramp-signal-3 =
|
||||
ramp-signal-foreground = ${colors.sapphire}
|
||||
click-left = kitty --class kitty-float -e nmtui
|
||||
|
||||
[module/eth]
|
||||
type = internal/network
|
||||
interface = ${env:ETH_IFACE:}
|
||||
interface-type = wired
|
||||
interval = 5
|
||||
format-connected = <label-connected>
|
||||
format-connected-prefix = " "
|
||||
format-connected-prefix-foreground = ${colors.green}
|
||||
format-disconnected =
|
||||
label-connected = %local_ip%
|
||||
|
||||
[module/battery]
|
||||
type = internal/battery
|
||||
full-at = 98
|
||||
low-at = 15
|
||||
battery = ${env:BATTERY:BAT0}
|
||||
adapter = ${env:ADAPTER:AC}
|
||||
poll-interval = 5
|
||||
|
||||
format-charging = <animation-charging> <label-charging>
|
||||
format-discharging = <ramp-capacity> <label-discharging>
|
||||
format-full = <label-full>
|
||||
format-low = <animation-low> <label-low>
|
||||
|
||||
label-charging = %percentage%%
|
||||
label-discharging = %percentage%%
|
||||
label-full = " full"
|
||||
label-full-foreground = ${colors.green}
|
||||
label-low = %percentage%%
|
||||
label-low-foreground = ${colors.red}
|
||||
|
||||
ramp-capacity-0 =
|
||||
ramp-capacity-1 =
|
||||
ramp-capacity-2 =
|
||||
ramp-capacity-3 =
|
||||
ramp-capacity-4 =
|
||||
ramp-capacity-0-foreground = ${colors.red}
|
||||
ramp-capacity-1-foreground = ${colors.peach}
|
||||
ramp-capacity-2-foreground = ${colors.yellow}
|
||||
ramp-capacity-3-foreground = ${colors.green}
|
||||
ramp-capacity-4-foreground = ${colors.green}
|
||||
|
||||
animation-charging-0 =
|
||||
animation-charging-1 =
|
||||
animation-charging-2 =
|
||||
animation-charging-3 =
|
||||
animation-charging-4 =
|
||||
animation-charging-foreground = ${colors.green}
|
||||
animation-charging-framerate = 750
|
||||
|
||||
animation-low-0 =
|
||||
animation-low-1 =
|
||||
animation-low-foreground = ${colors.red}
|
||||
animation-low-framerate = 500
|
||||
|
||||
[module/systray]
|
||||
type = internal/tray
|
||||
format-margin = 6pt
|
||||
tray-spacing = 8pt
|
||||
tray-background = ${colors.background}
|
||||
|
||||
; --------------------------------------------------------------------------
|
||||
; Global settings
|
||||
; --------------------------------------------------------------------------
|
||||
[settings]
|
||||
screenchange-reload = true
|
||||
pseudo-transparency = false
|
||||
Executable
+85
@@ -0,0 +1,85 @@
|
||||
#!/usr/bin/env bash
|
||||
# ---------------------------------------------------------------------------
|
||||
# Launch one polybar instance per connected monitor.
|
||||
# Hardware-specific values are detected here and passed to polybar as
|
||||
# environment variables, so config.ini stays machine-independent.
|
||||
# ---------------------------------------------------------------------------
|
||||
set -uo pipefail
|
||||
|
||||
CONFIG="$HOME/.config/polybar/config.ini"
|
||||
LOG="${XDG_CACHE_HOME:-$HOME/.cache}/polybar.log"
|
||||
|
||||
mkdir -p "$(dirname "$LOG")"
|
||||
|
||||
# --- stop any running instances and wait for them to die -------------------
|
||||
pkill -x polybar >/dev/null 2>&1 || true
|
||||
for _ in {1..20}; do
|
||||
pgrep -x polybar >/dev/null || break
|
||||
sleep 0.1
|
||||
done
|
||||
# Anything still alive gets the hammer.
|
||||
pgrep -x polybar >/dev/null && pkill -9 -x polybar
|
||||
|
||||
# --- hardware detection ----------------------------------------------------
|
||||
# Battery + AC adapter
|
||||
BATTERY="$(ls -1 /sys/class/power_supply 2>/dev/null | grep -m1 '^BAT' || true)"
|
||||
ADAPTER="$(ls -1 /sys/class/power_supply 2>/dev/null | grep -m1 -E '^(AC|ADP|ACAD)' || true)"
|
||||
export BATTERY="${BATTERY:-BAT0}"
|
||||
export ADAPTER="${ADAPTER:-AC}"
|
||||
|
||||
# Backlight device (intel_backlight, amdgpu_bl0, nvidia_0, …)
|
||||
BACKLIGHT="$(ls -1 /sys/class/backlight 2>/dev/null | head -n1 || true)"
|
||||
export BACKLIGHT="${BACKLIGHT:-intel_backlight}"
|
||||
|
||||
# Network interfaces: wireless ones have a /sys/class/net/*/wireless dir
|
||||
WLAN_IFACE=""
|
||||
ETH_IFACE=""
|
||||
for iface in /sys/class/net/*; do
|
||||
name="$(basename "$iface")"
|
||||
[[ "$name" == "lo" ]] && continue
|
||||
if [[ -d "$iface/wireless" ]]; then
|
||||
[[ -z "$WLAN_IFACE" ]] && WLAN_IFACE="$name"
|
||||
else
|
||||
[[ -z "$ETH_IFACE" ]] && ETH_IFACE="$name"
|
||||
fi
|
||||
done
|
||||
export WLAN_IFACE ETH_IFACE
|
||||
|
||||
# --- module pruning --------------------------------------------------------
|
||||
# Desktops have no battery/backlight; leaving those modules enabled makes
|
||||
# polybar spam the log, so build the right-hand module list dynamically.
|
||||
MODULES_RIGHT="filesystem memory cpu temperature"
|
||||
[[ -d "/sys/class/backlight/$BACKLIGHT" ]] && MODULES_RIGHT+=" backlight"
|
||||
MODULES_RIGHT+=" pulseaudio"
|
||||
[[ -n "$WLAN_IFACE" ]] && MODULES_RIGHT+=" wlan"
|
||||
[[ -n "$ETH_IFACE" ]] && MODULES_RIGHT+=" eth"
|
||||
[[ -d "/sys/class/power_supply/$BATTERY" ]] && MODULES_RIGHT+=" battery"
|
||||
MODULES_RIGHT+=" systray"
|
||||
export MODULES_RIGHT
|
||||
|
||||
# --- launch ----------------------------------------------------------------
|
||||
{
|
||||
echo
|
||||
echo "=== polybar launch $(date -Is) ==="
|
||||
echo "battery=$BATTERY adapter=$ADAPTER backlight=$BACKLIGHT wlan=${WLAN_IFACE:-none} eth=${ETH_IFACE:-none}"
|
||||
echo "modules-right=$MODULES_RIGHT"
|
||||
} >>"$LOG"
|
||||
|
||||
if command -v polybar >/dev/null && polybar --list-monitors >/dev/null 2>&1; then
|
||||
# The tray can only live on one bar; give it to the primary monitor.
|
||||
primary="$(polybar --list-monitors | grep -m1 '(primary)' | cut -d: -f1)"
|
||||
while IFS= read -r line; do
|
||||
m="${line%%:*}"
|
||||
[[ -z "$m" ]] && continue
|
||||
if [[ -n "$primary" && "$m" != "$primary" ]]; then
|
||||
MONITOR="$m" MODULES_RIGHT="${MODULES_RIGHT/ systray/}" \
|
||||
polybar --reload main --config="$CONFIG" >>"$LOG" 2>&1 &
|
||||
else
|
||||
MONITOR="$m" polybar --reload main --config="$CONFIG" >>"$LOG" 2>&1 &
|
||||
fi
|
||||
done < <(polybar --list-monitors)
|
||||
else
|
||||
polybar --reload main --config="$CONFIG" >>"$LOG" 2>&1 &
|
||||
fi
|
||||
|
||||
echo "polybar launched" >>"$LOG"
|
||||
@@ -0,0 +1,22 @@
|
||||
[Appearance]
|
||||
custom_palette=false
|
||||
icon_theme=Papirus-Dark
|
||||
standard_dialogs=default
|
||||
style=Fusion
|
||||
|
||||
[Fonts]
|
||||
fixed="Inconsolata Nerd Font,11,-1,5,50,0,0,0,0,0"
|
||||
general="Inconsolata Nerd Font,11,-1,5,50,0,0,0,0,0"
|
||||
|
||||
[Interface]
|
||||
activate_item_on_single_click=1
|
||||
buttonbox_layout=0
|
||||
cursor_flash_time=1000
|
||||
dialog_buttons_have_icons=1
|
||||
double_click_interval=400
|
||||
keyboard_scheme=2
|
||||
menus_have_icons=true
|
||||
show_shortcuts_in_context_menus=true
|
||||
toolbutton_style=4
|
||||
underline_shortcut=1
|
||||
wheel_scroll_lines=3
|
||||
@@ -0,0 +1,41 @@
|
||||
/* =========================================================================
|
||||
* rofi — Catppuccin Macchiato
|
||||
* Font: Inconsolata Nerd Font
|
||||
* Docs: man 5 rofi-theme
|
||||
* ========================================================================= */
|
||||
|
||||
configuration {
|
||||
modes: "drun,run,window,ssh";
|
||||
font: "Inconsolata Nerd Font 12";
|
||||
|
||||
show-icons: true;
|
||||
icon-theme: "Papirus-Dark";
|
||||
display-drun: " Apps";
|
||||
display-run: " Run";
|
||||
display-window: " Window";
|
||||
display-ssh: " SSH";
|
||||
drun-display-format: "{name}";
|
||||
window-format: "{w} · {c} · {t}";
|
||||
|
||||
terminal: "kitty";
|
||||
ssh-client: "ssh";
|
||||
ssh-command: "{terminal} -e {ssh-client} {host}";
|
||||
|
||||
matching: "fuzzy";
|
||||
sort: true;
|
||||
sorting-method: "fzf";
|
||||
drun-match-fields: "name,generic,exec,categories,keywords";
|
||||
drun-use-desktop-cache: false;
|
||||
|
||||
hover-select: true;
|
||||
me-select-entry: "";
|
||||
me-accept-entry: "MousePrimary";
|
||||
|
||||
kb-mode-next: "Shift+Right,Control+Tab";
|
||||
kb-mode-previous: "Shift+Left,Control+ISO_Left_Tab";
|
||||
kb-row-up: "Up,Control+k";
|
||||
kb-row-down: "Down,Control+j";
|
||||
kb-remove-to-eol: "";
|
||||
}
|
||||
|
||||
@theme "~/.config/rofi/themes/catppuccin-macchiato.rasi"
|
||||
Executable
+41
@@ -0,0 +1,41 @@
|
||||
#!/usr/bin/env bash
|
||||
# ---------------------------------------------------------------------------
|
||||
# rofi power menu — lock / logout / suspend / hibernate / reboot / shutdown
|
||||
# Destructive entries ask for confirmation before firing.
|
||||
# ---------------------------------------------------------------------------
|
||||
set -euo pipefail
|
||||
|
||||
THEME="$HOME/.config/rofi/themes/powermenu.rasi"
|
||||
LOCK_CMD=(betterlockscreen --lock dimblur)
|
||||
|
||||
lock=" Lock"
|
||||
logout=" Log out"
|
||||
suspend=" Suspend"
|
||||
hibernate=" Hibernate"
|
||||
reboot=" Reboot"
|
||||
shutdown=" Shut down"
|
||||
|
||||
menu() {
|
||||
printf '%s\n' "$lock" "$logout" "$suspend" "$hibernate" "$reboot" "$shutdown" |
|
||||
rofi -dmenu -i \
|
||||
-theme "$THEME" \
|
||||
-p " $(whoami)@$(hostname)" \
|
||||
-select "$lock"
|
||||
}
|
||||
|
||||
confirm() {
|
||||
local answer
|
||||
answer=$(printf ' No\n Yes\n' |
|
||||
rofi -dmenu -i -theme "$THEME" -p "$1" -select " No")
|
||||
[[ "$answer" == *Yes* ]]
|
||||
}
|
||||
|
||||
case "$(menu)" in
|
||||
"$lock") "${LOCK_CMD[@]}" ;;
|
||||
"$logout") confirm "Log out?" && i3-msg exit ;;
|
||||
"$suspend") "${LOCK_CMD[@]}" & sleep 0.3; systemctl suspend ;;
|
||||
"$hibernate") confirm "Hibernate?" && { "${LOCK_CMD[@]}" & sleep 0.3; systemctl hibernate; } ;;
|
||||
"$reboot") confirm "Reboot?" && systemctl reboot ;;
|
||||
"$shutdown") confirm "Shut down?" && systemctl poweroff ;;
|
||||
*) exit 0 ;;
|
||||
esac
|
||||
@@ -0,0 +1,195 @@
|
||||
/* =========================================================================
|
||||
* Catppuccin Macchiato theme for rofi
|
||||
* ========================================================================= */
|
||||
|
||||
* {
|
||||
rosewater: #f4dbd6ff;
|
||||
flamingo: #f0c6c6ff;
|
||||
pink: #f5bde6ff;
|
||||
mauve: #c6a0f6ff;
|
||||
red: #ed8796ff;
|
||||
maroon: #ee99a0ff;
|
||||
peach: #f5a97fff;
|
||||
yellow: #eed49fff;
|
||||
green: #a6da95ff;
|
||||
teal: #8bd5caff;
|
||||
sky: #91d7e3ff;
|
||||
sapphire: #7dc4e4ff;
|
||||
blue: #8aadf4ff;
|
||||
lavender: #b7bdf8ff;
|
||||
text: #cad3f5ff;
|
||||
subtext1: #b8c0e0ff;
|
||||
subtext0: #a5adcbff;
|
||||
overlay2: #939ab7ff;
|
||||
overlay1: #8087a2ff;
|
||||
overlay0: #6e738dff;
|
||||
surface2: #5b6078ff;
|
||||
surface1: #494d64ff;
|
||||
surface0: #363a4fff;
|
||||
base: #24273aff;
|
||||
mantle: #1e2030ff;
|
||||
crust: #181926ff;
|
||||
|
||||
background: @base;
|
||||
background-alt: @surface0;
|
||||
foreground: @text;
|
||||
selected: @mauve;
|
||||
active: @green;
|
||||
urgent: @red;
|
||||
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
spacing: 0;
|
||||
}
|
||||
|
||||
window {
|
||||
transparency: "real";
|
||||
location: center;
|
||||
anchor: center;
|
||||
fullscreen: false;
|
||||
width: 640px;
|
||||
x-offset: 0px;
|
||||
y-offset: 0px;
|
||||
|
||||
enabled: true;
|
||||
border-radius: 12px;
|
||||
border: 2px solid;
|
||||
border-color: @mauve;
|
||||
background-color: @background;
|
||||
cursor: "default";
|
||||
}
|
||||
|
||||
mainbox {
|
||||
enabled: true;
|
||||
spacing: 0px;
|
||||
padding: 0px;
|
||||
background-color: transparent;
|
||||
children: [ "inputbar", "message", "listview" ];
|
||||
}
|
||||
|
||||
inputbar {
|
||||
enabled: true;
|
||||
spacing: 10px;
|
||||
padding: 14px 16px;
|
||||
background-color: @mantle;
|
||||
text-color: @foreground;
|
||||
children: [ "prompt", "entry" ];
|
||||
}
|
||||
|
||||
prompt {
|
||||
enabled: true;
|
||||
background-color: transparent;
|
||||
text-color: @mauve;
|
||||
}
|
||||
|
||||
entry {
|
||||
enabled: true;
|
||||
background-color: transparent;
|
||||
text-color: @foreground;
|
||||
cursor: text;
|
||||
placeholder: "Search…";
|
||||
placeholder-color: @overlay0;
|
||||
}
|
||||
|
||||
message {
|
||||
enabled: true;
|
||||
margin: 0px;
|
||||
padding: 10px 16px;
|
||||
background-color: @surface0;
|
||||
text-color: @foreground;
|
||||
}
|
||||
|
||||
textbox {
|
||||
background-color: transparent;
|
||||
text-color: @foreground;
|
||||
vertical-align: 0.5;
|
||||
horizontal-align: 0.0;
|
||||
}
|
||||
|
||||
listview {
|
||||
enabled: true;
|
||||
columns: 1;
|
||||
lines: 10;
|
||||
cycle: true;
|
||||
dynamic: true;
|
||||
scrollbar: true;
|
||||
layout: vertical;
|
||||
reverse: false;
|
||||
fixed-height: true;
|
||||
fixed-columns: true;
|
||||
|
||||
spacing: 2px;
|
||||
padding: 10px;
|
||||
background-color: transparent;
|
||||
cursor: "default";
|
||||
}
|
||||
|
||||
scrollbar {
|
||||
handle-width: 4px;
|
||||
handle-color: @surface2;
|
||||
border-radius: 8px;
|
||||
background-color: @mantle;
|
||||
}
|
||||
|
||||
element {
|
||||
enabled: true;
|
||||
spacing: 10px;
|
||||
padding: 8px 12px;
|
||||
border-radius: 8px;
|
||||
background-color: transparent;
|
||||
text-color: @foreground;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
element normal.normal { background-color: transparent; text-color: @foreground; }
|
||||
element normal.urgent { background-color: transparent; text-color: @urgent; }
|
||||
element normal.active { background-color: transparent; text-color: @active; }
|
||||
|
||||
element selected.normal { background-color: @selected; text-color: @crust; }
|
||||
element selected.urgent { background-color: @urgent; text-color: @crust; }
|
||||
element selected.active { background-color: @active; text-color: @crust; }
|
||||
|
||||
element alternate.normal { background-color: transparent; text-color: @foreground; }
|
||||
element alternate.urgent { background-color: transparent; text-color: @urgent; }
|
||||
element alternate.active { background-color: transparent; text-color: @active; }
|
||||
|
||||
element-icon {
|
||||
background-color: transparent;
|
||||
text-color: inherit;
|
||||
size: 24px;
|
||||
cursor: inherit;
|
||||
}
|
||||
|
||||
element-text {
|
||||
background-color: transparent;
|
||||
text-color: inherit;
|
||||
highlight: inherit;
|
||||
cursor: inherit;
|
||||
vertical-align: 0.5;
|
||||
horizontal-align: 0.0;
|
||||
}
|
||||
|
||||
mode-switcher {
|
||||
enabled: true;
|
||||
spacing: 0px;
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
button {
|
||||
padding: 8px;
|
||||
background-color: @surface0;
|
||||
text-color: @overlay1;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
button selected {
|
||||
background-color: @mauve;
|
||||
text-color: @crust;
|
||||
}
|
||||
|
||||
error-message {
|
||||
padding: 16px;
|
||||
border-radius: 12px;
|
||||
background-color: @base;
|
||||
text-color: @red;
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
/* Compact variant of the Macchiato theme, used by powermenu.sh */
|
||||
@import "catppuccin-macchiato.rasi"
|
||||
|
||||
window {
|
||||
width: 360px;
|
||||
border-color: @red;
|
||||
}
|
||||
|
||||
listview {
|
||||
lines: 6;
|
||||
columns: 1;
|
||||
}
|
||||
|
||||
element {
|
||||
padding: 10px 14px;
|
||||
}
|
||||
|
||||
element selected.normal {
|
||||
background-color: @red;
|
||||
text-color: @crust;
|
||||
}
|
||||
|
||||
prompt {
|
||||
text-color: @red;
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
TerminalEmulator=kitty
|
||||
FileManager=thunar
|
||||
@@ -0,0 +1,23 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<channel name="thunar" version="1.0">
|
||||
<property name="last-view" type="string" value="ThunarDetailsView"/>
|
||||
<property name="last-icon-view-zoom-level" type="string" value="THUNAR_ZOOM_LEVEL_100_PERCENT"/>
|
||||
<property name="last-details-view-zoom-level" type="string" value="THUNAR_ZOOM_LEVEL_38_PERCENT"/>
|
||||
<property name="last-window-width" type="int" value="1100"/>
|
||||
<property name="last-window-height" type="int" value="700"/>
|
||||
<property name="last-window-maximized" type="bool" value="false"/>
|
||||
<property name="last-separator-position" type="int" value="180"/>
|
||||
<property name="last-show-hidden" type="bool" value="false"/>
|
||||
<property name="misc-single-click" type="bool" value="false"/>
|
||||
<property name="misc-date-style" type="string" value="THUNAR_DATE_STYLE_YYYYMMDD"/>
|
||||
<property name="misc-thumbnail-mode" type="string" value="THUNAR_THUMBNAIL_MODE_ONLY_LOCAL"/>
|
||||
<property name="misc-folders-first" type="bool" value="true"/>
|
||||
<property name="misc-text-beside-icons" type="bool" value="false"/>
|
||||
<property name="misc-middle-click-in-tab" type="bool" value="true"/>
|
||||
<property name="misc-open-new-window-as-tab" type="bool" value="true"/>
|
||||
<property name="misc-full-path-in-title" type="bool" value="false"/>
|
||||
<property name="shortcuts-icon-emblems" type="bool" value="true"/>
|
||||
<property name="tree-icon-emblems" type="bool" value="true"/>
|
||||
<property name="last-location-bar" type="string" value="ThunarLocationButtons"/>
|
||||
<property name="last-side-pane" type="string" value="ThunarShortcutsPane"/>
|
||||
</channel>
|
||||
@@ -0,0 +1,23 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<channel name="xsettings" version="1.0">
|
||||
<property name="Net" type="empty">
|
||||
<property name="ThemeName" type="string" value="catppuccin-macchiato-mauve-standard+default"/>
|
||||
<property name="IconThemeName" type="string" value="Papirus-Dark"/>
|
||||
<property name="EnableEventSounds" type="bool" value="false"/>
|
||||
<property name="EnableInputFeedbackSounds" type="bool" value="false"/>
|
||||
</property>
|
||||
<property name="Xft" type="empty">
|
||||
<property name="DPI" type="int" value="-1"/>
|
||||
<property name="Antialias" type="int" value="1"/>
|
||||
<property name="Hinting" type="int" value="1"/>
|
||||
<property name="HintStyle" type="string" value="hintslight"/>
|
||||
<property name="RGBA" type="string" value="rgb"/>
|
||||
</property>
|
||||
<property name="Gtk" type="empty">
|
||||
<property name="FontName" type="string" value="Inconsolata Nerd Font 11"/>
|
||||
<property name="MonospaceFontName" type="string" value="Inconsolata Nerd Font 11"/>
|
||||
<property name="CursorThemeName" type="string" value="catppuccin-macchiato-dark-cursors"/>
|
||||
<property name="CursorThemeSize" type="int" value="24"/>
|
||||
<property name="DecorationLayout" type="string" value="menu:minimize,maximize,close"/>
|
||||
</property>
|
||||
</channel>
|
||||
Reference in New Issue
Block a user