Total rewrite #15
							
								
								
									
										7
									
								
								example-extensions/youtube-mime.toml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								example-extensions/youtube-mime.toml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,7 @@ | |||||||
|  | # xdg-sanity mime extension | ||||||
|  | 
 | ||||||
|  | [replace] # replaces these urls | ||||||
|  | urls = [ "youtube.com", "youtu.be" ] | ||||||
|  | 
 | ||||||
|  | [with] # replaces the mime type of the above | ||||||
|  | mime = "video/vnd.youtube.yt" | ||||||
							
								
								
									
										116
									
								
								xdg-sanity
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										116
									
								
								xdg-sanity
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,116 @@ | |||||||
|  | #!/bin/sh | ||||||
|  | 
 | ||||||
|  | set -e | ||||||
|  | 
 | ||||||
|  | argv0="$0" | ||||||
|  | 
 | ||||||
|  | # grabs configuration files | ||||||
|  | CONFIG="$XDG_CONFIG_HOME"/xdg-sanity.toml | ||||||
|  | if ! test -e "$CONFIG"; then | ||||||
|  | 	touch "$CONFIG" | ||||||
|  | 	CONFIG=/etc/xdg-sanity.toml | ||||||
|  | 	if ! test -e "$CONFIG"; then | ||||||
|  | 		exit 66 # sysexits(3) EX_NOINPUT | ||||||
|  | 	fi | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # check if usage is valid | ||||||
|  | if ! test -n "$1"; then | ||||||
|  | 	printf "Usage: %s [resource...]\n" "$argv0" 1>&2 | ||||||
|  | 	exit 64 # sysexits(3) EX_USAGE | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | # check if we have curl(1) | ||||||
|  | if ! command -v curl >/dev/null 2>&1; then | ||||||
|  | 	printf "%s: Missing dependency: curl(1)\n" "$argv0" 1>&2 | ||||||
|  | 	exit 71 # sysexits(3) EX_OSERR | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | # check if we have tomcat(1) | ||||||
|  | if ! command -v tomcat >/dev/null 2>&1; then | ||||||
|  | 	printf "%s: Missing dependency: stoml(1)\n" "$argv0" 1>&2 | ||||||
|  | 	exit 71 # sysexits(3) EX_OSERR | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | # set the XDG_COMMAND | ||||||
|  | test -n "$XDG_COMMAND" || XDG_COMMAND="$(tomcat tools.xdg $CONFIG)" | ||||||
|  | ! command -v handlr >/dev/null 2>&1 && ! command -v xdg-open >/dev/null 2>&1 \ | ||||||
|  |     && XDG_COMMAND=false \ | ||||||
|  | 		|| true | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # check if we have a BROWSER | ||||||
|  | test -n "$BROWSER" || BROWSER="$(tomcat tools.browser $CONFIG)" | ||||||
|  | if ! test -n "$BROWSER"; then | ||||||
|  | 	printf "\ | ||||||
|  | %s: \$BROWSER not filled. | ||||||
|  | 	Please place the path to your preferred browser's executable in | ||||||
|  | 	$XDG_CONFIG_HOME/xdg-sanity.conf or /etc/xdg-sanity.conf | ||||||
|  | " "$argv0" 1>&2 | ||||||
|  | 	exit 71 # sysexits(3) EX_OSERR | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | while test -n "$1"; do | ||||||
|  | 	URL="$1" | ||||||
|  | 
 | ||||||
|  | 	# use curl(1) to write out the request header's content_type, | ||||||
|  | 	# strip everything after the first semicolon, | ||||||
|  | 	# chop off any weird whitespace remnants | ||||||
|  | 	MIME="$(curl -Ls -o /dev/null -w '%{content_type}' "$1" | sed 's/\;.*//' |\ | ||||||
|  | 		xargs echo)" | ||||||
|  | 
 | ||||||
|  | 	# get the pattern for the extensions to MATCH | ||||||
|  | 	MATCH=$(printf "%s\n" "$URL" | sed -ne 's/^h.\+\/\///p' |\ | ||||||
|  | 		sed -e 's/\/.*\+//g') | ||||||
|  | 	 | ||||||
|  | 	# run through MIME extensions | ||||||
|  | 	for file in \ | ||||||
|  | 		"$XDG_DATA_HOME"/xdg-sanity/*-mime.toml \ | ||||||
|  | 	  /usr/share/xdg-sanity/*-mime.toml \ | ||||||
|  | 		/dev/null | ||||||
|  | 	do | ||||||
|  | 		i=$(tomcat replace.urls "$file" | sed 's/	/\n/g' | xargs wc -l) | ||||||
|  | 		while ! [ "$i" = 0 ]; do | ||||||
|  | 		  if [ "$MATCH" = "$(tomcat replace.urls[$i] $file)" ]; then | ||||||
|  | 				  MIME=$(tomcat with.mime "$file") | ||||||
|  | 			fi | ||||||
|  | 			i=$(dc -e "$i 1 - p") | ||||||
|  | 	  done | ||||||
|  | 	done | ||||||
|  | 
 | ||||||
|  | 	# and the replace extensions | ||||||
|  | 	for file in \ | ||||||
|  | 		"$XDG_DATA_HOME"/xdg-sanity/*-replace.toml \ | ||||||
|  | 	  /usr/share/xdg-sanity/*-replace.toml \ | ||||||
|  | 		/dev/null | ||||||
|  | 	do | ||||||
|  |     i=$(tomcat replace.urls "$file" | sed 's/	/\n/g' | xargs wc -l) | ||||||
|  | 		while ! [ "$i" = 0 ]; do | ||||||
|  | 		  if [ "$MATCH" = "$(tomcat replace.urls[$i] $file)" ]; then | ||||||
|  | 				  URL=$(tomcat with.url "$file") | ||||||
|  | 			fi | ||||||
|  | 			i=$(dc -e "$i 1 - p") | ||||||
|  | 	  done | ||||||
|  | 	done | ||||||
|  | 
 | ||||||
|  |   # these commands may fail; this is intentional | ||||||
|  | 	if [ "$MIME" = "text/html" ]; then | ||||||
|  | 		"$BROWSER" "$URL" | ||||||
|  | 	else | ||||||
|  | 		case "$(command -v $XDG_COMMAND)" in | ||||||
|  | 			*/handlr ) | ||||||
|  | 				"XDG_COMMAND" "$MIME" -- "$URL" | ||||||
|  | 				;; | ||||||
|  | 			*/xdg-open ) | ||||||
|  | 			  "$(xdg-mime query default $MIME)" "$URL" | ||||||
|  | 				;; | ||||||
|  | 			false ) | ||||||
|  | 				exit 69 # sysexits(3) EX_UNAVAILABLE | ||||||
|  | 				;; | ||||||
|  | 		esac | ||||||
|  | 	fi | ||||||
|  | 	shift | ||||||
|  | done | ||||||
|  | 
 | ||||||
|  | exit 0 | ||||||
| @ -1,12 +0,0 @@ | |||||||
| #!/bin/sh |  | ||||||
| 
 |  | ||||||
| # EXT-TYPE=mime |  | ||||||
| 
 |  | ||||||
| TEST=$(echo $1 | sed -ne 's/^h.\+\/\///p' | sed -e 's/\/.*\+//g') |  | ||||||
| 
 |  | ||||||
| if [ "$TEST" = "teddit.net" ] |  | ||||||
| then |  | ||||||
| echo "text/html" |  | ||||||
| else |  | ||||||
| echo $1 |  | ||||||
| fi |  | ||||||
| @ -1,3 +0,0 @@ | |||||||
| # EXT-TYPE=replace |  | ||||||
| 
 |  | ||||||
| replace youtube.com or youtu.be with piped.mint.lgbt |  | ||||||
| @ -1,12 +0,0 @@ | |||||||
| #!/bin/sh |  | ||||||
| 
 |  | ||||||
| # EXT-TYPE=replace |  | ||||||
| 
 |  | ||||||
| TEST=$(echo $1 | sed -ne 's/^h.\+\/\///p' | sed -e 's/\/.*\+//g') |  | ||||||
| 
 |  | ||||||
| if [ "$TEST" = "youtube.com" ] |  | ||||||
| then |  | ||||||
| echo $1 | sed -ne 's/youtube.com/piped.mint.lgbt/p' |  | ||||||
| else |  | ||||||
| echo $1 |  | ||||||
| fi |  | ||||||
| @ -1 +0,0 @@ | |||||||
| browser =  |  | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user