Lots of new rules for hyprland
@@ -479,13 +479,10 @@ The tree below shows the full repository layout, with the standardized internal
|
|||||||
│ │ │ │ ├── hypridle.conf
|
│ │ │ │ ├── hypridle.conf
|
||||||
│ │ │ │ ├── hyprland.conf
|
│ │ │ │ ├── hyprland.conf
|
||||||
│ │ │ │ ├── hyprlock.conf
|
│ │ │ │ ├── hyprlock.conf
|
||||||
│ │ │ │ ├── hyprscrolling.conf
|
|
||||||
│ │ │ │ ├── hyprshell
|
│ │ │ │ ├── hyprshell
|
||||||
│ │ │ │ │ ├── config.ron
|
│ │ │ │ │ ├── config.ron
|
||||||
│ │ │ │ │ └── styles.css
|
│ │ │ │ │ └── styles.css
|
||||||
│ │ │ │ └── scripts
|
│ │ │ │ └── scripts
|
||||||
│ │ │ │ ├── hyprscrolling-per-monitor.sh
|
|
||||||
│ │ │ │ ├── hyprscroll-overflow.sh
|
|
||||||
│ │ │ │ ├── lid-lock.sh
|
│ │ │ │ ├── lid-lock.sh
|
||||||
│ │ │ │ ├── lid-restore.sh
|
│ │ │ │ ├── lid-restore.sh
|
||||||
│ │ │ │ └── powermenu.sh
|
│ │ │ │ └── powermenu.sh
|
||||||
@@ -555,11 +552,9 @@ The tree below shows the full repository layout, with the standardized internal
|
|||||||
│ ├── default.nix
|
│ ├── default.nix
|
||||||
│ ├── desktop
|
│ ├── desktop
|
||||||
│ │ ├── animated_wallpaper.nix
|
│ │ ├── animated_wallpaper.nix
|
||||||
│ │ ├── hyprexpo.nix
|
|
||||||
│ │ ├── hypridle.nix
|
│ │ ├── hypridle.nix
|
||||||
│ │ ├── hyprland.nix
|
│ │ ├── hyprland.nix
|
||||||
│ │ ├── hyprlock.nix
|
│ │ ├── hyprlock.nix
|
||||||
│ │ ├── hyprscrolling.nix
|
|
||||||
│ │ ├── hyprshell.nix
|
│ │ ├── hyprshell.nix
|
||||||
│ │ ├── powermenu.nix
|
│ │ ├── powermenu.nix
|
||||||
│ │ ├── rotating_wallpaper.nix
|
│ │ ├── rotating_wallpaper.nix
|
||||||
@@ -1621,7 +1616,6 @@ This module will import all necessities.
|
|||||||
./apps/theme.nix
|
./apps/theme.nix
|
||||||
./desktop/hypridle.nix
|
./desktop/hypridle.nix
|
||||||
./desktop/hyprland.nix
|
./desktop/hyprland.nix
|
||||||
#./desktop/hyprexpo.nix
|
|
||||||
./desktop/hyprlock.nix
|
./desktop/hyprlock.nix
|
||||||
./desktop/hyprshell.nix
|
./desktop/hyprshell.nix
|
||||||
#./desktop/animated_wallpaper.nix
|
#./desktop/animated_wallpaper.nix
|
||||||
@@ -1784,9 +1778,6 @@ This configures the desktop environment along with the peripherals. The comments
|
|||||||
wayland.windowManager.hyprland = {
|
wayland.windowManager.hyprland = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings = {
|
settings = {
|
||||||
windowrule = [
|
|
||||||
"match:class nm-connection-editor, float 1, center 1, size 900 700"
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
xdg.portal = {
|
xdg.portal = {
|
||||||
@@ -1822,8 +1813,8 @@ in
|
|||||||
{
|
{
|
||||||
xdg.enable = true;
|
xdg.enable = true;
|
||||||
home.packages = [ walkerPkg elephantPkg ];
|
home.packages = [ walkerPkg elephantPkg ];
|
||||||
systemd.user.services.elephant = { /* ... your existing service ... */ };
|
systemd.user.services.elephant = { };
|
||||||
systemd.user.services.walker = { /* ... your existing service ... */ };
|
systemd.user.services.walker = { };
|
||||||
}
|
}
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
@@ -1855,39 +1846,6 @@ You'll notice the color values in multiple places outside this as well.
|
|||||||
}
|
}
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
** Hyprexpo
|
|
||||||
hyprexpo gets installed and configured
|
|
||||||
#+begin_src nix :tangle home/desktop/hyprexpo.nix :noweb tangle :mkdirp yes.
|
|
||||||
{ config, lib, pkgs, ... }:
|
|
||||||
{
|
|
||||||
wayland.windowManager.hyprland = {
|
|
||||||
# Load the Hyprexpo plugin (from nixpkgs)
|
|
||||||
plugins = [
|
|
||||||
pkgs.hyprlandPlugins.hyprexpo
|
|
||||||
];
|
|
||||||
|
|
||||||
# Append plugin config + keybind after your existing hyprland.conf
|
|
||||||
extraConfig = lib.mkAfter ''
|
|
||||||
############################
|
|
||||||
# Hyprexpo (workspace/window overview)
|
|
||||||
############################
|
|
||||||
|
|
||||||
# Basic plugin config (tweak as you like)
|
|
||||||
plugin {
|
|
||||||
hyprexpo {
|
|
||||||
columns = 3
|
|
||||||
gaps_in = 5
|
|
||||||
gaps_out = 20
|
|
||||||
|
|
||||||
# Comment out if you don't want it
|
|
||||||
workspace_method = center current
|
|
||||||
}
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
}
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
** Alacritty
|
** Alacritty
|
||||||
Alacritty gets installed and configured
|
Alacritty gets installed and configured
|
||||||
#+begin_src nix :tangle home/dev/alacritty.nix :noweb tangle :mkdirp yes.
|
#+begin_src nix :tangle home/dev/alacritty.nix :noweb tangle :mkdirp yes.
|
||||||
|
|||||||
@@ -1,131 +0,0 @@
|
|||||||
; thunar GtkAccelMap rc-file -*- scheme -*-
|
|
||||||
; this file is an automated accelerator map dump
|
|
||||||
;
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarDetailsView/expandable-folders" "")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarBookmarks/f4f9b7c05a683015a19351e94cf07e3d" "")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarStandardView/sort-by-type" "")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarStatusBar/toggle-last-modified" "")
|
|
||||||
; (gtk_accel_path "<Actions>/Thunarwindow/menu" "")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarActionManager/cut" "<Primary>x")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarStandardView/sort-by-size" "")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarWindow/file-menu" "")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarWindow/close-tab" "<Primary>w")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarWindow/switch-previous-tab-alt" "<Primary><Shift>ISO_Left_Tab")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarStatusBar/toggle-size" "")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarWindow/new-window" "<Primary>n")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarWindow/clear-directory-specific-settings" "")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarWindow/close-window" "<Primary>q")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarWindow/open-parent" "<Alt>Up")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarWindow/view-side-pane-menu" "")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarStatusBar/toggle-size-in-bytes" "")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarWindow/switch-previous-tab" "<Primary>Page_Up")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarActionManager/open" "<Primary>o")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarStandardView/sort-ascending" "")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarWindow/toggle-split-view" "F3")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarActionManager/copy-2" "<Primary>Insert")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarActionManager/trash-delete" "Delete")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarWindow/open-recent" "")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarWindow/view-configure-toolbar" "")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarStandardView/forward" "<Alt>Right")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarActionManager/restore" "")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarWindow/open-location-alt" "<Alt>d")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarWindow/zoom-out-alt" "<Primary>KP_Subtract")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarStandardView/select-by-pattern" "<Primary>s")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarWindow/open-file-menu" "F10")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarWindow/contents" "F1")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarWindow/show-highlight" "")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarStandardView/sort-descending" "")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarStandardView/sort-by-name" "")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarBookmarks/b642744ba505349eb43f3232902f4a96" "")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarStandardView/select-all-files" "<Primary>a")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarActionManager/execute" "")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarStandardView/properties" "<Alt>Return")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarActionManager/cut-2" "")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarStandardView/sort-by-dtime" "")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarBookmarks/51e116aa815495db13c58c73eec99304" "")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarWindow/switch-next-tab" "<Primary>Page_Down")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarWindow/open-templates" "")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarActionManager/paste-2" "<Shift>Insert")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarStatusBar/toggle-filetype" "")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarWindow/close-all-windows" "<Primary><Shift>w")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarStandardView/create-document" "")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarWindow/detach-tab" "")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarWindow/cancel-search" "Escape")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarWindow/zoom-in-alt2" "<Primary>equal")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarStatusBar/toggle-hidden-count" "")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarShortcutsPane/sendto-shortcuts" "<Primary>d")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarActionManager/undo" "<Primary>z")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarBookmarks/f08c8da7eedf52bf1705513340708bed" "")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarStandardView/toggle-sort-order" "")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarWindow/view-location-selector-entry" "")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarActionManager/paste" "<Primary>v")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarWindow/zoom-in-alt1" "<Primary>KP_Add")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarWindow/view-menubar" "<Primary>m")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarStandardView/back" "<Alt>Left")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarWindow/open-desktop" "")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarWindow/view-as-detailed-list" "<Primary>2")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarActionManager/restore-show" "")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarWindow/sendto-menu" "")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarStatusBar/toggle-display-name" "")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarWindow/go-menu" "")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarWindow/zoom-out" "<Primary>minus")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarWindow/remove-from-recent" "")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarActionManager/open-with-other" "")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarStandardView/invert-selection" "<Primary><Shift>i")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarWindow/view-side-pane-shortcuts" "<Primary>b")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarWindow/reload-alt-2" "Reload")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarWindow/view-location-selector-menu" "")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarStandardView/sort-by-mtime" "")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarWindow/edit-menu" "")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarActionManager/copy" "<Primary>c")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarWindow/bookmarks-menu" "")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarStandardView/forward-alt" "Forward")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarActionManager/move-to-trash" "")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarWindow/reload-alt-1" "F5")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarActionManager/delete-3" "<Shift>KP_Delete")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarWindow/reload" "<Primary>r")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarStandardView/arrange-items-menu" "")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarStandardView/unselect-all-files" "Escape")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarWindow/open-computer" "")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarWindow/toggle-image-preview" "")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarWindow/toggle-side-pane" "F9")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarWindow/view-as-icons" "<Primary>1")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarActionManager/delete-2" "<Shift>Delete")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarWindow/zoom-in" "<Primary>plus")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarStandardView/configure-columns" "")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarStandardView/rename" "F2")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarWindow/open-location" "<Primary>l")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarWindow/view-as-compact-list" "<Primary>3")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarWindow/view-menu" "")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarWindow/search" "<Primary>f")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarWindow/new-tab" "<Primary>t")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarWindow/zoom-reset" "<Primary>0")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarWindow/contents/help-menu" "")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarActionManager/open-in-new-tab" "<Primary><Shift>p")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarWindow/view-location-selector-buttons" "")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarStandardView/back-alt2" "Back")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarActionManager/redo" "<Primary><Shift>z")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarWindow/open-trash" "")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarActionManager/open-in-new-window" "<Primary><Shift>o")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarWindow/view-statusbar" "")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarActionManager/open-location" "")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarStandardView/duplicate" "")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarActionManager/trash-delete-2" "KP_Delete")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarStandardView/back-alt1" "BackSpace")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarStandardView/create-folder" "<Primary><Shift>n")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarWindow/open-home" "<Alt>Home")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarWindow/switch-focused-split-view-pane" "")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarWindow/show-hidden" "<Primary>h")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarStandardView/set-default-app" "")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarWindow/empty-trash" "")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarWindow/preferences" "")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarActionManager/delete" "")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarWindow/open-network" "")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarWindow/view-side-pane-tree" "<Primary>e")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarWindow/open-file-system" "")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarWindow/search-alt" "Search")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarWindow/switch-next-tab-alt" "<Primary>Tab")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarActionManager/sendto-desktop" "")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarStandardView/make-link" "")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarWindow/zoom-reset-alt" "<Primary>KP_0")
|
|
||||||
; (gtk_accel_path "<Actions>/ThunarWindow/about" "")
|
|
||||||
@@ -1,31 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<actions>
|
|
||||||
<action>
|
|
||||||
<icon>utilities-terminal</icon>
|
|
||||||
<name>Open Terminal Here</name>
|
|
||||||
<submenu></submenu>
|
|
||||||
<unique-id>1771155705496049-1</unique-id>
|
|
||||||
<command>exo-open --working-directory %f --launch TerminalEmulator</command>
|
|
||||||
<description>Example for a custom action</description>
|
|
||||||
<range></range>
|
|
||||||
<patterns>*</patterns>
|
|
||||||
<startup-notify/>
|
|
||||||
<directories/>
|
|
||||||
</action>
|
|
||||||
<action>
|
|
||||||
<icon></icon>
|
|
||||||
<name>Copy Full Path</name>
|
|
||||||
<submenu></submenu>
|
|
||||||
<unique-id>1771928240025354-1</unique-id>
|
|
||||||
<command>sh -c 'printf "%s" "%f" | wl-copy'</command>
|
|
||||||
<description>Copy Full Path</description>
|
|
||||||
<range>*</range>
|
|
||||||
<patterns>*</patterns>
|
|
||||||
<directories/>
|
|
||||||
<audio-files/>
|
|
||||||
<image-files/>
|
|
||||||
<other-files/>
|
|
||||||
<text-files/>
|
|
||||||
<video-files/>
|
|
||||||
</action>
|
|
||||||
</actions>
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
[filter "lfs"]
|
|
||||||
clean = "git-lfs clean -- %f"
|
|
||||||
process = "git-lfs filter-process"
|
|
||||||
required = true
|
|
||||||
smudge = "git-lfs smudge -- %f"
|
|
||||||
@@ -1,311 +0,0 @@
|
|||||||
exec-once = /nix/store/c9cnbxhxbagj7gfpc1g5hl4x4f8dzayv-dbus-1.16.2/bin/dbus-update-activation-environment --systemd DISPLAY HYPRLAND_INSTANCE_SIGNATURE WAYLAND_DISPLAY XDG_CURRENT_DESKTOP XDG_SESSION_TYPE && systemctl --user stop hyprland-session.target && systemctl --user start hyprland-session.target
|
|
||||||
exec-once=hyprctl plugin load /nix/store/pp3nj4j10p34f3hx2kdwd6m3yxzkaygd-hyprscrolling-0.53.0/lib/libhyprscrolling.so
|
|
||||||
exec-once=hyprctl plugin load /nix/store/bmrcf2a9sa5adbgmlg38kgzssj7s5wjz-hyprexpo-0.53.0/lib/libhyprexpo.so
|
|
||||||
source=/nix/store/mjbgcv2gizslspivcnr7bpqi7igrs75z-catppuccin-hyprland-0-unstable-2024-06-19/mocha.conf
|
|
||||||
source=/nix/store/09fs6r6g6l8s3a433bzqwbjgp8d5dal1-hyprland-blue-accent.conf
|
|
||||||
windowrule=match:class nm-connection-editor, float 1, center 1, size 900 700
|
|
||||||
source = /home/henrov/.config/hypr/conf.d/90-hyprscrolling.conf
|
|
||||||
|
|
||||||
##############################################
|
|
||||||
# These files are just for reference.
|
|
||||||
# If you want to change anything definitive, edit the source files in:
|
|
||||||
# ~/henrovnix/assets/conf
|
|
||||||
# Temporarily(!) testing can by editing this file, edit the file and reloading hyprshell
|
|
||||||
#
|
|
||||||
# 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>
|
|
||||||
#
|
|
||||||
# If everything still works, you can use the same command but:
|
|
||||||
# - keep "switch"
|
|
||||||
# - and add a reboot:
|
|
||||||
#
|
|
||||||
# cd ~/henrovnix && sudo nixos-rebuild switch --flake .#<yourhost> && systemctl reboot
|
|
||||||
#
|
|
||||||
# NOTE:
|
|
||||||
# Make sure the lines starting with: cd ~/henrovnix
|
|
||||||
# are written as ONE single line.
|
|
||||||
###############################################
|
|
||||||
|
|
||||||
############################
|
|
||||||
# Variables
|
|
||||||
############################
|
|
||||||
|
|
||||||
# Colors (Hyprland "col" values commonly use rgba(aarrggbb)-style hex)
|
|
||||||
# See Hyprland variable / type docs for color formats & bools. :contentReference[oaicite:2]{index=2}
|
|
||||||
$base = rgba(1e1e2eff)
|
|
||||||
$inactive = rgba(595959aa)
|
|
||||||
$blue = rgba(33ccffee)
|
|
||||||
$green = rgba(00ff99ee)
|
|
||||||
|
|
||||||
# Recommended for correct environment in systemd user session / portals. :contentReference[oaicite:4]{index=4}
|
|
||||||
exec-once = dbus-update-activation-environment --systemd --all
|
|
||||||
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 {
|
|
||||||
follow_mouse = 1
|
|
||||||
kb_layout = us
|
|
||||||
kb_options = ctrl:nocaps
|
|
||||||
sensitivity = -0.5
|
|
||||||
accel_profile = adaptive
|
|
||||||
scroll_factor = 0.5
|
|
||||||
touchpad {
|
|
||||||
natural_scroll = yes
|
|
||||||
scroll_factor = 0.5
|
|
||||||
}
|
|
||||||
}
|
|
||||||
cursor {
|
|
||||||
no_hardware_cursors = true
|
|
||||||
}
|
|
||||||
general {
|
|
||||||
gaps_in = 2
|
|
||||||
gaps_out = 4
|
|
||||||
border_size = 2
|
|
||||||
# Gradient syntax: color color angle (e.g. 45deg). :contentReference[oaicite:5]{index=5}
|
|
||||||
col.active_border = $blue $green 45deg
|
|
||||||
col.inactive_border = $inactive
|
|
||||||
layout = scrolling
|
|
||||||
resize_on_border = true
|
|
||||||
extend_border_grab_area = 20 # Makes it easier to "grab" the edge
|
|
||||||
}
|
|
||||||
decoration {
|
|
||||||
rounding = 5
|
|
||||||
blur {
|
|
||||||
enabled = yes
|
|
||||||
size = 8
|
|
||||||
passes = 3
|
|
||||||
new_optimizations = on
|
|
||||||
}
|
|
||||||
}
|
|
||||||
animations {
|
|
||||||
enabled = yes
|
|
||||||
bezier = myBezier, 0.05, 0.9, 0.1, 1.05
|
|
||||||
animation = windows, 1, 7, myBezier
|
|
||||||
animation = windowsOut, 1, 7, default, popin 80%
|
|
||||||
animation = border, 1, 10, default
|
|
||||||
animation = borderangle, 1, 8, default
|
|
||||||
animation = fade, 1, 7, default
|
|
||||||
animation = workspaces, 1, 6, default
|
|
||||||
}
|
|
||||||
dwindle {
|
|
||||||
pseudotile = yes
|
|
||||||
preserve_split = yes
|
|
||||||
}
|
|
||||||
misc {
|
|
||||||
disable_hyprland_logo = false
|
|
||||||
focus_on_activate = true
|
|
||||||
}
|
|
||||||
# Start required session helpers
|
|
||||||
exec-once = hypridle
|
|
||||||
exec-once = hyprpolkitagent
|
|
||||||
# Lid close: lock only if no external monitor is connected
|
|
||||||
bindl = , switch:on:Lid Switch, exec, ~/.config/hypr/scripts/lid-lock.sh
|
|
||||||
# Lid open: turn DPMS back on (does not unlock)
|
|
||||||
bindl = , switch:off:Lid Switch, exec, hyprctl dispatch dpms on
|
|
||||||
|
|
||||||
exec-once = systemd-run --user --scope --unit=elephant elephant
|
|
||||||
exec-once = ~/.config/hypr/scripts/hyprscrolling-listener.sh
|
|
||||||
|
|
||||||
# --- Repo keybindings ---
|
|
||||||
##############################################
|
|
||||||
# These files are just for reference.
|
|
||||||
# If you want to change anything, edit the source files in:
|
|
||||||
# ~/henrovnix/assets/conf
|
|
||||||
#
|
|
||||||
# Temporarily(!) testing can by editing this file, edit the file and reloading hyprshell
|
|
||||||
# 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>
|
|
||||||
#
|
|
||||||
# If everything still works, you can use the same command but:
|
|
||||||
# - keep "switch"
|
|
||||||
# - and add a reboot:
|
|
||||||
#
|
|
||||||
# cd ~/henrovnix && sudo nixos-rebuild switch --flake .#<yourhost> && systemctl reboot
|
|
||||||
#
|
|
||||||
# Make sure the lines starting with: cd ~/henrovnix
|
|
||||||
# are written as ONE single line.
|
|
||||||
###############################################
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Keybindings #
|
|
||||||
###############
|
|
||||||
|
|
||||||
$mainMod = SUPER
|
|
||||||
|
|
||||||
# use walker to show exec menu
|
|
||||||
bind = $mainMod, Space , exec, walker
|
|
||||||
bind = $mainMod, P, pseudo
|
|
||||||
bind = $mainMod, T, togglesplit
|
|
||||||
|
|
||||||
# grimblast
|
|
||||||
bind = $mainMod SHIFT, p, exec, grimblast -n -f copysave active
|
|
||||||
bind = $mainMod SHIFT, a, exec, grimblast -n -f copysave area
|
|
||||||
bind = $mainMod ALT, p, exec, grimblast -n -f copysave output
|
|
||||||
bind = $mainMod CTRL, p, exec, grimblast -n -f copysave screen
|
|
||||||
|
|
||||||
# Terminal / launcher / kill / reload
|
|
||||||
bind = $mainMod, E, exec, thunar
|
|
||||||
bind = $mainMod, RETURN, exec, kitty
|
|
||||||
bind = $mainMod, D, exec, wofi --show drun
|
|
||||||
bind = $mainMod, Q, killactive,
|
|
||||||
bind = $mainMod SHIFT, Q, exit,
|
|
||||||
bind = $mainMod SHIFT, R, exec, hyprctl reload
|
|
||||||
|
|
||||||
# Switch windows
|
|
||||||
bind = $mainMod, TAB, hyprexpo:expo, toggle
|
|
||||||
bind = ALT, TAB, cyclenext,
|
|
||||||
# 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
|
|
||||||
bind = $mainMod, H, movefocus, l
|
|
||||||
bind = $mainMod, L, movefocus, r
|
|
||||||
bind = $mainMod, K, movefocus, u
|
|
||||||
bind = $mainMod, J, movefocus, d
|
|
||||||
bind = $mainMod, left, movefocus, l
|
|
||||||
bind = $mainMod, right, movefocus, r
|
|
||||||
bind = $mainMod, up, movefocus, u
|
|
||||||
bind = $mainMod, down, movefocus, d
|
|
||||||
|
|
||||||
# Move windows
|
|
||||||
bind = $mainMod SHIFT, H, movewindow, l
|
|
||||||
bind = $mainMod SHIFT, L, movewindow, r
|
|
||||||
bind = $mainMod SHIFT, K, movewindow, u
|
|
||||||
bind = $mainMod SHIFT, J, movewindow, d
|
|
||||||
bind = $mainMod SHIFT, left, movewindow, l
|
|
||||||
bind = $mainMod SHIFT, right, movewindow, r
|
|
||||||
bind = $mainMod SHIFT, up, movewindow, u
|
|
||||||
bind = $mainMod SHIFT, down, movewindow, d
|
|
||||||
|
|
||||||
# Resize windows
|
|
||||||
bind = $mainMod CTRL, H, resizeactive, -30 0
|
|
||||||
bind = $mainMod CTRL, L, resizeactive, 30 0
|
|
||||||
bind = $mainMod CTRL, K, resizeactive, 0 -30
|
|
||||||
bind = $mainMod CTRL, J, resizeactive, 0 30
|
|
||||||
|
|
||||||
# Floating / fullscreen
|
|
||||||
bind = $mainMod, V, togglefloating,
|
|
||||||
bind = $mainMod, F, fullscreen, 0
|
|
||||||
bind = $mainMod SHIFT, F, fullscreen, 1
|
|
||||||
|
|
||||||
# Workspaces
|
|
||||||
bind = $mainMod, 1, workspace, 1
|
|
||||||
bind = $mainMod, 2, workspace, 2
|
|
||||||
bind = $mainMod, 3, workspace, 3
|
|
||||||
bind = $mainMod, 4, workspace, 4
|
|
||||||
bind = $mainMod, 5, workspace, 5
|
|
||||||
bind = $mainMod, 6, workspace, 6
|
|
||||||
bind = $mainMod, 7, workspace, 7
|
|
||||||
bind = $mainMod, 8, workspace, 8
|
|
||||||
bind = $mainMod, 9, workspace, 9
|
|
||||||
bind = $mainMod, 0, workspace, 10
|
|
||||||
|
|
||||||
bind = $mainMod SHIFT, 1, movetoworkspace, 1
|
|
||||||
bind = $mainMod SHIFT, 2, movetoworkspace, 2
|
|
||||||
bind = $mainMod SHIFT, 3, movetoworkspace, 3
|
|
||||||
bind = $mainMod SHIFT, 4, movetoworkspace, 4
|
|
||||||
bind = $mainMod SHIFT, 5, movetoworkspace, 5
|
|
||||||
bind = $mainMod SHIFT, 6, movetoworkspace, 6
|
|
||||||
bind = $mainMod SHIFT, 7, movetoworkspace, 7
|
|
||||||
bind = $mainMod SHIFT, 8, movetoworkspace, 8
|
|
||||||
bind = $mainMod SHIFT, 9, movetoworkspace, 9
|
|
||||||
bind = $mainMod SHIFT, 0, movetoworkspace, 10
|
|
||||||
|
|
||||||
# Cycle workspaces
|
|
||||||
bind = $mainMod, mouse_down, workspace, e+1
|
|
||||||
bind = $mainMod, mouse_up, workspace, e-1
|
|
||||||
|
|
||||||
# Mouse drag
|
|
||||||
bindm = $mainMod, mouse:272, movewindow
|
|
||||||
bindm = $mainMod, mouse:273, resizewindow
|
|
||||||
|
|
||||||
#########################
|
|
||||||
# Screenshots
|
|
||||||
#########################
|
|
||||||
bind = $mainMod SHIFT, s, exec, grim -g "$(slurp)" - | wl-copy
|
|
||||||
bind = , XF86Screenshot, exec, grim - | wl-copy
|
|
||||||
|
|
||||||
#########################
|
|
||||||
# Audio (pamixer)
|
|
||||||
#########################
|
|
||||||
bind = , XF86AudioRaiseVolume, exec, pamixer -i 5
|
|
||||||
bind = , XF86AudioLowerVolume, exec, pamixer -d 5
|
|
||||||
bind = , XF86AudioMute, exec, pamixer -t
|
|
||||||
bind = , XF86AudioMicMute, exec, pamixer --default-source -t
|
|
||||||
|
|
||||||
#########################
|
|
||||||
# Media (playerctl)
|
|
||||||
#########################
|
|
||||||
bind = , XF86AudioPlay, exec, playerctl play-pause
|
|
||||||
bind = , XF86AudioPause, exec, playerctl pause
|
|
||||||
bind = , XF86AudioNext, exec, playerctl next
|
|
||||||
bind = , XF86AudioPrev, exec, playerctl previous
|
|
||||||
bind = , XF86AudioStop, exec, playerctl stop
|
|
||||||
|
|
||||||
#########################
|
|
||||||
# Brightness (brightnessctl)
|
|
||||||
#########################
|
|
||||||
bind = , XF86MonBrightnessUp, exec, brightnessctl set +10%
|
|
||||||
bind = , XF86MonBrightnessDown, exec, brightnessctl set 10%-
|
|
||||||
bind = , XF86KbdBrightnessUp, exec, brightnessctl -d '*kbd_backlight*' set +10%
|
|
||||||
bind = , XF86KbdBrightnessDown, exec, brightnessctl -d '*kbd_backlight*' set 10%-
|
|
||||||
|
|
||||||
#########################
|
|
||||||
# Power / session
|
|
||||||
#########################
|
|
||||||
bind = , XF86Sleep, exec, systemctl suspend
|
|
||||||
bind = , XF86PowerOff, exec, systemctl poweroff
|
|
||||||
bind = , XF86WakeUp, exec, systemctl suspend
|
|
||||||
bind = $mainMod, L, exec, loginctl lock-session
|
|
||||||
bind = $mainMod, X, exec, ~/.config/hypr/scripts/powermenu.sh
|
|
||||||
|
|
||||||
#########################
|
|
||||||
# Laptop lid settings
|
|
||||||
#########################
|
|
||||||
bindl = , switch:on:Lid Switch, exec, ~/.config/hypr/scripts/lid-action.sh
|
|
||||||
bindl = , switch:off:Lid Switch, exec, ~/.config/hypr/scripts/lid-restore.sh
|
|
||||||
|
|
||||||
#########################
|
|
||||||
# Start apps
|
|
||||||
#########################
|
|
||||||
bind = CTRL ALT, B, exec, flatpak run eu.betterbird.Betterbird
|
|
||||||
bind = CTRL ALT, S, exec, spotify
|
|
||||||
bind = $mainMod, z, exec, zeditor
|
|
||||||
bind = $mainMod, w, exec, zen --url https://nextcloud.data-pro.nu
|
|
||||||
|
|
||||||
|
|
||||||
# Default portable monitor rule
|
|
||||||
monitor=DP-1,3840x1080@144,1920x0,1
|
|
||||||
|
|
||||||
############################
|
|
||||||
# Hyprexpo (workspace/window overview)
|
|
||||||
############################
|
|
||||||
|
|
||||||
# Basic plugin config (tweak as you like)
|
|
||||||
plugin {
|
|
||||||
hyprexpo {
|
|
||||||
columns = 3
|
|
||||||
gaps_in = 5
|
|
||||||
gaps_out = 20
|
|
||||||
|
|
||||||
# Optional; comment out if you don't want it
|
|
||||||
# workspace_method = center current
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
w-1= /home/henrov/nixos_conf/wallpaperstuff/pictures/1.jpg
|
|
||||||
w-2= /home/henrov/nixos_conf/wallpaperstuff/pictures/2.jpg
|
|
||||||
w-3= /home/henrov/nixos_conf/wallpaperstuff/pictures/3.jpg
|
|
||||||
w-4= /home/henrov/nixos_conf/wallpaperstuff/pictures/4.png
|
|
||||||
w-5= /home/henrov/nixos_conf/wallpaperstuff/pictures/5.jpg
|
|
||||||
w-6= /home/henrov/nixos_conf/wallpaperstuff/pictures/6.jpg
|
|
||||||
w-7= /home/henrov/nixos_conf/wallpaperstuff/pictures/7.jpg
|
|
||||||
w-8= /home/henrov/nixos_conf/wallpaperstuff/pictures/8.jpg
|
|
||||||
w-9= /home/henrov/nixos_conf/wallpaperstuff/pictures/9.jpg
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
w-1= /home/henrov/nixos_conf/wallpaperstuff/pictures/1.jpg
|
|
||||||
w-2= /home/henrov/nixos_conf/wallpaperstuff/pictures/2.jpg
|
|
||||||
w-3= /home/henrov/nixos_conf/wallpaperstuff/pictures/3.jpg
|
|
||||||
w-4= /home/henrov/nixos_conf/wallpaperstuff/pictures/4.png
|
|
||||||
w-5= /home/henrov/nixos_conf/wallpaperstuff/pictures/5.jpg
|
|
||||||
w-6= /home/henrov/nixos_conf/wallpaperstuff/pictures/6.jpg
|
|
||||||
w-7= /home/henrov/nixos_conf/wallpaperstuff/pictures/7.jpg
|
|
||||||
w-8= /home/henrov/nixos_conf/wallpaperstuff/pictures/8.jpg
|
|
||||||
w-9= /home/henrov/nixos_conf/wallpaperstuff/pictures/9.jpg
|
|
||||||
|
Before Width: | Height: | Size: 406 KiB |
@@ -1,25 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
INTERNAL="eDP1"
|
|
||||||
|
|
||||||
has_external() {
|
|
||||||
# Any monitor name that is not INTERNAL counts as external
|
|
||||||
hyprctl monitors -j | grep -q '"name"' && ! hyprctl monitors -j | grep -q "\"name\":\"$INTERNAL\"\""
|
|
||||||
}
|
|
||||||
|
|
||||||
has_external_robust() {
|
|
||||||
# robust without jq: count monitor names; if there's >1 OR there's a name not INTERNAL
|
|
||||||
local names
|
|
||||||
names="$(hyprctl monitors -j | sed -n 's/.*"name":"\([^"]*\)".*/\1/p')"
|
|
||||||
# if any name != INTERNAL then external
|
|
||||||
echo "$names" | grep -vx "$INTERNAL" >/dev/null 2>&1
|
|
||||||
}
|
|
||||||
|
|
||||||
if has_external_robust; then
|
|
||||||
# Clamshell: disable laptop panel, no lock
|
|
||||||
hyprctl keyword monitor "${INTERNAL},disable"
|
|
||||||
else
|
|
||||||
# Laptop only: suspend
|
|
||||||
systemctl suspend
|
|
||||||
fi
|
|
||||||
@@ -1,36 +0,0 @@
|
|||||||
#!/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
|
|
||||||
@@ -1,71 +0,0 @@
|
|||||||
// Edit with `hyprshell config edit` <-- GUI app, resize!
|
|
||||||
(
|
|
||||||
version: 3,
|
|
||||||
windows: (
|
|
||||||
scale: 8.5,
|
|
||||||
items_per_row: 5 ,
|
|
||||||
overview: (
|
|
||||||
launcher: (
|
|
||||||
default_terminal: None,
|
|
||||||
launch_modifier: "ctrl",
|
|
||||||
width: 800,
|
|
||||||
max_items: 5,
|
|
||||||
show_when_empty: true,
|
|
||||||
plugins: (
|
|
||||||
applications: (
|
|
||||||
run_cache_weeks: 8,
|
|
||||||
show_execs: true,
|
|
||||||
show_actions_submenu: true,
|
|
||||||
),
|
|
||||||
terminal: None,
|
|
||||||
shell: None,
|
|
||||||
websearch: None,
|
|
||||||
calc: (),
|
|
||||||
path: (),
|
|
||||||
actions: (
|
|
||||||
actions: [
|
|
||||||
lock_screen,
|
|
||||||
hibernate,
|
|
||||||
logout,
|
|
||||||
reboot,
|
|
||||||
shutdown,
|
|
||||||
suspend,
|
|
||||||
custom(
|
|
||||||
names: [
|
|
||||||
"Kill",
|
|
||||||
"Stop",
|
|
||||||
],
|
|
||||||
details: "Kill or stop a process by name",
|
|
||||||
command: "pkill \"{}\" && notify-send hyprshell \"stopped {}\"",
|
|
||||||
icon: "remove",
|
|
||||||
),
|
|
||||||
custom(
|
|
||||||
names: [
|
|
||||||
"Reload Hyprshell",
|
|
||||||
],
|
|
||||||
details: "Reload Hyprshell",
|
|
||||||
command: "sleep 1; hyprshell socat \'\"Restart\"\'",
|
|
||||||
icon: "system-restart",
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
key: "Super_L",
|
|
||||||
modifier: "super",
|
|
||||||
filter_by: [],
|
|
||||||
hide_filtered: false,
|
|
||||||
exclude_special_workspaces: "",
|
|
||||||
),
|
|
||||||
switch: (
|
|
||||||
modifier: "alt",
|
|
||||||
key: "Tab",
|
|
||||||
filter_by: [
|
|
||||||
current_monitor,
|
|
||||||
],
|
|
||||||
switch_workspaces: false,
|
|
||||||
exclude_special_workspaces: "",
|
|
||||||
),
|
|
||||||
switch_2: None,
|
|
||||||
),
|
|
||||||
)
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
window {
|
|
||||||
background: rgba(20, 20, 20, 0.92);
|
|
||||||
border-radius: 18px;
|
|
||||||
}
|
|
||||||
|
|
||||||
* {
|
|
||||||
background-color: unset;
|
|
||||||
}
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIIBnTCCAUSgAwIBAgIUH22zKyfwunPmVhN8fQFqDve51bswCgYIKoZIzj0EAwQw
|
|
||||||
TzEpMCcGA1UEAwwgMWU1Y2ZhMDdiNTQxNDQ5OWE4Yzg0YTIzMzFjYTkyY2QxDDAK
|
|
||||||
BgNVBAoMA0tERTEUMBIGA1UECwwLS0RFIENvbm5lY3QwHhcNMjUwMjE2MTU1NjI2
|
|
||||||
WhcNMzYwMjE0MTU1NjI2WjBPMSkwJwYDVQQDDCAxZTVjZmEwN2I1NDE0NDk5YThj
|
|
||||||
ODRhMjMzMWNhOTJjZDEMMAoGA1UECgwDS0RFMRQwEgYDVQQLDAtLREUgQ29ubmVj
|
|
||||||
dDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABMFIBTF9LuWEQIoTOD6lxKUzLQQ1
|
|
||||||
gVfkpoMCSO3m6TKawSqz5RIkL46lPb3dhRs9GPz7RlqV00GNzj7sVcOmMHgwCgYI
|
|
||||||
KoZIzj0EAwQDRwAwRAIgJfSj4nXAVB7EEIt1xJVo5fnqPsLoUK3ina34JIXkAu4C
|
|
||||||
IApwICWB8PgU209qhYWFLVU5DWuFt1vF3Cql/ijSUW0y
|
|
||||||
-----END CERTIFICATE-----
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
[General]
|
|
||||||
keyAlgorithm=EC
|
|
||||||
name=nixos
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
-----BEGIN EC PRIVATE KEY-----
|
|
||||||
MHcCAQEEIIbKpOVq1bq2oO0xZ/nOt6VYQRafML7fh5id4IxYqmd+oAoGCCqGSM49
|
|
||||||
AwEHoUQDQgAEwUgFMX0u5YRAihM4PqXEpTMtBDWBV+SmgwJI7ebpMprBKrPlEiQv
|
|
||||||
jqU9vd2FGz0Y/PtGWpXTQY3OPuxVw6YweA==
|
|
||||||
-----END EC PRIVATE KEY-----
|
|
||||||
@@ -1,46 +0,0 @@
|
|||||||
# Generated by Home Manager.
|
|
||||||
# See https://sw.kovidgoyal.net/kitty/conf.html
|
|
||||||
include /nix/store/inyp0v9sjc28ndwjbd4lkh80zw2av0nc-kitty-themes-0-unstable-2026-02-01/share/kitty-themes/themes/Catppuccin-Mocha.conf
|
|
||||||
|
|
||||||
# Shell integration is sourced and configured manually
|
|
||||||
shell_integration no-rc
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# 1) Theme first (stable path)
|
|
||||||
include themes/Catppuccin-Mocha.conf
|
|
||||||
# 2) Your repo config (may also include theme; harmless if duplicated)
|
|
||||||
##############################################
|
|
||||||
# These files are just for reference.
|
|
||||||
# If you want to change anything, edit the source files in:
|
|
||||||
# ~/henrovnix/assets/conf
|
|
||||||
#
|
|
||||||
# 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>
|
|
||||||
#
|
|
||||||
# If everything still works, you can use the same command but:
|
|
||||||
# - keep "switch"
|
|
||||||
# - and add a reboot:
|
|
||||||
#
|
|
||||||
# cd ~/henrovnix && sudo nixos-rebuild switch --flake .#<yourhost> && systemctl reboot
|
|
||||||
#
|
|
||||||
# NOTE:
|
|
||||||
# Make sure the lines starting with: cd ~/henrovnix
|
|
||||||
# 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
|
|
||||||
|
|
||||||
# 3) Force transparency last (wins)
|
|
||||||
#background_opacity 0.60
|
|
||||||
#dynamic_background_opacity yes
|
|
||||||
|
|
||||||
@@ -1,84 +0,0 @@
|
|||||||
# 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,279 +0,0 @@
|
|||||||
"$schema" = 'https://starship.rs/config-schema.json'
|
|
||||||
|
|
||||||
format = """
|
|
||||||
[](red)\
|
|
||||||
$os\
|
|
||||||
$username\
|
|
||||||
[](bg:peach fg:red)\
|
|
||||||
$directory\
|
|
||||||
[](bg:yellow fg:peach)\
|
|
||||||
$git_branch\
|
|
||||||
$git_status\
|
|
||||||
[](fg:yellow bg:green)\
|
|
||||||
$c\
|
|
||||||
$rust\
|
|
||||||
$golang\
|
|
||||||
$nodejs\
|
|
||||||
$php\
|
|
||||||
$java\
|
|
||||||
$kotlin\
|
|
||||||
$haskell\
|
|
||||||
$python\
|
|
||||||
[](fg:green bg:sapphire)\
|
|
||||||
$conda\
|
|
||||||
[](fg:sapphire bg:lavender)\
|
|
||||||
$time\
|
|
||||||
[ ](fg:lavender)\
|
|
||||||
$cmd_duration\
|
|
||||||
$line_break\
|
|
||||||
$character"""
|
|
||||||
|
|
||||||
palette = 'catppuccin_mocha'
|
|
||||||
|
|
||||||
[os]
|
|
||||||
disabled = false
|
|
||||||
style = "bg:red fg:crust"
|
|
||||||
|
|
||||||
[os.symbols]
|
|
||||||
Windows = ""
|
|
||||||
Ubuntu = ""
|
|
||||||
SUSE = ""
|
|
||||||
Raspbian = ""
|
|
||||||
Mint = ""
|
|
||||||
Macos = ""
|
|
||||||
Manjaro = ""
|
|
||||||
Linux = ""
|
|
||||||
Gentoo = ""
|
|
||||||
Fedora = ""
|
|
||||||
Alpine = ""
|
|
||||||
Amazon = ""
|
|
||||||
Android = ""
|
|
||||||
AOSC = ""
|
|
||||||
Arch = ""
|
|
||||||
Artix = ""
|
|
||||||
CentOS = ""
|
|
||||||
Debian = ""
|
|
||||||
Redhat = ""
|
|
||||||
RedHatEnterprise = ""
|
|
||||||
|
|
||||||
[username]
|
|
||||||
show_always = true
|
|
||||||
style_user = "bg:red fg:crust"
|
|
||||||
style_root = "bg:red fg:crust"
|
|
||||||
format = '[ $user]($style)'
|
|
||||||
|
|
||||||
[directory]
|
|
||||||
style = "bg:peach fg:crust"
|
|
||||||
format = "[ $path ]($style)"
|
|
||||||
truncation_length = 3
|
|
||||||
truncation_symbol = "…/"
|
|
||||||
|
|
||||||
[directory.substitutions]
|
|
||||||
"Documents" = " "
|
|
||||||
"Downloads" = " "
|
|
||||||
"Music" = " "
|
|
||||||
"Pictures" = " "
|
|
||||||
"Developer" = " "
|
|
||||||
|
|
||||||
[git_branch]
|
|
||||||
symbol = ""
|
|
||||||
style = "bg:yellow"
|
|
||||||
format = '[[ $symbol $branch ](fg:crust bg:yellow)]($style)'
|
|
||||||
|
|
||||||
[git_status]
|
|
||||||
style = "bg:yellow"
|
|
||||||
format = '[[($all_status$ahead_behind )](fg:crust bg:yellow)]($style)'
|
|
||||||
|
|
||||||
[nodejs]
|
|
||||||
symbol = ""
|
|
||||||
style = "bg:green"
|
|
||||||
format = '[[ $symbol( $version) ](fg:crust bg:green)]($style)'
|
|
||||||
|
|
||||||
[c]
|
|
||||||
symbol = " "
|
|
||||||
style = "bg:green"
|
|
||||||
format = '[[ $symbol( $version) ](fg:crust bg:green)]($style)'
|
|
||||||
|
|
||||||
[rust]
|
|
||||||
symbol = ""
|
|
||||||
style = "bg:green"
|
|
||||||
format = '[[ $symbol( $version) ](fg:crust bg:green)]($style)'
|
|
||||||
|
|
||||||
[golang]
|
|
||||||
symbol = ""
|
|
||||||
style = "bg:green"
|
|
||||||
format = '[[ $symbol( $version) ](fg:crust bg:green)]($style)'
|
|
||||||
|
|
||||||
[php]
|
|
||||||
symbol = ""
|
|
||||||
style = "bg:green"
|
|
||||||
format = '[[ $symbol( $version) ](fg:crust bg:green)]($style)'
|
|
||||||
|
|
||||||
[java]
|
|
||||||
symbol = " "
|
|
||||||
style = "bg:green"
|
|
||||||
format = '[[ $symbol( $version) ](fg:crust bg:green)]($style)'
|
|
||||||
|
|
||||||
[kotlin]
|
|
||||||
symbol = ""
|
|
||||||
style = "bg:green"
|
|
||||||
format = '[[ $symbol( $version) ](fg:crust bg:green)]($style)'
|
|
||||||
|
|
||||||
[haskell]
|
|
||||||
symbol = ""
|
|
||||||
style = "bg:green"
|
|
||||||
format = '[[ $symbol( $version) ](fg:crust bg:green)]($style)'
|
|
||||||
|
|
||||||
[python]
|
|
||||||
symbol = ""
|
|
||||||
style = "bg:green"
|
|
||||||
format = '[[ $symbol( $version)(\(#$virtualenv\)) ](fg:crust bg:green)]($style)'
|
|
||||||
|
|
||||||
[docker_context]
|
|
||||||
symbol = ""
|
|
||||||
style = "bg:sapphire"
|
|
||||||
format = '[[ $symbol( $context) ](fg:crust bg:sapphire)]($style)'
|
|
||||||
|
|
||||||
[conda]
|
|
||||||
symbol = " "
|
|
||||||
style = "fg:crust bg:sapphire"
|
|
||||||
format = '[$symbol$environment ]($style)'
|
|
||||||
ignore_base = false
|
|
||||||
|
|
||||||
[time]
|
|
||||||
disabled = false
|
|
||||||
time_format = "%R"
|
|
||||||
style = "bg:lavender"
|
|
||||||
format = '[[ $time ](fg:crust bg:lavender)]($style)'
|
|
||||||
|
|
||||||
[line_break]
|
|
||||||
disabled = false
|
|
||||||
|
|
||||||
[character]
|
|
||||||
disabled = false
|
|
||||||
success_symbol = '[❯](bold fg:green)'
|
|
||||||
error_symbol = '[❯](bold fg:red)'
|
|
||||||
vimcmd_symbol = '[❮](bold fg:green)'
|
|
||||||
vimcmd_replace_one_symbol = '[❮](bold fg:lavender)'
|
|
||||||
vimcmd_replace_symbol = '[❮](bold fg:lavender)'
|
|
||||||
vimcmd_visual_symbol = '[❮](bold fg:yellow)'
|
|
||||||
|
|
||||||
[cmd_duration]
|
|
||||||
show_milliseconds = true
|
|
||||||
format = " in $duration "
|
|
||||||
style = "bg:lavender"
|
|
||||||
disabled = false
|
|
||||||
show_notifications = true
|
|
||||||
min_time_to_notify = 45000
|
|
||||||
|
|
||||||
[palettes.catppuccin_mocha]
|
|
||||||
rosewater = "#f5e0dc"
|
|
||||||
flamingo = "#f2cdcd"
|
|
||||||
pink = "#f5c2e7"
|
|
||||||
mauve = "#cba6f7"
|
|
||||||
red = "#f38ba8"
|
|
||||||
maroon = "#eba0ac"
|
|
||||||
peach = "#fab387"
|
|
||||||
yellow = "#f9e2af"
|
|
||||||
green = "#a6e3a1"
|
|
||||||
teal = "#94e2d5"
|
|
||||||
sky = "#89dceb"
|
|
||||||
sapphire = "#74c7ec"
|
|
||||||
blue = "#89b4fa"
|
|
||||||
lavender = "#b4befe"
|
|
||||||
text = "#cdd6f4"
|
|
||||||
subtext1 = "#bac2de"
|
|
||||||
subtext0 = "#a6adc8"
|
|
||||||
overlay2 = "#9399b2"
|
|
||||||
overlay1 = "#7f849c"
|
|
||||||
overlay0 = "#6c7086"
|
|
||||||
surface2 = "#585b70"
|
|
||||||
surface1 = "#45475a"
|
|
||||||
surface0 = "#313244"
|
|
||||||
base = "#1e1e2e"
|
|
||||||
mantle = "#181825"
|
|
||||||
crust = "#11111b"
|
|
||||||
|
|
||||||
[palettes.catppuccin_frappe]
|
|
||||||
rosewater = "#f2d5cf"
|
|
||||||
flamingo = "#eebebe"
|
|
||||||
pink = "#f4b8e4"
|
|
||||||
mauve = "#ca9ee6"
|
|
||||||
red = "#e78284"
|
|
||||||
maroon = "#ea999c"
|
|
||||||
peach = "#ef9f76"
|
|
||||||
yellow = "#e5c890"
|
|
||||||
green = "#a6d189"
|
|
||||||
teal = "#81c8be"
|
|
||||||
sky = "#99d1db"
|
|
||||||
sapphire = "#85c1dc"
|
|
||||||
blue = "#8caaee"
|
|
||||||
lavender = "#babbf1"
|
|
||||||
text = "#c6d0f5"
|
|
||||||
subtext1 = "#b5bfe2"
|
|
||||||
subtext0 = "#a5adce"
|
|
||||||
overlay2 = "#949cbb"
|
|
||||||
overlay1 = "#838ba7"
|
|
||||||
overlay0 = "#737994"
|
|
||||||
surface2 = "#626880"
|
|
||||||
surface1 = "#51576d"
|
|
||||||
surface0 = "#414559"
|
|
||||||
base = "#303446"
|
|
||||||
mantle = "#292c3c"
|
|
||||||
crust = "#232634"
|
|
||||||
|
|
||||||
[palettes.catppuccin_latte]
|
|
||||||
rosewater = "#dc8a78"
|
|
||||||
flamingo = "#dd7878"
|
|
||||||
pink = "#ea76cb"
|
|
||||||
mauve = "#8839ef"
|
|
||||||
red = "#d20f39"
|
|
||||||
maroon = "#e64553"
|
|
||||||
peach = "#fe640b"
|
|
||||||
yellow = "#df8e1d"
|
|
||||||
green = "#40a02b"
|
|
||||||
teal = "#179299"
|
|
||||||
sky = "#04a5e5"
|
|
||||||
sapphire = "#209fb5"
|
|
||||||
blue = "#1e66f5"
|
|
||||||
lavender = "#7287fd"
|
|
||||||
text = "#4c4f69"
|
|
||||||
subtext1 = "#5c5f77"
|
|
||||||
subtext0 = "#6c6f85"
|
|
||||||
overlay2 = "#7c7f93"
|
|
||||||
overlay1 = "#8c8fa1"
|
|
||||||
overlay0 = "#9ca0b0"
|
|
||||||
surface2 = "#acb0be"
|
|
||||||
surface1 = "#bcc0cc"
|
|
||||||
surface0 = "#ccd0da"
|
|
||||||
base = "#eff1f5"
|
|
||||||
mantle = "#e6e9ef"
|
|
||||||
crust = "#dce0e8"
|
|
||||||
|
|
||||||
[palettes.catppuccin_macchiato]
|
|
||||||
rosewater = "#f4dbd6"
|
|
||||||
flamingo = "#f0c6c6"
|
|
||||||
pink = "#f5bde6"
|
|
||||||
mauve = "#c6a0f6"
|
|
||||||
red = "#ed8796"
|
|
||||||
maroon = "#ee99a0"
|
|
||||||
peach = "#f5a97f"
|
|
||||||
yellow = "#eed49f"
|
|
||||||
green = "#a6da95"
|
|
||||||
teal = "#8bd5ca"
|
|
||||||
sky = "#91d7e3"
|
|
||||||
sapphire = "#7dc4e4"
|
|
||||||
blue = "#8aadf4"
|
|
||||||
lavender = "#b7bdf8"
|
|
||||||
text = "#cad3f5"
|
|
||||||
subtext1 = "#b8c0e0"
|
|
||||||
subtext0 = "#a5adcb"
|
|
||||||
overlay2 = "#939ab7"
|
|
||||||
overlay1 = "#8087a2"
|
|
||||||
overlay0 = "#6e738d"
|
|
||||||
surface2 = "#5b6078"
|
|
||||||
surface1 = "#494d64"
|
|
||||||
surface0 = "#363a4f"
|
|
||||||
base = "#24273a"
|
|
||||||
mantle = "#1e2030"
|
|
||||||
crust = "#181926"
|
|
||||||
@@ -1,116 +0,0 @@
|
|||||||
# Walker UI layout/theme config (Catppuccin Mocha tuned)
|
|
||||||
|
|
||||||
theme = "frosted"
|
|
||||||
debug = true
|
|
||||||
|
|
||||||
[ui]
|
|
||||||
css = "home/henrov/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
|
|
||||||
@@ -1,162 +0,0 @@
|
|||||||
/* 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);
|
|
||||||
}
|
|
||||||
@@ -1,185 +0,0 @@
|
|||||||
/* 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);
|
|
||||||
}
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
Henro
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
[preferred]
|
|
||||||
org.freedesktop.impl.portal.RemoteDesktop=hyprland
|
|
||||||
org.freedesktop.impl.portal.Screencast=hyprland
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
[preferred]
|
|
||||||
default=gtk
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
// Zed settings
|
|
||||||
//
|
|
||||||
// For information on how to configure Zed, see the Zed
|
|
||||||
// documentation: https://zed.dev/docs/configuring-zed
|
|
||||||
//
|
|
||||||
// To see all of Zed's default settings without changing your
|
|
||||||
// custom settings, run `zed: open default settings` from the
|
|
||||||
// command palette (cmd-shift-p / ctrl-shift-p)
|
|
||||||
{
|
|
||||||
"agent": {
|
|
||||||
"default_model": {
|
|
||||||
"provider": "ollama",
|
|
||||||
"model": "codellama:34b",
|
|
||||||
"enable_thinking": false
|
|
||||||
},
|
|
||||||
"favorite_models": [],
|
|
||||||
"model_parameters": []
|
|
||||||
},
|
|
||||||
"ui_font_size": 16,
|
|
||||||
"buffer_font_size": 15,
|
|
||||||
"theme": {
|
|
||||||
"mode": "system",
|
|
||||||
"light": "One Light",
|
|
||||||
"dark": "One Dark",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
@@ -1,29 +0,0 @@
|
|||||||
{
|
|
||||||
"agent": {
|
|
||||||
"default_model": {
|
|
||||||
"provider": "ollama",
|
|
||||||
"model": "starcoder2:15b"
|
|
||||||
},
|
|
||||||
"favorite_models": [],
|
|
||||||
"model_parameters": []
|
|
||||||
},
|
|
||||||
"auto_install_extensions": {
|
|
||||||
"catppuccin-icons": true,
|
|
||||||
"nix": true,
|
|
||||||
"rust": true,
|
|
||||||
"toml": true,
|
|
||||||
"org-mode": true
|
|
||||||
},
|
|
||||||
"icon_theme": "Catppuccin Mocha",
|
|
||||||
"language_models": {
|
|
||||||
"ollama": {
|
|
||||||
"api_url": "http://localhost:11434",
|
|
||||||
"auto_discover": true,
|
|
||||||
"context_window": 8192
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"theme": {
|
|
||||||
"dark": "Catppuccin Mocha (blue)",
|
|
||||||
"light": "Catppuccin Mocha (blue)"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
{
|
|
||||||
"language_models": {
|
|
||||||
"ollama": {
|
|
||||||
"api_url": "http://127.0.0.1:11434"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"agent": {
|
|
||||||
"default_model": {
|
|
||||||
"provider": "ollama",
|
|
||||||
"model": "codellama:70b"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
MISTRAL_API_KEY=CWo91GHwIClzLj6bCLQ69IioSi54PpTZ
|
|
||||||
OLLAMA_HOST=http://127.0.0.1:11434
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
{
|
|
||||||
"OLLAMA_HOST": "http://127.0.0.1:11434",
|
|
||||||
"OLLAMA_DEFAULT_MODEL": "codellama:70b",
|
|
||||||
"OLLAMA_ADDITIONAL_MODELS": "llama3.1:70b"
|
|
||||||
}
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
##############################################
|
|
||||||
# These files are just for reference.
|
|
||||||
# If you want to change anything, edit the source files in:
|
|
||||||
# ~/henrovnix/assets/conf
|
|
||||||
#
|
|
||||||
# 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>
|
|
||||||
#
|
|
||||||
# If everything still works, you can use the same command but:
|
|
||||||
# - keep "switch"
|
|
||||||
# - and add a reboot:
|
|
||||||
#
|
|
||||||
# cd ~/henrovnix && sudo nixos-rebuild switch --flake .#<yourhost> && systemctl reboot
|
|
||||||
#
|
|
||||||
# NOTE:
|
|
||||||
# Make sure the lines starting with: cd ~/henrovnix
|
|
||||||
# are written as ONE single line.
|
|
||||||
##############################################
|
|
||||||
#app.zen_browser.zen
|
|
||||||
com.github.tchx84.Flatseal
|
|
||||||
eu.betterbird.Betterbird
|
|
||||||
com.todoist.Todoist
|
|
||||||
@@ -1,79 +0,0 @@
|
|||||||
##############################################
|
|
||||||
# These files are just for reference.
|
|
||||||
# If you want to change anything, edit the source files in:
|
|
||||||
# ~/henrovnix/assets/conf
|
|
||||||
#
|
|
||||||
# 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>
|
|
||||||
#
|
|
||||||
# If everything still works, you can use the same command but:
|
|
||||||
# - keep "switch"
|
|
||||||
# - and add a reboot:
|
|
||||||
#
|
|
||||||
# cd ~/henrovnix && sudo nixos-rebuild switch --flake .#<yourhost> && systemctl reboot
|
|
||||||
#
|
|
||||||
# Make sure the lines starting with: cd ~/henrovnix
|
|
||||||
# are written as ONE single line.
|
|
||||||
#
|
|
||||||
#IMPORTANT:
|
|
||||||
# Only packages/attributes that exist in Nixpkgs can be installed.
|
|
||||||
# Check names on https://search.nixos.org/packages
|
|
||||||
# A wrong package name (or attribute path) will cause the Nix build to fail.
|
|
||||||
###############################################
|
|
||||||
|
|
||||||
|
|
||||||
# system
|
|
||||||
nixVersions.latest
|
|
||||||
wofi
|
|
||||||
xdg-utils
|
|
||||||
desktop-file-utils
|
|
||||||
playerctl
|
|
||||||
mpv
|
|
||||||
networkmanagerapplet
|
|
||||||
|
|
||||||
#productivity
|
|
||||||
todoist
|
|
||||||
|
|
||||||
# browsers
|
|
||||||
brave
|
|
||||||
vivaldi
|
|
||||||
chromium
|
|
||||||
|
|
||||||
# hyprland
|
|
||||||
hyprpaper
|
|
||||||
|
|
||||||
# utils
|
|
||||||
wget
|
|
||||||
kdePackages.kdeconnect-kde
|
|
||||||
_1password-gui
|
|
||||||
tree
|
|
||||||
gparted
|
|
||||||
file
|
|
||||||
htop
|
|
||||||
wev
|
|
||||||
solaar
|
|
||||||
baobab
|
|
||||||
duf
|
|
||||||
zed-editor
|
|
||||||
|
|
||||||
# office
|
|
||||||
obsidian
|
|
||||||
onlyoffice-desktopeditors
|
|
||||||
|
|
||||||
# development
|
|
||||||
postman
|
|
||||||
tea
|
|
||||||
|
|
||||||
#jetbrains.pycharm
|
|
||||||
python3
|
|
||||||
|
|
||||||
# communication
|
|
||||||
nextcloud-talk-desktop
|
|
||||||
signal-desktop
|
|
||||||
openssl
|
|
||||||
|
|
||||||
# multimedia
|
|
||||||
audacity
|
|
||||||
handbrake
|
|
||||||
spotify
|
|
||||||
vlc
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
[greeter]
|
|
||||||
theme-name = catppuccinThemePkg
|
|
||||||
icon-theme-name = papirus-icon-theme
|
|
||||||
cursor-theme-name = bibata-cursors
|
|
||||||
cursor-theme-size = 24
|
|
||||||
font-name = Sans 11
|
|
||||||
indicators = ~host;~spacer;~clock;~spacer;~session;~language;~power
|
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
##############################################
|
|
||||||
# These files are just for reference.
|
|
||||||
# If you want to change anything, edit the source files in:
|
|
||||||
# ~/henrovnix/assets/conf
|
|
||||||
#
|
|
||||||
# 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>
|
|
||||||
#
|
|
||||||
# If everything still works, you can use the same command but:
|
|
||||||
# - keep "switch"
|
|
||||||
# - and add a reboot:
|
|
||||||
#
|
|
||||||
# cd ~/henrovnix && sudo nixos-rebuild switch --flake .#<yourhost> && systemctl reboot
|
|
||||||
#
|
|
||||||
# NOTE:
|
|
||||||
# Make sure the lines starting with: cd ~/henrovnix
|
|
||||||
# are written as ONE single line.
|
|
||||||
##############################################
|
|
||||||
# Minimal Hyprland config for greetd
|
|
||||||
|
|
||||||
[LightDM]
|
|
||||||
run-directory=/run/lightdm
|
|
||||||
|
|
||||||
[Seat:*]
|
|
||||||
greeter-session=lightdm-gtk-greeter
|
|
||||||
user-session=hyprland
|
|
||||||
allow-guest=false
|
|
||||||
@@ -1,175 +0,0 @@
|
|||||||
##############################################
|
|
||||||
# These files are just for reference.
|
|
||||||
# If you want to change anything, edit the source files in:
|
|
||||||
# ~/henrovnix/assets/conf
|
|
||||||
#
|
|
||||||
# Temporarily(!) testing can by editing this file, edit the file and reloading hyprshell
|
|
||||||
# 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>
|
|
||||||
#
|
|
||||||
# If everything still works, you can use the same command but:
|
|
||||||
# - keep "switch"
|
|
||||||
# - and add a reboot:
|
|
||||||
#
|
|
||||||
# cd ~/henrovnix && sudo nixos-rebuild switch --flake .#<yourhost> && systemctl reboot
|
|
||||||
#
|
|
||||||
# Make sure the lines starting with: cd ~/henrovnix
|
|
||||||
# are written as ONE single line.
|
|
||||||
###############################################
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Keybindings #
|
|
||||||
###############
|
|
||||||
|
|
||||||
$mainMod = SUPER
|
|
||||||
|
|
||||||
# use walker to show exec menu
|
|
||||||
bind = $mainMod, Space , exec, walker
|
|
||||||
bind = $mainMod, P, pseudo
|
|
||||||
bind = $mainMod, T, togglesplit
|
|
||||||
|
|
||||||
# grimblast
|
|
||||||
bind = $mainMod SHIFT, p, exec, grimblast -n -f copysave active
|
|
||||||
bind = $mainMod SHIFT, a, exec, grimblast -n -f copysave area
|
|
||||||
bind = $mainMod ALT, p, exec, grimblast -n -f copysave output
|
|
||||||
bind = $mainMod CTRL, p, exec, grimblast -n -f copysave screen
|
|
||||||
|
|
||||||
# Terminal / launcher / kill / reload
|
|
||||||
bind = $mainMod, E, exec, thunar
|
|
||||||
bind = $mainMod, RETURN, exec, kitty
|
|
||||||
bind = $mainMod, D, exec, wofi --show drun
|
|
||||||
bind = $mainMod, Q, killactive,
|
|
||||||
bind = $mainMod SHIFT, Q, exit,
|
|
||||||
bind = $mainMod SHIFT, R, exec, hyprctl reload
|
|
||||||
|
|
||||||
# Switch windows
|
|
||||||
bind = $mainMod, TAB, hyprexpo:expo, toggle
|
|
||||||
bind = ALT, TAB, cyclenext,
|
|
||||||
# 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
|
|
||||||
bind = $mainMod, H, movefocus, l
|
|
||||||
bind = $mainMod, L, movefocus, r
|
|
||||||
bind = $mainMod, K, movefocus, u
|
|
||||||
bind = $mainMod, J, movefocus, d
|
|
||||||
bind = $mainMod, left, movefocus, l
|
|
||||||
bind = $mainMod, right, movefocus, r
|
|
||||||
bind = $mainMod, up, movefocus, u
|
|
||||||
bind = $mainMod, down, movefocus, d
|
|
||||||
|
|
||||||
# Move windows
|
|
||||||
bind = $mainMod SHIFT, H, movewindow, l
|
|
||||||
bind = $mainMod SHIFT, L, movewindow, r
|
|
||||||
bind = $mainMod SHIFT, K, movewindow, u
|
|
||||||
bind = $mainMod SHIFT, J, movewindow, d
|
|
||||||
bind = $mainMod SHIFT, left, movewindow, l
|
|
||||||
bind = $mainMod SHIFT, right, movewindow, r
|
|
||||||
bind = $mainMod SHIFT, up, movewindow, u
|
|
||||||
bind = $mainMod SHIFT, down, movewindow, d
|
|
||||||
|
|
||||||
# Resize windows
|
|
||||||
bind = $mainMod CTRL, H, resizeactive, -30 0
|
|
||||||
bind = $mainMod CTRL, L, resizeactive, 30 0
|
|
||||||
bind = $mainMod CTRL, K, resizeactive, 0 -30
|
|
||||||
bind = $mainMod CTRL, J, resizeactive, 0 30
|
|
||||||
|
|
||||||
# Floating / fullscreen
|
|
||||||
bind = $mainMod, V, togglefloating,
|
|
||||||
bind = $mainMod, F, fullscreen, 0
|
|
||||||
bind = $mainMod SHIFT, F, fullscreen, 1
|
|
||||||
|
|
||||||
# Workspaces
|
|
||||||
bind = $mainMod, 1, workspace, 1
|
|
||||||
bind = $mainMod, 2, workspace, 2
|
|
||||||
bind = $mainMod, 3, workspace, 3
|
|
||||||
bind = $mainMod, 4, workspace, 4
|
|
||||||
bind = $mainMod, 5, workspace, 5
|
|
||||||
bind = $mainMod, 6, workspace, 6
|
|
||||||
bind = $mainMod, 7, workspace, 7
|
|
||||||
bind = $mainMod, 8, workspace, 8
|
|
||||||
bind = $mainMod, 9, workspace, 9
|
|
||||||
bind = $mainMod, 0, workspace, 10
|
|
||||||
|
|
||||||
bind = $mainMod SHIFT, 1, movetoworkspace, 1
|
|
||||||
bind = $mainMod SHIFT, 2, movetoworkspace, 2
|
|
||||||
bind = $mainMod SHIFT, 3, movetoworkspace, 3
|
|
||||||
bind = $mainMod SHIFT, 4, movetoworkspace, 4
|
|
||||||
bind = $mainMod SHIFT, 5, movetoworkspace, 5
|
|
||||||
bind = $mainMod SHIFT, 6, movetoworkspace, 6
|
|
||||||
bind = $mainMod SHIFT, 7, movetoworkspace, 7
|
|
||||||
bind = $mainMod SHIFT, 8, movetoworkspace, 8
|
|
||||||
bind = $mainMod SHIFT, 9, movetoworkspace, 9
|
|
||||||
bind = $mainMod SHIFT, 0, movetoworkspace, 10
|
|
||||||
|
|
||||||
# Cycle workspaces
|
|
||||||
bind = $mainMod, mouse_down, workspace, e+1
|
|
||||||
bind = $mainMod, mouse_up, workspace, e-1
|
|
||||||
|
|
||||||
# Mouse drag
|
|
||||||
bindm = $mainMod, mouse:272, movewindow
|
|
||||||
bindm = $mainMod, mouse:273, resizewindow
|
|
||||||
|
|
||||||
#########################
|
|
||||||
# Screenshots
|
|
||||||
#########################
|
|
||||||
bind = $mainMod SHIFT, s, exec, grim -g "$(slurp)" - | wl-copy
|
|
||||||
bind = , XF86Screenshot, exec, grim - | wl-copy
|
|
||||||
|
|
||||||
#########################
|
|
||||||
# Audio (pamixer)
|
|
||||||
#########################
|
|
||||||
bind = , XF86AudioRaiseVolume, exec, pamixer -i 5
|
|
||||||
bind = , XF86AudioLowerVolume, exec, pamixer -d 5
|
|
||||||
bind = , XF86AudioMute, exec, pamixer -t
|
|
||||||
bind = , XF86AudioMicMute, exec, pamixer --default-source -t
|
|
||||||
|
|
||||||
#########################
|
|
||||||
# Media (playerctl)
|
|
||||||
#########################
|
|
||||||
bind = , XF86AudioPlay, exec, playerctl play-pause
|
|
||||||
bind = , XF86AudioPause, exec, playerctl pause
|
|
||||||
bind = , XF86AudioNext, exec, playerctl next
|
|
||||||
bind = , XF86AudioPrev, exec, playerctl previous
|
|
||||||
bind = , XF86AudioStop, exec, playerctl stop
|
|
||||||
|
|
||||||
#########################
|
|
||||||
# Brightness (brightnessctl)
|
|
||||||
#########################
|
|
||||||
bind = , XF86MonBrightnessUp, exec, brightnessctl set +10%
|
|
||||||
bind = , XF86MonBrightnessDown, exec, brightnessctl set 10%-
|
|
||||||
bind = , XF86KbdBrightnessUp, exec, brightnessctl -d '*kbd_backlight*' set +10%
|
|
||||||
bind = , XF86KbdBrightnessDown, exec, brightnessctl -d '*kbd_backlight*' set 10%-
|
|
||||||
|
|
||||||
#########################
|
|
||||||
# Power / session
|
|
||||||
#########################
|
|
||||||
bind = , XF86Sleep, exec, systemctl suspend
|
|
||||||
bind = , XF86PowerOff, exec, systemctl poweroff
|
|
||||||
bind = , XF86WakeUp, exec, systemctl suspend
|
|
||||||
bind = $mainMod, L, exec, loginctl lock-session
|
|
||||||
bind = $mainMod, X, exec, ~/.config/hypr/scripts/powermenu.sh
|
|
||||||
|
|
||||||
#########################
|
|
||||||
# Laptop lid settings
|
|
||||||
#########################
|
|
||||||
bindl = , switch:on:Lid Switch, exec, ~/.config/hypr/scripts/lid-action.sh
|
|
||||||
bindl = , switch:off:Lid Switch, exec, ~/.config/hypr/scripts/lid-restore.sh
|
|
||||||
|
|
||||||
#########################
|
|
||||||
# Start apps
|
|
||||||
#########################
|
|
||||||
bind = CTRL ALT, B, exec, flatpak run eu.betterbird.Betterbird
|
|
||||||
bind = CTRL ALT, S, exec, spotify
|
|
||||||
bind = $mainMod, z, exec, zeditor
|
|
||||||
bind = $mainMod, w, exec, zen --url https://nextcloud.data-pro.nu
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
general {
|
|
||||||
lock_cmd = hyprlock
|
|
||||||
after_sleep_cmd = hyprctl dispatch dpms on
|
|
||||||
ignore_dbus_inhibit = false
|
|
||||||
}
|
|
||||||
|
|
||||||
listener {
|
|
||||||
timeout = 600
|
|
||||||
on-timeout = hyprlock
|
|
||||||
}
|
|
||||||
|
|
||||||
listener {
|
|
||||||
timeout = 900
|
|
||||||
on-timeout = hyprctl dispatch dpms off
|
|
||||||
on-resume = hyprctl dispatch dpms on
|
|
||||||
}
|
|
||||||
@@ -1,106 +0,0 @@
|
|||||||
##############################################
|
|
||||||
# These files are just for reference.
|
|
||||||
# If you want to change anything definitive, edit the source files in:
|
|
||||||
# ~/henrovnix/assets/conf
|
|
||||||
# Temporarily(!) testing can by editing this file, edit the file and reloading hyprshell
|
|
||||||
#
|
|
||||||
# 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>
|
|
||||||
#
|
|
||||||
# If everything still works, you can use the same command but:
|
|
||||||
# - keep "switch"
|
|
||||||
# - and add a reboot:
|
|
||||||
#
|
|
||||||
# cd ~/henrovnix && sudo nixos-rebuild switch --flake .#<yourhost> && systemctl reboot
|
|
||||||
#
|
|
||||||
# NOTE:
|
|
||||||
# Make sure the lines starting with: cd ~/henrovnix
|
|
||||||
# are written as ONE single line.
|
|
||||||
###############################################
|
|
||||||
|
|
||||||
############################
|
|
||||||
# Variables
|
|
||||||
############################
|
|
||||||
|
|
||||||
# Colors (Hyprland "col" values commonly use rgba(aarrggbb)-style hex)
|
|
||||||
# See Hyprland variable / type docs for color formats & bools. :contentReference[oaicite:2]{index=2}
|
|
||||||
$base = rgba(1e1e2eff)
|
|
||||||
$inactive = rgba(595959aa)
|
|
||||||
$blue = rgba(33ccffee)
|
|
||||||
$green = rgba(00ff99ee)
|
|
||||||
|
|
||||||
# Recommended for correct environment in systemd user session / portals. :contentReference[oaicite:4]{index=4}
|
|
||||||
exec-once = dbus-update-activation-environment --systemd --all
|
|
||||||
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 {
|
|
||||||
follow_mouse = 1
|
|
||||||
kb_layout = us
|
|
||||||
kb_options = ctrl:nocaps
|
|
||||||
sensitivity = -0.5
|
|
||||||
accel_profile = adaptive
|
|
||||||
scroll_factor = 0.5
|
|
||||||
touchpad {
|
|
||||||
natural_scroll = yes
|
|
||||||
scroll_factor = 0.5
|
|
||||||
}
|
|
||||||
}
|
|
||||||
cursor {
|
|
||||||
no_hardware_cursors = true
|
|
||||||
}
|
|
||||||
general {
|
|
||||||
gaps_in = 2
|
|
||||||
gaps_out = 4
|
|
||||||
border_size = 2
|
|
||||||
# Gradient syntax: color color angle (e.g. 45deg). :contentReference[oaicite:5]{index=5}
|
|
||||||
col.active_border = $blue $green 45deg
|
|
||||||
col.inactive_border = $inactive
|
|
||||||
layout = scrolling
|
|
||||||
resize_on_border = true
|
|
||||||
extend_border_grab_area = 20 # Makes it easier to "grab" the edge
|
|
||||||
}
|
|
||||||
decoration {
|
|
||||||
rounding = 5
|
|
||||||
blur {
|
|
||||||
enabled = yes
|
|
||||||
size = 8
|
|
||||||
passes = 3
|
|
||||||
new_optimizations = on
|
|
||||||
}
|
|
||||||
}
|
|
||||||
animations {
|
|
||||||
enabled = yes
|
|
||||||
bezier = myBezier, 0.05, 0.9, 0.1, 1.05
|
|
||||||
animation = windows, 1, 7, myBezier
|
|
||||||
animation = windowsOut, 1, 7, default, popin 80%
|
|
||||||
animation = border, 1, 10, default
|
|
||||||
animation = borderangle, 1, 8, default
|
|
||||||
animation = fade, 1, 7, default
|
|
||||||
animation = workspaces, 1, 6, default
|
|
||||||
}
|
|
||||||
dwindle {
|
|
||||||
pseudotile = yes
|
|
||||||
preserve_split = yes
|
|
||||||
}
|
|
||||||
misc {
|
|
||||||
disable_hyprland_logo = false
|
|
||||||
focus_on_activate = true
|
|
||||||
}
|
|
||||||
# Start required session helpers
|
|
||||||
exec-once = hypridle
|
|
||||||
exec-once = hyprpolkitagent
|
|
||||||
# Lid close: lock only if no external monitor is connected
|
|
||||||
bindl = , switch:on:Lid Switch, exec, ~/.config/hypr/scripts/lid-lock.sh
|
|
||||||
# Lid open: turn DPMS back on (does not unlock)
|
|
||||||
bindl = , switch:off:Lid Switch, exec, hyprctl dispatch dpms on
|
|
||||||
|
|
||||||
exec-once = systemd-run --user --scope --unit=elephant elephant
|
|
||||||
exec-once = ~/.config/hypr/scripts/hyprscrolling-listener.sh
|
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
# ~/.config/hypr/hyprlock.conf
|
|
||||||
|
|
||||||
general {
|
|
||||||
grace = 2
|
|
||||||
ignore_empty_input = true
|
|
||||||
}
|
|
||||||
|
|
||||||
background {
|
|
||||||
path = ~/.config/hypr/lock.png
|
|
||||||
blur_passes = 2
|
|
||||||
blur_size = 6
|
|
||||||
}
|
|
||||||
|
|
||||||
input-field {
|
|
||||||
size = 320, 60
|
|
||||||
outline_thickness = 2
|
|
||||||
dots_size = 0.25
|
|
||||||
dots_spacing = 0.20
|
|
||||||
fade_on_empty = true
|
|
||||||
placeholder_text = "Password"
|
|
||||||
position = 0, -120
|
|
||||||
halign = center
|
|
||||||
valign = center
|
|
||||||
}
|
|
||||||
|
|
||||||
label {
|
|
||||||
text = $TIME
|
|
||||||
font_size = 72
|
|
||||||
position = 0, 120
|
|
||||||
halign = center
|
|
||||||
valign = center
|
|
||||||
}
|
|
||||||
@@ -1,62 +0,0 @@
|
|||||||
# --------------------------------------------------
|
|
||||||
# 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
|
|
||||||
@@ -1,71 +0,0 @@
|
|||||||
// Edit with `hyprshell config edit` <-- GUI app, resize!
|
|
||||||
(
|
|
||||||
version: 3,
|
|
||||||
windows: (
|
|
||||||
scale: 8.5,
|
|
||||||
items_per_row: 5 ,
|
|
||||||
overview: (
|
|
||||||
launcher: (
|
|
||||||
default_terminal: None,
|
|
||||||
launch_modifier: "ctrl",
|
|
||||||
width: 800,
|
|
||||||
max_items: 5,
|
|
||||||
show_when_empty: true,
|
|
||||||
plugins: (
|
|
||||||
applications: (
|
|
||||||
run_cache_weeks: 8,
|
|
||||||
show_execs: true,
|
|
||||||
show_actions_submenu: true,
|
|
||||||
),
|
|
||||||
terminal: None,
|
|
||||||
shell: None,
|
|
||||||
websearch: None,
|
|
||||||
calc: (),
|
|
||||||
path: (),
|
|
||||||
actions: (
|
|
||||||
actions: [
|
|
||||||
lock_screen,
|
|
||||||
hibernate,
|
|
||||||
logout,
|
|
||||||
reboot,
|
|
||||||
shutdown,
|
|
||||||
suspend,
|
|
||||||
custom(
|
|
||||||
names: [
|
|
||||||
"Kill",
|
|
||||||
"Stop",
|
|
||||||
],
|
|
||||||
details: "Kill or stop a process by name",
|
|
||||||
command: "pkill \"{}\" && notify-send hyprshell \"stopped {}\"",
|
|
||||||
icon: "remove",
|
|
||||||
),
|
|
||||||
custom(
|
|
||||||
names: [
|
|
||||||
"Reload Hyprshell",
|
|
||||||
],
|
|
||||||
details: "Reload Hyprshell",
|
|
||||||
command: "sleep 1; hyprshell socat \'\"Restart\"\'",
|
|
||||||
icon: "system-restart",
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
key: "Super_L",
|
|
||||||
modifier: "super",
|
|
||||||
filter_by: [],
|
|
||||||
hide_filtered: false,
|
|
||||||
exclude_special_workspaces: "",
|
|
||||||
),
|
|
||||||
switch: (
|
|
||||||
modifier: "alt",
|
|
||||||
key: "Tab",
|
|
||||||
filter_by: [
|
|
||||||
current_monitor,
|
|
||||||
],
|
|
||||||
switch_workspaces: false,
|
|
||||||
exclude_special_workspaces: "",
|
|
||||||
),
|
|
||||||
switch_2: None,
|
|
||||||
),
|
|
||||||
)
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
window {
|
|
||||||
background: rgba(20, 20, 20, 0.92);
|
|
||||||
border-radius: 18px;
|
|
||||||
}
|
|
||||||
|
|
||||||
* {
|
|
||||||
background-color: unset;
|
|
||||||
}
|
|
||||||
@@ -1,134 +0,0 @@
|
|||||||
#!/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"
|
|
||||||
|
|
||||||
# IMPORTANT: use "$'\n' for newliners
|
|
||||||
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")"
|
|
||||||
@@ -1,90 +0,0 @@
|
|||||||
#!/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"
|
|
||||||
local line
|
|
||||||
if ! line="$(hyprctl monitors 2>/dev/null | grep -A1 -E "^Monitor ${mon} " -m1 | tail -n1 || true)"; then
|
|
||||||
echo ""
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
# Extract the resolution (e.g., 3840x1080) from the line
|
|
||||||
local token
|
|
||||||
token="$(echo "$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)"
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
INTERNAL="eDP1"
|
|
||||||
|
|
||||||
has_external() {
|
|
||||||
# Any monitor name that is not INTERNAL counts as external
|
|
||||||
hyprctl monitors -j | grep -q '"name"' && ! hyprctl monitors -j | grep -q "\"name\":\"$INTERNAL\"\""
|
|
||||||
}
|
|
||||||
|
|
||||||
has_external_robust() {
|
|
||||||
# robust without jq: count monitor names; if there's >1 OR there's a name not INTERNAL
|
|
||||||
local names
|
|
||||||
names="$(hyprctl monitors -j | sed -n 's/.*"name":"\([^"]*\)".*/\1/p')"
|
|
||||||
# if any name != INTERNAL then external
|
|
||||||
echo "$names" | grep -vx "$INTERNAL" >/dev/null 2>&1
|
|
||||||
}
|
|
||||||
|
|
||||||
if has_external_robust; then
|
|
||||||
# Clamshell: disable laptop panel, no lock
|
|
||||||
hyprctl keyword monitor "${INTERNAL},disable"
|
|
||||||
else
|
|
||||||
# Laptop only: suspend
|
|
||||||
systemctl suspend
|
|
||||||
fi
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
INTERNAL="eDP1"
|
|
||||||
|
|
||||||
# Restore panel using preferred mode, auto position, scale 1
|
|
||||||
hyprctl keyword monitor "${INTERNAL},preferred,auto,1"
|
|
||||||
@@ -1,36 +0,0 @@
|
|||||||
#!/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
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
#!/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
|
|
||||||
@@ -1,59 +0,0 @@
|
|||||||
{
|
|
||||||
"shell_command": false,
|
|
||||||
"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
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,115 +0,0 @@
|
|||||||
/* 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);
|
|
||||||
}
|
|
||||||
@@ -1,116 +0,0 @@
|
|||||||
# Walker UI layout/theme config (Catppuccin Mocha tuned)
|
|
||||||
|
|
||||||
theme = "frosted"
|
|
||||||
debug = true
|
|
||||||
|
|
||||||
[ui]
|
|
||||||
css = "home/henrov/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
|
|
||||||
@@ -1,162 +0,0 @@
|
|||||||
/* 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);
|
|
||||||
}
|
|
||||||
@@ -1,185 +0,0 @@
|
|||||||
/* 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);
|
|
||||||
}
|
|
||||||
|
Before Width: | Height: | Size: 292 KiB |
|
Before Width: | Height: | Size: 963 KiB |
|
Before Width: | Height: | Size: 1.8 MiB |
|
Before Width: | Height: | Size: 2.7 MiB |
|
Before Width: | Height: | Size: 270 KiB |
|
Before Width: | Height: | Size: 173 KiB |
|
Before Width: | Height: | Size: 962 KiB |
|
Before Width: | Height: | Size: 425 KiB |
|
Before Width: | Height: | Size: 5.3 MiB |
@@ -1,41 +0,0 @@
|
|||||||
##############################################
|
|
||||||
# Wallpaper config (wpaperd, TOML)
|
|
||||||
#
|
|
||||||
# Source-of-truth in repo:
|
|
||||||
# ~/henrovnix/assets/conf/desktop/wallpaper/wallpaper.conf
|
|
||||||
#
|
|
||||||
# Runtime override (user edits this):
|
|
||||||
# ~/conf/desktop/wallpaper/wallpaper.conf
|
|
||||||
#
|
|
||||||
# Wallpapers are copied from repo to:
|
|
||||||
# ~/wallpapers/
|
|
||||||
# and by default loaded from:
|
|
||||||
# ~/wallpapers/pictures
|
|
||||||
##############################################
|
|
||||||
|
|
||||||
[default]
|
|
||||||
# Directory to pick wallpapers from
|
|
||||||
path = "~/nixos_conf/wallpaperstuff/pictures"
|
|
||||||
|
|
||||||
# Switch every X minutes
|
|
||||||
duration = "5m"
|
|
||||||
|
|
||||||
# Random order (ascending/descending/random)
|
|
||||||
sorting = "random"
|
|
||||||
|
|
||||||
# Include subfolders
|
|
||||||
recursive = true
|
|
||||||
|
|
||||||
# How to fit wallpaper on screen
|
|
||||||
mode = "stretch"
|
|
||||||
|
|
||||||
# Transition time in milliseconds
|
|
||||||
transition-time = 5000
|
|
||||||
|
|
||||||
# Apply a "fade-like" transition (uses gl-transitions)
|
|
||||||
[default.transition.dissolve]
|
|
||||||
# (leave empty to use the transition defaults)
|
|
||||||
|
|
||||||
# Apply these defaults to any monitor not explicitly listed
|
|
||||||
[any]
|
|
||||||
# (inherits [default]; keep empty unless you want overrides)
|
|
||||||
@@ -1,122 +0,0 @@
|
|||||||
{
|
|
||||||
"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": {
|
|
||||||
"tooltip": true,
|
|
||||||
"format": "{icon}",
|
|
||||||
"format-icons": {
|
|
||||||
"activated": " ",
|
|
||||||
"deactivated": " ",
|
|
||||||
},
|
|
||||||
"tooltip-format-activated": "Staying awake",
|
|
||||||
"tooltip-format-deactivated": "Might sleep....",
|
|
||||||
},
|
|
||||||
|
|
||||||
"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": ["", "", "", "", " "],
|
|
||||||
},
|
|
||||||
}
|
|
||||||
@@ -1,225 +0,0 @@
|
|||||||
/* --- 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.overflow {
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
@@ -1,84 +0,0 @@
|
|||||||
# 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,64 +0,0 @@
|
|||||||
##############################################
|
|
||||||
# These files are just for reference.
|
|
||||||
# If you want to change anything, edit the source files in:
|
|
||||||
# ~/henrovnix/assets/conf
|
|
||||||
#
|
|
||||||
# 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>
|
|
||||||
#
|
|
||||||
# If everything still works, you can use the same command but:
|
|
||||||
# - keep "switch"
|
|
||||||
# - and add a reboot:
|
|
||||||
#
|
|
||||||
# cd ~/henrovnix && sudo nixos-rebuild switch --flake .#<yourhost> && systemctl reboot
|
|
||||||
#
|
|
||||||
# NOTE:
|
|
||||||
# Make sure the lines starting with: cd ~/henrovnix
|
|
||||||
# are written as ONE single line.
|
|
||||||
##############################################
|
|
||||||
|
|
||||||
# ============================================
|
|
||||||
# Alacritty config (TOML)
|
|
||||||
# Path: ~/.config/alacritty/alacritty.toml
|
|
||||||
# Source-of-truth: assets/conf/dev/alacritty.toml
|
|
||||||
# ============================================
|
|
||||||
|
|
||||||
[terminal.shell]
|
|
||||||
program = "zsh"
|
|
||||||
|
|
||||||
[font]
|
|
||||||
size = 12.0
|
|
||||||
|
|
||||||
[font.normal]
|
|
||||||
family = "Aporetic Sans Mono"
|
|
||||||
style = "Regular"
|
|
||||||
|
|
||||||
[font.bold]
|
|
||||||
family = "Aporetic Sans Mono"
|
|
||||||
style = "Bold"
|
|
||||||
|
|
||||||
[font.italic]
|
|
||||||
family = "Aporetic Sans Mono"
|
|
||||||
style = "Italic"
|
|
||||||
|
|
||||||
[window]
|
|
||||||
dynamic_padding = false
|
|
||||||
decorations = "Full"
|
|
||||||
|
|
||||||
[window.padding]
|
|
||||||
x = 4
|
|
||||||
y = 4
|
|
||||||
|
|
||||||
[scrolling]
|
|
||||||
history = 10000
|
|
||||||
multiplier = 3
|
|
||||||
|
|
||||||
[mouse]
|
|
||||||
hide_when_typing = true
|
|
||||||
|
|
||||||
[cursor]
|
|
||||||
style = "Block"
|
|
||||||
unfocused_hollow = true
|
|
||||||
|
|
||||||
[selection]
|
|
||||||
save_to_clipboard = true
|
|
||||||
@@ -1,72 +0,0 @@
|
|||||||
##############################################
|
|
||||||
# Aliases (source-of-truth)
|
|
||||||
#
|
|
||||||
# This file is written in bash/zsh alias syntax in [bash_zsh], [bash_specific], [zsh_specific].
|
|
||||||
# Fish has different syntax; the Nix module translates [bash_zsh] into fish format and then
|
|
||||||
# appends [fish_specific] as-is.
|
|
||||||
##############################################
|
|
||||||
|
|
||||||
##############################################
|
|
||||||
# Generic aliases (bash/zsh)
|
|
||||||
# These are intended to be available in bash and zsh.
|
|
||||||
##############################################
|
|
||||||
[bash_zsh]
|
|
||||||
alias ll='ls -lah'
|
|
||||||
alias gs='git status'
|
|
||||||
alias ga='git add'
|
|
||||||
alias gc='git commit'
|
|
||||||
alias gp='git push'
|
|
||||||
alias gcp='git add . && git commit && git push'
|
|
||||||
|
|
||||||
alias cd='z'
|
|
||||||
|
|
||||||
alias nps='xdg-open https://search.nixos.org'
|
|
||||||
alias hvnx='cd ~/Repos/nixos/henrovnix_ok'
|
|
||||||
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 .#traveldroid'
|
|
||||||
alias nxt='hvnx && sudo nixos-rebuild test --flake .#traveldroid'
|
|
||||||
alias nxv='hvnx && sudo nixos-rebuild build-vm --flake .#traveldroid && "$(ls -1 ./result/bin/run-*-vm | head -n 1)"'
|
|
||||||
|
|
||||||
alias rb='systemctl reboot'
|
|
||||||
alias po='systemctl poweroff'
|
|
||||||
|
|
||||||
alias fpl='flatpak list'
|
|
||||||
alias fps='flatpak search'
|
|
||||||
alias fpi='flatpak install'
|
|
||||||
alias fpr='flatpak run'
|
|
||||||
|
|
||||||
alias nxc='ssh henrov@nextcloud.data-pro.nu'
|
|
||||||
|
|
||||||
|
|
||||||
alias vs='code'
|
|
||||||
alias blog='cd ~/Repos/blog && ll'
|
|
||||||
alias keys='hyprctl binds'
|
|
||||||
|
|
||||||
|
|
||||||
##############################################
|
|
||||||
# Shell-specific aliases / examples
|
|
||||||
#
|
|
||||||
# Everything below is COMMENTED OUT on purpose.
|
|
||||||
# These examples show syntax or commands that are shell-specific
|
|
||||||
# (or behave differently across shells).
|
|
||||||
##############################################
|
|
||||||
|
|
||||||
[bash_specific]
|
|
||||||
# Enable recursive globbing (**)
|
|
||||||
# alias sg='shopt -s globstar'
|
|
||||||
|
|
||||||
[zsh_specific]
|
|
||||||
# Recursive globbing works by default in zsh; this prints matches one-per-line
|
|
||||||
# alias recglob='print -l **/*.nix'
|
|
||||||
|
|
||||||
[fish_specific]
|
|
||||||
# Fish has its own language; this is fish-only syntax (not bash/zsh)
|
|
||||||
# alias setvar='set -gx EDITOR emacs'
|
|
||||||
|
|
||||||
[dash_specific]
|
|
||||||
# dash is a minimal POSIX shell; shown here only as an example
|
|
||||||
# alias com='command -v ls'
|
|
||||||
|
|
||||||
[nushell_specific]
|
|
||||||
# Nushell pipelines structured data; this is nu-only syntax
|
|
||||||
# alias fbf='ls | where size > 1mb | get name'
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
##############################################
|
|
||||||
# Enabled shells (source-of-truth)
|
|
||||||
#
|
|
||||||
# Edit this file in the repo:
|
|
||||||
# ./assets/conf/dev/terminal/enabled_shells.conf
|
|
||||||
#
|
|
||||||
# After changing, rebuild Home Manager / your system as you normally do.
|
|
||||||
##############################################
|
|
||||||
|
|
||||||
[enabled_shells]
|
|
||||||
bash = yes
|
|
||||||
zsh = yes
|
|
||||||
fish = no
|
|
||||||
dash = no
|
|
||||||
nushell = no
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
##############################################
|
|
||||||
# These files are just for reference.
|
|
||||||
# If you want to change anything, edit the source files in:
|
|
||||||
# ~/henrovnix/assets/conf
|
|
||||||
#
|
|
||||||
# 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>
|
|
||||||
#
|
|
||||||
# If everything still works, you can use the same command but:
|
|
||||||
# - keep "switch"
|
|
||||||
# - and add a reboot:
|
|
||||||
#
|
|
||||||
# cd ~/henrovnix && sudo nixos-rebuild switch --flake .#<yourhost> && systemctl reboot
|
|
||||||
#
|
|
||||||
# NOTE:
|
|
||||||
# Make sure the lines starting with: cd ~/henrovnix
|
|
||||||
# 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,279 +0,0 @@
|
|||||||
"$schema" = 'https://starship.rs/config-schema.json'
|
|
||||||
|
|
||||||
format = """
|
|
||||||
[](red)\
|
|
||||||
$os\
|
|
||||||
$username\
|
|
||||||
[](bg:peach fg:red)\
|
|
||||||
$directory\
|
|
||||||
[](bg:yellow fg:peach)\
|
|
||||||
$git_branch\
|
|
||||||
$git_status\
|
|
||||||
[](fg:yellow bg:green)\
|
|
||||||
$c\
|
|
||||||
$rust\
|
|
||||||
$golang\
|
|
||||||
$nodejs\
|
|
||||||
$php\
|
|
||||||
$java\
|
|
||||||
$kotlin\
|
|
||||||
$haskell\
|
|
||||||
$python\
|
|
||||||
[](fg:green bg:sapphire)\
|
|
||||||
$conda\
|
|
||||||
[](fg:sapphire bg:lavender)\
|
|
||||||
$time\
|
|
||||||
[ ](fg:lavender)\
|
|
||||||
$cmd_duration\
|
|
||||||
$line_break\
|
|
||||||
$character"""
|
|
||||||
|
|
||||||
palette = 'catppuccin_mocha'
|
|
||||||
|
|
||||||
[os]
|
|
||||||
disabled = false
|
|
||||||
style = "bg:red fg:crust"
|
|
||||||
|
|
||||||
[os.symbols]
|
|
||||||
Windows = ""
|
|
||||||
Ubuntu = ""
|
|
||||||
SUSE = ""
|
|
||||||
Raspbian = ""
|
|
||||||
Mint = ""
|
|
||||||
Macos = ""
|
|
||||||
Manjaro = ""
|
|
||||||
Linux = ""
|
|
||||||
Gentoo = ""
|
|
||||||
Fedora = ""
|
|
||||||
Alpine = ""
|
|
||||||
Amazon = ""
|
|
||||||
Android = ""
|
|
||||||
AOSC = ""
|
|
||||||
Arch = ""
|
|
||||||
Artix = ""
|
|
||||||
CentOS = ""
|
|
||||||
Debian = ""
|
|
||||||
Redhat = ""
|
|
||||||
RedHatEnterprise = ""
|
|
||||||
|
|
||||||
[username]
|
|
||||||
show_always = true
|
|
||||||
style_user = "bg:red fg:crust"
|
|
||||||
style_root = "bg:red fg:crust"
|
|
||||||
format = '[ $user]($style)'
|
|
||||||
|
|
||||||
[directory]
|
|
||||||
style = "bg:peach fg:crust"
|
|
||||||
format = "[ $path ]($style)"
|
|
||||||
truncation_length = 3
|
|
||||||
truncation_symbol = "…/"
|
|
||||||
|
|
||||||
[directory.substitutions]
|
|
||||||
"Documents" = " "
|
|
||||||
"Downloads" = " "
|
|
||||||
"Music" = " "
|
|
||||||
"Pictures" = " "
|
|
||||||
"Developer" = " "
|
|
||||||
|
|
||||||
[git_branch]
|
|
||||||
symbol = ""
|
|
||||||
style = "bg:yellow"
|
|
||||||
format = '[[ $symbol $branch ](fg:crust bg:yellow)]($style)'
|
|
||||||
|
|
||||||
[git_status]
|
|
||||||
style = "bg:yellow"
|
|
||||||
format = '[[($all_status$ahead_behind )](fg:crust bg:yellow)]($style)'
|
|
||||||
|
|
||||||
[nodejs]
|
|
||||||
symbol = ""
|
|
||||||
style = "bg:green"
|
|
||||||
format = '[[ $symbol( $version) ](fg:crust bg:green)]($style)'
|
|
||||||
|
|
||||||
[c]
|
|
||||||
symbol = " "
|
|
||||||
style = "bg:green"
|
|
||||||
format = '[[ $symbol( $version) ](fg:crust bg:green)]($style)'
|
|
||||||
|
|
||||||
[rust]
|
|
||||||
symbol = ""
|
|
||||||
style = "bg:green"
|
|
||||||
format = '[[ $symbol( $version) ](fg:crust bg:green)]($style)'
|
|
||||||
|
|
||||||
[golang]
|
|
||||||
symbol = ""
|
|
||||||
style = "bg:green"
|
|
||||||
format = '[[ $symbol( $version) ](fg:crust bg:green)]($style)'
|
|
||||||
|
|
||||||
[php]
|
|
||||||
symbol = ""
|
|
||||||
style = "bg:green"
|
|
||||||
format = '[[ $symbol( $version) ](fg:crust bg:green)]($style)'
|
|
||||||
|
|
||||||
[java]
|
|
||||||
symbol = " "
|
|
||||||
style = "bg:green"
|
|
||||||
format = '[[ $symbol( $version) ](fg:crust bg:green)]($style)'
|
|
||||||
|
|
||||||
[kotlin]
|
|
||||||
symbol = ""
|
|
||||||
style = "bg:green"
|
|
||||||
format = '[[ $symbol( $version) ](fg:crust bg:green)]($style)'
|
|
||||||
|
|
||||||
[haskell]
|
|
||||||
symbol = ""
|
|
||||||
style = "bg:green"
|
|
||||||
format = '[[ $symbol( $version) ](fg:crust bg:green)]($style)'
|
|
||||||
|
|
||||||
[python]
|
|
||||||
symbol = ""
|
|
||||||
style = "bg:green"
|
|
||||||
format = '[[ $symbol( $version)(\(#$virtualenv\)) ](fg:crust bg:green)]($style)'
|
|
||||||
|
|
||||||
[docker_context]
|
|
||||||
symbol = ""
|
|
||||||
style = "bg:sapphire"
|
|
||||||
format = '[[ $symbol( $context) ](fg:crust bg:sapphire)]($style)'
|
|
||||||
|
|
||||||
[conda]
|
|
||||||
symbol = " "
|
|
||||||
style = "fg:crust bg:sapphire"
|
|
||||||
format = '[$symbol$environment ]($style)'
|
|
||||||
ignore_base = false
|
|
||||||
|
|
||||||
[time]
|
|
||||||
disabled = false
|
|
||||||
time_format = "%R"
|
|
||||||
style = "bg:lavender"
|
|
||||||
format = '[[ $time ](fg:crust bg:lavender)]($style)'
|
|
||||||
|
|
||||||
[line_break]
|
|
||||||
disabled = false
|
|
||||||
|
|
||||||
[character]
|
|
||||||
disabled = false
|
|
||||||
success_symbol = '[❯](bold fg:green)'
|
|
||||||
error_symbol = '[❯](bold fg:red)'
|
|
||||||
vimcmd_symbol = '[❮](bold fg:green)'
|
|
||||||
vimcmd_replace_one_symbol = '[❮](bold fg:lavender)'
|
|
||||||
vimcmd_replace_symbol = '[❮](bold fg:lavender)'
|
|
||||||
vimcmd_visual_symbol = '[❮](bold fg:yellow)'
|
|
||||||
|
|
||||||
[cmd_duration]
|
|
||||||
show_milliseconds = true
|
|
||||||
format = " in $duration "
|
|
||||||
style = "bg:lavender"
|
|
||||||
disabled = false
|
|
||||||
show_notifications = true
|
|
||||||
min_time_to_notify = 45000
|
|
||||||
|
|
||||||
[palettes.catppuccin_mocha]
|
|
||||||
rosewater = "#f5e0dc"
|
|
||||||
flamingo = "#f2cdcd"
|
|
||||||
pink = "#f5c2e7"
|
|
||||||
mauve = "#cba6f7"
|
|
||||||
red = "#f38ba8"
|
|
||||||
maroon = "#eba0ac"
|
|
||||||
peach = "#fab387"
|
|
||||||
yellow = "#f9e2af"
|
|
||||||
green = "#a6e3a1"
|
|
||||||
teal = "#94e2d5"
|
|
||||||
sky = "#89dceb"
|
|
||||||
sapphire = "#74c7ec"
|
|
||||||
blue = "#89b4fa"
|
|
||||||
lavender = "#b4befe"
|
|
||||||
text = "#cdd6f4"
|
|
||||||
subtext1 = "#bac2de"
|
|
||||||
subtext0 = "#a6adc8"
|
|
||||||
overlay2 = "#9399b2"
|
|
||||||
overlay1 = "#7f849c"
|
|
||||||
overlay0 = "#6c7086"
|
|
||||||
surface2 = "#585b70"
|
|
||||||
surface1 = "#45475a"
|
|
||||||
surface0 = "#313244"
|
|
||||||
base = "#1e1e2e"
|
|
||||||
mantle = "#181825"
|
|
||||||
crust = "#11111b"
|
|
||||||
|
|
||||||
[palettes.catppuccin_frappe]
|
|
||||||
rosewater = "#f2d5cf"
|
|
||||||
flamingo = "#eebebe"
|
|
||||||
pink = "#f4b8e4"
|
|
||||||
mauve = "#ca9ee6"
|
|
||||||
red = "#e78284"
|
|
||||||
maroon = "#ea999c"
|
|
||||||
peach = "#ef9f76"
|
|
||||||
yellow = "#e5c890"
|
|
||||||
green = "#a6d189"
|
|
||||||
teal = "#81c8be"
|
|
||||||
sky = "#99d1db"
|
|
||||||
sapphire = "#85c1dc"
|
|
||||||
blue = "#8caaee"
|
|
||||||
lavender = "#babbf1"
|
|
||||||
text = "#c6d0f5"
|
|
||||||
subtext1 = "#b5bfe2"
|
|
||||||
subtext0 = "#a5adce"
|
|
||||||
overlay2 = "#949cbb"
|
|
||||||
overlay1 = "#838ba7"
|
|
||||||
overlay0 = "#737994"
|
|
||||||
surface2 = "#626880"
|
|
||||||
surface1 = "#51576d"
|
|
||||||
surface0 = "#414559"
|
|
||||||
base = "#303446"
|
|
||||||
mantle = "#292c3c"
|
|
||||||
crust = "#232634"
|
|
||||||
|
|
||||||
[palettes.catppuccin_latte]
|
|
||||||
rosewater = "#dc8a78"
|
|
||||||
flamingo = "#dd7878"
|
|
||||||
pink = "#ea76cb"
|
|
||||||
mauve = "#8839ef"
|
|
||||||
red = "#d20f39"
|
|
||||||
maroon = "#e64553"
|
|
||||||
peach = "#fe640b"
|
|
||||||
yellow = "#df8e1d"
|
|
||||||
green = "#40a02b"
|
|
||||||
teal = "#179299"
|
|
||||||
sky = "#04a5e5"
|
|
||||||
sapphire = "#209fb5"
|
|
||||||
blue = "#1e66f5"
|
|
||||||
lavender = "#7287fd"
|
|
||||||
text = "#4c4f69"
|
|
||||||
subtext1 = "#5c5f77"
|
|
||||||
subtext0 = "#6c6f85"
|
|
||||||
overlay2 = "#7c7f93"
|
|
||||||
overlay1 = "#8c8fa1"
|
|
||||||
overlay0 = "#9ca0b0"
|
|
||||||
surface2 = "#acb0be"
|
|
||||||
surface1 = "#bcc0cc"
|
|
||||||
surface0 = "#ccd0da"
|
|
||||||
base = "#eff1f5"
|
|
||||||
mantle = "#e6e9ef"
|
|
||||||
crust = "#dce0e8"
|
|
||||||
|
|
||||||
[palettes.catppuccin_macchiato]
|
|
||||||
rosewater = "#f4dbd6"
|
|
||||||
flamingo = "#f0c6c6"
|
|
||||||
pink = "#f5bde6"
|
|
||||||
mauve = "#c6a0f6"
|
|
||||||
red = "#ed8796"
|
|
||||||
maroon = "#ee99a0"
|
|
||||||
peach = "#f5a97f"
|
|
||||||
yellow = "#eed49f"
|
|
||||||
green = "#a6da95"
|
|
||||||
teal = "#8bd5ca"
|
|
||||||
sky = "#91d7e3"
|
|
||||||
sapphire = "#7dc4e4"
|
|
||||||
blue = "#8aadf4"
|
|
||||||
lavender = "#b7bdf8"
|
|
||||||
text = "#cad3f5"
|
|
||||||
subtext1 = "#b8c0e0"
|
|
||||||
subtext0 = "#a5adcb"
|
|
||||||
overlay2 = "#939ab7"
|
|
||||||
overlay1 = "#8087a2"
|
|
||||||
overlay0 = "#6e738d"
|
|
||||||
surface2 = "#5b6078"
|
|
||||||
surface1 = "#494d64"
|
|
||||||
surface0 = "#363a4f"
|
|
||||||
base = "#24273a"
|
|
||||||
mantle = "#1e2030"
|
|
||||||
crust = "#181926"
|
|
||||||
@@ -1,30 +0,0 @@
|
|||||||
##############################################
|
|
||||||
# These files are just for reference.
|
|
||||||
# If you want to change anything, edit the source files in:
|
|
||||||
# ~/henrovnix/assets/conf
|
|
||||||
#
|
|
||||||
# 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>
|
|
||||||
#
|
|
||||||
# If everything still works, you can use the same command but:
|
|
||||||
# - keep "switch"
|
|
||||||
# - and add a reboot:
|
|
||||||
#
|
|
||||||
# cd ~/henrovnix && sudo nixos-rebuild switch --flake .#<yourhost> && systemctl reboot
|
|
||||||
#
|
|
||||||
# NOTE:
|
|
||||||
# Make sure the lines starting with: cd ~/henrovnix
|
|
||||||
# are written as ONE single line.
|
|
||||||
###############################################
|
|
||||||
#~/nixos/files/conf/terminal/zsh.conf
|
|
||||||
|
|
||||||
# Additional zsh configuration sourced for every interactive zsh shell.
|
|
||||||
# Keep this file POSIX-ish; it is sourced by zsh.
|
|
||||||
|
|
||||||
# Example: history settings
|
|
||||||
HISTFILE="$HOME/.zsh_history"
|
|
||||||
HISTSIZE=10000
|
|
||||||
SAVEHIST=10000
|
|
||||||
|
|
||||||
setopt HIST_IGNORE_ALL_DUPS
|
|
||||||
setopt SHARE_HISTORY
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
##############################################
|
|
||||||
# These files are just for reference.
|
|
||||||
# If you want to change anything, edit the source files in:
|
|
||||||
# ~/henrovnix/assets/conf
|
|
||||||
#
|
|
||||||
# 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>
|
|
||||||
#
|
|
||||||
# If everything still works, you can use the same command but:
|
|
||||||
# - keep "switch"
|
|
||||||
# - and add a reboot:
|
|
||||||
#
|
|
||||||
# cd ~/henrovnix && sudo nixos-rebuild switch --flake .#<yourhost> && systemctl reboot
|
|
||||||
#
|
|
||||||
# NOTE:
|
|
||||||
# Make sure the lines starting with: cd ~/henrovnix
|
|
||||||
# are written as ONE single line.
|
|
||||||
##############################################
|
|
||||||
Host *
|
|
||||||
AddKeysToAgent yes
|
|
||||||
ServerAliveInterval 30
|
|
||||||
ServerAliveCountMax 3
|
|
||||||
@@ -1,106 +0,0 @@
|
|||||||
##############################################
|
|
||||||
# These files are just for reference.
|
|
||||||
# If you want to change anything definitive, edit the source files in:
|
|
||||||
# ~/henrovnix/assets/conf
|
|
||||||
# Temporarily(!) testing can by editing this file, edit the file and reloading hyprshell
|
|
||||||
#
|
|
||||||
# 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>
|
|
||||||
#
|
|
||||||
# If everything still works, you can use the same command but:
|
|
||||||
# - keep "switch"
|
|
||||||
# - and add a reboot:
|
|
||||||
#
|
|
||||||
# cd ~/henrovnix && sudo nixos-rebuild switch --flake .#<yourhost> && systemctl reboot
|
|
||||||
#
|
|
||||||
# NOTE:
|
|
||||||
# Make sure the lines starting with: cd ~/henrovnix
|
|
||||||
# are written as ONE single line.
|
|
||||||
###############################################
|
|
||||||
|
|
||||||
############################
|
|
||||||
# Variables
|
|
||||||
############################
|
|
||||||
|
|
||||||
# Colors (Hyprland "col" values commonly use rgba(aarrggbb)-style hex)
|
|
||||||
# See Hyprland variable / type docs for color formats & bools. :contentReference[oaicite:2]{index=2}
|
|
||||||
$base = rgba(1e1e2eff)
|
|
||||||
$inactive = rgba(595959aa)
|
|
||||||
$blue = rgba(33ccffee)
|
|
||||||
$green = rgba(00ff99ee)
|
|
||||||
|
|
||||||
# Recommended for correct environment in systemd user session / portals. :contentReference[oaicite:4]{index=4}
|
|
||||||
exec-once = dbus-update-activation-environment --systemd --all
|
|
||||||
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 {
|
|
||||||
follow_mouse = 1
|
|
||||||
kb_layout = us
|
|
||||||
kb_options = ctrl:nocaps
|
|
||||||
sensitivity = -0.5
|
|
||||||
accel_profile = adaptive
|
|
||||||
scroll_factor = 0.5
|
|
||||||
touchpad {
|
|
||||||
natural_scroll = yes
|
|
||||||
scroll_factor = 0.5
|
|
||||||
}
|
|
||||||
}
|
|
||||||
cursor {
|
|
||||||
no_hardware_cursors = true
|
|
||||||
}
|
|
||||||
general {
|
|
||||||
gaps_in = 2
|
|
||||||
gaps_out = 4
|
|
||||||
border_size = 2
|
|
||||||
# Gradient syntax: color color angle (e.g. 45deg). :contentReference[oaicite:5]{index=5}
|
|
||||||
col.active_border = $blue $green 45deg
|
|
||||||
col.inactive_border = $inactive
|
|
||||||
layout = scrolling
|
|
||||||
resize_on_border = true
|
|
||||||
extend_border_grab_area = 20 # Makes it easier to "grab" the edge
|
|
||||||
}
|
|
||||||
decoration {
|
|
||||||
rounding = 5
|
|
||||||
blur {
|
|
||||||
enabled = yes
|
|
||||||
size = 8
|
|
||||||
passes = 3
|
|
||||||
new_optimizations = on
|
|
||||||
}
|
|
||||||
}
|
|
||||||
animations {
|
|
||||||
enabled = yes
|
|
||||||
bezier = myBezier, 0.05, 0.9, 0.1, 1.05
|
|
||||||
animation = windows, 1, 7, myBezier
|
|
||||||
animation = windowsOut, 1, 7, default, popin 80%
|
|
||||||
animation = border, 1, 10, default
|
|
||||||
animation = borderangle, 1, 8, default
|
|
||||||
animation = fade, 1, 7, default
|
|
||||||
animation = workspaces, 1, 6, default
|
|
||||||
}
|
|
||||||
dwindle {
|
|
||||||
pseudotile = yes
|
|
||||||
preserve_split = yes
|
|
||||||
}
|
|
||||||
misc {
|
|
||||||
disable_hyprland_logo = false
|
|
||||||
focus_on_activate = true
|
|
||||||
}
|
|
||||||
# Start required session helpers
|
|
||||||
exec-once = hypridle
|
|
||||||
exec-once = hyprpolkitagent
|
|
||||||
# Lid close: lock only if no external monitor is connected
|
|
||||||
bindl = , switch:on:Lid Switch, exec, ~/.config/hypr/scripts/lid-lock.sh
|
|
||||||
# Lid open: turn DPMS back on (does not unlock)
|
|
||||||
bindl = , switch:off:Lid Switch, exec, hyprctl dispatch dpms on
|
|
||||||
|
|
||||||
exec-once = systemd-run --user --scope --unit=elephant elephant
|
|
||||||
exec-once = ~/.config/hypr/scripts/hyprscrolling-listener.sh
|
|
||||||
@@ -1,62 +0,0 @@
|
|||||||
# --------------------------------------------------
|
|
||||||
# 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
|
|
||||||
@@ -1,134 +0,0 @@
|
|||||||
#!/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"
|
|
||||||
|
|
||||||
# IMPORTANT: use "$'\n' for newliners
|
|
||||||
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")"
|
|
||||||
@@ -1,90 +0,0 @@
|
|||||||
#!/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"
|
|
||||||
local line
|
|
||||||
if ! line="$(hyprctl monitors 2>/dev/null | grep -A1 -E "^Monitor ${mon} " -m1 | tail -n1 || true)"; then
|
|
||||||
echo ""
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
# Extract the resolution (e.g., 3840x1080) from the line
|
|
||||||
local token
|
|
||||||
token="$(echo "$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)"
|
|
||||||
@@ -1,116 +0,0 @@
|
|||||||
# Walker UI layout/theme config (Catppuccin Mocha tuned)
|
|
||||||
|
|
||||||
theme = "frosted"
|
|
||||||
debug = true
|
|
||||||
|
|
||||||
[ui]
|
|
||||||
css = "home/henrov/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
|
|
||||||
@@ -1,162 +0,0 @@
|
|||||||
/* 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);
|
|
||||||
}
|
|
||||||
@@ -1,185 +0,0 @@
|
|||||||
/* 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);
|
|
||||||
}
|
|
||||||
@@ -1,122 +0,0 @@
|
|||||||
{
|
|
||||||
"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": {
|
|
||||||
"tooltip": true,
|
|
||||||
"format": "{icon}",
|
|
||||||
"format-icons": {
|
|
||||||
"activated": " ",
|
|
||||||
"deactivated": " ",
|
|
||||||
},
|
|
||||||
"tooltip-format-activated": "Staying awake",
|
|
||||||
"tooltip-format-deactivated": "Might sleep....",
|
|
||||||
},
|
|
||||||
|
|
||||||
"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": ["", "", "", "", " "],
|
|
||||||
},
|
|
||||||
}
|
|
||||||
@@ -1,225 +0,0 @@
|
|||||||
/* --- 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.overflow {
|
|
||||||
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,12 @@
|
|||||||
|
# ./assets/conf/desktop/hypr/animations.conf
|
||||||
|
|
||||||
|
animations {
|
||||||
|
enabled = yes
|
||||||
|
bezier = myBezier, 0.05, 0.9, 0.1, 1.05
|
||||||
|
animation = windows, 1, 7, myBezier
|
||||||
|
animation = windowsOut, 1, 7, default, popin 80%
|
||||||
|
animation = border, 1, 10, default
|
||||||
|
animation = borderangle, 1, 8, default
|
||||||
|
animation = fade, 1, 7, default
|
||||||
|
animation = workspaces, 1, 6, default
|
||||||
|
}
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
input {
|
||||||
|
follow_mouse = yes
|
||||||
|
kb_layout = us
|
||||||
|
kb_options = ctrl:nocaps
|
||||||
|
sensitivity = -0.5
|
||||||
|
accel_profile = adaptive
|
||||||
|
scroll_factor = 0.5
|
||||||
|
|
||||||
|
# Scrolling settings
|
||||||
|
scroll_main_mod = alt
|
||||||
|
scroll_main_mod_invert = no
|
||||||
|
scroll_per_border = yes
|
||||||
|
}
|
||||||
|
|
||||||
|
# Touchpad settings (replace "touchpad_name" with your device name from `hyprctl devices`)
|
||||||
|
input:touchpad:* {
|
||||||
|
natural_scroll = yes
|
||||||
|
scroll_factor = 0.5
|
||||||
|
}
|
||||||
|
|
||||||
|
focus {
|
||||||
|
follow_mouse = yes
|
||||||
|
new_windows = smart
|
||||||
|
}
|
||||||
|
|
||||||
|
misc {
|
||||||
|
resize_step = 10 10
|
||||||
|
anim_resize_friction = 0.1
|
||||||
|
}
|
||||||
@@ -1,27 +1,3 @@
|
|||||||
##############################################
|
|
||||||
# These files are just for reference.
|
|
||||||
# If you want to change anything, edit the source files in:
|
|
||||||
# ~/henrovnix/assets/conf
|
|
||||||
#
|
|
||||||
# Temporarily(!) testing can by editing this file, edit the file and reloading hyprshell
|
|
||||||
# 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>
|
|
||||||
#
|
|
||||||
# If everything still works, you can use the same command but:
|
|
||||||
# - keep "switch"
|
|
||||||
# - and add a reboot:
|
|
||||||
#
|
|
||||||
# cd ~/henrovnix && sudo nixos-rebuild switch --flake .#<yourhost> && systemctl reboot
|
|
||||||
#
|
|
||||||
# Make sure the lines starting with: cd ~/henrovnix
|
|
||||||
# are written as ONE single line.
|
|
||||||
###############################################
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Keybindings #
|
|
||||||
###############
|
|
||||||
|
|
||||||
$mainMod = SUPER
|
$mainMod = SUPER
|
||||||
|
|
||||||
# use walker to show exec menu
|
# use walker to show exec menu
|
||||||
@@ -44,7 +20,6 @@ bind = $mainMod SHIFT, Q, exit,
|
|||||||
bind = $mainMod SHIFT, R, exec, hyprctl reload
|
bind = $mainMod SHIFT, R, exec, hyprctl reload
|
||||||
|
|
||||||
# Switch windows
|
# Switch windows
|
||||||
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
|
||||||
|
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
exec-once = dbus-update-activation-environment --systemd --all
|
||||||
|
exec-once = uwsm app -- waybar
|
||||||
|
exec-once = hypridle
|
||||||
|
exec-once = hyprpolkitagent
|
||||||
|
exec-once = systemd-run --user --scope --unit=elephant elephant
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
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
|
||||||
@@ -0,0 +1,39 @@
|
|||||||
|
|
||||||
|
general {
|
||||||
|
gaps_in = 2
|
||||||
|
gaps_out = 4
|
||||||
|
border_size = 2
|
||||||
|
col.active_border = rgba($blue) rgba($green) 45deg
|
||||||
|
col.inactive_border = rgba($inactive)
|
||||||
|
layout = dwindle
|
||||||
|
resize_on_border = yes
|
||||||
|
border_grab_modifier = 20
|
||||||
|
disable_hyprland_logo = false
|
||||||
|
focus_on_activate = yes
|
||||||
|
}
|
||||||
|
|
||||||
|
dwindle {
|
||||||
|
pseudotile = yes
|
||||||
|
preserve_split = yes
|
||||||
|
}
|
||||||
|
|
||||||
|
master {
|
||||||
|
new_is_master = true # New windows become master by default
|
||||||
|
}
|
||||||
|
|
||||||
|
# (Already covered in `general`, but you can override per-workspace if needed)
|
||||||
|
# Example: workspace 1,gaps_in:0,gaps_out:0
|
||||||
|
|
||||||
|
decoration {
|
||||||
|
rounding = 5
|
||||||
|
blur = yes
|
||||||
|
blur_size = 8
|
||||||
|
blur_passes = 3
|
||||||
|
blur_new_optimizations = on
|
||||||
|
# Exclude specific windows from blur (e.g., fullscreen)
|
||||||
|
blur_exclude = fullscreen
|
||||||
|
# Drop shadows for floating windows
|
||||||
|
drop_shadow = yes
|
||||||
|
shadow_range = 4
|
||||||
|
shadow_render_power = 3
|
||||||
|
}
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
# Default portable monitor rule
|
||||||
|
monitor=DP-1,3840x1080@144,1920x0,1
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
# Colors (Hyprland "col" values commonly use rgba(aarrggbb)-style hex)
|
||||||
|
# See Hyprland variable / type docs for color formats & bools. :contentReference[oaicite:2]{index=2}
|
||||||
|
$base = rgba(1e1e2eff)
|
||||||
|
$inactive = rgba(595959aa)
|
||||||
|
$blue = rgba(33ccffee)
|
||||||
|
$green = rgba(00ff99ee)
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
match:class nm-connection-editor, float 1, center 1, size 900 700
|
||||||
|
|
||||||
|
# ===== Window Rules =====
|
||||||
|
windowrulev2 {
|
||||||
|
center = yes, class:.*
|
||||||
|
# Example: float specific apps
|
||||||
|
# float = yes, class:^(pavucontrol)$
|
||||||
|
}
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
# ./assets/conf/desktop/hypr/workspace-rules.conf
|
||||||
|
|
||||||
|
# Set default applications for specific workspaces
|
||||||
|
workspace = 1, workspace:1
|
||||||
|
workspace = 2, workspace:2
|
||||||
|
workspace = 3, workspace:3
|
||||||
|
workspace = 4, workspace:4
|
||||||
|
workspace = 5, workspace:5
|
||||||
|
|
||||||
|
# Example: Auto-launch apps on specific workspaces
|
||||||
|
exec-once = [workspace 1] kitty
|
||||||
|
exec-once = [workspace 2] flatpak run app.betterbird.zen
|
||||||
|
exec-once = [workspace 3] zen
|
||||||
|
|
||||||
|
# Example: Force a specific layout for a workspace
|
||||||
|
workspace = 1, layout:dwindle
|
||||||
|
workspace = 2, layout:master
|
||||||
|
workspace = 3, layout:msg
|
||||||
|
|
||||||
|
# Example: Set workspace persistence (remember apps)
|
||||||
|
workspace = 1, persistent:true
|
||||||
|
workspace = 2, persistent:true
|
||||||
|
|
||||||
|
# Example: Move specific apps to workspaces automatically
|
||||||
|
windowrulev2 = move to workspace 1, class:^(kitty)$
|
||||||
|
windowrulev2 = move to workspace 2, class:^(zen)$
|
||||||
|
windowrulev2 = move to workspace 3, class:^(libreoffice)$
|
||||||
|
|
||||||
|
# ===== Workspace Behavior =====
|
||||||
|
workspace {
|
||||||
|
cycle_move_empty = no
|
||||||
|
}
|
||||||
@@ -1,69 +1,15 @@
|
|||||||
exec-once = /nix/store/c9cnbxhxbagj7gfpc1g5hl4x4f8dzayv-dbus-1.16.2/bin/dbus-update-activation-environment --systemd DISPLAY HYPRLAND_INSTANCE_SIGNATURE WAYLAND_DISPLAY XDG_CURRENT_DESKTOP XDG_SESSION_TYPE && systemctl --user stop hyprland-session.target && systemctl --user start hyprland-session.target
|
source = conf/variables.conf
|
||||||
exec-once=hyprctl plugin load /nix/store/pp3nj4j10p34f3hx2kdwd6m3yxzkaygd-hyprscrolling-0.53.0/lib/libhyprscrolling.so
|
source = conf/behaviour.conf
|
||||||
exec-once=hyprctl plugin load /nix/store/bmrcf2a9sa5adbgmlg38kgzssj7s5wjz-hyprexpo-0.53.0/lib/libhyprexpo.so
|
source = conf/layout.conf
|
||||||
source=/nix/store/mjbgcv2gizslspivcnr7bpqi7igrs75z-catppuccin-hyprland-0-unstable-2024-06-19/mocha.conf
|
source = conf/animations.conf
|
||||||
source=/nix/store/09fs6r6g6l8s3a433bzqwbjgp8d5dal1-hyprland-blue-accent.conf
|
source = conf/layer-rules.conf
|
||||||
windowrule=match:class nm-connection-editor, float 1, center 1, size 900 700
|
source = conf/window-rules.conf
|
||||||
source = /home/henrov/.config/hypr/conf.d/90-hyprscrolling.conf
|
source = conf/monitor-rules.conf
|
||||||
|
source = conf/workspace-rules.conf
|
||||||
|
source = conf/bindings.conf
|
||||||
|
|
||||||
##############################################
|
source = conf/exec-once.conf
|
||||||
# These files are just for reference.
|
|
||||||
# If you want to change anything definitive, edit the source files in:
|
|
||||||
# ~/henrovnix/assets/conf
|
|
||||||
# Temporarily(!) testing can by editing this file, edit the file and reloading hyprshell
|
|
||||||
#
|
|
||||||
# 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>
|
|
||||||
#
|
|
||||||
# If everything still works, you can use the same command but:
|
|
||||||
# - keep "switch"
|
|
||||||
# - and add a reboot:
|
|
||||||
#
|
|
||||||
# cd ~/henrovnix && sudo nixos-rebuild switch --flake .#<yourhost> && systemctl reboot
|
|
||||||
#
|
|
||||||
# NOTE:
|
|
||||||
# Make sure the lines starting with: cd ~/henrovnix
|
|
||||||
# are written as ONE single line.
|
|
||||||
###############################################
|
|
||||||
|
|
||||||
############################
|
|
||||||
# Variables
|
|
||||||
############################
|
|
||||||
|
|
||||||
# Colors (Hyprland "col" values commonly use rgba(aarrggbb)-style hex)
|
|
||||||
# See Hyprland variable / type docs for color formats & bools. :contentReference[oaicite:2]{index=2}
|
|
||||||
$base = rgba(1e1e2eff)
|
|
||||||
$inactive = rgba(595959aa)
|
|
||||||
$blue = rgba(33ccffee)
|
|
||||||
$green = rgba(00ff99ee)
|
|
||||||
|
|
||||||
# Recommended for correct environment in systemd user session / portals. :contentReference[oaicite:4]{index=4}
|
|
||||||
exec-once = dbus-update-activation-environment --systemd --all
|
|
||||||
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 {
|
|
||||||
follow_mouse = 1
|
|
||||||
kb_layout = us
|
|
||||||
kb_options = ctrl:nocaps
|
|
||||||
sensitivity = -0.5
|
|
||||||
accel_profile = adaptive
|
|
||||||
scroll_factor = 0.5
|
|
||||||
touchpad {
|
|
||||||
natural_scroll = yes
|
|
||||||
scroll_factor = 0.5
|
|
||||||
}
|
|
||||||
}
|
|
||||||
cursor {
|
|
||||||
no_hardware_cursors = true
|
|
||||||
}
|
|
||||||
general {
|
general {
|
||||||
gaps_in = 2
|
gaps_in = 2
|
||||||
gaps_out = 4
|
gaps_out = 4
|
||||||
@@ -75,237 +21,3 @@ general {
|
|||||||
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 {
|
|
||||||
rounding = 5
|
|
||||||
blur {
|
|
||||||
enabled = yes
|
|
||||||
size = 8
|
|
||||||
passes = 3
|
|
||||||
new_optimizations = on
|
|
||||||
}
|
|
||||||
}
|
|
||||||
animations {
|
|
||||||
enabled = yes
|
|
||||||
bezier = myBezier, 0.05, 0.9, 0.1, 1.05
|
|
||||||
animation = windows, 1, 7, myBezier
|
|
||||||
animation = windowsOut, 1, 7, default, popin 80%
|
|
||||||
animation = border, 1, 10, default
|
|
||||||
animation = borderangle, 1, 8, default
|
|
||||||
animation = fade, 1, 7, default
|
|
||||||
animation = workspaces, 1, 6, default
|
|
||||||
}
|
|
||||||
dwindle {
|
|
||||||
pseudotile = yes
|
|
||||||
preserve_split = yes
|
|
||||||
}
|
|
||||||
misc {
|
|
||||||
disable_hyprland_logo = false
|
|
||||||
focus_on_activate = true
|
|
||||||
}
|
|
||||||
# Start required session helpers
|
|
||||||
exec-once = hypridle
|
|
||||||
exec-once = hyprpolkitagent
|
|
||||||
# Lid close: lock only if no external monitor is connected
|
|
||||||
bindl = , switch:on:Lid Switch, exec, ~/.config/hypr/scripts/lid-lock.sh
|
|
||||||
# Lid open: turn DPMS back on (does not unlock)
|
|
||||||
bindl = , switch:off:Lid Switch, exec, hyprctl dispatch dpms on
|
|
||||||
|
|
||||||
exec-once = systemd-run --user --scope --unit=elephant elephant
|
|
||||||
exec-once = ~/.config/hypr/scripts/hyprscrolling-listener.sh
|
|
||||||
|
|
||||||
# --- Repo keybindings ---
|
|
||||||
##############################################
|
|
||||||
# These files are just for reference.
|
|
||||||
# If you want to change anything, edit the source files in:
|
|
||||||
# ~/henrovnix/assets/conf
|
|
||||||
#
|
|
||||||
# Temporarily(!) testing can by editing this file, edit the file and reloading hyprshell
|
|
||||||
# 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>
|
|
||||||
#
|
|
||||||
# If everything still works, you can use the same command but:
|
|
||||||
# - keep "switch"
|
|
||||||
# - and add a reboot:
|
|
||||||
#
|
|
||||||
# cd ~/henrovnix && sudo nixos-rebuild switch --flake .#<yourhost> && systemctl reboot
|
|
||||||
#
|
|
||||||
# Make sure the lines starting with: cd ~/henrovnix
|
|
||||||
# are written as ONE single line.
|
|
||||||
###############################################
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Keybindings #
|
|
||||||
###############
|
|
||||||
|
|
||||||
$mainMod = SUPER
|
|
||||||
|
|
||||||
# use walker to show exec menu
|
|
||||||
bind = $mainMod, Space , exec, walker
|
|
||||||
bind = $mainMod, P, pseudo
|
|
||||||
bind = $mainMod, T, togglesplit
|
|
||||||
|
|
||||||
# grimblast
|
|
||||||
bind = $mainMod SHIFT, p, exec, grimblast -n -f copysave active
|
|
||||||
bind = $mainMod SHIFT, a, exec, grimblast -n -f copysave area
|
|
||||||
bind = $mainMod ALT, p, exec, grimblast -n -f copysave output
|
|
||||||
bind = $mainMod CTRL, p, exec, grimblast -n -f copysave screen
|
|
||||||
|
|
||||||
# Terminal / launcher / kill / reload
|
|
||||||
bind = $mainMod, E, exec, thunar
|
|
||||||
bind = $mainMod, RETURN, exec, kitty
|
|
||||||
bind = $mainMod, D, exec, wofi --show drun
|
|
||||||
bind = $mainMod, Q, killactive,
|
|
||||||
bind = $mainMod SHIFT, Q, exit,
|
|
||||||
bind = $mainMod SHIFT, R, exec, hyprctl reload
|
|
||||||
|
|
||||||
# Switch windows
|
|
||||||
bind = $mainMod, TAB, hyprexpo:expo, toggle
|
|
||||||
bind = ALT, TAB, cyclenext,
|
|
||||||
# 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
|
|
||||||
bind = $mainMod, H, movefocus, l
|
|
||||||
bind = $mainMod, L, movefocus, r
|
|
||||||
bind = $mainMod, K, movefocus, u
|
|
||||||
bind = $mainMod, J, movefocus, d
|
|
||||||
bind = $mainMod, left, movefocus, l
|
|
||||||
bind = $mainMod, right, movefocus, r
|
|
||||||
bind = $mainMod, up, movefocus, u
|
|
||||||
bind = $mainMod, down, movefocus, d
|
|
||||||
|
|
||||||
# Move windows
|
|
||||||
bind = $mainMod SHIFT, H, movewindow, l
|
|
||||||
bind = $mainMod SHIFT, L, movewindow, r
|
|
||||||
bind = $mainMod SHIFT, K, movewindow, u
|
|
||||||
bind = $mainMod SHIFT, J, movewindow, d
|
|
||||||
bind = $mainMod SHIFT, left, movewindow, l
|
|
||||||
bind = $mainMod SHIFT, right, movewindow, r
|
|
||||||
bind = $mainMod SHIFT, up, movewindow, u
|
|
||||||
bind = $mainMod SHIFT, down, movewindow, d
|
|
||||||
|
|
||||||
# Resize windows
|
|
||||||
bind = $mainMod CTRL, H, resizeactive, -30 0
|
|
||||||
bind = $mainMod CTRL, L, resizeactive, 30 0
|
|
||||||
bind = $mainMod CTRL, K, resizeactive, 0 -30
|
|
||||||
bind = $mainMod CTRL, J, resizeactive, 0 30
|
|
||||||
|
|
||||||
# Floating / fullscreen
|
|
||||||
bind = $mainMod, V, togglefloating,
|
|
||||||
bind = $mainMod, F, fullscreen, 0
|
|
||||||
bind = $mainMod SHIFT, F, fullscreen, 1
|
|
||||||
|
|
||||||
# Workspaces
|
|
||||||
bind = $mainMod, 1, workspace, 1
|
|
||||||
bind = $mainMod, 2, workspace, 2
|
|
||||||
bind = $mainMod, 3, workspace, 3
|
|
||||||
bind = $mainMod, 4, workspace, 4
|
|
||||||
bind = $mainMod, 5, workspace, 5
|
|
||||||
bind = $mainMod, 6, workspace, 6
|
|
||||||
bind = $mainMod, 7, workspace, 7
|
|
||||||
bind = $mainMod, 8, workspace, 8
|
|
||||||
bind = $mainMod, 9, workspace, 9
|
|
||||||
bind = $mainMod, 0, workspace, 10
|
|
||||||
|
|
||||||
bind = $mainMod SHIFT, 1, movetoworkspace, 1
|
|
||||||
bind = $mainMod SHIFT, 2, movetoworkspace, 2
|
|
||||||
bind = $mainMod SHIFT, 3, movetoworkspace, 3
|
|
||||||
bind = $mainMod SHIFT, 4, movetoworkspace, 4
|
|
||||||
bind = $mainMod SHIFT, 5, movetoworkspace, 5
|
|
||||||
bind = $mainMod SHIFT, 6, movetoworkspace, 6
|
|
||||||
bind = $mainMod SHIFT, 7, movetoworkspace, 7
|
|
||||||
bind = $mainMod SHIFT, 8, movetoworkspace, 8
|
|
||||||
bind = $mainMod SHIFT, 9, movetoworkspace, 9
|
|
||||||
bind = $mainMod SHIFT, 0, movetoworkspace, 10
|
|
||||||
|
|
||||||
# Cycle workspaces
|
|
||||||
bind = $mainMod, mouse_down, workspace, e+1
|
|
||||||
bind = $mainMod, mouse_up, workspace, e-1
|
|
||||||
|
|
||||||
# Mouse drag
|
|
||||||
bindm = $mainMod, mouse:272, movewindow
|
|
||||||
bindm = $mainMod, mouse:273, resizewindow
|
|
||||||
|
|
||||||
#########################
|
|
||||||
# Screenshots
|
|
||||||
#########################
|
|
||||||
bind = $mainMod SHIFT, s, exec, grim -g "$(slurp)" - | wl-copy
|
|
||||||
bind = , XF86Screenshot, exec, grim - | wl-copy
|
|
||||||
|
|
||||||
#########################
|
|
||||||
# Audio (pamixer)
|
|
||||||
#########################
|
|
||||||
bind = , XF86AudioRaiseVolume, exec, pamixer -i 5
|
|
||||||
bind = , XF86AudioLowerVolume, exec, pamixer -d 5
|
|
||||||
bind = , XF86AudioMute, exec, pamixer -t
|
|
||||||
bind = , XF86AudioMicMute, exec, pamixer --default-source -t
|
|
||||||
|
|
||||||
#########################
|
|
||||||
# Media (playerctl)
|
|
||||||
#########################
|
|
||||||
bind = , XF86AudioPlay, exec, playerctl play-pause
|
|
||||||
bind = , XF86AudioPause, exec, playerctl pause
|
|
||||||
bind = , XF86AudioNext, exec, playerctl next
|
|
||||||
bind = , XF86AudioPrev, exec, playerctl previous
|
|
||||||
bind = , XF86AudioStop, exec, playerctl stop
|
|
||||||
|
|
||||||
#########################
|
|
||||||
# Brightness (brightnessctl)
|
|
||||||
#########################
|
|
||||||
bind = , XF86MonBrightnessUp, exec, brightnessctl set +10%
|
|
||||||
bind = , XF86MonBrightnessDown, exec, brightnessctl set 10%-
|
|
||||||
bind = , XF86KbdBrightnessUp, exec, brightnessctl -d '*kbd_backlight*' set +10%
|
|
||||||
bind = , XF86KbdBrightnessDown, exec, brightnessctl -d '*kbd_backlight*' set 10%-
|
|
||||||
|
|
||||||
#########################
|
|
||||||
# Power / session
|
|
||||||
#########################
|
|
||||||
bind = , XF86Sleep, exec, systemctl suspend
|
|
||||||
bind = , XF86PowerOff, exec, systemctl poweroff
|
|
||||||
bind = , XF86WakeUp, exec, systemctl suspend
|
|
||||||
bind = $mainMod, L, exec, loginctl lock-session
|
|
||||||
bind = $mainMod, X, exec, ~/.config/hypr/scripts/powermenu.sh
|
|
||||||
|
|
||||||
#########################
|
|
||||||
# Laptop lid settings
|
|
||||||
#########################
|
|
||||||
bindl = , switch:on:Lid Switch, exec, ~/.config/hypr/scripts/lid-action.sh
|
|
||||||
bindl = , switch:off:Lid Switch, exec, ~/.config/hypr/scripts/lid-restore.sh
|
|
||||||
|
|
||||||
#########################
|
|
||||||
# Start apps
|
|
||||||
#########################
|
|
||||||
bind = CTRL ALT, B, exec, flatpak run eu.betterbird.Betterbird
|
|
||||||
bind = CTRL ALT, S, exec, spotify
|
|
||||||
bind = $mainMod, z, exec, zeditor
|
|
||||||
bind = $mainMod, w, exec, zen --url https://nextcloud.data-pro.nu
|
|
||||||
|
|
||||||
|
|
||||||
# Default portable monitor rule
|
|
||||||
monitor=DP-1,3840x1080@144,1920x0,1
|
|
||||||
|
|
||||||
############################
|
|
||||||
# Hyprexpo (workspace/window overview)
|
|
||||||
############################
|
|
||||||
|
|
||||||
# Basic plugin config (tweak as you like)
|
|
||||||
plugin {
|
|
||||||
hyprexpo {
|
|
||||||
columns = 3
|
|
||||||
gaps_in = 5
|
|
||||||
gaps_out = 20
|
|
||||||
|
|
||||||
# Optional; comment out if you don't want it
|
|
||||||
# workspace_method = center current
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,46 +1,12 @@
|
|||||||
# Generated by Home Manager.
|
# Generated by Home Manager.
|
||||||
# See https://sw.kovidgoyal.net/kitty/conf.html
|
# See https://sw.kovidgoyal.net/kitty/conf.html
|
||||||
include /nix/store/inyp0v9sjc28ndwjbd4lkh80zw2av0nc-kitty-themes-0-unstable-2026-02-01/share/kitty-themes/themes/Catppuccin-Mocha.conf
|
|
||||||
|
|
||||||
# Shell integration is sourced and configured manually
|
|
||||||
shell_integration no-rc
|
shell_integration no-rc
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# 1) Theme first (stable path)
|
|
||||||
include themes/Catppuccin-Mocha.conf
|
include themes/Catppuccin-Mocha.conf
|
||||||
# 2) Your repo config (may also include theme; harmless if duplicated)
|
|
||||||
##############################################
|
|
||||||
# These files are just for reference.
|
|
||||||
# If you want to change anything, edit the source files in:
|
|
||||||
# ~/henrovnix/assets/conf
|
|
||||||
#
|
|
||||||
# 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>
|
|
||||||
#
|
|
||||||
# If everything still works, you can use the same command but:
|
|
||||||
# - keep "switch"
|
|
||||||
# - and add a reboot:
|
|
||||||
#
|
|
||||||
# cd ~/henrovnix && sudo nixos-rebuild switch --flake .#<yourhost> && systemctl reboot
|
|
||||||
#
|
|
||||||
# NOTE:
|
|
||||||
# Make sure the lines starting with: cd ~/henrovnix
|
|
||||||
# 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+v paste_from_clipboard
|
||||||
map ctrl+shift+c copy_to_clipboard
|
map ctrl+shift+c copy_to_clipboard
|
||||||
|
|
||||||
# 3) Force transparency last (wins)
|
background_opacity 0.3
|
||||||
#background_opacity 0.60
|
background_blur 1
|
||||||
#dynamic_background_opacity yes
|
dynamic_background_opacity yes
|
||||||
|
|
||||||
|
|||||||
@@ -1 +1,111 @@
|
|||||||
Henro
|
{
|
||||||
|
"layer": "top",
|
||||||
|
"height": 34,
|
||||||
|
|
||||||
|
//"modules-left": ["hyprland/window"],
|
||||||
|
|
||||||
|
"modules-center": ["hyprland/workspaces" ],
|
||||||
|
|
||||||
|
"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",
|
||||||
|
},
|
||||||
|
|
||||||
|
"idle_inhibitor": {
|
||||||
|
"tooltip": true,
|
||||||
|
"format": "{icon}",
|
||||||
|
"format-icons": {
|
||||||
|
"activated": " ",
|
||||||
|
"deactivated": " ",
|
||||||
|
},
|
||||||
|
"tooltip-format-activated": "Staying awake",
|
||||||
|
"tooltip-format-deactivated": "Might sleep....",
|
||||||
|
},
|
||||||
|
|
||||||
|
"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,225 @@
|
|||||||
|
/* --- 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.overflow {
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|||||||