From 438546d84f29168ce081aeca53b84d4411d58ef1 Mon Sep 17 00:00:00 2001 From: moonstar-x Date: Mon, 14 Sep 2026 15:31:20 -0500 Subject: [PATCH] initial commit --- .gitignore | 10 + README.md | 273 ++++++++++++++ dotfiles/Xresources | 64 ++++ .../betterlockscreen/betterlockscreenrc | 50 +++ dotfiles/config/dunst/dunstrc | 127 +++++++ dotfiles/config/gtk-3.0/settings.ini | 17 + dotfiles/config/gtk-4.0/settings.ini | 11 + dotfiles/config/i3/config | 333 ++++++++++++++++++ dotfiles/config/kitty/kitty.conf | 117 ++++++ .../kitty/themes/catppuccin-macchiato.conf | 76 ++++ dotfiles/config/picom/picom.conf | 108 ++++++ dotfiles/config/polybar/config.ini | 318 +++++++++++++++++ dotfiles/config/polybar/launch.sh | 85 +++++ dotfiles/config/qt5ct/qt5ct.conf | 22 ++ dotfiles/config/rofi/config.rasi | 41 +++ dotfiles/config/rofi/scripts/powermenu.sh | 41 +++ .../rofi/themes/catppuccin-macchiato.rasi | 195 ++++++++++ dotfiles/config/rofi/themes/powermenu.rasi | 25 ++ dotfiles/config/xfce4/helpers.rc | 2 + .../xfconf/xfce-perchannel-xml/thunar.xml | 23 ++ .../xfconf/xfce-perchannel-xml/xsettings.xml | 23 ++ dotfiles/gtkrc-2.0 | 13 + dotfiles/local/bin/brightness | 30 ++ dotfiles/local/bin/display | 60 ++++ dotfiles/local/bin/restart-daemon | 20 ++ dotfiles/local/bin/screenshot | 49 +++ dotfiles/local/bin/set-wallpaper | 65 ++++ dotfiles/local/bin/volume | 66 ++++ dotfiles/xinitrc | 27 ++ dotfiles/xprofile | 48 +++ install.sh | 135 +++++++ packages/aur.txt | 17 + packages/pacman.txt | 123 +++++++ scripts/00-preflight.sh | 50 +++ scripts/10-packages.sh | 49 +++ scripts/20-aur.sh | 51 +++ scripts/30-dotfiles.sh | 98 ++++++ scripts/40-services.sh | 106 ++++++ scripts/50-theme.sh | 83 +++++ scripts/lib.sh | 117 ++++++ scripts/make-wallpaper.sh | 70 ++++ scripts/restore-backup.sh | 33 ++ wallpapers/.gitkeep | 0 wallpapers/README.md | 21 ++ 44 files changed, 3292 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 dotfiles/Xresources create mode 100644 dotfiles/config/betterlockscreen/betterlockscreenrc create mode 100644 dotfiles/config/dunst/dunstrc create mode 100644 dotfiles/config/gtk-3.0/settings.ini create mode 100644 dotfiles/config/gtk-4.0/settings.ini create mode 100644 dotfiles/config/i3/config create mode 100644 dotfiles/config/kitty/kitty.conf create mode 100644 dotfiles/config/kitty/themes/catppuccin-macchiato.conf create mode 100644 dotfiles/config/picom/picom.conf create mode 100644 dotfiles/config/polybar/config.ini create mode 100755 dotfiles/config/polybar/launch.sh create mode 100644 dotfiles/config/qt5ct/qt5ct.conf create mode 100644 dotfiles/config/rofi/config.rasi create mode 100755 dotfiles/config/rofi/scripts/powermenu.sh create mode 100644 dotfiles/config/rofi/themes/catppuccin-macchiato.rasi create mode 100644 dotfiles/config/rofi/themes/powermenu.rasi create mode 100644 dotfiles/config/xfce4/helpers.rc create mode 100644 dotfiles/config/xfce4/xfconf/xfce-perchannel-xml/thunar.xml create mode 100644 dotfiles/config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml create mode 100644 dotfiles/gtkrc-2.0 create mode 100755 dotfiles/local/bin/brightness create mode 100755 dotfiles/local/bin/display create mode 100755 dotfiles/local/bin/restart-daemon create mode 100755 dotfiles/local/bin/screenshot create mode 100755 dotfiles/local/bin/set-wallpaper create mode 100755 dotfiles/local/bin/volume create mode 100644 dotfiles/xinitrc create mode 100644 dotfiles/xprofile create mode 100755 install.sh create mode 100644 packages/aur.txt create mode 100644 packages/pacman.txt create mode 100755 scripts/00-preflight.sh create mode 100755 scripts/10-packages.sh create mode 100755 scripts/20-aur.sh create mode 100755 scripts/30-dotfiles.sh create mode 100755 scripts/40-services.sh create mode 100755 scripts/50-theme.sh create mode 100755 scripts/lib.sh create mode 100755 scripts/make-wallpaper.sh create mode 100755 scripts/restore-backup.sh create mode 100644 wallpapers/.gitkeep create mode 100644 wallpapers/README.md diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c6c118d --- /dev/null +++ b/.gitignore @@ -0,0 +1,10 @@ +# generated wallpapers should not be committed back +wallpapers/*.png +wallpapers/*.jpg +wallpapers/*.jpeg +wallpapers/*.webp +!wallpapers/.gitkeep + +*.log +*.swp +.DS_Store diff --git a/README.md b/README.md new file mode 100644 index 0000000..d757ae7 --- /dev/null +++ b/README.md @@ -0,0 +1,273 @@ +# arch-i3 + +A one-shot bootstrap for a complete i3 desktop on a **fresh Arch Linux install** — +starting from a system with no X server at all. + +Everything is themed with **Catppuccin Macchiato** and typeset in **Inconsolata Nerd Font**. + +``` +i3-wm · polybar · rofi · dunst · polkit-gnome · thunar · kitty +i3lock-color + betterlockscreen · feh · picom +``` + +--- + +## Quick start + +From a TTY on a fresh install, as your **normal user** (not root — the scripts +call `sudo` where they need to): + +```sh +sudo pacman -S --needed git +git clone ~/arch-i3 +cd ~/arch-i3 +./install.sh +``` + +Then log out, log back in (so the new group memberships apply) and: + +```sh +startx +``` + +### Look before you leap + +```sh +./install.sh --dry-run # print every action, change nothing +./install.sh --list # show the stages +``` + +--- + +## What the installer does + +| Stage | Name | What happens | +|-------|------|--------------| +| `00` | preflight | Verifies Arch + network, enables pacman colour and parallel downloads, refreshes mirrors with `reflector`, runs a full `pacman -Syu` | +| `10` | packages | Installs everything in `packages/pacman.txt`; detects your GPU and adds the matching Vulkan/VA-API driver | +| `20` | aur | Builds `yay-bin`, swaps `i3lock` → `i3lock-color`, installs `packages/aur.txt` | +| `30` | dotfiles | Copies configs into `~`, helper scripts into `~/.local/bin`, generates wallpapers | +| `40` | services | Enables NetworkManager/bluetooth/pipewire, adds you to `video input audio storage`, rebuilds the font cache, primes the betterlockscreen cache | +| `50` | theme | Applies the GTK/Qt/cursor/icon theme and reloads a running session | + +Run a subset with `--only` / `--skip`, by number or by name: + +```sh +./install.sh --only dotfiles,theme +./install.sh --skip 00,10 # configs only, no package churn +./install.sh -y # never prompt +./install.sh --multilib # also enable the [multilib] repo +``` + +**Re-running is safe.** Package installs use `--needed`, and any config file the +installer would overwrite is first *moved* — never deleted — into +`~/.config-backup-/`. + +```sh +scripts/restore-backup.sh --list # see what's been backed up +scripts/restore-backup.sh # put the most recent backup back +``` + +--- + +## Keybindings + +`$mod` is the **Super** (Windows) key. + +### Launching +| Keys | Action | +|------|--------| +| `$mod + Return` | kitty | +| `$mod + Shift + Return` | kitty, floating and centred | +| `$mod + e` | Thunar | +| `$mod + d` | rofi — application launcher | +| `$mod + Shift + d` | rofi — run a binary | +| `$mod + Tab` | rofi — window switcher | +| `$mod + Shift + e` | power menu (lock / logout / suspend / reboot / shutdown) | +| `$mod + q` | close window | +| `$mod + Shift + q` | `xkill` — click a window to kill it | + +### Session +| Keys | Action | +|------|--------| +| `$mod + Shift + x` | lock the screen | +| `$mod + Shift + c` | reload the i3 config | +| `$mod + Shift + r` | restart i3 in place | + +### Focus and movement +| Keys | Action | +|------|--------| +| `$mod + h/j/k/l` or arrows | move focus | +| `$mod + Shift + h/j/k/l` | move the window | +| `$mod + 1…0` | switch workspace | +| `$mod + Shift + 1…0` | send window to workspace | +| `Alt + Tab` | last workspace | +| `$mod + Ctrl + ←/→` | previous / next workspace | +| `$mod + Ctrl + Shift + ←/→` | move the workspace to another monitor | + +### Layout +| Keys | Action | +|------|--------| +| `$mod + b` / `$mod + v` | split horizontally / vertically | +| `$mod + f` | fullscreen | +| `$mod + s` / `$mod + w` / `$mod + g` | stacking / tabbed / toggle split | +| `$mod + Shift + space` | float this window | +| `$mod + space` | focus tiling ↔ floating | +| `$mod + r` | resize mode (`h/j/k/l`, `Escape` to leave) | +| `$mod + minus` / `$mod + Shift + minus` | show / send to scratchpad | +| `$mod + plus` / `$mod + Shift + plus` | grow / shrink gaps | + +### Hardware and utilities +| Keys | Action | +|------|--------| +| Volume / brightness / media keys | handled, with a dunst OSD | +| `Print` | full-screen screenshot | +| `Shift + Print` | select a region | +| `$mod + Print` | active window | +| `$mod + p` | display mode: `a`uto / `d`uplicate / `e`xtend / `l`aptop-only | +| `$mod + n` | pop the last notification back up | +| `$mod + Shift + n` | dismiss all notifications | +| `$mod + Ctrl + n` | pause/resume notifications | +| `$mod + Shift + w` | random wallpaper | + +--- + +## Layout of this repo + +``` +install.sh orchestrator — stage runner, flags, summary +packages/ + pacman.txt official repo packages + aur.txt AUR packages +scripts/ + lib.sh logging, dry-run, backup-aware file installer + 00-preflight.sh … 50-theme.sh + make-wallpaper.sh synthesises the Catppuccin wallpapers + restore-backup.sh undo +dotfiles/ + xinitrc, xprofile, Xresources, gtkrc-2.0 + config/ → ~/.config/… + i3/config window manager + polybar/config.ini bar; launch.sh detects your hardware + rofi/ config.rasi + Macchiato themes + powermenu.sh + dunst/dunstrc notifications + kitty/ kitty.conf + Macchiato colours + picom/picom.conf compositor + betterlockscreen/ lock screen colours + gtk-3.0/, gtk-4.0/, qt5ct/, xfce4/ toolkit theming + local/bin/ → ~/.local/bin/… + set-wallpaper volume brightness screenshot display restart-daemon +wallpapers/ drop your own images here; they win over generated ones +``` + +--- + +## Things worth knowing + +### `i3lock` becomes `i3lock-color` + +`betterlockscreen` depends on **i3lock-color**, an AUR fork that adds the +`--*-color` flags the Macchiato lock screen needs. It *conflicts with* and +*provides* the repo `i3lock`, so stage 20 removes the repo package first. You +still get an `i3lock` binary at the usual path — it just understands more flags. + +### The lock screen needs a cached image + +`betterlockscreen` pre-renders blurred wallpapers instead of blurring at lock +time (that's why it's instant). Stage 40 builds that cache. After changing your +wallpaper, refresh it: + +```sh +betterlockscreen -u ~/.local/share/wallpapers/your-image.png --blur 0.5 +``` + +`set-wallpaper ` does this for you automatically. + +Locking is wired up three ways: `$mod+Shift+x`, `xss-lock` (10-minute idle timer +and lid close, started from the i3 config), and a `betterlockscreen@.service` +sleep hook for suspends that happen outside the X session. + +### polybar adapts to the machine + +`~/.config/polybar/launch.sh` detects your battery, AC adapter, backlight device +and network interfaces at launch and passes them in as environment variables, so +`config.ini` has nothing machine-specific in it. Modules with no matching +hardware (battery and backlight on a desktop) are dropped from the bar rather +than left to log errors. One bar spawns per monitor; the system tray goes on the +primary one. Logs land in `~/.cache/polybar.log`. + +### NVIDIA + +Stage 10 installs Mesa and, for Intel/AMD, the matching Vulkan driver. NVIDIA is +left to you deliberately — the right package depends on your card's generation +and kernel: + +```sh +sudo pacman -S nvidia nvidia-utils # current cards, linux kernel +sudo pacman -S nvidia-lts nvidia-utils # linux-lts kernel +``` + +If you get tearing, uncomment nothing — `picom.conf` already sets +`backend = "glx"` and `vsync = true`. On a weak GPU, delete the `blur` block. + +### No display manager + +The setup logs in from a TTY with `startx`, which keeps the boot lean. If you'd +rather have a greeter: + +```sh +sudo pacman -S ly && sudo systemctl enable ly.service # minimal, TUI +# or +sudo pacman -S lightdm lightdm-gtk-greeter && sudo systemctl enable lightdm +``` + +Both read `~/.xprofile`, so the environment stays identical either way. + +### Making it yours + +Put personal i3 tweaks in `~/.config/i3/config.d/*.conf`. They're included at the +end of the main config, so they override anything above them, and the installer +never touches that directory. + +For everything else, edit the files in `dotfiles/` and re-run: + +```sh +./install.sh --only dotfiles +``` + +### Changing the accent colour + +The Catppuccin accent is **mauve** (`#c6a0f6`) throughout. To switch to, say, +teal, change it in five places: + +``` +dotfiles/config/i3/config client.focused +dotfiles/config/polybar/config.ini primary = / label-focused-* +dotfiles/config/rofi/themes/… selected: +dotfiles/config/dunst/dunstrc frame_color / [urgency_normal] +dotfiles/config/*/settings.ini catppuccin-macchiato--standard+default +``` + +--- + +## Troubleshooting + +**The bar is missing.** `cat ~/.cache/polybar.log`. The most common cause is a +font that didn't install — check with `fc-list | grep -i inconsolata`. + +**Boxes instead of icons.** The Nerd Font glyphs aren't being found. Run +`fc-cache -fv`, then confirm `ttf-inconsolata-nerd` and `ttf-nerd-fonts-symbols-mono` +are installed. + +**GTK apps look light/wrong.** The AUR theme package may name its accent +directory differently. `ls /usr/share/themes | grep -i catppuccin`, then put the +exact name into `~/.config/gtk-3.0/settings.ini`. Stage 50 tries to detect and +patch this automatically. + +**No sound.** `systemctl --user status pipewire wireplumber`. A reboot after the +first install is usually what's missing. + +**Lock screen shows a plain grey box.** The betterlockscreen cache isn't built — +run `betterlockscreen -u `. + +**i3 won't start.** `i3 -C` validates the config and prints the offending line. diff --git a/dotfiles/Xresources b/dotfiles/Xresources new file mode 100644 index 0000000..ef1dba3 --- /dev/null +++ b/dotfiles/Xresources @@ -0,0 +1,64 @@ +! ========================================================================== +! ~/.Xresources — Catppuccin Macchiato for legacy X clients +! (xterm, i3lock's fallback rendering, dmenu, urxvt …) +! ========================================================================== + +! --- DPI: uncomment and set for HiDPI panels ------------------------------ +! Xft.dpi: 144 + +Xft.antialias: 1 +Xft.hinting: 1 +Xft.hintstyle: hintslight +Xft.rgba: rgb +Xft.lcdfilter: lcddefault +Xft.autohint: 0 + +! --- cursor ---------------------------------------------------------------- +Xcursor.theme: catppuccin-macchiato-dark-cursors +Xcursor.size: 24 + +! --- Catppuccin Macchiato palette ----------------------------------------- +#define base #24273a +#define mantle #1e2030 +#define crust #181926 +#define text #cad3f5 +#define rosewater #f4dbd6 +#define surface1 #494d64 +#define surface2 #5b6078 +#define red #ed8796 +#define green #a6da95 +#define yellow #eed49f +#define blue #8aadf4 +#define pink #f5bde6 +#define teal #8bd5ca +#define subtext1 #b8c0e0 +#define subtext0 #a5adcb + +*.foreground: text +*.background: base +*.cursorColor: rosewater + +*.color0: surface1 +*.color8: surface2 +*.color1: red +*.color9: red +*.color2: green +*.color10: green +*.color3: yellow +*.color11: yellow +*.color4: blue +*.color12: blue +*.color5: pink +*.color13: pink +*.color6: teal +*.color14: teal +*.color7: subtext1 +*.color15: subtext0 + +! --- xterm ----------------------------------------------------------------- +XTerm*faceName: Inconsolata Nerd Font +XTerm*faceSize: 12 +XTerm*termName: xterm-256color +XTerm*selectToClipboard: true +XTerm*saveLines: 10000 +XTerm*scrollBar: false diff --git a/dotfiles/config/betterlockscreen/betterlockscreenrc b/dotfiles/config/betterlockscreen/betterlockscreenrc new file mode 100644 index 0000000..3a27a9e --- /dev/null +++ b/dotfiles/config/betterlockscreen/betterlockscreenrc @@ -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 --blur ` ---------- +blur_level=1 + +# --- behaviour ------------------------------------------------------------- +# Show the failed-attempt count and blank the screen after 60s of lock idle +lock_timeout=60 +quiet=true diff --git a/dotfiles/config/dunst/dunstrc b/dotfiles/config/dunst/dunstrc new file mode 100644 index 0000000..59f3fe4 --- /dev/null +++ b/dotfiles/config/dunst/dunstrc @@ -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 = "%s\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 = "%s\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 diff --git a/dotfiles/config/gtk-3.0/settings.ini b/dotfiles/config/gtk-3.0/settings.ini new file mode 100644 index 0000000..ca4c07b --- /dev/null +++ b/dotfiles/config/gtk-3.0/settings.ini @@ -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 diff --git a/dotfiles/config/gtk-4.0/settings.ini b/dotfiles/config/gtk-4.0/settings.ini new file mode 100644 index 0000000..4c99874 --- /dev/null +++ b/dotfiles/config/gtk-4.0/settings.ini @@ -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 diff --git a/dotfiles/config/i3/config b/dotfiles/config/i3/config new file mode 100644 index 0000000..7280a20 --- /dev/null +++ b/dotfiles/config/i3/config @@ -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 "%title" + +# 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 diff --git a/dotfiles/config/kitty/kitty.conf b/dotfiles/config/kitty/kitty.conf new file mode 100644 index 0000000..ec0a378 --- /dev/null +++ b/dotfiles/config/kitty/kitty.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 diff --git a/dotfiles/config/kitty/themes/catppuccin-macchiato.conf b/dotfiles/config/kitty/themes/catppuccin-macchiato.conf new file mode 100644 index 0000000..4a6e5f9 --- /dev/null +++ b/dotfiles/config/kitty/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 diff --git a/dotfiles/config/picom/picom.conf b/dotfiles/config/picom/picom.conf new file mode 100644 index 0000000..6ce5284 --- /dev/null +++ b/dotfiles/config/picom/picom.conf @@ -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; }; +}; diff --git a/dotfiles/config/polybar/config.ini b/dotfiles/config/polybar/config.ini new file mode 100644 index 0000000..703b8ac --- /dev/null +++ b/dotfiles/config/polybar/config.ini @@ -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-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 =