1
1
Fork 1
mirror of https://github.com/oddlama/nix-config.git synced 2025-10-10 23:00:39 +02:00

feat: use correct portal for hyprland, add some hyprland keybinds

This commit is contained in:
oddlama 2024-06-09 16:50:23 +02:00
parent c15908f0c9
commit 17eceb2253
No known key found for this signature in database
GPG key ID: 14EFE510775FE39A
3 changed files with 178 additions and 147 deletions

View file

@ -47,13 +47,15 @@ in
enable = true;
xdgOpenUsePortal = true;
config.common = {
default = ["gtk"];
"org.freedesktop.impl.portal.Secret" = [
"gnome-keyring"
];
default = ["hyprland" "gtk"];
"org.freedesktop.impl.portal.Secret" = ["gnome-keyring"];
"org.freedesktop.impl.portal.ScreenCast" = ["hyprland"];
"org.freedesktop.impl.portal.Screenshot" = ["hyprland"];
"org.freedesktop.portal.FileChooser" = ["xdg-desktop-portal-gtk"];
};
extraPortals = [
pkgs.xdg-desktop-portal-hyprland
pkgs.xdg-desktop-portal-wlr
pkgs.xdg-desktop-portal-gtk
];
};

View file

@ -3,16 +3,28 @@
nixosConfig,
pkgs,
...
}: {
}: let
inherit
(lib)
concatMap
elem
flip
getExe
mkIf
mkMerge
optionals
;
in {
home.packages = with pkgs; [
wl-clipboard
];
wayland.windowManager.hyprland = {
enable = true;
settings = {
settings = mkMerge [
{
env =
lib.optionals (lib.elem "nvidia" nixosConfig.services.xserver.videoDrivers) [
optionals (elem "nvidia" nixosConfig.services.xserver.videoDrivers) [
# See https://wiki.hyprland.org/Nvidia/
"LIBVA_DRIVER_NAME,nvidia"
"XDG_SESSION_TYPE,wayland"
@ -30,6 +42,54 @@
"GDK_BACKEND,wayland"
];
bind =
[
"SUPER + CTRL + SHIFT,q,exit"
# Applications
"SUPER,code:49,exec,${getExe pkgs.rofi-wayland} -show drun" # SUPER+^
",Menu,exec,${getExe pkgs.rofi-wayland} -show drun"
"SUPER,t,exec,kitty"
"SUPER,b,exec,firefox"
# Shortcuts & Actions
#"SUPER + SHIFT,s,exec ${getExe pkgs.scripts.screenshot-area}"
#"SUPER,F11,exec ${getExe pkgs.scripts.screenshot-area-scan-qr}"
#"SUPER,F12,exec ${getExe pkgs.scripts.screenshot-screen}"
#"SUPER,Print,exec ${getExe pkgs.flameshot} gui"
# Per-window actions
"SUPER,q,killactive,"
"SUPER,return,fullscreen,"
"SUPER,f,togglefloating"
"SUPER,tab,cyclenext,"
"ALT,tab,cyclenext,"
"SUPER + SHIFT,tab,cyclenext,prev"
"ALT + SHIFT,tab,cyclenext,prev"
"SUPER,left,movefocus,l"
"SUPER,right,movefocus,r"
"SUPER,up,movefocus,u"
"SUPER,down,movefocus,d"
"SUPER + SHIFT,left,movewindow,l"
"SUPER + SHIFT,right,movewindow,r"
"SUPER + SHIFT,up,movewindow,u"
"SUPER + SHIFT,down,movewindow,d"
"SUPER,comma,workspace,-1"
"SUPER,period,workspace,+1"
"SUPER + SHIFT,comma,movetoworkspacesilent,-1"
"SUPER + SHIFT,period,movetoworkspacesilent,+1"
]
++ flip concatMap (map toString (lib.lists.range 1 9)) (
x: [
"SUPER,${x},workspace,${x}"
"SUPER + SHIFT,${x},movetoworkspacesilent,${x}"
]
);
bindm = [
# mouse movements
"SUPER, mouse:272, movewindow"
@ -50,42 +110,8 @@
];
};
decoration.rounding = 4;
# FIXME: TODO refactor and use mkmerge, this is ugly
monitor =
{
kroma = [
"DP-2, preferred, 0x0, 1"
"DP-3, preferred, -3840x0, 1"
"Unknown-1, disable"
];
nom = [
];
}
.${nixosConfig.node.name}
or [];
workspace =
{
kroma = [
"1, monitor:DP-2, default:true"
"2, monitor:DP-2"
"3, monitor:DP-2"
"4, monitor:DP-2"
"5, monitor:DP-2"
"6, monitor:DP-2"
"7, monitor:DP-3, default: true"
"8, monitor:DP-3"
"9, monitor:DP-3"
];
nom = [
];
}
.${nixosConfig.node.name}
or [];
cursor.no_warps = true;
decoration.rounding = 4;
input = {
kb_layout = "de";
@ -119,51 +145,54 @@
disable_hyprland_logo = true;
mouse_move_focuses_monitor = false;
};
};
extraConfig =
# TODO: env = WLR_DRM_NO_ATOMIC,1
''
}
(mkIf (nixosConfig.node.name == "kroma") {
monitor = [
"DP-2, preferred, 0x0, 1"
"DP-3, preferred, -3840x0, 1"
# Thank you NVIDIA for this generous, free-of-charge, extra monitor that
# doesn't exist and crashes yoru session sometimes when moving a window to it.
"Unknown-1, disable"
];
windowrulev2 = [
"workspace 1,class:^(firefox)$"
"workspace 5,class:^(bottles)$"
"workspace 5,class:^(steam)$"
"workspace 5,class:^(prismlauncher)$"
"workspace 7,class:^(discord)$"
"workspace 7,class:^(WebCord)$"
"workspace 7,class:^(obsidian)$"
"workspace 7,class:^(Signal)$"
"workspace 7,class:^(TelegramDesktop)$"
];
workspace = [
"1, monitor:DP-2, default:true"
"2, monitor:DP-2"
"3, monitor:DP-2"
"4, monitor:DP-2"
"5, monitor:DP-2"
"6, monitor:DP-2"
"7, monitor:DP-3, default: true"
"8, monitor:DP-3"
"9, monitor:DP-3"
];
})
(mkIf (nixosConfig.node.name == "nom") {
monitor = [
];
workspace = [
];
})
];
extraConfig = ''
windowrulev2 = immediate, class:^(cs2)$
binds {
focus_preferred_method = 1
}
# keybinds
bind=SUPER,q,killactive,
bind=SUPER,return,fullscreen,
bind=SUPER,f,togglefloating
bind=SUPER,tab,cyclenext,
bind=ALT,tab,cyclenext,
bind=,Menu,exec,rofi -show drun
bind=SUPER,left,movefocus,l
bind=SUPER,right,movefocus,r
bind=SUPER,up,movefocus,u
bind=SUPER,down,movefocus,d
bind=SUPER + SHIFT,left,movewindow,l
bind=SUPER + SHIFT,right,movewindow,r
bind=SUPER + SHIFT,up,movewindow,u
bind=SUPER + SHIFT,down,movewindow,d
bindm=SUPER,mouse:272,movewindow
bind=SUPER,comma,workspace,-1
bind=SUPER,period,workspace,+1
bind=SUPER,b,exec,firefox
bind=SUPER,t,exec,kitty
bind=SUPER + CTRL + SHIFT,q,exit
''
+ builtins.concatStringsSep "\n" (
map (
x: ''
bind=SUPER,${x},workspace,${x}
bind=SUPER + SHIFT,${x},movetoworkspacesilent,${x}
''
)
(map toString (lib.lists.range 1 9))
);
'';
};
}

View file

@ -42,7 +42,7 @@
qt = {
enable = true;
style.name = "kvantum";
platformTheme = "qtct";
platformTheme.name = "qtct";
};
xdg.configFile."Kvantum/kvantum.kvconfig".text = "theme=Base16Kvantum";