24
									
								
								sx-open
									
									
									
									
									
								
							
							
						
						
									
										24
									
								
								sx-open
									
									
									
									
									
								
							| @@ -18,6 +18,18 @@ act() { | |||||||
| 	return 0 | 	return 0 | ||||||
| } | } | ||||||
|  |  | ||||||
|  | notify() { | ||||||
|  | 	[[ $DISPLAY ]] || return 3 | ||||||
|  | 	[[ $notifier ]] || return 5 | ||||||
|  |  | ||||||
|  | 	"${notifier[@]}" 'sx-open' "$@" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | error() { | ||||||
|  | 	printf '%s\n' "$*" >&2 | ||||||
|  | 	notify "$*" | ||||||
|  | } | ||||||
|  |  | ||||||
| # handle_target <res> <uri> | # handle_target <res> <uri> | ||||||
| # 1: cmd failed | # 1: cmd failed | ||||||
| # 3: no handler | # 3: no handler | ||||||
| @@ -122,21 +134,27 @@ main() { | |||||||
| 	# Treat file:// as local paths. | 	# Treat file:// as local paths. | ||||||
| 	[[ "$target" =~ ^file:(//)?(/.+) ]] && target=${BASH_REMATCH[2]} | 	[[ "$target" =~ ^file:(//)?(/.+) ]] && target=${BASH_REMATCH[2]} | ||||||
|  |  | ||||||
|  | 	# Figure out if we're in X and set $notifier if we are. | ||||||
|  | 	if [[ $DISPLAY ]]; then | ||||||
|  | 		# Do we have notify-send? | ||||||
|  | 		notifier=$(type -P 'notify-send') | ||||||
|  | 	fi | ||||||
|  |  | ||||||
| 	handle_target cmd_result "$target" | 	handle_target cmd_result "$target" | ||||||
|  |  | ||||||
| 	case $? in | 	case $? in | ||||||
| 		(1) | 		(1) | ||||||
| 			printf 'Action failed with exit code: “%s”\n' "$cmd_result" >&2 | 			error "Action on “$target” failed with exit code: “$cmd_result”" | ||||||
| 			return 4 | 			return 4 | ||||||
| 		;; | 		;; | ||||||
|  |  | ||||||
| 		(2) | 		(2) | ||||||
| 			printf 'No such file or directory: “%s”\n' "$target" >&2 | 			error "No such file or directory: “$target”" | ||||||
| 			return 2 | 			return 2 | ||||||
| 		;; | 		;; | ||||||
|  |  | ||||||
| 		(3) | 		(3) | ||||||
| 			printf 'No handlers found for “%s”\n' "$target" >&2 | 			error "No handlers found for “$target”" | ||||||
| 			return 3 | 			return 3 | ||||||
| 		;; | 		;; | ||||||
| 	esac | 	esac | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user