summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.config/foot/foot.ini2
-rw-r--r--.config/matugen/config.toml6
-rwxr-xr-x.config/niri/apply-colors.sh134
-rw-r--r--.config/niri/config.kdl24
-rwxr-xr-x.config/niri/mako-start.sh20
-rwxr-xr-x.config/niri/set-backdrop.sh46
-rwxr-xr-x.config/niri/theme-switcher.sh178
-rw-r--r--.config/starship.toml81
-rw-r--r--.config/wallust/templates/foot-colors-custom.ini5
-rw-r--r--.config/wallust/templates/niri.kdl6
-rw-r--r--.config/wallust/templates/starship.toml94
-rw-r--r--.config/wallust/wallust.toml5
-rw-r--r--config.toml8
-rw-r--r--portage/etc/portage/package.accept_keywords/anki1
-rw-r--r--portage/etc/portage/package.accept_keywords/luv1
-rw-r--r--portage/etc/portage/package.accept_keywords/neovim1
-rwxr-xr-xportage/etc/portage/postsync.d/update-dotfiles3
-rw-r--r--portage/etc/portage/repos.conf/eselect-repo.conf5
-rw-r--r--portage/var/lib/portage/world1
l---------templates/dbg.ini1
l---------templates/foot-colors-custom.ini1
l---------templates/mako1
l---------templates/niri.kdl1
l---------templates/nvim.lua1
l---------templates/shell-colors.sh1
l---------templates/vicinae-dark.toml1
l---------templates/vicinae-light.toml1
l---------templates/vis-theme.lua1
28 files changed, 309 insertions, 321 deletions
diff --git a/.config/foot/foot.ini b/.config/foot/foot.ini
index 2a81398..a001acb 100644
--- a/.config/foot/foot.ini
+++ b/.config/foot/foot.ini
@@ -1,6 +1,6 @@
[main]
include=~/.cache/wallust/foot-theme.ini
-font=JetBrainsMono Nerd Font:size=13
+font=Iosevka:size=13
pad=0x0
# paste the rest of your theme colors here
diff --git a/.config/matugen/config.toml b/.config/matugen/config.toml
index 9b72eee..94ec464 100644
--- a/.config/matugen/config.toml
+++ b/.config/matugen/config.toml
@@ -3,6 +3,6 @@
caching = false
version_check = false
-[templates.niri]
-input_path = './templates/niri.kdl'
-output_path = '/home/seraphim/.cache/matugen/theme.kdl'
+# niri's focus-ring colors are now generated by wallust (see
+# ~/.config/wallust/templates/niri.kdl -> ~/.cache/wallust/niri-theme.kdl),
+# so matugen no longer needs to emit a niri theme.
diff --git a/.config/niri/apply-colors.sh b/.config/niri/apply-colors.sh
index aebf509..3d3b433 100755
--- a/.config/niri/apply-colors.sh
+++ b/.config/niri/apply-colors.sh
@@ -1,85 +1,71 @@
-#!/bin/bash
-# Apply a wallpaper and generate colors with wallust (16-color palette) + matugen (Material You / M3).
-# Usage: apply-colors.sh <image> [light|dark]
-# Called by theme-switcher.sh and the waybar random-wallpaper click.
+#!/bin/sh
+# Regenerate wallust colors from the current wallpaper and reload running apps.
+# Also keeps the niri backdrop in sync with the wallpaper.
+#
+# This is the single startup entry point: it derives the last used wallpaper
+# from awww's own cache (so "main = last used wallpaper"), reads the saved
+# palette/threshold from the runtime state file, runs `wallust run` (which
+# regenerates EVERY template -> adding a new app only needs a wallust.toml
+# template, never a new autostart line), and reloads live apps.
-set -euo pipefail
+CACHE="${XDG_CACHE_HOME:-$HOME/.cache}"
+STATE="$CACHE/wallust_runtime"
+WP_DIR="$HOME/Pictures/wallpapers"
-SCRIPT_DIR="$(cd "$(dirname "$(realpath "$0")")" && pwd)"
-IMG="${1:-}"
-MODE="${2:-auto}"
-LOG="${THEME_LOG:-/tmp/theme-switcher.log}"
-
-log() {
- printf '%s %s\n' "$(date '+%Y-%m-%d %H:%M:%S')" "$*" >>"$LOG"
+# Determine the current wallpaper.
+# Primary: the marker file written by theme-switcher.sh (last used wallpaper).
+# Fallback: parse awww's cache (the last image set via `awww img`), excluding
+# the blurred backdrop layer. awww stores the cache as one concatenated line,
+# so we grep for the first absolute image path that is not a backdrop blur.
+get_wp() {
+ marker="$CACHE/current_wallpaper"
+ if [ -f "$marker" ]; then
+ wp="$(cat "$marker" 2>/dev/null)"
+ [ -n "$wp" ] && [ -f "$wp" ] && { echo "$wp"; return 0; }
+ fi
+ for f in "$CACHE"/awww/*/*; do
+ [ -f "$f" ] || continue
+ # awww stores the cache as one concatenated line; the main-namespace
+ # image is everything before the first "backdrop" delimiter. Cut there
+ # so the greedy path match can't swallow the (blurred) backdrop path.
+ wp=$(sed 's/backdrop.*//' "$f" \
+ | tr '\0' '\n' \
+ | grep -oE '/[^[:space:]]+\.(png|jpg|jpeg|webp|gif)' \
+ | head -1)
+ [ -n "$wp" ] && [ -f "$wp" ] && { echo "$wp"; return 0; }
+ done
+ return 1
}
-# Record the exact failing command + line on any error.
-trap 'log "apply-colors FAILED (exit $?) in ${BASH_SOURCE[0]}:$LINENO: $BASH_COMMAND"' ERR
-
-if [ -z "$IMG" ] || [ ! -f "$IMG" ]; then
- echo "usage: $0 <image> [light|dark]" >&2
- exit 1
+# Read saved palette/threshold/saturation/colorspace from the runtime state.
+palette=""; threshold=""; sat=""; cs=""
+if [ -f "$STATE" ]; then
+ while IFS='=' read -r k v; do
+ case "$k" in
+ palette) palette="$v" ;;
+ threshold) threshold="$v" ;;
+ saturation) sat="$v" ;;
+ colorspace) cs="$v" ;;
+ esac
+ done < "$STATE"
fi
-# wait for the awww daemon to be ready (it is spawned next to this script at login)
-log "awww img $IMG"
-for _ in $(seq 1 10); do
- if awww query >/dev/null 2>&1; then
- break
- fi
- sleep 1
-done
-
-# set the wallpaper FIRST and unconditionally — this is the critical, must-work
-# step. Color generation below is best-effort: a failure there must never block
-# the wallpaper from changing (that coupling is what froze the wallpaper before).
-awww img "$IMG" || { log "awww img FAILED ($IMG)"; exit 1; }
+WP="$(get_wp)" || WP="$(ls -1 "$WP_DIR"/*.* 2>/dev/null | head -1)" || true
-# blurred copy for the Overview backdrop (sibling or on-the-fly generation)
-"$SCRIPT_DIR/set-backdrop.sh" "$IMG" || log "set-backdrop FAILED ($IMG)"
-
-# wallust: classic 16-color palette (foot, btop, ...)
-# fastresize (the config default) is flaky on some images — always use resized.
-# Best-effort: a wallust failure must not prevent the wallpaper from sticking.
-log "wallust palette=$MODE $IMG"
-case "$MODE" in
-light|dark) WALLUST_PALETTE=("--palette" "$MODE") ;;
-*) WALLUST_PALETTE=() ;;
-esac
-# wallust's `resized` backend is intermittently flaky on some images; retry a
-# few times, but ultimately tolerate failure.
-ok=0
-for attempt in 1 2 3; do
- if wallust run -b resized "${WALLUST_PALETTE[@]}" "$IMG"; then
- ok=1
- break
- fi
- log "wallust attempt $attempt FAILED ($IMG, mode=$MODE)"
- [ "$attempt" -lt 3 ] && sleep 2
-done
-if [ "$ok" -ne 1 ]; then
- log "wallust FAILED after 3 attempts ($IMG, mode=$MODE) — continuing without wallust colors"
-else
- # foot needs bare RRGGBB, not #RRGGBB — strip the leading '#'
- sed -i 's/#\([0-9a-fA-F]\)/\1/g' ~/.cache/wallust/foot-theme.ini 2>/dev/null || true
+if [ -n "$WP" ] && [ -f "$WP" ]; then
+ args=""
+ [ -n "$palette" ] && args="$args -p $palette"
+ [ -n "$threshold" ] && args="$args -t $threshold"
+ [ -n "$sat" ] && args="$args --saturation $sat"
+ [ -n "$cs" ] && args="$args -c $cs"
+ # shellcheck disable=SC2086
+ wallust run $args "$WP" || true
+ "$HOME/.config/niri/set-backdrop.sh" "$WP" || true
fi
-# matugen: Material You / M3 colors (niri focus ring, ...)
-# --prefer is required for non-interactive runs (multiple source colors).
-# Best-effort: a matugen failure (e.g. bad config after an upgrade) must not
-# block the wallpaper.
-log "matugen mode=$MODE $IMG"
-case "$MODE" in
-light) matugen image "$IMG" -m "light" --prefer saturation ;;
-dark) matugen image "$IMG" -m "dark" --prefer saturation ;;
-*) matugen image "$IMG" --prefer saturation ;;
-esac || log "matugen FAILED ($IMG, mode=$MODE) — continuing without matugen colors"
-
-# reload consumers
-killall -SIGUSR2 waybar 2>/dev/null || true
-killall -USR1 foot 2>/dev/null || true
-niri msg action load-config-file 2>/dev/null || true
+# Reload apps that support live reload.
makoctl reload 2>/dev/null || true
-log "apply-colors OK ($IMG, $MODE)"
+# Refresh niri's own theme (focus ring, etc.) from the freshly generated
+# wallust niri template. Optional because niri may still be starting up.
+niri msg action reload-config 2>/dev/null || true
diff --git a/.config/niri/config.kdl b/.config/niri/config.kdl
index b71b8ed..72b0fbb 100644
--- a/.config/niri/config.kdl
+++ b/.config/niri/config.kdl
@@ -1,19 +1,22 @@
-include optional=true "/home/seraphim/.cache/matugen/theme.kdl"
-spawn-at-startup "/home/seraphim/dotfiles-gentoo/niri/.config/niri/mako-start.sh"
+//-- Theme importing & X server config
+include optional=true "/home/seraphim/.cache/wallust/niri-theme.kdl"
spawn-at-startup "xrdb" "-merge" "/home/seraphim/.Xresources"
+//--- Apps startup
+spawn-at-startup "/usr/libexec/hyprpolkitagent"
spawn-at-startup "vicinae" "server"
spawn-at-startup "gentoo-pipewire-launcher"
spawn-at-startup "telegram-desktop" "-autostart" "--minimized"
spawn-at-startup "keepassxc" "--minimized"
+spawn-at-startup "/usr/bin/Throne"
+//--- Wallpapers
spawn-at-startup "awww-daemon"
spawn-at-startup "awww-daemon" "--namespace" "backdrop"
-spawn-at-startup "/usr/libexec/hyprpolkitagent"
+spawn-at-startup "sh" "-c" "$HOME/.config/niri/apply-colors.sh"
+//--- Dbus & darkman
spawn-at-startup "dbus-update-activation-environment" "WAYLAND_DISPLAY" "DISPLAY" "XDG_CURRENT_DESKTOP"
spawn-at-startup "darkman" "run"
-spawn-at-startup "/home/seraphim/dotfiles-gentoo/.config/niri/theme-switcher.sh" "--last"
spawn-at-startup "sh" "-c" "NO_AT_BRIDGE=1 waybar"
-spawn-at-startup "/usr/bin/Throne"
-spawn-at-startup "mpd"
+
prefer-no-csd
screenshot-path "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png"
@@ -29,14 +32,12 @@ blur {
saturation 1.1
}
-// awww-daemon --namespace backdrop: pre-blurred wallpaper shown in the
-// Overview backdrop. niri cannot blur a backdrop surface itself.
layer-rule {
match namespace="^awww-daemonbackdrop$"
place-within-backdrop true
}
input {
- focus-follows-mouse max-scroll-amount="100%"
+// focus-follows-mouse max-scroll-amount="100%"
keyboard {
xkb {
@@ -160,8 +161,9 @@ gestures {
}
cursor {
- xcursor-theme "Bibata-Modern-Classic"
- xcursor-size 15
+ xcursor-theme "Notwaita-Black"
+ //xcursor-theme "macOS"
+ xcursor-size 16
}
overview {
diff --git a/.config/niri/mako-start.sh b/.config/niri/mako-start.sh
deleted file mode 100755
index aceaa3b..0000000
--- a/.config/niri/mako-start.sh
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/bin/sh
-# Start mako after making sure the wallust-generated color file exists.
-# mako's config uses `include=~/.cache/wallust/mako`; if that file is missing
-# (e.g. on first login before wallust has run) mako would fail to start, so we
-# seed a neutral default here. apply-colors.sh regenerates it and runs
-# `makoctl reload` once the real palette is ready.
-set -e
-
-CACHE="${XDG_CACHE_HOME:-$HOME/.cache}/wallust/mako"
-if [ ! -f "$CACHE" ]; then
- mkdir -p "$(dirname "$CACHE")"
- cat > "$CACHE" <<'EOF'
-background-color=#1e1e1e
-text-color=#e0e0e0
-border-color=#3a3a3a
-progress-color=over #4f4f4f
-EOF
-fi
-
-exec mako "$@"
diff --git a/.config/niri/set-backdrop.sh b/.config/niri/set-backdrop.sh
index efd02b3..32e4144 100755
--- a/.config/niri/set-backdrop.sh
+++ b/.config/niri/set-backdrop.sh
@@ -1,29 +1,19 @@
-#!/bin/bash
-# Push a blurred copy of a wallpaper to the awww-daemon backdrop namespace.
-# Prefers a pre-made <name>-blur.<ext> sibling; otherwise generates one into the cache.
-# Used by theme-switcher.sh and apply-colors.sh for the niri Overview backdrop.
-
-set -euo pipefail
-
-IMG="${1:-}"
-if [ -z "$IMG" ] || [ ! -f "$IMG" ]; then
- echo "usage: $0 <image>" >&2
- exit 1
-fi
-
-EXT="${IMG##*.}"
-SIBLING="${IMG%.*}-blur.${EXT}"
-if [ -f "$SIBLING" ]; then
- BLURRED="$SIBLING"
-else
- CACHE_DIR="${XDG_CACHE_HOME:-$HOME/.cache}/niri-backdrop"
- mkdir -p "$CACHE_DIR"
- BASE=$(basename "${IMG%.*}")
- BLURRED="$CACHE_DIR/${BASE}-blur.jpg"
- if [ ! -f "$BLURRED" ] || [ "$IMG" -nt "$BLURRED" ]; then
- magick "$IMG" -blur 0x16 -quality 90 "$BLURRED"
+#!/bin/sh
+# Generate a blurred copy of WALLPAPER and set it as the awww backdrop layer.
+set -eu
+WP="${1:?usage: set-backdrop.sh <wallpaper>}"
+CACHE_DIR="${XDG_CACHE_HOME:-$HOME/.cache}/niri-backdrop"
+mkdir -p "$CACHE_DIR"
+name="$(basename "${WP%.*}")"
+blur="$CACHE_DIR/${name}-blur.jpg"
+# (re)generate the blur only if it is missing
+[ -f "$blur" ] || magick "$WP" -blur 0x40 -quality 85 "$blur"
+# wait for the backdrop daemon socket, then set the image
+for _ in 1 2 3 4 5 6 7 8; do
+ if awww img --namespace backdrop "$blur" 2>/dev/null; then
+ exit 0
fi
-fi
-
-awww img "$BLURRED" -n backdrop
-echo "$BLURRED" >/tmp/current_backdrop_state \ No newline at end of file
+ sleep 0.5
+done
+echo "set-backdrop: awww backdrop daemon not reachable" >&2
+exit 1
diff --git a/.config/niri/theme-switcher.sh b/.config/niri/theme-switcher.sh
index 01786d8..af9035f 100755
--- a/.config/niri/theme-switcher.sh
+++ b/.config/niri/theme-switcher.sh
@@ -1,143 +1,51 @@
-#!/bin/bash
-
-# Manual theme switcher + wallpaper/color applier.
-# No time-based switching: you pick the wallpaper and mode explicitly.
+#!/bin/sh
+# Set a new wallpaper everywhere: main layer, blurred backdrop, wallust colors.
#
-# Usage:
-# ./theme-switcher.sh <image> <day|night> apply <image> in light/dark mode, remember it
-# ./theme-switcher.sh --last apply the last manually-set wallpaper+mode
-# ./theme-switcher.sh -h | --help show this help
-
-WALLPAPERS="$HOME/Pictures/wallpapers"
-STATE_FILE="/tmp/current_theme_state"
-WALLPAPER_STATE_FILE="/tmp/current_wallpaper_state"
-BACKDROP_STATE_FILE="/tmp/current_backdrop_state"
-LAST_FILE="${XDG_STATE_HOME:-$HOME/.local/state}/theme-switcher/last"
-LOG="/tmp/theme-switcher.log"
-SCRIPT_DIR="$(cd "$(dirname "$(realpath "$0")")" && pwd)"
-SET_BACKDROP="$SCRIPT_DIR/set-backdrop.sh"
-
-log() {
- printf '%s %s\n' "$(date '+%Y-%m-%d %H:%M:%S')" "$*" >>"$LOG"
-}
-
-# Persist the last manually-chosen wallpaper + mode so --last survives reboots.
-save_last() {
- mkdir -p "$(dirname "$LAST_FILE")"
- printf '%s\n%s\n' "$WALLPAPER" "$MODE" >"$LAST_FILE"
-}
-
-# Load the last chosen wallpaper + mode. Falls back to the old default so a
-# fresh boot (nothing saved yet) never lands on a blank wallpaper.
-load_last() {
- if [ -f "$LAST_FILE" ]; then
- WALLPAPER=$(sed -n '1p' "$LAST_FILE")
- MODE=$(sed -n '2p' "$LAST_FILE")
- case "$MODE" in
- light) TARGET_STATE="light" ;;
- *) TARGET_STATE="dark"; MODE="dark" ;;
+# Usage: theme-switcher.sh <wallpaper|path> [--palette P] [--threshold T]
+# [--saturation S] [--colorspace C]
+#
+# The chosen palette/threshold are persisted to ~/.cache/wallust_runtime so
+# that apply-colors.sh reproduces them after a reboot. The main wallpaper is
+# cached by awww itself, so it is also restored on the next boot.
+
+set -eu
+CACHE="${XDG_CACHE_HOME:-$HOME/.cache}"
+STATE="$CACHE/wallust_runtime"
+WP=""; palette=""; threshold=""; sat=""; cs=""
+
+while [ $# -gt 0 ]; do
+ case "$1" in
+ --palette|-p) palette="$2"; shift 2 ;;
+ --threshold|-t) threshold="$2"; shift 2 ;;
+ --saturation) sat="$2"; shift 2 ;;
+ --colorspace|-c) cs="$2"; shift 2 ;;
+ *) WP="${WP:-$1}"; shift ;;
esac
- else
- WALLPAPER="$WALLPAPERS/night.jpg"
- TARGET_STATE="dark"
- MODE="dark"
- fi
-}
-
-# Resolve TARGET_STATE / MODE from an explicit mode argument.
-resolve_explicit() {
- local mode="$1"
- case "$mode" in
- day | light) TARGET_STATE="light"; MODE="light" ;;
- night | dark) TARGET_STATE="dark"; MODE="dark" ;;
- *)
- echo "mode must be day|night (got: $mode)" >&2
- exit 1
- ;;
- esac
-}
+done
-# Apply the resolved target once. Returns 0 on success.
-apply_target() {
- if [ ! -f "$WALLPAPER" ]; then
- log "wallpaper missing: $WALLPAPER"
- return 1
- fi
-
- local CURRENT_THEME CURRENT_WALLPAPER EXPECTED_BACKDROP ACTUAL_BACKDROP
-
- CURRENT_THEME=$(cat "$STATE_FILE" 2>/dev/null || true)
- CURRENT_WALLPAPER=$(cat "$WALLPAPER_STATE_FILE" 2>/dev/null || true)
-
- # Self-heal the Overview backdrop if it drifted from the expected image.
- EXPECTED_BACKDROP=$(cat "$BACKDROP_STATE_FILE" 2>/dev/null || true)
- ACTUAL_BACKDROP=$(awww query -n backdrop -j 2>/dev/null | jq -r '.["backdrop"][0].displaying.image // empty')
- if [ -n "$EXPECTED_BACKDROP" ] && [ "$ACTUAL_BACKDROP" != "$EXPECTED_BACKDROP" ]; then
- "$SET_BACKDROP" "$WALLPAPER"
- fi
-
- # Already in this exact theme AND wallpaper: skip the heavy color work.
- if [ "$CURRENT_THEME" = "$TARGET_STATE" ] && [ "$CURRENT_WALLPAPER" = "$WALLPAPER" ]; then
- return 0
- fi
-
- log "switching to $TARGET_STATE ($WALLPAPER)"
- if sh "$SCRIPT_DIR/apply-colors.sh" "$WALLPAPER" "$MODE"; then
- if [ "$CURRENT_THEME" != "$TARGET_STATE" ]; then
- darkman set "$TARGET_STATE"
- fi
+[ -n "$WP" ] || { echo "usage: $0 <wallpaper> [--palette P] [--threshold T]" >&2; exit 1; }
+case "$WP" in
+ /*) ;;
+ *) WP="$HOME/Pictures/wallpapers/$WP" ;;
+esac
+[ -f "$WP" ] || { echo "no such wallpaper: $WP" >&2; exit 1; }
- ln -sf \
- "theme-${TARGET_STATE}.css" \
- "$HOME/dotfiles-gentoo/.config/waybar/theme.css"
+# Remember the last used wallpaper so apply-colors.sh reproduces it on reboot.
+echo "$WP" > "$CACHE/current_wallpaper"
- ln -sf \
- "settings-${TARGET_STATE}.ini" \
- "$HOME/dotfiles-gentoo/.config/gtk-3.0/settings.ini"
+# Persist palette/threshold for the next boot.
+: > "$STATE"
+[ -n "$palette" ] && echo "palette=$palette" >> "$STATE"
+[ -n "$threshold" ] && echo "threshold=$threshold" >> "$STATE"
+[ -n "$sat" ] && echo "saturation=$sat" >> "$STATE"
+[ -n "$cs" ] && echo "colorspace=$cs" >> "$STATE"
- echo "$TARGET_STATE" >"$STATE_FILE"
- echo "$WALLPAPER" >"$WALLPAPER_STATE_FILE"
- save_last
- log "switched to $TARGET_STATE ($WALLPAPER)"
- return 0
- else
- log "FAILED to apply $TARGET_STATE ($WALLPAPER)"
- return 1
- fi
-}
+# Main wallpaper (awww caches it -> restored automatically on next boot).
+awww img "$WP"
-usage() {
- cat >&2 <<EOF
-usage: $0 <image> <day|night> | --last
- <image> <day|night> apply <image> in light/dark mode and remember it
- --last apply the last manually-set wallpaper + mode
-EOF
-}
+# Regenerate colors, sync backdrop, reload live apps.
+"$HOME/.config/niri/apply-colors.sh"
-case "${1:-}" in
- --last)
- load_last
- apply_target
- exit $?
- ;;
- -h | --help)
- usage
- exit 0
- ;;
- "")
- usage
- exit 1
- ;;
- *)
- WALLPAPER="${1:-}"
- MODEARG="${2:-}"
- if [ -z "$MODEARG" ]; then
- echo "missing mode (day|night)" >&2
- usage
- exit 1
- fi
- resolve_explicit "$MODEARG"
- apply_target
- exit $?
- ;;
-esac
+# Refresh niri's own theme (focus ring, etc.) live.
+matugen image "$WP" 2>/dev/null || true
+niri msg action reload-config 2>/dev/null || true
diff --git a/.config/starship.toml b/.config/starship.toml
index ab9064a..8372d2b 100644
--- a/.config/starship.toml
+++ b/.config/starship.toml
@@ -6,30 +6,29 @@ format = "$username$hostname$character [$directory$git_branch$git_status]($style
[username]
show_always = true
format = "[$user]($style)"
-style_user = "#8C00FF"
-# style_user = "bold #8C00FF"
+style_user = "mauve"
[hostname]
disabled = false
ssh_only = false
format = "[@$hostname]($style)"
-style = "#8C00FF"
+style = "mauve"
[character]
format = "$symbol" # Removes the default trailing space after #
error_symbol = "[:~✗](bold red)"
-success_symbol = "[:~#](bold #8C00FF)"
+success_symbol = "[:~#](bold mauve)"
[directory]
-style = "#AA40FF"
+style = "pink"
truncation_length = 2
truncation_symbol = "///"
-repo_root_style = "#AA40FF"
+repo_root_style = "pink"
repo_root_format = "[$repo_root]($repo_root_style)[$path]($style)[$read_only]($read_only_style) "
[git_branch]
symbol = "> "
format = "[$symbol$branch]($style) "
-style = "italic #AA40FF"
+style = "italic pink"
[git_status]
format = '[$all_status]($style)'
@@ -47,45 +46,49 @@ renamed = ""
deleted = ""
# >>> NOCTALIA STARSHIP PALETTE >>>
-# Noctalia Starship Palette
-# Generated by Noctalia - do not edit manually
+# Generated dynamically from wallust. Colors follow the active dark/light mode:
+# wallust sorts color0=darkest / color15=brightest with --palette dark (swapped
+# in light mode), so base/text/etc. auto-adapt — no more dark-on-dark prompt.
+# Source of truth: .config/wallust/templates/starship.toml
[palettes.noctalia]
# Standard colors
-blue = "#54604a"
-red = "#ba1a1a"
-green = "#645c3f"
-yellow = "#635e50"
-cyan = "#797263"
-magenta = "#7e7252"
-white = "#1d1b19"
-black = "#e9e2d4"
+blue = "#798D1F"
+# red/green pinned to fixed visible hues: some wallpapers yield a near-black
+# color9/color10, which would be invisible on the dark terminal.
+red = "#E5484D"
+green = "#7FB069"
+yellow = "#856B58"
+cyan = "#D9B890"
+magenta = "#829FB6"
+white = "#E4D3BF"
+black = "#37393D"
# Extended palette (Catppuccin-compatible names)
-rosewater = "#635e50"
-flamingo = "#ba1a1a"
-pink = "#7e7252"
-mauve = "#7e7252"
-maroon = "#ba1a1a"
-peach = "#635e50"
-teal = "#797263"
-sky = "#797263"
-sapphire = "#54604a"
-lavender = "#7e7252"
+rosewater = "#856B58"
+flamingo = "#374F40"
+pink = "#829FB6"
+mauve = "#829FB6"
+maroon = "#374F40"
+peach = "#856B58"
+teal = "#D9B890"
+sky = "#D9B890"
+sapphire = "#798D1F"
+lavender = "#829FB6"
# Text shades
-text = "#1d1b19"
-subtext1 = "#1d1b19"
-subtext0 = "#7b776c"
+text = "#E4D3BF"
+subtext1 = "#E4D3BF"
+subtext0 = "#9F9486"
# Surface shades
-overlay2 = "#7b776c"
-overlay1 = "#7b776c"
-overlay0 = "#e9e2d4"
-surface2 = "#e9e2d4"
-surface1 = "#e9e2d4"
-surface0 = "#fef8f4"
-base = "#fef8f4"
-mantle = "#fef8f4"
-crust = "#fef8f4"
+overlay2 = "#9F9486"
+overlay1 = "#9F9486"
+overlay0 = "#E4D3BF"
+surface2 = "#37393D"
+surface1 = "#37393D"
+surface0 = "#37393D"
+base = "#0F1115"
+mantle = "#0F1115"
+crust = "#0F1115"
# <<< NOCTALIA STARSHIP PALETTE <<<
diff --git a/.config/wallust/templates/foot-colors-custom.ini b/.config/wallust/templates/foot-colors-custom.ini
index 5fc7983..fa7fd4c 100644
--- a/.config/wallust/templates/foot-colors-custom.ini
+++ b/.config/wallust/templates/foot-colors-custom.ini
@@ -1,7 +1,10 @@
# wallust foot template — foot expects colors without '#'
[colors]
background={{background}}
-foreground={{foreground}}
+# Pin foreground to the brightest palette color so typed text is always readable.
+# wallust sorts color0=darkest / color15=brightest with --palette dark, and swaps
+# them with --palette light, so this stays correct in both modes (no dark-on-dark).
+foreground={{color15}}
regular0={{color0}}
regular1={{color1}}
regular2={{color2}}
diff --git a/.config/wallust/templates/niri.kdl b/.config/wallust/templates/niri.kdl
new file mode 100644
index 0000000..227738c
--- /dev/null
+++ b/.config/wallust/templates/niri.kdl
@@ -0,0 +1,6 @@
+layout {
+ focus-ring {
+ active-color "{{color4}}"
+ inactive-color "{{color8}}"
+ }
+}
diff --git a/.config/wallust/templates/starship.toml b/.config/wallust/templates/starship.toml
new file mode 100644
index 0000000..11eaa93
--- /dev/null
+++ b/.config/wallust/templates/starship.toml
@@ -0,0 +1,94 @@
+palette = "noctalia"
+add_newline = true
+command_timeout = 200
+format = "$username$hostname$character [$directory$git_branch$git_status]($style)"
+
+[username]
+show_always = true
+format = "[$user]($style)"
+style_user = "mauve"
+[hostname]
+disabled = false
+ssh_only = false
+format = "[@$hostname]($style)"
+style = "mauve"
+
+[character]
+format = "$symbol" # Removes the default trailing space after #
+error_symbol = "[:~✗](bold red)"
+success_symbol = "[:~#](bold mauve)"
+
+[directory]
+style = "pink"
+truncation_length = 2
+truncation_symbol = "///"
+repo_root_style = "pink"
+repo_root_format = "[$repo_root]($repo_root_style)[$path]($style)[$read_only]($read_only_style) "
+
+[git_branch]
+symbol = "> "
+format = "[$symbol$branch]($style) "
+style = "italic pink"
+
+[git_status]
+format = '[$all_status]($style)'
+style = "purple"
+ahead = "⇡${count} "
+diverged = "⇕⇡${ahead_count}⇣${behind_count} "
+behind = "⇣${count} "
+conflicted = " "
+up_to_date = " "
+untracked = "? "
+modified = " "
+stashed = ""
+staged = ""
+renamed = ""
+deleted = ""
+
+# >>> NOCTALIA STARSHIP PALETTE >>>
+# Generated dynamically from wallust. Colors follow the active dark/light mode:
+# wallust sorts color0=darkest / color15=brightest with --palette dark (swapped
+# in light mode), so base/text/etc. auto-adapt — no more dark-on-dark prompt.
+# Source of truth: .config/wallust/templates/starship.toml
+
+[palettes.noctalia]
+# Standard colors
+blue = "{{color12}}"
+# red/green pinned to fixed visible hues: some wallpapers yield a near-black
+# color9/color10, which would be invisible on the dark terminal.
+red = "#E5484D"
+green = "#7FB069"
+yellow = "{{color11}}"
+cyan = "{{color14}}"
+magenta = "{{color13}}"
+white = "{{color15}}"
+black = "{{color0}}"
+
+# Extended palette (Catppuccin-compatible names)
+rosewater = "{{color11}}"
+flamingo = "{{color9}}"
+pink = "{{color13}}"
+mauve = "{{color13}}"
+maroon = "{{color9}}"
+peach = "{{color11}}"
+teal = "{{color14}}"
+sky = "{{color14}}"
+sapphire = "{{color12}}"
+lavender = "{{color13}}"
+
+# Text shades
+text = "{{color15}}"
+subtext1 = "{{color15}}"
+subtext0 = "{{color8}}"
+
+# Surface shades
+overlay2 = "{{color8}}"
+overlay1 = "{{color8}}"
+overlay0 = "{{color15}}"
+surface2 = "{{color0}}"
+surface1 = "{{color0}}"
+surface0 = "{{color0}}"
+base = "{{background}}"
+mantle = "{{background}}"
+crust = "{{background}}"
+# <<< NOCTALIA STARSHIP PALETTE <<<
diff --git a/.config/wallust/wallust.toml b/.config/wallust/wallust.toml
index 2d8d618..d2433d2 100644
--- a/.config/wallust/wallust.toml
+++ b/.config/wallust/wallust.toml
@@ -1,4 +1,7 @@
+[wallust]
backend = "fastresize"
+threshold = 20
+# palette = "dark" # optional default; otherwise taken from the saved state/flag
[templates]
nvim = { template = "nvim.lua", target = "~/.cache/wallust/colors/wallust.lua" }
@@ -7,6 +10,8 @@ vicinae_dark = { template = "vicinae-dark.toml", target = "~/.cache/wallust/vici
vicinae_light = { template = "vicinae-light.toml", target = "~/.cache/wallust/vicinae-light.toml" }
mako = { template = "mako", target = "~/.cache/wallust/mako" }
vis = { template = "vis-theme.lua", target = "~/.cache/wallust/vis-theme.lua" }
+starship = { template = "starship.toml", target = "~/.config/starship.toml" }
+niri = { template = "niri.kdl", target = "~/.cache/wallust/niri-theme.kdl" }
[hooks]
strip_foot_hash = "sed -i '/^[^#]/s/#//g' ~/.cache/wallust/foot-theme.ini"
diff --git a/config.toml b/config.toml
new file mode 100644
index 0000000..1c1cad4
--- /dev/null
+++ b/config.toml
@@ -0,0 +1,8 @@
+[terminal]
+vt = 1
+
+[default_session]
+command = "tuigreet --cmd /home/seraphim/.local/bin/start-niri.sh"
+#command = "tuigreet --time --cmd 'dbus-run-session niri'"
+user = "greeter"
+DISPLAYMANAGER="greetd"
diff --git a/portage/etc/portage/package.accept_keywords/anki b/portage/etc/portage/package.accept_keywords/anki
new file mode 100644
index 0000000..699dd19
--- /dev/null
+++ b/portage/etc/portage/package.accept_keywords/anki
@@ -0,0 +1 @@
+app-misc/anki ~amd64
diff --git a/portage/etc/portage/package.accept_keywords/luv b/portage/etc/portage/package.accept_keywords/luv
new file mode 100644
index 0000000..2b91114
--- /dev/null
+++ b/portage/etc/portage/package.accept_keywords/luv
@@ -0,0 +1 @@
+=dev-lua/luv-1.52.1.0 ~amd64
diff --git a/portage/etc/portage/package.accept_keywords/neovim b/portage/etc/portage/package.accept_keywords/neovim
new file mode 100644
index 0000000..7de821c
--- /dev/null
+++ b/portage/etc/portage/package.accept_keywords/neovim
@@ -0,0 +1 @@
+=app-editors/neovim-0.12.3 **
diff --git a/portage/etc/portage/postsync.d/update-dotfiles b/portage/etc/portage/postsync.d/update-dotfiles
new file mode 100755
index 0000000..1789155
--- /dev/null
+++ b/portage/etc/portage/postsync.d/update-dotfiles
@@ -0,0 +1,3 @@
+#!/usr/bin/env bash
+# generated by update.sh --hook-install — keeps dotfiles fresh after each emerge
+exec "/home/seraphim/dotfiles-gentoo/update.sh" --quick
diff --git a/portage/etc/portage/repos.conf/eselect-repo.conf b/portage/etc/portage/repos.conf/eselect-repo.conf
index 40f8956..ad543a8 100644
--- a/portage/etc/portage/repos.conf/eselect-repo.conf
+++ b/portage/etc/portage/repos.conf/eselect-repo.conf
@@ -24,3 +24,8 @@ sync-uri = https://codeberg.org/librewolf/gentoo.git
location = /var/db/repos/jaredallard-overlay
sync-type = git
sync-uri = https://github.com/jaredallard/overlay.git
+
+[another-brave-overlay]
+location = /var/db/repos/another-brave-overlay
+sync-type = git
+sync-uri = https://github.com/falbrechtskirchinger/another-brave-overlay.git
diff --git a/portage/var/lib/portage/world b/portage/var/lib/portage/world
index 92e4c1c..0f4ff0e 100644
--- a/portage/var/lib/portage/world
+++ b/portage/var/lib/portage/world
@@ -112,4 +112,5 @@ x11-misc/dunst
x11-misc/matugen
x11-misc/sddm
x11-misc/silent-sddm-theme
+x11-themes/apple-cursor
x11-themes/bibata-xcursors
diff --git a/templates/dbg.ini b/templates/dbg.ini
deleted file mode 120000
index b28db24..0000000
--- a/templates/dbg.ini
+++ /dev/null
@@ -1 +0,0 @@
-../.config/wallust/templates/dbg.ini \ No newline at end of file
diff --git a/templates/foot-colors-custom.ini b/templates/foot-colors-custom.ini
deleted file mode 120000
index 7e89ea4..0000000
--- a/templates/foot-colors-custom.ini
+++ /dev/null
@@ -1 +0,0 @@
-../.config/wallust/templates/foot-colors-custom.ini \ No newline at end of file
diff --git a/templates/mako b/templates/mako
deleted file mode 120000
index a59cbd9..0000000
--- a/templates/mako
+++ /dev/null
@@ -1 +0,0 @@
-../.config/wallust/templates/mako \ No newline at end of file
diff --git a/templates/niri.kdl b/templates/niri.kdl
deleted file mode 120000
index cb6700b..0000000
--- a/templates/niri.kdl
+++ /dev/null
@@ -1 +0,0 @@
-../.config/matugen/templates/niri.kdl \ No newline at end of file
diff --git a/templates/nvim.lua b/templates/nvim.lua
deleted file mode 120000
index a98355a..0000000
--- a/templates/nvim.lua
+++ /dev/null
@@ -1 +0,0 @@
-../.config/wallust/templates/nvim.lua \ No newline at end of file
diff --git a/templates/shell-colors.sh b/templates/shell-colors.sh
deleted file mode 120000
index 2cf94f6..0000000
--- a/templates/shell-colors.sh
+++ /dev/null
@@ -1 +0,0 @@
-../.config/wallust/templates/shell-colors.sh \ No newline at end of file
diff --git a/templates/vicinae-dark.toml b/templates/vicinae-dark.toml
deleted file mode 120000
index 9910b55..0000000
--- a/templates/vicinae-dark.toml
+++ /dev/null
@@ -1 +0,0 @@
-../.config/wallust/templates/vicinae-dark.toml \ No newline at end of file
diff --git a/templates/vicinae-light.toml b/templates/vicinae-light.toml
deleted file mode 120000
index 8e185bd..0000000
--- a/templates/vicinae-light.toml
+++ /dev/null
@@ -1 +0,0 @@
-../.config/wallust/templates/vicinae-light.toml \ No newline at end of file
diff --git a/templates/vis-theme.lua b/templates/vis-theme.lua
deleted file mode 120000
index f25b2dd..0000000
--- a/templates/vis-theme.lua
+++ /dev/null
@@ -1 +0,0 @@
-../.config/wallust/templates/vis-theme.lua \ No newline at end of file