aboutsummaryrefslogtreecommitdiffstats
path: root/hosts/README.md
blob: 1be1dd752673be2ffa0d9db848c001871cea9a67 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# hosts

The LAN map from the Obsidian vault as a searchable list, over a dimmed
screen. ALT+SHIFT+Return opens it, Escape or a click outside closes it. It
replaces the rofi SSH menu, `blackpearl-sshmenu.sh`.

Each card shows a host's `ip:port`, its hostname, the Proxmox node and CT id
it runs on, and the actions its data allows:

- `ssh <alias>`, one per `~/.ssh/config` alias pointing at it, in a kitty tab
  (`ssh-tab`, lifted from the rofi script);
- `open`, when the note has a `url`;
- `copy <ip:port>`, through `wl-copy`.

Type to filter (every word must match name, ip, port, hostname, node, CT id
or alias), Up/Down to move, Enter runs the first action, chips run their own.

`hosts.py` builds the list on every opening, so there is no cache. It reads
the frontmatter of each note in the vault's `Local Network/services/`
(`HOSTS_DIR` overrides the path) and the ssh config. An alias joins the note
whose `ip` or `hostname` is its `HostName`, or whose short hostname is the
alias; an alias that matches no note gets a card of its own, so everything
the rofi menu listed is still here. Aliases with the same `HostName` share a
card. Like the rofi script, it reads plain `Keyword value` lines only:
`Include` and `Match` are not followed, wildcard `Host` patterns are skipped.

## Running

    qs -p ./hosts
    qs -p ./hosts ipc call hosts toggle

## Blur

Optional, in the Hyprland config:

    hl.layer_rule({
        name         = "blur-hosts",
        match        = { namespace = "^(keystone-hosts)$" },
        blur         = true,
        xray         = false,
        ignore_alpha = 0.1,
    })

## Check

    /usr/bin/python3 hosts/hosts.py --check