migrate to specific folder & add fish conf
This commit is contained in:
parent
7c63ae9df9
commit
687a8696e3
45 changed files with 74 additions and 0 deletions
34
home/private_dot_config/hypr/hypridle.conf
Normal file
34
home/private_dot_config/hypr/hypridle.conf
Normal 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
|
||||
}
|
240
home/private_dot_config/hypr/hyprland.conf
Normal file
240
home/private_dot_config/hypr/hyprland.conf
Normal 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
|
74
home/private_dot_config/hypr/hyprlock.conf
Normal file
74
home/private_dot_config/hypr/hyprlock.conf
Normal 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
|
||||
}
|
18
home/private_dot_config/hypr/hyprpaper.conf
Normal file
18
home/private_dot_config/hypr/hyprpaper.conf
Normal 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
|
||||
|
||||
|
20
home/private_dot_config/hypr/scripts/grimblast/Makefile
Normal file
20
home/private_dot_config/hypr/scripts/grimblast/Makefile
Normal 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"
|
6
home/private_dot_config/hypr/scripts/grimblast/README.md
Normal file
6
home/private_dot_config/hypr/scripts/grimblast/README.md
Normal 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`.
|
52
home/private_dot_config/hypr/scripts/grimblast/default.nix
Normal file
52
home/private_dot_config/hypr/scripts/grimblast/default.nix
Normal 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";
|
||||
};
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
grimblast.1
|
|
@ -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
|
|
@ -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
|
110
home/private_dot_config/hypr/scripts/grimblast/grimblast.1.scd
Normal file
110
home/private_dot_config/hypr/scripts/grimblast/grimblast.1.scd
Normal 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)
|
13
home/private_dot_config/mako/config
Normal file
13
home/private_dot_config/mako/config
Normal 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
|
49
home/private_dot_config/private_fish/config.fish
Normal file
49
home/private_dot_config/private_fish/config.fish
Normal 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
|
10
home/private_dot_config/private_fish/motd
Normal file
10
home/private_dot_config/private_fish/motd
Normal file
|
@ -0,0 +1,10 @@
|
|||
________ ___ ________ ___ ___
|
||||
|\ _____\|\ \ |\ ____\ |\ \|\ \
|
||||
\ \ \__/ \ \ \\ \ \___|_\ \ \\\ \
|
||||
\ \ __\ \ \ \\ \_____ \\ \ __ \
|
||||
\ \ \_| \ \ \\|____|\ \\ \ \ \ \
|
||||
\ \__\ \ \__\ ____\_\ \\ \__\ \__\
|
||||
\|__| \|__||\_________\\|__|\|__|
|
||||
\|_________|
|
||||
|
||||
Welcome to fish!
|
14
home/private_dot_config/private_fish/starship.toml
Normal file
14
home/private_dot_config/private_fish/starship.toml
Normal 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)'
|
24
home/private_dot_config/rofi/config.rasi
Normal file
24
home/private_dot_config/rofi/config.rasi
Normal 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%;
|
||||
}
|
132
home/private_dot_config/rofi/nord.rasi
Normal file
132
home/private_dot_config/rofi/nord.rasi
Normal 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;
|
||||
}
|
22
home/private_dot_config/rofi/scripts/executable_clip
Normal file
22
home/private_dot_config/rofi/scripts/executable_clip
Normal 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"
|
BIN
home/private_dot_config/rofi/scripts/powermenu-unusable.tar.zst
Normal file
BIN
home/private_dot_config/rofi/scripts/powermenu-unusable.tar.zst
Normal file
Binary file not shown.
|
@ -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
|
|
@ -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"
|
|
@ -0,0 +1,16 @@
|
|||
/**
|
||||
*
|
||||
* Author : Aditya Shakya (adi1090x)
|
||||
* Github : @adi1090x
|
||||
*
|
||||
* Colors
|
||||
**/
|
||||
|
||||
* {
|
||||
background: #222D32FF;
|
||||
background-alt: #29353BFF;
|
||||
foreground: #B8C2C6FF;
|
||||
selected: #00BCD4FF;
|
||||
active: #21FF90FF;
|
||||
urgent: #FF4B60FF;
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
/**
|
||||
*
|
||||
* Author : Aditya Shakya (adi1090x)
|
||||
* Github : @adi1090x
|
||||
*
|
||||
* Colors
|
||||
**/
|
||||
|
||||
* {
|
||||
background: #2F343FFF;
|
||||
background-alt: #383C4AFF;
|
||||
foreground: #BAC5D0FF;
|
||||
selected: #5294E2FF;
|
||||
active: #98C379FF;
|
||||
urgent: #E06B74FF;
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
/**
|
||||
*
|
||||
* Author : Aditya Shakya (adi1090x)
|
||||
* Github : @adi1090x
|
||||
*
|
||||
* Colors
|
||||
**/
|
||||
|
||||
* {
|
||||
background: #000000FF;
|
||||
background-alt: #101010FF;
|
||||
foreground: #FFFFFFFF;
|
||||
selected: #62AEEFFF;
|
||||
active: #98C379FF;
|
||||
urgent: #E06B74FF;
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
/**
|
||||
*
|
||||
* Author : Aditya Shakya (adi1090x)
|
||||
* Github : @adi1090x
|
||||
*
|
||||
* Colors
|
||||
**/
|
||||
|
||||
* {
|
||||
background: #1E1D2FFF;
|
||||
background-alt: #282839FF;
|
||||
foreground: #D9E0EEFF;
|
||||
selected: #7AA2F7FF;
|
||||
active: #ABE9B3FF;
|
||||
urgent: #F28FADFF;
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
/**
|
||||
*
|
||||
* Author : Aditya Shakya (adi1090x)
|
||||
* Github : @adi1090x
|
||||
*
|
||||
* Colors
|
||||
**/
|
||||
|
||||
* {
|
||||
background: #000B1EFF;
|
||||
background-alt: #0A1528FF;
|
||||
foreground: #0ABDC6FF;
|
||||
selected: #0ABDC6FF;
|
||||
active: #00FF00FF;
|
||||
urgent: #FF0000FF;
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
/**
|
||||
*
|
||||
* Author : Aditya Shakya (adi1090x)
|
||||
* Github : @adi1090x
|
||||
*
|
||||
* Colors
|
||||
**/
|
||||
|
||||
* {
|
||||
background: #1E1F29FF;
|
||||
background-alt: #282A36FF;
|
||||
foreground: #FFFFFFFF;
|
||||
selected: #BD93F9FF;
|
||||
active: #50FA7BFF;
|
||||
urgent: #FF5555FF;
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
/**
|
||||
*
|
||||
* Author : Aditya Shakya (adi1090x)
|
||||
* Github : @adi1090x
|
||||
*
|
||||
* Colors
|
||||
**/
|
||||
|
||||
* {
|
||||
background: #323D43FF;
|
||||
background-alt: #3C474DFF;
|
||||
foreground: #DAD1BEFF;
|
||||
selected: #7FBBB3FF;
|
||||
active: #A7C080FF;
|
||||
urgent: #E67E80FF;
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
/**
|
||||
*
|
||||
* Author : Aditya Shakya (adi1090x)
|
||||
* Github : @adi1090x
|
||||
*
|
||||
* Colors
|
||||
**/
|
||||
|
||||
* {
|
||||
background: #282828FF;
|
||||
background-alt: #353535FF;
|
||||
foreground: #EBDBB2FF;
|
||||
selected: #83A598FF;
|
||||
active: #B8BB26FF;
|
||||
urgent: #FB4934FF;
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
/**
|
||||
*
|
||||
* Author : Aditya Shakya (adi1090x)
|
||||
* Github : @adi1090x
|
||||
*
|
||||
* Colors
|
||||
**/
|
||||
|
||||
* {
|
||||
background: #1D1F28FF;
|
||||
background-alt: #282A36FF;
|
||||
foreground: #FDFDFDFF;
|
||||
selected: #79E6F3FF;
|
||||
active: #5ADECDFF;
|
||||
urgent: #F37F97FF;
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
/**
|
||||
*
|
||||
* Author : Aditya Shakya (adi1090x)
|
||||
* Github : @adi1090x
|
||||
*
|
||||
* Colors
|
||||
**/
|
||||
|
||||
* {
|
||||
background: #021B21FF;
|
||||
background-alt: #0C252BFF;
|
||||
foreground: #F2F1B9FF;
|
||||
selected: #44B5B1FF;
|
||||
active: #7CBF9EFF;
|
||||
urgent: #C2454EFF;
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
/**
|
||||
*
|
||||
* Author : Aditya Shakya (adi1090x)
|
||||
* Github : @adi1090x
|
||||
*
|
||||
* Colors
|
||||
**/
|
||||
|
||||
* {
|
||||
background: #2E3440FF;
|
||||
background-alt: #383E4AFF;
|
||||
foreground: #E5E9F0FF;
|
||||
selected: #81A1C1FF;
|
||||
active: #A3BE8CFF;
|
||||
urgent: #BF616AFF;
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
/**
|
||||
*
|
||||
* Author : Aditya Shakya (adi1090x)
|
||||
* Github : @adi1090x
|
||||
*
|
||||
* Colors
|
||||
**/
|
||||
|
||||
* {
|
||||
background: #1E2127FF;
|
||||
background-alt: #282B31FF;
|
||||
foreground: #FFFFFFFF;
|
||||
selected: #61AFEFFF;
|
||||
active: #98C379FF;
|
||||
urgent: #E06C75FF;
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
/**
|
||||
*
|
||||
* Author : Aditya Shakya (adi1090x)
|
||||
* Github : @adi1090x
|
||||
*
|
||||
* Colors
|
||||
**/
|
||||
|
||||
* {
|
||||
background: #F1F1F1FF;
|
||||
background-alt: #E0E0E0FF;
|
||||
foreground: #252525FF;
|
||||
selected: #008EC4FF;
|
||||
active: #10A778FF;
|
||||
urgent: #C30771FF;
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
/**
|
||||
*
|
||||
* Author : Aditya Shakya (adi1090x)
|
||||
* Github : @adi1090x
|
||||
*
|
||||
* Colors
|
||||
**/
|
||||
|
||||
* {
|
||||
background: #002B36FF;
|
||||
background-alt: #073642FF;
|
||||
foreground: #EEE8D5FF;
|
||||
selected: #268BD2FF;
|
||||
active: #859900FF;
|
||||
urgent: #DC322FFF;
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
/**
|
||||
*
|
||||
* Author : Levi Lacoss (fishyfishfish55)
|
||||
* Github : @fishyfishfish55
|
||||
*
|
||||
* Colors
|
||||
**/
|
||||
|
||||
* {
|
||||
background: #15161EFF;
|
||||
background-alt: #1A1B26FF;
|
||||
foreground: #C0CAF5FF;
|
||||
selected: #33467CFF;
|
||||
active: #414868FF;
|
||||
urgent: #F7768EFF;
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
/**
|
||||
*
|
||||
* Author : Aditya Shakya (adi1090x)
|
||||
* Github : @adi1090x
|
||||
*
|
||||
* Colors
|
||||
**/
|
||||
|
||||
* {
|
||||
background: #F5E7DEFF;
|
||||
background-alt: #EBDCD2FF;
|
||||
foreground: #34302DFF;
|
||||
selected: #D97742FF;
|
||||
active: #BF8F60FF;
|
||||
urgent: #B23636FF;
|
||||
}
|
|
@ -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);
|
||||
}
|
|
@ -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 |
142
home/private_dot_config/rofi/scripts/powermenu/style.rasi
Normal file
142
home/private_dot_config/rofi/scripts/powermenu/style.rasi
Normal 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);
|
||||
}
|
3
home/private_dot_config/rofimoji.rc
Normal file
3
home/private_dot_config/rofimoji.rc
Normal file
|
@ -0,0 +1,3 @@
|
|||
action = copy
|
||||
files = [emojis, math, nerd_font]
|
||||
skin-tone = moderate
|
232
home/private_dot_config/waybar/config.jsonc
Normal file
232
home/private_dot_config/waybar/config.jsonc
Normal 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
|
||||
}
|
||||
}
|
313
home/private_dot_config/waybar/style.css
Normal file
313
home/private_dot_config/waybar/style.css
Normal 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;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue