vikix.GuideInstallSource

13 Plugins, one by one

Plugins are small additions you choose: a few words in the bar, a key, a Super+m entry, sometimes a program that runs in the background. They come from their own repository, vikix-plugins, at a version Vikix has checked, and nothing is added until you ask for it. This page is a guide to each one: what it does, how to add it, how to use it, where it keeps things, and what to do when it doesn’t work.


13.1 Adding, removing, switching off

vikix plugin list                 # every plugin, yours marked
vikix plugin add NAME             # says what it runs, needs and changes, asks, then adds it
vikix plugin remove NAME          # runs its remove; your settings for it stay
vikix plugin off NAME             # stop loading it (vikix plugin on NAME brings it back)
vikix plugin safe                 # the next login loads none

A plugin’s keys and bar take effect at once. If a plugin’s key is one Vikix or a web app of yours already has, the plugin’s wins, a message names both, and vikix doctor lists it until one moves; removing the plugin gives the key back. Vikix’s tests check the plugins at its pinned version for such clashes before a release. Each one’s settings are yours, in ~/.config/vikix/plugins/NAME/, copied once and never overwritten. A plugin that keeps a record of what it found (a flight search, a meeting joined) puts it in the record store, vikix records (README), where you can search it.

A plugin’s commands (inbox, repos, flights ...) are on your PATH while it’s added, each with a man page made from what its -h prints: man inbox. man vikix lists them after Vikix’s own, and removing the plugin takes its pages away.

A plugin’s code runs inside the desktop with all its power, like your user.lisp: add the ones you trust. If one ever stops the desktop from starting, log in on a text console (Ctrl+Alt+F2), run vikix plugin safe, log in again, and switch the culprit off.


13.1.1 A plugin from another repository

A plugin needn’t come from the plugins repository: a project of your own (or someone’s you trust) that keeps a plugin folder in the plugins’ shape can be added from its repository, at a commit you choose.

vikix plugin add budanth --from https://github.com/you/budanth          # at its newest commit
vikix plugin add budanth --from ~/src/budanth --at v0.3                 # a folder on this machine, at a tag
vikix plugin pin budanth                                                # move it to the newest commit
vikix plugin pin budanth 7903146abc...                                  # or to one you name
vikix plugin status                                                     # each one's repository and commit

The plugin is the folder named after it in that repository (budanth/ in the budanth repository), or the repository itself when its manifest is at the top. Vikix fetches the repository at that commit into ~/.local/share/vikix/plugins-from/NAME and writes a line budanth from REPO at COMMIT in your plugins.list; vikix update keeps the checkout at that commit, and nothing moves it but vikix plugin pin. Everything else is as for any plugin: add shows what it runs and changes and asks, its programs get man pages, its settings are yours, off, on and remove work the same (remove takes the checkout away; your settings stay). The difference is trust: Vikix has checked the plugins at its own pin, not these, and add says so. A name the plugins repository has can’t be taken from elsewhere.

The keys at a glance. A plugin’s keys are all on Super+Alt, with Shift for a second one on the same letter: that is where everything beyond the six main apps opens (the rule for keys).

Super+Alt+w

Plugin: agent-waiting
What it does: Go to the agent waiting for you, or pick among several

Super+Alt+u

Plugin: ai-usage
What it does: How much of your Claude plan is used

Super+Alt+j

Plugin: next-meeting
What it does: Join the meeting on now, or the next

Super+Alt+c

Plugin: next-meeting
What it does: The coming week’s meetings

Super+Alt+f

Plugin: flights
What it does: Search flights

Super+Alt+g

Plugin: repos
What it does: Which projects need pushing, pulling or committing

Super+Alt+i

Plugin: inbox
What it does: A note into your inbox

Super+Alt+Shift+i

Plugin: inbox
What it does: A note quoting what you selected

Super+Alt+Shift+s

Plugin: inbox
What it does: Sort the inbox


13.2 agent-waiting: an agent waiting for you

You start Claude Code, or Codex, on a task in one window and get on with something else in another. When it needs you, or has finished, the bar says which session, where it is and whether it asks something of you; a notification says what; and one key takes you there.

Add it: vikix plugin add agent-waiting. It adds five hooks to Claude Code’s settings, ~/.claude/settings.json (a copy of the file is kept first). A Claude Code session already running takes them once you type /hooks in it (it asks you to look them over), or when it starts again. After an update that brings new hooks, add it again: it shows what it changes, asks, and adds only what isn’t there. Where Codex is set up (~/.codex), it also puts Codex’s notify setting in ~/.codex/config.toml (a copy kept first), which runs the plugin when a turn ends; a notify of your own is left as it is, and said.

Use it:

Where things are: a small file per terminal window in ~/.local/state/vikix/agents/: the state and the time, the folder, and the line of what was said.

When it doesn’t work:

Remove it: vikix plugin remove agent-waiting takes the hooks out of ~/.claude/settings.json and the notify setting out of ~/.codex/config.toml again, and leaves your other settings as they were.


13.3 ai-usage: how much of your Claude plan is left

With a Claude Pro or Max plan, Claude Code knows how much of the plan you’ve used: the 5-hour window and the week. This puts it in the bar, so you see a limit coming.

Add it: vikix plugin add ai-usage. Claude Code hands those numbers only to its status line (the line under its prompt), so the plugin becomes the status line. If you already had a status line of your own, it keeps running, through the plugin, and comes back as it was when you remove it.

Use it:

Where things are: the numbers in ~/.local/state/vikix/ai-usage. Every 15 minutes at most, a record in the record store: vikix records list ai-usage is your use over days and weeks.

When it doesn’t work:

Remove it: vikix plugin remove ai-usage puts back the status line you had before (or none).


13.4 next-meeting: your next meeting, and joining it

Your next meeting in the bar, with how long until it starts; a notification five minutes before; and one key to join it, a Teams meeting in the Teams web app.

Add it: vikix plugin add next-meeting. It installs two small Python libraries for reading calendars (it asks first). Then give it your calendars: each one’s private link, an address that lets the plugin read that calendar.

next-meeting add work      # asks for the link; what you paste isn't shown
next-meeting add home
next-meeting calendars     # your calendars, by label (never the secret part)
next-meeting forget home

Where each calendar’s private link is:

A private link is a key to that calendar: anyone who has it can read it. The plugin keeps them in a file only you can read and never prints them. If one ever gets out, reset it where you got it.

Use it:

Where things are: the links in ~/.config/vikix/plugins/next-meeting/calendars (600); the calendars as last read in ~/.cache/vikix/next-meeting/; what the bar shows in ~/.local/state/vikix/next-meeting. Each meeting you join is a record: vikix records list next-meeting.

When it doesn’t work:

Remove it: vikix plugin remove next-meeting. Your calendar links stay in the settings folder until you delete it.


13.5 flights: searching flights from a line

Type a line like DXB LHR 12 Nov, back 20th and see the flights, cheapest first, with the quickest marked. Enter opens that search on Google Flights, where you book (there or on the airline’s site): the plugin itself never books anything. It can also watch a route and tell you when it gets cheaper.

Add it: vikix plugin add flights. It makes a Python of its own with fast-flights, the library that reads Google Flights (a minute, once). Then set your currency and home airport in ~/.config/vikix/plugins/flights/settings:

currency = AED
home = DXB

With a home airport, LHR 12 Nov is enough.

Use it:

flights "LHR JFK 3 Dec business"    # the list, in the terminal
flights watch "DXB LHR 12 Nov"      # watch a route
flights watching                    # what's watched, and the cheapest seen
flights unwatch 2                   # stop watching the second

Where things are: the watched routes in ~/.config/vikix/plugins/flights/watched; the prices seen in ~/.local/state/vikix/flights/. Every search with its results, and each watched route’s price at each check, are records: vikix records search singapore, vikix records list flights --kind price.

When it doesn’t work:

Remove it: vikix plugin remove flights removes its Python too. Your watched routes stay in the settings folder.


13.6 repos: what your projects need

Which of your git projects have changes not committed, commits not pushed, commits on GitHub not pulled, tags not pushed, or stashes left behind. The bar keeps count; one key opens a terminal with the details and the commands to run.

Add it: vikix plugin add repos. It looks at every project in ~/src, and at ~/.emacs.d and ~/.dotfiles. To change which, see the settings below.

Use it:

It never pushes, pulls or merges unless you ask, and asking GitHub never needs your SSH key’s passphrase: it goes over HTTPS, through gh’s login when you have one.

Settings (~/.config/vikix/plugins/repos/settings):

roots = ~/src                       # folders whose projects it looks at
extra = ~/.emacs.d ~/.dotfiles      # single projects elsewhere
skip =                              # projects to leave out, by folder name
push = gpush {path}                 # the commands it suggests, if not git's own
pins = esploro:~/src/vikix/bin/vikix-esploro vikix-plugins:~/src/vikix/bin/vikix-plugin
                                    # PROJECT:FILE, the file holding NAME_COMMIT=<sha>

When it doesn’t work:

Remove it: vikix plugin remove repos.


13.7 inbox: notes from anywhere

A key over whatever you’re doing opens a small box; what you write, or say, lands in your Org inbox in Dropbox, which your phones see too. Later, one key sorts the inbox into your notes files. This has a guide of its own: Your notes.

Add it: vikix plugin add inbox. It needs Emacs (vikix add emacs) for the box; without Emacs, the box is a one-line rofi prompt.

Use it:

Where things are: the notes in ~/Dropbox/notes/; the inbox is inbox.org (another file: file = ~/notes/inbox.org in ~/.config/vikix/plugins/inbox/settings); the copies each sort keeps in ~/.local/state/vikix/inbox/sorts/.

When it doesn’t work:

Remove it: vikix plugin remove inbox. Your notes stay where they are.