hyprland: hyperconf to lua

This commit is contained in:
Black_Raven committed 2026-09-09 00:22:18 +03:00
1 parent b5920c6211
commit fe0d9e5198
17 files changed
+298 -309

No files matched your search

Generated
+40 -63
View File
@@ -40,11 +40,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1772460678, "lastModified": 1784368054,
"narHash": "sha256-NYaWs8fYJ38IgFld0hGSdT2LEVhrgO8SiRReBjIH7YY=", "narHash": "sha256-zF1iJkBQSDWmRO4/LEeHR1SpKY0lqZaxkoQJpPS9K9U=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "aquamarine", "repo": "aquamarine",
"rev": "5d2cb726b16ee349df443f84b64cff53221b6983", "rev": "9b5f14d9483445e766294eb8fbe0b8f370269ed0",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -249,28 +249,6 @@
"type": "github" "type": "github"
} }
}, },
"gitignore": {
"inputs": {
"nixpkgs": [
"hyprland",
"pre-commit-hooks",
"nixpkgs"
]
},
"locked": {
"lastModified": 1709087332,
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
"owner": "hercules-ci",
"repo": "gitignore.nix",
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "gitignore.nix",
"type": "github"
}
},
"gnome-shell": { "gnome-shell": {
"flake": false, "flake": false,
"locked": { "locked": {
@@ -326,11 +304,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1772461003, "lastModified": 1776511930,
"narHash": "sha256-pVICsV7FtcEeVwg5y/LFh3XFUkVJninm/P1j/JHzEbM=", "narHash": "sha256-fCpwFiTW0rT7oKJqr3cqHMnkwypSwQKpbtUEtxdkgrM=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "hyprcursor", "repo": "hyprcursor",
"rev": "b62396457b9cfe2ebf24fe05404b09d2a40f8ed7", "rev": "39435900785d0c560c6ae8777d29f28617d031ef",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -355,11 +333,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1772461523, "lastModified": 1782566056,
"narHash": "sha256-mI6A51do+hEUzeJKk9YSWfVHdI/SEEIBi2tp5Whq5mI=", "narHash": "sha256-haEZcHzYrePnjFOYSWTbxm/Nrla0aPslJfmvdCvqtVc=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "hyprgraphics", "repo": "hyprgraphics",
"rev": "7d63c04b4a2dd5e59ef943b4b143f46e713df804", "rev": "c6e7b9f673f4360bc813d3dc75028f75ee88d3f8",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -385,16 +363,16 @@
"xdph": "xdph" "xdph": "xdph"
}, },
"locked": { "locked": {
"lastModified": 1773149218, "lastModified": 1785170029,
"narHash": "sha256-m5Ewi+rgn18qPP54Um4O2zwZ02oiomlZssHvXYEUv3U=", "narHash": "sha256-8CKDx282HhxlD1pwXPnC4uK29Abn1Jsnh7LgPzeIXxI=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "Hyprland", "repo": "Hyprland",
"rev": "59f9f2688ac508a0584d1462151195a6c4992f99", "rev": "5c9377c15f85c50648f35ca5a213754f95b93ca0",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "hyprwm", "owner": "hyprwm",
"ref": "v0.54.2-b", "ref": "v0.56.1",
"repo": "Hyprland", "repo": "Hyprland",
"type": "github" "type": "github"
} }
@@ -432,11 +410,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1772467975, "lastModified": 1784196523,
"narHash": "sha256-kipyuDBxrZq+beYpZqWzGvFWm4QbayW9agAvi94vDXY=", "narHash": "sha256-ahtKMGXFJdlQNhatQm1+BBU/pGfGYnAqQt3vWvq4p8s=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "hyprland-guiutils", "repo": "hyprland-guiutils",
"rev": "5e1c6b9025aaf4d578f3eff7c0eb1f0c197a9507", "rev": "a6ccb6cb112ed5a244c0191fb972347ecfa893e0",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -516,11 +494,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1772459629, "lastModified": 1777320127,
"narHash": "sha256-/iwvNUYShmmnwmz/czEUh6+0eF5vCMv0xtDW0STPIuM=", "narHash": "sha256-Qu+Wf2Bp5qUjyn2YpZNq8a7JyzTGowhT1knrwE38a9U=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "hyprlang", "repo": "hyprlang",
"rev": "7615ee388de18239a4ab1400946f3d0e498a8186", "rev": "090117506ddc3d7f26e650ff344d378c2ec329cc",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -568,11 +546,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1772462885, "lastModified": 1782554491,
"narHash": "sha256-5pHXrQK9zasMnIo6yME6EOXmWGFMSnCITcfKshhKJ9I=", "narHash": "sha256-+p3MlyN/nqRefcf2IckPlGRUn9+hielqpS9XClbLleM=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "hyprtoolkit", "repo": "hyprtoolkit",
"rev": "9af245a69fa6b286b88ddfc340afd288e00a6998", "rev": "bdba25ced39ea39ab004a8f31593ba0b0ff1ca35",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -593,11 +571,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1772459870, "lastModified": 1784323413,
"narHash": "sha256-xxkK2Cvqxpf/4UGcJ/TyCwrvmiNWsKsJfFzHMp2bxis=", "narHash": "sha256-XnAVV+H4f8Xdv0yZcSwJ5kCjLyE8fHxPeLX6a3HSrAU=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "hyprutils", "repo": "hyprutils",
"rev": "e63f3a79334dec49f8eb1691f66f18115df04085", "rev": "5f03477ab3a005ff27c527486f551883535aea2f",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -618,11 +596,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1772459835, "lastModified": 1777159683,
"narHash": "sha256-978jRz/y/9TKmZb/qD4lEYHCQGHpEXGqy+8X2lFZsak=", "narHash": "sha256-Jxixw6wZphUp+nHYxOKUYSckL17QMBx2d5Zp0rJHr1g=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "hyprwayland-scanner", "repo": "hyprwayland-scanner",
"rev": "0a692d4a645165eebd65f109146b8861e3a925e7", "rev": "b8632713a6beaf28b56f2a7b0ab2fb7088dbb404",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -647,11 +625,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1772463520, "lastModified": 1778410714,
"narHash": "sha256-GIjASzYnV4fK19HnyJKmHyqyxHxIpjusK9foEA4Yo+4=", "narHash": "sha256-o6RzFj4nJXaPRY7EM01siuCQeT41RfwwmcmFQqwFJJg=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "hyprwire", "repo": "hyprwire",
"rev": "4e1933ae5602b350c5b6633f5c932549c9b8aca2", "rev": "85148a8e612808cf5ddb25d0b3c5840f3498a7dc",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -726,11 +704,11 @@
}, },
"nixpkgs_3": { "nixpkgs_3": {
"locked": { "locked": {
"lastModified": 1772542754, "lastModified": 1784356753,
"narHash": "sha256-WGV2hy+VIeQsYXpsLjdr4GvHv5eECMISX1zKLTedhdg=", "narHash": "sha256-12KrbMiWLcf8m7pCvAtZh1ZrgF85ZXDXvfR/fWTKy84=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "8c809a146a140c5c8806f13399592dbcb1bb5dc4", "rev": "61b7c44c4073f0b827768aff0049561b5110ea5a",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -848,18 +826,17 @@
"pre-commit-hooks": { "pre-commit-hooks": {
"inputs": { "inputs": {
"flake-compat": "flake-compat", "flake-compat": "flake-compat",
"gitignore": "gitignore",
"nixpkgs": [ "nixpkgs": [
"hyprland", "hyprland",
"nixpkgs" "nixpkgs"
] ]
}, },
"locked": { "locked": {
"lastModified": 1772024342, "lastModified": 1784288435,
"narHash": "sha256-+eXlIc4/7dE6EcPs9a2DaSY3fTA9AE526hGqkNID3Wg=", "narHash": "sha256-ReRHaLgr/uVqdD8afFSn+myXIfpHeOhP0yYe0TJqAA8=",
"owner": "cachix", "owner": "cachix",
"repo": "git-hooks.nix", "repo": "git-hooks.nix",
"rev": "6e34e97ed9788b17796ee43ccdbaf871a5c2b476", "rev": "43b3c1ab9d40fb1dbb008f451988a91e375825e9",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -1132,11 +1109,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1772476586, "lastModified": 1784371182,
"narHash": "sha256-N/ZwsRLULLpBP5ecvAUzNq8E/CgLRwPwSrHyY3xB5KM=", "narHash": "sha256-S8A1lezEalltWcCp3gAic5lssS0xTSISK6fKODefhOk=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "xdg-desktop-portal-hyprland", "repo": "xdg-desktop-portal-hyprland",
"rev": "eb6c02a2ead882f3474f3d7f2fbe966b64ed5110", "rev": "08d99f727944dd15e4740090305e31c5fb92a50a",
"type": "github" "type": "github"
}, },
"original": { "original": {
+1 -1
View File
@@ -41,7 +41,7 @@
flake = false; flake = false;
}; };
hyprland.url = "github:hyprwm/Hyprland/v0.54.2-b"; hyprland.url = "github:hyprwm/Hyprland/v0.56.1";
hyprland-plugins = { hyprland-plugins = {
url = "github:hyprwm/hyprland-plugins"; url = "github:hyprwm/hyprland-plugins";
inputs.hyprland.follows = "hyprland"; inputs.hyprland.follows = "hyprland";
+10
View File
@@ -0,0 +1,10 @@
{
wayland.windowManager.hyprland.settings.monitor = [
{
output = "eDP-1";
mode = "1920x1200@60";
position = "0x0";
scale = 1;
}
];
}
+2
View File
@@ -25,6 +25,8 @@
noto-fonts-cjk-sans # Japanese noto-fonts-cjk-sans # Japanese
powerline-symbols # Console decoration powerline-symbols # Console decoration
unifont # Other unifont # Other
(pkgs.google-fonts.override { fonts = [ "Gabriela" ]; })
]; ];
}; };
fonts.fontconfig.enable = true;
} }
+19 -1
View File
@@ -1,3 +1,4 @@
{ pkgs, ... }:
{ {
imports = [ imports = [
./host/bluetooth.nix ./host/bluetooth.nix
@@ -13,7 +14,24 @@
#./host/ai-agent.nix #./host/ai-agent.nix
]; ];
programs.hyprland.enable = true; programs = {
dconf.enable = true;
hyprland.enable = true;
};
xdg.portal = {
enable = true;
xdgOpenUsePortal = true;
extraPortals = with pkgs; [
xdg-desktop-portal-hyprland
xdg-desktop-portal-gtk
xdg-desktop-portal-termfilechooser
];
config = {
common.default = [ "hyprland" "gtk" ];
hyprland.default = [ "hyprland" "gtk" ];
};
};
services = { services = {
udisks2.enable = true; udisks2.enable = true;
fstrim.enable = true; fstrim.enable = true;
+4 -3
View File
@@ -1,8 +1,9 @@
{ { lib, ... }: {
environment.variables = { environment.variables = {
EDITOR = "hx"; EDITOR = "hx";
RANGER_LOAD_DEFAULT_RC = "FALSE"; RANGER_LOAD_DEFAULT_RC = "FALSE";
QT_QPA_PLATFORMTHEME = "qt5ct"; GTK_USE_PORTAL = "1";
GSETTINGS_BACKEND = "keyfile"; QT_QPA_PLATFORMTHEME = lib.mkForce "xdgdesktopportal";
TDESKTOP_USE_GTK_FILE_DIALOG = "1";
}; };
} }
+1
View File
@@ -4,6 +4,7 @@
./user/yazi.nix ./user/yazi.nix
./user/sleepMode.nix ./user/sleepMode.nix
./user/ghostty.nix ./user/ghostty.nix
./user/qt.nix
./user/zed-idea.nix ./user/zed-idea.nix
./user/walker.nix ./user/walker.nix
./user/btop.nix ./user/btop.nix
+5 -2
View File
@@ -1,4 +1,7 @@
{ config, inputs, pkgs, ... }: { { config, inputs, pkgs, lib, ... }:
let
hyprLua = import ./hyprland/lua.nix { inherit lib; };
in {
imports = [ inputs.ags.homeManagerModules.default ]; imports = [ inputs.ags.homeManagerModules.default ];
programs.ags = { programs.ags = {
@@ -20,7 +23,7 @@
pulsemixer pulsemixer
]; ];
wayland.windowManager.hyprland.settings.exec-once = [ "ags run" ]; wayland.windowManager.hyprland.settings.on = [ (hyprLua.onStart [ "ags run" ]) ];
xdg.configFile."ags".source = (pkgs.callPackage ./ags/ags.nix { colors = config.lib.stylix.colors; }); xdg.configFile."ags".source = (pkgs.callPackage ./ags/ags.nix { colors = config.lib.stylix.colors; });
} }
+97 -188
View File
@@ -1,218 +1,127 @@
{ pkgs, lib, config, swww_flags, inputs }: { { pkgs, lib, config, swww_flags, inputs, host ? null }:
home.packages = with pkgs; [
ghostty
pamixer
wofi
clipse
wl-clipboard
wl-clip-persist
xclip
];
wayland.windowManager.hyprland =
let let
colors = config.lib.stylix.colors; hyprLua = import ./hyprland/lua.nix { inherit lib; };
direction = { left = "l"; right = "r"; up = "u"; down = "d"; };
wallpaper_changer = pkgs.writers.writePython3Bin "wallpaper_changer" { wallpaper_changer = pkgs.writers.writePython3Bin "wallpaper_changer" {
libraries = [ pkgs.python3Packages.requests ]; libraries = [ pkgs.python3Packages.requests ];
flakeIgnore = [ "E501" "E111" "E701" "E241" "E731" ]; flakeIgnore = [ "E501" "E111" "E701" "E241" "E731" ];
} /*py*/ '' } /*py*/ ''
from random import choice from random import choice
from os import system, listdir from os import system, listdir
folder = "${config.home.homeDirectory}/wallpapers" folder = "${config.home.homeDirectory}/wallpapers"
filename = choice(listdir(folder)) filename = choice(listdir(folder))
system(f"${lib.getExe pkgs.awww} img {folder}/{filename} ${swww_flags}") system(f"${lib.getExe pkgs.awww} img {folder}/{filename} ${swww_flags}")
''; '';
workspaceBinds = lib.concatMap (workspace:
let key = if workspace == 10 then "0" else toString workspace; workspaceValue = toString workspace;
in [
(hyprLua.bind "SUPER + ${key}" "hl.dsp.focus({ workspace = ${workspaceValue} })")
(hyprLua.bind "SUPER + SHIFT + ${key}" "hl.dsp.window.move({ workspace = ${workspaceValue}, follow = false })")
]) (lib.range 1 10);
in { in {
imports = lib.optional (host != null && builtins.pathExists ../../host/${host.name}/modules/hyprland.nix) ../../host/${host.name}/modules/hyprland.nix;
home.packages = with pkgs; [ ghostty pamixer wofi clipse wl-clipboard wl-clip-persist xclip ];
wayland.windowManager.hyprland = {
enable = true; enable = true;
configType = "hyprlang"; configType = "lua";
xwayland.enable = true; xwayland.enable = true;
package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland; package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland;
plugins = with inputs.hyprland-plugins.packages.${pkgs.stdenv.hostPlatform.system}; [ plugins = with inputs.hyprland-plugins.packages.${pkgs.stdenv.hostPlatform.system}; [ ];
# hyprbars # Version mismatch
];
settings = { settings = {
"$mainMod" = "SUPER"; config = {
ecosystem = { no_donation_nag = true; no_update_news = true; };
ecosystem = { cursor.no_hardware_cursors = 1;
no_donation_nag = true; debug = { disable_logs = false; enable_stdout_logs = true; };
no_update_news = true; general."col.inactive_border" = lib.mkDefault "rgba(00000000)";
}; decoration = { inactive_opacity = lib.mkDefault 0.95; border_part_of_window = false; };
misc.focus_on_activate = true;
env = [
"XDG_SESSION_TYPE,wayland"
"QT_QPA_PLATFORM,wayland"
"XDG_CURRENT_DESKTOP,Hyprland"
"XDG_SESSION_DESKTOP,Hyprland"
"XCURSOR_SIZE, ${toString config.stylix.cursor.size}"
"XCURSOR_THEME, ${config.stylix.cursor.name}"
"XDG_SCREENSHOTS_DIR,~/screens"
];
cursor.no_hardware_cursors = true;
debug = {
disable_logs = false;
enable_stdout_logs = true;
};
misc = {
focus_on_activate = true;
};
input = { input = {
kb_layout = "us,ru"; kb_layout = "us,ru"; kb_options = "grp:caps_toggle"; numlock_by_default = true;
kb_options = "grp:caps_toggle"; follow_mouse = 1; touchpad.natural_scroll = false; sensitivity = 0;
numlock_by_default = true;
follow_mouse = 1;
touchpad = {
natural_scroll = false;
}; };
gestures = { workspace_swipe_invert = true; workspace_swipe_distance = 200; workspace_swipe_forever = true; };
sensitivity = 0;
}; };
env = [
gestures = { { _args = [ "XDG_SESSION_TYPE" "wayland" ]; }
workspace_swipe_invert = true; { _args = [ "QT_QPA_PLATFORM" "wayland" ]; }
workspace_swipe_distance = 200; { _args = [ "QT_QPA_PLATFORMTHEME" "xdgdesktopportal" ]; }
workspace_swipe_forever = true; { _args = [ "GTK_USE_PORTAL" "1" ]; }
}; { _args = [ "TDESKTOP_USE_GTK_FILE_DIALOG" "1" ]; }
{ _args = [ "NIXOS_OZONE_WL" "1" ]; }
gesture = [ { _args = [ "ELECTRON_OZONE_PLATFORM_HINT" "auto" ]; }
"3, horizontal, workspace" { _args = [ "XDG_CURRENT_DESKTOP" "Hyprland" ]; }
{ _args = [ "XDG_SESSION_DESKTOP" "Hyprland" ]; }
{ _args = [ "XCURSOR_SIZE" (toString config.stylix.cursor.size) ]; }
{ _args = [ "XCURSOR_THEME" config.stylix.cursor.name ]; }
{ _args = [ "XDG_SCREENSHOTS_DIR" "~/screens" ]; }
]; ];
gesture = [ { fingers = 3; direction = "horizontal"; action = "workspace"; } ];
windowrule = [ workspace_rule = [ { workspace = "w[t1]"; gaps_out = 0; } ];
"match:class imv, float 1" window_rule = [
"match:class feh, float 1" { match.class = "imv"; float = true; }
"match:class mpv, float 1" { match.class = "feh"; float = true; }
{ match.class = "mpv"; float = true; }
"match:title Список друзей, float 1" { match.title = "Список друзей"; float = true; }
"match:title nmtui, float 1" { match.title = "wifitui"; float = true; }
"match:title pulsemixer, float 1" { match.title = "pulsemixer"; float = true; }
{ match.title = "clipse"; float = true; }
"match:title clipse, float 1" { match.title = "clipse"; size = [ 622 652 ]; }
"match:title clipse, size 622 652" { match.focus = true; rounding = 0; }
{ match = { float = false; workspace = "w[t1]"; }; border_size = 0; }
"match:focus 1, rounding 0"
"match:float 0, match:workspace w[t1], border_size 0"
]; ];
on = [ (hyprLua.onStart [
exec-once = [
"systemctl --user start plasma-polkit-agent" "systemctl --user start plasma-polkit-agent"
"${lib.getExe' pkgs.dbus "dbus-update-activation-environment"} --systemd --all"
"systemctl --user import-environment XDG_CURRENT_DESKTOP XDG_SESSION_DESKTOP XDG_SESSION_TYPE WAYLAND_DISPLAY DISPLAY GTK_USE_PORTAL QT_QPA_PLATFORMTHEME TDESKTOP_USE_GTK_FILE_DIALOG NIXOS_OZONE_WL ELECTRON_OZONE_PLATFORM_HINT"
"${lib.getExe' pkgs.awww "awww-daemon"}" "${lib.getExe' pkgs.awww "awww-daemon"}"
"${pkgs.bash}/bin/bash -c 'sleep 1 && ${lib.getExe wallpaper_changer}'"
"wl-clip-persist --clipboard both" "wl-clip-persist --clipboard both"
"clipse -listen" "clipse -listen"
"${lib.getExe' pkgs.udiskie "udiskie"}" "${lib.getExe' pkgs.udiskie "udiskie"}"
]; "${lib.getExe wallpaper_changer}"
]) ];
bind = [ bind = [
"$mainMod, V, exec, ghostty --title=clipse -e clipse" (hyprLua.bind "SUPER + V" (hyprLua.exec "ghostty --title=clipse -e clipse"))
(hyprLua.bind "SUPER + RETURN" (hyprLua.exec "ghostty"))
"$mainMod, Return, exec, ghostty" (hyprLua.bind "SUPER + Q" "hl.dsp.window.close()")
"$mainMod, Q, killactive," (hyprLua.bind "SUPER + M" "hl.dsp.exit()")
"$mainMod, M, exit," (hyprLua.bind "SUPER + E" (hyprLua.exec "ghostty -e sh -c yazi"))
"$mainMod, E, exec, ghostty -e sh -c yazi" (hyprLua.bind "SUPER + F" "hl.dsp.window.float({ action = \"toggle\" })")
"$mainMod, F, togglefloating," (hyprLua.bind "SUPER + J" "hl.dsp.layout(\"togglesplit\")")
"$mainMod, J, layoutmsg, togglesplit, # dwindle" (hyprLua.bind "SUPER + LEFT" "hl.dsp.focus({ direction = \"${direction.left}\" })")
(hyprLua.bind "SUPER + RIGHT" "hl.dsp.focus({ direction = \"${direction.right}\" })")
# Move focus with mainMod + arrow keys (hyprLua.bind "SUPER + UP" "hl.dsp.focus({ direction = \"${direction.up}\" })")
"$mainMod, left, movefocus, l" (hyprLua.bind "SUPER + DOWN" "hl.dsp.focus({ direction = \"${direction.down}\" })")
"$mainMod, right, movefocus, r" (hyprLua.bind "SUPER + SHIFT + LEFT" "hl.dsp.window.swap({ direction = \"${direction.left}\" })")
"$mainMod, up, movefocus, u" (hyprLua.bind "SUPER + SHIFT + RIGHT" "hl.dsp.window.swap({ direction = \"${direction.right}\" })")
"$mainMod, down, movefocus, d" (hyprLua.bind "SUPER + SHIFT + UP" "hl.dsp.window.swap({ direction = \"${direction.up}\" })")
(hyprLua.bind "SUPER + SHIFT + DOWN" "hl.dsp.window.swap({ direction = \"${direction.down}\" })")
# Moving windows (hyprLua.bind "SUPER + CTRL + LEFT" "hl.dsp.window.resize({ x = -60, y = 0, relative = true })")
"$mainMod SHIFT, left, swapwindow, l" (hyprLua.bind "SUPER + CTRL + RIGHT" "hl.dsp.window.resize({ x = 60, y = 0, relative = true })")
"$mainMod SHIFT, right, swapwindow, r" (hyprLua.bind "SUPER + CTRL + UP" "hl.dsp.window.resize({ x = 0, y = -60, relative = true })")
"$mainMod SHIFT, up, swapwindow, u" (hyprLua.bind "SUPER + CTRL + DOWN" "hl.dsp.window.resize({ x = 0, y = 60, relative = true })")
"$mainMod SHIFT, down, swapwindow, d" ] ++ workspaceBinds ++ [
(hyprLua.bind "SUPER + SHIFT + F" "hl.dsp.window.fullscreen({ action = \"toggle\", mode = \"fullscreen\" })")
# Window resizing X Y (hyprLua.bind "SUPER + mouse_down" "hl.dsp.focus({ workspace = \"e+1\" })")
"$mainMod CTRL, left, resizeactive, -60 0" (hyprLua.bind "SUPER + mouse_up" "hl.dsp.focus({ workspace = \"e-1\" })")
"$mainMod CTRL, right, resizeactive, 60 0" (hyprLua.bind "SUPER + F3" (hyprLua.exec "${lib.getExe pkgs.brightnessctl} -d *::kbd_backlight set +33%"))
"$mainMod CTRL, up, resizeactive, 0 -60" (hyprLua.bind "SUPER + F2" (hyprLua.exec "${lib.getExe pkgs.brightnessctl} -d *::kbd_backlight set 33%-"))
"$mainMod CTRL, down, resizeactive, 0 60" (hyprLua.bind "XF86AudioMute" (hyprLua.exec "pamixer -t"))
(hyprLua.bind "XF86AudioMicMute" (hyprLua.exec "pamixer --default-source -m"))
# Switch workspaces with mainMod + [0-9] (hyprLua.bind "XF86AudioPlay" (hyprLua.exec "${lib.getExe pkgs.playerctl} play-pause"))
"$mainMod, 1, workspace, 1" (hyprLua.bind "XF86AudioPrev" (hyprLua.exec "${lib.getExe pkgs.playerctl} position 5-"))
"$mainMod, 2, workspace, 2" (hyprLua.bind "XF86AudioNext" (hyprLua.exec "${lib.getExe pkgs.playerctl} position 5+"))
"$mainMod, 3, workspace, 3" (hyprLua.bind "XF86Explorer" (hyprLua.exec "ghostty -e sh -c yazi"))
"$mainMod, 4, workspace, 4" (hyprLua.bind "XF86Mail" (hyprLua.exec "thunderbird"))
"$mainMod, 5, workspace, 5" (hyprLua.bind "XF86WWW" (hyprLua.exec "google-chrome-stable"))
"$mainMod, 6, workspace, 6" (hyprLua.bind "XF86MonBrightnessDown" (hyprLua.exec "${lib.getExe pkgs.brightnessctl} set 5%-"))
"$mainMod, 7, workspace, 7" (hyprLua.bind "XF86MonBrightnessUp" (hyprLua.exec "${lib.getExe pkgs.brightnessctl} set +5%"))
"$mainMod, 8, workspace, 8" (hyprLua.bindWithFlags "XF86AudioRaiseVolume" (hyprLua.exec "pamixer -i 5") { repeating = true; })
"$mainMod, 9, workspace, 9" (hyprLua.bindWithFlags "XF86AudioLowerVolume" (hyprLua.exec "pamixer -d 5") { repeating = true; })
"$mainMod, 0, workspace, 10" (hyprLua.bindWithFlags "XF86AudioPrev" (hyprLua.exec "${lib.getExe pkgs.playerctl} previous") { long_press = true; })
(hyprLua.bindWithFlags "XF86AudioNext" (hyprLua.exec "${lib.getExe pkgs.playerctl} next") { long_press = true; })
# Move active window to a workspace with mainMod + SHIFT + [0-9] (hyprLua.bindWithFlags "SUPER + mouse:272" "hl.dsp.window.drag()" { mouse = true; })
"$mainMod SHIFT, 1, movetoworkspacesilent, 1" (hyprLua.bindWithFlags "SUPER + mouse:273" "hl.dsp.window.resize()" { mouse = true; })
"$mainMod SHIFT, 2, movetoworkspacesilent, 2"
"$mainMod SHIFT, 3, movetoworkspacesilent, 3"
"$mainMod SHIFT, 4, movetoworkspacesilent, 4"
"$mainMod SHIFT, 5, movetoworkspacesilent, 5"
"$mainMod SHIFT, 6, movetoworkspacesilent, 6"
"$mainMod SHIFT, 7, movetoworkspacesilent, 7"
"$mainMod SHIFT, 8, movetoworkspacesilent, 8"
"$mainMod SHIFT, 9, movetoworkspacesilent, 9"
"$mainMod SHIFT, 0, movetoworkspacesilent, 10"
"$mainMod SHIFT, F, fullscreen"
# Scroll through existing workspaces with mainMod + scroll
"$mainMod, mouse_down, workspace, e+1"
"$mainMod, mouse_up, workspace, e-1"
# Keyboard backlight
"$mainMod, F3, exec, ${lib.getExe pkgs.brightnessctl} -d *::kbd_backlight set +33%"
"$mainMod, F2, exec, ${lib.getExe pkgs.brightnessctl} -d *::kbd_backlight set 33%-"
# Volume and Media Control
", XF86AudioMute, exec, pamixer -t"
", XF86AudioMicMute, exec, pamixer --default-source -m"
", XF86AudioPlay, exec, ${lib.getExe pkgs.playerctl} play-pause"
", XF86AudioPrev, exec, ${lib.getExe pkgs.playerctl} position 5-"
", XF86AudioNext, exec, ${lib.getExe pkgs.playerctl} position 5+"
", XF86Explorer, exec, ghostty -e sh -c yazi"
", XF86Mail, exec, thunderbird"
", XF86WWW, exec, google-chrome-stable" # TODO: Replace hard-code to some variable
# Brightness control
", XF86MonBrightnessDown, exec, ${lib.getExe pkgs.brightnessctl} set 5%- "
", XF86MonBrightnessUp, exec, ${lib.getExe pkgs.brightnessctl} set +5% "
# Waybar
"$mainMod, B, exec, pkill -SIGUSR1 waybar"
#"$mainMod, W, exec, pkill -SIGUSR2 waybar"
"$mainMod, W, exec, ${lib.getExe wallpaper_changer}"
];
binde = [
", XF86AudioRaiseVolume, exec, pamixer -i 5 "
", XF86AudioLowerVolume, exec, pamixer -d 5 "
];
bindo = [
", XF86AudioPrev, exec, ${lib.getExe pkgs.playerctl} previous"
", XF86AudioNext, exec, ${lib.getExe pkgs.playerctl} next"
];
# Move/resize windows with mainMod + LMB/RMB and dragging
bindm = [
"$mainMod, mouse:272, movewindow"
"$mainMod, mouse:273, resizewindow"
]; ];
}; };
}; };
+16
View File
@@ -0,0 +1,16 @@
{ lib }:
let
inline = lib.generators.mkLuaInline;
quote = builtins.toJSON;
in rec {
inherit inline;
exec = command: "hl.dsp.exec_cmd(${quote command})";
bind = keys: dispatcher: { _args = [ keys (inline dispatcher) ]; };
bindWithFlags = keys: dispatcher: flags: { _args = [ keys (inline dispatcher) flags ]; };
onStart = commands: {
_args = [
"hyprland.start"
(inline ("function()\n" + lib.concatMapStringsSep "\n" (command: " hl.exec_cmd(${quote command})") commands + "\nend"))
];
};
}
+14
View File
@@ -0,0 +1,14 @@
{ lib, ... }: {
stylix.targets.qt.standardDialogs = "xdgdesktopportal";
home.sessionVariables = {
QT_QPA_PLATFORMTHEME = lib.mkForce "xdgdesktopportal";
TDESKTOP_USE_GTK_FILE_DIALOG = "1";
};
qt = {
enable = true;
platformTheme.name = "qtct";
style.name = "kvantum";
};
}
+5 -2
View File
@@ -1,5 +1,8 @@
{ pkgs, lib, ... }: { { pkgs, lib, ... }:
wayland.windowManager.hyprland.settings.exec-once = [ "hyprlock" ]; let
hyprLua = import ./hyprland/lua.nix { inherit lib; };
in {
wayland.windowManager.hyprland.settings.on = [ (hyprLua.onStart [ "hyprlock" ]) ];
programs.hyprlock = let programs.hyprlock = let
image = pkgs.fetchurl { image = pkgs.fetchurl {
+6 -2
View File
@@ -1,4 +1,7 @@
{ { lib, ... }:
let
hyprLua = import ./hyprland/lua.nix { inherit lib; };
in {
services = { services = {
walker = { walker = {
enable = true; enable = true;
@@ -9,6 +12,7 @@
}; };
wayland.windowManager.hyprland.settings.bind = [ wayland.windowManager.hyprland.settings.bind = [
"$mainMod, D, exec, walker" (hyprLua.bind "SUPER + D" (hyprLua.exec "walker"))
]; ];
} }
+7 -11
View File
@@ -1,4 +1,5 @@
{ config, pkgs, lib, ... }: let { config, pkgs, lib, ... }: let
hyprLua = import ./hyprland/lua.nix { inherit lib; };
c = config.lib.stylix.colors; c = config.lib.stylix.colors;
wobSocket = ''"''${XDG_RUNTIME_DIR:-/run/user/$(id -u)}/wob.sock"''; wobSocket = ''"''${XDG_RUNTIME_DIR:-/run/user/$(id -u)}/wob.sock"'';
@@ -53,16 +54,11 @@ in {
}; };
}; };
wayland.windowManager.hyprland.settings = { wayland.windowManager.hyprland.settings.bind = [
bindel = [ (hyprLua.bindWithFlags "XF86AudioRaiseVolume" (hyprLua.exec "${lib.getExe volumeStep} up") { repeating = true; locked = true; })
", XF86AudioRaiseVolume, exec, ${lib.getExe volumeStep} up" (hyprLua.bindWithFlags "XF86AudioLowerVolume" (hyprLua.exec "${lib.getExe volumeStep} down") { repeating = true; locked = true; })
", XF86AudioLowerVolume, exec, ${lib.getExe volumeStep} down" (hyprLua.bindWithFlags "XF86MonBrightnessUp" (hyprLua.exec "${lib.getExe brightnessStep} up") { repeating = true; locked = true; })
", XF86MonBrightnessUp, exec, ${lib.getExe brightnessStep} up" (hyprLua.bindWithFlags "XF86MonBrightnessDown" (hyprLua.exec "${lib.getExe brightnessStep} down") { repeating = true; locked = true; })
", XF86MonBrightnessDown, exec, ${lib.getExe brightnessStep} down" (hyprLua.bind "XF86AudioMute" (hyprLua.exec "${lib.getExe volumeStep} mute"))
]; ];
bind = [
", XF86AudioMute, exec, ${lib.getExe volumeStep} mute"
];
};
} }
+8 -2
View File
@@ -121,8 +121,14 @@ in {
Exec=${lib.getExe fileManager1} Exec=${lib.getExe fileManager1}
''; '';
wayland.windowManager.hyprland.settings.windowrule = [ wayland.windowManager.hyprland.settings.window_rule = [
"match:class dragon-drop, move cursor_x-window_w/2 cursor_y-window_h/2" {
match.class = "dragon-drop";
move = [
"(cursor_x-(window_w*0.5))"
"(cursor_y-(window_h*0.5))"
];
}
]; ];
programs.yazi = { programs.yazi = {
+50 -32
View File
@@ -1,42 +1,46 @@
{ pkgs, lib, config, inputs, ... }: { { pkgs, lib, config, inputs, host, ... }:
{
imports = [( imports = [(
import ../../../modules/user/hyprland.nix { import ../../../modules/user/hyprland.nix {
inherit lib; inherit lib;
inherit pkgs; inherit pkgs;
inherit config; inherit config;
inherit inputs; inherit inputs;
inherit host;
swww_flags = "--transition-type center"; swww_flags = "--transition-type center";
} }
)]; )];
wayland.windowManager.hyprland = let wayland.windowManager.hyprland = let
colors = config.lib.stylix.colors; colors = config.lib.stylix.colors;
hyprLua = import ../../../modules/user/hyprland/lua.nix { inherit lib; };
in { in {
settings = { settings = {
monitor = [ config = {
"eDP-1, preferred, auto, 1"
];
general = { general = {
gaps_in = 5; gaps_in = 5;
gaps_out = 10; gaps_out = 5;
border_size = 3; border_size = 2;
"col.active_border" = lib.mkForce "rgba(${colors.base0C}ee) rgba(${colors.base0B}ee) 45deg"; "col.active_border" = lib.mkForce {
colors = [
"rgba(${colors.base0C}ee)"
"rgba(${colors.base0B}ee)"
];
angle = 45;
};
"col.inactive_border" = lib.mkForce "rgba(${colors.base05}aa)"; "col.inactive_border" = lib.mkForce "rgba(${colors.base05}aa)";
layout = "dwindle"; layout = "dwindle";
}; };
decoration = { decoration = {
border_part_of_window = false;
rounding = 10; rounding = 10;
blur = { blur = {
enabled = true; enabled = true;
size = 16; size = 16;
passes = 2; passes = 2;
new_optimizations = true; new_optimizations = true;
}; };
shadow = { shadow = {
enabled = true; enabled = true;
range = 4; range = 4;
@@ -44,36 +48,50 @@
}; };
}; };
animations = { animations.enabled = true;
enabled = true; dwindle.smart_split = true;
bezier = "myBezier, 0.05, 0.9, 0.1, 1.05";
animation = [
"windows, 1, 7, myBezier"
"windowsOut, 1, 7, default, popin 80%"
"border, 1, 10, default"
"borderangle, 1, 8, default"
"fade, 1, 7, default"
"workspaces, 1, 6, default"
];
};
dwindle = {
smart_split = true;
};
master.new_status = "master"; master.new_status = "master";
misc = { misc = {
focus_on_activate = true;
animate_manual_resizes = true; animate_manual_resizes = true;
animate_mouse_windowdragging = true; animate_mouse_windowdragging = true;
enable_swallow = true; enable_swallow = true;
}; };
};
animation = [
{ leaf = "windows"; enabled = true; speed = 7; bezier = "myBezier"; }
{ leaf = "windowsOut"; enabled = true; speed = 7; bezier = "default"; style = "popin 80%"; }
{ leaf = "border"; enabled = true; speed = 10; bezier = "default"; }
{ leaf = "borderangle"; enabled = true; speed = 8; bezier = "default"; }
{ leaf = "fade"; enabled = true; speed = 7; bezier = "default"; }
{ leaf = "workspaces"; enabled = true; speed = 6; bezier = "default"; }
];
curve = {
_args = [
"myBezier"
{
type = "bezier";
points = [
[ 0.05 0.9 ]
[ 0.1 1.05 ]
];
}
];
};
workspace_rule = [
{
workspace = "2";
layout = "scrolling";
}
];
bind = [ bind = [
"$mainMod Shift, S, exec, ${lib.getExe pkgs.grimblast} --notify --freeze copy area" (hyprLua.bind "SUPER + SHIFT + S" (hyprLua.exec "${lib.getExe pkgs.grimblast} --notify --freeze copy area"))
", F11, exec, ghostty -e sh -c hyprlock" (hyprLua.bind "F11" (hyprLua.exec "ghostty -e sh -c hyprlock"))
]; ];
}; };
}; };
+13 -2
View File
@@ -13,8 +13,6 @@
''; '';
}; };
in { in {
gtk.gtk4.theme = lib.mkForce config.gtk.theme;
stylix = { stylix = {
enable = true; enable = true;
overlays.enable = false; overlays.enable = false;
@@ -79,5 +77,18 @@ in {
}; };
}; };
dconf.settings = {
"org/gnome/desktop/interface".color-scheme = "prefer-dark";
};
gtk = {
gtk4.extraConfig = {
gtk-application-prefer-dark-theme = true;
};
gtk3.extraConfig = {
gtk-application-prefer-dark-theme = true;
};
};
xdg.configFile."helix/config.toml".text = ''theme = "catppuccin_mocha"''; xdg.configFile."helix/config.toml".text = ''theme = "catppuccin_mocha"'';
} }