# terminal-url-handler ## motivation It would be great to put a link in my notes to the directory I working in on a project, and it opens a terminal right to there. Something simple like a [URI](https://en.wikipedia.org/wiki/Uniform_Resource_Identifier) to the directory you had a terminal open. ## install This requires a golang compiler. ```shell git clone https://git.batts.cloud/vbatts/terminal-url-handler cd terminal-url-handler make user-install ``` ## examples Say you keep a notebook/journal/whatever in an app that allows hyperlinks (markdown, html, etc.). Create a link: ```markdown [terminal-url-handler](terminal:///$HOME/src/terminal-url-handler) ``` i.e. [terminal-url-handler](terminal:///$HOME/src/terminal-url-handler) ```html terminal-url-handler ``` ## Types of URIs multiple cases of URIs, and we are not dealing with query parameters. No shell execution. - terminal:///home/user - terminal://host:/home/user - terminal://host/home/user - terminal://user@host:/home/user - terminal://user@host:port/home/user ## default terminal? On most Linux desktops, the `x-terminal-emulator` is an [`update-alternatives`](https://www.man7.org/linux/man-pages/man1/update-alternatives.1.html) symlink to a Terminal app like `gnome-terminal` or whatever. To see alternatives for `x-terminal-emulator`, run: ```shell $ update-alternatives --list x-terminal-emulator /usr/bin/gnome-terminal.wrapper /usr/bin/koi8rxterm /usr/bin/lxterm /usr/bin/uxterm /usr/bin/xfce4-terminal.wrapper /usr/bin/xterm ``` To change this, say to `xfce4-terminal`, run: ```shell sudo update-alternatives --set x-terminal-emulator /usr/bin/xfce4-terminal.wrapper ``` ## development happy to take contributions or enhancements. This seems like something that ought to be built-in for most desktops. ### XDG all this business of `x-scheme-handlers` and desktop files, I am surprised there isn't a simple GUI that can help creating and indexing them. Discovering `x-scheme-handlers` is a programatic enough, but is currently primarily from shell? Whatever. https://portland.freedesktop.org/doc/xdg-settings.html ### Future improvements? - [x] if a `user@host` is included, then ssh to the host - [ ] YOUR CHOICE ## LICENSE See [LICENSE](./LICENSE)