90 lines
2.3 KiB
Markdown
90 lines
2.3 KiB
Markdown
# 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
|
|
<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?
|
|
|
|
- [x] if a `user@host` is included, then ssh to the host
|
|
- [ ] YOUR CHOICE
|
|
|
|
## LICENSE
|
|
|
|
See [LICENSE](./LICENSE)
|
|
|