init
This commit is contained in:
42
modules/home/hyprland/conf/hypr/scripts/brightnesscontrol.sh
Executable file
42
modules/home/hyprland/conf/hypr/scripts/brightnesscontrol.sh
Executable file
@@ -0,0 +1,42 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
ncolor="-h string:bgcolor:#343d46 -h string:fgcolor:#c0c5ce -h string:frcolor:#c0c5ce"
|
||||
|
||||
function send_notification {
|
||||
brightness=`brightnessctl info | grep -oP "(?<=\()\d+(?=%)" | cat`
|
||||
brightinfo=$(brightnessctl info | awk -F"'" '/Device/ {print $2}')
|
||||
|
||||
angle="$(((($brightness + 2) / 5) * 5))"
|
||||
ico="~/.config/dunst/icons/vol/vol-${angle}.svg"
|
||||
bar=$(seq -s "." $(($brightness / 15)) | sed 's/[0-9]//g')
|
||||
|
||||
if [ $brightness -ne 0 ]; then
|
||||
notify-send $ncolor "brightctl" -i $ico -a "$brightness$bar" "Device: $brightinfo" -r 91190 -t 800
|
||||
|
||||
else
|
||||
notify-send -i $ico "Brightness: ${brightness}%" -a "$brightinfo" -u low -r 91190 -t 800
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
function get_brightness {
|
||||
brightnessctl -m | grep -o '[0-9]\+%' | head -c-2
|
||||
}
|
||||
|
||||
case $1 in
|
||||
i)
|
||||
# increase the backlight by 5%
|
||||
brightnessctl set +5%
|
||||
send_notification
|
||||
;;
|
||||
d)
|
||||
if [[ $(get_brightness) -lt 5 ]]; then
|
||||
# avoid 0% brightness
|
||||
brightnessctl set 1%
|
||||
else
|
||||
# decrease the backlight by 5%
|
||||
brightnessctl set 5%-
|
||||
fi
|
||||
send_notification
|
||||
;;
|
||||
esac
|
||||
64
modules/home/hyprland/conf/hypr/scripts/cliphist.sh
Executable file
64
modules/home/hyprland/conf/hypr/scripts/cliphist.sh
Executable file
@@ -0,0 +1,64 @@
|
||||
#!/usr/bin/env sh
|
||||
|
||||
theme_file="$HOME/.config/hypr/themes/theme.conf"
|
||||
roconf="~/.config/rofi/clipboard.rasi"
|
||||
|
||||
|
||||
# set position
|
||||
|
||||
case $2 in
|
||||
1) # top left
|
||||
pos="window {location: north west; anchor: north west; x-offset: 20px; y-offset: 20px;}"
|
||||
;;
|
||||
2) # top right
|
||||
pos="window {location: north east; anchor: north east; x-offset: -20px; y-offset: 20px;}"
|
||||
;;
|
||||
3) # bottom left
|
||||
pos="window {location: south east; anchor: south east; x-offset: -20px; y-offset: -20px;}"
|
||||
;;
|
||||
4) # bottom right
|
||||
pos="window {location: south west; anchor: south west; x-offset: 20px; y-offset: -20px;}"
|
||||
;;
|
||||
esac
|
||||
|
||||
|
||||
# read hypr theme border
|
||||
|
||||
hypr_border=`awk -F '=' '{if($1~" rounding ") print $2}' $theme_file | sed 's/ //g'`
|
||||
hypr_width=`awk -F '=' '{if($1~" border_size ") print $2}' $theme_file | sed 's/ //g'`
|
||||
wind_border=$(( hypr_border * 3/2 ))
|
||||
elem_border=`[ $hypr_border -eq 0 ] && echo "5" || echo $hypr_border`
|
||||
r_override="window {border: ${hypr_width}px; border-radius: ${wind_border}px;} entry {border-radius: ${elem_border}px;} element {border-radius: ${elem_border}px;}"
|
||||
|
||||
|
||||
# read hypr font size
|
||||
|
||||
#fnt_size=`awk '{if($6=="monospace-font-name") print $NF}' $theme_file | sed "s/'//g"`
|
||||
fnt_override=`gsettings get org.gnome.desktop.interface monospace-font-name | awk '{gsub(/'\''/,""); print $NF}'`
|
||||
fnt_override="configuration {font: \"JetBrainsMono Nerd Font ${fnt_override}\";}"
|
||||
|
||||
|
||||
# clipboard action
|
||||
|
||||
case $1 in
|
||||
c) cliphist list | rofi -dmenu -theme-str "entry { placeholder: \"Copy...\";} ${pos} ${r_override}" -theme-str "${fnt_override}" -config $roconf | cliphist decode | wl-copy
|
||||
;;
|
||||
d) cliphist list | rofi -dmenu -theme-str "entry { placeholder: \"Delete...\";} ${pos} ${r_override}" -theme-str "${fnt_override}" -config $roconf | cliphist delete
|
||||
;;
|
||||
w) if [ `echo -e "Yes\nNo" | rofi -dmenu -theme-str "entry { placeholder: \"Clear Clipboard History?\";} ${pos} ${r_override}" -theme-str "${fnt_override}" -config $roconf` == "Yes" ] ; then
|
||||
cliphist wipe
|
||||
fi
|
||||
;;
|
||||
*) echo -e "cliphist.sh [action] [position]\nwhere action,"
|
||||
echo "c : cliphist list and copy selected"
|
||||
echo "d : cliphist list and delete selected"
|
||||
echo "w : cliphist wipe database"
|
||||
echo "where position,"
|
||||
echo "1 : top left"
|
||||
echo "2 : top right"
|
||||
echo "3 : bottom right"
|
||||
echo "4 : bottom left"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
4
modules/home/hyprland/conf/hypr/scripts/create-dirs.sh
Normal file
4
modules/home/hyprland/conf/hypr/scripts/create-dirs.sh
Normal file
@@ -0,0 +1,4 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# 创建截图目录
|
||||
mkdir -p $HOME/tmp/Screenshots
|
||||
5
modules/home/hyprland/conf/hypr/scripts/dontkillsteam.sh
Executable file
5
modules/home/hyprland/conf/hypr/scripts/dontkillsteam.sh
Executable file
@@ -0,0 +1,5 @@
|
||||
if [[ $(hyprctl activewindow -j | jq -r ".class") == "Steam" ]]; then
|
||||
xdotool windowunmap $(xdotool getactivewindow)
|
||||
else
|
||||
hyprctl dispatch killactive ""
|
||||
fi
|
||||
14
modules/home/hyprland/conf/hypr/scripts/gamemode.sh
Executable file
14
modules/home/hyprland/conf/hypr/scripts/gamemode.sh
Executable file
@@ -0,0 +1,14 @@
|
||||
#!/usr/bin/env sh
|
||||
HYPRGAMEMODE=$(hyprctl getoption animations:enabled | sed -n '2p' | awk '{print $2}')
|
||||
if [ $HYPRGAMEMODE = 1 ] ; then
|
||||
hyprctl --batch "\
|
||||
keyword animations:enabled 0;\
|
||||
keyword decoration:drop_shadow 0;\
|
||||
keyword decoration:blur:enabled 0;\
|
||||
keyword general:gaps_in 0;\
|
||||
keyword general:gaps_out 0;\
|
||||
keyword general:border_size 1;\
|
||||
keyword decoration:rounding 0"
|
||||
exit
|
||||
fi
|
||||
hyprctl reload
|
||||
49
modules/home/hyprland/conf/hypr/scripts/logoutlaunch.sh
Executable file
49
modules/home/hyprland/conf/hypr/scripts/logoutlaunch.sh
Executable file
@@ -0,0 +1,49 @@
|
||||
#!/usr/bin/env sh
|
||||
|
||||
# detect monitor y res
|
||||
res=`cat /sys/class/drm/*/modes | head -1 | cut -d 'x' -f 2`
|
||||
|
||||
# scale config layout and style
|
||||
case $1 in
|
||||
1) wlColms=6
|
||||
export mgn=$(( res * 10 / 100 ))
|
||||
export hvr=$(( res * 5 / 100 )) ;;
|
||||
2) wlColms=2
|
||||
export mgn=$(( res * 8 / 100 ))
|
||||
export mgn2=$(( res * 65 / 100 ))
|
||||
export hvr=$(( res * 3 / 100 ))
|
||||
export hvr2=$(( res * 60 / 100 )) ;;
|
||||
*) echo "Error: invalid parameter passed..."
|
||||
exit 1 ;;
|
||||
esac
|
||||
|
||||
# scale font size
|
||||
export fntSize=$(( res * 2 / 100 ))
|
||||
|
||||
# detect gtk system theme
|
||||
export gtkThm="Catppuccin-Latte" #`gsettings get org.gnome.desktop.interface gtk-theme | sed "s/'//g"`
|
||||
export csMode=`gsettings get org.gnome.desktop.interface color-scheme | sed "s/'//g" | awk -F '-' '{print $2}'`
|
||||
export BtnCol=`[ "$csMode" == "dark" ] && ( echo "black" ) || ( echo "white" )`
|
||||
export BtnBkg=`[ "$csMode" == "dark" ] && ( echo "color" ) || ( echo "bg" )`
|
||||
export WindBg=`[ "$csMode" == "dark" ] && ( echo "rgba(0,0,0,0.5)" ) || ( echo "rgba(255,255,255,0.6)" )`
|
||||
export wbarTheme="$HOME/.config/waybar/themes/${gtkThm}.css"
|
||||
|
||||
# eval hypr border radius
|
||||
hyprTheme="$HOME/.config/hypr/themes/${gtkThm}.conf"
|
||||
hypr_border=`awk -F '=' '{if($1~" rounding ") print $2}' $hyprTheme | sed 's/ //g'`
|
||||
export active_rad=$(( hypr_border * 5 ))
|
||||
export button_rad=$(( hypr_border * 8 ))
|
||||
|
||||
# set file variables
|
||||
wLayout="$HOME/.config/wlogout/layout_$1"
|
||||
wlTmplt="$HOME/.config/wlogout/style_$1.css"
|
||||
|
||||
# eval config files
|
||||
wlStyle=`envsubst < $wlTmplt`
|
||||
|
||||
# eval padding
|
||||
y_pad=$(( res * 20 / 100 ))
|
||||
|
||||
# launch wlogout
|
||||
wlogout -b $wlColms -c 0 -r 0 -T $y_pad -B $y_pad --layout $wLayout --css <(echo "$wlStyle") --protocol layer-shell
|
||||
|
||||
52
modules/home/hyprland/conf/hypr/scripts/modeswitch.sh
Executable file
52
modules/home/hyprland/conf/hypr/scripts/modeswitch.sh
Executable file
@@ -0,0 +1,52 @@
|
||||
#!/usr/bin/env sh
|
||||
|
||||
## main script ##
|
||||
CFGDIR="$HOME/.config"
|
||||
X_MODE=$1
|
||||
|
||||
## check mode ##
|
||||
if [ "$X_MODE" == "dark" ] || [ "$X_MODE" == "light" ] ; then
|
||||
S_MODE="$X_MODE"
|
||||
|
||||
elif [ "$X_MODE" == "switch" ] ; then
|
||||
X_MODE=`readlink $CFGDIR/swww/wall.set | awk -F "." '{print $NF}'`
|
||||
|
||||
if [ "$X_MODE" == "dark" ] ; then
|
||||
S_MODE="light"
|
||||
flatpak --user override --env=GTK_THEME=Catppuccin-Latte
|
||||
|
||||
elif [ "$X_MODE" == "light" ] ; then
|
||||
S_MODE="dark"
|
||||
flatpak --user override --env=GTK_THEME=Catppuccin-Mocha
|
||||
|
||||
else
|
||||
echo "ERROR: unable to fetch wallpaper mode."
|
||||
fi
|
||||
|
||||
else
|
||||
echo "ERROR: unknown mode, use 'dark', 'light' or 'switch'."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
### hyprland ###
|
||||
ln -fs $CFGDIR/hypr/${S_MODE}.conf $CFGDIR/hypr/theme.conf
|
||||
hyprctl reload
|
||||
|
||||
### swwwallpaper ###
|
||||
x=`echo $S_MODE | cut -c 1`
|
||||
$CFGDIR/swww/swwwallpaper.sh -$x
|
||||
|
||||
### qt5ct ###
|
||||
ln -fs $CFGDIR/qt5ct/colors/${S_MODE}.conf $CFGDIR/qt5ct/colors/theme.conf
|
||||
|
||||
### rofi ###
|
||||
ln -fs $CFGDIR/rofi/${S_MODE}.rasi $CFGDIR/rofi/theme.rasi
|
||||
|
||||
### kitty ###
|
||||
ln -fs $CFGDIR/kitty/${S_MODE}.conf $CFGDIR/kitty/theme.conf
|
||||
killall -SIGUSR1 kitty
|
||||
|
||||
### waybar ###
|
||||
ln -fs $CFGDIR/waybar/${S_MODE}.css $CFGDIR/waybar/style.css
|
||||
sleep 1
|
||||
killall -SIGUSR2 waybar
|
||||
12
modules/home/hyprland/conf/hypr/scripts/resetxdgportal.sh
Executable file
12
modules/home/hyprland/conf/hypr/scripts/resetxdgportal.sh
Executable file
@@ -0,0 +1,12 @@
|
||||
#!/bin/bash
|
||||
sleep 1
|
||||
killall xdg-desktop-portal-hyprland
|
||||
killall xdg-desktop-portal-gnome
|
||||
killall xdg-desktop-portal-kde
|
||||
killall xdg-desktop-portal-lxqt
|
||||
killall xdg-desktop-portal-wlr
|
||||
killall xdg-desktop-portal
|
||||
sleep 1
|
||||
/usr/lib/xdg-desktop-portal-hyprland &
|
||||
sleep 2
|
||||
/usr/lib/xdg-desktop-portal &
|
||||
27
modules/home/hyprland/conf/hypr/scripts/systemupdate.sh
Executable file
27
modules/home/hyprland/conf/hypr/scripts/systemupdate.sh
Executable file
@@ -0,0 +1,27 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Check release
|
||||
if [ ! -f /etc/arch-release ] ; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Check for updates
|
||||
aur=$(yay -Qua | wc -l)
|
||||
ofc=$(pacman -Qu | wc -l)
|
||||
|
||||
# Calculate total available updates
|
||||
upd=$(( ofc + aur ))
|
||||
echo "$upd"
|
||||
|
||||
# Show tooltip
|
||||
if [ $upd -eq 0 ] ; then
|
||||
echo " Packages are up to date"
|
||||
else
|
||||
echo " Official $ofc AUR $aur"
|
||||
fi
|
||||
|
||||
# Trigger upgrade
|
||||
if [ "$1" == "up" ] ; then
|
||||
kitty --title systemupdate sh -c 'yay -Syu'
|
||||
fi
|
||||
|
||||
49
modules/home/hyprland/conf/hypr/scripts/themeselect.sh
Executable file
49
modules/home/hyprland/conf/hypr/scripts/themeselect.sh
Executable file
@@ -0,0 +1,49 @@
|
||||
#!/usr/bin/env sh
|
||||
|
||||
## set variables ##
|
||||
BaseDir=`dirname $(realpath $0)`
|
||||
ThemeCtl="$HOME/.config/swww/wall.ctl"
|
||||
ThumbDir="$HOME/.config/swww/Themes-Ctl"
|
||||
RofiConf="$HOME/.config/rofi/themeselect.rasi"
|
||||
ThemeSet="$HOME/.config/hypr/themes/theme.conf"
|
||||
|
||||
|
||||
## show and apply theme ##
|
||||
if [ -z "$1" ] ; then
|
||||
|
||||
hypr_border=`awk -F '=' '{if($1~" rounding ") print $2}' $ThemeSet | sed 's/ //g'`
|
||||
elem_border=$(( hypr_border * 5 ))
|
||||
icon_border=$(( elem_border - 5 ))
|
||||
r_override="element {border-radius: ${elem_border}px;} element-icon {border-radius: ${icon_border}px;}"
|
||||
|
||||
ThemeSel=$(cat $ThemeCtl | while read line
|
||||
do
|
||||
thm=`echo $line | cut -d '|' -f 2`
|
||||
wal=`echo $line | cut -d '|' -f 3`
|
||||
echo -en "$thm\x00icon\x1f$ThumbDir/${thm}.png\n"
|
||||
done | rofi -dmenu -theme-str "${r_override}" -config $RofiConf)
|
||||
|
||||
if [ ! -z $ThemeSel ] ; then
|
||||
${BaseDir}/themeswitch.sh -s $ThemeSel
|
||||
fi
|
||||
|
||||
## regenerate thumbnails ##
|
||||
elif [ "$1" == "T" ] ; then
|
||||
|
||||
echo "refreshing thumbnails..."
|
||||
cat $ThemeCtl | while read line
|
||||
do
|
||||
thm=`echo $line | cut -d '|' -f 2`
|
||||
wal=`echo $line | cut -d '|' -f 3`
|
||||
wal=`eval echo $wal`
|
||||
|
||||
echo "croping image from wallpaper $ThumbDir/${thm}.png..."
|
||||
convert $wal -thumbnail 500x500^ -gravity center -extent 500x500 $ThumbDir/${thm}.png
|
||||
#convert $wal -gravity Center -crop 1080x1080+0+0 $ThumbDir/${thm}.png
|
||||
#echo "applying rounded corner mask and generating $ThumbDir/${thm}.png..."
|
||||
#convert -size 1080x1080 xc:none -draw "roundrectangle 0,0,1080,1080,80,80" $ThumbDir/roundedmask.png
|
||||
#convert $ThumbDir/${thm}_tmp.png -matte $ThumbDir/roundedmask.png -compose DstIn -composite $ThumbDir/${thm}.png
|
||||
done
|
||||
|
||||
fi
|
||||
|
||||
125
modules/home/hyprland/conf/hypr/scripts/themeswitch.sh
Executable file
125
modules/home/hyprland/conf/hypr/scripts/themeswitch.sh
Executable file
@@ -0,0 +1,125 @@
|
||||
#!/usr/bin/env sh
|
||||
|
||||
# set variables
|
||||
BaseDir=`dirname $(realpath $0)`
|
||||
ConfDir="$HOME/.config"
|
||||
ThemeCtl="$ConfDir/swww/wall.ctl"
|
||||
|
||||
|
||||
# evaluate options
|
||||
while getopts "npst" option ; do
|
||||
case $option in
|
||||
|
||||
n ) # set next theme
|
||||
ThemeSet=`head -1 $ThemeCtl | cut -d '|' -f 2` #default value
|
||||
flg=0
|
||||
while read line
|
||||
do
|
||||
if [ $flg -eq 1 ] ; then
|
||||
ThemeSet=`echo $line | cut -d '|' -f 2`
|
||||
break
|
||||
elif [ `echo $line | cut -d '|' -f 1` -eq 1 ] ; then
|
||||
flg=1
|
||||
fi
|
||||
done < $ThemeCtl
|
||||
export xtrans="center" ;;
|
||||
|
||||
p ) # set previous theme
|
||||
ThemeSet=`tail -1 $ThemeCtl | cut -d '|' -f 2` #default value
|
||||
flg=0
|
||||
while read line
|
||||
do
|
||||
if [ $flg -eq 1 ] ; then
|
||||
ThemeSet=`echo $line | cut -d '|' -f 2`
|
||||
break
|
||||
elif [ `echo $line | cut -d '|' -f 1` -eq 1 ] ; then
|
||||
flg=1
|
||||
fi
|
||||
done < <( tac $ThemeCtl )
|
||||
export xtrans="outer" ;;
|
||||
|
||||
s ) # set selected theme
|
||||
shift $((OPTIND -1))
|
||||
ThemeSet=$1 ;;
|
||||
|
||||
t ) # display tooltip
|
||||
echo ""
|
||||
echo " Next/Previous Theme"
|
||||
exit 0 ;;
|
||||
|
||||
* ) # invalid option
|
||||
echo "n : set next theme"
|
||||
echo "p : set previous theme"
|
||||
echo "s : set theme from parameter"
|
||||
echo "t : display tooltip"
|
||||
exit 1 ;;
|
||||
esac
|
||||
done
|
||||
|
||||
|
||||
# update theme control
|
||||
if [ `cat $ThemeCtl | awk -F '|' -v thm=$ThemeSet '{if($2==thm) print$2}' | wc -w` -ne 1 ] ; then
|
||||
echo "Unknown theme selected: $ThemeSet"
|
||||
echo "Available themes are:"
|
||||
cat $ThemeCtl | cut -d '|' -f 2
|
||||
exit 1
|
||||
else
|
||||
echo "Selected theme: $ThemeSet"
|
||||
sed -i "s/^1/0/g" $ThemeCtl
|
||||
awk -F '|' -v thm=$ThemeSet '{OFS=FS} {if($2==thm) $1=1; print$0}' $ThemeCtl > $BaseDir/tmp && mv $BaseDir/tmp $ThemeCtl
|
||||
fi
|
||||
|
||||
|
||||
# swwwallpaper
|
||||
getWall=`grep '^1|' $ThemeCtl | cut -d '|' -f 3`
|
||||
getWall=`eval echo $getWall`
|
||||
ln -fs $getWall $ConfDir/swww/wall.set
|
||||
$ConfDir/swww/swwwallpaper.sh
|
||||
|
||||
if [ $? -ne 0 ] ; then
|
||||
echo "ERROR: Unable to set wallpaper"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
# vs code
|
||||
sed -i "/workbench.colorTheme/c\ \"workbench.colorTheme\": \"${ThemeSet}\"," $ConfDir/Code/User/settings.json
|
||||
|
||||
|
||||
# kitty
|
||||
ln -fs $ConfDir/kitty/themes/${ThemeSet}.conf $ConfDir/kitty/themes/theme.conf
|
||||
killall -SIGUSR1 kitty
|
||||
|
||||
|
||||
# qt5ct
|
||||
sed -i "/^color_scheme_path=/c\color_scheme_path=$ConfDir/qt5ct/colors/${ThemeSet}.conf" $ConfDir/qt5ct/qt5ct.conf
|
||||
IconSet=`awk -F "'" '$0 ~ /gsettings set org.gnome.desktop.interface icon-theme/{print $2}' $ConfDir/hypr/themes/${ThemeSet}.conf`
|
||||
sed -i "/^icon_theme=/c\icon_theme=${IconSet}" $ConfDir/qt5ct/qt5ct.conf
|
||||
|
||||
|
||||
# flatpak GTK
|
||||
flatpak --user override --env=GTK_THEME="${ThemeSet}"
|
||||
flatpak --user override --env=ICON_THEME="${IconSet}"
|
||||
|
||||
|
||||
# rofi
|
||||
ln -fs $ConfDir/rofi/themes/${ThemeSet}.rasi $ConfDir/rofi/themes/theme.rasi
|
||||
|
||||
|
||||
# hyprland
|
||||
ln -fs $ConfDir/hypr/themes/${ThemeSet}.conf $ConfDir/hypr/themes/theme.conf
|
||||
hyprctl reload
|
||||
|
||||
|
||||
# refresh thumbnails
|
||||
$BaseDir/themeselect.sh T &
|
||||
|
||||
|
||||
# send notification
|
||||
ncolor="-h string:bgcolor:#343d46 -h string:fgcolor:#c0c5ce -h string:frcolor:#c0c5ce"
|
||||
notify-send $ncolor "theme" -a " ${ThemeSet}" -i "~/.config/dunst/icons/paint.svg" -r 91190 -t 2200
|
||||
|
||||
|
||||
# waybar
|
||||
$ConfDir/waybar/wbarconfgen.sh
|
||||
|
||||
76
modules/home/hyprland/conf/hypr/scripts/volumecontrol.sh
Executable file
76
modules/home/hyprland/conf/hypr/scripts/volumecontrol.sh
Executable file
@@ -0,0 +1,76 @@
|
||||
#!/usr/bin/env sh
|
||||
|
||||
|
||||
# define functions
|
||||
|
||||
function print_error
|
||||
{
|
||||
cat << "EOF"
|
||||
./volumecontrol.sh -[device] <action>
|
||||
...valid device are...
|
||||
i -- [i]nput decive
|
||||
o -- [o]utput device
|
||||
...valid actions are...
|
||||
i -- <i>ncrease volume [+5]
|
||||
d -- <d>ecrease volume [-5]
|
||||
m -- <m>ute [x]
|
||||
EOF
|
||||
exit 1
|
||||
}
|
||||
|
||||
function notify_vol
|
||||
{
|
||||
vol=`pamixer $srce --get-volume | cat`
|
||||
angle="$(( (($vol+2)/5) * 5 ))"
|
||||
ico="${icodir}/vol-${angle}.svg"
|
||||
bar=$(seq -s "." $(($vol / 15)) | sed 's/[0-9]//g')
|
||||
notify-send $ncolor "volctl" -a "$vol$bar" "$nsink" -i $ico -r 91190 -t 800
|
||||
}
|
||||
|
||||
function notify_mute
|
||||
{
|
||||
mute=`pamixer $srce --get-mute | cat`
|
||||
if [ "$mute" == "true" ] ; then
|
||||
notify-send $ncolor "volctl" -a "muted" "$nsink" -i ${icodir}/muted-${dvce}.svg -r 91190 -t 800
|
||||
else
|
||||
notify-send $ncolor "volctl" -a "unmuted" "$nsink" -i ${icodir}/unmuted-${dvce}.svg -r 91190 -t 800
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
# set device source
|
||||
|
||||
while getopts io SetSrc
|
||||
do
|
||||
case $SetSrc in
|
||||
i) nsink=$(pamixer --list-sources | grep "_input." | head -1 | awk -F '" "' '{print $NF}' | sed 's/"//')
|
||||
srce="--default-source"
|
||||
dvce="mic" ;;
|
||||
o) nsink=$(pamixer --get-default-sink | grep "_output." | awk -F '" "' '{print $NF}' | sed 's/"//')
|
||||
srce=""
|
||||
dvce="speaker" ;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [ $OPTIND -eq 1 ] ; then
|
||||
print_error
|
||||
fi
|
||||
|
||||
|
||||
# set device action
|
||||
|
||||
shift $((OPTIND -1))
|
||||
step="${2:-5}"
|
||||
icodir="~/.config/dunst/icons/vol"
|
||||
ncolor="-h string:bgcolor:#343d46 -h string:fgcolor:#c0c5ce -h string:frcolor:#c0c5ce"
|
||||
|
||||
case $1 in
|
||||
i) pamixer $srce -i ${step}
|
||||
notify_vol ;;
|
||||
d) pamixer $srce -d ${step}
|
||||
notify_vol ;;
|
||||
m) pamixer $srce -t
|
||||
notify_mute ;;
|
||||
*) print_error ;;
|
||||
esac
|
||||
|
||||
Reference in New Issue
Block a user