171 lines
3.9 KiB
Nix
171 lines
3.9 KiB
Nix
{ config, pkgs, lib, ... }:
|
|
|
|
let
|
|
cfg = config.local.window-manager.hyprland;
|
|
|
|
easyfocus = pkgs.callPackage ./easyfocus-hyprland.nix { };
|
|
in
|
|
{
|
|
options.local.window-manager.hyprland = with lib; {
|
|
enable = mkEnableOption "hyprland window manager";
|
|
};
|
|
|
|
config = lib.mkIf cfg.enable {
|
|
home.packages = with pkgs.unstable; [
|
|
wl-clipboard
|
|
dmenu-wayland
|
|
];
|
|
|
|
xdg.configFile."easyfocus-hyprland/config.yaml".text = ''
|
|
chars: 'aoeuhtns'
|
|
|
|
window_background_color: '1d1f21'
|
|
window_background_opacity: 0.2
|
|
|
|
label_background_color: '1d1f21'
|
|
label_background_opacity: 1.0
|
|
label_text_color: 'c5c8c6'
|
|
|
|
focused_background_color: '285577'
|
|
focused_background_opacity: 1.0
|
|
focused_text_color: 'ffffff'
|
|
|
|
font_family: monospace
|
|
font_weight: bold
|
|
font_size: 60px
|
|
|
|
label_padding_x: 16
|
|
label_padding_y: 16
|
|
label_border_radius: 4
|
|
label_margin_x: 4
|
|
label_margin_y: 50
|
|
'';
|
|
|
|
wayland.windowManager.hyprland = {
|
|
enable = true;
|
|
package = pkgs.unstable.hyprland;
|
|
systemd.enable = true;
|
|
xwayland.enable = true;
|
|
|
|
settings = {
|
|
# monitors
|
|
|
|
monitor = ",preferred,auto,1";
|
|
|
|
# env
|
|
|
|
env = [
|
|
"XCURSOR_SIZE,24"
|
|
"HYPRCURSOR_SIZE,24"
|
|
];
|
|
|
|
# look and feel
|
|
|
|
general = {
|
|
gaps_in = 5;
|
|
gaps_out = 20;
|
|
|
|
border_size = 1;
|
|
|
|
"col.active_border" = "rgba(33ccffee) rgba(00ff99ee) 45deg";
|
|
"col.inactive_border" = "rgba(595959aa)";
|
|
|
|
resize_on_border = false;
|
|
|
|
allow_tearing = false;
|
|
|
|
layout = "master";
|
|
};
|
|
|
|
decoration = {
|
|
rounding = 5;
|
|
|
|
active_opacity = 1.0;
|
|
inactive_opacity = 1.0;
|
|
|
|
drop_shadow = false;
|
|
|
|
blur = {
|
|
enabled = false;
|
|
};
|
|
};
|
|
|
|
animations = {
|
|
enabled = false;
|
|
|
|
};
|
|
|
|
master = {
|
|
orientation = "top";
|
|
new_is_master = false;
|
|
};
|
|
|
|
gestures = {
|
|
workspace_swipe = false;
|
|
};
|
|
|
|
xwayland = {
|
|
force_zero_scaling = true;
|
|
};
|
|
|
|
"$terminal" = "wezterm start";
|
|
"$browser" = "librewolf";
|
|
"$menu" = "dmenu-wl_run";
|
|
|
|
"$m1" = "ALT_L";
|
|
"$m4" = "MOD4";
|
|
|
|
bind = lib.flatten [
|
|
# programs
|
|
"$m1 SHIFT, Return, exec, $terminal"
|
|
"$m1 SHIFT, B, exec, $browser"
|
|
"$m1 SHIFT, S, exec, flameshot gui"
|
|
"$m1, P, exec, $menu"
|
|
|
|
# focus
|
|
(lib.flip lib.mapAttrsToList { k = "prev"; j = "next"; } (k: d: [
|
|
"$m1, ${k}, layoutmsg, cycle${d}"
|
|
"$m1 SHIFT, ${k}, layoutmsg, swap${d}"
|
|
]))
|
|
"$m1, Return, layoutmsg, swapwithmaster, master"
|
|
"$m1, S, exec, ${easyfocus}/bin/easyfocus-hyprland"
|
|
# comma (,)
|
|
"$m1, code:44, layoutmsg, addmaster"
|
|
# period (.)
|
|
"$m1, code:46, layoutmsg, removemaster"
|
|
|
|
# windows
|
|
"$m4 SHIFT, C, killactive"
|
|
"$m1, Space, fullscreen, 0"
|
|
|
|
# workspaces
|
|
(lib.flip map [ 1 2 3 4 5 6 7 8 9 0 ] (i:
|
|
let wid = if i == 0 then 10 else i; in
|
|
[
|
|
# switch warkspaces with mod + [0-9]
|
|
"$m1, ${toString i}, workspace, ${toString wid}"
|
|
# move active window to a workspace with mod + shift + [0-9]
|
|
"$m1 SHIFT, ${toString i}, movetoworkspacesilent, ${toString wid}"
|
|
]
|
|
))
|
|
|
|
# system
|
|
"$m4, L, exec, waylock"
|
|
"$m4 SHIFT, Q, exit"
|
|
];
|
|
|
|
bindm = [
|
|
"$m1, mouse:272, movewindow"
|
|
"$m1, mouse:273, resizewindow"
|
|
];
|
|
|
|
input = let kb = config.home.keyboard; in {
|
|
kb_model = kb.model;
|
|
kb_layout = kb.layout;
|
|
kb_variant = kb.variant;
|
|
kb_options = lib.head kb.options;
|
|
};
|
|
};
|
|
};
|
|
};
|
|
}
|