new and impruved
This commit is contained in:
273
dots/hyprland.nix
Executable file
273
dots/hyprland.nix
Executable file
@@ -0,0 +1,273 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
window_manager,
|
||||
systemName,
|
||||
...
|
||||
}:
|
||||
let
|
||||
mod = "Alt";
|
||||
terminal = "footclient";
|
||||
fileManager = "pcmanfm";
|
||||
runner = "anyrun";
|
||||
browser = "zen-twilight";
|
||||
editor = "emacsclient -c";
|
||||
in
|
||||
{
|
||||
wayland = {
|
||||
windowManager = {
|
||||
hyprland = {
|
||||
enable = window_manager == "hyprland" || window_manager == "all";
|
||||
plugins = [
|
||||
pkgs.hyprlandPlugins.hyprsplit
|
||||
];
|
||||
settings = {
|
||||
# Autostart necessary processes (like notifications daemons, status bars, etc.)
|
||||
# Or execute your favorite apps at launch like this:
|
||||
exec-once =
|
||||
[
|
||||
"waybar"
|
||||
"${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1"
|
||||
"fcitx5 -d"
|
||||
"foot -s"
|
||||
]
|
||||
++ lib.optional (systemName == "laptop") "swaybg -o eDP-1 -i ${../assets/Wallpapers/138.png}"
|
||||
++
|
||||
lib.optional (systemName == "pc")
|
||||
"swaybg -o HDMI-A-1 -i ${../assets/Wallpapers/138.png} -o DP-1 -i ${../assets/Wallpapers/138.png}";
|
||||
|
||||
#plugins
|
||||
plugin = {
|
||||
hyprsplit = {
|
||||
num_workspaces = 9;
|
||||
persistent_workspaces = true;
|
||||
};
|
||||
};
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Monitors/
|
||||
monitor = lib.mkMerge [
|
||||
(lib.mkIf (systemName == "laptop") [ "eDP-1,1920x1080@59.99700,0x0,1" ])
|
||||
(lib.mkIf (systemName == "pc") [
|
||||
"HDMI-A-1,1920x1080@60,0x0,1"
|
||||
"DP-1,2560x1440@144,1920x0,1"
|
||||
])
|
||||
];
|
||||
|
||||
env = [
|
||||
"XCURSOR_SIZE, 24"
|
||||
"HYPRCURSOR_SIZE, 24"
|
||||
];
|
||||
# Refer to https://wiki.hyprland.org/Configuring/Variables/
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#general
|
||||
general = {
|
||||
gaps_in = 5;
|
||||
gaps_out = 20;
|
||||
border_size = 2;
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors
|
||||
#"col.active_border" = "rgba(33ccffee) rgba(00ff99ee) 45deg";
|
||||
#"col.inactive_border" = "rgba(595959aa)";
|
||||
# Set to true enable resizing windows by clicking and dragging on borders and gaps
|
||||
resize_on_border = false;
|
||||
# Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on
|
||||
allow_tearing = false;
|
||||
layout = "dwindle";
|
||||
};
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#decoration
|
||||
decoration = {
|
||||
rounding = 10;
|
||||
rounding_power = 2;
|
||||
# Change transparency of focused and unfocused windows
|
||||
active_opacity = 1.0;
|
||||
inactive_opacity = 1.0;
|
||||
shadow = {
|
||||
enabled = true;
|
||||
range = 4;
|
||||
render_power = 3;
|
||||
#color = "rgba(1a1a1aee)";
|
||||
};
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#blur
|
||||
blur = {
|
||||
enabled = true;
|
||||
size = 3;
|
||||
passes = 1;
|
||||
vibrancy = 0.1696;
|
||||
};
|
||||
};
|
||||
animations = {
|
||||
enabled = "yes, please :)";
|
||||
# Default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
|
||||
bezier = [
|
||||
"easeOutQuint,0.23,1,0.32,1"
|
||||
"easeInOutCubic,0.65,0.05,0.36,1"
|
||||
"linear,0,0,1,1"
|
||||
"almostLinear,0.5,0.5,0.75,1.0"
|
||||
"quick,0.15,0,0.1,1"
|
||||
];
|
||||
animation = [
|
||||
"global, 1, 10, default"
|
||||
"border, 1, 5.39, easeOutQuint"
|
||||
"windows, 1, 4.79, easeOutQuint"
|
||||
"windowsIn, 1, 4.1, easeOutQuint, popin 87%"
|
||||
"windowsOut, 1, 1.49, linear, popin 87%"
|
||||
"fadeIn, 1, 1.73, almostLinear"
|
||||
"fadeOut, 1, 1.46, almostLinear"
|
||||
"fade, 1, 3.03, quick"
|
||||
"layers, 1, 3.81, easeOutQuint"
|
||||
"layersIn, 1, 4, easeOutQuint, fade"
|
||||
"layersOut, 1, 1.5, linear, fade"
|
||||
"fadeLayersIn, 1, 1.79, almostLinear"
|
||||
"fadeLayersOut, 1, 1.39, almostLinear"
|
||||
"workspaces, 1, 1.94, almostLinear, fade"
|
||||
"workspacesIn, 1, 1.21, almostLinear, fade"
|
||||
"workspacesOut, 1, 1.94, almostLinear, fade"
|
||||
];
|
||||
};
|
||||
# Ref https://wiki.hyprland.org/Configuring/Workspace-Rules/
|
||||
# "Smart gaps" / "No gaps when only"
|
||||
# uncomment all if you wish to use that.
|
||||
# workspace = w[tv1], gapsout:0, gapsin:0
|
||||
# workspace = f[1], gapsout:0, gapsin:0
|
||||
# windowrule = bordersize 0, floating:0, onworkspace:w[tv1]
|
||||
# windowrule = rounding 0, floating:0, onworkspace:w[tv1]
|
||||
# windowrule = bordersize 0, floating:0, onworkspace:f[1]
|
||||
# windowrule = rounding 0, floating:0, onworkspace:f[1]
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
|
||||
dwindle = {
|
||||
pseudotile = true; # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
|
||||
preserve_split = true; # You probably want this
|
||||
force_split = 2;
|
||||
};
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
|
||||
master = {
|
||||
new_status = "master";
|
||||
};
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#misc
|
||||
misc = {
|
||||
force_default_wallpaper = -1; # Set to 0 or 1 to disable the anime mascot wallpapers
|
||||
disable_hyprland_logo = false; # If true disables the random hyprland logo / anime girl background. :(
|
||||
enable_swallow = true;
|
||||
swallow_regex = "foot";
|
||||
};
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#input
|
||||
input = {
|
||||
kb_layout = lib.mkMerge [
|
||||
(lib.mkIf (systemName == "laptop") "ie")
|
||||
(lib.mkIf (systemName == "pc") "us")
|
||||
];
|
||||
#kb_variant =
|
||||
#kb_model =
|
||||
#kb_options =
|
||||
#kb_rules =
|
||||
follow_mouse = 1;
|
||||
sensitivity = 0; # -1.0 - 1.0, 0 means no modification.
|
||||
touchpad = {
|
||||
natural_scroll = false;
|
||||
};
|
||||
};
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#gestures
|
||||
gestures = {
|
||||
workspace_swipe = true;
|
||||
};
|
||||
|
||||
# Example per-device config
|
||||
# See https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs for more
|
||||
device = {
|
||||
name = "epic-mouse-v1";
|
||||
sensitivity = -0.5;
|
||||
};
|
||||
|
||||
bind = [
|
||||
# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
|
||||
"${mod}, Return, exec, ${terminal}"
|
||||
"${mod}, B, exec, ${browser}"
|
||||
"${mod}, Q, killactive,"
|
||||
"${mod}, M, exit,"
|
||||
"${mod}, F, exec, ${fileManager}"
|
||||
"${mod}, V, togglefloating,"
|
||||
"${mod}, D, exec, ${runner}"
|
||||
"${mod}, E, exec, ${editor}"
|
||||
"SUPER_SHIFT, S, exec, grim -g \"$(slurp)\" - | swappy -f -"
|
||||
"${mod}, P, pseudo, " # dwindle
|
||||
"${mod}, J, togglesplit," # dwindle
|
||||
#focus with mainMod + arrow keys
|
||||
"${mod}, left, movefocus, l"
|
||||
"${mod}, right, movefocus, r"
|
||||
"${mod}, up, movefocus, u"
|
||||
"${mod}, down, movefocus, d"
|
||||
|
||||
# Switch workspaces with Mod + [0-9]
|
||||
"${mod}, 1, split:workspace, 1 "
|
||||
"${mod}, 2, split:workspace, 2 "
|
||||
"${mod}, 3, split:workspace, 3 "
|
||||
"${mod}, 4, split:workspace, 4 "
|
||||
"${mod}, 5, split:workspace, 5 "
|
||||
"${mod}, 6, split:workspace, 6 "
|
||||
"${mod}, 7, split:workspace, 7 "
|
||||
"${mod}, 8, split:workspace, 8 "
|
||||
"${mod}, 9, split:workspace, 9 "
|
||||
"${mod}, 0, split:workspace, 10"
|
||||
# Move active window to a workspace with mainMod + SHIFT + [0-9]
|
||||
"${mod} SHIFT, 1, split:movetoworkspacesilent, 1 "
|
||||
"${mod} SHIFT, 2, split:movetoworkspacesilent, 2 "
|
||||
"${mod} SHIFT, 3, split:movetoworkspacesilent, 3 "
|
||||
"${mod} SHIFT, 4, split:movetoworkspacesilent, 4 "
|
||||
"${mod} SHIFT, 5, split:movetoworkspacesilent, 5 "
|
||||
"${mod} SHIFT, 6, split:movetoworkspacesilent, 6 "
|
||||
"${mod} SHIFT, 7, split:movetoworkspacesilent, 7 "
|
||||
"${mod} SHIFT, 8, split:movetoworkspacesilent, 8 "
|
||||
"${mod} SHIFT, 9, split:movetoworkspacesilent, 9 "
|
||||
"${mod} SHIFT, 0, split:movetoworkspacesilent, 10"
|
||||
# Example special workspace (scratchpad)
|
||||
"${mod}, S, togglespecialworkspace, magic"
|
||||
"${mod} SHIFT, S, movetoworkspace, special:magic"
|
||||
# Scroll through existing workspaces with mainMod + scroll
|
||||
"${mod}, mouse_down, workspace, e+1"
|
||||
"${mod}, mouse_up, workspace, e-1"
|
||||
];
|
||||
|
||||
bindm = [
|
||||
# Move/resize windows with mainMod + LMB/RMB and dragging
|
||||
"${mod}, mouse:272, movewindow"
|
||||
"${mod}, mouse:273, resizewindow"
|
||||
];
|
||||
|
||||
bindel = [
|
||||
",XF86AudioRaiseVolume, exec, pamixer -i 5"
|
||||
",XF86AudioLowerVolume, exec, pamixer -d 5"
|
||||
",XF86AudioMute, exec, pamixer --toggle-mute"
|
||||
",XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"
|
||||
",XF86MonBrightnessUp, exec, light -A 5"
|
||||
",XF86MonBrightnessDown, exec, light -U 5"
|
||||
];
|
||||
bindl = [
|
||||
", XF86AudioNext, exec, playerctl next"
|
||||
", XF86AudioPause, exec, playerctl play-pause"
|
||||
", XF86AudioPlay, exec, playerctl play-pause "
|
||||
", XF86AudioPrev, exec, playerctl previous "
|
||||
];
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
|
||||
# See https://wiki.hyprland.org/Configuring/Workspace-Rules/ for workspace rules
|
||||
|
||||
# Example windowrule
|
||||
# windowrule = float,class:^(kitty)$,title:^(kitty)$
|
||||
|
||||
# Ignore maximize requests from apps. You'll probably like this.
|
||||
windowrule = [
|
||||
# Ignore maximize requests from apps. You'll probably like this.
|
||||
"suppressevent maximize, class:.*"
|
||||
# Fix some dragging issues with XWayland
|
||||
"nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0"
|
||||
];
|
||||
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user