Added and tested script to prepare henrovnix_ok for publishing
@@ -1,19 +1,19 @@
|
|||||||
##############################################
|
##############################################
|
||||||
# These files are just for reference.
|
# These files are just for reference.
|
||||||
# If you want to change anything, edit the source files in:
|
# If you want to change anything, edit the source files in:
|
||||||
# ~/<defaultUser>nix/assets/conf
|
# ~/YOUR_USERnix/assets/conf
|
||||||
#
|
#
|
||||||
# After that, run:
|
# After that, run:
|
||||||
# cd ~/<defaultUser>nix && emacs README.org --batch -f org-babel-tangle && git add . && git commit -m "Adjusted conf files" && sudo nixos-rebuild switch --flake .#<yourhost>
|
# cd ~/YOUR_USERnix && emacs README.org --batch -f org-babel-tangle && git add . && git commit -m "Adjusted conf files" && sudo nixos-rebuild switch --flake .#<yourhost>
|
||||||
#
|
#
|
||||||
# If everything still works, you can use the same command but:
|
# If everything still works, you can use the same command but:
|
||||||
# - keep "switch"
|
# - keep "switch"
|
||||||
# - and add a reboot:
|
# - and add a reboot:
|
||||||
#
|
#
|
||||||
# cd ~/<defaultUser>nix && sudo nixos-rebuild switch --flake .#<yourhost> && systemctl reboot
|
# cd ~/YOUR_USERnix && sudo nixos-rebuild switch --flake .#<yourhost> && systemctl reboot
|
||||||
#
|
#
|
||||||
# NOTE:
|
# NOTE:
|
||||||
# Make sure the lines starting with: cd ~/<defaultUser>nix
|
# Make sure the lines starting with: cd ~/YOUR_USERnix
|
||||||
# are written as ONE single line.
|
# are written as ONE single line.
|
||||||
##############################################
|
##############################################
|
||||||
#app.zen_browser.zen
|
#app.zen_browser.zen
|
||||||
@@ -1,18 +1,18 @@
|
|||||||
##############################################
|
##############################################
|
||||||
# These files are just for reference.
|
# These files are just for reference.
|
||||||
# If you want to change anything, edit the source files in:
|
# If you want to change anything, edit the source files in:
|
||||||
# ~/henrovnix/assets/conf
|
# ~/YOUR_USERnix/assets/conf
|
||||||
#
|
#
|
||||||
# After that, run:
|
# After that, run:
|
||||||
# cd ~/henrovnix && emacs README.org --batch -f org-babel-tangle && git add . && git commit -m "Adjusted conf files" && sudo nixos-rebuild switch --flake .#<yourhost>
|
# cd ~/YOUR_USERnix && emacs README.org --batch -f org-babel-tangle && git add . && git commit -m "Adjusted conf files" && sudo nixos-rebuild switch --flake .#<yourhost>
|
||||||
#
|
#
|
||||||
# If everything still works, you can use the same command but:
|
# If everything still works, you can use the same command but:
|
||||||
# - keep "switch"
|
# - keep "switch"
|
||||||
# - and add a reboot:
|
# - and add a reboot:
|
||||||
#
|
#
|
||||||
# cd ~/henrovnix && sudo nixos-rebuild switch --flake .#<yourhost> && systemctl reboot
|
# cd ~/YOUR_USERnix && sudo nixos-rebuild switch --flake .#<yourhost> && systemctl reboot
|
||||||
#
|
#
|
||||||
# Make sure the lines starting with: cd ~/henrovnix
|
# Make sure the lines starting with: cd ~/YOUR_USERnix
|
||||||
# are written as ONE single line.
|
# are written as ONE single line.
|
||||||
#
|
#
|
||||||
#IMPORTANT:
|
#IMPORTANT:
|
||||||
@@ -28,9 +28,8 @@ wofi
|
|||||||
xdg-utils
|
xdg-utils
|
||||||
desktop-file-utils
|
desktop-file-utils
|
||||||
playerctl
|
playerctl
|
||||||
rofi
|
|
||||||
simple-scan
|
|
||||||
mpv
|
mpv
|
||||||
|
networkmanagerapplet
|
||||||
|
|
||||||
#productivity
|
#productivity
|
||||||
todoist
|
todoist
|
||||||
@@ -1,19 +1,19 @@
|
|||||||
##############################################
|
##############################################
|
||||||
# These files are just for reference.
|
# These files are just for reference.
|
||||||
# If you want to change anything, edit the source files in:
|
# If you want to change anything, edit the source files in:
|
||||||
# ~/<defaultUser>nix/assets/conf
|
# ~/YOUR_USERnix/assets/conf
|
||||||
#
|
#
|
||||||
# After that, run:
|
# After that, run:
|
||||||
# cd ~/<defaultUser>nix && emacs README.org --batch -f org-babel-tangle && git add . && git commit -m "Adjusted conf files" && sudo nixos-rebuild switch --flake .#<yourhost>
|
# cd ~/YOUR_USERnix && emacs README.org --batch -f org-babel-tangle && git add . && git commit -m "Adjusted conf files" && sudo nixos-rebuild switch --flake .#<yourhost>
|
||||||
#
|
#
|
||||||
# If everything still works, you can use the same command but:
|
# If everything still works, you can use the same command but:
|
||||||
# - keep "switch"
|
# - keep "switch"
|
||||||
# - and add a reboot:
|
# - and add a reboot:
|
||||||
#
|
#
|
||||||
# cd ~/<defaultUser>nix && sudo nixos-rebuild switch --flake .#<yourhost> && systemctl reboot
|
# cd ~/YOUR_USERnix && sudo nixos-rebuild switch --flake .#<yourhost> && systemctl reboot
|
||||||
#
|
#
|
||||||
# NOTE:
|
# NOTE:
|
||||||
# Make sure the lines starting with: cd ~/<defaultUser>nix
|
# Make sure the lines starting with: cd ~/YOUR_USERnix
|
||||||
# are written as ONE single line.
|
# are written as ONE single line.
|
||||||
##############################################
|
##############################################
|
||||||
# Minimal Hyprland config for greetd
|
# Minimal Hyprland config for greetd
|
||||||
@@ -1,19 +1,19 @@
|
|||||||
##############################################
|
##############################################
|
||||||
# These files are just for reference.
|
# These files are just for reference.
|
||||||
# If you want to change anything, edit the source files in:
|
# If you want to change anything, edit the source files in:
|
||||||
# ~/<defaultUser>nix/assets/conf
|
# ~/YOUR_USERnix/assets/conf
|
||||||
#
|
#
|
||||||
# Temporarily(!) testing can by editing this file, edit the file and reloading hyprshell
|
# Temporarily(!) testing can by editing this file, edit the file and reloading hyprshell
|
||||||
# After that, run:
|
# After that, run:
|
||||||
# cd ~/<defaultUser>nix && emacs README.org --batch -f org-babel-tangle && git add . && git commit -m "Adjusted conf files" && sudo nixos-rebuild switch --flake .#<yourhost>
|
# cd ~/YOUR_USERnix && emacs README.org --batch -f org-babel-tangle && git add . && git commit -m "Adjusted conf files" && sudo nixos-rebuild switch --flake .#<yourhost>
|
||||||
#
|
#
|
||||||
# If everything still works, you can use the same command but:
|
# If everything still works, you can use the same command but:
|
||||||
# - keep "switch"
|
# - keep "switch"
|
||||||
# - and add a reboot:
|
# - and add a reboot:
|
||||||
#
|
#
|
||||||
# cd ~/<defaultUser>nix && sudo nixos-rebuild switch --flake .#<yourhost> && systemctl reboot
|
# cd ~/YOUR_USERnix && sudo nixos-rebuild switch --flake .#<yourhost> && systemctl reboot
|
||||||
#
|
#
|
||||||
# Make sure the lines starting with: cd ~/<defaultUser>nix
|
# Make sure the lines starting with: cd ~/YOUR_USERnix
|
||||||
# are written as ONE single line.
|
# are written as ONE single line.
|
||||||
###############################################
|
###############################################
|
||||||
|
|
||||||
@@ -43,13 +43,20 @@ bind = $mainMod, Q, killactive,
|
|||||||
bind = $mainMod SHIFT, Q, exit,
|
bind = $mainMod SHIFT, Q, exit,
|
||||||
bind = $mainMod SHIFT, R, exec, hyprctl reload
|
bind = $mainMod SHIFT, R, exec, hyprctl reload
|
||||||
|
|
||||||
# Default browser
|
|
||||||
bind = $mainMod, W, exec, flatpak run app.zen_browser.zen
|
|
||||||
|
|
||||||
# Switch windows
|
# Switch windows
|
||||||
bind = $mainMod, TAB, hyprexpo:expo, toggle
|
bind = $mainMod, TAB, hyprexpo:expo, toggle
|
||||||
bind = ALT, TAB, cyclenext
|
bind = ALT, TAB, cyclenext,
|
||||||
bind = ALT SHIFT, TAB, cyclenext , prev
|
# bind = ALT SHIFT, TAB, cyclenext prev
|
||||||
|
|
||||||
|
# Hyprscrolling
|
||||||
|
bind = $mainMod, period, layoutmsg, move +col
|
||||||
|
bind = $mainMod, comma, layoutmsg, swapcol l
|
||||||
|
# Make / break a tab-group (stack)
|
||||||
|
bind = $mainMod, S, togglegroup
|
||||||
|
# Cycle tabs in the group
|
||||||
|
bind = $mainMod, L, changegroupactive, f
|
||||||
|
bind = $mainMod, H, changegroupactive, b
|
||||||
|
bind = $mainMod, T, exec, ~/.config/hypr/scripts/toggle-layout-scrolling-dwindle.sh
|
||||||
|
|
||||||
# Focus movement
|
# Focus movement
|
||||||
bind = $mainMod, H, movefocus, l
|
bind = $mainMod, H, movefocus, l
|
||||||
@@ -61,7 +68,7 @@ bind = $mainMod, right, movefocus, r
|
|||||||
bind = $mainMod, up, movefocus, u
|
bind = $mainMod, up, movefocus, u
|
||||||
bind = $mainMod, down, movefocus, d
|
bind = $mainMod, down, movefocus, d
|
||||||
|
|
||||||
# # Move windows
|
# Move windows
|
||||||
bind = $mainMod SHIFT, H, movewindow, l
|
bind = $mainMod SHIFT, H, movewindow, l
|
||||||
bind = $mainMod SHIFT, L, movewindow, r
|
bind = $mainMod SHIFT, L, movewindow, r
|
||||||
bind = $mainMod SHIFT, K, movewindow, u
|
bind = $mainMod SHIFT, K, movewindow, u
|
||||||
@@ -151,6 +158,7 @@ bind = , XF86Sleep, exec, systemctl suspend
|
|||||||
bind = , XF86PowerOff, exec, systemctl poweroff
|
bind = , XF86PowerOff, exec, systemctl poweroff
|
||||||
bind = , XF86WakeUp, exec, systemctl suspend
|
bind = , XF86WakeUp, exec, systemctl suspend
|
||||||
bind = $mainMod, L, exec, loginctl lock-session
|
bind = $mainMod, L, exec, loginctl lock-session
|
||||||
|
bind = $mainMod, X, exec, ~/.config/hypr/scripts/powermenu.sh
|
||||||
|
|
||||||
#########################
|
#########################
|
||||||
# Laptop lid settings
|
# Laptop lid settings
|
||||||
@@ -163,6 +171,5 @@ bindl = , switch:off:Lid Switch, exec, ~/.config/hypr/scripts/lid-restore.sh
|
|||||||
#########################
|
#########################
|
||||||
bind = CTRL ALT, B, exec, flatpak run eu.betterbird.Betterbird
|
bind = CTRL ALT, B, exec, flatpak run eu.betterbird.Betterbird
|
||||||
bind = CTRL ALT, S, exec, spotify
|
bind = CTRL ALT, S, exec, spotify
|
||||||
bind = CTRL ALT, z, exec, run zen
|
bind = CTRL ALT, z, exec, zeditor
|
||||||
bind = CTRL ALT, k, exec, kate
|
bind = $mainMod, W, exec, zen --url https://nextcloud.data-pro.nu
|
||||||
bind = $mainMod, w, exec, xdg-open https://nextcloud.data-pro.nu
|
|
||||||
@@ -1,20 +1,20 @@
|
|||||||
##############################################
|
##############################################
|
||||||
# These files are just for reference.
|
# These files are just for reference.
|
||||||
# If you want to change anything definitive, edit the source files in:
|
# If you want to change anything definitive, edit the source files in:
|
||||||
# ~/<defaultUser>nix/assets/conf
|
# ~/YOUR_USERnix/assets/conf
|
||||||
# Temporarily(!) testing can by editing this file, edit the file and reloading hyprshell
|
# Temporarily(!) testing can by editing this file, edit the file and reloading hyprshell
|
||||||
#
|
#
|
||||||
# After that, run:
|
# After that, run:
|
||||||
# cd ~/<defaultUser>nix && emacs README.org --batch -f org-babel-tangle && git add . && git commit -m "Adjusted conf files" && sudo nixos-rebuild switch --flake .#<yourhost>
|
# cd ~/YOUR_USERnix && emacs README.org --batch -f org-babel-tangle && git add . && git commit -m "Adjusted conf files" && sudo nixos-rebuild switch --flake .#<yourhost>
|
||||||
#
|
#
|
||||||
# If everything still works, you can use the same command but:
|
# If everything still works, you can use the same command but:
|
||||||
# - keep "switch"
|
# - keep "switch"
|
||||||
# - and add a reboot:
|
# - and add a reboot:
|
||||||
#
|
#
|
||||||
# cd ~/<defaultUser>nix && sudo nixos-rebuild switch --flake .#<yourhost> && systemctl reboot
|
# cd ~/YOUR_USERnix && sudo nixos-rebuild switch --flake .#<yourhost> && systemctl reboot
|
||||||
#
|
#
|
||||||
# NOTE:
|
# NOTE:
|
||||||
# Make sure the lines starting with: cd ~/<defaultUser>nix
|
# Make sure the lines starting with: cd ~/YOUR_USERnix
|
||||||
# are written as ONE single line.
|
# are written as ONE single line.
|
||||||
###############################################
|
###############################################
|
||||||
|
|
||||||
@@ -33,6 +33,14 @@ $green = rgba(00ff99ee)
|
|||||||
exec-once = dbus-update-activation-environment --systemd --all
|
exec-once = dbus-update-activation-environment --systemd --all
|
||||||
exec-once = uwsm app -- waybar
|
exec-once = uwsm app -- waybar
|
||||||
|
|
||||||
|
# put these at top-level (recommended), not inside general { }:
|
||||||
|
layerrule = blur on, ignore_alpha 1, match:namespace waybar
|
||||||
|
layerrule = xray 1, match:namespace waybar
|
||||||
|
layerrule = blur on, ignore_alpha 1, match:namespace walker
|
||||||
|
layerrule = xray 1, match:namespace walker
|
||||||
|
layerrule = blur on, ignore_alpha 1, match:namespace swaync-control-center
|
||||||
|
layerrule = blur on, ignore_alpha 1, match:namespace swaync-notification-window
|
||||||
|
|
||||||
input {
|
input {
|
||||||
follow_mouse = 1
|
follow_mouse = 1
|
||||||
kb_layout = us
|
kb_layout = us
|
||||||
@@ -55,12 +63,18 @@ general {
|
|||||||
# Gradient syntax: color color angle (e.g. 45deg). :contentReference[oaicite:5]{index=5}
|
# Gradient syntax: color color angle (e.g. 45deg). :contentReference[oaicite:5]{index=5}
|
||||||
col.active_border = $blue $green 45deg
|
col.active_border = $blue $green 45deg
|
||||||
col.inactive_border = $inactive
|
col.inactive_border = $inactive
|
||||||
layout = dwindle
|
layout = scrolling
|
||||||
resize_on_border = true
|
resize_on_border = true
|
||||||
extend_border_grab_area = 20 # Makes it easier to "grab" the edge
|
extend_border_grab_area = 20 # Makes it easier to "grab" the edge
|
||||||
}
|
}
|
||||||
decoration {
|
decoration {
|
||||||
rounding = 5
|
rounding = 5
|
||||||
|
blur {
|
||||||
|
enabled = yes
|
||||||
|
size = 8
|
||||||
|
passes = 3
|
||||||
|
new_optimizations = on
|
||||||
|
}
|
||||||
}
|
}
|
||||||
animations {
|
animations {
|
||||||
enabled = yes
|
enabled = yes
|
||||||
@@ -89,3 +103,4 @@ bindl = , switch:on:Lid Switch, exec, ~/.config/hypr/scripts/lid-lock.sh
|
|||||||
bindl = , switch:off:Lid Switch, exec, hyprctl dispatch dpms on
|
bindl = , switch:off:Lid Switch, exec, hyprctl dispatch dpms on
|
||||||
|
|
||||||
exec-once = systemd-run --user --scope --unit=elephant elephant
|
exec-once = systemd-run --user --scope --unit=elephant elephant
|
||||||
|
exec-once = ~/.config/hypr/scripts/hyprscrolling-listener.sh
|
||||||
@@ -0,0 +1,62 @@
|
|||||||
|
# --------------------------------------------------
|
||||||
|
# Scrolling layout (Hyprland) – clean, valid config
|
||||||
|
# Managed in repo: assets/conf/desktop/hypr/hyprscrolling.conf
|
||||||
|
#
|
||||||
|
# IMPORTANT:
|
||||||
|
# - "indicators" / "indicator_*" options do NOT exist in the official hyprscrolling plugin
|
||||||
|
# and are not part of the Hyprland scrolling layout config, so they were removed.
|
||||||
|
# - If you still load the hyprscrolling plugin (.so) via Nix, that's fine, but the
|
||||||
|
# behavior is controlled by the "scrolling { }" block below.
|
||||||
|
# --------------------------------------------------
|
||||||
|
|
||||||
|
# If your Nix module already loads the plugin, you can omit this line.
|
||||||
|
# If you keep it, it won't hurt as long as the path exists.
|
||||||
|
plugin = /etc/hypr/plugins/libhyprscrolling.so
|
||||||
|
|
||||||
|
# Make scrolling the default layout
|
||||||
|
general {
|
||||||
|
layout = scrolling
|
||||||
|
}
|
||||||
|
|
||||||
|
# --------------------------------------------------
|
||||||
|
# Scrolling layout configuration (documented on the Hyprland wiki)
|
||||||
|
# --------------------------------------------------
|
||||||
|
|
||||||
|
plugin {
|
||||||
|
hyprscrolling {
|
||||||
|
column_width = 0.5
|
||||||
|
fullscreen_on_one_column = true
|
||||||
|
|
||||||
|
# 0 = center, 1 = fit (per docs/snippets)
|
||||||
|
focus_fit_method = 1
|
||||||
|
|
||||||
|
follow_focus = true
|
||||||
|
follow_min_visible = 0.4
|
||||||
|
|
||||||
|
# optional
|
||||||
|
# explicit_column_widths = 0.333, 0.5, 0.667, 1.0
|
||||||
|
|
||||||
|
direction = right
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# --------------------------------------------------
|
||||||
|
# Keybinds (layoutmsg) – these are the commands scrolling uses
|
||||||
|
# Put these here ONLY if this file is included into your main binds config.
|
||||||
|
# --------------------------------------------------
|
||||||
|
|
||||||
|
# Move focus/viewport by column
|
||||||
|
# bind = $mainMod, period, layoutmsg, move +col
|
||||||
|
|
||||||
|
# Put the current window into its own new column
|
||||||
|
# bind = $mainMod, P, layoutmsg, promote
|
||||||
|
|
||||||
|
# Swap whole columns left/right
|
||||||
|
# bind = $mainMod, H, layoutmsg, swapcol l
|
||||||
|
# bind = $mainMod, L, layoutmsg, swapcol r
|
||||||
|
|
||||||
|
# Resize column: set an absolute width, or cycle configured widths
|
||||||
|
# bind = $mainMod, 1, layoutmsg, colresize 0.5
|
||||||
|
# bind = $mainMod, 2, layoutmsg, colresize 0.667
|
||||||
|
# bind = $mainMod, 3, layoutmsg, colresize 1.0
|
||||||
|
# bind = $mainMod, 0, layoutmsg, colresize +conf
|
||||||
@@ -0,0 +1,133 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
# Usage:
|
||||||
|
# Waybar exec: hyprscroll-overflow.sh
|
||||||
|
# Waybar on-click: hyprscroll-overflow.sh --pick
|
||||||
|
#
|
||||||
|
# Env:
|
||||||
|
# COLUMN_WIDTH=0.5
|
||||||
|
# ICON=""
|
||||||
|
# DMENU_CMD="walker --dmenu" (or: "wofi --dmenu", "rofi -dmenu", etc.)
|
||||||
|
|
||||||
|
COLUMN_WIDTH="${COLUMN_WIDTH:-0.5}"
|
||||||
|
ICON="${ICON:-}"
|
||||||
|
DMENU_CMD="${DMENU_CMD:-walker --dmenu}"
|
||||||
|
|
||||||
|
json_escape() {
|
||||||
|
# minimal JSON string escape (quotes, backslashes, newlines, tabs, CR)
|
||||||
|
local s="${1:-}"
|
||||||
|
s="${s//\\/\\\\}"
|
||||||
|
s="${s//\"/\\\"}"
|
||||||
|
s="${s//$'\n'/\\n}"
|
||||||
|
s="${s//$'\r'/\\r}"
|
||||||
|
s="${s//$'\t'/\\t}"
|
||||||
|
printf '%s' "$s"
|
||||||
|
}
|
||||||
|
|
||||||
|
fail_json() {
|
||||||
|
# NOTE: errors SHOULD still show (so you notice), hence JSON output here.
|
||||||
|
local msg="hyprscroll-overflow: ${1:-unknown error}"
|
||||||
|
printf '{"text":"%s !","tooltip":"%s","class":"error"}\n' \
|
||||||
|
"$(json_escape "$ICON")" "$(json_escape "$msg")"
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
|
||||||
|
need() { command -v "$1" >/dev/null 2>&1 || fail_json "$1 not in PATH"; }
|
||||||
|
need hyprctl
|
||||||
|
need jq
|
||||||
|
need awk
|
||||||
|
|
||||||
|
read -r focused_mon_id focused_ws_id < <(
|
||||||
|
hyprctl -j monitors 2>/dev/null | jq -r '
|
||||||
|
.[] | select(.focused==true) | "\(.id) \(.activeWorkspace.id)"
|
||||||
|
'
|
||||||
|
) || fail_json "failed to read focused monitor/workspace"
|
||||||
|
|
||||||
|
[[ -n "${focused_mon_id:-}" && -n "${focused_ws_id:-}" ]] || fail_json "no focused monitor/workspace"
|
||||||
|
|
||||||
|
# Current layout (needed for both normal + --pick paths)
|
||||||
|
layout="$(hyprctl getoption general:layout 2>/dev/null | awk '/str:/ {print $2; exit}' || true)"
|
||||||
|
layout="${layout:-}"
|
||||||
|
|
||||||
|
# Collect windows (current ws + current monitor, mapped only)
|
||||||
|
clients_json="$(hyprctl -j clients 2>/dev/null)" || fail_json "failed to read clients"
|
||||||
|
|
||||||
|
# Click action: pick a window and focus it
|
||||||
|
if [[ "${1:-}" == "--pick" ]]; then
|
||||||
|
# Build menu lines: address at end so we can parse it back reliably.
|
||||||
|
menu="$(
|
||||||
|
jq -r --argjson ws "$focused_ws_id" --argjson mid "$focused_mon_id" '
|
||||||
|
[ .[]
|
||||||
|
| select(.mapped == true)
|
||||||
|
| select(.workspace.id == $ws)
|
||||||
|
| select(.monitor == $mid)
|
||||||
|
| {address, class, title}
|
||||||
|
]
|
||||||
|
| map("[\(.class)] \(.title) \(.address)")
|
||||||
|
| .[]
|
||||||
|
' <<<"$clients_json"
|
||||||
|
)" || exit 0
|
||||||
|
|
||||||
|
[[ -n "${menu:-}" ]] || exit 0
|
||||||
|
|
||||||
|
# shellcheck disable=SC2086
|
||||||
|
choice="$(printf '%s\n' "$menu" | eval "$DMENU_CMD" || true)"
|
||||||
|
[[ -n "${choice:-}" ]] || exit 0
|
||||||
|
|
||||||
|
addr="$(awk '{print $NF}' <<<"$choice")"
|
||||||
|
[[ "$addr" =~ ^0x[0-9a-fA-F]+$ ]] || exit 0
|
||||||
|
|
||||||
|
hyprctl dispatch focuswindow "address:${addr}" >/dev/null 2>&1 || exit 0
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Tooltip list (multiline)
|
||||||
|
# Include a stable selector: address (hex), plus class + title for humans.
|
||||||
|
tooltip_list="$(
|
||||||
|
jq -r --argjson ws "$focused_ws_id" --argjson mid "$focused_mon_id" '
|
||||||
|
[ .[]
|
||||||
|
| select(.mapped == true)
|
||||||
|
| select(.workspace.id == $ws)
|
||||||
|
| select(.monitor == $mid)
|
||||||
|
| {address, class, title}
|
||||||
|
]
|
||||||
|
| to_entries
|
||||||
|
| map("\(.key+1). [\(.value.class)] \(.value.title) (\(.value.address))")
|
||||||
|
| .[]
|
||||||
|
' <<<"$clients_json"
|
||||||
|
)" || fail_json "failed to build tooltip list"
|
||||||
|
|
||||||
|
win_count="$(
|
||||||
|
jq -r --argjson ws "$focused_ws_id" --argjson mid "$focused_mon_id" '
|
||||||
|
[ .[]
|
||||||
|
| select(.mapped == true)
|
||||||
|
| select(.workspace.id == $ws)
|
||||||
|
| select(.monitor == $mid)
|
||||||
|
] | length
|
||||||
|
' <<<"$clients_json"
|
||||||
|
)" || fail_json "failed to count clients"
|
||||||
|
|
||||||
|
max_visible="$(awk -v w="$COLUMN_WIDTH" 'BEGIN{ if (w<=0) {print 1} else {print int(1.0/w)} }')" \
|
||||||
|
|| fail_json "awk failed"
|
||||||
|
(( max_visible < 1 )) && max_visible=1
|
||||||
|
|
||||||
|
overflow=$(( win_count - max_visible ))
|
||||||
|
|
||||||
|
# IMPORTANT: hide module by outputting NOTHING (no JSON) when not relevant
|
||||||
|
if (( overflow <= 0 )) || [[ "$layout" != "scrolling" ]]; then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
text="$ICON +$overflow"
|
||||||
|
cls="overflow"
|
||||||
|
|
||||||
|
tooltip="WS ${focused_ws_id} • ${win_count} window(s)\n"
|
||||||
|
tooltip+="Approx ${max_visible} fit (column_width=${COLUMN_WIDTH})\n"
|
||||||
|
tooltip+="------------------------------\n"
|
||||||
|
tooltip+="${tooltip_list:-"(no windows)"}"
|
||||||
|
|
||||||
|
printf '{"text":"%s","tooltip":"%s","class":"%s"}\n' \
|
||||||
|
"$(json_escape "$text")" \
|
||||||
|
"$(json_escape "$tooltip")" \
|
||||||
|
"$(json_escape "$cls")"
|
||||||
@@ -0,0 +1,92 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
# hyprscrolling-per-monitor.sh
|
||||||
|
# Usage:
|
||||||
|
# ./hyprscrolling-per-monitor.sh <MONITOR_NAME>
|
||||||
|
#
|
||||||
|
# Example:
|
||||||
|
# ./hyprscrolling-per-monitor.sh DP-1
|
||||||
|
#
|
||||||
|
# This script reads the current resolution for the given monitor via hyprctl
|
||||||
|
# and sets hyprscrolling column width accordingly.
|
||||||
|
|
||||||
|
if [[ $# -lt 1 ]]; then
|
||||||
|
echo "Usage: $0 <MONITOR_NAME>"
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
|
||||||
|
MONITOR="$1"
|
||||||
|
|
||||||
|
# Map a resolution (WIDTHxHEIGHT) to a column width value for hyprscrolling.
|
||||||
|
# Tune these values to taste.
|
||||||
|
columnwidth_for_resolution() {
|
||||||
|
local res="$1"
|
||||||
|
case "$res" in
|
||||||
|
# --- Ultra-wide / super-wide ---
|
||||||
|
5120x1440) echo "0.22" ;; # 49" 32:9
|
||||||
|
3840x1080) echo "0.25" ;; # 49" 32:9 (your ultrawide)
|
||||||
|
3440x1440) echo "0.33" ;; # 34" 21:9
|
||||||
|
2560x1080) echo "0.40" ;; # 21:9 budget ultrawide
|
||||||
|
|
||||||
|
# --- QHD / high DPI ---
|
||||||
|
3840x2160) echo "0.40" ;; # 4K
|
||||||
|
3200x1800) echo "0.50" ;;
|
||||||
|
2880x1800) echo "0.50" ;;
|
||||||
|
2560x1600) echo "0.55" ;; # 16:10
|
||||||
|
2560x1440) echo "0.55" ;; # QHD
|
||||||
|
|
||||||
|
# --- FHD / laptop-ish ---
|
||||||
|
1920x1200) echo "0.55" ;; # 16:10
|
||||||
|
1920x1080) echo "0.50" ;; # FHD (your laptop request)
|
||||||
|
|
||||||
|
# --- HD / smaller ---
|
||||||
|
1680x1050) echo "0.65" ;;
|
||||||
|
1600x900) echo "0.70" ;;
|
||||||
|
1366x768) echo "0.80" ;;
|
||||||
|
1280x720) echo "0.85" ;;
|
||||||
|
|
||||||
|
# Unknown / fallback
|
||||||
|
*) echo "" ;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
# Get resolution for a named monitor from hyprctl.
|
||||||
|
# Output format should be WIDTHxHEIGHT (e.g. 3840x1080).
|
||||||
|
get_monitor_resolution() {
|
||||||
|
local mon="$1"
|
||||||
|
|
||||||
|
# hyprctl monitors prints lines like:
|
||||||
|
# Monitor DP-1 (ID 0): 3840x1080@119.88 at 0x0 ...
|
||||||
|
# We'll extract the first WIDTHxHEIGHT after the colon.
|
||||||
|
local line
|
||||||
|
if ! line="$(hyprctl monitors 2>/dev/null | grep -F "Monitor ${mon} " -m1 || true)"; then
|
||||||
|
echo ""
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Extract token like 3840x1080@... then strip @...
|
||||||
|
local token
|
||||||
|
token="$(awk -F': ' '{print $2}' <<<"$line" | awk '{print $1}' | cut -d'@' -f1 || true)"
|
||||||
|
echo "$token"
|
||||||
|
}
|
||||||
|
|
||||||
|
resolution="$(get_monitor_resolution "$MONITOR")"
|
||||||
|
if [[ -z "$resolution" ]]; then
|
||||||
|
echo "Could not determine resolution for monitor '$MONITOR'."
|
||||||
|
echo "Tip: check available names with: hyprctl monitors"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
colw="$(columnwidth_for_resolution "$resolution")"
|
||||||
|
if [[ -z "$colw" ]]; then
|
||||||
|
echo "No mapping for resolution '$resolution' on monitor '$MONITOR'."
|
||||||
|
echo "Add it to columnwidth_for_resolution() in this script."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Apply to hyprscrolling.
|
||||||
|
# Using layoutmsg colresize (as in your snippet).
|
||||||
|
hyprctl dispatch layoutmsg colresize all "$colw"
|
||||||
|
|
||||||
|
echo "hyprscrolling: set column width to $colw for monitor '$MONITOR' ($resolution)"
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
OPTIONS=" Lock
|
||||||
|
Logout (Hyprland)
|
||||||
|
Suspend
|
||||||
|
Hibernate
|
||||||
|
Reboot
|
||||||
|
Shutdown
|
||||||
|
Cancel"
|
||||||
|
|
||||||
|
CHOICE=$(printf "%s" "$OPTIONS" | walker --dmenu )
|
||||||
|
|
||||||
|
case "$CHOICE" in
|
||||||
|
"Lock")
|
||||||
|
loginctl lock-session
|
||||||
|
;;
|
||||||
|
"Logout (Hyprland)")
|
||||||
|
hyprctl dispatch exit
|
||||||
|
;;
|
||||||
|
"Suspend")
|
||||||
|
loginctl lock-session && systemctl suspend
|
||||||
|
;;
|
||||||
|
"Hibernate")
|
||||||
|
loginctl lock-session && systemctl hibernate
|
||||||
|
;;
|
||||||
|
"Reboot")
|
||||||
|
systemctl reboot
|
||||||
|
;;
|
||||||
|
"Shutdown")
|
||||||
|
systemctl poweroff
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
esac
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
cur="$(hyprctl getoption general:layout 2>/dev/null | awk '/str:/ {print $2; exit}')"
|
||||||
|
if [[ "$cur" == "scrolling" ]]; then
|
||||||
|
new="dwindle"
|
||||||
|
else
|
||||||
|
new="scrolling"
|
||||||
|
fi
|
||||||
|
hyprctl keyword general:layout "$new" >/dev/null
|
||||||
|
msg="Hyprland layout: $new"
|
||||||
|
echo "$msg"
|
||||||
|
# Show a notification if possible
|
||||||
|
if command -v notify-send >/dev/null 2>&1; then
|
||||||
|
notify-send -a Hyprland "Layout switched" "$msg"
|
||||||
|
fi
|
||||||
@@ -0,0 +1,62 @@
|
|||||||
|
{
|
||||||
|
"ignore-gtk-theme": true,
|
||||||
|
"cssPriority": "user",
|
||||||
|
|
||||||
|
"positionX": "right",
|
||||||
|
"positionY": "top",
|
||||||
|
"layer": "overlay",
|
||||||
|
"layer-shell": true,
|
||||||
|
|
||||||
|
"control-center-positionX": "right",
|
||||||
|
"control-center-positionY": "top",
|
||||||
|
"control-center-layer": "overlay",
|
||||||
|
"control-center-exclusive-zone": true,
|
||||||
|
|
||||||
|
"control-center-width": 480,
|
||||||
|
"control-center-height": 0,
|
||||||
|
"fit-to-screen": true,
|
||||||
|
|
||||||
|
"control-center-margin-top": 14,
|
||||||
|
"control-center-margin-right": 14,
|
||||||
|
"control-center-margin-bottom": 14,
|
||||||
|
"control-center-margin-left": 14,
|
||||||
|
|
||||||
|
"notification-window-width": 420,
|
||||||
|
"notification-window-height": -1,
|
||||||
|
|
||||||
|
"timeout": 8,
|
||||||
|
"timeout-low": 4,
|
||||||
|
"timeout-critical": 0,
|
||||||
|
"transition-time": 150,
|
||||||
|
|
||||||
|
"notification-grouping": true,
|
||||||
|
"keyboard-shortcuts": true,
|
||||||
|
"hide-on-action": true,
|
||||||
|
"hide-on-clear": false,
|
||||||
|
"relative-timestamps": true,
|
||||||
|
|
||||||
|
"image-visibility": "when-available",
|
||||||
|
"notification-2fa-action": true,
|
||||||
|
|
||||||
|
"text-empty": "No notifications",
|
||||||
|
|
||||||
|
"widgets": [
|
||||||
|
"title",
|
||||||
|
"dnd",
|
||||||
|
"notifications"
|
||||||
|
],
|
||||||
|
|
||||||
|
"widget-config": {
|
||||||
|
"title": {
|
||||||
|
"text": "Notifications",
|
||||||
|
"clear-all-button": true,
|
||||||
|
"button-text": "Clear"
|
||||||
|
},
|
||||||
|
"dnd": {
|
||||||
|
"text": "Do Not Disturb"
|
||||||
|
},
|
||||||
|
"notifications": {
|
||||||
|
"vexpand": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,115 @@
|
|||||||
|
/* SwayNotificationCenter (swaync) — EXACT Waybar match
|
||||||
|
* Put in: ~/.config/swaync/style.css
|
||||||
|
*
|
||||||
|
* swaync loads GTK CSS for theming.
|
||||||
|
*/
|
||||||
|
|
||||||
|
@define-color base rgba(220, 230, 255, 0.05);
|
||||||
|
@define-color text rgba(255, 255, 255, 1.0);
|
||||||
|
@define-color surface1 rgba(255, 255, 255, 0.08);
|
||||||
|
@define-color subtext1 rgba(255, 255, 255, 0.35);
|
||||||
|
@define-color blue rgba(51, 204, 255, 0.933);
|
||||||
|
@define-color green rgba(0, 255, 153, 0.933);
|
||||||
|
@define-color red rgba(255, 0, 0, 0.90);
|
||||||
|
* {
|
||||||
|
color: @text;
|
||||||
|
font-family:
|
||||||
|
Aporetic Sans Mono,
|
||||||
|
Iosevka Nerd Font,
|
||||||
|
Sans;
|
||||||
|
font-size: 13px;
|
||||||
|
}
|
||||||
|
/* Remove list selection glow */
|
||||||
|
list,
|
||||||
|
listview,
|
||||||
|
row,
|
||||||
|
listview row,
|
||||||
|
listview row:selected,
|
||||||
|
listview row:hover,
|
||||||
|
listview row:focus,
|
||||||
|
listview row:active {
|
||||||
|
background-color: transparent;
|
||||||
|
background-image: none;
|
||||||
|
box-shadow: none;
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
/* Popups: keep window transparent, but make the *notification surfaces* opaque base */
|
||||||
|
window#notification-window {
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
/* Control center — EXACT same as Waybar base */
|
||||||
|
.control-center {
|
||||||
|
background-color: @base;
|
||||||
|
border-radius: 10px;
|
||||||
|
padding: 12px;
|
||||||
|
|
||||||
|
/* Keep border subtle, like Waybar (no heavy shadow) */
|
||||||
|
border: 1px solid rgba(255, 255, 255, 0.08);
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
/* Widget headers — use Waybar surface1 */
|
||||||
|
.widget-title {
|
||||||
|
margin-bottom: 10px;
|
||||||
|
padding: 6px 10px;
|
||||||
|
border-radius: 10px;
|
||||||
|
background-color: @surface1;
|
||||||
|
border: 1px solid rgba(255, 255, 255, 0.08);
|
||||||
|
}
|
||||||
|
.widget-title > label {
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 700;
|
||||||
|
}
|
||||||
|
/* Cards — EXACT same as Waybar base */
|
||||||
|
.notification-background {
|
||||||
|
margin: 10px 0;
|
||||||
|
padding: 0;
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
.notification-background .notification {
|
||||||
|
background-color: @base;
|
||||||
|
border-radius: 10px;
|
||||||
|
padding: 12px;
|
||||||
|
border: 1px solid rgba(255, 255, 255, 0.08);
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
/* Accent by urgency */
|
||||||
|
.notification.critical {
|
||||||
|
border-left: 4px solid @red;
|
||||||
|
}
|
||||||
|
.notification.low {
|
||||||
|
border-left: 4px solid @blue;
|
||||||
|
}
|
||||||
|
.notification.normal {
|
||||||
|
border-left: 4px solid @green;
|
||||||
|
}
|
||||||
|
/* Meta */
|
||||||
|
.notification .app-name {
|
||||||
|
color: @subtext1;
|
||||||
|
font-weight: 700;
|
||||||
|
}
|
||||||
|
.notification .time {
|
||||||
|
color: @subtext1;
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
/* Text */
|
||||||
|
.notification .summary {
|
||||||
|
color: @text;
|
||||||
|
font-weight: 800;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
.notification .body {
|
||||||
|
color: @subtext1;
|
||||||
|
margin-top: 6px;
|
||||||
|
line-height: 1.25;
|
||||||
|
}
|
||||||
|
/* Buttons */
|
||||||
|
.notification button {
|
||||||
|
border-radius: 10px;
|
||||||
|
background-color: rgba(255, 255, 255, 0.1);
|
||||||
|
border: 1px solid rgba(255, 255, 255, 0.1);
|
||||||
|
box-shadow: none;
|
||||||
|
padding: 6px 10px;
|
||||||
|
}
|
||||||
|
.notification button:hover {
|
||||||
|
background-color: rgba(255, 255, 255, 0.14);
|
||||||
|
}
|
||||||
@@ -0,0 +1,116 @@
|
|||||||
|
# Walker UI layout/theme config (Catppuccin Mocha tuned)
|
||||||
|
|
||||||
|
theme = "frosted"
|
||||||
|
debug = true
|
||||||
|
|
||||||
|
[ui]
|
||||||
|
css = "home/YOUR_USER/themes/frosted/walker.css"
|
||||||
|
|
||||||
|
[ui.anchors]
|
||||||
|
top = true
|
||||||
|
left = true
|
||||||
|
right = true
|
||||||
|
bottom = false # don't stretch to full height; keeps it as a panel
|
||||||
|
|
||||||
|
[ui.window]
|
||||||
|
h_align = "fill"
|
||||||
|
v_align = "fill"
|
||||||
|
|
||||||
|
[ui.window.box]
|
||||||
|
h_align = "center"
|
||||||
|
# Single source of truth for the main content width
|
||||||
|
width = 520
|
||||||
|
|
||||||
|
[ui.window.box.margins]
|
||||||
|
top = 140
|
||||||
|
|
||||||
|
[ui.window.box.bar]
|
||||||
|
orientation = "horizontal"
|
||||||
|
position = "end"
|
||||||
|
|
||||||
|
[ui.window.box.bar.entry]
|
||||||
|
h_align = "fill"
|
||||||
|
h_expand = true
|
||||||
|
|
||||||
|
[ui.window.box.bar.entry.icon]
|
||||||
|
h_align = "center"
|
||||||
|
h_expand = false
|
||||||
|
pixel_size = 22
|
||||||
|
theme = "" # leave empty to inherit your system icon theme (Papirus etc.)
|
||||||
|
|
||||||
|
# --- AI scroll area (match main width, reduce hardcoding) ---
|
||||||
|
[ui.window.box.ai_scroll]
|
||||||
|
name = "aiScroll"
|
||||||
|
h_align = "fill"
|
||||||
|
v_align = "fill"
|
||||||
|
min_width = 520
|
||||||
|
width = 520
|
||||||
|
max_height = 260
|
||||||
|
height = 260
|
||||||
|
|
||||||
|
[ui.window.box.ai_scroll.margins]
|
||||||
|
top = 10
|
||||||
|
|
||||||
|
[ui.window.box.ai_scroll.list]
|
||||||
|
name = "aiList"
|
||||||
|
orientation = "vertical"
|
||||||
|
width = 520
|
||||||
|
spacing = 10
|
||||||
|
|
||||||
|
[ui.window.box.ai_scroll.list.item]
|
||||||
|
name = "aiItem"
|
||||||
|
h_align = "fill"
|
||||||
|
v_align = "fill"
|
||||||
|
x_align = 0
|
||||||
|
y_align = 0
|
||||||
|
wrap = true
|
||||||
|
|
||||||
|
# --- Main results list ---
|
||||||
|
[ui.window.box.scroll.list]
|
||||||
|
# Catppuccin Mocha accent (pick one):
|
||||||
|
# - teal: #94e2d5
|
||||||
|
# - blue: #89b4fa
|
||||||
|
marker_color = "#89b4fa"
|
||||||
|
max_height = 360
|
||||||
|
min_width = 520
|
||||||
|
max_width = 520
|
||||||
|
width = 520
|
||||||
|
|
||||||
|
[ui.window.box.scroll.list.margins]
|
||||||
|
top = 10
|
||||||
|
|
||||||
|
[ui.window.box.scroll.list.item.activation_label]
|
||||||
|
h_align = "fill"
|
||||||
|
v_align = "fill"
|
||||||
|
width = 22
|
||||||
|
x_align = 0.5
|
||||||
|
y_align = 0.5
|
||||||
|
|
||||||
|
[ui.window.box.scroll.list.item.icon]
|
||||||
|
pixel_size = 24
|
||||||
|
theme = "" # inherit system icon theme
|
||||||
|
|
||||||
|
# --- Search row (icons + input) ---
|
||||||
|
[ui.window.box.search.prompt]
|
||||||
|
name = "prompt"
|
||||||
|
icon = "edit-find"
|
||||||
|
theme = ""
|
||||||
|
pixel_size = 18
|
||||||
|
h_align = "center"
|
||||||
|
v_align = "center"
|
||||||
|
|
||||||
|
[ui.window.box.search.clear]
|
||||||
|
name = "clear"
|
||||||
|
icon = "edit-clear"
|
||||||
|
theme = ""
|
||||||
|
pixel_size = 18
|
||||||
|
h_align = "center"
|
||||||
|
v_align = "center"
|
||||||
|
|
||||||
|
[ui.window.box.search.input]
|
||||||
|
h_align = "fill"
|
||||||
|
h_expand = true
|
||||||
|
icons = true
|
||||||
|
|
||||||
|
[ui.window.box.search.spinner]
|
||||||
|
hide = true
|
||||||
@@ -0,0 +1,162 @@
|
|||||||
|
/* AUTO GENERATED. DO NOT EDIT. CHANGES WILL BE OVERWRITTEN. */
|
||||||
|
|
||||||
|
@define-color foreground rgba(255, 255, 255, 0.8);
|
||||||
|
@define-color background hsla(240, 12.7%, 13.9%, 0.98);
|
||||||
|
@define-color color1 hsl(172, 100%, 25.3%);
|
||||||
|
/* AUTO GENERATED. DO NOT EDIT. CHANGES WILL BE OVERWRITTEN. */
|
||||||
|
|
||||||
|
#window,
|
||||||
|
#box,
|
||||||
|
#aiScroll,
|
||||||
|
#aiList,
|
||||||
|
#search,
|
||||||
|
#password,
|
||||||
|
#input,
|
||||||
|
#prompt,
|
||||||
|
#clear,
|
||||||
|
#typeahead,
|
||||||
|
#list,
|
||||||
|
child,
|
||||||
|
scrollbar,
|
||||||
|
slider,
|
||||||
|
#item,
|
||||||
|
#text,
|
||||||
|
#label,
|
||||||
|
#bar,
|
||||||
|
#sub,
|
||||||
|
#activationlabel {
|
||||||
|
all: unset;
|
||||||
|
}
|
||||||
|
|
||||||
|
#cfgerr {
|
||||||
|
background: rgba(255, 0, 0, 0.4);
|
||||||
|
margin-top: 20px;
|
||||||
|
padding: 8px;
|
||||||
|
font-size: 1.2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#window {
|
||||||
|
color: @foreground;
|
||||||
|
}
|
||||||
|
|
||||||
|
#box {
|
||||||
|
border-radius: 2px;
|
||||||
|
background: @background;
|
||||||
|
padding: 32px;
|
||||||
|
border: 1px solid lighter(@background);
|
||||||
|
box-shadow:
|
||||||
|
0 19px 38px rgba(0, 0, 0, 0.3),
|
||||||
|
0 15px 12px rgba(0, 0, 0, 0.22);
|
||||||
|
}
|
||||||
|
|
||||||
|
#search {
|
||||||
|
box-shadow:
|
||||||
|
0 1px 3px rgba(0, 0, 0, 0.1),
|
||||||
|
0 1px 2px rgba(0, 0, 0, 0.22);
|
||||||
|
background: lighter(@background);
|
||||||
|
padding: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#prompt {
|
||||||
|
margin-left: 4px;
|
||||||
|
margin-right: 12px;
|
||||||
|
color: @foreground;
|
||||||
|
opacity: 0.2;
|
||||||
|
}
|
||||||
|
|
||||||
|
#clear {
|
||||||
|
color: @foreground;
|
||||||
|
opacity: 0.8;
|
||||||
|
}
|
||||||
|
|
||||||
|
#password,
|
||||||
|
#input,
|
||||||
|
#typeahead {
|
||||||
|
border-radius: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#input {
|
||||||
|
background: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#password {
|
||||||
|
}
|
||||||
|
|
||||||
|
#spinner {
|
||||||
|
padding: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#typeahead {
|
||||||
|
color: @foreground;
|
||||||
|
opacity: 0.8;
|
||||||
|
}
|
||||||
|
|
||||||
|
#input placeholder {
|
||||||
|
opacity: 0.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
#list {
|
||||||
|
}
|
||||||
|
|
||||||
|
child {
|
||||||
|
padding: 8px;
|
||||||
|
border-radius: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
child:selected,
|
||||||
|
child:hover {
|
||||||
|
background: alpha(@color1, 0.4);
|
||||||
|
}
|
||||||
|
|
||||||
|
#item {
|
||||||
|
}
|
||||||
|
|
||||||
|
#icon {
|
||||||
|
margin-right: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#text {
|
||||||
|
}
|
||||||
|
|
||||||
|
#label {
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
|
||||||
|
#sub {
|
||||||
|
opacity: 0.5;
|
||||||
|
font-size: 0.8em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#activationlabel {
|
||||||
|
}
|
||||||
|
|
||||||
|
#bar {
|
||||||
|
}
|
||||||
|
|
||||||
|
.barentry {
|
||||||
|
}
|
||||||
|
|
||||||
|
.activation #activationlabel {
|
||||||
|
}
|
||||||
|
|
||||||
|
.activation #text,
|
||||||
|
.activation #icon,
|
||||||
|
.activation #search {
|
||||||
|
opacity: 0.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.aiItem {
|
||||||
|
padding: 10px;
|
||||||
|
border-radius: 2px;
|
||||||
|
color: @foreground;
|
||||||
|
background: @background;
|
||||||
|
}
|
||||||
|
|
||||||
|
.aiItem.user {
|
||||||
|
padding-left: 0;
|
||||||
|
padding-right: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.aiItem.assistant {
|
||||||
|
background: lighter(@background);
|
||||||
|
}
|
||||||
@@ -0,0 +1,185 @@
|
|||||||
|
/* Catppuccin Mocha Walker Theme — Frosted Glass */
|
||||||
|
|
||||||
|
@import "default.css";
|
||||||
|
|
||||||
|
/* --- Palette --- */
|
||||||
|
/* glass layers: low alpha + slightly cool tint */
|
||||||
|
@define-color base rgba(220, 230, 255, 0.15);
|
||||||
|
@define-color mantle rgba(24, 24, 37, 0.55); /* was opaque */
|
||||||
|
@define-color crust rgba(17, 17, 27, 0.80);
|
||||||
|
|
||||||
|
@define-color text #cdd6f4;
|
||||||
|
@define-color subtext0 #a6adc8;
|
||||||
|
@define-color subtext1 #bac2de;
|
||||||
|
|
||||||
|
/* use these as “edge lights” more than solid fills */
|
||||||
|
@define-color surface0 rgba(49, 50, 68, 0.35);
|
||||||
|
@define-color surface1 rgba(69, 71, 90, 0.40);
|
||||||
|
@define-color surface2 rgba(88, 91, 112, 0.45);
|
||||||
|
|
||||||
|
@define-color overlay0 rgba(108, 112, 134, 0.70);
|
||||||
|
@define-color overlay1 rgba(127, 132, 156, 0.85);
|
||||||
|
@define-color overlay2 rgba(147, 153, 178, 0.90);
|
||||||
|
|
||||||
|
@define-color blue #89b4fa;
|
||||||
|
@define-color lavender #b4befe;
|
||||||
|
@define-color mauve #cba6f7;
|
||||||
|
@define-color green #a6e3a1;
|
||||||
|
@define-color red #f38ba8;
|
||||||
|
@define-color peach #fab387;
|
||||||
|
@define-color yellow #f9e2af;
|
||||||
|
|
||||||
|
/* --- Walker expected tokens --- */
|
||||||
|
@define-color foreground @text;
|
||||||
|
|
||||||
|
/* very transparent base to let compositor blur show through */
|
||||||
|
@define-color background: rgba(26, 26, 40, 0.75);
|
||||||
|
|
||||||
|
/* selection tint */
|
||||||
|
@define-color color1 @blue;
|
||||||
|
|
||||||
|
/* --- Reset --- */
|
||||||
|
#window,
|
||||||
|
#box,
|
||||||
|
#aiScroll,
|
||||||
|
#aiList,
|
||||||
|
#search,
|
||||||
|
#password,
|
||||||
|
#input,
|
||||||
|
#prompt,
|
||||||
|
#clear,
|
||||||
|
#typeahead,
|
||||||
|
#list,
|
||||||
|
child,
|
||||||
|
scrollbar,
|
||||||
|
slider,
|
||||||
|
#item,
|
||||||
|
#text,
|
||||||
|
#label,
|
||||||
|
#bar,
|
||||||
|
#sub,
|
||||||
|
#activationlabel {
|
||||||
|
all: unset;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* --- Error --- */
|
||||||
|
#cfgerr {
|
||||||
|
background: alpha(@red, 0.35);
|
||||||
|
margin-top: 20px;
|
||||||
|
padding: 10px;
|
||||||
|
border-radius: 10px;
|
||||||
|
border: 1px solid alpha(@red, 0.3);
|
||||||
|
font-size: 1.1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* --- Window --- */
|
||||||
|
#window {
|
||||||
|
color: @foreground;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* --- Main container (frosted glass card) --- */
|
||||||
|
#box {
|
||||||
|
border-radius: 18px;
|
||||||
|
background: @background;
|
||||||
|
|
||||||
|
border: 1px solid alpha(@text, 0.08);
|
||||||
|
|
||||||
|
box-shadow:
|
||||||
|
inset 0 1px 0 alpha(@text, 0.04),
|
||||||
|
0 8px 18px alpha(@crust, 0.4);
|
||||||
|
|
||||||
|
padding: 28px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* --- Search “pill” --- */
|
||||||
|
#search {
|
||||||
|
background: rgba(49, 50, 68, 0.22);
|
||||||
|
padding: 10px 12px;
|
||||||
|
border-radius: 14px;
|
||||||
|
|
||||||
|
border: 1px solid alpha(@text, 0.1);
|
||||||
|
box-shadow:
|
||||||
|
inset 0 1px 0 alpha(@text, 0.06),
|
||||||
|
0 6px 16px alpha(@crust, 0.35);
|
||||||
|
}
|
||||||
|
|
||||||
|
#prompt {
|
||||||
|
margin-left: 6px;
|
||||||
|
margin-right: 12px;
|
||||||
|
color: alpha(@overlay1, 0.9);
|
||||||
|
}
|
||||||
|
|
||||||
|
#clear {
|
||||||
|
color: alpha(@overlay2, 0.9);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* --- Inputs --- */
|
||||||
|
#password,
|
||||||
|
#input,
|
||||||
|
#typeahead {
|
||||||
|
border-radius: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#input {
|
||||||
|
background: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#typeahead {
|
||||||
|
color: alpha(@subtext1, 0.85);
|
||||||
|
}
|
||||||
|
|
||||||
|
#input placeholder {
|
||||||
|
color: alpha(@overlay0, 0.75);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* --- List items --- */
|
||||||
|
child {
|
||||||
|
padding: 10px 12px;
|
||||||
|
border-radius: 14px;
|
||||||
|
background: @background;
|
||||||
|
border: 1px solid alpha(@text, 0.05);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Hover / Selection: brighter glass + tinted glow */
|
||||||
|
child:selected,
|
||||||
|
child:hover {
|
||||||
|
background: rgba(22, 22, 34, 0.8);
|
||||||
|
border: 1px solid alpha(@text, 0.08);
|
||||||
|
|
||||||
|
box-shadow:
|
||||||
|
inset 0 1px 0 alpha(@text, 0.05),
|
||||||
|
0 6px 14px alpha(@crust, 0.35);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* --- Text --- */
|
||||||
|
#label {
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
#sub {
|
||||||
|
color: alpha(@subtext0, 0.85);
|
||||||
|
font-size: 0.85em;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* --- Activation --- */
|
||||||
|
.activation #text,
|
||||||
|
.activation #icon,
|
||||||
|
.activation #search {
|
||||||
|
opacity: 0.55;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* --- AI Panel --- */
|
||||||
|
.aiItem {
|
||||||
|
padding: 12px;
|
||||||
|
border-radius: 14px;
|
||||||
|
color: @foreground;
|
||||||
|
|
||||||
|
/* glass tile */
|
||||||
|
background: rgba(24, 24, 37, 0.3);
|
||||||
|
border: 1px solid rgba(255, 255, 255, 0.05);
|
||||||
|
box-shadow: inset 0 1px 0 alpha(@text, 0.05);
|
||||||
|
}
|
||||||
|
|
||||||
|
.aiItem.assistant {
|
||||||
|
background: rgba(49, 50, 68, 0.22);
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 292 KiB |
|
After Width: | Height: | Size: 963 KiB |
|
After Width: | Height: | Size: 1.8 MiB |
|
Before Width: | Height: | Size: 2.7 MiB After Width: | Height: | Size: 2.7 MiB |
|
Before Width: | Height: | Size: 270 KiB After Width: | Height: | Size: 270 KiB |
|
Before Width: | Height: | Size: 173 KiB After Width: | Height: | Size: 173 KiB |
|
Before Width: | Height: | Size: 962 KiB After Width: | Height: | Size: 962 KiB |
|
Before Width: | Height: | Size: 425 KiB After Width: | Height: | Size: 425 KiB |
|
Before Width: | Height: | Size: 5.3 MiB After Width: | Height: | Size: 5.3 MiB |
@@ -2,7 +2,7 @@
|
|||||||
# Wallpaper config (wpaperd, TOML)
|
# Wallpaper config (wpaperd, TOML)
|
||||||
#
|
#
|
||||||
# Source-of-truth in repo:
|
# Source-of-truth in repo:
|
||||||
# ~/<defaultUser>nix/assets/conf/desktop/wallpaper/wallpaper.conf
|
# ~/YOUR_USERnix/assets/conf/desktop/wallpaper/wallpaper.conf
|
||||||
#
|
#
|
||||||
# Runtime override (user edits this):
|
# Runtime override (user edits this):
|
||||||
# ~/conf/desktop/wallpaper/wallpaper.conf
|
# ~/conf/desktop/wallpaper/wallpaper.conf
|
||||||
@@ -17,7 +17,7 @@
|
|||||||
# Directory to pick wallpapers from
|
# Directory to pick wallpapers from
|
||||||
path = "~/nixos_conf/wallpaperstuff/pictures"
|
path = "~/nixos_conf/wallpaperstuff/pictures"
|
||||||
|
|
||||||
# Switch every 60 minutes
|
# Switch every X minutes
|
||||||
duration = "5m"
|
duration = "5m"
|
||||||
|
|
||||||
# Random order (ascending/descending/random)
|
# Random order (ascending/descending/random)
|
||||||
@@ -30,7 +30,7 @@ recursive = true
|
|||||||
mode = "stretch"
|
mode = "stretch"
|
||||||
|
|
||||||
# Transition time in milliseconds
|
# Transition time in milliseconds
|
||||||
transition-time = 2500
|
transition-time = 5000
|
||||||
|
|
||||||
# Apply a "fade-like" transition (uses gl-transitions)
|
# Apply a "fade-like" transition (uses gl-transitions)
|
||||||
[default.transition.dissolve]
|
[default.transition.dissolve]
|
||||||
@@ -0,0 +1,119 @@
|
|||||||
|
{
|
||||||
|
"layer": "top",
|
||||||
|
"height": 34,
|
||||||
|
|
||||||
|
//"modules-left": ["hyprland/window"],
|
||||||
|
|
||||||
|
"modules-center": ["hyprland/workspaces", "custom/hyprscroll_overflow"],
|
||||||
|
|
||||||
|
"modules-right": [
|
||||||
|
"idle_inhibitor",
|
||||||
|
"pulseaudio",
|
||||||
|
"network",
|
||||||
|
// "cpu",
|
||||||
|
// "memory",
|
||||||
|
// "temperature",
|
||||||
|
"battery",
|
||||||
|
"tray",
|
||||||
|
"clock",
|
||||||
|
"custom/notifications",
|
||||||
|
],
|
||||||
|
|
||||||
|
"custom/notifications": {
|
||||||
|
"tooltip": false,
|
||||||
|
"return-type": "json",
|
||||||
|
"exec-if": "which swaync-client",
|
||||||
|
"exec": "swaync-client -swb",
|
||||||
|
"format": "{icon}",
|
||||||
|
"format-icons": {
|
||||||
|
"notification": "",
|
||||||
|
"none": "",
|
||||||
|
"dnd-notification": "",
|
||||||
|
"dnd-none": "",
|
||||||
|
},
|
||||||
|
"on-click": "swaync-client -t",
|
||||||
|
"on-click-right": "swaync-client -d",
|
||||||
|
"on-click-middle": "swaync-client -dn",
|
||||||
|
},
|
||||||
|
|
||||||
|
"custom/hyprscroll_overflow": {
|
||||||
|
"exec": "bash -lc 'COLUMN_WIDTH=0.5 \"$HOME/.config/hypr/scripts/hyprscroll-overflow.sh\"'",
|
||||||
|
"return-type": "json",
|
||||||
|
"interval": 1,
|
||||||
|
"format": "{text}",
|
||||||
|
"hide-empty-text": true,
|
||||||
|
"tooltip": true,
|
||||||
|
// Click = choose a window and focus it
|
||||||
|
"on-click": "bash -lc 'COLUMN_WIDTH=0.5 DMENU_CMD=\"walker --dmenu\" \"$HOME/.config/hypr/scripts/hyprscroll-overflow.sh\" --pick'",
|
||||||
|
},
|
||||||
|
|
||||||
|
"idle_inhibitor": {
|
||||||
|
"format": "{icon}",
|
||||||
|
"format-icons": {
|
||||||
|
"activated": " ",
|
||||||
|
"deactivated": " ",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
"pulseaudio": {
|
||||||
|
"format": "{volume}% {icon}",
|
||||||
|
"format-bluetooth": "{volume}% {icon}",
|
||||||
|
"format-muted": "",
|
||||||
|
"format-icons": {
|
||||||
|
"headphones": "",
|
||||||
|
"headset": "",
|
||||||
|
"phone": "",
|
||||||
|
"portable": "",
|
||||||
|
"default": ["", ""],
|
||||||
|
},
|
||||||
|
"on-click": "pavucontrol",
|
||||||
|
},
|
||||||
|
|
||||||
|
"network": {
|
||||||
|
"format-wifi": " ({bandwidthDownBits})",
|
||||||
|
"format-ethernet": " ({bandwidthDownBits})",
|
||||||
|
"format-disconnected": "Disconnected ⚠",
|
||||||
|
"tooltip-format-wifi": "{essid} ({signalStrength}%)",
|
||||||
|
"tooltip-format-ethernet": "{ifname}: {ipaddr}/{cidr}",
|
||||||
|
"on-click": "impala",
|
||||||
|
"on-click-right": "nm-connection-editor",
|
||||||
|
},
|
||||||
|
|
||||||
|
"cpu": {
|
||||||
|
"format": "{usage}% ",
|
||||||
|
"tooltip": false,
|
||||||
|
},
|
||||||
|
|
||||||
|
"memory": {
|
||||||
|
"format": "{percentage}% ",
|
||||||
|
},
|
||||||
|
|
||||||
|
"temperature": {
|
||||||
|
"format": "{temperatureC}°C ",
|
||||||
|
"tooltip": false,
|
||||||
|
},
|
||||||
|
|
||||||
|
"tray": {
|
||||||
|
"spacing": 10,
|
||||||
|
"icon-size": 14,
|
||||||
|
},
|
||||||
|
|
||||||
|
"clock": {
|
||||||
|
"format": "{:%a, %d %b %Y - %H:%M}",
|
||||||
|
"tooltip": false,
|
||||||
|
"on-click": "flatpak run eu.betterbird.Betterbird -calendar",
|
||||||
|
},
|
||||||
|
|
||||||
|
"battery": {
|
||||||
|
"bat": "BAT0",
|
||||||
|
"states": {
|
||||||
|
"good": 95,
|
||||||
|
"warning": 30,
|
||||||
|
"critical": 15,
|
||||||
|
},
|
||||||
|
"format": "{capacity}% {icon}",
|
||||||
|
"format-charging": "{capacity}% ",
|
||||||
|
"format-plugged": "{capacity}% ",
|
||||||
|
"format-icons": ["", "", "", "", " "],
|
||||||
|
},
|
||||||
|
}
|
||||||
@@ -0,0 +1,218 @@
|
|||||||
|
/* --- Hyprland palette (ported) --- */
|
||||||
|
@define-color base rgba(30, 30, 46, 1.0); /* 1e1e2eff */
|
||||||
|
@define-color inactive rgba(89, 89, 89, 0.667); /* 595959aa */
|
||||||
|
@define-color blue rgba(51, 204, 255, 0.933); /* 33ccffee */
|
||||||
|
@define-color green rgba(0, 255, 153, 0.933); /* 00ff99ee */
|
||||||
|
|
||||||
|
/* extra colors you referenced but didn’t define */
|
||||||
|
@define-color text rgba(255, 255, 255, 1.0);
|
||||||
|
@define-color surface1 rgba(255, 255, 255, 0.08);
|
||||||
|
@define-color subtext1 rgba(255, 255, 255, 0.35);
|
||||||
|
@define-color red rgba(255, 0, 0, 0.90);
|
||||||
|
@define-color overlay1 rgba(255, 255, 255, 0.35);
|
||||||
|
@define-color yellow rgba(255, 215, 0, 0.95);
|
||||||
|
|
||||||
|
* {
|
||||||
|
font-family:
|
||||||
|
Aporetic Sans Mono,
|
||||||
|
Iosevka Nerd Font,
|
||||||
|
Roboto,
|
||||||
|
Helvetica,
|
||||||
|
Arial,
|
||||||
|
sans-serif;
|
||||||
|
font-size: 13px;
|
||||||
|
}
|
||||||
|
|
||||||
|
window#waybar {
|
||||||
|
background-color: transparent;
|
||||||
|
color: @text;
|
||||||
|
transition-property: background-color;
|
||||||
|
border-bottom: 0px solid rgba(0, 0, 0, 0);
|
||||||
|
transition-duration: 0.5s;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button {
|
||||||
|
padding: 0px 1px;
|
||||||
|
min-width: 80px;
|
||||||
|
background-color: transparent;
|
||||||
|
color: @text;
|
||||||
|
border: 2px solid @inactive;
|
||||||
|
border-radius: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-notifications.empty {
|
||||||
|
color: @overlay1;
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-notifications.unread {
|
||||||
|
color: @yellow;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button:hover {
|
||||||
|
background-color: @surface1;
|
||||||
|
color: @text;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button.active {
|
||||||
|
padding: 0px 1px;
|
||||||
|
min-width: 80px;
|
||||||
|
color: @text;
|
||||||
|
border-radius: 10px;
|
||||||
|
font-weight: bold;
|
||||||
|
border: 1px solid transparent;
|
||||||
|
background:
|
||||||
|
linear-gradient(rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0.15))
|
||||||
|
padding-box,
|
||||||
|
linear-gradient(45deg, @blue, @green) border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-hyprscroll_overflow.overflow {
|
||||||
|
padding: 0px 1px;
|
||||||
|
min-width: 80px;
|
||||||
|
color: @text;
|
||||||
|
border-radius: 10px;
|
||||||
|
font-weight: bold;
|
||||||
|
border: 1px dashed transparent;
|
||||||
|
background:
|
||||||
|
linear-gradient(rgba(255, 255, 255, 0.05), rgba(255, 255, 255, 0.05))
|
||||||
|
padding-box,
|
||||||
|
linear-gradient(45deg, @blue, @green) border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-hyprscroll_overflow.hidden {
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
min-width: 0;
|
||||||
|
border: 0;
|
||||||
|
background: transparent;
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#clock,
|
||||||
|
#idle_inhibitor,
|
||||||
|
#battery,
|
||||||
|
#cpu,
|
||||||
|
#memory,
|
||||||
|
#temperature,
|
||||||
|
#network,
|
||||||
|
#pulseaudio,
|
||||||
|
#tray {
|
||||||
|
margin: 0 5px;
|
||||||
|
padding: 0 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#idle_inhibitor.activated {
|
||||||
|
background-color: @green;
|
||||||
|
}
|
||||||
|
|
||||||
|
#battery.charging {
|
||||||
|
color: @green;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes blink {
|
||||||
|
to {
|
||||||
|
background-color: #ffffff;
|
||||||
|
color: black;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#battery.warning:not(.charging) {
|
||||||
|
color: white;
|
||||||
|
animation-name: blink;
|
||||||
|
animation-duration: 0.5s;
|
||||||
|
animation-timing-function: linear;
|
||||||
|
animation-iteration-count: infinite;
|
||||||
|
animation-direction: alternate;
|
||||||
|
}
|
||||||
|
|
||||||
|
#window,
|
||||||
|
#workspaces {
|
||||||
|
margin: 0 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modules-left > widget:first-child > #workspaces {
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modules-right > widget:last-child > #workspaces {
|
||||||
|
margin-right: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#network.disconnected {
|
||||||
|
background-color: @red;
|
||||||
|
}
|
||||||
|
|
||||||
|
#temperature.critical {
|
||||||
|
background-color: @red;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* =========================================================
|
||||||
|
* Notifications
|
||||||
|
* ========================================================= */
|
||||||
|
#custom-notifications {
|
||||||
|
margin: 0 4px;
|
||||||
|
padding: 0 4px;
|
||||||
|
min-width: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-notifications.empty {
|
||||||
|
color: @overlay1;
|
||||||
|
}
|
||||||
|
#custom-notifications.unread {
|
||||||
|
color: @yellow;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* =========================================================
|
||||||
|
* Hyprscroll overflow indicator (custom/hyprscroll_overflow)
|
||||||
|
* States: .ok, .overflow, .error
|
||||||
|
* ========================================================= */
|
||||||
|
|
||||||
|
/* Default (no overflow): subtle pill, still hoverable for tooltip */
|
||||||
|
#custom-hyprscroll_overflow.ok {
|
||||||
|
padding: 0px 1px;
|
||||||
|
min-width: 80px;
|
||||||
|
color: @subtext1;
|
||||||
|
border-radius: 10px;
|
||||||
|
|
||||||
|
/* subtle outline so you know it's there */
|
||||||
|
border: 1px solid rgba(255, 255, 255, 0.12);
|
||||||
|
background: rgba(255, 255, 255, 0.03);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Make it feel interactive (hover) */
|
||||||
|
#custom-hyprscroll_overflow.ok:hover {
|
||||||
|
color: @text;
|
||||||
|
background-color: @surface1;
|
||||||
|
border: 1px solid rgba(255, 255, 255, 0.18);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Overflow state: you already have this; keep it.
|
||||||
|
Optional: add hover tweak so it "pops" a bit. */
|
||||||
|
#custom-hyprscroll_overflow.overflow:hover {
|
||||||
|
background:
|
||||||
|
linear-gradient(rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0.1))
|
||||||
|
padding-box,
|
||||||
|
linear-gradient(45deg, @blue, @green) border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Error state: clear but not screaming */
|
||||||
|
#custom-hyprscroll_overflow.error {
|
||||||
|
padding: 0px 1px;
|
||||||
|
min-width: 80px;
|
||||||
|
color: @text;
|
||||||
|
border-radius: 10px;
|
||||||
|
|
||||||
|
border: 1px solid rgba(255, 0, 0, 0.55);
|
||||||
|
background: rgba(255, 0, 0, 0.15);
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Optional: if you keep .hidden in the script for any reason */
|
||||||
|
#custom-hyprscroll_overflow.hidden {
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
min-width: 0;
|
||||||
|
border: 0;
|
||||||
|
background: transparent;
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
@@ -0,0 +1,84 @@
|
|||||||
|
# vim:ft=kitty
|
||||||
|
|
||||||
|
## name: Catppuccin Kitty Mocha
|
||||||
|
## author: Catppuccin Org
|
||||||
|
## license: MIT
|
||||||
|
## upstream: https://github.com/catppuccin/kitty/blob/main/themes/mocha.conf
|
||||||
|
## blurb: Soothing pastel theme for the high-spirited!
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# The basic colors
|
||||||
|
foreground #cdd6f4
|
||||||
|
background #1e1e2e
|
||||||
|
selection_foreground #1e1e2e
|
||||||
|
selection_background #f5e0dc
|
||||||
|
|
||||||
|
# Cursor colors
|
||||||
|
cursor #f5e0dc
|
||||||
|
cursor_text_color #1e1e2e
|
||||||
|
|
||||||
|
# Scrollbar colors
|
||||||
|
scrollbar_handle_color #9399b2
|
||||||
|
scrollbar_track_color #45475a
|
||||||
|
|
||||||
|
# URL color when hovering with mouse
|
||||||
|
url_color #f5e0dc
|
||||||
|
|
||||||
|
# Kitty window border colors
|
||||||
|
active_border_color #b4befe
|
||||||
|
inactive_border_color #6c7086
|
||||||
|
bell_border_color #f9e2af
|
||||||
|
|
||||||
|
# OS Window titlebar colors
|
||||||
|
wayland_titlebar_color system
|
||||||
|
macos_titlebar_color system
|
||||||
|
|
||||||
|
# Tab bar colors
|
||||||
|
active_tab_foreground #11111b
|
||||||
|
active_tab_background #cba6f7
|
||||||
|
inactive_tab_foreground #cdd6f4
|
||||||
|
inactive_tab_background #181825
|
||||||
|
tab_bar_background #11111b
|
||||||
|
|
||||||
|
# Colors for marks (marked text in the terminal)
|
||||||
|
mark1_foreground #1e1e2e
|
||||||
|
mark1_background #b4befe
|
||||||
|
mark2_foreground #1e1e2e
|
||||||
|
mark2_background #cba6f7
|
||||||
|
mark3_foreground #1e1e2e
|
||||||
|
mark3_background #74c7ec
|
||||||
|
|
||||||
|
# The 16 terminal colors
|
||||||
|
|
||||||
|
# black
|
||||||
|
color0 #45475a
|
||||||
|
color8 #585b70
|
||||||
|
|
||||||
|
# red
|
||||||
|
color1 #f38ba8
|
||||||
|
color9 #f38ba8
|
||||||
|
|
||||||
|
# green
|
||||||
|
color2 #a6e3a1
|
||||||
|
color10 #a6e3a1
|
||||||
|
|
||||||
|
# yellow
|
||||||
|
color3 #f9e2af
|
||||||
|
color11 #f9e2af
|
||||||
|
|
||||||
|
# blue
|
||||||
|
color4 #89b4fa
|
||||||
|
color12 #89b4fa
|
||||||
|
|
||||||
|
# magenta
|
||||||
|
color5 #f5c2e7
|
||||||
|
color13 #f5c2e7
|
||||||
|
|
||||||
|
# cyan
|
||||||
|
color6 #94e2d5
|
||||||
|
color14 #94e2d5
|
||||||
|
|
||||||
|
# white
|
||||||
|
color7 #bac2de
|
||||||
|
color15 #a6adc8
|
||||||
@@ -1,19 +1,19 @@
|
|||||||
##############################################
|
##############################################
|
||||||
# These files are just for reference.
|
# These files are just for reference.
|
||||||
# If you want to change anything, edit the source files in:
|
# If you want to change anything, edit the source files in:
|
||||||
# ~/<defaultUser>nix/assets/conf
|
# ~/YOUR_USERnix/assets/conf
|
||||||
#
|
#
|
||||||
# After that, run:
|
# After that, run:
|
||||||
# cd ~/<defaultUser>nix && emacs README.org --batch -f org-babel-tangle && git add . && git commit -m "Adjusted conf files" && sudo nixos-rebuild switch --flake .#<yourhost>
|
# cd ~/YOUR_USERnix && emacs README.org --batch -f org-babel-tangle && git add . && git commit -m "Adjusted conf files" && sudo nixos-rebuild switch --flake .#<yourhost>
|
||||||
#
|
#
|
||||||
# If everything still works, you can use the same command but:
|
# If everything still works, you can use the same command but:
|
||||||
# - keep "switch"
|
# - keep "switch"
|
||||||
# - and add a reboot:
|
# - and add a reboot:
|
||||||
#
|
#
|
||||||
# cd ~/<defaultUser>nix && sudo nixos-rebuild switch --flake .#<yourhost> && systemctl reboot
|
# cd ~/YOUR_USERnix && sudo nixos-rebuild switch --flake .#<yourhost> && systemctl reboot
|
||||||
#
|
#
|
||||||
# NOTE:
|
# NOTE:
|
||||||
# Make sure the lines starting with: cd ~/<defaultUser>nix
|
# Make sure the lines starting with: cd ~/YOUR_USERnix
|
||||||
# are written as ONE single line.
|
# are written as ONE single line.
|
||||||
##############################################
|
##############################################
|
||||||
|
|
||||||
@@ -21,11 +21,11 @@ alias gcp='git add . && git commit && git push'
|
|||||||
alias cd='z'
|
alias cd='z'
|
||||||
|
|
||||||
alias nps='xdg-open https://search.nixos.org'
|
alias nps='xdg-open https://search.nixos.org'
|
||||||
alias hvnx='cd ~/Repos/nixos/<defaultUser>nix'
|
alias hvnx='cd ~/Repos/nixos/YOUR_USERnix_ok'
|
||||||
alias emt='hvnx && emacs README.org --batch -f org-babel-tangle && emacs -Q --batch README.org -f org-html-export-to-html'
|
alias emt='hvnx && emacs README.org --batch -f org-babel-tangle && emacs -Q --batch README.org -f org-html-export-to-html'
|
||||||
alias nxs='hvnx && sudo nixos-rebuild switch --flake .#machine1'
|
alias nxs='hvnx && sudo nixos-rebuild switch --flake .#YOUR_MACHINE'
|
||||||
alias nxt='hvnx && sudo nixos-rebuild test --flake .#machine1'
|
alias nxt='hvnx && sudo nixos-rebuild test --flake .#YOUR_MACHINE'
|
||||||
alias nxv='hvnx && sudo nixos-rebuild build-vm --flake .#machine1 && "$(ls -1 ./result/bin/run-*-vm | head -n 1)"'
|
alias nxv='hvnx && sudo nixos-rebuild build-vm --flake .#YOUR_MACHINE && "$(ls -1 ./result/bin/run-*-vm | head -n 1)"'
|
||||||
|
|
||||||
alias rb='systemctl reboot'
|
alias rb='systemctl reboot'
|
||||||
alias po='systemctl poweroff'
|
alias po='systemctl poweroff'
|
||||||
@@ -35,7 +35,7 @@ alias fps='flatpak search'
|
|||||||
alias fpi='flatpak install'
|
alias fpi='flatpak install'
|
||||||
alias fpr='flatpak run'
|
alias fpr='flatpak run'
|
||||||
|
|
||||||
alias nxc='ssh <defaultUser>@nextcloud.data-pro.nu'
|
alias nxc='ssh YOUR_USER@nextcloud.data-pro.nu'
|
||||||
|
|
||||||
|
|
||||||
alias vs='code'
|
alias vs='code'
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
##############################################
|
||||||
|
# These files are just for reference.
|
||||||
|
# If you want to change anything, edit the source files in:
|
||||||
|
# ~/YOUR_USERnix/assets/conf
|
||||||
|
#
|
||||||
|
# After that, run:
|
||||||
|
# cd ~/YOUR_USERnix && emacs README.org --batch -f org-babel-tangle && git add . && git commit -m "Adjusted conf files" && sudo nixos-rebuild switch --flake .#<yourhost>
|
||||||
|
#
|
||||||
|
# If everything still works, you can use the same command but:
|
||||||
|
# - keep "switch"
|
||||||
|
# - and add a reboot:
|
||||||
|
#
|
||||||
|
# cd ~/YOUR_USERnix && sudo nixos-rebuild switch --flake .#<yourhost> && systemctl reboot
|
||||||
|
#
|
||||||
|
# NOTE:
|
||||||
|
# Make sure the lines starting with: cd ~/YOUR_USERnix
|
||||||
|
# are written as ONE single line.
|
||||||
|
###############################################
|
||||||
|
|
||||||
|
# Force transparency (comes from the conf file, as you want)
|
||||||
|
background_opacity 0.40
|
||||||
|
dynamic_background_opacity yes
|
||||||
|
|
||||||
|
# the rest…
|
||||||
|
map ctrl+shift+v paste_from_clipboard
|
||||||
|
map ctrl+shift+c copy_to_clipboard
|
||||||
@@ -1,19 +1,19 @@
|
|||||||
##############################################
|
##############################################
|
||||||
# These files are just for reference.
|
# These files are just for reference.
|
||||||
# If you want to change anything, edit the source files in:
|
# If you want to change anything, edit the source files in:
|
||||||
# ~/<defaultUser>nix/assets/conf
|
# ~/YOUR_USERnix/assets/conf
|
||||||
#
|
#
|
||||||
# After that, run:
|
# After that, run:
|
||||||
# cd ~/<defaultUser>nix && emacs README.org --batch -f org-babel-tangle && git add . && git commit -m "Adjusted conf files" && sudo nixos-rebuild switch --flake .#<yourhost>
|
# cd ~/YOUR_USERnix && emacs README.org --batch -f org-babel-tangle && git add . && git commit -m "Adjusted conf files" && sudo nixos-rebuild switch --flake .#<yourhost>
|
||||||
#
|
#
|
||||||
# If everything still works, you can use the same command but:
|
# If everything still works, you can use the same command but:
|
||||||
# - keep "switch"
|
# - keep "switch"
|
||||||
# - and add a reboot:
|
# - and add a reboot:
|
||||||
#
|
#
|
||||||
# cd ~/<defaultUser>nix && sudo nixos-rebuild switch --flake .#<yourhost> && systemctl reboot
|
# cd ~/YOUR_USERnix && sudo nixos-rebuild switch --flake .#<yourhost> && systemctl reboot
|
||||||
#
|
#
|
||||||
# NOTE:
|
# NOTE:
|
||||||
# Make sure the lines starting with: cd ~/<defaultUser>nix
|
# Make sure the lines starting with: cd ~/YOUR_USERnix
|
||||||
# are written as ONE single line.
|
# are written as ONE single line.
|
||||||
###############################################
|
###############################################
|
||||||
#~/nixos/files/conf/terminal/zsh.conf
|
#~/nixos/files/conf/terminal/zsh.conf
|
||||||
@@ -1,19 +1,19 @@
|
|||||||
##############################################
|
##############################################
|
||||||
# These files are just for reference.
|
# These files are just for reference.
|
||||||
# If you want to change anything, edit the source files in:
|
# If you want to change anything, edit the source files in:
|
||||||
# ~/<defaultUser>nix/assets/conf
|
# ~/YOUR_USERnix/assets/conf
|
||||||
#
|
#
|
||||||
# After that, run:
|
# After that, run:
|
||||||
# cd ~/<defaultUser>nix && emacs README.org --batch -f org-babel-tangle && git add . && git commit -m "Adjusted conf files" && sudo nixos-rebuild switch --flake .#<yourhost>
|
# cd ~/YOUR_USERnix && emacs README.org --batch -f org-babel-tangle && git add . && git commit -m "Adjusted conf files" && sudo nixos-rebuild switch --flake .#<yourhost>
|
||||||
#
|
#
|
||||||
# If everything still works, you can use the same command but:
|
# If everything still works, you can use the same command but:
|
||||||
# - keep "switch"
|
# - keep "switch"
|
||||||
# - and add a reboot:
|
# - and add a reboot:
|
||||||
#
|
#
|
||||||
# cd ~/<defaultUser>nix && sudo nixos-rebuild switch --flake .#<yourhost> && systemctl reboot
|
# cd ~/YOUR_USERnix && sudo nixos-rebuild switch --flake .#<yourhost> && systemctl reboot
|
||||||
#
|
#
|
||||||
# NOTE:
|
# NOTE:
|
||||||
# Make sure the lines starting with: cd ~/<defaultUser>nix
|
# Make sure the lines starting with: cd ~/YOUR_USERnix
|
||||||
# are written as ONE single line.
|
# are written as ONE single line.
|
||||||
##############################################
|
##############################################
|
||||||
Host *
|
Host *
|
||||||
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 2.9 KiB |
|
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 2.6 KiB |
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 2.9 KiB |
|
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 2.6 KiB |
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 627 B After Width: | Height: | Size: 627 B |
|
Before Width: | Height: | Size: 625 B After Width: | Height: | Size: 625 B |
|
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 629 B After Width: | Height: | Size: 629 B |
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 977 B After Width: | Height: | Size: 977 B |
|
Before Width: | Height: | Size: 988 B After Width: | Height: | Size: 988 B |
|
Before Width: | Height: | Size: 629 B After Width: | Height: | Size: 629 B |
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.5 KiB |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |