use Noctalia instead of various components
This commit is contained in:
@@ -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
|
||||
}
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
}
|
||||
@@ -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[@]}"
|
||||
@@ -14,3 +14,4 @@ italic_font auto
|
||||
bold_italic_font auto
|
||||
font_size 10.0
|
||||
|
||||
include themes/noctalia.conf
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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 +0,0 @@
|
||||
../../../basic/.config/themes/themes/catppuccin-mocha/theme.css
|
||||
@@ -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"
|
||||
@@ -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\"}"
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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 +0,0 @@
|
||||
../../../basic/.config/themes/themes/catppuccin-mocha/theme.css
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user