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