added monitor and workspace configuration options to my hyprland config
This commit is contained in:
@@ -12,7 +12,11 @@
|
|||||||
homeFiles.enable = true;
|
homeFiles.enable = true;
|
||||||
|
|
||||||
# modules/home/environment
|
# modules/home/environment
|
||||||
hyprlandConfig.enable = true;
|
hyprlandConfig = {
|
||||||
|
enable = true;
|
||||||
|
monitorNames = [ "HDMI-A-1" "DP-1" ];
|
||||||
|
workspaceLayout = "dualmonitor";
|
||||||
|
};
|
||||||
autojumpConfig.enable = true;
|
autojumpConfig.enable = true;
|
||||||
stylixHomeConfig.enable = true;
|
stylixHomeConfig.enable = true;
|
||||||
waybarConfig.enable = true;
|
waybarConfig.enable = true;
|
||||||
|
|||||||
@@ -12,7 +12,11 @@
|
|||||||
homeFiles.enable = true;
|
homeFiles.enable = true;
|
||||||
|
|
||||||
# modules/home/environment
|
# modules/home/environment
|
||||||
hyprlandConfig.enable = true;
|
hyprlandConfig = {
|
||||||
|
enable = true;
|
||||||
|
workspaceLayout = "singlemonitor";
|
||||||
|
monitorNames = [ "eDP-1" ];
|
||||||
|
};
|
||||||
autojumpConfig.enable = true;
|
autojumpConfig.enable = true;
|
||||||
stylixHomeConfig.enable = true;
|
stylixHomeConfig.enable = true;
|
||||||
waybarConfig.enable = true;
|
waybarConfig.enable = true;
|
||||||
|
|||||||
@@ -14,40 +14,4 @@
|
|||||||
./scripts
|
./scripts
|
||||||
./files.nix
|
./files.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
movOpts = {
|
|
||||||
# ./files
|
|
||||||
homeFiles.enable = lib.mkDefault false;
|
|
||||||
|
|
||||||
# ./environment
|
|
||||||
hyprlandConfig.enable = lib.mkDefault false;
|
|
||||||
autojumpConfig.enable = lib.mkDefault false;
|
|
||||||
stylixHomeConfig.enable = lib.mkDefault false;
|
|
||||||
waybarConfig.enable = lib.mkDefault false;
|
|
||||||
gtkConfig.enable = lib.mkDefault false;
|
|
||||||
spicetifyConfig.enable = lib.mkDefault false;
|
|
||||||
starshipConfig.enable = lib.mkDefault false;
|
|
||||||
|
|
||||||
# ./programs
|
|
||||||
btopConfig.enable = lib.mkDefault false;
|
|
||||||
swayncConfig.enable = lib.mkDefault false;
|
|
||||||
userPkgs.enable = lib.mkDefault false;
|
|
||||||
cavaConfig.enable = lib.mkDefault false;
|
|
||||||
ezaConfig.enable = lib.mkDefault false;
|
|
||||||
firefoxConfig.enable = lib.mkDefault false;
|
|
||||||
fuzzelConfig.enable = lib.mkDefault false;
|
|
||||||
fzfConfig.enable = lib.mkDefault false;
|
|
||||||
gitConfig.enable = lib.mkDefault false;
|
|
||||||
kittyConfig.enable = lib.mkDefault false;
|
|
||||||
yaziConfig.enable = lib.mkDefault false;
|
|
||||||
zshConfig.enable = lib.mkDefault false;
|
|
||||||
passConfig.enable = lib.mkDefault false;
|
|
||||||
batConfig.enable = lib.mkDefault false;
|
|
||||||
|
|
||||||
# ./scripts
|
|
||||||
movScripts.enable = lib.mkDefault false;
|
|
||||||
movScripts.commandScripts.enable = lib.mkDefault false;
|
|
||||||
movScripts.hyprlandControls.enable = lib.mkDefault false;
|
|
||||||
movScripts.nixShortcuts.enable = lib.mkDefault false;
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,20 +1,32 @@
|
|||||||
{inputs, pkgs, lib, config, self, host, ... }: let
|
{ inputs, pkgs, lib, config, self, host, ... }:
|
||||||
|
let
|
||||||
desktop = host == "oganesson";
|
desktop = host == "oganesson";
|
||||||
screenshot_bind =
|
screenshot_bind = if desktop then
|
||||||
if desktop
|
[ "super, print, exec, grimblast copy area" ]
|
||||||
then [
|
else
|
||||||
"super, print, exec, grimblast copy area"
|
[
|
||||||
]
|
|
||||||
else [
|
|
||||||
# My laptop does not have a printscreen button
|
# My laptop does not have a printscreen button
|
||||||
"super, insert, exec, grimblast copy area"
|
"super, insert, exec, grimblast copy area"
|
||||||
];
|
];
|
||||||
scheme = config.lib.stylix.colors;
|
scheme = config.lib.stylix.colors;
|
||||||
|
mons = config.movOpts.hyprlandConfig.monitorNames;
|
||||||
|
|
||||||
in {
|
in {
|
||||||
|
|
||||||
options = {
|
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 {
|
config = lib.mkIf config.movOpts.hyprlandConfig.enable {
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
@@ -29,25 +41,20 @@ in {
|
|||||||
wayland
|
wayland
|
||||||
direnv
|
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 = {
|
wayland.windowManager.hyprland = {
|
||||||
enable = true;
|
enable = true;
|
||||||
xwayland = {
|
xwayland = { enable = true; };
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
systemd.enable = true;
|
systemd.enable = true;
|
||||||
};
|
};
|
||||||
wayland.windowManager.hyprland = {
|
wayland.windowManager.hyprland = {
|
||||||
settings = {
|
settings = {
|
||||||
monitor =
|
monitor = if (host == "oganesson") then [
|
||||||
if (host == "oganesson")
|
|
||||||
then [
|
|
||||||
"DP-1, 1920x1080@144, 1920x0, 1"
|
"DP-1, 1920x1080@144, 1920x0, 1"
|
||||||
"HDMI-A-1, 1920x1080, 0x0, 1"
|
"HDMI-A-1, 1920x1080, 0x0, 1"
|
||||||
]
|
] else
|
||||||
else [
|
[ "eDP-1, 1600x900, 0x0, 1" ];
|
||||||
"eDP-1, 1600x900, 0x0, 1"
|
|
||||||
];
|
|
||||||
|
|
||||||
exec-once = [
|
exec-once = [
|
||||||
"waybar &"
|
"waybar &"
|
||||||
@@ -62,35 +69,34 @@ in {
|
|||||||
];
|
];
|
||||||
|
|
||||||
workspace =
|
workspace =
|
||||||
if desktop
|
if (config.movOpts.hyprlandConfig.workspaceLayout == "dualmonitor") then [
|
||||||
then [
|
"1,persistent=true,monitor:${builtins.elemAt mons 0}"
|
||||||
"1,persistent=true,monitor:HDMI-A-1"
|
"2,persistent=true,monitor:${builtins.elemAt mons 0}"
|
||||||
"2,persistent=true,monitor:HDMI-A-1"
|
"3,persistent=true,monitor:${builtins.elemAt mons 0}"
|
||||||
"3,persistent=true,monitor:HDMI-A-1"
|
"4,persistent=true,monitor:${builtins.elemAt mons 1}"
|
||||||
"4,persistent=true,monitor:DP-1"
|
"5,persistent=true,monitor:${builtins.elemAt mons 1}"
|
||||||
"5,persistent=true,monitor:DP-1"
|
"6,persistent=true,monitor:${builtins.elemAt mons 1}"
|
||||||
"6,persistent=true,monitor:DP-1"
|
] else if (config.movOpts.hyprlandConfig.workspaceLayout == "singlemonitor") then [
|
||||||
]
|
"1,persistent=true,monitor:${builtins.elemAt mons 0} "
|
||||||
else [
|
"2,persistent=true,monitor:${builtins.elemAt mons 0}"
|
||||||
"1,persistent=true,monitor:eDP-1"
|
"3,persistent=true,monitor:${builtins.elemAt mons 0}"
|
||||||
"2,persistent=true,monitor:eDP-1"
|
"4,persistent=true,monitor:${builtins.elemAt mons 0}"
|
||||||
"3,persistent=true,monitor:eDP-1"
|
] else if (config.movOpts.hyprlandConfig.workspaceLayout == "trimonitor") then [
|
||||||
"4,persistent=true,monitor:eDP-1"
|
"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 = [
|
env = [
|
||||||
"XDG_CONFIG_HOME,$HOME/.config"
|
"XDG_CONFIG_HOME,$HOME/.config"
|
||||||
"XDG_DATA_HOME,$HOME/.local/share"
|
"XDG_DATA_HOME,$HOME/.local/share"
|
||||||
"XDG_CACHE_HOME,$HOME/.cache"
|
"XDG_CACHE_HOME,$HOME/.cache"
|
||||||
];
|
];
|
||||||
layerrule = [
|
layerrule = [ "blur,waybar" "ignorezero,waybar" "blur,launcher" ];
|
||||||
"blur,waybar"
|
windowrule = [ "opacity 0.8,nemo" ];
|
||||||
"ignorezero,waybar"
|
|
||||||
"blur,launcher"
|
|
||||||
];
|
|
||||||
windowrule = [
|
|
||||||
"opacity 0.8,nemo"
|
|
||||||
];
|
|
||||||
|
|
||||||
input = {
|
input = {
|
||||||
kb_layout = "us";
|
kb_layout = "us";
|
||||||
@@ -146,7 +152,7 @@ in {
|
|||||||
size = 2;
|
size = 2;
|
||||||
passes = 1;
|
passes = 1;
|
||||||
brightness = 1;
|
brightness = 1;
|
||||||
contrast = 1.400;
|
contrast = 1.4;
|
||||||
ignore_opacity = true;
|
ignore_opacity = true;
|
||||||
popups = true;
|
popups = true;
|
||||||
noise = 0;
|
noise = 0;
|
||||||
@@ -189,8 +195,7 @@ in {
|
|||||||
"workspaces, 1, 4, easeOutCubic, fade" # styles: slide, slidevert, fade, slidefade, slidefadevert
|
"workspaces, 1, 4, easeOutCubic, fade" # styles: slide, slidevert, fade, slidefade, slidefadevert
|
||||||
];
|
];
|
||||||
|
|
||||||
bind =
|
bind = [
|
||||||
[
|
|
||||||
"super, up, exec, pactl set-sink-volume @default_sink@ +10%"
|
"super, up, exec, pactl set-sink-volume @default_sink@ +10%"
|
||||||
"super, down, 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, t, exec, swaync-client -t -sw"
|
||||||
@@ -229,12 +234,9 @@ in {
|
|||||||
"super shift, 6, movetoworkspace, 6"
|
"super shift, 6, movetoworkspace, 6"
|
||||||
"super, s, togglespecialworkspace, magic"
|
"super, s, togglespecialworkspace, magic"
|
||||||
"super shift, s, movetoworkspace, special:magic"
|
"super shift, s, movetoworkspace, special:magic"
|
||||||
]
|
] ++ screenshot_bind;
|
||||||
++ screenshot_bind;
|
bindm =
|
||||||
bindm = [
|
[ "super, mouse:272, movewindow" "super, mouse:273, resizewindow" ];
|
||||||
"super, mouse:272, movewindow"
|
|
||||||
"super, mouse:273, resizewindow"
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -13,14 +13,17 @@ let
|
|||||||
"6" = "六";
|
"6" = "六";
|
||||||
};
|
};
|
||||||
persistent-workspaces =
|
persistent-workspaces =
|
||||||
if desktop
|
if (config.movOpts.hyprlandConfig.workspaceLayout == "singlemonitor") then {
|
||||||
then {
|
"${builtins.elemAt monitors 0}" = [ 1 2 3 4 ];
|
||||||
"HDMI-A-1" = [1 2 3];
|
} else if (config.movOpts.hyprlandConfig.workspaceLayout == "dualmonitor") then {
|
||||||
"DP-1" = [4 5 6];
|
"${builtins.elemAt monitors 0}" = [ 1 2 3 ];
|
||||||
}
|
"${builtins.elemAt monitors 1}" = [ 4 5 6 ];
|
||||||
else {
|
} else if (config.movOpts.hyprlandConfig.workspaceLayout == "trimonitor") then {
|
||||||
"eDP-1" = [1 2 3 4];
|
"${builtins.elemAt monitors 2}" = [ 1 2 ];
|
||||||
};
|
"${builtins.elemAt monitors 1}" = [ 3 4 ];
|
||||||
|
"${builtins.elemAt monitors 0}" = [ 5 6 ];
|
||||||
|
} else {};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
scheme = config.lib.stylix.colors;
|
scheme = config.lib.stylix.colors;
|
||||||
@@ -46,15 +49,7 @@ let
|
|||||||
color6 = scheme.base0E;
|
color6 = scheme.base0E;
|
||||||
color7 = scheme.base0F;
|
color7 = scheme.base0F;
|
||||||
};
|
};
|
||||||
monitors =
|
monitors = config.movOpts.hyprlandConfig.monitorNames;
|
||||||
if desktop
|
|
||||||
then [
|
|
||||||
"DP-1"
|
|
||||||
"HDMI-A-1"
|
|
||||||
]
|
|
||||||
else [
|
|
||||||
"eDP-1"
|
|
||||||
];
|
|
||||||
in {
|
in {
|
||||||
options = {
|
options = {
|
||||||
movOpts.waybarConfig.enable = lib.mkEnableOption "enables my waybar configuration";
|
movOpts.waybarConfig.enable = lib.mkEnableOption "enables my waybar configuration";
|
||||||
@@ -68,7 +63,7 @@ in {
|
|||||||
settings = {
|
settings = {
|
||||||
mainBar = {
|
mainBar = {
|
||||||
layer = "bottom";
|
layer = "bottom";
|
||||||
output = builtins.elemAt monitors 0;
|
output = builtins.elemAt monitors 1;
|
||||||
position = "top";
|
position = "top";
|
||||||
name = "mainBar";
|
name = "mainBar";
|
||||||
margin-left = 8;
|
margin-left = 8;
|
||||||
@@ -242,8 +237,8 @@ in {
|
|||||||
layer = "bottom";
|
layer = "bottom";
|
||||||
output =
|
output =
|
||||||
if desktop
|
if desktop
|
||||||
then builtins.elemAt monitors 1
|
then builtins.elemAt monitors 0
|
||||||
else builtins.elemAt monitors 0;
|
else builtins.elemAt monitors 1;
|
||||||
position = "right";
|
position = "right";
|
||||||
margin-top = 8;
|
margin-top = 8;
|
||||||
margin-right = 5;
|
margin-right = 5;
|
||||||
|
|||||||
@@ -24,31 +24,18 @@ pkgs.writeShellApplication {
|
|||||||
[ "$numresults" -eq 0 ] && echo "$1 not found in ${nixpkgs_toplevel}/pkgs" && exit 1
|
[ "$numresults" -eq 0 ] && echo "$1 not found in ${nixpkgs_toplevel}/pkgs" && exit 1
|
||||||
|
|
||||||
if [ "$numresults" -gt 1 ]; then
|
if [ "$numresults" -gt 1 ]; then
|
||||||
# Trim the path to show only package directory and .nix file (e.g., package/default.nix)
|
|
||||||
results=$(echo "$results" | awk -F"${nixpkgs_toplevel}/pkgs/" '{print $2}')
|
results=$(echo "$results" | awk -F"${nixpkgs_toplevel}/pkgs/" '{print $2}')
|
||||||
|
|
||||||
file=$(echo "$results" | fzf)
|
file=$(echo "$results" | fzf)
|
||||||
|
|
||||||
full_path="${nixpkgs_toplevel}/pkgs/$file"
|
full_path="${nixpkgs_toplevel}/pkgs/$file"
|
||||||
|
|
||||||
# Check if the file contains any non-UTF-8 characters
|
|
||||||
if grep --color='auto' -P -q "[^\x00-\x7F]" "$full_path"; then
|
|
||||||
NIXD_FLAGS="--semantic-tokens=false" nvim "$full_path"
|
|
||||||
else
|
|
||||||
nvim "$full_path"
|
nvim "$full_path"
|
||||||
fi
|
|
||||||
|
|
||||||
else
|
else
|
||||||
# Trim the path for the single result case
|
|
||||||
result_path=$(echo "$results" | awk -F"${nixpkgs_toplevel}/pkgs/" '{print $2}')
|
result_path=$(echo "$results" | awk -F"${nixpkgs_toplevel}/pkgs/" '{print $2}')
|
||||||
full_path="${nixpkgs_toplevel}/pkgs/$result_path"
|
full_path="${nixpkgs_toplevel}/pkgs/$result_path"
|
||||||
|
|
||||||
# Check if the file contains any non-UTF-8 characters
|
|
||||||
if grep --color='auto' -P -q "[^\x00-\x7F]" "$full_path"; then
|
|
||||||
NIXD_FLAGS="--semantic-tokens=false" nvim "$full_path"
|
|
||||||
else
|
|
||||||
nvim "$full_path"
|
nvim "$full_path"
|
||||||
fi
|
fi
|
||||||
fi
|
|
||||||
'';
|
'';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,20 +13,4 @@
|
|||||||
./software
|
./software
|
||||||
./environment
|
./environment
|
||||||
];
|
];
|
||||||
|
|
||||||
movOpts = {
|
|
||||||
networkModule.enable = lib.mkDefault false;
|
|
||||||
nixSettings.enable = lib.mkDefault false;
|
|
||||||
bootLoader.enable = lib.mkDefault false;
|
|
||||||
issue.enable = lib.mkDefault false;
|
|
||||||
sddmConfig.enable = lib.mkDefault false;
|
|
||||||
stylixConfig.enable = lib.mkDefault false;
|
|
||||||
gamingPkgs.enable = lib.mkDefault false;
|
|
||||||
steamConfig.enable = lib.mkDefault false;
|
|
||||||
sysPkgs.enable = lib.mkDefault false;
|
|
||||||
sysProgs.enable = lib.mkDefault false;
|
|
||||||
sysServices.enable = lib.mkDefault false;
|
|
||||||
virtConfig.enable = lib.mkDefault false;
|
|
||||||
powerProfiles.enable = lib.mkDefault false;
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user