diff --git a/modules/default/common/desktop/applications.nix b/modules/default/common/desktop/applications.nix index fd0a4d2..08f389b 100644 --- a/modules/default/common/desktop/applications.nix +++ b/modules/default/common/desktop/applications.nix @@ -4,10 +4,6 @@ lib.mkIf config.desktop.enable { environment.systemPackages = (with pkgs; [ - bc - jq - xorg.xrandr - feh enpass diff --git a/modules/default/home-manager/desktop/compositors/niri.nix b/modules/default/home-manager/desktop/compositors/niri.nix index cfbdb9f..01df39a 100644 --- a/modules/default/home-manager/desktop/compositors/niri.nix +++ b/modules/default/home-manager/desktop/compositors/niri.nix @@ -21,6 +21,9 @@ lib.mkIf config.desktop.wm.niri.enable { { command = [ "xwayland-satellite" ":0" ]; } + { + command = [ "${lib.getExe pkgs.ewwbar}" ]; + } ]; hotkey-overlay.skip-at-startup = true; diff --git a/modules/default/home-manager/desktop/hyprland/hyprland.nix b/modules/default/home-manager/desktop/hyprland/hyprland.nix index 166afdc..6152dd2 100644 --- a/modules/default/home-manager/desktop/hyprland/hyprland.nix +++ b/modules/default/home-manager/desktop/hyprland/hyprland.nix @@ -35,6 +35,7 @@ lib.mkIf config.desktop.hyprland.enable { ''hyprctl dispatch exec "[workspace special:alt silent] obsidian"'' #''hyprctl dispatch exec "[workspace special:altgr silent]"'' #''hyprctl dispatch exec "[workspace special:strg silent] "'' + ''${lib.getExe pkgs.ewwbar}'' ]; xwayland.force_zero_scaling = true; diff --git a/pkgs/default.nix b/pkgs/default.nix index 99471bd..6833af8 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -2,6 +2,7 @@ { nixpkgs.config.packageOverrides = pkgs: { yuzu = pkgs.callPackage ./yuzu { }; + ewwbar = pkgs.callPackage ./ewwbar { }; UVtools = pkgs.callPackage ./UVtools { }; }; } diff --git a/pkgs/ewwbar/default.nix b/pkgs/ewwbar/default.nix new file mode 100644 index 0000000..93a4e95 --- /dev/null +++ b/pkgs/ewwbar/default.nix @@ -0,0 +1,36 @@ +{ lib +, rustPlatform +, fetchurl +, pkg-config +, libxkbcommon +}: +rustPlatform.buildRustPackage { + + pname = "ewwbar"; + version = "0.1.0"; + + src = fetchurl { + url = "https://git.huwe.mooo.com/willifan/desktop-utils/archive/main.tar.gz"; + sha256 = "sha256-qolavUf7wKjwXlbBOz5gphjk1aqCBgbdLY62N3plbB8="; + }; + + cargoHash = "sha256-H0Mm5BdxmR6WM3KHRSuBYfCxSdLcp95sT4qbARL5ywU="; + + + nativeBuildInputs = [ + pkg-config + ]; + + buildInputs = [ + libxkbcommon + ]; + + meta = with pkgs.lib; { + description = "utils for my desktop"; + homepage = " git.huwe.mooo.com/willifan/desktop-utils"; + license = licenses.gpl3; + platforms = platforms.unix; + mainProgram = "ewwbar"; + }; + +} diff --git a/users/willifan/desktop/hyprland/common/hyprland.nix b/users/willifan/desktop/hyprland/common/hyprland.nix new file mode 100644 index 0000000..3f7c0f3 --- /dev/null +++ b/users/willifan/desktop/hyprland/common/hyprland.nix @@ -0,0 +1,266 @@ +{ pkgs, home-manager, ... }: +{ + home-manager.users.willifan = { + wayland.windowManager.hyprland = { + enable = true; + systemd.variables = ["--all"]; + package = pkgs.hyprland; + settings = { + + + "$SCRIPTS" = "$XDG_CONFIG_HOME/desktop-utils/scripts"; + + misc = { + disable_hyprland_logo=true; + }; + + monitor = [ + ", preffered, auto, 1" + "eDP-1, preferred, 0x0, 1.6" + "desc:ViewSonic Corporation VX2705-2KP W6Z205100250, 2560x1440@144Hz, 0x384, 1.25" + "desc:ViewSonic Corporation VX2705-2KP W6Z210400766, 2560x1440@144Hz, 2048x384, 1.25" + "desc:BNQ BenQ BL2283 CAM01567019, 1920x1080@60Hz, 4096x0, 1.0, transform, 3" + ]; + # Execute your favorite apps at launch + exec-once = [ + ''hyprctl dispatch exec "[workspace 1 silent] kitty"'' + ''hyprctl dispatch exec "[workspace 2 silent] firefox"'' + #''hyprctl dispatch exec "[workspace 3 silent] "'' + #''hyprctl dispatch exec "[workspace 4 silent] "'' + #''hyprctl dispatch exec "[workspace 8 silent] "'' + ''hyprctl dispatch exec "[workspace 9 silent] vesktop"'' + ''hyprctl dispatch exec "[workspace special:ctrl silent] thunar"'' + ''hyprctl dispatch exec "[workspace special:alt silent] obsidian"'' + ''hyprctl dispatch exec "[workspace special:altgr silent] thunderbird"'' + #''exec-once = hyprctl dispatch exec "[workspace special:strg silent] "'' + ]; + + xwayland.force_zero_scaling = true; + + input = { + kb_layout = "de"; + kb_variant = ""; + kb_model = ""; + kb_options = ""; + kb_rules = ""; + + follow_mouse = 1; + + touchpad.natural_scroll = "yes"; + + sensitivity = -0.8; # -1.0 - 1.0, 0 means no modification. + numlock_by_default = 1; + special_fallthrough = true; + }; + + + + general = { + + gaps_in = 2; + gaps_out = 5; + border_size = 2; +# "col.active_border" = "rgba(ffa44bee)"; +# "col.inactive_border" = "rgba(595959aa)"; + + layout = "dwindle"; + + resize_on_border = true; + }; + + decoration = { + + rounding = 10; + + blur = { + enabled = false; + size = 3; + passes = 1; + new_optimizations = 1; + }; + + drop_shadow = "yes"; + shadow_range = 4; + shadow_render_power = 3; +# "col.shadow" = "rgba(1a1a1aee)"; + }; + + misc = { + vfr = true; + mouse_move_enables_dpms = true; + }; + + animations = { + enabled = "yes"; + + bezier = "myBezier, 0.05, 0.9, 0.1, 1.05"; + + animation = [ + "windows, 1, 7, myBezier" + "windowsOut, 1, 7, default, popin 80%" + "border, 1, 10, default" + "borderangle, 1, 8, default" + "fade, 1, 7, default" + "workspaces, 1, 6, default" + "specialWorkspace, 1, 8, default, slidefadevert 20%" + ]; + }; + + dwindle = { + pseudotile = "yes"; # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below + preserve_split = "yes"; # you probably want this + }; + + gestures = { + workspace_swipe = "on"; + workspace_swipe_create_new = "false"; + }; + + device = { + name = "pixa3854:00-093a:0274-touchpad"; + sensitivity = 0; + natural_scroll = "yes"; + }; + + windowrule = [ + "idleinhibit fullscreen, ^(firefox)$" + "float, ^(thunar)$" + "stayfocused, title:^(Enpass Assistant)$" + "pin, title:^(Enpass Assistant)$" + "center, title:^(Enpass Assistant)$" + "float, ^(Enpass)$" + "center, ^(Enpass)$" + "float, ^(blueman-manager)$" + "move -0% 0%, ^(blueman-manager)$" + "float, ^(org.gnome.Calendar)$" + "move 20% 5%, ^(org.gnome.Calendar)$" + "size 60% 60%, ^(org.gnome.Calendar)$" + "float, ^(org.gnome.Calculator)$" + ]; + + windowrulev2 = [ + "center, xwayland:(1)" + "nofocus,class:^jetbrains-(?!toolbox),floating:1,title:^win\d+$" + ''workspace +0, workspace:name:special:ctrl, floating:0'' + ''float, workspace:name:special:altgr, onworkspace:w[2]'' + ''float, workspace:name:special:strg, onworkspace:w[1]'' + ''workspace +0, workspace:name:special:strg, floating:0'' + ]; + + "$mainMod" = "SUPER"; + + bind = [ + ''$mainMod, Q, exec, kitty'' + ''$mainMod, C, killactive, '' + ''$mainMod, M, exit, '' + ''$mainMod, E, exec, thunar'' + ''$mainMod, V, togglefloating, '' + ''$mainMod, R, exec, wofi --show drun'' + ''$mainMod, J, togglesplit, # dwindle'' + ''$mainMod, P, exec, Enpass'' + ''$mainMod, T, exec, hyprctl dispatch exec "[float; pin; size 40% 40%; move 100%-41% 40] kitty btop -b proc"'' + ''$mainMod, W, exec, networkmanager_dmenu'' + ''$mainMod, F, fullscreen'' + + # Move focus with mainMod + arrow keys + ''$mainMod, left, movefocus, l'' + ''$mainMod, right, movefocus, r'' + ''$mainMod, up, movefocus, u'' + ''$mainMod, down, movefocus, d'' + + '', XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle'' + '', XF86AudioPrev, exec, playerctl previous'' + '', XF86AudioPlay, exec, playerctl play-pause'' + '', XF86AudioNext, exec, playerctl next'' + '', print, exec, grim -g "$(slurp)" - | wl-copy -t image/png'' + + # Switch workspaces with mainMod + [0-9] + ''$mainMod, 1, exec, $SCRIPTS/workspaces.sh 1'' + ''$mainMod, 2, exec, $SCRIPTS/workspaces.sh 2'' + ''$mainMod, 3, exec, $SCRIPTS/workspaces.sh 3'' + ''$mainMod, 4, exec, $SCRIPTS/workspaces.sh 4'' + ''$mainMod, 5, exec, $SCRIPTS/workspaces.sh 5'' + ''$mainMod, 6, exec, $SCRIPTS/workspaces.sh 6'' + ''$mainMod, 7, exec, $SCRIPTS/workspaces.sh 7'' + ''$mainMod, 8, exec, $SCRIPTS/workspaces.sh 8'' + ''$mainMod, 9, exec, $SCRIPTS/workspaces.sh 9'' + + # Move active window to a workspace with mainMod + SHIFT + [0-9] + ''$mainMod SHIFT, 1, movetoworkspace, 1'' + ''$mainMod SHIFT, 2, movetoworkspace, 2'' + ''$mainMod SHIFT, 3, movetoworkspace, 3'' + ''$mainMod SHIFT, 4, movetoworkspace, 4'' + ''$mainMod SHIFT, 5, movetoworkspace, 5'' + ''$mainMod SHIFT, 6, movetoworkspace, 6'' + ''$mainMod SHIFT, 7, movetoworkspace, 7'' + ''$mainMod SHIFT, 8, movetoworkspace, 8'' + ''$mainMod SHIFT, 9, movetoworkspace, 9'' + + # Monitor focus + ''$mainMod ALT, 1, focusmonitor, 0'' + ''$mainMod ALT, 2, focusmonitor, 1'' + ''$mainMod ALT, 3, focusmonitor, 2'' + ''$mainMod ALT, 4, focusmonitor, 3'' + ''$mainMod ALT, 5, focusmonitor, 4'' + ''$mainMod ALT, 6, focusmonitor, 5'' + ''$mainMod ALT, 7, focusmonitor, 6'' + ''$mainMod ALT, 8, focusmonitor, 7'' + ''$mainMod ALT, 9, focusmonitor, 8'' + ''$mainMod ALT, 0, focusmonitor, 9'' + + # Scroll through existing workspaces with mainMod + scroll + ''$mainMod, mouse_down, workspace, e+1'' + ''$mainMod, mouse_up, workspace, e-1'' + ]; + + binde = [ + '', XF86AudioLowerVolume, exec, $SCRIPTS/volume.sh -5'' + '', XF86AudioRaiseVolume, exec, $SCRIPTS/volume.sh 5'' + ]; + + bindel = [ + '', XF86MonBrightnessDown, exec, $SCRIPTS/brightness.sh -4800'' + '', XF86MonBrightnessUp, exec, $SCRIPTS/brightness.sh 4800'' + ]; + + bindr = [ + ''SUPERCTRL, Control_L, togglespecialworkspace, ctrl'' + ''SUPERALT, Alt_L, togglespecialworkspace, alt'' + ''SUPERMOD5, ISO_Level3_Shift, togglespecialworkspace, altgr'' + ''SUPERCTRL, Control_R, togglespecialworkspace, strg'' + ]; + + bindm = [ + # Move/resize windows with mainMod + LMB/RMB and dragging + ''$mainMod, mouse:272, movewindow'' + ''$mainMod, mouse:273, resizewindow'' + ]; + + # ------------------------------------------ + # ######################################## + # ####### Workspaces ########### + # ######################################## + # ------------------------------------------ + + workspace = [ + "1, persistent:true" + "2, persistent:true" + "3, persistent:true" + "4, persistent:true" + "5, persistent:true" + "6, persistent:true" + "7, persistent:true" + "8, persistent:true" + "8, persistent:true" + "9, persistent:true" + + "name:special:ctrl, persistent:true" + "name:special:alt, persistent:true" + "name:special:altgr, persistent:true" + "name:special:strg, persistent:true" + ]; + + }; + }; + }; +}