migrate to specific folder & add fish conf

This commit is contained in:
grassblock 2024-05-24 16:20:19 +08:00
parent 7c63ae9df9
commit 687a8696e3
45 changed files with 74 additions and 0 deletions

View file

@ -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
}

View file

@ -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 #ignore for libadwaita applications
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

View file

@ -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 = <i>Input Password...</i> # 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 = <i>$FAIL <b>($ATTEMPTS)</b></i> # 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
}

View file

@ -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

View file

@ -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"

View file

@ -0,0 +1,6 @@
# Grimblast
A Hyprland version of Grimshot.
Install by running the Makefile or just copying the `grimblast` script in your
`~/.bin`.

View file

@ -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";
};
}

View file

@ -0,0 +1 @@
grimblast.1

View file

@ -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 <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

View file

@ -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

View file

@ -0,0 +1,110 @@
grimblast(1)
# NAME
grimblast - a helper for screenshots within hyprland
# SYNOPSIS
*grimblast* [--notify] [--cursor] [--freeze] [--wait N] [--scale <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 <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)

View file

@ -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

View file

@ -0,0 +1,49 @@
if status is-interactive
# Commands to run in interactive sessions can go here
end
# starship custom conf
set -gx STARSHIP_CONFIG $__fish_config_dir/starship.toml
# starship custom conf end
starship init fish | source
# greeting
function fish_greeting
cat $__fish_config_dir/motd
end
# greeting end
# pnpm
set -gx PNPM_HOME "/home/grassblock/.local/share/pnpm"
if not string match -q -- $PNPM_HOME $PATH
set -gx PATH "$PNPM_HOME" $PATH
end
# pnpm end
# ssh-agent
#set SSH_ENV_FILE "$HOME/.ssh/agent-environment"
#set SSH_TIMEOUT 86400 # 24 hours in seconds
#function ssh_start_agent
# ssh-agent -c -t "$SSH_TIMEOUT" > "$SSH_ENV_FILE"
# chmod 600 "$SSH_ENV_FILE"
# source "$SSH_ENV_FILE"
# ssh-add # [<id_rsa_path>] Change to your path
#end
#if test -f "$SSH_ENV_FILE"
# source "$SSH_ENV_FILE"
# if not ps -p "$SSH_AGENT_PID" > /dev/null
# ssh_start_agent
# end
#else
# ssh_start_agent
#end
## ssh-agent-end
rvm default
# Created by `pipx` on 2023-10-13 01:41:55
set PATH $PATH /home/grassblock/.local/bin
# pipx end
# 0x0 start
#0x0 end

View file

@ -0,0 +1,10 @@
________ ___ ________ ___ ___
|\ _____\|\ \ |\ ____\ |\ \|\ \
\ \ \__/ \ \ \\ \ \___|_\ \ \\\ \
\ \ __\ \ \ \\ \_____ \\ \ __ \
\ \ \_| \ \ \\|____|\ \\ \ \ \ \
\ \__\ \ \__\ ____\_\ \\ \__\ \__\
\|__| \|__||\_________\\|__|\|__|
\|_________|
Welcome to fish!

View file

@ -0,0 +1,14 @@
# 根据 schema 提供自动补全
"$schema" = 'https://starship.rs/config-schema.json'
# 在提示符之间插入空行
add_newline = true
# 将提示符中的 '' 替换为 '➜'
[character] # 此模块名称为 'character'
success_symbol = '[➜](bold green)' # 将 'success_symbol' 片段设置成颜色为 'bold green' 的 '➜'
error_symbol = '[➜](bold red)'
# duration
[cmd_duration]
format = '[$duration](bold yellow)'

View file

@ -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%;
}

View file

@ -0,0 +1,132 @@
/**
* Nordic rofi theme
* Adapted by undiabler <undiabler@gmail.com>
*
* 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;
}

View file

@ -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 <<EOF
/^[0-9]+\s<meta http-equiv=/ { next }
match(\$0, /^([0-9]+)\s(\[\[\s)?binary.*(jpg|jpeg|png|bmp)/, grp) {
system("echo " grp[1] "\\\\\t | cliphist decode >$tmp_dir/"grp[1]"."grp[3])
print \$0"\0icon\x1f$tmp_dir/"grp[1]"."grp[3]
next
}
1
EOF
cliphist list | gawk "$prog"

View file

@ -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

View file

@ -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"

View file

@ -0,0 +1,16 @@
/**
*
* Author : Aditya Shakya (adi1090x)
* Github : @adi1090x
*
* Colors
**/
* {
background: #222D32FF;
background-alt: #29353BFF;
foreground: #B8C2C6FF;
selected: #00BCD4FF;
active: #21FF90FF;
urgent: #FF4B60FF;
}

View file

@ -0,0 +1,16 @@
/**
*
* Author : Aditya Shakya (adi1090x)
* Github : @adi1090x
*
* Colors
**/
* {
background: #2F343FFF;
background-alt: #383C4AFF;
foreground: #BAC5D0FF;
selected: #5294E2FF;
active: #98C379FF;
urgent: #E06B74FF;
}

View file

@ -0,0 +1,16 @@
/**
*
* Author : Aditya Shakya (adi1090x)
* Github : @adi1090x
*
* Colors
**/
* {
background: #000000FF;
background-alt: #101010FF;
foreground: #FFFFFFFF;
selected: #62AEEFFF;
active: #98C379FF;
urgent: #E06B74FF;
}

View file

@ -0,0 +1,16 @@
/**
*
* Author : Aditya Shakya (adi1090x)
* Github : @adi1090x
*
* Colors
**/
* {
background: #1E1D2FFF;
background-alt: #282839FF;
foreground: #D9E0EEFF;
selected: #7AA2F7FF;
active: #ABE9B3FF;
urgent: #F28FADFF;
}

View file

@ -0,0 +1,16 @@
/**
*
* Author : Aditya Shakya (adi1090x)
* Github : @adi1090x
*
* Colors
**/
* {
background: #000B1EFF;
background-alt: #0A1528FF;
foreground: #0ABDC6FF;
selected: #0ABDC6FF;
active: #00FF00FF;
urgent: #FF0000FF;
}

View file

@ -0,0 +1,16 @@
/**
*
* Author : Aditya Shakya (adi1090x)
* Github : @adi1090x
*
* Colors
**/
* {
background: #1E1F29FF;
background-alt: #282A36FF;
foreground: #FFFFFFFF;
selected: #BD93F9FF;
active: #50FA7BFF;
urgent: #FF5555FF;
}

View file

@ -0,0 +1,16 @@
/**
*
* Author : Aditya Shakya (adi1090x)
* Github : @adi1090x
*
* Colors
**/
* {
background: #323D43FF;
background-alt: #3C474DFF;
foreground: #DAD1BEFF;
selected: #7FBBB3FF;
active: #A7C080FF;
urgent: #E67E80FF;
}

View file

@ -0,0 +1,16 @@
/**
*
* Author : Aditya Shakya (adi1090x)
* Github : @adi1090x
*
* Colors
**/
* {
background: #282828FF;
background-alt: #353535FF;
foreground: #EBDBB2FF;
selected: #83A598FF;
active: #B8BB26FF;
urgent: #FB4934FF;
}

View file

@ -0,0 +1,16 @@
/**
*
* Author : Aditya Shakya (adi1090x)
* Github : @adi1090x
*
* Colors
**/
* {
background: #1D1F28FF;
background-alt: #282A36FF;
foreground: #FDFDFDFF;
selected: #79E6F3FF;
active: #5ADECDFF;
urgent: #F37F97FF;
}

View file

@ -0,0 +1,16 @@
/**
*
* Author : Aditya Shakya (adi1090x)
* Github : @adi1090x
*
* Colors
**/
* {
background: #021B21FF;
background-alt: #0C252BFF;
foreground: #F2F1B9FF;
selected: #44B5B1FF;
active: #7CBF9EFF;
urgent: #C2454EFF;
}

View file

@ -0,0 +1,16 @@
/**
*
* Author : Aditya Shakya (adi1090x)
* Github : @adi1090x
*
* Colors
**/
* {
background: #2E3440FF;
background-alt: #383E4AFF;
foreground: #E5E9F0FF;
selected: #81A1C1FF;
active: #A3BE8CFF;
urgent: #BF616AFF;
}

View file

@ -0,0 +1,16 @@
/**
*
* Author : Aditya Shakya (adi1090x)
* Github : @adi1090x
*
* Colors
**/
* {
background: #1E2127FF;
background-alt: #282B31FF;
foreground: #FFFFFFFF;
selected: #61AFEFFF;
active: #98C379FF;
urgent: #E06C75FF;
}

View file

@ -0,0 +1,16 @@
/**
*
* Author : Aditya Shakya (adi1090x)
* Github : @adi1090x
*
* Colors
**/
* {
background: #F1F1F1FF;
background-alt: #E0E0E0FF;
foreground: #252525FF;
selected: #008EC4FF;
active: #10A778FF;
urgent: #C30771FF;
}

View file

@ -0,0 +1,16 @@
/**
*
* Author : Aditya Shakya (adi1090x)
* Github : @adi1090x
*
* Colors
**/
* {
background: #002B36FF;
background-alt: #073642FF;
foreground: #EEE8D5FF;
selected: #268BD2FF;
active: #859900FF;
urgent: #DC322FFF;
}

View file

@ -0,0 +1,16 @@
/**
*
* Author : Levi Lacoss (fishyfishfish55)
* Github : @fishyfishfish55
*
* Colors
**/
* {
background: #15161EFF;
background-alt: #1A1B26FF;
foreground: #C0CAF5FF;
selected: #33467CFF;
active: #414868FF;
urgent: #F7768EFF;
}

View file

@ -0,0 +1,16 @@
/**
*
* Author : Aditya Shakya (adi1090x)
* Github : @adi1090x
*
* Colors
**/
* {
background: #F5E7DEFF;
background-alt: #EBDCD2FF;
foreground: #34302DFF;
selected: #D97742FF;
active: #BF8F60FF;
urgent: #B23636FF;
}

View file

@ -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);
}

View file

@ -0,0 +1,12 @@
/**
*
* Author : Aditya Shakya (adi1090x)
* Github : @adi1090x
*
* Fonts
*
**/
* {
font: "JetBrains Mono Nerd Font 12";
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

View file

@ -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);
}

View file

@ -0,0 +1,3 @@
action = copy
files = [emojis, math, nerd_font]
skin-tone = moderate

View file

@ -0,0 +1,232 @@
// -*- mode: jsonc -*-
{
// "layer": "top", // Waybar at top layer
// "position": "bottom", // Waybar position (top|bottom|left|right)
"height" : 30, // Waybar height (to be removed for auto height)
// "width": 1280, // Waybar width
"spacing" : 4, // Gaps between modules (4px)
// Choose the order of the modules
"modules-left" : [
"hyprland/workspaces",
"hyprland/window"
],
"modules-center": [
"clock"
],
"modules-right": [
"idle_inhibitor",
"mpris",
"power-profiles-daemon",
//"cpu",
//"memory",
//"temperature",
//"backlight",
"tray",
"keyboard-state",
"bluetooth",
"network",
"pulseaudio",
//"hyprland/language",
"battery"
],
// Modules configuration
"hyprland/workspaces": {
"disable-scroll": true,
"all-outputs": true,
"warp-on-scroll": false,
"format": "{icon}",
"format-icons": {
// "1": "",
// "2": "",
// "3": "",
// "4": "",
// "5": "",
// "urgent": "",
"active": "󰄯",
"default": "󰄰"
}
},
"keyboard-state": {
"numlock": false,
"capslock": true,
"format": "{icon}",
"format-icons": {
"locked": "󰪛",
"unlocked": "󰍀"
}
},
"hyprland/mode": {
"format": "<span style=\"italic\">{}</span>"
},
"hyprland/scratchpad": {
"format": "{icon} {count}",
"show-empty": false,
"format-icons": ["", ""],
"tooltip": true,
"tooltip-format": "{app}: {title}"
},
"mpris": {
"format": "{player_icon} {dynamic}",
"format-paused": "{status_icon} <i>{dynamic}</i>",
"dynamic-order": ["position","length"],
"tooltip-format": "{title} - {artist} ({player}) | {dynamic}",
"interval": 1,
"player-icons": {
"default": "󰐊",
"mpv": "🎵",
"yesplaymusic": "󰎆"
},
"status-icons": {
"paused": "󰏤"
},
// "ignored-players": ["firefox"]
},
//"mpd": {
// "format": "{stateIcon} {consumeIcon}{randomIcon}{repeatIcon}{singleIcon}{artist} - {album} - {title} ({elapsedTime:%M:%S}/{totalTime:%M:%S}) ⸨{songPosition}|{queueLength}⸩ {volume}% ",
// "format-disconnected": "Disconnected ",
// "format-stopped": "{consumeIcon}{randomIcon}{repeatIcon}{singleIcon}Stopped ",
// "unknown-tag": "N/A",
// "interval": 5,
// "consume-icons": {
// "on": " "
// },
// "random-icons": {
// "off": "<span color=\"#f53c3c\"></span> ",
// "on": " "
// },
// "repeat-icons": {
// "on": " "
// },
// "single-icons": {
// "on": "1 "
// },
// "state-icons": {
// "paused": "",
// "playing": ""
// },
// "tooltip-format": "MPD (connected)",
// "tooltip-format-disconnected": "MPD (disconnected)"
// },
"idle_inhibitor": {
"format": "{icon}",
"format-icons": {
"activated": "󰛊",
"deactivated": "󰾫"
}
},
"tray": {
"icon-size": 15,
"spacing": 15
},
"clock": {
"format": "{:%a %b %d %T}",
"interval": 1,
// "timezone": "America/New_York",
"tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>",
//"format-alt": "{:%Y-%m-%d}"
},
"cpu": {
"format": "{usage}% ",
"tooltip": false
},
"memory": {
"format": "{}% "
},
"temperature": {
// "thermal-zone": 2,
// "hwmon-path": "/sys/class/hwmon/hwmon2/temp1_input",
"critical-threshold": 80,
// "format-critical": "{temperatureC}°C {icon}",
"format": "{temperatureC}°C {icon}",
"format-icons": ["", "", ""]
},
"backlight": {
// "device": "acpi_video1",
"format": "{percent}% {icon}",
"format-icons": ["", "", "", "", "", "", "", "", ""]
},
"battery": {
"states": {
// "good": 95,
"warning": 20,
"critical": 15
},
"interval": 10,
"format": "{icon} {capacity}%",
"format-full": "{icon} {capacity}%",
"format-charging": "󰂄 {capacity}%",
"format-plugged": "󰠠 {capacity}%",
"tooltip-format": "{timeTo} \n {power}w consumed",
//"format-alt": "{time} {icon}",
// "format-good": "", // An empty format will hide the module
// "format-full": "",
"format-icons": ["󰁻", "󰁽", "󰁿", "󰂁", "󰁹"],
"on-click-right": "~/.config/rofi/scripts/powermenu/powermenu.sh"
},
"battery#bat2": {
"bat": "BAT2"
},
"power-profiles-daemon": {
"format": "{icon}",
"tooltip-format": "Power profile: {profile}\nDriver: {driver}",
"tooltip": true,
"format-icons": {
"default": "󱐋",
"performance": "󱐋",
"balanced": "󰾅",
"power-saver": "󰌪"
}
},
"bluetooth": {
"format": "󰂯",
"format-connected": "󰂱",
"format-connected-battery": "󰂱",
// "format-device-preference": [ "device1", "device2" ], // preference list deciding the displayed device
"tooltip-format": "{controller_alias}\t{controller_address}\n\n{num_connections} connected",
"tooltip-format-connected": "{controller_alias}\t{controller_address}\n\n{num_connections} connected\n\n{device_enumerate}",
"tooltip-format-enumerate-connected": "{device_alias}\t{device_address}",
"tooltip-format-enumerate-connected-battery": "{device_alias}\t{device_address}\t{device_battery_percentage}%",
"on-click": "blueberry"
},
"network": {
// "interface": "wlp2*", // (Optional) To force the use of this interface
"format-wifi": "󰤥 {signalStrength}%",
"format-ethernet": "󰈀",
"tooltip-format": "{ifname} via {gwaddr} 󱂇 \n IP: {ipaddr} \n ↑ {bandwidthUpBytes} / {bandwidthDownBytes} ↓",
"format-linked": "{ifname} (No IP) ",
"format-disconnected": "󰤯",
"on-click": "networkmanager_dmenu",
"interval": 5
},
"pulseaudio": {
// "scroll-step": 1, // %, can be a float
"format": "{icon} {volume}%",
"format-bluetooth": "{volume}% {icon} {format_source}",
"format-bluetooth-muted": " {icon} {format_source}",
"format-muted": " {format_source}",
"format-source": "{volume}% ",
"format-source-muted": "",
"format-icons": {
"headphone": "󰋋",
"hands-free": "",
"headset": "",
"phone": "",
"portable": "",
"car": "",
"default": ["󰕿", "󰖀", "󰕾"]
},
"on-click": "pavucontrol"
},
"custom/media": {
"format": "{icon} {}",
"return-type": "json",
"max-length": 40,
"format-icons": {
"spotify": "",
"default": "🎜"
},
"escape": true,
"exec": "$HOME/.config/waybar/mediaplayer.py 2> /dev/null" // Script in resources folder
// "exec": "$HOME/.config/waybar/mediaplayer.py --player spotify 2> /dev/null" // Filter player based on name
}
}

View file

@ -0,0 +1,313 @@
* {
/* `otf-font-awesome` is required to be installed for icons */
font-family: Sarasa UI SC Nerd Font, Roboto, Helvetica, Arial, sans-serif;
font-size: 14px;
}
window#waybar {
background-color: rgba(43, 48, 59, 0.5);
border-bottom: 3px solid rgba(100, 114, 125, 0.5);
color: #eceff4;
transition-property: background-color;
transition-duration: .5s;
border-radius: 30px;
}
window#waybar.hidden {
opacity: 0.2;
}
/*
window#waybar.empty {
background-color: transparent;
}
window#waybar.solo {
background-color: #FFFFFF;
}
*/
window#waybar.termite {
background-color: #3F3F3F;
}
window#waybar.chromium {
background-color: #000000;
border: none;
}
button {
/* Use box-shadow instead of border so the text isn't offset */
box-shadow: inset 0 -3px transparent;
/* Avoid rounded borders under each button name */
border: none;
border-radius: 0;
}
/* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */
button:hover {
background: inherit;
}
/* you can set a style on hover for any module like this */
#workspaces button {
padding: 0 5px;
background-color: transparent;
color: #ffffff;
}
#workspaces button:hover {
background: rgba(0, 0, 0, 0.2);
}
#workspaces button.focused {
color: #64727D;
box-shadow: inset 0 -3px #ffffff;
}
#workspaces button.urgent {
color: #5e81ac;
}
#mode {
background-color: #64727D;
box-shadow: inset 0 -3px #ffffff;
}
#clock,
#battery,
#cpu,
#memory,
#disk,
#temperature,
#backlight,
#network,
#pulseaudio,
#wireplumber,
#custom-media,
#tray,
#mode,
#idle_inhibitor,
#scratchpad,
#power-profiles-daemon,
#mpd {
padding: 0 10px;
color: #eceff4;
}
#window,
#workspaces {
margin: 0 4px;
}
/* If workspaces is the leftmost module, omit left margin */
.modules-left > widget:first-child > #workspaces {
margin-left: 0;
}
/* If workspaces is the rightmost module, omit right margin */
.modules-right > widget:last-child > #workspaces {
margin-right: 0;
}
#clock {
color: #eceff4;
}
#battery {
color: #eceff4;
}
#battery.charging, #battery.plugged {
color: #8fbcbb;
}
@keyframes blink {
to {
color: #000000;
}
}
/* Using steps() instead of linear as a timing function to limit cpu usage */
#battery.critical:not(.charging) {
color: #bf616a;
animation-name: blink;
animation-duration: 1s;
animation-timing-function: steps(12);
animation-iteration-count: infinite;
animation-direction: alternate;
}
#power-profiles-daemon.performance {
color: #eceff4;
}
#power-profiles-daemon.balanced {
color: #eceff4;
}
#power-profiles-daemon.power-saver {
color: #eceff4;
}
label:focus {
background-color: #000000;
}
#cpu {
background-color: #2ecc71;
color: #000000;
}
#memory {
background-color: #9b59b6;
}
#disk {
background-color: #964B00;
}
#backlight {
color: #90b1b1;
}
#bluetooth {
font-size: 16px;
}
#network {
color: #eceff4;
}
#network.disconnected {
color: #d8dee9;
}
#pulseaudio {
color: #eceff4;
}
#pulseaudio.muted {
color: #d8dee9;
}
#wireplumber {
color: #eceff4;
}
#wireplumber.muted {
color: #d8dee9;
}
#custom-media {
background-color: #66cc99;
color: #2a5c45;
min-width: 100px;
}
#custom-media.custom-spotify {
background-color: #66cc99;
}
#custom-media.custom-vlc {
background-color: #ffa000;
}
#temperature {
background-color: #f0932b;
}
#temperature.critical {
background-color: #eb4d4b;
}
#tray {
}
#tray > .passive {
-gtk-icon-effect: dim;
}
#tray > .needs-attention {
-gtk-icon-effect: highlight;
background-color: #eb4d4b;
}
#idle_inhibitor {
color: #eceff4;
}
#idle_inhibitor.activated {
color: #eceff4;
}
#mpd {
background-color: #66cc99;
color: #2a5c45;
}
#mpd.disconnected {
background-color: #f53c3c;
}
#mpd.stopped {
background-color: #90b1b1;
}
#mpd.paused {
background-color: #51a37a;
}
#language {
background: #00b093;
color: #740864;
padding: 0 5px;
margin: 0 5px;
min-width: 16px;
}
#keyboard-state {
color: #eceff4;
padding: 0 0px;
margin: 0 0px;
min-width: 16px;
}
#keyboard-state > label {
padding: 0 5px;
}
#keyboard-state > label.locked {
background: transparent;
}
#scratchpad {
background: rgba(0, 0, 0, 0.2);
}
#scratchpad.empty {
background-color: transparent;
}
#privacy {
padding: 0;
}
#privacy-item {
padding: 0 5px;
color: white;
}
#privacy-item.screenshare {
color: #d08770;
}
#privacy-item.audio-in {
background-color: #a3be8c;
}
#privacy-item.audio-out {
background-color: #88c0d0;
}