From 514b305713efb67412dfa4f33db55de8b2d09d97 Mon Sep 17 00:00:00 2001 From: Bernardo Magri Date: Sun, 5 Apr 2026 10:52:41 +0100 Subject: [PATCH] feat(system): comprehensive branding, styling, and system feature update - Relocate themes to assets/themes/ and update all references. - Implement custom SDDM theme and Plymouth theme enhancements. - Add themed templates for Alacritty, Hyprland, Waybar, and other apps. - Introduce Makima key remapper module and configuration. - Add Voxtype and Walker configurations. - Implement systemd power management and timeout optimizations. - Add Nautilus-python extensions for LocalSend. - Update branding assets and ASCII art integration. --- assets/branding/icon.png | Bin 0 -> 23303 bytes assets/branding/icon.txt | 34 ++ assets/branding/logo.svg | 28 +- .../makima/AT Translated Set 2 keyboard.toml | 7 + .../nautilus-python/extensions/localsend.py | 84 ++++ assets/nomarchy-skill/SKILL.md | 366 ++++++++++++++++++ assets/plymouth/bullet.png | Bin 0 -> 293 bytes assets/plymouth/entry.png | Bin 0 -> 694 bytes assets/plymouth/lock.png | Bin 0 -> 1537 bytes assets/plymouth/nomarchy.plymouth | 9 +- assets/plymouth/nomarchy.script | 294 +++++++++++--- assets/plymouth/progress_bar.png | Bin 0 -> 314 bytes assets/plymouth/progress_box.png | Bin 0 -> 314 bytes assets/sddm/nomarchy/Main.qml | 99 +++++ assets/sddm/nomarchy/logo.svg | 64 +++ assets/sddm/nomarchy/metadata.desktop | 6 + assets/sddm/nomarchy/theme.conf | 1 + assets/themed/alacritty.toml.tpl | 47 +++ assets/themed/btop.theme.tpl | 83 ++++ assets/themed/chromium.theme.tpl | 1 + assets/themed/ghostty.conf.tpl | 22 ++ .../hyprland-preview-share-picker.css.tpl | 94 +++++ assets/themed/hyprland.conf.tpl | 9 + assets/themed/hyprlock.conf.tpl | 5 + assets/themed/keyboard.rgb.tpl | 1 + assets/themed/kitty.conf.tpl | 27 ++ assets/themed/mako.ini.tpl | 5 + assets/themed/obsidian.css.tpl | 99 +++++ assets/themed/swayosd.css.tpl | 5 + assets/themed/walker.css.tpl | 6 + assets/themed/waybar.css.tpl | 2 + .../backgrounds/1-color-fade.png | Bin .../themes}/catppuccin-latte/btop.theme | 0 .../themes}/catppuccin-latte/colors.toml | 0 .../themes}/catppuccin-latte/icons.theme | 0 .../themes}/catppuccin-latte/light.mode | 0 .../themes}/catppuccin-latte/neovim.lua | 0 .../themes}/catppuccin-latte/preview.png | Bin .../themes}/catppuccin-latte/vscode.json | 0 .../catppuccin/backgrounds/1-totoro.png | Bin .../catppuccin/backgrounds/2-waves.png | Bin .../catppuccin/backgrounds/3-blue-eye.png | Bin .../themes}/catppuccin/btop.theme | 0 .../themes}/catppuccin/colors.toml | 0 .../themes}/catppuccin/icons.theme | 0 .../themes}/catppuccin/neovim.lua | 0 .../themes}/catppuccin/preview.png | Bin .../themes}/catppuccin/vscode.json | 0 .../themes}/catppuccin/waybar.css | 0 .../themes}/ethereal/backgrounds/1-cosmic.jpg | Bin .../themes}/ethereal/backgrounds/2-meadow.jpg | Bin {themes => assets/themes}/ethereal/btop.theme | 0 .../themes}/ethereal/colors.toml | 0 .../themes}/ethereal/icons.theme | 0 {themes => assets/themes}/ethereal/neovim.lua | 0 .../themes}/ethereal/preview.png | Bin .../themes}/ethereal/vscode.json | 0 .../everforest/backgrounds/1-tree-tops.jpg | Bin .../themes}/everforest/btop.theme | 0 .../themes}/everforest/colors.toml | 0 .../themes}/everforest/icons.theme | 0 .../themes}/everforest/neovim.lua | 0 .../themes}/everforest/preview.png | Bin .../themes}/everforest/vscode.json | 0 .../flexoki-light/backgrounds/1-orb.png | Bin .../flexoki-light/backgrounds/2-nomarchy.png | Bin .../themes}/flexoki-light/btop.theme | 0 .../themes}/flexoki-light/chromium.theme | 0 .../themes}/flexoki-light/colors.toml | 0 .../themes}/flexoki-light/icons.theme | 0 .../themes}/flexoki-light/light.mode | 0 .../themes}/flexoki-light/neovim.lua | 0 .../themes}/flexoki-light/preview.png | Bin .../themes}/flexoki-light/vscode.json | 0 .../gruvbox/backgrounds/1-the-backwater.jpg | Bin .../gruvbox/backgrounds/2-flower-basket.jpg | Bin .../gruvbox/backgrounds/3-village-square.jpg | Bin .../backgrounds/4-idyllic-procession.jpg | Bin .../themes}/gruvbox/backgrounds/5-leaves.jpg | Bin {themes => assets/themes}/gruvbox/btop.theme | 0 {themes => assets/themes}/gruvbox/colors.toml | 0 {themes => assets/themes}/gruvbox/icons.theme | 0 {themes => assets/themes}/gruvbox/neovim.lua | 0 {themes => assets/themes}/gruvbox/preview.png | Bin {themes => assets/themes}/gruvbox/vscode.json | 0 .../hackerman/backgrounds/1-synth-scape.jpg | Bin .../hackerman/backgrounds/2-geometric.jpg | Bin .../themes}/hackerman/btop.theme | 0 .../themes}/hackerman/colors.toml | 0 .../themes}/hackerman/icons.theme | 0 .../themes}/hackerman/neovim.lua | 0 .../themes}/hackerman/preview.png | Bin .../themes}/hackerman/vscode.json | 0 .../kanagawa/backgrounds/1-kanagawa.jpg | Bin {themes => assets/themes}/kanagawa/btop.theme | 0 .../themes}/kanagawa/colors.toml | 0 .../themes}/kanagawa/hyprland.conf | 0 .../themes}/kanagawa/icons.theme | 0 {themes => assets/themes}/kanagawa/neovim.lua | 0 .../themes}/kanagawa/preview.png | Bin .../themes}/kanagawa/vscode.json | 0 .../backgrounds/01-united-in-severance.jpg | Bin .../lumon/backgrounds/02-opinions-equally.jpg | Bin {themes => assets/themes}/lumon/btop.theme | 0 .../themes}/lumon/chromium.theme | 0 {themes => assets/themes}/lumon/colors.toml | 0 {themes => assets/themes}/lumon/hyprland.conf | 0 {themes => assets/themes}/lumon/icons.theme | 0 {themes => assets/themes}/lumon/neovim.lua | 0 {themes => assets/themes}/lumon/preview.png | Bin {themes => assets/themes}/lumon/swayosd.css | 0 {themes => assets/themes}/lumon/vscode.json | 0 {themes => assets/themes}/lumon/waybar.css | 0 .../matte-black/backgrounds/0-ship-at-sea.jpg | Bin .../matte-black/backgrounds/1-dark-waters.jpg | Bin .../matte-black/backgrounds/2-dot-hands.jpg | Bin .../themes}/matte-black/btop.theme | 0 .../themes}/matte-black/colors.toml | 0 .../themes}/matte-black/icons.theme | 0 .../themes}/matte-black/neovim.lua | 0 .../themes}/matte-black/preview.png | Bin .../themes}/matte-black/vscode.json | 0 .../miasma/backgrounds/01-nature-of-fear.jpg | Bin .../themes}/miasma/backgrounds/02-crowned.jpg | Bin {themes => assets/themes}/miasma/btop.theme | 0 {themes => assets/themes}/miasma/colors.toml | 0 {themes => assets/themes}/miasma/icons.theme | 0 {themes => assets/themes}/miasma/neovim.lua | 0 {themes => assets/themes}/miasma/preview.png | Bin {themes => assets/themes}/miasma/vscode.json | 0 .../themes}/nomarchy-palettes.nix | 0 .../themes}/nord/backgrounds/0-black-moon.jpg | Bin .../themes}/nord/backgrounds/1-city-view.png | Bin .../nord/backgrounds/2-night-hawks.png | Bin {themes => assets/themes}/nord/btop.theme | 0 {themes => assets/themes}/nord/colors.toml | 0 {themes => assets/themes}/nord/icons.theme | 0 {themes => assets/themes}/nord/neovim.lua | 0 {themes => assets/themes}/nord/preview.png | Bin {themes => assets/themes}/nord/vscode.json | 0 .../osaka-jade/backgrounds/1-glowing-city.jpg | Bin .../backgrounds/2-shaded-entrance.jpg | Bin .../backgrounds/3-mountain-moon.jpg | Bin .../themes}/osaka-jade/btop.theme | 0 .../themes}/osaka-jade/colors.toml | 0 .../themes}/osaka-jade/icons.theme | 0 .../themes}/osaka-jade/neovim.lua | 0 .../themes}/osaka-jade/preview.png | Bin .../themes}/osaka-jade/vscode.json | 0 .../retro-82/backgrounds/1-in-the-groove.jpg | Bin .../retro-82/backgrounds/2-dusk-guardian.jpg | Bin .../retro-82/backgrounds/3-glassy-lines.jpg | Bin .../retro-82/backgrounds/4-gateway.jpg | Bin .../retro-82/backgrounds/5-zen-boat.jpg | Bin .../backgrounds/6-abstract-pyramids.jpg | Bin .../retro-82/backgrounds/7-the-journey.jpg | Bin .../retro-82/backgrounds/8-glitter-glass.jpg | Bin {themes => assets/themes}/retro-82/btop.theme | 0 .../themes}/retro-82/chromium.theme | 0 .../themes}/retro-82/colors.toml | 0 .../themes}/retro-82/hyprland.conf | 0 .../themes}/retro-82/icons.theme | 0 {themes => assets/themes}/retro-82/neovim.lua | 0 .../themes}/retro-82/preview.png | Bin .../themes}/retro-82/swayosd.css | 0 .../themes}/retro-82/vscode.json | 0 {themes => assets/themes}/retro-82/waybar.css | 0 .../ristretto/backgrounds/1-color-curves.jpg | Bin .../ristretto/backgrounds/2-coffee-beans.jpg | Bin .../backgrounds/3-industrial-moon.jpg | Bin .../themes}/ristretto/btop.theme | 0 .../themes}/ristretto/colors.toml | 0 .../themes}/ristretto/icons.theme | 0 .../themes}/ristretto/neovim.lua | 0 .../themes}/ristretto/preview.png | Bin .../themes}/ristretto/vscode.json | 0 .../rose-pine/backgrounds/1-funky-shapes.jpg | Bin .../rose-pine/backgrounds/2-dot-map.png | Bin .../backgrounds/3-nomarchy-plants.png | Bin .../themes}/rose-pine/btop.theme | 0 .../themes}/rose-pine/chromium.theme | 0 .../themes}/rose-pine/colors.toml | 0 .../themes}/rose-pine/icons.theme | 0 .../themes}/rose-pine/light.mode | 0 .../themes}/rose-pine/neovim.lua | 0 .../themes}/rose-pine/preview.png | Bin .../themes}/rose-pine/vscode.json | 0 .../tokyo-night/backgrounds/0-swirl-buck.jpg | Bin .../tokyo-night/backgrounds/1-sunset-lake.png | Bin .../backgrounds/2-pawel-czerwinski.jpg | Bin .../backgrounds/3-milad-fakurian.jpg | Bin .../themes}/tokyo-night/btop.theme | 0 .../themes}/tokyo-night/colors.toml | 0 .../themes}/tokyo-night/icons.theme | 0 .../themes}/tokyo-night/keyboard.rgb | 0 .../themes}/tokyo-night/neovim.lua | 0 .../themes}/tokyo-night/preview.png | Bin .../themes}/tokyo-night/vscode.json | 0 .../backgrounds/1-twisted-stairs.jpg | Bin .../vantablack/backgrounds/2-layers-deep.jpg | Bin .../backgrounds/3-layers-stacked.jpg | Bin .../themes}/vantablack/btop.theme | 0 .../themes}/vantablack/colors.toml | 0 .../themes}/vantablack/icons.theme | 0 .../themes}/vantablack/neovim.lua | 0 .../themes}/vantablack/preview.png | Bin .../themes}/vantablack/vscode.json | 0 .../themes}/white/backgrounds/1-white.jpg | Bin .../themes}/white/backgrounds/2-white.jpg | Bin .../themes}/white/backgrounds/3-white.jpg | Bin {themes => assets/themes}/white/btop.theme | 0 {themes => assets/themes}/white/colors.toml | 0 {themes => assets/themes}/white/icons.theme | 0 {themes => assets/themes}/white/light.mode | 0 {themes => assets/themes}/white/neovim.lua | 0 {themes => assets/themes}/white/preview.png | Bin {themes => assets/themes}/white/vscode.json | 0 bin/{ => appearance}/nomarchy-font-current | 2 +- bin/{ => appearance}/nomarchy-font-list | 4 +- bin/{ => appearance}/nomarchy-font-set | 6 +- bin/{ => appearance}/nomarchy-show-done | 0 bin/{ => appearance}/nomarchy-show-logo | 4 +- bin/appearance/nomarchy-theme-bg-install | 7 + bin/{ => appearance}/nomarchy-theme-bg-next | 8 +- bin/{ => appearance}/nomarchy-theme-bg-set | 4 +- bin/{ => appearance}/nomarchy-theme-current | 2 +- bin/appearance/nomarchy-theme-install | 33 ++ bin/appearance/nomarchy-theme-list | 8 + bin/appearance/nomarchy-theme-refresh | 9 + bin/{ => appearance}/nomarchy-theme-remove | 10 +- bin/{ => appearance}/nomarchy-theme-set | 18 +- bin/appearance/nomarchy-theme-set-keyboard | 4 + .../nomarchy-theme-set-keyboard-asus-rog | 7 + .../nomarchy-theme-set-keyboard-f16 | 4 +- .../nomarchy-theme-set-obsidian | 14 +- .../nomarchy-theme-set-templates | 6 +- .../nomarchy-theme-set-vscode | 6 +- bin/{ => appearance}/nomarchy-theme-update | 2 +- .../nomarchy-toggle-nightlight | 2 +- bin/{ => apps}/nomarchy-launch-about | 2 +- bin/apps/nomarchy-launch-audio | 5 + bin/apps/nomarchy-launch-bluetooth | 7 + bin/{ => apps}/nomarchy-launch-browser | 0 bin/{ => apps}/nomarchy-launch-editor | 4 +- ...launch-floating-terminal-with-presentation | 7 + bin/{ => apps}/nomarchy-launch-or-focus | 2 +- bin/apps/nomarchy-launch-or-focus-tui | 9 + .../nomarchy-launch-or-focus-webapp | 6 +- bin/{ => apps}/nomarchy-launch-screensaver | 22 +- bin/apps/nomarchy-launch-tui | 5 + bin/{ => apps}/nomarchy-launch-walker | 0 bin/{ => apps}/nomarchy-launch-webapp | 0 bin/{ => apps}/nomarchy-launch-wifi | 4 +- bin/{ => apps}/nomarchy-restart-app | 2 +- bin/apps/nomarchy-restart-btop | 5 + bin/{ => apps}/nomarchy-restart-opencode | 2 +- bin/{ => apps}/nomarchy-restart-terminal | 0 bin/{ => apps}/nomarchy-restart-tmux | 0 bin/{ => apps}/nomarchy-tui-install | 0 bin/{ => apps}/nomarchy-tui-remove | 0 bin/{ => apps}/nomarchy-tui-remove-all | 2 +- bin/{ => apps}/nomarchy-voxtype-config | 2 +- bin/{ => apps}/nomarchy-voxtype-install | 8 +- bin/apps/nomarchy-voxtype-model | 5 + bin/{ => apps}/nomarchy-voxtype-remove | 4 +- bin/{ => apps}/nomarchy-voxtype-status | 2 +- bin/{ => apps}/nomarchy-webapp-handler-hey | 2 +- bin/{ => apps}/nomarchy-webapp-handler-zoom | 2 +- bin/{ => apps}/nomarchy-webapp-install | 2 +- bin/{ => apps}/nomarchy-webapp-remove | 2 +- bin/{ => apps}/nomarchy-webapp-remove-all | 6 +- bin/{ => apps}/nomarchy-windows-vm | 52 +-- bin/{ => hardware}/nomarchy-battery-capacity | 2 +- bin/{ => hardware}/nomarchy-battery-monitor | 6 +- bin/{ => hardware}/nomarchy-battery-present | 0 bin/{ => hardware}/nomarchy-battery-remaining | 0 .../nomarchy-battery-remaining-time | 0 bin/{ => hardware}/nomarchy-battery-status | 4 +- .../nomarchy-brightness-display | 4 +- .../nomarchy-brightness-display-apple | 2 +- .../nomarchy-brightness-keyboard | 4 +- bin/{ => hardware}/nomarchy-haptic-touchpad | 0 bin/{ => hardware}/nomarchy-hw-asus-rog | 0 bin/{ => hardware}/nomarchy-hw-framework16 | 2 +- bin/{ => hardware}/nomarchy-hw-intel | 0 bin/{ => hardware}/nomarchy-hw-intel-ptl | 0 bin/{ => hardware}/nomarchy-hw-match | 2 +- bin/{ => hardware}/nomarchy-hw-surface | 2 +- bin/{ => hardware}/nomarchy-hw-vulkan | 0 .../nomarchy-powerprofiles-list | 2 +- bin/{ => hardware}/nomarchy-restart-makima | 2 +- bin/{ => hardware}/nomarchy-restart-trackpad | 0 bin/{ => hardware}/nomarchy-toggle-hybrid-gpu | 6 +- bin/{ => hardware}/nomarchy-wifi-powersave | 4 +- bin/nomarchy-hook | 18 - bin/nomarchy-launch-audio | 5 - bin/nomarchy-launch-bluetooth | 7 - ...launch-floating-terminal-with-presentation | 7 - bin/nomarchy-launch-or-focus-tui | 9 - bin/nomarchy-launch-tui | 5 - bin/nomarchy-refresh-fastfetch | 5 - bin/nomarchy-restart-btop | 5 - bin/nomarchy-restart-hyprctl | 5 - bin/nomarchy-restart-mako | 5 - bin/nomarchy-restart-swayosd | 3 - bin/nomarchy-restart-waybar | 3 - bin/nomarchy-setup-makima | 22 -- bin/nomarchy-test-vm | 15 - bin/nomarchy-theme-bg-install | 7 - bin/nomarchy-theme-install | 33 -- bin/nomarchy-theme-list | 8 - bin/nomarchy-theme-refresh | 9 - bin/nomarchy-theme-set-keyboard | 4 - bin/nomarchy-theme-set-keyboard-asus-rog | 7 - bin/nomarchy-voxtype-model | 5 - .../nomarchy-hibernation-available | 2 +- bin/{ => system}/nomarchy-hibernation-remove | 2 +- bin/{ => system}/nomarchy-hibernation-setup | 7 +- bin/{ => system}/nomarchy-pkg-add | 2 +- bin/{ => system}/nomarchy-pkg-remove | 4 +- bin/{ => system}/nomarchy-restart-bluetooth | 0 bin/{ => system}/nomarchy-restart-pipewire | 0 bin/{ => system}/nomarchy-restart-wifi | 0 bin/{ => system}/nomarchy-restart-xcompose | 2 +- bin/{ => system}/nomarchy-setup-dns | 2 +- bin/{ => system}/nomarchy-setup-fido2 | 2 +- bin/{ => system}/nomarchy-setup-fingerprint | 2 +- bin/{ => system}/nomarchy-sudo-keepalive | 2 +- .../nomarchy-sudo-passwordless-toggle | 6 +- bin/{ => system}/nomarchy-sudo-reset | 0 bin/{ => system}/nomarchy-system-logout | 2 +- bin/{ => system}/nomarchy-system-reboot | 4 +- bin/{ => system}/nomarchy-system-shutdown | 4 +- bin/{ => system}/nomarchy-toggle-idle | 2 +- bin/{ => system}/nomarchy-toggle-suspend | 2 +- bin/{ => system}/nomarchy-tz-select | 2 +- bin/{ => system}/nomarchy-update | 8 +- bin/{ => system}/nomarchy-update-time | 0 bin/{ => utils}/nomarchy-build-iso | 4 +- bin/{ => utils}/nomarchy-cmd-audio-switch | 0 bin/{ => utils}/nomarchy-cmd-present | 0 bin/{ => utils}/nomarchy-cmd-screenrecord | 6 +- bin/{ => utils}/nomarchy-cmd-screensaver | 8 +- bin/{ => utils}/nomarchy-cmd-screenshot | 8 +- bin/{ => utils}/nomarchy-cmd-share | 2 +- bin/{ => utils}/nomarchy-cmd-terminal-cwd | 0 bin/{ => utils}/nomarchy-config-direct-boot | 8 +- bin/{ => utils}/nomarchy-drive-info | 4 +- bin/{ => utils}/nomarchy-drive-select | 4 +- bin/{ => utils}/nomarchy-drive-set-password | 2 +- bin/utils/nomarchy-hook | 18 + bin/{ => utils}/nomarchy-lock-screen | 2 +- bin/{ => utils}/nomarchy-menu | 160 ++++---- bin/{ => utils}/nomarchy-menu-keybindings | 6 +- bin/{ => utils}/nomarchy-notification-dismiss | 2 +- bin/{ => utils}/nomarchy-npx-install | 6 +- bin/{ => utils}/nomarchy-on-boot | 12 +- bin/utils/nomarchy-refresh-fastfetch | 5 + bin/{ => utils}/nomarchy-snapshot | 8 +- bin/{ => utils}/nomarchy-state | 12 +- bin/{ => utils}/nomarchy-sync | 12 +- bin/{ => utils}/nomarchy-test-installer | 6 +- bin/utils/nomarchy-test-vm | 15 + .../nomarchy-toggle-notification-silencing | 0 bin/{ => utils}/nomarchy-welcome | 14 +- ...hyprland-active-window-transparency-toggle | 0 .../nomarchy-hyprland-monitor-scaling-cycle | 0 .../nomarchy-hyprland-window-close-all | 0 .../nomarchy-hyprland-window-gaps-toggle | 0 bin/{ => wm}/nomarchy-hyprland-window-pop | 2 +- ...yprland-window-single-square-aspect-toggle | 0 .../nomarchy-hyprland-workspace-layout-toggle | 0 bin/wm/nomarchy-restart-hyprctl | 5 + bin/{ => wm}/nomarchy-restart-hypridle | 2 +- bin/{ => wm}/nomarchy-restart-hyprsunset | 2 +- bin/wm/nomarchy-restart-mako | 5 + bin/wm/nomarchy-restart-swayosd | 3 + bin/{ => wm}/nomarchy-restart-walker | 0 bin/wm/nomarchy-restart-waybar | 3 + bin/{ => wm}/nomarchy-swayosd-brightness | 2 +- bin/{ => wm}/nomarchy-swayosd-kbd-brightness | 2 +- bin/{ => wm}/nomarchy-toggle-screensaver | 2 +- bin/{ => wm}/nomarchy-toggle-waybar | 2 +- config/brave-flags.conf | 2 +- config/chromium-flags.conf | 2 +- config/hypr/hyprland.conf | 18 +- config/nomarchy.ttf | Bin 1829 -> 1516 bytes .../default/alacritty/screensaver.toml | 11 + config/nomarchy/default/bash/aliases | 57 +++ config/nomarchy/default/bash/envs | 7 + config/nomarchy/default/bash/fns/compression | 3 + config/nomarchy/default/bash/fns/drives | 59 +++ .../default/bash/fns/ssh-port-forwarding | 20 + config/nomarchy/default/bash/fns/tmux | 97 +++++ config/nomarchy/default/bash/fns/transcoding | 53 +++ config/nomarchy/default/bash/fns/worktrees | 36 ++ config/nomarchy/default/bash/functions | 1 + config/nomarchy/default/bash/init | 24 ++ config/nomarchy/default/bash/inputrc | 47 +++ config/nomarchy/default/bash/rc | 6 + config/nomarchy/default/bash/shell | 13 + config/nomarchy/default/bashrc | 11 + .../extensions/copy-url/background.js | 21 + .../chromium/extensions/copy-url/icon.png | 1 + .../extensions/copy-url/manifest.json | 19 + .../elephant/nomarchy_background_selector.lua | 73 ++++ .../default/elephant/nomarchy_themes.lua | 96 +++++ config/nomarchy/default/ghostty/screensaver | 3 + config/nomarchy/default/gpg/dirmngr.conf | 7 + config/nomarchy/default/hypr/apps.conf | 17 + .../nomarchy/default/hypr/apps/1password.conf | 2 + .../nomarchy/default/hypr/apps/bitwarden.conf | 6 + .../nomarchy/default/hypr/apps/browser.conf | 16 + .../default/hypr/apps/davinci-resolve.conf | 2 + .../nomarchy/default/hypr/apps/geforce.conf | 5 + .../nomarchy/default/hypr/apps/hyprshot.conf | 2 + .../nomarchy/default/hypr/apps/localsend.conf | 4 + .../nomarchy/default/hypr/apps/moonlight.conf | 6 + config/nomarchy/default/hypr/apps/pip.conf | 10 + config/nomarchy/default/hypr/apps/qemu.conf | 2 + .../nomarchy/default/hypr/apps/retroarch.conf | 4 + config/nomarchy/default/hypr/apps/steam.conf | 8 + config/nomarchy/default/hypr/apps/system.conf | 23 ++ .../nomarchy/default/hypr/apps/telegram.conf | 2 + .../nomarchy/default/hypr/apps/terminals.conf | 4 + config/nomarchy/default/hypr/apps/walker.conf | 2 + .../default/hypr/apps/webcam-overlay.conf | 6 + config/nomarchy/default/hypr/autostart.conf | 12 + config/nomarchy/default/hypr/bindings.conf | 16 + .../default/hypr/bindings/clipboard.conf | 5 + .../nomarchy/default/hypr/bindings/media.conf | 28 ++ .../default/hypr/bindings/tiling-v2.conf | 128 ++++++ .../default/hypr/bindings/tiling.conf | 74 ++++ .../default/hypr/bindings/utilities.conf | 62 +++ config/nomarchy/default/hypr/envs.conf | 29 ++ config/nomarchy/default/hypr/input.conf | 21 + config/nomarchy/default/hypr/looknfeel.conf | 147 +++++++ .../nomarchy/default/hypr/plain-bindings.conf | 16 + config/nomarchy/default/hypr/windows.conf | 15 + config/nomarchy/default/mako/core.ini | 34 ++ config/nomarchy/default/voxtype/config.toml | 97 +++++ config/nomarchy/default/walker/restart.conf | 3 + .../walker/themes/nomarchy-default/layout.xml | 156 ++++++++ .../walker/themes/nomarchy-default/style.css | 116 ++++++ config/nomarchy/default/walker/walker.desktop | 7 + .../default/waybar/indicators/idle.sh | 7 + .../indicators/notification-silencing.sh | 7 + .../waybar/indicators/screen-recording.sh | 7 + .../wireplumber.conf.d/alsa-soft-mixer.conf | 18 + config/nomarchy/default/xcompose | 29 ++ config/walker/config.toml | 2 +- modules/home/default.nix | 2 +- modules/home/scripts.nix | 2 +- modules/home/state.nix | 4 +- modules/home/stylix.nix | 4 +- modules/home/theme-files.nix | 7 +- modules/home/theme-switcher.nix | 2 +- modules/system/browser.nix | 2 +- modules/system/default.nix | 2 + modules/system/hardware.nix | 1 + modules/system/makima.nix | 25 ++ modules/system/options.nix | 5 + modules/system/sddm.nix | 14 + modules/system/state.nix | 1 + modules/system/systemd.nix | 64 +++ 465 files changed, 3770 insertions(+), 578 deletions(-) create mode 100644 assets/branding/icon.png create mode 100644 assets/branding/icon.txt create mode 100644 assets/makima/AT Translated Set 2 keyboard.toml create mode 100644 assets/nautilus-python/extensions/localsend.py create mode 100644 assets/nomarchy-skill/SKILL.md create mode 100644 assets/plymouth/bullet.png create mode 100644 assets/plymouth/entry.png create mode 100644 assets/plymouth/lock.png create mode 100644 assets/plymouth/progress_bar.png create mode 100644 assets/plymouth/progress_box.png create mode 100644 assets/sddm/nomarchy/Main.qml create mode 100644 assets/sddm/nomarchy/logo.svg create mode 100644 assets/sddm/nomarchy/metadata.desktop create mode 100644 assets/sddm/nomarchy/theme.conf create mode 100644 assets/themed/alacritty.toml.tpl create mode 100644 assets/themed/btop.theme.tpl create mode 100644 assets/themed/chromium.theme.tpl create mode 100644 assets/themed/ghostty.conf.tpl create mode 100644 assets/themed/hyprland-preview-share-picker.css.tpl create mode 100644 assets/themed/hyprland.conf.tpl create mode 100644 assets/themed/hyprlock.conf.tpl create mode 100644 assets/themed/keyboard.rgb.tpl create mode 100644 assets/themed/kitty.conf.tpl create mode 100644 assets/themed/mako.ini.tpl create mode 100644 assets/themed/obsidian.css.tpl create mode 100644 assets/themed/swayosd.css.tpl create mode 100644 assets/themed/walker.css.tpl create mode 100644 assets/themed/waybar.css.tpl rename {themes => assets/themes}/catppuccin-latte/backgrounds/1-color-fade.png (100%) rename {themes => assets/themes}/catppuccin-latte/btop.theme (100%) rename {themes => assets/themes}/catppuccin-latte/colors.toml (100%) rename {themes => assets/themes}/catppuccin-latte/icons.theme (100%) rename {themes => assets/themes}/catppuccin-latte/light.mode (100%) rename {themes => assets/themes}/catppuccin-latte/neovim.lua (100%) rename {themes => assets/themes}/catppuccin-latte/preview.png (100%) rename {themes => assets/themes}/catppuccin-latte/vscode.json (100%) rename {themes => assets/themes}/catppuccin/backgrounds/1-totoro.png (100%) rename {themes => assets/themes}/catppuccin/backgrounds/2-waves.png (100%) rename {themes => assets/themes}/catppuccin/backgrounds/3-blue-eye.png (100%) rename {themes => assets/themes}/catppuccin/btop.theme (100%) rename {themes => assets/themes}/catppuccin/colors.toml (100%) rename {themes => assets/themes}/catppuccin/icons.theme (100%) rename {themes => assets/themes}/catppuccin/neovim.lua (100%) rename {themes => assets/themes}/catppuccin/preview.png (100%) rename {themes => assets/themes}/catppuccin/vscode.json (100%) rename {themes => assets/themes}/catppuccin/waybar.css (100%) rename {themes => assets/themes}/ethereal/backgrounds/1-cosmic.jpg (100%) rename {themes => assets/themes}/ethereal/backgrounds/2-meadow.jpg (100%) rename {themes => assets/themes}/ethereal/btop.theme (100%) rename {themes => assets/themes}/ethereal/colors.toml (100%) rename {themes => assets/themes}/ethereal/icons.theme (100%) rename {themes => assets/themes}/ethereal/neovim.lua (100%) rename {themes => assets/themes}/ethereal/preview.png (100%) rename {themes => assets/themes}/ethereal/vscode.json (100%) rename {themes => assets/themes}/everforest/backgrounds/1-tree-tops.jpg (100%) rename {themes => assets/themes}/everforest/btop.theme (100%) rename {themes => assets/themes}/everforest/colors.toml (100%) rename {themes => assets/themes}/everforest/icons.theme (100%) rename {themes => assets/themes}/everforest/neovim.lua (100%) rename {themes => assets/themes}/everforest/preview.png (100%) rename {themes => assets/themes}/everforest/vscode.json (100%) rename {themes => assets/themes}/flexoki-light/backgrounds/1-orb.png (100%) rename {themes => assets/themes}/flexoki-light/backgrounds/2-nomarchy.png (100%) rename {themes => assets/themes}/flexoki-light/btop.theme (100%) rename {themes => assets/themes}/flexoki-light/chromium.theme (100%) rename {themes => assets/themes}/flexoki-light/colors.toml (100%) rename {themes => assets/themes}/flexoki-light/icons.theme (100%) rename {themes => assets/themes}/flexoki-light/light.mode (100%) rename {themes => assets/themes}/flexoki-light/neovim.lua (100%) rename {themes => assets/themes}/flexoki-light/preview.png (100%) rename {themes => assets/themes}/flexoki-light/vscode.json (100%) rename {themes => assets/themes}/gruvbox/backgrounds/1-the-backwater.jpg (100%) rename {themes => assets/themes}/gruvbox/backgrounds/2-flower-basket.jpg (100%) rename {themes => assets/themes}/gruvbox/backgrounds/3-village-square.jpg (100%) rename {themes => assets/themes}/gruvbox/backgrounds/4-idyllic-procession.jpg (100%) rename {themes => assets/themes}/gruvbox/backgrounds/5-leaves.jpg (100%) rename {themes => assets/themes}/gruvbox/btop.theme (100%) rename {themes => assets/themes}/gruvbox/colors.toml (100%) rename {themes => assets/themes}/gruvbox/icons.theme (100%) rename {themes => assets/themes}/gruvbox/neovim.lua (100%) rename {themes => assets/themes}/gruvbox/preview.png (100%) rename {themes => assets/themes}/gruvbox/vscode.json (100%) rename {themes => assets/themes}/hackerman/backgrounds/1-synth-scape.jpg (100%) rename {themes => assets/themes}/hackerman/backgrounds/2-geometric.jpg (100%) rename {themes => assets/themes}/hackerman/btop.theme (100%) rename {themes => assets/themes}/hackerman/colors.toml (100%) rename {themes => assets/themes}/hackerman/icons.theme (100%) rename {themes => assets/themes}/hackerman/neovim.lua (100%) rename {themes => assets/themes}/hackerman/preview.png (100%) rename {themes => assets/themes}/hackerman/vscode.json (100%) rename {themes => assets/themes}/kanagawa/backgrounds/1-kanagawa.jpg (100%) rename {themes => assets/themes}/kanagawa/btop.theme (100%) rename {themes => assets/themes}/kanagawa/colors.toml (100%) rename {themes => assets/themes}/kanagawa/hyprland.conf (100%) rename {themes => assets/themes}/kanagawa/icons.theme (100%) rename {themes => assets/themes}/kanagawa/neovim.lua (100%) rename {themes => assets/themes}/kanagawa/preview.png (100%) rename {themes => assets/themes}/kanagawa/vscode.json (100%) rename {themes => assets/themes}/lumon/backgrounds/01-united-in-severance.jpg (100%) rename {themes => assets/themes}/lumon/backgrounds/02-opinions-equally.jpg (100%) rename {themes => assets/themes}/lumon/btop.theme (100%) rename {themes => assets/themes}/lumon/chromium.theme (100%) rename {themes => assets/themes}/lumon/colors.toml (100%) rename {themes => assets/themes}/lumon/hyprland.conf (100%) rename {themes => assets/themes}/lumon/icons.theme (100%) rename {themes => assets/themes}/lumon/neovim.lua (100%) rename {themes => assets/themes}/lumon/preview.png (100%) rename {themes => assets/themes}/lumon/swayosd.css (100%) rename {themes => assets/themes}/lumon/vscode.json (100%) rename {themes => assets/themes}/lumon/waybar.css (100%) rename {themes => assets/themes}/matte-black/backgrounds/0-ship-at-sea.jpg (100%) rename {themes => assets/themes}/matte-black/backgrounds/1-dark-waters.jpg (100%) rename {themes => assets/themes}/matte-black/backgrounds/2-dot-hands.jpg (100%) rename {themes => assets/themes}/matte-black/btop.theme (100%) rename {themes => assets/themes}/matte-black/colors.toml (100%) rename {themes => assets/themes}/matte-black/icons.theme (100%) rename {themes => assets/themes}/matte-black/neovim.lua (100%) rename {themes => assets/themes}/matte-black/preview.png (100%) rename {themes => assets/themes}/matte-black/vscode.json (100%) rename {themes => assets/themes}/miasma/backgrounds/01-nature-of-fear.jpg (100%) rename {themes => assets/themes}/miasma/backgrounds/02-crowned.jpg (100%) rename {themes => assets/themes}/miasma/btop.theme (100%) rename {themes => assets/themes}/miasma/colors.toml (100%) rename {themes => assets/themes}/miasma/icons.theme (100%) rename {themes => assets/themes}/miasma/neovim.lua (100%) rename {themes => assets/themes}/miasma/preview.png (100%) rename {themes => assets/themes}/miasma/vscode.json (100%) rename {themes => assets/themes}/nomarchy-palettes.nix (100%) rename {themes => assets/themes}/nord/backgrounds/0-black-moon.jpg (100%) rename {themes => assets/themes}/nord/backgrounds/1-city-view.png (100%) rename {themes => assets/themes}/nord/backgrounds/2-night-hawks.png (100%) rename {themes => assets/themes}/nord/btop.theme (100%) rename {themes => assets/themes}/nord/colors.toml (100%) rename {themes => assets/themes}/nord/icons.theme (100%) rename {themes => assets/themes}/nord/neovim.lua (100%) rename {themes => assets/themes}/nord/preview.png (100%) rename {themes => assets/themes}/nord/vscode.json (100%) rename {themes => assets/themes}/osaka-jade/backgrounds/1-glowing-city.jpg (100%) rename {themes => assets/themes}/osaka-jade/backgrounds/2-shaded-entrance.jpg (100%) rename {themes => assets/themes}/osaka-jade/backgrounds/3-mountain-moon.jpg (100%) rename {themes => assets/themes}/osaka-jade/btop.theme (100%) rename {themes => assets/themes}/osaka-jade/colors.toml (100%) rename {themes => assets/themes}/osaka-jade/icons.theme (100%) rename {themes => assets/themes}/osaka-jade/neovim.lua (100%) rename {themes => assets/themes}/osaka-jade/preview.png (100%) rename {themes => assets/themes}/osaka-jade/vscode.json (100%) rename {themes => assets/themes}/retro-82/backgrounds/1-in-the-groove.jpg (100%) rename {themes => assets/themes}/retro-82/backgrounds/2-dusk-guardian.jpg (100%) rename {themes => assets/themes}/retro-82/backgrounds/3-glassy-lines.jpg (100%) rename {themes => assets/themes}/retro-82/backgrounds/4-gateway.jpg (100%) rename {themes => assets/themes}/retro-82/backgrounds/5-zen-boat.jpg (100%) rename {themes => assets/themes}/retro-82/backgrounds/6-abstract-pyramids.jpg (100%) rename {themes => assets/themes}/retro-82/backgrounds/7-the-journey.jpg (100%) rename {themes => assets/themes}/retro-82/backgrounds/8-glitter-glass.jpg (100%) rename {themes => assets/themes}/retro-82/btop.theme (100%) rename {themes => assets/themes}/retro-82/chromium.theme (100%) rename {themes => assets/themes}/retro-82/colors.toml (100%) rename {themes => assets/themes}/retro-82/hyprland.conf (100%) rename {themes => assets/themes}/retro-82/icons.theme (100%) rename {themes => assets/themes}/retro-82/neovim.lua (100%) rename {themes => assets/themes}/retro-82/preview.png (100%) rename {themes => assets/themes}/retro-82/swayosd.css (100%) rename {themes => assets/themes}/retro-82/vscode.json (100%) rename {themes => assets/themes}/retro-82/waybar.css (100%) rename {themes => assets/themes}/ristretto/backgrounds/1-color-curves.jpg (100%) rename {themes => assets/themes}/ristretto/backgrounds/2-coffee-beans.jpg (100%) rename {themes => assets/themes}/ristretto/backgrounds/3-industrial-moon.jpg (100%) rename {themes => assets/themes}/ristretto/btop.theme (100%) rename {themes => assets/themes}/ristretto/colors.toml (100%) rename {themes => assets/themes}/ristretto/icons.theme (100%) rename {themes => assets/themes}/ristretto/neovim.lua (100%) rename {themes => assets/themes}/ristretto/preview.png (100%) rename {themes => assets/themes}/ristretto/vscode.json (100%) rename {themes => assets/themes}/rose-pine/backgrounds/1-funky-shapes.jpg (100%) rename {themes => assets/themes}/rose-pine/backgrounds/2-dot-map.png (100%) rename {themes => assets/themes}/rose-pine/backgrounds/3-nomarchy-plants.png (100%) rename {themes => assets/themes}/rose-pine/btop.theme (100%) rename {themes => assets/themes}/rose-pine/chromium.theme (100%) rename {themes => assets/themes}/rose-pine/colors.toml (100%) rename {themes => assets/themes}/rose-pine/icons.theme (100%) rename {themes => assets/themes}/rose-pine/light.mode (100%) rename {themes => assets/themes}/rose-pine/neovim.lua (100%) rename {themes => assets/themes}/rose-pine/preview.png (100%) rename {themes => assets/themes}/rose-pine/vscode.json (100%) rename {themes => assets/themes}/tokyo-night/backgrounds/0-swirl-buck.jpg (100%) rename {themes => assets/themes}/tokyo-night/backgrounds/1-sunset-lake.png (100%) rename {themes => assets/themes}/tokyo-night/backgrounds/2-pawel-czerwinski.jpg (100%) rename {themes => assets/themes}/tokyo-night/backgrounds/3-milad-fakurian.jpg (100%) rename {themes => assets/themes}/tokyo-night/btop.theme (100%) rename {themes => assets/themes}/tokyo-night/colors.toml (100%) rename {themes => assets/themes}/tokyo-night/icons.theme (100%) rename {themes => assets/themes}/tokyo-night/keyboard.rgb (100%) rename {themes => assets/themes}/tokyo-night/neovim.lua (100%) rename {themes => assets/themes}/tokyo-night/preview.png (100%) rename {themes => assets/themes}/tokyo-night/vscode.json (100%) rename {themes => assets/themes}/vantablack/backgrounds/1-twisted-stairs.jpg (100%) rename {themes => assets/themes}/vantablack/backgrounds/2-layers-deep.jpg (100%) rename {themes => assets/themes}/vantablack/backgrounds/3-layers-stacked.jpg (100%) rename {themes => assets/themes}/vantablack/btop.theme (100%) rename {themes => assets/themes}/vantablack/colors.toml (100%) rename {themes => assets/themes}/vantablack/icons.theme (100%) rename {themes => assets/themes}/vantablack/neovim.lua (100%) rename {themes => assets/themes}/vantablack/preview.png (100%) rename {themes => assets/themes}/vantablack/vscode.json (100%) rename {themes => assets/themes}/white/backgrounds/1-white.jpg (100%) rename {themes => assets/themes}/white/backgrounds/2-white.jpg (100%) rename {themes => assets/themes}/white/backgrounds/3-white.jpg (100%) rename {themes => assets/themes}/white/btop.theme (100%) rename {themes => assets/themes}/white/colors.toml (100%) rename {themes => assets/themes}/white/icons.theme (100%) rename {themes => assets/themes}/white/light.mode (100%) rename {themes => assets/themes}/white/neovim.lua (100%) rename {themes => assets/themes}/white/preview.png (100%) rename {themes => assets/themes}/white/vscode.json (100%) rename bin/{ => appearance}/nomarchy-font-current (80%) rename bin/{ => appearance}/nomarchy-font-list (64%) rename bin/{ => appearance}/nomarchy-font-set (87%) rename bin/{ => appearance}/nomarchy-show-done (100%) rename bin/{ => appearance}/nomarchy-show-logo (52%) create mode 100755 bin/appearance/nomarchy-theme-bg-install rename bin/{ => appearance}/nomarchy-theme-bg-next (86%) rename bin/{ => appearance}/nomarchy-theme-bg-set (72%) rename bin/{ => appearance}/nomarchy-theme-current (69%) create mode 100755 bin/appearance/nomarchy-theme-install create mode 100755 bin/appearance/nomarchy-theme-list create mode 100755 bin/appearance/nomarchy-theme-refresh rename bin/{ => appearance}/nomarchy-theme-remove (64%) rename bin/{ => appearance}/nomarchy-theme-set (76%) create mode 100755 bin/appearance/nomarchy-theme-set-keyboard create mode 100755 bin/appearance/nomarchy-theme-set-keyboard-asus-rog rename bin/{ => appearance}/nomarchy-theme-set-keyboard-f16 (80%) rename bin/{ => appearance}/nomarchy-theme-set-obsidian (56%) rename bin/{ => appearance}/nomarchy-theme-set-templates (90%) rename bin/{ => appearance}/nomarchy-theme-set-vscode (84%) rename bin/{ => appearance}/nomarchy-theme-update (77%) rename bin/{ => appearance}/nomarchy-toggle-nightlight (92%) rename bin/{ => apps}/nomarchy-launch-about (55%) create mode 100755 bin/apps/nomarchy-launch-audio create mode 100755 bin/apps/nomarchy-launch-bluetooth rename bin/{ => apps}/nomarchy-launch-browser (100%) rename bin/{ => apps}/nomarchy-launch-editor (78%) create mode 100755 bin/apps/nomarchy-launch-floating-terminal-with-presentation rename bin/{ => apps}/nomarchy-launch-or-focus (89%) create mode 100755 bin/apps/nomarchy-launch-or-focus-tui rename bin/{ => apps}/nomarchy-launch-or-focus-webapp (57%) rename bin/{ => apps}/nomarchy-launch-screensaver (59%) create mode 100755 bin/apps/nomarchy-launch-tui rename bin/{ => apps}/nomarchy-launch-walker (100%) rename bin/{ => apps}/nomarchy-launch-webapp (100%) rename bin/{ => apps}/nomarchy-launch-wifi (52%) rename bin/{ => apps}/nomarchy-restart-app (64%) create mode 100755 bin/apps/nomarchy-restart-btop rename bin/{ => apps}/nomarchy-restart-opencode (53%) rename bin/{ => apps}/nomarchy-restart-terminal (100%) rename bin/{ => apps}/nomarchy-restart-tmux (100%) rename bin/{ => apps}/nomarchy-tui-install (100%) rename bin/{ => apps}/nomarchy-tui-remove (100%) rename bin/{ => apps}/nomarchy-tui-remove-all (94%) rename bin/{ => apps}/nomarchy-voxtype-config (58%) rename bin/{ => apps}/nomarchy-voxtype-install (73%) create mode 100755 bin/apps/nomarchy-voxtype-model rename bin/{ => apps}/nomarchy-voxtype-remove (83%) rename bin/{ => apps}/nomarchy-voxtype-status (82%) rename bin/{ => apps}/nomarchy-webapp-handler-hey (83%) rename bin/{ => apps}/nomarchy-webapp-handler-zoom (91%) rename bin/{ => apps}/nomarchy-webapp-install (97%) rename bin/{ => apps}/nomarchy-webapp-remove (92%) rename bin/{ => apps}/nomarchy-webapp-remove-all (74%) rename bin/{ => apps}/nomarchy-windows-vm (88%) rename bin/{ => hardware}/nomarchy-battery-capacity (75%) rename bin/{ => hardware}/nomarchy-battery-monitor (82%) rename bin/{ => hardware}/nomarchy-battery-present (100%) rename bin/{ => hardware}/nomarchy-battery-remaining (100%) rename bin/{ => hardware}/nomarchy-battery-remaining-time (100%) rename bin/{ => hardware}/nomarchy-battery-status (89%) rename bin/{ => hardware}/nomarchy-brightness-display (80%) rename bin/{ => hardware}/nomarchy-brightness-display-apple (88%) rename bin/{ => hardware}/nomarchy-brightness-keyboard (92%) rename bin/{ => hardware}/nomarchy-haptic-touchpad (100%) rename bin/{ => hardware}/nomarchy-hw-asus-rog (100%) rename bin/{ => hardware}/nomarchy-hw-framework16 (81%) rename bin/{ => hardware}/nomarchy-hw-intel (100%) rename bin/{ => hardware}/nomarchy-hw-intel-ptl (100%) rename bin/{ => hardware}/nomarchy-hw-match (80%) rename bin/{ => hardware}/nomarchy-hw-surface (83%) rename bin/{ => hardware}/nomarchy-hw-vulkan (100%) rename bin/{ => hardware}/nomarchy-powerprofiles-list (76%) rename bin/{ => hardware}/nomarchy-restart-makima (83%) rename bin/{ => hardware}/nomarchy-restart-trackpad (100%) rename bin/{ => hardware}/nomarchy-toggle-hybrid-gpu (91%) rename bin/{ => hardware}/nomarchy-wifi-powersave (76%) delete mode 100755 bin/nomarchy-hook delete mode 100755 bin/nomarchy-launch-audio delete mode 100755 bin/nomarchy-launch-bluetooth delete mode 100755 bin/nomarchy-launch-floating-terminal-with-presentation delete mode 100755 bin/nomarchy-launch-or-focus-tui delete mode 100755 bin/nomarchy-launch-tui delete mode 100755 bin/nomarchy-refresh-fastfetch delete mode 100755 bin/nomarchy-restart-btop delete mode 100755 bin/nomarchy-restart-hyprctl delete mode 100755 bin/nomarchy-restart-mako delete mode 100755 bin/nomarchy-restart-swayosd delete mode 100755 bin/nomarchy-restart-waybar delete mode 100755 bin/nomarchy-setup-makima delete mode 100755 bin/nomarchy-test-vm delete mode 100755 bin/nomarchy-theme-bg-install delete mode 100755 bin/nomarchy-theme-install delete mode 100755 bin/nomarchy-theme-list delete mode 100755 bin/nomarchy-theme-refresh delete mode 100755 bin/nomarchy-theme-set-keyboard delete mode 100755 bin/nomarchy-theme-set-keyboard-asus-rog delete mode 100755 bin/nomarchy-voxtype-model rename bin/{ => system}/nomarchy-hibernation-available (90%) rename bin/{ => system}/nomarchy-hibernation-remove (96%) rename bin/{ => system}/nomarchy-hibernation-setup (93%) rename bin/{ => system}/nomarchy-pkg-add (92%) rename bin/{ => system}/nomarchy-pkg-remove (84%) rename bin/{ => system}/nomarchy-restart-bluetooth (100%) rename bin/{ => system}/nomarchy-restart-pipewire (100%) rename bin/{ => system}/nomarchy-restart-wifi (100%) rename bin/{ => system}/nomarchy-restart-xcompose (64%) rename bin/{ => system}/nomarchy-setup-dns (94%) rename bin/{ => system}/nomarchy-setup-fido2 (92%) rename bin/{ => system}/nomarchy-setup-fingerprint (92%) rename bin/{ => system}/nomarchy-sudo-keepalive (88%) rename bin/{ => system}/nomarchy-sudo-passwordless-toggle (88%) rename bin/{ => system}/nomarchy-sudo-reset (100%) rename bin/{ => system}/nomarchy-system-logout (91%) rename bin/{ => system}/nomarchy-system-reboot (86%) rename bin/{ => system}/nomarchy-system-shutdown (86%) rename bin/{ => system}/nomarchy-toggle-idle (94%) rename bin/{ => system}/nomarchy-toggle-suspend (94%) rename bin/{ => system}/nomarchy-tz-select (85%) rename bin/{ => system}/nomarchy-update (83%) rename bin/{ => system}/nomarchy-update-time (100%) rename bin/{ => utils}/nomarchy-build-iso (78%) rename bin/{ => utils}/nomarchy-cmd-audio-switch (100%) rename bin/{ => utils}/nomarchy-cmd-present (100%) rename bin/{ => utils}/nomarchy-cmd-screenrecord (96%) rename bin/{ => utils}/nomarchy-cmd-screensaver (75%) rename bin/{ => utils}/nomarchy-cmd-screenshot (92%) rename bin/{ => utils}/nomarchy-cmd-share (95%) rename bin/{ => utils}/nomarchy-cmd-terminal-cwd (100%) rename bin/{ => utils}/nomarchy-config-direct-boot (80%) rename bin/{ => utils}/nomarchy-drive-info (93%) rename bin/{ => utils}/nomarchy-drive-select (80%) rename bin/{ => utils}/nomarchy-drive-set-password (89%) create mode 100755 bin/utils/nomarchy-hook rename bin/{ => utils}/nomarchy-lock-screen (92%) rename bin/{ => utils}/nomarchy-menu (58%) rename bin/{ => utils}/nomarchy-menu-keybindings (98%) rename bin/{ => utils}/nomarchy-notification-dismiss (88%) rename bin/{ => utils}/nomarchy-npx-install (66%) rename bin/{ => utils}/nomarchy-on-boot (92%) create mode 100755 bin/utils/nomarchy-refresh-fastfetch rename bin/{ => utils}/nomarchy-snapshot (68%) rename bin/{ => utils}/nomarchy-state (54%) rename bin/{ => utils}/nomarchy-sync (86%) rename bin/{ => utils}/nomarchy-test-installer (59%) create mode 100755 bin/utils/nomarchy-test-vm rename bin/{ => utils}/nomarchy-toggle-notification-silencing (100%) rename bin/{ => utils}/nomarchy-welcome (71%) rename bin/{ => wm}/nomarchy-hyprland-active-window-transparency-toggle (100%) rename bin/{ => wm}/nomarchy-hyprland-monitor-scaling-cycle (100%) rename bin/{ => wm}/nomarchy-hyprland-window-close-all (100%) rename bin/{ => wm}/nomarchy-hyprland-window-gaps-toggle (100%) rename bin/{ => wm}/nomarchy-hyprland-window-pop (96%) rename bin/{ => wm}/nomarchy-hyprland-window-single-square-aspect-toggle (100%) rename bin/{ => wm}/nomarchy-hyprland-workspace-layout-toggle (100%) create mode 100755 bin/wm/nomarchy-restart-hyprctl rename bin/{ => wm}/nomarchy-restart-hypridle (73%) rename bin/{ => wm}/nomarchy-restart-hyprsunset (73%) create mode 100755 bin/wm/nomarchy-restart-mako create mode 100755 bin/wm/nomarchy-restart-swayosd rename bin/{ => wm}/nomarchy-restart-walker (100%) create mode 100755 bin/wm/nomarchy-restart-waybar rename bin/{ => wm}/nomarchy-swayosd-brightness (89%) rename bin/{ => wm}/nomarchy-swayosd-kbd-brightness (89%) rename bin/{ => wm}/nomarchy-toggle-screensaver (92%) rename bin/{ => wm}/nomarchy-toggle-waybar (93%) create mode 100644 config/nomarchy/default/alacritty/screensaver.toml create mode 100644 config/nomarchy/default/bash/aliases create mode 100644 config/nomarchy/default/bash/envs create mode 100644 config/nomarchy/default/bash/fns/compression create mode 100644 config/nomarchy/default/bash/fns/drives create mode 100644 config/nomarchy/default/bash/fns/ssh-port-forwarding create mode 100644 config/nomarchy/default/bash/fns/tmux create mode 100644 config/nomarchy/default/bash/fns/transcoding create mode 100644 config/nomarchy/default/bash/fns/worktrees create mode 100644 config/nomarchy/default/bash/functions create mode 100644 config/nomarchy/default/bash/init create mode 100644 config/nomarchy/default/bash/inputrc create mode 100644 config/nomarchy/default/bash/rc create mode 100644 config/nomarchy/default/bash/shell create mode 100644 config/nomarchy/default/bashrc create mode 100644 config/nomarchy/default/chromium/extensions/copy-url/background.js create mode 120000 config/nomarchy/default/chromium/extensions/copy-url/icon.png create mode 100644 config/nomarchy/default/chromium/extensions/copy-url/manifest.json create mode 100644 config/nomarchy/default/elephant/nomarchy_background_selector.lua create mode 100644 config/nomarchy/default/elephant/nomarchy_themes.lua create mode 100644 config/nomarchy/default/ghostty/screensaver create mode 100644 config/nomarchy/default/gpg/dirmngr.conf create mode 100644 config/nomarchy/default/hypr/apps.conf create mode 100644 config/nomarchy/default/hypr/apps/1password.conf create mode 100644 config/nomarchy/default/hypr/apps/bitwarden.conf create mode 100644 config/nomarchy/default/hypr/apps/browser.conf create mode 100644 config/nomarchy/default/hypr/apps/davinci-resolve.conf create mode 100644 config/nomarchy/default/hypr/apps/geforce.conf create mode 100644 config/nomarchy/default/hypr/apps/hyprshot.conf create mode 100644 config/nomarchy/default/hypr/apps/localsend.conf create mode 100644 config/nomarchy/default/hypr/apps/moonlight.conf create mode 100644 config/nomarchy/default/hypr/apps/pip.conf create mode 100644 config/nomarchy/default/hypr/apps/qemu.conf create mode 100644 config/nomarchy/default/hypr/apps/retroarch.conf create mode 100644 config/nomarchy/default/hypr/apps/steam.conf create mode 100644 config/nomarchy/default/hypr/apps/system.conf create mode 100644 config/nomarchy/default/hypr/apps/telegram.conf create mode 100644 config/nomarchy/default/hypr/apps/terminals.conf create mode 100644 config/nomarchy/default/hypr/apps/walker.conf create mode 100644 config/nomarchy/default/hypr/apps/webcam-overlay.conf create mode 100644 config/nomarchy/default/hypr/autostart.conf create mode 100644 config/nomarchy/default/hypr/bindings.conf create mode 100644 config/nomarchy/default/hypr/bindings/clipboard.conf create mode 100644 config/nomarchy/default/hypr/bindings/media.conf create mode 100644 config/nomarchy/default/hypr/bindings/tiling-v2.conf create mode 100644 config/nomarchy/default/hypr/bindings/tiling.conf create mode 100644 config/nomarchy/default/hypr/bindings/utilities.conf create mode 100644 config/nomarchy/default/hypr/envs.conf create mode 100644 config/nomarchy/default/hypr/input.conf create mode 100644 config/nomarchy/default/hypr/looknfeel.conf create mode 100644 config/nomarchy/default/hypr/plain-bindings.conf create mode 100644 config/nomarchy/default/hypr/windows.conf create mode 100644 config/nomarchy/default/mako/core.ini create mode 100644 config/nomarchy/default/voxtype/config.toml create mode 100644 config/nomarchy/default/walker/restart.conf create mode 100644 config/nomarchy/default/walker/themes/nomarchy-default/layout.xml create mode 100644 config/nomarchy/default/walker/themes/nomarchy-default/style.css create mode 100644 config/nomarchy/default/walker/walker.desktop create mode 100755 config/nomarchy/default/waybar/indicators/idle.sh create mode 100755 config/nomarchy/default/waybar/indicators/notification-silencing.sh create mode 100755 config/nomarchy/default/waybar/indicators/screen-recording.sh create mode 100644 config/nomarchy/default/wireplumber/wireplumber.conf.d/alsa-soft-mixer.conf create mode 100644 config/nomarchy/default/xcompose create mode 100644 modules/system/makima.nix create mode 100644 modules/system/systemd.nix diff --git a/assets/branding/icon.png b/assets/branding/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..dbcde56164722eaa62573419b6d02943fa32c5e7 GIT binary patch literal 23303 zcmY&=2RN1g`@b!Fq=*hBLMq4Bu_8N>P0Gm12;~@cY*|@ZSs7VnMQI@%sbud>H0|+8 z9NYhXjy~Vt=iha?x~|9byvKdN?$kxe8o1eGy{&KCk$8K1pLKL~_OP*bw>#^0 z+aY67j+2Ds7>TBelA+I|`EkdjYo2MlJ4=3IhWy7g+{skVs}!PXTXK%we;QGHgVM;u-onaNHe9e;zf$2*xV7Yz3RA|%+P!v?9;%}+B^!`T?Ce7G^YZed1WGU*GE7f{ zYG1~8_Uu3USbCQ?X@E>X`uhrTMh$gz$pYO8qY6Thd8L90ad@_Lvx%$IbmQ zE5t=;Sf??(J6JtPQts04eSfUVoR}|7P>;%E;`X1#z$gkS_k*lg30vM0{3h8|VyrA`-06Q{jNkvKRA?>p0eH>$R$Y z#!;?^2eP`$Mn77r+ir@lLZAX_J2}KT`FZ+uyR>&*SkciV8M7M{6-_#OKH@$+E>)ju zy>aK|00&c|Tyhj)<&?4ln2U2aQd?p+4Fgc_>wE!!l$Jj(CgVoqF9K*C>`S~t7FzMA z&YNJf271uRa+SL#jivpQ4!YkhM;ZOeU8;I&326^Q53;ZfD;ayD-MP^u?@nWMaW_)6 z9-2)ocD;JpP_(N#sZ97SoxyQQMdb%is*&!!o-50Vd6h3y!is*(qx%N~Q>11Lr13Cu z>t5HRP8h5?wSSHBuD6e1aU+bRCDlLbiPt={zW$^^_;OV@YNsG7LgNBhlrkX{Ur#0y z(Q#0{(U5gSwtvez2U~~h{9d-h&B7vdsxru%%sJ3R%^~uM^{GBSBkHo3N8VAHKl54| zANjO&h$a50_+M~hA7XE$(i&vXnvhdB6)eYGzB2#CL-#5bVx`0B?C%F?*X{6Q({hg8 z=zcHpQp}A4mWqIo_LLGeC6K%AfJyKofiwhvF?S_jv(a$$hgI?3p`q|`+^#SNEb#*Z zWwil-vV&$uSkXi0OZ`g1!&HKPLw++$d5IAb8e3^)V@&p|A+<~u({eMt=zje(&tMY8 zkQAf5W4t}*+Kf9x&ZGqT9UYR#==$GCb&4#VwaUK|ShUN?ac;tI!=@Y7k?%Rnqs3^G#@YT z3+Ml{AAN0ji@ymp^T)x8lK$G#7g<)6nu>~;z2C~?66#WVtooGDSq1|G{hZ>E!@p%4 zQl5gu`HYPZUz2Bd0p^^R`}oA#N!i}daY;4Iu#3O9nKhKwJ`NU0+1 zN@AiTG*}icA0DTkKa%-G+%a{thOwNuU(0V68=c60Rj(V%S6X$-~29p zVMdvdWvK?EH;eyEz`2zNu-j;u=Jgg`R|zL2OZ<$u`716LODbd1>fDvjPZ?2#hMvre zHC7kLaNIGByu1n3px{Y4D-s_wEcdWkID&x^X?<>Bog z)2GF<7&&2p2c_AzcG=0Jc_9%I`MfnD$|ArK`dIEX4QhG=`&SnlOvv5hI(Wb910)V~ zmSEN?D%9b(_sN)G^v?wof!Dr$S^0=;Y{9rbKNn@-` z-fAfIA6F8}J<4b>@^tW@quYu(bNYnVtor~-F_!<4zgJwxiLwWI)>>SvwgUB(EsH-h zazP67T04v_S0-~{Wm@Mr3Sa8!o-73MYetzZxGziM&AQF5x?=`^OeRnH{1g~x zXHXAkiSMv|eV5c_hO&ku^-!kz2!A)CU9k(^q!-6pnbfJ_1?&G<1GnRw4`Hw?je~v8 zY*OX!ODJS{AMK50$$ihb8)6SfCUk-N$sJ#02Va}~vQh>z)|dM~GvMuJz_0v|AlHs;(ti$36W9?Pw%iAP4J`C~N6 zOZdH~220yUbIH~1(xwioJH)fSx&u-T;+s6Ttc!0bLB2jHIyb>Jf655;`NN2W_DrTq zLJp6TKQp;6>ca$2d_cD%T-~A**Bc)x#cc&NxhOVAfCSjGq|jV>;|ub~onz zqqr)|-KJ?YZx8o>{0nz;-bqG4;e+6HR97A+W&HJ4z+4A8RbYzhRJ@$?dt?@&lUtl^ z)t`5M??vkH^0wO<%aXojMDVXq!N6#+S{yPLG$lT+)xuM%ML&;BP&tsyT*i>#m-L>6t znw*5;4SP8XXQ_VxkRIBzYL0f|&$=&dEP)cm>NXR94hCnVGF9)p(jpoHFD%t3{S+Jn z-|@RIu8z0`Tep-}vsaMK^ICby+C={NU@+M_E<6V|ip9vAoxSBHsy!3PmiD?l#PWy5 z#vLqkypHX_9!Bt5c-H9@W?2RUd-5lwgQQLO>{y!xz-V5k!E=duw04?NIh8s0BMrW# z#gLxs1Un`bY8IhlRMzP|nF<`1dj{LdRfxEapPT0kF5!5^P0IC#ZWrK|#JjCk?yKlN zym;5E%E76>8|{0dnsB=3sXzmwK~|Is-%^`Xct|GH+`?7kx!szKE zgM6jeq+uf9Ho}3*@7Vm;NPh5K>Jd-AxtOt|Ihj4mu9g2Fi>mzmPc?5&T+LezYV=$N z!!;fXbDDR8n7GgDg+qa^#@8s;G!2uF^&Hz{TxTWxRE*W(O*mCKa%9puC@;4%LfiF9 zd7{~h@(_lkjzd29R8K_vq@-y@k6-g^z)um{yh^d{3XPWq_HcYr#;>T@uS?eq=YlSn zCurt-$Q`H~s=e(7;?($$FJVc`Izn%d1Nb@#B#1pNPG3Al7Gg!MGR2aXc7)L&Z&s2P zKqLtuQoqakwySo#9kje)CFLU*T}o-elc}073Q$7^`1OL}@@BmC(!47X;t}kr0x*W!y!L05^JD2kT#0)Aopc%Pm|~Ni0M4QEBA(Md zcNR&^fq8vkv1+ME6iWDwr5|c?aN8_m@nVIbb|G9dt={IF!oh^&FJn=-jBZ> zmR~rr<&S$k{p)n%Wt1BG1Od(xQ4=(EACL$}Gk<+{YOx>R0AqinWHLZs$wT*1uUWrT zIo%U+e3`UgP@^PuwVu{)v=*eet#@oyRtkNIH>BtqG_Jn z$QJ#u-iRHHIRD7DJx3jWr^QlLApYh5qO@8@ZChGa?!WWz(w7E4o*T!h=Qe6w`ERHe zr{Vv@DwWeHfQ>*k`4jead$DGfVKz>UI$ol$v)nl-1W^7%H#SV@a!jzs!JFhYhkvbB z2iRW3azt7i%O3TWTppM{&AX9YY3-CWjGt?kddkC{smeFua*$r+mZiTpmerBxzmXg7 z#=~A~S~W|%<-R8TX5cf}?zvx9((ixSE!GCaFrFy;8^f&y1hT77u?U47WirTXduDN< za&Yd_PhN&C21L_)M^Gy1ouyt>(WRua7!dVyHmlU&seVEFTz1#{5})0|dO{cF>!Wpe zW5oYsgV#@eMoYHL&-z&ntm1LV&c-YQE&2t2r2NN`soXEI`d9OQ<#kFs@zZ=_p2O$5 z%Bf|K!Bqbo!U9aWh7N8YgfPxA)rsx)dzWP&$ll&5z^|tSm(h}1lC->+Rt{FIjN@FR z7U?tacK`CUY zb6~`Sf>)^@ae+#v4D-6E{&i?KYJxSCF+P7`Rz+v}&B9*>qY-agGDAK^N{(;MU5WVI zA)!r*Y>~HLP$J%J;ofH5Qv(p%XCDb|`8cz^qRUs9j9NuQHqlCz#;oFFy1UQqLHj1nS|a`%~8_>*&X44{D}{ z6$uqBS(=tuu*ZkV)9seKFP|c)Ho|l{btx+oK^H)ZpP#j5x>dNwZYA98*86>|M6W_O zXbI?&Z(`nc`D3wODkl=EnTxFJ|5=oe{{Syv9zSq((xOfnqr;7mh$Ap>hRIt3qiT3F zdF6=aC1z<5z1JN=@iBS%d|N+=q-DGb3`P+9zIKw8M|SY`48O2;N)32-&68^g&>N@zp(SJfW8P~< z9|Q0ok9wJ^9f>X~WsW*iBi|);q~n>igez5f!^4ts+?&_3SH2+2Oq+L}WG_~;c50)F zrBI-ICxu`#O}3sQdN2mfRLWk>BUV!M_BQLH&zf^JmT!G3ZzbYKMmB?-lku61n_a!m ziJ!CXAH^Km_MIGtb!UFcsXmk{-kja*ALb~=B}ctYg>d5hZmHVi-;LA9?tte(M~_8( z`Eso1lsw6QQ+^I%P6g4a|;;@HX?Y^mGH!o)&My5}^ z8ED2%jMDgudK*P~%N{ZqWCSfzDg10&H7XuWKUDIWDB%$=G{dm0n!`BBwg<@YdUIIO zRNx&3{{*S0x{ZwWY~_?|v4ATN%kW|LYRg?kKrp_v`oKKZq$+UXed}*d_h!%)D>;8E zhVfe&%XdOwUx<0HOccOE#STlqpmq$-j+|bEqK*UHp&)&6CrORuhKJiA)oM|z6Pua> z!I4II-NbQ#~m^1l2?a6V${djir!iD7-Q=a=6R$5X&9W?$-Rd)Tv9D0lSG16`b|G*WL|b_g1T5hIfs3<8d|vs*a9h>&0@kUxU(2!uxr zFA0V3YF<`&t&0v)V?iR3@eBs_)D}lkc4Q+t3aSV}p8Q{QnSiM*VSiuRNhYA?p!tBD zKvE9wqYTKSp4@^JWycC%Fc2wqlXin>_G;mpX=au*)e00|XDZCGSt?`XS1tA?mZIr- z%aY(TN()Yu-F<)RKj$}AuJ~tPU3+$>M(NBa-k9HiOGwy+zWz5y#|}JV$>fjSA>00* zH&}evWY9a$K(nMR(=zxf1HTBR0yX)B)STjJjP~qUN&v&_qoh(KPaj>j{WO1Lxu)G| zu5HsRPA5@}V5fV2qkVFUJkwbEA8q3UH5>hq=Kjg6_uw!LV3~GqX{#m)nm^ZGRy<|U_Z~D&zdcv25#h>8&rG@OIy7-;@6K_){i~?6Wc!Dl|O;)c;smHtuurp?P zRw)*g3(o$qt-$Nqo1oisgqE=R!Q22Okm$&y@~=1Z3^mKPcrF(7e1*|6x{epcK%$XSI%rszmm<+vJ}`>T-7GU=3`qa~6srrVc7-?21PWen@X}l{2(X9;mEk z=SBOX{Gp0L^0>BT8?uYitC+N0@u#~SGJF_~DsHxBC6Dy zX~Uc6kf2+ERJ-72-PfLWwKRnL6r9={T2oM2m z{Q6(T5XLCZvtF;nJD*&)0ZcT#Fb};Yp?&DuYX>c_GF+)r?b@$tw2;Tr_@V_A-00me zf{XX9^uY6oajic!%kJp@?rvGl5~f2|P9nQA`O1=nC-ApscZi|A>6;DOj+{-7_5iKi z8-1{I*sLz8NGu}f2}&gQyn%g?l*VwB#`mxc**52pz9*EhIwXsCjU#zfrydwLyROL7 z9zBfW7XXj-tf#h_n0LJnx<X<6cHL6C`Dt_R_@4(M8aDn3$$rMJag4mZdDg|#ed3ZAyf8_N(k0K(H4qP8YI$*R zZ_EaXFe)zK>&iGo<@6<$yB$;0&w)G4eICnULH?A|)b`iu8qY5~sb&jfPz*>A3W8jr z?fB$g8P#fYRSM6&#|D8HgB&2x{xPI5$<}W#{X0jH@d{g^NVH-z`ZxCXrP;F zRp@rP+`<0kqaPD!4kcvr6fAU_~dD}_iF_gspVaegeny8YXPSBi6NQ@xk5_6 zVCk45M%zK((V=@rZ-g19I7IY|vefp2P_JyeuX945?@HSJJdg+?fx=;OQ*yaZx>Mk+hes;3$V@!$bg%lZ&(?v56jz!G^vL- zzZt&rQt&P7+uekfygDVnNhJO*iqMM{z>Sz<4I@&(0mgL~HPsX&-83 zJx@(UIVD6I}?7_1O<@!L!q9p z352;QUZV0z&g9=-fJ|nTTKkB=_NpqdVJ#skNC|wc z_l!(+L01U03SmHJ}%{(bffh*2li&C(e2MK4GstQwj^mJ z&Ku?}7l0o)M^F=#w=%wF{n}p#oB9dCbP=agelq}lNeNj}I`sgZ?u4_kyeKC6vkz>i zhu21u)*pptMYbJFS|eO9Nn5NYh*?Nub$pEEk9vZ&EItxaF&fVnF6W`4l7!}!?SVM~ zI&85fU`36LWOec7oRkY`r!cVAm(2jCWoM)m6#|f*xlCTIkx^y&T&P5Ek`=*l1XL3y zZ*?o3EOfdDoX5`!dA^_}Q)4*U9+WltCc->XiI+juWL1{`a1nl2*-FyZM*}c*AFlVl z@bCmxuWCo~!AIv|L*jXR9U6i#E#Ldv?G&)2UNG#>SUv@9$4*0FdsfY8+(u2spy=cw zE5yXS;!#eIU#7A01`F2AkjlAuI@wE0rgG#?_Yr*vu>L%v^;cLP z1gS=9`Pw;^AcUVRq!~D2Yg{{Cy4MfU+mF~9lYz!%Ye1YWyMBGUfGYAvP)H_Y0d-rk zFdVx_GA1E(7cKmcb+I{U%Rn+X-PC2=63JDf$8nCqhYxa`(muD9o86wTC$Sm2`V}QM?ovbiUA5h%ca296{=B#K zd#S;q3G5DIKHHeYmKi3b*`U%isbn=FQR3H7y7%$s#iSFU>4Ln#QSfFjEoTc-N5qY= z)$Ic3zDDKzNj3A-#3mS4iEPm%P0;(2_?&_%w{F;JU3aw8(nt5(xRVZHDn|y}i>Y6W zUA6!#|CwRsbA0(Di05X)I=TR{B-nd{M4VCp*H9zS<#3o;S!9wMP^2neF=&Su26Qf{ z6O+uJb7=rj>Z216w)<9`+MZW{IP8+HA+uRbFb~j+kPK>+RqM?L-%>1Py=;k|=__+= zDjRUzeUa7VqC3?chaVxL;*_VFlca6rYIkyT)XF6TIkKf>Jxny^=d6DaDN$_JG%4KR z*6hUg?2cZdLgi&Z-p4;FA503R<}l{&oQ3&;zAP>iwuramLzKX#{q3*Zl!Rj&QpmE! zOZ@uh)5)(aZ&XPe=Uv9IZm)nZ;C!%-ewBehLEa!C_%L^f|2|uO_pn?uhYSYL_rruZ zQZWl3Wf}LhIxvZ3NnPQ`iDYxLnD@Uzi}fBH)!O#)Gmbh;`NWB0h7WksQj+$&$I^~7 za2r=(I23!d^@w92`y9DLA3Go@cLUCdV(nE-8^Z%rOy(voHA`q0dZoj#EI?Gl*NWnQYT-D z-ns!;M&{d^EUgsND`^RADm)>ewV;f4DhrlJ{F<_Tf~O5*g85GVVIZ=dQ(F+_rf zcm;DsYbx%RTyjWs&jGOI`GjoxF*oCq^i@ywCz|nFJr3izQ+P)(s&4?m_h7O4#{htg zK1Yzc7!)71i@~XJfU`mgP&f7|6lHzS*F>!1!KUc?sS0zWJaiq(i7l3_4!9hn#TX_e z1jM9C``aCnq>Fyc`*q+$H{in_1vt+2PYm~XBynEYfVX!=Y|_KNzdW@JiFAg}6{~duP`&NG>%&KVq=02p^-RxOgPcF-jq}|7OaR?g1SG&p zvY^|BV=Xo!3~_?vRpRE2PH52H_o5$w=*d;AB$Equ(rB?Y3m95L>33ri z?rX=b7Y7mM?tl>Y1!w3;YhGji4Tz=IHTnfVx0%8_Y}v-JGfG9Og`@6JP(!k1pnwxg zK*3^Xs>3wp5cy)ha*Q1`C0|)Ym!PlHuy9RY|+l5s!%IWRPD*?gqn9btIq*(*wD zkYMd9dXw&VJgLsX*xX^@jXE|Rfo~4wQ3^bSoE3;>~{P@H3-?wkBdMWD;F*&mlEJ zFq37OH@SB(Q~mwS_VKTv9Gb54^@;3c&N*{lmAj1)y__n6qtSa#Y?v$%)+7H7Em~~C zFh7obKPj2Z;L1FSRFZy+YikAps5M5a8}2^d0`}7c)fRAu#y(83)*2ik>%FO<85G;l zjH0wC*Lzxf44??cynSP`K5s>1^oLz)0-3OqCc9Wu4<0iS;}~UYVE^}s2gtE;|7CIDH6xW_9-5T!dk{W0B}&;a=9o|yy8mr& z&Yu(gg3)deGGNKvEwS8=>F?+bFr9}GwX!w6gXeP=l_Smotrovwax_+~SWl3a!GKi< zn4S_tmC+JQRc{VFXb_|Pn7BvKOaA#Ls}%?~q3*pkMRbA zl4MC12Y_C-Ur-J};wAJK(wbygdMXUn{MpLcE0su~NVKehZv2_fs z-fg3P@IPq_G%i%J6{tI)6<31nI{69cGT`9y_h~uQSrK7_>Vd7*E-yvu$ZL!{sHvk2FtC7I7yat}9*T=yR z7LS9$+<3wn>ZUd|!;A>C>Lby$K=p4q|~kb)7gUxpLgh|(ZBk{DaXHf-O4 zlmLd16uA#`^b5WWMa&I0oljbK;I$(31F&ZD86iGN{Bn%4@PDyXcZS3qDsGaM&WyzM z*-b!z@Q!KdaOM-4)1a^p56VI(3e6xLv5(7ML%R{c2tdn*#v}q{1d1l1`^0VRgU0me z3aEyVZe)27vNP*G2wh3qOVCmD-m#MiXHf*s;LOGMz1X@R zHfy_EQv2J!kyQ*aQq@2MW+KcCofb0MaI_$qn=C{_j67o-7_F?P8rCk^lP|>q+V|7t z#Dn{EC&tga@JAmU*sJn%VoF>5e<`!(Rf{m8YtD3~6#P4s7tsuVGMhT7xQ&3-fLZLp zI+Uws(h|rFI+OU$zuCa_-H3U=pUi3|Z}r50v9536CvsQ#1owqx9L%yq8Ksf`-TKFt z{i|X#$l?(n7W)>W;r%=^@$e2uq7R6Qrt7AHHR8IZ;aK!2;uTDGTWYt@f|y3|; zv+&0fBh}s#a74h;KBTJ|jbg|iWdDo#Grg@VkZ))~O+Rp}AOPU!a{_fOFDFYV5@IM8 z&HmQF&NQR?T+Yycs#2DwmpLgBW+})7YxyI_B1`Q93GMgMBDJs7-FHS1O|zwfVUu!B z+v(RpQDG6y1;@48h`^p;O=FaG!h|xX?rZNelU=b6>0&1Yl1qTM+<%kEtbyJ-%ScG# zc@v~T`%_Z;C2u1*(e@Il=UNw-H0i!`ML>j(>`t?g_+un3h*e69Gzl6{hf0bCGa?Bj zk9N=mO`P@nB~WYz?jWx(9#j zF~wsk<1`mkOY}ZBqxn?}_vdkB1wL1V;8w3vLB8xA-D2$pvlub~k_o2RUix!K3SYYG z*y)4!vQ`X-Q}LVC!MBGhF73sOta$7ZE9w~r^k z`;l}6bju?2qMI``ysg+Rdf&g|K0CxHTNo1!x^~(WJjdlL3(OU68T|uks|zf!Z(_n( zbwvNPz`26YTIgK5G>YCbdq+BQOS17e5F=txP#XG~clqv#4Oq%P!+?RX=9stl7;gpo zi9*#1%5d7nw}FcP5+iTVJYv&9dd!+a~!NC4}{{dd!G|Aj`eSZa6kW*6K)f}js+)G20Dniu5L}+a+X*r4c$ksxY&_W-0a`3dg zVnYAFqi&WWw2;telX!V^)n92$x(DerVsOo&?7?Lrv)*l+Oi>6A3ri_=76D4@U+;2x z?mqCDg&=?0R`A?)x4@nq`+lh74ZV8K8Tz#`aL;AoO$-us16@UY{^J?4s!V`z3{JR^ zVf?>aD5MPhE4p4HIucCOl{6)36F)n#nGS&g{`LBIAzs8#@po!L_5kO)5S*m!_3Zyz z9}x=MG)EHe5c_s36n9d~?rOptuX5Cm|0Q90176-sKjEC`*1s_Yn>)@X`(Z|wkPsRP zXR-8J-5^pbSLqTI)b=5s^(Xr&EolsJC_6>8IN9Wi~=Cqdu_$-pi9-rCI0Ne03I zRFf=>CMstDw`0ehjd3?&a$teOq6?g%3t%4L*u}uHvpCYpa&9kz4Z0DgC5qDhiMWPR zdKwTHDR3Jq&ms>}@O^&`bE9u_E`R0=kP`rYA-=Qu@g!>M*d!OAc`u3>`D_rZ%54OS z5c?|NiBUBUHru2-%t8YxIMga>pp4@_dUjU>_(w<#0ob3YOPCQ0_GM!=_C1FQ zIdB6!gc1(waMlp3AnPifM)#mIr)UwfL{=dd6oRiSf&v$oXt2pb@y#2&g7Wr=S5~oC znW{pZOoWF2>A#+MHmKX$_6p+tL9K|b+NOVDTyuv^#@ZMvcRD7)*4IAsAwgste!Eod z-{9gzBC=L^U4?G~$^@hT78+GB@lePio42r%!GvnWf>y(L&`8c0J)eMN4^9*`Q(rvD zlXOTHqmXlpaK4 zz~{l6f9`8Ty2lQjPw&sR?upkx3cFlodOlsHckQvM9gn5uiO7>4YYn(n?#m{F@{vH6 zh@$t3GFv?f{e^jr5kJyEM2l}z>gjMOatl&oMO~C!mPw1LMD1}u)Q&$x_H(vMWcZiG z5fU8|f8?}c3S8sgQhBt-7g*$vblk>q4h$usu44KpxuH#G}@B zQjrUU3ve|6dJQ#`VGGBrOtQS-ux@*Sn3wTQSx|aG35A#f`}ROl6}+L41ffORs+Glx z9Pf_Esst+RMo@CofxIYm>dV$6oG#_I%A`7R3wHP^Wj|DP)*sepTf_Fw^1oL4LlKO6p$qB^(b_F>j@yu&wER7?QBul5u6-FhI7@m zV!%!~4g{zmXNQ(+hJHL#NAPiw!+C%g$MO+cbRYYkTqd0?f>F0>=&ik>1otSDZ$HmV7d6LUe0 zNPAxP1bqSBIPT?dS(?gO-U?kZK>z0{4HqNvdd6$$UHCxYa^oV-!g*TV#@A0s1Ro|%0Uy%Nt57( zbYInzlXch=^qKVj3L|`{dX6a`+E#+HgpTl!jmOqnwzOk7=s%pZ-p{gBZa;$_lMRK+ z-9*@#i%aOEgMm^QgFm!Ze=dNJMkb+W|PMlbP5MuwyFCYnRE8ToHjTUO{kcZ;2>7lbXttw_! zD|VQ=mGbQjV;(%1*Rxk(m}k#a<=cZYgOOQi)Hn&;PI&kYX^k^~1&0+Uhx6L5(XFca z#M^U}={?=ASDY?!AHIF>)YU7ElOvQBMg+sCi^2wxVq7u|rc6k;Qa;JQozV~AdShJ4 zUXJW>%tg_*%yK7+_+xOgX06pF#$ z8tM^--h5u>gKVf;fP)6x%J zv+sWeGD*dCmXEhCQSH)nZ83XWxi82K74Mw-c<8m5(FFS|DjB=#M5KaQS#AYlZ#|ebBhnk7o5SD#c`?%tb z27_@@PEExgwbplGgM|rp$%A*3?wo4dw7)?3h}W`ugXr(cq2EP7HIzU#M=}elesxH@ zhmh9JmAti=LvFM&o-mqxp$Mx`8S*QoktoCuYkbc|8*C0j3>L&bjKrJ_6=IEg)XM->B3=qe?XTX6?EQS z{Qj$BX_?k%ST7yJTTa-kNvBZ3?nzPEz(e~e3EUK`VZQuw=G#7V7==JYL* zJvZ1NXp;Lai_B@DAyPR~{~(JIg{t`xiKSxS)o(F3&rj&MDz{3=yQMny;{NEb!PPsC z>Myk>B_aojH&kecZdz?IuO_qd&(--->07v8BRl4Y2p0TbB zB7olqgQK>ZW&?MTHZ7NU7A0DuG{2KftKf_{QH zLz9zmO_X_FoDZjeusL~?sXD}@N~9-4<7B)MVdx25#BjKy06h?SQXzzyd@0G9tUi_7 zGwN^!xo%z^Y53i5Q2xm0@dWOvf7Y3I<=D;H`rVY9h_vaF4Gl0oyKNZ%3AsG-_v&FH zrZTAa^OqIx8`y`a@S=9MU#N4u3|wTEkBy3pM7exq*PqC)KcSjM@I}!yr`tk`6DuHz%Lf>>(v;+cM)lohD$-ir}{NTX+DJ&IRtHp9#=__ zs{Z4jj9Y@{f+Fz}Zfdwx^be7c-kd*&3oq2R4Ht+tAr-l?^d^qMpp&GyhW$v2+dZ?r zT!vf_o+5SDCWk4{NR&_y#s6KifNo-N63EpdLYYlt-^69_=+CyV9po=wDM-Ix%GN(X z?f_lELV=s3ToxOe3qK!S#aWIiK-Y2dYmunPAIUe#c0VHR;Cw}`7M2q3+!dUrkO)C6 z!Ha8}ZbT$1RpBu3-HxZQV2KADzL)`Ywcn|Q4sllKd?j8Rd`A7{AY$gTxO1MnY4Wa~mhtc0x5+>rcduW;v@ z!ip5haZ-dvRm>-iH45_?o5hRSP^H3DN{ZYoBX^YKi27k%3#Tjl_gUdN{JjQS)TQy( zbHuLhiaT&OEIx~5?*Z=T8nL+@E_zkP^KnM2-d=iR#dB+E<2sm{WPr#NC=Hsrzr%I2 ze~!+p4f$5#kZXSWDLNs~HT0gUSwqjFB~_zj#R}(E{&VYD-DyoO(Ef`$tySo|ykqrx z_6EnU^yCM)CqlW*p2HsY%zFt1r!uf2533&rcwzfB8jqr=;B`fax3a;XXena#;(uOIi9YYrN+(Oz#!F#MUD@oyO2rq`rL9;c z^CTXhklKwUcz4W9d0#lxJL`Yeu+00*lI#-K``?7d^*2FrA3LralX2&vX^zvQs9sr5 zLjSSBXzWH7^_SsNcYEW2Z($qyb{FQ+s?5rsQum_%@lG^5AxDw^o!a)xl>--RtTxT? zCTU&8wKqTZdEjf(A9c1_p_cCmZ7dBb-9L73Wsd_BR_L$P*EX~ks9i3xe0v^!hy8t5 z-Q}8lZ{`!+gbTAMzl`5^x2Iw@Zdjix*k!j75DI2KyDovf`rg%&S+a7Wlsxlac4mIcnV+1r=XmE^2wJ9g7OPh?X%5Yj{lo(W zEbLW_+dU*tXRslJRm^+9t3gR)6gVETViJE$vy0OUQQF>e2J7MIA?x2~Yw?N;%w76c z&O3X9vIe^3OOX#d+Qh66MQ8J`D)Pu`ve@EYhXuubKx9135!ybbNnZYuG12=tJvZE# za|~Fx-f}uXD)5xP-IJ-6*O#gtO72qK`x!``pMJ^All zaW>&%mC|o%KmF3Wm=%l4KcH;7#@(eFD6*Py>6(;U5O>j1GOVk^yRhx|oLi3b%>(`C zo`+>?zsLdz>ePSImn)Z~Sp>AnnQ;#kAk^#?)b*Yl)sk?`ZtV zl-E-f?+sEZIglLp;;#JGdmwr*QTC_oL(jq=9Z6<&ezet#G>=mGE>(P z**LR*W;U^%mU}zT6Mv}gkZs!FEk7Zzuc5VN^{-SYcsiN6L2=vLeVUP zs^vgdtUe;siWf}Rc9i%=Gon zF>&Vzh8dBNo#sR$6-krH;r~ZMlmwvUQZwJ2%Xn4gQ zgXea*80C+Wja;~TV5;+8M{D5g>;jts5(LRn`9UVI5jMqkhk?7^Bu$#hiPtoKX20|~ z6U|MYPWSRBJ*tvwmZUvs##xzTTV);{qrap*9==4CDmfa3PqEI9${+szym9D9=yE?n zc~BKU(F8`q_&?KWHUy>Mf|vjh#`@+;Dd%N$wfwncqc2@M&_B#vNBK?|!Gz#8N9bMA zSBGWLUL2LIR~TMx=7d~y*$o^DV~WBO}mu&jIup`lP5aU_Qi|qPQ&s!X|TKG z&*YcQ1y?OmvJsLd2l{oD-%_l%4wsz@xk3Ot^p#MT| zQ{B1KMDSiTk-KS@KoF%hbI=NXw`}+DU_A+(OFRJpx#|DZ;gA>OT06%HHqqdzl$sK& z_tam`EA?8Dci|!#V=U@Zspn>JC!>chA%oy?+)nnyssdTFCVmFLIdrG(zHX)Ud=PVS6)yPom$Yhf83~Zsql5Q^ z&&%uo2K5*p1xV8L)zSE#h4m)9rK(oQPC3I0kTh9;pFjL;`&0(Ir_KB^ABb*OB%ihV%A~oei5SllAad(U3k_ zgE!C0%v4mRpVK5|91lE7%b2SuW_6I(ctavutQ9}?o7r)wPxQy`{agzF=VH)RU0*5TSa;8X0;drK zeV*d(hLs8*PKWz5W{x|m<4*@DKkW!}7hUc^@RUCbk0@nyHdh$ zFFamrWqxRM!4y-g=azoR;I>0ci`I+*%0@iDg}orCdnl;wZyU@XvyWkYPpN*PiFOi?to3}(Qt)Ao z9g)SwjJM);c7L>All{_Q*Eg2Z-)pZRJkFu5;0KBereoF#jm13?Q#(GVZB!oOe)U9e zn(8v=wEnb=$t;c^aAi;Tcr$1|cvIa5L?2laC|>X*vU&UQ=8b#KLEkeHTT2f~khP_p ziuGUGCf{>Ap*KxZA4P|{hj!#S^{v2Q+ zH1Fh5dCNnq$LV#ZU31k>nCg`|jMAp^d}Opaobl2pGs*Yxy6of(5%cQg-i0=7byZW( zEM^{O8cW#BpyHqH6#P(jv^wo|tWqvMLD;%8ZTQ-$fHxVJ+PP;qLN7UAc$!sF$=<)D zy+dzl^>TYlsN%fVVkGKA=>cU9Ic^TBwYa}9#d%$%8*tkTiM=U;ZY>K}dZN*+c{ac8 zq>k3J5XbPs-o5|V#FfWGxp#3h(=b_zZq~w;knOcRmYcDal(F81WOQSYu~ig}rLsia zN(_b!1~I8A6q6~T+}sdjFeDO2!o(=+wI%Ow-21ujJAXcNo^#G~o^#Ikdw$RJ{06q_ z8Kl40I@LfFbk^Wv6<6yHg+SH7gY_HmFMB(C4Dzo@3hxwl7gA0GTK5{k#{vMdm&>|Z z!JKa@w(DfoVA1Qe;Sm6%?lLMmGuOU|CFsE~+ot)s3%^3{QeMCfe-y6qyVn*3EGsxD z$Yo{v7gHKtwje9zF0;8*N=L6y*g55MYsBefit#PCXg7Py9cIY>nX6|2bl7s{%#Yb^ znASo5Rp*lRQ9jA!a`N}c?(!3~HZ3_T$%trB=Ey4PMG5@KS#uYOV(s<2n=l5-2!48j zR@maJVGwc>Kw3f%X!1L`zT8gLV}|XIieL-0wuaCj2`NNR@km%4wKD#Kihqs>_M&tu zyDfIQ@(tTBNBQq^IBp+%p9KFl!RTvqZ{&wZnQb<+=8q^u;U2O?(hy&7QCoDXoxY?p zJJvC8+fFy=qbJ1XF-6AR?x;;sssjylJ^{R|tC?Qczk(|FM)_zyX>T|~7%!FTA3Gb= z{a9musyr7IOCG_vOLuAJiE%Jtb$`czsCaVNj}u+B@L#lu>I|9Z%0}J~zegFywYFU8 z)7j~-jkjbnAOh5G6*T8*mj>%VdflM5lw(XtX=b^`1BXSKGZRn<`D70?@vOsMxz2=9 zl0|ZpPYx5BEdo5m_*Y#;3GATNo=f^nbZGSuRg`q zeXIAft|NN?hBID3Rj3{kqju@59oGqYc;L7Y`Kg=?BGGQ*(Q;P$%@f z3UbiQm4IH@H|yU&xi5%$YK6db7$_Z=P1ZMp*MuT8n%QU0*-BQ%SKOkhxiF_}uCfBq z4C#pNNei^k&jgoLW!I3N)YyXmhk*rDbLtSm3xK+u+W5nAf}x0$sIlSPiUC=FcA3^> znU&pT04b&h_U)cdINv|{yBr8ocU41oV&iM~0=<0PIw>X&Q6Tf0tA!eYH|P=7wXYkX zMiSU+oDx}I;khnnMAUXSOysUwk|AS)l&O7)!NFMp{Hi*Q$E7MZdw$yDZ8+HZ?k7ul!SPCg@Dd;iUGHTUtK)i46J zfm7lwAihjhjw4c27QL{o{n|M` zhiU@OI(*zQn!9-Sfv+@{dw;c!5MuVqKf+tHwySQDRo+T#6Q+m$XEuoRSd-lIVzKfg zFJmil`IR#hj<`Q6lJ#Bef9Me8m$eK~&2tFyTyiqKaD_>GZFgfk2l-zO~Jh zds-6YYN1Nyh1y)LAI@c00&V7Bl157mvhy$RZ%;cJgfJ< ziHAi6Fe-xZ9oa*Z@AlC*SAl#--Rk@#@xdjB4b$cwz6AFp*ky;t?~=)t@gMZVtoe>= zk&5~*4?ilR?Q|;p7yRlpp9uUc)3PAs5j|o~UpuVB(#;Ks?@?L(o&5Bi3es|-J@LKu zog9DBatf}{PRs=1E$*|r)91S(x2X!sw*KpzdrK{LL>tVLAe^q z;DmBWPxul5^M=Lh5zBn%U!6jKV!Q2KMu^>OGp`Xz%5v1%a(lKu}tnUly{mIS>-_wH*2+bcq96ZScsBj^R zJSdm+t#PGxW~KE31*e3`KA}<&2R2$e^oudEut17e*EOKA^h2GPTfcDr<;1!?z=I*c z6e*O3jHfF&?o+Vr5Xl3Bz(POeB6kOOFI~WqY)89M9j+s3S4+sxNrq5+)gme+LOAIV z=%IynUi+zDu}R>Mylo?t;ClX*=!h~moHQ8sC{C$HPcT!Dgjx{G&Fr4TeqdZ(w|{$` z!zb#hN9L!mDzr?t69{TQZvoeVzkw@&@94A`E?1$L}Mm$3?u@dM}%W||H`oCbRT z&QS3U{Zp8QjMfZ=8BP2Ra(SvEO}yIAGO~==1A%-m1^G_NPVZfp+^<0!St9#5yqQ?k zYJ0lzo1L+9A7%beHs-^5a_pz$Yrwp^$^-F~Cug@UI&q;YXh!Ka$@1QE6o0?}m~Sx0 z+4xSPW;SAqQ;pTWTn+IOo zM+X}*PT!xu8))RM=dH+_zy>R_g4$!+K;K}MkJ8#oRc0^9nMW*rm-B}de5u6|90M*bk_GjL_aQ%2$M9eBrM;5!vNo%>{g1DtpYfcRgArSh^ z|6x;WmOS6Cb>i6Rqdym@ohS^9vd*t2#^i;DukogMFl;sFI+;SL$?QeL^8?Ccn<+fo zIdsApC!za>7`@=bSGF7FU;OYD+!}=_`CR4K$dQyZ>BdxQeJ`R^>`a~COG#5q_{Z%L z4%ySbA_frjC~GZL+-C*v@k;VF7T?J~Hn2EvArr&)xj?RgmH?WcTqF>3PI3w=8u6$} zZzNUQ`c$@^@R?iz)%+iVgQ}7an)@J`qcok6|K>y)V80yI2CxDH%;by9V&C*h zqpcC<+Z4rm?(b)TpXVdMy&hltF(3#kOQ)x3_3gflANT!lrFp|o;3IMX)%-o=SHrR_VuP3m@IHR3=ay-P_70|NI+l3&Tyh z8$b!`;^X5~x;JbHJ0c;`dIku&%MAo3r47wERv{??74j0BE++>708rZ5BE|;U9PdSGqaDo0uhSz uk*h|pwIyYmyu7p61G|hf1m`7ux0?Q`7iO7t#vg2AErhXkK2muYf9=2QS}DQ+ literal 0 HcmV?d00001 diff --git a/assets/branding/icon.txt b/assets/branding/icon.txt new file mode 100644 index 0000000..0bdd125 --- /dev/null +++ b/assets/branding/icon.txt @@ -0,0 +1,34 @@ + ,,, + ,, ,,,,,, + ,,,,,,,, ,,,,,,,,,, + ,,,,,,,,,,,,,, .,,,,,,,,,,,, + ,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,. ,,,,,,,,,,,,,,,,,,, + .,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,, +, ,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,, +,,, ,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,, .,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,. ,,,,,,,,,,,,,,,,,,,,,,,,, ,,, .,,,,,,,,,,,, +,,,,,,,,,,,, .,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,, +,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,. ,,,,,,,,,,,,, +,,,,,,,,,,,,, ,, ,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,, +,,,,,,,,,,,,, ,,,,, ,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,, +,,,,,,,,,,,,, ,,,,,,,, ,,,,,,,,,,,,,,,, ,,,,,,,,,,,, +,,,,,,,,,,,,, ,,,,,,,,,, ,,,,,,,,,,,,, ,,,,,,,,,,,, +,,,,,,,,,,,,, ,,,,,,,,,,,,,, ,,,,,,,,,, ,,,,,,,,,,,, +,,,,,,,,,,,,, ,,,,,,,,,,,,,,,, ,,,,,,, ,,,,,,,,,,,, +,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,, ,,,, ,,,,,,,,,,,, +,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,, ,, ,,,,,,,,,,,, +,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,, +,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,, +,,,,,,,,,,,,, ,,, ,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,, +,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,, .,,,,, +,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,, ,,, +,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,, .,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,, ,,,,,,,,,,,,,, +,,,,,,,,,, ,,,,,,,,,. +,,,,,, ,, +,,,, diff --git a/assets/branding/logo.svg b/assets/branding/logo.svg index ea44270..b060ba0 100644 --- a/assets/branding/logo.svg +++ b/assets/branding/logo.svg @@ -2,14 +2,14 @@ diff --git a/assets/makima/AT Translated Set 2 keyboard.toml b/assets/makima/AT Translated Set 2 keyboard.toml new file mode 100644 index 0000000..3872c35 --- /dev/null +++ b/assets/makima/AT Translated Set 2 keyboard.toml @@ -0,0 +1,7 @@ +# Run nomarchy-restart-makima after any changes + +[remap] +KEY_LEFTMETA-KEY_LEFTSHIFT-KEY_F23 = ["KEY_LEFTMETA", "KEY_LEFTALT", "KEY_SPACE"] + +[settings] +GRAB_DEVICE = "true" diff --git a/assets/nautilus-python/extensions/localsend.py b/assets/nautilus-python/extensions/localsend.py new file mode 100644 index 0000000..aaf4440 --- /dev/null +++ b/assets/nautilus-python/extensions/localsend.py @@ -0,0 +1,84 @@ +import os +import shutil + +from gi import require_version + +require_version("Nautilus", "4.1") + +from gi.repository import GObject, Gio, Nautilus + + +class SendViaLocalSendAction(GObject.GObject, Nautilus.MenuProvider): + def _launch_localsend(self, paths): + command = self._resolve_command() + if not command: + return + + if command[-1] == "@@": + command = command + paths + ["@@"] + else: + command = command + paths + + Gio.Subprocess.new(command, Gio.SubprocessFlags.NONE) + + def _resolve_command(self): + localsend = shutil.which("localsend") + if localsend: + return [localsend, "--headless", "send"] + + flatpak = shutil.which("flatpak") + if flatpak and self._has_flatpak_app(flatpak, "org.localsend.localsend_app"): + return [ + flatpak, + "run", + "--file-forwarding", + "org.localsend.localsend_app", + "@@", + ] + + return None + + def _has_flatpak_app(self, flatpak, app_id): + process = Gio.Subprocess.new( + [flatpak, "info", app_id], + Gio.SubprocessFlags.STDOUT_SILENCE | Gio.SubprocessFlags.STDERR_SILENCE, + ) + return process.wait_check() + + def _selected_paths(self, files): + paths = [] + + for file in files: + location = file.get_location() + if not location: + continue + + path = location.get_path() + if path and path not in paths: + paths.append(path) + + return paths + + def _make_item(self, paths): + label = ( + "Send via LocalSend" if len(paths) == 1 else "Send selected via LocalSend" + ) + item = Nautilus.MenuItem( + name="LocalSendNautilus::send_via_localsend", + label=label, + icon="localsend", + ) + item.connect("activate", self._on_activate, paths) + return item + + def _on_activate(self, _menu, paths): + self._launch_localsend(paths) + + def get_file_items(self, *args): + files = args[0] if len(args) == 1 else args[1] + paths = self._selected_paths(files) + + if not paths or not self._resolve_command(): + return [] + + return [self._make_item(paths)] diff --git a/assets/nomarchy-skill/SKILL.md b/assets/nomarchy-skill/SKILL.md new file mode 100644 index 0000000..19c2eba --- /dev/null +++ b/assets/nomarchy-skill/SKILL.md @@ -0,0 +1,366 @@ +--- +name: nomarchy +description: > + REQUIRED for end-user customization of Linux desktop, window manager, or system config. + Use when editing ~/.config/hypr/, ~/.config/waybar/, ~/.config/walker/, + ~/.config/alacritty/, ~/.config/kitty/, ~/.config/ghostty/, ~/.config/mako/, + or ~/.config/nomarchy/. Triggers: Hyprland, window rules, animations, keybindings, + monitors, gaps, borders, blur, opacity, waybar, walker, terminal config, themes, + wallpaper, night light, idle, lock screen, screenshots, layer rules, workspace + settings, display config, and user-facing nomarchy commands. Excludes Nomarchy + source development in ~/.local/share/nomarchy/ and nomarchy-dev-* workflows. +--- + +# Nomarchy Skill + +Manage [Nomarchy](https://nomarchy.org/) Linux systems - a beautiful, modern, opinionated Arch Linux distribution with Hyprland. + +This skill is for end-user customization on installed systems. +It is not for contributing to Nomarchy source code. + +## When This Skill MUST Be Used + +**ALWAYS invoke this skill for end-user requests involving ANY of these:** + +- Editing ANY file in `~/.config/hypr/` (window rules, animations, keybindings, monitors, etc.) +- Editing ANY file in `~/.config/waybar/`, `~/.config/walker/`, `~/.config/mako/` +- Editing terminal configs (alacritty, kitty, ghostty) +- Editing ANY file in `~/.config/nomarchy/` +- Window behavior, animations, opacity, blur, gaps, borders +- Layer rules, workspace settings, display/monitor configuration +- Themes, wallpapers, fonts, appearance changes +- User-facing `nomarchy-*` commands (`nomarchy-theme-*`, `nomarchy-refresh-*`, `nomarchy-restart-*`, etc.) +- Screenshots, screen recording, night light, idle behavior, lock screen + +**If you're about to edit a config file in ~/.config/ on this system, STOP and use this skill first.** + +**Do NOT use this skill for Nomarchy development tasks** (editing files in `~/.local/share/nomarchy/`, creating migrations, or running `nomarchy-dev-*` workflows). + +## Critical Safety Rules + +**For end-user customization tasks, NEVER modify anything in `~/.local/share/nomarchy/`** - but READING is safe and encouraged. + +This directory contains Nomarchy's source files managed by git. Any changes will be: +- Lost on next `nomarchy-update` +- Cause conflicts with upstream +- Break the system's update mechanism + +``` +~/.local/share/nomarchy/ # READ-ONLY - NEVER EDIT (reading is OK) +├── bin/ # Source scripts (symlinked to PATH) +├── config/ # Default config templates +├── themes/ # Stock themes +├── default/ # System defaults +├── migrations/ # Update migrations +└── install/ # Installation scripts +``` + +**Reading `~/.local/share/nomarchy/` is SAFE and useful** - do it freely to: +- Understand how nomarchy commands work: `cat $(which nomarchy-theme-set)` +- See default configs before customizing: `cat ~/.local/share/nomarchy/config/waybar/config.jsonc` +- Check stock theme files to copy for customization +- Reference default hyprland settings: `cat ~/.config/nomarchy/default/hypr/*` + +**Always use these safe locations instead:** +- `~/.config/` - User configuration (safe to edit) +- `~/.config/nomarchy/themes//` - Custom themes (must be real directories) +- `~/.config/nomarchy/hooks/` - Custom automation hooks + +If the request is to develop Nomarchy itself, this skill is out of scope. Follow repository development instructions instead of this skill. + +## System Architecture + +Nomarchy is built on: + +| Component | Purpose | Config Location | +|-----------|---------|-----------------| +| **Arch Linux** | Base OS | `/etc/`, `~/.config/` | +| **Hyprland** | Wayland compositor/WM | `~/.config/hypr/` | +| **Waybar** | Status bar | `~/.config/waybar/` | +| **Walker** | App launcher | `~/.config/walker/` | +| **Alacritty/Kitty/Ghostty** | Terminals | `~/.config//` | +| **Mako** | Notifications | `~/.config/mako/` | +| **SwayOSD** | On-screen display | `~/.config/swayosd/` | + +## Command Discovery + +Nomarchy provides ~145 commands following `nomarchy--` pattern. + +```bash +# List all nomarchy commands +compgen -c | grep -E '^nomarchy-' | sort -u + +# Find commands by category +compgen -c | grep -E '^nomarchy-theme' +compgen -c | grep -E '^nomarchy-restart' + +# Read a command's source to understand it +cat $(which nomarchy-theme-set) +``` + +### Command Categories + +| Prefix | Purpose | Example | +|--------|---------|---------| +| `nomarchy-refresh-*` | Reset config to defaults (backs up first) | `nomarchy-refresh-waybar` | +| `nomarchy-restart-*` | Restart a service/app | `nomarchy-restart-waybar` | +| `nomarchy-toggle-*` | Toggle feature on/off | `nomarchy-toggle-nightlight` | +| `nomarchy-theme-*` | Theme management | `nomarchy-theme-set ` | +| `nomarchy-install-*` | Install optional software | `nomarchy-install-docker-dbs` | +| `nomarchy-launch-*` | Launch apps | `nomarchy-launch-browser` | +| `nomarchy-cmd-*` | System commands | `nomarchy-cmd-screenshot` | +| `nomarchy-pkg-*` | Package management | `nomarchy-pkg-install ` | +| `nomarchy-setup-*` | Initial setup tasks | `nomarchy-setup-fingerprint` | +| `nomarchy-update-*` | System updates | `nomarchy-update` | + +## Configuration Locations + +### Hyprland (Window Manager) + +``` +~/.config/hypr/ +├── hyprland.conf # Main config (sources others) +├── bindings.conf # Keybindings +├── monitors.conf # Display configuration +├── input.conf # Keyboard/mouse settings +├── looknfeel.conf # Appearance (gaps, borders, animations) +├── envs.conf # Environment variables +├── autostart.conf # Startup applications +├── hypridle.conf # Idle behavior (screen off, lock, suspend) +├── hyprlock.conf # Lock screen appearance +└── hyprsunset.conf # Night light / blue light filter +``` + +**Key behaviors:** +- Hyprland auto-reloads on config save (no restart needed for most changes) +- Use `hyprctl reload` to force reload +- Use `nomarchy-refresh-hyprland` to reset to defaults + +### Waybar (Status Bar) + +``` +~/.config/waybar/ +├── config.jsonc # Bar layout and modules (JSONC format) +└── style.css # Styling +``` + +**Waybar does NOT auto-reload.** You MUST run `nomarchy-restart-waybar` after any config changes. + +**Commands:** `nomarchy-restart-waybar`, `nomarchy-refresh-waybar`, `nomarchy-toggle-waybar` + +### Terminals + +``` +~/.config/alacritty/alacritty.toml +~/.config/kitty/kitty.conf +~/.config/ghostty/config +``` + +**Command:** `nomarchy-restart-terminal` + +### Other Configs + +| App | Location | +|-----|----------| +| btop | `~/.config/btop/btop.conf` | +| fastfetch | `~/.config/fastfetch/config.jsonc` | +| lazygit | `~/.config/lazygit/config.yml` | +| starship | `~/.config/starship.toml` | +| git | `~/.config/git/config` | +| walker | `~/.config/walker/config.toml` | + +## Safe Customization Patterns + +### Pattern 1: Edit User Config Directly + +For simple changes, edit files in `~/.config/`: + +```bash +# 1. Read current config +cat ~/.config/hypr/bindings.conf + +# 2. Backup before changes +cp ~/.config/hypr/bindings.conf ~/.config/hypr/bindings.conf.bak.$(date +%s) + +# 3. Make changes with Edit tool + +# 4. Apply changes +# - Hyprland: auto-reloads on save (no restart needed) +# - Waybar: MUST restart with nomarchy-restart-waybar +# - Walker: MUST restart with nomarchy-restart-walker +# - Terminals: MUST restart with nomarchy-restart-terminal +``` + +### Pattern 2: Make a new theme + +1. Create a directory under ~/.config/nomarchy/themes. +2. See how an existing theme is done via ~/.local/share/nomarchy/themes/catppuccin. +3. Download a matching background (or several) from the internet and put them in ~/.config/nomarchy/themes/[name-of-new-theme] +4. When done with the theme, run nomarchy-theme-set "Name of new theme" + +### Pattern 3: Use Hooks for Automation + +Create scripts in `~/.config/nomarchy/hooks/` to run automatically on events: + +```bash +# Available hooks (see samples in ~/.config/nomarchy/hooks/): +~/.config/nomarchy/hooks/ +├── theme-set # Runs after theme change (receives theme name as $1) +├── font-set # Runs after font change +└── post-update # Runs after nomarchy-update +``` + +Example hook (`~/.config/nomarchy/hooks/theme-set`): +```bash +#!/bin/bash +THEME_NAME=$1 +echo "Theme changed to: $THEME_NAME" +# Add custom actions here +``` + +### Pattern 4: Reset to Defaults -- ALWAYS SEEK USER CONFIRMATION BEFORE RUNNING + +When customizations go wrong: + +```bash +# Reset specific config (creates backup automatically) +nomarchy-refresh-waybar +nomarchy-refresh-hyprland + +# The refresh command: +# 1. Backs up current config with timestamp +# 2. Copies default from ~/.local/share/nomarchy/config/ +# 3. Restarts the component +``` + +## Common Tasks + +### Themes + +```bash +nomarchy-theme-list # Show available themes +nomarchy-theme-current # Show current theme +nomarchy-theme-set # Apply theme (use "Tokyo Night" not "tokyo-night") +nomarchy-theme-next # Cycle to next theme +nomarchy-theme-bg-next # Cycle wallpaper +nomarchy-theme-install # Install from git repo +``` + +### Keybindings + +Edit `~/.config/hypr/bindings.conf`. Format: +``` +bind = SUPER, Return, exec, xdg-terminal-exec +bind = SUPER, Q, killactive +bind = SUPER SHIFT, E, exit +``` + +View current bindings: `nomarchy-menu-keybindings --print` + +**IMPORTANT: When re-binding an existing key:** + +1. First check existing bindings: `nomarchy-menu-keybindings --print` +2. If the key is already bound, you MUST add an `unbind` directive BEFORE your new `bind` +3. Inform the user what the key was previously bound to + +Example - rebinding SUPER+F (which is bound to fullscreen by default): +``` +# Unbind existing SUPER+F (was: fullscreen) +unbind = SUPER, F +# New binding for file manager +bind = SUPER, F, exec, nautilus +``` + +Always tell the user: "Note: SUPER+F was previously bound to fullscreen. I've added an unbind directive to override it." + +### Display/Monitors + +Edit `~/.config/hypr/monitors.conf`. Format: +``` +monitor = eDP-1, 1920x1080@60, 0x0, 1 +monitor = HDMI-A-1, 2560x1440@144, 1920x0, 1 +``` + +List monitors: `hyprctl monitors` + +### Window Rules + +**CRITICAL: Hyprland window rules syntax changes frequently between versions.** + +Before writing ANY window rules, you MUST fetch the current documentation from the official Hyprland wiki: +- https://github.com/hyprwm/hyprland-wiki/blob/main/content/Configuring/Window-Rules.md + +DO NOT rely on cached or memorized window rule syntax. The format has changed multiple times and using outdated syntax will cause errors or unexpected behavior. + +Window rules go in `~/.config/hypr/hyprland.conf` or a sourced file. Always verify the current syntax from the wiki first. + +### Fonts + +```bash +nomarchy-font-list # Available fonts +nomarchy-font-current # Current font +nomarchy-font-set # Change font +``` + +### System + +```bash +nomarchy-update # Full system update +nomarchy-version # Show Nomarchy version +nomarchy-debug --no-sudo --print # Debug info (ALWAYS use these flags) +nomarchy-lock-screen # Lock screen +nomarchy-system-shutdown # Shutdown +nomarchy-system-reboot # Reboot +``` + +**IMPORTANT:** Always run `nomarchy-debug` with `--no-sudo --print` flags to avoid interactive sudo prompts that will hang the terminal. + +## Troubleshooting + +```bash +# Get debug information (ALWAYS use these flags to avoid interactive prompts) +nomarchy-debug --no-sudo --print + +# Upload logs for support +nomarchy-upload-log + +# Reset specific config to defaults +nomarchy-refresh- + +# Refresh specific config file +# config-file path is relative to ~/.config/ +# eg. nomarchy-refresh-config hypr/hyprlock.conf will refresh ~/.config/hypr/hyprlock.conf +nomarchy-refresh-config + +# Full reinstall of configs (nuclear option) +nomarchy-reinstall +``` + +## Decision Framework + +When user requests system changes: + +1. **Is it a stock nomarchy command?** Use it directly +2. **Is it a config edit?** Edit in `~/.config/`, never `~/.local/share/nomarchy/` +3. **Is it a theme customization?** Create a NEW custom theme directory +4. **Is it automation?** Use hooks in `~/.config/nomarchy/hooks/` +5. **Is it a package install?** Use `nomarchy-pkg-add` (or `nomarchy-pkg-aur-add` for AUR-only packages) +6. **Unsure if command exists?** Search with `compgen -c | grep nomarchy` + +## Out of Scope + +This skill intentionally does not cover Nomarchy source development. Do not use this skill for: +- Editing files in `~/.local/share/nomarchy/` (`bin/`, `config/`, `default/`, `themes/`, `migrations/`, etc.) +- Creating or editing migrations +- Running `nomarchy-dev-*` commands + +## Example Requests + +- "Change my theme to catppuccin" -> `nomarchy-theme-set catppuccin` +- "Add a keybinding for Super+E to open file manager" -> Check existing bindings first, add `unbind` if needed, then add `bind` in `~/.config/hypr/bindings.conf` +- "Configure my external monitor" -> Edit `~/.config/hypr/monitors.conf` +- "Make the window gaps smaller" -> Edit `~/.config/hypr/looknfeel.conf` +- "Set up night light to turn on at sunset" -> `nomarchy-toggle-nightlight` or edit `~/.config/hypr/hyprsunset.conf` +- "Customize the catppuccin theme colors" -> Create `~/.config/nomarchy/themes/catppuccin-custom/` by copying from stock, then edit +- "Run a script every time I change themes" -> Create `~/.config/nomarchy/hooks/theme-set` +- "Reset waybar to defaults" -> `nomarchy-refresh-waybar` diff --git a/assets/plymouth/bullet.png b/assets/plymouth/bullet.png new file mode 100644 index 0000000000000000000000000000000000000000..62249b3bd82b0b670a8a503a3bb69bbfe79cc4f4 GIT binary patch literal 293 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xamSQK*5Dp-y;YjHK^6z-MIEH9U zoIA;|uZcmx^}qZQCjEr9ou<6JoZt7m0FRe~3I-q?kdfVZu-@kQlF=GdcP{_{ literal 0 HcmV?d00001 diff --git a/assets/plymouth/entry.png b/assets/plymouth/entry.png new file mode 100644 index 0000000000000000000000000000000000000000..5c7891792b8872db933f17a667a449a478c0be53 GIT binary patch literal 694 zcmeAS@N?(olHy`uVBq!ia0y~yV3Y&04FuSLa@a2CEqi4B`cIb_Lo1CD@X@-Ch2J0cXVbJ3tZk5>H=O_LuA|BAOCC zHaNEIWB8gpRxhIrP-q3h6ugFYL#HXzL zs@XQt|A*ck*2`WtwNt_B=Yyw}k1W;qd^{d$X}`l_w|(sWyd1OlR=bb4vobhzyu2J; zZnSHU?(>Dgw^zkpzx{Xds&+;O9q+{%->h5%r*w;NJ|6l0@y}PwUNtf>?BDuhVsPE} zg8wPcOLO0+EPi#6fx-T(fyDNE?akAVe!dFQ`p5hrGs6*K8wLlPp~KkoX?J(~!5v@i zWcGyE3NSoazmLT~cXe58{`dY>a%>D6be?{Bxz<`T_MTZ++WO$HQVb2Mv&zq@Pirx0 z4OBAy4vaL_64!{5l*E!$tK_0oAjM#0U}UOmV6JOm5@KXvWnyS$WTI_gU}a!%k#!|7 zD3LVe=BH$)RpQpLAVSa+oZUJsR-+c`p0rfC=y85}Sb4q9e01cG# AHUIzs literal 0 HcmV?d00001 diff --git a/assets/plymouth/lock.png b/assets/plymouth/lock.png new file mode 100644 index 0000000000000000000000000000000000000000..3046de1b6a3f20d194f010fee671c936326beb27 GIT binary patch literal 1537 zcmaKseKgYx7{|AHUkq{cvLRb`y@V2`mnmXdjLEhr)$(pBuF;Fg7MiYcO37PGhEj}Q zjkx2~FG}6iyi`n^Yf__8QcEw2yZ-5)d(J)Q^E}@_p65B=bDrm%=QKHZn*rPs4uL=n zhyi{()JjnYT~}M3b6C_2wdkb;L@*(cWhOrZ3aPkg4uNP1iGDtmqZi-uNcB{I6qr4G z#i8)RDVJ5cL1!Nt{l+uGVeBIuqiPA1leLuzROguk=T?Ra9MON;!yO9zRCRCo6Z~dO zZEkEpocTDP92U}<@#4T*rj2a+(x$Pv@seyCNY93qf#zr(*_!G?;{%hf$7{)0wjI)D_X( zm}u}Ln8`jY-p@J5VO8CjI08(3E0;){?Q-|cD59AsumI2J9^x48{P#=1M@1> z`3H_14&4M@jmRG{e0-T%a$_};xp+UGO5W(w?k>lx9F;;;TAULlesb+OonM22Q!c81az}6c*t>v7~tOVPm zhU!UpisjNWSukBNpiE6b9Q+!olgTZa?zW>>3@H1~d|7^cD&u?XCD2;IcY{V&A|v%} zdgu$wb94J!*DI4eckMCCA2lAHSD>gLRdsonw|WzWbCTnPs>+EhLc?+2mx$6;Pv&90 z`0L*_g4}j}dR=HC;<$8$V8H_R+5)ZzLV8t}3+GKlEaK#JdXNo5RObC<{#qWnTDYlq z)?=4}W)I5KWoU07<8~IqmNFI8_hC%4r#B}#Xw19S$T7|LGujzt$Su_wD^oXACsp6Y z@KIlS8YxqxORtv@zY6`OX~XEy`ZfP$tM|_>py#PwsWV|^yI&|}5<#J-3naFWlPt&0 zMM1pA=0DF$cD`C*@wVbov-TLG5Xo`|Cp3#t1lw$AGfc{*?c{bf87cSbWy55&%tM%p zeXIrPK75<{GLPwF=XCHZ+fTLU^X`|rK`Cd;+jrMtGa(^cXr+} zgVU;=CUsvl!V_DzOK)XsWtP;Abb!{3qlSAP;8kvbDCe<{Y>C!!vz1@u+lCa}en)#) z;t*rZHexumT)tUH-d4SN1?85h(q5JM8U5Fz3%*u)MG1WJ{{KN~pSIm6Hn6(LH){pv ze0V$g{08_ag*>vOzNWv9Sb-lDoN*GiYdmB~>U7k^= z!sR4-SaIB}#^(07LNV=C+^Wxvp#$8peZDi2`#_iZs= zqu`0Tb?EN1+Q1#UGG4l`!VHb{C~R_k3u*CyVN%VraV9KWDT5xw*ws95W?`)tyZ4)2<_Ue8M2_Lb zaSg1=`gadV(~oTBd5ZNyUQ=(QUE*OKK)-|hxBH_7i+@D@94nGF6k#qnb#ZuUGt_nK Vg$$|X5%o`p5dDMwntbUe{{_St%Ul2e literal 0 HcmV?d00001 diff --git a/assets/plymouth/nomarchy.plymouth b/assets/plymouth/nomarchy.plymouth index f5f05b2..cbacec9 100644 --- a/assets/plymouth/nomarchy.plymouth +++ b/assets/plymouth/nomarchy.plymouth @@ -1,8 +1,11 @@ [Plymouth Theme] Name=Nomarchy -Description=Nomarchy boot splash theme +Description=Omarchy splash screen. ModuleName=script [script] -ImageDir=/etc/plymouth/themes/nomarchy -ScriptFile=/etc/plymouth/themes/nomarchy/nomarchy.script +ImageDir=/usr/share/plymouth/themes/nomarchy +ScriptFile=/usr/share/plymouth/themes/nomarchy/nomarchy.script +ConsoleLogBackgroundColor=0x1a1b26 +MonospaceFont=Cantarell 11 +Font=Cantarell 11 diff --git a/assets/plymouth/nomarchy.script b/assets/plymouth/nomarchy.script index f07fac1..df0c298 100644 --- a/assets/plymouth/nomarchy.script +++ b/assets/plymouth/nomarchy.script @@ -1,53 +1,257 @@ -# Nomarchy Plymouth Theme Script -# Centered logo with smooth fade-in and LUKS password support +# Omarchy Plymouth Theme Script -# Set background to black -Window.SetBackgroundTopColor(0, 0, 0); -Window.SetBackgroundBottomColor(0, 0, 0); +Window.SetBackgroundTopColor(0.101, 0.105, 0.149); +Window.SetBackgroundBottomColor(0.101, 0.105, 0.149); -# Logo Setup -logo_image = Image("logo.png"); -logo_sprite = Sprite(logo_image); -logo_sprite.SetX(Window.GetWidth() / 2 - logo_image.GetWidth() / 2); -logo_sprite.SetY(Window.GetHeight() / 2 - logo_image.GetHeight() / 2); +logo.image = Image("logo.png"); +logo.sprite = Sprite(logo.image); +logo.sprite.SetX (Window.GetWidth() / 2 - logo.image.GetWidth() / 2); +logo.sprite.SetY (Window.GetHeight() / 2 - logo.image.GetHeight() / 2); +logo.sprite.SetOpacity (1); -# Initial opacity at 0 for fade-in effect -logo_opacity = 0; -logo_sprite.SetOpacity(logo_opacity); +# Use these to adjust the progress bar timing +global.fake_progress_limit = 0.7; # Target percentage for fake progress (0.0 to 1.0) +global.fake_progress_duration = 15.0; # Duration in seconds to reach limit -# Message Display Setup (for LUKS password, system messages) -message_sprite = Sprite(); -message_sprite.SetY(Window.GetHeight() * 0.7); # Place below logo +# Progress bar animation variables +global.fake_progress = 0.0; +global.real_progress = 0.0; +global.fake_progress_active = 0; # 0 / 1 boolean +global.animation_frame = 0; +global.fake_progress_start_time = 0; # Track when fake progress started +global.password_shown = 0; # Track if password dialog has been shown +global.max_progress = 0.0; # Track the maximum progress reached to prevent backwards movement -fun display_message_callback(text) { - if (!text) return; - my_image = Image.Text(text, 1, 1, 1); # White text - message_sprite.SetImage(my_image); - message_sprite.SetX(Window.GetWidth() / 2 - my_image.GetWidth() / 2); - message_sprite.SetOpacity(logo_opacity); # Sync message opacity with logo -} - -# Password Entry Handling -fun password_callback(text, bullet_count) { - bullets = ""; - for (i = 0; i < bullet_count; i++) bullets += "*"; - display_message_callback(bullets); -} - -# Plymouth State Hooks -Plymouth.SetDisplayPasswordFunction(password_callback); -Plymouth.SetDisplayNormalFunction(fun() { message_sprite.SetImage(NULL); }); -Plymouth.SetDisplayMessageFunction(display_message_callback); - -# Animation Logic -fun refresh_callback () { - # Smooth fade-in - if (logo_opacity < 1) { - logo_opacity += 0.02; # Adjust speed here - if (logo_opacity > 1) logo_opacity = 1; - logo_sprite.SetOpacity(logo_opacity); - message_sprite.SetOpacity(logo_opacity); +fun refresh_callback () + { + global.animation_frame++; + + # Animate fake progress to limit over time with easing + if (global.fake_progress_active == 1) + { + # Calculate elapsed time since start + elapsed_time = global.animation_frame / 50.0; # Convert frames to seconds (50 FPS) + + # Calculate linear progress ratio (0 to 1) based on time + time_ratio = elapsed_time / global.fake_progress_duration; + if (time_ratio > 1.0) + time_ratio = 1.0; + + # Apply easing curve: ease-out quadratic + # Formula: 1 - (1 - x)^2 + eased_ratio = 1 - ((1 - time_ratio) * (1 - time_ratio)); + + # Calculate fake progress based on eased ratio + global.fake_progress = eased_ratio * global.fake_progress_limit; + + # Update progress bar with fake progress + update_progress_bar(global.fake_progress); + } } -} + Plymouth.SetRefreshFunction (refresh_callback); + +#----------------------------------------- Helper Functions -------------------------------- + +fun update_progress_bar(progress) + { + # Only update if progress is moving forward + if (progress > global.max_progress) + { + global.max_progress = progress; + width = Math.Int(progress_bar.original_image.GetWidth() * progress); + if (width < 1) width = 1; # Ensure minimum width of 1 pixel + + progress_bar.image = progress_bar.original_image.Scale(width, progress_bar.original_image.GetHeight()); + progress_bar.sprite.SetImage(progress_bar.image); + } + } + +fun show_progress_bar() + { + progress_box.sprite.SetOpacity(1); + progress_bar.sprite.SetOpacity(1); + } + +fun hide_progress_bar() + { + progress_box.sprite.SetOpacity(0); + progress_bar.sprite.SetOpacity(0); + } + +fun show_password_dialog() + { + lock.sprite.SetOpacity(1); + entry.sprite.SetOpacity(1); + } + +fun hide_password_dialog() + { + lock.sprite.SetOpacity(0); + entry.sprite.SetOpacity(0); + for (index = 0; bullet.sprites[index]; index++) + bullet.sprites[index].SetOpacity(0); + } + +fun start_fake_progress() + { + # Don't reset if we already have progress + if (global.max_progress == 0.0) + { + global.fake_progress = 0.0; + global.real_progress = 0.0; + update_progress_bar(0.0); + } + global.fake_progress_active = 1; + global.animation_frame = 0; + } + +fun stop_fake_progress() + { + global.fake_progress_active = 0; + } + +#----------------------------------------- Dialogue -------------------------------- + +lock.image = Image("lock.png"); +entry.image = Image("entry.png"); +bullet.image = Image("bullet.png"); + +entry.sprite = Sprite(entry.image); +entry.x = Window.GetWidth()/2 - entry.image.GetWidth() / 2; +entry.y = logo.sprite.GetY() + logo.image.GetHeight() + 40; +entry.sprite.SetPosition(entry.x, entry.y, 10001); +entry.sprite.SetOpacity(0); + +# Scale lock to be slightly shorter than entry field height +# Original lock is 84x96, entry height determines scale +lock_height = entry.image.GetHeight() * 0.8; +lock_scale = lock_height / 96; +lock_width = 84 * lock_scale; + +scaled_lock = lock.image.Scale(lock_width, lock_height); +lock.sprite = Sprite(scaled_lock); +lock.x = entry.x - lock_width - 15; +lock.y = entry.y + entry.image.GetHeight()/2 - lock_height/2; +lock.sprite.SetPosition(lock.x, lock.y, 10001); +lock.sprite.SetOpacity(0); + +# Bullet array +bullet.sprites = []; + +fun display_normal_callback () + { + hide_password_dialog(); + + # Get current mode + mode = Plymouth.GetMode(); + + # Only show progress bar for boot and resume modes + if ((mode == "boot" || mode == "resume") && global.password_shown == 1) + { + show_progress_bar(); + start_fake_progress(); + } + } + +fun display_password_callback (prompt, bullets) + { + global.password_shown = 1; # Mark that password dialog has been shown + + # Reset progress when password dialog appears + stop_fake_progress(); + hide_progress_bar(); + global.max_progress = 0.0; + global.fake_progress = 0.0; + global.real_progress = 0.0; + show_password_dialog(); + + # Clear all bullets first + for (index = 0; bullet.sprites[index]; index++) + bullet.sprites[index].SetOpacity(0); + + # Create and show bullets for current password (max 21) + max_bullets = 21; + bullets_to_show = bullets; + if (bullets_to_show > max_bullets) + bullets_to_show = max_bullets; + + for (index = 0; index < bullets_to_show; index++) + { + if (!bullet.sprites[index]) + { + # Scale bullet image to 7x7 pixels + scaled_bullet = bullet.image.Scale(7, 7); + bullet.sprites[index] = Sprite(scaled_bullet); + bullet.x = entry.x + 20 + index * (7 + 5); + bullet.y = entry.y + entry.image.GetHeight() / 2 - 3.5; + bullet.sprites[index].SetPosition(bullet.x, bullet.y, 10002); + } + bullet.sprites[index].SetOpacity(1); + } + } + +Plymouth.SetDisplayNormalFunction(display_normal_callback); +Plymouth.SetDisplayPasswordFunction(display_password_callback); + +#----------------------------------------- Progress Bar -------------------------------- + +progress_box.image = Image("progress_box.png"); +progress_box.sprite = Sprite(progress_box.image); + +progress_box.x = Window.GetWidth() / 2 - progress_box.image.GetWidth() / 2; +progress_box.y = entry.y + entry.image.GetHeight() / 2 - progress_box.image.GetHeight() / 2; +progress_box.sprite.SetPosition(progress_box.x, progress_box.y, 0); +progress_box.sprite.SetOpacity(0); + +progress_bar.original_image = Image("progress_bar.png"); +progress_bar.sprite = Sprite(); +progress_bar.image = progress_bar.original_image.Scale(1, progress_bar.original_image.GetHeight()); + +progress_bar.x = Window.GetWidth() / 2 - progress_bar.original_image.GetWidth() / 2; +progress_bar.y = progress_box.y + (progress_box.image.GetHeight() - progress_bar.original_image.GetHeight()) / 2; +progress_bar.sprite.SetPosition(progress_bar.x, progress_bar.y, 1); +progress_bar.sprite.SetOpacity(0); + +fun progress_callback (duration, progress) + { + global.real_progress = progress; + + # If real progress is above limit, stop fake progress and use real progress + if (progress > global.fake_progress_limit) + { + stop_fake_progress(); + update_progress_bar(progress); + } + } + +Plymouth.SetBootProgressFunction(progress_callback); + +#----------------------------------------- Quit -------------------------------- + +fun quit_callback () +{ + logo.sprite.SetOpacity (1); +} + +Plymouth.SetQuitFunction(quit_callback); + +#----------------------------------------- Message -------------------------------- + +message_sprite = Sprite(); +message_sprite.SetPosition(10, 10, 10000); + +fun display_message_callback (text) +{ + my_image = Image.Text(text, 1, 1, 1); + message_sprite.SetImage(my_image); +} + +fun hide_message_callback (text) +{ + message_sprite.SetOpacity(0); +} + +Plymouth.SetDisplayMessageFunction (display_message_callback); +Plymouth.SetHideMessageFunction (hide_message_callback); diff --git a/assets/plymouth/progress_bar.png b/assets/plymouth/progress_bar.png new file mode 100644 index 0000000000000000000000000000000000000000..dbb9fd74fc853d8a79ff072f5070cc660ea11897 GIT binary patch literal 314 zcmeAS@N?(olHy`uVBq!ia0y~yVAKJ!xfq#&q>16jl|V`%*(1o8fuTx`fuW&=f#DZW zsNn?zL#Y7+!>a@a2CEqi4B`cIb_Lo1CD;OdLR?pFy!QY9|E)n1Qa};LByV>Y#{W#Z z_kbMs5>H=O_LuA|;<}1kzlXd83h{cnIEF}EPEL?uW#(sKY-3>5a*dk16jl|V`%*(1o8fuTx`fuW&=f#DZW zsNn?zL#Y7+!>a@a2CEqi4B`cIb_Lo1CD;OdLR>ZVoc{m+e`?yP4?q#dByV>Y#{W#Z z_kbMs5>H=O_LuA|;=1xB(>$GkLcE?Xjv*44lM^IZnfVzQ+ZY(NT;t{dB~(jXBT7;d zOH!?pi&B9UgOP!esjh*!u7OF2k+GGDsg<#zwt<0_fx+)>UOXroa`RI%(<*Um=z9HW l15kqo+=i0O+|=Td#M}bhdhY(aoDbB);OXk;vd$@?2>|VqQP%(f literal 0 HcmV?d00001 diff --git a/assets/sddm/nomarchy/Main.qml b/assets/sddm/nomarchy/Main.qml new file mode 100644 index 0000000..d074913 --- /dev/null +++ b/assets/sddm/nomarchy/Main.qml @@ -0,0 +1,99 @@ +import QtQuick 2.0 +import SddmComponents 2.0 + +Rectangle { + id: root + width: 640 + height: 480 + color: "#000000" + + property string currentUser: userModel.lastUser + property int sessionIndex: { + for (var i = 0; i < sessionModel.rowCount(); i++) { + var name = (sessionModel.data(sessionModel.index(i, 0), Qt.DisplayRole) || "").toString() + if (name.indexOf("uwsm") !== -1) + return i + } + return sessionModel.lastIndex + } + + Connections { + target: sddm + function onLoginFailed() { + errorMessage.text = "Login failed" + password.text = "" + password.focus = true + } + function onLoginSucceeded() { + errorMessage.text = "" + } + } + + Column { + anchors.centerIn: parent + spacing: root.height * 0.04 + width: parent.width + + Image { + source: "logo.svg" + width: root.width * 0.35 + height: Math.round(width * sourceSize.height / sourceSize.width) + fillMode: Image.PreserveAspectFit + anchors.horizontalCenter: parent.horizontalCenter + } + + Row { + anchors.horizontalCenter: parent.horizontalCenter + spacing: root.width * 0.007 + + Text { + text: "\uf023" + color: "#ffffff" + font.family: "JetBrainsMono Nerd Font" + font.pixelSize: root.height * 0.025 + anchors.verticalCenter: parent.verticalCenter + } + + Rectangle { + width: root.width * 0.17 + height: root.height * 0.04 + color: "#000000" + border.color: "#ffffff" + border.width: 1 + clip: true + + TextInput { + id: password + anchors.fill: parent + anchors.margins: root.height * 0.008 + verticalAlignment: TextInput.AlignVCenter + echoMode: TextInput.Password + font.family: "JetBrainsMono Nerd Font" + font.pixelSize: root.height * 0.02 + font.letterSpacing: root.height * 0.004 + passwordCharacter: "\u2022" + color: "#ffffff" + focus: true + + Keys.onPressed: { + if (event.key === Qt.Key_Return || event.key === Qt.Key_Enter) { + sddm.login(root.currentUser, password.text, root.sessionIndex) + event.accepted = true + } + } + } + } + } + + Text { + id: errorMessage + text: "" + color: "#f7768e" + font.family: "JetBrainsMono Nerd Font" + font.pixelSize: root.height * 0.018 + anchors.horizontalCenter: parent.horizontalCenter + } + } + + Component.onCompleted: password.forceActiveFocus() +} diff --git a/assets/sddm/nomarchy/logo.svg b/assets/sddm/nomarchy/logo.svg new file mode 100644 index 0000000..b060ba0 --- /dev/null +++ b/assets/sddm/nomarchy/logo.svg @@ -0,0 +1,64 @@ + + + + diff --git a/assets/sddm/nomarchy/metadata.desktop b/assets/sddm/nomarchy/metadata.desktop new file mode 100644 index 0000000..c289221 --- /dev/null +++ b/assets/sddm/nomarchy/metadata.desktop @@ -0,0 +1,6 @@ +[SddmGreeterTheme] +Name=Nomarchy +Description=Minimal terminal-style login theme matching the Limine bootloader aesthetic +Author=Nomarchy +Type=sddm-theme +Version=1.0 diff --git a/assets/sddm/nomarchy/theme.conf b/assets/sddm/nomarchy/theme.conf new file mode 100644 index 0000000..e94cbbd --- /dev/null +++ b/assets/sddm/nomarchy/theme.conf @@ -0,0 +1 @@ +[General] diff --git a/assets/themed/alacritty.toml.tpl b/assets/themed/alacritty.toml.tpl new file mode 100644 index 0000000..ff8bc8d --- /dev/null +++ b/assets/themed/alacritty.toml.tpl @@ -0,0 +1,47 @@ +[colors.primary] +background = "{{ background }}" +foreground = "{{ foreground }}" + +[colors.cursor] +text = "{{ background }}" +cursor = "{{ cursor }}" + +[colors.vi_mode_cursor] +text = "{{ background }}" +cursor = "{{ cursor }}" + +[colors.search.matches] +foreground = "{{ background }}" +background = "{{ color3 }}" + +[colors.search.focused_match] +foreground = "{{ background }}" +background = "{{ color1 }}" + +[colors.footer_bar] +foreground = "{{ background }}" +background = "{{ foreground }}" + +[colors.selection] +text = "{{ selection_foreground }}" +background = "{{ selection_background }}" + +[colors.normal] +black = "{{ color0 }}" +red = "{{ color1 }}" +green = "{{ color2 }}" +yellow = "{{ color3 }}" +blue = "{{ color4 }}" +magenta = "{{ color5 }}" +cyan = "{{ color6 }}" +white = "{{ color7 }}" + +[colors.bright] +black = "{{ color8 }}" +red = "{{ color9 }}" +green = "{{ color10 }}" +yellow = "{{ color11 }}" +blue = "{{ color12 }}" +magenta = "{{ color13 }}" +cyan = "{{ color14 }}" +white = "{{ color15 }}" diff --git a/assets/themed/btop.theme.tpl b/assets/themed/btop.theme.tpl new file mode 100644 index 0000000..7b1b299 --- /dev/null +++ b/assets/themed/btop.theme.tpl @@ -0,0 +1,83 @@ +# Main background, empty for terminal default, need to be empty if you want transparent background +theme[main_bg]="{{ background }}" + +# Main text color +theme[main_fg]="{{ foreground }}" + +# Title color for boxes +theme[title]="{{ foreground }}" + +# Highlight color for keyboard shortcuts +theme[hi_fg]="{{ accent }}" + +# Background color of selected item in processes box +theme[selected_bg]="{{ color8 }}" + +# Foreground color of selected item in processes box +theme[selected_fg]="{{ accent }}" + +# Color of inactive/disabled text +theme[inactive_fg]="{{ color8 }}" + +# Color of text appearing on top of graphs, i.e uptime and current network graph scaling +theme[graph_text]="{{ foreground }}" + +# Background color of the percentage meters +theme[meter_bg]="{{ color8 }}" + +# Misc colors for processes box including mini cpu graphs, details memory graph and details status text +theme[proc_misc]="{{ foreground }}" + +# CPU, Memory, Network, Proc box outline colors +theme[cpu_box]="{{ color5 }}" +theme[mem_box]="{{ color2 }}" +theme[net_box]="{{ color1 }}" +theme[proc_box]="{{ accent }}" + +# Box divider line and small boxes line color +theme[div_line]="{{ color8 }}" + +# Temperature graph color (Green -> Yellow -> Red) +theme[temp_start]="{{ color2 }}" +theme[temp_mid]="{{ color3 }}" +theme[temp_end]="{{ color1 }}" + +# CPU graph colors (Teal -> Lavender) +theme[cpu_start]="{{ color6 }}" +theme[cpu_mid]="{{ color4 }}" +theme[cpu_end]="{{ color5 }}" + +# Mem/Disk free meter (Mauve -> Lavender -> Blue) +theme[free_start]="{{ color5 }}" +theme[free_mid]="{{ color4 }}" +theme[free_end]="{{ color6 }}" + +# Mem/Disk cached meter (Sapphire -> Lavender) +theme[cached_start]="{{ color4 }}" +theme[cached_mid]="{{ color6 }}" +theme[cached_end]="{{ color5 }}" + +# Mem/Disk available meter (Peach -> Red) +theme[available_start]="{{ color3 }}" +theme[available_mid]="{{ color1 }}" +theme[available_end]="{{ color1 }}" + +# Mem/Disk used meter (Green -> Sky) +theme[used_start]="{{ color2 }}" +theme[used_mid]="{{ color6 }}" +theme[used_end]="{{ color4 }}" + +# Download graph colors (Peach -> Red) +theme[download_start]="{{ color3 }}" +theme[download_mid]="{{ color1 }}" +theme[download_end]="{{ color1 }}" + +# Upload graph colors (Green -> Sky) +theme[upload_start]="{{ color2 }}" +theme[upload_mid]="{{ color6 }}" +theme[upload_end]="{{ color4 }}" + +# Process box color gradient for threads, mem and cpu usage (Sapphire -> Mauve) +theme[process_start]="{{ color6 }}" +theme[process_mid]="{{ color4 }}" +theme[process_end]="{{ color5 }}" diff --git a/assets/themed/chromium.theme.tpl b/assets/themed/chromium.theme.tpl new file mode 100644 index 0000000..84059b2 --- /dev/null +++ b/assets/themed/chromium.theme.tpl @@ -0,0 +1 @@ +{{ background_rgb }} diff --git a/assets/themed/ghostty.conf.tpl b/assets/themed/ghostty.conf.tpl new file mode 100644 index 0000000..bafc649 --- /dev/null +++ b/assets/themed/ghostty.conf.tpl @@ -0,0 +1,22 @@ +background = {{ background }} +foreground = {{ foreground }} +cursor-color = {{ cursor }} +selection-background = {{ selection_background }} +selection-foreground = {{ selection_foreground }} + +palette = 0={{ color0 }} +palette = 1={{ color1 }} +palette = 2={{ color2 }} +palette = 3={{ color3 }} +palette = 4={{ color4 }} +palette = 5={{ color5 }} +palette = 6={{ color6 }} +palette = 7={{ color7 }} +palette = 8={{ color8 }} +palette = 9={{ color9 }} +palette = 10={{ color10 }} +palette = 11={{ color11 }} +palette = 12={{ color12 }} +palette = 13={{ color13 }} +palette = 14={{ color14 }} +palette = 15={{ color15 }} diff --git a/assets/themed/hyprland-preview-share-picker.css.tpl b/assets/themed/hyprland-preview-share-picker.css.tpl new file mode 100644 index 0000000..07e5e4e --- /dev/null +++ b/assets/themed/hyprland-preview-share-picker.css.tpl @@ -0,0 +1,94 @@ +@define-color foreground {{ foreground }}; +@define-color background {{ background }}; +@define-color accent {{ accent }}; +@define-color muted {{ color8 }}; +@define-color card_bg {{ color0 }}; +@define-color text_dark {{ background }}; +@define-color accent_hover {{ color12 }}; +@define-color selected_tab {{ accent }}; +@define-color text {{ foreground }}; + +* { + all: unset; + font-family: JetBrains Mono NF; + color: @foreground; + font-weight: bold; + font-size: 16px; +} + +.window { + background: alpha(@background, 0.95); + border: solid 2px @accent; + margin: 4px; + padding: 18px; +} + +tabs { + padding: 0.5rem 1rem; +} + +tabs > tab { + margin-right: 1rem; +} + +.tab-label { + color: @text; + transition: all 0.2s ease; +} + +tabs > tab:checked > .tab-label, tabs > tab:active > .tab-label { + text-decoration: underline currentColor; + color: @selected_tab; +} + +tabs > tab:focus > .tab-label { + color: @foreground; +} + +.page { + padding: 1rem; +} + +.image-label { + font-size: 12px; + padding: 0.25rem; +} + +flowboxchild > .card, button > .card { + transition: all 0.2s ease; + border: solid 2px transparent; + border-color: @background; + border-radius: 5px; + background-color: @card_bg; + padding: 5px; +} + +flowboxchild:hover > .card, button:hover > .card, flowboxchild:active > .card, flowboxchild:selected > .card, button:active > .card, button:selected > .card, button:focus > .card { + border: solid 2px @accent; +} + +.image { + border-radius: 5px; +} + +.region-button { + padding: 0.5rem 1rem; + border-radius: 5px; + background-color: @accent; + color: @text_dark; + transition: all 0.2s ease; +} + +.region-button > label { + color: @text_dark; +} + +.region-button:not(:disabled):hover, .region-button:not(:disabled):focus { + background-color: @accent_hover; + color: @text_dark; +} + +.region-button:disabled { + background-color: @muted; + color: @background; +} diff --git a/assets/themed/hyprland.conf.tpl b/assets/themed/hyprland.conf.tpl new file mode 100644 index 0000000..e4dbf3c --- /dev/null +++ b/assets/themed/hyprland.conf.tpl @@ -0,0 +1,9 @@ +$activeBorderColor = rgb({{ accent_strip }}) + +general { + col.active_border = $activeBorderColor +} + +group { + col.border_active = $activeBorderColor +} diff --git a/assets/themed/hyprlock.conf.tpl b/assets/themed/hyprlock.conf.tpl new file mode 100644 index 0000000..1b4cac3 --- /dev/null +++ b/assets/themed/hyprlock.conf.tpl @@ -0,0 +1,5 @@ +$color = rgba({{ background_rgb }}, 1.0) +$inner_color = rgba({{ background_rgb }}, 0.8) +$outer_color = rgba({{ foreground_rgb }}, 1.0) +$font_color = rgba({{ foreground_rgb }}, 1.0) +$check_color = rgba({{ accent_rgb }}, 1.0) diff --git a/assets/themed/keyboard.rgb.tpl b/assets/themed/keyboard.rgb.tpl new file mode 100644 index 0000000..bc9f35a --- /dev/null +++ b/assets/themed/keyboard.rgb.tpl @@ -0,0 +1 @@ +{{ accent }} diff --git a/assets/themed/kitty.conf.tpl b/assets/themed/kitty.conf.tpl new file mode 100644 index 0000000..e74a5bb --- /dev/null +++ b/assets/themed/kitty.conf.tpl @@ -0,0 +1,27 @@ +foreground {{ foreground }} +background {{ background }} +selection_foreground {{ selection_foreground }} +selection_background {{ selection_background }} + +cursor {{ cursor }} +cursor_text_color {{ background }} + +active_border_color {{ accent }} +active_tab_background {{ accent }} + +color0 {{ color0 }} +color1 {{ color1 }} +color2 {{ color2 }} +color3 {{ color3 }} +color4 {{ color4 }} +color5 {{ color5 }} +color6 {{ color6 }} +color7 {{ color7 }} +color8 {{ color8 }} +color9 {{ color9 }} +color10 {{ color10 }} +color11 {{ color11 }} +color12 {{ color12 }} +color13 {{ color13 }} +color14 {{ color14 }} +color15 {{ color15 }} diff --git a/assets/themed/mako.ini.tpl b/assets/themed/mako.ini.tpl new file mode 100644 index 0000000..cdccf73 --- /dev/null +++ b/assets/themed/mako.ini.tpl @@ -0,0 +1,5 @@ +include=~/.config/nomarchy/default/mako/core.ini + +text-color={{ foreground }} +border-color={{ accent }} +background-color={{ background }} diff --git a/assets/themed/obsidian.css.tpl b/assets/themed/obsidian.css.tpl new file mode 100644 index 0000000..7645a50 --- /dev/null +++ b/assets/themed/obsidian.css.tpl @@ -0,0 +1,99 @@ +/* Nomarchy Theme for Obsidian */ + +.theme-dark, .theme-light { + /* Core colors */ + --background-primary: {{ background }}; + --background-primary-alt: {{ background }}; + --background-secondary: {{ background }}; + --background-secondary-alt: {{ background }}; + --text-normal: {{ foreground }}; + + /* Selection colors */ + --text-selection: {{ selection_background }}; + + /* Border color */ + --background-modifier-border: {{ color8 }}; + + /* Semantic heading colors */ + --text-title-h1: {{ color1 }}; + --text-title-h2: {{ color2 }}; + --text-title-h3: {{ color3 }}; + --text-title-h4: {{ color4 }}; + --text-title-h5: {{ color5 }}; + --text-title-h6: {{ color5 }}; + + /* Links and accents */ + --text-link: {{ color4 }}; + --text-accent: {{ accent }}; + --text-accent-hover: {{ accent }}; + --interactive-accent: {{ accent }}; + --interactive-accent-hover: {{ accent }}; + + /* Muted text */ + --text-muted: color-mix(in srgb, {{ foreground }} 70%, transparent); + --text-faint: color-mix(in srgb, {{ foreground }} 55%, transparent); + + /* Code */ + --code-normal: {{ color6 }}; + + /* Errors and success */ + --text-error: {{ color1 }}; + --text-error-hover: {{ color1 }}; + --text-success: {{ color2 }}; + + /* Tags */ + --tag-color: {{ color6 }}; + --tag-background: {{ color8 }}; + + /* Graph */ + --graph-line: {{ color8 }}; + --graph-node: {{ accent }}; + --graph-node-focused: {{ color4 }}; + --graph-node-tag: {{ color6 }}; + --graph-node-attachment: {{ color2 }}; +} + +/* Headers */ +.cm-header-1, .markdown-rendered h1 { color: var(--text-title-h1); } +.cm-header-2, .markdown-rendered h2 { color: var(--text-title-h2); } +.cm-header-3, .markdown-rendered h3 { color: var(--text-title-h3); } +.cm-header-4, .markdown-rendered h4 { color: var(--text-title-h4); } +.cm-header-5, .markdown-rendered h5 { color: var(--text-title-h5); } +.cm-header-6, .markdown-rendered h6 { color: var(--text-title-h6); } + +/* Code blocks */ +.markdown-rendered code { + color: {{ color6 }}; +} + +/* Syntax highlighting */ +.cm-s-obsidian span.cm-keyword { color: {{ color1 }}; } +.cm-s-obsidian span.cm-string { color: {{ color2 }}; } +.cm-s-obsidian span.cm-number { color: {{ color3 }}; } +.cm-s-obsidian span.cm-comment { color: {{ color8 }}; } +.cm-s-obsidian span.cm-operator { color: {{ color4 }}; } +.cm-s-obsidian span.cm-def { color: {{ color4 }}; } + +/* Links */ +.markdown-rendered a { + color: var(--text-link); +} + +/* Blockquotes */ +.markdown-rendered blockquote { + border-left-color: {{ accent }}; +} + +/* Active elements */ +.workspace-leaf.mod-active .workspace-leaf-header-title { + color: var(--interactive-accent); +} + +.nav-file-title.is-active { + color: var(--interactive-accent); +} + +/* Search results */ +.search-result-file-title { + color: var(--interactive-accent); +} diff --git a/assets/themed/swayosd.css.tpl b/assets/themed/swayosd.css.tpl new file mode 100644 index 0000000..e06402c --- /dev/null +++ b/assets/themed/swayosd.css.tpl @@ -0,0 +1,5 @@ +@define-color background-color {{ background }}; +@define-color border-color {{ foreground }}; +@define-color label {{ foreground }}; +@define-color image {{ foreground }}; +@define-color progress {{ accent }}; diff --git a/assets/themed/walker.css.tpl b/assets/themed/walker.css.tpl new file mode 100644 index 0000000..123ca92 --- /dev/null +++ b/assets/themed/walker.css.tpl @@ -0,0 +1,6 @@ +@define-color selected-text {{ accent }}; +@define-color text {{ foreground }}; +@define-color base {{ background }}; +@define-color border {{ foreground }}; +@define-color foreground {{ foreground }}; +@define-color background {{ background }}; diff --git a/assets/themed/waybar.css.tpl b/assets/themed/waybar.css.tpl new file mode 100644 index 0000000..d876a92 --- /dev/null +++ b/assets/themed/waybar.css.tpl @@ -0,0 +1,2 @@ +@define-color foreground {{ foreground }}; +@define-color background {{ background }}; diff --git a/themes/catppuccin-latte/backgrounds/1-color-fade.png b/assets/themes/catppuccin-latte/backgrounds/1-color-fade.png similarity index 100% rename from themes/catppuccin-latte/backgrounds/1-color-fade.png rename to assets/themes/catppuccin-latte/backgrounds/1-color-fade.png diff --git a/themes/catppuccin-latte/btop.theme b/assets/themes/catppuccin-latte/btop.theme similarity index 100% rename from themes/catppuccin-latte/btop.theme rename to assets/themes/catppuccin-latte/btop.theme diff --git a/themes/catppuccin-latte/colors.toml b/assets/themes/catppuccin-latte/colors.toml similarity index 100% rename from themes/catppuccin-latte/colors.toml rename to assets/themes/catppuccin-latte/colors.toml diff --git a/themes/catppuccin-latte/icons.theme b/assets/themes/catppuccin-latte/icons.theme similarity index 100% rename from themes/catppuccin-latte/icons.theme rename to assets/themes/catppuccin-latte/icons.theme diff --git a/themes/catppuccin-latte/light.mode b/assets/themes/catppuccin-latte/light.mode similarity index 100% rename from themes/catppuccin-latte/light.mode rename to assets/themes/catppuccin-latte/light.mode diff --git a/themes/catppuccin-latte/neovim.lua b/assets/themes/catppuccin-latte/neovim.lua similarity index 100% rename from themes/catppuccin-latte/neovim.lua rename to assets/themes/catppuccin-latte/neovim.lua diff --git a/themes/catppuccin-latte/preview.png b/assets/themes/catppuccin-latte/preview.png similarity index 100% rename from themes/catppuccin-latte/preview.png rename to assets/themes/catppuccin-latte/preview.png diff --git a/themes/catppuccin-latte/vscode.json b/assets/themes/catppuccin-latte/vscode.json similarity index 100% rename from themes/catppuccin-latte/vscode.json rename to assets/themes/catppuccin-latte/vscode.json diff --git a/themes/catppuccin/backgrounds/1-totoro.png b/assets/themes/catppuccin/backgrounds/1-totoro.png similarity index 100% rename from themes/catppuccin/backgrounds/1-totoro.png rename to assets/themes/catppuccin/backgrounds/1-totoro.png diff --git a/themes/catppuccin/backgrounds/2-waves.png b/assets/themes/catppuccin/backgrounds/2-waves.png similarity index 100% rename from themes/catppuccin/backgrounds/2-waves.png rename to assets/themes/catppuccin/backgrounds/2-waves.png diff --git a/themes/catppuccin/backgrounds/3-blue-eye.png b/assets/themes/catppuccin/backgrounds/3-blue-eye.png similarity index 100% rename from themes/catppuccin/backgrounds/3-blue-eye.png rename to assets/themes/catppuccin/backgrounds/3-blue-eye.png diff --git a/themes/catppuccin/btop.theme b/assets/themes/catppuccin/btop.theme similarity index 100% rename from themes/catppuccin/btop.theme rename to assets/themes/catppuccin/btop.theme diff --git a/themes/catppuccin/colors.toml b/assets/themes/catppuccin/colors.toml similarity index 100% rename from themes/catppuccin/colors.toml rename to assets/themes/catppuccin/colors.toml diff --git a/themes/catppuccin/icons.theme b/assets/themes/catppuccin/icons.theme similarity index 100% rename from themes/catppuccin/icons.theme rename to assets/themes/catppuccin/icons.theme diff --git a/themes/catppuccin/neovim.lua b/assets/themes/catppuccin/neovim.lua similarity index 100% rename from themes/catppuccin/neovim.lua rename to assets/themes/catppuccin/neovim.lua diff --git a/themes/catppuccin/preview.png b/assets/themes/catppuccin/preview.png similarity index 100% rename from themes/catppuccin/preview.png rename to assets/themes/catppuccin/preview.png diff --git a/themes/catppuccin/vscode.json b/assets/themes/catppuccin/vscode.json similarity index 100% rename from themes/catppuccin/vscode.json rename to assets/themes/catppuccin/vscode.json diff --git a/themes/catppuccin/waybar.css b/assets/themes/catppuccin/waybar.css similarity index 100% rename from themes/catppuccin/waybar.css rename to assets/themes/catppuccin/waybar.css diff --git a/themes/ethereal/backgrounds/1-cosmic.jpg b/assets/themes/ethereal/backgrounds/1-cosmic.jpg similarity index 100% rename from themes/ethereal/backgrounds/1-cosmic.jpg rename to assets/themes/ethereal/backgrounds/1-cosmic.jpg diff --git a/themes/ethereal/backgrounds/2-meadow.jpg b/assets/themes/ethereal/backgrounds/2-meadow.jpg similarity index 100% rename from themes/ethereal/backgrounds/2-meadow.jpg rename to assets/themes/ethereal/backgrounds/2-meadow.jpg diff --git a/themes/ethereal/btop.theme b/assets/themes/ethereal/btop.theme similarity index 100% rename from themes/ethereal/btop.theme rename to assets/themes/ethereal/btop.theme diff --git a/themes/ethereal/colors.toml b/assets/themes/ethereal/colors.toml similarity index 100% rename from themes/ethereal/colors.toml rename to assets/themes/ethereal/colors.toml diff --git a/themes/ethereal/icons.theme b/assets/themes/ethereal/icons.theme similarity index 100% rename from themes/ethereal/icons.theme rename to assets/themes/ethereal/icons.theme diff --git a/themes/ethereal/neovim.lua b/assets/themes/ethereal/neovim.lua similarity index 100% rename from themes/ethereal/neovim.lua rename to assets/themes/ethereal/neovim.lua diff --git a/themes/ethereal/preview.png b/assets/themes/ethereal/preview.png similarity index 100% rename from themes/ethereal/preview.png rename to assets/themes/ethereal/preview.png diff --git a/themes/ethereal/vscode.json b/assets/themes/ethereal/vscode.json similarity index 100% rename from themes/ethereal/vscode.json rename to assets/themes/ethereal/vscode.json diff --git a/themes/everforest/backgrounds/1-tree-tops.jpg b/assets/themes/everforest/backgrounds/1-tree-tops.jpg similarity index 100% rename from themes/everforest/backgrounds/1-tree-tops.jpg rename to assets/themes/everforest/backgrounds/1-tree-tops.jpg diff --git a/themes/everforest/btop.theme b/assets/themes/everforest/btop.theme similarity index 100% rename from themes/everforest/btop.theme rename to assets/themes/everforest/btop.theme diff --git a/themes/everforest/colors.toml b/assets/themes/everforest/colors.toml similarity index 100% rename from themes/everforest/colors.toml rename to assets/themes/everforest/colors.toml diff --git a/themes/everforest/icons.theme b/assets/themes/everforest/icons.theme similarity index 100% rename from themes/everforest/icons.theme rename to assets/themes/everforest/icons.theme diff --git a/themes/everforest/neovim.lua b/assets/themes/everforest/neovim.lua similarity index 100% rename from themes/everforest/neovim.lua rename to assets/themes/everforest/neovim.lua diff --git a/themes/everforest/preview.png b/assets/themes/everforest/preview.png similarity index 100% rename from themes/everforest/preview.png rename to assets/themes/everforest/preview.png diff --git a/themes/everforest/vscode.json b/assets/themes/everforest/vscode.json similarity index 100% rename from themes/everforest/vscode.json rename to assets/themes/everforest/vscode.json diff --git a/themes/flexoki-light/backgrounds/1-orb.png b/assets/themes/flexoki-light/backgrounds/1-orb.png similarity index 100% rename from themes/flexoki-light/backgrounds/1-orb.png rename to assets/themes/flexoki-light/backgrounds/1-orb.png diff --git a/themes/flexoki-light/backgrounds/2-nomarchy.png b/assets/themes/flexoki-light/backgrounds/2-nomarchy.png similarity index 100% rename from themes/flexoki-light/backgrounds/2-nomarchy.png rename to assets/themes/flexoki-light/backgrounds/2-nomarchy.png diff --git a/themes/flexoki-light/btop.theme b/assets/themes/flexoki-light/btop.theme similarity index 100% rename from themes/flexoki-light/btop.theme rename to assets/themes/flexoki-light/btop.theme diff --git a/themes/flexoki-light/chromium.theme b/assets/themes/flexoki-light/chromium.theme similarity index 100% rename from themes/flexoki-light/chromium.theme rename to assets/themes/flexoki-light/chromium.theme diff --git a/themes/flexoki-light/colors.toml b/assets/themes/flexoki-light/colors.toml similarity index 100% rename from themes/flexoki-light/colors.toml rename to assets/themes/flexoki-light/colors.toml diff --git a/themes/flexoki-light/icons.theme b/assets/themes/flexoki-light/icons.theme similarity index 100% rename from themes/flexoki-light/icons.theme rename to assets/themes/flexoki-light/icons.theme diff --git a/themes/flexoki-light/light.mode b/assets/themes/flexoki-light/light.mode similarity index 100% rename from themes/flexoki-light/light.mode rename to assets/themes/flexoki-light/light.mode diff --git a/themes/flexoki-light/neovim.lua b/assets/themes/flexoki-light/neovim.lua similarity index 100% rename from themes/flexoki-light/neovim.lua rename to assets/themes/flexoki-light/neovim.lua diff --git a/themes/flexoki-light/preview.png b/assets/themes/flexoki-light/preview.png similarity index 100% rename from themes/flexoki-light/preview.png rename to assets/themes/flexoki-light/preview.png diff --git a/themes/flexoki-light/vscode.json b/assets/themes/flexoki-light/vscode.json similarity index 100% rename from themes/flexoki-light/vscode.json rename to assets/themes/flexoki-light/vscode.json diff --git a/themes/gruvbox/backgrounds/1-the-backwater.jpg b/assets/themes/gruvbox/backgrounds/1-the-backwater.jpg similarity index 100% rename from themes/gruvbox/backgrounds/1-the-backwater.jpg rename to assets/themes/gruvbox/backgrounds/1-the-backwater.jpg diff --git a/themes/gruvbox/backgrounds/2-flower-basket.jpg b/assets/themes/gruvbox/backgrounds/2-flower-basket.jpg similarity index 100% rename from themes/gruvbox/backgrounds/2-flower-basket.jpg rename to assets/themes/gruvbox/backgrounds/2-flower-basket.jpg diff --git a/themes/gruvbox/backgrounds/3-village-square.jpg b/assets/themes/gruvbox/backgrounds/3-village-square.jpg similarity index 100% rename from themes/gruvbox/backgrounds/3-village-square.jpg rename to assets/themes/gruvbox/backgrounds/3-village-square.jpg diff --git a/themes/gruvbox/backgrounds/4-idyllic-procession.jpg b/assets/themes/gruvbox/backgrounds/4-idyllic-procession.jpg similarity index 100% rename from themes/gruvbox/backgrounds/4-idyllic-procession.jpg rename to assets/themes/gruvbox/backgrounds/4-idyllic-procession.jpg diff --git a/themes/gruvbox/backgrounds/5-leaves.jpg b/assets/themes/gruvbox/backgrounds/5-leaves.jpg similarity index 100% rename from themes/gruvbox/backgrounds/5-leaves.jpg rename to assets/themes/gruvbox/backgrounds/5-leaves.jpg diff --git a/themes/gruvbox/btop.theme b/assets/themes/gruvbox/btop.theme similarity index 100% rename from themes/gruvbox/btop.theme rename to assets/themes/gruvbox/btop.theme diff --git a/themes/gruvbox/colors.toml b/assets/themes/gruvbox/colors.toml similarity index 100% rename from themes/gruvbox/colors.toml rename to assets/themes/gruvbox/colors.toml diff --git a/themes/gruvbox/icons.theme b/assets/themes/gruvbox/icons.theme similarity index 100% rename from themes/gruvbox/icons.theme rename to assets/themes/gruvbox/icons.theme diff --git a/themes/gruvbox/neovim.lua b/assets/themes/gruvbox/neovim.lua similarity index 100% rename from themes/gruvbox/neovim.lua rename to assets/themes/gruvbox/neovim.lua diff --git a/themes/gruvbox/preview.png b/assets/themes/gruvbox/preview.png similarity index 100% rename from themes/gruvbox/preview.png rename to assets/themes/gruvbox/preview.png diff --git a/themes/gruvbox/vscode.json b/assets/themes/gruvbox/vscode.json similarity index 100% rename from themes/gruvbox/vscode.json rename to assets/themes/gruvbox/vscode.json diff --git a/themes/hackerman/backgrounds/1-synth-scape.jpg b/assets/themes/hackerman/backgrounds/1-synth-scape.jpg similarity index 100% rename from themes/hackerman/backgrounds/1-synth-scape.jpg rename to assets/themes/hackerman/backgrounds/1-synth-scape.jpg diff --git a/themes/hackerman/backgrounds/2-geometric.jpg b/assets/themes/hackerman/backgrounds/2-geometric.jpg similarity index 100% rename from themes/hackerman/backgrounds/2-geometric.jpg rename to assets/themes/hackerman/backgrounds/2-geometric.jpg diff --git a/themes/hackerman/btop.theme b/assets/themes/hackerman/btop.theme similarity index 100% rename from themes/hackerman/btop.theme rename to assets/themes/hackerman/btop.theme diff --git a/themes/hackerman/colors.toml b/assets/themes/hackerman/colors.toml similarity index 100% rename from themes/hackerman/colors.toml rename to assets/themes/hackerman/colors.toml diff --git a/themes/hackerman/icons.theme b/assets/themes/hackerman/icons.theme similarity index 100% rename from themes/hackerman/icons.theme rename to assets/themes/hackerman/icons.theme diff --git a/themes/hackerman/neovim.lua b/assets/themes/hackerman/neovim.lua similarity index 100% rename from themes/hackerman/neovim.lua rename to assets/themes/hackerman/neovim.lua diff --git a/themes/hackerman/preview.png b/assets/themes/hackerman/preview.png similarity index 100% rename from themes/hackerman/preview.png rename to assets/themes/hackerman/preview.png diff --git a/themes/hackerman/vscode.json b/assets/themes/hackerman/vscode.json similarity index 100% rename from themes/hackerman/vscode.json rename to assets/themes/hackerman/vscode.json diff --git a/themes/kanagawa/backgrounds/1-kanagawa.jpg b/assets/themes/kanagawa/backgrounds/1-kanagawa.jpg similarity index 100% rename from themes/kanagawa/backgrounds/1-kanagawa.jpg rename to assets/themes/kanagawa/backgrounds/1-kanagawa.jpg diff --git a/themes/kanagawa/btop.theme b/assets/themes/kanagawa/btop.theme similarity index 100% rename from themes/kanagawa/btop.theme rename to assets/themes/kanagawa/btop.theme diff --git a/themes/kanagawa/colors.toml b/assets/themes/kanagawa/colors.toml similarity index 100% rename from themes/kanagawa/colors.toml rename to assets/themes/kanagawa/colors.toml diff --git a/themes/kanagawa/hyprland.conf b/assets/themes/kanagawa/hyprland.conf similarity index 100% rename from themes/kanagawa/hyprland.conf rename to assets/themes/kanagawa/hyprland.conf diff --git a/themes/kanagawa/icons.theme b/assets/themes/kanagawa/icons.theme similarity index 100% rename from themes/kanagawa/icons.theme rename to assets/themes/kanagawa/icons.theme diff --git a/themes/kanagawa/neovim.lua b/assets/themes/kanagawa/neovim.lua similarity index 100% rename from themes/kanagawa/neovim.lua rename to assets/themes/kanagawa/neovim.lua diff --git a/themes/kanagawa/preview.png b/assets/themes/kanagawa/preview.png similarity index 100% rename from themes/kanagawa/preview.png rename to assets/themes/kanagawa/preview.png diff --git a/themes/kanagawa/vscode.json b/assets/themes/kanagawa/vscode.json similarity index 100% rename from themes/kanagawa/vscode.json rename to assets/themes/kanagawa/vscode.json diff --git a/themes/lumon/backgrounds/01-united-in-severance.jpg b/assets/themes/lumon/backgrounds/01-united-in-severance.jpg similarity index 100% rename from themes/lumon/backgrounds/01-united-in-severance.jpg rename to assets/themes/lumon/backgrounds/01-united-in-severance.jpg diff --git a/themes/lumon/backgrounds/02-opinions-equally.jpg b/assets/themes/lumon/backgrounds/02-opinions-equally.jpg similarity index 100% rename from themes/lumon/backgrounds/02-opinions-equally.jpg rename to assets/themes/lumon/backgrounds/02-opinions-equally.jpg diff --git a/themes/lumon/btop.theme b/assets/themes/lumon/btop.theme similarity index 100% rename from themes/lumon/btop.theme rename to assets/themes/lumon/btop.theme diff --git a/themes/lumon/chromium.theme b/assets/themes/lumon/chromium.theme similarity index 100% rename from themes/lumon/chromium.theme rename to assets/themes/lumon/chromium.theme diff --git a/themes/lumon/colors.toml b/assets/themes/lumon/colors.toml similarity index 100% rename from themes/lumon/colors.toml rename to assets/themes/lumon/colors.toml diff --git a/themes/lumon/hyprland.conf b/assets/themes/lumon/hyprland.conf similarity index 100% rename from themes/lumon/hyprland.conf rename to assets/themes/lumon/hyprland.conf diff --git a/themes/lumon/icons.theme b/assets/themes/lumon/icons.theme similarity index 100% rename from themes/lumon/icons.theme rename to assets/themes/lumon/icons.theme diff --git a/themes/lumon/neovim.lua b/assets/themes/lumon/neovim.lua similarity index 100% rename from themes/lumon/neovim.lua rename to assets/themes/lumon/neovim.lua diff --git a/themes/lumon/preview.png b/assets/themes/lumon/preview.png similarity index 100% rename from themes/lumon/preview.png rename to assets/themes/lumon/preview.png diff --git a/themes/lumon/swayosd.css b/assets/themes/lumon/swayosd.css similarity index 100% rename from themes/lumon/swayosd.css rename to assets/themes/lumon/swayosd.css diff --git a/themes/lumon/vscode.json b/assets/themes/lumon/vscode.json similarity index 100% rename from themes/lumon/vscode.json rename to assets/themes/lumon/vscode.json diff --git a/themes/lumon/waybar.css b/assets/themes/lumon/waybar.css similarity index 100% rename from themes/lumon/waybar.css rename to assets/themes/lumon/waybar.css diff --git a/themes/matte-black/backgrounds/0-ship-at-sea.jpg b/assets/themes/matte-black/backgrounds/0-ship-at-sea.jpg similarity index 100% rename from themes/matte-black/backgrounds/0-ship-at-sea.jpg rename to assets/themes/matte-black/backgrounds/0-ship-at-sea.jpg diff --git a/themes/matte-black/backgrounds/1-dark-waters.jpg b/assets/themes/matte-black/backgrounds/1-dark-waters.jpg similarity index 100% rename from themes/matte-black/backgrounds/1-dark-waters.jpg rename to assets/themes/matte-black/backgrounds/1-dark-waters.jpg diff --git a/themes/matte-black/backgrounds/2-dot-hands.jpg b/assets/themes/matte-black/backgrounds/2-dot-hands.jpg similarity index 100% rename from themes/matte-black/backgrounds/2-dot-hands.jpg rename to assets/themes/matte-black/backgrounds/2-dot-hands.jpg diff --git a/themes/matte-black/btop.theme b/assets/themes/matte-black/btop.theme similarity index 100% rename from themes/matte-black/btop.theme rename to assets/themes/matte-black/btop.theme diff --git a/themes/matte-black/colors.toml b/assets/themes/matte-black/colors.toml similarity index 100% rename from themes/matte-black/colors.toml rename to assets/themes/matte-black/colors.toml diff --git a/themes/matte-black/icons.theme b/assets/themes/matte-black/icons.theme similarity index 100% rename from themes/matte-black/icons.theme rename to assets/themes/matte-black/icons.theme diff --git a/themes/matte-black/neovim.lua b/assets/themes/matte-black/neovim.lua similarity index 100% rename from themes/matte-black/neovim.lua rename to assets/themes/matte-black/neovim.lua diff --git a/themes/matte-black/preview.png b/assets/themes/matte-black/preview.png similarity index 100% rename from themes/matte-black/preview.png rename to assets/themes/matte-black/preview.png diff --git a/themes/matte-black/vscode.json b/assets/themes/matte-black/vscode.json similarity index 100% rename from themes/matte-black/vscode.json rename to assets/themes/matte-black/vscode.json diff --git a/themes/miasma/backgrounds/01-nature-of-fear.jpg b/assets/themes/miasma/backgrounds/01-nature-of-fear.jpg similarity index 100% rename from themes/miasma/backgrounds/01-nature-of-fear.jpg rename to assets/themes/miasma/backgrounds/01-nature-of-fear.jpg diff --git a/themes/miasma/backgrounds/02-crowned.jpg b/assets/themes/miasma/backgrounds/02-crowned.jpg similarity index 100% rename from themes/miasma/backgrounds/02-crowned.jpg rename to assets/themes/miasma/backgrounds/02-crowned.jpg diff --git a/themes/miasma/btop.theme b/assets/themes/miasma/btop.theme similarity index 100% rename from themes/miasma/btop.theme rename to assets/themes/miasma/btop.theme diff --git a/themes/miasma/colors.toml b/assets/themes/miasma/colors.toml similarity index 100% rename from themes/miasma/colors.toml rename to assets/themes/miasma/colors.toml diff --git a/themes/miasma/icons.theme b/assets/themes/miasma/icons.theme similarity index 100% rename from themes/miasma/icons.theme rename to assets/themes/miasma/icons.theme diff --git a/themes/miasma/neovim.lua b/assets/themes/miasma/neovim.lua similarity index 100% rename from themes/miasma/neovim.lua rename to assets/themes/miasma/neovim.lua diff --git a/themes/miasma/preview.png b/assets/themes/miasma/preview.png similarity index 100% rename from themes/miasma/preview.png rename to assets/themes/miasma/preview.png diff --git a/themes/miasma/vscode.json b/assets/themes/miasma/vscode.json similarity index 100% rename from themes/miasma/vscode.json rename to assets/themes/miasma/vscode.json diff --git a/themes/nomarchy-palettes.nix b/assets/themes/nomarchy-palettes.nix similarity index 100% rename from themes/nomarchy-palettes.nix rename to assets/themes/nomarchy-palettes.nix diff --git a/themes/nord/backgrounds/0-black-moon.jpg b/assets/themes/nord/backgrounds/0-black-moon.jpg similarity index 100% rename from themes/nord/backgrounds/0-black-moon.jpg rename to assets/themes/nord/backgrounds/0-black-moon.jpg diff --git a/themes/nord/backgrounds/1-city-view.png b/assets/themes/nord/backgrounds/1-city-view.png similarity index 100% rename from themes/nord/backgrounds/1-city-view.png rename to assets/themes/nord/backgrounds/1-city-view.png diff --git a/themes/nord/backgrounds/2-night-hawks.png b/assets/themes/nord/backgrounds/2-night-hawks.png similarity index 100% rename from themes/nord/backgrounds/2-night-hawks.png rename to assets/themes/nord/backgrounds/2-night-hawks.png diff --git a/themes/nord/btop.theme b/assets/themes/nord/btop.theme similarity index 100% rename from themes/nord/btop.theme rename to assets/themes/nord/btop.theme diff --git a/themes/nord/colors.toml b/assets/themes/nord/colors.toml similarity index 100% rename from themes/nord/colors.toml rename to assets/themes/nord/colors.toml diff --git a/themes/nord/icons.theme b/assets/themes/nord/icons.theme similarity index 100% rename from themes/nord/icons.theme rename to assets/themes/nord/icons.theme diff --git a/themes/nord/neovim.lua b/assets/themes/nord/neovim.lua similarity index 100% rename from themes/nord/neovim.lua rename to assets/themes/nord/neovim.lua diff --git a/themes/nord/preview.png b/assets/themes/nord/preview.png similarity index 100% rename from themes/nord/preview.png rename to assets/themes/nord/preview.png diff --git a/themes/nord/vscode.json b/assets/themes/nord/vscode.json similarity index 100% rename from themes/nord/vscode.json rename to assets/themes/nord/vscode.json diff --git a/themes/osaka-jade/backgrounds/1-glowing-city.jpg b/assets/themes/osaka-jade/backgrounds/1-glowing-city.jpg similarity index 100% rename from themes/osaka-jade/backgrounds/1-glowing-city.jpg rename to assets/themes/osaka-jade/backgrounds/1-glowing-city.jpg diff --git a/themes/osaka-jade/backgrounds/2-shaded-entrance.jpg b/assets/themes/osaka-jade/backgrounds/2-shaded-entrance.jpg similarity index 100% rename from themes/osaka-jade/backgrounds/2-shaded-entrance.jpg rename to assets/themes/osaka-jade/backgrounds/2-shaded-entrance.jpg diff --git a/themes/osaka-jade/backgrounds/3-mountain-moon.jpg b/assets/themes/osaka-jade/backgrounds/3-mountain-moon.jpg similarity index 100% rename from themes/osaka-jade/backgrounds/3-mountain-moon.jpg rename to assets/themes/osaka-jade/backgrounds/3-mountain-moon.jpg diff --git a/themes/osaka-jade/btop.theme b/assets/themes/osaka-jade/btop.theme similarity index 100% rename from themes/osaka-jade/btop.theme rename to assets/themes/osaka-jade/btop.theme diff --git a/themes/osaka-jade/colors.toml b/assets/themes/osaka-jade/colors.toml similarity index 100% rename from themes/osaka-jade/colors.toml rename to assets/themes/osaka-jade/colors.toml diff --git a/themes/osaka-jade/icons.theme b/assets/themes/osaka-jade/icons.theme similarity index 100% rename from themes/osaka-jade/icons.theme rename to assets/themes/osaka-jade/icons.theme diff --git a/themes/osaka-jade/neovim.lua b/assets/themes/osaka-jade/neovim.lua similarity index 100% rename from themes/osaka-jade/neovim.lua rename to assets/themes/osaka-jade/neovim.lua diff --git a/themes/osaka-jade/preview.png b/assets/themes/osaka-jade/preview.png similarity index 100% rename from themes/osaka-jade/preview.png rename to assets/themes/osaka-jade/preview.png diff --git a/themes/osaka-jade/vscode.json b/assets/themes/osaka-jade/vscode.json similarity index 100% rename from themes/osaka-jade/vscode.json rename to assets/themes/osaka-jade/vscode.json diff --git a/themes/retro-82/backgrounds/1-in-the-groove.jpg b/assets/themes/retro-82/backgrounds/1-in-the-groove.jpg similarity index 100% rename from themes/retro-82/backgrounds/1-in-the-groove.jpg rename to assets/themes/retro-82/backgrounds/1-in-the-groove.jpg diff --git a/themes/retro-82/backgrounds/2-dusk-guardian.jpg b/assets/themes/retro-82/backgrounds/2-dusk-guardian.jpg similarity index 100% rename from themes/retro-82/backgrounds/2-dusk-guardian.jpg rename to assets/themes/retro-82/backgrounds/2-dusk-guardian.jpg diff --git a/themes/retro-82/backgrounds/3-glassy-lines.jpg b/assets/themes/retro-82/backgrounds/3-glassy-lines.jpg similarity index 100% rename from themes/retro-82/backgrounds/3-glassy-lines.jpg rename to assets/themes/retro-82/backgrounds/3-glassy-lines.jpg diff --git a/themes/retro-82/backgrounds/4-gateway.jpg b/assets/themes/retro-82/backgrounds/4-gateway.jpg similarity index 100% rename from themes/retro-82/backgrounds/4-gateway.jpg rename to assets/themes/retro-82/backgrounds/4-gateway.jpg diff --git a/themes/retro-82/backgrounds/5-zen-boat.jpg b/assets/themes/retro-82/backgrounds/5-zen-boat.jpg similarity index 100% rename from themes/retro-82/backgrounds/5-zen-boat.jpg rename to assets/themes/retro-82/backgrounds/5-zen-boat.jpg diff --git a/themes/retro-82/backgrounds/6-abstract-pyramids.jpg b/assets/themes/retro-82/backgrounds/6-abstract-pyramids.jpg similarity index 100% rename from themes/retro-82/backgrounds/6-abstract-pyramids.jpg rename to assets/themes/retro-82/backgrounds/6-abstract-pyramids.jpg diff --git a/themes/retro-82/backgrounds/7-the-journey.jpg b/assets/themes/retro-82/backgrounds/7-the-journey.jpg similarity index 100% rename from themes/retro-82/backgrounds/7-the-journey.jpg rename to assets/themes/retro-82/backgrounds/7-the-journey.jpg diff --git a/themes/retro-82/backgrounds/8-glitter-glass.jpg b/assets/themes/retro-82/backgrounds/8-glitter-glass.jpg similarity index 100% rename from themes/retro-82/backgrounds/8-glitter-glass.jpg rename to assets/themes/retro-82/backgrounds/8-glitter-glass.jpg diff --git a/themes/retro-82/btop.theme b/assets/themes/retro-82/btop.theme similarity index 100% rename from themes/retro-82/btop.theme rename to assets/themes/retro-82/btop.theme diff --git a/themes/retro-82/chromium.theme b/assets/themes/retro-82/chromium.theme similarity index 100% rename from themes/retro-82/chromium.theme rename to assets/themes/retro-82/chromium.theme diff --git a/themes/retro-82/colors.toml b/assets/themes/retro-82/colors.toml similarity index 100% rename from themes/retro-82/colors.toml rename to assets/themes/retro-82/colors.toml diff --git a/themes/retro-82/hyprland.conf b/assets/themes/retro-82/hyprland.conf similarity index 100% rename from themes/retro-82/hyprland.conf rename to assets/themes/retro-82/hyprland.conf diff --git a/themes/retro-82/icons.theme b/assets/themes/retro-82/icons.theme similarity index 100% rename from themes/retro-82/icons.theme rename to assets/themes/retro-82/icons.theme diff --git a/themes/retro-82/neovim.lua b/assets/themes/retro-82/neovim.lua similarity index 100% rename from themes/retro-82/neovim.lua rename to assets/themes/retro-82/neovim.lua diff --git a/themes/retro-82/preview.png b/assets/themes/retro-82/preview.png similarity index 100% rename from themes/retro-82/preview.png rename to assets/themes/retro-82/preview.png diff --git a/themes/retro-82/swayosd.css b/assets/themes/retro-82/swayosd.css similarity index 100% rename from themes/retro-82/swayosd.css rename to assets/themes/retro-82/swayosd.css diff --git a/themes/retro-82/vscode.json b/assets/themes/retro-82/vscode.json similarity index 100% rename from themes/retro-82/vscode.json rename to assets/themes/retro-82/vscode.json diff --git a/themes/retro-82/waybar.css b/assets/themes/retro-82/waybar.css similarity index 100% rename from themes/retro-82/waybar.css rename to assets/themes/retro-82/waybar.css diff --git a/themes/ristretto/backgrounds/1-color-curves.jpg b/assets/themes/ristretto/backgrounds/1-color-curves.jpg similarity index 100% rename from themes/ristretto/backgrounds/1-color-curves.jpg rename to assets/themes/ristretto/backgrounds/1-color-curves.jpg diff --git a/themes/ristretto/backgrounds/2-coffee-beans.jpg b/assets/themes/ristretto/backgrounds/2-coffee-beans.jpg similarity index 100% rename from themes/ristretto/backgrounds/2-coffee-beans.jpg rename to assets/themes/ristretto/backgrounds/2-coffee-beans.jpg diff --git a/themes/ristretto/backgrounds/3-industrial-moon.jpg b/assets/themes/ristretto/backgrounds/3-industrial-moon.jpg similarity index 100% rename from themes/ristretto/backgrounds/3-industrial-moon.jpg rename to assets/themes/ristretto/backgrounds/3-industrial-moon.jpg diff --git a/themes/ristretto/btop.theme b/assets/themes/ristretto/btop.theme similarity index 100% rename from themes/ristretto/btop.theme rename to assets/themes/ristretto/btop.theme diff --git a/themes/ristretto/colors.toml b/assets/themes/ristretto/colors.toml similarity index 100% rename from themes/ristretto/colors.toml rename to assets/themes/ristretto/colors.toml diff --git a/themes/ristretto/icons.theme b/assets/themes/ristretto/icons.theme similarity index 100% rename from themes/ristretto/icons.theme rename to assets/themes/ristretto/icons.theme diff --git a/themes/ristretto/neovim.lua b/assets/themes/ristretto/neovim.lua similarity index 100% rename from themes/ristretto/neovim.lua rename to assets/themes/ristretto/neovim.lua diff --git a/themes/ristretto/preview.png b/assets/themes/ristretto/preview.png similarity index 100% rename from themes/ristretto/preview.png rename to assets/themes/ristretto/preview.png diff --git a/themes/ristretto/vscode.json b/assets/themes/ristretto/vscode.json similarity index 100% rename from themes/ristretto/vscode.json rename to assets/themes/ristretto/vscode.json diff --git a/themes/rose-pine/backgrounds/1-funky-shapes.jpg b/assets/themes/rose-pine/backgrounds/1-funky-shapes.jpg similarity index 100% rename from themes/rose-pine/backgrounds/1-funky-shapes.jpg rename to assets/themes/rose-pine/backgrounds/1-funky-shapes.jpg diff --git a/themes/rose-pine/backgrounds/2-dot-map.png b/assets/themes/rose-pine/backgrounds/2-dot-map.png similarity index 100% rename from themes/rose-pine/backgrounds/2-dot-map.png rename to assets/themes/rose-pine/backgrounds/2-dot-map.png diff --git a/themes/rose-pine/backgrounds/3-nomarchy-plants.png b/assets/themes/rose-pine/backgrounds/3-nomarchy-plants.png similarity index 100% rename from themes/rose-pine/backgrounds/3-nomarchy-plants.png rename to assets/themes/rose-pine/backgrounds/3-nomarchy-plants.png diff --git a/themes/rose-pine/btop.theme b/assets/themes/rose-pine/btop.theme similarity index 100% rename from themes/rose-pine/btop.theme rename to assets/themes/rose-pine/btop.theme diff --git a/themes/rose-pine/chromium.theme b/assets/themes/rose-pine/chromium.theme similarity index 100% rename from themes/rose-pine/chromium.theme rename to assets/themes/rose-pine/chromium.theme diff --git a/themes/rose-pine/colors.toml b/assets/themes/rose-pine/colors.toml similarity index 100% rename from themes/rose-pine/colors.toml rename to assets/themes/rose-pine/colors.toml diff --git a/themes/rose-pine/icons.theme b/assets/themes/rose-pine/icons.theme similarity index 100% rename from themes/rose-pine/icons.theme rename to assets/themes/rose-pine/icons.theme diff --git a/themes/rose-pine/light.mode b/assets/themes/rose-pine/light.mode similarity index 100% rename from themes/rose-pine/light.mode rename to assets/themes/rose-pine/light.mode diff --git a/themes/rose-pine/neovim.lua b/assets/themes/rose-pine/neovim.lua similarity index 100% rename from themes/rose-pine/neovim.lua rename to assets/themes/rose-pine/neovim.lua diff --git a/themes/rose-pine/preview.png b/assets/themes/rose-pine/preview.png similarity index 100% rename from themes/rose-pine/preview.png rename to assets/themes/rose-pine/preview.png diff --git a/themes/rose-pine/vscode.json b/assets/themes/rose-pine/vscode.json similarity index 100% rename from themes/rose-pine/vscode.json rename to assets/themes/rose-pine/vscode.json diff --git a/themes/tokyo-night/backgrounds/0-swirl-buck.jpg b/assets/themes/tokyo-night/backgrounds/0-swirl-buck.jpg similarity index 100% rename from themes/tokyo-night/backgrounds/0-swirl-buck.jpg rename to assets/themes/tokyo-night/backgrounds/0-swirl-buck.jpg diff --git a/themes/tokyo-night/backgrounds/1-sunset-lake.png b/assets/themes/tokyo-night/backgrounds/1-sunset-lake.png similarity index 100% rename from themes/tokyo-night/backgrounds/1-sunset-lake.png rename to assets/themes/tokyo-night/backgrounds/1-sunset-lake.png diff --git a/themes/tokyo-night/backgrounds/2-pawel-czerwinski.jpg b/assets/themes/tokyo-night/backgrounds/2-pawel-czerwinski.jpg similarity index 100% rename from themes/tokyo-night/backgrounds/2-pawel-czerwinski.jpg rename to assets/themes/tokyo-night/backgrounds/2-pawel-czerwinski.jpg diff --git a/themes/tokyo-night/backgrounds/3-milad-fakurian.jpg b/assets/themes/tokyo-night/backgrounds/3-milad-fakurian.jpg similarity index 100% rename from themes/tokyo-night/backgrounds/3-milad-fakurian.jpg rename to assets/themes/tokyo-night/backgrounds/3-milad-fakurian.jpg diff --git a/themes/tokyo-night/btop.theme b/assets/themes/tokyo-night/btop.theme similarity index 100% rename from themes/tokyo-night/btop.theme rename to assets/themes/tokyo-night/btop.theme diff --git a/themes/tokyo-night/colors.toml b/assets/themes/tokyo-night/colors.toml similarity index 100% rename from themes/tokyo-night/colors.toml rename to assets/themes/tokyo-night/colors.toml diff --git a/themes/tokyo-night/icons.theme b/assets/themes/tokyo-night/icons.theme similarity index 100% rename from themes/tokyo-night/icons.theme rename to assets/themes/tokyo-night/icons.theme diff --git a/themes/tokyo-night/keyboard.rgb b/assets/themes/tokyo-night/keyboard.rgb similarity index 100% rename from themes/tokyo-night/keyboard.rgb rename to assets/themes/tokyo-night/keyboard.rgb diff --git a/themes/tokyo-night/neovim.lua b/assets/themes/tokyo-night/neovim.lua similarity index 100% rename from themes/tokyo-night/neovim.lua rename to assets/themes/tokyo-night/neovim.lua diff --git a/themes/tokyo-night/preview.png b/assets/themes/tokyo-night/preview.png similarity index 100% rename from themes/tokyo-night/preview.png rename to assets/themes/tokyo-night/preview.png diff --git a/themes/tokyo-night/vscode.json b/assets/themes/tokyo-night/vscode.json similarity index 100% rename from themes/tokyo-night/vscode.json rename to assets/themes/tokyo-night/vscode.json diff --git a/themes/vantablack/backgrounds/1-twisted-stairs.jpg b/assets/themes/vantablack/backgrounds/1-twisted-stairs.jpg similarity index 100% rename from themes/vantablack/backgrounds/1-twisted-stairs.jpg rename to assets/themes/vantablack/backgrounds/1-twisted-stairs.jpg diff --git a/themes/vantablack/backgrounds/2-layers-deep.jpg b/assets/themes/vantablack/backgrounds/2-layers-deep.jpg similarity index 100% rename from themes/vantablack/backgrounds/2-layers-deep.jpg rename to assets/themes/vantablack/backgrounds/2-layers-deep.jpg diff --git a/themes/vantablack/backgrounds/3-layers-stacked.jpg b/assets/themes/vantablack/backgrounds/3-layers-stacked.jpg similarity index 100% rename from themes/vantablack/backgrounds/3-layers-stacked.jpg rename to assets/themes/vantablack/backgrounds/3-layers-stacked.jpg diff --git a/themes/vantablack/btop.theme b/assets/themes/vantablack/btop.theme similarity index 100% rename from themes/vantablack/btop.theme rename to assets/themes/vantablack/btop.theme diff --git a/themes/vantablack/colors.toml b/assets/themes/vantablack/colors.toml similarity index 100% rename from themes/vantablack/colors.toml rename to assets/themes/vantablack/colors.toml diff --git a/themes/vantablack/icons.theme b/assets/themes/vantablack/icons.theme similarity index 100% rename from themes/vantablack/icons.theme rename to assets/themes/vantablack/icons.theme diff --git a/themes/vantablack/neovim.lua b/assets/themes/vantablack/neovim.lua similarity index 100% rename from themes/vantablack/neovim.lua rename to assets/themes/vantablack/neovim.lua diff --git a/themes/vantablack/preview.png b/assets/themes/vantablack/preview.png similarity index 100% rename from themes/vantablack/preview.png rename to assets/themes/vantablack/preview.png diff --git a/themes/vantablack/vscode.json b/assets/themes/vantablack/vscode.json similarity index 100% rename from themes/vantablack/vscode.json rename to assets/themes/vantablack/vscode.json diff --git a/themes/white/backgrounds/1-white.jpg b/assets/themes/white/backgrounds/1-white.jpg similarity index 100% rename from themes/white/backgrounds/1-white.jpg rename to assets/themes/white/backgrounds/1-white.jpg diff --git a/themes/white/backgrounds/2-white.jpg b/assets/themes/white/backgrounds/2-white.jpg similarity index 100% rename from themes/white/backgrounds/2-white.jpg rename to assets/themes/white/backgrounds/2-white.jpg diff --git a/themes/white/backgrounds/3-white.jpg b/assets/themes/white/backgrounds/3-white.jpg similarity index 100% rename from themes/white/backgrounds/3-white.jpg rename to assets/themes/white/backgrounds/3-white.jpg diff --git a/themes/white/btop.theme b/assets/themes/white/btop.theme similarity index 100% rename from themes/white/btop.theme rename to assets/themes/white/btop.theme diff --git a/themes/white/colors.toml b/assets/themes/white/colors.toml similarity index 100% rename from themes/white/colors.toml rename to assets/themes/white/colors.toml diff --git a/themes/white/icons.theme b/assets/themes/white/icons.theme similarity index 100% rename from themes/white/icons.theme rename to assets/themes/white/icons.theme diff --git a/themes/white/light.mode b/assets/themes/white/light.mode similarity index 100% rename from themes/white/light.mode rename to assets/themes/white/light.mode diff --git a/themes/white/neovim.lua b/assets/themes/white/neovim.lua similarity index 100% rename from themes/white/neovim.lua rename to assets/themes/white/neovim.lua diff --git a/themes/white/preview.png b/assets/themes/white/preview.png similarity index 100% rename from themes/white/preview.png rename to assets/themes/white/preview.png diff --git a/themes/white/vscode.json b/assets/themes/white/vscode.json similarity index 100% rename from themes/white/vscode.json rename to assets/themes/white/vscode.json diff --git a/bin/nomarchy-font-current b/bin/appearance/nomarchy-font-current similarity index 80% rename from bin/nomarchy-font-current rename to bin/appearance/nomarchy-font-current index b5b79d1..9e7c7f5 100755 --- a/bin/nomarchy-font-current +++ b/bin/appearance/nomarchy-font-current @@ -1,6 +1,6 @@ #!/bin/bash # Returns the name of the current monospace font being used by extracting it from the Waybar stylesheet. -# This can be changed using nomarchy-font-set. +# This can be changed using nnomarchy-font-set. grep -oP 'font-family:\s*["'\'']?\K[^;"'\'']+' ~/.config/waybar/style.css | head -n1 diff --git a/bin/nomarchy-font-list b/bin/appearance/nomarchy-font-list similarity index 64% rename from bin/nomarchy-font-list rename to bin/appearance/nomarchy-font-list index 90490c7..964eebb 100755 --- a/bin/nomarchy-font-list +++ b/bin/appearance/nomarchy-font-list @@ -1,5 +1,5 @@ #!/bin/bash -# Returns a list of all the monospace fonts available on the system that can be set using nomarchy-font-set. +# Returns a list of all the monospace fonts available on the system that can be set using nnomarchy-font-set. -fc-list :spacing=100 -f "%{family[0]}\n" | grep -v -i -E 'emoji|signwriting|nomarchy' | sort -u +fc-list :spacing=100 -f "%{family[0]}\n" | grep -v -i -E 'emoji|signwriting|nnomarchy' | sort -u diff --git a/bin/nomarchy-font-set b/bin/appearance/nomarchy-font-set similarity index 87% rename from bin/nomarchy-font-set rename to bin/appearance/nomarchy-font-set index 7dd2385..277ba06 100755 --- a/bin/nomarchy-font-set +++ b/bin/appearance/nomarchy-font-set @@ -1,12 +1,12 @@ #!/usr/bin/env bash # Set the system-wide monospace font that should be used by the terminal, hyprlock, waybar, swayosd, etc. -# Declarative version for Nomarchy NixOS. +# Declarative version for Nnomarchy NixOS. font_name="$1" if [[ -z $font_name ]]; then - echo "Usage: nomarchy-font-set " + echo "Usage: nnomarchy-font-set " exit 1 fi @@ -31,7 +31,7 @@ if fc-list | grep -iq "$font_name"; then notify-send -u low " You must restart Ghostty to see font change" fi - nomarchy-hook font-set "$font_name" + nnomarchy-hook font-set "$font_name" else echo "Font '$font_name' not found." exit 1 diff --git a/bin/nomarchy-show-done b/bin/appearance/nomarchy-show-done similarity index 100% rename from bin/nomarchy-show-done rename to bin/appearance/nomarchy-show-done diff --git a/bin/nomarchy-show-logo b/bin/appearance/nomarchy-show-logo similarity index 52% rename from bin/nomarchy-show-logo rename to bin/appearance/nomarchy-show-logo index beb0596..7c9d35a 100755 --- a/bin/nomarchy-show-logo +++ b/bin/appearance/nomarchy-show-logo @@ -1,10 +1,10 @@ #!/bin/bash -# Display the Nomarchy logo in the terminal using green color. +# Display the Nnomarchy logo in the terminal using green color. # Used by various presentation scripts to show branding. clear echo -e "\033[32m" -cat < ~/.config/nomarchy/branding/logo.txt +cat < ~/.config/nnomarchy/branding/logo.txt echo -e "\033[0m" echo diff --git a/bin/appearance/nomarchy-theme-bg-install b/bin/appearance/nomarchy-theme-bg-install new file mode 100755 index 0000000..77a246a --- /dev/null +++ b/bin/appearance/nomarchy-theme-bg-install @@ -0,0 +1,7 @@ +#!/bin/bash + +CURRENT_THEME_NAME=$(cat "$HOME/.config/nnomarchy/current/theme.name") +THEME_USER_BACKGROUNDS="$HOME/.config/nnomarchy/backgrounds/$CURRENT_THEME_NAME" + +mkdir -p "$THEME_USER_BACKGROUNDS" +nautilus "$THEME_USER_BACKGROUNDS" diff --git a/bin/nomarchy-theme-bg-next b/bin/appearance/nomarchy-theme-bg-next similarity index 86% rename from bin/nomarchy-theme-bg-next rename to bin/appearance/nomarchy-theme-bg-next index 1ed4dc9..5683546 100755 --- a/bin/nomarchy-theme-bg-next +++ b/bin/appearance/nomarchy-theme-bg-next @@ -1,7 +1,7 @@ #!/usr/bin/env bash # Cycles through the background images available for the current theme. -# Declarative + Hybrid (instant swww) for Nomarchy NixOS. +# Declarative + Hybrid (instant swww) for Nnomarchy NixOS. STATE_DIR="$HOME/.config/home-manager" STATE_FILE="$STATE_DIR/state.json" @@ -11,10 +11,10 @@ mkdir -p "$STATE_DIR" THEME_NAME=$(jq -r '.theme // "nord"' "$STATE_FILE") # Resolve themes directory (Built-in from Nix store via Home Manager, or user extra) -if [ -d "$HOME/.config/nomarchy/themes/$THEME_NAME" ]; then - THEMES_DIR="$HOME/.config/nomarchy/themes" +if [ -d "$HOME/.config/nnomarchy/themes/$THEME_NAME" ]; then + THEMES_DIR="$HOME/.config/nnomarchy/themes" else - THEMES_DIR="$HOME/.local/share/nomarchy/themes" + THEMES_DIR="$HOME/.local/share/nnomarchy/themes" fi BG_DIR="$THEMES_DIR/$THEME_NAME/backgrounds" diff --git a/bin/nomarchy-theme-bg-set b/bin/appearance/nomarchy-theme-bg-set similarity index 72% rename from bin/nomarchy-theme-bg-set rename to bin/appearance/nomarchy-theme-bg-set index 26e3c44..cb301b8 100755 --- a/bin/nomarchy-theme-bg-set +++ b/bin/appearance/nomarchy-theme-bg-set @@ -3,12 +3,12 @@ # Sets the specified image as the current background if [[ -z $1 ]]; then - echo "Usage: nomarchy-theme-bg-set " >&2 + echo "Usage: nnomarchy-theme-bg-set " >&2 exit 1 fi BACKGROUND="$1" -CURRENT_BACKGROUND_LINK="$HOME/.config/nomarchy/current/background" +CURRENT_BACKGROUND_LINK="$HOME/.config/nnomarchy/current/background" # Create symlink to the new background ln -nsf "$BACKGROUND" "$CURRENT_BACKGROUND_LINK" diff --git a/bin/nomarchy-theme-current b/bin/appearance/nomarchy-theme-current similarity index 69% rename from bin/nomarchy-theme-current rename to bin/appearance/nomarchy-theme-current index 2007b41..cbaed97 100755 --- a/bin/nomarchy-theme-current +++ b/bin/appearance/nomarchy-theme-current @@ -1,6 +1,6 @@ #!/bin/bash -THEME_NAME_PATH="$HOME/.config/nomarchy/current/theme.name" +THEME_NAME_PATH="$HOME/.config/nnomarchy/current/theme.name" if [[ -f $THEME_NAME_PATH ]]; then cat $THEME_NAME_PATH | sed -E 's/(^|-)([a-z])/\1\u\2/g; s/-/ /g' diff --git a/bin/appearance/nomarchy-theme-install b/bin/appearance/nomarchy-theme-install new file mode 100755 index 0000000..a684ec7 --- /dev/null +++ b/bin/appearance/nomarchy-theme-install @@ -0,0 +1,33 @@ +#!/bin/bash + +# nnomarchy-theme-install: Install a new theme from a git repo for Nnomarchy +# Usage: nnomarchy-theme-install + +if [[ -z $1 ]]; then + echo -e "\e[32mSee https://manuals.omamix.org/2/the-nnomarchy-manual/90/extra-themes\n\e[0m" + REPO_URL=$(gum input --placeholder="Git repo URL for theme" --header="") +else + REPO_URL="$1" +fi + +if [[ -z $REPO_URL ]]; then + exit 1 +fi + +THEMES_DIR="$HOME/.config/nnomarchy/themes" +THEME_NAME=$(basename "$REPO_URL" .git | sed -E 's/^nnomarchy-//; s/-theme$//') +THEME_PATH="$THEMES_DIR/$THEME_NAME" + +# Remove existing theme if present +if [[ -d $THEME_PATH ]]; then + rm -rf "$THEME_PATH" +fi + +# Clone the repo directly to ~/.config/nnomarchy/themes +if ! git clone "$REPO_URL" "$THEME_PATH"; then + echo "Error: Failed to clone theme repo." + exit 1 +fi + +# Apply the new theme with nnomarchy-theme-set +nnomarchy-theme-set $THEME_NAME diff --git a/bin/appearance/nomarchy-theme-list b/bin/appearance/nomarchy-theme-list new file mode 100755 index 0000000..59e61ad --- /dev/null +++ b/bin/appearance/nomarchy-theme-list @@ -0,0 +1,8 @@ +#!/bin/bash + +{ + find ~/.config/nnomarchy/themes/ -mindepth 1 -maxdepth 1 \( -type d -o -type l \) -printf '%f\n' + find "$NOMARCHY_PATH/assets/themes/" -mindepth 1 -maxdepth 1 -type d -printf '%f\n' +} | sort -u | while read -r name; do + echo "$name" | sed -E 's/(^|-)([a-z])/\1\u\2/g; s/-/ /g' +done diff --git a/bin/appearance/nomarchy-theme-refresh b/bin/appearance/nomarchy-theme-refresh new file mode 100755 index 0000000..97a037c --- /dev/null +++ b/bin/appearance/nomarchy-theme-refresh @@ -0,0 +1,9 @@ +#!/bin/bash + +# Refresh the current theme from its templates. + +THEME_NAME_PATH="$HOME/.config/nnomarchy/current/theme.name" + +if [[ -f $THEME_NAME_PATH ]]; then + nnomarchy-theme-set "$(cat $THEME_NAME_PATH)" +fi diff --git a/bin/nomarchy-theme-remove b/bin/appearance/nomarchy-theme-remove similarity index 64% rename from bin/nomarchy-theme-remove rename to bin/appearance/nomarchy-theme-remove index 7b058c4..d5d8d7d 100755 --- a/bin/nomarchy-theme-remove +++ b/bin/appearance/nomarchy-theme-remove @@ -1,10 +1,10 @@ #!/bin/bash -# nomarchy-theme-remove: Remove a theme from Nomarchy by name -# Usage: nomarchy-theme-remove +# nnomarchy-theme-remove: Remove a theme from Nnomarchy by name +# Usage: nnomarchy-theme-remove if [[ -z $1 ]]; then - mapfile -t extra_themes < <(find ~/.config/nomarchy/themes -mindepth 1 -maxdepth 1 -type d ! -xtype l -printf '%f\n') + mapfile -t extra_themes < <(find ~/.config/nnomarchy/themes -mindepth 1 -maxdepth 1 -type d ! -xtype l -printf '%f\n') if (( ${#extra_themes[@]} > 0 )); then THEME_NAME=$(printf '%s\n' "${extra_themes[@]}" | sort | gum choose --header="Remove extra theme") @@ -16,8 +16,8 @@ else THEME_NAME="$1" fi -THEMES_DIR="$HOME/.config/nomarchy/themes" -CURRENT_DIR="$HOME/.config/nomarchy/current" +THEMES_DIR="$HOME/.config/nnomarchy/themes" +CURRENT_DIR="$HOME/.config/nnomarchy/current" THEME_PATH="$THEMES_DIR/$THEME_NAME" # Ensure a theme was set diff --git a/bin/nomarchy-theme-set b/bin/appearance/nomarchy-theme-set similarity index 76% rename from bin/nomarchy-theme-set rename to bin/appearance/nomarchy-theme-set index 2fe2b6e..5de72f1 100755 --- a/bin/nomarchy-theme-set +++ b/bin/appearance/nomarchy-theme-set @@ -1,12 +1,12 @@ #!/usr/bin/env bash # Set the system theme declaratively. -# Usage: nomarchy-theme-set +# Usage: nnomarchy-theme-set THEME_NAME="$1" if [[ -z $THEME_NAME ]]; then - echo "Usage: nomarchy-theme-set " + echo "Usage: nnomarchy-theme-set " exit 1 fi @@ -14,10 +14,10 @@ STATE_DIR="$HOME/.config/home-manager" STATE_FILE="$STATE_DIR/state.json" # Resolve themes directory (Built-in from Nix store via Home Manager, or user extra) -if [ -d "$HOME/.config/nomarchy/themes/$THEME_NAME" ]; then - THEMES_DIR="$HOME/.config/nomarchy/themes" +if [ -d "$HOME/.config/nnomarchy/themes/$THEME_NAME" ]; then + THEMES_DIR="$HOME/.config/nnomarchy/themes" else - THEMES_DIR="$HOME/.local/share/nomarchy/themes" + THEMES_DIR="$HOME/.local/share/nnomarchy/themes" fi mkdir -p "$STATE_DIR" @@ -26,7 +26,7 @@ mkdir -p "$STATE_DIR" if [ ! -d "$THEMES_DIR/$THEME_NAME" ] && ! [[ "$THEME_NAME" == "nord" ]]; then echo "Theme '$THEME_NAME' not found in $THEMES_DIR" # Check if it exists in the palettes file - # (Assuming nomarchy-palettes.nix is imported in Nix) + # (Assuming nnomarchy-palettes.nix is imported in Nix) fi TMP_JSON=$(mktemp) @@ -49,9 +49,9 @@ if [ -d "$BG_DIR" ]; then fi echo "Theme set to $THEME_NAME. Applying changes with env-update..." -rm -rf "$HOME/.config/nomarchy/current/theme" +rm -rf "$HOME/.config/nnomarchy/current/theme" env-update -nomarchy-theme-set-templates +nnomarchy-theme-set-templates -nomarchy-hook theme-set "$THEME_NAME" +nnomarchy-hook theme-set "$THEME_NAME" diff --git a/bin/appearance/nomarchy-theme-set-keyboard b/bin/appearance/nomarchy-theme-set-keyboard new file mode 100755 index 0000000..a31a0b5 --- /dev/null +++ b/bin/appearance/nomarchy-theme-set-keyboard @@ -0,0 +1,4 @@ +#!/bin/bash + +nnomarchy-theme-set-keyboard-asus-rog +nnomarchy-theme-set-keyboard-f16 diff --git a/bin/appearance/nomarchy-theme-set-keyboard-asus-rog b/bin/appearance/nomarchy-theme-set-keyboard-asus-rog new file mode 100755 index 0000000..f5b4ccb --- /dev/null +++ b/bin/appearance/nomarchy-theme-set-keyboard-asus-rog @@ -0,0 +1,7 @@ +#!/bin/bash + +ASUSCTL_THEME=~/.config/nnomarchy/current/theme/keyboard.rgb + +if nnomarchy-cmd-present asusctl; then + asusctl aura effect static -c $(sed 's/^#//' $ASUSCTL_THEME) +fi diff --git a/bin/nomarchy-theme-set-keyboard-f16 b/bin/appearance/nomarchy-theme-set-keyboard-f16 similarity index 80% rename from bin/nomarchy-theme-set-keyboard-f16 rename to bin/appearance/nomarchy-theme-set-keyboard-f16 index 66a0f12..62dcd7e 100755 --- a/bin/nomarchy-theme-set-keyboard-f16 +++ b/bin/appearance/nomarchy-theme-set-keyboard-f16 @@ -1,8 +1,8 @@ #!/bin/bash -FRAMEWORK16_THEME=~/.config/nomarchy/current/theme/keyboard.rgb +FRAMEWORK16_THEME=~/.config/nnomarchy/current/theme/keyboard.rgb -if nomarchy-cmd-present qmk_hid && [[ -f $FRAMEWORK16_THEME ]]; then +if nnomarchy-cmd-present qmk_hid && [[ -f $FRAMEWORK16_THEME ]]; then hex=$(cat "$FRAMEWORK16_THEME") hex="${hex#\#}" diff --git a/bin/nomarchy-theme-set-obsidian b/bin/appearance/nomarchy-theme-set-obsidian similarity index 56% rename from bin/nomarchy-theme-set-obsidian rename to bin/appearance/nomarchy-theme-set-obsidian index e24fd8d..c0eb298 100755 --- a/bin/nomarchy-theme-set-obsidian +++ b/bin/appearance/nomarchy-theme-set-obsidian @@ -1,25 +1,25 @@ #!/bin/bash -# Sync Nomarchy theme to all Obsidian vaults +# Sync Nnomarchy theme to all Obsidian vaults -CURRENT_THEME_DIR="$HOME/.config/nomarchy/current/theme" +CURRENT_THEME_DIR="$HOME/.config/nnomarchy/current/theme" [[ -f $CURRENT_THEME_DIR/obsidian.css ]] || exit 0 jq -r '.vaults | values[].path' ~/.config/obsidian/obsidian.json 2>/dev/null | while read -r vault_path; do [[ -d $vault_path/.obsidian ]] || continue - theme_dir="$vault_path/.obsidian/themes/Nomarchy" + theme_dir="$vault_path/.obsidian/themes/Nnomarchy" mkdir -p "$theme_dir" [[ -f $theme_dir/manifest.json ]] || cat >"$theme_dir/manifest.json" <<'EOF' { - "name": "Nomarchy", + "name": "Nnomarchy", "version": "1.0.0", "minAppVersion": "0.16.0", - "description": "Automatically syncs with your current Nomarchy system theme colors and fonts", - "author": "Nomarchy", - "authorUrl": "https://nomarchy.org" + "description": "Automatically syncs with your current Nnomarchy system theme colors and fonts", + "author": "Nnomarchy", + "authorUrl": "https://nnomarchy.org" } EOF diff --git a/bin/nomarchy-theme-set-templates b/bin/appearance/nomarchy-theme-set-templates similarity index 90% rename from bin/nomarchy-theme-set-templates rename to bin/appearance/nomarchy-theme-set-templates index 3fb9599..6fd4907 100755 --- a/bin/nomarchy-theme-set-templates +++ b/bin/appearance/nomarchy-theme-set-templates @@ -1,8 +1,8 @@ #!/bin/bash -TEMPLATES_DIR="$OMARCHY_PATH/default/themed" -USER_TEMPLATES_DIR="$HOME/.config/nomarchy/themed" -NEXT_THEME_DIR="$HOME/.config/nomarchy/current/theme" +TEMPLATES_DIR="$NOMARCHY_PATH/assets/themed" +USER_TEMPLATES_DIR="$HOME/.config/nnomarchy/themed" +NEXT_THEME_DIR="$HOME/.config/nnomarchy/current/theme" COLORS_FILE="$NEXT_THEME_DIR/colors.toml" # Convert hex color to decimal RGB (e.g., "#1e1e2e" -> "30,30,46") diff --git a/bin/nomarchy-theme-set-vscode b/bin/appearance/nomarchy-theme-set-vscode similarity index 84% rename from bin/nomarchy-theme-set-vscode rename to bin/appearance/nomarchy-theme-set-vscode index 621d8a4..cf76022 100755 --- a/bin/nomarchy-theme-set-vscode +++ b/bin/appearance/nomarchy-theme-set-vscode @@ -1,14 +1,14 @@ #!/bin/bash -# Sync Nomarchy theme to VS Code, VSCodium, and Cursor +# Sync Nnomarchy theme to VS Code, VSCodium, and Cursor -VS_CODE_THEME="$HOME/.config/nomarchy/current/theme/vscode.json" +VS_CODE_THEME="$HOME/.config/nnomarchy/current/theme/vscode.json" set_theme() { local editor_cmd="$1" local settings_path="$2" - nomarchy-cmd-present "$editor_cmd" && [[ $NOMARCHY_TOGGLE_SKIP_VSCODE_THEME != "true" ]] || return 0 + nnomarchy-cmd-present "$editor_cmd" && [[ $NNOMARCHY_TOGGLE_SKIP_VSCODE_THEME != "true" ]] || return 0 if [[ -f $VS_CODE_THEME ]]; then theme_name=$(jq -r '.name' "$VS_CODE_THEME") diff --git a/bin/nomarchy-theme-update b/bin/appearance/nomarchy-theme-update similarity index 77% rename from bin/nomarchy-theme-update rename to bin/appearance/nomarchy-theme-update index af49ea0..e63b671 100755 --- a/bin/nomarchy-theme-update +++ b/bin/appearance/nomarchy-theme-update @@ -1,6 +1,6 @@ #!/bin/bash -for dir in ~/.config/nomarchy/themes/*/; do +for dir in ~/.config/nnomarchy/themes/*/; do if [[ -d $dir ]] && [[ ! -L ${dir%/} ]] && [[ -d $dir/.git ]]; then echo "Updating: $(basename "$dir")" git -C "$dir" pull diff --git a/bin/nomarchy-toggle-nightlight b/bin/appearance/nomarchy-toggle-nightlight similarity index 92% rename from bin/nomarchy-toggle-nightlight rename to bin/appearance/nomarchy-toggle-nightlight index 6cde7ac..078d698 100755 --- a/bin/nomarchy-toggle-nightlight +++ b/bin/appearance/nomarchy-toggle-nightlight @@ -9,7 +9,7 @@ mkdir -p "$(dirname "$STATE_FILE")" # Initialize if doesn't exist [[ ! -f $STATE_FILE ]] && echo "{}" > "$STATE_FILE" -if [[ $NOMARCHY_TOGGLE_NIGHTLIGHT == "false" ]]; then +if [[ $NNOMARCHY_TOGGLE_NIGHTLIGHT == "false" ]]; then NEW_VALUE="true" hyprctl dispatch exec hyprsunset --temperature 4000 notify-send -u low "󰔎 Nightlight enabled" diff --git a/bin/nomarchy-launch-about b/bin/apps/nomarchy-launch-about similarity index 55% rename from bin/nomarchy-launch-about rename to bin/apps/nomarchy-launch-about index 315906f..d90f8f5 100755 --- a/bin/nomarchy-launch-about +++ b/bin/apps/nomarchy-launch-about @@ -2,4 +2,4 @@ # Launch the fastfetch TUI that gives information about the current system. -exec nomarchy-launch-or-focus-tui "bash -c 'fastfetch; read -n 1 -s'" +exec nnomarchy-launch-or-focus-tui "bash -c 'fastfetch; read -n 1 -s'" diff --git a/bin/apps/nomarchy-launch-audio b/bin/apps/nomarchy-launch-audio new file mode 100755 index 0000000..5eb963b --- /dev/null +++ b/bin/apps/nomarchy-launch-audio @@ -0,0 +1,5 @@ +#!/bin/bash + +# Launch the Nnomarchy audio controls TUI (provided by wiremix). + +nnomarchy-launch-or-focus-tui wiremix diff --git a/bin/apps/nomarchy-launch-bluetooth b/bin/apps/nomarchy-launch-bluetooth new file mode 100755 index 0000000..5927e93 --- /dev/null +++ b/bin/apps/nomarchy-launch-bluetooth @@ -0,0 +1,7 @@ +#!/bin/bash + +# Launch the Nnomarchy bluetooth controls TUI (provided by bluetui). +# Also attempts to unblock bluetooth service if rfkill had blocked it. + +rfkill unblock bluetooth +exec nnomarchy-launch-or-focus-tui bluetui diff --git a/bin/nomarchy-launch-browser b/bin/apps/nomarchy-launch-browser similarity index 100% rename from bin/nomarchy-launch-browser rename to bin/apps/nomarchy-launch-browser diff --git a/bin/nomarchy-launch-editor b/bin/apps/nomarchy-launch-editor similarity index 78% rename from bin/nomarchy-launch-editor rename to bin/apps/nomarchy-launch-editor index d12dee2..0b3f1a1 100755 --- a/bin/nomarchy-launch-editor +++ b/bin/apps/nomarchy-launch-editor @@ -3,11 +3,11 @@ # Launch the default editor as determined by $EDITOR (set via ~/.config/uwsm/default) (or nvim if missing). # Starts suitable editors in a terminal window and otherwise as a regular application. -nomarchy-cmd-present "$EDITOR" || EDITOR=nvim +nnomarchy-cmd-present "$EDITOR" || EDITOR=nvim case "$EDITOR" in nvim | vim | nano | micro | hx | helix | fresh) - exec nomarchy-launch-tui "$EDITOR" "$@" + exec nnomarchy-launch-tui "$EDITOR" "$@" ;; *) exec setsid uwsm-app -- "$EDITOR" "$@" diff --git a/bin/apps/nomarchy-launch-floating-terminal-with-presentation b/bin/apps/nomarchy-launch-floating-terminal-with-presentation new file mode 100755 index 0000000..7b864d7 --- /dev/null +++ b/bin/apps/nomarchy-launch-floating-terminal-with-presentation @@ -0,0 +1,7 @@ +#!/bin/bash + +# Launch a floating terminal with the Nnomarchy logo presentation, then execute the command passed in, and finally end with the nnomarchy-show-done presentation. +# Used by actions such as Update System. + +cmd="$*" +exec setsid uwsm-app -- xdg-terminal-exec --app-id=org.nnomarchy.terminal --title=Nnomarchy -e bash -c "nnomarchy-show-logo; $cmd; if (( \$? != 130 )); then nnomarchy-show-done; fi" diff --git a/bin/nomarchy-launch-or-focus b/bin/apps/nomarchy-launch-or-focus similarity index 89% rename from bin/nomarchy-launch-or-focus rename to bin/apps/nomarchy-launch-or-focus index 477e0c3..b9d8764 100755 --- a/bin/nomarchy-launch-or-focus +++ b/bin/apps/nomarchy-launch-or-focus @@ -4,7 +4,7 @@ # Use by some default bindings, like the one for Spotify, to ensure there is only one instance of the application open. if (($# == 0)); then - echo "Usage: nomarchy-launch-or-focus [window-pattern] [launch-command]" + echo "Usage: nnomarchy-launch-or-focus [window-pattern] [launch-command]" exit 1 fi diff --git a/bin/apps/nomarchy-launch-or-focus-tui b/bin/apps/nomarchy-launch-or-focus-tui new file mode 100755 index 0000000..fa084bb --- /dev/null +++ b/bin/apps/nomarchy-launch-or-focus-tui @@ -0,0 +1,9 @@ +#!/bin/bash + +# Launch or focus on a given TUI identified by the passed in as the command. +# Use by commands like nnomarchy-launch-wifi to ensure there is only one wifi configuration screen open. + +APP_ID="org.nnomarchy.$(basename "$1")" +LAUNCH_COMMAND="nnomarchy-launch-tui $@" + +exec nnomarchy-launch-or-focus "$APP_ID" "$LAUNCH_COMMAND" diff --git a/bin/nomarchy-launch-or-focus-webapp b/bin/apps/nomarchy-launch-or-focus-webapp similarity index 57% rename from bin/nomarchy-launch-or-focus-webapp rename to bin/apps/nomarchy-launch-or-focus-webapp index 809cc21..12f89a3 100755 --- a/bin/nomarchy-launch-or-focus-webapp +++ b/bin/apps/nomarchy-launch-or-focus-webapp @@ -4,12 +4,12 @@ # Use by some default bindings, like the one for WhatsApp, to ensure there is only one instance of the application open. if (($# == 0)); then - echo "Usage: nomarchy-launch-or-focus-webapp [window-pattern] [url-and-flags...]" + echo "Usage: nnomarchy-launch-or-focus-webapp [window-pattern] [url-and-flags...]" exit 1 fi WINDOW_PATTERN="$1" shift -LAUNCH_COMMAND="nomarchy-launch-webapp $@" +LAUNCH_COMMAND="nnomarchy-launch-webapp $@" -exec nomarchy-launch-or-focus "$WINDOW_PATTERN" "$LAUNCH_COMMAND" +exec nnomarchy-launch-or-focus "$WINDOW_PATTERN" "$LAUNCH_COMMAND" diff --git a/bin/nomarchy-launch-screensaver b/bin/apps/nomarchy-launch-screensaver similarity index 59% rename from bin/nomarchy-launch-screensaver rename to bin/apps/nomarchy-launch-screensaver index 16eff8e..d229d7b 100755 --- a/bin/nomarchy-launch-screensaver +++ b/bin/apps/nomarchy-launch-screensaver @@ -1,6 +1,6 @@ #!/bin/bash -# Launch the Nomarchy screensaver in the default terminal on the system with the correct font configuration. +# Launch the Nnomarchy screensaver in the default terminal on the system with the correct font configuration. # Exit early if we don't have the tte show if ! command -v tte &>/dev/null; then @@ -8,11 +8,11 @@ if ! command -v tte &>/dev/null; then fi # Exit early if screensave is already running -pgrep -f org.nomarchy.screensaver && exit 0 +pgrep -f org.nnomarchy.screensaver && exit 0 # Allow screensaver to be turned off but also force started # Skip if screensaver is disabled in configuration -if [[ $NOMARCHY_TOGGLE_SCREENSAVER == "false" ]] && [[ $1 != "force" ]]; then +if [[ $NNOMARCHY_TOGGLE_SCREENSAVER == "false" ]] && [[ $1 != "force" ]]; then exit 0 fi @@ -29,23 +29,23 @@ for m in $(hyprctl monitors -j | jq -r '.[] | .name'); do case $terminal in *Alacritty*) hyprctl dispatch exec -- \ - alacritty --class=org.nomarchy.screensaver \ - --config-file ~/.local/share/nomarchy/default/alacritty/screensaver.toml \ - -e nomarchy-cmd-screensaver + alacritty --class=org.nnomarchy.screensaver \ + --config-file ~/.local/share/nnomarchy/default/alacritty/screensaver.toml \ + -e nnomarchy-cmd-screensaver ;; *ghostty*) hyprctl dispatch exec -- \ - ghostty --class=org.nomarchy.screensaver \ - --config-file=~/.local/share/nomarchy/default/ghostty/screensaver \ + ghostty --class=org.nnomarchy.screensaver \ + --config-file=~/.local/share/nnomarchy/default/ghostty/screensaver \ --font-size=18 \ - -e nomarchy-cmd-screensaver + -e nnomarchy-cmd-screensaver ;; *kitty*) hyprctl dispatch exec -- \ - kitty --class=org.nomarchy.screensaver \ + kitty --class=org.nnomarchy.screensaver \ --override font_size=18 \ --override window_padding_width=0 \ - -e nomarchy-cmd-screensaver + -e nnomarchy-cmd-screensaver ;; *) notify-send -u low "✋ Screensaver only runs in Alacritty, Ghostty, or Kitty" diff --git a/bin/apps/nomarchy-launch-tui b/bin/apps/nomarchy-launch-tui new file mode 100755 index 0000000..c162eb9 --- /dev/null +++ b/bin/apps/nomarchy-launch-tui @@ -0,0 +1,5 @@ +#!/bin/bash + +# Launch the TUI command passed in as an argument in the default terminal with an org.nnomarchy.COMMAND app id for styling. + +exec setsid uwsm-app -- xdg-terminal-exec --app-id=org.nnomarchy.$(basename $1) -e "$1" "${@:2}" diff --git a/bin/nomarchy-launch-walker b/bin/apps/nomarchy-launch-walker similarity index 100% rename from bin/nomarchy-launch-walker rename to bin/apps/nomarchy-launch-walker diff --git a/bin/nomarchy-launch-webapp b/bin/apps/nomarchy-launch-webapp similarity index 100% rename from bin/nomarchy-launch-webapp rename to bin/apps/nomarchy-launch-webapp diff --git a/bin/nomarchy-launch-wifi b/bin/apps/nomarchy-launch-wifi similarity index 52% rename from bin/nomarchy-launch-wifi rename to bin/apps/nomarchy-launch-wifi index fda2297..a2be9d3 100755 --- a/bin/nomarchy-launch-wifi +++ b/bin/apps/nomarchy-launch-wifi @@ -1,7 +1,7 @@ #!/bin/bash -# Launch the Nomarchy wifi controls (provided by the Impala TUI). +# Launch the Nnomarchy wifi controls (provided by the Impala TUI). # Attempts to unblock the wifi service first in case it should be been blocked. rfkill unblock wifi -nomarchy-launch-or-focus-tui impala +nnomarchy-launch-or-focus-tui impala diff --git a/bin/nomarchy-restart-app b/bin/apps/nomarchy-restart-app similarity index 64% rename from bin/nomarchy-restart-app rename to bin/apps/nomarchy-restart-app index 53ba2d1..bdeb81d 100755 --- a/bin/nomarchy-restart-app +++ b/bin/apps/nomarchy-restart-app @@ -1,7 +1,7 @@ #!/bin/bash # Restart an application by killing it and relaunching via uwsm. -# Usage: nomarchy-restart-app [application-args...] +# Usage: nnomarchy-restart-app [application-args...] pkill -x $1 setsid uwsm-app -- "$@" >/dev/null 2>&1 & diff --git a/bin/apps/nomarchy-restart-btop b/bin/apps/nomarchy-restart-btop new file mode 100755 index 0000000..d289983 --- /dev/null +++ b/bin/apps/nomarchy-restart-btop @@ -0,0 +1,5 @@ +#!/bin/bash + +# Reload btop configuration (used by the Nnomarchy theme switching). + +pkill -SIGUSR2 btop diff --git a/bin/nomarchy-restart-opencode b/bin/apps/nomarchy-restart-opencode similarity index 53% rename from bin/nomarchy-restart-opencode rename to bin/apps/nomarchy-restart-opencode index a674af2..896e911 100755 --- a/bin/nomarchy-restart-opencode +++ b/bin/apps/nomarchy-restart-opencode @@ -1,6 +1,6 @@ #!/bin/bash -# Reload opencode configuration (used by the Nomarchy theme switching). +# Reload opencode configuration (used by the Nnomarchy theme switching). if pgrep -x opencode >/dev/null; then killall -SIGUSR2 opencode diff --git a/bin/nomarchy-restart-terminal b/bin/apps/nomarchy-restart-terminal similarity index 100% rename from bin/nomarchy-restart-terminal rename to bin/apps/nomarchy-restart-terminal diff --git a/bin/nomarchy-restart-tmux b/bin/apps/nomarchy-restart-tmux similarity index 100% rename from bin/nomarchy-restart-tmux rename to bin/apps/nomarchy-restart-tmux diff --git a/bin/nomarchy-tui-install b/bin/apps/nomarchy-tui-install similarity index 100% rename from bin/nomarchy-tui-install rename to bin/apps/nomarchy-tui-install diff --git a/bin/nomarchy-tui-remove b/bin/apps/nomarchy-tui-remove similarity index 100% rename from bin/nomarchy-tui-remove rename to bin/apps/nomarchy-tui-remove diff --git a/bin/nomarchy-tui-remove-all b/bin/apps/nomarchy-tui-remove-all similarity index 94% rename from bin/nomarchy-tui-remove-all rename to bin/apps/nomarchy-tui-remove-all index 0ae4dde..351178f 100755 --- a/bin/nomarchy-tui-remove-all +++ b/bin/apps/nomarchy-tui-remove-all @@ -1,6 +1,6 @@ #!/bin/bash -# Remove all TUIs installed via nomarchy-tui-install. +# Remove all TUIs installed via nnomarchy-tui-install. # Identifies TUIs by their Exec pattern (xdg-terminal-exec --app-id=TUI.). set -e diff --git a/bin/nomarchy-voxtype-config b/bin/apps/nomarchy-voxtype-config similarity index 58% rename from bin/nomarchy-voxtype-config rename to bin/apps/nomarchy-voxtype-config index 27b641f..e1a6c02 100755 --- a/bin/nomarchy-voxtype-config +++ b/bin/apps/nomarchy-voxtype-config @@ -3,4 +3,4 @@ set -e # Used by Voxtype waybar module to open config on right click -exec nomarchy-launch-editor ~/.config/voxtype/config.toml +exec nnomarchy-launch-editor ~/.config/voxtype/config.toml diff --git a/bin/nomarchy-voxtype-install b/bin/apps/nomarchy-voxtype-install similarity index 73% rename from bin/nomarchy-voxtype-install rename to bin/apps/nomarchy-voxtype-install index 467b45b..3ba7078 100755 --- a/bin/nomarchy-voxtype-install +++ b/bin/apps/nomarchy-voxtype-install @@ -4,18 +4,18 @@ set -e # Install voxtype and configure it for use. if gum confirm "Install Voxtype + AI model (~150MB) to enable dictation?"; then - nomarchy-pkg-add wtype voxtype-bin + nnomarchy-pkg-add wtype voxtype-bin # Setup voxtype mkdir -p ~/.config/voxtype - cp $OMARCHY_PATH/default/voxtype/config.toml ~/.config/voxtype/ + cp ~/.config/nomarchy/default/voxtype/config.toml ~/.config/voxtype/ voxtype setup --download --no-post-install - if nomarchy-hw-vulkan; then + if nnomarchy-hw-vulkan; then voxtype setup gpu --enable || true fi voxtype setup systemd - nomarchy-restart-waybar + nnomarchy-restart-waybar notify-send " Voxtype Dictation Ready" "Press Super + Ctrl + X to toggle dictation.\nEdit ~/.config/voxtype/config.toml for options." -t 10000 fi diff --git a/bin/apps/nomarchy-voxtype-model b/bin/apps/nomarchy-voxtype-model new file mode 100755 index 0000000..9007849 --- /dev/null +++ b/bin/apps/nomarchy-voxtype-model @@ -0,0 +1,5 @@ +#!/bin/bash +set -e + +nnomarchy-launch-floating-terminal-with-presentation "voxtype setup model" +nnomarchy-restart-waybar diff --git a/bin/nomarchy-voxtype-remove b/bin/apps/nomarchy-voxtype-remove similarity index 83% rename from bin/nomarchy-voxtype-remove rename to bin/apps/nomarchy-voxtype-remove index 8eb49ca..0b4bc75 100755 --- a/bin/nomarchy-voxtype-remove +++ b/bin/apps/nomarchy-voxtype-remove @@ -3,7 +3,7 @@ set -e # Remove voxtype and its configurations. -if nomarchy-cmd-present voxtype; then +if nnomarchy-cmd-present voxtype; then echo "Uninstall Voxtype to remove dictation." # Remove services @@ -12,7 +12,7 @@ if nomarchy-cmd-present voxtype; then systemctl --user daemon-reload # Remove packages and configs - nomarchy-pkg-drop wtype voxtype-bin + nnomarchy-pkg-drop wtype voxtype-bin rm -rf ~/.config/voxtype rm -rf ~/.local/share/voxtype else diff --git a/bin/nomarchy-voxtype-status b/bin/apps/nomarchy-voxtype-status similarity index 82% rename from bin/nomarchy-voxtype-status rename to bin/apps/nomarchy-voxtype-status index 03d7e1d..06a0e9f 100755 --- a/bin/nomarchy-voxtype-status +++ b/bin/apps/nomarchy-voxtype-status @@ -1,6 +1,6 @@ #!/bin/bash -if nomarchy-cmd-present voxtype; then +if nnomarchy-cmd-present voxtype; then voxtype status --follow --extended --format json | while read -r line; do echo "$line" | jq -c '. + {alt: .class}' done diff --git a/bin/nomarchy-webapp-handler-hey b/bin/apps/nomarchy-webapp-handler-hey similarity index 83% rename from bin/nomarchy-webapp-handler-hey rename to bin/apps/nomarchy-webapp-handler-hey index f050d36..6ef9de6 100755 --- a/bin/nomarchy-webapp-handler-hey +++ b/bin/apps/nomarchy-webapp-handler-hey @@ -8,4 +8,4 @@ if [[ $url =~ ^mailto: ]]; then web_url="https://app.hey.com/messages/new?to=$email" fi -exec nomarchy-launch-webapp "$web_url" +exec nnomarchy-launch-webapp "$web_url" diff --git a/bin/nomarchy-webapp-handler-zoom b/bin/apps/nomarchy-webapp-handler-zoom similarity index 91% rename from bin/nomarchy-webapp-handler-zoom rename to bin/apps/nomarchy-webapp-handler-zoom index 82aafe9..1f0c661 100755 --- a/bin/nomarchy-webapp-handler-zoom +++ b/bin/apps/nomarchy-webapp-handler-zoom @@ -17,4 +17,4 @@ if [[ $url =~ ^zoom(mtg|us):// ]]; then fi fi -exec nomarchy-launch-webapp "$web_url" +exec nnomarchy-launch-webapp "$web_url" diff --git a/bin/nomarchy-webapp-install b/bin/apps/nomarchy-webapp-install similarity index 97% rename from bin/nomarchy-webapp-install rename to bin/apps/nomarchy-webapp-install index 1d3e7b8..ecc7e65 100755 --- a/bin/nomarchy-webapp-install +++ b/bin/apps/nomarchy-webapp-install @@ -60,7 +60,7 @@ else fi # Use custom exec if provided, otherwise default behavior -EXEC_COMMAND="${CUSTOM_EXEC:-nomarchy-launch-webapp $APP_URL}" +EXEC_COMMAND="${CUSTOM_EXEC:-nnomarchy-launch-webapp $APP_URL}" # Create application .desktop file DESKTOP_FILE="$HOME/.local/share/applications/$APP_NAME.desktop" diff --git a/bin/nomarchy-webapp-remove b/bin/apps/nomarchy-webapp-remove similarity index 92% rename from bin/nomarchy-webapp-remove rename to bin/apps/nomarchy-webapp-remove index b927abc..9e9fd6e 100755 --- a/bin/nomarchy-webapp-remove +++ b/bin/apps/nomarchy-webapp-remove @@ -8,7 +8,7 @@ DESKTOP_DIR="$HOME/.local/share/applications/" if (( $# == 0 )); then # Find all web apps while IFS= read -r -d '' file; do - if grep -q '^Exec=.*\(nomarchy-launch-webapp\|nomarchy-webapp-handler\).*' "$file"; then + if grep -q '^Exec=.*\(nnomarchy-launch-webapp\|nnomarchy-webapp-handler\).*' "$file"; then WEB_APPS+=("$(basename "${file%.desktop}")") fi done < <(find "$DESKTOP_DIR" -name '*.desktop' -print0) diff --git a/bin/nomarchy-webapp-remove-all b/bin/apps/nomarchy-webapp-remove-all similarity index 74% rename from bin/nomarchy-webapp-remove-all rename to bin/apps/nomarchy-webapp-remove-all index 80b5c50..711e11b 100755 --- a/bin/nomarchy-webapp-remove-all +++ b/bin/apps/nomarchy-webapp-remove-all @@ -1,7 +1,7 @@ #!/bin/bash -# Remove all web apps installed via nomarchy-webapp-install. -# Identifies web apps by their Exec pattern (nomarchy-launch-webapp or nomarchy-webapp-handler). +# Remove all web apps installed via nnomarchy-webapp-install. +# Identifies web apps by their Exec pattern (nnomarchy-launch-webapp or nnomarchy-webapp-handler). set -e @@ -12,7 +12,7 @@ echo "Scanning for web apps in $APP_DIR..." webapp_desktop_files=() while IFS= read -r -d '' file; do - if grep -q "Exec=nomarchy-launch-webapp\|Exec=nomarchy-webapp-handler" "$file" 2>/dev/null; then + if grep -q "Exec=nnomarchy-launch-webapp\|Exec=nnomarchy-webapp-handler" "$file" 2>/dev/null; then webapp_desktop_files+=("$file") fi done < <(find "$APP_DIR" -maxdepth 1 -name "*.desktop" -print0 2>/dev/null) diff --git a/bin/nomarchy-windows-vm b/bin/apps/nomarchy-windows-vm similarity index 88% rename from bin/nomarchy-windows-vm rename to bin/apps/nomarchy-windows-vm index 3548789..5566be2 100755 --- a/bin/nomarchy-windows-vm +++ b/bin/apps/nomarchy-windows-vm @@ -35,22 +35,22 @@ install_windows() { check_prerequisites - nomarchy-pkg-add freerdp openbsd-netcat gum + nnomarchy-pkg-add freerdp openbsd-netcat gum mkdir -p "$HOME/.windows" mkdir -p "$HOME/.config/windows" mkdir -p "$HOME/.local/share/applications/icons" # Install Windows VM icon and desktop file - if [[ -f $OMARCHY_PATH/applications/icons/windows.png ]]; then - cp "$OMARCHY_PATH/applications/icons/windows.png" "$HOME/.local/share/applications/icons/windows.png" + if [[ -f $NOMARCHY_PATH/applications/icons/windows.png ]]; then + cp "$NOMARCHY_PATH/applications/icons/windows.png" "$HOME/.local/share/applications/icons/windows.png" fi cat << EOF | tee "$HOME/.local/share/applications/windows-vm.desktop" > /dev/null [Desktop Entry] Name=Windows Comment=Start Windows VM via Docker and connect with RDP -Exec=uwsm app -- nomarchy-windows-vm launch +Exec=uwsm app -- nnomarchy-windows-vm launch Icon=$HOME/.local/share/applications/icons/windows.png Terminal=false Type=Application @@ -177,7 +177,7 @@ EOF services: windows: image: dockurr/windows - container_name: nomarchy-windows + container_name: nnomarchy-windows environment: VERSION: "11" RAM_SIZE: "$SELECTED_RAM" @@ -236,7 +236,7 @@ EOF echo "" echo "Once finished, launch 'Windows' via Super + Space" echo "" - echo "To stop the VM: nomarchy-windows-vm stop" + echo "To stop the VM: nnomarchy-windows-vm stop" echo "To change resources: ~/.config/windows/docker-compose.yml" echo "" } @@ -269,7 +269,7 @@ launch_windows() { # Check if config exists if [[ ! -f $COMPOSE_FILE ]]; then - echo "Windows VM not configured. Please run: nomarchy-windows-vm install" + echo "Windows VM not configured. Please run: nnomarchy-windows-vm install" exit 1 fi @@ -282,7 +282,7 @@ launch_windows() { [[ -z $WIN_PASS ]] && WIN_PASS="admin" # Check if container is already running - CONTAINER_STATUS=$(docker inspect --format='{{.State.Status}}' nomarchy-windows 2>/dev/null) + CONTAINER_STATUS=$(docker inspect --format='{{.State.Status}}' nnomarchy-windows 2>/dev/null) if [[ $CONTAINER_STATUS != "running" ]]; then echo "Starting Windows VM..." @@ -292,21 +292,21 @@ launch_windows() { if ! docker-compose -f "$COMPOSE_FILE" up -d 2>&1; then echo "❌ Failed to start Windows VM!" - echo " Try checking: nomarchy-windows-vm status" - echo " View logs: docker logs nomarchy-windows" + echo " Try checking: nnomarchy-windows-vm status" + echo " View logs: docker logs nnomarchy-windows" notify-send -u critical "Windows VM" "Failed to start Windows VM" exit 1 fi echo "Waiting for Windows VM to start..." WAIT_COUNT=0 - until docker logs nomarchy-windows 2>&1 | grep -qi "windows started successfully"; do + until docker logs nnomarchy-windows 2>&1 | grep -qi "windows started successfully"; do sleep 2 WAIT_COUNT=$((WAIT_COUNT + 1)) if (( WAIT_COUNT > 60 )); then # 2 minutes timeout echo "" echo "❌ Timeout: Windows VM failed to start within 2 minutes" - echo " Check logs: docker logs nomarchy-windows" + echo " Check logs: docker logs nnomarchy-windows" exit 1 fi done @@ -315,7 +315,7 @@ launch_windows() { # Build the connection info if [[ $KEEP_ALIVE = "true" ]]; then LIFECYCLE="VM will keep running after RDP closes -To stop: nomarchy-windows-vm stop" +To stop: nnomarchy-windows-vm stop" else LIFECYCLE="VM will auto-stop when RDP closes" fi @@ -342,7 +342,7 @@ To stop: nomarchy-windows-vm stop" # If scale is less than 130%, don't set any scale (use default 100) # Connect with RDP in fullscreen (auto-detects resolution) - xfreerdp3 /u:"$WIN_USER" /p:"$WIN_PASS" /v:127.0.0.1:3389 -grab-keyboard /sound /microphone /clipboard /cert:ignore /title:"Windows VM - Nomarchy" /dynamic-resolution /gfx:AVC444 /floatbar:sticky:off,default:visible,show:fullscreen $RDP_SCALE + xfreerdp3 /u:"$WIN_USER" /p:"$WIN_PASS" /v:127.0.0.1:3389 -grab-keyboard /sound /microphone /clipboard /cert:ignore /title:"Windows VM - Nnomarchy" /dynamic-resolution /gfx:AVC444 /floatbar:sticky:off,default:visible,show:fullscreen $RDP_SCALE # After RDP closes, stop the container unless --keep-alive was specified if [[ $KEEP_ALIVE = "false" ]]; then @@ -353,7 +353,7 @@ To stop: nomarchy-windows-vm stop" else echo "" echo "RDP session closed. Windows VM is still running." - echo "To stop it: nomarchy-windows-vm stop" + echo "To stop it: nnomarchy-windows-vm stop" fi } @@ -371,15 +371,15 @@ stop_windows() { status_windows() { if [[ ! -f $COMPOSE_FILE ]]; then echo "Windows VM not configured." - echo "To set up: nomarchy-windows-vm install" + echo "To set up: nnomarchy-windows-vm install" exit 1 fi - CONTAINER_STATUS=$(docker inspect --format='{{.State.Status}}' nomarchy-windows 2>/dev/null) + CONTAINER_STATUS=$(docker inspect --format='{{.State.Status}}' nnomarchy-windows 2>/dev/null) if [[ -z $CONTAINER_STATUS ]]; then echo "Windows VM container not found." - echo "To start: nomarchy-windows-vm launch" + echo "To start: nnomarchy-windows-vm launch" elif [[ $CONTAINER_STATUS = "running" ]]; then gum style \ --border normal \ @@ -391,16 +391,16 @@ status_windows() { "Web interface: http://127.0.0.1:8006" \ "RDP available: port 3389" \ "" \ - "To connect: nomarchy-windows-vm launch" \ - "To stop: nomarchy-windows-vm stop" + "To connect: nnomarchy-windows-vm launch" \ + "To stop: nnomarchy-windows-vm stop" else echo "Windows VM is stopped (status: $CONTAINER_STATUS)" - echo "To start: nomarchy-windows-vm launch" + echo "To start: nnomarchy-windows-vm launch" fi } show_usage() { - echo "Usage: nomarchy-windows-vm [command] [options]" + echo "Usage: nnomarchy-windows-vm [command] [options]" echo "" echo "Commands:" echo " install Install and configure Windows VM" @@ -413,10 +413,10 @@ show_usage() { echo " help Show this help message" echo "" echo "Examples:" - echo " nomarchy-windows-vm install # Set up Windows VM for first time" - echo " nomarchy-windows-vm launch # Connect to VM (auto-stop on exit)" - echo " nomarchy-windows-vm launch -k # Connect to VM (keep running)" - echo " nomarchy-windows-vm stop # Shut down the VM" + echo " nnomarchy-windows-vm install # Set up Windows VM for first time" + echo " nnomarchy-windows-vm launch # Connect to VM (auto-stop on exit)" + echo " nnomarchy-windows-vm launch -k # Connect to VM (keep running)" + echo " nnomarchy-windows-vm stop # Shut down the VM" } # Main command dispatcher diff --git a/bin/nomarchy-battery-capacity b/bin/hardware/nomarchy-battery-capacity similarity index 75% rename from bin/nomarchy-battery-capacity rename to bin/hardware/nomarchy-battery-capacity index 341daed..e777eb4 100755 --- a/bin/nomarchy-battery-capacity +++ b/bin/hardware/nomarchy-battery-capacity @@ -1,7 +1,7 @@ #!/bin/bash # Returns the battery full capacity in Wh (rounded to whole number). -# Used by nomarchy-battery-status for displaying battery capacity. +# Used by nnomarchy-battery-status for displaying battery capacity. battery_info=$(upower -i $(upower -e | grep BAT)) diff --git a/bin/nomarchy-battery-monitor b/bin/hardware/nomarchy-battery-monitor similarity index 82% rename from bin/nomarchy-battery-monitor rename to bin/hardware/nomarchy-battery-monitor index a6907ba..e835b1e 100755 --- a/bin/nomarchy-battery-monitor +++ b/bin/hardware/nomarchy-battery-monitor @@ -3,13 +3,13 @@ # Designed to be run by systemd timer every 30 seconds and alerts if battery is low BATTERY_THRESHOLD=10 -NOTIFICATION_FLAG="/run/user/$UID/nomarchy_battery_notified" -BATTERY_LEVEL=$(nomarchy-battery-remaining) +NOTIFICATION_FLAG="/run/user/$UID/nnomarchy_battery_notified" +BATTERY_LEVEL=$(nnomarchy-battery-remaining) BATTERY_STATE=$(upower -i $(upower -e | grep 'BAT') | grep -E "state" | awk '{print $2}') send_notification() { notify-send -u critical "󱐋 Time to recharge!" "Battery is down to ${1}%" -i battery-caution -t 30000 - nomarchy-hook battery-low "$1" + nnomarchy-hook battery-low "$1" } if [[ -n $BATTERY_LEVEL && $BATTERY_LEVEL =~ ^[0-9]+$ ]]; then diff --git a/bin/nomarchy-battery-present b/bin/hardware/nomarchy-battery-present similarity index 100% rename from bin/nomarchy-battery-present rename to bin/hardware/nomarchy-battery-present diff --git a/bin/nomarchy-battery-remaining b/bin/hardware/nomarchy-battery-remaining similarity index 100% rename from bin/nomarchy-battery-remaining rename to bin/hardware/nomarchy-battery-remaining diff --git a/bin/nomarchy-battery-remaining-time b/bin/hardware/nomarchy-battery-remaining-time similarity index 100% rename from bin/nomarchy-battery-remaining-time rename to bin/hardware/nomarchy-battery-remaining-time diff --git a/bin/nomarchy-battery-status b/bin/hardware/nomarchy-battery-status similarity index 89% rename from bin/nomarchy-battery-status rename to bin/hardware/nomarchy-battery-status index 3674bd3..9cd1d16 100755 --- a/bin/nomarchy-battery-status +++ b/bin/hardware/nomarchy-battery-status @@ -18,8 +18,8 @@ power_rate=$(echo "$battery_info" | awk '/energy-rate/ { }') state=$(echo "$battery_info" | awk '/state/ { print $2; exit }') -time_remaining=$(nomarchy-battery-remaining-time) -capacity=$(nomarchy-battery-capacity) +time_remaining=$(nnomarchy-battery-remaining-time) +capacity=$(nnomarchy-battery-capacity) if [[ $state == "charging" ]]; then echo "󰁹 Battery ${percentage}% · ${time_remaining} to full ·  ${power_rate}W / ${capacity}Wh" diff --git a/bin/nomarchy-brightness-display b/bin/hardware/nomarchy-brightness-display similarity index 80% rename from bin/nomarchy-brightness-display rename to bin/hardware/nomarchy-brightness-display index 1d04bfd..260d12a 100755 --- a/bin/nomarchy-brightness-display +++ b/bin/hardware/nomarchy-brightness-display @@ -1,7 +1,7 @@ #!/bin/bash # Adjust brightness on the most likely display device. -# Usage: nomarchy-brightness-display +# Usage: nnomarchy-brightness-display step="${1:-+5%}" @@ -18,4 +18,4 @@ done brightnessctl -d "$device" set "$step" >/dev/null # Use SwayOSD to display the new brightness setting. -nomarchy-swayosd-brightness "$(brightnessctl -d "$device" -m | cut -d',' -f4 | tr -d '%')" +nnomarchy-swayosd-brightness "$(brightnessctl -d "$device" -m | cut -d',' -f4 | tr -d '%')" diff --git a/bin/nomarchy-brightness-display-apple b/bin/hardware/nomarchy-brightness-display-apple similarity index 88% rename from bin/nomarchy-brightness-display-apple rename to bin/hardware/nomarchy-brightness-display-apple index f3a937d..0bfa7af 100755 --- a/bin/nomarchy-brightness-display-apple +++ b/bin/hardware/nomarchy-brightness-display-apple @@ -8,5 +8,5 @@ else device="$(sudo asdcontrol --detect /dev/usb/hiddev* | grep ^/dev/usb/hiddev | cut -d: -f1)" sudo asdcontrol "$device" -- "$1" >/dev/null value="$(sudo asdcontrol "$device" | awk -F= '/BRIGHTNESS=/{print $2+0}')" - nomarchy-swayosd-brightness "$(( value * 100 / 60000 ))" + nnomarchy-swayosd-brightness "$(( value * 100 / 60000 ))" fi diff --git a/bin/nomarchy-brightness-keyboard b/bin/hardware/nomarchy-brightness-keyboard similarity index 92% rename from bin/nomarchy-brightness-keyboard rename to bin/hardware/nomarchy-brightness-keyboard index ded5590..d89f232 100755 --- a/bin/nomarchy-brightness-keyboard +++ b/bin/hardware/nomarchy-brightness-keyboard @@ -1,7 +1,7 @@ #!/bin/bash # Adjust keyboard backlight brightness using available steps. -# Usage: nomarchy-brightness-keyboard +# Usage: nnomarchy-brightness-keyboard direction="${1:-up}" @@ -39,4 +39,4 @@ brightnessctl -d "$device" set "$new_brightness" >/dev/null # Use SwayOSD to display the new brightness setting. percent=$((new_brightness * 100 / max_brightness)) -nomarchy-swayosd-kbd-brightness "$percent" +nnomarchy-swayosd-kbd-brightness "$percent" diff --git a/bin/nomarchy-haptic-touchpad b/bin/hardware/nomarchy-haptic-touchpad similarity index 100% rename from bin/nomarchy-haptic-touchpad rename to bin/hardware/nomarchy-haptic-touchpad diff --git a/bin/nomarchy-hw-asus-rog b/bin/hardware/nomarchy-hw-asus-rog similarity index 100% rename from bin/nomarchy-hw-asus-rog rename to bin/hardware/nomarchy-hw-asus-rog diff --git a/bin/nomarchy-hw-framework16 b/bin/hardware/nomarchy-hw-framework16 similarity index 81% rename from bin/nomarchy-hw-framework16 rename to bin/hardware/nomarchy-hw-framework16 index 5907e75..2bf65d9 100755 --- a/bin/nomarchy-hw-framework16 +++ b/bin/hardware/nomarchy-hw-framework16 @@ -3,4 +3,4 @@ # Detect whether the computer is a Framework Laptop 16. [[ $(cat /sys/class/dmi/id/sys_vendor 2>/dev/null) == "Framework" ]] && - nomarchy-hw-match "Laptop 16" + nnomarchy-hw-match "Laptop 16" diff --git a/bin/nomarchy-hw-intel b/bin/hardware/nomarchy-hw-intel similarity index 100% rename from bin/nomarchy-hw-intel rename to bin/hardware/nomarchy-hw-intel diff --git a/bin/nomarchy-hw-intel-ptl b/bin/hardware/nomarchy-hw-intel-ptl similarity index 100% rename from bin/nomarchy-hw-intel-ptl rename to bin/hardware/nomarchy-hw-intel-ptl diff --git a/bin/nomarchy-hw-match b/bin/hardware/nomarchy-hw-match similarity index 80% rename from bin/nomarchy-hw-match rename to bin/hardware/nomarchy-hw-match index 9ba6466..78c4882 100755 --- a/bin/nomarchy-hw-match +++ b/bin/hardware/nomarchy-hw-match @@ -1,6 +1,6 @@ #!/bin/bash # Match against the computer's DMI product name (case-insensitive). -# Usage: nomarchy-hw-match "XPS" +# Usage: nnomarchy-hw-match "XPS" grep -qi "$1" /sys/class/dmi/id/product_name 2>/dev/null diff --git a/bin/nomarchy-hw-surface b/bin/hardware/nomarchy-hw-surface similarity index 83% rename from bin/nomarchy-hw-surface rename to bin/hardware/nomarchy-hw-surface index 4dbb185..57ab972 100755 --- a/bin/nomarchy-hw-surface +++ b/bin/hardware/nomarchy-hw-surface @@ -3,4 +3,4 @@ # Detect whether the computer is a Microsoft Surface device. [[ $(cat /sys/class/dmi/id/sys_vendor 2>/dev/null) == "Microsoft Corporation" ]] && - nomarchy-hw-match "Surface" + nnomarchy-hw-match "Surface" diff --git a/bin/nomarchy-hw-vulkan b/bin/hardware/nomarchy-hw-vulkan similarity index 100% rename from bin/nomarchy-hw-vulkan rename to bin/hardware/nomarchy-hw-vulkan diff --git a/bin/nomarchy-powerprofiles-list b/bin/hardware/nomarchy-powerprofiles-list similarity index 76% rename from bin/nomarchy-powerprofiles-list rename to bin/hardware/nomarchy-powerprofiles-list index 27083c3..aa5e5ea 100755 --- a/bin/nomarchy-powerprofiles-list +++ b/bin/hardware/nomarchy-powerprofiles-list @@ -1,7 +1,7 @@ #!/bin/bash # Returns a list of all the available power profiles on the system. -# Used by the Nomarchy Menu under Setup > Power Profile. +# Used by the Nnomarchy Menu under Setup > Power Profile. powerprofilesctl list | awk '/^\s*[* ]\s*[a-zA-Z0-9\-]+:$/ { gsub(/^[*[:space:]]+|:$/,""); print }' | diff --git a/bin/nomarchy-restart-makima b/bin/hardware/nomarchy-restart-makima similarity index 83% rename from bin/nomarchy-restart-makima rename to bin/hardware/nomarchy-restart-makima index f3f2e8c..585f3b5 100755 --- a/bin/nomarchy-restart-makima +++ b/bin/hardware/nomarchy-restart-makima @@ -1,5 +1,5 @@ #!/bin/bash -# Restart makima - key remapping service for remapping Copilot key to Nomarchy Menu +# Restart makima - key remapping service for remapping Copilot key to Nnomarchy Menu sudo systemctl restart makima diff --git a/bin/nomarchy-restart-trackpad b/bin/hardware/nomarchy-restart-trackpad similarity index 100% rename from bin/nomarchy-restart-trackpad rename to bin/hardware/nomarchy-restart-trackpad diff --git a/bin/nomarchy-toggle-hybrid-gpu b/bin/hardware/nomarchy-toggle-hybrid-gpu similarity index 91% rename from bin/nomarchy-toggle-hybrid-gpu rename to bin/hardware/nomarchy-toggle-hybrid-gpu index 31cb351..9c2159a 100755 --- a/bin/nomarchy-toggle-hybrid-gpu +++ b/bin/hardware/nomarchy-toggle-hybrid-gpu @@ -1,7 +1,7 @@ #!/usr/bin/env bash # Toggle dedicated vs integrated GPU mode via supergfxd (for hybrid gpu laptops, like Asus G14). -# Declarative enablement + Runtime mode switching for Nomarchy NixOS. +# Declarative enablement + Runtime mode switching for Nnomarchy NixOS. STATE_FILE="/etc/nixos/state.json" @@ -30,14 +30,14 @@ case "$gpu_mode" in if gum confirm "Switch to Hybrid mode (enables dGPU) and reboot?"; then supergfxctl -m Hybrid echo "Switching to Hybrid mode..." - nomarchy-system-reboot + nnomarchy-system-reboot fi ;; "Hybrid") if gum confirm "Switch to Integrated mode (disables dGPU) and reboot?"; then supergfxctl -m Integrated echo "Switching to Integrated mode..." - nomarchy-system-reboot + nnomarchy-system-reboot fi ;; *) diff --git a/bin/nomarchy-wifi-powersave b/bin/hardware/nomarchy-wifi-powersave similarity index 76% rename from bin/nomarchy-wifi-powersave rename to bin/hardware/nomarchy-wifi-powersave index 6ecc68c..f13be5c 100755 --- a/bin/nomarchy-wifi-powersave +++ b/bin/hardware/nomarchy-wifi-powersave @@ -1,14 +1,14 @@ #!/usr/bin/env bash # Toggles wifi power saving declaratively. -# Usage: nomarchy-wifi-powersave +# Usage: nnomarchy-wifi-powersave STATE_FILE="/etc/nixos/state.json" case "$1" in on) value="true" ;; off) value="false" ;; -*) echo "Usage: nomarchy-wifi-powersave "; exit 1 ;; +*) echo "Usage: nnomarchy-wifi-powersave "; exit 1 ;; esac sudo jq ".wifi.powersave = $value" "$STATE_FILE" > /tmp/state.json && sudo mv /tmp/state.json "$STATE_FILE" diff --git a/bin/nomarchy-hook b/bin/nomarchy-hook deleted file mode 100755 index 7f4db73..0000000 --- a/bin/nomarchy-hook +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/bash - -# Run a named hook, like post-update (available in ~/.config/nomarchy/hooks/post-update). - -set -e - -if (( $# < 1 )); then - echo "Usage: nomarchy-hook [name] [args...]" - exit 1 -fi - -HOOK=$1 -HOOK_PATH="$HOME/.config/nomarchy/hooks/$1" -shift - -if [[ -f $HOOK_PATH ]]; then - bash "$HOOK_PATH" "$@" -fi diff --git a/bin/nomarchy-launch-audio b/bin/nomarchy-launch-audio deleted file mode 100755 index 6df6e25..0000000 --- a/bin/nomarchy-launch-audio +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash - -# Launch the Nomarchy audio controls TUI (provided by wiremix). - -nomarchy-launch-or-focus-tui wiremix diff --git a/bin/nomarchy-launch-bluetooth b/bin/nomarchy-launch-bluetooth deleted file mode 100755 index cbe34b7..0000000 --- a/bin/nomarchy-launch-bluetooth +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash - -# Launch the Nomarchy bluetooth controls TUI (provided by bluetui). -# Also attempts to unblock bluetooth service if rfkill had blocked it. - -rfkill unblock bluetooth -exec nomarchy-launch-or-focus-tui bluetui diff --git a/bin/nomarchy-launch-floating-terminal-with-presentation b/bin/nomarchy-launch-floating-terminal-with-presentation deleted file mode 100755 index ef4acf6..0000000 --- a/bin/nomarchy-launch-floating-terminal-with-presentation +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash - -# Launch a floating terminal with the Nomarchy logo presentation, then execute the command passed in, and finally end with the nomarchy-show-done presentation. -# Used by actions such as Update System. - -cmd="$*" -exec setsid uwsm-app -- xdg-terminal-exec --app-id=org.nomarchy.terminal --title=Nomarchy -e bash -c "nomarchy-show-logo; $cmd; if (( \$? != 130 )); then nomarchy-show-done; fi" diff --git a/bin/nomarchy-launch-or-focus-tui b/bin/nomarchy-launch-or-focus-tui deleted file mode 100755 index a387124..0000000 --- a/bin/nomarchy-launch-or-focus-tui +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash - -# Launch or focus on a given TUI identified by the passed in as the command. -# Use by commands like nomarchy-launch-wifi to ensure there is only one wifi configuration screen open. - -APP_ID="org.nomarchy.$(basename "$1")" -LAUNCH_COMMAND="nomarchy-launch-tui $@" - -exec nomarchy-launch-or-focus "$APP_ID" "$LAUNCH_COMMAND" diff --git a/bin/nomarchy-launch-tui b/bin/nomarchy-launch-tui deleted file mode 100755 index 300ac68..0000000 --- a/bin/nomarchy-launch-tui +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash - -# Launch the TUI command passed in as an argument in the default terminal with an org.nomarchy.COMMAND app id for styling. - -exec setsid uwsm-app -- xdg-terminal-exec --app-id=org.nomarchy.$(basename $1) -e "$1" "${@:2}" diff --git a/bin/nomarchy-refresh-fastfetch b/bin/nomarchy-refresh-fastfetch deleted file mode 100755 index ac397bb..0000000 --- a/bin/nomarchy-refresh-fastfetch +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash - -# Overwrite the user config for fastfetch with the Nomarchy default. - -nomarchy-refresh-config fastfetch/config.jsonc diff --git a/bin/nomarchy-restart-btop b/bin/nomarchy-restart-btop deleted file mode 100755 index 288a800..0000000 --- a/bin/nomarchy-restart-btop +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash - -# Reload btop configuration (used by the Nomarchy theme switching). - -pkill -SIGUSR2 btop diff --git a/bin/nomarchy-restart-hyprctl b/bin/nomarchy-restart-hyprctl deleted file mode 100755 index 92c9487..0000000 --- a/bin/nomarchy-restart-hyprctl +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash - -# Reload hyprland configuration (used by the Nomarchy theme switching). - -hyprctl reload >/dev/null diff --git a/bin/nomarchy-restart-mako b/bin/nomarchy-restart-mako deleted file mode 100755 index a0633b1..0000000 --- a/bin/nomarchy-restart-mako +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash - -# Reload mako configuration (used by the Nomarchy theme switching). - -makoctl reload diff --git a/bin/nomarchy-restart-swayosd b/bin/nomarchy-restart-swayosd deleted file mode 100755 index d87a477..0000000 --- a/bin/nomarchy-restart-swayosd +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -nomarchy-restart-app swayosd-server diff --git a/bin/nomarchy-restart-waybar b/bin/nomarchy-restart-waybar deleted file mode 100755 index 832775c..0000000 --- a/bin/nomarchy-restart-waybar +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -nomarchy-restart-app waybar diff --git a/bin/nomarchy-setup-makima b/bin/nomarchy-setup-makima deleted file mode 100755 index b480463..0000000 --- a/bin/nomarchy-setup-makima +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/bash - -# Setup makima - key remapping service for remapping Copilot key to Nomarchy Menu - -CONFIG_FILE="$HOME/.config/makima/AT Translated Set 2 keyboard.toml" - -if [[ ! -f $CONFIG_FILE ]]; then - nomarchy-pkg-add makima-bin - - mkdir -p "$HOME/.config/makima" - cp "$OMARCHY_PATH/default/makima/AT Translated Set 2 keyboard.toml" "$CONFIG_FILE" - - sudo mkdir -p /etc/systemd/system/makima.service.d - sudo tee /etc/systemd/system/makima.service.d/override.conf >/dev/null </dev/null || true -fi diff --git a/bin/nomarchy-test-vm b/bin/nomarchy-test-vm deleted file mode 100755 index 32acb69..0000000 --- a/bin/nomarchy-test-vm +++ /dev/null @@ -1,15 +0,0 @@ -#!/usr/bin/env bash - -# Build and run the Nomarchy VM (installed environment) for testing. - -echo "Building Nomarchy VM (Installed Environment)..." -echo "Note: To test the INSTALLER, run 'nomarchy-test-installer' instead." -nix build .#nixosConfigurations.vm.config.system.build.vm - -if [ $? -eq 0 ]; then - echo "Success! Launching VM..." - ./result/bin/run-nomarchy-vm -else - echo "Error: VM build failed." - exit 1 -fi diff --git a/bin/nomarchy-theme-bg-install b/bin/nomarchy-theme-bg-install deleted file mode 100755 index db3e4b9..0000000 --- a/bin/nomarchy-theme-bg-install +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash - -CURRENT_THEME_NAME=$(cat "$HOME/.config/nomarchy/current/theme.name") -THEME_USER_BACKGROUNDS="$HOME/.config/nomarchy/backgrounds/$CURRENT_THEME_NAME" - -mkdir -p "$THEME_USER_BACKGROUNDS" -nautilus "$THEME_USER_BACKGROUNDS" diff --git a/bin/nomarchy-theme-install b/bin/nomarchy-theme-install deleted file mode 100755 index 0916391..0000000 --- a/bin/nomarchy-theme-install +++ /dev/null @@ -1,33 +0,0 @@ -#!/bin/bash - -# nomarchy-theme-install: Install a new theme from a git repo for Nomarchy -# Usage: nomarchy-theme-install - -if [[ -z $1 ]]; then - echo -e "\e[32mSee https://manuals.omamix.org/2/the-nomarchy-manual/90/extra-themes\n\e[0m" - REPO_URL=$(gum input --placeholder="Git repo URL for theme" --header="") -else - REPO_URL="$1" -fi - -if [[ -z $REPO_URL ]]; then - exit 1 -fi - -THEMES_DIR="$HOME/.config/nomarchy/themes" -THEME_NAME=$(basename "$REPO_URL" .git | sed -E 's/^nomarchy-//; s/-theme$//') -THEME_PATH="$THEMES_DIR/$THEME_NAME" - -# Remove existing theme if present -if [[ -d $THEME_PATH ]]; then - rm -rf "$THEME_PATH" -fi - -# Clone the repo directly to ~/.config/nomarchy/themes -if ! git clone "$REPO_URL" "$THEME_PATH"; then - echo "Error: Failed to clone theme repo." - exit 1 -fi - -# Apply the new theme with nomarchy-theme-set -nomarchy-theme-set $THEME_NAME diff --git a/bin/nomarchy-theme-list b/bin/nomarchy-theme-list deleted file mode 100755 index 2e96dad..0000000 --- a/bin/nomarchy-theme-list +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash - -{ - find ~/.config/nomarchy/themes/ -mindepth 1 -maxdepth 1 \( -type d -o -type l \) -printf '%f\n' - find "$OMARCHY_PATH/themes/" -mindepth 1 -maxdepth 1 -type d -printf '%f\n' -} | sort -u | while read -r name; do - echo "$name" | sed -E 's/(^|-)([a-z])/\1\u\2/g; s/-/ /g' -done diff --git a/bin/nomarchy-theme-refresh b/bin/nomarchy-theme-refresh deleted file mode 100755 index a3dc806..0000000 --- a/bin/nomarchy-theme-refresh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash - -# Refresh the current theme from its templates. - -THEME_NAME_PATH="$HOME/.config/nomarchy/current/theme.name" - -if [[ -f $THEME_NAME_PATH ]]; then - nomarchy-theme-set "$(cat $THEME_NAME_PATH)" -fi diff --git a/bin/nomarchy-theme-set-keyboard b/bin/nomarchy-theme-set-keyboard deleted file mode 100755 index 24b939e..0000000 --- a/bin/nomarchy-theme-set-keyboard +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash - -nomarchy-theme-set-keyboard-asus-rog -nomarchy-theme-set-keyboard-f16 diff --git a/bin/nomarchy-theme-set-keyboard-asus-rog b/bin/nomarchy-theme-set-keyboard-asus-rog deleted file mode 100755 index a705674..0000000 --- a/bin/nomarchy-theme-set-keyboard-asus-rog +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash - -ASUSCTL_THEME=~/.config/nomarchy/current/theme/keyboard.rgb - -if nomarchy-cmd-present asusctl; then - asusctl aura effect static -c $(sed 's/^#//' $ASUSCTL_THEME) -fi diff --git a/bin/nomarchy-voxtype-model b/bin/nomarchy-voxtype-model deleted file mode 100755 index bd2d5ce..0000000 --- a/bin/nomarchy-voxtype-model +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash -set -e - -nomarchy-launch-floating-terminal-with-presentation "voxtype setup model" -nomarchy-restart-waybar diff --git a/bin/nomarchy-hibernation-available b/bin/system/nomarchy-hibernation-available similarity index 90% rename from bin/nomarchy-hibernation-available rename to bin/system/nomarchy-hibernation-available index 02740a5..6a73f58 100755 --- a/bin/nomarchy-hibernation-available +++ b/bin/system/nomarchy-hibernation-available @@ -11,7 +11,7 @@ SWAPSIZE=$(( 1024 * ${SWAPSIZE_KB:-0} )) HIBERNATION_IMAGE_SIZE=$(cat /sys/power/image_size) -if (( SWAPSIZE > HIBERNATION_IMAGE_SIZE )) && [[ -f /etc/mkinitcpio.conf.d/nomarchy_resume.conf ]]; then +if (( SWAPSIZE > HIBERNATION_IMAGE_SIZE )) && [[ -f /etc/mkinitcpio.conf.d/nnomarchy_resume.conf ]]; then exit 0 else exit 1 diff --git a/bin/nomarchy-hibernation-remove b/bin/system/nomarchy-hibernation-remove similarity index 96% rename from bin/nomarchy-hibernation-remove rename to bin/system/nomarchy-hibernation-remove index 3cb5127..0177de8 100755 --- a/bin/nomarchy-hibernation-remove +++ b/bin/system/nomarchy-hibernation-remove @@ -3,7 +3,7 @@ # Removes hibernation setup: disables swap, removes swapfile, removes fstab entry, # removes resume hook, and removes suspend-then-hibernate configuration. -MKINITCPIO_CONF="/etc/mkinitcpio.conf.d/nomarchy_resume.conf" +MKINITCPIO_CONF="/etc/mkinitcpio.conf.d/nnomarchy_resume.conf" # Check if hibernation is configured if [[ ! -f $MKINITCPIO_CONF ]] || ! grep -q "^HOOKS+=(resume)$" "$MKINITCPIO_CONF"; then diff --git a/bin/nomarchy-hibernation-setup b/bin/system/nomarchy-hibernation-setup similarity index 93% rename from bin/nomarchy-hibernation-setup rename to bin/system/nomarchy-hibernation-setup index 8ba69d7..03903a9 100755 --- a/bin/nomarchy-hibernation-setup +++ b/bin/system/nomarchy-hibernation-setup @@ -13,7 +13,7 @@ if ! command -v limine-mkinitcpio &>/dev/null; then exit 0 fi -MKINITCPIO_CONF="/etc/mkinitcpio.conf.d/nomarchy_resume.conf" +MKINITCPIO_CONF="/etc/mkinitcpio.conf.d/nnomarchy_resume.conf" # Check if hibernation is already configured if [[ -f $MKINITCPIO_CONF ]] && grep -q "^HOOKS+=(resume)$" "$MKINITCPIO_CONF"; then @@ -63,9 +63,6 @@ sudo mkdir -p /etc/mkinitcpio.conf.d echo "Adding resume hook to $MKINITCPIO_CONF" echo "HOOKS+=(resume)" | sudo tee "$MKINITCPIO_CONF" >/dev/null -# Ensure keyboard backlight doesn't prevent sleep -sudo cp -p "$OMARCHY_PATH/default/systemd/system-sleep/keyboard-backlight" /usr/lib/systemd/system-sleep/ - # Add resume= kernel parameters so the initramfs resume hook knows where to find the # hibernation image. Without these, resume happens late (after GPU drivers load) and fails. RESUME_DROP_IN="/etc/limine-entry-tool.d/resume.conf" @@ -98,5 +95,5 @@ sudo limine-update echo if [[ $1 != "--force" ]] && gum confirm "Reboot to enable hibernation?"; then - nomarchy-system-reboot + nnomarchy-system-reboot fi diff --git a/bin/nomarchy-pkg-add b/bin/system/nomarchy-pkg-add similarity index 92% rename from bin/nomarchy-pkg-add rename to bin/system/nomarchy-pkg-add index c1e0643..06b424d 100755 --- a/bin/nomarchy-pkg-add +++ b/bin/system/nomarchy-pkg-add @@ -3,7 +3,7 @@ PKG_NAME="$1" if [ -z "$PKG_NAME" ]; then - echo "Usage: nomarchy-pkg-add " + echo "Usage: nnomarchy-pkg-add " exit 1 fi diff --git a/bin/nomarchy-pkg-remove b/bin/system/nomarchy-pkg-remove similarity index 84% rename from bin/nomarchy-pkg-remove rename to bin/system/nomarchy-pkg-remove index 0909cc3..b0cd5ad 100755 --- a/bin/nomarchy-pkg-remove +++ b/bin/system/nomarchy-pkg-remove @@ -3,14 +3,14 @@ PKG_NAME="$1" if [ -z "$PKG_NAME" ]; then - echo "Usage: nomarchy-pkg-remove " + echo "Usage: nnomarchy-pkg-remove " exit 1 fi STATE_FILE="$HOME/.config/home-manager/user-packages.json" if [ ! -f "$STATE_FILE" ]; then - echo "No packages managed by nomarchy-pkg yet." + echo "No packages managed by nnomarchy-pkg yet." exit 0 fi diff --git a/bin/nomarchy-restart-bluetooth b/bin/system/nomarchy-restart-bluetooth similarity index 100% rename from bin/nomarchy-restart-bluetooth rename to bin/system/nomarchy-restart-bluetooth diff --git a/bin/nomarchy-restart-pipewire b/bin/system/nomarchy-restart-pipewire similarity index 100% rename from bin/nomarchy-restart-pipewire rename to bin/system/nomarchy-restart-pipewire diff --git a/bin/nomarchy-restart-wifi b/bin/system/nomarchy-restart-wifi similarity index 100% rename from bin/nomarchy-restart-wifi rename to bin/system/nomarchy-restart-wifi diff --git a/bin/nomarchy-restart-xcompose b/bin/system/nomarchy-restart-xcompose similarity index 64% rename from bin/nomarchy-restart-xcompose rename to bin/system/nomarchy-restart-xcompose index 6797259..7a8cd2d 100755 --- a/bin/nomarchy-restart-xcompose +++ b/bin/system/nomarchy-restart-xcompose @@ -2,4 +2,4 @@ # Restart the XCompose input method service (fcitx5) to apply new compose key settings. -nomarchy-restart-app fcitx5 --disable notificationitem +nnomarchy-restart-app fcitx5 --disable notificationitem diff --git a/bin/nomarchy-setup-dns b/bin/system/nomarchy-setup-dns similarity index 94% rename from bin/nomarchy-setup-dns rename to bin/system/nomarchy-setup-dns index b2eb7ac..7ef4b7a 100755 --- a/bin/nomarchy-setup-dns +++ b/bin/system/nomarchy-setup-dns @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Configure DNS declaratively for Nomarchy NixOS. +# Configure DNS declaratively for Nnomarchy NixOS. # Hybrid: updates /etc/nixos/state.json and runs sys-update. STATE_FILE="/etc/nixos/state.json" diff --git a/bin/nomarchy-setup-fido2 b/bin/system/nomarchy-setup-fido2 similarity index 92% rename from bin/nomarchy-setup-fido2 rename to bin/system/nomarchy-setup-fido2 index 64c28b3..a0e443d 100755 --- a/bin/nomarchy-setup-fido2 +++ b/bin/system/nomarchy-setup-fido2 @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Configure FIDO2 support declaratively for Nomarchy NixOS. +# Configure FIDO2 support declaratively for Nnomarchy NixOS. STATE_FILE="/etc/nixos/state.json" diff --git a/bin/nomarchy-setup-fingerprint b/bin/system/nomarchy-setup-fingerprint similarity index 92% rename from bin/nomarchy-setup-fingerprint rename to bin/system/nomarchy-setup-fingerprint index 92d1f46..241904d 100755 --- a/bin/nomarchy-setup-fingerprint +++ b/bin/system/nomarchy-setup-fingerprint @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Configure fingerprint support declaratively for Nomarchy NixOS. +# Configure fingerprint support declaratively for Nnomarchy NixOS. STATE_FILE="/etc/nixos/state.json" diff --git a/bin/nomarchy-sudo-keepalive b/bin/system/nomarchy-sudo-keepalive similarity index 88% rename from bin/nomarchy-sudo-keepalive rename to bin/system/nomarchy-sudo-keepalive index 3b9da33..55fe8d1 100755 --- a/bin/nomarchy-sudo-keepalive +++ b/bin/system/nomarchy-sudo-keepalive @@ -2,7 +2,7 @@ # Prompt for sudo once and keep the credential alive in the background. # Source this script so the trap applies to the calling shell: -# source nomarchy-sudo-keepalive +# source nnomarchy-sudo-keepalive sudo -v while true; do sudo -n true; sleep 60; done 2>/dev/null & diff --git a/bin/nomarchy-sudo-passwordless-toggle b/bin/system/nomarchy-sudo-passwordless-toggle similarity index 88% rename from bin/nomarchy-sudo-passwordless-toggle rename to bin/system/nomarchy-sudo-passwordless-toggle index 1752453..92b7d0c 100755 --- a/bin/nomarchy-sudo-passwordless-toggle +++ b/bin/system/nomarchy-sudo-passwordless-toggle @@ -4,8 +4,8 @@ # First run: enables passwordless sudo for 15 minutes (after confirmation). # Second run: disables it early. -NOPASSWD_FILE="/etc/sudoers.d/99-nomarchy-nopasswd-${USER}" -TIMER_NAME="nomarchy-nopasswd-expire-${USER}" +NOPASSWD_FILE="/etc/sudoers.d/99-nnomarchy-nopasswd-${USER}" +TIMER_NAME="nnomarchy-nopasswd-expire-${USER}" # Safety: if the file exists but the timer doesn't (e.g. after reboot), clean up if sudo test -f "$NOPASSWD_FILE" && ! systemctl is-active "${TIMER_NAME}.timer" &>/dev/null; then @@ -36,7 +36,7 @@ else sudo systemd-run --on-active=15m --timer-property=AccuracySec=1s --unit="$TIMER_NAME" \ rm "$NOPASSWD_FILE" echo "Passwordless sudo has been ENABLED. It will automatically disable in 15 minutes." - echo "Note: if you restart before then, run nomarchy-sudo-passwordless-toggle again to disable it." + echo "Note: if you restart before then, run nnomarchy-sudo-passwordless-toggle again to disable it." else echo "Aborted. No changes made." fi diff --git a/bin/nomarchy-sudo-reset b/bin/system/nomarchy-sudo-reset similarity index 100% rename from bin/nomarchy-sudo-reset rename to bin/system/nomarchy-sudo-reset diff --git a/bin/nomarchy-system-logout b/bin/system/nomarchy-system-logout similarity index 91% rename from bin/nomarchy-system-logout rename to bin/system/nomarchy-system-logout index c881800..221e8bf 100755 --- a/bin/nomarchy-system-logout +++ b/bin/system/nomarchy-system-logout @@ -7,5 +7,5 @@ nohup bash -c "sleep 2 && uwsm stop" >/dev/null 2>&1 & # Now close all windows -nomarchy-hyprland-window-close-all +nnomarchy-hyprland-window-close-all sleep 1 # Allow apps like Chrome to shutdown correctly diff --git a/bin/nomarchy-system-reboot b/bin/system/nomarchy-system-reboot similarity index 86% rename from bin/nomarchy-system-reboot rename to bin/system/nomarchy-system-reboot index 4ff7c0d..a582ad9 100755 --- a/bin/nomarchy-system-reboot +++ b/bin/system/nomarchy-system-reboot @@ -3,11 +3,11 @@ # Reboot command that first closes all application windows (thus giving them a chance to save state). # This is particularly helpful for applications like Chromium that otherwise won't shutdown cleanly. -nomarchy-state clear re*-required +nnomarchy-state clear re*-required # Schedule the reboot to happen after closing windows (detached from terminal) nohup bash -c "sleep 2 && systemctl reboot --no-wall" >/dev/null 2>&1 & # Now close all windows -nomarchy-hyprland-window-close-all +nnomarchy-hyprland-window-close-all sleep 1 # Allow apps like Chrome to shutdown correctly diff --git a/bin/nomarchy-system-shutdown b/bin/system/nomarchy-system-shutdown similarity index 86% rename from bin/nomarchy-system-shutdown rename to bin/system/nomarchy-system-shutdown index 6c7442a..abccb3c 100755 --- a/bin/nomarchy-system-shutdown +++ b/bin/system/nomarchy-system-shutdown @@ -3,11 +3,11 @@ # Shutdown command that first closes all application windows (thus giving them a chance to save state). # This is particularly helpful for applications like Chromium that otherwise won't shutdown cleanly. -nomarchy-state clear re*-required +nnomarchy-state clear re*-required # Schedule the shutdown to happen after closing windows (detached from terminal) nohup bash -c "sleep 2 && systemctl poweroff --no-wall" >/dev/null 2>&1 & # Now close all windows -nomarchy-hyprland-window-close-all +nnomarchy-hyprland-window-close-all sleep 1 # Allow apps like Chrome to shutdown correctly diff --git a/bin/nomarchy-toggle-idle b/bin/system/nomarchy-toggle-idle similarity index 94% rename from bin/nomarchy-toggle-idle rename to bin/system/nomarchy-toggle-idle index 699737d..be093e3 100755 --- a/bin/nomarchy-toggle-idle +++ b/bin/system/nomarchy-toggle-idle @@ -9,7 +9,7 @@ mkdir -p "$(dirname "$STATE_FILE")" # Initialize if doesn't exist [[ ! -f $STATE_FILE ]] && echo "{}" > "$STATE_FILE" -if [[ $NOMARCHY_TOGGLE_IDLE == "false" ]]; then +if [[ $NNOMARCHY_TOGGLE_IDLE == "false" ]]; then NEW_VALUE="true" setsid hypridle >/dev/null 2>&1 & notify-send -u low "󱫖 Now locking computer when idle" diff --git a/bin/nomarchy-toggle-suspend b/bin/system/nomarchy-toggle-suspend similarity index 94% rename from bin/nomarchy-toggle-suspend rename to bin/system/nomarchy-toggle-suspend index c5888b9..8f33c48 100755 --- a/bin/nomarchy-toggle-suspend +++ b/bin/system/nomarchy-toggle-suspend @@ -10,7 +10,7 @@ mkdir -p "$(dirname "$STATE_FILE")" [[ ! -f $STATE_FILE ]] && echo "{}" > "$STATE_FILE" # Get current state from env or state file -if [[ $NOMARCHY_TOGGLE_SUSPEND == "false" ]]; then +if [[ $NNOMARCHY_TOGGLE_SUSPEND == "false" ]]; then NEW_VALUE="true" notify-send -u low "󰒲 Suspend now available in system menu" else diff --git a/bin/nomarchy-tz-select b/bin/system/nomarchy-tz-select similarity index 85% rename from bin/nomarchy-tz-select rename to bin/system/nomarchy-tz-select index b5ff3b6..dcfb881 100755 --- a/bin/nomarchy-tz-select +++ b/bin/system/nomarchy-tz-select @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Select system timezone declaratively for Nomarchy NixOS. +# Select system timezone declaratively for Nnomarchy NixOS. STATE_FILE="/etc/nixos/state.json" diff --git a/bin/nomarchy-update b/bin/system/nomarchy-update similarity index 83% rename from bin/nomarchy-update rename to bin/system/nomarchy-update index 81e7e55..eb39c0f 100755 --- a/bin/nomarchy-update +++ b/bin/system/nomarchy-update @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Nomarchy Update Script +# Nnomarchy Update Script # 1. Updates the flake inputs in /etc/nixos # 2. Applies system-wide NixOS changes # 3. Applies user-level Home Manager changes @@ -10,11 +10,11 @@ set -e REPO_DIR="/etc/nixos" if [ ! -d "$REPO_DIR" ]; then - echo "Error: $REPO_DIR not found. Are you running on a Nomarchy system?" + echo "Error: $REPO_DIR not found. Are you running on a Nnomarchy system?" exit 1 fi -echo "--- Starting Nomarchy Update ---" +echo "--- Starting Nnomarchy Update ---" # 1. Update Flake Lock echo "Updating flake inputs..." @@ -35,4 +35,4 @@ if [ -d "$REPO_DIR/.git" ]; then sudo git -C "$REPO_DIR" commit -m "chore: update system (flake.lock)" || echo "No lockfile changes to commit." fi -echo "--- Nomarchy Update Complete ---" +echo "--- Nnomarchy Update Complete ---" diff --git a/bin/nomarchy-update-time b/bin/system/nomarchy-update-time similarity index 100% rename from bin/nomarchy-update-time rename to bin/system/nomarchy-update-time diff --git a/bin/nomarchy-build-iso b/bin/utils/nomarchy-build-iso similarity index 78% rename from bin/nomarchy-build-iso rename to bin/utils/nomarchy-build-iso index e411312..3aa452a 100755 --- a/bin/nomarchy-build-iso +++ b/bin/utils/nomarchy-build-iso @@ -1,8 +1,8 @@ #!/usr/bin/env bash -# Build the Nomarchy Installer ISO declaratively using the flake. +# Build the Nnomarchy Installer ISO declaratively using the flake. -echo "Building Nomarchy Installer ISO..." +echo "Building Nnomarchy Installer ISO..." # The output will be a symlink named 'result' in the current directory nix build .#nixosConfigurations.installerIso.config.system.build.isoImage diff --git a/bin/nomarchy-cmd-audio-switch b/bin/utils/nomarchy-cmd-audio-switch similarity index 100% rename from bin/nomarchy-cmd-audio-switch rename to bin/utils/nomarchy-cmd-audio-switch diff --git a/bin/nomarchy-cmd-present b/bin/utils/nomarchy-cmd-present similarity index 100% rename from bin/nomarchy-cmd-present rename to bin/utils/nomarchy-cmd-present diff --git a/bin/nomarchy-cmd-screenrecord b/bin/utils/nomarchy-cmd-screenrecord similarity index 96% rename from bin/nomarchy-cmd-screenrecord rename to bin/utils/nomarchy-cmd-screenrecord index 7c84c70..2faff2c 100755 --- a/bin/nomarchy-cmd-screenrecord +++ b/bin/utils/nomarchy-cmd-screenrecord @@ -1,12 +1,12 @@ #!/bin/bash # Start and stop a screenrecording, which will be saved to ~/Videos by default. -# Alternative location can be set via OMARCHY_SCREENRECORD_DIR or XDG_VIDEOS_DIR ENVs. +# Alternative location can be set via NOMARCHY_SCREENRECORD_DIR or XDG_VIDEOS_DIR ENVs. # Resolution is capped to 4K for monitors above 4K, native otherwise. # Override via --resolution= (e.g. --resolution=1920x1080, --resolution=0x0 for native). [[ -f ~/.config/user-dirs.dirs ]] && source ~/.config/user-dirs.dirs -OUTPUT_DIR="${OMARCHY_SCREENRECORD_DIR:-${XDG_VIDEOS_DIR:-$HOME/Videos}}" +OUTPUT_DIR="${NOMARCHY_SCREENRECORD_DIR:-${XDG_VIDEOS_DIR:-$HOME/Videos}}" if [[ ! -d $OUTPUT_DIR ]]; then notify-send "Screen recording directory does not exist: $OUTPUT_DIR" -u critical -t 3000 @@ -19,7 +19,7 @@ WEBCAM="false" WEBCAM_DEVICE="" RESOLUTION="" STOP_RECORDING="false" -RECORDING_FILE="/tmp/nomarchy-screenrecord-filename" +RECORDING_FILE="/tmp/nnomarchy-screenrecord-filename" for arg in "$@"; do case "$arg" in diff --git a/bin/nomarchy-cmd-screensaver b/bin/utils/nomarchy-cmd-screensaver similarity index 75% rename from bin/nomarchy-cmd-screensaver rename to bin/utils/nomarchy-cmd-screensaver index 81eee58..954e780 100755 --- a/bin/nomarchy-cmd-screensaver +++ b/bin/utils/nomarchy-cmd-screensaver @@ -1,15 +1,15 @@ #!/bin/bash -# Run the Nomarchy screensaver using random effects from TTE. +# Run the Nnomarchy screensaver using random effects from TTE. screensaver_in_focus() { - hyprctl activewindow -j | jq -e '.class == "org.nomarchy.screensaver"' >/dev/null 2>&1 + hyprctl activewindow -j | jq -e '.class == "org.nnomarchy.screensaver"' >/dev/null 2>&1 } exit_screensaver() { hyprctl keyword cursor:invisible false &>/dev/null || true pkill -x tte 2>/dev/null - pkill -f org.nomarchy.screensaver 2>/dev/null + pkill -f org.nnomarchy.screensaver 2>/dev/null exit 0 } @@ -23,7 +23,7 @@ hyprctl keyword cursor:invisible true &>/dev/null tty=$(tty 2>/dev/null) while true; do - tte -i ~/.config/nomarchy/branding/screensaver.txt \ + tte -i ~/.config/nnomarchy/branding/screensaver.txt \ --frame-rate 120 --canvas-width 0 --canvas-height 0 --reuse-canvas --anchor-canvas c --anchor-text c\ --random-effect --exclude-effects dev_worm \ --no-eol --no-restore-cursor & diff --git a/bin/nomarchy-cmd-screenshot b/bin/utils/nomarchy-cmd-screenshot similarity index 92% rename from bin/nomarchy-cmd-screenshot rename to bin/utils/nomarchy-cmd-screenshot index 16060e9..2252925 100755 --- a/bin/nomarchy-cmd-screenshot +++ b/bin/utils/nomarchy-cmd-screenshot @@ -1,11 +1,11 @@ #!/bin/bash # Take a screenshot of the whole screen, a specific window, or a user-drawn region. -# Saves to ~/Pictures by default, but that can be changed via OMARCHY_SCREENSHOT_DIR or XDG_PICTURES_DIR ENVs. -# Editor defaults to Satty but can be changed via --editor= or OMARCHY_SCREENSHOT_EDITOR env +# Saves to ~/Pictures by default, but that can be changed via NOMARCHY_SCREENSHOT_DIR or XDG_PICTURES_DIR ENVs. +# Editor defaults to Satty but can be changed via --editor= or NOMARCHY_SCREENSHOT_EDITOR env [[ -f ~/.config/user-dirs.dirs ]] && source ~/.config/user-dirs.dirs -OUTPUT_DIR="${OMARCHY_SCREENSHOT_DIR:-${XDG_PICTURES_DIR:-$HOME/Pictures}}" +OUTPUT_DIR="${NOMARCHY_SCREENSHOT_DIR:-${XDG_PICTURES_DIR:-$HOME/Pictures}}" if [[ ! -d $OUTPUT_DIR ]]; then notify-send "Screenshot directory does not exist: $OUTPUT_DIR" -u critical -t 3000 @@ -14,7 +14,7 @@ fi pkill slurp && exit 0 -SCREENSHOT_EDITOR="${OMARCHY_SCREENSHOT_EDITOR:-satty}" +SCREENSHOT_EDITOR="${NOMARCHY_SCREENSHOT_EDITOR:-satty}" # Parse --editor flag from any position ARGS=() diff --git a/bin/nomarchy-cmd-share b/bin/utils/nomarchy-cmd-share similarity index 95% rename from bin/nomarchy-cmd-share rename to bin/utils/nomarchy-cmd-share index c830930..14ea466 100755 --- a/bin/nomarchy-cmd-share +++ b/bin/utils/nomarchy-cmd-share @@ -3,7 +3,7 @@ # Share clipboard, file, or folder using LocalSend. Bound to Super + Ctrl + S by default. if (($# == 0)); then - echo "Usage: nomarchy-cmd-share [clipboard|file|folder]" + echo "Usage: nnomarchy-cmd-share [clipboard|file|folder]" exit 1 fi diff --git a/bin/nomarchy-cmd-terminal-cwd b/bin/utils/nomarchy-cmd-terminal-cwd similarity index 100% rename from bin/nomarchy-cmd-terminal-cwd rename to bin/utils/nomarchy-cmd-terminal-cwd diff --git a/bin/nomarchy-config-direct-boot b/bin/utils/nomarchy-config-direct-boot similarity index 80% rename from bin/nomarchy-config-direct-boot rename to bin/utils/nomarchy-config-direct-boot index 92c8f5c..8fb4ec7 100755 --- a/bin/nomarchy-config-direct-boot +++ b/bin/utils/nomarchy-config-direct-boot @@ -1,6 +1,6 @@ #!/bin/bash -# Add an EFI boot entry for the Nomarchy UKI, allowing the system to boot directly +# Add an EFI boot entry for the Nnomarchy UKI, allowing the system to boot directly # without a bootloader like Limine. Requires UEFI firmware and a built UKI. if [[ ! -d /sys/firmware/efi ]]; then @@ -23,10 +23,10 @@ if cat /sys/class/dmi/id/bios_vendor 2>/dev/null | grep -qi "Apple"; then exit 1 fi -uki_file=$(find /boot/EFI/Linux/ -name "nomarchy*.efi" -printf "%f\n" 2>/dev/null | head -1) +uki_file=$(find /boot/EFI/Linux/ -name "nnomarchy*.efi" -printf "%f\n" 2>/dev/null | head -1) if [[ -z $uki_file ]]; then - echo "Error: No Nomarchy UKI found in /boot/EFI/Linux/" >&2 + echo "Error: No Nnomarchy UKI found in /boot/EFI/Linux/" >&2 exit 1 fi @@ -40,6 +40,6 @@ if gum confirm "Setup direct boot (so snapshot booting must be done via bios)?"; sudo efibootmgr --create \ --disk "$disk" \ --part "$part" \ - --label "Nomarchy" \ + --label "Nnomarchy" \ --loader "\\EFI\\Linux\\$uki_file" fi diff --git a/bin/nomarchy-drive-info b/bin/utils/nomarchy-drive-info similarity index 93% rename from bin/nomarchy-drive-info rename to bin/utils/nomarchy-drive-info index 35c4056..a9af97a 100755 --- a/bin/nomarchy-drive-info +++ b/bin/utils/nomarchy-drive-info @@ -1,9 +1,9 @@ #!/bin/bash -# Returns drive information about a given volumne, like /dev/nvme0, which is used by nomarchy-drive-select. +# Returns drive information about a given volumne, like /dev/nvme0, which is used by nnomarchy-drive-select. if (($# == 0)); then - echo "Usage: nomarchy-drive-info [/dev/drive]" + echo "Usage: nnomarchy-drive-info [/dev/drive]" exit 1 else drive="$1" diff --git a/bin/nomarchy-drive-select b/bin/utils/nomarchy-drive-select similarity index 80% rename from bin/nomarchy-drive-select rename to bin/utils/nomarchy-drive-select index 20ac635..21abca9 100755 --- a/bin/nomarchy-drive-select +++ b/bin/utils/nomarchy-drive-select @@ -1,6 +1,6 @@ #!/bin/bash -# Select a drive from a list with info that includes space and brand. Used by nomarchy-drive-set-password. +# Select a drive from a list with info that includes space and brand. Used by nnomarchy-drive-set-password. if (($# == 0)); then drives=$(lsblk -dpno NAME | grep -E '/dev/(sd|hd|vd|nvme|mmcblk|xv)') @@ -11,7 +11,7 @@ fi drives_with_info="" while IFS= read -r drive; do [[ -n $drive ]] || continue - drives_with_info+="$(nomarchy-drive-info "$drive")"$'\n' + drives_with_info+="$(nnomarchy-drive-info "$drive")"$'\n' done <<<"$drives" selected_drive="$(printf "%s" "$drives_with_info" | gum choose --header "Select drive")" || exit 1 diff --git a/bin/nomarchy-drive-set-password b/bin/utils/nomarchy-drive-set-password similarity index 89% rename from bin/nomarchy-drive-set-password rename to bin/utils/nomarchy-drive-set-password index 350d6a5..68f2f63 100755 --- a/bin/nomarchy-drive-set-password +++ b/bin/utils/nomarchy-drive-set-password @@ -8,7 +8,7 @@ if [[ -n $encrypted_drives ]]; then if (( $(wc -l <</dev/null; then fi # Avoid running screensaver when locked -pkill -f org.nomarchy.screensaver +pkill -f org.nnomarchy.screensaver diff --git a/bin/nomarchy-menu b/bin/utils/nomarchy-menu similarity index 58% rename from bin/nomarchy-menu rename to bin/utils/nomarchy-menu index b590d4e..a804896 100755 --- a/bin/nomarchy-menu +++ b/bin/utils/nomarchy-menu @@ -1,8 +1,8 @@ #!/bin/bash -# Launch the Nomarchy Menu or takes a parameter to jump straight to a submenu. +# Launch the Nnomarchy Menu or takes a parameter to jump straight to a submenu. -export PATH="$HOME/.local/share/nomarchy/bin:$PATH" +export PATH="$HOME/.local/share/nnomarchy/bin:$PATH" # Set to true when going directly to a submenu, so we can exit directly BACK_TO_EXIT=false @@ -42,30 +42,30 @@ menu() { fi fi - echo -e "$options" | nomarchy-launch-walker --dmenu --width 295 --minheight 1 --maxheight 630 -p "$prompt…" "${args[@]}" 2>/dev/null + echo -e "$options" | nnomarchy-launch-walker --dmenu --width 295 --minheight 1 --maxheight 630 -p "$prompt…" "${args[@]}" 2>/dev/null } terminal() { - xdg-terminal-exec --app-id=org.nomarchy.terminal "$@" + xdg-terminal-exec --app-id=org.nnomarchy.terminal "$@" } present_terminal() { - nomarchy-launch-floating-terminal-with-presentation $1 + nnomarchy-launch-floating-terminal-with-presentation $1 } open_in_editor() { notify-send -u low "Editing config file" "$1" - nomarchy-launch-editor "$1" + nnomarchy-launch-editor "$1" } show_learn_menu() { - case $(menu "Learn" " Keybindings\n Nomarchy\n Hyprland\n󰣇 Arch\n Neovim\n󱆃 Bash") in - *Keybindings*) nomarchy-menu-keybindings ;; - *Nomarchy*) nomarchy-launch-webapp "https://learn.omacom.io/2/the-nomarchy-manual" ;; - *Hyprland*) nomarchy-launch-webapp "https://wiki.hypr.land/" ;; - *Arch*) nomarchy-launch-webapp "https://wiki.archlinux.org/title/Main_page" ;; - *Bash*) nomarchy-launch-webapp "https://devhints.io/bash" ;; - *Neovim*) nomarchy-launch-webapp "https://www.lazyvim.org/keymaps" ;; + case $(menu "Learn" " Keybindings\n Nnomarchy\n Hyprland\n󰣇 Arch\n Neovim\n󱆃 Bash") in + *Keybindings*) nnomarchy-menu-keybindings ;; + *Nnomarchy*) nnomarchy-launch-webapp "https://learn.omacom.io/2/the-nnomarchy-manual" ;; + *Hyprland*) nnomarchy-launch-webapp "https://wiki.hypr.land/" ;; + *Arch*) nnomarchy-launch-webapp "https://wiki.archlinux.org/title/Main_page" ;; + *Bash*) nnomarchy-launch-webapp "https://devhints.io/bash" ;; + *Neovim*) nnomarchy-launch-webapp "https://www.lazyvim.org/keymaps" ;; *) show_main_menu ;; esac } @@ -82,7 +82,7 @@ show_trigger_menu() { show_capture_menu() { case $(menu "Capture" " Screenshot\n Screenrecord\n󰃉 Color") in - *Screenshot*) nomarchy-cmd-screenshot ;; + *Screenshot*) nnomarchy-cmd-screenshot ;; *Screenrecord*) show_screenrecord_menu ;; *Color*) pkill hyprpicker || hyprpicker -a ;; *) back_to show_trigger_menu ;; @@ -117,18 +117,18 @@ show_webcam_select_menu() { } show_screenrecord_menu() { - nomarchy-cmd-screenrecord --stop-recording && exit 0 + nnomarchy-cmd-screenrecord --stop-recording && exit 0 case $(menu "Screenrecord" " With no audio\n With desktop audio\n With desktop + microphone audio\n With desktop + microphone audio + webcam") in - *"With no audio") nomarchy-cmd-screenrecord ;; - *"With desktop audio") nomarchy-cmd-screenrecord --with-desktop-audio ;; - *"With desktop + microphone audio") nomarchy-cmd-screenrecord --with-desktop-audio --with-microphone-audio ;; + *"With no audio") nnomarchy-cmd-screenrecord ;; + *"With desktop audio") nnomarchy-cmd-screenrecord --with-desktop-audio ;; + *"With desktop + microphone audio") nnomarchy-cmd-screenrecord --with-desktop-audio --with-microphone-audio ;; *"With desktop + microphone audio + webcam") local device=$(show_webcam_select_menu) || { back_to show_capture_menu return } - nomarchy-cmd-screenrecord --with-desktop-audio --with-microphone-audio --with-webcam --webcam-device="$device" + nnomarchy-cmd-screenrecord --with-desktop-audio --with-microphone-audio --with-webcam --webcam-device="$device" ;; *) back_to show_capture_menu ;; esac @@ -136,9 +136,9 @@ show_screenrecord_menu() { show_share_menu() { case $(menu "Share" " Clipboard\n File \n Folder") in - *Clipboard*) nomarchy-cmd-share clipboard ;; - *File*) terminal bash -c "nomarchy-cmd-share file" ;; - *Folder*) terminal bash -c "nomarchy-cmd-share folder" ;; + *Clipboard*) nnomarchy-cmd-share clipboard ;; + *File*) terminal bash -c "nnomarchy-cmd-share file" ;; + *Folder*) terminal bash -c "nnomarchy-cmd-share folder" ;; *) back_to show_trigger_menu ;; esac } @@ -146,21 +146,21 @@ show_share_menu() { show_toggle_menu() { case $(menu "Toggle" "󱄄 Screensaver\n󰔎 Nightlight\n󱫖 Idle Lock\n󰍜 Top Bar\n󱂬 Workspace Layout\n Window Gaps\n 1-Window Ratio\n󰍹 Display Scaling") in - *Screensaver*) nomarchy-toggle-screensaver ;; - *Nightlight*) nomarchy-toggle-nightlight ;; - *Idle*) nomarchy-toggle-idle ;; - *Bar*) nomarchy-toggle-waybar ;; - *Layout*) nomarchy-hyprland-workspace-layout-toggle ;; - *Ratio*) nomarchy-hyprland-window-single-square-aspect-toggle ;; - *Gaps*) nomarchy-hyprland-window-gaps-toggle ;; - *Scaling*) nomarchy-hyprland-monitor-scaling-cycle ;; + *Screensaver*) nnomarchy-toggle-screensaver ;; + *Nightlight*) nnomarchy-toggle-nightlight ;; + *Idle*) nnomarchy-toggle-idle ;; + *Bar*) nnomarchy-toggle-waybar ;; + *Layout*) nnomarchy-hyprland-workspace-layout-toggle ;; + *Ratio*) nnomarchy-hyprland-window-single-square-aspect-toggle ;; + *Gaps*) nnomarchy-hyprland-window-gaps-toggle ;; + *Scaling*) nnomarchy-hyprland-monitor-scaling-cycle ;; *) back_to show_trigger_menu ;; esac } show_hardware_menu() { case $(menu "Toggle" " Hybrid GPU") in - *"Hybrid GPU"*) present_terminal nomarchy-toggle-hybrid-gpu ;; + *"Hybrid GPU"*) present_terminal nnomarchy-toggle-hybrid-gpu ;; *) show_trigger_menu ;; esac } @@ -171,26 +171,26 @@ show_style_menu() { *Font*) show_font_menu ;; *Background*) show_background_menu ;; *Hyprland*) open_in_editor ~/.config/hypr/looknfeel.conf ;; - *Screensaver*) open_in_editor ~/.config/nomarchy/branding/screensaver.txt ;; - *About*) open_in_editor ~/.config/nomarchy/branding/about.txt ;; + *Screensaver*) open_in_editor ~/.config/nnomarchy/branding/screensaver.txt ;; + *About*) open_in_editor ~/.config/nnomarchy/branding/about.txt ;; *) show_main_menu ;; esac } show_theme_menu() { - nomarchy-launch-walker -m menus:nomarchythemes --width 800 --minheight 400 + nnomarchy-launch-walker -m menus:nnomarchythemes --width 800 --minheight 400 } show_background_menu() { - nomarchy-launch-walker -m menus:nomarchyBackgroundSelector --width 800 --minheight 400 + nnomarchy-launch-walker -m menus:nnomarchyBackgroundSelector --width 800 --minheight 400 } show_font_menu() { - theme=$(menu "Font" "$(nomarchy-font-list)" "--width 350" "$(nomarchy-font-current)") + theme=$(menu "Font" "$(nnomarchy-font-list)" "--width 350" "$(nnomarchy-font-current)") if [[ $theme == "CNCLD" || -z $theme ]]; then back_to show_style_menu else - nomarchy-font-set "$theme" + nnomarchy-font-set "$theme" fi } @@ -202,16 +202,16 @@ show_setup_menu() { options="$options\n󰱔 DNS\n Security\n Config" case $(menu "Setup" "$options") in - *Audio*) nomarchy-launch-audio ;; - *Wifi*) nomarchy-launch-wifi ;; - *Bluetooth*) nomarchy-launch-bluetooth ;; + *Audio*) nnomarchy-launch-audio ;; + *Wifi*) nnomarchy-launch-wifi ;; + *Bluetooth*) nnomarchy-launch-bluetooth ;; *Power*) show_setup_power_menu ;; *System*) show_setup_system_menu ;; *Monitors*) open_in_editor ~/.config/hypr/monitors.conf ;; *Keybindings*) open_in_editor ~/.config/hypr/bindings.conf ;; *Input*) open_in_editor ~/.config/hypr/input.conf ;; - *Key\ Remapping*) nomarchy-setup-makima && open_in_editor "$HOME/.config/makima/AT Translated Set 2 keyboard.toml" && nomarchy-restart-makima ;; - *DNS*) present_terminal nomarchy-setup-dns ;; + *Key\ Remapping*) nnomarchy-setup-makima && open_in_editor "$HOME/.config/makima/AT Translated Set 2 keyboard.toml" && nnomarchy-restart-makima ;; + *DNS*) present_terminal nnomarchy-setup-dns ;; *Security*) show_setup_security_menu ;; *Config*) show_setup_config_menu ;; *) show_main_menu ;; @@ -219,7 +219,7 @@ show_setup_menu() { } show_setup_power_menu() { - profile=$(menu "Power Profile" "$(nomarchy-powerprofiles-list)" "" "$(powerprofilesctl get)") + profile=$(menu "Power Profile" "$(nnomarchy-powerprofiles-list)" "" "$(powerprofilesctl get)") if [[ $profile == "CNCLD" || -z $profile ]]; then back_to show_setup_menu @@ -230,8 +230,8 @@ show_setup_power_menu() { show_setup_security_menu() { case $(menu "Setup" "󰈷 Fingerprint\n Fido2") in - *Fingerprint*) present_terminal nomarchy-setup-fingerprint ;; - *Fido2*) present_terminal nomarchy-setup-fido2 ;; + *Fingerprint*) present_terminal nnomarchy-setup-fingerprint ;; + *Fido2*) present_terminal nnomarchy-setup-fido2 ;; *) show_setup_menu ;; esac } @@ -240,13 +240,13 @@ show_setup_config_menu() { case $(menu "Setup" " Defaults\n Hyprland\n Hypridle\n Hyprlock\n Hyprsunset\n Swayosd\n󰌧 Walker\n󰍜 Waybar\n󰞅 XCompose") in *Defaults*) open_in_editor ~/.config/uwsm/default ;; *Hyprland*) open_in_editor ~/.config/hypr/hyprland.conf ;; - *Hypridle*) open_in_editor ~/.config/hypr/hypridle.conf && nomarchy-restart-hypridle ;; + *Hypridle*) open_in_editor ~/.config/hypr/hypridle.conf && nnomarchy-restart-hypridle ;; *Hyprlock*) open_in_editor ~/.config/hypr/hyprlock.conf ;; - *Hyprsunset*) open_in_editor ~/.config/hypr/hyprsunset.conf && nomarchy-restart-hyprsunset ;; - *Swayosd*) open_in_editor ~/.config/swayosd/config.toml && nomarchy-restart-swayosd ;; - *Walker*) open_in_editor ~/.config/walker/config.toml && nomarchy-restart-walker ;; - *Waybar*) open_in_editor ~/.config/waybar/config.jsonc && nomarchy-restart-waybar ;; - *XCompose*) open_in_editor ~/.XCompose && nomarchy-restart-xcompose ;; + *Hyprsunset*) open_in_editor ~/.config/hypr/hyprsunset.conf && nnomarchy-restart-hyprsunset ;; + *Swayosd*) open_in_editor ~/.config/swayosd/config.toml && nnomarchy-restart-swayosd ;; + *Walker*) open_in_editor ~/.config/walker/config.toml && nnomarchy-restart-walker ;; + *Waybar*) open_in_editor ~/.config/waybar/config.jsonc && nnomarchy-restart-waybar ;; + *XCompose*) open_in_editor ~/.XCompose && nnomarchy-restart-xcompose ;; *) show_setup_menu ;; esac } @@ -254,22 +254,22 @@ show_setup_config_menu() { show_setup_system_menu() { local options="" - if [[ $NOMARCHY_TOGGLE_SUSPEND == "false" ]]; then + if [[ $NNOMARCHY_TOGGLE_SUSPEND == "false" ]]; then options="$options󰒲 Enable Suspend" else options="$options󰒲 Disable Suspend" fi - if nomarchy-hibernation-available; then + if nnomarchy-hibernation-available; then options="$options\n󰤁 Disable Hibernate" else options="$options\n󰤁 Enable Hibernate" fi case $(menu "System" "$options") in - *Suspend*) nomarchy-toggle-suspend ;; - *"Enable Hibernate"*) present_terminal nomarchy-hibernation-setup ;; - *"Disable Hibernate"*) present_terminal nomarchy-hibernation-remove ;; + *Suspend*) nnomarchy-toggle-suspend ;; + *"Enable Hibernate"*) present_terminal nnomarchy-hibernation-setup ;; + *"Disable Hibernate"*) present_terminal nnomarchy-hibernation-remove ;; *) show_setup_menu ;; esac } @@ -277,25 +277,25 @@ show_setup_system_menu() { show_update_menu() { - case $(menu "Update" "  Nomarchy\n󰸌 Extra Themes\n Process\n󰇅 Hardware\n Firmware\n Password\n Timezone\n Time") in - *Nomarchy*) present_terminal nomarchy-update ;; - *Themes*) present_terminal nomarchy-theme-update ;; + case $(menu "Update" "  Nnomarchy\n󰸌 Extra Themes\n Process\n󰇅 Hardware\n Firmware\n Password\n Timezone\n Time") in + *Nnomarchy*) present_terminal nnomarchy-update ;; + *Themes*) present_terminal nnomarchy-theme-update ;; *Process*) show_update_process_menu ;; *Hardware*) show_update_hardware_menu ;; - *Firmware*) present_terminal nomarchy-update-firmware ;; - *Timezone*) present_terminal nomarchy-tz-select ;; - *Time*) present_terminal nomarchy-update-time ;; + *Firmware*) present_terminal nnomarchy-update-firmware ;; + *Timezone*) present_terminal nnomarchy-tz-select ;; + *Time*) present_terminal nnomarchy-update-time ;; *Password*) show_update_password_menu ;; *) show_main_menu ;; esac } show_update_process_menu() { case $(menu "Restart" " Hypridle\n Hyprsunset\n Swayosd\n󰌧 Walker\n󰍜 Waybar") in - *Hypridle*) nomarchy-restart-hypridle ;; - *Hyprsunset*) nomarchy-restart-hyprsunset ;; - *Swayosd*) nomarchy-restart-swayosd ;; - *Walker*) nomarchy-restart-walker ;; - *Waybar*) nomarchy-restart-waybar ;; + *Hypridle*) nnomarchy-restart-hypridle ;; + *Hyprsunset*) nnomarchy-restart-hyprsunset ;; + *Swayosd*) nnomarchy-restart-swayosd ;; + *Walker*) nnomarchy-restart-walker ;; + *Waybar*) nnomarchy-restart-waybar ;; *) show_update_menu ;; esac } @@ -304,39 +304,39 @@ show_update_process_menu() { show_update_hardware_menu() { case $(menu "Restart" " Audio\n󱚾 Wi-Fi\n󰂯 Bluetooth") in - *Audio*) present_terminal nomarchy-restart-pipewire ;; - *Wi-Fi*) present_terminal nomarchy-restart-wifi ;; - *Bluetooth*) present_terminal nomarchy-restart-bluetooth ;; + *Audio*) present_terminal nnomarchy-restart-pipewire ;; + *Wi-Fi*) present_terminal nnomarchy-restart-wifi ;; + *Bluetooth*) present_terminal nnomarchy-restart-bluetooth ;; *) show_update_menu ;; esac } show_update_password_menu() { case $(menu "Update Password" " Drive Encryption\n User") in - *Drive*) present_terminal nomarchy-drive-set-password ;; + *Drive*) present_terminal nnomarchy-drive-set-password ;; *User*) present_terminal passwd ;; *) show_update_menu ;; esac } show_about() { - nomarchy-launch-about + nnomarchy-launch-about } show_system_menu() { local options="󱄄 Screensaver\n Lock" - [[ $NOMARCHY_TOGGLE_SUSPEND != "false" ]] && options="$options\n󰒲 Suspend" - nomarchy-hibernation-available && options="$options\n󰤁 Hibernate" + [[ $NNOMARCHY_TOGGLE_SUSPEND != "false" ]] && options="$options\n󰒲 Suspend" + nnomarchy-hibernation-available && options="$options\n󰤁 Hibernate" options="$options\n󰍃 Logout\n󰜉 Restart\n󰐥 Shutdown" case $(menu "System" "$options") in - *Screensaver*) nomarchy-launch-screensaver force ;; - *Lock*) nomarchy-lock-screen ;; + *Screensaver*) nnomarchy-launch-screensaver force ;; + *Lock*) nnomarchy-lock-screen ;; *Suspend*) systemctl suspend ;; *Hibernate*) systemctl hibernate ;; - *Logout*) nomarchy-system-logout ;; - *Restart*) nomarchy-system-reboot ;; - *Shutdown*) nomarchy-system-shutdown ;; + *Logout*) nnomarchy-system-logout ;; + *Restart*) nnomarchy-system-reboot ;; + *Shutdown*) nnomarchy-system-shutdown ;; *) back_to show_main_menu ;; esac } @@ -366,7 +366,7 @@ go_to_menu() { } # Allow user extensions and overrides -USER_EXTENSIONS="$HOME/.config/nomarchy/extensions/menu.sh" +USER_EXTENSIONS="$HOME/.config/nnomarchy/extensions/menu.sh" [[ -f $USER_EXTENSIONS ]] && source "$USER_EXTENSIONS" toggle_existing_menu diff --git a/bin/nomarchy-menu-keybindings b/bin/utils/nomarchy-menu-keybindings similarity index 98% rename from bin/nomarchy-menu-keybindings rename to bin/utils/nomarchy-menu-keybindings index dc9564a..ffaaaab 100755 --- a/bin/nomarchy-menu-keybindings +++ b/bin/utils/nomarchy-menu-keybindings @@ -79,7 +79,7 @@ parse_keycodes() { # Fetch dynamic keybindings from Hyprland # # Also do some pre-processing: -# - Remove standard Nomarchy bin path prefix +# - Remove standard Nnomarchy bin path prefix # - Remove uwsm prefix # - Map numeric modifier key mask to a textual rendition # - Output comma-separated values that the parser can understand @@ -88,7 +88,7 @@ dynamic_bindings() { jq -r '.[] | {modmask, key, keycode, description, dispatcher, arg} | "\(.modmask),\(.key)@\(.keycode),\(.description),\(.dispatcher),\(.arg)"' | sed -r \ -e 's/null//' \ - -e 's,~/.local/share/nomarchy/bin/,,' \ + -e 's,~/.local/share/nnomarchy/bin/,,' \ -e 's,uwsm app -- ,,' \ -e 's,uwsm-app -- ,,' \ -e 's/@0//' \ @@ -172,7 +172,7 @@ prioritize_entries() { if (match(line, /Browser/) && !match(line, /Browser[[:space:]]*\(/) && !match(line, /SUPER SHIFT.*\+.*B.*→.*Browser/)) prio = 2 if (match(line, /File manager/) && !match(line, /File manager \(cwd\)/)) prio = 3 if (match(line, /Launch apps/)) prio = 4 - if (match(line, /Nomarchy menu/)) prio = 5 + if (match(line, /Nnomarchy menu/)) prio = 5 if (match(line, /System menu/)) prio = 6 if (match(line, /Theme menu/)) prio = 7 if (match(line, /Full screen/)) prio = 8 diff --git a/bin/nomarchy-notification-dismiss b/bin/utils/nomarchy-notification-dismiss similarity index 88% rename from bin/nomarchy-notification-dismiss rename to bin/utils/nomarchy-notification-dismiss index 4d2e11f..ce77889 100755 --- a/bin/nomarchy-notification-dismiss +++ b/bin/utils/nomarchy-notification-dismiss @@ -3,7 +3,7 @@ # Dismiss a mako notification on the basis of its summary. Used by the first-run notifications to dismiss them after clicking for action. if (($# == 0)); then - echo "Usage: nomarchy-notification-dismiss " + echo "Usage: nnomarchy-notification-dismiss " exit 1 fi diff --git a/bin/nomarchy-npx-install b/bin/utils/nomarchy-npx-install similarity index 66% rename from bin/nomarchy-npx-install rename to bin/utils/nomarchy-npx-install index 729e9a4..39da9e2 100755 --- a/bin/nomarchy-npx-install +++ b/bin/utils/nomarchy-npx-install @@ -1,13 +1,13 @@ #!/bin/bash # Install an npx wrapper for a given npm package. -# Usage: nomarchy-npx-install [command-name] +# Usage: nnomarchy-npx-install [command-name] # # If command-name is omitted, it defaults to the package name. -# Example: nomarchy-npx-install opencode-ai opencode +# Example: nnomarchy-npx-install opencode-ai opencode if [[ -z $1 ]]; then - echo "Usage: nomarchy-npx-install [command-name]" + echo "Usage: nnomarchy-npx-install [command-name]" exit 1 fi diff --git a/bin/nomarchy-on-boot b/bin/utils/nomarchy-on-boot similarity index 92% rename from bin/nomarchy-on-boot rename to bin/utils/nomarchy-on-boot index 67d09c2..6284e5b 100755 --- a/bin/nomarchy-on-boot +++ b/bin/utils/nomarchy-on-boot @@ -1,21 +1,21 @@ #!/usr/bin/env bash -# Nomarchy on-boot initialization script. +# Nnomarchy on-boot initialization script. # Automatically detects the hardware, applies necessary runtime tweaks, # and sets the correct screen resolution/scaling. # 1. Automatically configure optimal screen resolution and scaling -nomarchy-hyprland-monitor-scaling-cycle >/dev/null 2>&1 +nnomarchy-hyprland-monitor-scaling-cycle >/dev/null 2>&1 # 2. Hardware-specific runtime tweaks -if nomarchy-hw-match "Laptop 16"; then +if nnomarchy-hw-match "Laptop 16"; then # Framework 16 specific tweaks - nomarchy-theme-set-keyboard-f16 >/dev/null 2>&1 + nnomarchy-theme-set-keyboard-f16 >/dev/null 2>&1 fi -if nomarchy-hw-asus-rog; then +if nnomarchy-hw-asus-rog; then # Asus ROG specific tweaks - nomarchy-theme-set-keyboard-asus-rog >/dev/null 2>&1 + nnomarchy-theme-set-keyboard-asus-rog >/dev/null 2>&1 fi # 3. Declarative hardware configuration check (nixos-hardware) diff --git a/bin/utils/nomarchy-refresh-fastfetch b/bin/utils/nomarchy-refresh-fastfetch new file mode 100755 index 0000000..dffd5f4 --- /dev/null +++ b/bin/utils/nomarchy-refresh-fastfetch @@ -0,0 +1,5 @@ +#!/bin/bash + +# Overwrite the user config for fastfetch with the Nnomarchy default. + +nnomarchy-refresh-config fastfetch/config.jsonc diff --git a/bin/nomarchy-snapshot b/bin/utils/nomarchy-snapshot similarity index 68% rename from bin/nomarchy-snapshot rename to bin/utils/nomarchy-snapshot index 1f1c63f..33376cd 100755 --- a/bin/nomarchy-snapshot +++ b/bin/utils/nomarchy-snapshot @@ -3,20 +3,20 @@ set -e COMMAND="$1" -OMARCHY_PATH=${OMARCHY_PATH:-$HOME/.local/share/nomarchy} +NOMARCHY_PATH=${NOMARCHY_PATH:-$HOME/.local/share/nnomarchy} if [[ -z $COMMAND ]]; then - echo "Usage: nomarchy-snapshot " >&2 + echo "Usage: nnomarchy-snapshot " >&2 exit 1 fi if ! command -v snapper &>/dev/null; then - exit 127 # nomarchy-update can use this to just ignore if snapper is not available + exit 127 # nnomarchy-update can use this to just ignore if snapper is not available fi case "$COMMAND" in create) - DESC="$(nomarchy-version)" + DESC="$(nnomarchy-version)" echo -e "\e[32mCreate system snapshot\e[0m" diff --git a/bin/nomarchy-state b/bin/utils/nomarchy-state similarity index 54% rename from bin/nomarchy-state rename to bin/utils/nomarchy-state index 855676f..cff87cf 100755 --- a/bin/nomarchy-state +++ b/bin/utils/nomarchy-state @@ -1,24 +1,24 @@ #!/bin/bash -# Manage persistent runtime state files for Nomarchy indicators. -# Usage: nomarchy-state +# Manage persistent runtime state files for Nnomarchy indicators. +# Usage: nnomarchy-state # Used to track whether things like reboot, restart, etc are required. # DO NOT use this for configuration toggles (suspend, screensaver, etc). -# Use declarative Nomarchy NixOS home-manager options for those instead. +# Use declarative Nnomarchy NixOS home-manager options for those instead. -STATE_DIR="$HOME/.local/state/nomarchy" +STATE_DIR="$HOME/.local/state/nnomarchy" mkdir -p "$STATE_DIR" COMMAND="$1" STATE_NAME="$2" if [[ -z $COMMAND ]]; then - echo "Usage: nomarchy-state " + echo "Usage: nnomarchy-state " exit 1 fi if [[ -z $STATE_NAME ]]; then - echo "Usage: nomarchy-state $COMMAND " + echo "Usage: nnomarchy-state $COMMAND " exit 1 fi diff --git a/bin/nomarchy-sync b/bin/utils/nomarchy-sync similarity index 86% rename from bin/nomarchy-sync rename to bin/utils/nomarchy-sync index 5b0dca8..415332b 100755 --- a/bin/nomarchy-sync +++ b/bin/utils/nomarchy-sync @@ -1,11 +1,11 @@ #!/usr/bin/env bash -# nomarchy-sync: Automate backing up and restoring Nomarchy declarative configurations and dynamic state. +# nnomarchy-sync: Automate backing up and restoring Nnomarchy declarative configurations and dynamic state. set -e if [[ -z $1 ]]; then - echo "Usage: nomarchy-sync [repo-url]" + echo "Usage: nnomarchy-sync [repo-url]" echo " push: Backup current state to the configured repository." echo " pull: Restore state from the configured repository and apply updates." exit 1 @@ -18,7 +18,7 @@ STATE_DIR="$HOME/.config/home-manager" CONFIG_DIR="/etc/nixos" # Identify the target repo directory (we use a local dot-folder to stage things) -SYNC_DIR="$HOME/.local/share/nomarchy-sync" +SYNC_DIR="$HOME/.local/share/nnomarchy-sync" mkdir -p "$SYNC_DIR" cd "$SYNC_DIR" @@ -26,14 +26,14 @@ cd "$SYNC_DIR" if [ ! -d ".git" ]; then if [[ -z $REPO_URL ]]; then echo "Error: No Git repository configured. Please provide a repo-url for the first run:" - echo "Example: nomarchy-sync push git@github.com:username/nomarchy-backup.git" + echo "Example: nnomarchy-sync push git@github.com:username/nnomarchy-backup.git" exit 1 fi git init git remote add origin "$REPO_URL" # Basic configuration for automated commits - git config user.name "Nomarchy Sync" - git config user.email "sync@nomarchy.local" + git config user.name "Nnomarchy Sync" + git config user.email "sync@nnomarchy.local" fi if [[ "$COMMAND" == "push" ]]; then diff --git a/bin/nomarchy-test-installer b/bin/utils/nomarchy-test-installer similarity index 59% rename from bin/nomarchy-test-installer rename to bin/utils/nomarchy-test-installer index dbec788..29997b7 100755 --- a/bin/nomarchy-test-installer +++ b/bin/utils/nomarchy-test-installer @@ -1,13 +1,13 @@ #!/usr/bin/env bash -# Build and run the Nomarchy Installer VM for testing. +# Build and run the Nnomarchy Installer VM for testing. -echo "Building Nomarchy Installer VM..." +echo "Building Nnomarchy Installer VM..." nix build .#nixosConfigurations.installerVm.config.system.build.vm if [ $? -eq 0 ]; then echo "Success! Launching Installer VM..." - ./result/bin/run-nomarchy-installer-vm + ./result/bin/run-nnomarchy-installer-vm else echo "Error: VM build failed." exit 1 diff --git a/bin/utils/nomarchy-test-vm b/bin/utils/nomarchy-test-vm new file mode 100755 index 0000000..c57c281 --- /dev/null +++ b/bin/utils/nomarchy-test-vm @@ -0,0 +1,15 @@ +#!/usr/bin/env bash + +# Build and run the Nnomarchy VM (installed environment) for testing. + +echo "Building Nnomarchy VM (Installed Environment)..." +echo "Note: To test the INSTALLER, run 'nnomarchy-test-installer' instead." +nix build .#nixosConfigurations.vm.config.system.build.vm + +if [ $? -eq 0 ]; then + echo "Success! Launching VM..." + ./result/bin/run-nnomarchy-vm +else + echo "Error: VM build failed." + exit 1 +fi diff --git a/bin/nomarchy-toggle-notification-silencing b/bin/utils/nomarchy-toggle-notification-silencing similarity index 100% rename from bin/nomarchy-toggle-notification-silencing rename to bin/utils/nomarchy-toggle-notification-silencing diff --git a/bin/nomarchy-welcome b/bin/utils/nomarchy-welcome similarity index 71% rename from bin/nomarchy-welcome rename to bin/utils/nomarchy-welcome index 74b5bd9..f1e66d3 100755 --- a/bin/nomarchy-welcome +++ b/bin/utils/nomarchy-welcome @@ -1,6 +1,6 @@ #!/usr/bin/env bash -FLAG_FILE="$HOME/.config/nomarchy/.first-run-done" +FLAG_FILE="$HOME/.config/nnomarchy/.first-run-done" if [ -f "$FLAG_FILE" ]; then exit 0 @@ -16,28 +16,28 @@ fi gum style \ --foreground 212 --border-foreground 212 --border double \ --align center --width 50 --margin "1 2" --padding "2 4" \ - "Nomarchy" "The NixOS Distribution with Omarchy Flavour" + "Nnomarchy" "The NixOS Distribution with Nomarchy Flavour" echo "Welcome! Let's personalize your new system." echo "" # 1. Select initial theme echo "Step 1: Choose your starting theme" -nomarchy-theme-selector +nnomarchy-theme-selector # 2. Select initial font echo "Step 2: Choose your preferred font" -nomarchy-font-selector +nnomarchy-font-selector # 3. Setup Local Repo (Crucial for env-update to work) echo "" -echo "Nomarchy relies on a local git repository for declarative updates." +echo "Nnomarchy relies on a local git repository for declarative updates." if [ ! -d "/etc/nixos/.git" ]; then echo "Warning: /etc/nixos is not a git repository. Declarative updates might fail." if gum confirm "Would you like to initialize /etc/nixos as a git repo?"; then sudo git -C /etc/nixos init sudo git -C /etc/nixos add . - sudo git -C /etc/nixos commit -m "Initial Nomarchy System Commit" + sudo git -C /etc/nixos commit -m "Initial Nnomarchy System Commit" fi fi @@ -45,5 +45,5 @@ fi mkdir -p "$(dirname "$FLAG_FILE")" touch "$FLAG_FILE" -gum style --foreground 82 "Setup complete! Enjoy your Nomarchy experience." +gum style --foreground 82 "Setup complete! Enjoy your Nnomarchy experience." sleep 3 diff --git a/bin/nomarchy-hyprland-active-window-transparency-toggle b/bin/wm/nomarchy-hyprland-active-window-transparency-toggle similarity index 100% rename from bin/nomarchy-hyprland-active-window-transparency-toggle rename to bin/wm/nomarchy-hyprland-active-window-transparency-toggle diff --git a/bin/nomarchy-hyprland-monitor-scaling-cycle b/bin/wm/nomarchy-hyprland-monitor-scaling-cycle similarity index 100% rename from bin/nomarchy-hyprland-monitor-scaling-cycle rename to bin/wm/nomarchy-hyprland-monitor-scaling-cycle diff --git a/bin/nomarchy-hyprland-window-close-all b/bin/wm/nomarchy-hyprland-window-close-all similarity index 100% rename from bin/nomarchy-hyprland-window-close-all rename to bin/wm/nomarchy-hyprland-window-close-all diff --git a/bin/nomarchy-hyprland-window-gaps-toggle b/bin/wm/nomarchy-hyprland-window-gaps-toggle similarity index 100% rename from bin/nomarchy-hyprland-window-gaps-toggle rename to bin/wm/nomarchy-hyprland-window-gaps-toggle diff --git a/bin/nomarchy-hyprland-window-pop b/bin/wm/nomarchy-hyprland-window-pop similarity index 96% rename from bin/nomarchy-hyprland-window-pop rename to bin/wm/nomarchy-hyprland-window-pop index ef8126e..c34eb3a 100755 --- a/bin/nomarchy-hyprland-window-pop +++ b/bin/wm/nomarchy-hyprland-window-pop @@ -3,7 +3,7 @@ # Toggle to pop-out a tile to stay fixed on a display basis. # Usage: -# nomarchy-hyprland-window-pop [width height [x y]] +# nnomarchy-hyprland-window-pop [width height [x y]] # # Arguments: # width Optional. Width of the floating window. Default: 1300 diff --git a/bin/nomarchy-hyprland-window-single-square-aspect-toggle b/bin/wm/nomarchy-hyprland-window-single-square-aspect-toggle similarity index 100% rename from bin/nomarchy-hyprland-window-single-square-aspect-toggle rename to bin/wm/nomarchy-hyprland-window-single-square-aspect-toggle diff --git a/bin/nomarchy-hyprland-workspace-layout-toggle b/bin/wm/nomarchy-hyprland-workspace-layout-toggle similarity index 100% rename from bin/nomarchy-hyprland-workspace-layout-toggle rename to bin/wm/nomarchy-hyprland-workspace-layout-toggle diff --git a/bin/wm/nomarchy-restart-hyprctl b/bin/wm/nomarchy-restart-hyprctl new file mode 100755 index 0000000..d20fcdb --- /dev/null +++ b/bin/wm/nomarchy-restart-hyprctl @@ -0,0 +1,5 @@ +#!/bin/bash + +# Reload hyprland configuration (used by the Nnomarchy theme switching). + +hyprctl reload >/dev/null diff --git a/bin/nomarchy-restart-hypridle b/bin/wm/nomarchy-restart-hypridle similarity index 73% rename from bin/nomarchy-restart-hypridle rename to bin/wm/nomarchy-restart-hypridle index e970cef..fff690f 100755 --- a/bin/nomarchy-restart-hypridle +++ b/bin/wm/nomarchy-restart-hypridle @@ -2,4 +2,4 @@ # Restart the hypridle service (used for idle detection and auto-lock). -nomarchy-restart-app hypridle +nnomarchy-restart-app hypridle diff --git a/bin/nomarchy-restart-hyprsunset b/bin/wm/nomarchy-restart-hyprsunset similarity index 73% rename from bin/nomarchy-restart-hyprsunset rename to bin/wm/nomarchy-restart-hyprsunset index 8defc66..5abcbf7 100755 --- a/bin/nomarchy-restart-hyprsunset +++ b/bin/wm/nomarchy-restart-hyprsunset @@ -2,4 +2,4 @@ # Restart the hyprsunset service (used for blue light filtering/night light). -nomarchy-restart-app hyprsunset +nnomarchy-restart-app hyprsunset diff --git a/bin/wm/nomarchy-restart-mako b/bin/wm/nomarchy-restart-mako new file mode 100755 index 0000000..511c18e --- /dev/null +++ b/bin/wm/nomarchy-restart-mako @@ -0,0 +1,5 @@ +#!/bin/bash + +# Reload mako configuration (used by the Nnomarchy theme switching). + +makoctl reload diff --git a/bin/wm/nomarchy-restart-swayosd b/bin/wm/nomarchy-restart-swayosd new file mode 100755 index 0000000..5480bb3 --- /dev/null +++ b/bin/wm/nomarchy-restart-swayosd @@ -0,0 +1,3 @@ +#!/bin/bash + +nnomarchy-restart-app swayosd-server diff --git a/bin/nomarchy-restart-walker b/bin/wm/nomarchy-restart-walker similarity index 100% rename from bin/nomarchy-restart-walker rename to bin/wm/nomarchy-restart-walker diff --git a/bin/wm/nomarchy-restart-waybar b/bin/wm/nomarchy-restart-waybar new file mode 100755 index 0000000..ac59ef2 --- /dev/null +++ b/bin/wm/nomarchy-restart-waybar @@ -0,0 +1,3 @@ +#!/bin/bash + +nnomarchy-restart-app waybar diff --git a/bin/nomarchy-swayosd-brightness b/bin/wm/nomarchy-swayosd-brightness similarity index 89% rename from bin/nomarchy-swayosd-brightness rename to bin/wm/nomarchy-swayosd-brightness index 416f3be..11de72f 100755 --- a/bin/nomarchy-swayosd-brightness +++ b/bin/wm/nomarchy-swayosd-brightness @@ -1,7 +1,7 @@ #!/bin/bash # Display brightness level using SwayOSD on the current monitor. -# Usage: nomarchy-swayosd-brightness +# Usage: nnomarchy-swayosd-brightness percent="$1" diff --git a/bin/nomarchy-swayosd-kbd-brightness b/bin/wm/nomarchy-swayosd-kbd-brightness similarity index 89% rename from bin/nomarchy-swayosd-kbd-brightness rename to bin/wm/nomarchy-swayosd-kbd-brightness index ccdc784..9967822 100755 --- a/bin/nomarchy-swayosd-kbd-brightness +++ b/bin/wm/nomarchy-swayosd-kbd-brightness @@ -1,7 +1,7 @@ #!/bin/bash # Display keyboard brightness level using SwayOSD on the current monitor. -# Usage: nomarchy-swayosd-kbd-brightness +# Usage: nnomarchy-swayosd-kbd-brightness percent="$1" diff --git a/bin/nomarchy-toggle-screensaver b/bin/wm/nomarchy-toggle-screensaver similarity index 92% rename from bin/nomarchy-toggle-screensaver rename to bin/wm/nomarchy-toggle-screensaver index ad3839e..f59821c 100755 --- a/bin/nomarchy-toggle-screensaver +++ b/bin/wm/nomarchy-toggle-screensaver @@ -9,7 +9,7 @@ mkdir -p "$(dirname "$STATE_FILE")" # Initialize if doesn't exist [[ ! -f $STATE_FILE ]] && echo "{}" > "$STATE_FILE" -if [[ $NOMARCHY_TOGGLE_SCREENSAVER == "false" ]]; then +if [[ $NNOMARCHY_TOGGLE_SCREENSAVER == "false" ]]; then NEW_VALUE="true" notify-send -u low "󱄄 Screensaver enabled" else diff --git a/bin/nomarchy-toggle-waybar b/bin/wm/nomarchy-toggle-waybar similarity index 93% rename from bin/nomarchy-toggle-waybar rename to bin/wm/nomarchy-toggle-waybar index bf21573..624526d 100755 --- a/bin/nomarchy-toggle-waybar +++ b/bin/wm/nomarchy-toggle-waybar @@ -9,7 +9,7 @@ mkdir -p "$(dirname "$STATE_FILE")" # Initialize if doesn't exist [[ ! -f $STATE_FILE ]] && echo "{}" > "$STATE_FILE" -if [[ $NOMARCHY_TOGGLE_WAYBAR == "false" ]]; then +if [[ $NNOMARCHY_TOGGLE_WAYBAR == "false" ]]; then NEW_VALUE="true" uwsm-app -- waybar >/dev/null 2>&1 & notify-send -u low "󰍜 Top bar enabled" diff --git a/config/brave-flags.conf b/config/brave-flags.conf index 8f63bee..171cc79 100644 --- a/config/brave-flags.conf +++ b/config/brave-flags.conf @@ -1,4 +1,4 @@ --ozone-platform=wayland --ozone-platform-hint=wayland --enable-features=TouchpadOverscrollHistoryNavigation ---load-extension=~/.local/share/nomarchy/default/chromium/extensions/copy-url +--load-extension=~/.config/nomarchy/default/chromium/extensions/copy-url diff --git a/config/chromium-flags.conf b/config/chromium-flags.conf index 8f63bee..171cc79 100644 --- a/config/chromium-flags.conf +++ b/config/chromium-flags.conf @@ -1,4 +1,4 @@ --ozone-platform=wayland --ozone-platform-hint=wayland --enable-features=TouchpadOverscrollHistoryNavigation ---load-extension=~/.local/share/nomarchy/default/chromium/extensions/copy-url +--load-extension=~/.config/nomarchy/default/chromium/extensions/copy-url diff --git a/config/hypr/hyprland.conf b/config/hypr/hyprland.conf index af346d5..62cb462 100644 --- a/config/hypr/hyprland.conf +++ b/config/hypr/hyprland.conf @@ -1,15 +1,15 @@ # Learn how to configure Hyprland: https://wiki.hyprland.org/Configuring/ # Use defaults Nomarchy defaults (but don't edit these directly!) -source = ~/.local/share/nomarchy/default/hypr/autostart.conf -source = ~/.local/share/nomarchy/default/hypr/bindings/media.conf -source = ~/.local/share/nomarchy/default/hypr/bindings/clipboard.conf -source = ~/.local/share/nomarchy/default/hypr/bindings/tiling-v2.conf -source = ~/.local/share/nomarchy/default/hypr/bindings/utilities.conf -source = ~/.local/share/nomarchy/default/hypr/envs.conf -source = ~/.local/share/nomarchy/default/hypr/looknfeel.conf -source = ~/.local/share/nomarchy/default/hypr/input.conf -source = ~/.local/share/nomarchy/default/hypr/windows.conf +source = ~/.config/nomarchy/default/hypr/autostart.conf +source = ~/.config/nomarchy/default/hypr/bindings/media.conf +source = ~/.config/nomarchy/default/hypr/bindings/clipboard.conf +source = ~/.config/nomarchy/default/hypr/bindings/tiling-v2.conf +source = ~/.config/nomarchy/default/hypr/bindings/utilities.conf +source = ~/.config/nomarchy/default/hypr/envs.conf +source = ~/.config/nomarchy/default/hypr/looknfeel.conf +source = ~/.config/nomarchy/default/hypr/input.conf +source = ~/.config/nomarchy/default/hypr/windows.conf source = ~/.config/nomarchy/current/theme/hyprland.conf # Change your own setup in these files (and overwrite any settings from defaults!) diff --git a/config/nomarchy.ttf b/config/nomarchy.ttf index 151bdfddfef278f62adb53bbf229649267b6c7df..e025e2cbe75b400b2f0728a5e18e66f24fbf5b37 100644 GIT binary patch literal 1516 zcmc&!OH30{6g_XIKihy{1!90W3+e~8r4=P1erQyhxKM(zU}9p1c7_%^oyl}Sx-l#u z!G)iNap%Isg$ol`#<-G&Zj2_HXk7T&Au+}U3*(C7ebZMW6;~{LllShq=iYbUd3PoQ z1|WzT$WYFnizU*JGY0{-huCz+P%YeMSID2Id3wB1)}Mbnb_b9?QQXOCYBpNg`GN2o znul{l1kQM5!VhV7D|G+ZGGWp#@O|_zzY@k-!of z@l0Tu_}2n^2!9sXi&p#)*oP)23min6g#`{_7t5!#qGqd(mQ}{eN~%z{a*k#fO+&Ra zx$>|!K3P!L+!~$M>{8w=D)DGfjapZxG&P=Z99_|E(@+M@qN5cGrefLVgqCrlImfa3 zV=-Ou(Tr)(^)(b}+EC$;%|gK#%Cx3XAZsD#@-}6eFeuALhPX0@DSI4~l*PIFXuY3y z&nO{JRf<$SjwpKm+VyWWB}~z23DV*~r~Nve$@M50bSrZ01$s^0V4>Y`_sj*U|3$c?5`jplN3Zdv` zx%Zws5C9ciMh+9xCr`cZ+}?8ykXNY<-#IxxIrH;3@z>Xc+q*{^fxEGUaC? z?^0WaF~NMpl%19r1ygrV-J<(mkJDxd#+}qWx{K_TG9Azq*@^G@w4pXG&i# zoqhVXe^BZ9{&DArMRn}Yc5kH;EEBGA0~iH&M^bH>1GujuN$q9UdKA_h?pyC+F!a(E zo;L;c?7dVyEa7~^L&-!6{nRSd2wpI=&AG^%u$i?$q&8u08;N|Zl~^BHKQiiCZsBJedZV#n?efI1-gd_@*IXr3Hg^v8 z{pOLqldP#Lcn-Vp5=MZ-yN7mf=a?c3Ig>`F4#}aRk)33nUHNVOR~y|#j;}4{s_Vn@ zY4@fzTf5%%Yc;D@>+V}waa|j0aC7O}iuISfzHH69>%$b??iV#Jik)`bRHiSeU!_G{ zH2NITpuslrkimKW{q+4QX?N{2xQqj+8eG9noYpS4^?x#m&|r)BeS>qv9~x{Ee`0VR z&tlo&0`*@RT*eH(H@Jem@?tBFyu@#IP6Um`&`bJaf1U}Fh55MU9IQ_CRntK$NW3(d zbIy01g^P{JG_5=JB#s<6ZlysO#!fqlF9d#CZKi4a$oP2O=&OFL?=fPhB-!ii-~<9R zu*kisZnJH(G(*n>3z(-@3l0wQoF*QNn5IuF^Yf5$o}=G+_LIZ7i_9}gZHhYOy2<9i z&DK-zkRzt8o!Kr>{&K|Ld)2KrG3LEqN(OQA#o( UWfc3TDzQZ3Ng}>9MPC5$0NBLgYXATM diff --git a/config/nomarchy/default/alacritty/screensaver.toml b/config/nomarchy/default/alacritty/screensaver.toml new file mode 100644 index 0000000..7db389e --- /dev/null +++ b/config/nomarchy/default/alacritty/screensaver.toml @@ -0,0 +1,11 @@ +[colors.primary] +background = "0x000000" + +[colors.cursor] +cursor = "0x000000" + +[font] +size = 18.0 + +[window] +opacity = 1.0 diff --git a/config/nomarchy/default/bash/aliases b/config/nomarchy/default/bash/aliases new file mode 100644 index 0000000..8e281d0 --- /dev/null +++ b/config/nomarchy/default/bash/aliases @@ -0,0 +1,57 @@ +# File system +if command -v eza &> /dev/null; then + alias ls='eza -lh --group-directories-first --icons=auto' + alias lsa='ls -a' + alias lt='eza --tree --level=2 --long --icons --git' + alias lta='lt -a' +fi + +if [[ "$TERM" == "xterm-kitty" ]]; then + alias ff="fzf --preview 'case \$(file --mime-type -b {}) in image/*) kitty icat --clear --transfer-mode=memory --stdin=no --place=\${FZF_PREVIEW_COLUMNS}x\${FZF_PREVIEW_LINES}@0x0 {} ;; *) bat --style=numbers --color=always {} ;; esac'" +else + alias ff="fzf --preview 'bat --style=numbers --color=always {}'" +fi +alias eff='$EDITOR "$(ff)"' +sff() { if [ $# -eq 0 ]; then echo "Usage: sff (e.g. sff host:/tmp/)"; return 1; fi; local file; file=$(find . -type f -printf '%T@\t%p\n' | sort -rn | cut -f2- | ff) && [ -n "$file" ] && scp "$file" "$1"; } + +if command -v zoxide &> /dev/null; then + alias cd="zd" + zd() { + if (( $# == 0 )); then + builtin cd ~ || return + elif [[ -d $1 ]]; then + builtin cd "$1" || return + else + if ! z "$@"; then + echo "Error: Directory not found" + return 1 + fi + + printf "\U000F17A9 " + pwd + fi + } +fi + +open() ( + xdg-open "$@" >/dev/null 2>&1 & +) + +# Directories +alias ..='cd ..' +alias ...='cd ../..' +alias ....='cd ../../..' + +# Tools +alias c='opencode' +alias cx='printf "\033[2J\033[3J\033[H" && claude --allow-dangerously-skip-permissions' +alias d='docker' +alias r='rails' +alias t='tmux attach || tmux new -s Work' +n() { if [ "$#" -eq 0 ]; then command nvim . ; else command nvim "$@"; fi; } + +# Git +alias g='git' +alias gcm='git commit -m' +alias gcam='git commit -a -m' +alias gcad='git commit -a --amend' diff --git a/config/nomarchy/default/bash/envs b/config/nomarchy/default/bash/envs new file mode 100644 index 0000000..bf4e48c --- /dev/null +++ b/config/nomarchy/default/bash/envs @@ -0,0 +1,7 @@ +# Editor used by CLI +export SUDO_EDITOR="$EDITOR" +export BAT_THEME=ansi + +# Duplicated from .config/uwsm/env so SSH works too +export NOMARCHY_PATH=$HOME/.local/share/nomarchy +export PATH=$NOMARCHY_PATH/bin:$PATH:$HOME/.local/bin diff --git a/config/nomarchy/default/bash/fns/compression b/config/nomarchy/default/bash/fns/compression new file mode 100644 index 0000000..4e8bb81 --- /dev/null +++ b/config/nomarchy/default/bash/fns/compression @@ -0,0 +1,3 @@ +# Compression +compress() { tar -czf "${1%/}.tar.gz" "${1%/}"; } +alias decompress="tar -xzf" diff --git a/config/nomarchy/default/bash/fns/drives b/config/nomarchy/default/bash/fns/drives new file mode 100644 index 0000000..ec7dbfe --- /dev/null +++ b/config/nomarchy/default/bash/fns/drives @@ -0,0 +1,59 @@ +# Write iso file to sd card +iso2sd() { + if (( $# < 1 )); then + echo "Usage: iso2sd [output_device]" + echo "Example: iso2sd ~/Downloads/ubuntu-25.04-desktop-amd64.iso /dev/sda" + return 1 + fi + + local iso="$1" + local drive="$2" + + if [[ -z $drive ]]; then + local available_sds=$(lsblk -dpno NAME | grep -E '/dev/sd') + + if [[ -z $available_sds ]]; then + echo "No SD drives found and no drive specified" + return 1 + fi + + drive=$(nomarchy-drive-select "$available_sds") + + if [[ -z $drive ]]; then + echo "No drive selected" + return 1 + fi + fi + + sudo dd bs=4M status=progress oflag=sync if="$iso" of="$drive" + sudo eject "$drive" +} + +# Format an entire drive for a single partition using exFAT +format-drive() { + if (( $# != 2 )); then + echo "Usage: format-drive " + echo "Example: format-drive /dev/sda 'My Stuff'" + echo -e "\nAvailable drives:" + lsblk -d -o NAME -n | awk '{print "/dev/"$1}' + else + echo "WARNING: This will completely erase all data on $1 and label it '$2'." + read -rp "Are you sure you want to continue? (y/N): " confirm + + if [[ $confirm =~ ^[Yy]$ ]]; then + sudo wipefs -a "$1" + sudo dd if=/dev/zero of="$1" bs=1M count=100 status=progress + sudo parted -s "$1" mklabel gpt + sudo parted -s "$1" mkpart primary 1MiB 100% + sudo parted -s "$1" set 1 msftdata on + + partition="$([[ $1 == *"nvme"* ]] && echo "${1}p1" || echo "${1}1")" + sudo partprobe "$1" || true + sudo udevadm settle || true + + sudo mkfs.exfat -n "$2" "$partition" + + echo "Drive $1 formatted as exFAT and labeled '$2'." + fi + fi +} diff --git a/config/nomarchy/default/bash/fns/ssh-port-forwarding b/config/nomarchy/default/bash/fns/ssh-port-forwarding new file mode 100644 index 0000000..4ee6c92 --- /dev/null +++ b/config/nomarchy/default/bash/fns/ssh-port-forwarding @@ -0,0 +1,20 @@ +# SSH Port Forwarding Functions +fip() { + (( $# < 2 )) && echo "Usage: fip [port2] ..." && return 1 + local host="$1" + shift + for port in "$@"; do + ssh -f -N -L "$port:localhost:$port" "$host" && echo "Forwarding localhost:$port -> $host:$port" + done +} + +dip() { + (( $# == 0 )) && echo "Usage: dip [port2] ..." && return 1 + for port in "$@"; do + pkill -f "ssh.*-L $port:localhost:$port" && echo "Stopped forwarding port $port" || echo "No forwarding on port $port" + done +} + +lip() { + pgrep -af "ssh.*-L [0-9]+:localhost:[0-9]+" || echo "No active forwards" +} diff --git a/config/nomarchy/default/bash/fns/tmux b/config/nomarchy/default/bash/fns/tmux new file mode 100644 index 0000000..0144f2e --- /dev/null +++ b/config/nomarchy/default/bash/fns/tmux @@ -0,0 +1,97 @@ +# Create a Tmux Dev Layout with editor, ai, and terminal +# Usage: tdl [] +tdl() { + [[ -z $1 ]] && { echo "Usage: tdl []"; return 1; } + [[ -z $TMUX ]] && { echo "You must start tmux to use tdl."; return 1; } + + local current_dir="${PWD}" + local editor_pane ai_pane ai2_pane + local ai="$1" + local ai2="$2" + + # Use TMUX_PANE for the pane we're running in (stable even if active window changes) + editor_pane="$TMUX_PANE" + + # Name the current window after the base directory name + tmux rename-window -t "$editor_pane" "$(basename "$current_dir")" + + # Split window vertically - top 85%, bottom 15% (target editor pane explicitly) + tmux split-window -v -p 15 -t "$editor_pane" -c "$current_dir" + + # Split editor pane horizontally - AI on right 30% (capture new pane ID directly) + ai_pane=$(tmux split-window -h -p 30 -t "$editor_pane" -c "$current_dir" -P -F '#{pane_id}') + + # If second AI provided, split the AI pane vertically + if [[ -n $ai2 ]]; then + ai2_pane=$(tmux split-window -v -t "$ai_pane" -c "$current_dir" -P -F '#{pane_id}') + tmux send-keys -t "$ai2_pane" "$ai2" C-m + fi + + # Run ai in the right pane + tmux send-keys -t "$ai_pane" "$ai" C-m + + # Run nvim in the left pane + tmux send-keys -t "$editor_pane" "$EDITOR ." C-m + + # Select the nvim pane for focus + tmux select-pane -t "$editor_pane" +} + +# Create multiple tdl windows with one per subdirectory in the current directory +# Usage: tdlm [] +tdlm() { + [[ -z $1 ]] && { echo "Usage: tdlm []"; return 1; } + [[ -z $TMUX ]] && { echo "You must start tmux to use tdlm."; return 1; } + + local ai="$1" + local ai2="$2" + local base_dir="$PWD" + local first=true + + # Rename the session to the current directory name (replace dots/colons which tmux disallows) + tmux rename-session "$(basename "$base_dir" | tr '.:' '--')" + + for dir in "$base_dir"/*/; do + [[ -d $dir ]] || continue + local dirpath="${dir%/}" + + if $first; then + # Reuse the current window for the first project + tmux send-keys -t "$TMUX_PANE" "cd '$dirpath' && tdl $ai $ai2" C-m + first=false + else + local pane_id=$(tmux new-window -c "$dirpath" -P -F '#{pane_id}') + tmux send-keys -t "$pane_id" "tdl $ai $ai2" C-m + fi + done +} + +# Create a multi-pane swarm layout with the same command started in each pane (great for AI) +# Usage: tsl +tsl() { + [[ -z $1 || -z $2 ]] && { echo "Usage: tsl "; return 1; } + [[ -z $TMUX ]] && { echo "You must start tmux to use tsl."; return 1; } + + local count="$1" + local cmd="$2" + local current_dir="${PWD}" + local -a panes + + tmux rename-window -t "$TMUX_PANE" "$(basename "$current_dir")" + + panes+=("$TMUX_PANE") + + while (( ${#panes[@]} < count )); do + local new_pane + local split_target="${panes[-1]}" + new_pane=$(tmux split-window -h -t "$split_target" -c "$current_dir" -P -F '#{pane_id}') + panes+=("$new_pane") + tmux select-layout -t "${panes[0]}" tiled + done + + for pane in "${panes[@]}"; do + tmux send-keys -t "$pane" "$cmd" C-m + done + + tmux select-pane -t "${panes[0]}" +} diff --git a/config/nomarchy/default/bash/fns/transcoding b/config/nomarchy/default/bash/fns/transcoding new file mode 100644 index 0000000..6f5b6a5 --- /dev/null +++ b/config/nomarchy/default/bash/fns/transcoding @@ -0,0 +1,53 @@ +# Transcode a video to a good-balance 1080p that's great for sharing online +transcode-video-1080p() { + ffmpeg -i "$1" -vf scale=1920:1080 -c:v libx264 -preset fast -crf 23 -c:a copy "${1%.*}-1080p.mp4" +} + +# Transcode a video to a good-balance 4K that's great for sharing online +transcode-video-4K() { + ffmpeg -i "$1" -c:v libx265 -preset slow -crf 24 -c:a aac -b:a 192k "${1%.*}-optimized.mp4" +} + +# Transcode any image to JPG image that's great for shrinking wallpapers +img2jpg() { + img="$1" + shift + + magick "$img" "$@" -quality 85 -strip "${img%.*}-converted.jpg" +} + +# Transcode any image to a small JPG (max 1080px wide) +img2jpg-small() { + img="$1" + shift + + magick "$img" "$@" -resize 1080x\> -quality 85 -strip "${img%.*}-small.jpg" +} + +# Transcode any image to a 4K JPG (max 2160px wide) +img2jpg-medium() { + img="$1" + shift + + magick "$img" "$@" -resize 2160x\> -quality 85 -strip "${img%.*}-medium.jpg" +} + +# Transcode any image to a 6K JPG (max 3160px wide) +img2jpg-large() { + img="$1" + shift + + magick "$img" "$@" -resize 3160x\> -quality 85 -strip "${img%.*}-large.jpg" +} + +# Transcode any image to compressed-but-lossless PNG +img2png() { + img="$1" + shift + + magick "$img" "$@" -strip -define png:compression-filter=5 \ + -define png:compression-level=9 \ + -define png:compression-strategy=1 \ + -define png:exclude-chunk=all \ + "${img%.*}-optimized.png" +} diff --git a/config/nomarchy/default/bash/fns/worktrees b/config/nomarchy/default/bash/fns/worktrees new file mode 100644 index 0000000..a175a64 --- /dev/null +++ b/config/nomarchy/default/bash/fns/worktrees @@ -0,0 +1,36 @@ +# Create a new worktree and branch from within current git directory. +ga() { + if [[ -z "$1" ]]; then + echo "Usage: ga [branch name]" + return 1 + fi + + local branch="$1" + local base="$(basename "$PWD")" + local wt_path="../${base}--${branch}" + + git worktree add -b "$branch" "$wt_path" + mise trust "$wt_path" + cd "$wt_path" +} + +# Remove worktree and branch from within active worktree directory. +gd() { + if gum confirm "Remove worktree and branch?"; then + local cwd base branch root worktree + + cwd="$(pwd)" + worktree="$(basename "$cwd")" + + # split on first `--` + root="${worktree%%--*}" + branch="${worktree#*--}" + + # Protect against accidentally nuking a non-worktree directory + if [[ "$root" != "$worktree" ]]; then + cd "../$root" + git worktree remove "$cwd" --force || return 1 + git branch -D "$branch" + fi + fi +} diff --git a/config/nomarchy/default/bash/functions b/config/nomarchy/default/bash/functions new file mode 100644 index 0000000..9e2cef0 --- /dev/null +++ b/config/nomarchy/default/bash/functions @@ -0,0 +1 @@ +for f in $HOME/.config/nomarchy/default/bash/fns/*; do source "$f"; done diff --git a/config/nomarchy/default/bash/init b/config/nomarchy/default/bash/init new file mode 100644 index 0000000..4c5e6e3 --- /dev/null +++ b/config/nomarchy/default/bash/init @@ -0,0 +1,24 @@ +if command -v mise &> /dev/null; then + eval "$(mise activate bash)" +fi + +if command -v starship &> /dev/null; then + eval "$(starship init bash)" +fi + +if command -v zoxide &> /dev/null; then + eval "$(zoxide init bash)" +fi + +if command -v try &> /dev/null; then + eval "$(SHELL=/bin/bash command try init ~/Work/tries)" +fi + +if command -v fzf &> /dev/null; then + if [[ -f /usr/share/fzf/completion.bash ]]; then + source /usr/share/fzf/completion.bash + fi + if [[ -f /usr/share/fzf/key-bindings.bash ]]; then + source /usr/share/fzf/key-bindings.bash + fi +fi diff --git a/config/nomarchy/default/bash/inputrc b/config/nomarchy/default/bash/inputrc new file mode 100644 index 0000000..3b48e55 --- /dev/null +++ b/config/nomarchy/default/bash/inputrc @@ -0,0 +1,47 @@ +set meta-flag on +set input-meta on +set output-meta on +set convert-meta off +set completion-ignore-case on +set completion-prefix-display-length 2 +set show-all-if-ambiguous on +set show-all-if-unmodified on + +# Arrow keys match what you've typed so far against your command history +"\e[A": history-search-backward +"\e[B": history-search-forward +"\e[C": forward-char +"\e[D": backward-char + +# Immediately add a trailing slash when autocompleting symlinks to directories +set mark-symlinked-directories on + +# Do not autocomplete hidden files unless the pattern explicitly begins with a dot +set match-hidden-files off + +# Show all autocomplete results at once +set page-completions off + +# If there are more than 200 possible completions for a word, ask to show them all +set completion-query-items 200 + +# Show extra file information when completing, like `ls -F` does +set visible-stats on + +# Be more intelligent when autocompleting by also looking at the text after +# the cursor. For example, when the current line is "cd ~/src/mozil", and +# the cursor is on the "z", pressing Tab will not autocomplete it to "cd +# ~/src/mozillail", but to "cd ~/src/mozilla". (This is supported by the +# Readline used by Bash 4.) +set skip-completed-text on + +# Coloring for Bash 4 tab completions. +set colored-stats on + +# Cycle forward and backward through completion candidates (tab/shift+tab) +# (completion listing and display behavior configured above) +TAB: menu-complete +"\e[Z": menu-complete-backward + +# On first Tab, complete the common prefix before cycling candidates +set menu-complete-display-prefix on diff --git a/config/nomarchy/default/bash/rc b/config/nomarchy/default/bash/rc new file mode 100644 index 0000000..5d0a39e --- /dev/null +++ b/config/nomarchy/default/bash/rc @@ -0,0 +1,6 @@ +source ~/.config/nomarchy/default/bash/envs +source ~/.config/nomarchy/default/bash/shell +source ~/.config/nomarchy/default/bash/aliases +source ~/.config/nomarchy/default/bash/functions +source ~/.config/nomarchy/default/bash/init +[[ $- == *i* ]] && bind -f ~/.config/nomarchy/default/bash/inputrc diff --git a/config/nomarchy/default/bash/shell b/config/nomarchy/default/bash/shell new file mode 100644 index 0000000..7eb4867 --- /dev/null +++ b/config/nomarchy/default/bash/shell @@ -0,0 +1,13 @@ +# History control +shopt -s histappend +HISTCONTROL=ignoreboth +HISTSIZE=32768 +HISTFILESIZE="${HISTSIZE}" + +# Autocompletion +if [[ ! -v BASH_COMPLETION_VERSINFO && -f /usr/share/bash-completion/bash_completion ]]; then + source /usr/share/bash-completion/bash_completion +fi + +# Ensure command hashing is off for mise +set +h diff --git a/config/nomarchy/default/bashrc b/config/nomarchy/default/bashrc new file mode 100644 index 0000000..7fcd619 --- /dev/null +++ b/config/nomarchy/default/bashrc @@ -0,0 +1,11 @@ +# If not running interactively, don't do anything (leave this at the top of this file) +[[ $- != *i* ]] && return + +# All the default Nomarchy aliases and functions +# (don't mess with these directly, just overwrite them here!) +source ~/.config/nomarchy/default/bash/rc + +# Add your own exports, aliases, and functions here. +# +# Make an alias for invoking commands you use constantly +# alias p='python' diff --git a/config/nomarchy/default/chromium/extensions/copy-url/background.js b/config/nomarchy/default/chromium/extensions/copy-url/background.js new file mode 100644 index 0000000..a2537c5 --- /dev/null +++ b/config/nomarchy/default/chromium/extensions/copy-url/background.js @@ -0,0 +1,21 @@ +chrome.commands.onCommand.addListener((command) => { + if (command === 'copy-url') { + chrome.tabs.query({ active: true, currentWindow: true }, (tabs) => { + const currentTab = tabs[0]; + + chrome.scripting.executeScript({ + target: { tabId: currentTab.id }, + func: () => { + navigator.clipboard.writeText(window.location.href); + } + }).then(() => { + chrome.notifications.create({ + type: 'basic', + iconUrl: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8/5+hHgAHggJ/PchI7wAAAABJRU5ErkJggg==', + title: ' URL copied to clipboard', + message: '' + }); + }); + }); + } +}); diff --git a/config/nomarchy/default/chromium/extensions/copy-url/icon.png b/config/nomarchy/default/chromium/extensions/copy-url/icon.png new file mode 120000 index 0000000..e088259 --- /dev/null +++ b/config/nomarchy/default/chromium/extensions/copy-url/icon.png @@ -0,0 +1 @@ +../../../../icon.png \ No newline at end of file diff --git a/config/nomarchy/default/chromium/extensions/copy-url/manifest.json b/config/nomarchy/default/chromium/extensions/copy-url/manifest.json new file mode 100644 index 0000000..74b9004 --- /dev/null +++ b/config/nomarchy/default/chromium/extensions/copy-url/manifest.json @@ -0,0 +1,19 @@ +{ + "manifest_version": 3, + "name": "Copy URL", + "version": "1.0", + "description": "Copy current URL to clipboard, this extension is installed by Nomarchy", + "permissions": ["activeTab", "scripting", "notifications"], + "icons": { + "16": "icon.png", + "48": "icon.png", + "128": "icon.png" + }, + "commands": { + "copy-url": { + "suggested_key": {"default": "Alt+Shift+L"}, + "description": "Copy URL" + } + }, + "background": {"service_worker": "background.js"} +} diff --git a/config/nomarchy/default/elephant/nomarchy_background_selector.lua b/config/nomarchy/default/elephant/nomarchy_background_selector.lua new file mode 100644 index 0000000..f75c336 --- /dev/null +++ b/config/nomarchy/default/elephant/nomarchy_background_selector.lua @@ -0,0 +1,73 @@ +Name = "nomarchyBackgroundSelector" +NamePretty = "Nomarchy Background Selector" +Cache = false +HideFromProviderlist = true +SearchName = true + +local function ShellEscape(s) + return "'" .. s:gsub("'", "'\\''") .. "'" +end + +function FormatName(filename) + -- Remove leading number and dash + local name = filename:gsub("^%d+", ""):gsub("^%-", "") + -- Remove extension + name = name:gsub("%.[^%.]+$", "") + -- Replace dashes with spaces + name = name:gsub("-", " ") + -- Capitalize each word + name = name:gsub("%S+", function(word) + return word:sub(1, 1):upper() .. word:sub(2):lower() + end) + return name +end + +function GetEntries() + local entries = {} + local home = os.getenv("HOME") + + -- Read current theme name + local theme_name_file = io.open(home .. "/.config/nomarchy/current/theme.name", "r") + local theme_name = theme_name_file and theme_name_file:read("*l") or nil + if theme_name_file then + theme_name_file:close() + end + + -- Directories to search + local dirs = { + home .. "/.config/nomarchy/current/theme/backgrounds", + } + if theme_name then + table.insert(dirs, home .. "/.config/nomarchy/backgrounds/" .. theme_name) + end + + -- Track added files to avoid duplicates + local seen = {} + + for _, wallpaper_dir in ipairs(dirs) do + local handle = io.popen( + "find " .. ShellEscape(wallpaper_dir) + .. " -maxdepth 1 -type f \\( -name '*.jpg' -o -name '*.jpeg' -o -name '*.png' -o -name '*.gif' -o -name '*.bmp' -o -name '*.webp' \\) 2>/dev/null | sort" + ) + if handle then + for background in handle:lines() do + local filename = background:match("([^/]+)$") + if filename and not seen[filename] then + seen[filename] = true + table.insert(entries, { + Text = FormatName(filename), + Value = background, + Actions = { + activate = "nomarchy-theme-bg-set " .. ShellEscape(background), + }, + Preview = background, + PreviewType = "file", + }) + end + end + handle:close() + end + end + + return entries +end diff --git a/config/nomarchy/default/elephant/nomarchy_themes.lua b/config/nomarchy/default/elephant/nomarchy_themes.lua new file mode 100644 index 0000000..8e24b11 --- /dev/null +++ b/config/nomarchy/default/elephant/nomarchy_themes.lua @@ -0,0 +1,96 @@ +-- +-- Dynamic Nomarchy Theme Menu for Elephant/Walker +-- +Name = "nomarchythemes" +NamePretty = "Nomarchy Themes" +HideFromProviderlist = true + +-- Check if file exists using Lua (no subprocess) +local function file_exists(path) + local f = io.open(path, "r") + if f then + f:close() + return true + end + return false +end + +-- Get first matching file from directory using ls (single call for fallback) +local function first_image_in_dir(dir) + local handle = io.popen("ls -1 '" .. dir .. "' 2>/dev/null | head -n 1") + if handle then + local file = handle:read("*l") + handle:close() + if file and file ~= "" then + return dir .. "/" .. file + end + end + return nil +end + +-- The main function elephant will call +function GetEntries() + local entries = {} + local user_theme_dir = os.getenv("HOME") .. "/.config/nomarchy/themes" + local nomarchy_path = os.getenv("NOMARCHY_PATH") or "" + local default_theme_dir = nomarchy_path .. "/themes" + + local seen_themes = {} + + -- Helper function to process themes from a directory + local function process_themes_from_dir(theme_dir) + -- Single find call to get all theme directories + local handle = io.popen("find -L '" .. theme_dir .. "' -mindepth 1 -maxdepth 1 -type d 2>/dev/null") + if not handle then + return + end + + for theme_path in handle:lines() do + local theme_name = theme_path:match(".*/(.+)$") + + if theme_name and not seen_themes[theme_name] then + seen_themes[theme_name] = true + + -- Check for preview images directly (no subprocess) + local preview_path = nil + local preview_png = theme_path .. "/preview.png" + local preview_jpg = theme_path .. "/preview.jpg" + + if file_exists(preview_png) then + preview_path = preview_png + elseif file_exists(preview_jpg) then + preview_path = preview_jpg + else + -- Fallback: get first image from backgrounds (one ls call) + preview_path = first_image_in_dir(theme_path .. "/backgrounds") + end + + if preview_path and preview_path ~= "" then + local display_name = theme_name:gsub("_", " "):gsub("%-", " ") + display_name = display_name:gsub("(%a)([%w_']*)", function(first, rest) + return first:upper() .. rest:lower() + end) + display_name = display_name .. " " + + table.insert(entries, { + Text = display_name, + Preview = preview_path, + PreviewType = "file", + Actions = { + activate = "nomarchy-theme-set " .. theme_name, + }, + }) + end + end + end + + handle:close() + end + + -- Process user themes first (they take precedence) + process_themes_from_dir(user_theme_dir) + -- Then process default themes (only if not already seen) + process_themes_from_dir(default_theme_dir) + + return entries +end diff --git a/config/nomarchy/default/ghostty/screensaver b/config/nomarchy/default/ghostty/screensaver new file mode 100644 index 0000000..dc35906 --- /dev/null +++ b/config/nomarchy/default/ghostty/screensaver @@ -0,0 +1,3 @@ +window-padding-x = 0 +window-padding-y = 0 +window-padding-color = "extend-always" diff --git a/config/nomarchy/default/gpg/dirmngr.conf b/config/nomarchy/default/gpg/dirmngr.conf new file mode 100644 index 0000000..8d32790 --- /dev/null +++ b/config/nomarchy/default/gpg/dirmngr.conf @@ -0,0 +1,7 @@ +keyserver hkps://keyserver.ubuntu.com +keyserver hkps://pgp.surfnet.nl +keyserver hkps://keys.mailvelope.com +keyserver hkps://keyring.debian.org +keyserver hkps://pgp.mit.edu + +connect-quick-timeout 4 diff --git a/config/nomarchy/default/hypr/apps.conf b/config/nomarchy/default/hypr/apps.conf new file mode 100644 index 0000000..9f7c656 --- /dev/null +++ b/config/nomarchy/default/hypr/apps.conf @@ -0,0 +1,17 @@ +# App-specific tweaks +source = ~/.config/nomarchy/default/hypr/apps/1password.conf +source = ~/.config/nomarchy/default/hypr/apps/bitwarden.conf +source = ~/.config/nomarchy/default/hypr/apps/browser.conf +source = ~/.config/nomarchy/default/hypr/apps/hyprshot.conf +source = ~/.config/nomarchy/default/hypr/apps/localsend.conf +source = ~/.config/nomarchy/default/hypr/apps/pip.conf +source = ~/.config/nomarchy/default/hypr/apps/qemu.conf +source = ~/.config/nomarchy/default/hypr/apps/retroarch.conf +source = ~/.config/nomarchy/default/hypr/apps/steam.conf +source = ~/.config/nomarchy/default/hypr/apps/geforce.conf +source = ~/.config/nomarchy/default/hypr/apps/moonlight.conf +source = ~/.config/nomarchy/default/hypr/apps/system.conf +source = ~/.config/nomarchy/default/hypr/apps/telegram.conf +source = ~/.config/nomarchy/default/hypr/apps/terminals.conf +source = ~/.config/nomarchy/default/hypr/apps/walker.conf +source = ~/.config/nomarchy/default/hypr/apps/webcam-overlay.conf diff --git a/config/nomarchy/default/hypr/apps/1password.conf b/config/nomarchy/default/hypr/apps/1password.conf new file mode 100644 index 0000000..a666430 --- /dev/null +++ b/config/nomarchy/default/hypr/apps/1password.conf @@ -0,0 +1,2 @@ +windowrule = no_screen_share on, match:class ^(1[p|P]assword)$ +windowrule = tag +floating-window, match:class ^(1[p|P]assword)$ diff --git a/config/nomarchy/default/hypr/apps/bitwarden.conf b/config/nomarchy/default/hypr/apps/bitwarden.conf new file mode 100644 index 0000000..8ffb568 --- /dev/null +++ b/config/nomarchy/default/hypr/apps/bitwarden.conf @@ -0,0 +1,6 @@ +windowrule = no_screen_share on, match:class ^(Bitwarden)$ +windowrule = tag +floating-window, match:class ^(Bitwarden)$ + +# Bitwarden Chrome Extension +windowrule = no_screen_share on, match:class chrome-nngceckbapebfimnlniiiahkandclblb-Default +windowrule = tag +floating-window, match:class chrome-nngceckbapebfimnlniiiahkandclblb-Default diff --git a/config/nomarchy/default/hypr/apps/browser.conf b/config/nomarchy/default/hypr/apps/browser.conf new file mode 100644 index 0000000..7f30ba3 --- /dev/null +++ b/config/nomarchy/default/hypr/apps/browser.conf @@ -0,0 +1,16 @@ +# Browser types +windowrule = tag +chromium-based-browser, match:class ((google-)?[cC]hrom(e|ium)|[bB]rave-browser|[mM]icrosoft-edge|Vivaldi-stable|helium) +windowrule = tag +firefox-based-browser, match:class ([fF]irefox|zen|librewolf) +windowrule = tag -default-opacity, match:tag chromium-based-browser +windowrule = tag -default-opacity, match:tag firefox-based-browser + +# Video apps: remove chromium browser tag so they don't get opacity applied +windowrule = tag -chromium-based-browser, match:class (chrome-youtube.com__-Default|chrome-app.zoom.us__wc_home-Default) +windowrule = tag -default-opacity, match:class (chrome-youtube.com__-Default|chrome-app.zoom.us__wc_home-Default) + +# Force chromium-based browsers into a tile to deal with --app bug +windowrule = tile on, match:tag chromium-based-browser + +# Only a subtle opacity change, but not for video sites +windowrule = opacity 1.0 0.97, match:tag chromium-based-browser +windowrule = opacity 1.0 0.97, match:tag firefox-based-browser diff --git a/config/nomarchy/default/hypr/apps/davinci-resolve.conf b/config/nomarchy/default/hypr/apps/davinci-resolve.conf new file mode 100644 index 0000000..9067fdf --- /dev/null +++ b/config/nomarchy/default/hypr/apps/davinci-resolve.conf @@ -0,0 +1,2 @@ +# Focus floating DaVinci Resolve dialog windows +windowrule = stay_focused on, match:class .*[Rr]esolve.*, match:float 1 diff --git a/config/nomarchy/default/hypr/apps/geforce.conf b/config/nomarchy/default/hypr/apps/geforce.conf new file mode 100644 index 0000000..fb2e5a3 --- /dev/null +++ b/config/nomarchy/default/hypr/apps/geforce.conf @@ -0,0 +1,5 @@ +windowrule { + name = geforce + match:class = GeForceNOW + idle_inhibit = fullscreen +} diff --git a/config/nomarchy/default/hypr/apps/hyprshot.conf b/config/nomarchy/default/hypr/apps/hyprshot.conf new file mode 100644 index 0000000..795ac39 --- /dev/null +++ b/config/nomarchy/default/hypr/apps/hyprshot.conf @@ -0,0 +1,2 @@ +# Remove 1px border around hyprshot screenshots +layerrule = no_anim on, match:namespace selection diff --git a/config/nomarchy/default/hypr/apps/localsend.conf b/config/nomarchy/default/hypr/apps/localsend.conf new file mode 100644 index 0000000..c4f6a55 --- /dev/null +++ b/config/nomarchy/default/hypr/apps/localsend.conf @@ -0,0 +1,4 @@ +# Float LocalSend and fzf file picker +windowrule = float on, match:class (Share|localsend) +windowrule = center on, match:class (Share|localsend) +windowrule = size 1100 700, match:class localsend diff --git a/config/nomarchy/default/hypr/apps/moonlight.conf b/config/nomarchy/default/hypr/apps/moonlight.conf new file mode 100644 index 0000000..271a11c --- /dev/null +++ b/config/nomarchy/default/hypr/apps/moonlight.conf @@ -0,0 +1,6 @@ +windowrule { + name = moonlight + match:class = com.moonlight_stream.Moonlight + fullscreen = 1 + idle_inhibit = fullscreen +} diff --git a/config/nomarchy/default/hypr/apps/pip.conf b/config/nomarchy/default/hypr/apps/pip.conf new file mode 100644 index 0000000..417edc9 --- /dev/null +++ b/config/nomarchy/default/hypr/apps/pip.conf @@ -0,0 +1,10 @@ +# Picture-in-picture overlays +windowrule = tag +pip, match:title (Picture.?in.?[Pp]icture) +windowrule = tag -default-opacity, match:tag pip +windowrule = float on, match:tag pip +windowrule = pin on, match:tag pip +windowrule = size 600 338, match:tag pip +windowrule = keep_aspect_ratio on, match:tag pip +windowrule = border_size 0, match:tag pip +windowrule = opacity 1 1, match:tag pip +windowrule = move (monitor_w-window_w-40) (monitor_h*0.04), match:tag pip diff --git a/config/nomarchy/default/hypr/apps/qemu.conf b/config/nomarchy/default/hypr/apps/qemu.conf new file mode 100644 index 0000000..6dcce0e --- /dev/null +++ b/config/nomarchy/default/hypr/apps/qemu.conf @@ -0,0 +1,2 @@ +windowrule = tag -default-opacity, match:class qemu +windowrule = opacity 1 1, match:class qemu diff --git a/config/nomarchy/default/hypr/apps/retroarch.conf b/config/nomarchy/default/hypr/apps/retroarch.conf new file mode 100644 index 0000000..556f0fd --- /dev/null +++ b/config/nomarchy/default/hypr/apps/retroarch.conf @@ -0,0 +1,4 @@ +windowrule = fullscreen on, match:class com.libretro.RetroArch +windowrule = tag -default-opacity, match:class com.libretro.RetroArch +windowrule = opacity 1 1, match:class com.libretro.RetroArch +windowrule = idle_inhibit fullscreen, match:class com.libretro.RetroArch diff --git a/config/nomarchy/default/hypr/apps/steam.conf b/config/nomarchy/default/hypr/apps/steam.conf new file mode 100644 index 0000000..a42a6e6 --- /dev/null +++ b/config/nomarchy/default/hypr/apps/steam.conf @@ -0,0 +1,8 @@ +# Float Steam +windowrule = float on, match:class steam +windowrule = center on, match:class steam, match:title Steam +windowrule = tag -default-opacity, match:class steam.* +windowrule = opacity 1 1, match:class steam.* +windowrule = size 1100 700, match:class steam, match:title Steam +windowrule = size 460 800, match:class steam, match:title Friends List +windowrule = idle_inhibit fullscreen, match:class steam diff --git a/config/nomarchy/default/hypr/apps/system.conf b/config/nomarchy/default/hypr/apps/system.conf new file mode 100644 index 0000000..ca0f075 --- /dev/null +++ b/config/nomarchy/default/hypr/apps/system.conf @@ -0,0 +1,23 @@ +# Floating windows +windowrule = float on, match:tag floating-window +windowrule = center on, match:tag floating-window +windowrule = size 875 600, match:tag floating-window + +windowrule = tag +floating-window, match:class (org.nomarchy.bluetui|org.nomarchy.impala|org.nomarchy.wiremix|org.nomarchy.btop|org.nomarchy.terminal|org.nomarchy.bash|org.gnome.NautilusPreviewer|org.gnome.Evince|com.gabm.satty|Nomarchy|About|TUI.float|imv|mpv) +windowrule = tag +floating-window, match:class (xdg-desktop-portal-gtk|sublime_text|DesktopEditors|org.gnome.Nautilus), match:title ^(Open.*Files?|Open [F|f]older.*|Save.*Files?|Save.*As|Save|All Files|.*wants to [open|save].*|[C|c]hoose.*) +windowrule = float on, match:class org.gnome.Calculator + +# Fullscreen screensaver +windowrule = fullscreen on, match:class org.nomarchy.screensaver +windowrule = float on, match:class org.nomarchy.screensaver +windowrule = animation slide, match:class org.nomarchy.screensaver + +# No transparency on media windows +windowrule = tag -default-opacity, match:class ^(zoom|vlc|mpv|org.kde.kdenlive|com.obsproject.Studio|com.github.PintaProject.Pinta|imv|org.gnome.NautilusPreviewer)$ +windowrule = opacity 1 1, match:class ^(zoom|vlc|mpv|org.kde.kdenlive|com.obsproject.Studio|com.github.PintaProject.Pinta|imv|org.gnome.NautilusPreviewer)$ + +# Popped window rounding +windowrule = rounding 8, match:tag pop + +# Prevent idle while open +windowrule = idle_inhibit always, match:tag noidle diff --git a/config/nomarchy/default/hypr/apps/telegram.conf b/config/nomarchy/default/hypr/apps/telegram.conf new file mode 100644 index 0000000..5a621fd --- /dev/null +++ b/config/nomarchy/default/hypr/apps/telegram.conf @@ -0,0 +1,2 @@ +# Prevent Telegram from stealing focus on new messages +windowrule = focus_on_activate off, match:class org.telegram.desktop diff --git a/config/nomarchy/default/hypr/apps/terminals.conf b/config/nomarchy/default/hypr/apps/terminals.conf new file mode 100644 index 0000000..ead08dd --- /dev/null +++ b/config/nomarchy/default/hypr/apps/terminals.conf @@ -0,0 +1,4 @@ +# Define terminal tag to style them uniformly +windowrule = tag +terminal, match:class (Alacritty|kitty|com.mitchellh.ghostty) +windowrule = tag -default-opacity, match:tag terminal +windowrule = opacity 0.97 0.9, match:tag terminal diff --git a/config/nomarchy/default/hypr/apps/walker.conf b/config/nomarchy/default/hypr/apps/walker.conf new file mode 100644 index 0000000..127e3b4 --- /dev/null +++ b/config/nomarchy/default/hypr/apps/walker.conf @@ -0,0 +1,2 @@ +# Application-specific animation +layerrule = no_anim on, match:namespace walker diff --git a/config/nomarchy/default/hypr/apps/webcam-overlay.conf b/config/nomarchy/default/hypr/apps/webcam-overlay.conf new file mode 100644 index 0000000..307d686 --- /dev/null +++ b/config/nomarchy/default/hypr/apps/webcam-overlay.conf @@ -0,0 +1,6 @@ +# Webcam overlay for screen recording +windowrule = float on, match:title WebcamOverlay +windowrule = pin on, match:title WebcamOverlay +windowrule = no_initial_focus on, match:title WebcamOverlay +windowrule = no_dim on, match:title WebcamOverlay +windowrule = move (monitor_w-window_w-40) (monitor_h-window_h-40), match:title WebcamOverlay diff --git a/config/nomarchy/default/hypr/autostart.conf b/config/nomarchy/default/hypr/autostart.conf new file mode 100644 index 0000000..2df79df --- /dev/null +++ b/config/nomarchy/default/hypr/autostart.conf @@ -0,0 +1,12 @@ +exec-once = uwsm-app -- hypridle +exec-once = uwsm-app -- mako +exec-once = uwsm-app -- waybar +exec-once = uwsm-app -- fcitx5 --disable notificationitem +exec-once = uwsm-app -- swaybg -i ~/.config/nomarchy/current/background -m fill +exec-once = uwsm-app -- swayosd-server +exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 +exec-once = nomarchy-cmd-first-run + +# Slow app launch fix -- set systemd vars +exec-once = systemctl --user import-environment $(env | cut -d'=' -f 1) +exec-once = dbus-update-activation-environment --systemd --all diff --git a/config/nomarchy/default/hypr/bindings.conf b/config/nomarchy/default/hypr/bindings.conf new file mode 100644 index 0000000..0f74b71 --- /dev/null +++ b/config/nomarchy/default/hypr/bindings.conf @@ -0,0 +1,16 @@ +# Deprecated bindings file. New installations include everything directly. + +bindd = SUPER, RETURN, Terminal, exec, $terminal +bindd = SUPER, F, File manager, exec, $fileManager +bindd = SUPER, B, Web browser, exec, $browser +bindd = SUPER, M, Music player, exec, $music +bindd = SUPER, N, Neovim, exec, $terminal -e nvim +bindd = SUPER, T, Top, exec, $terminal -e btop +bindd = SUPER, D, Lazy Docker, exec, $terminal -e lazydocker +bindd = SUPER, G, Messenger, exec, $messenger +bindd = SUPER, O, Obsidian, exec, obsidian -disable-gpu +bindd = SUPER, SLASH, Password manager, exec, $passwordManager + +source = ~/.config/nomarchy/default/hypr/bindings/media.conf +source = ~/.config/nomarchy/default/hypr/bindings/tiling.conf +source = ~/.config/nomarchy/default/hypr/bindings/utilities.conf diff --git a/config/nomarchy/default/hypr/bindings/clipboard.conf b/config/nomarchy/default/hypr/bindings/clipboard.conf new file mode 100644 index 0000000..be3a6ab --- /dev/null +++ b/config/nomarchy/default/hypr/bindings/clipboard.conf @@ -0,0 +1,5 @@ +# Copy / Paste +bindd = SUPER, C, Universal copy, sendshortcut, CTRL, Insert, +bindd = SUPER, V, Universal paste, sendshortcut, SHIFT, Insert, +bindd = SUPER, X, Universal cut, sendshortcut, CTRL, X, +bindd = SUPER CTRL, V, Clipboard manager, exec, nomarchy-launch-walker -m clipboard diff --git a/config/nomarchy/default/hypr/bindings/media.conf b/config/nomarchy/default/hypr/bindings/media.conf new file mode 100644 index 0000000..c4d5514 --- /dev/null +++ b/config/nomarchy/default/hypr/bindings/media.conf @@ -0,0 +1,28 @@ +# Only display the OSD on the currently focused monitor +$osdclient = swayosd-client --monitor "$(hyprctl monitors -j | jq -r '.[] | select(.focused == true).name')" + +# Laptop multimedia keys for volume and LCD brightness (with OSD) +bindeld = ,XF86AudioRaiseVolume, Volume up, exec, $osdclient --output-volume raise +bindeld = ,XF86AudioLowerVolume, Volume down, exec, $osdclient --output-volume lower +bindeld = ,XF86AudioMute, Mute, exec, $osdclient --output-volume mute-toggle +bindeld = ,XF86AudioMicMute, Mute microphone, exec, $osdclient --input-volume mute-toggle +bindeld = ,XF86MonBrightnessUp, Brightness up, exec, nomarchy-brightness-display +5% +bindeld = ,XF86MonBrightnessDown, Brightness down, exec, nomarchy-brightness-display 5%- +bindeld = ,XF86KbdBrightnessUp, Keyboard brightness up, exec, nomarchy-brightness-keyboard up +bindeld = ,XF86KbdBrightnessDown, Keyboard brightness down, exec, nomarchy-brightness-keyboard down +bindld = ,XF86KbdLightOnOff, Keyboard backlight cycle, exec, nomarchy-brightness-keyboard cycle + +# Precise 1% multimedia adjustments with Alt modifier +bindeld = ALT, XF86AudioRaiseVolume, Volume up precise, exec, $osdclient --output-volume +1 +bindeld = ALT, XF86AudioLowerVolume, Volume down precise, exec, $osdclient --output-volume -1 +bindeld = ALT, XF86MonBrightnessUp, Brightness up precise, exec, nomarchy-brightness-display +1% +bindeld = ALT, XF86MonBrightnessDown, Brightness down precise, exec, nomarchy-brightness-display 1%- + +# Requires playerctl +bindld = , XF86AudioNext, Next track, exec, $osdclient --playerctl next +bindld = , XF86AudioPause, Pause, exec, $osdclient --playerctl play-pause +bindld = , XF86AudioPlay, Play, exec, $osdclient --playerctl play-pause +bindld = , XF86AudioPrev, Previous track, exec, $osdclient --playerctl previous + +# Switch audio output with Super + Mute +bindld = SUPER, XF86AudioMute, Switch audio output, exec, nomarchy-cmd-audio-switch diff --git a/config/nomarchy/default/hypr/bindings/tiling-v2.conf b/config/nomarchy/default/hypr/bindings/tiling-v2.conf new file mode 100644 index 0000000..7788a5b --- /dev/null +++ b/config/nomarchy/default/hypr/bindings/tiling-v2.conf @@ -0,0 +1,128 @@ +# Close windows +bindd = SUPER, W, Close window, killactive, +bindd = CTRL ALT, DELETE, Close all windows, exec, nomarchy-hyprland-window-close-all + +# Control tiling +bindd = SUPER, J, Toggle window split, layoutmsg, togglesplit +bindd = SUPER, P, Pseudo window, pseudo, # dwindle +bindd = SUPER, T, Toggle window floating/tiling, togglefloating, +bindd = SUPER, F, Full screen, fullscreen, 0 +bindd = SUPER CTRL, F, Tiled full screen, fullscreenstate, 0 2 +bindd = SUPER ALT, F, Full width, fullscreen, 1 +bindd = SUPER, O, Pop window out (float & pin), exec, nomarchy-hyprland-window-pop +bindd = SUPER, L, Toggle workspace layout, exec, nomarchy-hyprland-workspace-layout-toggle + +# Move focus with SUPER + arrow keys +bindd = SUPER, LEFT, Move window focus left, movefocus, l +bindd = SUPER, RIGHT, Move window focus right, movefocus, r +bindd = SUPER, UP, Move window focus up, movefocus, u +bindd = SUPER, DOWN, Move window focus down, movefocus, d + +# Switch workspaces with SUPER + [1-9; 0] +bindd = SUPER, code:10, Switch to workspace 1, workspace, 1 +bindd = SUPER, code:11, Switch to workspace 2, workspace, 2 +bindd = SUPER, code:12, Switch to workspace 3, workspace, 3 +bindd = SUPER, code:13, Switch to workspace 4, workspace, 4 +bindd = SUPER, code:14, Switch to workspace 5, workspace, 5 +bindd = SUPER, code:15, Switch to workspace 6, workspace, 6 +bindd = SUPER, code:16, Switch to workspace 7, workspace, 7 +bindd = SUPER, code:17, Switch to workspace 8, workspace, 8 +bindd = SUPER, code:18, Switch to workspace 9, workspace, 9 +bindd = SUPER, code:19, Switch to workspace 10, workspace, 10 + +# Move active window to a workspace with SUPER + SHIFT + [1-9; 0] +bindd = SUPER SHIFT, code:10, Move window to workspace 1, movetoworkspace, 1 +bindd = SUPER SHIFT, code:11, Move window to workspace 2, movetoworkspace, 2 +bindd = SUPER SHIFT, code:12, Move window to workspace 3, movetoworkspace, 3 +bindd = SUPER SHIFT, code:13, Move window to workspace 4, movetoworkspace, 4 +bindd = SUPER SHIFT, code:14, Move window to workspace 5, movetoworkspace, 5 +bindd = SUPER SHIFT, code:15, Move window to workspace 6, movetoworkspace, 6 +bindd = SUPER SHIFT, code:16, Move window to workspace 7, movetoworkspace, 7 +bindd = SUPER SHIFT, code:17, Move window to workspace 8, movetoworkspace, 8 +bindd = SUPER SHIFT, code:18, Move window to workspace 9, movetoworkspace, 9 +bindd = SUPER SHIFT, code:19, Move window to workspace 10, movetoworkspace, 10 + +# Move active window silently to a workspace with SUPER + SHIFT + ALT + [1-9; 0] +bindd = SUPER SHIFT ALT, code:10, Move window silently to workspace 1, movetoworkspacesilent, 1 +bindd = SUPER SHIFT ALT, code:11, Move window silently to workspace 2, movetoworkspacesilent, 2 +bindd = SUPER SHIFT ALT, code:12, Move window silently to workspace 3, movetoworkspacesilent, 3 +bindd = SUPER SHIFT ALT, code:13, Move window silently to workspace 4, movetoworkspacesilent, 4 +bindd = SUPER SHIFT ALT, code:14, Move window silently to workspace 5, movetoworkspacesilent, 5 +bindd = SUPER SHIFT ALT, code:15, Move window silently to workspace 6, movetoworkspacesilent, 6 +bindd = SUPER SHIFT ALT, code:16, Move window silently to workspace 7, movetoworkspacesilent, 7 +bindd = SUPER SHIFT ALT, code:17, Move window silently to workspace 8, movetoworkspacesilent, 8 +bindd = SUPER SHIFT ALT, code:18, Move window silently to workspace 9, movetoworkspacesilent, 9 +bindd = SUPER SHIFT ALT, code:19, Move window silently to workspace 10, movetoworkspacesilent, 10 + +# Control scratchpad +bindd = SUPER, S, Toggle scratchpad, togglespecialworkspace, scratchpad +bindd = SUPER ALT, S, Move window to scratchpad, movetoworkspacesilent, special:scratchpad + +# TAB between workspaces +bindd = SUPER, TAB, Next workspace, workspace, e+1 +bindd = SUPER SHIFT, TAB, Previous workspace, workspace, e-1 +bindd = SUPER CTRL, TAB, Former workspace, workspace, previous + +# Move workspaces to other monitors +bindd = SUPER SHIFT ALT, LEFT, Move workspace to left monitor, movecurrentworkspacetomonitor, l +bindd = SUPER SHIFT ALT, RIGHT, Move workspace to right monitor, movecurrentworkspacetomonitor, r +bindd = SUPER SHIFT ALT, UP, Move workspace to up monitor, movecurrentworkspacetomonitor, u +bindd = SUPER SHIFT ALT, DOWN, Move workspace to down monitor, movecurrentworkspacetomonitor, d + +# Swap active window with the one next to it with SUPER + SHIFT + arrow keys +bindd = SUPER SHIFT, LEFT, Swap window to the left, swapwindow, l +bindd = SUPER SHIFT, RIGHT, Swap window to the right, swapwindow, r +bindd = SUPER SHIFT, UP, Swap window up, swapwindow, u +bindd = SUPER SHIFT, DOWN, Swap window down, swapwindow, d + +# Cycle through applications on active workspace +bindd = ALT, TAB, Cycle to next window, cyclenext +bindd = ALT SHIFT, TAB, Cycle to prev window, cyclenext, prev +bindd = ALT, TAB, Reveal active window on top, bringactivetotop +bindd = ALT SHIFT, TAB, Reveal active window on top, bringactivetotop + +# Resize active window +bindd = SUPER, code:20, Expand window left, resizeactive, -100 0 # - key +bindd = SUPER, code:21, Shrink window left, resizeactive, 100 0 # = key +bindd = SUPER SHIFT, code:20, Shrink window up, resizeactive, 0 -100 +bindd = SUPER SHIFT, code:21, Expand window down, resizeactive, 0 100 + +# Scroll through existing workspaces with SUPER + scroll +bindd = SUPER, mouse_down, Scroll active workspace forward, workspace, e+1 +bindd = SUPER, mouse_up, Scroll active workspace backward, workspace, e-1 + +# Move/resize windows with mainMod + LMB/RMB and dragging +bindmd = SUPER, mouse:272, Move window, movewindow +bindmd = SUPER, mouse:273, Resize window, resizewindow + +# Toggle groups +bindd = SUPER, G, Toggle window grouping, togglegroup +bindd = SUPER ALT, G, Move active window out of group, moveoutofgroup + +# Join groups +bindd = SUPER ALT, LEFT, Move window to group on left, moveintogroup, l +bindd = SUPER ALT, RIGHT, Move window to group on right, moveintogroup, r +bindd = SUPER ALT, UP, Move window to group on top, moveintogroup, u +bindd = SUPER ALT, DOWN, Move window to group on bottom, moveintogroup, d + +# Navigate a single set of grouped windows +bindd = SUPER ALT, TAB, Next window in group, changegroupactive, f +bindd = SUPER ALT SHIFT, TAB, Previous window in group, changegroupactive, b + +# Window navigation for grouped windows +bindd = SUPER CTRL, LEFT, Move grouped window focus left, changegroupactive, b +bindd = SUPER CTRL, RIGHT, Move grouped window focus right, changegroupactive, f + +# Scroll through a set of grouped windows with SUPER + ALT + scroll +bindd = SUPER ALT, mouse_down, Next window in group, changegroupactive, f +bindd = SUPER ALT, mouse_up, Previous window in group, changegroupactive, b + +# Activate window in a group by number +bindd = SUPER ALT, code:10, Switch to group window 1, changegroupactive, 1 +bindd = SUPER ALT, code:11, Switch to group window 2, changegroupactive, 2 +bindd = SUPER ALT, code:12, Switch to group window 3, changegroupactive, 3 +bindd = SUPER ALT, code:13, Switch to group window 4, changegroupactive, 4 +bindd = SUPER ALT, code:14, Switch to group window 5, changegroupactive, 5 + +# Cycle monitor scaling +bindd = SUPER, Slash, Cycle monitor scaling, exec, nomarchy-hyprland-monitor-scaling-cycle diff --git a/config/nomarchy/default/hypr/bindings/tiling.conf b/config/nomarchy/default/hypr/bindings/tiling.conf new file mode 100644 index 0000000..c3360e9 --- /dev/null +++ b/config/nomarchy/default/hypr/bindings/tiling.conf @@ -0,0 +1,74 @@ +# This is now a deprecated file meant for those who did not wish to learn the latest Nomarchy hotkeys. +# Do not make changes here, but bring them to tiling-v2.conf instead. + +# Close windows +bindd = SUPER, W, Close window, killactive, +bindd = CTRL ALT, DELETE, Close all windows, exec, nomarchy-hyprland-window-close-all + +# Control tiling +bindd = SUPER, J, Toggle window split, togglesplit, # dwindle +bindd = SUPER, P, Pseudo window, pseudo, # dwindle +bindd = SUPER SHIFT, V, Toggle window floating/tiling, togglefloating, +bindd = SHIFT, F11, Force full screen, fullscreen, 0 +bindd = ALT, F11, Full width, fullscreen, 1 + +# Move focus with SUPER + arrow keys +bindd = SUPER, LEFT, Move focus left, movefocus, l +bindd = SUPER, RIGHT, Move focus right, movefocus, r +bindd = SUPER, UP, Move focus up, movefocus, u +bindd = SUPER, DOWN, Move focus down, movefocus, d + +# Switch workspaces with SUPER + [0-9] +bindd = SUPER, code:10, Switch to workspace 1, workspace, 1 +bindd = SUPER, code:11, Switch to workspace 2, workspace, 2 +bindd = SUPER, code:12, Switch to workspace 3, workspace, 3 +bindd = SUPER, code:13, Switch to workspace 4, workspace, 4 +bindd = SUPER, code:14, Switch to workspace 5, workspace, 5 +bindd = SUPER, code:15, Switch to workspace 6, workspace, 6 +bindd = SUPER, code:16, Switch to workspace 7, workspace, 7 +bindd = SUPER, code:17, Switch to workspace 8, workspace, 8 +bindd = SUPER, code:18, Switch to workspace 9, workspace, 9 +bindd = SUPER, code:19, Switch to workspace 10, workspace, 10 + +# Move active window to a workspace with SUPER + SHIFT + [0-9] +bindd = SUPER SHIFT, code:10, Move window to workspace 1, movetoworkspace, 1 +bindd = SUPER SHIFT, code:11, Move window to workspace 2, movetoworkspace, 2 +bindd = SUPER SHIFT, code:12, Move window to workspace 3, movetoworkspace, 3 +bindd = SUPER SHIFT, code:13, Move window to workspace 4, movetoworkspace, 4 +bindd = SUPER SHIFT, code:14, Move window to workspace 5, movetoworkspace, 5 +bindd = SUPER SHIFT, code:15, Move window to workspace 6, movetoworkspace, 6 +bindd = SUPER SHIFT, code:16, Move window to workspace 7, movetoworkspace, 7 +bindd = SUPER SHIFT, code:17, Move window to workspace 8, movetoworkspace, 8 +bindd = SUPER SHIFT, code:18, Move window to workspace 9, movetoworkspace, 9 +bindd = SUPER SHIFT, code:19, Move window to workspace 10, movetoworkspace, 10 + +# TAB between workspaces +bindd = SUPER, TAB, Next workspace, workspace, e+1 +bindd = SUPER SHIFT, TAB, Previous workspace, workspace, e-1 +bindd = SUPER CTRL, TAB, Former workspace, workspace, previous + +# Swap active window with the one next to it with SUPER + SHIFT + arrow keys +bindd = SUPER SHIFT, LEFT, Swap window to the left, swapwindow, l +bindd = SUPER SHIFT, RIGHT, Swap window to the right, swapwindow, r +bindd = SUPER SHIFT, UP, Swap window up, swapwindow, u +bindd = SUPER SHIFT, DOWN, Swap window down, swapwindow, d + +# Cycle through applications on active workspace +bindd = ALT, TAB, Cycle to next window, cyclenext +bindd = ALT SHIFT, TAB, Cycle to prev window, cyclenext, prev +bindd = ALT, TAB, Reveal active window on top, bringactivetotop +bindd = ALT SHIFT, TAB, Reveal active window on top, bringactivetotop + +# Resize active window +bindd = SUPER, code:20, Expand window left, resizeactive, -100 0 # - key +bindd = SUPER, code:21, Shrink window left, resizeactive, 100 0 # = key +bindd = SUPER SHIFT, code:20, Shrink window up, resizeactive, 0 -100 +bindd = SUPER SHIFT, code:21, Expand window down, resizeactive, 0 100 + +# Scroll through existing workspaces with SUPER + scroll +bindd = SUPER, MOUSE_DOWN, Scroll active workspace forward, workspace, e+1 +bindd = SUPER, MOUSE_UP, Scroll active workspace backward, workspace, e-1 + +# Move/resize windows with mainMod + LMB/RMB and dragging +bindmd = SUPER, mouse:272, Move window, movewindow +bindmd = SUPER, mouse:273, Resize window, resizewindow diff --git a/config/nomarchy/default/hypr/bindings/utilities.conf b/config/nomarchy/default/hypr/bindings/utilities.conf new file mode 100644 index 0000000..6a32518 --- /dev/null +++ b/config/nomarchy/default/hypr/bindings/utilities.conf @@ -0,0 +1,62 @@ +# Menus +bindd = SUPER, SPACE, Launch apps, exec, nomarchy-launch-walker +bindd = SUPER CTRL, E, Emoji picker, exec, nomarchy-launch-walker -m symbols +bindd = SUPER CTRL, C, Capture menu, exec, nomarchy-menu capture +bindd = SUPER CTRL, O, Toggle menu, exec, nomarchy-menu toggle +bindd = SUPER ALT, SPACE, Nomarchy menu, exec, nomarchy-menu +bindd = SUPER, ESCAPE, System menu, exec, nomarchy-menu system +bindld = , XF86PowerOff, Power menu, exec, nomarchy-menu system +bindd = SUPER, K, Show key bindings, exec, nomarchy-menu-keybindings +bindd = , XF86Calculator, Calculator, exec, gnome-calculator + +# Aesthetics +bindd = SUPER SHIFT, SPACE, Toggle top bar, exec, nomarchy-toggle-waybar +bindd = SUPER CTRL, SPACE, Theme background menu, exec, nomarchy-menu background +bindd = SUPER SHIFT CTRL, SPACE, Theme menu, exec, nomarchy-menu theme +bindd = SUPER, BACKSPACE, Toggle window transparency, exec, nomarchy-hyprland-active-window-transparency-toggle +bindd = SUPER SHIFT, BACKSPACE, Toggle window gaps, exec, nomarchy-hyprland-window-gaps-toggle +bindd = SUPER CTRL, BACKSPACE, Toggle single-window square aspect, exec, nomarchy-hyprland-window-single-square-aspect-toggle + +# Notifications +bindd = SUPER, COMMA, Dismiss last notification, exec, makoctl dismiss +bindd = SUPER SHIFT, COMMA, Dismiss all notifications, exec, makoctl dismiss --all +bindd = SUPER CTRL, COMMA, Toggle silencing notifications, exec, nomarchy-toggle-notification-silencing +bindd = SUPER ALT, COMMA, Invoke last notification, exec, makoctl invoke +bindd = SUPER SHIFT ALT, COMMA, Restore last notification, exec, makoctl restore + +# Toggles +bindd = SUPER CTRL, I, Toggle locking on idle, exec, nomarchy-toggle-idle +bindd = SUPER CTRL, N, Toggle nightlight, exec, nomarchy-toggle-nightlight + +# Control Apple Display brightness +bindd = CTRL, F1, Apple Display brightness down, exec, nomarchy-brightness-display-apple -5000 +bindd = CTRL, F2, Apple Display brightness up, exec, nomarchy-brightness-display-apple +5000 +bindd = SHIFT CTRL, F2, Apple Display full brightness, exec, nomarchy-brightness-display-apple +60000 + +# Captures +bindd = , PRINT, Screenshot, exec, nomarchy-cmd-screenshot +bindd = ALT, PRINT, Screenrecording, exec, nomarchy-menu screenrecord +bindd = SUPER, PRINT, Color picker, exec, pkill hyprpicker || hyprpicker -a + +# File sharing +bindd = SUPER CTRL, S, Share, exec, nomarchy-menu share + +# Waybar-less information +bindd = SUPER CTRL ALT, T, Show time, exec, notify-send -u low " $(date +"%A %H:%M · %d %B %Y · Week %V")" +bindd = SUPER CTRL ALT, B, Show battery remaining, exec, notify-send -u low "$(nomarchy-battery-status)" + +# Control panels +bindd = SUPER CTRL, A, Audio controls, exec, nomarchy-launch-audio +bindd = SUPER CTRL, B, Bluetooth controls, exec, nomarchy-launch-bluetooth +bindd = SUPER CTRL, W, Wifi controls, exec, nomarchy-launch-wifi +bindd = SUPER CTRL, T, Activity, exec, nomarchy-launch-tui btop + +# Dictation +bindd = SUPER CTRL, X, Toggle dictation, exec, voxtype record toggle + +# Zoom +bindd = SUPER CTRL, Z, Zoom in, exec, hyprctl keyword cursor:zoom_factor $(hyprctl getoption cursor:zoom_factor -j | jq '.float + 1') +bindd = SUPER CTRL ALT, Z, Reset zoom, exec, hyprctl keyword cursor:zoom_factor 1 + +# Lock system +bindd = SUPER CTRL, L, Lock system, exec, nomarchy-lock-screen diff --git a/config/nomarchy/default/hypr/envs.conf b/config/nomarchy/default/hypr/envs.conf new file mode 100644 index 0000000..85afc77 --- /dev/null +++ b/config/nomarchy/default/hypr/envs.conf @@ -0,0 +1,29 @@ +# Cursor size +env = XCURSOR_SIZE,24 +env = HYPRCURSOR_SIZE,24 + +# Force all apps to use Wayland +env = GDK_BACKEND,wayland,x11,* +env = QT_QPA_PLATFORM,wayland;xcb +env = QT_STYLE_OVERRIDE,kvantum +env = SDL_VIDEODRIVER,wayland,x11 +env = MOZ_ENABLE_WAYLAND,1 +env = ELECTRON_OZONE_PLATFORM_HINT,wayland +env = OZONE_PLATFORM,wayland +env = XDG_SESSION_TYPE,wayland + +# Allow better support for screen sharing (Google Meet, Discord, etc) +env = XDG_CURRENT_DESKTOP,Hyprland +env = XDG_SESSION_DESKTOP,Hyprland + +xwayland { + force_zero_scaling = true +} + +# Use XCompose file +env = XCOMPOSEFILE,~/.XCompose + +# Don't show update on first launch +ecosystem { + no_update_news = true +} diff --git a/config/nomarchy/default/hypr/input.conf b/config/nomarchy/default/hypr/input.conf new file mode 100644 index 0000000..74b2aca --- /dev/null +++ b/config/nomarchy/default/hypr/input.conf @@ -0,0 +1,21 @@ +# https://wiki.hyprland.org/Configuring/Variables/#input +input { + kb_layout = us + kb_variant = + kb_model = + kb_options = compose:caps + kb_rules = + + follow_mouse = 1 + + sensitivity = 0 # -1.0 - 1.0, 0 means no modification. + + touchpad { + natural_scroll = false + } +} + +misc { + key_press_enables_dpms = true # key press will trigger wake + mouse_move_enables_dpms = true # mouse move will trigger wake +} diff --git a/config/nomarchy/default/hypr/looknfeel.conf b/config/nomarchy/default/hypr/looknfeel.conf new file mode 100644 index 0000000..b73c954 --- /dev/null +++ b/config/nomarchy/default/hypr/looknfeel.conf @@ -0,0 +1,147 @@ +# Refer to https://wiki.hyprland.org/Configuring/Variables/ + +# Variables +$activeBorderColor = rgba(33ccffee) rgba(00ff99ee) 45deg +$inactiveBorderColor = rgba(595959aa) + +# https://wiki.hyprland.org/Configuring/Variables/#general +general { + gaps_in = 5 + gaps_out = 10 + + border_size = 2 + + # https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors + col.active_border = $activeBorderColor + col.inactive_border = $inactiveBorderColor + + # Set to true enable resizing windows by clicking and dragging on borders and gaps + resize_on_border = false + + # Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on + allow_tearing = false + + layout = dwindle +} + +# https://wiki.hyprland.org/Configuring/Variables/#decoration +decoration { + rounding = 0 + + shadow { + enabled = true + range = 2 + render_power = 3 + color = rgba(1a1a1aee) + } + + # https://wiki.hyprland.org/Configuring/Variables/#blur + blur { + enabled = true + size = 2 + passes = 2 + special = true + brightness = 0.60 + contrast = 0.75 + } +} + +# https://wiki.hypr.land/Configuring/Variables/#group +group { + col.border_active = $activeBorderColor + col.border_inactive = $inactiveBorderColor + col.border_locked_active = -1 + col.border_locked_inactive = -1 + + groupbar { + font_size = 12 + font_family = monospace + font_weight_active = ultraheavy + font_weight_inactive = normal + + indicator_height = 0 + indicator_gap = 5 + height = 22 + gaps_in = 5 + gaps_out = 0 + + text_color = rgb(ffffff) + text_color_inactive = rgba(ffffff90) + col.active = rgba(00000040) + col.inactive = rgba(00000020) + + gradients = true + gradient_rounding = 0 + gradient_round_only_edges = false + } +} + + +# https://wiki.hyprland.org/Configuring/Variables/#animations +animations { + enabled = yes, please :) + + # Default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more + + bezier = easeOutQuint,0.23,1,0.32,1 + bezier = easeInOutCubic,0.65,0.05,0.36,1 + bezier = linear,0,0,1,1 + bezier = almostLinear,0.5,0.5,0.75,1.0 + bezier = quick,0.15,0,0.1,1 + + animation = global, 1, 10, default + animation = border, 1, 5.39, easeOutQuint + animation = windows, 1, 4.79, easeOutQuint + animation = windowsIn, 1, 4.1, easeOutQuint, popin 87% + animation = windowsOut, 1, 1.49, linear, popin 87% + animation = fadeIn, 1, 1.73, almostLinear + animation = fadeOut, 1, 1.46, almostLinear + animation = fade, 1, 3.03, quick + animation = layers, 1, 3.81, easeOutQuint + animation = layersIn, 1, 4, easeOutQuint, fade + animation = layersOut, 1, 1.5, linear, fade + animation = fadeLayersIn, 1, 1.79, almostLinear + animation = fadeLayersOut, 1, 1.39, almostLinear + animation = workspaces, 0, 0, ease + animation = specialWorkspace, 1, 4, easeOutQuint, slidevert +} + +# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more +dwindle { + pseudotile = true # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below + preserve_split = true # You probably want this + force_split = 2 # Always split on the right +} + +# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more +master { + new_status = master +} + +# https://wiki.hyprland.org/Configuring/Variables/#misc +misc { + disable_hyprland_logo = true + disable_splash_rendering = true + disable_scale_notification = true + focus_on_activate = true + anr_missed_pings = 3 + on_focus_under_fullscreen = 1 +} + +# https://wiki.hypr.land/Configuring/Variables/#cursor +cursor { + hide_on_key_press = true + warp_on_change_workspace = 1 +} + +# Auto toggle scratchpad on switching workspace from scratchpad +binds { + hide_special_on_workspace_change = true +} + +# Style Gum confirm to match terminal theme +env = GUM_CONFIRM_PROMPT_FOREGROUND,6 # Cyan +env = GUM_CONFIRM_SELECTED_FOREGROUND,0 # Black +env = GUM_CONFIRM_SELECTED_BACKGROUND,2 # Green +env = GUM_CONFIRM_UNSELECTED_FOREGROUND,7 # White +env = GUM_CONFIRM_UNSELECTED_BACKGROUND,8 # Dark grey diff --git a/config/nomarchy/default/hypr/plain-bindings.conf b/config/nomarchy/default/hypr/plain-bindings.conf new file mode 100644 index 0000000..aaf56fe --- /dev/null +++ b/config/nomarchy/default/hypr/plain-bindings.conf @@ -0,0 +1,16 @@ +# Application bindings +bindd = SUPER, RETURN, Terminal, exec, uwsm-app -- xdg-terminal-exec --dir="$(nomarchy-cmd-terminal-cwd)" +bindd = SUPER SHIFT, RETURN, Browser, exec, nomarchy-launch-browser +bindd = SUPER SHIFT, F, File manager, exec, uwsm-app -- nautilus --new-window +bindd = SUPER ALT SHIFT, F, File manager (cwd), exec, uwsm-app -- nautilus --new-window "$(nomarchy-cmd-terminal-cwd)" +bindd = SUPER SHIFT, B, Browser, exec, nomarchy-launch-browser +bindd = SUPER SHIFT ALT, B, Browser (private), exec, nomarchy-launch-browser --private +bindd = SUPER SHIFT, N, Editor, exec, nomarchy-launch-editor + +# Add extra bindings +# bindd = SUPER SHIFT, A, ChatGPT, exec, nomarchy-launch-webapp "https://chatgpt.com" +# bindd = SUPER SHIFT, R, exec, alacritty -e ssh your-server + +# Overwrite existing bindings, like putting Nomarchy Menu on Super + Space +# unbind = SUPER, SPACE +# bindd = SUPER, SPACE, Nomarchy menu, exec, nomarchy-menu diff --git a/config/nomarchy/default/hypr/windows.conf b/config/nomarchy/default/hypr/windows.conf new file mode 100644 index 0000000..8089063 --- /dev/null +++ b/config/nomarchy/default/hypr/windows.conf @@ -0,0 +1,15 @@ +# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more +# Hyprland 0.53+ syntax +windowrule = suppress_event maximize, match:class .* + +# Tag all windows for default opacity (apps can override with -default-opacity tag) +windowrule = tag +default-opacity, match:class .* + +# Fix some dragging issues with XWayland +windowrule = no_focus on, match:class ^$, match:title ^$, match:xwayland 1, match:float 1, match:fullscreen 0, match:pin 0 + +# App-specific tweaks (may remove default-opacity tag) +source = ~/.config/nomarchy/default/hypr/apps.conf + +# Apply default opacity after apps have had a chance to opt out +windowrule = opacity 0.97 0.9, match:tag default-opacity diff --git a/config/nomarchy/default/mako/core.ini b/config/nomarchy/default/mako/core.ini new file mode 100644 index 0000000..267f7cf --- /dev/null +++ b/config/nomarchy/default/mako/core.ini @@ -0,0 +1,34 @@ +anchor=top-right +default-timeout=5000 +width=420 +outer-margin=20 +padding=10,15 +border-size=2 +max-icon-size=32 +font=sans-serif 14px + +[app-name=Spotify] +invisible=1 + +[mode=do-not-disturb] +invisible=true + +[mode=do-not-disturb app-name=notify-send] +invisible=false + +[urgency=critical] +default-timeout=0 +layer=overlay + +[summary~="Setup Wi-Fi"] +on-button-left=exec sh -c 'nomarchy-notification-dismiss "Setup Wi-Fi"; nomarchy-launch-wifi' + +[summary~="Update System"] +on-button-left=exec sh -c 'nomarchy-notification-dismiss "Update System"; nomarchy-launch-floating-terminal-with-presentation nomarchy-update' + +[summary~="Learn Keybindings"] +on-button-left=exec sh -c 'nomarchy-notification-dismiss "Learn Keybindings"; nomarchy-menu-keybindings' + +[summary~="Screenshot copied & saved"] +max-icon-size=80 +format=%s\n%b diff --git a/config/nomarchy/default/voxtype/config.toml b/config/nomarchy/default/voxtype/config.toml new file mode 100644 index 0000000..59d1f94 --- /dev/null +++ b/config/nomarchy/default/voxtype/config.toml @@ -0,0 +1,97 @@ +# Voxtype Configuration +# +# Location: ~/.config/voxtype/config.toml +# All settings can be overridden via CLI flags +# +# State file for external integrations (Waybar, polybar, etc.) +# Use "auto" for default location ($XDG_RUNTIME_DIR/voxtype/state), +# a custom path, or "disabled" to turn off. The daemon writes state +# ("idle", "recording", "transcribing") to this file whenever it changes. +# Required for `voxtype record toggle` and `voxtype status` commands. +state_file = "auto" + +[hotkey] +# Hotkey is configured in Hyprland. Default is Super + Ctrl + X +enabled = false + +[audio] +# Audio input device ("default" uses system default) +# List devices with: pactl list sources short +device = "default" + +# Sample rate in Hz (whisper expects 16000) +sample_rate = 16000 + +# Maximum recording duration in seconds (safety limit) +max_duration_secs = 60 + +# [audio.feedback] +# Enable audio feedback sounds (beeps when recording starts/stops) +# enabled = true +# +# Sound theme: "default", "subtle", "mechanical", or path to custom theme directory +# theme = "default" +# +# Volume level (0.0 to 1.0) +# volume = 0.7 + +[whisper] +# Model to use for transcription +# Options: tiny, tiny.en, base, base.en, small, small.en, medium, medium.en, large-v3, large-v3-turbo +# .en models are English-only but faster and more accurate for English +# large-v3-turbo is faster than large-v3 with minimal accuracy loss (recommended for GPU) +# Or provide absolute path to a custom .bin model file +model = "base.en" + +# Language for transcription +# Use "en" for English, "auto" for auto-detection +# See: https://github.com/openai/whisper#available-models-and-languages +language = "en" + +# Translate non-English speech to English +translate = false + +# Number of CPU threads for inference (omit for auto-detection) +# threads = 4 + +[output] +# Primary output mode: "type" or "clipboard" +# - type: Simulates keyboard input at cursor position (requires ydotool) +# - clipboard: Copies text to clipboard (requires wl-copy) +mode = "type" + +# Fall back to clipboard if typing fails +fallback_to_clipboard = true + +# Delay between typed characters in milliseconds +# 0 = fastest possible, increase if characters are dropped +type_delay_ms = 1 + +# Post-processing command (optional) +# Pipe transcribed text through an external command for cleanup before output. +# The command receives text on stdin and outputs processed text on stdout. +# Useful for LLM-based text cleanup, grammar correction, filler word removal. +# On any failure (timeout, error), falls back to original transcription. +# +# [output.post_process] +# command = "ollama run llama3.2:1b 'Clean up this dictation. Fix grammar, remove filler words. Output only the cleaned text:'" +# timeout_ms = 30000 # 30 second timeout (generous for LLM) + +[output.notification] +# Show notification when recording starts (hotkey pressed) +on_recording_start = false + +# Show notification when recording stops (transcription beginning) +on_recording_stop = false + +# Show notification with transcribed text after transcription completes +on_transcription = false + +# [text] +# Text processing options (word replacements, spoken punctuation) +# +# Enable spoken punctuation conversion (e.g., say "period" to get ".") +# spoken_punctuation = false +# +# Custom word replacements (case-insensitive) +# replacements = { "hyperwhisper" = "hyprwhspr" } diff --git a/config/nomarchy/default/walker/restart.conf b/config/nomarchy/default/walker/restart.conf new file mode 100644 index 0000000..5794031 --- /dev/null +++ b/config/nomarchy/default/walker/restart.conf @@ -0,0 +1,3 @@ +[Service] +Restart=always +RestartSec=2 diff --git a/config/nomarchy/default/walker/themes/nomarchy-default/layout.xml b/config/nomarchy/default/walker/themes/nomarchy-default/layout.xml new file mode 100644 index 0000000..3b7bda7 --- /dev/null +++ b/config/nomarchy/default/walker/themes/nomarchy-default/layout.xml @@ -0,0 +1,156 @@ + + + + + + true + Walker + + + + 644 + hidden + horizontal + center + center + + + + vertical + true + true + 10 + + + + hidden + horizontal + fill + true + true + + + + fill + true + true + + + + + + + + horizontal + 10 + true + true + + + + true + 100 + Waiting for elephant... + + + + + + No Results + 0.0 + true + + + + + + true + false + true + 600 + 300 + 0 + true + true + automatic + automatic + + + + 1 + false + + + + + + + + + + + + + + true + 10 + + + + 10 + + + + + + true + end + 10 + + + + + + + + + 0 + false + + + + + + + + diff --git a/config/nomarchy/default/walker/themes/nomarchy-default/style.css b/config/nomarchy/default/walker/themes/nomarchy-default/style.css new file mode 100644 index 0000000..d47de70 --- /dev/null +++ b/config/nomarchy/default/walker/themes/nomarchy-default/style.css @@ -0,0 +1,116 @@ +@import "../../../../../../../.config/nomarchy/current/theme/walker.css"; + +* { + all: unset; +} + +* { + font-family: monospace; + font-size: 18px; + color: @text; +} + +scrollbar { + opacity: 0; +} + +.normal-icons { + -gtk-icon-size: 16px; +} + +.large-icons { + -gtk-icon-size: 32px; +} + +.box-wrapper { + background: alpha(@base, 0.95); + padding: 20px; + border: 2px solid @border; +} + +.preview-box { +} + +.box { +} + +.search-container { + background: @base; + padding: 10px; +} + +.input placeholder { + opacity: 0.5; +} + +.input { +} + +.input:focus, +.input:active { + box-shadow: none; + outline: none; +} + +.content-container { +} + +.placeholder { +} + +.scroll { +} + +.list { +} + +child, +child > * { +} + +child:hover .item-box { +} + +child:selected .item-box { +} + +child:selected .item-box * { + color: @selected-text; +} + +.item-box { + padding-left: 14px; +} + +.item-text-box { + all: unset; + padding: 14px 0; +} + +.item-text { +} + +.item-subtext { + font-size: 0px; + min-height: 0px; + margin: 0px; + padding: 0px; +} + +.item-image { + margin-right: 14px; + -gtk-icon-transform: scale(0.9); +} + +.current { + font-style: italic; +} + +.keybind-hints { + background: @background; + padding: 10px; + margin-top: 10px; +} + +.preview { +} diff --git a/config/nomarchy/default/walker/walker.desktop b/config/nomarchy/default/walker/walker.desktop new file mode 100644 index 0000000..fa7bdfe --- /dev/null +++ b/config/nomarchy/default/walker/walker.desktop @@ -0,0 +1,7 @@ +[Desktop Entry] +Name=Walker +Comment=Walker Service +Exec=walker --gapplication-service +StartupNotify=false +Terminal=false +Type=Application diff --git a/config/nomarchy/default/waybar/indicators/idle.sh b/config/nomarchy/default/waybar/indicators/idle.sh new file mode 100755 index 0000000..ebb5f4f --- /dev/null +++ b/config/nomarchy/default/waybar/indicators/idle.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +if pgrep -x hypridle >/dev/null; then + echo '{"text": ""}' +else + echo '{"text": "󱫖", "tooltip": "Idle lock disabled", "class": "active"}' +fi diff --git a/config/nomarchy/default/waybar/indicators/notification-silencing.sh b/config/nomarchy/default/waybar/indicators/notification-silencing.sh new file mode 100755 index 0000000..d5a6827 --- /dev/null +++ b/config/nomarchy/default/waybar/indicators/notification-silencing.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +if makoctl mode | grep -q 'do-not-disturb'; then + echo '{"text": "󰂛", "tooltip": "Notifications silenced", "class": "active"}' +else + echo '{"text": ""}' +fi diff --git a/config/nomarchy/default/waybar/indicators/screen-recording.sh b/config/nomarchy/default/waybar/indicators/screen-recording.sh new file mode 100755 index 0000000..80038e0 --- /dev/null +++ b/config/nomarchy/default/waybar/indicators/screen-recording.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +if pgrep -f "^gpu-screen-recorder" >/dev/null; then + echo '{"text": "󰻂", "tooltip": "Stop recording", "class": "active"}' +else + echo '{"text": ""}' +fi diff --git a/config/nomarchy/default/wireplumber/wireplumber.conf.d/alsa-soft-mixer.conf b/config/nomarchy/default/wireplumber/wireplumber.conf.d/alsa-soft-mixer.conf new file mode 100644 index 0000000..6fc1dbd --- /dev/null +++ b/config/nomarchy/default/wireplumber/wireplumber.conf.d/alsa-soft-mixer.conf @@ -0,0 +1,18 @@ +## Use software volume control for all ALSA devices. +## This prevents hardware mixer quirks (like muffled audio on Realtek codecs) +## and provides consistent volume behavior across all hardware. + +monitor.alsa.rules = [ + { + matches = [ + { + device.name = "~alsa_card.*" + } + ] + actions = { + update-props = { + api.alsa.soft-mixer = true + } + } + } +] diff --git a/config/nomarchy/default/xcompose b/config/nomarchy/default/xcompose new file mode 100644 index 0000000..a45c5be --- /dev/null +++ b/config/nomarchy/default/xcompose @@ -0,0 +1,29 @@ +include "%L" + +# Emoji + : "😄" # smile + : "😂" # cry + : "😍" # love + : "✌️" # victory + : "❤️" # heart + : "👍" # yes + : "👎" # no + : "🖕" # fuck + : "🤞" # wish + : "🤘" # rock + : "😘" # kiss + : "🙄" # eyeroll + : "🤤" # droll + : "💰" # money + : "🎉" # xellebrate + <1> : "💯" # 100% + : "🥂" # toast +

: "🙏" # pray + : "😉" # wink + : "👌" # OK + : "👋" # greeting + : "💪" # arm + : "🤯" # blowing + +# Typography + : "—" diff --git a/config/walker/config.toml b/config/walker/config.toml index ebbb8e6..6c39101 100644 --- a/config/walker/config.toml +++ b/config/walker/config.toml @@ -1,7 +1,7 @@ force_keyboard_focus = true # forces keyboard forcus to stay in Walker selection_wrap = true # wrap list if at bottom or top theme = "nomarchy-default" # theme to use -additional_theme_location = "~/.local/share/nomarchy/default/walker/themes/" +additional_theme_location = "~/.config/nomarchy/default/walker/themes/" hide_action_hints = true # globally hide the action hints [placeholders] diff --git a/modules/home/default.nix b/modules/home/default.nix index 7934276..aac255c 100644 --- a/modules/home/default.nix +++ b/modules/home/default.nix @@ -1,7 +1,7 @@ { config, pkgs, inputs, lib, ... }: let - palettes = import ../../themes/nomarchy-palettes.nix; + palettes = import ../../assets/themes/nomarchy-palettes.nix; userPackagesFile = "${config.home.homeDirectory}/.config/home-manager/user-packages.json"; userPackages = if builtins.pathExists userPackagesFile then let diff --git a/modules/home/scripts.nix b/modules/home/scripts.nix index 8c2b2a1..d67f2e3 100644 --- a/modules/home/scripts.nix +++ b/modules/home/scripts.nix @@ -39,7 +39,7 @@ let installPhase = '' mkdir -p $out/bin - cp -r * $out/bin/ + find . -type f -exec cp {} $out/bin/ \; chmod +x $out/bin/* # Wrap every script to ensure dependencies are in PATH and inject configuration diff --git a/modules/home/state.nix b/modules/home/state.nix index 3c630f1..6805e65 100644 --- a/modules/home/state.nix +++ b/modules/home/state.nix @@ -119,9 +119,9 @@ in fonts.monospace = togglesState.font or "JetBrainsMono Nerd Font"; # Derived properties from the theme directory - isLightMode = builtins.pathExists (../../themes + "/${togglesState.theme or "nord"}/light.mode"); + isLightMode = builtins.pathExists (../../assets/themes + "/${togglesState.theme or "nord"}/light.mode"); iconsTheme = let - iconsFile = ../../themes + "/${togglesState.theme or "nord"}/icons.theme"; + iconsFile = ../../assets/themes + "/${togglesState.theme or "nord"}/icons.theme"; in if builtins.pathExists iconsFile then lib.removeSuffix "\n" (builtins.readFile iconsFile) diff --git a/modules/home/stylix.nix b/modules/home/stylix.nix index e3c0878..7ffd492 100644 --- a/modules/home/stylix.nix +++ b/modules/home/stylix.nix @@ -2,12 +2,12 @@ let # Re-use our state-based logic - palettes = import ../../themes/nomarchy-palettes.nix; + palettes = import ../../assets/themes/nomarchy-palettes.nix; activeThemeName = config.nomarchy.theme; activeWallpaper = if config.nomarchy.wallpaper != "" then config.nomarchy.wallpaper - else "${../../themes/catppuccin/backgrounds/1-totoro.png}"; # Fallback + else "${../../assets/themes/catppuccin/backgrounds/1-totoro.png}"; # Fallback # Map nix-colors palette to a format Stylix expects (attrset of hex strings) currentPalette = (palettes.${activeThemeName} or palettes.nord).palette; diff --git a/modules/home/theme-files.nix b/modules/home/theme-files.nix index 4b81131..b872f09 100644 --- a/modules/home/theme-files.nix +++ b/modules/home/theme-files.nix @@ -2,7 +2,7 @@ { xdg.configFile."nomarchy/current/theme" = { - source = ../../themes/${config.nomarchy.theme}; + source = ../../assets/themes/${config.nomarchy.theme}; recursive = true; }; @@ -13,5 +13,8 @@ xdg.configFile."nomarchy/branding/logo.txt".source = ../../assets/branding/logo.txt; # Expose all themes to the system via local share for script accessibility - xdg.dataFile."nomarchy/themes".source = ../../themes; + xdg.dataFile."nomarchy/themes".source = ../../assets/themes; + + # Nautilus python extensions + xdg.dataFile."nautilus-python/extensions/localsend.py".source = ../../assets/nautilus-python/extensions/localsend.py; } diff --git a/modules/home/theme-switcher.nix b/modules/home/theme-switcher.nix index 79b762c..3fb88e7 100644 --- a/modules/home/theme-switcher.nix +++ b/modules/home/theme-switcher.nix @@ -1,7 +1,7 @@ { config, pkgs, ... }: let - palettes = import ../../themes/nomarchy-palettes.nix; + palettes = import ../../assets/themes/nomarchy-palettes.nix; themeNames = builtins.attrNames palettes; themeList = builtins.concatStringsSep "\\n" themeNames; diff --git a/modules/system/browser.nix b/modules/system/browser.nix index 370d323..6aa6651 100644 --- a/modules/system/browser.nix +++ b/modules/system/browser.nix @@ -1,7 +1,7 @@ { config, pkgs, lib, ... }: let - palettes = import ../../themes/nomarchy-palettes.nix; + palettes = import ../../assets/themes/nomarchy-palettes.nix; activeThemeName = config.nomarchy.system.theme; currentPalette = (palettes.${activeThemeName} or palettes.nord).palette; diff --git a/modules/system/default.nix b/modules/system/default.nix index ef745bb..7ccbc6c 100644 --- a/modules/system/default.nix +++ b/modules/system/default.nix @@ -4,6 +4,7 @@ imports = [ ./options.nix ./state.nix + ./systemd.nix ./plymouth.nix ./sddm.nix ./hardware.nix @@ -12,6 +13,7 @@ ./network.nix ./browser.nix ./impermanence.nix + ./makima.nix ]; time.timeZone = config.nomarchy.system.timezone; diff --git a/modules/system/hardware.nix b/modules/system/hardware.nix index 89595ec..e0d63ee 100644 --- a/modules/system/hardware.nix +++ b/modules/system/hardware.nix @@ -62,6 +62,7 @@ in (mkIf config.nomarchy.system.features.hybridGPU { services.supergfxd.enable = true; + systemd.services.supergfxd.serviceConfig.ExecStartPre = "-${pkgs.coreutils}/bin/sleep 5"; }) ]; } diff --git a/modules/system/makima.nix b/modules/system/makima.nix new file mode 100644 index 0000000..05208d2 --- /dev/null +++ b/modules/system/makima.nix @@ -0,0 +1,25 @@ +{ config, pkgs, lib, ... }: + +let + cfg = config.nomarchy.system.features.makima; +in +{ + config = lib.mkIf cfg { + # If the user has makima-bin available in their overlays (as they originally used a custom package), + # this will install it. Otherwise, it will fail evaluation if not available in nixpkgs. + environment.systemPackages = [ pkgs.makima-bin ]; + + environment.etc."makima/AT Translated Set 2 keyboard.toml".source = ../../assets/makima + "/AT Translated Set 2 keyboard.toml"; + + systemd.services.makima = { + description = "Makima key remapping service"; + wantedBy = [ "multi-user.target" ]; + serviceConfig = { + User = config.services.displayManager.autoLogin.user; + Environment = "MAKIMA_CONFIG=/etc/makima"; + ExecStart = "${pkgs.makima-bin}/bin/makima"; + Restart = "on-failure"; + }; + }; + }; +} diff --git a/modules/system/options.nix b/modules/system/options.nix index 25f5c8f..df31e79 100644 --- a/modules/system/options.nix +++ b/modules/system/options.nix @@ -40,6 +40,11 @@ default = false; description = "Whether to enable hybrid GPU support (supergfxd)."; }; + makima = lib.mkOption { + type = lib.types.bool; + default = false; + description = "Whether to enable makima key remapper."; + }; }; theme = lib.mkOption { type = lib.types.str; diff --git a/modules/system/sddm.nix b/modules/system/sddm.nix index 9dd9c0c..ffcc261 100644 --- a/modules/system/sddm.nix +++ b/modules/system/sddm.nix @@ -1,11 +1,25 @@ { config, pkgs, lib, ... }: +let + nomarchy-sddm-theme = pkgs.stdenv.mkDerivation { + pname = "nomarchy-sddm-theme"; + version = "1.0"; + src = ../../assets/sddm/nomarchy; + installPhase = '' + mkdir -p $out/share/sddm/themes/nomarchy + cp -r * $out/share/sddm/themes/nomarchy/ + ''; + }; +in { services.displayManager.sddm = { enable = true; wayland.enable = true; + theme = "nomarchy"; }; + environment.systemPackages = [ nomarchy-sddm-theme ]; + # Enable Hyprland system-level dependencies programs.hyprland.enable = true; } diff --git a/modules/system/state.nix b/modules/system/state.nix index 4091420..dafb77f 100644 --- a/modules/system/state.nix +++ b/modules/system/state.nix @@ -22,6 +22,7 @@ in fingerprint = systemState.features.fingerprint or false; fido2 = systemState.features.fido2 or false; hybridGPU = systemState.features.hybridGPU or false; + makima = systemState.features.makima or false; }; theme = systemState.theme or "nord"; }; diff --git a/modules/system/systemd.nix b/modules/system/systemd.nix new file mode 100644 index 0000000..3596690 --- /dev/null +++ b/modules/system/systemd.nix @@ -0,0 +1,64 @@ +{ config, pkgs, lib, ... }: + +{ + systemd.settings.Manager.DefaultTimeoutStopSec = "5s"; + + systemd.services."user@".serviceConfig.TimeoutStopSec = "5s"; + + powerManagement.powerDownCommands = '' + # --- force-igpu --- + # Use the Vfio to Integrated trick to turn off NVIDIA dgpu when in integrated mode + if [[ $1 == "hibernate" ]] && ${pkgs.coreutils}/bin/lsmod | grep -q supergfxd; then + ${pkgs.supergfxctl}/bin/supergfxctl -m Vfio || true + sleep 1 + fi + + # --- keyboard-backlight --- + # Turn off keyboard backlight before hibernate to prevent hang on power-off. + if [[ $1 == "hibernate" ]]; then + device="" + for candidate in /sys/class/leds/*kbd_backlight*; do + if [[ -e "$candidate" ]]; then + device="$(${pkgs.coreutils}/bin/basename "$candidate")" + break + fi + done + if [[ -n "$device" ]]; then + ${pkgs.brightnessctl}/bin/brightnessctl -d "$device" set 0 >/dev/null 2>&1 || true + fi + fi + + # --- unmount-fuse --- + # Lazy-unmount gvfsd-fuse filesystems before suspend/hibernate + while IFS=' ' read -r _ mountpoint fstype _; do + if [[ $fstype == fuse.gvfsd-fuse ]]; then + mountpoint=$(printf '%b' "$mountpoint") + ${pkgs.fuse3}/bin/fusermount3 -uz "$mountpoint" 2>/dev/null || ${pkgs.fuse}/bin/fusermount -uz "$mountpoint" 2>/dev/null || true + fi + done < /proc/mounts + ''; + + powerManagement.resumeCommands = '' + # --- force-igpu --- + if ${pkgs.coreutils}/bin/lsmod | grep -q supergfxd; then + sleep 4 + ${pkgs.supergfxctl}/bin/supergfxctl -m Vfio || true + sleep 1 + ${pkgs.supergfxctl}/bin/supergfxctl -m Integrated || true + fi + + # --- unmount-fuse --- + ( + sleep 5 + for uid_dir in /run/user/*; do + uid="$(${pkgs.coreutils}/bin/basename "$uid_dir")" + if [[ -S $uid_dir/bus ]]; then + sudo -u "#$uid" env \ + DBUS_SESSION_BUS_ADDRESS="unix:path=$uid_dir/bus" \ + XDG_RUNTIME_DIR="$uid_dir" \ + systemctl --user restart gvfs-daemon.service 2>/dev/null || true + fi + done + ) & + ''; +}