From cb7729f695c512e017929095b6a0e2beebda3111 Mon Sep 17 00:00:00 2001 From: Raj Sharma Date: Sat, 13 Jul 2024 23:12:03 +0530 Subject: [PATCH] feat: made config simpler --- .config/fish/conf.d/fnm.fish | 7 + .config/fish/config.fish | 4 + .config/fish/fish_variables | 31 ++++ .config/hypr/env.conf | 30 ++++ .config/hypr/hyprland.conf | 144 +++++++++++++++++ .config/hypr/keybinds.conf | 122 ++++++++++++++ .config/hypr/scripts/cliphist.sh | 23 +++ .config/hypr/scripts/colorpicker | 29 ++++ .config/hypr/scripts/dontkillsteam.sh | 5 + .config/hypr/scripts/gamemode.sh | 14 ++ .config/hypr/scripts/modeswitch.sh | 52 ++++++ .config/hypr/scripts/randwall.sh | 2 + .config/hypr/scripts/resetxdgportal.sh | 12 ++ .config/hypr/scripts/screensht | 152 ++++++++++++++++++ .config/hypr/scripts/systemupdate.sh | 27 ++++ .config/hypr/scripts/themeselect.sh | 44 +++++ .config/hypr/scripts/themeswitch.sh | 114 +++++++++++++ .config/hypr/scripts/volumecontrol.sh | 44 +++++ .config/hypr/startup.conf | 14 ++ .config/hypr/windowrule.conf | 64 ++++++++ .config/nvim | 1 + .config/waybar/config.jsonc | 76 +++++++++ .config/waybar/macchiato.css | 26 +++ .config/waybar/mocha.css | 26 +++ .config/waybar/scripts/mediaplayer.py | 135 ++++++++++++++++ .config/waybar/scripts/playerctl/playerctl.sh | 13 ++ .config/waybar/scripts/wlrecord.sh | 35 ++++ .config/waybar/style.css | 137 ++++++++++++++++ .config/wlogout/hibernate-hover.png | Bin 0 -> 9629 bytes .config/wlogout/hibernate.png | Bin 0 -> 17963 bytes .config/wlogout/layout | 36 +++++ .config/wlogout/lock-hover.png | Bin 0 -> 5771 bytes .config/wlogout/lock.png | Bin 0 -> 5771 bytes .config/wlogout/logout-hover.png | Bin 0 -> 3784 bytes .config/wlogout/logout.png | Bin 0 -> 3784 bytes .config/wlogout/power-hover.png | Bin 0 -> 10841 bytes .config/wlogout/power.png | Bin 0 -> 10782 bytes .config/wlogout/restart-hover.png | Bin 0 -> 7810 bytes .config/wlogout/restart.png | Bin 0 -> 7810 bytes .config/wlogout/sleep-hover.png | Bin 0 -> 5721 bytes .config/wlogout/sleep.png | Bin 0 -> 5721 bytes .config/wlogout/style.css | 66 ++++++++ .gitignore | 3 +- 43 files changed, 1487 insertions(+), 1 deletion(-) create mode 100644 .config/fish/conf.d/fnm.fish create mode 100644 .config/fish/config.fish create mode 100644 .config/fish/fish_variables create mode 100644 .config/hypr/env.conf create mode 100644 .config/hypr/hyprland.conf create mode 100644 .config/hypr/keybinds.conf create mode 100755 .config/hypr/scripts/cliphist.sh create mode 100755 .config/hypr/scripts/colorpicker create mode 100755 .config/hypr/scripts/dontkillsteam.sh create mode 100755 .config/hypr/scripts/gamemode.sh create mode 100755 .config/hypr/scripts/modeswitch.sh create mode 100755 .config/hypr/scripts/randwall.sh create mode 100755 .config/hypr/scripts/resetxdgportal.sh create mode 100755 .config/hypr/scripts/screensht create mode 100755 .config/hypr/scripts/systemupdate.sh create mode 100755 .config/hypr/scripts/themeselect.sh create mode 100755 .config/hypr/scripts/themeswitch.sh create mode 100755 .config/hypr/scripts/volumecontrol.sh create mode 100644 .config/hypr/startup.conf create mode 100644 .config/hypr/windowrule.conf create mode 160000 .config/nvim create mode 100644 .config/waybar/config.jsonc create mode 100644 .config/waybar/macchiato.css create mode 100644 .config/waybar/mocha.css create mode 100644 .config/waybar/scripts/mediaplayer.py create mode 100644 .config/waybar/scripts/playerctl/playerctl.sh create mode 100644 .config/waybar/scripts/wlrecord.sh create mode 100644 .config/waybar/style.css create mode 100644 .config/wlogout/hibernate-hover.png create mode 100644 .config/wlogout/hibernate.png create mode 100644 .config/wlogout/layout create mode 100644 .config/wlogout/lock-hover.png create mode 100644 .config/wlogout/lock.png create mode 100644 .config/wlogout/logout-hover.png create mode 100644 .config/wlogout/logout.png create mode 100644 .config/wlogout/power-hover.png create mode 100644 .config/wlogout/power.png create mode 100644 .config/wlogout/restart-hover.png create mode 100644 .config/wlogout/restart.png create mode 100644 .config/wlogout/sleep-hover.png create mode 100644 .config/wlogout/sleep.png create mode 100644 .config/wlogout/style.css diff --git a/.config/fish/conf.d/fnm.fish b/.config/fish/conf.d/fnm.fish new file mode 100644 index 0000000..bf658c3 --- /dev/null +++ b/.config/fish/conf.d/fnm.fish @@ -0,0 +1,7 @@ + +# fnm +set FNM_PATH "/home/raj/.local/share/fnm" +if [ -d "$FNM_PATH" ] + set PATH "$FNM_PATH" $PATH + fnm env | source +end diff --git a/.config/fish/config.fish b/.config/fish/config.fish new file mode 100644 index 0000000..44c894a --- /dev/null +++ b/.config/fish/config.fish @@ -0,0 +1,4 @@ +if status is-interactive + # Commands to run in interactive sessions can go here + zoxide init fish | source +end diff --git a/.config/fish/fish_variables b/.config/fish/fish_variables new file mode 100644 index 0000000..d418b7a --- /dev/null +++ b/.config/fish/fish_variables @@ -0,0 +1,31 @@ +# This file contains fish universal variable definitions. +# VERSION: 3.0 +SETUVAR __fish_initialized:3800 +SETUVAR fish_color_autosuggestion:brblack +SETUVAR fish_color_cancel:\x2dr +SETUVAR fish_color_command:blue +SETUVAR fish_color_comment:red +SETUVAR fish_color_cwd:green +SETUVAR fish_color_cwd_root:red +SETUVAR fish_color_end:green +SETUVAR fish_color_error:brred +SETUVAR fish_color_escape:brcyan +SETUVAR fish_color_history_current:\x2d\x2dbold +SETUVAR fish_color_host:normal +SETUVAR fish_color_host_remote:yellow +SETUVAR fish_color_normal:normal +SETUVAR fish_color_operator:brcyan +SETUVAR fish_color_param:cyan +SETUVAR fish_color_quote:yellow +SETUVAR fish_color_redirection:cyan\x1e\x2d\x2dbold +SETUVAR fish_color_search_match:white\x1e\x2d\x2dbackground\x3dbrblack +SETUVAR fish_color_selection:white\x1e\x2d\x2dbold\x1e\x2d\x2dbackground\x3dbrblack +SETUVAR fish_color_status:red +SETUVAR fish_color_user:brgreen +SETUVAR fish_color_valid_path:\x2d\x2dunderline +SETUVAR fish_key_bindings:fish_default_key_bindings +SETUVAR fish_pager_color_completion:normal +SETUVAR fish_pager_color_description:yellow\x1e\x2di +SETUVAR fish_pager_color_prefix:normal\x1e\x2d\x2dbold\x1e\x2d\x2dunderline +SETUVAR fish_pager_color_progress:brwhite\x1e\x2d\x2dbackground\x3dcyan +SETUVAR fish_pager_color_selected_background:\x2dr diff --git a/.config/hypr/env.conf b/.config/hypr/env.conf new file mode 100644 index 0000000..bca57cb --- /dev/null +++ b/.config/hypr/env.conf @@ -0,0 +1,30 @@ +# Default env vars. +env = XDG_CURRENT_DESKTOP,Hyprland +env = XDG_SESSION_TYPE,wayland +env = XDG_SESSION_DESKTOP,Hyprland + +env = GDK_BACKEND,wayland +env = QT_QPA_PLATFORM,wayland +env = QT_QPA_PLATFORMTHEME,qt6ct #env = QT_STYLE_OVERRIDE,kvantum +env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1 +env = QT_AUTO_SCREEN_SCALE_FACTOR,1 +env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1 + +env = SDL_VIDEODRIVER,wayland +env = _JAVA_AWT_WM_NONREPARENTING,1 +env = WLR_NO_HARDWARE_CURSORS,1 + +env = MOZ_DISABLE_RDD_SANDBOX,1 +env = MOZ_ENABLE_WAYLAND,1 + +env = OZONE_PLATFORM,wayland + +env = wallpaper_path,$HOME/.wallpapers #set wallpaper path + +env = LIBVA_DRIVER_NAME,nvidia +env = GBM_BACKEND,nvidia-drm +env = __GLX_VENDOR_LIBRARY_NAME,nvidia + +cursor { + no_hardware_cursors = true +} diff --git a/.config/hypr/hyprland.conf b/.config/hypr/hyprland.conf new file mode 100644 index 0000000..750aede --- /dev/null +++ b/.config/hypr/hyprland.conf @@ -0,0 +1,144 @@ +# █▀▀ █▄░█ █░█   █░█ ▄▀█ █▀█ +# ██▄ █░▀█ ▀▄▀   ▀▄▀ █▀█ █▀▄ + +source = ~/.config/hypr/startup.conf +source = ~/.config/hypr/env.conf +source = ~/.config/hypr/windowrule.conf +source = ~/.config/hypr/keybinds.conf + + +# █▀▄▀█ █▀█ █▄░█ █ ▀█▀ █▀█ █▀█ +# █░▀░█ █▄█ █░▀█ █ ░█░ █▄█ █▀▄ + +# monitor = DP-1,1366x768@60,0x0,1 +monitor = ,highrr,auto,auto + + + +# █ █▄░█ █▀█ █░█ ▀█▀ +# █ █░▀█ █▀▀ █▄█ ░█░ + +input { + follow_mouse = 1 + sensitivity = 0 # -1.0 - 1.0, 0 means no modification. + force_no_accel = 1 + # repeat_rate = 25 + # repeat_delay = 600 + # accel_profile = flat # flat, adaptive + # natural_scroll = true +} + + + +# █▀▀ █▀▀ █▄░█ █▀▀ █▀█ ▄▀█ █░░ +# █▄█ ██▄ █░▀█ ██▄ █▀▄ █▀█ █▄▄ + +general { + gaps_in = 3 + gaps_out = 6 + border_size = 2 + col.active_border = rgba(e5b9c6ff) rgba(c293a3ff) 45deg + col.inactive_border = 0xff382D2E + no_border_on_floating = false # enable border on float window + layout = dwindle + resize_on_border = true +} + + + +# █▀▄▀█ █ █▀ █▀▀ +# █░▀░█ █ ▄█ █▄▄ + +misc { + disable_hyprland_logo = true + disable_splash_rendering = true + mouse_move_enables_dpms = true + animate_manual_resizes = true + mouse_move_focuses_monitor = true + enable_swallow = true + swallow_regex = ^(alacritty)$ +} + + + +# █▀▄ █▀▀ █▀▀ █▀█ █▀█ ▄▀█ ▀█▀ █ █▀█ █▄░█ +# █▄▀ ██▄ █▄▄ █▄█ █▀▄ █▀█ ░█░ █ █▄█ █░▀█ + +decoration { + + # █▀█ █▀█ █░█ █▄░█ █▀▄   █▀▀ █▀█ █▀█ █▄░█ █▀▀ █▀█ + # █▀▄ █▄█ █▄█ █░▀█ █▄▀   █▄▄ █▄█ █▀▄ █░▀█ ██▄ █▀▄ + rounding = 4 + # multisample_edges = true + + # █▀█ █▀█ ▄▀█ █▀▀ █ ▀█▀ █▄█ + # █▄█ █▀▀ █▀█ █▄▄ █ ░█░ ░█░ + active_opacity = 1.0 + inactive_opacity = 1.0 + + # █▄▄ █░░ █░█ █▀█ + # █▄█ █▄▄ █▄█ █▀▄ + blur { + enabled = true + size = 6 + passes = 3 + new_optimizations = true + xray = true + ignore_opacity = true + } + + # █▀ █░█ ▄▀█ █▀▄ █▀█ █░█░█ + # ▄█ █▀█ █▀█ █▄▀ █▄█ ▀▄▀▄▀ + drop_shadow = false + shadow_ignore_window = true + shadow_offset = 1 2 + shadow_range = 10 + shadow_render_power = 5 + col.shadow = 0x66404040 + + #blurls = gtk-layer-shell + blurls = waybar + blurls = lockscreen +} + + + + +# ▄▀█ █▄░█ █ █▀▄▀█ ▄▀█ ▀█▀ █ █▀█ █▄░█ +# █▀█ █░▀█ █ █░▀░█ █▀█ ░█░ █ █▄█ █░▀█ +animations { + enabled = true + + # █▄▄ █▀▀ ▀█ █ █▀▀ █▀█   █▀▀ █░█ █▀█ █░█ █▀▀ + # █▄█ ██▄ █▄ █ ██▄ █▀▄   █▄▄ █▄█ █▀▄ ▀▄▀ ██▄ + bezier = wind, 0.05, 0.9, 0.1, 1.05 + bezier = winIn, 0.1, 1.1, 0.1, 1.1 + bezier = winOut, 0.3, -0.3, 0, 1 + bezier = liner, 1, 1, 1, 1 + + + #▄▀█ █▄░█ █ █▀▄▀█ ▄▀█ ▀█▀ █ █▀█ █▄░█ + #█▀█ █░▀█ █ █░▀░█ █▀█ ░█░ █ █▄█ █░▀█ + animation = windows, 1, 2, wind, slide + animation = windowsIn, 1, 2, winIn, slide + animation = windowsOut, 1, 2, winOut, slide + animation = windowsMove, 1, 2, wind, slide + animation = border, 1, 1, liner + animation = borderangle, 1, 30, liner, loop + animation = fade, 1, 3, default + animation = workspaces, 1, 2, wind +} + +# █░░ ▄▀█ █▄█ █▀█ █░█ ▀█▀ █▀ +# █▄▄ █▀█ ░█░ █▄█ █▄█ ░█░ ▄█ + +dwindle { + no_gaps_when_only = false + pseudotile = true # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below + preserve_split = true # you probably want this +} + +master { + # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more + # new_is_master = true +} diff --git a/.config/hypr/keybinds.conf b/.config/hypr/keybinds.conf new file mode 100644 index 0000000..54ef31e --- /dev/null +++ b/.config/hypr/keybinds.conf @@ -0,0 +1,122 @@ +# █▄▀ █▀▀ █▄█ █▄▄ █ █▄░█ █▀▄ +# █░█ ██▄ ░█░ █▄█ █ █░▀█ █▄▀ + +$scriptsDir = $HOME/.config/hypr/scripts +$bg-dir = $HOME/.wallpapers +$notifycmd = notify-send -h string:x-canonical-private-synchronous:hypr-cfg -u low + +# IDK +$term = alacritty +$volume = $scriptsDir/volume +$screenshot = $scriptsDir/screensht +$colorpicker = $scriptsDir/colorpicker +$wallcmd = $scriptsDir/randwall.sh +$files = thunar +$browser = brave + +# █▀ █▀▀ █▀█ █▀▀ █▀▀ █▄░█ █▀ █░█ █▀█ ▀█▀ +# ▄█ █▄▄ █▀▄ ██▄ ██▄ █░▀█ ▄█ █▀█ █▄█ ░█░ + +bind = SUPER, v, exec, wf-recorder -f $(xdg-user-dir VIDEOS)/$(date +'%H:%M:%S_%d-%m-%Y.mp4') +bind = SUPER SHIFT, v, exec, killall -s SIGINT wf-recorder +bind = , Print, exec, $screenshot full +bind = SUPERSHIFT, S, exec, $screenshot area + +# █▀▄▀█ █ █▀ █▀▀ +# █░▀░█ █ ▄█ █▄▄ +bind = SUPER SHIFT, X, exec, $colorpicker +bind = CTRL ALT, R, exec, $wallcmd +bind = CTRL ALT, L, exec, swaylock +bind = SUPER, T, exec, $term +bind = SUPER, E, exec, $files +bind = SUPER, Space, exec, killall rofi || rofi -show drun -theme ~/.config/rofi/config.rasi +bind = SUPER, period, exec, killall rofi || rofi -show emoji -emoji-format "{emoji}" -modi emoji -theme ~/.config/rofi/global/emoji +bind = SUPER SHIFT, B, exec, killall -SIGUSR2 waybar # Reload waybar +bind = SUPER, B, exec, killall -SIGUSR1 waybar # Hide waybar + +# █░█░█ █ █▄░█ █▀▄ █▀█ █░█░█   █▀▄▀█ ▄▀█ █▄░█ ▄▀█ █▀▀ █▀▄▀█ █▀▀ █▄░█ ▀█▀ +# ▀▄▀▄▀ █ █░▀█ █▄▀ █▄█ ▀▄▀▄▀   █░▀░█ █▀█ █░▀█ █▀█ █▄█ █░▀░█ ██▄ █░▀█ ░█░ +bind = SUPER, Q, killactive, +bind = SUPER SHIFT, Q, exit, +bind = SUPER, F, fullscreen, +bind = SUPER, W, togglefloating, +bind = SUPER, P, pseudo, # dwindle +bind = SUPER, S, togglesplit, # dwindle + +# Change Workspace Mode +bind = SUPER SHIFT, Space, workspaceopt, allfloat +bind = SUPER SHIFT, Space, exec, $notifycmd 'Toggled All Float Mode' +bind = SUPER SHIFT, P, workspaceopt, allpseudo +bind = SUPER SHIFT, P, exec, $notifycmd 'Toggled All Pseudo Mode' + +bind = SUPER, Tab, cyclenext, +bind = SUPER, Tab, bringactivetotop, + +# █▀▀ █▀█ █▀▀ █░█ █▀ +# █▀░ █▄█ █▄▄ █▄█ ▄█ +bind = SUPER, h, movefocus, l +bind = SUPER, l, movefocus, r +bind = SUPER, k, movefocus, u +bind = SUPER, j, movefocus, d + +# █▀▄▀█ █▀█ █░█ █▀▀ +# █░▀░█ █▄█ ▀▄▀ ██▄ +bind = SUPER SHIFT, left, movewindow, l +bind = SUPER SHIFT, right, movewindow, r +bind = SUPER SHIFT, up, movewindow, u +bind = SUPER SHIFT, down, movewindow, d + +# █▀█ █▀▀ █▀ █ ▀█ █▀▀ +# █▀▄ ██▄ ▄█ █ █▄ ██▄ +bind = SUPER CTRL, left, resizeactive, -20 0 +bind = SUPER CTRL, right, resizeactive, 20 0 +bind = SUPER CTRL, up, resizeactive, 0 -20 +bind = SUPER CTRL, down, resizeactive, 0 20 + +# ▀█▀ ▄▀█ █▄▄ █▄▄ █▀▀ █▀▄ +# ░█░ █▀█ █▄█ █▄█ ██▄ █▄▀ +bind = SUPER, g, togglegroup +bind = SUPER, tab, changegroupactive +bind = SUPER, G, exec, $notifycmd 'Toggled Group Mode' + +# █▀ █▀█ █▀▀ █▀▀ █ ▄▀█ █░░ +# ▄█ █▀▀ ██▄ █▄▄ █ █▀█ █▄▄ +bind = SUPER, a, togglespecialworkspace +bind = SUPERSHIFT, a, movetoworkspace, special +bind = SUPER, a, exec, $notifycmd 'Toggled Special Workspace' +bind = SUPER, c, exec, hyprctl dispatch centerwindow + +# █▀ █░█░█ █ ▀█▀ █▀▀ █░█ +# ▄█ ▀▄▀▄▀ █ ░█░ █▄▄ █▀█ +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 +bind = SUPER ALT, up, workspace, e+1 +bind = SUPER ALT, down, workspace, e-1 + +# █▀▄▀█ █▀█ █░█ █▀▀ +# █░▀░█ █▄█ ▀▄▀ ██▄ +bind = SUPER SHIFT, 1, movetoworkspace, 1 +bind = SUPER SHIFT, 2, movetoworkspace, 2 +bind = SUPER SHIFT, 3, movetoworkspace, 3 +bind = SUPER SHIFT, 4, movetoworkspace, 4 +bind = SUPER SHIFT, 5, movetoworkspace, 5 +bind = SUPER SHIFT, 6, movetoworkspace, 6 +bind = SUPER SHIFT, 7, movetoworkspace, 7 +bind = SUPER SHIFT, 8, movetoworkspace, 8 +bind = SUPER SHIFT, 9, movetoworkspace, 9 +bind = SUPER SHIFT, 0, movetoworkspace, 10 + +# █▀▄▀█ █▀█ █░█ █▀ █▀▀   █▄▄ █ █▄░█ █▀▄ █ █▄░█ █▀▀ +# █░▀░█ █▄█ █▄█ ▄█ ██▄   █▄█ █ █░▀█ █▄▀ █ █░▀█ █▄█ +bindm = SUPER, mouse:272, movewindow +bindm = SUPER, mouse:273, resizewindow +bind = SUPER, mouse_down, workspace, e+1 +bind = SUPER, mouse_up, workspace, e-1 diff --git a/.config/hypr/scripts/cliphist.sh b/.config/hypr/scripts/cliphist.sh new file mode 100755 index 0000000..bac529e --- /dev/null +++ b/.config/hypr/scripts/cliphist.sh @@ -0,0 +1,23 @@ +#!/usr/bin/env sh +roconf="~/.config/rofi/clipboard.rasi" + +case $1 in + c) cliphist list | rofi -dmenu -theme-str 'entry { placeholder: "Copy...";}' -config $roconf | cliphist decode | wl-copy + ;; + d) cliphist list | rofi -dmenu -theme-str 'entry { placeholder: "Delete...";}' -config $roconf | cliphist delete + ;; + w) if [ `echo -e "Yes\nNo" | rofi -dmenu -theme-str 'entry { placeholder: "Clear Clipboard History?";}' -config $roconf` == "Yes" ] ; then + cliphist wipe + fi + ;; + t) echo "" + echo "󰅇 clipboard history" + ;; + *) echo "cliphist.sh [action]" + echo "c : cliphist list and copy selected" + echo "d : cliphist list and delete selected" + echo "w : cliphist wipe database" + echo "t : display tooltip" + ;; +esac + diff --git a/.config/hypr/scripts/colorpicker b/.config/hypr/scripts/colorpicker new file mode 100755 index 0000000..3f7c009 --- /dev/null +++ b/.config/hypr/scripts/colorpicker @@ -0,0 +1,29 @@ +#!/bin/bash + +TMPPCK=$(hyprpicker -a -n) +TMPPST=$(wl-paste) +CMD=$(echo "$TMPPST") +TMP=/tmp/xcolor_$CMD.png + +hyprpick() { + $TMPPCK +} + +check_dependencies() { + ! command -v hyprpicker &>/dev/null && + notify-send -u critical -a "Color Picker" xcolor-pick "gpick needs to be installed" && exit 1 + + ! command -v magick &>/dev/null && + notify-send -u critical -a "Color Picker" xcolor-pick "imagemagick needs to be installed" && exit 1 +} + +main() { + convert -size 120x120 xc:"$CMD" "$TMP" + printf %s "$CMD" | wl-paste + + notify-send -a "Color Picker" -i "$TMP" xcolor-pick "$CMD" +} + +check_dependencies +hyprpick +main diff --git a/.config/hypr/scripts/dontkillsteam.sh b/.config/hypr/scripts/dontkillsteam.sh new file mode 100755 index 0000000..d162ddc --- /dev/null +++ b/.config/hypr/scripts/dontkillsteam.sh @@ -0,0 +1,5 @@ +if [[ $(hyprctl activewindow -j | jq -r ".class") == "Steam" ]]; then + xdotool windowunmap $(xdotool getactivewindow) +else + hyprctl dispatch killactive "" +fi diff --git a/.config/hypr/scripts/gamemode.sh b/.config/hypr/scripts/gamemode.sh new file mode 100755 index 0000000..a07ac4a --- /dev/null +++ b/.config/hypr/scripts/gamemode.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env sh +HYPRGAMEMODE=$(hyprctl getoption animations:enabled | sed -n '2p' | awk '{print $2}') +if [ $HYPRGAMEMODE = 1 ] ; then + hyprctl --batch "\ + keyword animations:enabled 0;\ + keyword decoration:drop_shadow 0;\ + keyword decoration:blur 0;\ + keyword general:gaps_in 0;\ + keyword general:gaps_out 0;\ + keyword general:border_size 1;\ + keyword decoration:rounding 0" + exit +fi +hyprctl reload diff --git a/.config/hypr/scripts/modeswitch.sh b/.config/hypr/scripts/modeswitch.sh new file mode 100755 index 0000000..86898ae --- /dev/null +++ b/.config/hypr/scripts/modeswitch.sh @@ -0,0 +1,52 @@ +#!/usr/bin/env sh + +## main script ## +CFGDIR="$HOME/.config" +X_MODE=$1 + +## check mode ## +if [ "$X_MODE" == "dark" ] || [ "$X_MODE" == "light" ] ; then + S_MODE="$X_MODE" + +elif [ "$X_MODE" == "switch" ] ; then + X_MODE=`readlink $CFGDIR/swww/wall.set | awk -F "." '{print $NF}'` + + if [ "$X_MODE" == "dark" ] ; then + S_MODE="light" + flatpak --user override --env=GTK_THEME=Catppuccin-Latte + + elif [ "$X_MODE" == "light" ] ; then + S_MODE="dark" + flatpak --user override --env=GTK_THEME=Catppuccin-Mocha + + else + echo "ERROR: unable to fetch wallpaper mode." + fi + +else + echo "ERROR: unknown mode, use 'dark', 'light' or 'switch'." + exit 1 +fi + +### hyprland ### +ln -fs $CFGDIR/hypr/${S_MODE}.conf $CFGDIR/hypr/theme.conf +hyprctl reload + +### swwwallpaper ### +x=`echo $S_MODE | cut -c 1` +$CFGDIR/swww/swwwallpaper.sh -$x + +### qt5ct ### +ln -fs $CFGDIR/qt5ct/colors/${S_MODE}.conf $CFGDIR/qt5ct/colors/theme.conf + +### rofi ### +ln -fs $CFGDIR/rofi/${S_MODE}.rasi $CFGDIR/rofi/theme.rasi + +### kitty ### +ln -fs $CFGDIR/kitty/${S_MODE}.conf $CFGDIR/kitty/theme.conf +killall -SIGUSR1 kitty + +### waybar ### +ln -fs $CFGDIR/waybar/${S_MODE}.css $CFGDIR/waybar/style.css +sleep 1 +killall -SIGUSR2 waybar diff --git a/.config/hypr/scripts/randwall.sh b/.config/hypr/scripts/randwall.sh new file mode 100755 index 0000000..7110928 --- /dev/null +++ b/.config/hypr/scripts/randwall.sh @@ -0,0 +1,2 @@ +#/bin/bash +swww img `find -L $wallpaper_path -type f | shuf -n 1` --transition-type any --transition-fps 60 diff --git a/.config/hypr/scripts/resetxdgportal.sh b/.config/hypr/scripts/resetxdgportal.sh new file mode 100755 index 0000000..32983ec --- /dev/null +++ b/.config/hypr/scripts/resetxdgportal.sh @@ -0,0 +1,12 @@ +#!/bin/bash +sleep 1 +killall xdg-desktop-portal-hyprland +killall xdg-desktop-portal-gnome +killall xdg-desktop-portal-kde +killall xdg-desktop-portal-lxqt +killall xdg-desktop-portal-wlr +killall xdg-desktop-portal +sleep 1 +/usr/lib/xdg-desktop-portal-hyprland & +sleep 2 +/usr/lib/xdg-desktop-portal & diff --git a/.config/hypr/scripts/screensht b/.config/hypr/scripts/screensht new file mode 100755 index 0000000..561b1b4 --- /dev/null +++ b/.config/hypr/scripts/screensht @@ -0,0 +1,152 @@ +#!/bin/bash + +set -o pipefail + +# Directory +_SCREENSHOT_DIR_=$HOME/Pictures/Screenshots +_ORIGINAL_DIR_=$_SCREENSHOT_DIR_/Original +_LOG_FILE_="$_SCREENSHOT_DIR_/.screensht.log" +# Color +_FG_COLOR_='#cdd6f4' +_BG_COLOR_='#f5c2e7' +_BG_SIZE_=10 +# Border Size Applied when value greater than or equal 3 +_BORDER_SIZE_=0 +_SHADOW_SIZE_='100x40+0+16' # [ weight ] x [ radius ] + [ horizontal ] x [ vertical ] +_ROUNDED_CORNER_=8 +# Author Config +_AUTHOR_POST_=( 'South' '+0+15' ) +_AUTHOR_NAME_=" $USER" +_AUTHOR_COLOR_='#1e1e2e' +# Get Lists Font With "convert -list font | grep -iE 'font:.*' | nl" +_FONT_SIZE_=12 +_FONT_='JetBrainsMonoNL-NFM-Bold' + +function check() { + if [[ $? -eq 1 && ${PIPESTATUS[0]} -eq 1 ]]; then + _end_job_=$(date +%s) + summary $_start_job_ $_end_job_ 'failed' && dunstify -u critical -t 3000 -a "Screenshot Tool" "Screensht" >> $_LOG_FILE_ 2>&1 + exit 1 + fi +} + +# Check save directory +# Create it if it doesn't exist +function check_dir() { + if [[ ! -d "$_SCREENSHOT_DIR_" || ! -d "$_ORIGINAL_DIR_" ]]; then + mkdir -p "$_SCREENSHOT_DIR_" + mkdir -p "$_ORIGINAL_DIR_" + fi +} + +function get_latest_img() { + _LATEST_IMAGE_=$(/bin/ls -th $_SCREENSHOT_DIR_ | grep -vE '.screensht.png$' | grep -E '.png$' | head -n 1) + + if [[ $( echo "$_LATEST_IMAGE_" | wc -w ) -eq 0 ]]; then + exit 1 + else + _LATEST_IMAGE_="$_SCREENSHOT_DIR_/$_LATEST_IMAGE_" + fi +} + +function convert() { + _target_file_=$( echo "$_LATEST_IMAGE_" | sed 's/.png/.screensht.png/g' ) + + if [[ $_BORDER_SIZE_ -ge 3 ]]; then + magick convert "$_LATEST_IMAGE_" \ + -format 'roundrectangle 1,1 %[fx:w+4],%[fx:h+4] '"$_ROUNDED_CORNER_"','"$_ROUNDED_CORNER_"''\ + info: > $_SCREENSHOT_DIR_/_rounded_.mvg + check + + magick convert "$_LATEST_IMAGE_" -border $_BORDER_SIZE_ -alpha transparent \ + -background none -fill white -stroke none -strokewidth 0 \ + -draw "@"$_SCREENSHOT_DIR_"/_rounded_.mvg" $_SCREENSHOT_DIR_/_rounded_mask_.png >> $_LOG_FILE_ 2>&1 + check + + magick convert "$_LATEST_IMAGE_" -border $_BORDER_SIZE_ -alpha transparent \ + -background none -fill none -stroke $_FG_COLOR_ -strokewidth $_BORDER_SIZE_ \ + -draw "@"$_SCREENSHOT_DIR_"/_rounded_.mvg" $_SCREENSHOT_DIR_/_rounded_overlay_.png >> $_LOG_FILE_ 2>&1 + check + + magick convert "$_LATEST_IMAGE_" -alpha set -bordercolor none -border $_BORDER_SIZE_ \ + $_SCREENSHOT_DIR_/_rounded_mask_.png -compose DstIn -composite \ + $_SCREENSHOT_DIR_/_rounded_overlay_.png -compose Over -composite \ + "$_target_file_" >> $_LOG_FILE_ 2>&1 && \ + rm -f $_SCREENSHOT_DIR_/_rounded_* + check + else + magick convert "$_LATEST_IMAGE_" \( +clone -alpha extract -draw 'fill black polygon 0,0 0,'"$_ROUNDED_CORNER_"' '"$_ROUNDED_CORNER_"',0 fill white circle '"$_ROUNDED_CORNER_"','"$_ROUNDED_CORNER_"' '"$_ROUNDED_CORNER_"',0' \ + \( +clone -flip \) -compose Multiply -composite \ + \( +clone -flop \) -compose Multiply -composite \ + \) -alpha off -compose CopyOpacity -composite -compose over "$_target_file_" >> $_LOG_FILE_ 2>&1 + check + fi + + magick convert "$_target_file_" \( +clone -background black -shadow $_SHADOW_SIZE_ \) +swap -background none -layers merge +repage "$_target_file_" >> $_LOG_FILE_ 2>&1 \ + && magick convert "$_target_file_" -bordercolor $_BG_COLOR_ -border $_BG_SIZE_ "$_target_file_" >> $_LOG_FILE_ 2>&1 + check + + echo -en " $_AUTHOR_NAME_ " | magick convert "$_target_file_" -gravity ${_AUTHOR_POST_[0]} -pointsize $_FONT_SIZE_ -fill $_AUTHOR_COLOR_ -undercolor none -font $_FONT_ -annotate ${_AUTHOR_POST_[1]} @- "$_target_file_" \ + >> $_LOG_FILE_ 2>&1 && magick convert "$_target_file_" -gravity South -chop 0x$(( $_BG_SIZE_ / 2 )) "$_target_file_" >> $_LOG_FILE_ 2>&1 + check + + magick convert "$_target_file_" -gravity North -background $_BG_COLOR_ -splice 0x$(( $_BG_SIZE_ / 2 )) "$_target_file_" >> $_LOG_FILE_ 2>&1 + check + + magick convert "$_target_file_" -profile /usr/share/color/icc/colord/sRGB.icc "$_target_file_" >> $_LOG_FILE_ 2>&1 + check +} + +function summary() { + _runtime_job_=$(($2-$1)) + hours=$((_runtime_job_ / 3600)); minutes=$(( (_runtime_job_ % 3600) / 60 )); seconds=$(( (_runtime_job_ % 3600) % 60 )) + + if [[ $3 != "failed" ]]; then + wl-copy < "$_target_file_" >> $_LOG_FILE_ 2>&1 + + message="${_notif_message_} Runtime: $hours hours, $minutes minutes, $seconds seconds" + dunstify -i "$_target_file_" -t 10000 "Screenshot Tool" "$message" -a "Screenshot Tool" + fi +} + +function main() { + check_dir + + rm -f $_LOG_FILE_ + _start_job_=$(date +%s) + + _screenshot_command_="$1" + _notif_message_="$2" + + $_screenshot_command_ $_SCREENSHOT_DIR_\/$_start_job_.png> /dev/null 2>&1 + check + + get_latest_img + convert + + mv $_LATEST_IMAGE_ $_ORIGINAL_DIR_ + + _end_job_=$(date +%s) + summary $_start_job_ $_end_job_ +} + +# Check the args passed +if [ -z "$1" ] || ([ "$1" != 'full' ] && [ "$1" != 'area' ]); +then + echo " + Requires an argument: + area - Area screenshot + full - Fullscreen screenshot + Example: + ./screensht area + ./screensht full + " +elif [ "$1" = 'full' ]; +then + msg="Full screenshot saved and copied to clipboard!" + main 'grimblast copysave output' "${msg}" +elif [ "$1" = 'area' ]; +then + msg='Area screenshot saved and copied to clipboard!' + main 'grimblast copysave area' "${msg}" +fi diff --git a/.config/hypr/scripts/systemupdate.sh b/.config/hypr/scripts/systemupdate.sh new file mode 100755 index 0000000..0cfd857 --- /dev/null +++ b/.config/hypr/scripts/systemupdate.sh @@ -0,0 +1,27 @@ +#!/usr/bin/env bash + +# Check release +if [ ! -f /etc/arch-release ] ; then + exit 0 +fi + +# Check for updates +aur=$(paru -Qua | wc -l) +ofc=$(pacman -Qu | wc -l) + +# Calculate total available updates +upd=$(( ofc + aur )) +echo "$upd" + +# Show tooltip +if [ $upd -eq 0 ] ; then + echo " Packages are up to date" +else + echo "󱓽 Official $ofc 󱓾 AUR $aur" +fi + +# Trigger upgrade +if [ "$1" == "up" ] ; then + kitty --title systemupdate sh -c 'yay -Syu' +fi + diff --git a/.config/hypr/scripts/themeselect.sh b/.config/hypr/scripts/themeselect.sh new file mode 100755 index 0000000..9d3ce9f --- /dev/null +++ b/.config/hypr/scripts/themeselect.sh @@ -0,0 +1,44 @@ +#!/usr/bin/env sh + +## set variables ## +BaseDir=`dirname $(realpath $0)` +ConfDir="$HOME/.config" +ThemeCtl="$ConfDir/swww/wall.ctl" +ThumbDir="$ConfDir/swww/Themes-Ctl" +RofiConf="$ConfDir/rofi/themeselect.rasi" + + +## show and apply theme ## +if [ -z "$1" ] ; then + + ThemeSel=$(cat $ThemeCtl | while read line + do + thm=`echo $line | cut -d '|' -f 2` + wal=`echo $line | cut -d '|' -f 3` + echo -en "$thm\x00icon\x1f$ThumbDir/${thm}.png\n" + done | rofi -dmenu -config $RofiConf) + + if [ ! -z $ThemeSel ] ; then + ${BaseDir}/themeswitch.sh -s $ThemeSel + fi + +## regenerate thumbnails ## +elif [ "$1" == "T" ] ; then + + echo "refreshing thumbnails..." + cat $ThemeCtl | while read line + do + thm=`echo $line | cut -d '|' -f 2` + wal=`echo $line | cut -d '|' -f 3` + wal=`eval echo $wal` + + echo "croping image from wallpaper $ThumbDir/${thm}_tmp.png..." + convert $wal -gravity Center -crop 1080x1080+0+0 $ThumbDir/${thm}_tmp.png + echo "applying rounded corner mask and generating $ThumbDir/${thm}.png..." + #convert -size 1080x1080 xc:none -draw "roundrectangle 0,0,1080,1080,80,80" $ThumbDir/roundedmask.png + convert $ThumbDir/${thm}_tmp.png -matte $ThumbDir/roundedmask.png -compose DstIn -composite $ThumbDir/${thm}.png + rm $ThumbDir/${thm}_tmp.png + done + +fi + diff --git a/.config/hypr/scripts/themeswitch.sh b/.config/hypr/scripts/themeswitch.sh new file mode 100755 index 0000000..4e9b611 --- /dev/null +++ b/.config/hypr/scripts/themeswitch.sh @@ -0,0 +1,114 @@ +#!/usr/bin/env sh + +## set variables ## +BaseDir=`dirname $(realpath $0)` +ConfDir="$HOME/.config" +ThemeCtl="$ConfDir/swww/wall.ctl" + +## evaluate options ## +while getopts "npst" option ; do + case $option in + + n ) # set next theme + ThemeSet=`head -1 $ThemeCtl | cut -d '|' -f 2` #default value + flg=0 + while read line + do + if [ $flg -eq 1 ] ; then + ThemeSet=`echo $line | cut -d '|' -f 2` + break + elif [ `echo $line | cut -d '|' -f 1` -eq 1 ] ; then + flg=1 + fi + done < $ThemeCtl + ;; + + p ) # set previous theme + ThemeSet=`tail -1 $ThemeCtl | cut -d '|' -f 2` #default value + flg=0 + while read line + do + if [ $flg -eq 1 ] ; then + ThemeSet=`echo $line | cut -d '|' -f 2` + break + elif [ `echo $line | cut -d '|' -f 1` -eq 1 ] ; then + flg=1 + fi + done < <( tac $ThemeCtl ) + export xtrans="outer" + ;; + + s ) # set selected theme + shift $((OPTIND -1)) + ThemeSet=$1 + ;; + + t ) # display tooltip + echo "" + echo "󰆊 Next/Previous Theme" + exit 0 ;; + + * ) # invalid option + echo "n : set next theme" + echo "p : set previous theme" + echo "s : set theme from parameter" + echo "t : display tooltip" + exit 1 ;; + esac +done + +## update theme control ## +if [ `cat $ThemeCtl | awk -F '|' -v thm=$ThemeSet '{if($2==thm) print$2}' | wc -w` -ne 1 ] ; then + echo "Unknown theme selected: $ThemeSet" + echo "Available themes are:" + cat $ThemeCtl | cut -d '|' -f 2 + exit 1 +else + echo "Selected theme: $ThemeSet" + sed -i "s/^1/0/g" $ThemeCtl + awk -F '|' -v thm=$ThemeSet '{OFS=FS} {if($2==thm) $1=1; print$0}' $ThemeCtl > $BaseDir/tmp && mv $BaseDir/tmp $ThemeCtl +fi + + +### swwwallpaper ### +getWall=`grep '^1|' $ThemeCtl | cut -d '|' -f 3` +getWall=`eval echo $getWall` +ln -fs $getWall $ConfDir/swww/wall.set +$ConfDir/swww/swwwallpaper.sh + +if [ $? -ne 0 ] ; then + echo "ERROR: Unable to set wallpaper" + exit 1 +fi + + +### kitty ### +ln -fs $ConfDir/kitty/themes/${ThemeSet}.conf $ConfDir/kitty/themes/theme.conf +killall -SIGUSR1 kitty + + +### qt5ct ### +sed -i "/^color_scheme_path=/c\color_scheme_path=$ConfDir/qt5ct/colors/${ThemeSet}.conf" $ConfDir/qt5ct/qt5ct.conf +IconSet=`awk -F "'" '$0 ~ /gsettings set org.gnome.desktop.interface icon-theme/{print $2}' $ConfDir/hypr/themes/${ThemeSet}.conf` +sed -i "/^icon_theme=/c\icon_theme=${IconSet}" $ConfDir/qt5ct/qt5ct.conf + + +### flatpak GTK ### +flatpak --user override --env=GTK_THEME="${ThemeSet}" +flatpak --user override --env=ICON_THEME="${IconSet}" + + +### rofi ### +ln -fs $ConfDir/rofi/themes/${ThemeSet}.rasi $ConfDir/rofi/themes/theme.rasi + + +### hyprland ### +ln -fs $ConfDir/hypr/themes/${ThemeSet}.conf $ConfDir/hypr/themes/theme.conf +hyprctl reload + + +### waybar ### +ln -fs $ConfDir/waybar/themes/${ThemeSet}.css $ConfDir/waybar/style.css +sleep 1 +killall -SIGUSR2 waybar + diff --git a/.config/hypr/scripts/volumecontrol.sh b/.config/hypr/scripts/volumecontrol.sh new file mode 100755 index 0000000..7826a30 --- /dev/null +++ b/.config/hypr/scripts/volumecontrol.sh @@ -0,0 +1,44 @@ +#!/usr/bin/env sh + +tagVol="notifyvol" + +function notify_vol +{ + vol=`pamixer --get-volume | cat` + #bar=$(seq -s "─" $(($vol / 5)) | sed 's/[0-9]//g') + #dunstify "${vol}%" "$bar" -a "Volume" -r 91190 + + sink=`pamixer --get-default-sink | tail -1 | rev | cut -d '"' -f -2 | rev | sed 's/"//'` + mute=`pamixer --get-mute | cat` + + angle="$(( (($vol+2)/5) * 5 ))" + ico="~/.config/dunst/iconvol/vol-${angle}.svg" + + if [ "$mute" == true ] ; then + dunstify "Muted" -i $ico -a "$sink" -u low -r 91190 -t 800 + + elif [ $vol -ne 0 ] ; then + dunstify -i $ico -a "$sink" -u low -h string:x-dunst-stack-tag:$tagVol \ + -h int:value:"$vol" "Volume: ${vol}%" -r 91190 -t 800 + + else + dunstify -i $ico "Volume: ${vol}%" -a "$sink" -u low -r 91190 -t 800 + fi +} + +case $1 in + i) pamixer -i 5 + notify_vol + ;; + d) pamixer -d 5 + notify_vol + ;; + m) pamixer -t + notify_vol + ;; + *) echo "volumecontrol.sh [action]" + echo "i -- increase volume [+5]" + echo "d -- decrease volume [-5]" + echo "m -- mute [x]" + ;; +esac diff --git a/.config/hypr/startup.conf b/.config/hypr/startup.conf new file mode 100644 index 0000000..62aefd6 --- /dev/null +++ b/.config/hypr/startup.conf @@ -0,0 +1,14 @@ +# █▀▀ ▀▄▀ █▀▀ █▀▀ +# ██▄ █░█ ██▄ █▄▄ +exec-once = ~/.config/hypr/scripts/resetxdgportal.sh # reset XDPH for screenshare +exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP # for XDPH +exec-once = systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP # for XDPH +exec-once = /usr/lib/polkit-kde-authentication-agent-1 # authentication dialogue for GUI apps +exec-once = wlsunset -t 5200 -S 9:00 -s 19:30 # NightLight from 7.30pm to 9am +exec-once = systemctl --user restart pipewire # Restart pipewire to avoid bugs +exec-once=hyprctl setcursor MacOS-Pixel-vr4 20 +exec-once = waybar # launch the system panel +exec-once = dunst # start notification demon +exec-once = wl-paste --type text --watch cliphist store # clipboard store text data +exec-once = wl-paste --type image --watch cliphist store # clipboard store image data +exec-once = swww init || swww img `find $wallpaper_path -type f | shuf -n 1` # Set wallpaper diff --git a/.config/hypr/windowrule.conf b/.config/hypr/windowrule.conf new file mode 100644 index 0000000..ea99505 --- /dev/null +++ b/.config/hypr/windowrule.conf @@ -0,0 +1,64 @@ +# █░█░█ █ █▄░█ █▀▄ █▀█ █░█░█   █▀█ █░█ █░░ █▀▀ █▀ +# ▀▄▀▄▀ █ █░▀█ █▄▀ █▄█ ▀▄▀▄▀   █▀▄ █▄█ █▄▄ ██▄ ▄█ + +# Opacity +windowrulev2 = opacity 0.90 0.90,class:^(Brave-browser)$ +windowrulev2 = opacity 0.80 0.80,class:^(Steam)$ +windowrulev2 = opacity 0.80 0.80,class:^(steam)$ +windowrulev2 = opacity 0.80 0.80,class:^(steamwebhelper)$ +# windowrulev2 = opacity 0.80 0.80,class:^(Spotify)$ +windowrulev2 = opacity 0.80 0.80,class:^(Code)$ +windowrulev2 = opacity 0.80 0.80,class:^(thunar)$ +windowrulev2 = opacity 0.80 0.80,class:^(file-roller)$ +windowrulev2 = opacity 0.80 0.80,class:^(nwg-look)$ +windowrulev2 = opacity 0.80 0.80,class:^(qt5ct)$ +windowrulev2 = opacity 0.80 0.80,class:^(discord)$ #Discord-Electron +windowrulev2 = opacity 0.80 0.80,class:^(WebCord)$ #WebCord-Electron +windowrulev2 = opacity 0.80 0.70,class:^(pavucontrol)$ +windowrulev2 = opacity 0.80 0.70,class:^(org.kde.polkit-kde-authentication-agent-1)$ +windowrulev2 = opacity 0.80 0.80,class:^(org.telegram.desktop)$ + +# Position +windowrulev2 = float,class:^(org.kde.polkit-kde-authentication-agent-1)$ +windowrulev2 = float,class:^(pavucontrol)$ +windowrulev2 = float,title:^(Media viewer)$ +windowrulev2 = float,title:^(Volume Control)$ +windowrulev2 = float,title:^(Picture-in-Picture)$ +windowrulev2 = float,class:^(Viewnior)$ +windowrulev2 = float,title:^(DevTools)$ +windowrulev2 = float,class:^(file_progress)$ +windowrulev2 = float,class:^(confirm)$ +windowrulev2 = float,class:^(dialog)$ +windowrulev2 = float,class:^(download)$ +windowrulev2 = float,class:^(notification)$ +windowrulev2 = float,class:^(error)$ +windowrulev2 = float,class:^(confirmreset)$ +windowrulev2 = float,title:^(Open File)$ +windowrulev2 = float,title:^(branchdialog)$ +windowrulev2 = float,title:^(Confirm to replace files) +windowrulev2 = float,title:^(File Operation Progress) + +windowrulev2 = move 75 44%,title:^(Volume Control)$ + +# Workspace +windowrulev2 = workspace 1, class:^(Brave-browser)$ +windowrulev2 = workspace 2, class:^(discord)$ +windowrulev2 = workspace 3, class:^(org.telegram.desktop)$ +windowrulev2 = workspace 4, class:^(Code)$ +windowrulev2 = workspace 4, class:^(code-url-handler)$ +# windowrulev2 = workspace 5, class:^(Spotify)$ + +# Size +windowrulev2 = size 800 600,class:^(download)$ +windowrulev2 = size 800 600,title:^(Open File)$ +windowrulev2 = size 800 600,title:^(Save File)$ +windowrulev2 = size 800 600,title:^(Volume Control)$ + +windowrulev2 = idleinhibit focus,class:^(mpv)$ +windowrulev2 = idleinhibit fullscreen,class:^(Brave-browser)$ + +# xwaylandvideobridge +windowrulev2 = opacity 0.0 override 0.0 override,class:^(xwaylandvideobridge)$ +windowrulev2 = noanim,class:^(xwaylandvideobridge)$ +windowrulev2 = nofocus,class:^(xwaylandvideobridge)$ +windowrulev2 = noinitialfocus,class:^(xwaylandvideobridge)$ diff --git a/.config/nvim b/.config/nvim new file mode 160000 index 0000000..f83674b --- /dev/null +++ b/.config/nvim @@ -0,0 +1 @@ +Subproject commit f83674b6bde7868ad0467c1c7be2a39068fb278b diff --git a/.config/waybar/config.jsonc b/.config/waybar/config.jsonc new file mode 100644 index 0000000..f3e090d --- /dev/null +++ b/.config/waybar/config.jsonc @@ -0,0 +1,76 @@ +{ + "position": "top", + "margin-top": 4, + "margin-bottom": 0, + "margin-left": 6, + "margin-right": 6, + "height": 24, + "modules-left": ["hyprland/workspaces", "tray"], + "modules-center": ["hyprland/window"], + "modules-right": ["pulseaudio", "network", "cpu", "memory", "clock"], + "hyprland/window": { + "format": "{}", + "max-length": 35, + "rewrite": { + "": "./raj", + }, + "separate-outputs": true, + }, + "hyprland/workspaces": { + "format": "{icon}", + "on-click": "activate", + "format-icons": { + "active": " ", + }, + "sort-by-number": true, + "persistent-workspaces": { + "*": 4, + // "HDMI-A-1": 3, // but only three on HDMI-A-1 + }, + }, + "clock": { + "tooltip-format": "{:%Y %B}\n{calendar}", + "format-alt": "{:%Y-%m-%d}", + }, + "tray": { + "icon-size": 16, + "spacing": 10, + "show-passive-items": true, + }, + "cpu": { + "format": "CPU {usage}%", + "tooltip": false, + }, + "memory": { + "format": "{}%  ", + }, + "temperature": { + "critical-threshold": 80, + "format": "{icon} {temperatureC}°C", + "format-icons": ["", "", ""], + }, + "network": { + "format-wifi": " {signalStrength}%", + "format-ethernet": "{cidr} ", + "tooltip-format": "{ifname} via {gwaddr} ", + "format-linked": "{ifname} (No IP) ", + "format-disconnected": " ⚠ ", + "format-alt": "{ifname}: {ipaddr}/{cidr}", + }, + "pulseaudio": { + "format": "{icon} {volume}%", + "format-bluetooth": "{volume}% {icon} {format_source}", + "format-bluetooth-muted": " {icon} {format_source}", + "format-muted": " {format_source}", + "format-icons": { + "headphone": "", + "hands-free": "", + "headset": "", + "phone": "", + "portable": "", + "car": "", + "default": ["", "", ""], + }, + "on-click": "pavucontrol", + }, +} diff --git a/.config/waybar/macchiato.css b/.config/waybar/macchiato.css new file mode 100644 index 0000000..112ee32 --- /dev/null +++ b/.config/waybar/macchiato.css @@ -0,0 +1,26 @@ +@define-color rosewater #f4dbd6; +@define-color flamingo #f0c6c6; +@define-color pink #f5bde6; +@define-color mauve #c6a0f6; +@define-color red #ed8796; +@define-color maroon #ee99a0; +@define-color peach #f5a97f; +@define-color yellow #eed49f; +@define-color green #a6da95; +@define-color teal #8bd5ca; +@define-color sky #91d7e3; +@define-color sapphire #7dc4e4; +@define-color blue #8aadf4; +@define-color lavender #b7bdf8; +@define-color text #cad3f5; +@define-color subtext1 #b8c0e0; +@define-color subtext0 #a5adcb; +@define-color overlay2 #939ab7; +@define-color overlay1 #8087a2; +@define-color overlay0 #6e738d; +@define-color surface2 #5b6078; +@define-color surface1 #494d64; +@define-color surface0 #363a4f; +@define-color base #24273a; +@define-color mantle #1e2030; +@define-color crust #181926; diff --git a/.config/waybar/mocha.css b/.config/waybar/mocha.css new file mode 100644 index 0000000..75cfb9d --- /dev/null +++ b/.config/waybar/mocha.css @@ -0,0 +1,26 @@ +@define-color rosewater #f5e0dc; +@define-color flamingo #f2cdcd; +@define-color pink #f5c2e7; +@define-color mauve #cba6f7; +@define-color red #f38ba8; +@define-color maroon #eba0ac; +@define-color peach #fab387; +@define-color yellow #f9e2af; +@define-color green #a6e3a1; +@define-color teal #94e2d5; +@define-color sky #89dceb; +@define-color sapphire #74c7ec; +@define-color blue #89b4fa; +@define-color lavender #b4befe; +@define-color text #cdd6f4; +@define-color subtext1 #bac2de; +@define-color subtext0 #a6adc8; +@define-color overlay2 #9399b2; +@define-color overlay1 #7f849c; +@define-color overlay0 #6c7086; +@define-color surface2 #585b70; +@define-color surface1 #45475a; +@define-color surface0 #313244; +@define-color base #1e1e2e; +@define-color mantle #181825; +@define-color crust #11111b; diff --git a/.config/waybar/scripts/mediaplayer.py b/.config/waybar/scripts/mediaplayer.py new file mode 100644 index 0000000..bd67f91 --- /dev/null +++ b/.config/waybar/scripts/mediaplayer.py @@ -0,0 +1,135 @@ +#!/usr/bin/env python3 +from gi.repository import Playerctl, GLib +import argparse +import logging +import sys +import signal +import gi +import json +gi.require_version('Playerctl', '2.0') + +logger = logging.getLogger(__name__) + + +def write_output(text, player, mode): + logger.info('Writing output') + + if mode == 'paused': + output = {'text': text, + 'class': 'paused', + 'alt': player.props.player_name} + else: + output = {'text': text, + 'class': 'playing', + 'alt': player.props.player_name} + + sys.stdout.write(json.dumps(output) + '\n') + sys.stdout.flush() + + +def on_play(player, status, manager): + logger.info('Received new playback status') + on_metadata(player, player.props.metadata, manager) + + +def on_metadata(player, metadata, manager): + logger.info('Received new metadata') + track_info = '' + + if player.props.player_name == 'spotify' and \ + 'mpris:trackid' in metadata.keys() and \ + ':ad:' in player.props.metadata['mpris:trackid']: + track_info = 'AD PLAYING' + elif player.get_artist() != '' and player.get_title() != '': + track_info = '{title}'.format(title=player.get_title()) + else: + track_info = player.get_title() + + if player.props.status != 'Playing' and track_info: + write_output(track_info, player, 'paused') + else: + write_output(track_info, player, 'playing') + + +def on_player_appeared(manager, player, selected_player=None): + if player is not None and (selected_player is None or player.name == selected_player): + init_player(manager, player) + else: + logger.debug( + "New player appeared, but it's not the selected player, skipping") + + +def on_player_vanished(manager, player): + logger.info('Player has vanished') + sys.stdout.write('\n') + sys.stdout.flush() + + +def init_player(manager, name): + logger.debug('Initialize player: {player}'.format(player=name.name)) + player = Playerctl.Player.new_from_name(name) + player.connect('playback-status', on_play, manager) + player.connect('metadata', on_metadata, manager) + manager.manage_player(player) + on_metadata(player, player.props.metadata, manager) + + +def signal_handler(sig, frame): + logger.debug('Received signal to stop, exiting') + sys.stdout.write('\n') + sys.stdout.flush() + # loop.quit() + sys.exit(0) + + +def parse_arguments(): + parser = argparse.ArgumentParser() + + # Increase verbosity with every occurrence of -v + parser.add_argument('-v', '--verbose', action='count', default=0) + + # Define for which player we're listening + parser.add_argument('--player') + + return parser.parse_args() + + +def main(): + arguments = parse_arguments() + + # Initialize logging + logging.basicConfig(stream=sys.stderr, level=logging.DEBUG, + format='%(name)s %(levelname)s %(message)s') + + # Logging is set by default to WARN and higher. + # With every occurrence of -v it's lowered by one + logger.setLevel(max((3 - arguments.verbose) * 10, 0)) + + # Log the sent command line arguments + logger.debug('Arguments received {}'.format(vars(arguments))) + + manager = Playerctl.PlayerManager() + loop = GLib.MainLoop() + + manager.connect('name-appeared', + lambda *args: on_player_appeared(*args, arguments.player)) + manager.connect('player-vanished', on_player_vanished) + + signal.signal(signal.SIGINT, signal_handler) + signal.signal(signal.SIGTERM, signal_handler) + signal.signal(signal.SIGPIPE, signal.SIG_DFL) + + for player in manager.props.player_names: + if arguments.player is not None and arguments.player != player.name: + logger.debug('{player} is not the filtered player, skipping it' + .format(player=player.name) + ) + continue + + init_player(manager, player) + + loop.run() + + +if __name__ == '__main__': + main() diff --git a/.config/waybar/scripts/playerctl/playerctl.sh b/.config/waybar/scripts/playerctl/playerctl.sh new file mode 100644 index 0000000..5c3072d --- /dev/null +++ b/.config/waybar/scripts/playerctl/playerctl.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +playerctl_status=$(playerctl status 2>/dev/null) + +if [[ $playerctl_status == "Playing" ]]; then + title=$(playerctl metadata title 2>/dev/null) + echo '{"text":"󰎈 󰏤","class":"playing","title":"$title"}' +elif [[ $playerctl_status == "Paused" ]]; then + title=$(playerctl metadata title 2>/dev/null) + echo '{"text":"󰎈 󰐊","class":"paused","title":"$title"}' +else + echo '{"text":""}' +fi diff --git a/.config/waybar/scripts/wlrecord.sh b/.config/waybar/scripts/wlrecord.sh new file mode 100644 index 0000000..a003203 --- /dev/null +++ b/.config/waybar/scripts/wlrecord.sh @@ -0,0 +1,35 @@ +#!/bin/sh + +active=$(pacmd list-sources | awk 'c&&!--c;/* index*/{c=1}' | awk '{gsub(/<|>/,"",$0); print $NF}') + +filename=$(date +%F_%T.mkv) + +echo active sink: $active +echo $filename + +if [ -z $(pgrep wf-recorder) ]; + then notify-send "Recording Started ($active)" + if [ "$1" == "-s" ] + then wf-recorder -f $HOME/Videos/wf-recorder/$filename -a "$active" -g "$(slurp -c "#FFFFFF")" >/dev/null 2>&1 & + sleep 2 + while [ ! -z $(pgrep -x slurp) ]; do wait; done + pkill -RTMIN+8 waybar + else if [ "$1" == "-w" ] + then wf-recorder -f $HOME/Videos/wf-recorder/$filename -a "$active" -g "$(swaymsg -t get_tree | jq -r '.. | select(.pid? and .visible?) | .rect | "\(.x),\(.y) \(.width)x\(.height)"' | slurp -c "#FFFFFF" )" >/dev/null 2>&1 & + sleep 2 + while [ ! -z $(pgrep -x slurp) ]; do wait; done + pkill -RTMIN+8 waybar + else + wf-recorder -f $HOME/Videos/wf-recorder/$filename -a "$active" >/dev/null 2>&1 & + pkill -RTMIN+8 waybar + fi + fi +else + killall -s SIGINT wf-recorder + notify-send "Recording Complete" + while [ ! -z $(pgrep -x wf-recorder) ]; do wait; done + pkill -RTMIN+8 waybar + name="$(zenity --entry --text "enter a filename")" + perl-rename "s/\.(mkv|mp4)$/ $name $&/" $(ls -d $HOME/Videos/wf-recorder/* -t | head -n1) +fi + diff --git a/.config/waybar/style.css b/.config/waybar/style.css new file mode 100644 index 0000000..c5505bd --- /dev/null +++ b/.config/waybar/style.css @@ -0,0 +1,137 @@ +@import "mocha.css"; + +* { + font-family: "JetBrainsMono Nerd Font", Roboto, Helvetica, Arial, sans-serif; + font-size: 10px; +} + +window#waybar { + background-color: transparent; + transition-property: background-color; + transition-duration: 0.5s; +} + +button { + /* Use box-shadow instead of border so the text isn't offset */ + box-shadow: inset 0 -3px transparent; + /* Avoid rounded borders under each button name */ + border: none; + border-radius: 0; +} + +/* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */ +button:hover { + background: inherit; + box-shadow: inset 0 -3px #ffffff; +} + +/* you can set a style on hover for any module like this */ +#pulseaudio:hover { + background-color: @surface2; +} + +#workspaces button { + padding: 0 5px; + background-color: transparent; + color: #ffffff; +} + +#workspaces button:hover { + background: rgba(0, 0, 0, 0.2); +} + +#workspaces button.focused { + background-color: @lavender; + box-shadow: inset 0 -3px #ffffff; +} + +#workspaces button.urgent { + background-color: #eb4d4b; +} + +#mode { + background-color: #64727d; + box-shadow: inset 0 -3px #ffffff; +} + +#clock, +#battery, +#cpu, +#memory, +#temperature, +#network, +#pulseaudio { + padding: 0 6px; +} + +#pulseaudio { + color: @maroon; +} + +#network { + color: @yellow; +} + +#temperature { + color: @sky; +} + +#battery { + color: @green; +} + +#clock { + color: @flamingo; +} + +#window { + color: @text; +} + +.modules-right, +.modules-left, +.modules-center { + background-color: @base; + border-radius: 15px; +} + +.modules-right { + padding: 0 10px; +} + +.modules-left { + padding: 0 20px; +} + +.modules-center { + padding: 0 10px; +} +#battery.charging, +#battery.plugged { + color: @sapphire; +} + +@keyframes blink { + to { + color: #000000; + } +} + +/* Using steps() instead of linear as a timing function to limit cpu usage */ +#battery.critical:not(.charging) { + background-color: #f53c3c; + color: #ffffff; + animation-name: blink; + animation-duration: 0.5s; + animation-timing-function: steps(12); + animation-iteration-count: infinite; + animation-direction: alternate; +} + +label:focus { + background-color: #000000; +} + +#pulseaudio.muted { + color: @text; +} diff --git a/.config/wlogout/hibernate-hover.png b/.config/wlogout/hibernate-hover.png new file mode 100644 index 0000000000000000000000000000000000000000..ef813d1e2813bd9d0d7b50fd10a24ea044adddb7 GIT binary patch literal 9629 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 Z=BpAK;a9M7S`-ulERi;5wI&`n{|3+(eklL| literal 0 HcmV?d00001 diff --git a/.config/wlogout/lock.png b/.config/wlogout/lock.png new file mode 100644 index 0000000000000000000000000000000000000000..430451c8df14dd98eac8bc6fd4a9aea3b6a1d8df GIT binary patch literal 5771 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 z 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 literal 0 HcmV?d00001 diff --git a/.config/wlogout/logout.png b/.config/wlogout/logout.png new file mode 100644 index 0000000000000000000000000000000000000000..128c9955b46dcd12fcbb3df8c9d989d1adca1fb7 GIT binary patch literal 3784 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 ALjV8( literal 0 HcmV?d00001 diff --git a/.config/wlogout/power-hover.png b/.config/wlogout/power-hover.png new file mode 100644 index 0000000000000000000000000000000000000000..122d3318ec07cff6a5b2883830d7003491ea9ecf GIT binary patch literal 10841 zcmeHtXH=6}*XWak5NbdWloEPTiXfdx3DOdgB8rp|1v^NI5Q@|%G9w^@6al3Ru^Tl zQI}kfOHx|?C?^VkCy3*@vuX6o&t*sZ&t4PvW zSF}WQWV3G`wY#6Crj}wm!s+feI*-i~Cv!JlnT5CQ*(7j7_&f!zpmKgmNlJ+H@p9C{ zKrVU3^3=k@;rR9={gLGsVi(-GU)pU?&3Rq8>0VCNAnCkp<{c?Ix@SlDRO@=dk{nQ#y524d*ti0jgB*EPkFviKAwGoA9m!sJt0acD`)&)@h z(R~uUeV>sX==ZX?gJUNV9{#eZEGP-m+j*fQS%i$`UgWSnU7s&I@O4 zpQJSNt|;+-ea;d2-povvjLJY0QkKG4EhW>x))Hm4#|-rmJ^uNDJV)OG6Zezj9NTPq zC$hqBtKeg?1c|E_72~g^Dn`X;Cv1b&xZ||x#!hCk#dJTiB1xa*Hpm%shk^>_d2$8N^v%9h-tAKOB{4pPXnh~L?fqL`7{MTjU2aOp z2V`(;8zbm6$?SCM?VSFq5v6rP(Me}S-bF#tBoZ1X; zXWm4(kU&?V2cylG~M$&q$#LV~7B|WgyU3i*j&O5aj z1<$@+4&?o@x`mz1kqia`md)&EXjj@VbxT#yr+#vk^S?#iEAoMs4k)Yf!bJ)oald)M zo@LgTYA0DJGj7+|Iq%cL0~M6%3ENr2Q9Yu%9)ygQo+oyLZLf%M)_N6 zWFtd$eA)*esHaJUEWh*CPt)EZgnZ2oEKq$eZNGqb8n$w)ENtYeYAxxVj%BI1z-2BZ zz+w&ZR$kWTgMoU`^fjnNV4QZ|#Sc6OjIf~t9zprWQ3<|)t`O7B zd;cru+{5wnC41t=laEs*PfTOky^J!3KQmC?OwIxwn?#X((~lfToTN^|(^V-ZoJ|4B z0p6_ML$l9F43}-;CIOmk2iEU_QCHCwziga+UB)+v!>bFaOuIqhm0Ty(dxVud?xx*u zc~}Y0R9}c5x~m6|T=EGpX45$;vn9viLgbJ$CTO6GIPHu(f#B5U!;_?6Nik!4S>}x` zm)A~JV~6sb3bQh>tZY?wJVUf9<+hS6943!hgN>Shv{5PhZM5)d7rBPqgPs$5*F)Si zak2-81wN?xK=c`7Mix_5o-7}7)oM?)0nE(>{d0gzJ)o(K*-9D20x zd5dAwYg1b4B${a_&#hzVR@tAf*Mr84GUq#1lFv65Pi!zoIfgp#t!X#`_cW|$19Rx& zOD7DI4aiK7&|W0_e;499^^7t-=1hwl3pcbm%Vw|pF^}bNyHk!KI9V+qJX3EoLm4lr z<<6KK*#H}^3~Qd+P}wOQ0YfyDv|d*tKO`4(A|Wl|d^1>rqw8;Bk4f14Zb2KQg z@9wcK^ID}}Y(%ewGVOvF1?lTO_l0EPHholrKHkA~he~1w-2k69SfxOWpXKS}iLQ?k zdcfV<8=$GVGn8*vI=)edvZMX;BBG6F_GZ~SW2&EAWF$MJdMxNctHadBmBgVn#dp^l zr`%`HcjTFIW{)<}Z({(bigk$PfxMt@4+h?9*@7?i^hB3;51sT}uXu#P}7yJyQ;~=w{ z?hjp+Da32%;IO?{{Y%2yo`2C0CG2uVzu$s83Sres7qzSDqErKCKucosB7E=x)cAUX zCY9aL0EauKW*ex+xuMq$GW`|D#?#Txp@X-b-nzVlDd3fcQm<4cQ0-g2@Ow}B(+*`+96 zB8{tb$FPlWd95i|`M(!xGsHV6D{0+3oNW@Tta0z|i#J7#KBnptVEU1wB(B1}92u5@ zRgD@ff067(m|tmi12ns|7;gcOWHfh1lbtj+_4ZXdLz5WzApk!%~cg=aY$#BKh zh1MK@snMC(ryKHK8AnJ*SKw|U;~i5uoh`6Sl|Au~AEx9G!0s1&^FE6gAbxT0oraB! zonw&Y=~z{nkCU{y^O21j{LBqZr1mK^xdXD=ircO8YK-9x6t4QoyR0-2k=BAQ~RA$Ire=kkKO8_r$u64SkQ!aaq_WTx0y05ih@S&E2!);nXhS7&&$mQ+3ZtL|Xo5 z$#-?s2Ead(oeaAGKDG_T2Wb01AM_-?Yy~7S&Y0{alk$t$fvVCMyrtJ6zR-s@xvg1P zW=iDQ*UHtQed_)DU|~jarTvv2q~xi~9LO4Pf`@5nydIu#Iih{b$$q5dF~>!#AD{5- zyBx_}S`Fp5XjX?WVC1_AaJsTs>}eK0Q}ol<@7aebH)B zUMf``h$WvFjx?^aKVU*lD0Dpa5;@Q|?h-ga}M6pxqZO*Bwhc|sZ zhaai8?B8`na4*Q;BBF%IX6=qKUPK8|V}|t5zjKlr3N-L1a-bx%3Uz>@O?Co@C$4S} z@(pln&cu4~F%ECSRaBN|e}srVL&s>|=Pb{iqrjek;hi!*26zX@hhruh`tO362%TX` zA0xbjupZR=?qb_}UcW$JCRQ~_r4OkD4u4`;e~ywS1@Ll4vfujB>>V|x7xuBenW{QH zUm1;Gz{Y(?3VcyST?NY`GuzgjeZ5!TU$QPPzApx3e%LY;V!|IkJMl4Nt0i5Y*`kPf? zfHxn8z(GB8@2}xR3F~H;upUqLvU`B@1fR7u)WtiXEqhCQa?uq@pPewb*`5JzKs!yb zV!%XcA`v52`hZs4J)|DU5a&fJQN%l5ZbLsz0-kXs{ZArp5B&tR>4v~Z{idTccZqnY zixS!+esXQ>;?OG9k9KIyeb31#nZN$meQ5AZDF>1{By6RK+wFNz30VsyvU7{P{ooiN zQv}GgZUbbTrk3Oxy>Rex#BFak<@YtfAA%j+)FI0;`vw5mFU1f6qPN=o4NAFJCuRlA z;|+B1O>NQg)lnO=JzzhxwT#mHDL}|a{hz(O*Qv|0CD69~52|csfX+1~xB{j7n&Js) zOL5^nvq#*9)_`!7d~}6PjRWSk%B^B5ZDX3!Tc?Ptr~#n&A!2Y%N$qOM{0(0qiuSFy zKU2YQLjD9I8(raK+1^6m&gTeV{00RdMcj7Z5f8l*oCi6wdf!TR7N*Z`#|jIWfA+qH z;dcDftz&LBXU=PiKTlw1aU_p53K&}A9ku`|cIpF`c$cs$+a277lH67XL-;r$6j&te z@;{4@(G`NgB2!C&y)#-WLF5Sfa$yE`z!9wJ$>1u^A9|14BY(H#FuxwD$N;PZcLh== zie{TwSjxbfK*}6+g;ItyFm^2vVfUyUt^z4a5C@>$K>}=;Wa*$l%1iX;=?CH**9jC2#*~|4dntxG2H;IUo%b2-BXts9yU-aqk6H zvyx?^Pb6KKC|^?2ll-q(Ij>Vq{|{jLkmt1s9jFg+8*rfXtrB&By^jHw=*y8kf74gG z3|#mrpUu61%_qm02zoctLqZg$H8((;`;Z=&OKk31jtOXpyYY2+djsjrb2hwQr2d*Ux%L63?ZlWS65J?rB9r>@4EHfdXMS^GA3BX16>%u#H zYw!X6_<#i2mzvXs!endkP%;uO?PNm@zg%)q5@de_4+0 zZ}^+J(0?^CGyK1_7!h2f>xjwTeDoQJn$a!)*s`@S!L80uAGn%ijWcFz)j1z17~pqF zPc=vdLdCX}pjx>Uct8)`T5|;%?BTJ;h&?shZ$;^NorK3Ju&zxok6Cg?JN=q;)vmS9x!pRDkZdQj9ORlur223DndQ}N$U8Gkw& zpwrFx%bKnNR|fs_;7o9%WxuvI;pe&OrHN7jkcmNpGE*-%h9Hon22Owte-KQS_x?_Q zVM9NnfFQ5HY4Ow%KJrMfou{d#|75Z@4t*E&+p~qQB@eopV@Pkra)tyLC5Nw{e1Y`n zD6x6^GS5snXVBUhp04B{T6jwj#C+j?1oX}l*wk+-I`mWY!mBKhjJ<)EoW2E|JoxJ@ zQ0%l>I)0b^>sy~1b&nT3N31|D&KS9>E@}|J=+h8?wV9Q8dN(C|C%v4a+%s*JuV)Dk zJjb{JlHFCI5MX;2p*=T2X#?6a(b*9#3!gl+8CRip1VtRn9WgB(u{L%AYg5aCN!Ceb zwA!thwjJQo+v1GbMm1kOdC2LovtO-P2x!V!gb>tS{!L}cmqx1QHJ%CI;{R!l`C)5T?FWTb}=iv!s zZCUsNz=+&oXwJWC#c_M$=+AFUJ?2UVj=SNzdsJ!ogrUirnI zUMdJKeO6Z$kOWH(2D_3E>$9gE6`5Z2TQq1U)n<5i(QDMTEN+sbkFYj$fh?fXw@#Br zMjDGHXaVcoviyAwxXh`EPTNapmAC1D@kaBY%>>UjIYt<$60dx&8Q@pUKX-CHC}~QU zP&UBPq#&MK*~%h@x*t@rdR-E(g|7tMK(Sdh28#pb{4pXBn+Sl{g(#* zsO^tyLJ8pZRE~K3DGJ;)xQL`J%e&c~0Oe0bp}YK2-k3UBW#5e)kd???3G*pO9|W!< za}>>%=65S<=W3H?6-5d03Fdf$a)H2OejoAFo4TF9=|F)rW#Q!?`eYJlN7|%gPk>Hh zvKa-Yu$2;9phCw~58xDqoxslmg)F3etU!;vuU}nXp)cw$<*CHWp8?@VB_eB@fWL!X zkw_YSZC4O0w01*aO%MNj8R#Gj&oPpLkgutNO+OeuU)dnx}Yl&*_ar8~lF}>DfJ$DRN1-e_$ z3$wBs7i&|;|9<7#IzI};80P%sc=|~RY9Q<-A{kYXhGpIQi*b%V?Y+vI5Ng);bR_WZ(ck+yv;OFj@6X=t5ca(re(AC+biTi63@=utdAR97oAU#7h2%1Filrcd%O5;nYB7uUaT}=^~g@aCZmTfFvSW{l|ta zw-z+=i;n!p$C_$}wDVT%Y^&x4-c~B87nXk1g{`ch z1T!#1xuo7M@{Vs`sbZvUg@Qyf><;2WGz*$KcGV=~u`VxVOgsd!W{OYSd^(CPRiV3Z zv`$T?=poZ?X;cx>-F1i!gX0?&XHE~?s7fK)6(ExAVnB2$KTAzE(}T{f%5d}e09djP zs1U)ZMVLWi3^VNnIU4LCrm6`@+G`1lv3mHYP^f(zZ)TB@4`#2}cdGbqs27RN!d?#s zqoq|{ax5hcF(UmVe9h|4uM5QZwGK;sH;fY*1!eb}RtZAc4)wXZj^jXS!`Vx2OP9dF zB=a%4%>alvCh|r6RXVmZcV+e$p>8cd>2}jcOhoPY{{`WhP0xCz6 z)%1lAX#>ikcEkDuFC1oblTl#cS}CZV8*O;t0ubnzI5&)bmfXER)O_(2UK^ig0+nma zz_kx0-l03zLHn59;tc;HZ3!F-5x+|;k~Xx(Um8qNWu?dZm*RMK>`IR0Y-uF47_*ri zMoBAbQ??M?s*H2EbNXuIgA+WCimB!0#sqIUFmVgFsZQ^|i1o~CLD~vvIbm|1pOzvc z$1ML^xTb_&?#y}k1q@Lq+$rC1leev@#-v+ndqSJVX10#j-usq($9+;xsWbr08as)< zp<~`eGZtV|U?9=^_?gllW?=lc+VZW9dEhs*FS;Rs@TYdX;$)NP{n3)ZYH|nHc>oxZLSI|wRb}20u-1vZd92Id3 ziFcx{x?pbmK#!}=e#4)*ZV5QX27xTEcLYIsy_dE4Pzw9$9kx~RogM(YzbR;Uu&@Nr zk`|vX!NWd)C_~eXTb1@EQ)pTPicX*Ro4cV*>6Wdjc`*3fUHm(jJCv8;+QxCRadQ)1(0RIPgHxg!_P zP*=c|vmGdFMW|kv8$ihxY=;}SvnD9X(ap2QNWpxb@zonTW}3ZKtL8m)_dadcpP-COoBd=1O}A2)<|94>Rs5E|Bo8LH zs@zzLO4IOBhAM4UL)S4?m@LGf=9+dULOn)eYb8bn2KwDc;1%YavGm|09I5!{-Ay=+ zZUfk#Tr+<3ibsfcJ>kp^VQYU4cDK z7D4BSni%uUz`<63*cQnX20gqqCy?C~+wGnMUN-2tCR66-cw+sQ95a`nnzgdqp4?-dm=6K)zx$;h5=Oyi?26{@1fy$)Nb*4B|8PZu+kM@m2udbSAJv zzy1*Ac9vyXqeg@qz$ix(yu|WOK3Y(~(K=7&9h5n=M;_NI+gi5vxYt!Hv~w5AM>$q* zMx~6ze1iW%WNF#fejB>#108rH$@OA0I4bCK$REbll7}#B;;nM6!aq)tn?Ipy5H+YX z+0A4A<&A$V{$Ph_t{QPkqZ95jKG0x|1ae#@Q)F9TNSPigCi|fBsPSUtLU;eVm8IMl zRo3EDONP37a;Pxt(Mll8!HO7frzftrYq4RpyY4m7c+p#7^_t?kK?T_zQdUd+Rj31= zbd~GW^dpN|3*j2o51iq4Vpp6?{y8wUI%~#_V7~>IQec?&+~7>-5$gu%_K_i|7}SE8 z9Fep7_2`+W_SL6kA@M)wX!rd3v#@GWqXtBmZ9MQmzuEwu_D~Wyj7m@{R3)XDDgO`& zGTsrBJ4o<>Oo)-xendE=l!jH0dTLLz&$gjr_6EV=<+pPNJVw^>OQU%~mSXXK@XQzw zmS2{Wr1L>GR68*%z?x4_zJ#p|djQ>btNMIJ;?MRMH}1zN{@6A{D8B}R&0iLJ6KX@= z7W8qkyt0$1AEREc39e$vC}1tuRb0Jl(60bef3#juHxJY$Iw@ea2>nIki_>t`VNbuE z4dyeq=bV53x<|X;0B!qoJ8l1DAE?mLy9z1#CE!(a`aZO+2gf)=k`_4Sn3^NMyp6jv zz?t0)-qyg|ch1KgEumTrnBqGHcZb87)Ve&a7kgB}Zwyj8a4Ud~%?^C?`KI}(f&g@;45W++dZh;?X1ycgCD^Hyu_+yt{dSYH&5 zAnVRFF_sx#%s|>7;I|SNOh%LUQ?|}L^ntGAeWSV(YtZwTublSP=G(h8C; zw}u;t(i=1|U%T?im*$Of&Us7?6$8Vm8*Xu%e_-o(1?69?*?+}U6s8}Q4caxafRd() z!(W-#2Zh1=N}kf1tyU&P{7a$8Ceeu^SdD#&P?lf4CW~|Or7KtzHJ0&~IfkqXUuZBY z4`dQ|=(9uWKG_WskhGduRX{p=tC)xX%GQ}n)bH@nWOa&Pt1i)H?-4P@EQ#c(5_L$2 z`I30+!5l(Q3FmbEB=`}CGrx7nDLRhucySYo&xw{B)xlqq|BhjG5A0(k0*XSi(01P~ z?=bHqe6;YFg1<_VkuxJ33ss#&rXIw4t&jcU6lYzp9z?pn_}zkR7Ic-jIib#A9sCBM zk?fMAg`LN?$(wKOd3K21!g#?rOPfx}Eqj7g$?Rp(_P^Id&6!BF{=PI|i;&33Edvg8 zCrmB?!_H@%q2^biWM;!yW&^h_uUTAkzr#SPd=K|$N6~h3MM}&)3Li4OXzhw_m>qvg z|DcumLbNA-BJZ%Vmi3xSZiAOCX}#xm2=0LTP)e7uno)lM%0mJHg7v0Bb<{cPi7NZ1 z!A`~vTKMvotTntY{>q@2EL80~NjxPLLeLR3hQCw2DpO3q9AppYl%FBm|1!_k`bG){ z1IOUh8|NN~-Icg2e%Glez(NsM>l{fPfs0`UlEhDD>c%>Ag2n>eL>EJQF$c9}&NGjA ztK%ZAGFwYU7jUZ&6^FgNl~qbd#<7hJ>!SiwK>Wp z`Mk5BNhf)J(*r+Olj%mPkUXjX`TGB{9yrMeg^3iYzRX2A@M}m-ilYzZcp&8j{#e8b z@BtYa8X4*DG}JdVJFwFPzta%EbEmGMA>PpN!+7QJ|3C;0KOS`Q-2aAPXn{91{Rd&^ z`?^N}VcUP7KnV&x5lIOQCI1f`GrXx0-soSPU~OzWz>(wQ><>Rli3yB20ma0`><9`w d6L~C&U+kZxR&qr-LCKQx#otWy|u8Qq#y)A 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 TnM0Cb5oBX&Z&73Bef9qU&dpfM literal 0 HcmV?d00001 diff --git a/.config/wlogout/restart-hover.png b/.config/wlogout/restart-hover.png new file mode 100644 index 0000000000000000000000000000000000000000..3e1853601ef6d61e2d49593f56d4b92d2280453b GIT binary patch literal 7810 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%0D^TMR7k8sOQ9pF4k+?e){3PqY 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 literal 0 HcmV?d00001 diff --git a/.config/wlogout/sleep-hover.png b/.config/wlogout/sleep-hover.png new file mode 100644 index 0000000000000000000000000000000000000000..0fd3badea33fadee1245b528bc04defa9510649d GIT binary patch literal 5721 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 literal 0 HcmV?d00001 diff --git a/.config/wlogout/style.css b/.config/wlogout/style.css new file mode 100644 index 0000000..9f11234 --- /dev/null +++ b/.config/wlogout/style.css @@ -0,0 +1,66 @@ +window { + font-family: monospace; + font-size: 14pt; + color: #cdd6f4; /* text */ + background-color: rgba(30, 30, 46, 0.5); +} + +button { + background-repeat: no-repeat; + background-position: center; + background-size: 25%; + border: none; + background-color: rgba(30, 30, 46, 0); + margin: 5px; + transition: box-shadow 0.2s ease-in-out, background-color 0.2s ease-in-out; +} + +button:hover { + background-color: rgba(49, 50, 68, 0.1); +} + +button:focus { + background-color: #cba6f7; + color: #1e1e2e; +} + +#lock { + background-image: image(url("./lock.png")); +} +#lock:focus { + background-image: image(url("./lock-hover.png")); +} + +#logout { + background-image: image(url("./logout.png")); +} +#logout:focus { + background-image: image(url("./logout-hover.png")); +} + +#suspend { + background-image: image(url("./sleep.png")); +} +#suspend:focus { + background-image: image(url("./sleep-hover.png")); +} + +#shutdown { + background-image: image(url("./power.png")); +} +#shutdown:focus { + background-image: image(url("./power-hover.png")); +} + +#reboot { + background-image: image(url("./restart.png")); +} +#reboot:focus { + background-image: image(url("./restart-hover.png")); +} +#hibernate { + background-image: image(url("./hibernate.png")); +} +#hibernate:focus { + background-image: image(url("./hibernate-hover.png")); +} diff --git a/.gitignore b/.gitignore index 1a7c69d..6a087c6 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ -* +.config/* !.config/nvim +!.config/fish !.config/hypr !.config/waybar !.config/wlogout