modules: add easymotion for hyprland

This commit is contained in:
Dmitriy Pleshevskiy 2024-04-23 11:51:15 +03:00
parent 629c9e995c
commit 105d7278dd
Signed by: pleshevskiy
GPG key ID: 17041163DA10A9A2
8 changed files with 78 additions and 20 deletions

View file

@ -16,8 +16,6 @@ in
xmonad.projects = import ./xmonad-projects.secret.nix; xmonad.projects = import ./xmonad-projects.secret.nix;
}; };
local.programs.terminals.wezterm.enable = false;
# local.programs.dev-tools.k8s.enable = true; # local.programs.dev-tools.k8s.enable = true;
local.programs.libreoffice.enable = false; local.programs.libreoffice.enable = false;

View file

@ -2,8 +2,8 @@
{ {
imports = [ imports = [
./xmonad.nix
./hyprland.nix
./polybar.nix ./polybar.nix
./xmonad
./hyprland
]; ];
} }

View file

@ -2,6 +2,8 @@
let let
cfg = config.local.window-manager.hyprland; cfg = config.local.window-manager.hyprland;
easyfocus = pkgs.callPackage ./easyfocus-hyprland.nix { };
in in
{ {
options.local.window-manager.hyprland = with lib; { options.local.window-manager.hyprland = with lib; {
@ -10,13 +12,36 @@ in
config = lib.mkIf cfg.enable { config = lib.mkIf cfg.enable {
home.packages = with pkgs.unstable; [ home.packages = with pkgs.unstable; [
foot
wl-clipboard wl-clipboard
wlsunset wlsunset
swaybg
dmenu-wayland 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: 16
'';
wayland.windowManager.hyprland = { wayland.windowManager.hyprland = {
enable = true; enable = true;
package = pkgs.unstable.hyprland; package = pkgs.unstable.hyprland;
@ -26,7 +51,7 @@ in
settings = { settings = {
# monitors # monitors
monitor = ",preferred,auto,auto"; monitor = ",preferred,auto,1";
# env # env
@ -41,7 +66,7 @@ in
gaps_in = 5; gaps_in = 5;
gaps_out = 20; gaps_out = 20;
border_size = 2; border_size = 1;
"col.active_border" = "rgba(33ccffee) rgba(00ff99ee) 45deg"; "col.active_border" = "rgba(33ccffee) rgba(00ff99ee) 45deg";
"col.inactive_border" = "rgba(595959aa)"; "col.inactive_border" = "rgba(595959aa)";
@ -80,8 +105,11 @@ in
workspace_swipe = false; workspace_swipe = false;
}; };
xwayland = {
force_zero_scaling = true;
};
"$terminal" = "foot"; "$terminal" = "wezterm start";
"$browser" = "librewolf"; "$browser" = "librewolf";
"$fileManager" = "vifm"; "$fileManager" = "vifm";
"$menu" = "dmenu-wl_run"; "$menu" = "dmenu-wl_run";
@ -90,32 +118,44 @@ in
bind = lib.flatten [ bind = lib.flatten [
# programs # programs
"$mod SHIFT, Return, exec, $terminal" "$mod SHIFT, Return, exec, $terminal"
"$mod SHIFT, S, exec, flameshot gui"
"$mod SHIFT, B, exec, $browser" "$mod SHIFT, B, exec, $browser"
"$mod, p, exec, $menu" "$mod, p, exec, $menu"
# Move focus # focus
(lib.flip lib.mapAttrsToList { L = "r"; H = "l"; J = "d"; K = "u"; } (k: d: (lib.flip lib.mapAttrsToList { k = "prev"; j = "next"; } (k: d: [
"$mod, ${k}, movefocus, ${d}" "$mod, ${k}, layoutmsg, cycle${d}"
)) "$mod SHIFT, ${k}, layoutmsg, swap${d}"
]))
"$mod, Return, layoutmsg, swapwithmaster, master"
"$mod, s, exec, ${easyfocus}/bin/easyfocus-hyprland"
# comma (,)
"$mod, code:44, layoutmsg, addmaster"
# period (.)
"$mod, code:46, layoutmsg, removemaster"
# windows
"MOD4 SHIFT, C, killactive"
"$mod, Space, fullscreen, 0"
# workspaces
(lib.flip map [ 1 2 3 4 5 6 7 8 9 0 ] (i: (lib.flip map [ 1 2 3 4 5 6 7 8 9 0 ] (i:
let wid = if i == 0 then 10 else i; in let wid = if i == 0 then 10 else i; in
[ [
# switch warkspaces with mod + [0-9] # switch warkspaces with mod + [0-9]
"$mod, ${toString i}, workspace, ${toString wid}" "$mod, ${toString i}, workspace, ${toString wid}"
# move active window to a workspace with mod + shift + [0-9] # move active window to a workspace with mod + shift + [0-9]
"$mod SHIFT, ${toString i}, movetoworkspace, ${toString wid}" "$mod SHIFT, ${toString i}, movetoworkspacesilent, ${toString wid}"
] ]
)) ))
# syste
"MOD4 SHIFT, Q, exit"
]; ];
bindm = [ bindm = [
"$mod, mouse:272, movewindow" "$mod, mouse:272, movewindow"
"$mod, mouse:273, resizewindow" "$mod, mouse:273, resizewindow"
]; ];
input = let kb = config.home.keyboard; in { input = let kb = config.home.keyboard; in {
@ -124,7 +164,6 @@ in
kb_variant = kb.variant; kb_variant = kb.variant;
kb_options = lib.head kb.options; kb_options = lib.head kb.options;
}; };
}; };
}; };
}; };

View file

@ -0,0 +1,19 @@
{ pkgs, ... }:
pkgs.rustPlatform.buildRustPackage {
pname = "easyfocus-hyprland";
version = "2024-03-14";
src = pkgs.fetchFromGitHub {
owner = "PostCyberPunk";
repo = "easyfocus-hyprland";
rev = "382efb8bcdbb5e35a417d4ef415f92f5fca0d41e";
hash = "sha256-BLX3ASmTq+xkUOQQ0yBCn/mhsnz6JU2u+lor1YYHkdI=";
};
cargoHash = "sha256-M72KO6Z/ZCsns1yZd5eqz94CSIZ/dI4SpGjnqJ9LYko=";
nativeBuildInputs = with pkgs;
[ pkg-config glib ];
buildInputs = with pkgs; [ glib gtk3 gtk-layer-shell ];
}

View file

@ -1,4 +1,4 @@
-- -
-- xmonad example config file. -- xmonad example config file.
-- --
-- A template showing all available configuration hooks, -- A template showing all available configuration hooks,

View file

@ -11,7 +11,7 @@ let
rev = version; rev = version;
hash = "sha256-IyAcTCDSjOmZ6KPr9nYKdxWA0qryeU4jTwxRWzt2NOY="; hash = "sha256-IyAcTCDSjOmZ6KPr9nYKdxWA0qryeU4jTwxRWzt2NOY=";
}; };
vendorHash = "sha256-pir78zXidz7N9Z6uw9YqkkjVRUho0PuKgDTQFli/4fs="; vendorHash = "sha256-s7lt5amq6Zsn+1AM2SlNeXSZIRbJ+vYKZmdWEDC4Sp4=";
}); });
}; };

View file

@ -60,6 +60,8 @@ in
font_size = ${toString cfg.fontSize}, font_size = ${toString cfg.fontSize},
color_scheme = "myCoolTheme", color_scheme = "myCoolTheme",
hide_tab_bar_if_only_one_tab = true, hide_tab_bar_if_only_one_tab = true,
-- https://github.com/wez/wezterm/issues/4483
enable_wayland = false,
} }
''; '';
}; };