diff --git a/private_dot_config/hypr/hypridle.conf b/private_dot_config/hypr/hypridle.conf
new file mode 100644
index 0000000..54e9492
--- /dev/null
+++ b/private_dot_config/hypr/hypridle.conf
@@ -0,0 +1,34 @@
+general {
+ lock_cmd = pidof hyprlock || hyprlock # avoid starting multiple hyprlock instances.
+ before_sleep_cmd = loginctl lock-session # lock before suspend.
+ after_sleep_cmd = hyprctl dispatch dpms on # to avoid having to press a key twice to turn on the display.
+}
+
+listener {
+ timeout = 150 # 2.5min.
+ on-timeout = brightnessctl -s set 5 # set monitor backlight to minimum, avoid 0 on OLED monitor.
+ on-resume = brightnessctl -r # monitor backlight restore.
+}
+
+# turn off keyboard backlight, comment out this section if you dont have a keyboard backlight.
+listener {
+ timeout = 150 # 2.5min.
+ on-timeout = brightnessctl -sd rgb:kbd_backlight set 0 # turn off keyboard backlight.
+ on-resume = brightnessctl -rd rgb:kbd_backlight # turn on keyboard backlight.
+}
+
+listener {
+ timeout = 150 # 5min
+ on-timeout = loginctl lock-session # lock screen when timeout has passed
+}
+
+listener {
+ timeout = 330 # 5.5min
+ on-timeout = hyprctl dispatch dpms off # screen off when timeout has passed
+ on-resume = hyprctl dispatch dpms on # screen on when activity is detected after timeout has fired.
+}
+
+listener {
+ timeout = 600 # 10min
+ on-timeout = systemctl suspend # suspend pc
+}
diff --git a/private_dot_config/hypr/hyprland.conf b/private_dot_config/hypr/hyprland.conf
new file mode 100644
index 0000000..50b3e19
--- /dev/null
+++ b/private_dot_config/hypr/hyprland.conf
@@ -0,0 +1,240 @@
+
+# #######################################################################################
+# AUTOGENERATED HYPR CONFIG.
+# PLEASE USE THE CONFIG PROVIDED IN THE GIT REPO /examples/hypr.conf AND EDIT IT,
+# OR EDIT THIS ONE ACCORDING TO THE WIKI INSTRUCTIONS.
+# #######################################################################################
+
+#
+# Please note not all available settings / options are set here.
+# For a full list, see the wiki
+#
+
+#autogenerated = 0 # remove this line to remove the warning
+
+# See https://wiki.hyprland.org/Configuring/Monitors/
+monitor=,preferred,auto,auto
+
+
+# See https://wiki.hyprland.org/Configuring/Keywords/ for more
+
+# Execute your favorite apps at launch
+exec-once = waybar & hypridle & hyprpaper
+exec-once = wlsunset -l 39.2 -L 118.6
+exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
+exec-once = mako
+exec-once = fcitx5 -d --replace
+exec-once = XDG_MENU_PREFIX=arch- kbuildsycoca6
+exec-once = wl-paste --watch cliphist store #Stores only text data
+exec-once = wl-paste --type image --watch cliphist store
+exec-once = udiskie --appindicator
+exec-once = dbus-update-activation-environment --systemd --all
+exec-once = echo 'Xft.dpi:144' | xrdb -merge
+
+
+# Source a file (multi-file configs)
+# source = ~/.config/hypr/myColors.conf
+
+# Set programs that you use
+$terminal = kitty
+$fileManager = dolphin
+$menu = rofi -show drun
+
+# Some default env vars.
+env = HYPRCURSOR_THEME,Bibata-Modern-Ice
+env = HYPRCURSOR_SIZE,24
+env = XCURSOR_SIZE,24
+env = XCURSOR_THEME,Bibata-Modern-Ice
+env = QT_QPA_PLATFORMTHEME,qt6ct # change to qt6ct if you have that
+env = QT_STYLE_OVERRIDE,kvantum
+env = GTK_THEME,Nordic-bluish-dark
+env = ICON_THEME,Papirus-Dark
+#env = QT_SCALE_FACTOR_ROUNDING_POLICY,Passthrough
+env = QT_AUTO_SCREEN_SCALE_FACTOR,1
+env = LANG,zh_CN.UTF-8
+env = XDG_SESSION_DESKTOP,Hyprland
+env = XDG_MENU_PREFIX,arch-
+
+# For all categories, see https://wiki.hyprland.org/Configuring/Variables/
+input {
+ kb_layout = us
+ kb_variant =
+ kb_model =
+ kb_options =
+ kb_rules =
+
+ follow_mouse = 1
+
+ touchpad {
+ natural_scroll = yes
+ }
+
+ sensitivity = 0 # -1.0 to 1.0, 0 means no modification.
+}
+
+general {
+ # See https://wiki.hyprland.org/Configuring/Variables/ for more
+
+ gaps_in = 5
+ gaps_out = 20
+ border_size = 2
+ col.active_border = rgba(81a1c1ee) 45deg
+ col.inactive_border = rgba(595959aa)
+
+ layout = dwindle
+
+ # Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on
+ allow_tearing = false
+}
+
+decoration {
+ # See https://wiki.hyprland.org/Configuring/Variables/ for more
+
+ rounding = 6
+
+ blur {
+ enabled = true
+ size = 5
+ passes = 1
+ }
+
+ drop_shadow = yes
+ shadow_range = 4
+ shadow_render_power = 3
+ col.shadow = rgba(1a1a1aee)
+}
+
+animations {
+ enabled = yes
+
+ # Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
+
+ bezier = myBezier, 0.05, 0.9, 0.1, 1.05
+
+ animation = windows, 1, 7, myBezier
+ animation = windowsOut, 1, 7, default, popin 80%
+ animation = border, 1, 10, default
+ animation = borderangle, 1, 8, default
+ animation = fade, 1, 7, default
+ animation = workspaces, 1, 6, default
+}
+
+dwindle {
+ # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
+ pseudotile = yes # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
+ preserve_split = yes # you probably want this
+}
+
+master {
+ # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
+ new_is_master = true
+}
+
+gestures {
+ # See https://wiki.hyprland.org/Configuring/Variables/ for more
+ workspace_swipe = on
+}
+
+xwayland {
+ force_zero_scaling = true # fix blur on x apps & use XFT for better scaling
+}
+
+misc {
+ # See https://wiki.hyprland.org/Configuring/Variables/ for more
+ force_default_wallpaper = -1 # Set to 0 or 1 to disable the anime mascot wallpapers
+ vfr = true
+}
+
+# Example per-device config
+# See https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs for more
+
+# Example windowrule v1
+# windowrule = float, ^(kitty)$
+# Example windowrule v2
+# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$
+# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
+windowrulev2 = suppressevent maximize, class:.* # You'll probably like this.
+windowrule = pseudo,fcitx
+# waylyrics windowrule for desktop lyrics
+windowrulev2 = float,class:(io.github.waylyrics.Waylyrics)
+windowrulev2 = pin,class:(io.github.waylyrics.Waylyrics)
+windowrulev2 = nofocus, class:(io.github.waylyrics.Waylyrics)
+windowrulev2 = noblur, class:(io.github.waylyrics.Waylyrics)
+windowrulev2 = noborder, class:(io.github.waylyrics.Waylyrics)
+windowrulev2 = noshadow,class:(io.github.waylyrics.Waylyrics)
+windowrulev2 = pseudo,class:(io.github.waylyrics.Waylyrics)
+windowrulev2 = move 0 40,class:(io.github.waylyrics.Waylyrics)
+windowrulev2 = size 100% 16%,class:(io.github.waylyrics.Waylyrics)
+# waydroid windowrule
+windowrulev2 = noborder,class:(Waydroid)
+windowrulev2 = noshadow,class:(Waydroid)
+windowrulev2 = nomaxsize,class:(Waydroid)
+
+
+# See https://wiki.hyprland.org/Configuring/Keywords/ for more
+$mainMod = SUPER
+
+# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
+bind = $mainMod, Q, exec, $terminal
+bind = $mainMod, C, killactive,
+bind = $mainMod, M, exit,
+bind = $mainMod, E, exec, $fileManager
+bind = $mainMod, F, togglefloating,
+bind = $mainMod, R, exec, $menu
+bind = $mainMod, P, pseudo, # dwindle
+bind = $mainMod, J, togglesplit, # dwindle
+bind = SUPER, V, exec, rofi -modi clipboard:~/.config/rofi/scripts/clip -show clipboard -show-icons
+bind = , PRINT, exec, ~/.config/hypr/scripts/grimblast/screenshot.sh
+bind = $mainMod SHIFT, S, exec, grim -g "$(slurp -d)" - | wl-copy #quick screenshot
+bind = $mainMod, L, exec, hyprlock
+bind = ALT, TAB, exec, rofi -show window
+bind = CTRL + ALT, DELETE, exec, ~/.config/rofi/scripts/powermenu/powermenu.sh
+bind = $mainMod + SHIFT, C, exec, hyprpicker -a
+bind = ALT, SPACE, exec, rofi -show combi -modes combi -combi-modes "drun,run,recursivebrowser"
+# Key binds for volume & brightness
+bind = , XF86AudioRaiseVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ +5%
+bind = , XF86AudioLowerVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ -5%
+bind = , XF86AudioMicMute, exec, pactl set-source-mute @DEFAULT_SOURCE@ toggle
+bind = , XF86MonBrightnessUp, exec, brightnessctl s +5%
+bind = , XF86MonBrightnessDown, exec, brightnessctl s 5%-
+# Move focus with mainMod + arrow keys
+bind = $mainMod, left, movefocus, l
+bind = $mainMod, right, movefocus, r
+bind = $mainMod, up, movefocus, u
+bind = $mainMod, down, movefocus, d
+
+# Switch workspaces with mainMod + [0-9]
+bind = $mainMod, 1, workspace, 1
+bind = $mainMod, 2, workspace, 2
+bind = $mainMod, 3, workspace, 3
+bind = $mainMod, 4, workspace, 4
+bind = $mainMod, 5, workspace, 5
+bind = $mainMod, 6, workspace, 6
+bind = $mainMod, 7, workspace, 7
+bind = $mainMod, 8, workspace, 8
+bind = $mainMod, 9, workspace, 9
+bind = $mainMod, 0, workspace, 10
+
+# Move active window to a workspace with mainMod + SHIFT + [0-9]
+bind = $mainMod SHIFT, 1, movetoworkspace, 1
+bind = $mainMod SHIFT, 2, movetoworkspace, 2
+bind = $mainMod SHIFT, 3, movetoworkspace, 3
+bind = $mainMod SHIFT, 4, movetoworkspace, 4
+bind = $mainMod SHIFT, 5, movetoworkspace, 5
+bind = $mainMod SHIFT, 6, movetoworkspace, 6
+bind = $mainMod SHIFT, 7, movetoworkspace, 7
+bind = $mainMod SHIFT, 8, movetoworkspace, 8
+bind = $mainMod SHIFT, 9, movetoworkspace, 9
+bind = $mainMod SHIFT, 0, movetoworkspace, 10
+
+# Example special workspace (scratchpad)
+bind = $mainMod, S, togglespecialworkspace, magic
+
+
+# Scroll through existing workspaces with mainMod + scroll
+bind = $mainMod, mouse_down, workspace, e+1
+bind = $mainMod, mouse_up, workspace, e-1
+
+# Move/resize windows with mainMod + LMB/RMB and dragging
+bindm = $mainMod, mouse:272, movewindow
+bindm = $mainMod, mouse:273, resizewindow
diff --git a/private_dot_config/hypr/hyprlock.conf b/private_dot_config/hypr/hyprlock.conf
new file mode 100644
index 0000000..9acec21
--- /dev/null
+++ b/private_dot_config/hypr/hyprlock.conf
@@ -0,0 +1,74 @@
+background {
+ monitor =
+ preload = ~/Pictures/download/110039743_p0.png
+ path = ~/Pictures/download/110039743_p0.png # supports png, jpg, webp (no animations, though)
+ color = rgba(25, 20, 20, 1.0)
+
+ # all these options are taken from hyprland, see https://wiki.hyprland.org/Configuring/Variables/#blur for explanations
+ blur_passes = 1 # 0 disables blurring
+ blur_size = 7
+ noise = 0.0117
+ contrast = 0.8916
+ brightness = 0.8172
+ vibrancy = 0.1696
+ vibrancy_darkness = 0.0
+}
+
+input-field {
+ monitor =
+ size = 250, 50
+ outline_thickness = 2
+ dots_size = 0.33 # Scale of input-field height, 0.2 - 0.8
+ dots_spacing = 0.15 # Scale of dots' absolute size, 0.0 - 1.0
+ dots_center = false
+ dots_rounding = -1 # -1 default circle, -2 follow input-field rounding
+ outer_color = rgb(151515)
+ inner_color = rgb(200, 200, 200)
+ font_color = rgb(10, 10, 10)
+ fade_on_empty = true
+ fade_timeout = 1000 # Milliseconds before fade_on_empty is triggered.
+ placeholder_text = Input Password... # Text rendered in the input box when it's empty.
+ hide_input = false
+ rounding = -1 # -1 means complete rounding (circle/oval)
+ check_color = rgb(204, 136, 34)
+ fail_color = rgb(204, 34, 34) # if authentication failed, changes outer_color and fail message color
+ fail_text = $FAIL ($ATTEMPTS) # can be set to empty
+ fail_transition = 300 # transition time in ms between normal outer_color and fail_color
+ capslock_color = rgb(0,0,0)
+ numlock_color = -1
+ bothlock_color = -1 # when both locks are active. -1 means don't change outer color (same for above)
+ invert_numlock = false # change color if numlock is off
+ swap_font_color = false # see below
+
+ position = 0, -20
+ halign = center
+ valign = center
+}
+
+label {
+ monitor =
+ text = $TIME
+ text_align = center # center/right or any value for default left. multi-line text alignment inside label container
+ color = rgba(216, 222, 233, 1.0)
+ font_size = 75
+ font_family = Noto Sans
+ rotate = 0 # degrees, counter-clockwise
+
+ position = 0, 160
+ halign = center
+ valign = center
+}
+
+label {
+ monitor =
+ text = Hi there, $USER
+ text_align = center # center/right or any value for default left. multi-line text alignment inside label container
+ color = rgba(216, 222, 233, 1.0)
+ font_size = 25
+ font_family = Noto Sans
+ rotate = 0 # degrees, counter-clockwise
+
+ position = 0, 80
+ halign = center
+ valign = center
+}
diff --git a/private_dot_config/hypr/hyprpaper.conf b/private_dot_config/hypr/hyprpaper.conf
new file mode 100644
index 0000000..b69677d
--- /dev/null
+++ b/private_dot_config/hypr/hyprpaper.conf
@@ -0,0 +1,18 @@
+preload = ~/Pictures/download/110039743_p0.png
+#if more than one preload is desired then continue to preload other backgrounds
+#preload = /path/to/next_image.png
+# .. more preloads
+
+#set the default wallpaper(s) seen on initial workspace(s) --depending on the number of monitors used
+wallpaper = ,~/Pictures/download/110039743_p0.png
+#if more than one monitor in use, can load a 2nd image
+#wallpaper = monitor2,/path/to/next_image.png
+# .. more monitors
+
+#enable splash text rendering over the wallpaper
+splash = true
+
+#fully disable ipc
+# ipc = off
+
+
diff --git a/private_dot_config/hypr/scripts/grimblast/Makefile b/private_dot_config/hypr/scripts/grimblast/Makefile
new file mode 100644
index 0000000..193ab9f
--- /dev/null
+++ b/private_dot_config/hypr/scripts/grimblast/Makefile
@@ -0,0 +1,20 @@
+DESTDIR ?= /
+PREFIX ?= $(DESTDIR)usr/local
+EXEC_PREFIX ?= $(PREFIX)
+DATAROOTDIR ?= $(PREFIX)/share
+BINDIR ?= $(EXEC_PREFIX)/bin
+MANDIR ?= $(DATAROOTDIR)/man
+MAN1DIR ?= $(MANDIR)/man1
+
+all: grimblast.1
+
+grimblast.1: grimblast.1.scd
+ scdoc < $< > $@
+
+install: grimblast.1 grimblast
+ @install -v -D -m 0644 grimblast.1 --target-directory "$(MAN1DIR)"
+ @install -v -D -m 0755 grimblast --target-directory "$(BINDIR)"
+
+uninstall: grimblast.1 grimblast
+ rm "$(MAN1DIR)/grimblast.1"
+ rm "$(BINDIR)/grimblast"
diff --git a/private_dot_config/hypr/scripts/grimblast/README.md b/private_dot_config/hypr/scripts/grimblast/README.md
new file mode 100644
index 0000000..0abd039
--- /dev/null
+++ b/private_dot_config/hypr/scripts/grimblast/README.md
@@ -0,0 +1,6 @@
+# Grimblast
+
+A Hyprland version of Grimshot.
+
+Install by running the Makefile or just copying the `grimblast` script in your
+`~/.bin`.
diff --git a/private_dot_config/hypr/scripts/grimblast/default.nix b/private_dot_config/hypr/scripts/grimblast/default.nix
new file mode 100644
index 0000000..91e1416
--- /dev/null
+++ b/private_dot_config/hypr/scripts/grimblast/default.nix
@@ -0,0 +1,52 @@
+{
+ lib,
+ stdenvNoCC,
+ makeWrapper,
+ scdoc,
+ coreutils,
+ grim,
+ jq,
+ libnotify,
+ slurp,
+ wl-clipboard,
+ hyprpicker,
+ hyprland ? null,
+}:
+stdenvNoCC.mkDerivation {
+ pname = "grimblast";
+ version = "0.1";
+
+ src = ./.;
+
+ nativeBuildInputs = [
+ makeWrapper
+ ];
+
+ buildInputs = [
+ scdoc
+ ];
+
+ makeFlags = ["PREFIX=$(out)"];
+
+ postInstall = ''
+ wrapProgram $out/bin/grimblast --prefix PATH ':' \
+ "${lib.makeBinPath ([
+ coreutils
+ grim
+ jq
+ libnotify
+ slurp
+ wl-clipboard
+ hyprpicker
+ ]
+ ++ lib.optional (hyprland != null) hyprland)}"
+ '';
+
+ meta = with lib; {
+ description = "A helper for screenshots within Hyprland, based on grimshot";
+ license = licenses.mit;
+ platforms = platforms.unix;
+ maintainers = with maintainers; [misterio77];
+ mainProgram = "grimblast";
+ };
+}
diff --git a/private_dot_config/hypr/scripts/grimblast/dot_gitignore b/private_dot_config/hypr/scripts/grimblast/dot_gitignore
new file mode 100644
index 0000000..d3501c5
--- /dev/null
+++ b/private_dot_config/hypr/scripts/grimblast/dot_gitignore
@@ -0,0 +1 @@
+grimblast.1
diff --git a/private_dot_config/hypr/scripts/grimblast/executable_grimblast b/private_dot_config/hypr/scripts/grimblast/executable_grimblast
new file mode 100644
index 0000000..cedcc41
--- /dev/null
+++ b/private_dot_config/hypr/scripts/grimblast/executable_grimblast
@@ -0,0 +1,280 @@
+#!/usr/bin/env bash
+## Grimblast: a helper for screenshots within hyprland
+## Requirements:
+## - `grim`: screenshot utility for wayland
+## - `slurp`: to select an area
+## - `hyprctl`: to read properties of current window (provided by Hyprland)
+## - `hyprpicker`: to freeze the screen when selecting area
+## - `wl-copy`: clipboard utility (provided by wl-clipboard)
+## - `jq`: json utility to parse hyprctl output
+## - `notify-send`: to show notifications (provided by libnotify)
+## Those are needed to be installed, if unsure, run `grimblast check`
+##
+## See `man 1 grimblast` or `grimblast usage` for further details.
+
+## Author: Misterio (https://github.com/misterio77)
+
+## This tool is based on grimshot, with swaymsg commands replaced by their
+## hyprctl equivalents.
+## https://github.com/swaywm/sway/blob/master/contrib/grimshot
+
+getTargetDirectory() {
+ test -f "${XDG_CONFIG_HOME:-$HOME/.config}/user-dirs.dirs" &&
+ . "${XDG_CONFIG_HOME:-$HOME/.config}/user-dirs.dirs"
+
+ echo "${XDG_SCREENSHOTS_DIR:-${XDG_PICTURES_DIR/screenshots:-$HOME}}"
+}
+
+tmp_editor_directory() {
+ echo "/tmp"
+}
+
+#Detect if $GRIMBLAST_EDITOR env exist
+env_editor_confirm() {
+ if [ -n "$GRIMBLAST_EDITOR" ]; then
+ echo "GRIMBLAST_EDITOR is set. Continuing..."
+ else
+ echo "GRIMBLAST_EDITOR is not set. Defaulting to satty..."
+ GRIMBLAST_EDITOR=satty
+ fi
+}
+
+NOTIFY=no
+CURSOR=
+FREEZE=
+WAIT=no
+SCALE=
+HYPRPICKER_PID=-1
+
+while [ $# -gt 0 ]; do
+ key="$1"
+
+ case $key in
+ -n | --notify)
+ NOTIFY=yes
+ shift # past argument
+ ;;
+ -c | --cursor)
+ CURSOR=yes
+ shift # past argument
+ ;;
+ -f | --freeze)
+ FREEZE=yes
+ shift # past argument
+ ;;
+ -w | --wait)
+ shift
+ WAIT=$1
+ if echo "$WAIT" | grep "[^0-9]" -q; then
+ echo "Invalid value for wait '$WAIT'" >&2
+ exit 3
+ fi
+ shift
+ ;;
+ -s | --scale)
+ shift # past argument
+ if [ $# -gt 0 ]; then
+ SCALE="$1" # assign the next argument to SCALE
+ shift # past argument
+ else
+ echo "Error: Missing argument for --scale option."
+ exit 1
+ fi
+ ;;
+ *) # unknown option
+ break # done with parsing --flags
+ ;;
+ esac
+done
+
+ACTION=${1:-usage}
+SUBJECT=${2:-screen}
+FILE=${3:-$(getTargetDirectory)/$(date -Ins).png}
+FILE_EDITOR=${3:-$(tmp_editor_directory)/$(date -Ins).png}
+
+if [ "$ACTION" != "save" ] && [ "$ACTION" != "copy" ] && [ "$ACTION" != "edit" ] && [ "$ACTION" != "copysave" ] && [ "$ACTION" != "check" ]; then
+ echo "Usage:"
+ echo " grimblast [--notify] [--cursor] [--freeze] [--wait N] [--scale ] (copy|save|copysave|edit) [active|screen|output|area] [FILE|-]"
+ echo " grimblast check"
+ echo " grimblast usage"
+ echo ""
+ echo "Commands:"
+ echo " copy: Copy the screenshot data into the clipboard."
+ echo " save: Save the screenshot to a regular file or '-' to pipe to STDOUT."
+ echo " copysave: Combine the previous 2 options."
+ echo " edit: Open screenshot in the image editor of your choice (default is satty). See man page for info."
+ echo " check: Verify if required tools are installed and exit."
+ echo " usage: Show this message and exit."
+ echo ""
+ echo "Targets:"
+ echo " active: Currently active window."
+ echo " screen: All visible outputs."
+ echo " output: Currently active output."
+ echo " area: Manually select a region or window."
+ exit
+fi
+
+notify() {
+ notify-send -t 3000 -a grimblast "$@"
+}
+
+notifyOk() {
+ [ "$NOTIFY" = "no" ] && return
+
+ notify "$@"
+}
+
+notifyError() {
+ if [ $NOTIFY = "yes" ]; then
+ TITLE=${2:-"Screenshot"}
+ MESSAGE=${1:-"Error taking screenshot with grim"}
+ notify -u critical "$TITLE" "$MESSAGE"
+ else
+ echo "$1"
+ fi
+}
+
+resetFade() {
+ if [[ -n $FADELAYERS ]]; then
+ hyprctl keyword animation "$FADELAYERS" >/dev/null
+ fi
+}
+
+killHyprpicker() {
+ if [ ! $HYPRPICKER_PID -eq -1 ]; then
+ kill $HYPRPICKER_PID
+ fi
+}
+
+die() {
+ killHyprpicker
+ MSG=${1:-Bye}
+ notifyError "Error: $MSG"
+ exit 2
+}
+
+check() {
+ COMMAND=$1
+ if command -v "$COMMAND" >/dev/null 2>&1; then
+ RESULT="OK"
+ else
+ RESULT="NOT FOUND"
+ fi
+ echo " $COMMAND: $RESULT"
+}
+
+takeScreenshot() {
+ FILE=$1
+ GEOM=$2
+ OUTPUT=$3
+ if [ -n "$OUTPUT" ]; then
+ grim ${CURSOR:+-c} ${SCALE:+-s "$SCALE"} -o "$OUTPUT" "$FILE" || die "Unable to invoke grim"
+ elif [ -z "$GEOM" ]; then
+ grim ${CURSOR:+-c} ${SCALE:+-s "$SCALE"} "$FILE" || die "Unable to invoke grim"
+ else
+ grim ${CURSOR:+-c} ${SCALE:+-s "$SCALE"} -g "$GEOM" "$FILE" || die "Unable to invoke grim"
+ resetFade
+ fi
+}
+
+wait() {
+ if [ "$WAIT" != "no" ]; then
+ sleep "$WAIT"
+ fi
+}
+
+if [ "$ACTION" = "check" ]; then
+ echo "Checking if required tools are installed. If something is missing, install it to your system and make it available in PATH..."
+ check grim
+ check slurp
+ check hyprctl
+ check hyprpicker
+ check wl-copy
+ check jq
+ check notify-send
+ exit
+elif [ "$SUBJECT" = "active" ]; then
+ wait
+ FOCUSED=$(hyprctl activewindow -j)
+ GEOM=$(echo "$FOCUSED" | jq -r '"\(.at[0]),\(.at[1]) \(.size[0])x\(.size[1])"')
+ APP_ID=$(echo "$FOCUSED" | jq -r '.class')
+ WHAT="$APP_ID window"
+elif [ "$SUBJECT" = "screen" ]; then
+ wait
+ GEOM=""
+ WHAT="Screen"
+elif [ "$SUBJECT" = "output" ]; then
+ wait
+ GEOM=""
+ OUTPUT=$(hyprctl monitors -j | jq -r '.[] | select(.focused == true)' | jq -r '.name')
+ WHAT="$OUTPUT"
+elif [ "$SUBJECT" = "area" ]; then
+ if [ "$FREEZE" = "yes" ] && [ "$(command -v "hyprpicker")" ] >/dev/null 2>&1; then
+ hyprpicker -r -z &
+ sleep 0.2
+ HYPRPICKER_PID=$!
+ fi
+
+ # get fade & fadeOut animation and unset it
+ # this removes the black border seen around screenshots
+ FADELAYERS="$(hyprctl -j animations | jq -jr '.[0][] | select(.name == "fadeLayers") | .name, ",", (if .enabled == true then "1" else "0" end), ",", (.speed|floor), ",", .bezier')"
+ hyprctl keyword animation 'fadeLayers,0,1,default' >/dev/null
+
+ WORKSPACES="$(hyprctl monitors -j | jq -r 'map(.activeWorkspace.id)')"
+ WINDOWS="$(hyprctl clients -j | jq -r --argjson workspaces "$WORKSPACES" 'map(select([.workspace.id] | inside($workspaces)))')"
+ # shellcheck disable=2086 # if we don't split, spaces mess up slurp
+ GEOM=$(echo "$WINDOWS" | jq -r '.[] | "\(.at[0]),\(.at[1]) \(.size[0])x\(.size[1])"' | slurp $SLURP_ARGS)
+
+ # Check if user exited slurp without selecting the area
+ if [ -z "$GEOM" ]; then
+ killHyprpicker
+ resetFade
+ exit 1
+ fi
+ WHAT="Area"
+ wait
+elif [ "$SUBJECT" = "window" ]; then
+ die "Subject 'window' is now included in 'area'"
+else
+ die "Unknown subject to take a screen shot from" "$SUBJECT"
+fi
+
+if [ "$ACTION" = "copy" ]; then
+ takeScreenshot - "$GEOM" "$OUTPUT" | wl-copy --type image/png || die "Clipboard error"
+ notifyOk "$WHAT copied to buffer"
+elif [ "$ACTION" = "save" ]; then
+ if takeScreenshot "$FILE" "$GEOM" "$OUTPUT"; then
+ TITLE="Screenshot of $SUBJECT"
+ MESSAGE=$(basename "$FILE")
+ notifyOk "$TITLE" "$MESSAGE" -i "$FILE"
+ echo "$FILE"
+ else
+ notifyError "Error taking screenshot with grim"
+ fi
+elif [ "$ACTION" = "edit" ]; then
+ env_editor_confirm
+ if takeScreenshot "$FILE_EDITOR" "$GEOM" "$OUTPUT"; then
+ TITLE="Screenshot of $SUBJECT"
+ MESSAGE="Open screenshot in image editor"
+ notifyOk "$TITLE" "$MESSAGE" -i "$FILE_EDITOR"
+ if [ "$GRIMBLAST_EDITOR" != 'satty' ]; then
+ $GRIMBLAST_EDITOR $FILE_EDITOR
+ else
+ $GRIMBLAST_EDITOR -f "$FILE_EDITOR" --copy-command wl-copy --early-exit --output-filename $(xdg-user-dir PICTURES)/ScreenShoots/satty_$(date +"%Y%m%d%H%M%S").png
+ fi
+ echo "$FILE_EDITOR"
+ rm "$FILE_EDITOR"
+ else
+ notifyError "Error taking screenshot"
+ fi
+else
+ if [ "$ACTION" = "copysave" ]; then
+ takeScreenshot - "$GEOM" "$OUTPUT" | tee "$FILE" | wl-copy --type image/png || die "Clipboard error"
+ notifyOk "$WHAT copied to buffer and saved to $FILE" -i "$FILE"
+ echo "$FILE"
+ else
+ notifyError "Error taking screenshot with grim"
+ fi
+fi
+
+killHyprpicker
diff --git a/private_dot_config/hypr/scripts/grimblast/executable_screenshot.sh b/private_dot_config/hypr/scripts/grimblast/executable_screenshot.sh
new file mode 100644
index 0000000..9a018a4
--- /dev/null
+++ b/private_dot_config/hypr/scripts/grimblast/executable_screenshot.sh
@@ -0,0 +1,220 @@
+#!/usr/bin/env bash
+
+## Author : Aditya Shakya (adi1090x)
+## Github : @adi1090x
+#
+## Applets : Screenshot (Ported to use Grimblast)
+
+## Modify
+## Author : Gonçalo Duarte (MrDuartePT)
+## Github : @MrDuartePT
+
+## Port for Grimblast (https://github.com/hyprwm/contrib/tree/main/grimblast)
+## Aur Package: grimblast-git (https://aur.archlinux.org/packages/grimblast-git)
+
+## Add this to the ~/.config/user-dirs.dirs to save in the Screenshots folder: XDG_SCREENSHOTS_DIR="$HOME/Screenshots"
+
+prompt='Screenshot'
+mesg="DIR: ~/Pictures/screenshots"
+
+# Options
+option_1=" Capture"
+option_2=" Timer capture"
+
+option_capture_1=" All Screen"
+option_capture_2=" Capture Active Screen"
+option_capture_3=" Capture Area/Window/Application"
+
+option_time_1="5s"
+option_time_2="10s"
+option_time_3="20s"
+option_time_4="30s"
+option_time_5="60s"
+#option_time_4="Custom (in seconds)" # Roadmap or someone contribute :)
+
+list_col='1'
+list_row='2'
+win_width='500px'
+
+copy=' Copy'
+save=' Save'
+copy_save='Copy & Save'
+edit='Edit Screenshot'
+
+# Rofi CMD
+rofi_cmd() {
+ rofi -theme-str "window {width: $win_width;}" \
+ -theme-str "listview {columns: $list_col; lines: $list_row;}" \
+ -theme-str 'textbox-prompt-colon {str: "";}' \
+ -dmenu \
+ -p "$prompt" \
+ -mesg "$mesg" \
+ -markup-rows
+}
+
+# Pass variables to rofi dmenu
+run_rofi() {
+ echo -e "$option_1\n$option_2" | rofi_cmd
+}
+
+####
+# Choose Timer
+# CMD
+timer_cmd() {
+ rofi -theme-str 'window {location: center; anchor: center; fullscreen: false; width: 400px;}' \
+ -theme-str 'mainbox {orientation: vertical; children: [ "message", "listview" ];}' \
+ -theme-str 'listview {columns: 1; lines: 5;}' \
+ -theme-str 'element-text {horizontal-align: 0.5;}' \
+ -theme-str 'textbox {horizontal-align: 0.5;}' \
+ -dmenu \
+ -p 'Choose Option' \
+ -mesg 'Choose timer:'
+}
+
+# Ask for confirmation
+timer_exit() {
+ echo -e "$option_time_1\n$option_time_2\n$option_time_3\n$option_time_4\n$option_time_5" | timer_cmd
+}
+
+# Confirm and execute
+timer_run() {
+ selected_timer="$(timer_exit)"
+ if [[ "$selected_timer" == "$option_time_1" ]]; then
+ countdown=5
+ ${1}
+ elif [[ "$selected_timer" == "$option_time_2" ]]; then
+ countdown=10
+ ${1}
+ elif [[ "$selected_timer" == "$option_time_3" ]]; then
+ countdown=20
+ ${1}
+ elif [[ "$selected_timer" == "$option_time_4" ]]; then
+ countdown=30
+ ${1}
+ elif [[ "$selected_timer" == "$option_time_5" ]]; then
+ countdown=60
+ ${1}
+ fi
+}
+###
+
+####
+# Chose Screenshot Type
+# CMD
+type_screenshot_cmd() {
+ rofi -theme-str 'window {location: center; anchor: center; fullscreen: false; width: 400px;}' \
+ -theme-str 'mainbox {orientation: vertical; children: [ "message", "listview" ];}' \
+ -theme-str 'listview {columns: 1; lines: 3;}' \
+ -theme-str 'element-text {horizontal-align: 0.5;}' \
+ -theme-str 'textbox {horizontal-align: 0.5;}' \
+ -dmenu \
+ -p 'Choose Option' \
+ -mesg 'Type Of Screenshot:'
+}
+
+# Ask for confirmation
+type_screenshot_exit() {
+ echo -e "$option_capture_1\n$option_capture_2\n$option_capture_3" | type_screenshot_cmd
+}
+
+# Confirm and execute
+type_screenshot_run() {
+ selected_type_screenshot="$(type_screenshot_exit)"
+ if [[ "$selected_type_screenshot" == "$option_capture_1" ]]; then
+ option_type_screenshot=screen
+ ${1}
+ elif [[ "$selected_type_screenshot" == "$option_capture_2" ]]; then
+ option_type_screenshot=output
+ ${1}
+ elif [[ "$selected_type_screenshot" == "$option_capture_3" ]]; then
+ option_type_screenshot=area
+ ${1}
+ fi
+}
+###
+
+####
+# Choose to save or copy photo
+# CMD
+copy_save_editor_cmd() {
+ rofi -theme-str 'window {location: center; anchor: center; fullscreen: false; width: 400px;}' \
+ -theme-str 'mainbox {orientation: vertical; children: [ "message", "listview" ];}' \
+ -theme-str 'listview {columns: 2; lines: 2;}' \
+ -theme-str 'element-text {horizontal-align: 0.5;}' \
+ -theme-str 'textbox {horizontal-align: 0.5;}' \
+ -dmenu \
+ -p 'Choose Option' \
+ -mesg 'Copy/save the screenshot or open in image editor'
+}
+
+# Ask for confirmation
+copy_save_editor_exit() {
+ echo -e "$copy\n$save\n$copy_save\n$edit" | copy_save_editor_cmd
+}
+
+# Confirm and execute
+copy_save_editor_run() {
+ selected_chosen="$(copy_save_editor_exit)"
+ if [[ "$selected_chosen" == "$copy" ]]; then
+ option_chosen=copy
+ ${1}
+ elif [[ "$selected_chosen" == "$save" ]]; then
+ option_chosen=save
+ ${1}
+ elif [[ "$selected_chosen" == "$copy_save" ]]; then
+ option_chosen=copysave
+ ${1}
+ elif [[ "$selected_chosen" == "$edit" ]]; then
+ option_chosen=edit
+ ${1}
+ fi
+}
+###
+
+timer() {
+ if [[ $countdown -gt 10 ]]; then
+ notify-send -t 1000 "Taking Screenshot in ${countdown} seconds"
+ countdown_less_10=$((countdown - 10))
+ sleep $countdown_less_10
+ countdown=10
+ fi
+ while [[ $countdown -ne 0 ]]; do
+ notify-send -t 1000 "Taking Screenshot in ${countdown}"
+ countdown=$((countdown - 1))
+ sleep 1
+ done
+}
+
+# take shots
+takescreenshot() {
+ sleep 1
+ $HOME/.config/hypr/scripts/grimblast/grimblast --notify "$option_chosen" "$option_type_screenshot"
+}
+
+takescreenshot_timer() {
+ timer
+ $HOME/.config/hypr/scripts/grimblast/grimblast --notify "$option_chosen" "$option_type_screenshot"
+}
+
+# Execute Command
+run_cmd() {
+ if [[ "$1" == '--opt1' ]]; then
+ type_screenshot_run
+ copy_save_editor_run "takescreenshot"
+ elif [[ "$1" == '--opt2' ]]; then
+ timer_run
+ type_screenshot_run
+ copy_save_editor_run "takescreenshot_timer"
+ fi
+}
+
+# Actions
+chosen="$(run_rofi)"
+case ${chosen} in
+$option_1)
+ run_cmd --opt1
+ ;;
+$option_2)
+ run_cmd --opt2
+ ;;
+esac
diff --git a/private_dot_config/hypr/scripts/grimblast/grimblast.1.scd b/private_dot_config/hypr/scripts/grimblast/grimblast.1.scd
new file mode 100644
index 0000000..1b49a6c
--- /dev/null
+++ b/private_dot_config/hypr/scripts/grimblast/grimblast.1.scd
@@ -0,0 +1,110 @@
+grimblast(1)
+
+# NAME
+
+grimblast - a helper for screenshots within hyprland
+
+# SYNOPSIS
+
+*grimblast* [--notify] [--cursor] [--freeze] [--wait N] [--scale ] (copy|save|copysave|edit) [TARGET] [FILE]++
+*grimblast* check++
+*grimblast* usage
+
+# OPTIONS
+
+*--notify*
+ Show notifications to the user that a screenshot has been taken.
+
+*--cursor*
+ Include cursors in the screenshot.
+
+*--freeze*
+ Freezes the screen before area selection.
+
+*--wait N*
+ Wait for N seconds before taking a screenshot. Waits after any
+ manual selection is made. Recommended to combine with --notify in
+ order to know when the screenshot has been taken.
+
+*--scale *
+ Passes the `-s` argument to `grim`.
+
+*save*
+ Save the screenshot into a regular file. Grimblast will write image
+ files to *XDG_SCREENSHOTS_DIR* if this is set (or defined
+ in *user-dirs.dir*), or otherwise fall back to *XDG_PICTURES_DIR*.
+ Set FILE to '-' to pipe the output to STDOUT.
+
+*copy*
+ Copy the screenshot data (as image/png) into the clipboard.
+
+*copysave*
+ Combine the previous 2 options.
+
+*edit*
+ Open screenshot in the image editor of your choice. The default is
+ gimp, but you can set a different one with the enviroment variable
+ $GRIMBLAST_EDITOR. Example: `export GRIMBLAST_EDITOR=gimp`.
+
+*check*
+ Verify whether the required tools are installed.
+
+*usage*
+ Show help message.
+
+# DESCRIPTION
+
+Grimblast is an easy-to-use screenshot utility for hyprland, based on grimshot.
+It provides a convenient interface over grim, slurp and jq, and supports
+storing the screenshot either directly to the clipboard using wl-copy or to a
+file.
+
+# TARGETS
+
+grimblast can capture the following named targets:
+
+_active_
+ Captures the currently active window.
+
+_screen_
+ Captures the entire screen. This includes all visible outputs.
+
+_area_
+ Allows manually selecting a rectangular region or window (by clicking on it),
+ and captures that.
+ Slurp can be customized by setting its arguments in the *SLURP_ARGS*
+ environment variable.
+
+_output_
+ Captures the currently active output.
+
+# OUTPUT
+
+Grimblast will print the filename of the captured screenshot to stdout if called
+with the _save_ subcommand.
+
+# EXAMPLES
+
+An example usage pattern is to add these bindings to your hyprland config:
+
+```
+# Screenshots:
+# Super+P: Current window
+# Super+Shift+p: Select area
+# Super+Alt+p Current output
+# Super+Ctrl+p All outputs
+
+# Optionally, customize slurp's appearance
+env = SLURP_ARGS, -d -b -B F050F022 -b 10101022 -c ff00ff
+
+bind = SUPER, p, exec, grimblast save active
+bind = SUPER SHIFT, p, exec, grimblast save area
+bind = SUPER ALT, p, exec, grimblast save output
+bind = SUPER CTRL, p, exec, grimblast save screen
+```
+
+# SEE ALSO
+
+*grim*(1)
+*slurp*(1)
+*grimshot*(1)
diff --git a/private_dot_config/mako/config b/private_dot_config/mako/config
new file mode 100644
index 0000000..0dfdee9
--- /dev/null
+++ b/private_dot_config/mako/config
@@ -0,0 +1,13 @@
+max-history=25
+sort=-priority
+sort=-time
+
+font=sans 10
+background-color=#284C566A
+border-radius=10
+default-timeout=5000
+
+on-notify=exec paplay /usr/share/sounds/freedesktop/stereo/message.oga
+
+[mode=do-not-disturb]
+invisible=1
diff --git a/private_dot_config/rofi/config.rasi b/private_dot_config/rofi/config.rasi
new file mode 100644
index 0000000..db97ecd
--- /dev/null
+++ b/private_dot_config/rofi/config.rasi
@@ -0,0 +1,24 @@
+configuration {
+ font: "Sarasa Mono SC Nerd Font 10";
+ line-margin: 10;
+
+ display-ssh: "";
+ display-run: "";
+ display-drun: "";
+ display-window: "";
+ display-combi: "";
+ display-recursivebrowser: "";
+ show-icons: true;
+}
+
+
+@theme "~/.config/rofi/nord.rasi"
+
+listview {
+ lines: 6;
+ columns: 1;
+}
+
+window {
+ width: 50%;
+}
diff --git a/private_dot_config/rofi/nord.rasi b/private_dot_config/rofi/nord.rasi
new file mode 100644
index 0000000..9398c1f
--- /dev/null
+++ b/private_dot_config/rofi/nord.rasi
@@ -0,0 +1,132 @@
+/**
+ * Nordic rofi theme
+ * Adapted by undiabler
+ *
+ * Nord Color palette imported from https://www.nordtheme.com/
+ *
+ */
+
+
+* {
+ nord0: #2e3440;
+ nord1: #3b4252;
+ nord2: #434c5e;
+ nord3: #4c566a;
+
+ nord4: #d8dee9;
+ nord5: #e5e9f0;
+ nord6: #eceff4;
+
+ nord7: #8fbcbb;
+ nord8: #88c0d0;
+ nord9: #81a1c1;
+ nord10: #5e81ac;
+ nord11: #bf616a;
+
+ nord12: #d08770;
+ nord13: #ebcb8b;
+ nord14: #a3be8c;
+ nord15: #b48ead;
+
+ foreground: @nord9;
+ backlight: #ccffeedd;
+ background-color: transparent;
+
+ highlight: underline bold #eceff4;
+
+ transparent: rgba(46,52,64,0);
+}
+
+window {
+ location: center;
+ anchor: center;
+ transparency: "screenshot";
+ padding: 10px;
+ border: 0px;
+ border-radius: 6px;
+
+ background-color: @transparent;
+ spacing: 0;
+ children: [mainbox];
+ orientation: horizontal;
+}
+
+mainbox {
+ spacing: 0;
+ children: [ inputbar, message, listview ];
+}
+
+message {
+ color: @nord0;
+ padding: 5;
+ border-color: @foreground;
+ border: 0px 2px 2px 2px;
+ background-color: @nord9;
+}
+
+inputbar {
+ color: @nord6;
+ padding: 11px;
+ background-color: #3b4252;
+
+ border: 1px;
+ border-radius: 6px 6px 0px 0px;
+ border-color: @nord10;
+}
+
+entry, prompt, case-indicator {
+ text-font: inherit;
+ text-color:inherit;
+}
+
+prompt {
+ margin: 0px 1em 0em 0em ;
+ padding: 5px 5px;
+}
+
+entry {
+ padding: 5px 5px;
+}
+
+listview {
+ padding: 8px;
+ border-radius: 0px 0px 6px 6px;
+ border-color: @nord10;
+ border: 0px 1px 1px 1px;
+ background-color: rgba(46,52,64,0.9);
+ dynamic: false;
+}
+
+element {
+ padding: 3px;
+ vertical-align: 0.5;
+ border-radius: 4px;
+ background-color: transparent;
+ color: @foreground;
+ text-color: rgb(216, 222, 233);
+}
+
+element selected.normal {
+ background-color: @nord9;
+ text-color: #2e3440;
+}
+
+element-text, element-icon {
+ background-color: inherit;
+ text-color: inherit;
+}
+
+button {
+ padding: 6px;
+ color: @foreground;
+ horizontal-align: 0.5;
+
+ border: 2px 0px 2px 2px;
+ border-radius: 4px 0px 0px 4px;
+ border-color: @foreground;
+}
+
+button selected normal {
+ border: 2px 0px 2px 2px;
+ border-color: @foreground;
+}
diff --git a/private_dot_config/rofi/scripts/executable_clip b/private_dot_config/rofi/scripts/executable_clip
new file mode 100644
index 0000000..d11fadf
--- /dev/null
+++ b/private_dot_config/rofi/scripts/executable_clip
@@ -0,0 +1,22 @@
+#!/usr/bin/env bash
+
+tmp_dir="/tmp/cliphist"
+rm -rf "$tmp_dir"
+
+if [[ -n "$1" ]]; then
+ cliphist decode <<<"$1" | wl-copy
+ exit
+fi
+
+mkdir -p "$tmp_dir"
+
+read -r -d '' prog <$tmp_dir/"grp[1]"."grp[3])
+ print \$0"\0icon\x1f$tmp_dir/"grp[1]"."grp[3]
+ next
+}
+1
+EOF
+cliphist list | gawk "$prog"
diff --git a/private_dot_config/rofi/scripts/powermenu-unusable.tar.zst b/private_dot_config/rofi/scripts/powermenu-unusable.tar.zst
new file mode 100644
index 0000000..56905aa
Binary files /dev/null and b/private_dot_config/rofi/scripts/powermenu-unusable.tar.zst differ
diff --git a/private_dot_config/rofi/scripts/powermenu/executable_powermenu.sh b/private_dot_config/rofi/scripts/powermenu/executable_powermenu.sh
new file mode 100644
index 0000000..d8df4e7
--- /dev/null
+++ b/private_dot_config/rofi/scripts/powermenu/executable_powermenu.sh
@@ -0,0 +1,94 @@
+#!/usr/bin/env bash
+
+## Author : Aditya Shakya (adi1090x)
+## Github : @adi1090x
+#
+## Rofi : Power Menu
+#
+## Available Styles
+#
+## style-1 style-2 style-3 style-4 style-5
+
+# Current Theme
+dir="$HOME/.config/rofi/scripts/powermenu/"
+theme='style'
+
+# CMDs
+uptime="`uptime -p | sed -e 's/up //g'`"
+host=`hostname`
+
+# Options
+shutdown=''
+reboot=''
+lock=''
+suspend=''
+logout=''
+yes=''
+no=''
+
+# Rofi CMD
+rofi_cmd() {
+ rofi -dmenu \
+ -p "${USER}" \
+ -mesg "Uptime: $uptime" \
+ -theme ${dir}/${theme}.rasi
+}
+
+# Confirmation CMD
+confirm_cmd() {
+ rofi -dmenu \
+ -p 'Confirmation' \
+ -mesg 'Are you Sure?' \
+ -theme ${dir}/shared/confirm.rasi
+}
+
+# Ask for confirmation
+confirm_exit() {
+ echo -e "$yes\n$no" | confirm_cmd
+}
+
+# Pass variables to rofi dmenu
+run_rofi() {
+ echo -e "$lock\n$suspend\n$logout\n$reboot\n$shutdown" | rofi_cmd
+}
+
+# Execute Command
+run_cmd() {
+ selected="$(confirm_exit)"
+ if [[ "$selected" == "$yes" ]]; then
+ if [[ $1 == '--shutdown' ]]; then
+ systemctl poweroff
+ elif [[ $1 == '--reboot' ]]; then
+ systemctl reboot
+ elif [[ $1 == '--suspend' ]]; then
+ mpc -q pause
+ amixer set Master mute
+ systemctl suspend
+ elif [[ $1 == '--logout' ]]; then
+ loginctl terminate-session ${XDG_SESSION_ID-}
+ #hyprctl dispatch exit #only works for hyprland, the loginctl Command seems a little buggy
+ fi
+ else
+ exit 0
+ fi
+}
+
+# Actions
+chosen="$(run_rofi)"
+case ${chosen} in
+ $shutdown)
+ run_cmd --shutdown
+ ;;
+ $reboot)
+ run_cmd --reboot
+ ;;
+ $lock)
+ loginctl lock-session ${XDG_SESSION_ID-}
+ ;;
+ $suspend)
+ run_cmd --suspend
+ ;;
+ $logout)
+ run_cmd --logout
+ ;;
+esac
diff --git a/private_dot_config/rofi/scripts/powermenu/shared/colors.rasi b/private_dot_config/rofi/scripts/powermenu/shared/colors.rasi
new file mode 100644
index 0000000..d93bffd
--- /dev/null
+++ b/private_dot_config/rofi/scripts/powermenu/shared/colors.rasi
@@ -0,0 +1,18 @@
+/**
+ *
+ * Author : Aditya Shakya (adi1090x)
+ * Github : @adi1090x
+ *
+ * Colors
+ *
+ * Available Colors Schemes
+ *
+ * adapta catppuccin everforest navy paper
+ * arc cyberpunk gruvbox nord solarized
+ * black dracula lovelace onedark yousai
+ *
+ **/
+
+/* Import color-scheme from `colors` directory */
+
+@import "./colors/nord.rasi"
diff --git a/private_dot_config/rofi/scripts/powermenu/shared/colors/adapta.rasi b/private_dot_config/rofi/scripts/powermenu/shared/colors/adapta.rasi
new file mode 100644
index 0000000..dcde9e5
--- /dev/null
+++ b/private_dot_config/rofi/scripts/powermenu/shared/colors/adapta.rasi
@@ -0,0 +1,16 @@
+/**
+ *
+ * Author : Aditya Shakya (adi1090x)
+ * Github : @adi1090x
+ *
+ * Colors
+ **/
+
+* {
+ background: #222D32FF;
+ background-alt: #29353BFF;
+ foreground: #B8C2C6FF;
+ selected: #00BCD4FF;
+ active: #21FF90FF;
+ urgent: #FF4B60FF;
+}
diff --git a/private_dot_config/rofi/scripts/powermenu/shared/colors/arc.rasi b/private_dot_config/rofi/scripts/powermenu/shared/colors/arc.rasi
new file mode 100644
index 0000000..0dfb773
--- /dev/null
+++ b/private_dot_config/rofi/scripts/powermenu/shared/colors/arc.rasi
@@ -0,0 +1,16 @@
+/**
+ *
+ * Author : Aditya Shakya (adi1090x)
+ * Github : @adi1090x
+ *
+ * Colors
+ **/
+
+* {
+ background: #2F343FFF;
+ background-alt: #383C4AFF;
+ foreground: #BAC5D0FF;
+ selected: #5294E2FF;
+ active: #98C379FF;
+ urgent: #E06B74FF;
+}
diff --git a/private_dot_config/rofi/scripts/powermenu/shared/colors/black.rasi b/private_dot_config/rofi/scripts/powermenu/shared/colors/black.rasi
new file mode 100644
index 0000000..fa7b76f
--- /dev/null
+++ b/private_dot_config/rofi/scripts/powermenu/shared/colors/black.rasi
@@ -0,0 +1,16 @@
+/**
+ *
+ * Author : Aditya Shakya (adi1090x)
+ * Github : @adi1090x
+ *
+ * Colors
+ **/
+
+* {
+ background: #000000FF;
+ background-alt: #101010FF;
+ foreground: #FFFFFFFF;
+ selected: #62AEEFFF;
+ active: #98C379FF;
+ urgent: #E06B74FF;
+}
diff --git a/private_dot_config/rofi/scripts/powermenu/shared/colors/catppuccin.rasi b/private_dot_config/rofi/scripts/powermenu/shared/colors/catppuccin.rasi
new file mode 100644
index 0000000..62c5945
--- /dev/null
+++ b/private_dot_config/rofi/scripts/powermenu/shared/colors/catppuccin.rasi
@@ -0,0 +1,16 @@
+/**
+ *
+ * Author : Aditya Shakya (adi1090x)
+ * Github : @adi1090x
+ *
+ * Colors
+ **/
+
+* {
+ background: #1E1D2FFF;
+ background-alt: #282839FF;
+ foreground: #D9E0EEFF;
+ selected: #7AA2F7FF;
+ active: #ABE9B3FF;
+ urgent: #F28FADFF;
+}
diff --git a/private_dot_config/rofi/scripts/powermenu/shared/colors/cyberpunk.rasi b/private_dot_config/rofi/scripts/powermenu/shared/colors/cyberpunk.rasi
new file mode 100644
index 0000000..f5fa0e7
--- /dev/null
+++ b/private_dot_config/rofi/scripts/powermenu/shared/colors/cyberpunk.rasi
@@ -0,0 +1,16 @@
+/**
+ *
+ * Author : Aditya Shakya (adi1090x)
+ * Github : @adi1090x
+ *
+ * Colors
+ **/
+
+* {
+ background: #000B1EFF;
+ background-alt: #0A1528FF;
+ foreground: #0ABDC6FF;
+ selected: #0ABDC6FF;
+ active: #00FF00FF;
+ urgent: #FF0000FF;
+}
diff --git a/private_dot_config/rofi/scripts/powermenu/shared/colors/dracula.rasi b/private_dot_config/rofi/scripts/powermenu/shared/colors/dracula.rasi
new file mode 100644
index 0000000..7ae606d
--- /dev/null
+++ b/private_dot_config/rofi/scripts/powermenu/shared/colors/dracula.rasi
@@ -0,0 +1,16 @@
+/**
+ *
+ * Author : Aditya Shakya (adi1090x)
+ * Github : @adi1090x
+ *
+ * Colors
+ **/
+
+* {
+ background: #1E1F29FF;
+ background-alt: #282A36FF;
+ foreground: #FFFFFFFF;
+ selected: #BD93F9FF;
+ active: #50FA7BFF;
+ urgent: #FF5555FF;
+}
diff --git a/private_dot_config/rofi/scripts/powermenu/shared/colors/everforest.rasi b/private_dot_config/rofi/scripts/powermenu/shared/colors/everforest.rasi
new file mode 100644
index 0000000..83d4f71
--- /dev/null
+++ b/private_dot_config/rofi/scripts/powermenu/shared/colors/everforest.rasi
@@ -0,0 +1,16 @@
+/**
+ *
+ * Author : Aditya Shakya (adi1090x)
+ * Github : @adi1090x
+ *
+ * Colors
+ **/
+
+* {
+ background: #323D43FF;
+ background-alt: #3C474DFF;
+ foreground: #DAD1BEFF;
+ selected: #7FBBB3FF;
+ active: #A7C080FF;
+ urgent: #E67E80FF;
+}
diff --git a/private_dot_config/rofi/scripts/powermenu/shared/colors/gruvbox.rasi b/private_dot_config/rofi/scripts/powermenu/shared/colors/gruvbox.rasi
new file mode 100644
index 0000000..2ee85d0
--- /dev/null
+++ b/private_dot_config/rofi/scripts/powermenu/shared/colors/gruvbox.rasi
@@ -0,0 +1,16 @@
+/**
+ *
+ * Author : Aditya Shakya (adi1090x)
+ * Github : @adi1090x
+ *
+ * Colors
+ **/
+
+* {
+ background: #282828FF;
+ background-alt: #353535FF;
+ foreground: #EBDBB2FF;
+ selected: #83A598FF;
+ active: #B8BB26FF;
+ urgent: #FB4934FF;
+}
diff --git a/private_dot_config/rofi/scripts/powermenu/shared/colors/lovelace.rasi b/private_dot_config/rofi/scripts/powermenu/shared/colors/lovelace.rasi
new file mode 100644
index 0000000..80140ee
--- /dev/null
+++ b/private_dot_config/rofi/scripts/powermenu/shared/colors/lovelace.rasi
@@ -0,0 +1,16 @@
+/**
+ *
+ * Author : Aditya Shakya (adi1090x)
+ * Github : @adi1090x
+ *
+ * Colors
+ **/
+
+* {
+ background: #1D1F28FF;
+ background-alt: #282A36FF;
+ foreground: #FDFDFDFF;
+ selected: #79E6F3FF;
+ active: #5ADECDFF;
+ urgent: #F37F97FF;
+}
diff --git a/private_dot_config/rofi/scripts/powermenu/shared/colors/navy.rasi b/private_dot_config/rofi/scripts/powermenu/shared/colors/navy.rasi
new file mode 100644
index 0000000..1289f53
--- /dev/null
+++ b/private_dot_config/rofi/scripts/powermenu/shared/colors/navy.rasi
@@ -0,0 +1,16 @@
+/**
+ *
+ * Author : Aditya Shakya (adi1090x)
+ * Github : @adi1090x
+ *
+ * Colors
+ **/
+
+* {
+ background: #021B21FF;
+ background-alt: #0C252BFF;
+ foreground: #F2F1B9FF;
+ selected: #44B5B1FF;
+ active: #7CBF9EFF;
+ urgent: #C2454EFF;
+}
diff --git a/private_dot_config/rofi/scripts/powermenu/shared/colors/nord.rasi b/private_dot_config/rofi/scripts/powermenu/shared/colors/nord.rasi
new file mode 100644
index 0000000..c6bc05d
--- /dev/null
+++ b/private_dot_config/rofi/scripts/powermenu/shared/colors/nord.rasi
@@ -0,0 +1,16 @@
+/**
+ *
+ * Author : Aditya Shakya (adi1090x)
+ * Github : @adi1090x
+ *
+ * Colors
+ **/
+
+* {
+ background: #2E3440FF;
+ background-alt: #383E4AFF;
+ foreground: #E5E9F0FF;
+ selected: #81A1C1FF;
+ active: #A3BE8CFF;
+ urgent: #BF616AFF;
+}
diff --git a/private_dot_config/rofi/scripts/powermenu/shared/colors/onedark.rasi b/private_dot_config/rofi/scripts/powermenu/shared/colors/onedark.rasi
new file mode 100644
index 0000000..7c76108
--- /dev/null
+++ b/private_dot_config/rofi/scripts/powermenu/shared/colors/onedark.rasi
@@ -0,0 +1,16 @@
+/**
+ *
+ * Author : Aditya Shakya (adi1090x)
+ * Github : @adi1090x
+ *
+ * Colors
+ **/
+
+* {
+ background: #1E2127FF;
+ background-alt: #282B31FF;
+ foreground: #FFFFFFFF;
+ selected: #61AFEFFF;
+ active: #98C379FF;
+ urgent: #E06C75FF;
+}
diff --git a/private_dot_config/rofi/scripts/powermenu/shared/colors/paper.rasi b/private_dot_config/rofi/scripts/powermenu/shared/colors/paper.rasi
new file mode 100644
index 0000000..c3d76e8
--- /dev/null
+++ b/private_dot_config/rofi/scripts/powermenu/shared/colors/paper.rasi
@@ -0,0 +1,16 @@
+/**
+ *
+ * Author : Aditya Shakya (adi1090x)
+ * Github : @adi1090x
+ *
+ * Colors
+ **/
+
+* {
+ background: #F1F1F1FF;
+ background-alt: #E0E0E0FF;
+ foreground: #252525FF;
+ selected: #008EC4FF;
+ active: #10A778FF;
+ urgent: #C30771FF;
+}
diff --git a/private_dot_config/rofi/scripts/powermenu/shared/colors/solarized.rasi b/private_dot_config/rofi/scripts/powermenu/shared/colors/solarized.rasi
new file mode 100644
index 0000000..9051e13
--- /dev/null
+++ b/private_dot_config/rofi/scripts/powermenu/shared/colors/solarized.rasi
@@ -0,0 +1,16 @@
+/**
+ *
+ * Author : Aditya Shakya (adi1090x)
+ * Github : @adi1090x
+ *
+ * Colors
+ **/
+
+* {
+ background: #002B36FF;
+ background-alt: #073642FF;
+ foreground: #EEE8D5FF;
+ selected: #268BD2FF;
+ active: #859900FF;
+ urgent: #DC322FFF;
+}
diff --git a/private_dot_config/rofi/scripts/powermenu/shared/colors/tokyonight.rasi b/private_dot_config/rofi/scripts/powermenu/shared/colors/tokyonight.rasi
new file mode 100644
index 0000000..1145cbd
--- /dev/null
+++ b/private_dot_config/rofi/scripts/powermenu/shared/colors/tokyonight.rasi
@@ -0,0 +1,16 @@
+/**
+ *
+ * Author : Levi Lacoss (fishyfishfish55)
+ * Github : @fishyfishfish55
+ *
+ * Colors
+ **/
+
+* {
+ background: #15161EFF;
+ background-alt: #1A1B26FF;
+ foreground: #C0CAF5FF;
+ selected: #33467CFF;
+ active: #414868FF;
+ urgent: #F7768EFF;
+}
diff --git a/private_dot_config/rofi/scripts/powermenu/shared/colors/yousai.rasi b/private_dot_config/rofi/scripts/powermenu/shared/colors/yousai.rasi
new file mode 100644
index 0000000..757cab3
--- /dev/null
+++ b/private_dot_config/rofi/scripts/powermenu/shared/colors/yousai.rasi
@@ -0,0 +1,16 @@
+/**
+ *
+ * Author : Aditya Shakya (adi1090x)
+ * Github : @adi1090x
+ *
+ * Colors
+ **/
+
+* {
+ background: #F5E7DEFF;
+ background-alt: #EBDCD2FF;
+ foreground: #34302DFF;
+ selected: #D97742FF;
+ active: #BF8F60FF;
+ urgent: #B23636FF;
+}
diff --git a/private_dot_config/rofi/scripts/powermenu/shared/confirm.rasi b/private_dot_config/rofi/scripts/powermenu/shared/confirm.rasi
new file mode 100644
index 0000000..9f74f2a
--- /dev/null
+++ b/private_dot_config/rofi/scripts/powermenu/shared/confirm.rasi
@@ -0,0 +1,93 @@
+/**
+ *
+ * Author : Aditya Shakya (adi1090x)
+ * Github : @adi1090x
+ *
+ * Rofi Theme File
+ * Rofi Version: 1.7.3
+ **/
+
+/*****----- Configuration -----*****/
+configuration {
+ show-icons: false;
+}
+
+/*****----- Global Properties -----*****/
+@import "colors.rasi"
+@import "fonts.rasi"
+
+/*****----- Main Window -----*****/
+window {
+ location: center;
+ anchor: center;
+ fullscreen: false;
+ width: 500px;
+ border-radius: 20px;
+ cursor: "default";
+ background-color: @background;
+}
+
+/*****----- Main Box -----*****/
+mainbox {
+ spacing: 30px;
+ padding: 30px;
+ background-color: transparent;
+ children: [ "message", "listview" ];
+}
+
+/*****----- Message -----*****/
+message {
+ margin: 0px;
+ padding: 20px;
+ border-radius: 20px;
+ background-color: @background-alt;
+ text-color: @foreground;
+}
+textbox {
+ background-color: inherit;
+ text-color: inherit;
+ vertical-align: 0.5;
+ horizontal-align: 0.5;
+ placeholder-color: @foreground;
+ blink: true;
+ markup: true;
+}
+
+/*****----- Listview -----*****/
+listview {
+ columns: 2;
+ lines: 1;
+ cycle: true;
+ dynamic: true;
+ scrollbar: false;
+ layout: vertical;
+ reverse: false;
+ fixed-height: true;
+ fixed-columns: true;
+
+ spacing: 30px;
+ background-color: transparent;
+ text-color: @foreground;
+ cursor: "default";
+}
+
+/*****----- Elements -----*****/
+element {
+ padding: 60px 10px;
+ border-radius: 20px;
+ background-color: @background-alt;
+ text-color: @foreground;
+ cursor: pointer;
+}
+element-text {
+ font: "feather 48";
+ background-color: transparent;
+ text-color: inherit;
+ cursor: inherit;
+ vertical-align: 0.5;
+ horizontal-align: 0.5;
+}
+element selected.normal {
+ background-color: var(selected);
+ text-color: var(background);
+}
diff --git a/private_dot_config/rofi/scripts/powermenu/shared/fonts.rasi b/private_dot_config/rofi/scripts/powermenu/shared/fonts.rasi
new file mode 100644
index 0000000..68fd613
--- /dev/null
+++ b/private_dot_config/rofi/scripts/powermenu/shared/fonts.rasi
@@ -0,0 +1,12 @@
+/**
+ *
+ * Author : Aditya Shakya (adi1090x)
+ * Github : @adi1090x
+ *
+ * Fonts
+ *
+ **/
+
+* {
+ font: "JetBrains Mono Nerd Font 12";
+}
diff --git a/private_dot_config/rofi/scripts/powermenu/shared/images/user.jpeg b/private_dot_config/rofi/scripts/powermenu/shared/images/user.jpeg
new file mode 100644
index 0000000..3490fed
Binary files /dev/null and b/private_dot_config/rofi/scripts/powermenu/shared/images/user.jpeg differ
diff --git a/private_dot_config/rofi/scripts/powermenu/style.rasi b/private_dot_config/rofi/scripts/powermenu/style.rasi
new file mode 100644
index 0000000..4ea81ec
--- /dev/null
+++ b/private_dot_config/rofi/scripts/powermenu/style.rasi
@@ -0,0 +1,142 @@
+/**
+ *
+ * Author : Aditya Shakya (adi1090x)
+ * Github : @adi1090x
+ *
+ * Rofi Theme File
+ * Rofi Version: 1.7.3
+ **/
+
+/*****----- Configuration -----*****/
+configuration {
+ show-icons: false;
+}
+
+/*****----- Global Properties -----*****/
+* {
+ /* Resolution : 1920x1080 */
+ mainbox-spacing: 50px;
+ mainbox-margin: 0px 300px;
+ message-margin: 0px 350px;
+ message-padding: 15px;
+ message-border-radius: 100%;
+ listview-spacing: 25px;
+ element-padding: 40px 40px;
+ element-border-radius: 100%;
+
+ prompt-font: "Sarasa UI SC Nerd Font Bold 32";
+ textbox-font: "Sarasa Mono SC Nerd Font 12";
+ element-text-font : "Sarasa Mono SC Nerd Font 24";
+
+ background-normal: white/10%;
+ background-selected: white/20%;
+ foreground-normal: white;
+ foreground-selected: white;
+}
+
+/*****----- Main Window -----*****/
+window {
+ transparency: "real";
+ location: center;
+ anchor: center;
+ fullscreen: true;
+ cursor: "default";
+ background-color: #2E3440CC;
+}
+
+/*****----- Main Box -----*****/
+mainbox {
+ enabled: true;
+ spacing: var(mainbox-spacing);
+ margin: var(mainbox-margin);
+ background-color: transparent;
+ children: [ "dummy", "userimage", "inputbar", "listview", "message", "dummy" ];
+}
+
+/*****----- User -----*****/
+userimage {
+ width: 350px;
+ height: 350px;
+ margin: 0px 390px;
+ border: 2px;
+ border-radius: 100%;
+ border-color: white;
+ background-color: transparent;
+ background-image: url("./shared/images/user.jpeg", height);
+}
+
+/*****----- Inputbar -----*****/
+inputbar {
+ enabled: true;
+ background-color: transparent;
+ children: [ "dummy", "prompt", "dummy"];
+}
+
+dummy {
+ background-color: transparent;
+}
+
+prompt {
+ enabled: true;
+ font: var(prompt-font);
+ background-color: transparent;
+ text-color: var(foreground-normal);
+}
+
+/*****----- Message -----*****/
+message {
+ enabled: true;
+ margin: var(message-margin);
+ padding: var(message-padding);
+ border-radius: var(message-border-radius);
+ background-color: var(background-normal);
+ text-color: var(foreground-normal);
+}
+textbox {
+ font: var(textbox-font);
+ background-color: transparent;
+ text-color: inherit;
+ vertical-align: 0.5;
+ horizontal-align: 0.5;
+}
+
+/*****----- Listview -----*****/
+listview {
+ enabled: true;
+ expand: false;
+ columns: 5;
+ lines: 1;
+ cycle: true;
+ dynamic: true;
+ scrollbar: false;
+ layout: vertical;
+ reverse: false;
+ fixed-height: true;
+ fixed-columns: true;
+
+ spacing: var(listview-spacing);
+ background-color: transparent;
+ cursor: "default";
+}
+
+/*****----- Elements -----*****/
+element {
+ enabled: true;
+ padding: var(element-padding);
+ border-radius: var(element-border-radius);
+ background-color: var(background-normal);
+ text-color: var(foreground-normal);
+ cursor: pointer;
+}
+element-text {
+ font: var(element-text-font);
+ background-color: transparent;
+ text-color: inherit;
+ cursor: inherit;
+ vertical-align: 0.5;
+ horizontal-align: 0.5;
+}
+element selected.normal {
+ background-color: var(background-selected);
+ text-color: var(foreground-selected);
+}
diff --git a/private_dot_config/rofimoji.rc b/private_dot_config/rofimoji.rc
new file mode 100644
index 0000000..8787566
--- /dev/null
+++ b/private_dot_config/rofimoji.rc
@@ -0,0 +1,3 @@
+action = copy
+files = [emojis, math, nerd_font]
+skin-tone = moderate