added monitor and workspace configuration options to my hyprland config
This commit is contained in:
@@ -1,20 +1,32 @@
|
||||
{inputs, pkgs, lib, config, self, host, ... }: let
|
||||
{ inputs, pkgs, lib, config, self, host, ... }:
|
||||
let
|
||||
desktop = host == "oganesson";
|
||||
screenshot_bind =
|
||||
if desktop
|
||||
then [
|
||||
"super, print, exec, grimblast copy area"
|
||||
]
|
||||
else [
|
||||
screenshot_bind = if desktop then
|
||||
[ "super, print, exec, grimblast copy area" ]
|
||||
else
|
||||
[
|
||||
# My laptop does not have a printscreen button
|
||||
"super, insert, exec, grimblast copy area"
|
||||
];
|
||||
scheme = config.lib.stylix.colors;
|
||||
mons = config.movOpts.hyprlandConfig.monitorNames;
|
||||
|
||||
in {
|
||||
|
||||
options = {
|
||||
movOpts.hyprlandConfig.enable = lib.mkEnableOption "enables my hyprland config";
|
||||
movOpts.hyprlandConfig = {
|
||||
enable = lib.mkEnableOption "enables my hyprland config";
|
||||
workspaceLayout = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "dualmonitor";
|
||||
};
|
||||
monitorNames = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.str;
|
||||
# The order of the monitor names matters for the purpose of workspace assignment
|
||||
# For instance, in a dual monitor setup, index 0 gets 4,5 and 6, while index 1 gets 1,2 and 3
|
||||
default = [ "DP-1" "HDMI-A-1" ];
|
||||
};
|
||||
};
|
||||
};
|
||||
config = lib.mkIf config.movOpts.hyprlandConfig.enable {
|
||||
home.packages = with pkgs; [
|
||||
@@ -29,25 +41,20 @@ in {
|
||||
wayland
|
||||
direnv
|
||||
];
|
||||
systemd.user.targets.hyprland-session.Unit.Wants = ["xdg-desktop-autostart.target"];
|
||||
systemd.user.targets.hyprland-session.Unit.Wants =
|
||||
[ "xdg-desktop-autostart.target" ];
|
||||
wayland.windowManager.hyprland = {
|
||||
enable = true;
|
||||
xwayland = {
|
||||
enable = true;
|
||||
};
|
||||
xwayland = { enable = true; };
|
||||
systemd.enable = true;
|
||||
};
|
||||
wayland.windowManager.hyprland = {
|
||||
settings = {
|
||||
monitor =
|
||||
if (host == "oganesson")
|
||||
then [
|
||||
"DP-1, 1920x1080@144, 1920x0, 1"
|
||||
"HDMI-A-1, 1920x1080, 0x0, 1"
|
||||
]
|
||||
else [
|
||||
"eDP-1, 1600x900, 0x0, 1"
|
||||
];
|
||||
monitor = if (host == "oganesson") then [
|
||||
"DP-1, 1920x1080@144, 1920x0, 1"
|
||||
"HDMI-A-1, 1920x1080, 0x0, 1"
|
||||
] else
|
||||
[ "eDP-1, 1600x900, 0x0, 1" ];
|
||||
|
||||
exec-once = [
|
||||
"waybar &"
|
||||
@@ -62,35 +69,34 @@ in {
|
||||
];
|
||||
|
||||
workspace =
|
||||
if desktop
|
||||
then [
|
||||
"1,persistent=true,monitor:HDMI-A-1"
|
||||
"2,persistent=true,monitor:HDMI-A-1"
|
||||
"3,persistent=true,monitor:HDMI-A-1"
|
||||
"4,persistent=true,monitor:DP-1"
|
||||
"5,persistent=true,monitor:DP-1"
|
||||
"6,persistent=true,monitor:DP-1"
|
||||
]
|
||||
else [
|
||||
"1,persistent=true,monitor:eDP-1"
|
||||
"2,persistent=true,monitor:eDP-1"
|
||||
"3,persistent=true,monitor:eDP-1"
|
||||
"4,persistent=true,monitor:eDP-1"
|
||||
];
|
||||
if (config.movOpts.hyprlandConfig.workspaceLayout == "dualmonitor") then [
|
||||
"1,persistent=true,monitor:${builtins.elemAt mons 0}"
|
||||
"2,persistent=true,monitor:${builtins.elemAt mons 0}"
|
||||
"3,persistent=true,monitor:${builtins.elemAt mons 0}"
|
||||
"4,persistent=true,monitor:${builtins.elemAt mons 1}"
|
||||
"5,persistent=true,monitor:${builtins.elemAt mons 1}"
|
||||
"6,persistent=true,monitor:${builtins.elemAt mons 1}"
|
||||
] else if (config.movOpts.hyprlandConfig.workspaceLayout == "singlemonitor") then [
|
||||
"1,persistent=true,monitor:${builtins.elemAt mons 0} "
|
||||
"2,persistent=true,monitor:${builtins.elemAt mons 0}"
|
||||
"3,persistent=true,monitor:${builtins.elemAt mons 0}"
|
||||
"4,persistent=true,monitor:${builtins.elemAt mons 0}"
|
||||
] else if (config.movOpts.hyprlandConfig.workspaceLayout == "trimonitor") then [
|
||||
"1,persistent=true,monitor:${builtins.elemAt mons 2}"
|
||||
"2,persistent=true,monitor:${builtins.elemAt mons 2}"
|
||||
"3,persistent=true,monitor:${builtins.elemAt mons 1}"
|
||||
"4,persistent=true,monitor:${builtins.elemAt mons 1}"
|
||||
"5,persistent=true,monitor:${builtins.elemAt mons 0}"
|
||||
"6,persistent=true,monitor:${builtins.elemAt mons 0}"
|
||||
] else [];
|
||||
|
||||
env = [
|
||||
"XDG_CONFIG_HOME,$HOME/.config"
|
||||
"XDG_DATA_HOME,$HOME/.local/share"
|
||||
"XDG_CACHE_HOME,$HOME/.cache"
|
||||
];
|
||||
layerrule = [
|
||||
"blur,waybar"
|
||||
"ignorezero,waybar"
|
||||
"blur,launcher"
|
||||
];
|
||||
windowrule = [
|
||||
"opacity 0.8,nemo"
|
||||
];
|
||||
layerrule = [ "blur,waybar" "ignorezero,waybar" "blur,launcher" ];
|
||||
windowrule = [ "opacity 0.8,nemo" ];
|
||||
|
||||
input = {
|
||||
kb_layout = "us";
|
||||
@@ -146,7 +152,7 @@ in {
|
||||
size = 2;
|
||||
passes = 1;
|
||||
brightness = 1;
|
||||
contrast = 1.400;
|
||||
contrast = 1.4;
|
||||
ignore_opacity = true;
|
||||
popups = true;
|
||||
noise = 0;
|
||||
@@ -189,52 +195,48 @@ in {
|
||||
"workspaces, 1, 4, easeOutCubic, fade" # styles: slide, slidevert, fade, slidefade, slidefadevert
|
||||
];
|
||||
|
||||
bind =
|
||||
[
|
||||
"super, up, exec, pactl set-sink-volume @default_sink@ +10%"
|
||||
"super, down, exec, pactl set-sink-volume @default_sink@ -10%"
|
||||
"super, t, exec, swaync-client -t -sw"
|
||||
"super, a, exec, firefox"
|
||||
"super, q, exec, kitty --title Kitty"
|
||||
"super shift, q, exec, [float;size 40% 30%;move onscreen cursor -50% -50%] kitty --title Kitty"
|
||||
"super, c, killactive,"
|
||||
"super, e, exec, nemo"
|
||||
"super, p, exec, [float;size 40% 25%;move onscreen cursor] [ ! -f /tmp/keyringfile ] && kitty toolbelt"
|
||||
"super shift, m, exit,"
|
||||
"super, m, exec, fuzzel"
|
||||
"super, r, exec, neovide"
|
||||
"super, b, togglesplit, # dwindle"
|
||||
"super, f, togglefloating"
|
||||
"super, g, fullscreen"
|
||||
"super, h, movefocus, l"
|
||||
"super, l, movefocus, r"
|
||||
"super, k, movefocus, u"
|
||||
"super, j, movefocus, d"
|
||||
"super shift, h, movewindow, l"
|
||||
"super shift, l, movewindow, r"
|
||||
"super shift, k, movewindow, u"
|
||||
"super shift, j, movewindow, d"
|
||||
"super, d, exec, switchmon"
|
||||
"super, 1, exec, hyprctl 'dispatch workspace 1'"
|
||||
"super, 2, exec, hyprctl 'dispatch workspace 2'"
|
||||
"super, 3, exec, hyprctl 'dispatch workspace 3'"
|
||||
"super, 4, exec, hyprctl 'dispatch workspace 4'"
|
||||
"super, 5, exec, hyprctl 'dispatch workspace 5'"
|
||||
"super, 6, exec, hyprctl 'dispatch workspace 6'"
|
||||
"super shift, 1, movetoworkspace, 1"
|
||||
"super shift, 2, movetoworkspace, 2"
|
||||
"super shift, 3, movetoworkspace, 3"
|
||||
"super shift, 4, movetoworkspace, 4"
|
||||
"super shift, 5, movetoworkspace, 5"
|
||||
"super shift, 6, movetoworkspace, 6"
|
||||
"super, s, togglespecialworkspace, magic"
|
||||
"super shift, s, movetoworkspace, special:magic"
|
||||
]
|
||||
++ screenshot_bind;
|
||||
bindm = [
|
||||
"super, mouse:272, movewindow"
|
||||
"super, mouse:273, resizewindow"
|
||||
];
|
||||
bind = [
|
||||
"super, up, exec, pactl set-sink-volume @default_sink@ +10%"
|
||||
"super, down, exec, pactl set-sink-volume @default_sink@ -10%"
|
||||
"super, t, exec, swaync-client -t -sw"
|
||||
"super, a, exec, firefox"
|
||||
"super, q, exec, kitty --title Kitty"
|
||||
"super shift, q, exec, [float;size 40% 30%;move onscreen cursor -50% -50%] kitty --title Kitty"
|
||||
"super, c, killactive,"
|
||||
"super, e, exec, nemo"
|
||||
"super, p, exec, [float;size 40% 25%;move onscreen cursor] [ ! -f /tmp/keyringfile ] && kitty toolbelt"
|
||||
"super shift, m, exit,"
|
||||
"super, m, exec, fuzzel"
|
||||
"super, r, exec, neovide"
|
||||
"super, b, togglesplit, # dwindle"
|
||||
"super, f, togglefloating"
|
||||
"super, g, fullscreen"
|
||||
"super, h, movefocus, l"
|
||||
"super, l, movefocus, r"
|
||||
"super, k, movefocus, u"
|
||||
"super, j, movefocus, d"
|
||||
"super shift, h, movewindow, l"
|
||||
"super shift, l, movewindow, r"
|
||||
"super shift, k, movewindow, u"
|
||||
"super shift, j, movewindow, d"
|
||||
"super, d, exec, switchmon"
|
||||
"super, 1, exec, hyprctl 'dispatch workspace 1'"
|
||||
"super, 2, exec, hyprctl 'dispatch workspace 2'"
|
||||
"super, 3, exec, hyprctl 'dispatch workspace 3'"
|
||||
"super, 4, exec, hyprctl 'dispatch workspace 4'"
|
||||
"super, 5, exec, hyprctl 'dispatch workspace 5'"
|
||||
"super, 6, exec, hyprctl 'dispatch workspace 6'"
|
||||
"super shift, 1, movetoworkspace, 1"
|
||||
"super shift, 2, movetoworkspace, 2"
|
||||
"super shift, 3, movetoworkspace, 3"
|
||||
"super shift, 4, movetoworkspace, 4"
|
||||
"super shift, 5, movetoworkspace, 5"
|
||||
"super shift, 6, movetoworkspace, 6"
|
||||
"super, s, togglespecialworkspace, magic"
|
||||
"super shift, s, movetoworkspace, special:magic"
|
||||
] ++ screenshot_bind;
|
||||
bindm =
|
||||
[ "super, mouse:272, movewindow" "super, mouse:273, resizewindow" ];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
@@ -13,14 +13,17 @@ let
|
||||
"6" = "六";
|
||||
};
|
||||
persistent-workspaces =
|
||||
if desktop
|
||||
then {
|
||||
"HDMI-A-1" = [1 2 3];
|
||||
"DP-1" = [4 5 6];
|
||||
}
|
||||
else {
|
||||
"eDP-1" = [1 2 3 4];
|
||||
};
|
||||
if (config.movOpts.hyprlandConfig.workspaceLayout == "singlemonitor") then {
|
||||
"${builtins.elemAt monitors 0}" = [ 1 2 3 4 ];
|
||||
} else if (config.movOpts.hyprlandConfig.workspaceLayout == "dualmonitor") then {
|
||||
"${builtins.elemAt monitors 0}" = [ 1 2 3 ];
|
||||
"${builtins.elemAt monitors 1}" = [ 4 5 6 ];
|
||||
} else if (config.movOpts.hyprlandConfig.workspaceLayout == "trimonitor") then {
|
||||
"${builtins.elemAt monitors 2}" = [ 1 2 ];
|
||||
"${builtins.elemAt monitors 1}" = [ 3 4 ];
|
||||
"${builtins.elemAt monitors 0}" = [ 5 6 ];
|
||||
} else {};
|
||||
|
||||
};
|
||||
|
||||
scheme = config.lib.stylix.colors;
|
||||
@@ -46,15 +49,7 @@ let
|
||||
color6 = scheme.base0E;
|
||||
color7 = scheme.base0F;
|
||||
};
|
||||
monitors =
|
||||
if desktop
|
||||
then [
|
||||
"DP-1"
|
||||
"HDMI-A-1"
|
||||
]
|
||||
else [
|
||||
"eDP-1"
|
||||
];
|
||||
monitors = config.movOpts.hyprlandConfig.monitorNames;
|
||||
in {
|
||||
options = {
|
||||
movOpts.waybarConfig.enable = lib.mkEnableOption "enables my waybar configuration";
|
||||
@@ -68,7 +63,7 @@ in {
|
||||
settings = {
|
||||
mainBar = {
|
||||
layer = "bottom";
|
||||
output = builtins.elemAt monitors 0;
|
||||
output = builtins.elemAt monitors 1;
|
||||
position = "top";
|
||||
name = "mainBar";
|
||||
margin-left = 8;
|
||||
@@ -242,8 +237,8 @@ in {
|
||||
layer = "bottom";
|
||||
output =
|
||||
if desktop
|
||||
then builtins.elemAt monitors 1
|
||||
else builtins.elemAt monitors 0;
|
||||
then builtins.elemAt monitors 0
|
||||
else builtins.elemAt monitors 1;
|
||||
position = "right";
|
||||
margin-top = 8;
|
||||
margin-right = 5;
|
||||
|
||||
Reference in New Issue
Block a user