Compare commits

11 Commits

Author SHA1 Message Date
439ef97f29 Merge pull request 'Updating README' (#10) from readme into main
Reviewed-on: #10
2022-09-22 02:05:15 +00:00
a10f4a3ceb added more readme info 2022-09-21 22:03:02 -04:00
e11e73d8a6 updated README.md 2022-09-07 22:06:14 -04:00
ffcf3ad4b0 Merge pull request 'Add redirect handling' (#9) from redirects into main
Reviewed-on: #9
2022-09-06 01:36:39 +00:00
1f912360e7 added redirect handling 2022-09-05 21:33:31 -04:00
fecb5e103e Merge pull request 'Implement Extensions' (#5) from extensions into main
Reviewed-on: #5
2022-09-05 01:05:10 +00:00
9a1c33d0d1 complete refactor 2022-09-04 20:04:31 -04:00
8c9b55bb96 typo 2022-09-04 20:04:31 -04:00
bc18380fec added mime type-changing extension type 2022-09-04 20:04:31 -04:00
bce239da30 changed extensions dir 2022-09-04 20:04:31 -04:00
2cfd97c158 added extensions 2022-09-04 20:04:22 -04:00
6 changed files with 113 additions and 12 deletions

View File

@@ -1,9 +1,34 @@
# xdg-sanity
This script is built to replace your default web browser in your desktop/XDG
settings. It intercepts http/s URIs sent to the default browser by XDG settings
and sends it to the appropriate application. For example, it will send
image/jpeg MIME type files to your image viewer.
The `xdg-sanity` script is built to replace your default web browser in your
desktop/XDG settings. It intercepts http/s URIs sent to the default browser by
`xdg-open` and sends it to the appropriate application. For example, it will
send `image/jpeg` MIME type files to your image viewer.
Add your default web browser to `/etc/xdg-sanity.conf` so the script can forward
links to it.
## Installation
### Arch
I maintain a package [on the
AUR](https://aur.archlinux.org/packages/xdg-sanity).
### From Source
First, make sure you have `curl(1)` and `handlr(1)` installed. Then, clone this
repository and move the `xdg-sanity/` folder into `/etc` and `xdg-sanity.sh` to
`xdg-sanity` wherever your operating system stores locally-installed binaries.
This is usually `/usr/local/bin`. Make sure the installation location is in your
`$PATH`.
Create a `xdg-sanity.desktop` file either manually or with `gendesk(1)`,
placing it, also, where your OS stores locally-installed `.desktop` files,
usually `/usr/local/applications`. Set your default web browser to that
`.desktop` file.
Add your default web browser to `/etc/xdg-sanity/xdg-sanity.conf` so the
script can forward links to it.
### Usage
Open links from applications outside your web browser as normal. Alternatively,
you can call `xdg-sanity` directly with the only argument accepted being a URI.

View File

@@ -1,17 +1,66 @@
#!/bin/sh
echo "Determining MIME type of $1:"
INPUT=$(echo $1)
echo "Loading configuration..."
CONFIG=$(cat /etc/xdg-sanity/xdg-sanity.conf)
BROWSER=$(echo $CONFIG | sed -ne 's/^browser *= *//p')
MIME=$(curl -I -s "$1" | sed -n -e 's/^[cC]ontent-[tT]ype: //p' | sed -e 's/;.\+//g' | tr -d '\r')
if [ "$BROWSER" = "" ]
then
echo "Please place the path to your default browser's executable in /etc/xdg-sanity/xdg-sanity.conf"
exit
else
echo "Found default browser $BROWSER"
fi
echo "Loading extensions..."
for EXT in /etc/xdg-sanity/extensions/*.sh
do
if [ "$EXT" = "/etc/xdg-sanity/extensions/*.sh" ]
then
echo "No extensions to load"
else
for EXT in /etc/xdg-sanity/extensions/*.sh
do
TYPE=$(cat $EXT | sed -ne 's/^# EXT-TYPE=//p' | tr -d '\n')
echo "Found $TYPE extension $EXT"
if [ "$TYPE" = "replace" ]
then
echo "Modifying $INPUT..."
INPUT=$($EXT "$INPUT")
echo "Got $INPUT"
else
if [ "$TYPE" = "mime" ]
then
echo "Modifying MIME type..."
MIME=$($EXT "$INPUT")
echo "Got $MIME"
fi
fi
done
fi
done
if [ "$MIME" = "" ] || [ "$MIME" = "$1" ] || [ "$MIME" = "$INPUT" ]
then
echo "Determining MIME type of $INPUT:"
# Determines HTTP code, might use for something else?
# CODE=$(curl -fLIs "$INPUT" | sed -ne 's/ [[:space:]]*$//p' | sed -ne 's|^HTTP/.\+ ||p')
MIME=$(curl -fLIs "$INPUT" | sed -ne 's/^[cC]ontent-[tT]ype: //p' | sed -e 's/;.\+//p' | tail -n1 | tr -d '\r')
echo $MIME
BROWSER=$(cat /etc/xdg-sanity.conf | sed -n -e 's/^browser = //p' )
fi
if [ "$MIME" = "text/html" ]
then
$BROWSER $1
$BROWSER $INPUT
else
handlr launch "$MIME" -- "$1"
handlr launch "$MIME" -- "$INPUT"
fi

View File

@@ -0,0 +1,12 @@
#!/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

View File

@@ -0,0 +1,3 @@
# EXT-TYPE=replace
replace youtube.com or youtu.be with piped.mint.lgbt

View File

@@ -0,0 +1,12 @@
#!/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