use Noctalia instead of various components

This commit is contained in:
2026-09-22 22:56:33 +02:00
parent 466c79f1df
commit 143f1ad86a
28 changed files with 166 additions and 1131 deletions
+3 -2
View File
@@ -2,10 +2,11 @@ hypr/.config/hypr/env
hypr/.config/hypr/env.conf
hypr/.config/hypr/env.sh
hypr/.config/hypr/monitor_setup.lua
hypr/.config/hypr/hyprpaper.conf
# Noctalia template output (shell-owned, regenerated on palette change)
hypr/.config/hypr/noctalia.lua
hypr/.config/kitty/themes/noctalia.conf
*~lock.*#
lazy-lock.json
fish_variables
term/.config/opencode/cli.json
term/.config/opencode/service.json
hypr/.config/waypaper/config.ini
+1 -1
View File
@@ -8,7 +8,7 @@ Personal configuration files for an Arch Linux workstation (Hyprland + Neovim +
|-----------|----------|
| `basic/` | Base system packages + the **central theme** (`basic/.config/themes` → `~/.config/themes`: Catppuccin Mocha palette, `current` symlink, `switch-theme.sh`/`sync-theme.sh`). All other packages reference it instead of copying colors. |
| `term/` | Fish + kitty + starship + nvim + tmux + yazi + fastfetch + opencode terminal environment |
| `hypr/` | Hyprland compositor config, kitty theme, waypaper/hyprpaper wallpapers |
| `hypr/` | Hyprland compositor config + Noctalia shell config (Catppuccin Mocha) |
| `kreation/`| VST plugin (`MT-PowerDrumKit.vst3`) |
| `local_ai/`| Local AI / MCP tooling config |
| `_install_skripte/` | Miscellaneous install helper scripts |
@@ -53,10 +53,6 @@ main() {
if command -v tmux >/dev/null 2>&1 && [[ -n "${TMUX:-}" ]]; then
tmux source-file "$HOME/.config/tmux/tmux.conf" >/dev/null 2>&1 || true
fi
if pgrep -x waybar >/dev/null 2>&1; then
pkill -x waybar >/dev/null 2>&1 || true
(waybar >/dev/null 2>&1 &) || true
fi
echo "note: restart Neovim (or :colorscheme \$THEME_NVIM_COLORSCHEME) and open a new shell to pick up theme.env.sh."
}
+4 -4
View File
@@ -6,9 +6,9 @@
# - term/.config/tmux/plugins/ (vendored upstream, stow-ignored)
# - term/.config/yazi/theme.toml (declared mirror: yazi has no include)
# - term/.config/starship.toml (declared mirror: starship has no include)
# - hypr/.config/rofi/themes/ltmnight.rasi (declared mirror: rasi has no
# alpha() function, so the two translucency values are #RRGGBBAA hex;
# everything else maps onto the central theme via @import)
# - hypr/.config/hypr/noctalia.lua + hypr/.config/kitty/themes/noctalia.conf
# (Noctalia template output: shell-owned, gitignored, regenerated from
# the active palette on every theme change)
# - test/ + docs (may quote values in prose)
#
# Run with: bash basic/.config/themes/scripts/sync-theme.sh
@@ -27,7 +27,7 @@ matches="$(grep -rniE --include='*.conf' --include='*.css' --include='*.rasi' \
--exclude-dir='.git' --exclude-dir='plugins' --exclude-dir='test' \
-E "$SENTINELS" . 2>/dev/null | grep -vE '^./basic/.config/themes' \
| grep -vE 'term/.config/(yazi/theme.toml|starship.toml)' \
| grep -vE 'hypr/.config/rofi/themes/ltmnight.rasi' || true)"
| grep -vE 'hypr/.config/(hypr/noctalia.lua|kitty/themes/noctalia.conf)' || true)"
if [[ -n "$matches" ]]; then
echo "FAIL: hardcoded theme colors outside basic/.config/themes (and declared mirrors):"
@@ -1,33 +0,0 @@
/* Central theme: catppuccin-mocha (Catppuccin Mocha), rofi palette.
* Part of basic/.config/themes. Managed file: refresh via
* basic/scripts/fetch-ports.sh
* (upstream: catppuccin/rofi themes/catppuccin-mocha.rasi). */
* {
rosewater: #f5e0dc;
flamingo: #f2cdcd;
pink: #f5c2e7;
mauve: #cba6f7;
red: #f38ba8;
maroon: #eba0ac;
peach: #fab387;
yellow: #f9e2af;
green: #a6e3a1;
teal: #94e2d5;
sky: #89dceb;
sapphire: #74c7ec;
blue: #89b4fa;
lavender: #b4befe;
text: #cdd6f4;
subtext1: #bac2de;
subtext0: #a6adc8;
overlay2: #9399b2;
overlay1: #7f849c;
overlay0: #6c7086;
surface2: #585b70;
surface1: #45475a;
surface0: #313244;
base: #1e1e2e;
mantle: #181825;
crust: #11111b;
}
@@ -1,7 +1,8 @@
/* Central theme: catppuccin-mocha (Catppuccin Mocha).
* Part of basic/.config/themes. Managed file: refresh via
* basic/scripts/fetch-ports.sh (upstream: catppuccin/waybar themes/mocha.css),
* then re-apply the role aliases below. Consumers must use this file via
* Part of basic/.config/themes. Managed file: edit the palette here.
* (theme.css was originally ported from catppuccin/waybar themes/mocha.css;
* the waybar port is gone, so this file is hand-maintained now.)
* Consumers must use this file via
* ~/.config/themes/current/theme.css, never a private copy.
* Role aliases (stable interface, theme-agnostic) follow the palette. */
@define-color rosewater #f5e0dc;
@@ -33,7 +34,7 @@
/* ---- Stable role interface (theme-agnostic; consumers use THESE) ----
* NOTE: values are literal hex, NOT @references to the palette above.
* Some parsers (wofi/waybar Gtk.CssProvider paths) silently drop
* Some Gtk.CssProvider-based parsers silently drop
* @define-color lines that reference another @color, which made every
* background transparent. Keep each role in sync with its palette twin
* (mapping below); scripts/sync-theme.sh verifies this mechanically. */
@@ -1,6 +1,6 @@
-- Central theme interface: catppuccin-mocha (Catppuccin Mocha).
-- Part of basic/.config/themes. Managed file: edit the palette here.
-- Consumers (hyprland.lua, hyprlock helpers) load this via
-- Consumers (hyprland.lua) load this via
-- dofile(os.getenv("HOME") .. "/.config/themes/current/theme.lua")
-- and must use the generic roles (bg/fg/accent/...) so a future
-- non-Catppuccin theme only adds a new directory. Full palette is
-6
View File
@@ -18,15 +18,9 @@ DEST="$SCRIPT_DIR/../.config/themes/themes/catppuccin-mocha"
# Pinned upstream revisions (bump deliberately, then run this script).
KITTY_PIN="main"
WAYBAR_PIN="main"
ROFI_PIN="main"
curl -fsSL "https://raw.githubusercontent.com/catppuccin/kitty/${KITTY_PIN}/themes/mocha.conf" \
-o "$DEST/kitty.conf"
curl -fsSL "https://raw.githubusercontent.com/catppuccin/waybar/${WAYBAR_PIN}/themes/mocha.css" \
-o "$DEST/theme.css"
curl -fsSL "https://raw.githubusercontent.com/catppuccin/rofi/${ROFI_PIN}/themes/catppuccin-mocha.rasi" \
-o "$DEST/rofi.rasi"
echo "ports refreshed into $DEST"
echo "reminder: re-apply file headers + theme.css role aliases, then run scripts/sync-theme.sh"
-34
View File
@@ -1,34 +0,0 @@
general {
lock_cmd = pidof hyprlock || hyprlock # avoid starting multiple hyprlock instances.
before_sleep_cmd = loginctl lock-session # lock before suspend.
after_sleep_cmd = hyprctl dispatch dpms on # to avoid having to press a key twice to turn on the display.
}
listener {
timeout = 300 # 5.0min.
on-timeout = brightnessctl -s set 10 # set monitor backlight to minimum, avoid 0 on OLED monitor.
on-resume = brightnessctl -r # monitor backlight restore.
}
# turn off keyboard backlight, comment out this section if you dont have a keyboard backlight.
listener {
timeout = 300 # 5.0min.
on-timeout = brightnessctl -sd rgb:kbd_backlight set 0 # turn off keyboard backlight.
on-resume = brightnessctl -rd rgb:kbd_backlight # turn on keyboard backlight.
}
listener {
timeout = 900 # 15min
on-timeout = loginctl lock-session # lock screen when timeout has passed
}
listener {
timeout = 1800 # 30min
on-timeout = hyprctl dispatch dpms off # screen off when timeout has passed
on-resume = hyprctl dispatch dpms on && brightnessctl -r # screen on when activity is detected after timeout has fired.
}
listener {
timeout = 2700 # 45min
on-timeout = systemctl suspend # suspend pc
}
+32 -46
View File
@@ -9,7 +9,7 @@ local var_color_decoration_shadow = theme.shadow
local var_mainMod = "SUPER"
local var_terminal = "kitty"
local var_fileManager = "dolphin"
local var_menu = "wofi --show drun"
local var_menu = "noctalia msg panel-toggle launcher"
local var_screenshot_folder = "~/Bilder/Screenshots/"
require("env")
@@ -33,15 +33,10 @@ hl.config({
-- ##################
hl.on("hyprland.start", function()
hl.exec_cmd("waybar &")
hl.exec_cmd("noctalia &")
end)
hl.on("hyprland.start", function()
hl.exec_cmd("hyprpaper &")
hl.exec_cmd("sleep 1; waypaper --restore &")
hl.exec_cmd("swaync &")
hl.exec_cmd("hypridle &")
hl.exec_cmd("nextcloud &")
hl.exec_cmd("sh ~/.config/hypr/scripts/portal-host-override.sh")
hl.exec_cmd("sh ~/.config/hypr/scripts/ensure-mime-defaults.sh")
end)
@@ -376,38 +371,32 @@ hl.device({
-- Example binds, see https://wiki.hypr.land/Configuring/Binds/ for more
hl.bind(var_mainMod .. " + RETURN", hl.dsp.exec_cmd(var_terminal), { description = "Open terminal (kitty)" })
hl.bind(var_mainMod .. " + Q", hl.dsp.window.close(), { description = "Close focused window" })
hl.bind(var_mainMod .. " + ESCAPE", hl.dsp.exec_cmd("hyprshutdown"), { description = "Shutdown Hyprland" })
-- Session menu (noctalia owns the session panel)
hl.bind(var_mainMod .. " + ESCAPE", hl.dsp.exec_cmd("noctalia msg panel-toggle session"), { description = "Session menu (logout/reboot/shutdown)" })
hl.bind(
var_mainMod .. " + SHIFT + ESCAPE",
hl.dsp.exec_cmd("command -v hyprshutdown >/dev/null 2>&1 && hyprshutdown || hyprctl dispatch exit"),
hl.dsp.exec_cmd("command -v noctalia >/dev/null 2>&1 && noctalia msg session logout || hyprctl dispatch exit"),
{ description = "Exit Hyprland" }
)
hl.bind(
var_mainMod .. " + CTRL + ESCAPE",
hl.dsp.exec_cmd("hyprshutdown -t 'Shutting down...' --post-cmd 'shutdown -P 0'"),
hl.dsp.exec_cmd("noctalia msg session shutdown"),
{ description = "Power off the system" }
)
hl.bind(
var_mainMod .. " + ALT + ESCAPE",
hl.dsp.exec_cmd("hyprshutdown -t 'Restarting...' --post-cmd 'reboot'"),
hl.dsp.exec_cmd("noctalia msg session reboot"),
{ description = "Reboot the system" }
)
hl.bind(var_mainMod .. " + E", hl.dsp.exec_cmd(var_fileManager), { description = "Open file manager (dolphin)" })
hl.bind(var_mainMod .. " + V", hl.dsp.window.float({ action = "toggle" }), { description = "Toggle floating window" })
hl.bind(var_mainMod .. " + SPACE", hl.dsp.exec_cmd(var_menu), { description = "Open app launcher (wofi)" })
hl.bind(
var_mainMod .. " + SHIFT + SPACE",
hl.dsp.exec_cmd("nwg-drawer"),
{ description = "Open app drawer (nwg-drawer)" }
)
hl.bind(var_mainMod .. " + SPACE", hl.dsp.exec_cmd(var_menu), { description = "Open app launcher (noctalia)" })
hl.bind(var_mainMod .. " + P", hl.dsp.window.pseudo(), { description = "Toggle pseudo-tiling" })
hl.bind(var_mainMod .. " + SHIFT + J", hl.dsp.layout("togglesplit"), { description = "Toggle split layout" })
hl.bind(var_mainMod .. " + I", hl.dsp.exec_cmd("firefox &"), { description = "Open Firefox" })
hl.bind(
var_mainMod .. " + n",
hl.dsp.exec_cmd("~/.local/bin/hyprltm-net"),
{ description = "Network manager (hyprltm)" }
)
hl.bind(var_mainMod .. " + n", hl.dsp.exec_cmd("nm-connection-editor"), { description = "Network manager" })
hl.bind(var_mainMod .. " + comma", hl.dsp.exec_cmd("noctalia msg settings-toggle"), { description = "Noctalia settings" })
hl.bind(var_mainMod .. " + S", hl.dsp.exec_cmd("noctalia msg panel-toggle control-center"), { description = "Control center (noctalia)" })
-- Move focus with mainMod or Vim-style
hl.bind(var_mainMod .. " + CTRL + h", hl.dsp.focus({ direction = "left" }), { description = "Focus window left" })
@@ -611,9 +600,9 @@ hl.bind("SHIFT + PRINT", hl.dsp.exec_cmd("hyprshot -m active --output-folder " .
description = "Screenshot active monitor",
})
-- Screenlock
hl.bind("CTRL + ALT + L", hl.dsp.exec_cmd("hyprlock"), { locked = true, description = "Lock screen" })
hl.bind(var_mainMod .. " + L", hl.dsp.exec_cmd("hyprlock"), { locked = true, description = "Lock screen" })
-- Screenlock (noctalia owns the lock screen)
hl.bind("CTRL + ALT + L", hl.dsp.exec_cmd("noctalia msg session lock"), { locked = true, description = "Lock screen" })
hl.bind(var_mainMod .. " + L", hl.dsp.exec_cmd("noctalia msg session lock"), { locked = true, description = "Lock screen" })
-- Keybind overview popup
hl.bind(
@@ -622,7 +611,7 @@ hl.bind(
{ description = "Show keybind overview" }
)
hl.bind(var_mainMod .. " + W", hl.dsp.exec_cmd("waypaper"), { description = "Wallpaper select" })
hl.bind(var_mainMod .. " + W", hl.dsp.exec_cmd("noctalia msg panel-toggle wallpaper"), { description = "Wallpaper select (noctalia)" })
-- #############################
-- ## WINDOWS AND WORKSPACES ###
@@ -676,12 +665,12 @@ hl.window_rule({
float = true,
})
hl.window_rule({
name = "waypaper-float",
name = "keybinds-float",
match = {
class = ".*[Ww]aypaper.*",
class = "keybinds",
},
float = true,
size = "1280 800",
size = "900 700",
center = true,
dim_around = true,
})
@@ -692,31 +681,25 @@ hl.window_rule({
},
opacity = "0.80 0.70",
})
-- Noctalia shell surfaces: blur bars/panels/dock/notifications and let
-- Noctalia run its own animations (no Hyprland layer animation on top).
hl.layer_rule({
name = "noctalia",
match = {
namespace = "waybar",
namespace = "^noctalia-(bar-.+|notification|dock|panel|attached-panel|osd|window-switcher)$",
},
no_anim = true,
ignore_alpha = 0.5,
blur = true,
})
hl.layer_rule({
match = {
namespace = "waybar",
},
blur_popups = true,
})
-- Central theme: blur behind the wofi popups (SUPER+SPACE drun, SUPER+K
-- keybind help), whose window itself is translucent (@bg_translucent).
hl.layer_rule({
hl.window_rule({
name = "noctalia-settings",
match = {
namespace = "wofi",
class = "dev.noctalia.Noctalia",
},
blur = true,
})
hl.layer_rule({
match = {
namespace = "wofi",
},
blur_popups = true,
float = true,
size = "1080 920",
})
hl.window_rule({
name = "no-rounding-fullscreen",
@@ -753,3 +736,6 @@ hl.window_rule({
-- HyprMod managed settings
require("hyprland-gui")
-- For Noctalia Color templates
require("noctalia").apply_theme()
-114
View File
@@ -1,114 +0,0 @@
# sample hyprlock.conf
# for more configuration options, refer https://wiki.hyprland.org/Hypr-Ecosystem/hyprlock
#
# rendered text in all widgets supports pango markup (e.g. <b> or <i> tags)
# ref. https://wiki.hyprland.org/Hypr-Ecosystem/hyprlock/#general-remarks
#
# shortcuts to clear password buffer: ESC, Ctrl+U, Ctrl+Backspace
#
# you can get started by copying this config to ~/.config/hypr/hyprlock.conf
#
# Central theme: palette variables ($sapphire, $text, ...) come from
# basic/.config/themes via ~/.config/themes/current/hypr.conf.
# Edit colors there, never hardcoded values here.
source = ~/.config/themes/current/hypr.conf
$font = Monospace
general {
hide_cursor = false
}
# uncomment to enable fingerprint authentication
# auth {
# fingerprint {
# enabled = true
# ready_message = Scan fingerprint to unlock
# present_message = Scanning...
# retry_delay = 250 # in milliseconds
# }
# }
animations {
enabled = true
bezier = linear, 1, 1, 0, 0
animation = fadeIn, 1, 5, linear
animation = fadeOut, 1, 5, linear
animation = inputFieldDots, 1, 2, linear
}
background {
monitor =
path = screenshot
blur_passes = 3
}
input-field {
monitor =
size = 20%, 5%
outline_thickness = 3
inner_color = rgba(0, 0, 0, 0.0) # no fill
outer_color = $sapphire $lavender 45deg
check_color = $sapphire $peach 120deg
fail_color = $maroon $red 40deg
font_color = $subtext0
fade_on_empty = false
rounding = 15
font_family = $font
placeholder_text = Input password...
fail_text = $PAMFAIL
# uncomment to use a letter instead of a dot to indicate the typed password
# dots_text_format = *
# dots_size = 0.4
dots_spacing = 0.3
# uncomment to use an input indicator that does not show the password length (similar to swaylock's input indicator)
# hide_input = true
position = 0, -20
halign = center
valign = center
}
# TIME
label {
monitor =
text = $TIME # ref. https://wiki.hyprland.org/Hypr-Ecosystem/hyprlock/#variable-substitution
color = $text
font_size = 90
font_family = $font
position = -30, 0
halign = right
valign = top
}
# DATE
label {
monitor =
text = cmd[update:60000] date +"%A, %d %B %Y" # update every 60 seconds
color = $subtext0
font_size = 25
font_family = $font
position = -30, -150
halign = right
valign = top
}
label {
monitor =
text = $LAYOUT[en,ru]
color = $subtext0
font_size = 24
onclick = hyprctl switchxkblayout all next
position = 250, -20
halign = center
valign = center
}
+15 -44
View File
@@ -1,10 +1,10 @@
#!/usr/bin/env bash
# show-keybinds.sh — floating keybind overview popup.
#
# Reads the live keybind list from `hyprctl binds -j` and shows it in a wofi
# popup (single column, sorted A-Z, fuzzy-searchable, closes on Esc).
# Pressing Enter on a row executes that keybind's action via the compositor's
# Lua state (hl.dispatch on the bind's stored dispatcher).
# Reads the live keybind list from `hyprctl binds -j` and shows it in a
# floating kitty window (single column, sorted A-Z, searchable via less).
# Display-only: wofi/rofi are gone (the Noctalia launcher has no stdin-list
# mode), so picking a row to execute is not wired up.
#
# Note: this config uses the Lua API (hl.bind), so `hyprctl binds -j` reports
# key + modmask + an opaque Lua registry reference instead of a readable
@@ -13,7 +13,7 @@
# you change a bind.
#
# Usage: show-keybinds.sh [--print]
# --print print the formatted list to stdout instead of opening wofi
# --print print the formatted list to stdout instead of opening kitty
# (handy for debugging / testing the formatting pipeline)
set -euo pipefail
@@ -22,9 +22,6 @@ set -euo pipefail
# display order. See https://wiki.hypr.land/Configuring/Binds/
readonly MOD_ORDER=(64 SUPER 8 ALT 4 CTRL 1 SHIFT 2 CAPS 16 MOD2 32 MOD3 128 MOD5)
# chord -> Lua registry ref of the dispatcher to run on selection
declare -A dispatch_for
if ! hyprctl binds -j >/dev/null 2>&1; then
echo "hyprctl binds failed - are you inside a Hyprland session?" >&2
exit 1
@@ -38,8 +35,6 @@ rows=()
# like the (usually empty) submap. \x1f is not whitespace, so every field
# keeps its position.
while IFS=$'\x1f' read -r modmask key description submap arg; do
raw_key="$key"
# Humanize mouse-button binds.
case "$key" in
mouse:272) key="LMB" ;;
@@ -68,18 +63,6 @@ while IFS=$'\x1f' read -r modmask key description submap arg; do
else
rows+=("$(printf '%-26s %s' "$chord" "(no description)")")
fi
# Remember how to run this row. Mouse drag/resize need a real pointer
# gesture, so they stay display-only. First occurrence of a chord wins
# (media keys are often bound twice with different flags).
case "$raw_key" in
mouse:272 | mouse:273) ;;
*)
if [[ -n "$arg" && -z "${dispatch_for[$chord]+x}" ]]; then
dispatch_for[$chord]="$arg"
fi
;;
esac
done < <(hyprctl binds -j | jq -r '.[] | [(.modmask | tostring), .key, .description, .submap, .arg] | join("\u001f")')
if (( ${#rows[@]} == 0 )); then
@@ -96,28 +79,16 @@ if [[ "${1:-}" == "--print" ]]; then
exit 0
fi
if ! command -v wofi >/dev/null 2>&1; then
printf '%s\n' "${rows[@]}"
# Floating display via kitty (class `keybinds` has a float rule in
# hyprland.lua). Rows go through a temp file rather than a stdin pipe so the
# popup does not depend on kitty forwarding stdin to its child; the previous
# run's file is cleaned up on the next invocation. q closes the window.
rm -f /tmp/keybinds.??????.txt 2>/dev/null || true
if command -v kitty >/dev/null 2>&1; then
tmp="$(mktemp /tmp/keybinds.XXXXXX.txt)"
printf '%s\n' "${rows[@]}" > "$tmp"
kitty --class keybinds --title Keybinds less -S "$tmp"
exit 0
fi
sel=""
if ! sel=$(printf '%s\n' "${rows[@]}" | wofi \
--dmenu \
--prompt "Keybinds" \
--location center \
--width 860 \
--lines 22 \
--cache-file /dev/null \
--insensitive \
--no-custom-entry \
--hide-scroll); then
exit 0 # popup dismissed (Esc) - not an error
fi
# Re-derive the chord from the selected row (everything before the first
# double space) and run its stored dispatcher in the compositor's Lua state.
sel_chord="${sel%% *}"
if [[ -n "${dispatch_for[$sel_chord]+x}" ]]; then
hyprctl eval "hl.dispatch(debug.getregistry()[${dispatch_for[$sel_chord]}])" >/dev/null 2>&1 || true
fi
printf '%s\n' "${rows[@]}"
+1
View File
@@ -14,3 +14,4 @@ italic_font auto
bold_italic_font auto
font_size 10.0
include themes/noctalia.conf
+50
View File
@@ -0,0 +1,50 @@
# Noctalia shell config (hypr/.config/noctalia/config.toml → ~/.config/noctalia/config.toml).
#
# Fresh start: Catppuccin Mocha palette + Noctalia-owned app theming.
# Bar/launcher/control-center/dock run on built-in defaults — explore and
# tune via the Settings UI. GUI edits land in
# ~/.local/state/noctalia/settings.toml and win over this file.
# Validate with: noctalia config validate
[theme]
mode = "dark"
shell_mode = "follow"
source = "custom"
custom_palette = "Catppuccin-Mocha"
[theme.templates]
enable_builtin_templates = true
# IDs from `noctalia theme --list-templates`. The `hyprland` template is
# intentionally off: basic/.config/themes owns Hyprland border colors.
builtin_ids = ["kitty", "gtk3", "gtk4", "qt", "kcolorscheme", "starship"]
enable_community_templates = true
community_ids = ["neovim"]
# Idle behaviors (replaces hypr/.config/hypr/hypridle.conf, same timings:
# dim + kbd off at 5min, lock at 15min, monitors off at 30min, suspend at 45min).
[idle]
behavior_order = ["backlight-dim", "kbd-off", "lock", "screen-off", "suspend"]
[idle.behavior.backlight-dim]
timeout = 300
action = "command"
command = "brightnessctl -s set 10"
resume_command = "brightnessctl -r"
[idle.behavior.kbd-off]
timeout = 300
action = "command"
command = "brightnessctl -sd rgb:kbd_backlight set 0"
resume_command = "brightnessctl -rd rgb:kbd_backlight"
[idle.behavior.lock]
timeout = 900
action = "lock"
[idle.behavior.screen-off]
timeout = 1800
action = "screen_off"
[idle.behavior.suspend]
timeout = 2700
action = "lock_and_suspend"
@@ -0,0 +1,48 @@
{
"dark": {
"mPrimary": "#74c7ec",
"mOnPrimary": "#11111b",
"mSecondary": "#b4befe",
"mOnSecondary": "#11111b",
"mTertiary": "#cba6f7",
"mOnTertiary": "#11111b",
"mError": "#f38ba8",
"mOnError": "#11111b",
"mSurface": "#1e1e2e",
"mOnSurface": "#cdd6f4",
"mSurfaceVariant": "#313244",
"mOnSurfaceVariant": "#a6adc8",
"mOutline": "#45475a",
"mShadow": "#11111b",
"mHover": "#45475a",
"mOnHover": "#cdd6f4",
"terminal": {
"background": "#1e1e2e",
"foreground": "#cdd6f4",
"cursor": "#f5e0dc",
"cursorText": "#1e1e2e",
"selectionBg": "#585b70",
"selectionFg": "#cdd6f4",
"normal": {
"black": "#45475a",
"red": "#f38ba8",
"green": "#a6e3a1",
"yellow": "#f9e2af",
"blue": "#89b4fa",
"magenta": "#cba6f7",
"cyan": "#94e2d5",
"white": "#bac2de"
},
"bright": {
"black": "#585b70",
"red": "#f38ba8",
"green": "#a6e3a1",
"yellow": "#f9e2af",
"blue": "#89b4fa",
"magenta": "#cba6f7",
"cyan": "#94e2d5",
"white": "#a6adc8"
}
}
}
}
-157
View File
@@ -1,157 +0,0 @@
// Managed by dotfiles: hypr/.config/rofi/themes/hyprltm-net.rasi
// (stowed to ~/.config/rofi/themes/hyprltm-net.rasi).
// Third-party layout from hyprltm-net 0.5.0 (Djalel Oukid), kept structurally
// identical: all colors resolve through @theme "ltmnight" (ltmnight.rasi),
// which maps onto the central theme (basic/.config/themes).
// Do not add hex colors here — the palette lives in ltmnight.rasi.
// __ __ __ ________ ___ _ __ __
// / / / /_ ______ _____/ / /_ __/ |/ / / | / /___/ /_
// / /_/ / / / / __ \/ ___/ / / / / /|_/ /_____ / |/ / _ / __/
// / __ / /_/ / /_/ / / / /___ / / / / / /_____ / /| / __/ /_
// /_/ /_/\__, / .___/_/ /_____//_/ /_/ /_/ /_/ |_/\___/\__/
// /____/_/
// Copyright © 2025-2026 Djalel Oukid (sniper1720)
@theme "ltmnight"
window {
background-color: @background;
border: 2px;
border-color: @primary-fixed;
padding: 0;
border-radius: 10px;
width: 50%;
location: 0;
x-offset: 0;
y-offset: 0;
transparency: "real";
}
mainbox {
enabled: true;
spacing: 0em;
padding: 10px;
orientation: vertical;
children: [ inputbar, message, listview ];
background-color: transparent;
}
inputbar {
enabled: true;
spacing: 0.5em;
padding: 8px 15px;
margin: 0 0 10px 0;
background-color: @selection;
border: 0px 0px 2px 0px;
border-color: @primary-fixed;
border-radius: 8px;
}
prompt {
enabled: true;
expand: false;
text-color: @prompt;
padding: 0px 5px;
background-color: transparent;
str: "";
}
entry {
enabled: true;
background-color: transparent;
text-color: @on-primary-fixed;
caret-color: @ltmnight8;
placeholder: "";
placeholder-color: @placeholder;
expand: true;
}
listview {
background-color: transparent;
border: 0;
padding: 5px;
cycle: true;
layout: vertical;
spacing: 2px;
scrollbar: false;
columns: 1;
dynamic: true;
fixed-height:false;
}
element {
enabled: true;
padding: 5px 10px;
margin: 2px 0;
background-color: transparent;
text-color: @foreground;
border: 0;
border-radius: 5px;
orientation: horizontal;
children: [ element-text ];
vertical-align: 0.5;
}
element-icon {
background-color: transparent;
size: 0px;
margin: 0px;
enabled: false;
}
element-text {
background-color: transparent;
text-color: inherit;
highlight-color: @ltmnight6;
expand: true;
vertical-align: 0.5;
format: "{text}";
}
element selected {
background-color: @selection;
text-color: @on-selection;
border-radius: 5px;
}
element urgent {
background-color: @error;
text-color: @on-error;
}
element active {
background-color: @primary;
text-color: @on-primary;
}
scrollbar {
handle-color: @ltmnight8;
background-color: @primary-fixed;
width: 4px;
padding: 0;
border-radius: 0px;
}
case-indicator {
enabled: false;
}
message {
enabled: true;
margin: 10px 0px 10px 0px;
padding: 10px;
border: 1px;
border-radius: 8px;
border-color: @message-border;
background-color: @message-background;
children: [ textbox ];
}
textbox {
background-color: @message-background;
text-color: @message-text;
vertical-align: 0.5;
horizontal-align: 0.0;
highlight: none;
}
-67
View File
@@ -1,67 +0,0 @@
// ltmnight Palette for Rofi — now mapped onto the CENTRAL theme
// (basic/.config/themes → ~/.config/themes/current/rofi.rasi, Catppuccin Mocha).
// Tracked in dotfiles: hypr/.config/rofi/themes/ltmnight.rasi
// (stowed to ~/.config/rofi/themes/ltmnight.rasi).
//
// Only the palette values changed to Mocha; every variable NAME below is
// unchanged, so hyprltm-net.rasi (@theme "ltmnight") and hyprltm-net's
// core.sh -theme-str overrides (@on-primary-fixed, @error-message, ...)
// keep working untouched. The two translucency values use #RRGGBBAA hex
// because rasi has no alpha() function — keep them in sync with @base /
// @surface0 from the central theme if you ever switch flavors.
@import "$HOME/.config/themes/current/rofi.rasi"
* {
ltmnight0: @base; /* Background */
ltmnight1: @surface0; /* Current Line / Secondary Background */
ltmnight2: @text; /* Foreground Text */
ltmnight3: @overlay1; /* Comment / Faded Foreground */
ltmnight4: @red; /* Red / Errors */
ltmnight5: @peach; /* Orange / Warnings */
ltmnight6: @yellow; /* Yellow / Warnings */
ltmnight7: @green; /* Green / Success */
ltmnight8: @sapphire; /* Cyan / Info */
ltmnight9: @mauve; /* Purple / Accents */
ltmnight10: @pink; /* Pink / Accents */
ltmnight11: @overlay0; /* Gray / Placeholders */
// Rofi Color Mappings to ltmnight Palette
background: #1e1e2ee6; /* @base at 90% */
foreground: @ltmnight2;
primary: @ltmnight9;
accent: @ltmnight10;
on-primary: @ltmnight2;
primary-fixed: @ltmnight1;
on-primary-fixed: @ltmnight2;
selection: #31324480; /* @surface0 at 50% */
on-selection: @ltmnight2;
error: @ltmnight4;
on-error: @ltmnight2;
surface: #1e1e2ee6; /* @base at 90% */
on-surface: @ltmnight2;
outline: @ltmnight3;
shadow: rgba(0, 0, 0, 0.5);
highlight: @ltmnight6;
prompt: @ltmnight11;
placeholder: @ltmnight11;
message-background: transparent;
message-border: @ltmnight8;
message-text: @ltmnight8;
error-message: @ltmnight4;
warning-message: @ltmnight5;
success-message: @ltmnight7;
info-message: @ltmnight8;
}
-230
View File
@@ -1,230 +0,0 @@
// -*- mode: jsonc -*-
{
"custom/gpu": {
"format": "{text}",
"tooltip": false,
"exec": "~/.config/waybar/scripts/gpu-info.sh",
"exec-interval": 1,
"return-type": "json"
},
// "layer": "top", // Waybar at top layer
"position": "bottom", // Waybar position (top|bottom|left|right)
"height": 30, // Waybar height (to be removed for auto height)
// "width": 800, // Waybar width
"spacing": 4, // Gaps between modules (4px)
// Choose the order of the modules
"modules-left": [
"hyprland/workspaces"
//"hyprland/mode",
//"hyprland/scratchpad",
//"custom/media"
],
"modules-center": [
"hyprland/window"
],
"modules-right": [
"mpd",
"idle_inhibitor",
"pulseaudio",
//"network",
//"power-profiles-daemon",
"cpu",
"memory",
"temperature",
"backlight",
"keyboard-state",
//"hyprland/language",
"battery",
//"battery#bat2",
"custom/gpu",
"clock",
"tray",
"custom/power"
],
// Modules configuration
"hyprland/workspaces": {
"disable-scroll": true,
"all-outputs": true,
"warp-on-scroll": true,
"format": "{name}: {icon}",
"format-icons": {
// "1": "",
// "2": "",
// "3": "",
// "4": "",
// "5": "",
// "urgent": "",
"active": "",
"default": ""
}
},
"keyboard-state": {
"numlock": true,
"capslock": true,
"format": "{name} {icon}",
"format-icons": {
"locked": "",
"unlocked": ""
}
},
"hyprland/mode": {
"format": "<span style=\"italic\">{}</span>"
},
"hyprland/scratchpad": {
"format": "{icon} {count}",
"show-empty": false,
"format-icons": ["", ""],
"tooltip": true,
"tooltip-format": "{app}: {title}"
},
"mpd": {
"format": "{stateIcon} {consumeIcon}{randomIcon}{repeatIcon}{singleIcon}{artist} - {album} - {title} ({elapsedTime:%M:%S}/{totalTime:%M:%S}) ⸨{songPosition}|{queueLength}⸩ {volume}% ",
"format-disconnected": "Disconnected ",
"format-stopped": "{consumeIcon}{randomIcon}{repeatIcon}{singleIcon}Stopped ",
"unknown-tag": "N/A",
"interval": 5,
"consume-icons": {
"on": " "
},
"random-icons": {
"off": "<span color=\"#f53c3c\"></span> ",
"on": " "
},
"repeat-icons": {
"on": " "
},
"single-icons": {
"on": "1 "
},
"state-icons": {
"paused": "",
"playing": ""
},
"tooltip-format": "MPD (connected)",
"tooltip-format-disconnected": "MPD (disconnected)"
},
"idle_inhibitor": {
"format": "{icon}",
"format-icons": {
"activated": "",
"deactivated": ""
}
},
"tray": {
// "icon-size": 21,
"spacing": 10//,
// "icons": {
// "blueman": "bluetooth",
// "TelegramDesktop": "$HOME/.local/share/icons/hicolor/16x16/apps/telegram.png"
// }
},
"clock": {
"format": "{:%Y-%m-%d %H:%M}",
"tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>",
"on-click": "~/.config/waybar/scripts/copy-date.sh"
//"format-alt": "{:%Y-%m-%d}"
},
"cpu": {
"interval": 1,
"format": "cpu:{usage:02}%@{avg_frequency:4.2f}MHz",
"tooltip": false
},
"memory": {
"interval": 1,
"format": "mem:{:02}%"
},
"temperature": {
// "thermal-zone": 2,
// "hwmon-path": "/sys/class/hwmon/hwmon2/temp1_input",
"critical-threshold": 80,
// "format-critical": "{temperatureC}°C {icon}",
"format": "{temperatureC}°C {icon}",
"format-icons": ["", "", ""]
},
"backlight": {
// "device": "acpi_video1",
"format": "{percent}% {icon}",
"format-icons": ["", "", "", "", "", "", "", "", ""]
},
"battery": {
"states": {
// "good": 95,
"warning": 30,
"critical": 15
},
"format": "{capacity}% {icon}",
"format-full": "{capacity}% {icon}",
"format-charging": "{capacity}% ",
"format-plugged": "{capacity}% ",
"format-alt": "{time} {icon}",
// "format-good": "", // An empty format will hide the module
// "format-full": "",
"format-icons": ["", "", "", "", ""]
},
"battery#bat2": {
"bat": "BAT2"
},
"power-profiles-daemon": {
"format": "{icon}",
"tooltip-format": "Power profile: {profile}\nDriver: {driver}",
"tooltip": true,
"format-icons": {
"default": "",
"performance": "",
"balanced": "",
"power-saver": ""
}
},
"network": {
// "interface": "wlp2*", // (Optional) To force the use of this interface
"format-wifi": "{essid} ({signalStrength}%) ",
"format-ethernet": "{ipaddr}/{cidr} ",
"tooltip-format": "{ifname} via {gwaddr} ",
"format-linked": "{ifname} (No IP) ",
"format-disconnected": "Disconnected ⚠",
"format-alt": "{ifname}: {ipaddr}/{cidr}"
},
"pulseaudio": {
// "scroll-step": 1, // %, can be a float
"format": "{volume}% {icon} {format_source}",
"format-bluetooth": "{volume}% {icon} {format_source}",
"format-bluetooth-muted": " {icon} {format_source}",
"format-muted": " {format_source}",
"format-source": "{volume}% ",
"format-source-muted": "",
"format-icons": {
"headphone": "",
"hands-free": "",
"headset": "",
"phone": "",
"portable": "",
"car": "",
"default": ["", "", ""]
},
"on-click": "pavucontrol"
},
"custom/media": {
"format": "{icon} {text}",
"return-type": "json",
"max-length": 40,
"format-icons": {
"spotify": "",
"default": "🎜"
},
"escape": true,
"exec": "$HOME/.config/waybar/mediaplayer.py 2> /dev/null" // Script in resources folder
// "exec": "$HOME/.config/waybar/mediaplayer.py --player spotify 2> /dev/null" // Filter player based on name
},
"custom/power": {
"format" : "⏻ ",
"tooltip": false,
"menu": "on-click",
"menu-file": "$HOME/.config/waybar/power_menu.xml", // Menu file in resources folder
"menu-actions": {
"shutdown": "shutdown",
"reboot": "reboot",
"suspend": "systemctl suspend",
"hibernate": "systemctl hibernate"
}
}
}
-1
View File
@@ -1 +0,0 @@
../../../basic/.config/themes/themes/catppuccin-mocha/theme.css
-4
View File
@@ -1,4 +0,0 @@
#!/usr/bin/env bash
DATE=$(date +"%Y-%m-%d_%H%M")
echo -n "$DATE" | wl-copy
notify-send "Date copied" "$DATE"
-23
View File
@@ -1,23 +0,0 @@
#!/bin/bash
# GPU monitoring for waybar (AMD radeontop + sysfs temp)
GPU_DATA=$(timeout 1 radeontop -d - -l 1 2>/dev/null | tail -1)
if [ -z "$GPU_DATA" ]; then
echo "{\"text\": \"gpu:--\", \"tooltip\": \"Reading...\"}"
exit 0
fi
GPU=$(echo "$GPU_DATA" | grep -oP 'gpu \K[0-9.]+' | head -1)
GPU_INT=${GPU%.*}
VRAM=$(echo "$GPU_DATA" | grep -oP 'vram [\d.]+% \K[\d.]+' | head -1)
VRAM_INT=${VRAM%.*}
SCLK=$(echo "$GPU_DATA" | grep -oP 'sclk [\d.]+% \K[\d.]+' | head -1)
MCLK=$(echo "$GPU_DATA" | grep -oP 'mclk [\d.]+% \K[\d.]+' | head -1)
TEMP=$(( $(cat /sys/class/hwmon/hwmon2/temp1_input) / 1000 ))
POWER=$(( $(cat /sys/class/hwmon/hwmon2/power1_average) / 1000 ))
echo "{\"text\": \"gpu:${GPU_INT}% ${VRAM_INT}MB ${TEMP}C\", \"tooltip\": \"GPU: ${GPU}%\\nVRAM: ${VRAM}MB\\nTemp: ${TEMP}C\\nPower: ${POWER}W\\nSCLK: ${SCLK}GHz\\nMCLK: ${MCLK}GHz\"}"
-233
View File
@@ -1,233 +0,0 @@
/* Central theme: roles + palette imported from basic/.config/themes
* (mocha.css is a symlink into the current theme's theme.css).
* This file must use @role/@palette names only — never hardcoded colors —
* so a future theme only swaps the central files. */
@import url("mocha.css");
* {
font-family: "JetBrainsMono Nerd Font", FontAwesome, sans-serif;
font-size: 13px;
}
/* ---------- Waybar Container ---------- */
window#waybar {
background-color: @bg_dim;
color: @fg;
border-bottom: 1px solid @border;
box-shadow: 0 10px 30px rgba(0,0,0,0.30);
transition-property: background-color, opacity;
transition-duration: .5s;
}
window#waybar.hidden {
opacity: 0.35;
}
/* ---------- Buttons / Workspaces ---------- */
button {
box-shadow: inset 0 -2px transparent;
border: none;
border-radius: 0;
}
button:hover {
background: inherit;
box-shadow: inset 0 -2px @accent;
}
#workspaces button {
padding: 0 8px;
margin: 4px 3px;
background-color: @surface;
color: @fg_dim;
border: 1px solid @border;
border-radius: 10px;
}
#workspaces button:hover {
background: @border;
color: @fg;
}
#workspaces button.focused,
#workspaces button.active {
background-color: @accent;
color: @bg_deep;
border: 1px solid @accent;
box-shadow: inset 0 -2px @accent2;
}
#workspaces button.urgent {
background-color: @urgent;
border-color: @urgent;
color: @bg_deep;
}
#window,
#workspaces {
margin: 0 4px;
}
.modules-left > widget:first-child > #workspaces {
margin-left: 0;
}
.modules-right > widget:last-child > #workspaces {
margin-right: 0;
}
/* ---------- Common “Chip” module style ---------- */
#clock,
#battery,
#cpu,
#memory,
#disk,
#temperature,
#backlight,
#network,
#pulseaudio,
#wireplumber,
#custom-media,
#custom-gpu,
#tray,
#mode,
#idle_inhibitor,
#scratchpad,
#power-profiles-daemon,
#mpd,
#language,
#keyboard-state,
#privacy,
#privacy-item {
padding: 0 10px;
color: @fg;
background-color: @surface;
border: 1px solid @border;
border-radius: 10px;
margin: 4px 4px;
}
#pulseaudio:hover,
#wireplumber:hover,
#network:hover,
#clock:hover {
background-color: @border;
}
#clock {
border-color: @accent;
}
/* Battery */
#battery.charging,
#battery.plugged {
background-color: @ok;
border-color: @ok;
color: @bg_deep;
}
@keyframes blink {
to {
background-color: @urgent;
border-color: @urgent;
}
}
#battery.critical:not(.charging) {
background-color: @urgent;
border-color: @urgent;
color: @bg_deep;
animation-name: blink;
animation-duration: 0.6s;
animation-timing-function: steps(10);
animation-iteration-count: infinite;
animation-direction: alternate;
}
/* Network */
#network.disconnected {
background-color: @urgent;
border-color: @urgent;
color: @bg_deep;
}
/* Audio */
#pulseaudio:hover {
background-color: @border;
}
#pulseaudio.muted {
background-color: @surface;
border-color: @border;
color: @fg_muted;
}
#wireplumber.muted {
background-color: @urgent;
border-color: @urgent;
color: @bg_deep;
}
/* Temperature */
#temperature.critical {
background-color: @urgent;
border-color: @urgent;
color: @bg_deep;
}
/* Tray */
#tray > .passive {
-gtk-icon-effect: dim;
}
#tray > .needs-attention {
-gtk-icon-effect: highlight;
background-color: @urgent;
border-radius: 10px;
}
/* Idle inhibitor */
#idle_inhibitor.activated {
background-color: @accent;
border-color: @accent;
color: @bg_deep;
}
/* Scratchpad */
#scratchpad {
background: @surface;
}
#scratchpad.empty {
background-color: transparent;
border-color: transparent;
}
/* Privacy */
#privacy {
padding: 0;
background-color: transparent;
border-color: transparent;
}
#privacy-item {
padding: 0 6px;
color: @fg;
}
#privacy-item.screenshare {
background-color: @warn;
border-color: @warn;
color: @bg_deep;
}
#privacy-item.audio-in {
background-color: @ok;
border-color: @ok;
color: @bg_deep;
}
#privacy-item.audio-out {
background-color: @accent;
border-color: @accent;
color: @bg_deep;
}
-28
View File
@@ -1,28 +0,0 @@
/* Central theme: roles imported from basic/.config/themes.
* NOTE: waypaper loads this file via Gtk.CssProvider.load_from_data, so a
* relative @import would resolve against the process working directory and
* NOT against this file's location. The import MUST stay an absolute path.
* This file must use @role names only — never hardcoded colors.
* Makes the currently selected wallpaper unmissable: thick accent border
* (same role as the Hyprland active border) + tinted fill + outer glow.
* Selector `.highlighted-button` is the official waypaper hook
* (see waypaper docs: "Custom styles and colors"). */
@import url("$HOME/.config/themes/current/theme.css");
.highlighted-button {
background-image: none;
box-shadow: none;
background-color: alpha(@accent, 0.25);
border: 3px solid @accent;
border-radius: 8px;
box-shadow: 0 0 0 2px alpha(@accent, 0.6), 0 0 14px alpha(@accent, 0.9);
}
.highlighted-button > image,
.highlighted-button:hover > image {
-gtk-icon-effect: highlight;
}
button:hover {
border-color: @accent;
}
-1
View File
@@ -1 +0,0 @@
../../../basic/.config/themes/themes/catppuccin-mocha/theme.css
-69
View File
@@ -1,69 +0,0 @@
/* Central theme: roles + palette imported from basic/.config/themes
* (mocha.css is a symlink into the current theme's theme.css, so this
* resolves identically in the repo and once stowed — unlike a
* ../themes/... relative hop, which differs between the two).
* This file styles every wofi popup: SUPER+SPACE app launcher (drun) and
* SUPER+K keybind help (dmenu). Use @role/@palette names only. */
@import url("mocha.css");
window {
margin: 0px;
background-color: @bg_translucent;
border: 2px solid @accent;
border-radius: 12px;
}
#input {
margin: 8px;
padding: 6px 10px;
background-color: @surface;
color: @fg;
border: 1px solid @border;
border-radius: 8px;
}
#input:focus {
border-color: @accent;
}
#inner-box {
margin: 8px;
background-color: transparent;
}
#outer-box {
margin: 0px;
padding: 4px;
background-color: transparent;
}
#scroll {
margin: 0px;
background-color: transparent;
}
#entry {
padding: 6px 10px;
margin: 2px 0px;
background-color: transparent;
color: @fg;
border-radius: 8px;
}
#entry:selected {
background-color: @accent;
}
#entry:selected #text {
color: @bg_deep;
}
#text {
margin: 2px 6px;
color: @fg;
}
#img {
margin-right: 8px;
background-color: transparent;
}
+5 -15
View File
@@ -1,8 +1,10 @@
# ---------------------------------------------------------------------------
# Hyprland compositor package list for hypr/setup.sh
#
# Wayland compositor, its ecosystem tools (lockscreen, idle, wallpaper,
# notification center, screenshot, launcher) and supporting utilities.
# Wayland compositor, screenshot tool and supporting utilities. The desktop
# shell (bar, launcher, notifications, lock screen, wallpaper, idle, session
# menu) is Noctalia (`sudo pacman -S noctalia`), not a set of standalone
# ecosystem tools.
# `hyprltm` (network manager) is installed via a post-install hook in
# setup.sh since it is not available as a standard pacman/aur package.
#
@@ -13,22 +15,10 @@
@pacman
hyprland
hyprlauncher
xdg-desktop-portal-hyprland
hyprpolkitagent
pantheon-shortcut-overlay
waybar
hyprpaper
wev
hyprlock
hypridle
nwg-drawer
wl-clipboard
swaync
hyprshot
rofi
hyprshutdown
wofi
@aur
waypaper
brightnessctl
-3
View File
@@ -157,7 +157,6 @@ files = [
{ name = "dockerfile", text = "󰡨", fg = "#89b4fa" },
{ name = ".git-blame-ignore-revs", text = "", fg = "#fab387" },
{ name = ".nvmrc", text = "", fg = "#a6e3a1" },
{ name = "hyprpaper.conf", text = "", fg = "#74c7ec" },
{ name = ".prettierignore", text = "", fg = "#89b4fa" },
{ name = "rakefile", text = "", fg = "#313244" },
{ name = "code_of_conduct", text = "", fg = "#f38ba8" },
@@ -284,9 +283,7 @@ files = [
{ name = "commitlint.config.js", text = "󰜘", fg = "#94e2d5" },
{ name = ".gitmodules", text = "", fg = "#fab387" },
{ name = "gradle-wrapper.properties", text = "", fg = "#585b70" },
{ name = "hypridle.conf", text = "", fg = "#74c7ec" },
{ name = "vercel.json", text = "▲", fg = "#f5e0dc" },
{ name = "hyprlock.conf", text = "", fg = "#74c7ec" },
{ name = "go.sum", text = "", fg = "#74c7ec" },
{ name = "kdenlive-layoutsrc", text = "", fg = "#89b4fa" },
{ name = "gruntfile.babel.js", text = "", fg = "#fab387" },
+1 -7
View File
@@ -56,15 +56,9 @@ declare -A BINS=(
[locate]="locate --version"
# Hyprland compositor & ecosystem
[hyprland]="hyprctl version"
[waybar]="waybar --version"
[hyprlock]="hyprlock --version"
[hypridle]="hypridle --version"
[hyprpaper]="hyprpaper -v"
[rofi]="rofi -v"
[swaync]="swaync --version"
[nwg-drawer]="nwg-drawer --version"
[wl-clipboard]="wl-copy --version"
[hyprshot]="hyprshot --version"
[brightnessctl]="brightnessctl --version"
[wpaperd]="wpaperd --version"
)