terminal-url-handler/README.md

90 lines
2.2 KiB
Markdown
Raw Normal View History

# 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://github.com/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://~/src/terminal-url-handler)
```
i.e. [terminal-url-handler](terminal://~/src/terminal-url-handler)
```html
<a href="terminal://~/src/terminal-url-handler">terminal-url-handler</a>
```
## 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?
- [ ] if a `user@host` is included, then ssh to the host
## LICENSE
See [LICENSE](./LICENSE)