231 lines
6.1 KiB
Nix
231 lines
6.1 KiB
Nix
{ config, pkgs, lib, ... }:
|
|
|
|
# TODO:
|
|
# - configure comands like hyprpaper, waybar, etc.
|
|
# - make hyprexpo work
|
|
|
|
{
|
|
imports = [
|
|
# ./hyprland/env.nix
|
|
# ./hyprland/execs.nix
|
|
# ./hyprland/general.nix
|
|
# ./hyprland/rules.nix
|
|
# ./hyprland/colors.nix
|
|
# ./hyprland/active.nix
|
|
./hyprland/keybinds.nix # done
|
|
./hyprland/my.nix
|
|
./hyprlock.nix # done
|
|
./hypridle.nix # done
|
|
];
|
|
home.packages = with pkgs; [
|
|
hyprland
|
|
brightnessctl
|
|
playerctl
|
|
hyprshot
|
|
nemo
|
|
pywal
|
|
];
|
|
services.swww.enable = true;
|
|
programs.hyprpanel = {
|
|
enable = true;
|
|
settings = builtins.fromJSON (builtins.readFile ./hyprpanel.json);
|
|
};
|
|
programs.fuzzel.enable = true;
|
|
|
|
home.file.".config/hypr/scripts" = {
|
|
source = ./scripts;
|
|
recursive = true;
|
|
};
|
|
|
|
wayland.windowManager.hyprland = {
|
|
enable = true;
|
|
plugins = [ pkgs.hyprlandPlugins.hyprexpo ];
|
|
settings = {
|
|
env = [ "XCURSOR_SIZE,24" "HYPRCURSOR_SIZE,24" ];
|
|
|
|
exec-once = [
|
|
# "hyprlock"
|
|
"wal -R &"
|
|
# "hyprpaper &"
|
|
"swww-daemon &"
|
|
"swww img ~/Pictures/wallpaper.png &"
|
|
# "hyprctl hyprpaper reload ,~/Pictures/wallpaper.png"
|
|
"hyprpanel &"
|
|
"gsettings set org.gnome.desktop.interface cursor-theme '${config.home.pointerCursor.name}'"
|
|
"gsettings set org.gnome.desktop.interface cursor-size ${
|
|
toString config.home.pointerCursor.size
|
|
}"
|
|
];
|
|
|
|
exec = "hyprctl dispatch submap global";
|
|
submap = "global";
|
|
debug = { disable_logs = false; };
|
|
|
|
monitor =
|
|
[ "eDP-1,preferred,auto,auto" "HDMI-A-1,preferred,auto-left,auto" ];
|
|
|
|
input = {
|
|
kb_layout = "us,ru";
|
|
kb_options = "grp:win_space_toggle,ctrl:swap_lalt_lctl";
|
|
natural_scroll = true;
|
|
follow_mouse = 1;
|
|
numlock_by_default = true;
|
|
|
|
touchpad = {
|
|
disable_while_typing = true;
|
|
clickfinger_behavior = true;
|
|
natural_scroll = true;
|
|
};
|
|
};
|
|
cursor = {
|
|
no_hardware_cursors = true;
|
|
min_refresh_rate = 60;
|
|
inactive_timeout = 5;
|
|
hide_on_key_press = true;
|
|
};
|
|
|
|
binds.scroll_event_delay = 0;
|
|
|
|
gestures = {
|
|
workspace_swipe = true;
|
|
workspace_swipe_distance = 700;
|
|
workspace_swipe_fingers = 3;
|
|
workspace_swipe_cancel_ratio = 0.2;
|
|
workspace_swipe_min_speed_to_force = 5;
|
|
workspace_swipe_direction_lock = true;
|
|
workspace_swipe_direction_lock_threshold = 10;
|
|
workspace_swipe_create_new = true;
|
|
};
|
|
|
|
general = {
|
|
# Gaps and border
|
|
gaps_in = 5;
|
|
gaps_out = 10;
|
|
gaps_workspaces = 50;
|
|
border_size = 0;
|
|
|
|
# Fallback colors
|
|
"col.active_border" = "rgba(0DB7D4FF)";
|
|
"col.inactive_border" = "rgba(31313600)";
|
|
|
|
resize_on_border = true;
|
|
no_focus_fallback = true;
|
|
# layout = dwindle
|
|
|
|
#focus_to_other_workspaces = true # ahhhh i still haven't properly implemented this
|
|
allow_tearing =
|
|
true; # This just allows the `immediate` window rule to work
|
|
snap.enabled = true;
|
|
};
|
|
|
|
dwindle = {
|
|
preserve_split = true;
|
|
smart_split = false;
|
|
smart_resizing = false;
|
|
};
|
|
|
|
decoration = {
|
|
rounding = 20;
|
|
|
|
blur = {
|
|
enabled = true;
|
|
xray = false;
|
|
special = false;
|
|
new_optimizations = true;
|
|
ignore_opacity = true;
|
|
size = 4;
|
|
passes = 2;
|
|
brightness = 1;
|
|
noise = "0.01";
|
|
contrast = 1;
|
|
popups = true;
|
|
popups_ignorealpha = "0.6";
|
|
vibrancy = 0;
|
|
};
|
|
|
|
shadow = {
|
|
enabled = true;
|
|
ignore_window = true;
|
|
range = 20;
|
|
offset = "0 2";
|
|
render_power = 4;
|
|
color = "rgba(0000002A)";
|
|
};
|
|
|
|
active_opacity = "0.95";
|
|
inactive_opacity = "0.5";
|
|
fullscreen_opacity = 1;
|
|
|
|
dim_inactive = true;
|
|
dim_strength = "0.025";
|
|
dim_special = "0.07";
|
|
};
|
|
|
|
animations = {
|
|
enabled = true;
|
|
|
|
bezier = [
|
|
"expressiveFastSpatial, 0.42, 1.67, 0.21, 0.90"
|
|
"expressiveSlowSpatial, 0.39, 1.29, 0.35, 0.98"
|
|
"expressiveDefaultSpatial, 0.38, 1.21, 0.22, 1.00"
|
|
"emphasizedDecel, 0.05, 0.7, 0.1, 1"
|
|
"emphasizedAccel, 0.3, 0, 0.8, 0.15"
|
|
"standardDecel, 0, 0, 0, 1"
|
|
"menu_decel, 0.1, 1, 0, 1"
|
|
"menu_accel, 0.52, 0.03, 0.72, 0.08"
|
|
];
|
|
|
|
animation = [
|
|
"windowsIn, 1, 3, emphasizedDecel, popin 80%"
|
|
"windowsOut, 1, 2, emphasizedDecel, popin 90%"
|
|
"windowsMove, 1, 3, emphasizedDecel, slide"
|
|
"border, 1, 10, emphasizedDecel"
|
|
"layersIn, 1, 2.7, emphasizedDecel, popin 93%"
|
|
"layersOut, 1, 2.4, menu_accel, popin 94%"
|
|
"fadeLayersIn, 1, 0.5, menu_decel"
|
|
"fadeLayersOut, 1, 2.7, menu_accel"
|
|
"workspaces, 1, 7, menu_decel, slide"
|
|
"specialWorkspaceIn, 1, 2.8, emphasizedDecel, slidevert"
|
|
"specialWorkspaceOut, 1, 1.2, emphasizedAccel, slidevert"
|
|
];
|
|
};
|
|
|
|
misc = {
|
|
mouse_move_enables_dpms = true;
|
|
key_press_enables_dpms = true;
|
|
disable_splash_rendering = true;
|
|
focus_on_activate = false;
|
|
|
|
# TODO: enable after rules.nix
|
|
|
|
# vfr = 1;
|
|
# vrr = 1;
|
|
animate_manual_resizes = false;
|
|
animate_mouse_windowdragging = false;
|
|
# enable_swallow = false;
|
|
# swallow_regex = "(foot|kitty|allacritty|Alacritty)";
|
|
|
|
# disable_hyprland_logo = true;
|
|
# force_default_wallpaper = 0;
|
|
new_window_takes_over_fullscreen = 2;
|
|
allow_session_lock_restore = true;
|
|
|
|
initial_workspace_tracking = false;
|
|
};
|
|
|
|
plugin.hyprexpo = {
|
|
columns = 3;
|
|
gap_size = 5;
|
|
bg_col = "rgb(000000)";
|
|
workspace_method =
|
|
"first 1"; # [center/first] [workspace] e.g. first 1 or center m+1
|
|
|
|
enable_gesture = true; # laptop touchpad, 4 fingers
|
|
gesture_distance = 300; # how far is the "max"
|
|
gesture_positive = false;
|
|
};
|
|
};
|
|
};
|
|
|
|
}
|