104 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			104 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/usr/bin/env bash
 | |
| 
 | |
| get_current_workspace() {
 | |
|     hyprctl activeworkspace | head -n 1 | cut -d ' ' -f 3
 | |
| }
 | |
| 
 | |
| get_current_monitor() {
 | |
|     hyprctl activeworkspace | head -n 1 | rev | cut -d ' ' -f 1 | rev | tr -d ':'
 | |
| }
 | |
| 
 | |
| get_next_monitor() {
 | |
|     current_monitor=$(get_current_monitor)
 | |
|     next_monitor=$(hyprctl monitors | grep Monitor | grep " $current_monitor " -A 2 | sed '2q;d' | cut -d ' ' -f 2)
 | |
| 
 | |
|     if [ -z $next_monitor ]; then
 | |
|         next_monitor=$(hyprctl monitors | grep Monitor | head -n 1 | cut -d ' ' -f 2)
 | |
|     fi
 | |
| 
 | |
|     echo $next_monitor
 | |
| }
 | |
| 
 | |
| get_previous_monitor() {
 | |
|     current_monitor=$(get_current_monitor)
 | |
|     previous_monitor=$(hyprctl monitors | grep Monitor | grep " $current_monitor " -B 2 | sed '2q;d' | cut -d ' ' -f 2)
 | |
| 
 | |
|     if [ -z $previous_monitor ]; then
 | |
|         previous_monitor=$(hyprctl monitors | grep Monitor | tail -n 1 | cut -d ' ' -f 2)
 | |
|     fi
 | |
| 
 | |
|     echo $previous_monitor
 | |
| }
 | |
| 
 | |
| get_nth_workspace() {
 | |
|     current_workspace=$1
 | |
| 
 | |
|     if [[ "$current_workspace" == *0 ]]; then
 | |
|         current_workspace=$(($current_workspace - 10))
 | |
|     fi
 | |
| 
 | |
|     workspace=$(echo $current_workspace | cut -c 1)$2
 | |
| 
 | |
|     if [[ "$workspace" == *0 ]]; then
 | |
|         workspace=$(($workspace + 10))
 | |
|     fi
 | |
| 
 | |
|     echo $workspace
 | |
| }
 | |
| 
 | |
| case "$1" in
 | |
|     "cpustat")
 | |
|         head -n 1 ~/.config/dotfiles/hypr/.stat.txt;;
 | |
| 
 | |
|     "memstat")
 | |
|         tail -n 1 ~/.config/dotfiles/hypr/.stat.txt;;
 | |
| 
 | |
|     "workspace")
 | |
|         current_workspace=$(get_current_workspace)
 | |
|         workspace=$(get_nth_workspace $current_workspace $2)
 | |
|         hyprctl dispatch workspace $workspace;;
 | |
| 
 | |
|     "movetoworkspace")
 | |
|         current_workspace=$(get_current_workspace)
 | |
|         workspace=$(get_nth_workspace $current_workspace $2)
 | |
|         hyprctl dispatch movetoworkspace $workspace;;
 | |
| 
 | |
|     "previous")
 | |
|         current_monitor=$(get_current_monitor)
 | |
|         current_workspace=$(get_current_workspace)
 | |
|         previous_workspace=$(($current_workspace - 1))
 | |
| 
 | |
|         if [[ "$previous_workspace" == *0 ]]; then
 | |
|             previous_workspace=$(($previous_workspace + 10))
 | |
|         fi
 | |
| 
 | |
|         hyprctl dispatch workspace $previous_workspace;;
 | |
| 
 | |
|     "next")
 | |
|         current_monitor=$(get_current_monitor)
 | |
|         current_workspace=$(get_current_workspace)
 | |
|         next_workspace=$(($current_workspace + 1))
 | |
| 
 | |
|         if [[ "$next_workspace" == *1 ]]; then
 | |
|             next_workspace=$(($next_workspace - 10))
 | |
|         fi
 | |
| 
 | |
|         hyprctl dispatch workspace $next_workspace;;
 | |
| 
 | |
|     "movewindow")
 | |
|         next_monitor=$(get_next_monitor)
 | |
|         hyprctl dispatch movewindow mon:$next_monitor;;
 | |
| 
 | |
|     "focuspreviousmonitor")
 | |
|         previous_monitor=$(get_previous_monitor)
 | |
|         hyprctl dispatch focusmonitor $previous_monitor;;
 | |
| 
 | |
|     "focusnextmonitor")
 | |
|         next_monitor=$(get_next_monitor)
 | |
|         hyprctl dispatch focusmonitor $next_monitor;;
 | |
| 
 | |
|     "reload")
 | |
|         systemctl restart waybar --user;;
 | |
| 
 | |
| esac
 |