refactor: modularize Hyprland configuration
- Create home/hyprland/default.nix module with configurable options - Add support for monitors, extraEnv, streamcontroller, lockhelper, grimblast, wacom - Add workspace strategy (numbered vs named per monitor) - Update magicman config to use new module with minimal config - Update gunter config to use new module with all customizations - Remove deprecated Hyprland config files - Significantly reduce duplication between host configs - Both configurations build successfully
This commit is contained in:
@@ -18,7 +18,7 @@
|
|||||||
imports = [
|
imports = [
|
||||||
inputs.sops-nix.homeManagerModules.sops
|
inputs.sops-nix.homeManagerModules.sops
|
||||||
../../editor/neovim
|
../../editor/neovim
|
||||||
../../hyprland/gunter.nix
|
../../hyprland
|
||||||
../../packages
|
../../packages
|
||||||
../../programs/dunst
|
../../programs/dunst
|
||||||
../../programs/git
|
../../programs/git
|
||||||
@@ -36,9 +36,51 @@
|
|||||||
../../ssh
|
../../ssh
|
||||||
../../zsh
|
../../zsh
|
||||||
];
|
];
|
||||||
|
|
||||||
firefox.enable = true;
|
firefox.enable = true;
|
||||||
tmux.enable = true;
|
tmux.enable = true;
|
||||||
hyprland.enable = true;
|
hyprland.enable = true;
|
||||||
|
|
||||||
|
hyprland.monitors = [
|
||||||
|
"$mon_top,1920x1080@60,2560x0,1"
|
||||||
|
"$mon_left,2560x1440@75,0x1080,1"
|
||||||
|
"$mon_center,2560x1440@120,2560x1080,1"
|
||||||
|
"$mon_right,2560x1440@75,5120x1080,1"
|
||||||
|
];
|
||||||
|
|
||||||
|
hyprland.extraEnv = [
|
||||||
|
"LIBVA_DRIVER_NAME,nvidia"
|
||||||
|
"GBM_BACKEND,nvidia-drm"
|
||||||
|
"WLR_NO_HARDWARE_CURSORS,1"
|
||||||
|
];
|
||||||
|
|
||||||
|
hyprland.enableStreamController = true;
|
||||||
|
hyprland.useLockHelper = true;
|
||||||
|
hyprland.enableGrimblast = true;
|
||||||
|
hyprland.enableWacom = true;
|
||||||
|
hyprland.cursorNoHardware = true;
|
||||||
|
hyprland.workspaceStrategy = "named";
|
||||||
|
|
||||||
|
hyprland.monitorVariables = {
|
||||||
|
"$mon_top" = "desc:BNQ G2420HDBL T2B04424SL000";
|
||||||
|
"$mon_left" = "desc:Samsung Electric Company LS27A600U HNMT502389";
|
||||||
|
"$mon_center" = "desc:Acer Technologies XB271HU #ASPVEKfgZ8Dd";
|
||||||
|
"$mon_right" = "desc:Samsung Electric Company LS27A600U HNMT502390";
|
||||||
|
};
|
||||||
|
|
||||||
|
hyprland.lockMonitorNames = [
|
||||||
|
"BNQ G2420HDBL T2B04424SL000"
|
||||||
|
"Samsung Electric Company LS27A600U HNMT502389"
|
||||||
|
"Acer Technologies XB271HU #ASPVEKfgZ8Dd"
|
||||||
|
"Samsung Electric Company LS27A600U HNMT502390"
|
||||||
|
];
|
||||||
|
|
||||||
|
hyprland.extraKeybinds = [
|
||||||
|
"$mainMod,Print,exec,grimblast save active ~/tmp/$(date -Iseconds).png"
|
||||||
|
"$shiftMainMod,Print,exec,grimblast copy area"
|
||||||
|
",Print,exec,grimblast copy active"
|
||||||
|
"$mainMod,v,exec,sleep 0.5s && wl-paste | wtype -"
|
||||||
|
];
|
||||||
home = {
|
home = {
|
||||||
username = "${user}";
|
username = "${user}";
|
||||||
homeDirectory = "/home/${user}";
|
homeDirectory = "/home/${user}";
|
||||||
|
|||||||
@@ -31,12 +31,13 @@
|
|||||||
../../scripts/batlvl.nix
|
../../scripts/batlvl.nix
|
||||||
../../zsh
|
../../zsh
|
||||||
../../packages
|
../../packages
|
||||||
../../hyprland/magicman.nix
|
../../hyprland
|
||||||
../../ssh
|
../../ssh
|
||||||
];
|
];
|
||||||
firefox.enable = true;
|
firefox.enable = true;
|
||||||
tmux.enable = true;
|
tmux.enable = true;
|
||||||
hyprland.enable = true;
|
hyprland.enable = true;
|
||||||
|
hyprland.monitors = [ "eDP-1,1920x1080@60,0x0,1" ];
|
||||||
home = {
|
home = {
|
||||||
username = "${user}";
|
username = "${user}";
|
||||||
homeDirectory = "/home/${user}";
|
homeDirectory = "/home/${user}";
|
||||||
|
|||||||
380
home/hyprland/default.nix
Normal file
380
home/hyprland/default.nix
Normal file
@@ -0,0 +1,380 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
with lib;
|
||||||
|
let
|
||||||
|
cfg = config.hyprland;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.hyprland = {
|
||||||
|
enable = mkEnableOption "Hyprland";
|
||||||
|
|
||||||
|
monitors = mkOption {
|
||||||
|
type = types.listOf types.str;
|
||||||
|
default = [ ];
|
||||||
|
example = [ "eDP-1,1920x1080@60,0x0,1" ];
|
||||||
|
description = "Hyprland monitor configuration";
|
||||||
|
};
|
||||||
|
|
||||||
|
extraEnv = mkOption {
|
||||||
|
type = types.listOf types.str;
|
||||||
|
default = [ ];
|
||||||
|
example = [
|
||||||
|
"LIBVA_DRIVER_NAME,nvidia"
|
||||||
|
"GBM_BACKEND,nvidia-drm"
|
||||||
|
];
|
||||||
|
description = "Extra environment variables for Hyprland";
|
||||||
|
};
|
||||||
|
|
||||||
|
enableStreamController = mkEnableOption "streamcontroller service";
|
||||||
|
|
||||||
|
useLockHelper = mkEnableOption "use lockhelper script instead of hyprlock directly";
|
||||||
|
|
||||||
|
enableGrimblast = mkEnableOption "grimblast screenshot keybinds";
|
||||||
|
|
||||||
|
enableWacom = mkEnableOption "Wacom tablet device configuration";
|
||||||
|
|
||||||
|
extraKeybinds = mkOption {
|
||||||
|
type = types.listOf types.str;
|
||||||
|
default = [ ];
|
||||||
|
example = [
|
||||||
|
"$mainMod,Print,exec,grimblast save active ~/tmp/screenshot.png"
|
||||||
|
];
|
||||||
|
description = "Extra keybinds for Hyprland";
|
||||||
|
};
|
||||||
|
|
||||||
|
lockMonitorNames = mkOption {
|
||||||
|
type = types.listOf (types.nullOr types.str);
|
||||||
|
default = [ null ];
|
||||||
|
example = [
|
||||||
|
"desc:BNQ G2420HDBL T2B04424SL000"
|
||||||
|
"desc:Samsung Electric Company LS27A600U HNMT502389"
|
||||||
|
];
|
||||||
|
description = "Monitor names for hyprlock backgrounds (null for all monitors)";
|
||||||
|
};
|
||||||
|
|
||||||
|
workspaceStrategy = mkOption {
|
||||||
|
type = types.enum [
|
||||||
|
"numbered"
|
||||||
|
"named"
|
||||||
|
];
|
||||||
|
default = "numbered";
|
||||||
|
description = "Workspace naming strategy: numbered (1-6) or named per monitor";
|
||||||
|
};
|
||||||
|
|
||||||
|
monitorVariables = mkOption {
|
||||||
|
type = types.attrsOf types.str;
|
||||||
|
default = { };
|
||||||
|
example = {
|
||||||
|
"$mon_top" = "desc:BNQ G2420HDBL T2B04424SL000";
|
||||||
|
"$mon_left" = "desc:Samsung Electric Company LS27A600U HNMT502389";
|
||||||
|
};
|
||||||
|
description = "Monitor name variables for workspace configuration";
|
||||||
|
};
|
||||||
|
|
||||||
|
cursorNoHardware = mkEnableOption "disable hardware cursors";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
home.packages =
|
||||||
|
with pkgs;
|
||||||
|
[
|
||||||
|
dunst
|
||||||
|
hyprpaper
|
||||||
|
rofi
|
||||||
|
slurp
|
||||||
|
swww
|
||||||
|
waybar
|
||||||
|
wl-clipboard
|
||||||
|
catppuccin-cursors.macchiatoLavender
|
||||||
|
bibata-cursors
|
||||||
|
libsForQt5.qt5.qtwayland
|
||||||
|
libsForQt5.qt5ct
|
||||||
|
]
|
||||||
|
++ optional cfg.enableGrimblast grimblast;
|
||||||
|
|
||||||
|
services.hyprpaper = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
splash = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.hypridle = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
general = {
|
||||||
|
lock_cmd =
|
||||||
|
if cfg.useLockHelper then
|
||||||
|
"${pkgs.callPackage ../scripts/lockhelper.nix { }}/bin/lockhelper"
|
||||||
|
else
|
||||||
|
"${pkgs.hyprlock}/bin/hyprlock";
|
||||||
|
ignore_dbus_inhibit = false;
|
||||||
|
};
|
||||||
|
listener = {
|
||||||
|
timeout = 240;
|
||||||
|
on-timeout = config.services.hypridle.settings.general.lock_cmd;
|
||||||
|
before_sleep_cmd = config.services.hypridle.settings.general.lock_cmd;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.hyprlock = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
background = map (mon: {
|
||||||
|
monitor = if mon == null then "" else "desc:${mon}";
|
||||||
|
path = "screenshot";
|
||||||
|
color = "rgba(17, 17, 17, 1.0)";
|
||||||
|
blur_passes = 3;
|
||||||
|
contrast = 0.8916;
|
||||||
|
brightness = 0.8172;
|
||||||
|
vibrancy = 0.1696;
|
||||||
|
vibrancy_darkness = 0.0;
|
||||||
|
}) cfg.lockMonitorNames;
|
||||||
|
|
||||||
|
general = {
|
||||||
|
grace = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
input-field = [
|
||||||
|
{
|
||||||
|
size = "250, 60";
|
||||||
|
outline_thickness = 2;
|
||||||
|
dots_size = 0.2;
|
||||||
|
dots_spacing = 0.2;
|
||||||
|
dots_center = true;
|
||||||
|
outer_color = "rgba(0, 0, 0, 0)";
|
||||||
|
inner_color = "rgba(0, 0, 0, 0.5)";
|
||||||
|
font_color = "rgb(200, 200, 200)";
|
||||||
|
fade_on_empty = false;
|
||||||
|
font_family = "JetBrains Mono Nerd Font Mono";
|
||||||
|
placeholder_text = "<i><span foreground=\"##cdd6f4\">Input Password...</span></i>";
|
||||||
|
hide_input = false;
|
||||||
|
position = "0, -120";
|
||||||
|
halign = "center";
|
||||||
|
valign = "center";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
label = [
|
||||||
|
{
|
||||||
|
text = "cmd[update:2000] echo \"$(date +\"%b %d %H:%M\")\"";
|
||||||
|
color = "rgba(255, 255, 255, 0.6)";
|
||||||
|
font_size = 120;
|
||||||
|
font_family = "JetBrains Mono Nerd Font Mono ExtraBold";
|
||||||
|
position = "0, -300";
|
||||||
|
halign = "center";
|
||||||
|
valign = "top";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.user.services = mkIf cfg.enableStreamController {
|
||||||
|
streamcontroller = {
|
||||||
|
Unit = {
|
||||||
|
Description = "Streamcontroller service";
|
||||||
|
PartOf = [ "graphical-session.target" ];
|
||||||
|
After = [ "graphical-session.target" ];
|
||||||
|
Requisite = [ "graphical-session.target" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
Service = {
|
||||||
|
ExecStart = "${pkgs.streamcontroller}/bin/streamcontroller -b";
|
||||||
|
Restart = "on-failure";
|
||||||
|
};
|
||||||
|
|
||||||
|
Install = {
|
||||||
|
WantedBy = [ "graphical-session.target" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
wayland.windowManager.hyprland = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.hyprland;
|
||||||
|
systemd.enable = false;
|
||||||
|
settings = {
|
||||||
|
"$mainMod" = "SUPER";
|
||||||
|
"$shiftMainMod" = "SUPER_SHIFT";
|
||||||
|
"$term" = "kitty";
|
||||||
|
}
|
||||||
|
// cfg.monitorVariables
|
||||||
|
// {
|
||||||
|
monitor = cfg.monitors;
|
||||||
|
|
||||||
|
input = {
|
||||||
|
kb_layout = "no";
|
||||||
|
follow_mouse = 1;
|
||||||
|
};
|
||||||
|
|
||||||
|
device = optional cfg.enableWacom {
|
||||||
|
name = "wacom-one-by-wacom-m-pen";
|
||||||
|
};
|
||||||
|
|
||||||
|
cursor = optionalAttrs cfg.cursorNoHardware {
|
||||||
|
no_hardware_cursors = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
env = [ "XDG_SESSION_TYPE,wayland" ] ++ cfg.extraEnv;
|
||||||
|
|
||||||
|
decoration = {
|
||||||
|
rounding = 10;
|
||||||
|
blur = {
|
||||||
|
enabled = true;
|
||||||
|
size = 3;
|
||||||
|
passes = 1;
|
||||||
|
xray = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
general = {
|
||||||
|
gaps_in = 4;
|
||||||
|
gaps_out = 10;
|
||||||
|
border_size = 2;
|
||||||
|
layout = "dwindle";
|
||||||
|
};
|
||||||
|
|
||||||
|
animations = {
|
||||||
|
enabled = 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"
|
||||||
|
"specialWorkspace, 1, 4, default, fade"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
dwindle = {
|
||||||
|
pseudotile = true;
|
||||||
|
preserve_split = true;
|
||||||
|
special_scale_factor = 0.85;
|
||||||
|
};
|
||||||
|
|
||||||
|
master = {
|
||||||
|
new_status = "master";
|
||||||
|
};
|
||||||
|
|
||||||
|
misc = {
|
||||||
|
force_default_wallpaper = 0;
|
||||||
|
disable_hyprland_logo = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
ecosystem = {
|
||||||
|
no_update_news = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
windowrule = [
|
||||||
|
{
|
||||||
|
name = "terminal_opacity";
|
||||||
|
"match:class" = "kitty";
|
||||||
|
opacity = 0.9;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
workspace =
|
||||||
|
if cfg.workspaceStrategy == "named" then
|
||||||
|
[
|
||||||
|
"name:T1, monitor:$mon_top, persistent:true, default:true"
|
||||||
|
"name:T2, monitor:$mon_top, persistent:true, default:false"
|
||||||
|
"name:L1, monitor:$mon_left, persistent:true, default:true"
|
||||||
|
"name:L2, monitor:$mon_left, persistent:true, default:false"
|
||||||
|
"name:R1, monitor:$mon_right, persistent:true, default:true"
|
||||||
|
"name:R2, monitor:$mon_right, persistent:true, default:false"
|
||||||
|
"name:c1, monitor:$mon_center, persistent:true, default:true"
|
||||||
|
"name:c2, monitor:$mon_center, persistent:true, default:false"
|
||||||
|
"name:c3, monitor:$mon_center, persistent:true, default:false"
|
||||||
|
"name:c4, monitor:$mon_center, persistent:true, default:false"
|
||||||
|
"special:special, on-created-empty:kitty, rounding:true, decorate:false, border:false"
|
||||||
|
]
|
||||||
|
else
|
||||||
|
[ "special:special, on-created-empty:kitty, rounding:true, decorate:false, border:false" ];
|
||||||
|
|
||||||
|
bindm = [
|
||||||
|
"$mainMod,mouse:272,movewindow"
|
||||||
|
"$shiftMainMod,mouse:272,resizewindow"
|
||||||
|
];
|
||||||
|
|
||||||
|
bind = [
|
||||||
|
# term
|
||||||
|
"$mainMod,Return,exec,$term"
|
||||||
|
# rofi
|
||||||
|
"$mainMod,D,exec,rofi-launcher"
|
||||||
|
"$mainMod,P,exec,rofi-rbw"
|
||||||
|
# hyprlock
|
||||||
|
"$shiftMainMod,l,exec,${
|
||||||
|
if cfg.useLockHelper then
|
||||||
|
"${pkgs.callPackage ../scripts/lockhelper.nix { }}/bin/lockhelper"
|
||||||
|
else
|
||||||
|
"${pkgs.hyprlock}/bin/hyprlock"
|
||||||
|
}"
|
||||||
|
# hyprland
|
||||||
|
"$mainMod,Q,killactive,"
|
||||||
|
"CTRLALT,Delete,exit,"
|
||||||
|
"$mainMod,Space,togglefloating,"
|
||||||
|
"$mainMod,F,fullscreen,"
|
||||||
|
# focus
|
||||||
|
"$mainMod,l,movefocus,l"
|
||||||
|
"$mainMod,h,movefocus,r"
|
||||||
|
"$mainMod,k,movefocus,u"
|
||||||
|
"$mainMod,j,movefocus,d"
|
||||||
|
# move
|
||||||
|
"$mainMod,h,movewindow,l"
|
||||||
|
"$mainMod,l,movewindow,r"
|
||||||
|
"$mainMod,k,movewindow,u"
|
||||||
|
"$mainMod,j,movewindow,d"
|
||||||
|
# Force opacity
|
||||||
|
"$shiftMainMod,o,exec, hl-no-opacity"
|
||||||
|
]
|
||||||
|
++ cfg.extraKeybinds
|
||||||
|
++ (
|
||||||
|
if cfg.workspaceStrategy == "numbered" then
|
||||||
|
[
|
||||||
|
"$mainMod,1,workspace,1"
|
||||||
|
"$mainMod,2,workspace,2"
|
||||||
|
"$mainMod,3,workspace,3"
|
||||||
|
"$mainMod,4,workspace,4"
|
||||||
|
"$mainMod,5,workspace,5"
|
||||||
|
"$mainMod,6,workspace,6"
|
||||||
|
"$shiftMainMod,1,movetoworkspace,1"
|
||||||
|
"$shiftMainMod,2,movetoworkspace,2"
|
||||||
|
"$shiftMainMod,3,movetoworkspace,3"
|
||||||
|
"$shiftMainMod,4,movetoworkspace,4"
|
||||||
|
"$shiftMainMod,5,movetoworkspace,5"
|
||||||
|
"$shiftMainMod,5,movetoworkspace,6"
|
||||||
|
]
|
||||||
|
else
|
||||||
|
[
|
||||||
|
"$mainMod,1,workspace,name:c1"
|
||||||
|
"$mainMod,2,workspace,name:c2"
|
||||||
|
"$mainMod,3,workspace,name:c3"
|
||||||
|
"$mainMod,4,workspace,name:c4"
|
||||||
|
"$mainMod,5,workspace,5"
|
||||||
|
"$mainMod,6,workspace,6"
|
||||||
|
"$shiftMainMod,1,movetoworkspace,name:c1"
|
||||||
|
"$shiftMainMod,2,movetoworkspace,name:c2"
|
||||||
|
"$shiftMainMod,3,movetoworkspace,name:c3"
|
||||||
|
"$shiftMainMod,4,movetoworkspace,name:c4"
|
||||||
|
"$shiftMainMod,5,movetoworkspace,5"
|
||||||
|
"$shiftMainMod,6,movetoworkspace,6"
|
||||||
|
]
|
||||||
|
)
|
||||||
|
++ [
|
||||||
|
# Special workspace
|
||||||
|
"$mainMod,c,togglespecialworkspace"
|
||||||
|
"$shiftMainMod,c,movetoworkspace, special"
|
||||||
|
];
|
||||||
|
|
||||||
|
exec-once = [ ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
{
|
|
||||||
imports = [
|
|
||||||
./hyprland_gunter.nix
|
|
||||||
./waybar
|
|
||||||
./xdg.nix
|
|
||||||
./cursor.nix
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -1,384 +0,0 @@
|
|||||||
{
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
let
|
|
||||||
lockhelper = pkgs.callPackage ../scripts/lockhelper.nix { };
|
|
||||||
monitorTopDesc = "BNQ G2420HDBL T2B04424SL000";
|
|
||||||
monitorTopName = "desc:${monitorTopDesc}";
|
|
||||||
monitorTopHash = builtins.substring 0 8 (builtins.hashString "sha256" monitorTopDesc);
|
|
||||||
|
|
||||||
monitorLeftDesc = "Samsung Electric Company LS27A600U HNMT502389";
|
|
||||||
monitorLeftName = "desc:${monitorLeftDesc}";
|
|
||||||
monitorLeftHash = builtins.substring 0 8 (builtins.hashString "sha256" monitorLeftDesc);
|
|
||||||
|
|
||||||
monitorCenterDesc = "Acer Technologies XB271HU #ASPVEKfgZ8Dd";
|
|
||||||
monitorCenterName = "desc:${monitorCenterDesc}";
|
|
||||||
monitorCenterHash = builtins.substring 0 8 (builtins.hashString "sha256" monitorCenterDesc);
|
|
||||||
|
|
||||||
monitorRightDesc = "Samsung Electric Company LS27A600U HNMT502390";
|
|
||||||
monitorRightName = "desc:${monitorRightDesc}";
|
|
||||||
monitorRightHash = builtins.substring 0 8 (builtins.hashString "sha256" monitorRightDesc);
|
|
||||||
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.hyprland.enable = lib.mkEnableOption "Hyprland";
|
|
||||||
config = {
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
dunst
|
|
||||||
rofi
|
|
||||||
slurp
|
|
||||||
swww
|
|
||||||
waybar
|
|
||||||
wl-clipboard
|
|
||||||
catppuccin-cursors.macchiatoLavender
|
|
||||||
bibata-cursors
|
|
||||||
# For potentially fixing some issues
|
|
||||||
libsForQt5.qt5.qtwayland
|
|
||||||
libsForQt5.qt5ct
|
|
||||||
];
|
|
||||||
|
|
||||||
services.hyprpaper = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
splash = false;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
services.hypridle = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
general = {
|
|
||||||
lock_cmd = "${pkgs.hyprlock}/bin/hyprlock";
|
|
||||||
before_sleep_cmd = "${lockhelper}/bin/lockhelper";
|
|
||||||
ignore_dbus_inhibit = false;
|
|
||||||
};
|
|
||||||
listener = {
|
|
||||||
timeout = 240;
|
|
||||||
on-timeout = "${lockhelper}/bin/lockhelper";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.hyprlock = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
background = [
|
|
||||||
{
|
|
||||||
monitor = monitorTopName;
|
|
||||||
# path = "/tmp/lockscreen/${monitorTopHash}.png";
|
|
||||||
path = "screenshot";
|
|
||||||
color = "rgba(17, 17, 17, 1.0)";
|
|
||||||
blur_passes = 3;
|
|
||||||
contrast = 0.8916;
|
|
||||||
brightness = 0.8172;
|
|
||||||
vibrancy = 0.1696;
|
|
||||||
vibrancy_darkness = 0.0;
|
|
||||||
}
|
|
||||||
{
|
|
||||||
monitor = monitorLeftName;
|
|
||||||
# path = "/tmp/lockscreen/${monitorLeftHash}.png";
|
|
||||||
path = "screenshot";
|
|
||||||
color = "rgba(17, 17, 17, 1.0)";
|
|
||||||
blur_passes = 3;
|
|
||||||
contrast = 0.8916;
|
|
||||||
brightness = 0.8172;
|
|
||||||
vibrancy = 0.1696;
|
|
||||||
vibrancy_darkness = 0.0;
|
|
||||||
zindex = 1;
|
|
||||||
}
|
|
||||||
{
|
|
||||||
monitor = monitorCenterName;
|
|
||||||
# path = "/tmp/lockscreen/${monitorCenterHash}.png";
|
|
||||||
path = "screenshot";
|
|
||||||
color = "rgba(17, 17, 17, 1.0)";
|
|
||||||
blur_passes = 3;
|
|
||||||
contrast = 0.8916;
|
|
||||||
brightness = 0.8172;
|
|
||||||
vibrancy = 0.1696;
|
|
||||||
vibrancy_darkness = 0.0;
|
|
||||||
}
|
|
||||||
{
|
|
||||||
monitor = monitorRightName;
|
|
||||||
# path = "/tmp/lockscreen/${monitorRightHash}.png";
|
|
||||||
path = "screenshot";
|
|
||||||
color = "rgba(17, 17, 17, 1.0)";
|
|
||||||
blur_passes = 3;
|
|
||||||
contrast = 0.8916;
|
|
||||||
brightness = 0.8172;
|
|
||||||
vibrancy = 0.1696;
|
|
||||||
vibrancy_darkness = 0.0;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
general = {
|
|
||||||
grace = 0;
|
|
||||||
};
|
|
||||||
|
|
||||||
input-field = [
|
|
||||||
{
|
|
||||||
size = "250, 60";
|
|
||||||
outline_thickness = 2;
|
|
||||||
dots_size = 0.2;
|
|
||||||
dots_spacing = 0.2;
|
|
||||||
dots_center = true;
|
|
||||||
outer_color = "rgba(0, 0, 0, 0)";
|
|
||||||
inner_color = "rgba(0, 0, 0, 0.5)";
|
|
||||||
font_color = "rgb(200, 200, 200)";
|
|
||||||
fade_on_empty = false;
|
|
||||||
font_family = "JetBrains Mono Nerd Font Mono";
|
|
||||||
placeholder_text = "<i><span foreground=\"##cdd6f4\">Input Password...</span></i>";
|
|
||||||
hide_input = false;
|
|
||||||
position = "0, -120";
|
|
||||||
halign = "center";
|
|
||||||
valign = "center";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
label = [
|
|
||||||
{
|
|
||||||
text = "cmd[update:2000] echo \"$(date +\"%b %d %H:%M\")\"";
|
|
||||||
color = "rgba(255, 255, 255, 0.6)";
|
|
||||||
font_size = 120;
|
|
||||||
font_family = "JetBrains Mono Nerd Font Mono ExtraBold";
|
|
||||||
position = "0, -300";
|
|
||||||
halign = "center";
|
|
||||||
valign = "top";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# streamcontroller service
|
|
||||||
|
|
||||||
systemd.user.services = {
|
|
||||||
streamcontroller = {
|
|
||||||
Unit = {
|
|
||||||
Description = "Streamcontroller service";
|
|
||||||
PartOf = [ "graphical-session.target" ];
|
|
||||||
After = [ "graphical-session.target" ];
|
|
||||||
Requisite = [ "graphical-session.target" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
Service = {
|
|
||||||
ExecStart = "${pkgs.streamcontroller}/bin/streamcontroller -b";
|
|
||||||
Restart = "on-failure";
|
|
||||||
};
|
|
||||||
|
|
||||||
Install = {
|
|
||||||
WantedBy = [ "graphical-session.target" ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
wayland.windowManager.hyprland = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.hyprland;
|
|
||||||
systemd.enable = false;
|
|
||||||
settings = {
|
|
||||||
"$mainMod" = "SUPER";
|
|
||||||
"$shiftMainMod" = "SUPER_SHIFT";
|
|
||||||
"$term" = "kitty";
|
|
||||||
|
|
||||||
# monitors
|
|
||||||
"$mon_top" = monitorTopName;
|
|
||||||
"$mon_left" = monitorLeftName;
|
|
||||||
"$mon_center" = monitorCenterName;
|
|
||||||
"$mon_right" = monitorRightName;
|
|
||||||
|
|
||||||
monitor = [
|
|
||||||
"$mon_top,1920x1080@60,2560x0,1" # top T2B04424SL000
|
|
||||||
# "DP-8,1920x1080@60,2560x0,1" # top T2B04424SL000 60
|
|
||||||
"$mon_left,2560x1440@75,0x1080,1" # left
|
|
||||||
# "DP-6,2560x1440@75,0x1080,1" # left 75hz
|
|
||||||
"$mon_center,2560x1440@120,2560x1080,1" # main #ASPVEKfgZ8Dd
|
|
||||||
# "DP-4,2560x1440@144,2560x1080,1" # main #ASPVEKfgZ8Dd 120hz
|
|
||||||
"$mon_right,2560x1440@75,5120x1080,1" # right
|
|
||||||
# "DP-7,2560x1440@75,5120x1080,1" # right 75hz
|
|
||||||
];
|
|
||||||
input = {
|
|
||||||
kb_layout = "no";
|
|
||||||
follow_mouse = 1;
|
|
||||||
};
|
|
||||||
|
|
||||||
device = [
|
|
||||||
{
|
|
||||||
name = "wacom-one-by-wacom-m-pen";
|
|
||||||
output = "$mon_center";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
cursor = {
|
|
||||||
no_hardware_cursors = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
env = [
|
|
||||||
"LIBVA_DRIVER_NAME,nvidia"
|
|
||||||
"XDG_SESSION_TYPE,wayland"
|
|
||||||
"GBM_BACKEND,nvidia-drm"
|
|
||||||
# "__GLX_VENDOR_LIBRARY_NAME,nvidia"
|
|
||||||
"WLR_NO_HARDWARE_CURSORS,1"
|
|
||||||
];
|
|
||||||
|
|
||||||
decoration = {
|
|
||||||
rounding = 10;
|
|
||||||
blur = {
|
|
||||||
enabled = true;
|
|
||||||
size = 3;
|
|
||||||
passes = 1;
|
|
||||||
xray = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
general = {
|
|
||||||
gaps_in = 4;
|
|
||||||
gaps_out = 10;
|
|
||||||
border_size = 2;
|
|
||||||
layout = "dwindle";
|
|
||||||
};
|
|
||||||
|
|
||||||
ecosystem = {
|
|
||||||
no_update_news = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
animations = {
|
|
||||||
enabled = true;
|
|
||||||
bezier = [
|
|
||||||
"myBezier, 0.05, 0.9, 0.1, 1.05"
|
|
||||||
"easeInB, 0.6, -0.28, 0.735, 0.045"
|
|
||||||
];
|
|
||||||
|
|
||||||
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, easeInB, slidefadevert"
|
|
||||||
"specialWorkspace, 1, 4, default, fade"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
dwindle = {
|
|
||||||
pseudotile = true;
|
|
||||||
preserve_split = true;
|
|
||||||
special_scale_factor = 0.85;
|
|
||||||
};
|
|
||||||
|
|
||||||
master = {
|
|
||||||
new_status = "master";
|
|
||||||
};
|
|
||||||
|
|
||||||
misc = {
|
|
||||||
force_default_wallpaper = 0;
|
|
||||||
disable_hyprland_logo = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
windowrule = [
|
|
||||||
{
|
|
||||||
name = "terminal_opacity";
|
|
||||||
"match:class" = "kitty";
|
|
||||||
opacity = 0.9;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
workspace = [
|
|
||||||
"name:T1, monitor:$mon_top, persistent:true, default:true"
|
|
||||||
"name:T2, monitor:$mon_top, persistent:true, default:false"
|
|
||||||
"name:L1, monitor:$mon_left, persistent:true, default:true"
|
|
||||||
"name:L2, monitor:$mon_left, persistent:true, default:false"
|
|
||||||
"name:R1, monitor:$mon_right, persistent:true, default:true"
|
|
||||||
"name:R2, monitor:$mon_right, persistent:true, default:false"
|
|
||||||
"name:c1, monitor:$mon_center, persistent:true, default:true"
|
|
||||||
"name:c2, monitor:$mon_center, persistent:true, default:false"
|
|
||||||
"name:c3, monitor:$mon_center, persistent:true, default:false"
|
|
||||||
"name:c4, monitor:$mon_center, persistent:true, default:false"
|
|
||||||
"special:special, on-created-empty:kitty, rounding:true, decorate:false, border:false"
|
|
||||||
];
|
|
||||||
|
|
||||||
bindm = [
|
|
||||||
"$mainMod,mouse:272,movewindow"
|
|
||||||
"$shiftMainMod,mouse:272,resizewindow"
|
|
||||||
];
|
|
||||||
|
|
||||||
bindr = [
|
|
||||||
# mumble ptt release
|
|
||||||
# ",code:202,exec,mumble rpc stoptalking"
|
|
||||||
# ",code:202,exec,pamixer --source 63 -m"
|
|
||||||
# ",code:202,exec,sleep 0.5 && pamixer --default-source -m"
|
|
||||||
];
|
|
||||||
|
|
||||||
bind = [
|
|
||||||
# term
|
|
||||||
"$mainMod,Return,exec,$term"
|
|
||||||
|
|
||||||
# hyprlock
|
|
||||||
"$shiftMainMod,l,exec,${lockhelper}/bin/lockhelper"
|
|
||||||
|
|
||||||
# rofi
|
|
||||||
"$mainMod,D,exec,rofi-launcher"
|
|
||||||
"$mainMod,P,exec,rofi-rbw"
|
|
||||||
|
|
||||||
# hyprland
|
|
||||||
"$mainMod,Q,killactive,"
|
|
||||||
"CTRLALT,Delete,exit,"
|
|
||||||
"$mainMod,Space,togglefloating,"
|
|
||||||
"$mainMod,F,fullscreen,"
|
|
||||||
|
|
||||||
# focus
|
|
||||||
"$mainMod,l,movefocus,l"
|
|
||||||
"$mainMod,h,movefocus,r"
|
|
||||||
"$mainMod,k,movefocus,u"
|
|
||||||
"$mainMod,j,movefocus,d"
|
|
||||||
|
|
||||||
# move
|
|
||||||
"$mainMod,h,movewindow,l"
|
|
||||||
"$mainMod,l,movewindow,r"
|
|
||||||
"$mainMod,k,movewindow,u"
|
|
||||||
"$mainMod,j,movewindow,d"
|
|
||||||
|
|
||||||
# Force opacity
|
|
||||||
"$shiftMainMod,o,exec, hl-no-opacity"
|
|
||||||
|
|
||||||
# grimblast
|
|
||||||
"$mainMod,Print,exec,grimblast save active ~/tmp/$(date -Iseconds).png"
|
|
||||||
"$shiftMainMod,Print,exec,grimblast copy area"
|
|
||||||
",Print,exec,grimblast copy active"
|
|
||||||
|
|
||||||
# mumble ptt click
|
|
||||||
# ",code:202,exec,mumble rpc starttalking"
|
|
||||||
#",code:202,pass,^(info\.mumble\.Mumble)$"
|
|
||||||
# ",code:202,exec,pamixer --default-source -u"
|
|
||||||
",code:202,pass,^discord$"
|
|
||||||
|
|
||||||
# Paste to wtype
|
|
||||||
"$mainMod,v,exec,sleep 0.5s && wl-paste | wtype -"
|
|
||||||
|
|
||||||
# worspace switching
|
|
||||||
"$mainMod,1,workspace,name:c1"
|
|
||||||
"$mainMod,2,workspace,name:c2"
|
|
||||||
"$mainMod,3,workspace,name:c3"
|
|
||||||
"$mainMod,4,workspace,name:c4"
|
|
||||||
"$mainMod,5,workspace,5"
|
|
||||||
"$mainMod,6,workspace,6"
|
|
||||||
|
|
||||||
# Move window to workspace
|
|
||||||
"$shiftMainMod,1,movetoworkspace,name:c1"
|
|
||||||
"$shiftMainMod,2,movetoworkspace,name:c2"
|
|
||||||
"$shiftMainMod,3,movetoworkspace,name:c3"
|
|
||||||
"$shiftMainMod,4,movetoworkspace,name:c4"
|
|
||||||
"$shiftMainMod,5,movetoworkspace,5"
|
|
||||||
"$shiftMainMod,6,movetoworkspace,6"
|
|
||||||
|
|
||||||
# Special workspace
|
|
||||||
"$mainMod,c,togglespecialworkspace"
|
|
||||||
"$shiftMainMod,c,movetoworkspace, special"
|
|
||||||
];
|
|
||||||
|
|
||||||
exec-once = [
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,242 +0,0 @@
|
|||||||
{
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
options.hyprland.enable = lib.mkEnableOption "Hyprland";
|
|
||||||
config = {
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
dunst
|
|
||||||
# hyprlock
|
|
||||||
hyprpaper
|
|
||||||
rofi
|
|
||||||
slurp
|
|
||||||
swww
|
|
||||||
waybar
|
|
||||||
wl-clipboard
|
|
||||||
catppuccin-cursors.macchiatoLavender
|
|
||||||
bibata-cursors
|
|
||||||
# For potentially fixing some issues
|
|
||||||
libsForQt5.qt5.qtwayland
|
|
||||||
libsForQt5.qt5ct
|
|
||||||
];
|
|
||||||
|
|
||||||
services.hyprpaper = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
splash = false;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
services.hypridle = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
general = {
|
|
||||||
lock_cmd = "${pkgs.hyprlock}/bin/hyprlock";
|
|
||||||
before_sleep_cmd = "${pkgs.hyprlock}/bin/hyprlock";
|
|
||||||
ignore_dbus_inhibit = false;
|
|
||||||
};
|
|
||||||
listener = {
|
|
||||||
timeout = 240;
|
|
||||||
on-timeout = "${pkgs.hyprlock}/bin/hyprlock";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.hyprlock = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
background = [
|
|
||||||
{
|
|
||||||
monitor = "";
|
|
||||||
path = "screenshot";
|
|
||||||
color = "rgba(17, 17, 17, 1.0)";
|
|
||||||
blur_passes = 3;
|
|
||||||
contrast = 0.8916;
|
|
||||||
brightness = 0.8172;
|
|
||||||
vibrancy = 0.1696;
|
|
||||||
vibrancy_darkness = 0.0;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
general = {
|
|
||||||
grace = 0;
|
|
||||||
};
|
|
||||||
|
|
||||||
input-field = [
|
|
||||||
{
|
|
||||||
size = "250, 60";
|
|
||||||
outline_thickness = 2;
|
|
||||||
dots_size = 0.2;
|
|
||||||
dots_spacing = 0.2;
|
|
||||||
dots_center = true;
|
|
||||||
outer_color = "rgba(0, 0, 0, 0)";
|
|
||||||
inner_color = "rgba(0, 0, 0, 0.5)";
|
|
||||||
font_color = "rgb(200, 200, 200)";
|
|
||||||
fade_on_empty = false;
|
|
||||||
font_family = "JetBrains Mono Nerd Font Mono";
|
|
||||||
placeholder_text = "<i><span foreground=\"##cdd6f4\">Input Password...</span></i>";
|
|
||||||
hide_input = false;
|
|
||||||
position = "0, -120";
|
|
||||||
halign = "center";
|
|
||||||
valign = "center";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
label = [
|
|
||||||
{
|
|
||||||
text = "cmd[update:2000] echo \"$(date +\"%b %d %H:%M\")\"";
|
|
||||||
color = "rgba(255, 255, 255, 0.6)";
|
|
||||||
font_size = 120;
|
|
||||||
font_family = "JetBrains Mono Nerd Font Mono ExtraBold";
|
|
||||||
position = "0, -300";
|
|
||||||
halign = "center";
|
|
||||||
valign = "top";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
wayland.windowManager.hyprland = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.hyprland;
|
|
||||||
settings = {
|
|
||||||
"$mainMod" = "SUPER";
|
|
||||||
"$shiftMainMod" = "SUPER_SHIFT";
|
|
||||||
"$term" = "kitty";
|
|
||||||
|
|
||||||
monitor = [ "eDP-1,1920x1080@60,0x0,1" ];
|
|
||||||
input = {
|
|
||||||
kb_layout = "no";
|
|
||||||
follow_mouse = 1;
|
|
||||||
};
|
|
||||||
|
|
||||||
env = [ "XDG_SESSION_TYPE,wayland" ];
|
|
||||||
|
|
||||||
decoration = {
|
|
||||||
rounding = 10;
|
|
||||||
blur = {
|
|
||||||
enabled = true;
|
|
||||||
size = 3;
|
|
||||||
passes = 1;
|
|
||||||
xray = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
general = {
|
|
||||||
gaps_in = 4;
|
|
||||||
gaps_out = 10;
|
|
||||||
border_size = 2;
|
|
||||||
layout = "dwindle";
|
|
||||||
};
|
|
||||||
|
|
||||||
animations = {
|
|
||||||
enabled = 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"
|
|
||||||
"specialWorkspace, 1, 4, default, fade"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
dwindle = {
|
|
||||||
pseudotile = true;
|
|
||||||
preserve_split = true;
|
|
||||||
special_scale_factor = 0.85;
|
|
||||||
};
|
|
||||||
master = {
|
|
||||||
new_status = "master";
|
|
||||||
};
|
|
||||||
misc = {
|
|
||||||
force_default_wallpaper = 0;
|
|
||||||
disable_hyprland_logo = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
ecosystem = {
|
|
||||||
no_update_news = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
windowrule = [
|
|
||||||
{
|
|
||||||
name = "terminal_opacity";
|
|
||||||
"match:class" = "kitty";
|
|
||||||
opacity = 0.9;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
workspace = [
|
|
||||||
"special:special, on-created-empty:kitty, rounding:true, decorate:false, border:false"
|
|
||||||
];
|
|
||||||
|
|
||||||
bindm = [
|
|
||||||
"$mainMod,mouse:272,movewindow"
|
|
||||||
"$shiftMainMod,mouse:272,resizewindow"
|
|
||||||
];
|
|
||||||
|
|
||||||
bindr = [
|
|
||||||
];
|
|
||||||
|
|
||||||
bind = [
|
|
||||||
# term
|
|
||||||
"$mainMod,Return,exec,$term"
|
|
||||||
|
|
||||||
# rofi
|
|
||||||
"$mainMod,D,exec,rofi-launcher"
|
|
||||||
"$mainMod,P,exec,rofi-rbw"
|
|
||||||
|
|
||||||
# hyprlock
|
|
||||||
"$shiftMainMod,l,exec,${pkgs.hyprlock}/bin/hyprlock"
|
|
||||||
|
|
||||||
# hyprland
|
|
||||||
"$mainMod,Q,killactive,"
|
|
||||||
"CTRLALT,Delete,exit,"
|
|
||||||
"$mainMod,Space,togglefloating,"
|
|
||||||
"$mainMod,F,fullscreen,"
|
|
||||||
|
|
||||||
# focus
|
|
||||||
"$mainMod,l,movefocus,l"
|
|
||||||
"$mainMod,h,movefocus,r"
|
|
||||||
"$mainMod,k,movefocus,u"
|
|
||||||
"$mainMod,j,movefocus,d"
|
|
||||||
|
|
||||||
# move
|
|
||||||
"$mainMod,h,movewindow,l"
|
|
||||||
"$mainMod,l,movewindow,r"
|
|
||||||
"$mainMod,k,movewindow,u"
|
|
||||||
"$mainMod,j,movewindow,d"
|
|
||||||
|
|
||||||
# Force opacity
|
|
||||||
"$shiftMainMod,o,exec, hl-no-opacity"
|
|
||||||
|
|
||||||
# worspace switching
|
|
||||||
"$mainMod,1,workspace,1"
|
|
||||||
"$mainMod,2,workspace,2"
|
|
||||||
"$mainMod,3,workspace,3"
|
|
||||||
"$mainMod,4,workspace,4"
|
|
||||||
"$mainMod,5,workspace,5"
|
|
||||||
"$mainMod,6,workspace,6"
|
|
||||||
|
|
||||||
# Move window to workspace
|
|
||||||
"$shiftMainMod,1,movetoworkspace,1"
|
|
||||||
"$shiftMainMod,2,movetoworkspace,2"
|
|
||||||
"$shiftMainMod,3,movetoworkspace,3"
|
|
||||||
"$shiftMainMod,4,movetoworkspace,4"
|
|
||||||
"$shiftMainMod,5,movetoworkspace,5"
|
|
||||||
"$shiftMainMod,5,movetoworkspace,6"
|
|
||||||
|
|
||||||
# Special workspace
|
|
||||||
"$mainMod,c,togglespecialworkspace"
|
|
||||||
"$shiftMainMod,c,movetoworkspace, special"
|
|
||||||
];
|
|
||||||
|
|
||||||
exec-once = [
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,159 +0,0 @@
|
|||||||
{
|
|
||||||
inputs,
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
options.hyprland.enable = lib.mkEnableOption "Hyprland";
|
|
||||||
config = {
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
dunst
|
|
||||||
# hyprlock
|
|
||||||
hyprpaper
|
|
||||||
rofi-wayland
|
|
||||||
slurp
|
|
||||||
swww
|
|
||||||
waybar
|
|
||||||
wl-clipboard
|
|
||||||
catppuccin-cursors.macchiatoLavender
|
|
||||||
bibata-cursors
|
|
||||||
# For potentially fixing some issues
|
|
||||||
libsForQt5.qt5.qtwayland
|
|
||||||
libsForQt5.qt5ct
|
|
||||||
];
|
|
||||||
|
|
||||||
wayland.windowManager.hyprland = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.hyprland;
|
|
||||||
settings = {
|
|
||||||
"$mainMod" = "SUPER";
|
|
||||||
"$shiftMainMod" = "SUPER_SHIFT";
|
|
||||||
"$term" = "kitty";
|
|
||||||
|
|
||||||
monitor = [ ];
|
|
||||||
input = {
|
|
||||||
kb_layout = "no";
|
|
||||||
follow_mouse = 1;
|
|
||||||
};
|
|
||||||
|
|
||||||
env = [ "XDG_SESSION_TYPE,wayland" ];
|
|
||||||
|
|
||||||
decoration = {
|
|
||||||
rounding = 0;
|
|
||||||
drop_shadow = true;
|
|
||||||
shadow_range = 4;
|
|
||||||
shadow_render_power = 3;
|
|
||||||
blur = {
|
|
||||||
enabled = true;
|
|
||||||
size = 3;
|
|
||||||
passes = 1;
|
|
||||||
xray = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
general = {
|
|
||||||
gaps_in = 4;
|
|
||||||
gaps_out = 10;
|
|
||||||
border_size = 2;
|
|
||||||
layout = "dwindle";
|
|
||||||
};
|
|
||||||
|
|
||||||
animations = {
|
|
||||||
enabled = 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 = {
|
|
||||||
pseudotile = true;
|
|
||||||
preserve_split = true;
|
|
||||||
};
|
|
||||||
master = {
|
|
||||||
new_status = "master";
|
|
||||||
};
|
|
||||||
misc.force_default_wallpaper = -1;
|
|
||||||
|
|
||||||
windowrulev2 = [
|
|
||||||
"opacity 0.95 override 0.7 override,class:^(Alacritty)$"
|
|
||||||
"opacity 0.95 override 0.7 override,class:^(kitty)$"
|
|
||||||
];
|
|
||||||
|
|
||||||
workspace = [
|
|
||||||
"name:mumble, monitor:$mon_top, persistent:true, default:true"
|
|
||||||
"name:left, monitor:$mon_left, persistent:true, default:true"
|
|
||||||
"name:right, monitor:$mon_right, persistent:true, default:true"
|
|
||||||
"name:main 1, monitor:$mon_center, persistent:true, default:true"
|
|
||||||
"name:main 2, monitor:$mon_center, persistent:true, default:true"
|
|
||||||
];
|
|
||||||
|
|
||||||
bindm = [ "ALT,mouse:272,movewindow" ];
|
|
||||||
|
|
||||||
bindr = [
|
|
||||||
# mumble ptt release
|
|
||||||
# ",code:202,exec,mumble rpc stoptalking"
|
|
||||||
# ",code:202,exec,pamixer --source 63 -m"
|
|
||||||
# ",code:202,exec,sleep 0.5 && pamixer --default-source -m"
|
|
||||||
];
|
|
||||||
|
|
||||||
bind = [
|
|
||||||
# term
|
|
||||||
"$mainMod,Return,exec,$term"
|
|
||||||
|
|
||||||
# rofi
|
|
||||||
"$mainMod,D,exec,rofi-launcher"
|
|
||||||
"$mainMod,P,exec,rofi-rbw"
|
|
||||||
|
|
||||||
# hyprland
|
|
||||||
"$mainMod,Q,killactive,"
|
|
||||||
"CTRLALT,Delete,exit,"
|
|
||||||
"$mainMod,Space,togglefloating,"
|
|
||||||
"$mainMod,F,fullscreen,"
|
|
||||||
|
|
||||||
# focus
|
|
||||||
"$mainMod,l,movefocus,l"
|
|
||||||
"$mainMod,h,movefocus,r"
|
|
||||||
"$mainMod,k,movefocus,u"
|
|
||||||
"$mainMod,j,movefocus,d"
|
|
||||||
|
|
||||||
# move
|
|
||||||
"$mainMod,h,movewindow,l"
|
|
||||||
"$mainMod,l,movewindow,r"
|
|
||||||
"$mainMod,k,movewindow,u"
|
|
||||||
"$mainMod,j,movewindow,d"
|
|
||||||
|
|
||||||
# Force opacity
|
|
||||||
"$shiftMainMod,o,exec, hl-no-opacity"
|
|
||||||
|
|
||||||
# mumble ptt click
|
|
||||||
# ",code:202,exec,mumble rpc starttalking"
|
|
||||||
#",code:202,pass,^(info\.mumble\.Mumble)$"
|
|
||||||
# ",code:202,exec,pamixer --default-source -u"
|
|
||||||
",code:202,pass,^discord$"
|
|
||||||
|
|
||||||
# worspace switching
|
|
||||||
"$mainMod,1,workspace,name:main 1"
|
|
||||||
"$mainMod,2,workspace,name:main 2"
|
|
||||||
"$mainMod,3,workspace,3"
|
|
||||||
"$mainMod,4,workspace,4"
|
|
||||||
"$mainMod,5,workspace,5"
|
|
||||||
"$mainMod,6,workspace,6"
|
|
||||||
];
|
|
||||||
|
|
||||||
exec-once = [
|
|
||||||
"waybar"
|
|
||||||
"hyprpaper & sleep 2 && randomwp"
|
|
||||||
"easyeffects --gapplication-service"
|
|
||||||
# "dunst"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
{
|
|
||||||
imports = [
|
|
||||||
./hyprland_magicman.nix
|
|
||||||
./waybar
|
|
||||||
./xdg.nix
|
|
||||||
./cursor.nix
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
{
|
|
||||||
imports = [
|
|
||||||
./hyprland_prismo.nix
|
|
||||||
./waybar
|
|
||||||
./xdg.nix
|
|
||||||
./cursor.nix
|
|
||||||
];
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user