38 lines
		
	
	
		
			815 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			38 lines
		
	
	
		
			815 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/bash
 | |
| 
 | |
| if [ $# = 0 ]; then
 | |
|     cat <<EOF
 | |
| Usage: $(basename "${0}") process_name [executable_name] [--take-first]
 | |
|     process_name       As recognized by 'xdo' command
 | |
|     executable_name    As used for launching from terminal
 | |
|     --take-first       In case 'xdo' returns multiple process IDs
 | |
| EOF
 | |
|     exit 0
 | |
| fi
 | |
| 
 | |
| # Get id of process by class name and then fallback to instance name
 | |
| id=$(xdo id -N "${1}" || xdo id -n "${1}")
 | |
| 
 | |
| executable=${1}
 | |
| shift
 | |
| 
 | |
| while [ -n "${1}" ]; do
 | |
|     case ${1} in
 | |
|     --take-first)
 | |
|         id=$(head -1 <<<"${id}" | cut -f1 -d' ')
 | |
|         ;;
 | |
|     *)
 | |
|         executable=${1}
 | |
|         ;;
 | |
|     esac
 | |
|     shift
 | |
| done
 | |
| 
 | |
| if [ -z "${id}" ]; then
 | |
|     ${executable}
 | |
| else
 | |
|     while read -r instance; do
 | |
|         bspc node "${instance}" --flag hidden --to-monitor focused --focus
 | |
|     done <<<"${id}"
 | |
| fi
 |