dotfiles

My PC Dotfiles & Website
commit 940be9f48d5a8a391aaa37b8d824895246e8b131
parent 37aa2836654c2ba34f0434e2b7b8d826bb5ec742
Author: maydayv7 <maydayv7@gmail.com>
Date:   Fri,  3 Jul 2026 23:07:36 +0530

feat: Hyprland Scroll Overview

And VS Code extension updates

Diffstat:
MCHANGELOG.md | 2++
Mfiles/hyprland/kebihelp.json | 40++++++++++++++++++++++++++++++++++++----
Mfiles/hyprland/noctalia/layout/plugin.toml | 30+++++++++++++++---------------
Mfiles/hyprland/noctalia/submap/plugin.toml | 26++++++++++++++++----------
Mfiles/hyprland/noctalia/submap/submap.luau | 18++++++++++++++++--
Mfiles/hyprland/noctalia/submap/translations/en.json | 4++++
Mfiles/hyprland/pypr.toml | 9++-------
Mfiles/vscode/settings.json | 7++++++-
Mfiles/zed/keymap.json | 1+
Mflake.lock | 34+++++++++++++++++++++++++++++++---
Mflake.nix | 11++++++++++-
Mmodules/apps/firefox.nix | 2+-
Mmodules/apps/syncthing.nix | 4++--
Mmodules/apps/vscode/_profile.nix | 14+++++++++-----
Mmodules/desktop/_wm/shell.nix | 58++++++++++++++++++++++++++++++++++++++--------------------
Mmodules/desktop/hyprland/_features/shell.nix | 13+++++++++++--
Mmodules/desktop/hyprland/_settings/keybinds.nix | 67++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------
Mmodules/desktop/hyprland/_settings/main.nix | 64+++++++++++++++++++++++++++++++++-------------------------------
Mmodules/desktop/hyprland/_settings/plugins.nix | 29++++++++++++++++++++++++++---
Mmodules/games/games.nix | 2+-
Mmodules/games/mc-server/default.nix | 4++--
Mmodules/hosts/valkyrie/_asus/default.nix | 2+-
Mmodules/hosts/valkyrie/_vm/default.nix | 2+-
Mmodules/hosts/valkyrie/default.nix | 2+-
Mmodules/hosts/vortex.nix | 4++--
Mmodules/system/filesystem.nix | 2+-
Mmodules/system/security/default.nix | 2+-
Mmodules/virt/android.nix | 2+-
Mmodules/virt/docker.nix | 2+-
Mpackages/_module.nix | 6+++++-
Mscripts/hyprutils.nix | 2+-
Mscripts/os.nix | 5-----
Mshells/python.nix | 4+---
Msite/zola.toml | 10+++++-----
34 files changed, 343 insertions(+), 141 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md @@ -2,6 +2,8 @@ ### June +- Update VS Code Extensions +- Use Hyprland [scroll-overview](https://github.com/yayuuu/hyprland-scroll-overview) - Sandbox Firefox using [NixPak](https://github.com/nixpak/nixpak) - Add Zed Editor - Rename `nixos` script to `os` and adopt [`nh`](https://github.com/nix-community/nh) diff --git a/files/hyprland/kebihelp.json b/files/hyprland/kebihelp.json @@ -350,20 +350,28 @@ "label": "" }, { - "value": "3F Swipe", - "label": "Scrolling: switch apps / columns" + "value": "3F Swipe ↔", + "label": "Switch apps / columns" }, { - "value": "4F Swipe", + "value": "3F Swipe ↕", "label": "Switch across workspaces" }, { + "value": "4F Swipe ↑", + "label": "Toggle workspace overview" + }, + { "value": "", "label": "" }, { "value": "L' (in overview)", - "label": "Change workspace" + "label": "Select workspace / window" + }, + { + "value": "R' (in overview)", + "label": "Close window" }, { "value": "L' drag (in overview)", @@ -441,6 +449,30 @@ { "value": "Q", "label": "Close selected window" + }, + { + "value": "", + "label": "" + }, + { + "value": "$mod `", + "label": "Overview Submap" + }, + { + "value": "<ARROW>", + "label": "Navigate workspaces / windows" + }, + { + "value": "<NUM>", + "label": "Jump to workspace" + }, + { + "value": "Return or L'", + "label": "Select workspace / window" + }, + { + "value": "R'", + "label": "Close window under cursor" } ] } diff --git a/files/hyprland/noctalia/layout/plugin.toml b/files/hyprland/noctalia/layout/plugin.toml @@ -34,20 +34,20 @@ default = "" id = "indicator" entry = "layout.luau" - [[widget.setting]] - key = "scroll_glyph" - type = "glyph" - label_key = "settings.scroll_glyph.label" - default = "layout-columns" +[[widget.setting]] +key = "scroll_glyph" +type = "glyph" +label_key = "settings.scroll_glyph.label" +default = "layout-columns" - [[widget.setting]] - key = "dwindle_glyph" - type = "glyph" - label_key = "settings.dwindle_glyph.label" - default = "binary-tree" +[[widget.setting]] +key = "dwindle_glyph" +type = "glyph" +label_key = "settings.dwindle_glyph.label" +default = "binary-tree" - [[widget.setting]] - key = "float_glyph" - type = "glyph" - label_key = "settings.float_glyph.label" - default = "app-window" +[[widget.setting]] +key = "float_glyph" +type = "glyph" +label_key = "settings.float_glyph.label" +default = "app-window" diff --git a/files/hyprland/noctalia/submap/plugin.toml b/files/hyprland/noctalia/submap/plugin.toml @@ -16,18 +16,24 @@ label_key = "settings.command.label" description_key = "settings.command.description" default = "socat -u UNIX-CONNECT:$XDG_RUNTIME_DIR/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock -" +[[setting]] +key = "aliases" +type = "string_list" +label_key = "settings.aliases.label" +description_key = "settings.aliases.description" + [[widget]] id = "indicator" entry = "submap.luau" - [[widget.setting]] - key = "glyph" - type = "glyph" - label_key = "settings.glyph.label" - default = "keyboard" +[[widget.setting]] +key = "glyph" +type = "glyph" +label_key = "settings.glyph.label" +default = "keyboard" - [[widget.setting]] - key = "show_glyph" - type = "bool" - label_key = "settings.show_glyph.label" - default = true +[[widget.setting]] +key = "show_glyph" +type = "bool" +label_key = "settings.show_glyph.label" +default = true diff --git a/files/hyprland/noctalia/submap/submap.luau b/files/hyprland/noctalia/submap/submap.luau @@ -2,8 +2,20 @@ local glyph = barWidget.getConfig("glyph") local showGlyph = barWidget.getConfig("show_glyph") +local aliasList = barWidget.getConfig("aliases") local command = barWidget.getConfig("command") +-- Aliases +local aliases = {} +if type(aliasList) == "table" then + for _, entry in ipairs(aliasList) do + local key, label = string.match(entry, "^([^=]+)=(.*)$") + if key ~= nil then + aliases[key] = label + end + end +end + local function apply(name) if name == nil or name == "" then barWidget.setText("") @@ -12,11 +24,13 @@ local function apply(name) return end + local display = aliases[name] or name + if showGlyph then barWidget.setGlyph(glyph) end - barWidget.setText(name) - barWidget.setTooltip(noctalia.tr("active") .. name) + barWidget.setText(display) + barWidget.setTooltip(noctalia.tr("active") .. display) barWidget.setVisible(true) end diff --git a/files/hyprland/noctalia/submap/translations/en.json b/files/hyprland/noctalia/submap/translations/en.json @@ -9,6 +9,10 @@ "show_glyph": { "label": "Show glyph" }, + "aliases": { + "label": "Name aliases", + "description": "Display-name overrides as 'submap=Label' entries." + }, "command": { "label": "Stream command", "description": "Shell command emitting Hyprland socket2 event lines." diff --git a/files/hyprland/pypr.toml b/files/hyprland/pypr.toml @@ -1,14 +1,9 @@ [pyprland] -plugins = [ - "gamemode", - "magnify", - "scratchpads", - "toggle_special" -] +plugins = ["gamemode", "magnify", "scratchpads", "toggle_special"] [gamemode] auto = true -# Refine via: hyprctl clients -j | jq '.[].class' +# ? # Refine via: hyprctl clients -j | jq '.[].class' patterns = ["steam_app_*", "gamescope*", "*.exe"] border_size = 2 hysteresis = 2.0 diff --git a/files/vscode/settings.json b/files/vscode/settings.json @@ -4,6 +4,7 @@ "editor.cursorSmoothCaretAnimation": "on", "editor.cursorStyle": "line-thin", "editor.formatOnSave": true, + "editor.linkedEditing": true, "editor.smoothScrolling": true, "editor.suggest.preview": true, "editor.suggest.showStatusBar": true, @@ -40,6 +41,7 @@ "editor.defaultFormatter": "esbenp.prettier-vscode", "better-comments.highlightPlainText": true, "scm.repositories.visible": 7, + "python.languageServer": "None", "nix.enableLanguageServer": true, "nix.serverPath": "nixd", "nix.hiddenLanguageServerErrors": ["textDocument/definition"], @@ -65,9 +67,12 @@ "editor.defaultFormatter": "ms-vscode.cpptools" }, "[python]": { - "editor.defaultFormatter": "ms-python.black-formatter" + "editor.defaultFormatter": "charliermarsh.ruff" }, "[xml]": { "editor.defaultFormatter": "redhat.vscode-xml" + }, + "[toml]": { + "editor.defaultFormatter": "tombi-toml.tombi" } } diff --git a/files/zed/keymap.json b/files/zed/keymap.json @@ -10,6 +10,7 @@ { "context": "Editor", "bindings": { + "ctrl-/": "command_palette::Toggle", "ctrl-d": "editor::DeleteLine", "ctrl-'": "editor::ToggleComments" } diff --git a/flake.lock b/flake.lock @@ -1229,6 +1229,32 @@ "type": "github" } }, + "hyprscrolloverview": { + "inputs": { + "flake-parts": [ + "flake-parts" + ], + "hyprland": [ + "hyprland" + ], + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1782953521, + "narHash": "sha256-xJx9LgpLqfNn/nUd8NdkSILin1/mgYNwct1solYGyqw=", + "owner": "yayuuu", + "repo": "hyprland-scroll-overview", + "rev": "c5623c96b8b9b0400595996956661210510685ac", + "type": "github" + }, + "original": { + "owner": "yayuuu", + "repo": "hyprland-scroll-overview", + "type": "github" + } + }, "hyprshutdown": { "inputs": { "aquamarine": "aquamarine_3", @@ -1764,15 +1790,16 @@ ] }, "locked": { - "lastModified": 1782839287, - "narHash": "sha256-r4ewSFPTO86O5njPZEvQ77/hYQr/n6yn2t02DAKqQ3Y=", + "lastModified": 1783018875, + "narHash": "sha256-6fvuoptg/RzxtebP+OC2LtqVZSjzs4fBg6ilYzuFjqQ=", "owner": "noctalia-dev", "repo": "noctalia", - "rev": "1c7d339298a75ffa53f7553ea50e36187695884a", + "rev": "ad11b4ba6f782dd9b7f965a123cfaae3e89a4636", "type": "github" }, "original": { "owner": "noctalia-dev", + "ref": "v5.0.0-beta1", "repo": "noctalia", "type": "github" } @@ -1903,6 +1930,7 @@ "home-manager": "home-manager", "hyprcursors": "hyprcursors", "hyprland": "hyprland", + "hyprscrolloverview": "hyprscrolloverview", "hyprsplit": "hyprsplit", "impermanence": "impermanence", "import-tree": "import-tree", diff --git a/flake.nix b/flake.nix @@ -201,7 +201,7 @@ # Desktop Shell noctalia = { - url = "github:noctalia-dev/noctalia"; + url = "github:noctalia-dev/noctalia/v5.0.0-beta1"; inputs.nixpkgs.follows = "nixpkgs"; }; @@ -245,6 +245,15 @@ hyprland.follows = "hyprland"; }; }; + + hyprscrolloverview = { + url = "github:yayuuu/hyprland-scroll-overview"; + inputs = { + nixpkgs.follows = "nixpkgs"; + hyprland.follows = "hyprland"; + flake-parts.follows = "flake-parts"; + }; + }; }; ## Configuration ## diff --git a/modules/apps/firefox.nix b/modules/apps/firefox.nix @@ -48,7 +48,7 @@ in { (extension "keepassxc-browser" "keepassxc-browser@keepassxc.org") (extension "setupvpn" "@setupvpncom") (extension "stylus" "{7a7a4a92-a2a0-41d1-9fd7-1e92480d612d}") - (extension "tabliss" "extension@tabliss.io") + (extension "tablissng" "extension@tabliss-maintained") (extension "uaswitcher" "user-agent-switcher@ninetailed.ninja") (extension "ublock-origin" "uBlock0@raymondhill.net") ]; diff --git a/modules/apps/syncthing.nix b/modules/apps/syncthing.nix @@ -1,6 +1,6 @@ ## Syncthing Configuration ## -#? Configure via Web UI: http://localhost:8384 -#? Shared directory is at 'files.path.sync' +# ? # Configure via Web UI: http://localhost:8384 +# ? # Shared directory is at 'files.path.sync' { flake.modules.homeManager.syncthing = { services.syncthing.enable = true; diff --git a/modules/apps/vscode/_profile.nix b/modules/apps/vscode/_profile.nix @@ -46,27 +46,31 @@ with files.vscode; { github.vscode-pull-request-github # GitHub github.copilot # Copilot AI + dart-code.dart-code # Dart dart-code.flutter # Flutter jnoortheen.nix-ide # Nix - ms-python.python # Python ms-vscode.cpptools # C/C++ redhat.java # Java rust-lang.rust-analyzer # Rust - tomoki1207.pdf # PDF Viewer + tombi-toml.tombi # TOML yzhang.markdown-all-in-one # Markdown + # Python + ms-python.python + charliermarsh.ruff + detachhead.basedpyright + # HTML/CSS/XML ecmel.vscode-html-css - formulahendry.auto-rename-tag redhat.vscode-xml # JS dbaeumer.vscode-eslint - ritwickdey.liveserver + ms-vscode.live-server # Live Preview ] ++ (with pkgs.vscode-marketplace; [ + cweijan.vscode-office # Document Viewer langningchen.cph-ng # CP - kisstkondoros.vscode-gutter-preview # Image Preview ]) ++ lib.optionals isGnome [pkgs.vscode-extensions.piousdeer.adwaita-theme]; } diff --git a/modules/desktop/_wm/shell.nix b/modules/desktop/_wm/shell.nix @@ -6,7 +6,6 @@ lib, ... }: let - inherit (lib) mkDefault; output = osConfig.gui.display or "eDP-1"; in { imports = [inputs.noctalia.homeModules.default]; @@ -23,25 +22,34 @@ shell = { font_family = config.stylix.fonts.sansSerif.name; avatar_path = "~/.face"; - clipboard_enabled = true; - clipboard_history_max_entries = 150; polkit_agent = true; launch_apps_as_systemd_services = true; settings_show_advanced = true; - panel.launcher_session_search = true; - shadow.direction = "center"; - screen_corners = { - enabled = true; - size = 30; + panel = { + launcher_session_search = true; + open_near_click_control_center = true; + open_near_click_session = true; }; + # Clipboard + clipboard_enabled = true; + clipboard_history_max_entries = 150; + # Screenshots screenshot = { save_to_file = true; copy_to_clipboard = true; freeze_screen = true; + confirm_region = true; directory = "~/Pictures/Screenshots"; }; + + # Appearance + shadow.direction = "center"; + screen_corners = { + enabled = true; + size = 30; + }; }; theme = { @@ -59,8 +67,8 @@ # Bar bar.main = { position = "top"; - start = mkDefault ["session" "taskbar" "media"]; - center = ["launcher" "clock" "control-center"]; + start = lib.mkDefault ["control-center" "taskbar" "media"]; + center = ["launcher" "clock" "weather"]; end = [ "group:g2" "recorder" @@ -71,6 +79,7 @@ "brightness" "battery" "notifications" + "session" ]; background_opacity = 0.75; margin_edge = 0; @@ -80,20 +89,14 @@ scale = 1.1; thickness = 30; widget_spacing = 14; - capsule_group = mkDefault [ + capsule_group = lib.mkDefault [ { id = "g2"; members = ["tray"]; } ]; }; - - # Audio - audio = { - enable_overdrive = true; - enable_sounds = true; - sound_volume = 0.3; - }; + control_center.sidebar_section = "none"; # Widgets widget = { @@ -112,9 +115,24 @@ show_active_indicator = false; workspace_label_placement = "inside"; }; + weather = { + show_condition = false; + show_temperature = false; + }; + control-center = { + custom_image = "${config.programs.noctalia.package}/share/noctalia/assets/images/distros/nixos.svg"; + custom_image_colorize = true; + }; }; system.monitor.enabled = true; + # Audio + audio = { + enable_overdrive = true; + enable_sounds = true; + sound_volume = 0.3; + }; + # Calendar calendar = { enabled = true; @@ -299,7 +317,7 @@ # Plugins plugins = { - source = mkDefault [ + source = lib.mkDefault [ { name = "official"; kind = "git"; @@ -311,7 +329,7 @@ location = "https://github.com/noctalia-dev/community-plugins"; } ]; - enabled = mkDefault [ + enabled = lib.mkDefault [ "noctalia/screen_recorder" "noctalia/timer" ]; diff --git a/modules/desktop/hyprland/_features/shell.nix b/modules/desktop/hyprland/_features/shell.nix @@ -9,7 +9,7 @@ programs.noctalia.settings = { # Bar bar.main = { - start = ["session" "taskbar" "group:g1" "media"]; + start = ["control-center" "taskbar" "group:g1" "media"]; capsule_group = [ { id = "g1"; @@ -66,7 +66,16 @@ jq = lib.getExe pkgs.jq; socket2 = "${lib.getExe pkgs.socat} -u UNIX-CONNECT:$XDG_RUNTIME_DIR/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock -"; in { - "maydayv7/hyprland-submap".command = socket2; + "maydayv7/hyprland-submap" = { + command = socket2; + aliases = [ + "inhibit=Inhibit" + "resize=Resize" + "move=Move" + "minimized=Minimized" + "scrolloverview=Overview" + ]; + }; "maydayv7/hyprland-layout" = { command = socket2; layout_command = "${hyprctl} getoption -j general:layout"; diff --git a/modules/desktop/hyprland/_settings/keybinds.nix b/modules/desktop/hyprland/_settings/keybinds.nix @@ -36,6 +36,13 @@ _: {lib, ...}: let moveActive = x: y: ''hl.dsp.window.move({ x = ${toString x}, y = ${toString y}, relative = true })''; resizeActive = x: y: ''hl.dsp.window.resize({ x = ${toString x}, y = ${toString y}, relative = true })''; multi = disps: "function() " + concatStringsSep " " (map (d: "hl.dispatch(${d});") disps) + " end"; + call = d: "hl.dispatch(${d})"; + + # Overview + seq = stmts: "function() " + concatStringsSep " " (map (s: "${s};") stmts) + " end"; + overview = action: ''hl.plugin.scrolloverview.overview("${action}")''; + soNav = d: ''hl.plugin.scrolloverview.navigate("${dir d}")''; + soWindow = action: ''hl.plugin.scrolloverview.window("${action}")''; # Layout-specific binds layout = msg: ''hl.dsp.layout("${msg}")''; @@ -133,10 +140,16 @@ in { (bind (combo [] "Print") (exec "noctalia msg screenshot-region")) (bind (combo ["SHIFT"] "Print") (exec "noctalia msg screenshot-fullscreen pick")) + # Overview + (bind (combo [mod] "grave") (seq [ + (overview "toggle") + (call ''hl.dsp.submap("scrolloverview")'') + ])) + # Submaps - (bind (combo [mod "SHIFT"] "Escape") ''hl.dsp.submap("Inhibit")'') - (bind (combo [mod] "R") ''hl.dsp.submap("Resize")'') - (bind (combo [mod] "M") ''hl.dsp.submap("Move")'') + (bind (combo [mod "SHIFT"] "Escape") ''hl.dsp.submap("inhibit")'') + (bind (combo [mod] "R") ''hl.dsp.submap("resize")'') + (bind (combo [mod] "M") ''hl.dsp.submap("move")'') ] ++ # Workspaces @@ -191,10 +204,50 @@ in { ## Submaps submaps = { # Inhibit Keybinds - Inhibit.settings.bind = [(bind (combo [mod "SHIFT"] "Escape") ''hl.dsp.submap("reset")'')]; + inhibit.settings.bind = [(bind (combo [mod "SHIFT"] "Escape") ''hl.dsp.submap("reset")'')]; + + # Workspace Overview + scrolloverview.settings.bind = + [ + (bind (combo [] "left") (seq [(soNav "l")])) + (bind (combo [] "right") (seq [(soNav "r")])) + (bind (combo [] "up") (seq [(soNav "u")])) + (bind (combo [] "down") (seq [(soNav "d")])) + (bind (combo [] "Return") (seq [ + (overview "select") + (call ''hl.dsp.submap("reset")'') + ])) + (bind (combo [] "escape") (seq [ + (overview "off") + (call ''hl.dsp.submap("reset")'') + ])) + (bind (combo [mod] "grave") (seq [ + (overview "off") + (call ''hl.dsp.submap("reset")'') + ])) + (bindOpts (combo [] "mouse:272") (seq [ + (overview "select") + (soWindow "select") + (overview "off") + (call ''hl.dsp.submap("reset")'') + ]) + mouse) + (bindOpts (combo [] "mouse:274") (seq [(soWindow "close")]) mouse) + ] + ++ genList ( + n: let + i = toString (n + 1); + in + bind (combo [] i) (seq [ + (call "hs.dsp.focus({ workspace = ${i} })") + (overview "off") + (call ''hl.dsp.submap("reset")'') + ]) + ) + 9; # Window Resize - Resize.settings.bind = [ + resize.settings.bind = [ (bindOpts (combo [] "right") (resizeActive 10 0) repeat) (bindOpts (combo [] "left") (resizeActive (-10) 0) repeat) (bindOpts (combo [] "up") (resizeActive 0 (-10)) repeat) @@ -205,7 +258,7 @@ in { ]; # Window Movement - Move.settings.bind = [ + move.settings.bind = [ (bind (combo [] "C") "hl.dsp.window.center()") (bind (combo [] "P") "hl.dsp.window.pin()") (bind (combo [] "left") (moveOrGroup "l")) @@ -224,7 +277,7 @@ in { ]; # Window Minimization - Minimized.settings.bind = [ + minimized.settings.bind = [ (bind (combo [] "left") (focusDir "l")) (bind (combo [] "right") (focusDir "r")) (bind (combo [] "up") (focusDir "u")) diff --git a/modules/desktop/hyprland/_settings/main.nix b/modules/desktop/hyprland/_settings/main.nix @@ -45,8 +45,8 @@ lib.mkIf (osConfig != null) ( scale = 2; } { - fingers = 4; - direction = "horizontal"; + fingers = 3; + direction = "vertical"; action = "workspace"; } ]; @@ -87,21 +87,17 @@ lib.mkIf (osConfig != null) ( # Custom Animations curve = lib.optionals fancy [ - (curve "accelerate" { + (curve "snappy" { type = "bezier"; - points = [[0.3 0] [0.8 0.15]]; + points = [[0.2 1] [0.25 1]]; }) - (curve "decelerate" { + (curve "overshoot" { type = "bezier"; - points = [[0.05 0.7] [0.1 1]]; + points = [[0.05 0.9] [0.1 1.05]]; }) - (curve "zoom" { + (curve "slide" { type = "bezier"; - points = [[0.38 0.04] [1 0.07]]; - }) - (curve "crash" { - type = "bezier"; - points = [[0.1 1] [0 1]]; + points = [[0.25 1] [0.5 1]]; }) ]; animation = lib.optionals fancy [ @@ -114,55 +110,61 @@ lib.mkIf (osConfig != null) ( { leaf = "fade"; enabled = true; - speed = 3; - bezier = "decelerate"; + speed = 2; + bezier = "snappy"; } { leaf = "fadeLayersIn"; enabled = true; speed = 2; - bezier = "crash"; + bezier = "snappy"; } { leaf = "fadeLayersOut"; enabled = true; speed = 0.5; - bezier = "zoom"; + bezier = "snappy"; } { leaf = "specialWorkspace"; enabled = true; - speed = 3; - bezier = "decelerate"; + speed = 2.5; + bezier = "snappy"; style = "slidevert"; } { leaf = "windows"; enabled = true; - speed = 3; - bezier = "decelerate"; - style = "popin 60%"; + speed = 2.5; + bezier = "overshoot"; + style = "popin 70%"; } { leaf = "windowsIn"; enabled = true; - speed = 3; - bezier = "decelerate"; - style = "popin 60%"; + speed = 2.5; + bezier = "overshoot"; + style = "popin 70%"; } { leaf = "windowsOut"; enabled = true; - speed = 3; - bezier = "accelerate"; - style = "popin 60%"; + speed = 2; + bezier = "snappy"; + style = "popin 70%"; + } + { + leaf = "windowsMove"; + enabled = true; + speed = 2.5; + bezier = "slide"; } { leaf = "workspaces"; enabled = true; - speed = 7; - bezier = "crash"; - style = "slide"; + speed = 4; + bezier = "slide"; + style = "slidevert"; } ]; @@ -215,7 +217,6 @@ lib.mkIf (osConfig != null) ( }; # Tiling Layout - general.layout = "scrolling"; scrolling = { column_width = 0.5; explicit_column_widths = "0.333, 0.5, 0.667, 1.0"; @@ -249,6 +250,7 @@ lib.mkIf (osConfig != null) ( general = { allow_tearing = !fancy; resize_on_border = true; + layout = "scrolling"; # Floating Layout snap = { diff --git a/modules/desktop/hyprland/_settings/plugins.nix b/modules/desktop/hyprland/_settings/plugins.nix @@ -7,13 +7,21 @@ _: { }: lib.mkIf (osConfig != null) ( let + inherit (osConfig.gui) fancy; inherit (pkgs.hyprworld) hyprsplitlua hypr-dynamic-cursors; + scrolloverview = pkgs.hyprworld.scrolloverview.overrideAttrs (old: { + postInstall = (old.postInstall or "") + ''ln -s libscrolloverview.so "$out/lib/lib${old.pname}.so"''; + }); lua = import ./_lib.nix lib; inherit (lua) inline; + luaBool = b: + if b + then "true" + else "false"; cursorMode = - if osConfig.gui.fancy + if fancy then "tilt" else "none"; in { @@ -24,9 +32,9 @@ lib.mkIf (osConfig != null) ( _var = inline ''(function() local hs = require("hyprsplit"); hs.config({ num_workspaces = 9 }); return hs end)()''; }; - # Cursor Effects - plugins = [hypr-dynamic-cursors]; + plugins = [hypr-dynamic-cursors scrolloverview]; extraConfig = '' + -- Cursor Effects if hl.plugin.dynamic_cursors then hl.config({ plugin = { dynamic_cursors = { enabled = true, @@ -36,6 +44,21 @@ lib.mkIf (osConfig != null) ( tilt = { activation = "negative_quadratic" }, } } }) end + + -- Workspace Overview + if hl.plugin.scrolloverview then + hl.config({ plugin = { scrolloverview = { + gesture_distance = 300, + scale = 0.5, + workspace_gap = 100, + layout = "vertical", + wallpaper = 2, + blur = ${luaBool fancy}, + shadow = { enabled = ${luaBool fancy} }, + } } }) + + hl.plugin.scrolloverview.gesture({ fingers = 4, direction = "up" }) + end ''; }; } diff --git a/modules/games/games.nix b/modules/games/games.nix @@ -12,7 +12,7 @@ _: { }; # Game Mode - #? Use 'gamemoderun <command>' + # ? # Use 'gamemoderun <command>' hardware.cpu.mode = lib.mkOverride 51 "performance"; programs.gamemode.enable = true; hardware.steam-hardware.enable = true; diff --git a/modules/games/mc-server/default.nix b/modules/games/mc-server/default.nix @@ -1,6 +1,6 @@ ## Minecraft Server Configuration ## -#? Run 'systemctl start minecraft-server-NAME' to start the server -#? Run 'echo COMMAND > /run/minecraft/NAME.stdin' to run commands +# ? # Run 'systemctl start minecraft-server-NAME' to start the server +# ? # Run 'echo COMMAND > /run/minecraft/NAME.stdin' to run commands {inputs, ...}: { flake.modules.nixos.mc-server = { config, diff --git a/modules/hosts/valkyrie/_asus/default.nix b/modules/hosts/valkyrie/_asus/default.nix @@ -7,7 +7,7 @@ _: { boot = { plymouth.extraConfig = "DeviceScale=2"; - #! https://gitlab.freedesktop.org/drm/amd/-/issues/3388 + # ! # https://gitlab.freedesktop.org/drm/amd/-/issues/3388 kernelParams = lib.mkIf (config.hardware.cpu.mode == "performance") [ "amdgpu.dcdebugmask=0x10" "usbcore.autosuspend=-1" diff --git a/modules/hosts/valkyrie/_vm/default.nix b/modules/hosts/valkyrie/_vm/default.nix @@ -1,5 +1,5 @@ ## Windows VM -#? Run 'virsh -c qemu:///system start windows' +# ? # Run 'virsh -c qemu:///system start windows' {inputs}: { nixos = {pkgs, ...}: { imports = [inputs.nixvirt.nixosModules.default]; diff --git a/modules/hosts/valkyrie/default.nix b/modules/hosts/valkyrie/default.nix @@ -50,7 +50,7 @@ "wine" "games" "libvirt" - "niri" + "hyprland" ]; hmImports = diff --git a/modules/hosts/vortex.nix b/modules/hosts/vortex.nix @@ -19,7 +19,7 @@ "internet" "office" "wine" - "hyprland" + "niri" ] homeManager; in { @@ -44,7 +44,7 @@ in { "prompt" "office" "wine" - "hyprland" + "niri" ] nixos ++ util.map.array ["dell-inspiron-5509"] inputs.hardware.nixosModules; diff --git a/modules/system/filesystem.nix b/modules/system/filesystem.nix @@ -190,7 +190,7 @@ in { }; # Reserved space - #? Free with 'zfs set refreservation=none fspool/reserve' + # ? # Free with 'zfs set refreservation=none fspool/reserve' "reserve" = { type = "zfs_fs"; options = { diff --git a/modules/system/security/default.nix b/modules/system/security/default.nix @@ -18,7 +18,7 @@ in { }; # Sandbox - #! https://discourse.nixos.org/t/apparmor-on-nixos-roadmap/57217 + # ! # https://discourse.nixos.org/t/apparmor-on-nixos-roadmap/57217 apparmor.enable = false; }; programs.firejail.enable = true; diff --git a/modules/virt/android.nix b/modules/virt/android.nix @@ -1,5 +1,5 @@ ## Android Virtualisation ## -#? Run 'waydroid init -s GAPPS -f' to install system image +# ? # Run 'waydroid init -s GAPPS -f' to install system image _: { flake.modules.nixos.android = { config, diff --git a/modules/virt/docker.nix b/modules/virt/docker.nix @@ -7,7 +7,7 @@ _: { systemPackages = [pkgs.docker-compose]; }; - #? Use '--add-host=host.docker.internal:host-gateway' to create containers + # ? # Use '--add-host=host.docker.internal:host-gateway' to create containers networking = { firewall.trustedInterfaces = ["docker0"]; extraHosts = "127.0.0.1 host.docker.internal"; diff --git a/packages/_module.nix b/packages/_module.nix @@ -38,7 +38,11 @@ in { disko = disko.packages."${system}"; spicetify = spicetify.legacyPackages."${system}"; - hyprworld = hyprland.packages."${system}" // hyprsplit.packages."${system}" // hyprcursors.packages."${system}"; + hyprworld = + hyprland.packages."${system}" + // hyprsplit.packages."${system}" + // hyprcursors.packages."${system}" + // hyprscrolloverview.packages."${system}"; }) minecraft.overlay vscode.overlays.default diff --git a/scripts/hyprutils.nix b/scripts/hyprutils.nix @@ -79,7 +79,7 @@ in if hyprctl workspaces | grep "special:minimized" then hyprctl dispatch 'hl.dsp.focus({ workspace = "special:minimized" })' - hyprctl dispatch 'hl.dsp.submap("Minimized")' + hyprctl dispatch 'hl.dsp.submap("minimized")' else hyprnotify 1 "No minimized windows present" fi diff --git a/scripts/os.nix b/scripts/os.nix @@ -43,7 +43,6 @@ with files; let 'specialisation' - Activates specified system specialisation --activate [ home ] - Activates current [ home ] config --boot - Applies config on boot - --delta - Shows config build delta --rollback [ 'generation' ] - Reverts to last [ or specified ] build --test - Tests config build ''; @@ -161,10 +160,6 @@ in error "Couldn't build generation successfully" fi ;; - "--delta") - echo "Building Configuration..." - nh os switch -a ${path.system} - ;; "--test") echo "Testing Configuration..." nh os test ${path.system} diff --git a/shells/python.nix b/shells/python.nix @@ -9,9 +9,7 @@ pkgs: { pip poetry-core setuptools - - black - pylint + ruff ipython matplotlib diff --git a/site/zola.toml b/site/zola.toml @@ -60,7 +60,7 @@ math_katex = true # Generate Table of Contents for all articles # Use 'ToC = true' in [extra] on individual pages -table_of_contents = false +table_of_contents = false # Logo favicon = "website.ico" @@ -84,10 +84,10 @@ giscus = { enabled = true, repo = "maydayv7/dotfiles", repo_id = "R_kgDOHEEEUA", # Main Menu main_menu_items = [ - { url = "/blog/", name="Blog" }, - { url = "/projects/", name="Projects" }, - { url = "/about/", name="About" }, - { url = "https://git.maydayv7.cc", name="Git", external = true }, + { url = "/blog/", name = "Blog" }, + { url = "/projects/", name = "Projects" }, + { url = "/about/", name = "About" }, + { url = "https://git.maydayv7.cc", name = "Git", external = true }, ] # Socials Bar