diff options
Diffstat (limited to 'home-manager/wm')
| -rw-r--r-- | home-manager/wm/default.nix | 11 | ||||
| -rw-r--r-- | home-manager/wm/hyprland/cat.png | bin | 0 -> 15467 bytes | |||
| -rw-r--r-- | home-manager/wm/hyprland/default.nix | 37 | ||||
| -rw-r--r-- | home-manager/wm/hyprland/hyprland.conf | 211 | ||||
| -rwxr-xr-x | home-manager/wm/hyprland/scripts/battery-level.sh | 22 | ||||
| -rwxr-xr-x | home-manager/wm/hyprland/scripts/hshot | 45 | ||||
| -rwxr-xr-x | home-manager/wm/hyprland/scripts/kill | 7 | ||||
| -rwxr-xr-x | home-manager/wm/hyprland/scripts/rnew.fish | 8 | ||||
| -rwxr-xr-x | home-manager/wm/hyprland/scripts/rofi-modes | 20 |
9 files changed, 360 insertions, 1 deletions
diff --git a/home-manager/wm/default.nix b/home-manager/wm/default.nix index c604b9a..105564d 100644 --- a/home-manager/wm/default.nix +++ b/home-manager/wm/default.nix @@ -1,3 +1,12 @@ +let + more = { pkgs, inputs, ... }: { + home.packages = with pkgs; [ + kile-wl + ]; + }; +in [ - ./bspwm + # ./bspwm + ./hyprland + more ] diff --git a/home-manager/wm/hyprland/cat.png b/home-manager/wm/hyprland/cat.png Binary files differnew file mode 100644 index 0000000..5657a78 --- /dev/null +++ b/home-manager/wm/hyprland/cat.png diff --git a/home-manager/wm/hyprland/default.nix b/home-manager/wm/hyprland/default.nix new file mode 100644 index 0000000..3079faa --- /dev/null +++ b/home-manager/wm/hyprland/default.nix @@ -0,0 +1,37 @@ +{ pkgs, config, ... }: +let + configFile = builtins.readFile ./hyprland.conf; + scripts = '' + $scripts=${./scripts} + ''; + overrides = '' + exec-once=swww init && swww img ${./cat.png} + ''; + extraConfig = scripts + configFile + overrides; + +in +{ + home.packages = with pkgs; [ + swww + eww-wayland + socat + inotify-tools + brightnessctl + alsa-utils + slurp + grim + cliphist + material-design-icons + font-awesome + wtype + webcord + xdg-desktop-portal-hyprland + swaylock + ]; + wayland.windowManager.hyprland = { + enable = true; + package = pkgs.hyprland; + recommendedEnvironment = true; + inherit extraConfig; + }; +} diff --git a/home-manager/wm/hyprland/hyprland.conf b/home-manager/wm/hyprland/hyprland.conf new file mode 100644 index 0000000..7e3af43 --- /dev/null +++ b/home-manager/wm/hyprland/hyprland.conf @@ -0,0 +1,211 @@ +# This is an example Hyprland config file. +# Syntax is the same as in Hypr, but settings might differ. +# +# Refer to the wiki for more information. + +# +# Please note not all available settings / options are set here. +# For a full list, see the wiki (basic and advanced configuring) +# + +monitor = eDP-1,preferred,auto,1 +monitor = ,highres,auto,1,mirror,eDP-1 + +input { + kb_file= + kb_layout = us,ru + kb_variant= + kb_model= + kb_options = grp:win_space_toggle + kb_rules= + + follow_mouse = 1 + + touchpad { + natural_scroll = yes + clickfinger_behavior = yes + scroll_factor = 0.8 + # disable_while_typing = no + } + + sensitivity = 0 # -1.0 - 1.0, 0 means no modification. +} + +general { + gaps_in = 5 + gaps_out = 20 + border_size = 3 + col.active_border = 0xFF6e6a86 + col.inactive_border = 0xFF363a4f + apply_sens_to_raw = 0 # whether to apply the sensitivity to raw input (e.g. used by games where you aim using your mouse) + layout = dwindle +} + +decoration { + rounding = 7 + drop_shadow = false + shadow_range = 5 + shadow_offset = [100, 100] +} + +animations { + enabled = 1 + bezier = overshot,0.13,0.99,0.29,1.1, + animation = fade,1,4,default + animation = workspaces,1,4,default,fade + animation = windows,1,4,overshot,popin 95% +} + +dwindle { + pseudotile = 0 # enable pseudotiling on dwindle +} + +gestures { + workspace_swipe = yes +} + +windowrulev2 = tile, class:^(Spotify)$ +windowrulev2 = float, title:^(calcure)$ +windowrulev2 = move 611 46, title:^(calcure)$ +windowrulev2 = size 702 360, title:^(calcure)$ +windowrulev2 = float, title:^(btop)$ +windowrulev2 = move 1180 46, title:^(btop)$ +windowrulev2 = size 724 460, title:^(btop)$ +windowrulev2 = float, title:^(blue)$ +windowrulev2 = move 1180 46, title:^(blue)$ +windowrulev2 = size 724 460, title:^(blue)$ +windowrulev2 = float, class:^(connman-gtk)$ +windowrulev2 = move 1262 46, class:^(connman-gtk)$ +windowrulev2 = size 650 401, class:^(connman-gtk)$ +windowrulev2 = float, title:^(Firrfox — Sharing Indicator)$ +windowrulev2 = nofullscreenrequest, title:^(Firefox — Sharing Indicator)$ +windowrulev2 = noborder, title:^(Firefox — Sharing Indicator)$ +windowrulev2 = rounding 0, title:^(Firefox — Sharing Indicator)$ +windowrulev2 = float, class:^(org.kde.polkit-kde-authentication-agent-1)$ +windowrulev2 = float, title:^(firefox)$, title:^(Picture-in-Picture)$ +windowrulev2 = pin, title:^(firefox)$, title:^(Picture-in-Picture)$ + +# some nice mouse binds +bindm = SUPER,mouse:272,movewindow +bindm = SUPER,mouse:273,resizewindow + +# Binds +bind = SUPER_SHIFT,Q,exec,$scripts/kill +bind = SUPER_SHIFT,E,exit, +bind = ,0x1008FF2A,exec,nwg-bar +bind = SUPER,V,togglefloating, +bind = SUPER_SHIFT,V,centerwindow +bind = SUPER,P,pseudo, +bind = SUPER,F,fullscreen,0 +bind = SUPER_SHIFT,F,fakefullscreen +bind = SUPER,M,fullscreen,1 +bind = SUPER,N,exec,killall -SIGUSR1 waybar +bind = SUPER_SHIFT,N,exec,killall -SIGUSR2 waybar + +# Lockscreen +bind = SUPER_SHIFT,P,exec,bash -c ~/Games/swaylock-blur.sh + +# Change colume +bind = ,0x1008FF11,exec,wpctl status | grep '*' -m 1 | awk '{print $3 - 0}' | xargs -I _ wpctl set-volume _ 5%- +bind = ,0x1008FF13,exec,wpctl status | grep '*' -m 1 | awk '{print $3 - 0}' | xargs -I _ wpctl set-volume _ 5%+ +bind = ,0x1008FF12,exec,wpctl status | grep '*' -m 1 | awk '{print $3 - 0}' | xargs -I _ wpctl set-mute _ toggle + +# Change brightness +bind = ,0x1008FF02,exec,brightnessctl s +5% +bind = ,0x1008FF03,exec,brightnessctl s 5%- + +# App binds +bind = SUPER,Q,exec,kitty +bind = SUPER,B,exec,firefox +bind = SUPER,R,exec,kitty fish $HOME/.config/hypr/scripts/rnew.fish +bind = SUPER_SHIFT,R,exec,nautilus +bind = SUPER,T,exec,telegram-desktop +bind = SUPER,E,exec,emacsclient -c -a "emacs" +bind = SUPER_CONTROL,E,exec,emacs + +# Rofi +bind = SUPER,D,exec,killall rofi || rofi -show-icons -show drun +bind = SUPER,C,exec,$scripts/rofi-modes + +# Screenshots +bind = ,Print,exec,$scripts/hshot -m +bind = CONTROL,Print,exec,$scripts/hshot -m -c +bind = SHIFT,Print,exec,$scripts/hshot -s +bind = CONTROL_SHIFT,Print,exec,$scripts/hshot -s -c +bind = ALT,Print,exec,$scripts/hshot -w +bind = ALT_CONTROL,Print,exec,$scripts/hshot -w -c + +# Cycle through windows +bind = SUPER,J,movefocus,d +bind = SUPER,K,movefocus,u +bind = SUPER,H,movefocus,l +bind = SUPER,L,movefocus,r + +# Resize windows +# bind = SUPER_CONTROL,K,resizeactive,0 -50 +# bind = SUPER_CONTROL,J,resizeactive,0 50 +# bind = SUPER_CONTROL,H,resizeactive,-50 0 +# bind = SUPER_CONTROL,L,resizeactive,50 0 +bind = SUPER_CONTROL,K,splitratio,0.5 +bind = SUPER_CONTROL,J,splitratio,-0.5 + + +# Move windows +bind = SUPER_SHIFT,J,movewindow,d +bind = SUPER_SHIFT,K,movewindow,u +bind = SUPER_SHIFT,H,movewindow,l +bind = SUPER_SHIFT,L,movewindow,r + +# Move through workspaces +bind = SUPER,1,workspace,1 +bind = SUPER,2,workspace,2 +bind = SUPER,3,workspace,3 +bind = SUPER,4,workspace,4 +bind = SUPER,5,workspace,5 +bind = SUPER,6,workspace,6 +bind = SUPER,7,workspace,7 +bind = SUPER,8,workspace,8 +bind = SUPER,9,workspace,9 +bind = SUPER,0,workspace,10 + +# Move app to workspace +bind = ALT,1,movetoworkspace,1 +bind = ALT,2,movetoworkspace,2 +bind = ALT,3,movetoworkspace,3 +bind = ALT,4,movetoworkspace,4 +bind = ALT,5,movetoworkspace,5 +bind = ALT,6,movetoworkspace,6 +bind = ALT,7,movetoworkspace,7 +bind = ALT,8,movetoworkspace,8 +bind = ALT,9,movetoworkspace,9 +bind = ALT,0,movetoworkspace,10 + +# Move app to workspace silent +bind = SUPER_SHIFT,1,movetoworkspacesilent,1 +bind = SUPER_SHIFT,2,movetoworkspacesilent,2 +bind = SUPER_SHIFT,3,movetoworkspacesilent,3 +bind = SUPER_SHIFT,4,movetoworkspacesilent,4 +bind = SUPER_SHIFT,5,movetoworkspacesilent,5 +bind = SUPER_SHIFT,6,movetoworkspacesilent,6 +bind = SUPER_SHIFT,7,movetoworkspacesilent,7 +bind = SUPER_SHIFT,8,movetoworkspacesilent,8 +bind = SUPER_SHIFT,9,movetoworkspacesilent,9 +bind = SUPER_SHIFT,0,movetoworkspacesilent,10 + +# Mouse binds +bind = SUPER,mouse_down,workspace,e+1 +bind = SUPER,mouse_up,workspace,e-1 +bind = SUPER,up,workspace,e+1 + +# Startup apps +exec-once = mako +exec-once = hyprctl setcursor Simp1e-Gruvbox-Light 10 +exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP +exec-once = /usr/lib/polkit-kde-authentication-agent-1 +exec-once = /home/jerpo/Games/battery-level.sh +exec-once = qv2ray +exec-once = emacs --daemon +exec-once = wl-paste --type text --watch cliphist store +exec-once = wl-paste --type image --watch cliphist store +exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP +exec-once = hyprctl setcursor Bibata-Modern-Ice 13
\ No newline at end of file diff --git a/home-manager/wm/hyprland/scripts/battery-level.sh b/home-manager/wm/hyprland/scripts/battery-level.sh new file mode 100755 index 0000000..cc2d5cd --- /dev/null +++ b/home-manager/wm/hyprland/scripts/battery-level.sh @@ -0,0 +1,22 @@ +#!/bin/sh +while true; do + # Check the battery level and charging status + battery_info=$(acpi -b) + + # Extract the battery level from the output of `acpi` + battery_level=$(echo $battery_info | grep -o "[0-9]*%" | sed "s/%//") + + # Check if the laptop is charging + if [[ $battery_info == *"Charging"* ]]; then + # If the laptop is charging, do nothing + : + else + # If the battery level is less than 15%, send a notification + if [ "$battery_level" -lt 15 ]; then + notify-send "Battery Low" "Battery level is at $battery_level%. Charge your laptop." + fi + fi + + # Sleep for 5 minutes before checking the battery level again + sleep 300 +done diff --git a/home-manager/wm/hyprland/scripts/hshot b/home-manager/wm/hyprland/scripts/hshot new file mode 100755 index 0000000..0d02b9c --- /dev/null +++ b/home-manager/wm/hyprland/scripts/hshot @@ -0,0 +1,45 @@ +#!/bin/sh + +declare -a cmd + +usage() { + echo -e "-m | monitor\n-s | slurp\n-w | active window\n-c | add copy" +} + +monitor() { + cmd=("grim -o \"\$(hyprctl -j monitors | jq -r '.[] | select(.focused) | .name')\"") +} + +slurp() { + cmd=("grim -g \"\$(slurp)\"") +} + +window() { + cmd=("grim -g \"\$(hyprctl activewindow -j | jq -j '\"\(.at | .[0]),\(.at | .[1]) \(.size | .[0])x\(.size | .[1])\"')\"") +} + +copy() { + if [[ -n ${cmd[0]} ]]; then + cmd+=("- | wl-copy") + else + usage + fi +} + +while getopts ":mswc" opt; do + case ${opt} in + m) monitor;; + s) slurp;; + w) window;; + c) copy;; + *) usage + exit 1;; + esac +done + +if [[ -z $1 ]]; then + usage + exit 1 +fi + +bash -c "${cmd[*]}" diff --git a/home-manager/wm/hyprland/scripts/kill b/home-manager/wm/hyprland/scripts/kill new file mode 100755 index 0000000..40ab4a9 --- /dev/null +++ b/home-manager/wm/hyprland/scripts/kill @@ -0,0 +1,7 @@ +#!/bin/sh + +if [[ $(hyprctl activewindow -j | jq -r '.class') =~ (kitty) ]]; then + kill $(hyprctl activewindow -j | jq '.pid') -s 9 +else + hyprctl dispatch killactive +fi diff --git a/home-manager/wm/hyprland/scripts/rnew.fish b/home-manager/wm/hyprland/scripts/rnew.fish new file mode 100755 index 0000000..743d7fd --- /dev/null +++ b/home-manager/wm/hyprland/scripts/rnew.fish @@ -0,0 +1,8 @@ +#!/usr/bin/env fish + +ranger $argv +set quit_cd_wd_file "$HOME/.ranger_quit_cd_wd" +if test -s "$quit_cd_wd_file" + kitty -d "$(cat $quit_cd_wd_file)" --detach + true >"$quit_cd_wd_file" +end diff --git a/home-manager/wm/hyprland/scripts/rofi-modes b/home-manager/wm/hyprland/scripts/rofi-modes new file mode 100755 index 0000000..1a5bd2e --- /dev/null +++ b/home-manager/wm/hyprland/scripts/rofi-modes @@ -0,0 +1,20 @@ +#!/bin/sh + +case $(echo -e "bitwarden\nclipboard\nemoji\ncalc" | rofi -dmenu) in + emoji) arg=emoji;; + calc) arg=calc;; + clipboard) cliphist list | rofi -dmenu -display-columns 2 | cliphist decode | wl-copy + exit;; + bitwarden) if [[ $XDG_BACKEND == "wayland" ]]; then + typer=wtype + clip=wl-copy + else + typer=xdotool + clip=xclip + fi + rofi-rbw --typer $typer --clip $clip + exit;; + *)exit;; +esac + +rofi -modi $arg -show $arg |
