Files
hyprland/config/hypr/scripts/Ui_cmd.sh
T
2024-06-25 18:42:47 +05:45

219 lines
7.5 KiB
Bash
Executable File

#!/bin/bash
# Source the configuration file.
CONFIG_FILE=~/dotfiles/hypr/scripts/Ref.sh
source "$CONFIG_FILE"
######################################
# #
# Toggle Blur #
# #
######################################
toggle_blur (){
STATE=$(hyprctl -j getoption decoration:blur:passes | jq ".int")
if [ "${STATE}" == "2" ]; then
hyprctl keyword decoration:blur:size 2
hyprctl keyword decoration:blur:passes 1
notify-send -e -u low -i "$notif" "Less blur"
else
hyprctl keyword decoration:blur:size 5
hyprctl keyword decoration:blur:passes 2
notify-send -e -u low -i "$notif" "Normal blur"
fi
}
######################################
# #
# Toggle Animation #
# #
######################################
toggle_animation() {
STATE=$(hyprctl -j getoption animations:enabled | jq ".int")
if [ "${STATE}" = "1" ]; then
hyprctl keyword animations:enabled 0
noti_n "Disable animation"
else
hyprctl keyword animations:enabled 1
noti_n "Enable animation"
fi
}
######################################
# #
# Rainbow Border #
# #
######################################
rainbow_border() {
function random_hex() {
random_hex=("0xff$(openssl rand -hex 3)")
echo $random_hex
}
hyprctl keyword general:col.active_border $(random_hex) $(random_hex) $(random_hex) $(random_hex) $(random_hex) $(random_hex) $(random_hex) $(random_hex) $(random_hex) $(random_hex) 270deg
hyprctl keyword general:col.inactive_border $(random_hex) $(random_hex) $(random_hex) $(random_hex) $(random_hex) $(random_hex) $(random_hex) $(random_hex) $(random_hex) $(random_hex) 270deg
}
################################################
# #
# Change Layout Master to Dwindle #
# #
################################################
change_layout() {
LAYOUT=$(hyprctl -j getoption general:layout | jq -r '.str')
case $LAYOUT in
"master")
hyprctl keyword general:layout dwindle
hyprctl keyword unbind SUPER,J
hyprctl keyword unbind SUPER,K
hyprctl keyword bind SUPER,J,cyclenext
hyprctl keyword bind SUPER,K,cyclenext,prev
hyprctl keyword bind SUPER,O,togglesplit
notify-send -u low -i "$notif" "Dwindle Layout"
;;
"dwindle")
hyprctl keyword general:layout master
hyprctl keyword unbind SUPER,J
hyprctl keyword unbind SUPER,K
hyprctl keyword unbind SUPER,O
hyprctl keyword bind SUPER,J,layoutmsg,cyclenext
hyprctl keyword bind SUPER,K,layoutmsg,cycleprev
notify-send -u low -i "$notif" "Master Layout"
;;
*) ;;
esac
}
######################################
# #
# Random Wallpaper #
# #
######################################
random_wall() {
focused_monitor=$(hyprctl monitors | awk '/^Monitor/{name=$2} /focused: yes/{print name}')
PICS=($(find ${wallDIR} -type f \( -name "*.jpg" -o -name "*.jpeg" -o -name "*.png" -o -name "*.gif" \)))
RANDOMPICS=${PICS[ $RANDOM % ${#PICS[@]} ]}
swww query || swww-daemon --format xrgb && swww img -o $focused_monitor ${RANDOMPICS} $SWWW_PARAMS
$RunCMD symlink
}
######################################
# #
# Auto Wallpaper Changer #
# #
######################################
auto_wall() {
focused_monitor=$(hyprctl monitors | awk '/^Monitor/{name=$2} /focused: yes/{print name}')
INTERVAL=1800 # This controls (in seconds) when to switch to the next image
while true; do
find "$wallDIR" -type f \( -name "*.jpg" -o -name "*.jpeg" -o -name "*.png" -o -name "*.gif" \) -print0 \
| shuf -z -n 1 \
| xargs -0 -I {} swww img -o $focused_monitor "{}" ${SWWW_PARAMS} &&
$RunCMD symlink
sleep $INTERVAL
done
}
######################################
# #
# Wallpaper Selector #
# #
######################################
select_wall() {
focused_monitor=$(hyprctl monitors | awk '/^Monitor/{name=$2} /focused: yes/{print name}')
build_theme() {
rows="$1"
cols="$2"
icon_size="$2"
echo "element{orientation:vertical;}element-text{horizontal-align:0.5;}element-icon{size:${icon_size}.0000em;}listview{lines:${rows};columns:${cols};}"
}
if [ ! -d "$wallDIR" ]; then
echo "Error: Wallpaper directory not found." >&2
exit 1
fi
images=$(find "$wallDIR" -maxdepth 1 -type f -printf "%f\x00icon\x1f$wallDIR/%f\n" | sort -n)
choice=$(echo -en "$images\nRandom Choice" | rofi -dmenu -i -show-icons -theme-str "$(build_theme 3 5 6)" -p "󰸉 Wallpaper")
if [ -n "$choice" ]; then
if [ "$choice" = "Random Choice" ]; then
choice=$(find "$wallDIR" -type f -maxdepth 1 -printf "%f\n" | shuf -n1)
fi
wallpaper="$wallDIR/${choice#*icon\x1f}"
swww img -o $focused_monitor $SWWW_PARAMS1 "$wallpaper"
$RunCMD symlink
else
echo "No wallpaper selected. Exiting."
exit 0
fi
}
######################################
# #
# GameMode #
# #
######################################)
gamemode() {
status=$(hyprctl getoption animations:enabled -j | jq ".int")
if [[ $status -eq 1 ]]; then
notify-send -e -u low -i "$notif" "All animations off"
hyprctl keyword animations:enabled 0
swww kill
else
notify-send -e -u normal -i "$notif" "All animations normal"
hyprctl keyword animations:enabled 1
swww query || swww init && $random_wall
fi
}
######################################
# #
# Toggle Opaque #
# #
######################################
enable_opaque() {
sleep 0.2
hyprctl setprop address:$(hyprctl -j activewindow | jq -r -c ".address") forceopaque 0 lock
}
disable_opaque() {
sleep 0.2
hyprctl setprop address:$(hyprctl -j activewindow | jq -r -c ".address") forceopaque 1 lock
}
######################################
# Keyboard Layout Switcher #
# #
######################################
kb_changer() {
current_layout=$(cat "$layout_f")
[ -f "$settings_file" ] && IFS=',' read -ra layout_mapping <<< "$(grep 'kb_layout=' "$settings_file" | cut -d '=' -f 2)"
for i in "${!layout_mapping[@]}"; do
[ "$current_layout" == "${layout_mapping[i]}" ] && new_layout="${layout_mapping[((i + 1) % ${#layout_mapping[@]})]}" && break
done
hyprctl switchxkblayout "at-translated-set-2-keyboard" "$new_layout" && echo "$new_layout" > "$layout_f"
hyprctl devices -j | jq -r '.keyboards[].name' | while read -r name; do
hyprctl switchxkblayout "$name" next || { notify-send -u low -t 2000 'Keyboard layout' 'Error: Layout change failed'; exit 1; }
done
notify-send -u low -i "$notif" "Keyboard language changed to $new_layout"
}