A tool to help my sanity when opening http/s links.
Go to file
2022-11-08 01:38:07 -05:00
example-extensions rewrite all in one commit lol 2022-11-08 01:05:10 -05:00
LICENSE initial commit 2022-09-01 22:17:23 -04:00
README.md more README 2022-11-08 01:38:07 -05:00
xdg-sanity more README 2022-11-08 01:38:07 -05:00
xdg-sanity.sh added redirect handling 2022-09-05 21:33:31 -04:00

xdg-sanity

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.

Installation

Arch Linux

I maintain a package on the AUR.

From Source

Dependencies:

  • curl(1)
  • xdg-utils(1) or handlr(1)
  • tomcat(1)

You can get tomcat here

Instructions: Clone this repository and move the xdg-sanity binary wherever your operating system stores locally-installed binaries. This is usually /usr/local/bin or $HOME/.local/bin for your user. Make sure the installation location is in your $PATH.

Create an xdg-sanity.desktop file either manually or with gendesk(1), placing it where your OS stores locally-installed .desktop files, which is usually /usr/local/share/applications or $XDG_DATA_HOME/applications for your user. Set your default web browser to that .desktop file with xdg-settings(1) or an equivalent.

Configuration

This program uses TOML for its configuration. The configuration file is set up like this:

$ cat $XDG_CONFIG_HOME/xdg-sanity.toml
[tools]
browser = "firefox"
xdg = "handlr launch"

The options available for xdg are handlr launch if you use handlr(1) and xdg-open if you use xdg-utils(1).

Usage

xdg-sanity [RESOURCE]

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.

Extensions

Extensions are written using TOML and are stored in either /usr/share/xdg-sanity when installed from a package manager, /usr/local/share/xdg-sanity when installed locally, or $XDG_DATA_HOME/xdg-sanity for your user.

There are two types of extensions: MIME and replace. MIME extensions are parsed first and replace the MIME type of the content being fetched. Replace extensions change the URI passed to the command to another.

The type of the extension depends on the file name. MIME extensions should have a name ending in -mime.toml and replace extensions should have -replace.toml.

Here's what a MIME extension looks like:

cat $XDG_DATA_HOME/xdg-sanity/youtube-mime.toml
[replace]
urls = [ "youtube.com", "youtu.be" ]

[with]
mime = "video/vnd.youtube.yt"

and here's what a replace extension looks like:

cat $XDG_DATA_HOME/xdg-sanity/youtube-replace.toml
[replace]
urls = [ "youtube.com", "youtu.be" ]

[with] 
url = "https://piped.mint.lgbt/"