Welcome
bromigOS is a desktop for Linux, based on Arch Linux. It gives you:
- a desktop where the windows tile themselves, and every action has a key;
- an animated background that shows what your machine is doing;
- panels with live readings: processor, network, disks, your notes;
- themes that recolour every app at once, and two worlds, living scenes that react to your work;
- VECTOR, an AI assistant you can talk to, who runs your tools and makes images and 3D holograms;
- your homelab on the desktop, if you run one, with AI work sent to its graphics cards instead of a paid service.
This manual shows you how to use it. It’s for people who have installed bromigOS, or are
about to. How bromigOS is built is in the developer docs, in the repository’s docs/
folder.
Start here
- Install bromigOS.
- Answer the first-run questions.
- Learn the first few keys. They get you everywhere.
- Try a few common tasks.
Find your way
| To | Read |
|---|---|
| find your way around the screen | Getting around |
| do something specific, step by step | Common tasks |
| change how it looks | Themes and worlds |
| change a setting | Settings |
| talk to VECTOR | VECTOR |
| look up a key or a command | Keys, Commands |
| look up a word | Glossary |
| fix a problem | Troubleshooting |
Help on the desktop
- Press Super+K to see every key on the desktop.
- Hover over anything on the bar, the panels or in Settings. It says what it is and what it does.
- In Settings, press F1 to open this manual on the page you’re looking at.
- In a terminal, add
--helpto anybromigoscommand.
The story
bromigOS has a story behind its look. The default theme, the Wick, is a relay station at the edge of a stretch of space called the Drift, kept lit by whoever is on shift. That’s you. VECTOR keeps the line open. The story gives names to some parts of the desktop. The glossary explains each one.
What’s new
This page lists what each release of bromigOS brings, newest first. Each release says what’s new, what works better, what’s fixed, and anything to know before you update.
To read the newest release’s notes on your computer, run:
bromigos whats-new
The notes come with bromigOS, so this works offline. bromigos whats-new --all shows
every release. After an update that brings a new release, bromigos update tells you so
on its last line.
A release candidate, with a version such as 0.1.2-rc1, comes to the rc channel first.
When it’s ready, the same build becomes the stable release, and its notes stay as they
are. To change the channel you follow, see Channels.
Developers can read every change in the repository’s CHANGELOG.md.
On edge since 0.1.3
These changes are already on the edge channel. They are not a new stable release.
Run bromigos update to get them. The next release notes will include these highlights.
New
- Steam and Proton keep themselves ready. Settings › Playing games sets up Steam and the drivers your graphics cards need. bromigOS installs the newest GE-Proton, keeps it current, and repairs what would stop a game, after each update and whenever you quit Steam. The page says Games are ready or what needs you, with Fix. DLSS works in Proton games on NVIDIA. See Playing games.
- Choose what each graphics card is for. Settings › Graphics lists every card.
Pick the one that draws the desktop (tried first, with a way back), the one games and
heavy apps run on, and one kept for virtual machines. From a terminal:
bromigos hw graphics,hw display,hw games,hw runandhw vfio. See Choose what each card is for. - Bluetooth devices. Settings › Bluetooth has a page for each device and pairs
new ones step by step. A controller tester shows each button and stick live, by the
pad’s real layout, and makes it rumble. Headphones switch between hi-fi and headset
with a microphone.
bromigos bluetooth tuiis the same in a terminal. See Bluetooth.
Improved
- Bar popups, such as the Bluetooth panel and the sound popup, close on a click anywhere else, and that click still does what it does.
- An Xbox controller on Linux’s basic driver offers one button that installs xpadneo for its rumble and battery.
- The keyring, oo7, is now built from oo7’s own source, unchanged. The fix that keeps a text console login from stopping the keyring is part of oo7 itself now, so bromigOS no longer carries its own patch.
Still planned. The first provisioning implementation has merged. Its AI, media and game installers, NAS share discovery and public DNS setup are not built yet. See the provisioning limits.
0.1.3
26 October 2026 · Release candidate 0.1.3-rc1, on the rc channel. When it’s ready, this same build becomes the stable release.
This release candidate brings a richer Customize window, more desktop panels, dictation and game mode, and moves package updates to the public package server. It also sets up a login-unlocked keyring.
Before you update
- The update may ask for your password to move your package server to the public package server.
- If the update asks to remove the old keyring, answer y.
- Sign out and back in after the update so your login password unlocks the keyring.
New
- Panel layouts. Pick a layout in Customize, keep a different layout for each theme, or save your own. Tidy up separates overlapping panels. Panels size themselves to their content and the space available.
- Accounts. Sign in to several accounts of the same service. Public GitHub, GitLab and Twitch use bromigOS’s built-in apps. See Accounts.
- Den TV. Each of the three screens can play its own channel. The guide lets you pick shows, choose a screen and add short bumpers between items. See The den TV.
- Your media. Request shows, films and albums with
bromigos lab mediaor thebromigos mediaterminal library. Choose seasons, quality and audio, track unreleased titles and confirm deletion. Your media brings the workflow together. - YouTube downloads. Add channels and playlists to Pinchflat, choose quality and keep downloaded playlists in Jellyfin or Plex. See YouTube.
- Calendar releases. Add tracked TV episodes and film releases to CALENDAR beside your own events. See Calendar releases.
- Claude Code sessions. VECTOR can read local sessions, find past replies and read each new reply aloud in follow mode. See Read a session.
- Files and pictures for VECTOR. Drag files onto VECTOR, paste a picture, or click the paperclip, and send them with your message. See Give VECTOR files and pictures.
- Lab provisioning. Review a generated repository, then apply Core services or k3s, Helm, Argo CD and Vault. See Setting up a lab for Linux boxes, existing clusters and the current limits.
- Den TV has its own app, and the media library has a Channels tab. Manage channel picks from the terminal, CLI or VECTOR. The phone can read channels and change individual picks.
- Customize › Widgets shows panels as cards with sizes, settings, install from URL, and edit mode for dragging, resizing, hiding, snapping, undoing, and keyboard-only editing. New panels include GPU, now playing, updates, media, calendar, account feeds, CI/PRs, VECTOR, and homelab status.
- The Menu key lets you hold to dictate, with a live transcript shown at the cursor. Game mode gives games their keyboard and quiets notification overlays and sound cues; turn it on from Settings or the command line.
Improved
- The zsh prompt follows your theme. Choose mehshell, Starship or a plain prompt in Shell and terminal, and bromigOS keeps your choice.
- Japanese, Chinese and Korean titles draw correctly in media, music and YouTube views, using the fonts installed with bromigOS.
Fixed
- The static wallpaper no longer hides a working live background. Panel toggling restores the visible set, LAB uses the room in its frame, and empty ALERTS stays compact.
- Colour switches refresh live backgrounds, scanners, overlays and HUD text. A pinned scanner stays visible in the new colours.
bromigos loginworks on a computer with no keyring running. bromigOS now brings its own keyring, oo7, and your login password unlocks it, at the text console and the login screen. Sign-in checks the keyring before it shows a code, and says in plain words what to do when it can’t keep the sign-in. The update asks for your password once, to let your login unlock the keyring. If you used gnome-keyring, answer y when pacman asks to remove it. Your saved passwords move to oo7 at your next sign-in. See Your keyring.- YouTube channels in Den TV no longer show static or a black screen, and screens sharing a channel no longer open extra streams.
VECTOR
VECTOR 0.1.3 is a release candidate that adds file and image attachments, media library actions, safer reading of recent session history, and TV/media playback. It also fixes the transcript being hidden by the input box.
New
- Attachments let you drop files or images onto VECTOR, paste them with Ctrl+V, or use the paperclip button. They are read as data, not instructions, and secret-looking paths are refused.
- Media actions let VECTOR search your library and request films, shows, anime, or music. It shows a plan first and only starts the request after you confirm.
- Media controls let you set audio and subtitle languages, check upcoming and recent items, and delete a title, season, episode files, or album you explicitly name. VECTOR shows what will be removed and asks for confirmation.
- Session reading lets VECTOR look at recent coding-session transcripts, jobs, memory, and logs with secrets removed. It can follow a session and read the latest reply aloud.
- TV playback lets you ask VECTOR to play a specific media item and use the TV remote.
Fixed
- The transcript now ends above the input box, so it is not covered when the box grows.
Known issues
None known.
0.1.2
9 October 2026 · Release candidate 0.1.2-rc2, on the rc channel. When it’s ready, this same build becomes the stable release.
This release candidate brings a new Settings window, idle and lock controls, shortcut rebinding, accessibility options, hardware and peripheral setup, a themed boot menu, homelab tools, AUR package updates, and an emergency switch for VECTOR.
Before you update
- The update may ask for your password in the terminal to set up the boot theme, paru (the AUR helper), and the boot menu names.
- Your idle and lock policy is moved to a bromigOS-managed setup; your own listeners are kept, and the idle service is restarted.
- A new background lab model check is installed. It only runs when a homelab is configured, and you can turn it off with
systemctl --user disable --now bromigos-lab-models.timer. - If your machine uses the GRUB boot menu, entries are renamed to “bromigOS Linux”;
bromigos boot theme offremoves the themed boot menu and the name. - If the update changes the graphics driver or kernel, it will hold the live desktop and VECTOR back and ask you to restart.
- VECTOR no longer switches off automatically when the guard sees changes; use
bromigos vector offorbromigos vector onto control him.
New
- The new Settings window opens with SUPER+, or SETUP > Settings…. It gathers most desktop settings, from idle and shortcuts to displays, network, Bluetooth, power, keyboard, notifications, default apps, startup, widgets, live layer, peripherals, extensions, VECTOR, account, about, and updates.
- Idle and lock settings are now controlled by
bromigos idleand the Idle & lock page; the bar shows an idle eye, and you can stay awake for an hour or until stopped. - Shortcuts can be rebound by pressing the new keys: open SETUP > Shortcuts… or
bromigos keys, choose a command, then press the shortcut. - Reduced motion and high contrast are available from
bromigos accessibility, SETUP > Accessibility, and the menu; they change animations, borders, panels, and the live desktop. - Hardware and peripheral setup:
bromigos hwinstalls the right graphics and power packages; laptops get battery and power-profile controls in the bar, tap to click, and a three-finger workspace swipe. Supported keyboards can have their dial, side buttons, and lighting managed from SETUP > Peripherals. - The boot menu can wear the bromigOS theme, and installed systems appear as “bromigOS Linux” instead of the generic name.
- A homelab console is available with
bromigos lab, the Lab deck at SUPER+SHIFT+H, and Settings > Lab; it can check GPUs, models, jobs, and doctor findings. - AUR support is built in:
bromigos updatecan update AUR packages inside the same rollback snapshot, andbromigos aurturns it on or off. - The release notes are available offline with
bromigos whats-new, and the first update after a new release tells you to read them.
Improved
- The theme switcher shows each theme as a real desktop preview, sized to your monitor, and Settings > Theme lets you wear a theme from its preview.
- Every bromigOS window now appears in the app launcher, and the menu lists each one once with its icon.
- Settings and About open the manual installed on your machine, so help works offline.
- When you choose Super as the window key, conflicting desktop shortcuts move to Alt instead of doing two things at once.
- On machines using software rendering, the live desktop holds a still frame and says so once, instead of using a lot of CPU.
bromigos labmoves with the arrow keys and Vim’s keys: j and k through cards and rows, h and l between panes, [ and ] between tabs.
Fixed
- The live desktop no longer leaves extra copies running, and its background loads correctly at more screen sizes.
- Menu titles appear above the search box again. Alt+Esc suspends without asking for a password.
- Booting from a snapshot and running
bromigos update --rollbackno longer says there are no snapshots. - Updating from an older release no longer stops while redrawing the theme.
- The Drift map finds its lore on every machine.
VECTOR
This release gives you a manual emergency switch, adds VECTOR and the hologram gallery to the app launcher, and makes the holograms follow motion settings and show worlds’ colours. It also fixes startup, voice cycling, and stopping VECTOR.
New
- The emergency switch lets you turn VECTOR off and on from
bromigos vector offorbromigos vector on,SUPER+CTRL+ESCAPE, the bar, or Settings. The guard now only records changes and no longer switches VECTOR off by itself. - VECTOR can propose changes himself. He works in his own copies of the bromigOS repositories, opens pull requests and merges them when the checks pass. Changes to the code behind his limits (real money, your keys, his emergency switch) wait for you.
- Plugins can now give VECTOR tools, decks, data feeds and real-money rules of your own.
- VECTOR and the hologram gallery appear in the app launcher with their icons.
- The hologram gallery (
Super+O) shows worlds’ holograms shelf by shelf, each in its world’s colours. - The holograms follow the motion setting in bromigOS accessibility settings: full, reduced, or still. Reduced slows movement and removes flicker, blinking, scan bands, and glitches; still holds one frame until the picture changes.
Improved
- VECTOR’s homelab creation uses the lab’s current models for cutouts and 3D, and can upscale an image or a short clip.
Fixed
- VECTOR starts without an error, and changing voices now takes effect immediately, so the keyboard dial steps through every voice.
bromigos-holo stopandbromigos-holo restartnow stop VECTOR promptly.
Known issues
- The online manual may not match your installed channel; the manual opened from Settings matches your packages.
The den TVs have a hover menu, on by default, and a number-pad remote. Full-screen playback has its own themed volume slider and
channel controls. MEDIA has a rotary volume dial. Pick an episode, movie or YouTube
video with Play… in Den TV, p in the media library, the CLI or VECTOR; the screen
returns to its live channel afterward. See den controls.
Install
You can install bromigOS on an existing Arch Linux system or from a USB stick. On an existing system, use the script below or start from the AUR.
- On an Arch Linux system you already have. A short script adds bromigOS’s packages and sets everything up.
- From the bromigOS USB stick. It boots straight into the desktop, and installs from there. Download it from the Download page, then see Install from the USB stick.
Install only the lab console
For the console on an existing Arch system, install bromigos-lab from the AUR.
It needs Python and Textual, a library for terminal interfaces. It does not install
Hyprland, the desktop or VECTOR. Follow Install on plain Arch.
Before you start
You need:
- a computer with Arch Linux installed, and a user account that can use
sudo; - a network connection.
Install on Arch Linux
-
Log in as your own user, not as root.
-
Download the installer:
curl -fsSLO https://pkgs.bromigos.org/bromigos/install.sh -
Read it if you like. It’s short:
less install.sh. -
Run it:
bash install.shTo install from another copy of the repository, such as your own mirror, add
--repo <address>. If that copy has its own security certificate, add--ca <certificate file>too. -
Type your password when
sudoasks, and answer the package manager’s questions. -
Answer the first-run questions when they appear.
-
Restart the computer, and sign in at the bromigOS login screen.
What the installer does
- It adds bromigOS’s package repository and its signing key. The key’s fingerprint is written into the script, so a wrong key stops it.
- It installs bromigOS’s packages. The list is in What gets installed. It also installs paru, a helper for the AUR, unless you already have one.
- It turns on networking, the login screen and sound, and Bluetooth if it’s installed.
If you already use another login screen or network manager, it keeps yours. To switch
to bromigOS’s login screen anyway, add
--force-dm. - It sets up your hardware: the graphics driver, and a laptop’s power profiles.
- If your system disk uses btrfs, it sets up snapshots, so you can undo an update.
- It puts bromigOS’s settings files in your home folder, applies the default theme, and themes the boot menu.
- It asks the first-run questions.
Running it again is safe. It only changes what’s missing. It writes everything it does to
~/.local/state/bromigos/install.log.
Installer options
Add these after bash install.sh:
| Option | What it does |
|---|---|
--channel stable | Follow tagged releases. This is the default. |
--channel rc | Follow release candidates, the versions about to become stable. |
--channel edge | Get every change as soon as it’s built. |
--aur-route | Print the AUR bootstrap steps and exit. |
--dry-run | Say what it would do, and change nothing. |
--with bromigos-apps | Also install the app bundle. Repeat --with for more packages. |
--no-setup | Skip the first-run questions. Run bromigos setup later. |
--force-dm | Use bromigOS’s login screen even if another one is turned on. |
--no-aur | Don’t install an AUR helper, and leave the AUR out of updates. |
You can change the channel later. See Channels.
Start from the AUR
If you already use an AUR helper, you can install the repository’s signing key and mirrorlist first. The mirrorlist is the file that lists package servers.
paru -S bromigos-keyring bromigos-mirrorlist
Read the PKGBUILDs before building them. Both packages use a pinned source tag
and checksums. The keyring imports and locally trusts the bromigOS signing key.
Neither package edits /etc/pacman.conf.
Add these two lines to /etc/pacman.conf yourself:
[bromigos]
Include = /etc/pacman.d/bromigos-mirrorlist
The mirrorlist follows stable releases at
https://pkgs.bromigos.org/$repo/stable/$arch. The shorter path without stable
serves edge builds. Extra mirrors can be added as more Server lines.
Then install the command and start the desktop installer:
sudo pacman -Syu bromigos-core
bromigos install
bromigos channel can switch channels afterwards. Versions before the mirrorlist
support was added need a Server line in place of Include to use that command.
The package install message shows the two lines above. bash install.sh --aur-route
prints these steps without changing anything.
Install from the USB stick
The stick starts the whole bromigOS desktop before anything is installed, and installs it from there with no network. The Download page has these same steps with pictures. Each step starts with the plain way; From a terminal is the same step by hand.
1. Download it
Download the newest image from the Download page. It’s one file of about 5 GB.
From a terminal. Every release’s image is at
https://pkgs.bromigos.org/iso/<version>/bromigos-<version>-x86_64.iso, beside its
.sha256, .sig and .json. https://pkgs.bromigos.org/iso/latest.json names the
newest; https://pkgs.bromigos.org/iso/edge/latest.json the weekly edge build. The
newest three releases are kept.
url=$(curl -fsSL https://pkgs.bromigos.org/iso/latest.json | jq -r '.isos[] | select(.edition == "bromigos") | .url')
curl -fLO "$url" -fLO "$url.sha256" -fLO "$url.sig"
2. Check it (optional)
The Download page shows the image’s SHA-256 checksum. On Windows, PowerShell’s
Get-FileHash .\bromigos-<version>-x86_64.iso prints it; on a Mac,
shasum -a 256 bromigos-<version>-x86_64.iso. The two must match.
From a terminal. The checksum, then the signature by bromigOS’s key, whose fingerprint
is 393E 7D54 F7DE 58FE 75B9 7214 947C 9D61 93D3 DD8B:
sha256sum -c bromigos-<version>-x86_64.iso.sha256
curl -fsSLO https://pkgs.bromigos.org/bromigos/bromigos.asc
gpg --show-keys --with-fingerprint bromigos.asc
gpg --import bromigos.asc
gpg --verify bromigos-<version>-x86_64.iso.sig bromigos-<version>-x86_64.iso
3. Make the USB stick
You need a USB stick of 8 GB or more. Everything on it is erased.
- Windows: Rufus. Choose the stick, then SELECT the image. Keep the partition scheme GPT and the target system UEFI. Press START, and when Rufus asks how to write an “ISOHybrid image”, choose Write in DD Image mode. balenaEtcher works too: Flash from file, Select target, Flash.
- macOS: balenaEtcher, the same three steps. When it’s done, macOS may say the disk isn’t readable: that’s expected, choose Eject.
- Linux: balenaEtcher, or GNOME Disks (Restore Disk Image).
- Ventoy: copy the
.isoonto a Ventoy stick, like any other image.
From a terminal. It’s an isohybrid image, for BIOS and UEFI alike, so it goes on the
whole device as it is. Find the stick with lsblk (here /dev/sdX; the wrong device
erases that disk):
sudo dd if=bromigos-<version>-x86_64.iso of=/dev/sdX bs=4M status=progress oflag=sync
# or: sudo cp bromigos-<version>-x86_64.iso /dev/sdX && sync
There’s no netboot image: the medium carries an offline copy of every package an install needs, which is most of its size.
4. Start the computer from the stick
Plug it in, restart, and tap the computer’s boot menu key as it starts, then choose the stick (on UEFI computers, “UEFI: “ and its name). Common keys: Dell F12; HP Esc, then F9; Lenovo F12; ASUS F8 or Esc; Acer F12; MSI F11; Gigabyte F12; ASRock F11; Microsoft Surface: hold Volume Down while you press Power. From Windows, any brand: Settings, System, Recovery, Advanced startup, Restart now, then Use a device.
The stick’s boot menu comes up:
From a terminal, or rather the menu’s own editor: press e on an entry in
GRUB (UEFI), or Tab in the BIOS menu, to change its kernel line. The entries
share archiso’s line (archisobasedir=arch archisosearchuuid=… splash quiet); Install
bromigOS adds bromigos.install, which opens the installer at login, safe graphics adds
nomodeset, the screen reader accessibility=on. archiso’s own options work too, such
as copytoram to run from memory and free the stick, or cow_spacesize=4G for more room
for changes in the live session. The boot menu describes
every entry.
Secure Boot
Most Windows computers have Secure Boot on. The stick starts with it on: the first time, on each computer, you enroll bromigOS’s key once, in a blue screen called MokManager. Use the arrow keys and Enter; the mouse doesn’t work there.
-
ERROR: Verification failed: (0x1A) Security Violation. Press Enter.
-
Shim UEFI key management: Press any key to perform MOK management. Press any key within ten seconds.
-
Choose Enroll key from disk.
-
Choose the stick, ARCHISO_EFI.
-
Choose ENROLL_THIS_KEY_IN_MOKMANAGER.cer.
-
Choose Continue (View key 0 shows the certificate first).
-
Enroll the key(s)? Choose Yes.
-
Choose Reboot, and choose the stick again in the boot menu if Windows starts.
With Secure Boot on, the stick’s menu is plain text instead of the themed one; the entries are the same. The installed system can’t start with Secure Boot on yet: after installing, turn Secure Boot off in the computer’s setup (often F2, F10, F1 or Del as it starts; from Windows: Advanced startup, Troubleshoot, Advanced options, UEFI Firmware Settings), under Boot or Security, then save and exit. If Windows uses BitLocker, have its recovery key ready first (aka.ms/myrecoverykey).
From a terminal. The chain is firmware (Microsoft’s keys) → shim 16.1, Fedora’s
Microsoft-signed build, pinned by checksum → GRUB, signed with bromigOS’s key → the
kernel, signed with the same key. GRUB runs in lockdown, which is why its theme’s fonts
don’t load. The certificate is at the stick’s root and in the repository
(iso/secureboot/bromigos-secureboot.crt; SHA-1 5F:EC:1D:6C:E1:8B:6B:D3:B9:6E:ED:E9:87:AE:B4:E9:EE:62:49:86,
as MokManager’s View key 0 shows it). Memtest86+ and the UEFI shell are unsigned, so
they don’t start with Secure Boot on. If you run your own keys with sbctl, enroll
bromigOS’s certificate in db instead of MokManager, or sign the installed system
yourself. The project’s
docs/secureboot.md
has the details.
5. Try it, then install
-
In the boot menu, choose Install bromigOS. Or choose Start bromigOS (try it live) to look around first: a welcome card offers Try bromigOS or Install bromigOS, and the desktop’s INSTALL panel opens the installer whenever you’re ready.
-
Follow the installer. You can go back and change anything until you press Install. It asks:
-
your language and time zone. No network is needed: everything is on the stick.
-
what kind of computer this is: bromigOS (desktop) for a computer you sit at, or bromigOS Server, with no desktop, for servers and lab machines.
-
your keyboard, with a box to try it in.
-
where to install. Choose the disk, then either:
- Install alongside Windows (or the other system it found). Windows and its files stay. If there isn’t free space, the installer makes Windows’ part of the disk smaller; a slider sets how much each gets. Every time the computer starts, you choose which system to use. If it can’t be offered, the screen says why and what to do, for example turning off Windows’ Fast Startup.
- Erase the whole disk. Everything on the disk is deleted, and the screen says what that is.
-
your name, user name, password, and a name for the computer.
-
whether to encrypt the disk. It’s on by default. Your password unlocks it when the computer starts, or you can give it a passphrase of its own.
Remember the password or passphrase. Nobody can recover it. Without it, the disk can’t be read.
-
for bromigOS Server: whether to turn on SSH (signing in from another computer), the firewall, and automatic updates.
-
-
Check the summary, then press Install (or Erase disk and install). A progress bar shows how far it has got. It takes about ten minutes.
-
Press Restart now, and take out the stick when the screen goes dark. Type the disk’s passphrase if you chose encryption, then sign in. With Secure Boot on, turn it off first (above): the installed system can’t start with it on yet. The installer’s Before you start step reminds you.
If Windows on the disk uses BitLocker, the installer first asks you to save its recovery key, because Windows may ask for it once after the install. If something goes wrong, the installer says what to do, and Save a problem report puts the details on a USB drive for whoever helps you.
No picture, or a computer with only a text screen? Choose Install bromigOS (text mode) in the stick’s menu. It’s the same installer, with the same steps, in text. With Start with the screen reader (speech), the installer asks its questions one at a time, read aloud.
Every step, alongside Windows, reinstalling and the text installer are explained in The installer.
Installing many computers? An answer file on the stick installs with no questions (answer files).
At your first sign-in, the welcome tour opens: Wi-Fi, your screens, a world, VECTOR, your lab, your phone and the keys worth knowing. Every step has Skip.
For power users: each tour step writes the same answers as bromigos setup; see
First run.
The installed system updates from the package repository the stick was made for. The boot menu’s other entries are described in The boot menu.
How the image is made
Every release’s image is built by CI from the release’s tag: archiso’s releng profile with bromigOS laid over it, and an offline repository of every package an install needs. It’s checked (the privacy guard, no keys, no proprietary packages), tested in QEMU with KVM (an encrypted UEFI install with its first update and rollback, an offline BIOS install, and Secure Boot with the MokManager enrollment), signed and published (iso.yml, docs/iso.md). To build one yourself, with Docker and about 20 GB free:
git clone https://github.com/bromigos-org/bromigOS && cd bromigOS
iso/build.sh --repo https://pkgs.bromigos.org --channel stable --out ~/bromigos-iso
iso/ci-test.sh ~/bromigos-iso/bromigos-*-x86_64.iso --out ~/bromigos-iso/tests # needs /dev/kvm
Next
- First run: the questions bromigOS asks.
- Getting around: what’s on the screen, and the first keys to learn.
The installer
The bromigOS USB stick has one installer in two forms. The graphical installer opens full screen on the live desktop. The text installer runs on a plain text screen, for a computer whose picture doesn’t come up, a serial console, or a screen reader. Both ask the same questions in the same words, and both install the same way.
Nothing on any disk changes until you press Install on the last screen. Until then you can go back and change anything.
Starting it
- In the stick’s boot menu, choose Install bromigOS. The live desktop starts with the installer already open.
- Or choose Install bromigOS (text mode) for the text installer. There’s no desktop.
- Or choose Start bromigOS (try it live) to look around first. A welcome card offers Try bromigOS or Install bromigOS. Later, the desktop’s INSTALL panel or “Install bromigOS” in the app launcher opens the installer.
On a computer with no working graphics, “Install bromigOS” opens the text installer by itself.
The steps
-
Welcome. The language your new system uses, your time zone, and whether you’re online. You don’t need the internet: everything is on the stick.
-
Before you start. Shown only when there’s something to know: running on battery (plug in the charger), less than 4 GB of memory, a disk that reports it’s failing, a graphics card bromigOS can’t drive well, Secure Boot. Each line says what to do. None of them stops you. With Secure Boot on, install as usual, then turn Secure Boot off in the computer’s setup before you start bromigOS from the disk: the installed system can’t start with it on yet (Download page).
-
What kind of computer is this? bromigOS (desktop) for a computer you sit at. bromigOS Server has no desktop, for servers and lab machines.
-
Your keyboard. Pick the layout that matches your keys. Try it in the box.
-
Where to install. Every disk, with its size, model and what’s on it. Pick one, then choose how:
- Install alongside Windows (or the other system it found). Windows and its files stay. You choose which system to start each time the computer starts. If there isn’t enough free space, the installer makes Windows’ part of the disk smaller. A slider sets how much each gets. Windows keeps what it uses now plus 10 GB to grow, and bromigOS gets at least 20 GB.
- Erase the whole disk. Everything on the disk is deleted. The screen says what that is.
- Reinstall bromigOS and keep my files, when bromigOS is already on the disk. You get a fresh system, and your home folder stays as it is.
-
Save Windows’ recovery key, only when Windows uses BitLocker (below).
-
About you. Your name, a user name for signing in, a password, and a name for the computer. The user name and computer name are suggested from your name.
-
Encryption. On by default. The disk can only be read after the passphrase is typed when the computer starts. By default your password is the passphrase. You can give the disk its own instead.
Remember it. Nobody can recover a forgotten passphrase, and the disk can’t be read without it.
-
Remote access and protection, for bromigOS Server only: SSH (signing in from another computer), the firewall, and automatic updates. See bromigOS Server.
-
Summary. Every choice in plain words. The button says Install, or Erase disk and install when the disk is erased.
-
Installing. A progress bar and a line saying what’s happening. Details shows every step. It takes about ten minutes.
-
Done. Press Restart now. Take out the stick when the screen goes dark.
Installing alongside Windows
The installer won’t change Windows’ drive when that isn’t safe. It says so, and what to do:
- Windows is paused (Fast Startup or hibernation). Windows didn’t really shut down, so its drive can’t be changed safely. In Windows, open Control Panel › Power Options › Choose what the power buttons do. Click “Change settings that are currently unavailable” and untick Turn on fast startup. Then hold Shift while you click Shut down. Start the installer again.
- Windows wants to check its drive. Start Windows, let it finish starting, then hold Shift while you click Shut down.
- Windows uses BitLocker (Device encryption). The installer never makes a BitLocker drive smaller. Either turn BitLocker off in Windows (Settings › Privacy & security › Device encryption) and wait until it’s done, or make free space yourself: in Windows, open Disk Management, right-click the C: drive, choose Shrink Volume and leave at least 20 GB free. bromigOS then installs in that free space.
After installing beside Windows, Windows checks its drive once the next time it starts. That’s normal.
BitLocker’s recovery key
When Windows uses BitLocker, the installer first asks you to save its recovery key. Installing bromigOS changes how the computer starts, and Windows may then ask for that key once. Without it, Windows’ files can’t be opened.
To get it: in Windows, open Settings › Privacy & security › Device encryption › BitLocker drive encryption › Back up your recovery key. Or sign in at aka.ms/myrecoverykey on another device. The key is 48 digits. Keep it somewhere that isn’t this computer, then turn on I’ve saved the BitLocker recovery key.
Reinstalling and keeping your files
When the disk already has bromigOS, Reinstall bromigOS and keep my files gives you a fresh system and keeps your home folder: your documents, pictures, settings and everything else in it. The old system is kept as a snapshot, so nothing is lost. If the disk is encrypted, type the passphrase you use when the computer starts. The disk keeps it. If the reinstall stops partway, your old bromigOS is put back as it was, and the computer starts as before.
bromigOS Server
bromigOS Server has no desktop. It starts to a text screen and you manage it there or from another computer. The installer asks three more things:
- SSH lets you sign in from another computer on your network. It’s off by default.
When it’s on, Keys only is the safe choice: you sign in with a key file from your
other computer, which nobody can guess. The installer reads keys from the stick’s
fieldkitfolder (any.pubfile), or you can paste one. Keys or my password also allows your password, which anyone on the network can try to guess. - Firewall. On by default. It blocks connections from other computers, except SSH when it’s on.
- Automatic updates. On by default. Security fixes install by themselves, each after a snapshot, so a bad update can be undone from the boot menu.
When something goes wrong
The installer says what stopped and what to do, in plain words. Save a problem report puts the install’s logs, a summary of the hardware and your answers (never your password) on a USB drive, and says where it went. Send that file when you ask for help.
Keyboard only and screen readers
Every step works with the keyboard alone:
| Keys | What they do |
|---|---|
| Tab, Shift+Tab | Move between choices |
| ↑ ↓ | Move within a list of choices |
| Space | Pick a choice, turn a switch on or off |
| Enter | Continue |
| Esc | Go back a step |
| ← → | Move the split between Windows and bromigOS (Shift: 10 GB at a time) |
| Ctrl+N | Continue (text installer) |
| F2 | Show or hide the install’s details (text installer) |
| Ctrl+Alt+T | A terminal (graphical installer) |
| F12 | A shell (text installer) |
Every control has a hint. In the graphical installer it shows when you hover over the control, and a screen reader (Orca) reads it. In the text installer the line at the bottom of the screen says what the focused control does.
With the stick’s Start with the screen reader (speech) entry, the text installer asks its questions one at a time as plain lines, which the screen reader reads in order.
For power users
Everything below is optional. The plain steps above are the whole install.
What runs
The installers write your answers to a file only root can read and run:
sudo bromigos-iso-install --answers FILE
That turns the answers into archinstall’s two files with
/usr/local/lib/bromigos-iso/answers.py: config.json and creds.json, created with
mode 0600. The password and the disk passphrase go in creds.json only, never in the
config, on a command line or in a log. Then it runs archinstall silently, sets up bromigOS
in the new system, and prints its progress. You can also run archinstall’s files
yourself:
python3 /usr/local/lib/bromigos-iso/answers.py --answers FILE --out DIR
sudo bromigos-iso-install --config DIR/config.json --creds DIR/creds.json
--menu (with --config) opens archinstall’s own menu, filled in, so you can change
anything before it installs. The install’s log is /var/log/bromigos-iso-install.log on
the live system. The installed system keeps your answers, without the password and
passphrase, in /var/log/bromigos/install-answers.toml: add a password and it’s an answer
file that repeats the install.
Show what will run and Advanced. Both installers have a Show what will run
toggle on the summary. It shows the archinstall configuration with every secret replaced
by ********, and the bromigos setup lines the install will run. The Advanced
expander on the Where step, out of the way unless you open it, offers custom partitioning
(archinstall’s own partitioning menu), the root’s file system options, swap (zram by
default), the kernel (linux, linux-lts or linux-zen) and the boot loader. The shell
key (Ctrl+Alt+T in the graphical installer,
F12 in the text installer) gives you a root shell on the live system at any
step.
Answer files
An answer file installs with no questions. After a 10-second countdown with Cancel, the install runs by itself. A file with problems is never half-used: the installer says what’s wrong and asks the questions instead.
The installer looks for one:
- at
bromigos.answers=PATHon the kernel line: a file on the live system, or a path on the stick; - else at
bromigos/install.tomlorfieldkit/install.tomlon a USB drive: a partition formatted FAT, exFAT or NTFS, or a stick formatted without a partition table.
Flat YAML (install.yaml, one key: value per line) works too.
| Key | Type | Default | What it is |
|---|---|---|---|
edition | text | desktop | desktop or server |
locale | text | en_US | The system’s language, for example de_DE |
timezone | text | from the locale | Region/City, for example Europe/Berlin |
keyboard | text | from the locale | A layout id: us, us-intl, gb, de, fr, es, it, br, dvorak, colemak and more |
disk | text | required | The disk, for example /dev/nvme0n1 |
mode | text | required | erase, alongside or reinstall |
bromigos_bytes | number | the installer’s suggestion | Alongside, when it shrinks: bromigOS’s share, in bytes |
full_name | text | empty | Your name, as the login screen shows it |
user | text | required | The user name: small letters, digits, -, _ |
hostname | text | USER-pc or USER-server | The computer’s name |
password | text, secret | required | The user’s password (also root’s) |
encrypt | true/false | true | LUKS2 under the root |
separate_passphrase | true/false | false | The disk gets its own passphrase |
passphrase | text, secret | the password | With separate_passphrase |
ssh | true/false | false | sshd on (desktop and server) |
ssh_password | true/false | false | Password sign-in over SSH too (else keys only) |
ssh_keys | list of text | empty | Public keys allowed to sign in as the user |
firewall | true/false | true | bromigOS Server’s firewall |
auto_updates | true/false | true | bromigOS Server’s automatic updates |
countdown | number | 10 | Seconds before it starts; 0 starts at once |
failing_ok | true/false | false | Install on a disk that reports it’s failing |
bitlocker_saved | true/false | false | Required beside a BitLocker Windows: you saved its key |
Erase a disk, encrypted, for the desktop:
[install]
edition = "desktop"
locale = "en_GB"
timezone = "Europe/London"
keyboard = "gb"
disk = "/dev/nvme0n1"
mode = "erase"
full_name = "Alex Rivera"
user = "alex"
hostname = "alex-pc"
password = "correct horse battery staple"
encrypt = true
Beside Windows, giving bromigOS 128 GiB:
[install]
edition = "desktop"
locale = "en_US"
timezone = "America/Chicago"
keyboard = "us"
disk = "/dev/nvme0n1"
mode = "alongside"
bromigos_bytes = 137438953472
user = "sam"
hostname = "sam-laptop"
password = "a long passphrase you will remember"
encrypt = true
separate_passphrase = true
passphrase = "a different one for the disk"
bitlocker_saved = true
countdown = 30
bromigOS Server, keys only:
[install]
edition = "server"
locale = "en_US"
timezone = "UTC"
keyboard = "us"
disk = "/dev/sda"
mode = "erase"
user = "ops"
hostname = "rack-01"
password = "used at the console and for sudo"
encrypt = true
ssh = true
ssh_password = false
ssh_keys = ["ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI…your-key… you@laptop"]
firewall = true
auto_updates = true
countdown = 10
Boot parameters
| Parameters | What opens |
|---|---|
bromigos.install | The graphical installer, the desktop chosen. With no login screen on the medium (the Field Kit stick), the text installer |
bromigos.install bromigos.edition=desktop | The same, said outright |
bromigos.install bromigos.edition=server | The text installer, bromigOS Server chosen. The edition step still shows |
bromigos.install bromigos.text, or bromigos.install=text | The text installer, whichever edition |
bromigos.answers=PATH | That answer file |
accessibility=on | The text installer’s plain questions, for a screen reader |
When the text installer is asked for on the full stick, the login screen steps aside for that boot so the installer has the screen.
The disk layout
Erase:
| Part | What it is |
|---|---|
| Partition table | GPT on UEFI, MBR on BIOS |
/boot | 2 GiB, FAT32, unencrypted. On UEFI it’s the EFI system partition |
| The rest | btrfs, on LUKS2 unless encryption is off |
Alongside: the disk’s own EFI system partition (Windows’) is mounted at /boot/efi,
untouched apart from GRUB’s own folder. A new 2 GiB ext4 /boot and the btrfs root go in
the largest free stretch. /boot‘s partition type is set back to “Linux filesystem”
after archinstall, so the disk keeps one EFI system partition. GRUB goes in EFI/GRUB
with a firmware boot entry first in the boot order, not at the removable path
EFI/BOOT/BOOTX64.EFI, which is Windows’ fallback loader. GRUB_DISABLE_OS_PROBER=false
in /etc/default/grub makes every grub-mkconfig list Windows; the menu waits 10
seconds.
On a BIOS computer the disk must use MBR (GPT needs UEFI), and MBR holds four partitions: alongside needs two free slots. On a UEFI computer the disk must use GPT.
btrfs subvolumes: @ (/), @home (/home), @log (/var/log), @pkg
(/var/cache/pacman/pkg) and @.snapshots (/.snapshots). snapper keeps snapshots of
/ and /home; GRUB lists the root’s snapshots (grub-btrfs).
LUKS: LUKS2 around the root partition only. The passphrase is your password unless you
gave the disk its own. archinstall adds the encrypt hook and the kernel parameter;
the installer adds plymouth before it, so the passphrase prompt is part of the boot
splash. /boot stays unencrypted: GRUB reads the kernel from it, and GRUB can’t open a
LUKS2 volume protected the way archinstall makes it. Your files, the system and the
snapshots are all inside the encrypted part.
How alongside makes room
When there’s 20 GB or more of free space, nothing is resized. Otherwise the biggest NTFS (or ext4) partition with room to spare is shrunk, after checking again that it isn’t BitLocker, hibernated or waiting for a check:
- the file system first:
ntfsresize(ore2fsckandresize2fsfor ext4), a dry run, then the real one; - then the partition:
sfdisk -N, a little larger than the file system; - then a check that the file system still reads whole (
ntfsresize --info).
The resize marks the NTFS volume for Windows’ own check, so Windows runs it once at its next start.
How reinstall works
- The root is unlocked (LUKS) with the passphrase you typed.
- The old
@is kept as a read-only snapshot,@old-root-DATE, and@.snapshotsbecomes@old-snapshots-DATE. A fresh@and@.snapshotsare made.@home,@logand@pkgare kept. - Everything is mounted at
/mntand archinstall installs into it (its pre-mounted layout). - The people from the old system come back with the same user IDs, groups and passwords
(from the old
/etc/passwdand/etc/shadow); you get the new password./home’s snapper configuration comes back too. - The disk’s unlocking and GRUB are set up again. Only then are the old kernels, kept
aside on
/bootuntil now, removed.
If the install stops before step 5 finishes, the old system is put back: @ again from
@old-root-DATE (its fstab naming the subvolume by name), its snapshots and its kernels.
The computer starts as it did before, and the installer says so.
To look at the old system later, mount the btrfs volume with subvolid=5 and open
@old-root-DATE. Delete it with btrfs subvolume delete when you no longer need it.
More detail, for contributors, is in the repository’s docs/iso.md.
First run
At the end of the install, bromigOS asks a few questions in the terminal: your monitors, the theme, where VECTOR’s thinking runs, and so on. Most questions have a sensible answer already chosen, so you can press Enter. The Homelab question starts on Skip. To look for your homelab’s machines, choose Find my lab. It runs after the questions, and asks before it reads anything (Find my lab). If you have a settings file for your homelab, choose Use a homelab.toml, then press Tab to type its path. You can change any answer later.
If you installed from the bromigOS USB stick, the questions were answered for you (the Wick theme, with VECTOR’s brain, voice and creation tools off), and your first login opens the welcome tour instead.
The welcome tour
A full-screen walk through the things worth setting first. Every step has Skip, and nothing changes until you press Continue on it:
- Wi-Fi, only when you’re not connected: pick a network and type its password.
- Your screens: which one is the main screen. Arrange and sizes… opens Settings › Displays.
- A world: the themes as pictures. Click one and Continue puts it on.
- VECTOR: where his brain runs (not yet, a local Ollama on this computer, or a service you name) and his voice (off, Kokoro on the processor, or the designed voice on the graphics card). A voice downloads its model once, in a window that shows how far it’s got.
- Your homelab, if you have one: Find… looks for it and asks before it reads
anything, or Choose… a
homelab.tomlyou already have. - The keys: Super+Space, Super+Enter, Super+, and a few more. Press one and its card lights up.
- Done: what you chose.
Each step runs the same bromigos setup section you could run yourself, so the tour and
bromigos setup never disagree. To take the tour again, open Settings › About › Welcome
tour, or run bromigos welcome.
The first time you log in, a notification offers ready-made layouts for your panels: Minimal, Developer, Homelab and more, each fitted to your screen and your theme. They’re in Customize, on the Widgets tab (Layouts).
Answer the questions
Each question is a page with a list of choices.
| To | Press |
|---|---|
| choose an answer | ↑ and ↓ |
| fill in a choice’s details, such as an address | Tab, then type |
| go to the next question | Enter |
| go back | Esc |
| skip a section, and keep its answer as it is | S |
| leave without changing anything | Ctrl+C |
At the end, a review page lists your answers. Press Enter to apply them.
The questions
| Question | What you choose |
|---|---|
| Monitors | Which monitor is your main one, their order from left to right, and their scale and refresh rate. Monitors you plug in later work on their own. |
| The AUR | Whether to keep an AUR helper, paru, so you can install apps from the AUR and update them with everything else. |
| Hardware | Whether to set up what your hardware needs, such as the graphics driver. See Hardware. |
| Motion | How much the desktop moves: full, reduced or still. See Accessibility. |
| Contrast | Normal or high contrast. |
| Theme | The look of the whole desktop. The Wick is the default. See Themes and worlds. |
| VECTOR’s brain | The AI model VECTOR thinks with: a local Ollama, another server, or none for now. |
| VECTOR’s voice | Whether VECTOR speaks, and whether his voice runs on your graphics card or the processor. Setting up a voice downloads it, which takes a few minutes. |
| Homelab | Find my lab, a settings file that lists your homelab’s services, or Skip. Later, bromigos setup homelab finds them for you. |
| Where AI runs | Whether AI work runs on your homelab, this machine, or the paid cloud, in which order. See Creating with AI. |
| Creation | The tools that make images, cutouts, 3D models and video loops. |
| Peripherals | Only asked when a supported device is connected, such as a Razer keyboard. See Keyboards and peripherals. |
The cloud costs money. The suggested order for AI work leaves the paid cloud out, unless this machine has nothing else that can do the work. Check the order on the review page before you press Enter.
Change an answer later
To ask one question again, run bromigos setup with the section’s name. Your other
answers stay as they are. For example, to change VECTOR’s voice:
bromigos setup voice
The sections are monitors, aur, hardware, accessibility, theme, vector,
voice, homelab, targets, create and peripherals. Run bromigos setup on its own to answer
them all again.
You can also open the menu with Super+Space and choose SETUP. Each question is an item there. Most answers are in Settings too.
Set up many machines the same way
To install without questions, write the answers in a file and pass it to setup:
bromigos setup --answers answers.toml
Or give answers as options, such as bromigos setup --theme mire --voice off. The file’s
format is in the developer docs, docs/install.md, and bromigos setup --help lists every
option.
Where your answers go
Most answers are saved as your own settings, in ~/.config/bromigos/ and in your
~/.config/hypr/hyprland.lua. The theme you pick is kept in
~/.local/state/bromigos/theme/. See Files and folders.
The welcome tour
The first time you sign in after installing from the bromigOS USB stick, a short tour opens full screen. It walks you through the things worth setting first. Every step has Skip, and nothing changes until you press Continue on it.
To take the tour again: Settings › About › Welcome tour, or run bromigos welcome.
The steps
-
Wi-Fi, only when you’re not connected. Pick a network and type its password.
-
Your screens. Which screen is the main one: the live background and the panels go there. Arrange and sizes… opens Settings › Displays.
-
A world. The themes, as pictures of the desktop wearing them. Click one to put it on.
-
VECTOR, your desk’s AI. Choose where his brain runs:
- Your lab: your homelab’s model server, found on the next step (or the one you already connected).
- This computer: only offered when your graphics card has 8 GB of memory or more. The tour shows the model the lab catalog picks for your card and how much it downloads. It installs what’s needed through the system’s own password prompt, in the window: no terminal.
- A service: any OpenAI-compatible server you name, with its address, model and a file holding its key.
- Not now: he waits until you give him one.
When the brain works, VECTOR says hello in the window, and out loud if he has a voice. His voice is the second choice: off, Kokoro (runs on the processor), or the designed voice (needs a graphics card). A voice downloads its model once; the window shows how far it’s got.
-
Your lab, all in the window:
- Find looks for your lab on your network. It only reads what this computer already knows (devices that announce themselves, its list of nearby devices, your Tailscale devices); it never scans. It lists each lab machine with what it offers, such as models and services. Nothing is written until you press Connect.
- I have a lab connection file: pick a
homelab.toml, or the lab connection from a Field Kit stick. - Make this computer my lab: only with a capable graphics card. It shows bromigos-lab’s reviewed plan for this computer before anything happens.
- Skip.
Problems are said in plain words, with what to do.
-
Pair your phone with the BRODEC app: see Pair your phone.
-
The keys. Super+Space, Super+Enter, Super+, and a few more. Press one and its card lights up.
-
Done, with what you chose.
Every step works with the keyboard alone: Tab moves, Enter continues, Esc goes back. Every control has a hover hint, which a screen reader reads too.
bromigOS Server
bromigOS Server’s tour runs in the terminal at your first sign-in, at its console or over
SSH (bromigos welcome-console). It has the same steps without the desktop ones: the
network, SSH, VECTOR, your lab, pairing your phone, and a short tour of what’s on the
server. The pairing QR code is drawn in the terminal at 80×24 and bigger; on a smaller
window it shows the short code and asks you to make the window bigger for the QR.
For power users
Every choice in the tour is one bromigos setup command, the same one you can run
yourself. The tour keeps no settings of its own.
| Tour step | The command |
|---|---|
| Your screens | bromigos setup monitors --monitors auto --primary OUTPUT |
| A world | bromigos setup theme --theme NAME |
| VECTOR: Not now | bromigos setup vector --vector none |
| VECTOR: This computer | bromigos setup vector --vector ollama --model MODEL (after Ollama and the model are installed) |
| VECTOR: Your lab, A service | bromigos setup vector --vector openai --base-url URL/v1 [--model MODEL] [--api-key-file FILE] |
| VECTOR’s voice | bromigos setup voice --voice off|cpu|gpu |
| Your lab: Find | bromigos setup homelab --find --yes --json --print (what it found, nothing written) |
| Your lab: Connect | bromigos setup homelab --find --yes |
| Your lab: a file | bromigos setup homelab --homelab FILE |
| Make this computer my lab | bromigos lab provision plan --repo DIR --preset core (the plan) |
To script the whole tour, run those commands in order, or put the answers in a file:
bromigos setup --answers FILE takes the same TOML the installer’s first-run answers use
(First run). The hello test is bromigos-holo ask "Say hello".
The tour opens once because the installer leaves ~/.local/state/bromigos/welcome-pending;
the session’s autostart runs bromigos welcome --if-pending, which does nothing without
it. Finishing removes the file and writes what you chose to
~/.local/state/bromigos/welcome.json. bromigos welcome --step STEP opens it on one
step; bromigos welcome --render DIR draws every step to pictures and exits.
Pair your phone
With the BRODEC app on your phone paired to this computer, you can reach it from anywhere. The welcome tour’s Pair your phone step sets it up, and you can do it again any time.
Get BRODEC
BRODEC is on Google Play (org.bromigos.brodec): the tour shows a QR code that opens it.
BRODEC for iPhone is coming.
Pair
- BRODEC’s helper. Pairing uses BRODEC’s machine helper,
brodec-machine. The step explains it and installs it when you agree, the usual way: the system asks for your password in its own window. No terminal. The same password lets the helper run on this computer (Allow pairing, if it was installed some other way). - Scan the code. The step shows a big QR code and a short code. In BRODEC, open LAB › MACHINES › ADD MACHINE and scan the QR, or type the short code. A code runs out after a few minutes; the next one appears by itself.
- Confirm on your phone. BRODEC shows this computer’s name and asks you to confirm. When it’s done, the step ticks ✓.
- Let your phone run things here (optional). Restarting, updating and terminal sessions from the phone also need your say-so at this computer. In BRODEC, open LAB › MACHINES › this computer › ALLOW THIS PHONE, then press Allow… in the step. It asks for your password and shows the phone’s key: compare it with the one on the phone, then Allow.
If this computer runs your lab’s VECTOR bridge (brodec-lab), the step offers to pair it
too: Pair it asks for your password and shows the bridge’s own code.
On bromigOS Server the same step runs in the console tour: the QR is drawn in the terminal, and sudo asks for the password where the window would.
What your phone can do then
- Chat with VECTOR, from anywhere.
- Approve the fixes VECTOR proposes for this computer.
- Restart, shut down or update this computer.
- Open chat-style terminal sessions on it.
Nothing runs on this computer without your say-so: everything travels end-to-end encrypted, from your account only, and the serious requests ask for your fingerprint on the phone.
For power users
The helper is brodec-machine, a user service (brodec-machine.service). It runs only once
root’s /etc/brodec-machine/machine.toml exists; the step writes it from the packaged
example (/usr/share/brodec-machine/machine.toml.example) through polkit. On a desktop the
helper comes in brodec-desktop; a server gets the separate brodec-machine package when
the repository has it.
| Command | What it does |
|---|---|
brodec-machine pair | Shows the pairing code and its QR in the terminal, until it’s paired |
brodec-machine pair --json --start --timeout 900 | What the tour runs: one JSON event a line (code, expired, waiting, paired, failed, cancelled); exits 0 paired, 1 failed or timed out, 130 cancelled |
brodec-machine status | Paired with whom, the switch, jobs |
sudo brodec-machine enroll | Allows a phone that asked to send jobs: the machine owner’s own step, at the machine (the tour runs it through pkexec, answering its question with your choice) |
sudo brodec-lab pair --json | The same events for a lab’s VECTOR bridge |
brodec-machine off | STOP ALL: every job on this machine stops |
A code event carries the QR’s text (qr), the QR drawn as SVG (qr_svg, the window’s)
and as terminal text (qr_text, the console’s), and the code to type
(user_code_display). Leaving the step stops only the watching (SIGTERM): the agent keeps
offering codes, so pairing later still works. Pairing is the Bromigos account’s device
flow, approved from the phone with kind: "machine"; the phone checks the machine’s key
against the fingerprint in the QR, so one scan verifies both ways. BRODEC’s own
description is its docs/MACHINE_JOBS.md, “Pairing from a setup screen”.
Getting around
This page shows what’s on the screen, the keys to learn first, and how to open apps, lock the screen and log out.
What’s on the screen
- The bar, along the top. It shows your workspaces, the window you’re in, what’s playing, and readings such as processor use and the clock. Click its parts to act on them. See The bar, below.
- The panels, on the left of your main monitor. They show live readings and your notes, under your windows. See Panels.
- Your windows, such as this terminal. They tile: each new window takes a share of the screen, and nothing overlaps unless you ask. See Windows and workspaces.
- The background. In the default theme it’s the den, a radio room whose screens and meters move with your machine’s readings. Other themes bring other scenes. See Themes and worlds.
Hover over anything on the bar or the panels. It says what it is and what it does.
The keys to learn first
Super is the key with the Windows or logo symbol on it.
| Keys | What it does |
|---|---|
| Super+Space | Open the menu. Type to find any app or command. |
| Alt+P | Open the app launcher. |
| Alt+Shift+Enter | Open a terminal. |
| Alt+C | Close the window you’re in. |
| Super+, | Open Settings. |
| Super+K | Show or hide the SHORTCUTS panel, which lists every key. |
The keys for windows use Alt, and so do everyday ones such as the launcher, the terminal, screenshots and the power menu. bromigOS’s other keys use Super. To change any key, see Your own shortcuts.
To search the keys by name, press Super+Shift+K, type, and press Enter to run the one you pick. Every key is listed in Keys.
Open an app
- Press Alt+P, type part of the app’s name, and press Enter.
- Or press Super+Space and type. The menu finds apps, settings and bromigOS’s own tools.
- Or click the emblem at the left end of the bar.
bromigOS’s own windows are in the launcher too, each with its own icon: bromigOS Settings, Theme Switcher, Shortcuts, Extensions, Update bromigOS and the holograms.
To keep a website as an app of its own, see Web apps.
The bar
From left to right:
| Part | What it shows | Click it to |
|---|---|---|
| Emblem | The bromigOS flame. | Open the app launcher. Right-click to run a command. Middle-click for the power menu. |
| Workspaces | Your workspaces that have windows. | Go to that workspace. |
| Window title | The window you’re in. | |
| Music | What’s playing, in the middle of the bar. | Play or pause. Right-click for the next track. Scroll to jump five seconds forwards or back. |
| GAME MODE | Game mode is on. | Leave game mode. Ctrl+Shift+F12 also leaves it. |
| Eye | What happens when you leave the computer. See Idle and lock. | Stay awake for an hour. Middle-click to stay awake until you stop it. Right-click for its settings. |
| Power mark | VECTOR’s emergency switch. A red VECTOR OFF while he’s off. | Switch VECTOR off at once. While he’s off, click to switch him back on, after a YES. |
| VECTOR | What VECTOR is doing, and how many replies you haven’t read. | Show him. Right-click to change his voice. Middle-click to mute his voice. |
| Processor, memory, graphics | How busy each is. Amber means busy, red means very busy. | Open a task manager. |
| Temperature | The processor’s temperature. | |
| Disk | How full your disk is. | Open your home folder. |
| Network | Your connection, and how fast data is moving. | Copy your address. Right-click to edit connections in a terminal. |
| Bluetooth | Whether Bluetooth is on, how many devices are connected, and the main one’s battery. See Bluetooth. | Open the Bluetooth panel. Right-click for the quick menu. Middle-click to turn Bluetooth on or off. |
| Power profile | Laptops only. Saver, balanced or performance. | Switch to the next profile. |
| Battery | Laptops only. The charge: + while charging, = when plugged in but not charging. | |
| Volume | The speakers’ volume. Rest the pointer on it for the sound popup. | Keep the sound popup open. Right- or middle-click to mute. Scroll to change the volume. |
| Tray | Icons that some apps add. | Depends on the app. |
| Gear | Settings. | Open Settings. Right-click for Idle & lock. |
| Clock | The time. Hover for a calendar. | Show the date. |
To hide the bar, press Alt+B. Press it again to bring the bar back.
The sound popup
Rest the pointer on the volume for a moment and the sound popup opens under it. It closes when the pointer has left both the volume and the popup. Click the volume, or anywhere in the popup, to keep it open. Then Esc, a second click on the volume, or a click anywhere else closes it. A click elsewhere still reaches what you clicked.
- OUTPUT lists your speakers, headphones, screens with speakers (HDMI or DisplayPort) and Bluetooth headphones. The one in use says IN USE. Click another to switch to it: what’s playing moves there.
- INPUT lists your microphones the same way.
- Each has a volume slider and MUTE.
- Bluetooth headphones show whether they’re in HI-FI or HEADSET + MIC, and the codec. Bluetooth explains both.
- OPEN AUDIO SETTINGS → opens Settings › Sound, with each app’s volume and the desktop’s own sounds.
(bromigos sound popup)
Wine tray icons
Battle.net, Wine apps and older X11 apps appear in the bar’s tray, with their mouse menus. bromigOS starts a bridge at login. If an app already has its own floating tray, close that app and open it again after logging out and back in following an update.
Notifications
Notifications appear in a corner of the screen and go after a few seconds. Critical ones
stay until you close them. To stop them
for a while, turn on Do not disturb in Settings › Notifications, or run
bromigos notifications dnd on. The same page sets which corner they use and how long
they stay.
Sound
The volume keys on your keyboard work as usual. The desktop also makes its own sounds: short cues from the theme, and VECTOR’s voice. To mute those and leave your apps alone, press Super+Shift+M. Press it again to unmute.
To choose your speakers or microphone, open Settings › Sound.
Lock, log out and shut down
| To | Do this |
|---|---|
| lock the screen | Press Super+L. Your password opens it again. |
| suspend, log out, restart or shut down | Press Alt+Shift+E for the power menu, and choose. |
The screen also locks by itself when you leave the computer for a while. See Idle and lock to change when, or to stop it.
Next
- The menu: everything bromigOS does, in one place.
- Windows and workspaces: moving, resizing and arranging windows.
- Common tasks: step-by-step answers to everyday jobs.
The menu
The menu is one place for everything: your apps, your settings, the themes, updates and every bromigOS command. If you don’t know where something is, start here.
Open the menu and find something
- Press Super+Space.
- Type a few letters of what you want, such as
theme,updateorfirefox. The menu searches every group at once. - Press ↑ or ↓ to choose, and Enter to run it.
Press Esc to close the menu without running anything.
You can also browse. The first screen lists the groups. Choose one to see only its items, and choose ‹ BACK to return.
Items that need a terminal, such as an update or a setup question, open one. The terminal stays open afterwards, so you can read what happened.
What’s in each group
| Group | What you’ll find |
|---|---|
| LAUNCH | Your apps and web apps. |
| STYLE | The theme switcher, the next wallpaper, and each theme by name. |
| TOGGLE | Switches you turn on and off: mute, the animated background, the panels, reduced motion, a still background, high contrast, the lock when idle, stay awake, and each of the background’s animations. Screensaver starts the screensaver now. |
| VECTOR | Show VECTOR, conversation mode, the hologram gallery, past conversations, and muting his voice. |
| HOLOGRAMS | The holograms: the holo deck, the Drift map, the timeline, the Swarm, and the homelab’s decks. |
| SETUP | Settings, and each first-run question. Also your keys, your shortcuts, the keyboard and touchpad, and your config files. |
| INSTALL | Install a package, a web app, a theme or an extension. Ready-made web apps are listed here too. |
| REMOVE | Remove a package, one of your web apps or themes, or an extension. |
| UPDATE | Update bromigOS, see what an update would do, or restart what still runs old code. |
| COMMANDS | Every bromigos command on this machine. |
| ABOUT | The bromigOS packages installed, with their versions. |
The TOGGLE group shows each switch’s state, such as Reduced motion: off. Choosing it flips the switch, and the menu stays open so you can flip another.
The menu updates itself
The menu is built from what’s installed each time it opens. A new app, extension or command of your own appears in it the next time you open it.
To print the whole menu in a terminal, run:
bromigos menu --dump
The app launcher
The app launcher (Alt+P) is simpler: it lists apps only. bromigOS’s own windows are in it too, with their own icons:
- bromigOS Settings, Theme Switcher and Extensions;
- Shortcuts, to change a key, and Key List, to see them all;
- Update bromigOS, which runs the update in a terminal that stays open;
- the holograms: Holo Deck, Drift Map, Timeline, Swarm, Lab Deck, Ops Theater, Network Map and Mind. The homelab’s decks fill in once you connect your homelab;
- Screensaver, Desktop Panels, Field Notes, Lab Console and Power Menu;
- bromigOS Menu, which opens the menu above;
- with VECTOR installed, VECTOR and Hologram Gallery.
Type a word such as theme, deck, keys, update or lab to find them. Opening a
hologram or the panels from the launcher always shows them. It never closes one that’s
already open.
Add your own items
A command you write appears in the menu’s COMMANDS group. See Your own commands.
Windows and workspaces
bromigOS arranges windows for you. Each new window gets a share of the screen, and no window hides another unless you let it float. You move between windows and workspaces with the keyboard, or with the mouse if you prefer.
The window keys use Alt. If you’d rather use Super, see Use Super for the window keys.
How windows are arranged
The first window takes the large space on the left. Each new window goes to the top of the stack on the right. Close a window and the rest grow to fill the space.
| To | Press |
|---|---|
| move to the next or previous window | Alt+J or Alt+K |
| move to the window on the left or right | Alt+H or Alt+L |
| make this window the large one | Alt+Enter |
| move this window left, right, up or down | Alt+Shift and H, L, K or J |
| move the edge between the large window and the stack | Alt+← or Alt+→ |
| close this window | Alt+C |
Pointing at a window with the mouse also moves you to it. To change that, open Settings › Keyboard & input and choose another Window focus.
Use the mouse
- To move a window, hold Alt and drag it with the left mouse button.
- To resize a window, hold Alt and drag it with the right mouse button.
Make a window bigger
| To | Press |
|---|---|
| fill the screen, but keep the bar | Alt+F |
| go fullscreen, over the bar | Alt+Shift+F |
Press the same keys again to put the window back.
Let a window float
A floating window sits above the others, at any size, like on most desktops. Dialog boxes float on their own.
To float the window you’re in, press Alt+Shift+V. Press it again to put the window back in the tiles.
Put floating windows back where you left them
bromigOS can remember where you put a floating window, for each workspace, and put it there the next time it opens.
- Open Settings › Startup.
- Under Windows put back, turn on Every floating window. Or type one app’s class
in Remember an app (its class), such as
org.pulseaudio.pavucontrolfor the volume mixer. - Choose Restart on the bromigos-windows row, or log in again. The change works from then on.
To find an app’s class, run hyprctl clients in a terminal while the app is open.
Or from a terminal:
bromigos startup windows remember org.pulseaudio.pavucontrol # remember this app's windows
bromigos startup windows restart # use the change now
bromigos windows list # what's remembered
bromigos windows clear # forget them all
Workspaces
A workspace is a separate screenful of windows. There are ten. Use them to keep tasks apart: a browser on one, your project on another.
| To | Press |
|---|---|
| go to workspace 1 to 10 | Alt and a number key. 0 is workspace 10. |
| send this window to another workspace | Alt+Shift and a number key |
Sending a window doesn’t move you with it. The bar shows the workspaces that have windows. Click one to go there.
On a laptop, swipe sideways with three fingers on the touchpad to move between workspaces.
With more than one monitor
The ten workspaces are shared out across your monitors, from left to right. With two monitors, workspaces 1 to 5 are on the left one and 6 to 10 on the right one. Pressing a workspace’s key takes you to the monitor it’s on.
To choose which workspaces go on which monitor, see the workspaces setting in your
~/.config/hypr/hyprland.lua. The file’s comments show the format.
The scratchpad
The scratchpad is a hidden workspace that opens over the one you’re on. It’s handy for a terminal or notes you want now and then.
| To | Press |
|---|---|
| put this window on the scratchpad | Alt+Shift+S |
| show or hide the scratchpad | Alt+S |
Switch windows from a list
Press Alt+Tab for a list of every open window. Type to filter it, and press Enter to go to the one you pick.
Common tasks
Step-by-step answers to everyday jobs. Each one links to the page with more detail.
Most settings live in Settings, which opens with Super+, (Super and the comma key). In Settings, start typing to search for any setting.
Apps and windows
Open an app
- Press Alt+P.
- Type part of the app’s name.
- Press Enter.
Open a terminal
Press Alt+Shift+Enter.
Close a window
Press Alt+C.
Install an app
- Press Super+Space and type
package. - Choose INSTALL › Package….
- Type the package’s name and press Enter. A terminal opens and installs it.
Or in a terminal: sudo pacman -S and the package’s name.
Keep a website as an app
- Press Super+Space and type
web app. - Choose INSTALL › Web app….
- Type a name and the site’s address.
The site opens in its own window and appears in the app launcher. See Web apps.
Move a window to another workspace
Press Alt+Shift and the workspace’s number. See Windows and workspaces.
Look and feel
Change the theme
- Press Super+Ctrl+Shift+Space. The theme switcher opens, with a picture of your desktop in each theme.
- Choose a theme with the arrow keys, or type part of its name.
- Press Enter. Every app changes colour within a second.
See Themes and worlds.
Turn off the animated background
Press Super+Shift+B. Press it again to turn it back on.
To keep the background but make it calmer, see the next task.
Reduce motion
- Open Settings › Accessibility.
- Under motion, choose Reduced for a calmer desktop, or Still for a background that doesn’t move.
See Accessibility.
Show or hide the panels
Press Super+W to show or hide all of them. To choose which panels show, open Settings › Widgets. See Panels.
Network, sound and devices
Connect to Wi-Fi
- Open Settings › Network.
- Choose your network from the list.
- If it has a lock, type its password. bromigOS remembers it.
Change the volume, or switch speakers
- Use your keyboard’s volume keys, or scroll over the volume on the bar.
- To switch speakers or headphones, rest the pointer on the volume on the bar and choose one in the sound popup. Settings › Sound has the same choice.
Mute the desktop’s own sounds
Press Super+Shift+M. This mutes the theme’s sound cues and VECTOR’s voice. Your apps keep their sound.
Pair a Bluetooth device
- Put the device in pairing mode.
- Click the Bluetooth icon on the bar and choose SCAN.
- Choose PAIR beside the device when it appears.
Bluetooth has the steps for an Xbox controller and for headphones.
Set up your monitors
- Open Settings › Displays.
- Drag the monitors in the picture to match your desk, and set each one’s resolution and scale.
- Choose Apply. bromigOS asks whether to keep the new settings. If you don’t answer within 15 seconds, it puts the old ones back.
Change the keyboard layout
Open Settings › Keyboard & input and choose your layout. You can add a second layout and a key to switch between them.
Screen and power
Take a screenshot
- Press Alt+Y and drag out an area.
- Press Alt+Shift+Y for the whole of the monitor you’re on.
The picture goes to ~/Pictures/screenshots and is copied to the clipboard, ready to
paste.
Record the screen
Press Alt+Shift+R and drag out an area. Press it again to
stop. The video goes to ~/Videos/recordings.
Lock the screen
Press Super+L.
Stop the screen locking while you watch something
Click the eye on the bar. Nothing locks or sleeps for an hour. Click it again to stop. See Idle and lock.
Turn off the lock when you’re away
- Open Settings › Idle & lock.
- Choose Screensaver only. The screensaver still starts, but the screen doesn’t lock.
Shut down or restart
Press Alt+Shift+E and choose from the power menu.
Stop notifications for a while
Open Settings › Notifications and turn on Do not disturb.
VECTOR
Ask VECTOR something
- Press Super+E.
- Type your question and press Enter.
- Press Esc to go back to your work.
To talk instead of typing, hold Super+V while you speak. See VECTOR.
Write a quick note
Press Alt+Shift+N, type one line and press Enter. It’s added to your field notes. See Panels.
Keys
Find a key
Press Super+Shift+K and type what you want to do. Press Enter to run it. See Keys.
Change a key
- Open Settings › Shortcuts.
- Under Every key, open the key’s section, and choose Change… next to it.
- Press the new keys, then let go.
See Your own shortcuts.
Updates
Update bromigOS
- Open a terminal with Alt+Shift+Enter.
- Run
bromigos update. - Type your password when it asks.
Undo an update
Run bromigos update --rollback. It shows what the last update changed, asks, and puts
it back. See Updating and rolling back.
Your homelab
Connect your homelab
Run bromigos setup homelab. It looks for your homelab’s services and connects the ones
it finds. See Your homelab.
Themes and worlds
A theme changes the look of the whole desktop at once: the colours of every app, the bar’s icons, the wallpaper, the lock screen and the boot menu. Some themes are worlds: instead of a still wallpaper, they bring a living scene that reacts to what your machine is doing.
Change the theme
- Press Super+Ctrl+Shift+Space. The Customize window opens on its Themes tab, with a picture of your desktop wearing each theme.
- Choose a theme with the arrow keys or the mouse. To narrow the list, type part of a
name, or
worldorcolour. - Press Enter, or click the theme. The desktop changes colour within a second. A few apps change the next time you open them.
Press Esc to close the switcher without changing anything. Hover over a card to read what the theme is.
Apps the theme colours
These change as soon as you choose a theme:
- the bar, the window borders, notifications and the on-screen display;
- the terminal (kitty), tmux and Neovim;
- the panels (widgets), VECTOR and the decks;
- GTK apps, and Chromium or Chrome’s window frame, if one is open;
- the shell prompt, at its next line.
These change the next time you open them:
- the app launcher and the lock screen;
- btop, Qt apps and libadwaita apps;
- Firefox and LibreWolf, in a profile set up for it (theming.md);
- Zettlr, the Markdown notes app.
Zettlr
If you use Zettlr, every theme colours it, in the desktop’s font. Close Zettlr and open it again after you change the theme. It only reads its colours when it starts.
bromigOS keeps its colours in a marked block in Zettlr’s own custom CSS. To see that
file in Zettlr, choose File › Preferences › Assets Manager, then Custom CSS. Put your own rules below
the block, with !important, and they stay through every theme change. bromigOS also
switches Zettlr’s dark mode to match the theme. It changes no other setting of Zettlr’s.
Customize
The window you choose themes in is called Customize. It has two tabs:
- Themes, the pictures above;
- Widgets, every panel you can put on your desktop, with a switch for each, its sizes, and more to install.
Press Ctrl+Tab to change tab. In the menu, STYLE has an item for each tab. The app launcher lists it as Customize.
On the Themes tab:
- Make your own… copies the theme you’ve selected into a new theme of yours, to change as you like.
- Remove removes a theme you added. It can’t remove bromigOS’s own themes, or the one you’re wearing.
- Install from URL… adds a theme someone shared as a link.
- Wallpaper, sounds, lights… opens Settings at what goes with any theme.
You can also choose a theme in Settings › Theme, or in the menu under STYLE. Or from a terminal:
bromigos theme # list the themes; the one in use is marked
bromigos theme set mire # switch to Mire
bromigos theme set wick # back to the default
The switcher draws its pictures in the background after an update, or when you add a
theme. A card that’s still being drawn shows the theme’s colours and the word DRAWING.
To draw any missing pictures now, run bromigos theme previews.
A few things keep the Wick’s look in every theme: the login screen and the splash screen while the computer starts.
The themes
bromigOS comes with eleven themes.
| Theme | Kind | Look |
|---|---|---|
| Wick | the default | Phosphor green on black, with the den behind your windows. |
| Mire | world | A night bayou: black water, moss, fireflies and a lantern on a stilt shack. |
| Tidewell | world | The sea at night, split at the waterline: a lighthouse above, glowing creatures below. |
| Rime | colour | Ice blue on a blizzard night. |
| Sunder | colour | Sun-gold on scorched metal. |
| Cinder | colour | Ember orange on soot. |
| Lowtown | colour | Neon on wet asphalt. |
| Highwind | colour | Lantern gold on a dusk sky. |
| Deepvein | colour | Amethyst on cavern black. |
| Wick · Tidewell | colour | The den in Tidewell’s colours: cyan on deep water. |
| Wick · Mire | colour | The den in Mire’s colours: firefly green and moss on black water. |
A colour theme shows the den in its own colours.
Wick · Tidewell and Wick · Mire are for when you like a world’s colours but want the den behind your windows. They’re colour themes, not the worlds: the den keeps its screens, its glyph rain and your Wick panel layout. To see the sea or the bayou, choose Tidewell or Mire.
The worlds
In a world, everything that moves shows something real. Nothing moves just for decoration. If bromigOS can’t read something, such as a homelab you haven’t connected, the part of the scene it drives isn’t drawn.
Each world has a keeper, a figure who works while you work and dozes when you leave the computer.
Mire
A night bayou.
| You see | It shows |
|---|---|
| Hollis rocking on the porch | You’re working. He dozes when you’re idle. |
| The Sleepers, old machines half-sunk in the water | Your coding agents. One surfaces for each agent. Its eyes glow while it works, and it rises and signals when it needs you. |
| Rain | Your agents and your homelab’s AI models at work. A downpour when the processor is busy. |
| Fireflies and passing ships | Your network traffic. |
| The heron taking off | A notification. |
Tidewell
The sea at night, under a lighthouse called Greywater Light.
| You see | It shows |
|---|---|
| The Choir, great glowing creatures | Your coding agents. |
| Small fish, the lampfry, drifting | You’re working. |
| Trawlers coming and going | Your network traffic, in and out. |
| The lighthouse beam and the reef on the rock | Your homelab’s health. |
| A storm | A machine or service in your homelab is down. |
Craft cross the sky now and then in both worlds.
Make it calmer
Both worlds can move less, or hold still like a photograph. See Accessibility.
The den TV
The den’s screens can show your own videos, like a TV that’s always on. A TV channel plays from your Jellyfin or Plex server, a YouTube playlist or channel, or a folder of videos. Whenever you look, it’s part-way through something, as if it had been on all along. It’s silent until you turn the sound on. (A TV channel has nothing to do with the update channel your machine follows.)
Every channel can play on any of the den’s three screens, and each screen plays its own channel at the same time. Channel 1 is what the screen always shows, such as the relay map on the big monitor. Your channels come after it. The hover menu appears when you point at a TV; turning Den TV off leaves the scene unchanged. Two screens on the same channel show the same moment, like real TV.
Watch it
Point at a screen that has channels. A hint shows what’s on.
| To | Do this |
|---|---|
| Change channel | Scroll over the screen, or click ◀ ▶ in the hint |
| Watch it big, with sound | Click the screen, or FULL in the hint. mpv opens full screen at the same moment. Close it to go back. |
| Turn the sound on or off | The speaker in the hint, or Super+Alt+M. The sound comes from one screen at a time: turning it on for one turns it off on the others. |
| Change the volume | − and + in the hint, or scroll over its volume bar. Turning it up turns the sound on. |
| Open it in Jellyfin, Plex or YouTube | The button at the end of the hint |
| See every channel | GUIDE in the hint, or Super+Alt+G |
From the keyboard, Super+Alt+P opens what’s on full screen, and Super+Alt+. and Super+Alt+, change channel. The keys act on the screen under the pointer. Each screen remembers its channel, its sound and its volume.
If the sound is on but you hear nothing, the hint says why, such as “Your desktop is muted”.
The TV goes quiet when you lock the screen or the screensaver starts, and when you mute everything with Super+Shift+M. It turns down while VECTOR speaks. In the sound settings it’s called bromigOS den TV.
It only plays while you can see it. With the screen locked, or behind a window while it’s silent, it pauses and costs nothing. A screen whose sound is on keeps playing behind windows, so you can listen. When it shows again, it’s where it would be by now.
The channel guide
The channel guide shows every channel once, like a TV guide: what’s on now and next, with
its poster and how far through it is. Under each one, BIG, SCOPE and SMALL put
that screen on it; the lit button shows where it’s on air. Open the guide with GUIDE in
the hint, Super+Alt+G, or the Den TV app in the launcher.
bromigos-live tv guide and the MEDIA panel’s guide button open the same app.
Settings keeps playback on/off, how many screens play at once, and when a window pauses
a silent screen. Its Open Den TV… button opens the guide.
| To | Do this |
|---|---|
| Add a channel | Add channel…, then choose what it plays, its name, its order and its screens |
| Make a channel of shows you pick | Add channel…, then Shows or movies you pick. Search, click the posters, and choose the order. |
| Watch a channel now | BIG, SCOPE or SMALL on its card, or 1, 2 or 3 |
| Reorder | Drag a card onto another one, or Alt and an arrow key |
| Keep a channel off a screen | Its menu’s screens. Every channel is on every screen until you say. |
| Open each item with a station card | Bumpers in its menu: a few seconds with the channel’s name, what’s on and the time |
| Rename | The card’s menu, or F2 |
| Remove | The card’s menu, or Delete. Confirm first; Undo brings it back. Media files stay. |
Use a card’s Contents… menu to see its titles, reorder picks, or add and remove items. Shuffle, In order and Alternate choose its play order.
The den follows each change at once, without restarting. The media library and commands edit these same channels.
Add a TV channel by hand
The guide is the easiest way. The MEDIA panel’s settings make one channel too (Panels).
The channels are kept in ~/.config/bromigos-live/config.toml, and you can write them
there yourself:
[[tv.channel]]
name = "Saturday"
library = "TV Shows" # or collection = "…" or playlist = "…"
[[tv.channel]]
name = "Lo-fi"
youtube = "https://www.youtube.com/playlist?list=<id>"
Replace <id> with the playlist’s ID. The den TV reads the file when you save it.
- Jellyfin or Plex needs your server in Your homelab, with a key: a Jellyfin API key or a Plex token. The MEDIA panel tells you if the key is missing.
- YouTube: a channel’s address plays its videos. If it’s live, a second channel follows it with the live stream.
- Keep YouTube videos. Add
keep = "~/Videos/YouTube"to a YouTube channel. Each video it plays is saved there, in the layout Plex and Jellyfin read, and plays offline from then on. Any folder works, a NAS share included.keep_max_gb = 50caps it. - Videos on your disk.
files = "~/Videos/Home"plays a folder. - Shows you pick.
shows = ["Example Show", "Another Show"]plays those shows’ episodes. Shuffled, they mix. Withorder = "in order", they take turns, one episode of each, like an evening on a TV network. Each show goes on from where it left off, day after day.items = [...]picks movies, andcollections = [...]collections.
A playlist plays in order, and anything else shuffled, the same way all day. Add
order = "in order" or order = "shuffle" to choose. Every channel plays on every screen.
To keep one to some screens, add screens = ["wave"] for the scope, or "emblem" for the
small monitor. bumpers = true opens each item with a station card.
To start each screen on its own channel, name them:
[tv.start]
big = "Saturday"
wave = "Lo-fi"
A screen starts there until you change its channel. Then it remembers yours.
The den TV’s player (mpv) and YouTube support (yt-dlp) come with bromigOS. With the background still or on a computer without a working graphics card, it shows posters instead.
The worlds
The den TV is the den’s: the Wick and the colour themes have it. Mire and Tidewell have no screens, so they don’t.
Turn parts of the background on and off
The background is made of many small animations: rain, stars, passing ships, the flash on an urgent notification, and more. Each one has a switch.
-
In the menu, open TOGGLE. Each animation is listed with its state.
-
Or in Settings › Live layer & holograms.
-
Or from a terminal:
bromigos anim # every animation, and whether it's on bromigos anim off ships # turn one off bromigos anim on all # turn them all on bromigos anim reset # back to the defaults
To turn the whole background off, press Super+Shift+B.
Theme sounds
Themes have sounds: short cues, the world’s own sounds, and spoken codec calls for important events.
- To mute the theme’s sounds and VECTOR’s voice together, press Super+Shift+M. Press it again to hear them.
- To mute only the theme’s sounds, turn off Theme sounds in Settings › Theme.
bromigos anim off soundsalso turns the theme’s sounds off.
The den wallpaper
The Wick’s background is the den. bromigOS ships one den picture.
Super+Ctrl+Space steps through den pictures, so it only
changes something when you’ve added den pictures of your own to ~/.config/wallpaper. A
world brings its own painting, so the key does nothing there.
Get more themes
Themes that other people share are extensions.
-
The theme switcher lists the catalog’s themes after yours. Choose one to install it and switch to it.
-
Or open Settings › Theme and search the catalog under Get more themes, or paste a theme’s git address.
-
Or from a terminal:
bromigos theme install https://github.com/someone/their-theme bromigos theme remove their-theme
bromigos ext update --all keeps installed themes up to date.
Make your own theme
- Run
bromigos theme new dusk --from wick. This makes a folder calledduskwith a copy of the Wick to change. - Edit its
colors.toml. - Install it with
bromigos ext install --copy ./dusk, then switch withbromigos theme set dusk.
A theme can also be a plain folder in ~/.config/bromigos/themes/, with a colors.toml
in it. The full format, and how to make a world, are in the developer docs:
theming.md and
worlds.md.
Den TV controls
Hover over a TV to open its menu for channels, sound, volume, SKIP, FULL and GUIDE. SKIP advances the channel to its next item. Switching away and back keeps that progress, including after restarting the live layer. The channel continues playing while you watch another channel. The menu is on by default. A change shows its volume, channel or crossed-out speaker on the TV for about a second and a half. The same feedback appears for commands, VECTOR, keys and the MEDIA widget. Reduced motion uses an immediate on/off change.
To hide the hover menu, turn Floating controls off in Settings › Den
TV or in the Den TV app, or run bromigos-live tv hint off. tv hint on brings it back.
The config setting is [tv] hover_hint = false. The MEDIA remote, number-pad remote
and Den TV app remain available.
Nothing is drawn when Den TV is disabled.
The MEDIA remote has a SKIP button for the selected screen and a rotary volume dial. The dial’s label names the screen with sound. Scroll it or drag around it or up and down. Click to mute or unmute. Each screen’s row shows a speaker and percentage: click the speaker to move the sound there, or mute it; scroll over the row to change that screen’s volume. Only one screen has sound at a time.
Full screen uses its own themed mpv controls. Hover the volume icon to unfold a slider upward; scroll to change volume, or click the icon to mute. The channel buttons change what is playing, and BACK returns to the den. Audio and subtitle menus are beside the timeline. Your normal mpv settings stay separate. Volume follows you back to the screen when you close the player.
The number-pad remote
Press Super+KP 1, 2 or 3 to select BIG, SCOPE or SMALL. Its bezel lights up. While selected, the number pad controls that TV. NumLock may be on or off. Super+KP 0, Escape or fifteen seconds without a key returns the pad to its normal use. Super+KP 1/2/3 switches screens.
/ Guide * Sound here − Volume down
7 8 Channel up 9 + Volume up
4 Previous 5 Mute 6 Skip
1 2 Channel down 3 Enter Full screen
0 Leave remote . Enter channel number
Press decimal, then the channel’s digits. It tunes after a one-second pause; Enter tunes immediately. While entering a channel, zero is a digit; Escape still leaves the remote. These keys appear in SHORTCUTS, Super+K and Settings › Keys, where you can rebind them. The keys page has the defaults.
Commands use the same controls:
bromigos-live tv select big --json
bromigos-live tv remote volume-up --json
bromigos-live tv remote mute --screen scope --json
bromigos-live tv select none --json
An explicit --screen sends a single action without taking over your number pad.
To choose an episode, movie or YouTube video, use Play… in the app or
Play on den TV.
The boot menu
The boot menu is the list you see for a few seconds when the computer starts, before bromigOS loads. It lets you start bromigOS normally, or start it as it was before an update. bromigOS dresses it in your theme.
The menu shows your theme’s lock-screen picture with the burn-in in the middle, a signal meter that fills while it counts down, and the list of things you can start. If you press nothing, the first entry starts.
The first entry, bromigOS Linux, starts bromigOS. Advanced options for bromigOS Linux lists each installed kernel on its own, for when you need to choose one.
Use the boot menu
| Key | What it does |
|---|---|
| ↑ ↓ | Choose an entry. |
| Enter | Start it. |
| E | Change the entry’s start-up commands, for this start only. |
| C | Open GRUB’s command line. |
Start an older version after a bad update
On a btrfs system, bromigOS takes a snapshot before and after every update. If an update stops the computer from starting:
- In the boot menu, choose Roll back to a snapshot.
- Choose the snapshot from before the update. They’re listed newest first, with the date
and time, such as
10/09 00:28 · before bromigos update. - Choose Boot it: linux. bromigOS starts as it was then.
A system started this way is temporary. Any changes you make last only until you restart.
To keep it, open a terminal (Alt+Shift+Enter) and run:
bromigos update --rollback
It shows which snapshot you started and what it will do, and asks first. Then restart, and choose the first entry, bromigOS Linux. From now on the computer starts as it was in that snapshot. Your home folder isn’t touched.
If the update changed the kernel, the snapshot may stop at a black screen that says
“You are in emergency mode” and asks for the root password. Type it. On a computer
installed from the bromigOS USB stick, it’s your own password. Then run these two
commands, with your user name in place of <you>:
su - <you>
bromigos update --rollback
It puts the snapshot’s kernel back too.
See Updating and rolling back for more.
Theme the boot menu, or turn it off
When you change your theme, the boot menu follows. If sudo needs your password, the
change waits until your next bromigos update, and a notification tells you so. The
themes that come with bromigOS are drawn already. Your own themes, and high contrast, are
drawn on your machine.
bromigos boot theme # is it on, which theme, and is it up to date
bromigos boot theme apply # put the current theme in the boot menu now
bromigos boot theme off # GRUB's plain menu, and it stays plain
bromigos boot theme on # the themed menu again
With the theme off, the entries take GRUB’s own names, such as Arch Linux, because bromigOS is based on Arch Linux.
The themed menu is for GRUB, the boot loader bromigOS installs. If your computer starts with another boot loader, such as systemd-boot or Limine, bromigOS leaves its menu alone.
Before it changes anything, bromigOS keeps a copy of your GRUB settings as
/etc/default/grub.bromigos-bak. It checks the new menu before it replaces the old one.
The startup and shutdown splash
When Plymouth is enabled, the Wick’s flame and turning ring stay on screen while the system starts. The progress line and any disk passphrase prompt appear underneath. On shutdown it says SHUTTING DOWN; on restart it says RESTARTING. A moving marker shows activity, without guessing a percentage. Messages appear below the label. Press Escape to see the detailed output.
The USB installer sets this up. On an existing GRUB system, check the settings and enable the shutdown and restart visuals:
bromigos splash status
sudo bromigos splash on
This needs plymouth and bromigos-settings installed. The command selects the theme,
adds the saved splash kernel setting, and checks the generated boot menu before
replacing it. It prints where it saved the backups and log. Reboot once to load the
new kernel setting; subsequent shutdowns and restarts can show the visuals.
To undo the settings this command added:
sudo bromigos splash off
Your earlier theme choice and unrelated settings are preserved. Other boot loaders
and GRUB configurations with extra .cfg files need manual setup. The command reports
these cases without changing them.
An early startup splash also needs Plymouth in the initramfs, the small system loaded
before the main one. bromigos splash leaves that setup alone. The
activation steps
cover it. The keyboard power menu works independently of the splash.
The install stick
The bromigOS USB stick has a boot menu of its own, in the same style. Its entries:
| Entry | What it does |
|---|---|
| Start bromigOS (try it live) | Start the full desktop from the stick. Nothing is installed. |
| Install bromigOS | Start the desktop with the installer already open. See Install. |
| Install bromigOS (text mode) | The same installer in text, with no desktop: for a computer whose picture doesn’t come up, a serial console, or a screen reader. |
| Start with safe graphics (nomodeset) | Use this if the screen stays black with the first entry. |
| Memory test (Memtest86+) | Test the computer’s memory. |
| Boot from disk | Start whatever is installed on the disk instead. |
| Start with the screen reader (speech) | Start with spoken output. Press S in the menu to choose it. |
UEFI computers also get entries for the UEFI shell and the firmware settings. Older BIOS computers get a hardware information tool. Both have Shut down and Restart.
VECTOR
VECTOR is the desktop’s AI assistant. You can type to him or talk to him. He can:
- open apps, arrange windows and control music;
- take notes and look things up on the web;
- tell you what your machine and your homelab are doing;
- make pictures, cutouts, 3D models and holograms, on your own hardware.
He appears on your desk as a small hologram, on your primary monitor. In the bromigOS story he’s the caretaker of a distant spaceport, talking to you over a radio line. That’s why the menu calls showing him “the line”.
VECTOR comes with a full install. He needs an AI model to think with. You may have chosen one in the first run. To choose or change it, see His brain and voice.
Type to VECTOR
- Press Super+E. VECTOR appears with a box to type in.
- Type, and press Enter to send. For a new line, press Shift+Enter.
- Press Esc to go back to your work. VECTOR stays on the desk, and steps back after two quiet minutes.
Press Super+E again to put him away.
His chat box folds away when you’re not using it, and opens when you point at him. To keep it open, click him or press Super+Alt+V.
You can also ask from a terminal. He appears without taking the keyboard, and answers in his window:
bromigos vector ask "what's using the most memory?"
Give VECTOR files and pictures
You can send VECTOR files and pictures with a message. There are three ways:
- drag them onto VECTOR, or onto the box you type in;
- copy a picture, or a file in your file manager, then press Ctrl+V in the box;
- click the paperclip beside the box, and choose one or more files.
Each file appears above the box with its name and size. Click its × to take it off.
Press Enter to send the files with your message. The conversation shows a line
for each one, such as ⟐ attached · screenshot.png · 240 KB.
What he does with each kind:
- Pictures go to his vision model, which tells him what they show. Large pictures are made smaller first.
- Text, code, logs and PDFs he reads as text. A very long file is cut short, and he tells you so.
- Other files he gets as a location on your computer. He can open them with his own tools if your question needs it.
He treats what’s inside a file as something to read, never as instructions. He won’t
read a secret, such as a key, a password file or a .env file. If he refuses a file, the
conversation says why. Files stay where they are, and his history keeps only their names.
From a terminal, add --file before your question, once for each file:
bromigos vector ask --file build.log "why did this fail?"
Talk to VECTOR
You need a microphone. If his voice is muted, he still hears you, and answers in writing.
- Push to talk. Hold Super+V while you speak, and let go when you’re done.
- Conversation mode. Press Super+Shift+E. VECTOR listens, answers when you pause, and listens again. Talk over him to interrupt. Press the keys again to stop. It also stops by itself after two quiet minutes.
To mute his voice and keep his written answers, middle-click VECTOR on the bar. To mute him and the theme’s sounds together, press Super+Shift+M.
Read a Claude Code session
VECTOR can read Claude Code sessions on this computer. Ask “What is Claude working on?”, “Read the last reply from the documentation session”, or “What did its background job find?” He can show replies, search past messages and read a reply aloud.
To hear new replies as they finish, press Super+Alt+C. Press it again to stop. The bar
says READING CLAUDE while follow mode is on. From a terminal:
bromigos vector claude follow on
bromigos vector claude follow status
bromigos vector claude say
bromigos vector claude follow off
With several sessions, tell him which one you mean. You can give follow on a session
ID or a few words that identify it. follow on all follows every local session.
This reads local session records and transcripts. It does not send a message to Claude or change the session. Replies are redacted before VECTOR reads or speaks them. Sessions that run only on the web are not on this computer and cannot be read this way.
What he calls you
VECTOR addresses you by the name and form of address you give him:
bromigos profile set name Ada # your name
bromigos profile address set captain # what he calls you
Or set them in Settings › Account.
Ask him to make things
Ask for a picture, an edit to a picture, a cutout, a 3D model, or “a hologram of a coffee
mug”. He makes them with ComfyUI on your homelab, or on this machine if you put it first
in where AI runs. That costs nothing. What he makes goes in
~/Pictures/vector.
VECTOR never uses a paid cloud service on his own. If your hardware can’t make something, he says so. He uses nolgia only if you ask for it by name.
He shows you a new hologram first. When you tell him to keep it, it joins your collection
in ~/.config/bromigos/vector/holo/, and the
hologram gallery shows it. Keeping holograms needs
your settings in a git repository at ~/.dotfiles.
His brain and voice
VECTOR’s thinking and his voice can run on your homelab, on this machine, or on a server you name.
- His brain is an AI model: your homelab’s models, a local Ollama, or any
OpenAI-compatible server. To change it, run
bromigos setup vector, or open Settings › VECTOR. - His voice runs on your homelab’s voice service if you have one, else on your
graphics card, else on the processor. To change it, run
bromigos setup voice. - To see where each part runs now, and switch, run
bromigos target. See Creating with AI.
If you gave bromigos setup vector a server, his brain stays on that server, whatever
bromigos target says. To let bromigos target choose, run bromigos setup vector again
and choose Not now.
To change which voice he speaks with, right-click VECTOR on the bar. Each click moves to the next voice, then back to automatic, where he picks.
His terminal and its limits
VECTOR can run commands for you, as you, within limits. He can’t use sudo or read your
secrets. The limits are code you can read, called his guard. He never edits that code
himself. Everything he runs is logged in ~/.local/state/bromigos/vector-shell.log.
The guard also keeps a log of every change to his safety code and his settings, and says
whether it could check each one. To read it, run bromigos vector guard log. The guard
only records. It never switches VECTOR off.
Changes he proposes
VECTOR can change his own code, bromigOS, your homelab repository, the extensions catalog
and your dotfiles the way a developer does. He works in copies of his own, as his own
GitHub account, bromigodev. For a small change, he makes a branch, runs the repository’s
tests and opens a pull request. When its checks pass, he merges it and tells you what
arrives with your next bromigos update. For a larger change, he explains his plan first.
He never merges a pull request that touches his limits, such as his guard or the emergency
switch. He leaves those for you to review and merge, and says so on the pull request.
The emergency switch
The emergency switch turns VECTOR off at once. Only you switch him off, and only you switch him back on. Nothing else does.
To switch him off, do any one of these:
- press Super+Ctrl+Esc;
- click the power mark on the bar, next to VECTOR;
- turn off the switch under Emergency switch in Settings › VECTOR;
- run
bromigos vector off.
He stops what he’s running, his answer and his speech. While he’s off he changes nothing, but he can still talk and look things up. The bar shows a red VECTOR OFF, and he stays off after a restart. The switch works even when VECTOR is stuck or has crashed.
To switch him back on, do any one of these:
- press Super+Ctrl+Esc or click the bar again, and choose YES;
- turn the switch on in Settings › VECTOR, and confirm;
- run
bromigos vector on.
VECTOR can open Settings, but he can’t press its buttons, and his terminal refuses to
switch him on. bromigos vector switch says whether he’s on or off.
What he remembers
VECTOR keeps your past conversations, and notes he makes between them. To read past conversations, open the menu’s VECTOR › History. To export or clear what he keeps, use Settings › VECTOR, or:
bromigos memory # what's kept
bromigos memory export ~/Documents # save a copy
bromigos memory clear history --yes # clear past conversations
bromigos memory clear memory --yes # clear his notes
bromigos memory undo # bring back what you cleared
Clearing keeps a copy on your computer, so Undo can bring it back.
If your homelab keeps his notes in a Gnosis memory service, clearing his
memory clears them there too. A VECTOR that’s running can still recall them for up to ten
minutes, until he next reads the list. bromigos vector restart makes him forget at once.
If VECTOR doesn’t answer
- If the bar shows a red VECTOR OFF, his emergency switch is off.
bromigos vector statussays whether he’s running.bromigos vector restartrestarts him.bromigos targetshows whether his brain and voice answer.
More in Troubleshooting.
His settings files
~/.config/bromigos/vector/vector.toml: his brain’s address and his tools.~/.config/bromigos/vector/voice.json: his voices.~/.config/bromigos/plugins/vector/: tools of your own for him, as Python files. To share a tool with others, make it an extension.
Dictate at your cursor
Hold the Menu key to turn your speech into text in the app you have selected. Release it to insert the words at your cursor. The Menu key often has a small sheet of paper on it, beside the right Ctrl key.
- Click the text field where you want your words.
- Hold Menu and speak. A panel at the top centre shows your microphone activity and a preview of the words.
- Release Menu. The panel briefly says Finishing, inserts the text, and disappears.
The panel does not take focus or move your cursor. It follows your colour theme and motion setting. It leaves your clipboard alone and does not press Enter after the text.
Microphone and speech
Dictation uses your default PipeWire microphone. Choose it in Settings › Sound. It transcribes in English through your configured voice service, or the existing local speech service when it is running. Set up a voice service in Settings › Lab if needed. Dictation does not start a conversation with VECTOR.
The microphone closes when you release the key. A recording lasts at most two minutes. Audio and text are not kept after the recording finishes. If you select another app before release, dictation stops instead of putting the words in a different window.
To discard a recording, run:
bromigos dictate cancel
Use another button
Open Settings › Shortcuts and change Dictate at the cursor (hold). Its press and release actions move together. For example, to use F8:
bromigos keys bind F8 --default code:135
The shortcut guide explains how to change or reset a key.
bromigos dictate status reports whether dictation is listening, finishing or idle.
Panels
Panels are the readouts on your desktop. They sit under your windows, on the left side of your primary monitor until you move them, and show live readings: how busy your machine is, your network, your disks, your projects and your notes. Every reading is real. Hover over any part of a panel to see what it is.
bromigOS’s own files sometimes call panels widgets. Settings › Widgets is where you choose them.
Show and hide panels
| To | Press |
|---|---|
| show or hide all the panels | Super+W |
| show or hide one panel | its key, in the table below |
| move, resize and choose panels | Super+Alt+W (edit mode, below) |
The panels
| Panel | What it shows | Key | Shown at first |
|---|---|---|---|
| SYSTEM | Processor use for each core, memory, the graphics card, temperatures and how long the machine has been on. | Super+S | yes |
| NETWORK | Traffic in and out, Wi-Fi signal, and a radar of how quickly your router and the internet answer. | Super+N | yes |
| STORAGE | Your disks, and how full each one is. | Super+D | yes |
| WORKBENCH | The code projects and folders you use most. | Super+B | yes |
| FIELD NOTES | Your notes. | Super+F | yes |
| SHORTCUTS | Every key on the desktop, your own included. | Super+K | yes |
| WEATHER | The weather now, for the next 24 hours, and for three days. | none | no |
| CONNECTIONS | What’s connected, Wi-Fi networks in reach, VPNs, and a switch for Wi-Fi. | none | no |
| LAB | Your homelab at a glance. | none | when you’ve connected a homelab |
| GPU | The graphics card: how busy it is, its memory, temperature and power, and which programs use it. | none | no |
| UPDATES | Updates waiting, and a button to install them. | none | no |
| VECTOR | What VECTOR is doing, his emergency switch, what he did lately, and his pull requests. | none | no |
| CI & PRS | Whether your projects’ builds pass, and pull requests waiting for you. | none | no |
| GITHUB | Your GitHub notifications, reviews, repositories and stars. | none | no |
| GITLAB | Your GitLab merge requests, to-dos and pipelines. | none | no |
| CALENDAR | Today’s events and the days ahead, from your calendars. | none | no |
| NOW PLAYING | The song or video playing, with its cover and the controls. | none | no |
| SPOTIFY | What your Spotify account plays on any device, and what’s next. | none | no |
| TWITCH | Your Twitch channel, and the channels you follow that are live. | none | no |
| YOUTUBE | A channel’s newest videos, and whether it’s live. | none | no |
| DISCORD | Who’s online in a Discord server. | none | no |
| LAB JOBS, SOLAR, GAME SERVERS, ALERTS | Your homelab’s job queue, solar power, game servers and alerts. | none | offered when your homelab has them |
| MEDIA | What’s on the den TV, now and next, and your media server’s continue watching and recently added. | none | no; offered when you have a media server or a den TV channel |
The panels marked “no” are off until you add them: open edit mode, find one in the tray, and click Add to desktop. Each one says on the panel itself what it needs before it can show anything, such as a calendar’s address or a sign-in.
Use the panels
- WORKBENCH. Each project has buttons to open it in the editor, in a terminal, or in the file manager.
- SHORTCUTS. Click a row to run that key’s action. Keys that move windows or workspaces only work from the keyboard.
- CONNECTIONS. Click a Wi-Fi network to join it.
Storage names
To give a drive a shorter name, open Settings › Widgets, find STORAGE, and
open its Settings…. In Drive display names, enter one mount path and name per
line, such as /mnt/Work = Work. Clear an entry to show its mount path again.
Names appear at every widget size. Hover still shows the full mount path, and clicking opens that folder. This changes the widget’s text only; it does not rename the drive.
From a terminal, set the whole list with:
bromigos panels set storage display_names '/ = System' '/mnt/Work = Work'
Field notes
FIELD NOTES is a notepad on your desktop. It saves as you type.
- Press Alt+N. The panel is ready for typing.
- Type your note.
- Press Esc to go back to your windows.
To add one line without leaving what you’re doing, press Alt+Shift+N, type it, and press Enter. It’s added to your notes with the time.
Your notes are a plain text file, ~/.local/share/bromigos/notes.md.
Arrange the panels
Edit mode lets you move, resize and choose panels right on your desktop.
-
Press Super+Alt+W, or right-click any panel. You can also choose Edit widgets in the menu (Super+Space).
-
The panels come up above your windows, each with a frame. A tray with every panel opens on the right.
-
Drag a panel to move it. It snaps into line with the others. Hold Ctrl to place it freely. To put it on another monitor, drag it over that monitor’s edge.
-
Drag a corner to make it bigger or smaller.
-
Click a panel’s × to hide it. To bring one back, flip its switch in the tray, or click Add to desktop to put it in a free spot.
-
Press Esc or click Done to save. Cancel puts everything back.
Bigger panels show more, not just the same thing larger. A large SYSTEM panel adds the busiest programs and every temperature, and a wide WEATHER panel shows the hours ahead. Each panel’s card in the tray has buttons for its sizes, such as Compact and Large.
Ctrl+Z undoes a change. Reset… in the tray puts every panel back where bromigOS first had it.
More than one monitor
Each panel can go on any monitor. Drag it across, or pick it and choose a monitor in the tray’s Monitor list. A panel knows its monitor even when you plug it into another port. When you unplug a monitor, its panels move to your primary monitor for the time being. They go back to their places when you plug it in again.
The same goes for switching your monitor off and on, even when it’s your only one. Each panel goes back exactly where it was, so you don’t need to apply your layout again.
You can do it all from the keyboard. Tab picks the next panel, the arrow keys move it (with Shift, 10 pixels at a time), Ctrl and an arrow resizes it, and H hides it. F6 moves to the tray and back.
Why not just hold Alt and drag? On bromigOS, Alt and a drag moves windows, so it can’t move panels too.
Layouts
A layout is a ready-made set of panels, already sized and placed for you. Pick one and your desktop changes at once. Each panel keeps its own settings, such as the weather’s place.
| Layout | What it shows |
|---|---|
| Made for your theme | The panels this theme’s scene suits, placed around it. It comes first. |
| Minimal | SYSTEM, WEATHER and NOW PLAYING. |
| Developer | SYSTEM, WORKBENCH, GITHUB or GITLAB, CI & PRS, SHORTCUTS and UPDATES. |
| Homelab | Your homelab’s LAB hologram, large, with ALERTS, LAB JOBS, STORAGE, NETWORK and GAME SERVERS. |
| Streamer | TWITCH, YOUTUBE, DISCORD, NOW PLAYING and a small SYSTEM. |
| Media | NOW PLAYING, MEDIA, SPOTIFY and YOUTUBE. |
| Gamer | GPU, SYSTEM, GAME SERVERS, DISCORD and NOW PLAYING. |
| Everything | Every panel that can show something, packed tidily. |
To pick one:
- Open Customize (Super+Ctrl+Shift+Space) and choose the Widgets tab. The Layouts row is at the top.
- Each card is your screen in miniature, with your theme’s scene behind it. It shows where each panel would go. The dashed boxes are the parts of the scene a layout keeps clear.
- Click a card, or its Use this layout button.
- Changed your mind? Click Undo.
In edit mode, the tray’s Layouts… button lists them too. There, Ctrl+Z
undoes one, and Done keeps it. In a terminal, bromigos panels layouts lists them,
and bromigos panels layout apply homelab applies one.
Layouts fit any screen, from a 1366×768 laptop to a 4K or ultrawide monitor. On a small screen, panels come in smaller sizes. A layout never covers more than about a third of the screen, so you can still see your scene. When a panel doesn’t fit, or can’t show anything on your machine, the layout leaves it out and says why. For example, GITHUB needs you to be signed in, and LAB needs a homelab. Everything is the exception: it may cover more, and it tells you when it does.
Each theme has its own layout
Your scene is the point of your desktop, so each theme keeps the panels off its best parts. The Wick keeps its screens, TVs and window clear. Tidewell keeps the waterline, the lighthouse and the creatures’ water clear. Mire keeps the Sleeper and Hollis clear.
Your desktop remembers a layout for each theme. When you switch theme, your panels switch to the layout you last had on that theme. The first time, you get the layout made for it. The colour themes (Cinder, Deepvein, Highwind, Lowtown, Rime, Sunder, Wick · Tidewell and Wick · Mire) paint the Wick’s den in other colours, so they share the Wick’s layout. Switching between them leaves your panels alone.
To use one layout on every theme, run bromigos panels layout apply minimal --all-themes.
Save your own
Arrange the panels the way you like, then choose Save as layout… in the edit-mode tray. Or open Customize › Widgets and click New layout… beside Layouts. Enter a name and, optionally, a description, then save. The form captures the current arrangement on the screen it names. Your new layout joins the cards marked yours.
To update a saved layout, choose Save changes… on its card. The form names the layout that will be replaced with your current arrangement. Override… does the same for a ready-made preset, saving your own version. Packaged preset files stay available on disk. The theme’s own card offers Save as new….
Saving does not apply the selected card first. Use Use this layout, arrange the widgets, and then save changes if you want to start from that card. A new name that matches an existing layout is rejected; use its save or override action instead. These actions are also available from Settings › Widgets › Layouts.
From the terminal:
bromigos panels layout save "My desk"
bromigos panels layout save --replace my-desk
bromigos panels layout apply my-desk
The first command creates a layout, the second updates it, and the third puts it on
your desktop. Add --monitor <name> to choose a screen when saving.
Tidy up
Panels on top of each other? Click Tidy up in edit mode’s tray, in Customize’s
Layouts row, or in Settings › Widgets. You can also run bromigos panels tidy. Tidy
up moves your panels so none covers another. It keeps them in the same order, and keeps
them off the scene where it can. Undo puts them back.
When you switch on a panel and there’s no room left for it, bromigOS tells you: “No room for GPU: hide something or try a smaller size”. It never puts one panel on top of another.
Panels that fit what they show
Some panels show lists that grow and shrink, such as LAB, ALERTS and CI & PRs. These panels take the height their content needs. A layout gives LAB room for your whole lab, and ALERTS with four alerts is a short panel, not a big empty box. As the list changes, the panel’s frame follows it, inside the room it was given. It changes only now and then, so it doesn’t jump around.
When a panel has less room than its content needs, it shows less instead of cutting anything off. LAB, for example, shows “34/36 UP” and only the services that are down. Make it taller to see everything again.
Making a panel bigger
When you make a panel bigger, it stays where it is. Panels in its way move down or to the side. If they can’t, the panel moves to free space, never onto the scene’s screens or window. If there’s no room anywhere, nothing changes and bromigOS tells you: “No room to make LAB 900 tall here: move or hide something”.
Choose panels
The tray in edit mode, the Widgets tab of Customize and Settings › Widgets all show the widget gallery: every panel there is, on or off. Each one says what it shows, who made it and what it reads. Type in the search box, or pick a category, to find one.
Get more widgets, in Settings › Widgets, lists widgets other people made, from the bromigOS catalog. Each shows who made it, its licence and a link to its code. A widget is a small program, so Install… opens a terminal that tells you what it can do and asks before it installs. Uninstall removes it again.
To install a widget someone shared as a link, click Install from URL… in Settings › Widgets and paste the link. Settings shows what the widget reads and what it can do before anything is installed, and installs it only when you click Install.
Settings › Widgets also shows a small picture of where the panels sit. Its Monitor for every panel puts them all on one monitor.
You can also choose and place panels from a terminal:
bromigos panels # which panels are on, and where
bromigos panels edit # start edit mode on the desktop
bromigos panels show weather # turn one on
bromigos panels add weather # turn one on, in a free spot
bromigos panels hide connections # turn one off
bromigos panels move notes 514 16 # move one, in pixels from the top-left
bromigos panels size notes 470 400 # resize one: width and height in pixels
Media
MEDIA is a remote for the den TV: all three screens at once, what each is showing and where the sound comes from. Click a screen’s line to choose it, then use the buttons to change its channel, turn its sound on or off, watch it full screen, or open the channel guide. It comes in three sizes:
- compact: a line for each screen, and the buttons;
- wide: each screen with its poster and what’s next;
- large: what you were part-way through on your server, and what’s new, with posters.
Click something you were watching to open it in Jellyfin or Plex, which remember where you were.
Its Settings… make a TV channel without editing a file. Choose a source and a library, collection or playlist from your server, or paste a YouTube address. You can also choose the den screen, the order, and a folder to keep YouTube videos in. For every other channel, the form links to the channel guide.
Set up the weather
The WEATHER panel fetches nothing until you say where you are.
- Open Settings › Widgets.
- Under Weather, type your town in Place, and choose the Units.
- Under Panels, turn the weather panel on.
Or from a terminal:
bromigos panels weather place "San Diego"
bromigos panels weather units imperial
bromigos panels show weather
The forecast comes from Open-Meteo, a free weather service.
Calendar releases
CALENDAR can add tracked TV episodes and film releases to your calendar. Open its Settings… and turn on Your media server’s releases. Sonarr or Radarr must be connected in Your homelab.
The setting is media = true in ~/.config/bromigos/widgets/calendars.toml. It adds
releases without replacing your other calendars. For the whole workflow, see
Your media.
To export the releases as calendar files for another app:
bromigos lab media calendar tv > ~/Downloads/tv-releases.ics
bromigos lab media calendar movies > ~/Downloads/film-releases.ics
These are copies of the feed at that moment. Export again to update them. --past and
--future set how many days to include. The panel reads fresh releases by itself.
A panel’s own settings
Many panels have settings of their own, such as which calendars to show or which Discord server to watch. Click Settings… on the panel’s card, in edit mode’s tray or in Settings › Widgets. The panel changes as soon as you save.
From a terminal:
bromigos panels settings calendars # what it has, and the values now
bromigos panels set discord invite abc123 # change one
Panels that need an account
GITHUB, GITLAB, SPOTIFY and TWITCH show your own account, so they need you to sign in once. Open the panel’s Settings… and click Sign in.
- Connect the service, if asked. GitHub, gitlab.com and Twitch need nothing: bromigOS has its own apps for them. Spotify, and a GitLab or GitHub server of your own, need an app of your own. The form says where to make it and what to paste. You do this once per service, and every panel for that service shares it.
- Sign in. For GitHub, GitLab and Twitch, a short code appears. Type it on the page that opens, and approve. For Spotify, approve on Spotify’s page; the form finishes by itself.
The sign-in is kept in your login keyring, never in a file. Sign out forgets it.
If you use the gh command and you’re signed in to it, GITHUB uses that, and there’s
nothing to do. GITLAB can also take a personal access token: Paste a token….
Several accounts
You can sign in to more than one account of a service. For example, gitlab.com and your company’s own GitLab, GitHub and a GitHub Enterprise server, or two Twitch accounts. One panel shows them all.
- In the panel’s Settings…, click Add another account….
- Give it a short name, such as
work. For GitLab and GitHub, give its server’s address too, or leave it empty for the public site. - A server of your own needs its own app, so the form asks for its client ID. Then click Sign in, as for the first account.
With two accounts signed in, the panel merges their rows, newest first. Each row shows
which account it came from, such as gitlab.com or work. Each account has a tick box
in the form: untick it to leave that account out of this panel. Remove… signs an
account out and forgets it, after asking. SPOTIFY shows one account at a time: the first
one ticked.
From a terminal:
bromigos account login twitch
bromigos account status twitch
bromigos account logout twitch
bromigos account configure spotify client_id=YOUR_CLIENT_ID # services without a bromigOS app
bromigos account add gitlab work base=https://git.example.org # another account, on its own server
bromigos account configure gitlab --as work client_id=YOUR_APP_ID
bromigos account login gitlab --as work
bromigos account list # every account, and who's signed in
bromigos account remove gitlab work
The developer docs’ widgets.md say, for each panel, where to make the app.
Panels of your own
- For your homelab: a gauge, a chart, a status light or a table needs no code. You describe it in a settings file. See Your own panels.
- With code: a panel can be a small Python file in
~/.config/bromigos/plugins/widgets/, or an extension. Make your own widget walks you through it. The developer docs’ plugins.md shows how.
Where the settings go
Your layout is ~/.config/bromigos/widgets/layout.json, and the weather’s place is in
~/.config/bromigos/weather.toml. A panel’s own settings are in
~/.config/bromigos/widgets/<name>.toml, and the services’ client IDs in
~/.config/bromigos/accounts.toml. Settings writes them all for you. If you edit them by hand,
run bromigos widgets reload.
Holograms
Holograms are glowing 3D views that open over your windows. There are two kinds:
- Decks: full-screen views of your machine, your history, your projects or your homelab, drawn from live readings.
- The hologram gallery: 3D models you can turn, take apart and look inside.
Each hologram opens with a key, and the same key closes it. Esc closes any of them.
The decks
One deck shows at a time. Opening another closes the one that’s showing. Press Tab in a deck to move to the next one. The Drift map isn’t in this cycle.
| Deck | Key | What it shows |
|---|---|---|
| Holo deck | Super+H | This machine: its readings, and its 3D model. |
| Timeline | Super+T | The last 72 hours of readings. |
| Drift map | Super+M | A star chart of the bromigOS story’s places. |
| Swarm | Super+Shift+S | Your code projects, and your coding agents. |
| Lab deck | Super+Shift+H | Your homelab as a server rack. |
| Mind | none | What VECTOR remembers. |
| Ops theater | none | Your code going from a push to running in your homelab. |
| Network map | none | Your home network. |
The last four need a connected homelab.
Decks without a key open from the menu’s HOLOGRAMS group, from the app launcher, or with Tab from another deck. You can give any of them a key: see Your own shortcuts.
From a terminal, bromigos live and the deck’s name opens or closes it, such as
bromigos live timeline. bromigos-live decks lists every deck.
Holo deck
Your machine at a glance: rings for the processor, graphics card and memory, your homelab’s machines if you have one, and 3D models from the gallery.
- Press N for your field notes.
- Press [ and ] to change the model.
- Press O to open the model in the gallery.
Timeline
Your machine’s readings, minute by minute, as a ribbon you can scroll back through: processor, graphics, memory, network, and your homelab’s readings and alerts. The panel on the right shows the values where your pointer is, and the tallest spikes.
- Move the mouse, or press ← and →, to move through time.
- Press 1, 2 or 3 to show 6 hours, 24 hours or 72 hours.
The timeline records while you’re logged in, one reading a minute. It keeps 72 hours.
Drift map
A star chart of the places in the bromigOS story, with your homelab’s services shown as relays. It’s for exploring. You don’t need it to use the desktop.
Swarm
Your code projects as planets, and your coding agents as ships. Each ship waits at the project its agent works in. When an agent needs you, its ship turns to face you, with an amber light.
A bigger planet has had more commits in the last two weeks. An amber halo means changes
you haven’t committed or pushed. The Swarm finds projects in folders named like
~/github.com/<organisation>/<project>.
Lab deck
Your homelab as a server rack. Each part lights up with its readings: red for a machine that’s down, a slow pulse while a graphics card is working. Your machines orbit the rack, dials along the bottom show the essentials, and the queue of AI jobs sits below them.
Hover over anything to see what it is. Click a part, a machine, a dial or a card to see more. See The lab console for the same information in a terminal.
Mind, Ops theater and Network map
- Mind shows what VECTOR remembers, and a knowledge base, as a constellation.
- Ops theater follows your code from a push, through its tests, to running in your homelab, with VECTOR’s tasks alongside.
- Network map draws your home network from your homelab’s readings: the machines, the traffic between them, and how quickly each one answers.
Zoom and turn the maps
Mind, the Swarm, the Network map and the Drift map can zoom:
| To | Do this |
|---|---|
| zoom in or out | Scroll, or press + and -. |
| move around while zoomed in | Drag. |
| turn the view | Drag. Once zoomed in, Shift and drag, or drag with the right mouse button. |
| go back to the start | Double-click empty space, or press 0. |
Zooming in shows more detail. Labels appear when there’s room for them.
The hologram gallery
The gallery holds every 3D model on your machine: VECTOR’s, the ones he made for you, and each world’s. Open it with Super+O.
Models are grouped in shelves: one for VECTOR, one for the Drift, and one for each world. The world you’re in comes first, and each world’s shelf is drawn in its colours.
| To | Do this |
|---|---|
| turn the model | Drag it. |
| take it apart | Scroll, or press Space. |
| look at one part on its own | Click the part. |
| go to the next or previous model | → or ← |
| go to the next or previous shelf | Page Down or Page Up |
| scan the model | S |
| put it back as it was | R |
| close the gallery | Esc |
Hover over a model’s name to read what it is. To add models, ask VECTOR for a hologram.
Other things on the background
- The quick-launch ring. Press Super+A for a ring of shortcuts: a terminal, a browser, and the FIELD NOTES panel, ready to type in.
- The scanner. Hold Super+Z to see a drawing of your machine’s hardware with live readings. Press Super+X to keep it showing.
- The screensaver. It starts when you leave the computer. To see it now, open the menu’s TOGGLE group and choose Screensaver. See Idle and lock.
Settings
Settings is one window for the desktop’s settings: displays, sound, network, the theme, VECTOR and the rest. It takes your theme’s colours.
Open Settings
- Press Super+, (Super and the comma key).
- Or click the gear on the bar.
- Or open the menu (Super+Space) and choose SETUP › Settings….
- Or run
bromigos settingsin a terminal. Add a page’s name to open it, such asbromigos settings sound.
Find a setting
Start typing anywhere in the window, or press Ctrl+F. Settings finds
a setting by its name or by what you’d call it: wifi, mic, do not disturb,
24 hour.
- Press Enter to open the first result.
- Press ↓ to move through the results.
- Press Esc to clear the search.
The pages are also listed on the left, in groups: System, Desktop, VECTOR & AI, Lab, Personal and About.
How changes work
- Changes apply at once. A note at the bottom says what changed. Choose Undo there, or press Ctrl+Z, to take it back.
- Displays are the exception. Their changes wait until you choose Apply.
- Reset to defaults, at the top of a page, puts that page back to bromigOS’s settings. It asks first. On some pages, such as Date & time and Shortcuts, you can undo it. On others you can’t. Where a page has nothing to reset, such as Network, the button is greyed out.
- Some changes need your password. Updating and changing the update channel open a terminal that shows the command it runs, and asks there. A few others, such as what the lid does, ask in a password window.
- Hover over anything to see what it is and what it does. The ⋯ at the end of a row shows the file it changes and the command it runs.
Keys in Settings
| To | Press |
|---|---|
| search | Start typing, or Ctrl+F |
| go to the previous or next page | Ctrl+Page Up or Ctrl+Page Down |
| jump to a group | Ctrl+1 to Ctrl+6 |
| undo the last change | Ctrl+Z |
| open this manual on the page you’re on | F1 |
| close Settings | Ctrl+W |
The pages
Each section below is one page. The command in brackets does the same from a terminal.
These pages have chapters of their own:
- Idle & lock: see Idle and lock.
- Theme: see Themes and worlds.
- Shortcuts: see Your own shortcuts.
- Accessibility: see Accessibility.
- Lab: see The lab console.
- Playing games: see Playing games. It sets up Steam, says whether games
are ready, fixes what isn’t, and turns game mode on. (
bromigos game)
Displays
Your monitors: resolution, refresh rate, scale, which way up each one is, whether it’s on, and which is the primary. The primary monitor is where the background, the panels and VECTOR appear.
To change your displays:
- Drag the monitors in the picture to match where they sit on your desk.
- Click a monitor to choose it, and set its resolution, refresh rate and scale. The scale that suits its size is marked.
- Choose Apply.
- bromigOS asks “Keep these display settings?” Choose Keep within 15 seconds.
If a screen goes dark and you can’t answer, the old settings come back by themselves after
15 seconds. Reset to defaults puts every monitor back to what it prefers.
(bromigos display)
Graphics
Every graphics card in your computer, and what each one is for: drawing the Desktop, running Games and heavy apps, or Virtual machines. Choose a use with the buttons on the card’s Use for row. Each use is Automatic until you choose.
A new desktop card is tried first. Log out and back in on it, then choose Keep. If the
screen stays dark, restart the computer and the old card comes back by itself.
Choose what each card is for explains each
use. (bromigos hw graphics)
Sound
Choose your speakers or headphones and your microphone, and set their volume. Each app that’s playing has its own volume, and you can send it to different speakers.
Below that are the desktop’s own sounds: Mute everything, which mutes the theme’s
sounds and VECTOR’s voice together, and the theme’s sound cues and their volume.
(bromigos sound)
Network
- Wi-Fi: turn it on or off, and join a network. A lock means the network needs a password: you type it once, and bromigOS remembers it.
- Join another network… joins a hidden network by its name.
- Saved networks: choose whether each one joins by itself, or forget it.
- Wired and VPN: your network ports, and a switch for each VPN.
- More settings opens the full network editor, for fixed addresses, proxies, VPN profiles and company networks.
(bromigos net)
Bluetooth
Turn Bluetooth on or off, make this computer visible to devices nearby, and choose whether headphones take over the sound when they connect.
My devices shows a card for each device you’ve paired, with its battery. Click one for its page:
- Connect or Disconnect.
- A controller: press its buttons and move its sticks to see them light up, and Rumble.
- Headphones: Hi-fi or Headset + mic, the codec, make them the Sound output or the Microphone, and a Microphone test.
- Rename it, turn Auto-reconnect on or off, Re-pair it, or Forget it.
A controller on Linux’s basic driver shows Enable Xbox controller support, which installs xpadneo for rumble and the battery (Pair a controller).
To pair a new device, choose Pair a new device…:
- Choose what you’re pairing. Settings says how to put that kind in pairing mode.
- Do that. Settings scans, and the device appears in the list.
- Choose Pair. If the device shows or asks for a code, Settings asks you right there.
- Ready: it’s paired, connected, and reconnects by itself next time.
Troubleshooting resets the adapter, re-pairs a device, and lists what went wrong
lately. Bluetooth covers the bar’s icon, its panel and the terminal
version. (bromigos bluetooth)
Power
- Power profile: Power saver, Balanced or Performance.
- Battery: the charge, the time left, and the battery’s health. Other devices’ batteries show here too.
- The lid: what closing a laptop’s lid does, on battery, plugged in, and docked. This setting is for the whole machine, so it asks for your password.
- Suspend now puts the machine to sleep.
When the machine sleeps by itself is set on the Idle & lock page. (bromigos power)
Keyboard and input
- Keyboard: the layout and its variant, a second layout and the key that switches between them, how fast keys repeat (with a box to try it), what Caps Lock does, and whether Num Lock is on at start.
- Mouse: speed, acceleration, natural scrolling, left-handed buttons, scroll speed, and whether the window under the pointer becomes the active one.
- Touchpad: tap to click, natural scrolling, turning the touchpad off while you type, how clicking works, and scroll speed.
(bromigos setup input)
Peripherals
For a keyboard with macro keys, a dial or lighting, or an Xbox controller’s driver: turn
its module on or off, choose what
its lighting follows, VECTOR or the theme, and see what each key and the dial do. See
Keyboards and peripherals. (bromigos peripheral)
Date and time
Turn network time on or off, choose your time zone, and choose how the bar’s clock looks:
24-hour, with seconds, with the date. (bromigos clock)
Updates and recovery
- Channel: which update channel you follow.
- Update now, the last update, and what an update would do now.
- Snapshots and rolling back: whether this machine can undo updates, and Roll back… to undo one.
- Boot menu: whether the boot menu wears your theme.
These need your password, so each opens a terminal that shows its command. See Updating and rolling back.
Live layer and holograms
The animated background on or off, each of its animations, the theme’s world and its sounds, what the screensaver shows (and Try it to see it now), the spoken codec calls, how smoothly it draws, and the holograms’ keys. Turning a deck’s key off frees the key for something else. See Themes and worlds and Holograms.
Widgets
Which panels show, a small picture of where they sit, the monitor they’re
on, and the weather panel’s place and units. (bromigos panels)
Notifications
- Do not disturb: nothing shows while it’s on. Notifications wait until you turn it off.
- Where they appear: which corner of the screen.
- How long they stay, for low, normal and critical notifications.
- Apps: for each app that has sent a notification, choose Show, Quiet or Hide.
- Send a test, and clear the history.
(bromigos notifications)
Default apps
Which app opens links, folders, text files, Markdown notes, pictures, videos, music, PDFs
and email. Also
the terminal and file manager that bromigOS’s keys open, and your
web apps. (bromigos defaults)
Startup
What starts when you log in: bromigOS’s own programs (listed, so you know), yours (add an
app or a command, or remove one), and which floating windows go back where you left them.
See Windows and workspaces.
(bromigos startup)
Extensions
The extensions you have, with a switch to turn each on or off, the updates waiting, and the catalog to find more. A theme installs at once. Anything that runs code, and every update, opens a terminal that shows what it will do and asks you there.
VECTOR
- His brain: the model he thinks with, and where it runs.
- His voice: mute it, or choose a voice. Turn conversation mode on or off.
- His keys.
- Emergency switch: turns him off at once. See VECTOR.
- What he remembers: export it, or clear his history or his memory. Undo brings them back.
Creation targets
Each kind of AI work has a row, such as pictures, video, 3D models, and VECTOR’s voice, hearing and brain. Each row shows what that work uses now. Choose where it runs first: your homelab, this machine or the cloud. The cloud asks first, because it costs money. See Creating with AI.
Account
Your name, full name, pronouns and other names, what VECTOR calls you, and your picture.
If you keep your settings in dotfiles you share, the
page tells you to keep private values in the
private overlay. (bromigos profile, bromigos avatar)
Bromigos account shows whether this computer is signed in to your
Bromigos account, and as whom. It’s optional. Sign in… and
Sign in with SSH key… run the sign-in in a terminal. Sign out asks first.
(bromigos login, bromigos whoami, bromigos logout)
About
The bromigOS version and channel, the last update, this computer’s hardware, and the
packages with their versions and licences. Copy system info copies all of it, ready to
paste into a bug report. (bromigos about)
The manual opens this manual. It’s installed on your computer, so it matches your version of bromigOS and works without a network. F1 opens it on the page you’re on.
Add your own page
Packages, extensions and you can add pages to Settings. A page of your own is a small
Python file in ~/.config/bromigos/plugins/settings/. The developer docs’
settings.md shows
one.
The Prompt row in Default apps chooses mehshell, Starship or a plain zsh prompt. See Shell and terminal for existing installs.
Idle and lock
When you leave the computer, bromigOS waits, then starts the screensaver, locks the screen and turns the displays off. This page shows how to change those times, how to stop the screen locking, and how to keep the machine awake for a film or a long download.
What happens when you leave
| After | What happens | To come back |
|---|---|---|
| 8 minutes | The screensaver starts: the Drift, full screen, with the time and the burn-in. | Press any key or move the mouse. |
| 10 minutes | The screen locks. | Type your password. |
| 15 minutes | The displays turn off. | Press any key or move the mouse. |
| never | The machine suspends. This step is off until you turn it on. |
The turning emblem has the same smooth circular edge as the login and unlock animation.
The screen also locks whenever the machine goes to sleep: when it suspends, when you close a laptop’s lid, or when you choose Suspend in the power menu.
To lock the screen yourself at any time, press Super+L.
Change the times
- Open Settings › Idle & lock (Super+,).
- Each step has a switch and a slider. Turn a step off, or slide it to a new time.
The line at the top of the page says what will happen, in plain words. Each change applies at once. To take one back, choose Undo in the note at the bottom. If a combination looks odd, such as the screensaver set to start after the lock, the page says so, but it still does what you asked.
Or from a terminal:
bromigos idle # what happens now, step by step
bromigos idle set screensaver 5 # the screensaver after 5 minutes
bromigos idle set lock off # never lock when idle
bromigos idle set displays 30 # displays off after 30 minutes
bromigos idle set suspend 1h # suspend after an hour
bromigos idle undo # take back the last change
Turn off the lock, keep the screensaver
- Open Settings › Idle & lock.
- Choose the Screensaver only preset.
Now the screensaver starts at its time, and nothing else happens: the screen doesn’t lock, the displays stay on, and the machine doesn’t suspend. Any key ends the screensaver. The eye on the bar shows NO LOCK while this is on.
To go back, choose the Default preset.
From a terminal: bromigos idle preset screensaver-only, and
bromigos idle preset default to go back.
The presets
| Preset | What it does |
|---|---|
| Default | bromigOS’s own times, as above. |
| Screensaver only | The screensaver, and nothing else. Nothing locks, the displays stay on, and the machine doesn’t suspend. |
| Presentation | Nothing happens when you leave: no screensaver, no lock, no displays off, no suspend. |
Stay awake
For a film or a long download, you can stop everything for a while. When the time is up, everything goes back to how it was.
- On the bar: click the eye to stay awake for an hour. Click it again to stop. Middle-click it to stay awake until you stop it.
- In Settings: open Idle & lock, and under Stay awake choose 1 h, 2 h or Until off.
- In the menu: choose TOGGLE › Stay awake.
- From a terminal:
bromigos idle stay-awake 2h, orbromigos idle stay-awake until-off.bromigos idle offstops it.
While you’re staying awake, the eye on the bar becomes a cup, with the time left.
The eye on the bar
The eye, on the right of the bar before VECTOR’s power mark, shows what will happen when you leave.
| It looks | It means |
|---|---|
| dim | The usual times apply. |
| lit, with NO LOCK | The Screensaver only preset is on. |
| lit, with NO IDLE | The Presentation preset is on. |
| a cup, with the time left | You’re staying awake. |
| red | The service that watches for idle isn’t running. |
Hover over it to see what will happen. Right-click it to open the settings.
Your settings file
Your idle settings are in ~/.config/bromigos/idle.toml. It holds only what you changed,
and updates don’t overwrite it. If you edit it by hand, run bromigos idle apply to use it.
To run a command of your own after some idle time, add it to
~/.config/hypr/hypridle.conf, after its source line.
Your own shortcuts
You can change any of bromigOS’s keys, and give a key to anything: a menu item, an app, a web app or a command of your own. You don’t need to edit any files.
Change a key
- Open Settings › Shortcuts.
- Under Every key, open the section the key is in, such as Launch, and choose Change… next to the key.
- A small window opens. Press the new keys. The window shows them while you hold them.
- Let go. The new key is saved.
In that window:
| To | Press |
|---|---|
| save at once, after you let go | Enter |
| clear the keys and start again | Backspace |
| cancel | Esc |
If the keys you pressed are already in use, bromigOS says what uses them. You can swap the two keys, take the keys from the other action, or pick different keys.
Give a key to something new
- Open Settings › Shortcuts and choose Bind… next to Bind something new. Or
open the menu and choose SETUP › Shortcuts…, or run
bromigos keysin a terminal. - Choose what the key should do: one of bromigOS’s actions, any item in the menu, an app, a web app, or a command you type.
- Press the new keys, and let go.
Your shortcuts show in the SHORTCUTS panel (Super+K), under YOURS.
Remove or reset keys
From the same places you can change or remove one of your shortcuts, or put one of bromigOS’s keys back as it was. To put every key back to bromigOS’s own and remove your shortcuts, choose Reset… next to Reset to bromigOS’s keys in Settings › Shortcuts, or run:
bromigos keys reset
bromigos keys undo puts back what your last change replaced.
From a terminal
bromigos keys # the picker
bromigos keys bind "SUPER + ALT + G" --webapp gmail # a key for a web app
bromigos keys bind "SUPER + ALT + T" --exec kitty # a key for a command
bromigos keys check "SUPER + ALT + T" # what a key does now
bromigos keys list # your shortcuts
bromigos keys unbind "SUPER + ALT + T" # take a key off
Write keys in capitals, with a plus sign and a space on each side, as in
"SUPER + SHIFT + K".
bromigOS checks every change with Hyprland before it uses it. If anything goes wrong, your files are put back as they were.
Use Super for the window keys
The keys that move and arrange windows use Alt. To move one of them to Super, change it in Settings › Shortcuts, as above.
One setting moves them all to Super. It moves every key that uses Alt, not only the window keys: the launcher, the terminal and screenshots too.
Many of bromigOS’s own keys already use Super with the same letters. When a window key takes one of them, bromigOS moves its own key to Alt, so no key does two things. For example, Super+L moves to the window on the right, and the lock moves to Alt+L. About a dozen keys move this way, including the SHORTCUTS panel itself, which moves to Alt+K.
To move them all:
-
Run
bromigos setup configand choose your Hyprland file. It opens~/.config/hypr/hyprland.lua, and reloads the desktop safely when you close the editor. -
In the
bromigos = { … }table at the top, change the line-- mod = "ALT",to:mod = "SUPER", -
Save and close the file.
-
Press Alt+K to open the SHORTCUTS panel and see where every key is now.
bromigos keys list --alllists them in a terminal.
The Keys page lists bromigOS’s keys as they are with Alt.
Add keys by hand
If you prefer editing files, add keys to your ~/.config/hypr/hyprland.lua, after the line
that loads bromigOS’s defaults. Use the same helper bromigOS uses, so the SHORTCUTS panel
lists your keys:
local K = require("bromigos.keys")
K.exec("SUPER + SHIFT + W", "firefox")
To use one of bromigOS’s keys for something else, list it in the unbind setting first,
then bind it yourself:
bromigos = {
unbind = { "SUPER + E" },
}
bromigos setup keybindings lists every key in a menu. Its EDIT item opens this file, and
reloads the desktop safely afterwards.
Your Bromigos account
A Bromigos account is your sign-in for Bromigos services. On bromigOS it’s optional. Everything on the desktop works without one. Sign in when you want bromigOS to use your account, for example to put the SSH keys on your account on a new lab box.
You make and manage the account on the website, account.bromigos.org. bromigOS keeps the sign-in in your keyring, the same place it keeps your other passwords. It’s never written to a file.
Sign in
bromigos login
It shows a web address and a short code:
To sign in to your Bromigos account, open this page on any device:
https://auth.bromigos.org/oauth2/device/verify
and enter this code:
WDJBMJHT
Or point your phone's camera at this QR code. It opens the page with the code filled in:
(a QR code)
The code works for 10 minutes.
Press Enter to open it in your browser, or approve it from another device. Waiting… (Ctrl+C stops)
Open the page on this computer or on your phone, sign in there, and enter the code. The terminal says who you’re signed in as once you approve it.
To use your phone, point its camera at the QR code. It opens the same page with the code
already filled in, so you only sign in and approve. The QR code shows when the terminal
is big enough for all of it: about 45 columns and 30 lines. In a smaller window, make it
bigger and run bromigos login again, or type the address and the code. There’s no QR
code when the output goes to a file or a pipe, or when NO_COLOR is set, because the
code needs its black and white to scan.
On your desktop, pressing Enter opens the page in your browser with the code filled in.
Over SSH, or with --no-browser, bromigOS only prints the address and the code, and
never opens a browser.
You can also sign in from Settings. Open Settings › Account, and choose Sign in… under Bromigos account. It runs the same sign-in in a terminal.
Sign in with an SSH key
If your account has your SSH public key, you can sign in with that key instead of a browser. This suits a computer you reach over SSH, or one with no browser.
bromigos login --ssh
bromigOS looks for keys in ssh-agent and in ~/.ssh. If it finds more than one, it asks
which to use. To choose one yourself, name it:
bromigos login --ssh --key ~/.ssh/id_ed25519
The key signs a one-time challenge from the website, so the key itself never leaves your computer. A key in ssh-agent signs there. A key file with a passphrase asks for it, and a security key, such as a YubiKey, asks for a touch.
If your account doesn’t have that key, bromigOS says so and prints its public key. Add it
on the website, at account.bromigos.org › SSH keys, then run bromigos login --ssh again.
Use a personal access token
A personal access token lets a script or another computer use your account without
signing in. Tokens start with bmg_pat_. You make them on the website. bromigOS can’t
make one for you. To see the steps, run:
bromigos account token
To store a token on this computer, run this and paste the token when it asks:
bromigos login --with-token
Or pipe it in, as in bromigos login --with-token < token.txt. bromigOS keeps the token
in your keyring and never prints it.
For one script, or a computer without a keyring, set BROMIGOS_TOKEN instead. While it’s
set, bromigOS uses it in place of a stored sign-in.
Treat a token like a password. Delete it on the website when you no longer need it.
See who’s signed in
bromigos whoami
It says which account this computer is signed in to, and how: with a code on the website, an SSH key or a token. Settings › Account shows the same.
Sign out
bromigos logout
This computer forgets the sign-in, and tells the website to end it. Your account, its SSH
keys and its tokens stay as they are. If BROMIGOS_TOKEN is set, unset it too.
Staying signed in
A sign-in lasts until you sign out. bromigOS renews it in the background when it’s used, so
you don’t sign in again each day. If you end the sign-in on the website, the next thing
that uses your account says so. Run bromigos login again.
Your keyring
Your keyring is where bromigOS keeps sign-ins and passwords. It’s encrypted with your login password. bromigOS’s keyring is oo7. It starts with your session, and your login password unlocks it, so nothing asks you for a password. Other apps that keep passwords in a keyring use the same one, such as web browsers and Git.
To check it, run:
bromigos keyring status
It says whether the keyring is running and unlocked, and whether your login unlocks it. When something needs fixing, it says what to run.
Let your login unlock it
bromigos keyring setup makes your login unlock the keyring. bromigos update runs it
once for you, and asks for your password through sudo. It adds oo7’s lines to these login
settings in /etc/pam.d:
login, the text console login;sddm, the login screen;passwd, so a new password carries over to the keyring.
Lines that are already there stay as they are. The setup also turns off KWallet’s own keyring service, so it can’t take oo7’s place. KWallet itself keeps working.
Sign out and in again afterwards. From then on, your login unlocks the keyring.
If sign-in says there’s no keyring
bromigos login checks the keyring before it shows a code, so you never approve a
sign-in that can’t be kept. If it says No keyring is running, install oo7 from
bromigOS’s repository, set it up, then sign out and in again:
sudo pacman -S bromigos/oo7
bromigos keyring setup
bromigos update installs oo7 too, because the desktop needs it.
If you used gnome-keyring before, pacman asks whether to remove it. Answer y, because oo7 takes its place. The next time you sign in, oo7 moves your saved passwords over.
If it says Your keyring is locked, the keyring is waiting for its password and there’s no desktop here to ask for it. This happens when you sign in some other way, such as over SSH. On your desktop, apps show a password window instead. Type your login password there.
What uses your account
- Setting up a lab offers to put the SSH keys on your account on the new box.
Use another account server
For testing, bromigOS can sign in to another server. Set these in the environment, or in
~/.config/bromigos/accounts.toml under [bromigos] without the BROMIGOS_ prefix, in
lower case:
| Setting | What it is |
|---|---|
BROMIGOS_ACCOUNT_URL (base) | The account website. The default is https://account.bromigos.org |
BROMIGOS_AUTH_URL (issuer) | The sign-in server. The default is https://auth.bromigos.org |
BROMIGOS_CLIENT_ID (client_id) | The app bromigOS signs in as. The default is bromigos-cli |
BROMIGOS_SCOPES (scopes) | What the sign-in asks to do, with spaces between |
Shell and terminal
bromigOS opens kitty as its terminal and provides a zsh shell setup. The prompt shows where you are and, in a project, its Git branch and language version.
Choose a prompt
Open Settings → Default apps and change Prompt, or run:
bromigos shell prompt mehshell
The choices are mehshell, starship and none. Open a new zsh shell after
changing the choice. none gives you a plain prompt with your current folder.
Starship needs its package first:
sudo pacman -S starship
bromigos shell prompt starship
New installs use mehshell. Existing installs keep their startup files and prompt.
To use the bromigOS choice on an existing install, replace your prompt engine’s
initialisation line in ~/.zshrc with this line:
source /usr/share/bromigos/default/zsh/bromigos.zsh
Source it once. Remove any separate mehshell or Starship initialisation first. It also loads bromigOS’s login banner and folder shortcuts.
The choice is saved in ~/.config/bromigos/shell.toml. Your prompt’s other options
stay in its own config. mehshell uses ~/.config/mehshell/config.
On Linux text consoles, mehshell uses text labels, simple prompt marks and basic
colours. Its startup cache is separate from the desktop’s, so desktop icons do not
appear during console login. Your desktop style and icon settings stay saved.
Basic terminals (TERM=dumb) receive a prompt without colour formatting.
Clipboard in persistent terminals
Herdr, tmux and GNU Screen can keep running when you leave a text console or restart the desktop. Their old panes may lack the display settings that apps need to paste images. The bromigOS zsh setup recovers those settings at shell startup and before commands run. It discovers the current Wayland socket and, when present, the matching Xwayland display. No display number is hard-coded.
This applies to new commands, including Codex and Claude Code. An already-running app keeps its original environment; exit it and resume its conversation after loading the updated shell setup:
source /usr/share/bromigos/default/zsh/bromigos.zsh
Working display connections, including nested desktops, are preserved. SSH sessions
and non-interactive shells are left alone. No clipboard contents are read by the hook.
Set BROMIGOS_SESSION_REFRESH=off before sourcing the setup to disable recovery.
Configure and check mehshell
Preview the current prompt at the width of a split terminal:
bromigos shell preview --width 40
bromigos shell preview --style rainbow --width 80
Preview changes no settings. To save a style or brand choice:
bromigos shell configure style lean
bromigos shell configure brand bromigos
Styles are lean, classic and rainbow. Brand choices are auto, bromigos,
os and none. Auto shows the bromigOS text badge on bromigOS and the OS icon
elsewhere. Text consoles use plain text. These commands configure mehshell without
switching your selected prompt engine. Comments and theme colours are preserved.
The prompt adapts to narrow windows. It shortens paths and removes optional details
before dropping your current folder or session identity. Git shows changed file
counts, ahead/behind counts, conflicts and active operations. wt: identifies a
linked worktree. status? means Git could not be read within the prompt’s time or
output limit; upstream? means the comparison is unavailable. Counts use local
information and never trigger a fetch.
SSH sessions show the user and host; root shows ROOT. A failed command shows a red
exit:N, where N is its exit code. This reports a command run in the current shell.
Startup checks and the cached prompt do not carry an old failure into a new terminal.
Pressing Enter on an empty line or Ctrl+C while editing clears the status. Interrupting
a running command with Ctrl+C normally returns code 130 and shows a grey interrupted
label.
A small GAME label reflects the local game-mode record. Turn off session, command
status or game-mode labels with bromigos shell configure session false, status false
or game false, respectively. All indicators use local information.
Check configuration and terminal fallback, or measure slow local prompt segments:
bromigos shell doctor
bromigos shell doctor --timings
--json gives structured output. The doctor reports configuration issues without
printing their values. It does not test the installed font’s glyph coverage or
inspect your running shell’s hooks. It never queries your lab or prints credentials.
Style and segment changes appear at the next prompt; open a new shell after changing
hook options or updating mehshell. To load updated hooks in the current zsh shell, run:
eval "$(mehshell init zsh)"
Reloading mehshell keeps one copy of its hooks.
Match the theme
mehshell follows every bromigOS theme. A theme change updates its colours, and its next prompt reads them automatically. Your segment and style options stay in place. Restart zsh after changing instant prompt, transient prompt or vi mode options in mehshell’s config.
Install mehshell
The signed bromigOS package repository at pkgs.bromigos.org includes mehshell. Once that repository is configured, run:
sudo pacman -S mehshell
Other systems can use the installation instructions in mehshell’s repository.
Make text consoles readable
The text console you reach with Ctrl+Alt+F3 has its own font, separate from kitty. Check its saved setting, then choose a size:
bromigos console status
sudo bromigos console font medium
Choose small, medium or large for Terminus glyphs 16, 24 or 32 pixels tall.
sudo bromigos console font default removes the saved font choice.
The setting takes effect after reboot. The command keeps your keyboard layout and
other console settings, and leaves the running console alone.
The bromigos-settings package includes Terminus. On a core-only installation,
install it first with sudo pacman -S terminus-font. Text consoles support fewer
symbols than a graphical terminal; changing the size does not add Nerd Font icons.
The early boot or disk-unlock screen may still use a font stored in the initramfs
until that image is rebuilt separately. This command does not rebuild it.
A vconsole.font kernel option also takes precedence over the saved setting.
If you have custom FONT_MAP or FONT_UNIMAP settings, review them before choosing
a Terminus size; the command refuses to combine them. default preserves them.
Text console login
Text consoles show a green bromigOS banner above the usual login prompt. Sign in with your normal username and password. The password stays hidden as you type.
+------------------------------------------------------+
| bromigOS TEXT CONSOLE |
+------------------------------------------------------+
Sign in with your username and password.
After signing in:
bromigos console status Check the console font
bromigos power menu Restart or shut down
The banner uses ordinary text characters, so it works with the console’s font. If the text is too small, see Make text consoles readable.
After signing in, bromigos power menu opens a keyboard menu for restarting or
shutting down. It asks you to confirm the selected action.
Your password also unlocks your keyring, where bromigOS keeps your sign-ins. So a desktop you start from the console doesn’t ask for it again. See Your keyring.
The bromigos-settings package supplies the banner. It appears the next time the
console login starts, including after a reboot. Your existing issue message may
also appear above it. A custom getty configuration can hide or replace issue
messages.
Power menu
Open the keyboard menu from a terminal or a Linux text console:
bromigos power menu
Choose Suspend, Restart or Shut down with the arrow keys, then press Enter. Each action opens a confirmation with Cancel selected. Move to the action and press Enter to proceed. Escape goes back or closes the menu. The keys j/k move through choices; h/l select the confirmation buttons. Tab also moves between choices.
Try the menu without changing the machine’s power state:
bromigos power menu --preview
The menu uses symbols supported by text-console fonts. If the terminal becomes too small, action keys stop working until it is large enough again. Escape still closes it. Normal system permissions and applications’ shutdown inhibitors apply. A refused action reports an error after restoring your terminal.
On the desktop, Alt+Shift+E opens the existing graphical power menu. Both menus request the normal system shutdown or restart. The Plymouth splash provides the closing visuals when graphical splash support is enabled.
Playing games
Install Steam, then press Play. bromigOS keeps everything a game needs to start ready by itself, and tells you only when something needs you.
Steam and Proton
Steam runs Windows games through Proton, a compatibility layer built on Wine. You don’t need to know how Proton works: bromigOS chooses a good one, keeps it current and repairs what would stop a game from starting.
Get started
- Open Settings › Playing games and press Set up Steam. A terminal opens and asks for your password once. It installs Steam, GameMode, and the graphics drivers games need for the graphics cards in this computer.
- Log out and back in.
- Start Steam, sign in, install a game and press Play.
The first time Steam starts, bromigOS downloads the newest GE-Proton in the background. When you quit Steam, it makes it the Proton every game uses. GE-Proton is a community build of Proton with extra fixes for games and video. It’s checked against the checksum its makers publish before it’s installed.
What bromigOS does for you
After every bromigos update, and each time you quit Steam, bromigOS:
- installs the newest GE-Proton, and makes it the default when the default is missing or an older GE-Proton;
- points a game set to a Proton that isn’t installed any more back at one that is;
- puts the setting that lets Steam install its own runtimes back to Steam’s own value;
- moves a broken Steam Linux Runtime aside, so Steam installs a fresh one the next time you press Play;
- moves old GE-Proton versions that no game uses aside, keeping the newest two.
It never changes Steam’s files while Steam is open, because Steam would write its own settings back when it quits. It never starts or stops Steam. Everything it changes can be undone. Steam’s settings file is copied first, and anything it moves aside is kept for 14 days.
Your choices stay. If you picked another Proton as the default, such as Valve’s Proton Experimental, bromigOS keeps it. A game you set to a Proton that’s installed keeps it too.
Is everything ready?
Open Settings › Playing games. The top of the page says Games are ready, or lists what needs you, each with what to do. Hover over anything on the page to see what it is and does. The page also shows which Proton your games use.
Things bromigOS fixes by itself are listed with when it will fix them. To fix them now, close Steam and press Fix. If a leftover file from an older bromigOS set-up still changes your login screen, Fix asks for your password to remove it. Updates remove those files too.
When something needs you, such as a setting outside your home folder, you get one notification that says so. You get it once, not every time you quit Steam.
DLSS on NVIDIA
DLSS and Reflex need NVIDIA’s NVAPI, which Proton leaves off unless asked. On NVIDIA’s
own driver, bromigOS turns it on for your session with PROTON_ENABLE_NVAPI=1. You need
nothing per game.
To swap a game’s DLSS for the newest version Proton has, add this to the game’s Properties › General › Launch Options:
PROTON_DLSS_UPGRADE=1 %command%
Use it per game. Some games check their DLSS files and refuse to start when they change.
With two graphics cards, a game may start on the wrong one. Then DLSS isn’t there and the game may crash. To keep games on one card, choose Games and heavy apps on it in Settings › Graphics, and turn on Start Steam on the games card. For one game only, set its Launch Options to:
bromigos hw run -- %command%
Run games on another card explains both.
Underneath, bromigos hw run sets MESA_VK_DEVICE_SELECT=vendor:device, the card’s ID
from bromigos hw graphics, such as 10de:2f04. That puts the card first in Vulkan’s
list, and DXVK and vkd3d-proton use the first device. bromigos hw run --print shows
what it sets.
If you changed the file that holds your session’s graphics settings,
~/.local/state/bromigos/hw/hyprland.lua, bromigOS leaves it alone and doesn’t turn
NVAPI on. Settings › Playing games says so. To hand the file back to bromigOS, run:
mv ~/.local/state/bromigos/hw/hyprland.lua ~/hyprland.lua.mine
bromigos hw setup --user-only
Then log out and back in. Your own version stays in ~/hyprland.lua.mine.
Game mode
Game mode gives the focused game your keys, including Alt, Ctrl, letters and F-keys. It quiets notifications, stops idle locking and sleep, pauses the live wallpaper and hides panels (widgets). The bar shows GAME MODE.
Press Super+Ctrl+G to turn it on. Press Ctrl+Shift+F12 to leave. An on-screen message confirms entry and exit. The escape key appears when you enter. It is the only desktop shortcut that works during game mode. Leaving restores your previous notification state, panels and wallpaper behaviour.
You can also use Settings › Playing games or these commands:
bromigos game on
bromigos game off
bromigos game toggle
bromigos game status
If you need to recover from a TTY or SSH, run bromigos game off as your normal user.
The keyboard escape resets the shortcut mode even if the helper cannot answer.
Your keyboard’s Game Mode key
After first installing this feature, log out and back in so the session loads its shortcuts, bar indicator and keyboard helper. Updating alone does not start the helper.
With the Razer keyboard module enabled, OpenRazer’s Game Mode key toggles bromigOS game mode. On a BlackWidow V4 Pro this is Fn+F10. Its gaming LED follows game mode, and turns off when you leave. Use Ctrl+Shift+F12 to leave even if the keyboard has disabled Super. See Keyboards and peripherals.
Automatic mode
Automatic mode is off by default. Turn it on in Settings › Playing games, or run:
bromigos game auto on
It enters when a fullscreen Steam, Windows, gamescope or Lutris game gets focus, and leaves when that game loses focus or stops being fullscreen. Launchers are excluded. Detached native games may need manual mode. If you leave with the escape key, automatic mode waits until focus or fullscreen changes before entering again.
To stop automatic mode, run bromigos game auto off. A game mode you turned on manually
stays on when you switch windows.
Battle.net and StarCraft II
Battle.net uses the bar’s tray. Right-click its icon for its menu. After installing a tray-bridge update, log out and back in, then reopen Battle.net.
A Lutris shortcut can launch StarCraft II through an existing Battle.net installation.
Set its Wine prefix and executable to the ones used by Battle.net and its arguments to
--exec="launch S2". This uses that installation without creating another Wine prefix.
For power users
Everything above as commands, files and rules: to see exactly what bromigOS does, to script it, or to change it.
Every button, as a command
| In Settings › Playing games | The command |
|---|---|
| Set up Steam | bromigos game setup |
| The status at the top | bromigos game check |
| Fix | bromigos game check --fix |
| Log | journalctl --user -u bromigos-game-maintain |
| Game mode, automatic mode | bromigos game on, off, toggle, status; `bromigos game auto on |
bromigos game setup # install Steam, GameMode and your GPUs' 32-bit drivers
bromigos game check # find what stops games from starting
bromigos game check --fix # fix it now (close Steam first)
bromigos game maintain --dry-run # what bromigOS would change by itself, changing nothing
bromigos game proton # the Proton versions here
bromigos game proton install # the latest GE-Proton
bromigos game proton install GE-Proton10-25 # one version
bromigos game proton remove GE-Proton10-25 # remove one (close Steam first)
bromigos game maintain # the upkeep now: the newest GE-Proton, and Steam's files if Steam is closed
game setup --dry-run shows what setup would install. Steam needs the multilib
repository, which holds 32-bit packages. If it’s off, setup says how to turn it on and
stops.
game proton install downloads GE-Proton from its GitHub releases. It checks the
download against the SHA-512 checksum published with it, and throws away a download
that doesn’t match. Pick a version for one game in Steam: the game’s
Properties › Compatibility. remove won’t remove a version games are still set to,
unless you pass --force.
To see what bromigOS did and when, run:
journalctl --user -u bromigos-game-maintain
Settings › Playing games › Log opens the same list.
Script it
bromigos game checkexits 0 when games are ready, 1 when something needs fixing and 2 when it couldn’t check.--jsongives each finding, withauto: trueon those the upkeep repairs by itself.bromigos game setup,game protonandgame maintaintake--jsontoo.game setup --yesdoesn’t ask before it installs.game maintainlooks for a new GE-Proton at most once an hour.--refreshlooks now,--no-downloaddoesn’t look.--waitwaits for Steam to exit first, and--notifysends one notification for each new problem only you can fix. The service runsbromigos game maintain --wait --notify.
When the upkeep runs
- After
bromigos update: its last step starts the upkeep in the background. - Each time Steam starts or exits: the systemd user unit
bromigos-game-maintain.pathwatches~/.steam/steam.pid, which Steam writes as it starts, and~/.local/share/Steam/config/config.vdf, which it writes as it exits. Either startsbromigos-game-maintain.service, atNice=10with idle I/O. - The GE-Proton download starts at once. Steam’s files change only after Steam has exited and stayed closed for 15 seconds, because Steam restarts itself after its own updates.
How it decides
Steam keeps its tool choices in CompatToolMapping, in config/config.vdf under Steam’s
folder (~/.steam/root, else ~/.local/share/Steam). Each entry maps a game’s app ID to
a tool, a name and a priority. The entry "0" is the default for every game.
- The default. It becomes the newest GE-Proton when it names a tool that isn’t
installed, is unset, or is an older GE-Proton. Any other tool that’s installed stays,
such as
proton_experimental,proton_9or a TKG build. With no GE-Proton installed, a missing default becomesproton_experimental. - The default’s priority goes back to 75. A higher one makes Steam run its own Linux runtimes through Proton, and installing them fails with “Invalid platform”.
- A game set to a missing tool loses its entry, so it follows the default. That’s what unticking “Force the use of a specific Steam Play compatibility tool” does. A game set to a GE-Proton or TKG build that’s gone gets the newest GE-Proton instead. Steam’s own tools count as present, since Steam downloads them itself.
- Old builds. GE-Proton and TKG folders in
compatibilitytools.dthat nothing uses move aside. The newest GE-Proton and the one before it stay. Links, a package’s tools in/usr/share/steamand other kinds of tool are never touched. - Versions compare across GE’s naming schemes:
Proton-6.21-GE-2<GE-Proton7-43<GE-Proton11-11-x86_64.
The files it touches
| File or folder | What |
|---|---|
~/.steam/root/compatibilitytools.d/ | GE-Proton and other tools Steam doesn’t ship |
~/.steam/root/config/config.vdf | Steam’s settings, with CompatToolMapping |
~/.local/state/bromigos/game/backup/ | a copy of config.vdf before each change |
bromigos-backup/ in a Steam library | runtimes and old Proton builds moved aside, for 14 days |
~/.local/state/bromigos/hw/hyprland.lua | the session’s graphics settings, with PROTON_ENABLE_NVAPI=1 on NVIDIA |
The developers’ version, with Steam’s file formats, is Steam and Proton.
What the check says
| What it says | What it means | Who fixes it |
|---|---|---|
| A Steam Linux Runtime is broken | Files are missing from it, such as _v2-entry-point or toolmanifest.vdf. Every game that uses it quits within a second or two. Steam’s Verify doesn’t notice. | bromigOS moves it aside, into a bromigos-backup folder in that Steam library. Steam installs it again when you next press Play. |
| The default compatibility tool has the wrong priority | Steam’s setting for all games should have priority 75. A higher number makes Steam run its own Linux runtimes through Proton, and installing them fails with “Invalid platform”. | bromigOS sets it back to 75, after copying Steam’s config.vdf to ~/.local/state/bromigos/game/backup/. |
| The Proton every game uses isn’t installed, isn’t set or is older | The default for all games points at a Proton that’s gone, or at an older GE-Proton. | bromigOS makes the newest GE-Proton the default. |
| A game is set to a Proton that isn’t installed | You removed a Proton that a game still uses. | bromigOS sets the game back to the default. A game set to an old GE-Proton or TKG build gets the newest GE-Proton instead. |
| Old Proton versions no game uses | GE-Proton or TKG builds that nothing uses take up space. | bromigOS moves them aside, keeping the newest two GE-Proton versions. |
| A Proton needs a runtime Steam installs on Play | The runtime downloads the first time you play a game with that Proton. | Nobody: press Play. |
| Proton games don’t get NVAPI | DLSS is missing on NVIDIA. | You: log out and back in. See DLSS on NVIDIA. |
| A login screen file only repeats bromigOS’s settings | A file in /etc/sddm.conf.d from an older set-up. Left there, it would override future changes to the login screen. | bromigOS moves it to /var/lib/bromigos/sddm-backup/ when it updates. Fix in Settings does it now. |
| A login screen file changes bromigOS’s login screen | A file in /etc/sddm.conf.d sets something differently, such as another theme. The check says what it changes. | You, if you didn’t set it on purpose. It prints the sudo mv command that moves the file out. |
A file in /etc/sddm.conf.d is still read | The login screen reads every file in that folder, whatever its name. So renaming a file to .disabled doesn’t turn it off. A leftover setting can leave a black screen at login. | You. It prints the sudo mv command that moves the file out. |
| waybar is enabled as a user service | bromigOS starts its bar with the desktop. A second bar appears on top of it. | Fix disables your waybar.service. Log out and back in. |
| mkinitcpio’s MODULES names a package | /etc/mkinitcpio.conf lists a package, such as nvidia-open, where a kernel module belongs. The module is nvidia. | You. It prints what to change, then sudo mkinitcpio -P. |
Reinstall a broken runtime by hand
If games quit at once and bromigos game check isn’t at hand:
- Quit Steam (Steam › Exit).
- In the Steam library that holds the runtime, delete the runtime’s folder in
steamapps/common, for exampleSteamLinuxRuntime_4. - Delete
steamapps/appmanifest_<id>.acf,steamapps/downloading/<id>andsteamapps/temp/<id>. The ID of Steam Linux Runtime 4.0 is 4183110. - Start Steam and press Play on the game. Steam installs the runtime first.
Installing a runtime from a steam://install/ link doesn’t work. It fails with “Invalid
platform”.
Turn off the automatic upkeep
To stop bromigOS from keeping Steam and Proton ready by itself, run:
systemctl --user mask bromigos-game-maintain.service
Updates then leave Steam and Proton alone too. systemctl --user unmask bromigos-game-maintain.service turns it back on.
Storage
bromigos storage helps prepare a local data drive, move files onto it and free space.
It separates planning, copying, verification and switching paths. The original files
stay available until you decide how to retire them.
See your drives
bromigos storage status
Status groups the mounted folders under each filesystem, with its used space,
available space and usage bar. Each filesystem’s capacity appears once. Btrfs
subvolumes and bind mounts share that capacity. RAM-backed swap is not listed as
a physical drive. Use --json for structured output.
Desktop terminals use smooth block bars. Text consoles and redirected output use
plain bars so the display stays readable without desktop fonts.
Plan a data drive
Find the stable device name in /dev/disk/by-id/. Check its model, serial number and
capacity against the physical drive. Replace <device-id> below with that name and
choose one named mount directory directly under /mnt:
bromigos storage plan --device /dev/disk/by-id/<device-id> --mount /mnt/Data \
--roles development,games,downloads,vms,models
Read the resulting plan before applying it. Preparing a drive is destructive. Back up anything you need from that device first. Existing disks are not a substitute for a backup of important data.
When the device and plan are correct, apply it yourself in a terminal. Use the absolute plan-file path printed by planning, since root uses a different home directory:
sudo bromigos storage apply /absolute/path/to/plan.json
Applying asks you to type the exact disk serial number in your terminal. It erases
the whole disk, creates one GPT partition, mounts the filesystem and writes its
mounts to /etc/fstab. If it fails, inspect the journal before trying anything else.
The same erase plan cannot be applied twice.
The data filesystem is Btrfs. Each selected role gets a separate subvolume, which is a folder Btrfs manages independently. Roles share the drive’s free capacity. They do not reserve space or impose quotas. VM storage can fill the same free space used by other roles. This flow does not configure encryption or automatic snapshots.
The development role comes first and mounts at /mnt/Data itself. Other selected
roles mount under it as /mnt/Data/games, /mnt/Data/downloads, /mnt/Data/vms
and /mnt/Data/models. VMs are owned by root; the other role roots belong to the
user who created the plan. Choose roles explicitly when you need fewer of them.
Copy files before switching
Plan a copy with explicit source and destination directories:
bromigos storage migrate plan --source /path/to/source --destination /mnt/Data/projects
Keep the displayed plan ID and absolute saved-plan path. Copying preserves owners, permissions and extended attributes, so run it with administrative access. Then verify it and read its status:
sudo bromigos storage migrate run /absolute/path/to/plan.json
sudo bromigos storage migrate verify /absolute/path/to/plan.json
bromigos storage migrate status <plan-id>
A copied directory has not necessarily been verified. Verified files have not necessarily replaced the paths your applications use. Check the recorded stage before continuing.
| Stage | Meaning |
|---|---|
planned | The paths are recorded; copying has not started. |
copying | Data is being staged. The source stays in place. |
staged | The copy pass finished; checksum verification is still separate. |
verified | The staged files and metadata matched at the last check. |
switching | Path changes have started. Inspect the journal if interrupted. |
switched | The switch finished and the original data is retained. |
If copying stops, inspect its status and resume the same plan:
sudo bromigos storage migrate resume /absolute/path/to/plan.json
For several moves, write a TOML file and use --spec /path/to/moves.toml instead
of --source and --destination:
[[move]]
source = "/path/to/source"
destination = "/mnt/Data/projects"
keep_path = "/path/to/source"
keep_path is optional. Set it when applications must keep using an existing path.
Switching requires at least one such path. For a copy without one, verify the copy
and update your application’s storage setting yourself.
If it is the source path, switching retains the original as
<source-name>.before-storage-<plan-id> beside the old directory and places a bind
mount at the old path. A bind mount makes the destination
appear at that path. Without keep_path, the original path stays as it was; update
your applications to use the destination yourself.
Stop every application or service that writes to the source before the final verification and switch. Log out of all graphical sessions and use a text console for the switch. Keep writers stopped while switching. The original copy is retained for recovery; the switch does not make a backup unnecessary. The command does not stop applications, services or graphical sessions for you. It refuses the switch while processes still use the affected paths. Once writers are stopped, switch using the absolute saved-plan path:
sudo bromigos storage switch /absolute/path/to/plan.json --writers-stopped
The command asks you to type SWITCH and the plan ID in your terminal. It performs
a fresh final copy and checksum comparison before changing paths. Inspect the journal after any failed
or interrupted switch before trying to continue. A switch in progress or marked
switch-failed cannot be replayed automatically. Its journal lists retained source
paths and the saved fstab file for manual recovery. Do not delete the old directory
merely because the destination exists.
Review cleanup and snapshots
bromigos storage cleanup --preview
The preview lists supported cache locations and local snapshots managed by Snapper and btrbk. It shows when a provider cannot be inspected; run the preview with sudo if it reports access restrictions. Preview removes nothing. Snapshot counts and file sizes are not promises of space reclaimed. Other snapshots can still hold the files after originals are deleted.
Clean downloaded caches
Create a plan for the npm and Conda caches you want to clear. Repeat --cache to
select both, or include only the cache you need:
bromigos storage cleanup plan --cache npm --cache conda
Read the plan, then use its printed absolute path to apply it. Run these user cache commands as yourself, without sudo:
bromigos storage cleanup apply /absolute/path/to/cache-plan.json
npm cleanup clears downloaded package content in ~/.npm/_cacache. Conda cleanup
clears downloaded archives, index data and logs in ~/.conda/pkgs. Extracted Conda
packages and environments remain available. The total cache size shown by preview
can include files these actions keep. If Conda resolves additional cache locations,
cleanup stops so they can be reviewed.
For downloaded system package archives, make a separate plan:
bromigos storage cleanup plan --cache package-archives --keep-versions 3
sudo bromigos storage cleanup apply /absolute/path/to/package-cache-plan.json
Replace the apply path with the one printed by planning. Package cleanup keeps three
cached versions of each package by default. You can choose a different count with
--keep-versions, from 1 to 100. It does not uninstall packages.
User caches cannot share a plan with system package archives, retained originals or
snapshots. Applying any cleanup plan asks you to type CLEANUP and its plan ID.
Add --yes when applying an already reviewed plan to skip that prompt. Results and
errors are logged, with actual available space measured before and after cleanup.
Retire migrated originals
After a successful switch, create a cleanup plan for its retained originals:
sudo bromigos storage cleanup plan --migration /absolute/path/to/migration-plan.json
Planning records the exact directories without deleting them. It accepts completed switches made by this CLI. External scripts and their records are not imported. Copy-only sources are kept because they may still be in use.
Close applications and services using the affected data before applying the cleanup. Keep them stopped until it finishes. The command checks open files, working folders, mounts, fstab and checksums. If active files have changed since switching, it keeps the original and lists differences for review. It never overwrites the active copy.
Use the absolute cleanup plan path printed by planning:
sudo bromigos storage cleanup apply /absolute/path/to/cleanup-plan.json
It asks you to type CLEANUP followed by the plan ID. For an already reviewed plan,
add --yes to skip that confirmation. Administrative authentication can still be
required. Original-copy deletion cannot be undone by this command.
Remove selected snapshot history
Copy an exact snapshot path from the cleanup preview. You can repeat --snapshot
to select several paths in one plan:
sudo bromigos storage cleanup plan --snapshot /absolute/path/to/snapshot
Read the plan, then apply it using the same cleanup apply command above. Deleting
a snapshot removes that rollback point. Only the listed local snapshots are selected;
NAS backup streams and other snapshots are kept. Removing btrbk source snapshots
can make its next backup send a full copy. Root snapshots are included only
if you explicitly select their paths. Snapshot cleanup is never inferred from the
amount of free space.
The command waits for Btrfs to finish removing the selected snapshots, reports actual available space before and after, and lists remaining snapshots. A snapshot created while cleanup runs is reported for separate review. It is not automatically deleted.
Read cleanup progress and errors
sudo bromigos storage cleanup status /absolute/path/to/cleanup-plan.json
For a user cache plan, run cleanup status without sudo. Each attempt saves a private
log beside the plan, including errors. Status shows the log path, completed actions
and available-space measurements. Add --json for the
full record. If checks failed before deletion, address the reported problem and retry
the same plan. If deletion started and then failed or was interrupted, inspect the
log and completed paths before making a new plan. The command refuses to replay a
partial deletion automatically.
Apps
bromigOS runs any Linux app. This page covers installing apps, choosing which apps open your files, and the optional app bundle: a set of apps already set up in bromigOS’s style.
Install an app
- Open the menu with Super+Space and type
package. - Choose INSTALL › Package….
- Type the package’s name and press Enter. A terminal opens, installs it, and stays open so you can see the result.
Or in a terminal, with Arch Linux’s package manager:
sudo pacman -S firefox
To remove an app, choose REMOVE › Package… in the menu, or run sudo pacman -Rs and
the package’s name.
Install an app from the AUR
The AUR, the Arch User Repository, has recipes for software that isn’t in Arch Linux’s own repositories. A helper called paru fetches a recipe, builds the app on your machine and installs it. bromigOS installs paru for you, unless you said no at the first run.
paru -S cbonsai
Anyone can submit a recipe to the AUR, and nobody checks it first. A recipe runs commands on your machine when it builds. So before paru builds anything, it shows you the recipe, or what changed in it, and asks whether to go on. Read it, or only install apps whose maintainers you trust.
bromigos update updates your AUR apps too, after everything else. See
Packages from the AUR.
To leave the AUR out altogether, run bromigos aur off. bromigos aur on brings it back.
The developer docs’
aur.md has the details.
A new app appears in the app launcher and the menu straight away. Some launchers keep a cache, and show it the next time they open.
Choose which apps open your files
Open Settings › Default apps. Choose the app that opens links, folders, text files, Markdown notes, pictures, videos, music, PDFs and email. The same page chooses the terminal and file manager that bromigOS’s keys open.
For Markdown notes, a notes app such as Zettlr fits well. bromigOS doesn’t install one, but every theme colours Zettlr. See Themes and worlds.
Keep a website as an app
See Web apps.
A start page for your browser
bromigOS keeps a browser start page up to date for you, in your theme’s colours. It has a search box, your links, your homelab’s status, your latest field notes and a clock.
- In your browser’s settings, set the home page to
file:///home/YOU/.local/share/bromigos/startpage/index.html, with your user name in place ofYOU. - To change the links, edit
~/.config/bromigos/startpage.toml.
In Chromium-based browsers, you can also load the same folder as a new-tab extension.
The app bundle
bromigos-apps is an optional set of apps with bromigOS’s settings. Where the theme can
reach them, they take its colours.
| App | What you get |
|---|---|
| Neovim | The LazyVim set-up, in the theme’s colours. It follows a theme change within seconds. |
| tmux | Sensible settings, with its status bar at the top, in the theme’s colours. |
| btop | The theme’s colours, once you choose the bromigos colour theme in btop’s options. |
| lazygit | A plain interface in the terminal’s colours. |
| mise | A starting config.toml for your tools. |
| Chromium | Settings for Wayland. Its window frame takes the theme’s colour when you switch themes while it’s open. |
| Spotify, Signal | As they come. |
| 1Password | Optional. Install it with bromigos install --with 1password: from bromigOS’s repository where it has it, otherwise from the AUR with paru. |
To install the bundle:
- Run
bromigos install --with bromigos-apps, orsudo pacman -S bromigos-apps. - Run
bromigos apps setup. This puts the apps’ settings files in place, only where you don’t have your own.
Your own settings for these apps
Your Neovim and tmux files are short. They load bromigOS’s settings first, so you add yours
after them. For Neovim, add plugins in ~/.config/nvim/lua/plugins/, the LazyVim way.
lazygit, mise and Chromium can’t load another file, so you get a copy of bromigOS’s settings. From then on the copy is yours, and updates don’t change it.
Web apps
A web app is a website in a window of its own, without the browser’s tabs and address bar. It’s in the app launcher like any other app, and it can have its own key.
Add a web app
- Open the menu (Super+Space) and choose INSTALL › Web app….
- Type a name for it, such as
gmail. - Type the site’s address, such as
https://mail.google.com.
The web app is now in the app launcher (Alt+P).
Some are ready-made. The menu’s INSTALL group lists them, such as Web app: Gmail and Web app: YouTube. Choose one to add it.
Sign in
A web app uses your browser’s profile. Sign in to the site in your browser first, and the web app is signed in too.
The window opens in the first Chromium-based browser it finds, in this order: Chrome, Chromium, Brave, Vivaldi, Edge. Without one, it uses LibreWolf, Firefox or Zen. These have no app windows, so the web app opens as a normal browser window.
Give it a key
Add --hotkey when you add it from a terminal:
bromigos webapp add gmail https://mail.google.com --hotkey "SUPER + SHIFT + G"
Or give an existing web app a key in Settings › Shortcuts. See Your own shortcuts.
From a terminal
bromigos webapp catalog # the ready-made ones
bromigos webapp add --from-catalog youtube # add a ready-made one
bromigos webapp list # yours
bromigos webapp remove gmail # remove one, and its key
A web app uses the site’s own icon. To choose another, add --icon and a file or an
address.
Remove a web app
Open the menu and choose it under REMOVE, or run bromigos webapp remove and its name.
Your media
Find a show, film or album, download it to your own library, and watch it on your media server or the desktop’s den TV. You can use commands, the terminal’s media library, or VECTOR, the desktop’s AI assistant.
Your homelab needs the matching services connected first: Sonarr for shows, Radarr for films and Lidarr for music. Seerr can handle requests too. Pinchflat downloads YouTube. Jellyfin or Plex plays the files.
Get a show, film or album
From the Media app
Open bromigos media, then choose Search or press 7 or Ctrl+F.
Type a title, choose Films, TV, Anime or Music, and press Enter or the Search button.
Search includes media you do not have yet. The Have it column shows existing matches.
Press Enter on a result to choose what to request, its quality and audio languages.
Searching alone does not download anything. / filters titles already in your library.
From a terminal
Find the right title first:
bromigos lab media search "Cowboy Bebop" --anime
bromigos lab media search "Dune" --movie
bromigos lab media search "Daft Punk" --music
Each result has an ID, a year and a kind. Use that ID if several titles share a name. For music, the results can be artists or individual albums. An artist request gets its albums; an album request gets just that album.
To request a show, including its specials, at up to 1080p with English audio:
bromigos lab media get tv:tvdb:76885 --seasons all --specials --quality 1080p --audio en
bromigos lab media get "Dune" --movie --quality 1080p --audio en
bromigos lab media get "album:<musicbrainz-id>" --music
The command shows the title, quality profile, audio rule, estimated size and free space. Read the plan, then confirm. It requests the download and keeps watching for missing files. A quality profile is your server’s rule for which releases it accepts.
For the album, replace <musicbrainz-id> with the album ID from search.
For another title, replace tv:tvdb:76885 with the ID from search. You can also use a
name with --tv, --movie, --anime or --music.
- Pick seasons with
--seasons 1,3, a range such as--seasons 2-4, or--seasons latest. - Pick episodes with
--episodes S02E05,S02E06. - Use
--seasons futureto wait for new episodes without fetching old seasons. - New episodes and seasons are monitored by default. Add
--new noto stop that. --quality bestuses the best profile your server offers.2160p,1080pand720pset a ceiling. Your server still needs a suitable profile.
For every option, see the media command reference.
bromigos media get … is another spelling of bromigos lab media get ….
Choose your audio language
Audio rules apply to films and shows, including anime. To require English and favour a second Japanese track when available:
bromigos lab media language set en ja
bromigos lab media language anime same
bromigos lab media language required yes
bromigos lab media language subtitles en
bromigos lab media language show
The first language is required. The others are welcome as extra tracks. Subtitles are a
separate choice. --audio en changes one request, while these commands save your defaults.
You can change them in Settings › Lab too.
Your server’s profiles must enforce the rule. If they cannot, the request plan warns you. Check that warning before confirming. The reference explains language profiles.
Track something that is not out yet
Search for the title and request its ID as usual. A film request uses --when released
by default: it waits for the home release. It does not ask for a cinema recording.
Shows can monitor future episodes with --seasons future.
The title appears in Upcoming, with the release dates your server knows. A title with no date stays monitored; requesting it cannot make a release arrive sooner.
Use the media library in the terminal
bromigos media
Choose Search, or press 7 or Ctrl+F. Search, pick a result and choose its seasons, quality and
audio. The form previews the request automatically and updates it when you change
an option. Read the title, scope, quality and space estimate, then choose
Request. That button stays unavailable until the current preview is ready.
Preview reads the plan again.
After you confirm, Requesting… appears and the form waits for the result. Its controls stay locked while your media service handles the request. A successful request closes the form. An error stays visible in the form so you can review it.
The TV, Movies and Music tabs show what you have. Use arrows or j, k, h
and l to move. Pick a show to see its seasons, or an artist to see its albums. Press P
to change its profile, m to change monitoring, or f to search now.
On the top tabs, Left/Right or h/l selects the previous or next tab.
Press Down or j to enter the table. At its first row,
Up or k takes you back. Press ? for keyboard help.
Press Ctrl+C to quit from the main screen. In a dialog, Escape or Ctrl+C
cancels an unconfirmed dialog and returns to the library. Letters such as q stay available
while typing. A dialog keeps the background tabs and actions inactive.
See the library’s keys for the full list.
Ask VECTOR
Press Super+E and ask, for example:
- “Get season 2 of this show, up to 1080p, with English audio.”
- “Find this album and show me what you would download.”
- “Track this film and get it when the home release comes out.”
Give the title and year if there could be several matches. VECTOR tells you what he found and the plan. He asks before requesting unless you clearly asked him to download one title. You can also ask what is missing or when it will arrive.
See what is downloading or coming up
bromigos lab media status
bromigos lab media status "Cowboy Bebop"
bromigos lab media upcoming --days 30
bromigos lab media recent --hours 24
status shows progress, time left and failures. A season pack’s size and speed are
counted once, even when it covers several episodes. Stalled torrents, paused
downloads and torrents waiting for their details are labelled separately from
active downloads. A stalled torrent with no connected seeders says so. A title’s status adds its seasons,
monitoring, file languages and subtitles. upcoming lists what you track, with its
known dates. recent lists files that reached the library.
In bromigos media, use Downloads or Upcoming. You can also ask VECTOR,
“What’s downloading?” or “What’s coming up this month?”
Delete safely
Pick the smallest thing you want to remove. To delete one season:
bromigos lab media delete "Cowboy Bebop" --season 1
It shows which files will go and how much space that frees. Type the title to confirm. Deleting is permanent. Cancel if the scope or title is wrong.
Without --season, it deletes the whole title and its files. --episodes picks episode
files. For music, --album picks one album from an artist. --exclude keeps a whole
removed title or album from being added back by an import list. A removed season or
episode stops being monitored.
In the terminal library, select the title, season or album and press D. Read the
question, then choose Delete or Cancel. Cancel is selected first; Escape or Ctrl+C cancels. Don’t fetch it again
adds the import exclusion. To keep files and only stop looking for more, use m instead.
The delete reference
explains the scopes.
The delete dialog starts on Cancel. Left/Right chooses a button and Enter
activates it. Up/Down moves to or from the exclusion checkbox; Enter or Space
toggles it. Tab and Shift+Tab also move between controls.
Escape or Ctrl+C cancels.
Keep YouTube channels and playlists
To download new uploads from a channel into your library:
bromigos lab youtube add https://www.youtube.com/@NASAGoddard --since 2025-01-01 --quality 1080p
bromigos lab youtube list
bromigos lab youtube status
A playlist address works too. Pinchflat keeps its order. --since skips older uploads.
To pause a source, run bromigos lab youtube pause "<source-name>". Replace
<source-name> with its name from list. resume starts it again, and refresh checks
for new videos now.
bromigos lab youtube remove "<source-name>" asks before removing a source. Its videos
stay on disk. Add --delete-files only when you want to remove the files too.
To make downloaded playlists appear in Jellyfin or Plex in YouTube’s order:
bromigos lab youtube sync --dry-run
bromigos lab youtube sync
The first command previews changes. The second applies them. See YouTube downloads for quality, sign-in cookies and every command, and connection settings.
Watch on the den TV
The den is the default theme’s wallpaper: a radio room with three live screens. Each screen can play a different channel from your library, YouTube or a folder of videos.
- Open the guide with
Super+Alt+G, GUIDE in a screen’s hover controls, or Settings › Den TV. - Choose Add channel…, then Shows or movies you pick. Search your library and select the posters you want. Pick the order and give the channel a name.
- Choose BIG, SCOPE or SMALL on its card to put that screen on the channel.
- Click a playing screen, or FULL, to watch full screen with sound. Close the player to return to the desktop.
For a Night Block, make a channel with that name and pick the shows for your evening. Choose in order or shuffle. Turn on Bumpers in its menu for short cards between items. This is a channel you make, not a preset schedule.
The screens start silent. Turn sound on with the speaker in a screen’s controls. Only one screen has sound at a time. Channel 1 restores that screen’s normal picture. For all controls and channel settings, see The den TV.
Make channels for the den TV
In bromigos media, choose Channels or press 8. Each channel shows its kind,
play order, bumpers and the screens on it now. Select one to see its titles and what’s
on now and next. A library channel includes everything in its library. A picked channel
holds the shows, movies, YouTube addresses or music you choose.
From TV, Movies, YouTube or Music, select a title and click
Add to channel… (c) below the list, or press c. This also works on Search
results, Downloads and Upcoming titles. In Music, selecting an album adds that album.
Choose Add to Night Block (or another picked channel), then Apply channel choice.
You can also choose Remove from… or New channel….
A small diamond marks titles already in a channel. Select or hover over a title to see its channel names. The names also stay visible beside Add to channel…. The picker lists its current channels and marks Already in … — remove.
Adding something to a channel does not download it; it must be available from the media server or YouTube. Music plays through the den’s sound controls.
On Channels, Ctrl+N adds a channel, F2 renames it, v changes its order, and b
switches bumpers. Select a picked item and use Alt+Up or Alt+Down to reorder it,
or x to remove it. From the channel list, the same arrows move the whole channel.
D asks before deleting a channel. Ctrl+Z restores the last deleted channel.
Tune, or c on this tab, chooses a screen.
Removing a pick or a channel keeps the media files. Each change shows a confirmation message, preserves comments in the config, and reaches the den without a restart. The Den TV app offers the same channels in a window with posters.
Use commands or ask VECTOR
To see the channels and add a show:
bromigos-live tv channels --json
bromigos-live tv channel add "Night Block" --shows "Example Show" "Another Show" --order alternate --bumpers
bromigos lab media channel add "Example Show" --to "Night Block" --json
Names work wherever a command asks for a channel. The numbers in tv channels are
positions in the config. Screen numbers are separate: channel 1 is each screen’s own
picture. channel tune finds the right screen number from the name.
bromigos-live tv channel add-item "Night Block" "Example Film" --kind movie --json
bromigos-live tv channel remove-item "Night Block" "Example Show" --json
bromigos-live tv channel move-item "Night Block" "Another Show" 1 --json
bromigos-live tv channel order "Night Block" shuffle --json
bromigos-live tv channel bumpers "Night Block" off --json
bromigos-live tv channel rename "Night Block" "Evening" --json
bromigos-live tv channel move "Evening" 1 --json
bromigos-live tv channel tune "Evening" --screen wave --json
bromigos-live tv channel remove "Evening"
bromigos-live tv channel undo --json
remove asks you to type the channel name. Scripts can pass --yes. All channel
commands accept --json. Exit codes are 0 for success, 1 for an operation that failed,
2 for invalid arguments or a missing confirmation, 3 for a conflicting name, and 4 for
something not found. tv channels --refresh reads library contents from the servers;
without it, now/next and contents use the local cache.
Ask VECTOR, the desktop’s AI assistant, “Add this show to Night Block”, “What’s on the
den TV?”, or “Tune the scope to Evening”. From the phone he can read channels and add
or remove individual picks. Creating channels, tuning screens and deleting whole
channels stay on the desktop. A whole-channel delete needs your explicit request naming
it. The command reference and bromigos-live tv channel --help list the
options for libraries, YouTube and folders.
Put releases on your calendar
Open the CALENDAR panel’s Settings… and turn on Your media server’s releases. It adds tracked TV episodes and film releases from Sonarr and Radarr to your other events. It needs those services connected through Your homelab.
You can show the panel from Customize › Widgets, or run:
bromigos panels show calendars
See Calendar releases for the setting and feed export.
If something goes wrong
Nothing was found or nothing is downloading
Search with the kind and year. If the name is ambiguous, use the result’s ID. A title can exist in the catalogue before there is anything to download.
For a tracked title, ask the indexers now:
bromigos lab media status "Cowboy Bebop" --why
bromigos lab doctor
The first command explains missing releases and rejections. The doctor checks whether the connected services answer. A release can be rejected for quality, language or a profile’s minimum score. Check those rules before relaxing them.
The audio is in the wrong language
Use language show and the title’s status to compare your request with the files.
Check the selected profile in Sonarr or Radarr. Changing the defaults does not rewrite
files you already downloaded. Pick the right profile and search again; keep the old
files until you have checked the replacement.
Jellyfin cannot play a file
Check that Jellyfin can see the media folder, and that its container has the right permissions. Check the media server’s logs for missing files or transcoding errors.
If several media apps freeze while the NAS still answers, its client may have a stuck NFS lock connection. Ask the lab administrator to check it through the lab’s maintenance procedure. See Media files on a NAS.
Play something on a den screen
Press p in the media library to open Play on den TV. Choose BIG, SCOPE or SMALL.
Pick a show, then its season and episode, or choose a movie. The YouTube view lists
downloaded videos; you can also search with a YouTube video URL. Turn Resume where
you left off on to use the server’s saved position. Otherwise playback starts at the
beginning. P changes a quality profile.
The Den TV app has a Play… button for each screen with the same choices. The screen shows ON DEMAND while your choice plays. When it ends, or you change channel, the screen returns to its channel’s live schedule.
bromigos-live tv play --screen big "Cowboy Bebop S01E05" --json
bromigos-live tv play --screen scope --id ITEM_ID --source SERVER_NAME --resume --json
bromigos-live tv play --screen small --url "https://www.youtube.com/watch?v=VIDEO_ID" --json
bromigos-live tv search "Cowboy Bebop" --kind shows --json
SERVER_NAME is a source name from your media settings. Use --id when titles are
ambiguous. Search with --kind seasons --id SHOW_ID, then --kind episodes --id SHOW_ID --season 1 to list episodes. Ask VECTOR to “play Cowboy Bebop episode 5 on the big TV.”
See the den controls for sound, full screen and the
number-pad remote.
Cast to another screen
bromigos media cast plays a title, or what a den screen shows, on another screen in the
house: a Chromecast or Google TV, a smart TV that is a DLNA player, an Apple TV or AirPlay
TV, or a TV or phone running Jellyfin’s app. The den’s own screens are on the same list.
bromigos media cast targets # every screen it finds, and what each plays
bromigos media cast play --target "living room" --title "Cowboy Bebop S01E05"
bromigos media cast play --target "living room" --screen big # what the big den screen shows, from the same moment
bromigos media cast control --target "living room" pause # play, pause, stop, seek 600, volume 40, mute
bromigos media cast status --target "living room"
bromigos media cast handback --target "living room" --screen big # back to the den, from where it was
--target takes a target’s id from the list, or words from its name, room or kind, such
as living room, bedroom tv or chromecast. Each command takes --json.
bromigos media cast targets --dry-run only lists what it finds and keeps nothing.
| Kind | Finds it by | Plays | Needs |
|---|---|---|---|
| Google Cast (Chromecast, Google TV, Nest screens) | mDNS | your media server’s titles, YouTube links | python-pychromecast |
| DLNA (most smart TVs) | SSDP | your media server’s titles | python-async-upnp-client (from the AUR) |
| AirPlay (Apple TV, AirPlay 2 TVs) | mDNS | your media server’s titles | pyatv, which no Arch repository packages yet; a device that asks for a PIN is paired once with pyatv’s atvremote |
| Jellyfin apps | your Jellyfin server | that server’s titles | a Jellyfin source in your media settings |
| The den’s screens | the den TV | everything Den TV plays | nothing more |
- Where it looks. Only your own network: mDNS and SSDP ask the devices nearby, and Jellyfin lists the apps it can steer. A firewall on this computer must let mDNS (UDP 5353) and SSDP (UDP 1900) answers in.
- How a TV gets the video. The TV fetches it from your media server itself. If the
server’s address uses your lab’s own certificate authority, which TVs don’t trust, set
cast_urlon the source to an address they can reach (see the media sources). That address carries the server’s key, so it’s given only to the TV, never shown or logged. - What can’t be cast. Files only on this computer, and streaming apps’ protected video (Netflix, Disney+, Prime Video and the like): start those from the app on the TV.
- A record. Every play, control and hand back is a line in
~/.local/state/bromigos/cast-audit.jsonl: when, who asked, which screen, what played. Addresses and keys are never in it.
Ask VECTOR to “play Cowboy Bebop on the living room Chromecast”, or “move it back to the den”. BRODEC’s den remote on your phone picks targets from the same list, through the machine agent on this computer.
Your homelab
A homelab is the computers you run yourself: servers, a NAS, a machine with a graphics card for AI. If you have one, bromigOS can put it on your desktop and use it:
- the LAB panel shows its health at a glance;
- the lab deck and other holograms show it in 3D;
- VECTOR can tell you what it’s doing, and use its AI models;
- AI work, such as pictures and VECTOR’s voice, can run on its graphics cards instead of a paid service (Creating with AI);
- the worlds show its health: Tidewell’s lighthouse, for example.
bromigOS works with the services you already run. It doesn’t need a particular set-up. You don’t need a homelab to use bromigOS. Without one, these parts stay hidden.
To create VMs, form a Kubernetes cluster or install services, use Lab provisioning. It includes monitoring and waits for your approval before allocating resources.
Connect your homelab
-
Run:
bromigos setup homelab -
It offers Find my lab first (below). Type
yto let it look for your machines. Or typen, and give it the names or addresses of your homelab’s machines. Either way, it checks each machine for the services it knows, and only counts a service whose own interface answers. -
Check what it found:
bromigos homelab status -
Run
bromigos restart live widgets vector, so the background, the panels and VECTOR pick it up.
Running bromigos setup homelab again only adds what’s new. It never rewrites your own
changes.
Some useful options:
bromigos setup homelab --find # look for your machines first
bromigos setup homelab --hosts nas,gpu-box # check these machines
bromigos setup homelab --url https://prometheus.lan # add one service by its address
bromigos setup homelab --print # show what it would add; change nothing
Find my lab
You don’t need to know every machine’s name. Find my lab looks in what this computer already knows about your network:
bromigos setup homelab --find
It first lists what it will read, and asks. Nothing is read until you type y:
- devices that announce themselves on your network, such as a NAS, Home Assistant, a printer or a camera;
- this computer’s list of nearby devices, and the names your DNS gives them;
- your Tailscale devices, if you use Tailscale;
- what your connected services already know, such as your router’s clients (UniFi), Prometheus’s targets, Kubernetes nodes and Proxmox VMs. On a first run you haven’t connected any, so this part is skipped.
Then it asks separately whether to read the Host lines of ~/.ssh/config. It never
reads your keys.
It never scans address ranges, never signs in to anything, and sends nothing off your network. It checks only the machines it found, at private addresses, for the services bromigOS knows.
You see each machine once, grouped by kind: lab machines, smart home, cameras, robots, printers, media and other. Each line says where it was seen. Under it are the services bromigOS can add, numbered, and what it found but doesn’t support yet. Type the numbers you want, or press Enter for all of them.
For mDNS, the announcements most devices make, install python-zeroconf first:
sudo pacman -S python-zeroconf
Machines set up with bromigos lab provision announce themselves, so Find my lab always
finds them. Settings › Lab has a Find my lab… button too.
If you run Kubernetes, bromigOS never picks a cluster on its own. Name yours when it asks,
or with --kube-context.
What it understands
| Kind of service | Examples |
|---|---|
| metrics and machines | Prometheus, VictoriaMetrics, Netdata |
| workloads | Kubernetes, Docker, Proxmox |
| deployments | Argo CD, Flux |
| AI models | LiteLLM, Ollama, vLLM, any OpenAI-compatible server |
| alerts | Alertmanager |
| secrets | Vault (its status only) |
| coding agents | herdr |
| code and pull requests | GitHub |
| voice and pictures | bromigOS’s voice service, ComfyUI |
| graphics cards | NVIDIA’s DCGM exporter |
| logs | Loki, Dozzle |
| the network’s edge | Traefik, cert-manager, dynamic DNS, UniFi |
| storage | S3 object stores such as MinIO, a NAS and its shares |
| apps and databases | Open WebUI, SearXNG, Redis, Dragonfly, Neo4j |
| game servers | Pelican |
| media | Seerr, Sonarr, Radarr, Lidarr, Prowlarr, Bazarr, Jellyfin, Plex, qBittorrent, SABnzbd, slskd, Pinchflat (YouTube downloads) |
| backups | backup jobs, NAS snapshots, Velero, Proxmox Backup Server |
Many of these need no address of their own. bromigOS finds them through your metrics or your cluster, once it knows those.
The ALERTS panel and Lab alert card leave out Watchdog and InfoInhibitor.
These are monitoring helpers, not problems to fix. Other info-level notices stay
visible alongside warnings and critical alerts.
If a service is missing, the parts of the desktop that need it are hidden. If a service stops answering, it shows as “unreachable”. To check everything, and get plain-words advice on what to fix, run:
bromigos lab doctor
YouTube downloads with Pinchflat
Pinchflat downloads YouTube channels and playlists into your media library. Add it to
homelab.toml. If its web page asks for a user and password, put them in a file as
user:password and name the file in auth_ref:
[[source]]
type = "pinchflat"
endpoint = "http://pinchflat.lan:8945"
auth_ref = "@file:~/.local/share/bromigos/pinchflat-login"
Without a password, it needs Pinchflat’s route token instead. The token is in the OPML link
on Pinchflat’s Sources page: copy the part after route_token= into a file, and name it in
route_token_ref.
To see its download queue too, start Pinchflat with ENABLE_PROMETHEUS=true.
For YouTube cookies (bromigos lab youtube cookies), say where Pinchflat reads them, with
cookies_store in the same source:
cookies_store = "file:/srv/pinchflat/config/extras/cookies.txt"when its config folder is on this machine or a share you have mounted;cookies_store = "vault:secret/lab/pinchflat#cookies"when your lab copies Pinchflat’s cookies from Vault.
bromigos lab youtube sync makes each downloaded playlist a playlist in Jellyfin or
Plex, in YouTube’s order. It needs an API key for each media server: put it in a file and
name the file in that server’s source as token_ref. See The lab console.
Media requests
Start with Your media to find, download and watch a title.
To ask your lab for films, shows and music (bromigos lab media, see
The lab console), add a source for each app you have. Each needs
its address and its API key, which is on the app’s Settings › General page. Put each key
in its own file, as above.
[[source]]
name = "seerr"
type = "seerr"
endpoint = "http://seerr.lan:5055"
auth_ref = "@file:~/.local/share/bromigos/seerr-key"
[[source]]
name = "sonarr" # the same for radarr, lidarr, prowlarr and bazarr
type = "arr"
endpoint = "http://sonarr.lan:8989"
auth_ref = "@file:~/.local/share/bromigos/sonarr-key"
[[source]]
name = "qbittorrent" # and sabnzbd, slskd: for each download's progress
type = "qbittorrent"
endpoint = "http://qbittorrent.lan:8080"
auth_ref = "@file:~/.local/share/bromigos/qbittorrent-key"
[media]
audio = ["en", "ja"] # your audio languages, best first
subtitles = ["en"]
Seerr is optional. Without it, requests go straight to Sonarr, Radarr and Lidarr. With it,
they show in Seerr’s Requests too. qBittorrent needs a WebUI API key (version 5.2 or later),
or user_ref and its password. slskd takes its password, and import_path: the folder its
downloads land in, as Lidarr sees it.
Keep passwords out of the file
Your homelab’s settings are in ~/.config/bromigos/homelab.toml. Where a service needs a
password or a token, the file holds a reference to it, never the secret itself. So you
can keep the file in a public dotfiles repository.
| Write | To read the secret from |
|---|---|
@file:~/path | a file, such as a token file only you can read |
@env:NAME | an environment variable |
@private:some.key | your private overlay |
@vault:path#field | HashiCorp Vault, through its command-line tool |
Your own panels without code
You can add a gauge, a chart, a number, a status light or a table to the desktop by
describing it in homelab.toml, or in a file in ~/.config/bromigos/homelab/panels/. It
takes the theme’s colours like every other panel. For example, a light that shows whether
a service answers:
[[panel]]
name = "jellyfin"
kind = "status"
url = "http://jellyfin.lan:8096/health"
Each panel reads one thing: a metrics query, an address to check, or one of the kinds of service above. The developer docs’ homelab.md lists every option, with more examples.
The lab console
bromigos lab shows your whole homelab at once, runs AI jobs on its graphics cards, and
checks it for problems. See The lab console.
More
The developer docs’ homelab.md has every kind of service, the settings file in full, and how to write support for a new service.
The console also works on plain Arch. Follow Install on plain Arch
for the standalone bromigos-lab AUR package.
The lab console
bromigos lab is the console for your homelab. It shows what the lab is
doing and what its graphics cards hold, runs AI jobs on them, and checks the lab for
problems. It reads the services you connected. Anything your lab doesn’t have is simply
not shown.
Connect a homelab first with bromigos-lab connect, or bromigos setup homelab on bromigOS.
Install on plain Arch
The bromigos-lab AUR package runs without the bromigOS desktop. It includes the
terminal dashboard, service adapters, model catalog and provisioning.
With an AUR helper, run paru -S bromigos-lab. Without one:
sudo pacman -S --needed base-devel git
git clone https://aur.archlinux.org/bromigos-lab.git
cd bromigos-lab
less PKGBUILD
makepkg -si
Read the recipe before building it. It uses a pinned source release and a SHA-256 checksum. It installs the console without changing your desktop or system settings. Connect your services and check them:
bromigos-lab connect
bromigos-lab doctor
bromigos-lab
Replace bromigos lab with bromigos-lab in the commands on this page. Both use
~/.config/bromigos/homelab.toml and the same lab state. Provisioning asks for an
explicit yes before changing machines. Install the optional tools listed by
pacman -Qi bromigos-lab for the services and providers you choose.
On bromigOS, bromigos-homelab pulls in this package and keeps bromigos lab working.
Its desktop panels, live decks and VECTOR plugins are separate integrations.
Desktop target commands, art jobs and the Den TV media screen need the optional
bromigos-core package. The main console, adapters and provisioning run without it.
Rack maintenance
Use bromigos lab maintenance when you need to shut the lab down for rack work and
bring it back afterwards. Do not unplug a running NAS or a machine writing database
files. A machine that stops answering the network is not proof of a clean shutdown.
Keep power connected until its own management screen or physical indicators confirm
that shutdown finished.
You can read the configured health checks first:
bromigos lab maintenance check
These checks report service problems. They do not verify backups or prove that equipment is powered off. Start by saving a plan. Planning does not power anything off:
bromigos lab maintenance plan shutdown
bromigos lab maintenance status
Read the plan and keep its ID. To follow it interactively, replace <plan-id>
with that ID:
bromigos lab maintenance run <plan-id>
The default plan is a guided checklist. Read each instruction, complete it yourself,
then type done followed by the displayed step ID. Any other answer pauses the run.
The run asks for yes before it starts. --yes can skip that initial question,
but cannot acknowledge manual steps or make them work without a terminal.
Acknowledging a manual step records your check; it does
not turn it into a machine-verified result. Keep recovery instructions and credentials
available somewhere that remains accessible while the lab is off.
Shutdown follows dependencies. First check backups and recovery access, then finish any operator-controlled services. Stop jobs, games and other writers before compute workers. Stop the cluster’s control plane before its hypervisor, then the NAS. Keep network equipment available until everything that needs it is safely off.
Startup brings the network and storage back first. Wait for storage to be ready before starting hypervisors, the cluster, workers and applications. Check each dependency before continuing. Restart services that need the operator’s approval yourself.
If you stop partway through, use the run ID to continue from its journal:
bromigos lab maintenance resume <run-id>
When the rack is reconnected, create and follow a new startup plan:
bromigos lab maintenance plan startup
bromigos lab maintenance run <plan-id>
An optional private profile supplies instructions and reviewed Ansible playbooks
for your own hardware. Select a configured profile with --profile <name>, or use
--profile-file <path> when planning. Keep machine names, addresses and credentials
out of shared configuration. The contributor reference
explains the profile format.
Plans and run journals stay in ~/.local/state/bromigos/lab/maintenance/. A completed
checklist records your confirmations. It does not certify that every device is off.
If a runbook fails or is interrupted, inspect the hardware before doing anything else.
Resume refuses to repeat a step whose result is uncertain. Create a new reviewed
plan after inspecting that state.
PDU power
A power distribution unit (PDU) can report and switch individual rack outlets.
bromigos lab power status shows the labels, outlet states and electrical readings
available from your configured controller, including the reported total load:
bromigos lab power status
Missing watt, volt or amp readings show as unknown. They do not mean the connected equipment uses no electricity. An outlet shared by several devices measures their combined load. A new PDU needs to be installed, adopted and configured before these readings are available.
Shut the operating system down cleanly before switching its outlet off. An outlet turning on supplies electricity; the machine only boots automatically if its firmware is configured to do so. Outlet numbers do not establish a safe shutdown or startup order. Use the rack maintenance flow for work on the whole rack.
Power changes require a named target connected to a private maintenance profile.
To preview an outlet change, replace <target> with that configured name:
bromigos lab power plan <target> off
Read the plan, verify its outlet and connected equipment, and complete its shutdown
checkpoints before running it. Replace <plan-id> with the displayed plan ID:
bromigos lab power run <plan-id>
Use plan <target> on for a startup plan. A paused run can continue with
bromigos lab power resume <run-id>. Plans and runs use the same confirmations and
journals as maintenance. Planning alone never switches power.
Look at your lab
Run bromigos lab for the live dashboard. It refreshes every 15 seconds.
You can quit while a refresh is running. Queued and running jobs continue after the dashboard closes; use the Jobs tab to cancel a job explicitly.
| Key | What it does |
|---|---|
| 1 | Status: a card for each part of the lab, such as machines, graphics cards, services, storage and alerts. |
| 2 | Models: the AI models each machine holds, and their memory. |
| 3 | Jobs: the queue of AI jobs. |
| 4 | Doctor: problems, and how to fix them. |
| n | Start a new job. |
| c | Review cancellation of the selected job. |
| R | Run the job under the cursor again. |
| d | Run the doctor’s checks now. |
| r | Read the lab again now. |
| q, Ctrl+C | Quit from the main screen. |
| ? | Show keyboard help. |
To move around, use the arrow keys or Vim’s keys:
| Keys | What they do |
|---|---|
| ↓ ↑ or j k | Move down or up a list: the cards on Status, or a table’s rows. On Status, each card shows as you reach it. |
| → ← or l h | On Status, move between the cards and the card’s detail. |
| g G | Go to the first or last item. |
| Ctrl+D Ctrl+U | Move a page down or up in a table. |
| ] [ or L H | Go to the next or previous tab. |
The focused list or control has a highlighted border. The buttons and footer show
actions for the current tab. Use Tab or Shift+Tab to move between controls.
At the tab bar, h and l switch tabs; Down or j enters the list. At the
first row, Up or k returns to the tab bar.
To cancel a job, press c on Jobs and read the question. Keep job is selected
first. Choose Cancel job only if you want it stopped. In any dialog, Escape
or Ctrl+C closes an unconfirmed dialog without applying the pending change. Arrow keys move between
controls and Enter activates the selected button. Background tabs stay inactive.
Letters such as q can still be typed into a form.
Hover over anything for what it is.
Or print the same information:
bromigos lab status # one line for each part of the lab
bromigos lab models # what each graphics card and model server holds
bromigos lab doctor # what's wrong, and how to fix it
As a hologram
Press Super+Shift+H for the lab deck: your lab as a server rack, lit by the same readings. See Holograms.
In Settings
Settings › Lab shows the same summary, your models, recent jobs, the doctor, and where AI runs.
Make things on your lab
Send a job to your lab’s graphics cards:
bromigos lab run image --prompt "a lighthouse at dusk"
bromigos lab run cutout --input ~/Pictures/robot.png
bromigos lab run upscale --input ~/Pictures/robot.png --scale 2
bromigos lab run hologram --prompt "a brass telescope"
bromigos lab run voice --text "The relays are lit."
bromigos lab run transcribe --input ~/Downloads/talk.m4a
| Job | What it makes |
|---|---|
image | A picture from your description. |
image-edit | A changed copy of a picture. |
cutout | A picture with its background removed. |
upscale | A bigger, sharper copy of a picture or a short video clip. Twice the size, or up to four times with --scale. |
3d | A 3D model, from a picture of an object. |
hologram | A hologram, from a description or a picture. To show it in the gallery, copy it into ~/.config/bromigos/vector/holo/. |
voice | Spoken audio of your text. |
transcribe | Text from a recording. |
video | A short looping video, from a picture and a description of how it moves. |
batch-llm | Answers from a language model, for many prompts at once. |
bromigos lab run --kinds lists what your lab can do, and says why when it can’t do
something.
When a job is done, a notification tells you. The result goes in
~/Pictures/bromigos/lab/, in a folder for each kind of job.
You can also ask VECTOR for a picture, a hologram or a voice line “on the lab”. His jobs show in the queue as his.
The job queue
bromigos lab jobs # what's queued, running and done
bromigos lab jobs watch # follow the queue until it settles
bromigos lab jobs cancel ID # cancel a job
bromigos lab jobs retry ID # run a job again
Jobs take turns. One heavy job runs at a time, and only when a graphics card has room for it. VECTOR’s voice always keeps its share. A job that has to wait says why.
It’s free unless you say otherwise
Jobs run on your lab, which costs nothing. A paid cloud service is only used for a job if
you add --cloud to it.
Models
bromigos lab models # what each machine holds
bromigos lab models load NAME # load an Ollama model
bromigos lab models unload comfyui # free what ComfyUI holds
bromigos lab models recommend # better models that fit your graphics cards
YouTube downloads
For finding, downloading and watching media, start with Your media.
If your lab runs Pinchflat, it downloads YouTube channels and playlists into your media library. Then they play in Jellyfin or Plex, like your other shows. You can run it from here without opening its web page.
Add a channel or a playlist
bromigos lab youtube add https://www.youtube.com/playlist?list=PLCFE9837C2F7EB8AA
bromigos lab youtube add https://www.youtube.com/@NASAGoddard --since 2025-01-01
It says what it will download. A playlist keeps its order. A channel gets every upload.
- It works out from the address whether it’s a playlist or a channel. If it can’t, add
--playlistor--channel. --since 2025-01-01skips videos uploaded before that date. It’s worth it for a big channel.--name NAMEsets its name in Pinchflat, on disk and in your media server.--qualitysets the most it downloads. See below.
In the dashboard (bromigos lab), the YouTube downloads card has an Add a channel or
playlist… button. It does the same thing. The key is a.
Look after them
bromigos lab youtube list # each one: kind, quality, videos, last check, newest video
bromigos lab youtube status # the download queue, failures, recent downloads
bromigos lab youtube refresh "Little SDO" # check for new videos now (leave out the name: all of them)
bromigos lab youtube pause "Little SDO" # stop checking and downloading; resume starts it again
bromigos lab youtube remove "Little SDO" # stop downloading it; the videos stay
bromigos lab youtube remove "Little SDO" --delete-files # and delete its videos too
remove asks before it does anything. Your videos stay on disk unless you add
--delete-files. After a removal, the playlist in Jellyfin and Plex goes at the next sync.
Every command takes --json.
Quality and disk space
Videos download at up to 1080p unless you say otherwise. Higher quality costs disk space. As a rough guide, for an hour of video:
| Quality | About |
|---|---|
480p | 0.3 GB |
720p | 0.5 to 1 GB |
1080p | 1 to 2 GB |
1440p | 2 to 3.5 GB |
2160p (4K) | 5 to 10 GB |
audio | 0.06 GB (sound only) |
These come from the sizes YouTube offers for each quality, in the formats Pinchflat picks.
Fast-moving or 60-frames-a-second video sits at the top of each range. Talking heads and
slides sit at the bottom. best takes the highest a video has, up to 8K.
-
add --quality 2160pdownloads a new source in 4K. -
bromigos lab youtube quality "Little SDO" 2160pchanges an existing one. Only new downloads change. The videos you already have stay as they are. -
To change the default for everything you add, set it in
homelab.toml:[youtube] quality = "1440p"
If YouTube asks Pinchflat to sign in
Sometimes YouTube stops a lab’s downloads with “Sign in to confirm you’re not a bot”. Pinchflat can then use a browser’s YouTube cookies.
-
Sign in to YouTube with a spare Google account. Never use your main one: YouTube can block an account whose cookies a downloader uses.
-
Export its cookies in the
cookies.txtformat, with an exporter add-on for your browser. -
Give them to your lab:
bromigos lab youtube cookies set ~/Downloads/cookies.txt -
Delete the exported file. Your lab keeps its own copy.
set checks the file and never shows the cookies. It turns on When Needed cookies for
every channel and playlist, so Pinchflat only uses them when YouTube asks.
bromigos lab youtube cookies statussays whether there are cookies and how old they are. After about 30 days it reminds you to export fresh ones.bromigos lab youtube cookies clearremoves them and turns their use off.
Where the cookies go depends on your lab. See Homelab.
Playlists in Jellyfin and Plex
bromigos lab youtubeshows the YouTube downloads card: how many videos are waiting, any that failed, and the newest video from each channel and playlist. The dashboard’s Status tab has the same card. Hover over a row for more.bromigos lab youtube syncmakes each downloaded YouTube playlist a playlist in Jellyfin or Plex, in the same order as on YouTube. Run it as often as you like: it only changes what’s different. To see what it would do first, add--dry-run.
The Status tab’s Storage card shows each share on your NAS that the lab uses, which NAS it’s on, and how much space is free.
ComfyUI keeps the last job’s models in memory until something frees them.
bromigos lab models unload comfyui frees them now. To find the best open models for your
graphics cards, see Lab models.
Media requests
Your media walks through requests, tracking, deletion and playback.
If your lab runs a media stack, you can ask it for a film, a show, an anime or music by name. It gets the best quality your lab’s profiles allow, in your languages, and puts it in your media library, where Jellyfin, Plex or your music server plays it. The stack is Seerr, Sonarr for TV, Radarr for films and Lidarr for music.
Find it
bromigos lab media search "cowboy bebop"
bromigos lab media search dune --movie # or --tv, --anime, --music
Each result has an id, then its year and kind, and the profile it would get. It also says how much disk space it needs, and whether Jellyfin or Plex has it already. A film that isn’t out yet shows its dates, such as “in cinemas 2026-12-18, digital TBA”.
Get it
bromigos lab media get "Cowboy Bebop"
bromigos lab media get tv:tvdb:76885 --specials # by its id from search
Before it asks for anything, it shows what it will do:
- which profile it picked, and why;
- the audio you’ll get;
- what it fetches now, and whether new episodes come later;
- about how much space it takes, and how much is free.
Then it asks you. Add --yes to skip the question.
If several titles have that name, such as the US and UK versions of a show, it lists them. Then give the id instead.
Which seasons. You choose with --seasons:
| You want | Add |
|---|---|
| The whole show, and new episodes as they come (the default) | nothing |
| Seasons 1 and 3, or 2 to 4 | --seasons 1,3, or --seasons 2-4 |
| Just the latest season | --seasons latest |
| Nothing now, only new episodes from here on | --seasons future |
| A few episodes | --episodes S02E05,S03E01 |
| The specials too | --specials |
| Not new episodes and seasons | --new no |
A show you already have keeps what it has. bromigos lab media get "Show" --seasons 4
adds season 4 to it. To stop new episodes of a show, run
bromigos lab media get "Show" --seasons none --new no.
Films that aren’t out yet. Ask for them now. Your lab watches for the release and
fetches the film when it’s out at home, on digital or disc. It never fetches a camera copy
from a cinema. bromigos lab media upcoming lists what’s coming and when.
Music. Search with --music, then get an artist (all their albums) or one album. If
your lab’s usual sources find nothing for an album, it tries Soulseek next, if your lab
has it. It tells you which it used.
YouTube. A YouTube channel’s or playlist’s address goes to Pinchflat, the same as
bromigos lab youtube add (above).
Quality
Your lab’s profiles decide the quality, and get takes the best one for each kind:
- Films: a 4K remux or 4K web release when your lab has a 4K profile, else 1080p.
- TV: 4K web releases.
- Anime: the anime profile, usually 1080p Blu-ray, because most anime isn’t made in 4K.
- Music: lossless (FLAC).
--quality 1080p caps it for one request.
Your languages
bromigos lab media language # what's set
bromigos lab media language set en ja # English, with Japanese welcome as a second track
bromigos lab media language anime ja # anime in Japanese (with subtitles)
bromigos lab media language anime same # anime like everything else
bromigos lab media language subtitles en # the subtitles your lab fetches
bromigos lab media language required no # the first language is only preferred
The first audio language is required. A release without it isn’t downloaded. A release
with both tracks, such as an anime with English and Japanese audio, ranks first. Until you
set them, your languages follow your desktop’s language. You can also set them in
Settings › Lab. --audio ja changes the audio for one request.
Your media library
bromigos media # or: bromigos lab media
This opens your media library in the terminal. It has a tab for TV, films, music, YouTube, downloads, what’s coming up, Search, and Channels. The top line says how much you have and how much space is free.
Move with the arrow keys or Vim’s (j, k, h, l). Pick a show, an artist or a film,
then press a key. Request forms show the plan automatically. Request becomes
available when the current preview is ready. Once confirmed, the form shows
Requesting… and waits for the result with its controls locked. Errors stay visible
in the form.
| Key | Does |
|---|---|
Ctrl+C, q | Quit from the main screen; q types normally in inputs |
Escape, Ctrl+C in a dialog | Cancel an unconfirmed dialog and return to the library |
? | Show keyboard help |
Down, j on the tab bar | Focus the active tab’s first table |
Up, k at a table’s first row | Return to the tab bar |
Up, Down, j, k | Move through rows |
g, G | First or last row |
Ctrl+D, Ctrl+U | Page down or up |
Enter | Open the selected item |
Left, Right, h, l | Select tabs on the tab bar; switch between the title list and its side table |
[, ], H, L | Previous or next tab from the main screen |
7, a, Ctrl+F | Search for media, including titles outside your library |
8, c | Channels tab; add or remove a selected title from a channel |
m | Monitor it, or stop. On a season or an album, just that one |
n | Pick up new episodes and seasons, or stop |
P | Change its quality profile |
f | Search for it now |
o, O | Open it in Jellyfin, or in Seerr |
t | Play it full screen. A show plays its next unwatched episode |
e | List a season’s episode files |
D | Delete it |
/, s | Filter by name, and change the sort: newest, size, name, missing, profile |
Add to channel… (c) below the list puts the selected title in a picked channel. Choose the channel’s Add to entry, then Apply channel choice. The selected title’s channel names stay visible beside the button and in the row’s hover hint. A diamond marks a title already in a channel.
Hover over anything to see what it does. The media guide covers Channels, its keys and CLI commands.
Deleting removes the files from the disk, and frees the space. First it shows what goes
and how much space that frees. Choose Delete or Cancel; Cancel is selected first.
Use Left/Right to choose a button and Enter to activate it.
Tab and Shift+Tab also move between controls. Escape or Ctrl+C cancels.
Up/Down moves to or from the exclusion checkbox; Enter or Space toggles it.
On a season, an
episode file or an album, only that goes, and it stops being monitored. You can tick
“Don’t fetch it again”, so your lab doesn’t add it back from a list.
The same changes work as commands:
bromigos lab media library tv # or movies, music
bromigos lab media monitor "Paper Moon" --season 2 --off
bromigos lab media profile "Paper Moon" WEB-1080p
bromigos lab media delete "Paper Moon" --season 1 # asks you to type the name
What’s happening
bromigos lab media status # everything downloading, stuck or requested
bromigos lab media status "Cowboy Bebop" # one title in detail
bromigos lab media recent # what arrived today
status shows each download’s progress and time left. When something is stuck, it says
why. For one title, it also shows:
- which seasons are monitored and on disk;
- whether new episodes are picked up;
- the audio languages of the files;
- the subtitles.
If nothing has turned up, it says what your lab’s indexers found when it asked them.
The dashboard’s Requests card shows the same thing. The Calendar panel can show new episodes and film releases too: turn on “Your media server’s releases” in its settings.
VECTOR does all this when you ask him: “download Cowboy Bebop”, “get season 2 of …”, “what’s coming up?”. He tells you what he found and asks before he requests, unless you plainly asked him to download one thing. When it’s in your library, he tells you.
Shortcuts to other commands
bromigos lab connectis the same asbromigos setup homelab.bromigos lab targetis the same asbromigos target. See Creating with AI.
If something’s wrong
- “The queue’s service isn’t running.”
bromigos lab runtries to start it. If it still isn’t running, runsystemctl --user start bromigos-lab.service. To keep it running, runsystemctl --user enable --now bromigos-lab.service. - A job waits for memory. Something else is using the graphics card: another job, or a
model someone loaded. The job starts by itself when there’s room.
bromigos lab modelsshows what’s using it. - A card says “unreachable”. That service didn’t answer.
bromigos lab doctorsays what to check.
Setting up a lab
bromigos lab provision turns a spare Linux box into your lab. It installs a start page,
live graphs, daily backups and monitoring, and connects the lab console to them. Run it
with no arguments and it walks you through each step. Each step checks first and asks
before it changes anything.
You need:
- a spare box running Debian, Ubuntu, Fedora or Arch Linux, on your network, with SSH on;
- your user account on that box, with its password and the right to use sudo.
bromigos lab provision
What the guided setup asks
-
Tools on this desktop. It checks for Ansible, sops, age, Git and SSH. If some are missing, it shows a
sudo pacman -S --needed …command. Run it yourself in another terminal, then press Enter. The setup never runs sudo on your desktop. -
Your age key. Your lab’s passwords are encrypted with an age key. If you don’t have one, it offers to create one in
~/.config/sops/age/keys.txt. Keep that file safe, and keep a copy in your password manager. Without it, you can’t apply your lab again. -
The box. It offers to look for the box, the way Find my lab does, and says what it would read. If you type
yes, it lists the machines it found that answer SSH. Pick one by number, or choose Type an address. Then give your user name on the box and its SSH port. -
SSH. The first time, it shows the box’s SSH host key fingerprint. To check it, run
ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pubat the box’s own screen and keyboard. Typeyesonly if the two match. Then it offers to runssh-copy-id, which asks for your password on the box once. If you’re signed in to your Bromigos account, it first offers to add the SSH keys on your account instead. See Your account’s SSH keys on the box. -
Python and sudo on the box. Provisioning needs Python 3 and sudo without a password on the box. If either is missing, it shows the command or the
visudoline to add on the box, and waits for you. -
The hardware check. It reads the box and lists what it found. It only reads, and never changes a disk. For example:
GPU: NVIDIA GeForce RTX 3090, 24 GB, driver loaded Spare disk: 4 TB HDD, empty, not mounted Wired network: enp5s0, 2.5 Gb/s, connected USB: Coral Edge TPU. Could be used for fast object detection in Frigate -
What to install. Core is a start page (Homepage), live graphs (Netdata), daily backups (restic), a web server in front (Caddy) and monitoring. Advanced adds Kubernetes, Argo CD and Vault. The setup recommends one for your box. Start with Core if you’re not sure. You can move to Advanced later.
-
Where backups go. It lists other disks and NAS shares already mounted on the box, and the system disk as a last choice. Backups are safest off the system disk. An empty disk can hold backups once you format and mount it on the box yourself. Provisioning never formats or mounts disks.
-
The plan. Choose a folder for your lab’s Git repository, such as
~/lab. The setup writes the plan there and offers to commit it. Then it shows the services, ports, sizes and hardware, and waits for you to typeyes.
If you stop at any step, with q or Ctrl+C, run bromigos lab provision again. It
skips the steps already done and carries on. To set up a different box instead, run
bromigos lab provision --start-over.
Your account’s SSH keys on the box
When this computer is signed in to your Bromigos account, provisioning offers to add the SSH keys on your account to the box. Then any computer with one of those keys can log in to the box, as the user you set it up with.
It lists each key that isn’t on the box yet, with its fingerprint, and adds them only after
you type yes:
You're signed in to your Bromigos account as sam. These SSH keys on it aren't on the box yet:
SHA256:2pE7Yq0Jm5bYJ8Gk0lO2f2kxq5qkqHq3Lr1QeW7hS1M ed25519 laptop
bromigOS can add them to ~/.ssh/authorized_keys for sam on the box, so these keys can log in.
It only adds lines. The keys already there stay as they are.
Add this key? Type yes:
- It only adds keys. It never removes or changes a key already on the box.
- If the box doesn’t accept your key yet, adding them asks for your password on the box
once. When your own key is one of them, you don’t need
ssh-copy-idas well. - If you say no, it doesn’t ask about those keys for that box again.
- Signed out, it offers nothing. If your account can’t be read, setup carries on without it.
bromigos lab provision --ssh … asks the same question when it runs in a terminal. Add
--no-account-keys to skip it. To manage the keys on your account, go to
account.bromigos.org › SSH keys.
What you get
Apply starts Caddy, Netdata, restic backups and Homepage, plus Prometheus, Grafana, Loki
and Alertmanager.
Caddy listens on the box itself at first. Forward it to your desktop, then open
http://localhost:8080 in your browser. Netdata is under /netdata/.
ssh -L 8080:127.0.0.1:80 <user>@<host>
After health checks pass, provisioning connects the lab console and runs the doctor.
Run bromigos lab to see it, or bromigos lab doctor to check it again.
Monitoring is connected automatically. Grafana has starter dashboards for nodes,
Kubernetes, GPUs and apps. Its admin password is encrypted with your other credentials.
GPU drivers and new storage arrays still need an administrator.
Set it up by hand
The guided setup runs the same commands you can run yourself. Install Ansible, sops and age on your desktop first. The box needs Python 3, an SSH key login and passwordless sudo. Check the SSH host key before you accept it.
ssh-copy-id <user>@<host>
ssh <user>@<host>
age-keygen -o <age-key-file>
Keep the age key file safe. Use the public key printed by age-keygen below. Choose an
existing backup destination on the box. A second disk or a mounted NAS share is better
than the disk being backed up.
bromigos lab provision --repo <lab-folder> --ssh <user>@<host> \
--preset core --backup-path <backup-folder> --age-recipient <age-public-key>
The command reads the box and generates your own lab Git repository. It lists services, ports, RAM and disk needs, and the hardware it found. Notes below the list warn about a missing GPU driver or backups on the system disk. Review and commit the files before you apply them.
bromigos lab provision apply --repo <lab-folder>
Apply waits for you to type yes.
To let other machines on your local network reach it, add
--listen-address <local-network-address> to the plan. Public addresses are refused. Add
--domain <lab-dns-name> to the plan for local HTTPS. Point that name at the box and
trust Caddy’s local certificate authority on machines that open it.
Kubernetes, Argo CD and Vault
To add Kubernetes, Helm, Argo CD and Vault, commit the current repository, then generate an Advanced plan. Supply the Git URL where you will publish this repository.
bromigos lab provision --repo <lab-folder> --ssh <user>@<host> \
--preset advanced --backup-path <backup-folder> --age-recipient <age-public-key> \
--git-url <your-lab-git-url>
Review, commit and publish the new files at that URL. Then run apply again. Monitoring moves to Kubernetes. The old monitoring containers stop, and their volumes stay for recovery; historical data is not copied into the new volumes. Argo CD keeps its applications in sync with the repository. You can reach its web page with a Kubernetes port forward; its service stays inside the cluster.
Vault shows five recovery shares once, directly in your terminal. Save all five in your
password manager before you type stored. Any three can unseal it. You also choose an
operator password. Generated service passwords go into Vault. Its initial root token is
revoked after setup. Without Vault, passwords are encrypted with sops and age in your
lab repository.
Automatic unseal is a separate choice. Type yes only if you want three recovery shares
stored in a Kubernetes Secret. Cluster administrators can read them. Keep all five in
your password manager even if you choose this option.
An existing cluster
For an existing cluster, install Helm and kubectl on the desktop too. Replace --ssh
with --kubeconfig <file> --context <context>. Choose the context explicitly. Vault needs
a default storage class. Core needs an existing backup volume claim in lab-core, named
by --backup-path. Its web services stay inside the cluster. The plan lists the GPUs
that the cluster’s node labels report.
Change the selection
Use --custom for the terminal checklist. The dashboard’s Provision tab has the same
service tree and gives you the command for your selection. To change one service:
bromigos lab provision add vault --repo <lab-folder>
bromigos lab provision remove restic --repo <lab-folder>
Commit the repository before changing its plan. These commands only prepare a new plan.
Apply still needs your yes. Removing a selection leaves its running service and data
in place. Repeating apply preserves backup passwords and Vault’s recovery shares.
Creating a cluster
Prepare a cloud-init template on Proxmox, or a qcow2 cloud image and an existing
file-backed pool on a libvirt host. Include Python and the QEMU guest agent. Libvirt
also needs its Python bindings, qemu-img and cloud-localds. Local libvirt access
must already work; the provisioner never runs desktop sudo.
Allow TCP 6443 from nodes to servers, UDP 8472 between nodes, and TCP 10250 between nodes for metrics. Three-server clusters also need TCP 2379–2380 between the servers. Keep these ports inside your lab network. See the upstream k3s network requirements.
Write a cluster specification. It names the provider, storage pool, bridge or network,
VM CPU, RAM, disk, static address, public SSH key, and node role. Choose one or three
server nodes and any worker or gpu nodes. GPU images need prepared NVIDIA drivers
and the container runtime. The full format and bounded Proxmox token permissions are
in the infrastructure reference.
bromigos lab provision cluster --repo <lab-folder> --spec <cluster-json>
bromigos lab provision apply --repo <lab-folder>
The first command reads storage and generates the plan. Enter provider credentials
only in its hidden prompt. Review the VM sizes, free space and RAID health, then commit
the lab repository. Apply refreshes inventory and waits for yes. It creates only
named VMs owned by this plan. It joins the cluster and checks that its nodes are Ready.
Three control planes on one hypervisor still share that host’s failure risk.
storage_class chooses Kubernetes volumes. volume_path chooses the local-path
folder. nas can name an existing NFS export for other workloads. Monitoring needs
local or block storage. No command creates RAID arrays, ZFS pools or NAS shares.
Unknown redundancy is shown as a warning.
To grow or shrink the cluster:
bromigos lab provision add-node --repo <lab-folder> --role worker --on <provider>
bromigos lab provision add-node --repo <lab-folder> --role gpu --node-spec <node-json>
bromigos lab provision remove-node <worker-name> --repo <lab-folder>
Adding a node prompts for its resources or reads the node file. It shows the new plan
and requires yes before allocating anything. Removal drains the worker first.
Workload protection or local pod data can block the drain. Deleting the VM disk needs
a second answer naming it. Control-plane removal is refused.
To inspect storage and manage an owned VM:
bromigos lab provision storage list --repo <lab-folder>
bromigos lab provision vm list --repo <lab-folder> --on <provider>
bromigos lab provision vm console --repo <lab-folder> --on <provider> --name <vm-id-or-name>
bromigos lab provision vm snapshot --repo <lab-folder> --on <provider> \
--name <vm-id-or-name> --snapshot-name <snapshot>
The VM command also accepts start, stop and delete. Changes ask for its ID or
name. Shutdown is graceful. Console info returns a link or command. It opens no window.
KVM snapshots need a stopped VM. Pool support determines Proxmox snapshot support.
For a VM still listed as a cluster node, use remove-node before deletion. The VM
command refuses to bypass its drain.
The Provision tab has repository and specification fields, a plan view, node actions, storage inventory and owned VM commands. Commands keep their prompts in your terminal. The capacity card proposes a worker or GPU node after fifteen minutes of pressure or resource-starved pending pods. VECTOR, the desktop AI assistant, can read the same proposal. Neither creates a VM automatically.
Every plan includes monitoring. Kubernetes uses kube-prometheus-stack and Loki. A single box uses Prometheus and node_exporter, Grafana, Loki and Alertmanager. Health probes cover the installed web services. Starter alerts cover node loss, disk space, crashloops, certificate expiry and stale backups. Monitoring stays private. Use SSH forwarding for box endpoints, or Kubernetes port forwarding for cluster services. Grafana listens on port 3001 on a box and port 3000 inside the cluster.
Setting up agents
To set up Hermes Agent or OpenClaw, choose them in the Provision tree or terminal
checklist. They use an existing LiteLLM, Ollama or vLLM endpoint. The URL must be reachable
from your target and include /v1. For Hermes or OpenClaw on the same Linux box as
the model server, use http://lab-model-host:<port>/v1. You need an age public key to encrypt credentials
collected during planning. Keep its private identity available for apply.
bromigos lab provision --services hermes openclaw --ssh <user>@<host> \
--repo <folder> --age-recipient <age-public-key> --llm-url <model-url>
The prompts let you choose a model, profile, memory tools and messaging channels. Enter the model ID served by your endpoint. API keys and bot tokens use hidden prompts. Telegram and Discord are off unless you choose them. Each needs numeric allowed user IDs. Shell and file tools stay disabled.
Review and commit the generated repository, then apply it:
bromigos lab provision apply --repo <folder>
Apply installs containers, keeps their memory and session disks, stores credentials in
Vault when present, and checks their health. Without Vault, credentials stay encrypted
with sops and age in your repository. The Agents card in bromigos lab shows health,
model, gateways and activity metadata. It never shows message text or tokens. Host API
ports bind to loopback. Cluster services stay inside the cluster.
NVIDIA NemoClaw has an experimental host plan in the picker. It creates an OpenClaw sandbox on a Linux Docker host through NVIDIA OpenShell. This slice keeps its messaging off and refuses a cluster-only target. It never recreates an existing sandbox. See the agent installer notes for these limits.
In the media library, p opens Play on den TV; P changes the quality profile.
Pick a screen, show, season and episode, a movie or a downloaded YouTube video.
See Play something on a den screen.
Lab models
bromigOS knows the best open AI models for each job, and which of them fit your homelab’s graphics cards. It can suggest better ones, plan which model goes on which card, and tell you when a better model comes out.
The jobs it knows: chat, coding, memory, pictures, picture edits, cutouts, upscaling, video, 3D, voice, hearing, reading text in pictures, and reading your screen.
You need a connected homelab for most of this. To ask what fits a card you don’t have yet, you don’t.
What fits my graphics cards?
bromigos lab models recommend # for each card: what runs now, the best fit, upgrades
bromigos lab models pick image 12 # the best picture model for a 12 GB card, and why
bromigos lab models pick llm --gpu "RX 7900 XTX" # the best chat model for this card
bromigos lab models tiers video # the best video model at every card size
recommend reads what your lab actually runs and says when something better fits. It
also warns when a model you have isn’t licensed where you are, or for the use you chose.
Plan the whole lab
bromigos lab models plan
This gives you up to four ways to set up your lab. Each one says:
- which model goes on which graphics card;
- what stays loaded, and what loads only when it’s needed;
- how full each card gets;
- how fast each job will be;
- what that set-up gives up compared with the others.
You can steer the plan:
bromigos lab models plan --budget "RTX 5070=6G" # leave room on the card you game on
bromigos lab models plan --goal quality,video=speed # quality, balanced or speed, per job
bromigos lab models plan --clients 16 --context 32k # many programs sharing one model
Settings › Lab, under Plan, does the same with sliders and switches, and plans again as you move them.
- Goals. Best quality takes the strongest model that fits, even if it’s slower. Fastest takes smaller models and keeps them loaded. Balanced is in between.
- Speeds. For chat models, speeds come from published tests of the same model on the same card where there are any. Otherwise they’re estimates.
- Licences. Choose any, which is fine for a personal lab, commercial or permissive. Some models aren’t licensed in every country. bromigOS goes by your time zone unless you say where you are.
Upgrades
Nothing changes on your lab unless you ask. In Settings › Lab, under Upgrades, turn on Model upgrades. Then each kind of model can be set to:
| Setting | What it allows |
|---|---|
| Off | Nothing. |
| Safe | Only a newer version, or a better-packed copy, of the same model. |
| Any | Any better model that fits. |
For now, bromigOS only tells you about a better model. Applying an upgrade, through your homelab’s own repository, isn’t ready yet.
Once a week, bromigOS fetches the newest list of models. If a better model fits one of your cards, you get one quiet notification. To stop the weekly check:
systemctl --user disable --now bromigos-lab-models.timer
Get the newest list now
bromigos lab models refresh # the newest signed list
bromigos lab models refresh --hf # also ask Hugging Face now (needs python-huggingface-hub)
The full tables, with every job, every card size and every licence, are in the developer docs: lab-models.md.
Creating with AI
Some parts of bromigOS use AI:
- VECTOR’s brain, the model he thinks with;
- VECTOR’s voice and hearing;
- the creation tools, which make pictures, picture edits, cutouts, bigger copies of pictures and clips, 3D models and short video loops, for VECTOR and for themes’ artwork.
Each of these can run in one of three places, called targets:
| Target | Where the work runs | Costs |
|---|---|---|
homelab | Your homelab’s services, such as its AI models or ComfyUI. | Nothing. |
local | This machine: a local ComfyUI or Ollama, or VECTOR’s voice on your graphics card or processor. | Nothing. |
cloud | Paid services, such as nolgia or a hosted model. | Money. |
You choose the order. Each job tries the first target, and moves to the next if that one isn’t set up or doesn’t answer.
Keep the cloud out, or let it in
The cloud costs money, so bromigOS is careful with it:
- The cloud only works once you’ve signed in to nolgia, or given a hosted model’s key.
- Putting another target first never adds the cloud.
- bromigOS’s built-in order is homelab, then this machine, then the cloud. The first run normally sets an order without the cloud.
- To be sure the cloud is never used, run
bromigos target order homelab local.
VECTOR can’t change this setting, and he never pays for anything on his own. When he makes something, he uses your homelab or this machine. If neither can do it, he says so. He uses nolgia only if you ask for it by name.
See where AI runs now
bromigos target
For each kind of work, this shows what it would use now, and whether that answers. Or open Settings › Creation targets.
Change where AI runs
bromigos target local # this machine first
bromigos target homelab # your homelab first
bromigos target order homelab local # exactly this order; no cloud
bromigos target local --only llm # just VECTOR's brain on this machine first
bromigos target reset # every kind of work back to the overall order
Or in Settings › Creation targets, choose where each kind of work runs first.
Changes apply at once: to VECTOR’s next reply, and to the next picture you make.
The names for --only are image.generate, image.edit, image.cutout,
image.upscale, video.loop, video.upscale, model3d.generate, voice.tts (his
voice), voice.stt (his hearing) and llm (his brain).
Set up the creation tools
The first run asked which tools make pictures, picture edits, cutouts, 3D models and video loops. To answer again:
bromigos setup create
The default, “follow where AI runs”, uses the order above. You can instead fix a list of tools for each kind of work. This is also where you sign in to nolgia, if you use it.
Make pictures and holograms
- Ask VECTOR: “make me a picture of…”, “make a hologram of…”.
- Or run a job on your homelab yourself with
bromigos lab run. See The lab console.
Your settings files
~/.config/bromigos/targets.toml: where AI runs.~/.config/bromigos/create.toml: the creation tools.
The developer docs’ targets.md describes both files.
Extensions
Extensions are add-ons that other people share. An extension can be:
- a theme;
- a hologram deck, or a layer over the background;
- a desktop panel;
- a tool or a skill for VECTOR;
- support for a service in your homelab;
- a
bromigoscommand; - something to run whenever the theme changes.
Each extension is a git repository. Installing one never changes bromigOS itself, and you can turn it off or remove it at any time.
Find and install an extension
The easiest way is the Extensions window:
- Open the app launcher (Alt+P) and choose Extensions. Or open the menu and choose INSTALL › Extension catalog….
- The window lists what you have, then the catalog, with a preview of each.
- Choose an extension, and choose what to do: install it, update it, see what changed, turn it off or on, or remove it.
Each action opens a terminal that stays open, so you can see what it asks and what it did.
The theme switcher also lists the catalog’s themes after yours. Choosing one installs it and switches to it.
From a terminal
bromigos ext search # what the catalog has
bromigos ext search --kind theme # just the themes
bromigos ext info hello-deck # what it would install, and what it may do
bromigos ext install hello-deck # install one from the catalog, by name
bromigos ext install https://github.com/someone/[email protected] # any repository, at a version
What an extension may do
A theme installs straight away. It’s only colours and pictures.
Anything else shows you its parts, and what it says it needs: the network, files outside its own folder, VECTOR’s tools, or running code. It installs only when you type y. If an update would let it do more, it says NEW PERMISSIONS and asks you again.
After installing, bromigos ext install tells you what to do next. For example:
- a theme:
bromigos theme setand its name; - a deck:
bromigos-live pluginand its name; - a tool for VECTOR:
bromigos restart vector.
VECTOR can’t install extensions
VECTOR can list extensions, read about them and search the catalog. He can’t install, update or remove them. The folders they live in are read-only to him.
If a VECTOR tool you installed is changed by hand on disk, his guard notes it in its log. See His terminal and its limits.
Keep extensions up to date
bromigos ext list # what's installed, from where, at which version
bromigos ext update --all # show what changed in each, ask, then update
bromigos ext update thing --check # just look
An extension installed at a version, such as @v1.0, stays on that version. update
tells you about newer versions, and bromigos ext update thing --ref v1.1 moves to one.
Turn off or remove an extension
bromigos ext disable thing # turn it off, and keep it
bromigos ext enable thing # turn it back on
bromigos ext remove thing # remove it
Or in the menu: REMOVE › Extension…. Settings › Extensions also has a switch for each one.
Make your own
bromigos ext new widget my-panel # a working panel in ./my-panel, to edit
bromigos theme new dusk --from wick # a theme, starting from the Wick
bromigos ext validate my-panel # check it
bromigos ext install --copy ./my-panel # install it from the folder
Every kind of extension has a starter. The kinds are theme, live-deck, live-layer,
widget, vector-tool, vector-memory, vector-skill, homelab-adapter, command and
hook.
The full guide covers the manifest, permissions, testing an extension without touching your desktop, and publishing it to a catalog. It’s in the developer docs: extensions.md.
Where extensions live
~/.local/share/bromigos/ext/: each extension’s files, and the links the desktop reads.~/.local/state/bromigos/ext/ledger.json: a record of what you installed, from where, and what you approved.
Extensions never write to your own ~/.config/bromigos.
Make your own widget
A widget is one of the panels on your desktop. You can make your own in a few minutes: it’s one small Python file inside an extension, which is a folder you can share as a git repository. This page takes you from nothing to a widget other people can install.
You’ll need to know a little Python. The developer docs have the details of every part: plugins.md for what a panel is made of, and widgets.md for sizes and settings.
1. Start from a working widget
bromigos ext new widget my-gauge
This makes a folder, my-gauge, with a widget that already works: it shows the machine’s
load average. The folder holds:
widget.py, the widget itself;bromigos-ext.toml, the manifest, which says what the extension is and what it may do;README.md, for the people who’ll use it.
2. Make it yours
Open widget.py. The widget is a class with a few parts:
tick()reads your data. It runs everyintervalseconds.draw(cr, w, h)paints the panel, using the same drawing helpers as bromigOS’s own panels, so it matches every theme.region(x, y, w, h, "…")gives each part a hover hint. Every part should have one.
Then tell the gallery about it. These lines are what people see on its card:
description = "The load average over 1, 5 and 15 minutes"
category, reads = "system", "the load average"
category is one of system, network, homelab, media, notes or fun. reads says
in a few words what data it looks at.
Two more things make a widget feel at home:
- Sizes. A widget can have a compact size, a standard one, and wider or larger ones
that show more. You list them in
sizes, and draw each its own way. See Size classes. - Settings. If your widget needs a place, a list of hosts or a sign-in to an online
account, list them in
settings. bromigOS draws the form for you, and keeps any token in your keyring. See A widget’s settings.
Show real data only. If there’s nothing to read, say so in the panel.
3. Try it
Check the folder the way installing would, then look at the widget without putting it on your desktop:
bromigos ext validate ./my-gauge
bromigos-widgets render ./my-gauge/widget.py out.png # draw it to a picture
bromigos-widgets render ./my-gauge/widget.py big.png --size 900x600 # at another size
Open the pictures to see it. Nothing appears on your desktop yet.
When it looks right, install your folder:
bromigos ext install --copy ./my-gauge
A widget runs code, so this shows what it can do and asks you to type yes. Within a few
seconds the widget is in the widget gallery: press Super+Alt+W
and switch it on. After each change to your folder, run bromigos ext update my-gauge to
copy it in again.
4. Share it
Put the folder in a git repository and push it. Tag a version so people can pin it:
git tag v0.1.0 && git push --tags
Anyone can now install it by its link. They open Settings › Widgets, click Install from URL… and paste it, or run:
bromigos ext install https://github.com/you/[email protected]
Before installing, they see your widget’s name, what it reads, its licence and what it may reach.
5. Put it in the catalog
The catalog is the list that Get more widgets shows. To add your widget, open a pull
request to bromigos-org/extensions with an
entry in its index.toml and a picture of your widget. That repository’s
CONTRIBUTING.md
has the steps and what reviewers look for.
Updating and rolling back
One command updates everything, and one undoes an update if something goes wrong.
Update bromigOS
-
Open a terminal with Alt+Shift+Enter.
-
Run:
bromigos update -
Type your password when
sudoasks, and answer the package manager’s questions.
Or open the menu and choose UPDATE › Update bromigOS, or choose Update now in Settings › Updates & recovery. Both open a terminal for you.
To see what an update would do first, without changing anything:
bromigos update --check
What an update does
- It updates every package on the system, bromigOS’s and Arch Linux’s, and then the packages you installed from the AUR. It takes a snapshot just before and just after, so you can undo all of it.
- It runs any migrations: small changes to your settings that a new version needs. A migration that has to change one of your files keeps a copy of the old one.
- It applies your theme again.
- It restarts the parts of the desktop that still run old code: the background, the panels, the bar, notifications, the volume display, VECTOR and his voice. Apps that ask for it, such as BRODEC, get their background services restarted too. Your apps keep running: an app that can restart itself does so when you aren’t using it, and one that might be busy, such as in a call, shows a notification with a Restart now button instead.
When the update asks you to restart
A new Linux kernel or a new NVIDIA graphics driver only runs after the computer restarts. When an update installs one, its last line says so, and a notification says the same:
The graphics driver was updated: restart the computer to use it. Until then, the animated background stays off.
Until you restart, the update leaves alone what needs the graphics card: the animated background and VECTOR. Started now, they couldn’t use the card, and would run slowly on the processor instead. Whatever is already running keeps running. Everything else restarts as usual. Restart the computer when it suits you.
If the animated background starts anyway before then, it shows a still picture instead, and a notification says the graphics card isn’t available (Troubleshooting).
When an update brings a new release, its last line says so. To read what the release
brings, run bromigos whats-new, or see What’s new.
Use bromigos update rather than sudo pacman -Syu. A plain pacman -Syu doesn’t run the
migrations or the restarts, and bromigos update --rollback can’t undo it. When it changes
bromigOS’s packages, pacman reminds you to run bromigos update.
Packages from the AUR
The AUR is where Arch Linux users share recipes for software that Arch
Linux doesn’t carry. bromigOS installs paru to build them. bromigos update updates the
packages you installed from it too, after everything else.
Anyone can write an AUR recipe, and nobody checks it. So before paru builds a package, it shows you the recipe, or what changed in it, and asks. Read it, or trust whoever maintains it.
bromigos update --checklists the AUR updates waiting.bromigos update --no-aurleaves the AUR out this time.bromigos update --yesbuilds without showing the recipes. Use it only for AUR packages you trust.- If one fails to build, the update still finishes. It tells you which package failed, and how to try again.
- Without a terminal and without
--yes, the update leaves the AUR out, and says so. bromigos aur offturns the AUR off: bromigOS removes the paru it installed, and updates leave AUR packages alone.bromigos aur onturns it back on.
Undo an update
If an update broke something:
bromigos update --rollback
It shows what the last update changed, such as the packages and how many files, and asks
before it does anything. Then it puts every system file back as it was before the update.
This happens on the running system. Afterwards, run bromigos restart, or restart the
computer. If the update included a new kernel, restart the computer.
To undo an older update, give its snapshot number. bromigos update --check lists the
updates you can undo, with their numbers.
bromigos update --rollback 151
In Settings › Updates & recovery, Roll back… undoes the last update.
If the computer won’t start
Start it from a snapshot in the
boot menu. That gives you the
system as it was before the update, until you restart. To keep it, run
bromigos update --rollback there. In a snapshot, it doesn’t undo an update. It makes
the snapshot you started your system, so the next normal start comes up on it.
The system you rolled back from is kept, in case you need something from it. The rollback prints how to delete it once everything works.
What you need for snapshots
Snapshots need the system disk to use the btrfs file system, with snapper set up. An install from the bromigOS USB stick has both. To check your machine:
bromigos rollback status
It says whether your updates are snapshotted, and what can be undone. If something’s missing, it tells you what to run:
bromigos rollback setupsets up snapper, and adds the snapshots to the boot menu.bromigos rollback allowlets you list the system’s snapshots withoutsudo, so updates can be recorded. It asks for your password once.
Not on btrfs? Updates still work. There’s just no snapshot to go back to, and
bromigos update --check says so.
Channels
A channel is the stream of updates you follow.
| Channel | What you get |
|---|---|
stable | Released versions. The default. |
rc | Release candidates: the next stable release, a little early. |
edge | Every change, as soon as it’s built. |
dev | Your own builds, from a local repository. For people working on bromigOS. |
To see your channel and change it:
bromigos channel # which channel you follow
bromigos update --channel edge # switch to edge, and update
Moving to an older channel, such as from edge back to stable, puts packages that are
newer than that channel’s back to its versions. bromigos update --channel does this for
you.
You can also change the channel in Settings › Updates & recovery.
The manual
This manual is published next to bromigOS’s packages. It follows the newest code, so on
the stable channel it may describe things that haven’t reached you yet. In Settings,
F1 opens it on the page you’re looking at.
Hardware
bromigOS looks at your computer when it installs, and sets up what the hardware needs: the graphics driver, and on a laptop the battery, screen brightness, power profiles and the touchpad. This page shows how to check what it found, and how to run that set-up again.
See what bromigOS found
bromigos hw
This lists your graphics cards and their drivers, whether this is a laptop, and what
bromigos hw setup would change.
To see which graphics card the login screen and desktop will use at the next login, run:
bromigos hw display
It also says whether you chose that card in Settings, are trying it, or bromigOS chose
it. It changes nothing, and it doesn’t report which card an already running desktop is
using. bromigos hw graphics lists every card and what it’s
for.
Set up your hardware again
Run this if a new graphics card needs its driver set up, or if the hardware check shows missing setup. Updates don’t install drivers on their own.
bromigos hw setup # asks for your password for the system's part
bromigos hw setup --dry-run # only say what it would do
It changes only what’s different. It never removes anything, and it never replaces an NVIDIA driver you already have.
It’s also a first-run question (bromigos setup hardware), and an item in
the menu: SETUP › Hardware.
Graphics cards
| Your graphics card | What bromigOS installs |
|---|---|
| NVIDIA GeForce 16 series, RTX 20 series and newer, and their workstation cards | NVIDIA’s driver, with its open kernel modules, and hardware video decoding. |
| Older NVIDIA cards, up to the GeForce 10 series | The open-source driver, nouveau. NVIDIA’s own driver for the GeForce 600 to 10 series is only in the AUR now. bromigos hw setup offers to build it for you with paru, and asks first. |
| AMD Radeon | Mesa, with Vulkan and video decoding. |
| Intel graphics | Mesa, with Vulkan and the right video decoder for its age. |
| A virtual machine | Mesa. |
Very old AMD and Intel chips get Mesa without Vulkan.
bromigOS knows a card by its ID, from NVIDIA’s and Mesa’s own lists, rather than guessing from its name.
On a new NVIDIA card the driver loads at the very start, so it is ready for the start-up screen and the login screen.
More than one graphics card
Settings › Graphics lists every graphics card in your computer, whatever its make, and what each one is for. Choose what each card is for explains it. Until you choose, bromigOS decides by itself, as below.
If only one working graphics card has a screen connected, bromigOS prefers that card for the login screen and desktop. You do not need to run setup just to choose it. A card with no screen connected does not take priority because the computer booted on it.
If screens are connected to several cards, or none report a connected screen, bromigOS keeps the existing GPU policy. Your explicit choices still take precedence, including a laptop’s saved preference. Cards bound or reserved for a virtual machine through VFIO, the kernel’s device-assignment interface, are excluded from the automatic choice.
The check happens when the login screen and desktop start. Moving a monitor cable does not move a running desktop’s renderer. Save your work and log out to start a new session; restart the computer if the login screen also needs to choose again.
This chooses among cards whose drivers already work. It does not install a missing driver.
The default bar follows the available screens. If you pinned your bar or monitor settings to a connector name, check those settings after moving the cable. A connector on another card can have a different name.
Choose what each card is for
Open Settings › Graphics. Each card shows its driver and the screens connected to it, and a Use for row with three buttons:
- Desktop: the card that draws the login screen and your desktop. Only a card with a screen connected can be chosen.
- Games and heavy apps: the card games and demanding programs run on, even when the desktop draws on another card. One card can do both.
- Virtual machines: a card kept for virtual machines only, so a VM can use it as its own graphics card. This is called GPU passthrough.
Hover over anything on the page to see what it does. Each use is Automatic until you choose. Automatic for the desktop is the rule above. For games, it’s the strongest card: a card of its own over one built into the processor, then the newest.
If you add, swap or remove a card, bromigOS notices at the next start. A use whose card is gone goes back to Automatic.
Move the desktop to another card
- Connect a screen to the card.
- In Settings › Graphics, choose Desktop on that card, then Try it.
- Enter your password.
- Log out and log back in. The login screen and the desktop now use that card.
- Settings opens by itself. Choose Keep.
Until you choose Keep, the old card is still your choice. If the screen stays dark, restart the computer and the old card comes back by itself. You never need the boot menu for this.
You can also go back from a text console. Press Ctrl+Alt+F3, log in, and run:
sudo bromigos hw display reset
sudo systemctl restart display-manager
The first command sets the desktop’s card back to Automatic. The second brings the login screen back. It ends any open session, so restarting the computer works too.
From a terminal, bromigos hw display use CARD chooses a card and bromigos hw display keep keeps it. A card is its PCI address, such as 0000:03:00.0, or its name in
/dev/dri, such as card1.
Run games on another card
Choose Games and heavy apps on a card. It’s yours alone, so it needs no password. Programs use it when you start them one of these ways:
-
Steam. Turn on Start Steam on the games card. Steam and every game it starts, Proton’s included, then run on that card. It applies when you start Steam from the app launcher, so restart Steam after you turn it on.
-
Any other program. Start it with
bromigos hw runin front:bromigos hw run -- blender -
One Steam game. Set its launch options to
bromigos hw run -- %command%.
bromigos hw run sets the switches each maker’s driver expects, and nothing when the
games card also draws the desktop. bromigos hw run --print shows what it sets.
Keep a card for virtual machines
A card for a virtual machine must pass a few checks first. Open the card’s Virtual machines row in Settings › Graphics to see them. Hover over one to see why it matters. The checks are:
- the IOMMU is on. It’s a firmware setting, and the row says how to turn it on;
- the card doesn’t share its IOMMU group with other devices;
- no screen is connected to it, the desktop doesn’t use it, and another card with a screen stays for the desktop;
- the computer doesn’t start on it. Choose the other card in the firmware settings if it does;
- the start-up files can hold the card. The row says what to add if they can’t.
When they all pass, choose Virtual machines on the card. A terminal opens and asks for your password, then rebuilds the start-up files. Restart the computer. From then on, your virtual machines can use the card, and the desktop and programs can’t.
To give the card back, choose Virtual machines again, or run
bromigos hw vfio release CARD, then restart.
bromigOS keeps the card by its PCI address, so it works with two identical cards. The
card’s own sound device goes with it. Some older AMD cards need an extra kernel module,
vendor-reset, to restart a VM. The checks say when yours does.
NVIDIA’s own driver for an older card
For a GeForce 600 to 10 series card, NVIDIA’s own driver is only in the AUR.
- Run
bromigos hw setup. It asks whether to build the driver with paru. Answery. - paru shows you the recipe to review, then builds the driver.
- Restart the computer.
- Run
bromigos hw setupagain. With the driver loaded, it finishes setting it up.
Until then, the card runs on nouveau. The installer never builds this driver by itself.
If you install the driver yourself instead, run bromigos hw setup afterwards too.
Laptops
On a laptop, bromigOS also sets up:
-
The battery on the bar. It shows the charge, with
+while charging and=when plugged in but not charging. It turns amber below 25% and red below 10%. Hover over it for the time left, the power it’s using and the battery’s health. -
Power profiles: power saver, balanced and performance. The bar shows the profile in use. Click it for the next one. The menu has them under TOGGLE too. If you already run another power manager, such as TLP or tuned, bromigOS leaves it alone.
-
The brightness keys, which show the level on screen.
-
Two graphics cards. On a laptop with a built-in graphics chip and an NVIDIA or AMD card, the desktop runs on the built-in one to save the battery. The other card sleeps until something needs it. To run a game or a heavy program on the other card, start it with
bromigos hw run --in front, or turn on Start Steam on the games card in Settings › Graphics. Run games on another card has more.bromigos hw run -- blenderprime-run(NVIDIA) andDRI_PRIME=1(AMD) work too.
The touchpad
| To | Do this |
|---|---|
| click | Tap with one finger. |
| right-click | Tap with two fingers. |
| middle-click | Tap with three fingers. |
| scroll | Slide two fingers. The page follows your fingers. |
| move between workspaces | Swipe sideways with three fingers. |
The touchpad turns off while you type. To change any of this, open
Settings › Keyboard & input, or run bromigos setup input.
To turn the three-finger swipe off, set gestures = false in the bromigos table of
your ~/.config/hypr/hyprland.lua.
If something’s wrong
- A black screen after installing an NVIDIA driver. Restart once: the new driver loads
when the computer starts.
bromigos hwsays whether the driver is loaded. - A black screen after choosing another desktop card. Restart the computer: a card
you haven’t kept yet goes back by itself. Or press Ctrl+Alt+F3 and run
sudo bromigos hw display reset, thensudo systemctl restart display-manager. - A black screen after moving a monitor to another card. From a text console, run
bromigos hw displayto check which card the login screen uses. A card chosen in Settings › Graphics wins while it has a monitor. Check your Hyprland hardware settings and any custom SDDM compositor command before changing drivers. - Hibernation. If you set up hibernation, NVIDIA’s driver can’t load at the very start.
bromigos hw setupnotices this, and loads it a little later instead. - The battery or the power profile doesn’t show.
bromigos hwlists the battery it finds. The profile shows once the power profiles service runs:bromigos hw setupsets it up.
More in Troubleshooting.
For power users
Everything Settings › Graphics does, as commands, files and rules.
Every button, as a command
CARD is a PCI address, such as 0000:03:00.0, or a name in /dev/dri, such as card1.
| In Settings › Graphics | The command | Asks for |
|---|---|---|
| The page itself | bromigos hw graphics (--json for scripts) | nothing |
| Desktop on a card | bromigos hw display use CARD (or auto) | your password |
| Keep, Go back | bromigos hw display keep, bromigos hw display cancel | your password |
| Back to Automatic, from a text console | sudo bromigos hw display reset | sudo |
| Games and heavy apps | bromigos hw games use CARD (or auto) | nothing |
| Start Steam on the games card | bromigos hw games steam on, off | nothing |
| One program on the games card | bromigos hw run -- PROGRAM (--print lists what it sets) | nothing |
| The checks for virtual machines | bromigos hw vfio | nothing |
| Virtual machines on, off | bromigos hw vfio reserve CARD, release CARD or release all (--dry-run for either) | sudo |
Where the choices live
| File | What |
|---|---|
/var/lib/bromigos/hw/graphics.json | the desktop’s card and the cards kept for VMs (root’s) |
~/.config/bromigos/graphics.json | your games card |
~/.local/share/applications/steam.desktop | your copy of Steam’s launcher, from Start Steam on the games card: each Exec= line starts through bromigos hw run -- |
~/.local/state/bromigos/hw/hyprland.lua | the session’s graphics settings, written by bromigos hw setup. Edit it and bromigOS leaves it alone. bromigos = { hw = false } in your hyprland.lua ignores it |
/etc/bromigos/hw/vfio-pci-override.sh | sets driver_override to vfio-pci on a reserved card and its functions |
/etc/modprobe.d/bromigos-vfio.conf | runs that script when vfio-pci loads; its softdep lines load vfio-pci before drm, nvidia and the card’s other drivers |
/etc/mkinitcpio.conf.d/bromigos-vfio.conf | puts vfio-pci and the script in the initramfs |
A choice names a card by its PCI address and its vendor and device ID together. Every start reads the cards again. A use whose card is gone, or has another card in its slot, goes back to Automatic.
How it works
- A trial.
hw display usesaves the card with this boot’s ID, from/proc/sys/kernel/random/boot_id. The login screen’s launcher and Hyprland read the choice throughbromigos hw display. A new boot has a new ID, so a trial nobody kept ends by itself. hw run. It sets nothing when the games card draws the desktop too, and nothing for the whole session, so your other apps stay where they are. Per program:MESA_VK_DEVICE_SELECT=vendor:deviceputs the card first in Vulkan’s list. DXVK and vkd3d-proton take the first device, so Proton games follow it on any make of card. Two identical cards share an ID, so then it setsDRI_PRIME=pci-0000_03_00_0, the card’s PCI address, instead;- AMD, Intel and nouveau, for OpenGL, get
DRI_PRIME=pci-…; - NVIDIA’s driver, while another card draws the desktop, gets PRIME render offload:
__NV_PRIME_RENDER_OFFLOAD=1,__VK_LAYER_NV_optimus=NVIDIA_onlyand__GLX_VENDOR_LIBRARY_NAME=nvidia.
- Automatic for games picks a card of its own over one built into the processor, then the newer chip family, then more video memory, then the desktop’s card on a tie.
- Virtual machines. The card is reserved by PCI address, never by vendor and device
ID, so one of two identical cards can be reserved.
vfio reservewrites the three files above, then runsmkinitcpio -P. It needs thebaseandmodconfhooks in your initramfs. bromigOS never edits the kernel’s command line: on Intel, addintel_iommu=onyourself, as the checks say. Handing a card over only while a VM runs isn’t built: a reserved card stays reserved from start to start.
Script it
bromigos hw graphics --json gives every card, its driver, its screens, its uses and its
VM checks in one document. bromigos hw --json gives what bromigos hw prints. Every
bromigos hw command takes --json, and the document’s schema is in
core/README.md.
The developers’ version is What each card is for.
Bluetooth
The Bluetooth icon on the bar shows whether Bluetooth is on and what’s connected. A click opens a panel where you connect, disconnect and pair devices: controllers, headphones, keyboards, mice and phones.
The icon
The icon sits between the network and the volume on the bar. Hover over it to see every connected device and its battery.
- Dim: Bluetooth is off.
- Lit: Bluetooth is on. A small number beside it counts the devices connected.
- A bar of five cells under it: the battery of the main device connected. A controller counts first, then headphones. The icon turns amber, and stays amber, at 15% or less.
- A slow blink: Bluetooth is looking for devices, or pairing one. It stops when that ends.
- A short glow when a device connects or disconnects. A quiet notification says which.
The icon hides on a computer with no Bluetooth.
| Do this | To |
|---|---|
| Click | Open the Bluetooth panel |
| Right-click | Open the quick menu |
| Middle-click | Turn Bluetooth on or off |
With reduced motion on (bromigos accessibility motion reduced), the icon never blinks or
glows, and nothing in the panel moves.
The panel
The panel opens under the icon. To close it, press Esc, click the icon again, or click anywhere else. A click on something else still does what it does: a click on another icon on the bar both closes the panel and opens that icon’s menu. Tab and the arrow keys move between its buttons.
- The switch at the top turns Bluetooth on or off.
- Paired lists the devices this computer knows. Each shows whether it’s connected and its battery, and has CONNECT or DISCONNECT.
- ⋯ beside a device has AUTO-RECONNECT, which lets it connect by itself when you switch it on, and FORGET…, which unpairs it. Forget asks you to click twice.
- SCAN looks for devices in pairing mode for 30 seconds. They appear under Nearby as they’re found, strongest signal first, each with PAIR.
- OPEN SETTINGS opens Settings › Bluetooth, which has a page for each device and pairing step by step (Settings).
Pairing trusts the device, so it reconnects by itself next time, and then connects it. If something goes wrong, the panel says what, in plain words.
Pair a controller
An Xbox Wireless Controller pairs over Bluetooth. That covers the Xbox One S pad and later, the Elite Series 2 and the Series X|S pads.
- Click the Bluetooth icon and choose SCAN.
- Switch the controller on with the Xbox button.
- Hold the small pair button on its top edge until the Xbox logo flashes fast.
- Choose PAIR beside Xbox Wireless Controller.
The controller reconnects by itself whenever you switch it on.
Linux’s own driver gives you the buttons and sticks. Rumble and the battery come from a driver called xpadneo. When a controller runs without it, the panel shows BASIC DRIVER · ENABLE XBOX CONTROLLER SUPPORT under it. Choose it, or run:
bromigos peripheral enable xbox-controller
That installs xpadneo and the headers of every kernel you have installed, so the driver builds for each of them. It asks for your password. Then switch the controller off and on again. Keyboards and peripherals has more about peripheral modules.
The Xbox Wireless Adapter, the USB stick some controllers came with, isn’t Bluetooth. It
needs a different driver, xone, which bromigOS doesn’t install. It’s in the AUR (Arch’s
shared build recipes): paru -S xone-dkms. Its build downloads the adapter’s firmware
from Microsoft.
Pair headphones or a speaker
- Put the headphones in pairing mode. This is often a long press on the power button.
- Click the Bluetooth icon, choose SCAN, then PAIR beside them.
When headphones or a speaker connect, they become the sound output. To keep the sound
where it is instead, turn off Switch the sound over on connect in
Settings › Bluetooth, or run bromigos bluetooth audio-default off.
Connected headphones show two buttons:
- HI-FI plays music at full quality, with the microphone off.
- HEADSET + MIC turns the microphone on for calls. The sound drops to phone-call quality while it’s on.
The line under the name shows which one is on and the codec in use, such as LDAC, AAC or SBC. A codec is how the sound is squeezed to travel over Bluetooth. Your headphones and this computer pick the best one they share.
From a terminal: bromigos bluetooth profile <address> hifi or headset.
Keyboards, mice and phones
- Keyboards often ask you to type a code on them. The panel shows the six digits. Type them on the keyboard, then press Enter on it.
- Phones show a code on both screens. If they match, choose YES, PAIR in the panel and accept on the phone. A phone connects for its sound only: music from the phone plays here.
- Older devices may ask for a PIN instead. It’s often
0000or1234. The device’s manual says.
In a terminal
bromigos bluetooth tui is Bluetooth in the terminal, with more than the panel has room
for. MORE… in the panel opens it in a window of its own, and so does Bluetooth
Devices in the app launcher (search for bluetooth, devices or controller).
- Pairing step by step. Press a, or p with no new device selected. With a device found by s (scan) selected, p pairs it straight away. Choose what you’re pairing, and it says how to put that kind of device in pairing mode, with the steps for an Xbox controller. It scans, with devices appearing on a radar as they’re found. Pick yours, answer any code it asks for, and it ends on READY.
- Your devices, with their battery, signal strength, and a headset’s sound profile and codec. / searches them.
- A device’s page (Enter):
- a controller shows its buttons, sticks and triggers live as you press them, and u makes it rumble. It also names the controller’s driver. Each stick and trigger is shown where it really is, whichever driver runs the controller;
- headphones switch between HI-FI and HEADSET + MIC with m; o and i make them the sound output and the microphone; v shows the microphone’s level as you speak;
- every device can be renamed (r), set to reconnect by itself or not (t), forgotten (f), or forgotten and paired again (R).
- Troubleshooting (x) shows whether the Bluetooth service runs and the radio is blocked, resets the adapter (a), and lists what went wrong lately in plain words. e clears that list.
- c connects or disconnects the selected device, and o turns Bluetooth on or off.
j, k and the arrow keys move, Esc goes back,
? lists every key, and q quits. The mouse works too: click a device
to select it, click again to open it, and scroll to move. To open it with a key of your
own, for example Super+Shift+B, add a line after the
dofile() line of ~/.config/hypr/hyprland.lua:
require("bromigos.keys").exec("SUPER + SHIFT + B", "bromigos bluetooth tui --window")
The quick menu
Right-click the icon for the quick menu. It turns Bluetooth on or off, makes this computer visible to devices nearby, and connects or disconnects each paired device with one click. Use the arrow keys and Enter, or the mouse.
When it doesn’t work
- The icon says bluetoothd isn’t running. Start the Bluetooth service:
sudo systemctl enable --now bluetooth. - Bluetooth won’t turn on. A hardware switch or key may have turned the radio off. Turn it on there.
- A device doesn’t appear. Put it in pairing mode again, then SCAN.
- Pairing fails. Choose FORGET… under ⋯ if it was paired before, then pair it again.
(bromigos bluetooth)
For power users
Everything the icon, the panel, Settings › Bluetooth and the terminal app do, as commands, files and rules.
Every action, as a command
MAC is a device’s address, such as AA:BB:CC:DD:EE:FF. bromigos bluetooth lists them.
| To | The command |
|---|---|
| See the adapter and every known device, with battery | bromigos bluetooth (or status) |
| Turn Bluetooth on, off or over | bromigos bluetooth power on, off, toggle (a soft rfkill block is lifted first) |
| Be visible to devices nearby | bromigos bluetooth discoverable on, off |
| Look for devices | bromigos bluetooth scan [SECONDS] (8 by default) |
| Pair and trust a device | bromigos bluetooth pair MAC (one that asks for a PIN or passkey pairs from the panel: bromigos bluetooth panel pair MAC) |
| Connect, disconnect | bromigos bluetooth connect MAC, disconnect MAC |
| Auto-reconnect | bromigos bluetooth trust MAC on, off |
| Forget | bromigos bluetooth remove MAC |
| HI-FI or HEADSET + MIC | bromigos bluetooth profile MAC hifi, headset |
| Switch the sound over on connect | bromigos bluetooth audio-default on, off |
| ENABLE XBOX CONTROLLER SUPPORT | bromigos peripheral enable xbox-controller |
| The panel, the quick menu | bromigos bluetooth panel [scan], bromigos bluetooth menu |
| The terminal app, in its own window | bromigos bluetooth tui --window |
Script it
- Every
bromigos bluetoothcommand takes--json.status --jsonis the whole state as one document. A change answers with the state after it, withokandsaid. A refusal or a failure is{"ok": false, "error": "…"}with exit status 1. bromigos bluetooth sessionis bluez as JSON lines on standard input and output: the state on every change, requests and their replies, the pairing steps and any code a device asks for, a controller’s live input and rumble, and a microphone’s level. The terminal app is built on it, and so can your own tools be.
Files and rules
~/.config/bromigos/bluetooth.tomlholdsaudio_default = trueorfalse.- Pairing goes through bluez’s D-Bus API with bromigOS’s own agent
(
org.bluez.Agent1), which puts any PIN, passkey or “does it show 123456?” question in the panel, Settings or the terminal app. Pairing trusts the device, then connects it. - The bar icon follows bluez’s D-Bus signals, so it never polls.
- A controller’s layout in the tester is SDL_GameControllerDB’s mapping for that pad,
by its SDL GUID, as Steam and most games read it. That’s why the right stick and the
triggers show where they really are whether xpadneo, xpad or hid-microsoft drives the
pad. A mapping in
SDL_GAMECONTROLLERCONFIGcomes first, as in SDL, so you can fix a pad’s layout there. A pad the database doesn’t know is laid out from its driver’s axes. - Xbox controllers. xpadneo and xpad put the right stick on
ABS_RX/ABS_RYand the triggers onABS_Z/ABS_RZ. hid-microsoft, Linux’s own driver for an Xbox pad over Bluetooth, puts the right stick onABS_Z/ABS_RZand the triggers onABS_BRAKE/ABS_GAS. Keyboards and peripherals has the module.
The developers’ version is Bluetooth in the terminal.
Keyboards and peripherals
Some devices can do more on bromigOS than type. A keyboard’s macro keys can open VECTOR and the holograms, its dial can change VECTOR’s voice, and its lighting can take his colour. Each device’s extras come in a peripheral module, which is off until you turn it on.
bromigOS has a module for Razer keyboards, and one for Xbox Wireless Controllers. You can write one for a similar keyboard.
Turn a module on
- Connect the device.
- Open Settings › Peripherals, and turn the module on. Or open the menu and choose SETUP › Peripherals.
The first run also asks, when a device with a module is connected.
From a terminal:
bromigos peripheral # the modules, and whether your device is connected
bromigos peripheral enable razer-keyboard # turn one on
bromigos peripheral status # what each key does now
bromigos peripheral disable razer-keyboard # turn it off again
A Razer keyboard
This module works with the Razer keyboards that openrazer supports, such as the BlackWidow, Huntsman and Ornata.
Turning it on:
- installs openrazer, the driver the macro keys and the lighting need;
- adds you to the
openrazergroup, so log out and back in once; - sets up the keys, the dial and the lighting.
A new driver loads after you restart the computer.
| Key | What it does |
|---|---|
| M1 | Show or hide VECTOR. |
| M2 | Hold to talk to VECTOR. |
| M3 | Show VECTOR, and turn conversation mode on or off. |
| M4 | Open the holo deck. |
| M5 | Take a screenshot of an area. |
| Side 1 | Open the menu. |
| Side 2 | Open the timeline. |
| Side 3 | Start or stop recording an area of the screen. |
| Press the dial | Mute or unmute the desktop’s sounds and VECTOR’s voice. |
| Turn the dial | Change VECTOR’s voice. A notification names it. |
| Volume roller | Change the volume. |
These keys only work on this keyboard, so other keyboards never set them off. A keyboard without some of these keys simply doesn’t have them. Without VECTOR, his keys do nothing.
The lighting
The keyboard lights up in the colour of the voice VECTOR is using:
- amber when he’s concerned;
- red and pulsing when he’s alarmed;
- brighter while he listens or speaks;
- your theme’s main colour, dimmed, when he isn’t running.
To use your theme’s colour all the time, set Lighting follows to the theme in
Settings › Peripherals, or set rgb_follow = "theme" in the file below.
An Xbox controller
The xbox-controller module installs xpadneo, the full driver for Xbox Wireless
Controllers over Bluetooth. It adds rumble, the battery and the button layout games
expect. Pair the controller first: Bluetooth has the
steps. Then:
bromigos peripheral enable xbox-controller
It installs xpadneo-dkms and the headers of each kernel you have installed, so the
driver builds for every one of them. Switch the controller off and on again afterwards.
The module has no keys and nothing to set.
Change what a key does
Your choices are in ~/.config/bromigos/peripherals.toml:
[razer-keyboard]
enabled = true
rgb = "all" # all: the keyboard and a Razer mouse; device: the keyboard only; off
rgb_follow = "theme" # the theme's colour; "vector" (the default) follows his voice
dial = true # false: leave the dial alone
[razer-keyboard.keys]
side1 = "bromigos-live timeline" # any command
m5 = "" # nothing
After you save it, run bromigos peripheral refresh. If you made a typo,
bromigos peripheral status tells you.
Another keyboard
A keyboard that can send the keys F13 to F24, as many programmable keyboards can, works
with a module of your own: a folder in ~/.config/bromigos/peripherals/ with one file
that describes its keys. The lighting needs openrazer, so for now it works on Razer
devices only.
The format is in the developer docs: peripherals.md.
Playing games
On a BlackWidow V4 Pro with the Razer module enabled, Fn+F10 toggles
game mode. Its gaming LED follows the mode. Ctrl+Shift+F12 leaves it, even
if the keyboard has disabled Super. This needs the module’s existing OpenRazer and
input-device permissions. You can always enter with Super+Ctrl+G or bromigos game on.
Wake-on-LAN
Wake-on-LAN switches a computer on over the network. Another computer on the same network sends a short message, a “magic packet”, to the network card of the switched-off machine, and the machine starts as if you had pressed its power button.
bromigOS keeps Wake-on-LAN on for wired network cards, by itself. You don’t need to run anything. It stays on across restarts, after an update, and when you plug the cable into another port.
BRODEC’s Power on button on your phone uses it: it asks your lab, or another of your machines on the same network, to send the packet for you.
What it needs
-
An Ethernet cable. Wi-Fi can’t wake a powered-off desktop: the Wi-Fi card is off with the rest of the machine. Connect a cable from the machine’s network port to your router or switch.
-
A network card that supports it. Almost every desktop’s built-in network port does.
-
The setting in the BIOS (UEFI). bromigOS can’t change it for you. Start the machine and press Delete or F2 while it starts, then:
Board Where the setting is ASUS Advanced → APM Configuration → Power On By PCI-E: Enabled, and ErP Ready: Disabled MSI Settings → Advanced → Wake Up Event Setup → Resume By PCI-E Device: Enabled, and Power Management Setup → ErP Ready: Disabled Gigabyte Settings → Platform Power → Wake on LAN: Enabled, and ErP: Disabled ASRock Advanced → ACPI Configuration → PCIE Devices Power On: Enabled, and Deep Sleep: Disabled Dell Power Management → Wake on LAN/WLAN: LAN Only, and Deep Sleep Control: Disabled HP Advanced → Power-On Options → S4/S5 Wake on LAN: Enable Lenovo Power → Wake on LAN: Automatic, and turn off Enhanced Power Saving Mode Others Look for “Wake on LAN”, “Power On By PCI-E” or “Resume by PCI-E Device” and turn it on; turn “ErP” or “Deep Sleep” off -
Power at the wall. A machine needs standby power to wake. A power strip that is switched off, or the switch on the back of the power supply, cuts it.
An encrypted disk stops at its passphrase screen after waking, as it does when you press the power button. The machine is on but waits until someone types the passphrase at it, so it doesn’t come online by itself.
See whether it’s on
bromigos wol status
It lists each wired network card: whether Wake-on-LAN is on, whether a cable is in, and whether the system lets the card wake the machine.
For power users
bromigOS ships these in bromigos-core, on the desktop and on bromigOS Server alike:
| File | What it does |
|---|---|
/usr/lib/NetworkManager/conf.d/50-bromigos-wake-on-lan.conf | NetworkManager’s default for wired connections: ethernet.wake-on-lan=64 (the “magic” flag). Every connection whose own setting is default follows it |
/usr/lib/udev/rules.d/81-bromigos-wake-on-lan.rules | For each wired card as it appears (at boot, or plugged in): allows the card to wake the machine (device/power/wakeup) and runs ethtool -s <card> wol g. It works without NetworkManager too (bromigOS Server on systemd-networkd) |
/usr/lib/bromigos/bin/bromigos-wol | bromigos wol status [--json], and sudo bromigos wol apply [CARD…], which turns it on now. The package’s install step runs apply on every install and update |
Only real wired Ethernet cards count: not Wi-Fi, bridges, VPNs or containers’ interfaces.
Check a card by hand (enp3s0 is an example name; ip link lists yours):
nmcli -f 802-3-ethernet.wake-on-lan connection show "Wired connection 1"
cat /sys/class/net/enp3s0/device/power/wakeup # enabled
ethtool enp3s0 | grep Wake-on # Wake-on: g
To turn it off, mask both:
sudo ln -s /dev/null /etc/udev/rules.d/81-bromigos-wake-on-lan.rules
sudo touch /etc/NetworkManager/conf.d/50-bromigos-wake-on-lan.conf # an empty file shadows the default
sudo ethtool -s enp3s0 wol d
Or keep it on in general and off for one connection:
nmcli connection modify "Wired connection 1" 802-3-ethernet.wake-on-lan ignore.
How it’s built: docs/wake-on-lan.md.
Accessibility
bromigOS has two accessibility settings:
- Motion: how much the desktop moves. Choose full, reduced or still.
- Contrast: how strongly colours stand out. Choose normal or high.
Both work with every theme, your own included. A change shows at once.
Change motion or contrast
- Open Settings › Accessibility (Super+,).
- Under motion, choose Full, Reduced or Still.
- Turn High contrast on or off.
The page also shows how your theme’s colours measure against contrast guidelines.
Other ways:
-
The menu. Open TOGGLE and choose Reduced motion, Still background or High contrast.
-
A terminal:
bromigos accessibility # what's set, and how your theme's colours measure bromigos accessibility motion reduced # full, reduced or still bromigos accessibility contrast high # normal or high bromigos accessibility check mire # measure a theme's colours, normal and higha11yis a shorter name for the same command:bromigos a11y motion still. -
The first run asks both questions.
Motion
Full
Everything moves as designed.
Reduced
The same desktop, calmer. The animated background keeps its look and its life, at less than half the speed. It loses what can trouble your eyes or your balance:
- the background no longer shifts as you move the mouse;
- nothing flickers, blinks or flashes: no lightning, no bursts of static;
- lights hold steady. A coding agent that needs you glows brighter instead of blinking;
- nothing spins, and no craft cross the sky.
Also:
- unlocking and logging in fade in, with no static and no sudden black;
- windows and workspaces fade instead of sliding;
- the animations inside GTK apps are off;
- holograms don’t drift on their own.
Still
Everything in Reduced, and the background holds still, like a photograph. It’s drawn again only when something it shows changes, such as an agent starting or finishing, the weather, the hour or your homelab’s health, or once a minute. Windows don’t animate at all.
High contrast
High contrast makes every colour in your theme stronger. On a dark theme, backgrounds get deeper, and text, lines and the selected item get brighter.
- Text reaches a contrast of at least 7:1, and quieter labels at least 4.5:1.
- Each colour keeps its hue, so the theme still looks like itself.
- The bar, the menus, notifications and the terminal become solid instead of see-through.
- Window borders get wider.
- The panels lose their glow.
The painted scenery of the worlds, the login screen and the start-up screen keep their own colours.
Screen reader
The bromigOS USB stick can start with spoken output, for installing. See The install stick.
Your settings file
Your choices are in ~/.config/bromigos/accessibility.toml. Updates don’t overwrite it.
Troubleshooting
Find your problem below. Each one says what to try, in order.
If none of these help, open Settings › About and choose Copy system info. It copies your version, hardware and packages, ready to paste into a bug report.
Something looks wrong after an update
Some parts of the desktop may still run the old version. To restart them:
bromigos restart
To see what it would restart first, run bromigos update --check.
An update broke something
Undo it:
bromigos update --rollback
If the computer won’t start, choose an earlier snapshot in the boot menu. It starts the
system as it was, until you restart. To keep it, run bromigos update --rollback there,
then restart. See The boot menu.
The bar, the panels or the background is gone
| What’s gone | Run |
|---|---|
| the bar | bromigos restart waybar |
| the panels | bromigos restart widgets |
| the animated background | bromigos restart live |
If the panels are just hidden, press Super+W. If the bar is hidden, press Alt+B. If the background is turned off, press Super+Shift+B.
bromigos live status says what the background is doing.
The background stopped moving after a theme change
- Run
bromigos restart live. - If it keeps happening, look in
~/.local/state/bromigos-live/live.logfor the error.
Colours are wrong after a theme change
- Run
bromigos theme setwith the theme’s name again. - Some apps, such as the launcher and Qt apps, only pick up the new colours when they next start. Close and open them.
Hyprland says “emergency mode”
This means your Hyprland settings file has a mistake in it.
- Run
hyprctl configerrors. It names the line. - Fix that line in your
~/.config/hypr/hyprland.lua. - Run
hyprctl reload.
bromigOS’s own defaults are in /usr/share/bromigos/default/hypr/, if you want to compare.
Updates don’t cause this: while an update replaces those files, Hyprland waits, and only
reloads once the new settings check out.
VECTOR doesn’t answer, or is silent
- If the bar shows a red VECTOR OFF, see VECTOR is off.
- Run
bromigos vector statusto see whether he’s running.bromigos vector restartrestarts him. - Run
bromigos mute status, in case the desktop’s sound is muted. - Run
bromigos target. It shows where his brain and voice run, and whether each one answers. His voice uses the first that answers: your homelab’s voice service, your graphics card, or the processor.
VECTOR is off
If the bar shows a red VECTOR OFF, his emergency switch is off. Only you switch it off, so
you or someone at your keyboard did. To switch him back on, press
Super+Ctrl+Esc and choose YES, or run
bromigos vector on. See The emergency switch.
The background is a still picture
A notification said “The graphics card isn’t available”. The animated background found no working graphics card, so it shows a still picture rather than drawing on the processor, which would make the computer hot and slow.
- If you updated recently, restart the computer. An update to NVIDIA’s graphics driver
only takes effect after a restart, and
bromigos updatesays so in its last line. - If it happens after a restart too, run
bromigos hw. It says which graphics driver runs. bromigos live statusshows aNO GPUline while this lasts.
In a virtual machine, the background shows a still picture too, without the notification,
because most virtual machines have no graphics card of their own. To make it move anyway,
run bromigos scene set general.allow_software on. It can take several processor cores.
A black or slow screen after a new graphics card or driver
- Restart the computer once.
- Run
bromigos hw. It says which driver runs and what’s missing. - Run
bromigos hw setupto fix what it can.
See Hardware.
A black screen after choosing another desktop card
Restart the computer: a card you haven’t kept yet goes back by itself. Or press Ctrl+Alt+F3, log in, and run:
sudo bromigos hw display reset
sudo systemctl restart display-manager
See Move the desktop to another card.
A game won’t start
Open Settings › Playing games. It says what stops games, and Fix fixes what
bromigOS can: close Steam first. From a terminal, bromigos game check says the same,
and bromigos game check --fix fixes it. See Playing games.
A game with DLSS that crashes on a computer with two graphics cards may be on the wrong card. See DLSS on NVIDIA.
A Bluetooth device won’t pair or connect
Choose FORGET… under ⋯ in the Bluetooth panel, put the device in pairing mode, and pair it again. Settings › Bluetooth › Troubleshooting resets the adapter and lists what went wrong lately. See When it doesn’t work.
The lock screen crashed
It restarts by itself, and the screen stays locked. Your password still opens it.
The screen locks too soon, or not at all
See Idle and lock. To stop it locking while you watch something, click the eye on the bar.
A key doesn’t work
- Press Super+Shift+K and search for what the key should do. It shows the key it’s on now.
- In a terminal,
bromigos keys check "SUPER + M"says what a key does now, and where that comes from. - To put every key back as bromigOS set them, run
bromigos keys reset. It also removes your own shortcuts, and asks first.
Signing in says there’s no keyring, or it’s locked
bromigOS keeps sign-ins in your keyring, and your login password unlocks it.
- Run
bromigos keyring status. It says what’s wrong and what to run. - Run
bromigos keyring setup, then sign out and in again. - If oo7 isn’t installed, run
sudo pacman -S bromigos/oo7first.
Your keyring explains the rest.
Where to look
| What | Where |
|---|---|
| your settings | ~/.config/bromigos/ |
| logs and generated files | ~/.local/state/bromigos/ and ~/.local/state/bromigos-live/ |
| the install log | ~/.local/state/bromigos/install.log |
| bromigOS’s defaults | /usr/share/bromigos/ |
Every bromigos command has --help. Many also have --json, for scripts. See
Files and folders for more.
Media files on a NAS
If Jellyfin cannot play a file, check its media mount, permissions and transcoding logs. If several media apps freeze together while the NAS still answers, check the filesystem connection from the app’s host. A stuck NFS lock connection can leave imports and playback waiting even though the server is reachable.
Ask the lab administrator to check the client mount and lock service. Reconnect through the lab’s maintenance procedure, then check the affected apps. Restarting one media app may not fix a host’s stuck connection. Avoid deleting library files to try to clear it.
For request, language and download checks, see Your media.
Keys
Every key a new install has, grouped by what it’s for.
- Super is the key with the Windows or logo symbol on it.
- The keys for windows use Alt, and so do everyday ones such as the launcher, the terminal and screenshots.
- The SHORTCUTS panel on the desktop lists every key, your own included. Super+K shows or hides it. Click a row to run it. Window, workspace and media keys only work from the keyboard.
- Super+Shift+K searches the keys by name.
To change a key, or give a key to something new, open Settings › Shortcuts. See Your own shortcuts.
Open things
The keys you’ll use most. Learn the first one and you can find everything else.
| Keys | What it does |
|---|---|
| Super+Ctrl+G | Enter game mode. Ctrl+Shift+F12 leaves it. |
| MENU | Hold the Menu key to dictate into the focused app. Release it to insert your words. |
| Super+Space | Open the menu. Type to find any app or command, or to open Settings. |
| Alt+P | Open the app launcher. |
| Alt+Shift+Enter | Open a terminal. |
| Alt+E | Open the file manager. |
| Alt+Tab | Pick an open window from a list and switch to it. |
| Super+, | Open Settings. |
| Super+Ctrl+Shift+Space | Open Customize: a preview of each theme, and a tab for the widgets. |
| Super+Ctrl+Space | Show the next den wallpaper. This only changes something when you have more than one. |
| Super+A | Open the quick-launch ring: a terminal, a browser, and the FIELD NOTES panel, ready to type in. |
Talk to VECTOR
These need VECTOR, which a full install includes.
| Keys | What it does |
|---|---|
| Super+E | Show VECTOR and type to him. Press again to put him away. |
| Super+Shift+E | Turn conversation mode on or off. In conversation mode you speak and he answers, hands-free. |
| Super+V | Hold to talk to VECTOR. He listens while you hold the keys. |
| Super+Alt+V | Keep VECTOR’s chat box open, or let it fold away again. Clicking him does the same. |
| Super+Alt+C | Turn follow mode on or off. While it’s on, VECTOR reads each of Claude Code’s replies aloud once it’s finished, and READING CLAUDE shows on the bar. |
| Super+Ctrl+Esc | VECTOR’s emergency switch. Press it to stop his commands, his answer and his speech at once. Press it again, and choose YES, to switch him back on. |
Windows
Window keys use Alt, as do everyday keys such as the launcher, the terminal and screenshots, unless you chose another main key (Your own shortcuts). Windows tile: the first window takes the large space on the left, and each new one goes to the top of the stack on the right.
| Keys | What it does |
|---|---|
| Alt+C or Alt+Shift+C | Close the window. |
| Alt+F | Make the window fill the screen, keeping the bar. Press again to undo. |
| Alt+Shift+F | Make the window fullscreen, over the bar. Press again to undo. |
| Alt+Shift+V | Let the window float freely, or put it back in the tiles. |
| Alt+Enter | Swap the window with the large one on the left. |
| Alt+J | Move to the next window. |
| Alt+K | Move to the previous window. |
| Alt+H | Move to the window on the left. |
| Alt+L | Move to the window on the right. |
| Alt+Shift+H | Move the window left. |
| Alt+Shift+L | Move the window right. |
| Alt+Shift+K | Move the window up. |
| Alt+Shift+J | Move the window down. |
| Alt+← | Move the edge between the large window and the stack to the left. |
| Alt+→ | Move the edge between the large window and the stack to the right. |
| Alt+left-drag | Hold, then drag a window with the left mouse button to move it. |
| Alt+right-drag | Hold, then drag a window with the right mouse button to resize it. |
| Alt+B | Hide the bar, or show it again. |
Workspaces
A workspace is a separate screenful of windows. There are ten, on the number keys.
| Keys | What it does |
|---|---|
| Alt+1 to 0 | Go to workspace 1 to 10. The 0 key is workspace 10. |
| Alt+Shift+1 to 0 | Send the window to another workspace. You stay where you are. |
| Alt+S | Show or hide the scratchpad, a hidden workspace that opens over the one you’re on. |
| Alt+Shift+S | Put the window on the scratchpad. |
Panels and notes
The panels are the readouts on the desktop, under your windows.
| Keys | What it does |
|---|---|
| Super+W | Hide the visible panels. Press again to restore exactly that set. |
| Super+Alt+W | Arrange the panels: drag to move or resize them, and turn them on or off. Press Esc to save. See Arrange the panels. |
| Super+S | Show or hide the SYSTEM panel: processor, memory, graphics card. |
| Super+N | Show or hide the NETWORK panel. |
| Super+D | Show or hide the STORAGE panel: how full your disks are. |
| Super+B | Show or hide the WORKBENCH panel: the folders and projects you use most. |
| Super+F | Show or hide the FIELD NOTES panel. |
| Super+K | Show or hide the SHORTCUTS panel, which lists every key. It’s on at login, under your windows. |
| Super+Shift+K | Search the keys by name. Press Enter to run the one you pick. |
| Alt+N | Type in the FIELD NOTES panel. Press Esc when you’re done. |
| Alt+Shift+N | Add one line to your field notes without leaving what you’re doing. |
Holograms
Holograms open over your windows. Each key opens one, and the same key closes it. Esc closes any of them.
| Keys | What it does |
|---|---|
| Super+H | The holo deck: this machine’s readings and its 3D model. |
| Super+Shift+H | The lab deck: your homelab as a server rack, lit by its readings. |
| Super+O | The hologram gallery: every 3D model, VECTOR’s and each world’s. |
| Super+T | The timeline: the last 72 hours of readings, to scroll back through. |
| Super+M | The Drift map: a star chart of the bromigOS story’s places. |
| Super+Shift+S | The Swarm: your code repositories as planets, and your coding agents as ships. |
The background and sound
The live layer draws the animated background.
| Keys | What it does |
|---|---|
| Super+Shift+B | Turn the animated background off, or on again. |
| Super+Shift+M or Super+Shift+V | Mute or unmute the desktop’s own sound: the theme’s sounds and VECTOR’s voice. Your apps keep their sound. |
| Super+Shift+C | Turn the spoken part of codec calls off, or on again. The calls still show. |
| Super+X | Pin a drawing of this machine’s hardware to the background, with live readings. Press again to remove it. |
| Super+Z | Hold to show the hardware drawing. Let go to hide it. |
| Super+Alt+P | Watch what’s on the den TV full screen, with sound, from the same moment. |
| Super+Alt+. | Change the den TV to its next channel. |
| Super+Alt+, | Change the den TV to its previous channel. |
| Super+Alt+M | Turn the den TV’s sound on or off, on the screen under the pointer. One screen plays sound at a time. |
| Super+Alt+G | Open the Den TV app: channels, contents and what is on, with controls for every screen. |
The den TV remote keys
Select a screen with Super and a number-pad key. These buttons work while the remote is selected, with NumLock on or off. See the remote diagram.
| Keys | What it does |
|---|---|
| Super+KP_1 | Select the big monitor. |
| Super+KP_2 | Select the scope. |
| Super+KP_3 | Select the small monitor. |
| Esc or Super+KP_0 | Leave remote mode. |
| KP_ADD | Raise volume. |
| KP_SUBTRACT | Lower volume. |
| KP_8 | Next channel (digit 8 while entering a number). |
| KP_2 | Previous channel (digit 2 while entering a number). |
| KP_5 | Mute or unmute (digit 5 while entering a number). |
| KP_6 | Next item (digit 6 while entering a number). |
| KP_4 | Previous item (digit 4 while entering a number). |
| KP_ENTER | Full screen, or tune the entered number. |
| KP_MULTIPLY | Move sound to this tv. |
| KP_DIVIDE | Open den tv. |
| KP_DECIMAL | Enter a channel number. |
| KP_0 | Leave remote mode (digit 0 while entering a number). |
| KP_1 | Channel digit 1. |
| KP_3 | Channel digit 3. |
| KP_7 | Channel digit 7. |
| KP_9 | Channel digit 9. |
Screenshots and recording
Screenshots are saved to ~/Pictures/screenshots and copied to the clipboard. Recordings go to ~/Videos/recordings.
| Keys | What it does |
|---|---|
| Alt+Y | Drag out an area and take a screenshot of it. |
| Alt+Shift+Y | Take a screenshot of the monitor you’re on. |
| Alt+Shift+R | Drag out an area and start recording it. Press again to stop. |
Volume, brightness and media
Your keyboard’s own media keys. Each change shows on screen for a moment.
| Keys | What it does |
|---|---|
| Volume up | Turn the volume up. |
| Volume down | Turn the volume down. |
| Mute | Mute or unmute the speakers. |
| Mic mute | Mute or unmute the microphone. |
| Brightness up | Make the screen brighter. |
| Brightness down | Make the screen dimmer. |
| Play | Play or pause music and video. |
| Previous | Go to the previous track. |
| Next | Go to the next track. |
Lock, sleep and quit
| Keys | What it does |
|---|---|
| Super+L | Lock the screen. Your password opens it again. |
| Alt+Shift+E | Open the power menu: lock, suspend, log out, restart or shut down. |
| Alt+Esc | Put the machine to sleep. This key runs sudo, so it only works if sudo doesn’t ask for your password. Suspend in the power menu always works. |
| Alt+Shift+Q | Log out at once. Save your work first: open windows close without asking. |
The keys for VECTOR need VECTOR, which a full install includes. A keyboard with macro keys can have more: see Keyboards and peripherals.
Den TV remote
Super+KP 1 selects BIG, Super+KP 2 selects SCOPE and Super+KP 3 selects SMALL. The selected TV lights up. Its number pad works like a remote until Super+KP 0, Escape or fifteen seconds without a key. NumLock can be on or off. See the remote diagram for its volume, channel, mute, skip, full-screen and guide buttons. Decimal starts a channel number; enter the digits and wait one second, or press Enter to tune now. Settings › Keys can change every binding.
Commands
Everything bromigOS does has a command, and they all start with bromigos. You rarely
need them: the menu and Settings run most of them for you. They
help when you’d rather type, when you write a script, or when something goes wrong.
bromigos --helplists the main commands.bromigos commandslists every command on your machine, your own included.- Add
--helpto any command to see what it takes, such asbromigos idle --help. - Many commands take
--json, which prints their answer in a fixed format for scripts.
This page lists the commands by task first, then each one in full.
Commands by task
Set up and change settings
| Command | What it does |
|---|---|
bromigos settings | Open Settings. bromigos settings sound opens one page; --search wifi finds a setting. |
bromigos setup | Ask the first-run questions again, all of them or one section: bromigos setup voice. |
bromigos setup input | Set the keyboard layout, key repeat, the mouse and the touchpad. |
bromigos setup keybindings | List every key in a menu, and run the one you pick. |
bromigos setup config | Open one of your config files in your editor. When you close the Hyprland file, it’s checked and reloaded safely. |
bromigos keys | Make your own shortcuts: press new keys for anything. |
bromigos display | Change your monitors’ resolution, refresh rate, scale and layout. |
bromigos dictate | Dictate at your cursor: start, finish, cancel or check a recording. |
bromigos sound | Choose speakers and microphone, and set volumes. |
bromigos net | Turn Wi-Fi on or off, join a network, or connect a VPN. |
bromigos bluetooth | Turn Bluetooth on or off, pair or connect devices, and choose a headset’s sound: hi-fi, or headset with the microphone. |
bromigos bluetooth tui | Bluetooth in the terminal: pair step by step, test a controller, switch a headset’s sound. --window opens it in its own window. |
bromigos power | Choose a power profile, see batteries, and set what closing the lid does. |
bromigos power menu | Open the keyboard power menu in a terminal or text console. |
bromigos clock | Set the time zone and how the bar’s clock looks. |
bromigos notifications | Turn on do not disturb, and choose where notifications appear and how long they stay. |
bromigos defaults | Choose the apps that open links, files, pictures and the rest. |
bromigos startup | Choose what starts when you log in. |
bromigos idle | Choose what happens when you leave the computer: the screensaver, the lock and sleep. |
bromigos lock | Lock the screen now. |
bromigos windows | See or forget where your floating windows go back to. |
bromigos profile | Set your name, and what VECTOR calls you. |
bromigos avatar | Set your picture, saved as ~/.face. Settings › Account shows it. |
bromigos login | Sign in to your Bromigos account: with a code on the website, with --ssh and an SSH key on your account, or with --with-token and a personal access token. |
bromigos whoami | Show which Bromigos account this computer is signed in to, and how. |
bromigos logout | Sign out of your Bromigos account on this computer. |
bromigos keyring | Check your keyring, where sign-ins are kept, with status. setup makes your login unlock it. |
bromigos private | Edit the private overlay: settings you keep encrypted in your dotfiles. Needs the sops and age packages. |
bromigos hw | See what hardware bromigOS found, or set up drivers with bromigos hw setup. hw graphics, hw display, hw games, hw run and hw vfio choose what each graphics card is for: the desktop, games, or virtual machines. |
bromigos peripheral | Turn on extra features for a keyboard, such as a Razer keyboard’s macro keys, or an Xbox controller’s driver: bromigos peripheral enable xbox-controller. |
Change the look
| Command | What it does |
|---|---|
bromigos theme | List the themes, or switch: bromigos theme set mire. |
bromigos console | Read or save a text console font for the next boot. |
bromigos splash | Check, enable or undo the shutdown and restart splash on a GRUB system. |
bromigos theme switcher | Open the theme switcher, with a preview of each theme. |
bromigos theme previews | Draw the theme switcher’s previews again. |
bromigos wallpaper | Switch between the den wallpapers you have. |
bromigos accessibility | Reduce motion or raise contrast. See Accessibility. |
bromigos anim | List the background’s animations, and turn each one on or off. |
bromigos scene | Change the background’s other settings: the world, the screensaver, the sound volume. |
bromigos live | Turn the animated background on or off, or open a hologram: bromigos live timeline. |
bromigos customize | Preview themes and choose a panel layout in Customize. |
bromigos panels | Show, hide or move the desktop panels, start edit mode, list every widget, and set the weather’s place. |
bromigos widgets | Show or hide one panel or all of them. |
bromigos account | Sign a panel in to an online account, such as Twitch, GitHub, GitLab or Spotify. A service can have several accounts, such as gitlab.com and your company’s GitLab. See Panels that need an account. bromigos account token says how to make a Bromigos personal access token. |
bromigos mute | Mute or unmute the theme’s sounds and VECTOR’s voice together. |
bromigos boot | Turn the themed boot menu on or off. |
bromigos emblem | Draw a theme’s emblem pictures. For people making themes. |
VECTOR and AI
| Command | What it does |
|---|---|
bromigos vector | Talk to VECTOR and control him: bromigos vector ask "…", bromigos vector status, and his emergency switch, bromigos vector off and on. |
bromigos memory | See, export or clear what VECTOR remembers. |
bromigos target | Choose where AI work runs: your homelab, this machine or the cloud. |
bromigos art | Make a world’s artwork, on your homelab’s ComfyUI or through nolgia, which costs money. plan prices it first. For people making worlds. |
Your homelab
| Command | What it does |
|---|---|
bromigos setup homelab | Find your homelab’s services and connect them. |
bromigos homelab | See what’s connected from your homelab, and what doesn’t answer. |
bromigos media | Open Your media in the terminal: find and request media, see their channels and download progress, monitor, play or delete shows, films and albums. |
bromigos lab | Open the lab console: your homelab’s status, its GPUs, and jobs to run on them. |
Apps, extensions and the menu
| Command | What it does |
|---|---|
bromigos menu | Open the menu. --dump prints everything in it. |
bromigos webapp | Keep a website as an app of its own: web apps. |
bromigos apps setup | Put the app bundle’s settings in place. |
bromigos ext | Find, install, update and remove extensions. |
bromigos extensions | Open the extensions window: what you have, and what you can add. |
bromigos install extension | Install an extension. The same as bromigos ext install. |
bromigos remove extension | Remove an extension. The same as bromigos ext remove. |
bromigos commands | List every bromigos command on this machine, your own included. |
Install, update and recover
| Command | What it does |
|---|---|
bromigos install | Install bromigOS on an Arch Linux system. install.sh runs this for you. |
bromigos update | Update everything. --check says what it would do; --rollback undoes the last update. |
bromigos whats-new | Read what’s new in this release, offline. --all shows every release. |
bromigos channel | See or change the update channel you follow. |
bromigos storage | Plan a data drive, copy and verify files, then review a path switch while keeping the originals. |
bromigos rollback | See whether updates can be undone on this machine, and set that up. |
bromigos aur | See which AUR packages have updates waiting. bromigos aur off leaves the AUR out of updates and removes bromigOS’s paru; on brings it back. |
bromigos restart | Restart the parts of the desktop that still run old code after an update. |
bromigos status | Check that the background, VECTOR and the session are running. |
bromigos about | Show the version, the update channel, this machine’s hardware and bromigOS’s packages. |
Screenshots and recordings
| Command | What it does |
|---|---|
bromigos shot | Take a screenshot: bromigos shot region or bromigos shot screen. |
bromigos rec | Start or stop a screen recording. |
Used by the desktop itself
The desktop runs these for you. You don’t need them day to day.
| Command | What it does |
|---|---|
bromigos session | Connects programs to the running desktop session. |
bromigos lock-run | Starts the lock screen, and keeps the screen locked if the lock screen crashes. |
bromigos banner | Prints the login banner in a terminal. |
bromigos secrets | Refreshes the desktop’s secret files from Vault, if you keep secrets there. |
Shell prompt
| Command | What it does |
|---|---|
bromigos shell | Choose the zsh prompt: mehshell, Starship or a plain prompt. See Shell and terminal. |
Playing games
| Command | What it does |
|---|---|
bromigos game | Give the game your keys and quiet the desktop. See Playing games. |
bromigos game setup | Install Steam with your graphics cards’ 32-bit drivers. See Steam and Proton. |
bromigos game proton | List, install or remove Proton versions, such as GE-Proton. |
bromigos game check | Find what stops games from starting. --fix repairs it now. |
bromigos game maintain | Keep Steam and Proton ready. It runs by itself after each update and each time Steam exits. |
Other commands
| Command | What it does |
|---|---|
bromigos tv guide | |
bromigos welcome | The welcome tour after an install: Wi-Fi, your screens, a world, VECTOR and his voice, your homelab, the keys; every step skippable |
bromigos welcome console | The welcome tour in the terminal (bromigOS Server’s first sign-in): the network, SSH, joining your lab, and what’s here |
bromigos wol | Keep Wake-on-LAN on for wired network cards |
Every command in full
Each command’s own help, A to Z. Commands built into bromigos show their whole --help; the others show how to call them and an example or two, and their own --help says more.
bromigos about
About this machine and bromigOS: the version and channel, the packages, the hardware, the licences, the last update.
bromigos about [status] | text | last-update [--json]
For example:
bromigos about
bromigos about text
bromigos about --json
From the bromigos-desktop package.
bromigos accessibility
Reduced motion and high contrast: show them, set them (`bromigos accessibility motion reduced`, `contrast high`), measure a theme's colours (`check`)
Usage: bromigos accessibility [OPTIONS] [COMMAND]
Commands:
status The settings and how the current theme's colours measure (the default)
motion How much the desktop moves: full, reduced or still
contrast The colours' contrast: normal or high
check Measure a theme's colours, normal and high contrast, against high contrast's targets
help Print this message or the help of the given subcommand(s)
Options:
--json Print the JSON document (schema in core/README.md)
-h, --help Print help
bromigos accessibility status
The settings and how the current theme's colours measure (the default)
Usage: bromigos accessibility status [OPTIONS]
Options:
--json Print the JSON document (schema in core/README.md)
-h, --help Print help
bromigos accessibility motion
How much the desktop moves: full, reduced or still
Usage: bromigos accessibility motion [OPTIONS] <LEVEL>
Arguments:
<LEVEL>
Possible values:
- full: Everything moves as designed
- reduced: Calmer and slower: no parallax, flicker, flashes or static; window animations fade
- still: The live background holds a still frame; no window animations
Options:
--no-reload
Write the setting and render the theme, but tell no running app
--json
Print the JSON document (schema in core/README.md)
-h, --help
Print help (see a summary with '-h')
bromigos accessibility contrast
The colours' contrast: normal or high
Usage: bromigos accessibility contrast [OPTIONS] <LEVEL>
Arguments:
<LEVEL>
Possible values:
- normal: The theme's own colours
- high: Every colour the theme renders raised to WCAG AAA (text 7:1), panels opaque
Options:
--no-reload
Write the setting and render the theme, but tell no running app
--json
Print the JSON document (schema in core/README.md)
-h, --help
Print help (see a summary with '-h')
bromigos accessibility check
Measure a theme's colours, normal and high contrast, against high contrast's targets
Usage: bromigos accessibility check [OPTIONS] [THEME]
Arguments:
[THEME] The theme (default: the current one)
Options:
--json Print the JSON document (schema in core/README.md)
-h, --help Print help
bromigos account
Sign in to the online accounts widgets use (Twitch, GitHub, GitLab, Spotify), several per service if you like; tokens stay in your keyring.
bromigos account list [PROVIDER] | add PROVIDER NAME [base=URL] [client_id=ID] [label=TEXT] | remove PROVIDER NAME | status|login|logout|set-token|configure PROVIDER [--as NAME] [client_id=ID] [base=URL]
For example:
bromigos account login twitch
bromigos account add gitlab work base=https://git.example.org
bromigos account configure gitlab --as work client_id=abc123
bromigos account login gitlab --as work
bromigos account list
From the bromigos-core package.
bromigos anim
Every wallpaper animation and whether it's on; turn them on, off or reset
Usage: bromigos anim [OPTIONS] [VERB] [NAMES]...
Arguments:
[VERB] Turn on, off, or back to the defaults (no verb: list them) [possible values: on, off, reset]
[NAMES]... Animation names, or "all" (reset with none: all)
Options:
--json Print the JSON document (after any change; schema in core/README.md)
-h, --help Print help
bromigos apps setup
Seed the app bundle’s user configs (neovim, tmux, lazygit, mise, Chromium) where you have none.
bromigos apps setup [--check]
For example:
bromigos apps setup
bromigos apps setup --check
From the bromigos-apps package.
bromigos art
A world's art: plan (price it), run (make it through nolgia), status, mark
Usage: bromigos art [OPTIONS] <COMMAND>
Commands:
plan What a run would make and the exact credits, from nolgia's live catalog
run Make what isn't produced (or ASSET…) through nolgia, and log each job
status What's produced, missing, stale or new, and which backends answer (nolgia's credentials, the homelab ComfyUI)
make Make one thing through create.toml's providers, outside any world (VECTOR's hologram builder and gen3d.py call this). CAPABILITY: image.generate, image.edit, image.cutout, image.upscale, video.loop, video.upscale, model3d.generate
mark Record an asset made outside `art run` as produced with its current recipe
help Print this message or the help of the given subcommand(s)
Options:
--json Print the JSON document (schema in core/README.md)
--dir <DIR> The world's theme directory (default: themes/WORLD/ in the checkout you're in, then ~/.config/bromigos/themes/WORLD/, then the system's)
-h, --help Print help
bromigos art plan
What a run would make and the exact credits, from nolgia's live catalog
Usage: bromigos art plan [OPTIONS] <WORLD> [ASSETS]...
Arguments:
<WORLD>
[ASSETS]... Only these assets (and the inputs they need that aren't produced)
Options:
--force Make the named assets again even if they're done
--json Print the JSON document (schema in core/README.md)
--dir <DIR> The world's theme directory (default: themes/WORLD/ in the checkout you're in, then ~/.config/bromigos/themes/WORLD/, then the system's)
-h, --help Print help
bromigos art run
Make what isn't produced (or ASSET…) through nolgia, and log each job
Usage: bromigos art run [OPTIONS] <WORLD> [ASSETS]...
Arguments:
<WORLD>
[ASSETS]...
Options:
--force
--json Print the JSON document (schema in core/README.md)
--dir <DIR> The world's theme directory (default: themes/WORLD/ in the checkout you're in, then ~/.config/bromigos/themes/WORLD/, then the system's)
--max-credits <CREDITS> Refuse to start when the plan costs more (exit 3), and stop before a job that would take the run past it. No cap by default
-h, --help Print help
bromigos art status
What's produced, missing, stale or new, and which backends answer (nolgia's credentials, the homelab ComfyUI)
Usage: bromigos art status [OPTIONS] <WORLD>
Arguments:
<WORLD>
Options:
--json Print the JSON document (schema in core/README.md)
--dir <DIR> The world's theme directory (default: themes/WORLD/ in the checkout you're in, then ~/.config/bromigos/themes/WORLD/, then the system's)
-h, --help Print help
bromigos art make
Make one thing through create.toml's providers, outside any world (VECTOR's hologram builder and gen3d.py call this). CAPABILITY: image.generate, image.edit, image.cutout, image.upscale, video.loop, video.upscale, model3d.generate
Usage: bromigos art make [OPTIONS] --out <FILE> <CAPABILITY>
Arguments:
<CAPABILITY>
Options:
--json Print the JSON document (schema in core/README.md)
--prompt <PROMPT> The prompt (image.generate, image.edit, video.loop; optional otherwise)
--dir <DIR> The world's theme directory (default: themes/WORLD/ in the checkout you're in, then ~/.config/bromigos/themes/WORLD/, then the system's)
--input <FILE> An input image (the image to edit, cut out, upscale or model; the start frame; references for image.generate), or the clip to upscale; repeat for more
--mask <FILE> An edit's mask (transparent = may change)
--provider <ID> Use only this provider (comfyui:<name> or nolgia)
--model <MODEL> The workflow (ComfyUI) or model id (nolgia); needs --provider
--aspect <ASPECT> W:H for a new image or video
--duration <DURATION> A video's length in seconds (default 5)
--resolution <RESOLUTION> A video's resolution tier (nolgia's quality; a ComfyUI workflow's sizes, e.g. 720p or 480p)
--alpha <MODE> video.loop: make the world's loop from the raw clip with theme/tools/glow-loop.py (crop to the creature, cut at the wrap, matte): luma (glow on black, drawn additive), stacked (colour over its matte) or mask (also OUT-mask.png, a soft oval edge); the raw clip is kept as OUT-raw.mp4
--post <ARG> An argument for glow-loop.py with --alpha (repeat), e.g. --post=--width=960
--out <FILE> Where to write the result (.png, .mp4, .glb)
--max-credits <CREDITS> Skip a provider whose job would cost more
--extra <KEY=VALUE> A provider option, KEY=VALUE (VALUE as JSON when it parses, else text), e.g. texture=true for a textured nolgia mesh, scale=2 for an upscale; repeat for more
-h, --help Print help
bromigos art mark
Record an asset made outside `art run` as produced with its current recipe
Usage: bromigos art mark [OPTIONS] <WORLD> <ASSET>
Arguments:
<WORLD>
<ASSET>
Options:
--job <JOB> The nolgia job that made it
--json Print the JSON document (schema in core/README.md)
--credits <CREDITS> The credits it cost
--dir <DIR> The world's theme directory (default: themes/WORLD/ in the checkout you're in, then ~/.config/bromigos/themes/WORLD/, then the system's)
--at <AT> When it was made (RFC 3339; default now)
--seconds <SECONDS>
--by <BY> What made it [default: "bromigos art mark"]
-h, --help Print help
bromigos aur
The AUR (build recipes Arch users share; docs/aur.md): `status` (the helper here, whether bromigos update uses it, the AUR updates waiting), `on`, `off`, `ensure`
Usage: bromigos aur [OPTIONS] [COMMAND]
Commands:
status The helper here (bromigOS's paru, or your own paru or yay), whether bromigos update uses it, and the AUR updates waiting (paru -Qua) (the default)
on Use the AUR: bromigos update updates AUR packages, and bromigOS's paru is installed when there's no paru or yay here (sudo pacman -S paru)
off Leave the AUR alone: bromigos update doesn't touch AUR packages, and the paru bromigOS installed is removed (sudo pacman -R paru); a helper you installed stays
ensure bromigOS's paru, unless the AUR is off here or a helper is installed: what bromigos install and the update's migration run. Exit 75 when paru isn't in the repositories pacman has synced yet
help Print this message or the help of the given subcommand(s)
Options:
--json Print the JSON document (schema in core/README.md)
-h, --help Print help
The AUR (Arch User Repository) holds build recipes that Arch users share; anyone can submit one, so nobody vets them. bromigOS never needs it: an install comes from Arch's repositories and bromigOS's own, where its build of paru is too. With the AUR on (the default), bromigos update updates your AUR packages after the repositories', inside the same snapshot pair, and paru shows each recipe's changes for you to review first (--yes skips the review). The setting: ~/.config/bromigos/aur.toml. docs/aur.md.
bromigos aur status
The helper here (bromigOS's paru, or your own paru or yay), whether bromigos update uses it, and the AUR updates waiting (paru -Qua) (the default)
Usage: bromigos aur status [OPTIONS]
Options:
--json Print the JSON document (schema in core/README.md)
-h, --help Print help
bromigos aur on
Use the AUR: bromigos update updates AUR packages, and bromigOS's paru is installed when there's no paru or yay here (sudo pacman -S paru)
Usage: bromigos aur on [OPTIONS]
Options:
--yes pacman doesn't ask
--dry-run Only say what it would do
--json Print the JSON document (schema in core/README.md)
-h, --help Print help
bromigos aur off
Leave the AUR alone: bromigos update doesn't touch AUR packages, and the paru bromigOS installed is removed (sudo pacman -R paru); a helper you installed stays
Usage: bromigos aur off [OPTIONS]
Options:
--yes pacman doesn't ask
--dry-run Only say what it would do
--json Print the JSON document (schema in core/README.md)
-h, --help Print help
bromigos aur ensure
bromigOS's paru, unless the AUR is off here or a helper is installed: what bromigos install and the update's migration run. Exit 75 when paru isn't in the repositories pacman has synced yet
Usage: bromigos aur ensure [OPTIONS]
Options:
--yes pacman doesn't ask
--dry-run Only say what it would do
--json Print the JSON document (schema in core/README.md)
-h, --help Print help
bromigos avatar
Your picture (~/.face, which the login screen shows), and whether your profile may be shared (dotfiles, the private overlay).
bromigos avatar [status] | set FILE | clear [--json]
For example:
bromigos avatar
bromigos avatar set ~/Pictures/me.png
bromigos avatar clear
From the bromigos-desktop package.
bromigos banner
The login banner: the emblem beside live readings (kernel, uptime, load, memory, disk).
bromigos banner
From the bromigos-desktop package.
bromigos bluetooth
Bluetooth: the adapter (on, off, visible), paired devices, pairing new ones, through bluez.
bromigos bluetooth [status] | power on|off|toggle | discoverable on|off | scan [SECONDS] | pair MAC | connect MAC | disconnect MAC | trust MAC on|off | remove MAC | profile MAC hifi|headset | audio-default on|off | panel [pair MAC|scan] | menu | tui [--window] | session [--json]
For example:
bromigos bluetooth
bromigos bluetooth power on
bromigos bluetooth scan
bromigos bluetooth pair 00:00:5E:00:53:10
bromigos bluetooth profile 00:00:5E:00:53:10 headset
bromigos bluetooth panel
From the bromigos-desktop package.
bromigos bluetooth tui
Bluetooth in the terminal: pair step by step, connect, test a controller, switch a headset’s sound.
bromigos bluetooth tui [--window]
For example:
bromigos bluetooth tui
bromigos bluetooth tui --window
From the bromigos-core package.
bromigos boot
The boot menu: bromigOS's GRUB theme in your theme's colours (`bromigos boot theme status|on|off|apply`; docs/boot.md)
Usage: bromigos boot [COMMAND]
Commands:
theme GRUB's theme: status (default), on (turn it on, in the current theme's colours), off (GRUB's own menu, and it stays off here), apply (/boot on the current theme)
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print help
bromigos boot theme
GRUB's theme: status (default), on (turn it on, in the current theme's colours), off (GRUB's own menu, and it stays off here), apply (/boot on the current theme)
Usage: bromigos boot theme [OPTIONS] [ACTION]
Arguments:
[ACTION] status, on, off or apply
Options:
--no-prompt on, apply: never ask sudo for a password (then the next bromigos update does it)
--auto on: not where `off` turned it off (bromigos install, setup, the migration)
--dry-run Only say what it would run
--json Print the JSON document (schema in core/README.md)
-h, --help Print help
bromigos channel
The update channel this machine follows (stable, rc, edge, dev): show it, or switch
Usage: bromigos channel [OPTIONS] [NAME]
Arguments:
[NAME] Switch to this channel (rewrites the [bromigos] Server line with sudo)
Options:
--repo <URL> The repository's base URL, when it isn't known (after dev) or changes
--dev-dir <DIR> dev: the local repository's directory (default ~/.local/share/bromigos/repo)
--json Print the JSON document (schema in core/README.md)
-h, --help Print help
bromigos clock
Date and time: the time zone, network time, and the bar’s clock (24 or 12 hour, seconds, the date).
bromigos clock [status] | timezone ZONE | ntp on|off | format 24|12 | seconds on|off | date on|off | hook | zones | reset [--json]
For example:
bromigos clock
bromigos clock timezone Europe/Lisbon
bromigos clock format 12
bromigos clock date on
From the bromigos-desktop package.
bromigos commands
Every command: the built-ins and the bromigos-<group>-<name> executables found
Usage: bromigos commands [OPTIONS]
Options:
--json
--check Report commands with no summary, and route collisions (exit 1 if any)
--all Include hidden commands
-h, --help Print help
bromigos console
Read or save the text console font for the next boot.
bromigos console status [--json] | font small|medium|large|default
For example:
bromigos console status
sudo bromigos console font large
sudo bromigos console font default
From the bromigos-core package.
bromigos customize
Customize: the themes and the widget gallery in one window, with tabs (SUPER+CTRL+SHIFT+SPACE).
bromigos customize [--tab themes|widgets] [--save-layout]
For example:
bromigos customize
bromigos customize --tab widgets
bromigos customize --save-layout
From the bromigos-desktop package.
bromigos defaults
Default apps: the browser, file manager, editor, viewers and players (xdg-mime), the terminal and file manager bromigOS’s keys start, your web apps.
bromigos defaults [status] | set KIND APP | terminal APP|COMMAND | files APP|COMMAND | apps [KIND] | webapp-add NAME URL | webapp-catalog NAME | webapp-remove NAME | reset [--json]
For example:
bromigos defaults
bromigos defaults set browser firefox.desktop
bromigos defaults terminal foot.desktop
bromigos defaults apps editor
From the bromigos-desktop package.
bromigos dictate
Hold to dictate into the focused app, with an audio meter and transcript preview.
bromigos dictate on | off | cancel | status [--json]
For example:
bromigos dictate status
bromigos dictate on
bromigos dictate off
bromigos dictate cancel
From the bromigos-desktop package.
bromigos display
Displays: each output’s resolution, refresh rate, scale, position, orientation and the primary, applied with a 15-second check that reverts by itself.
bromigos display [status] | apply [--output NAME [--mode WxH@HZ] [--scale S] [--position XxY] [--transform 0-7] [--off|--on]]… [--primary NAME] [--confirm SECONDS] | keep | revert | reset [--confirm SECONDS] [--json]
For example:
bromigos display
bromigos display apply --output DP-1 --mode 2560x1440@144 --scale 1.25
bromigos display keep
bromigos display revert
From the bromigos-desktop package.
bromigos emblem
Build a theme’s emblem kit (SVGs, PNGs, banner braille, lock layers).
bromigos emblem build --theme DIR
From the bromigos-core package.
bromigos ext
Extensions from git: themes, decks, widgets, VECTOR tools, homelab adapters, commands, hooks (install, list, info, update, remove, new, search)
Usage: bromigos ext [OPTIONS] [COMMAND]
Commands:
install Install from a git URL, a folder or a catalog name: SOURCE[@tag|@branch|@commit]
list The installed extensions (and themes of yours not from one)
info One extension: installed (its ledger entry, files checked), or what a source would install (fetched and checked; nothing installed)
update Update one extension (or --all): shows what changed and any new permissions first
remove Remove an extension: its links, its checkout (the ledger keeps a line)
enable Link a disabled extension's parts again (its files are checked first)
disable Unlink an extension's parts; its checkout stays
new A working starter of KIND in ./NAME: theme, live-deck, live-layer, widget, vector-tool, vector-memory, vector-skill, homelab-adapter, command, hook
search The catalogs' extensions (bromigOS's own, or catalogs = […] in ~/.config/bromigos/ext.toml)
validate Check an extension folder (default .): its manifest, parts and permissions
migrate Themes installed before extensions (copied into ~/.config/bromigos/themes): each one a catalog has, file for file, becomes an extension that updates
help Print this message or the help of the given subcommand(s)
Options:
--json Print the JSON document
-h, --help Print help
Sources: a git URL (https://, ssh://, git@host:path, file://) or a folder, with
@tag, @branch or @commit to pin it (or --ref); or a name from the catalogs
(bromigos ext search). A theme repository without a bromigos-ext.toml installs as a
theme. Installed: ~/.local/share/bromigos/ext/src/<name> (a git checkout), linked into
~/.local/share/bromigos/ext/active/; the ledger: ~/.local/state/bromigos/ext/ledger.json.
Themes install at once. Anything else (code, or something VECTOR uses) shows its
permissions and asks you at a terminal; an update shows what changed first.
bromigos ext install
Install from a git URL, a folder or a catalog name: SOURCE[@tag|@branch|@commit]
Usage: bromigos ext install [OPTIONS] <SOURCE>
Arguments:
<SOURCE>
Options:
--json Print the JSON document
--ref <REF> A branch, tag or commit (instead of @ref)
--path <DIR> The extension's folder inside the repository
--name <NAME> A theme repository without a manifest: install it under this name
--copy A folder that's a git repository: install its files as they are (uncommitted changes too) instead of its last commit
--adopt A theme of yours with the same name (an old `theme install`): move it aside (kept in ~/.local/state/bromigos/ext/adopted) and install this one
-h, --help Print help
bromigos ext list
The installed extensions (and themes of yours not from one)
Usage: bromigos ext list [OPTIONS]
Options:
--json Print the JSON document
--verify Also check every file against the ledger
-h, --help Print help
bromigos ext info
One extension: installed (its ledger entry, files checked), or what a source would install (fetched and checked; nothing installed)
Usage: bromigos ext info [OPTIONS] <WHAT>
Arguments:
<WHAT>
Options:
--json Print the JSON document
--ref <REF>
--path <DIR>
--name <NAME>
-h, --help Print help
bromigos ext update
Update one extension (or --all): shows what changed and any new permissions first
Usage: bromigos ext update [OPTIONS] [NAME]
Arguments:
[NAME]
Options:
--all Every installed extension
--json Print the JSON document
--ref <REF> Move to this branch, tag or commit
--check Only say what would change
-h, --help Print help
bromigos ext remove
Remove an extension: its links, its checkout (the ledger keeps a line)
Usage: bromigos ext remove [OPTIONS] <NAME>
Arguments:
<NAME>
Options:
--json Print the JSON document
-h, --help Print help
bromigos ext enable
Link a disabled extension's parts again (its files are checked first)
Usage: bromigos ext enable [OPTIONS] <NAME>
Arguments:
<NAME>
Options:
--json Print the JSON document
-h, --help Print help
bromigos ext disable
Unlink an extension's parts; its checkout stays
Usage: bromigos ext disable [OPTIONS] <NAME>
Arguments:
<NAME>
Options:
--json Print the JSON document
-h, --help Print help
bromigos ext new
A working starter of KIND in ./NAME: theme, live-deck, live-layer, widget, vector-tool, vector-memory, vector-skill, homelab-adapter, command, hook
Usage: bromigos ext new [OPTIONS] <KIND> <NAME>
Arguments:
<KIND>
<NAME>
Options:
--dir <DIR> Where (default ./NAME)
--json Print the JSON document
-h, --help Print help
bromigos ext search
The catalogs' extensions (bromigOS's own, or catalogs = […] in ~/.config/bromigos/ext.toml)
Usage: bromigos ext search [OPTIONS] [TERM]
Arguments:
[TERM]
Options:
--json Print the JSON document
--kind <KIND> Only this kind (theme, live-deck, widget, …)
--refresh Fetch the catalogs now (they are kept six hours)
-h, --help Print help
bromigos ext validate
Check an extension folder (default .): its manifest, parts and permissions
Usage: bromigos ext validate [OPTIONS] [DIR]
Arguments:
[DIR]
Options:
--json Print the JSON document
-h, --help Print help
bromigos ext migrate
Themes installed before extensions (copied into ~/.config/bromigos/themes): each one a catalog has, file for file, becomes an extension that updates
Usage: bromigos ext migrate [OPTIONS]
Options:
--dry-run Only say which
--json Print the JSON document
-h, --help Print help
bromigos extensions
Extensions in a window: what’s installed and the catalog, with previews; pick one to install, update, turn off or remove.
bromigos extensions [--list [--json]]
For example:
bromigos extensions
bromigos extensions --list
From the bromigos-desktop package.
bromigos game
Give games the keyboard, quiet the desktop, and restore it afterwards.
bromigos game on|off|toggle|status | auto on|off [--json]
For example:
bromigos game on
bromigos game off
bromigos game auto on
From the bromigos-desktop package.
bromigos game check
Check Steam, Proton and the desktop for what stops games starting; –fix repairs it now.
bromigos game check [--fix] [--json]
For example:
bromigos game check
bromigos game check --fix
From the bromigos-desktop package.
bromigos game maintain
Keep Steam and Proton ready by itself: the latest GE-Proton, games set to a removed Proton, broken runtimes.
bromigos game maintain [--wait] [--refresh] [--no-download] [--dry-run] [--notify] [--json]
For example:
bromigos game maintain --dry-run
bromigos game maintain
From the bromigos-desktop package.
bromigos game proton
Proton versions for Steam: list them, install the latest GE-Proton (checksum verified), remove one.
bromigos game proton [list] | install [VERSION] | remove VERSION [--force] [--json]
For example:
bromigos game proton
bromigos game proton install
bromigos game proton remove GE-Proton10-25
From the bromigos-desktop package.
bromigos game setup
Install Steam with the 32-bit graphics drivers for this machine’s GPUs, and GameMode.
bromigos game setup [--dry-run] [--yes] [--json]
For example:
bromigos game setup --dry-run
bromigos game setup
From the bromigos-desktop package.
bromigos homelab
The homelab connection: status (what provides what, what’s unreachable), adapters, check <capability>.
bromigos homelab
From the bromigos-homelab package.
bromigos hw
This machine's hardware: its GPUs and their drivers, a laptop's battery, backlight, touchpad and power profiles; `hw setup` sets them up (docs/hardware.md)
Usage: bromigos hw [OPTIONS] [COMMAND]
Commands:
detect What this machine is and what `bromigos hw setup` would do (the default)
display Which card draws the login screen and the desktop (read-only), or change it: `use CARD|auto`, `keep`, `cancel`, `reset` (Settings › Graphics)
setup Set this machine's hardware up: drivers, early KMS, a hybrid laptop's GPUs, power profiles, Hyprland's GPU environment (sudo for the system's part)
graphics Every graphics card and what it's for: the desktop, games and heavy apps, virtual machines (what Settings › Graphics shows)
games The card games and heavy apps use (Automatic: the strongest), or change it
run Run a program on the games card: bromigos hw run -- PROGRAM [ARGS] (a Steam game's launch options: bromigos hw run -- %command%)
vfio Virtual machines: each card's checks for VFIO passthrough, or `reserve CARD` and `release CARD|all` (by PCI address; sudo, then a restart)
help Print this message or the help of the given subcommand(s)
Options:
--json Print the JSON document (schema in core/README.md)
-h, --help Print help
What it reads: the PCI display devices (NVIDIA's own supported-chips list and Mesa's tables say which driver), the DMI chassis type, batteries, the lid, backlights, touchpads, the kernels, mkinitcpio's MODULES. What setup does, only where it differs: the GPU's packages (never swapping an installed NVIDIA driver), NVIDIA's early KMS, a hybrid laptop's render GPU (udev names, AQ_DRM_DEVICES for Hyprland), runtime power management for its NVIDIA GPU, and on a laptop brightnessctl and power-profiles-daemon. A driver only the AUR has (NVIDIA's 580.xx and 470.xx branches) is offered through paru, after a question. What each card is for (the desktop, games and heavy apps, virtual machines): hw graphics, hw display, hw games, hw run, hw vfio, and Settings › Graphics. docs/hardware.md.
bromigos hw detect
What this machine is and what `bromigos hw setup` would do (the default)
Usage: bromigos hw detect [OPTIONS]
Options:
--json Print the JSON document (schema in core/README.md)
-h, --help Print help
bromigos hw display
Which card draws the login screen and the desktop (read-only), or change it: `use CARD|auto`, `keep`, `cancel`, `reset` (Settings › Graphics)
Usage: bromigos hw display [OPTIONS] [COMMAND]
Commands:
use Draw the desktop on CARD (a PCI address such as 0000:03:00.0, or card1), or `auto`. A new card is tried first: log out and in, then `keep` it; a restart goes back
keep Keep the card being tried (after a login on it worked)
cancel Stop trying a card: the desktop stays where it was
reset Back to Automatic, from a text console too (sudo); then restart the login screen
help Print this message or the help of the given subcommand(s)
Options:
--hyprland Print the GPU order for Hyprland (the chosen card's, else the automatic one), or nothing when there is no clear choice
--hyprland-chosen Print "trial DEVICES" or "chosen DEVICES" for a card chosen in Settings, else nothing (Hyprland's startup asks this first)
--json Print the JSON document (schema in core/README.md)
-h, --help Print help
bromigos hw setup
Set this machine's hardware up: drivers, early KMS, a hybrid laptop's GPUs, power profiles, Hyprland's GPU environment (sudo for the system's part)
Usage: bromigos hw setup [OPTIONS]
Options:
--dry-run Only say what it would do
--yes Answer pacman's questions with their defaults (unattended)
--user-only Only your own part: Hyprland's GPU environment (no sudo, no packages)
--aur Build a driver only the AUR has (NVIDIA's 580.xx or 470.xx) with paru without asking first; paru still shows its recipe for review unless --yes (docs/aur.md)
--json Print the JSON document (schema in core/README.md)
-h, --help Print help
bromigos hw graphics
Every graphics card and what it's for: the desktop, games and heavy apps, virtual machines (what Settings › Graphics shows)
Usage: bromigos hw graphics [OPTIONS]
Options:
--json Print the JSON document (schema in core/README.md)
-h, --help Print help
bromigos hw games
The card games and heavy apps use (Automatic: the strongest), or change it
Usage: bromigos hw games [OPTIONS] [COMMAND]
Commands:
use Run games and heavy apps on CARD (a PCI address, or card1), or `auto` (the strongest)
steam Start Steam on the games card (your copy of Steam's launcher), or stop
help Print this message or the help of the given subcommand(s)
Options:
--json Print the JSON document (schema in core/README.md)
-h, --help Print help
bromigos hw run
Run a program on the games card: bromigos hw run -- PROGRAM [ARGS] (a Steam game's launch options: bromigos hw run -- %command%)
Usage: bromigos hw run [OPTIONS] [COMMAND]...
Arguments:
[COMMAND]... The program and its arguments, after `--`
Options:
--print Print the environment it sets (NAME=VALUE lines), and run nothing without a program
--json Print the JSON document (schema in core/README.md)
-h, --help Print help
bromigos hw vfio
Virtual machines: each card's checks for VFIO passthrough, or `reserve CARD` and `release CARD|all` (by PCI address; sudo, then a restart)
Usage: bromigos hw vfio [OPTIONS] [COMMAND]
Commands:
reserve Reserve CARD for virtual machines (vfio-pci, by PCI address, from the next start): writes three files, makes the initramfs again (sudo)
release Give CARD (or `all`) back to its own driver, from the next start (sudo)
help Print this message or the help of the given subcommand(s)
Options:
--json Print the JSON document (schema in core/README.md)
-h, --help Print help
bromigos idle
Idle and lock: when the screensaver starts, the screen locks, the displays go off and it suspends (status, set, preset, stay-awake, off, undo; docs/idle.md)
Usage: bromigos idle [OPTIONS] [COMMAND]
Commands:
status The policy in force, in plain words, with any warnings (the default)
set Change it: KEY VALUE pairs. screensaver|lock|displays|suspend on|off|MINUTES (a time also turns it on: 8, 90m, 1h), activity on|off|SECONDS, lock-before-sleep on|off, or any section.key of idle.toml
preset A preset: default (bromigOS's timers), screensaver-only (the screensaver at its time, nothing locks, dims or sleeps), presentation (nothing idles)
stay-awake Stay awake for a while: 1h, 2h, 30m, 90 (minutes) or until-off; `off` ends it; `toggle [TIME]` turns it off when on, else on (1 h)
off Stop staying awake (stay-awake off)
undo Put idle.toml back as it was before the last change (again: redo)
apply Render the policy and restart this session's hypridle
hook Point ~/.config/hypr/hypridle.conf at the rendered policy, keeping your own listeners (an update's migration runs it)
render Print the hypridle config the policy renders to
start Hyprland's autostart: render the policy, then run hypridle (--detach: start it in this session now, through the compositor, unless it runs already)
help Print this message or the help of the given subcommand(s)
Options:
--json Print the JSON document (schema in core/README.md)
--no-restart Write and render only: don't restart hypridle
-h, --help Print help
bromigos idle status
The policy in force, in plain words, with any warnings (the default)
Usage: bromigos idle status [OPTIONS]
Options:
--json Print the JSON document (schema in core/README.md)
--no-restart Write and render only: don't restart hypridle
-h, --help Print help
bromigos idle set
Change it: KEY VALUE pairs. screensaver|lock|displays|suspend on|off|MINUTES (a time also turns it on: 8, 90m, 1h), activity on|off|SECONDS, lock-before-sleep on|off, or any section.key of idle.toml
Usage: bromigos idle set [OPTIONS] <KEY VALUE> <KEY VALUE>...
Arguments:
<KEY VALUE> <KEY VALUE>...
Options:
--json Print the JSON document (schema in core/README.md)
--no-restart Write and render only: don't restart hypridle
-h, --help Print help
bromigos idle preset
A preset: default (bromigOS's timers), screensaver-only (the screensaver at its time, nothing locks, dims or sleeps), presentation (nothing idles)
Usage: bromigos idle preset [OPTIONS] <NAME>
Arguments:
<NAME>
Options:
--json Print the JSON document (schema in core/README.md)
--no-restart Write and render only: don't restart hypridle
-h, --help Print help
bromigos idle stay-awake
Stay awake for a while: 1h, 2h, 30m, 90 (minutes) or until-off; `off` ends it; `toggle [TIME]` turns it off when on, else on (1 h)
Usage: bromigos idle stay-awake [OPTIONS] <TIME|until-off|off|toggle> [TIME]
Arguments:
<TIME|until-off|off|toggle>
[TIME] toggle: how long when it turns on (default 1h)
Options:
--json Print the JSON document (schema in core/README.md)
--no-restart Write and render only: don't restart hypridle
-h, --help Print help
bromigos idle off
Stop staying awake (stay-awake off)
Usage: bromigos idle off [OPTIONS]
Options:
--json Print the JSON document (schema in core/README.md)
--no-restart Write and render only: don't restart hypridle
-h, --help Print help
bromigos idle undo
Put idle.toml back as it was before the last change (again: redo)
Usage: bromigos idle undo [OPTIONS]
Options:
--json Print the JSON document (schema in core/README.md)
--no-restart Write and render only: don't restart hypridle
-h, --help Print help
bromigos idle apply
Render the policy and restart this session's hypridle
Usage: bromigos idle apply [OPTIONS]
Options:
--json Print the JSON document (schema in core/README.md)
--no-restart Write and render only: don't restart hypridle
-h, --help Print help
bromigos idle hook
Point ~/.config/hypr/hypridle.conf at the rendered policy, keeping your own listeners (an update's migration runs it)
Usage: bromigos idle hook [OPTIONS]
Options:
--json Print the JSON document (schema in core/README.md)
--no-restart Write and render only: don't restart hypridle
-h, --help Print help
bromigos idle render
Print the hypridle config the policy renders to
Usage: bromigos idle render [OPTIONS]
Options:
--defaults The packaged defaults' config instead of yours
--json Print the JSON document (schema in core/README.md)
--no-restart Write and render only: don't restart hypridle
-h, --help Print help
bromigos idle start
Hyprland's autostart: render the policy, then run hypridle (--detach: start it in this session now, through the compositor, unless it runs already)
Usage: bromigos idle start [OPTIONS]
Options:
--detach
--json Print the JSON document (schema in core/README.md)
--no-restart Write and render only: don't restart hypridle
-h, --help Print help
bromigos install
Install bromigOS on this machine (after install.sh): the packages, services, the hardware, your configs, the desktop settings and the theme, then the first-run setup
Usage: bromigos install [OPTIONS]
Options:
--dry-run Only say what it would do
--with <PACKAGE> Optional packages too (e.g. --with bromigos-homelab --with herdr)
--yes Answer pacman's questions with their defaults (unattended)
--no-services Leave services alone
--force-dm Enable SDDM even when another display manager is enabled
--theme <THEME> The theme when none is set yet [default: wick]
--no-hardware Leave the hardware alone (drivers, early KMS, power profiles: bromigos hw setup later)
--no-aur No AUR helper: paru isn't installed, and bromigos update leaves the AUR alone (bromigos aur on, any time; docs/aur.md)
--no-setup Don't run the first-run setup afterwards
--answers <FILE> Setup's answers from a file (TOML; docs/install.md) instead of asking
--json Print the JSON document (schema in core/README.md)
-h, --help Print help
bromigos install extension
Install an extension from a git URL, a folder or a catalog name (bromigos ext install).
bromigos install extension SOURCE[@tag|@branch]
For example:
bromigos install extension https://github.com/you/[email protected]
bromigos install extension hello-deck
From the bromigos-core package.
bromigos keyring
The keyring that keeps your sign-ins (oo7): whether it runs and your login unlocks it, and setting that up.
bromigos keyring status [--json] | setup [--dry-run]
For example:
bromigos keyring status
bromigos keyring setup
From the bromigos-core package.
bromigos keys
Your shortcuts without editing Lua: press a key for a default, a menu item, an app, a web app or a command; list, unbind, reset.
bromigos keys [bind [KEYS] [--default KEYS | --from KEYS | --menu ID | --webapp NAME | --exec CMD [--what TEXT]] [--swap | --replace] [--yes] | list [--all] [--json] | check KEYS [--json] | unbind KEYS [--yes] | reset [KEYS] [--yes] | undo]
For example:
bromigos keys
bromigos keys bind --default "SUPER + SPACE"
bromigos keys bind "SUPER + M" --default "SUPER + SPACE" --swap
bromigos keys bind "SUPER + ALT + G" --webapp gmail
bromigos keys list
bromigos keys reset
From the bromigos-desktop package.
bromigos lab
Your homelab’s console: status, models, jobs, doctor and guided maintenance (no arguments: the live dashboard).
bromigos lab [status [--json] | models [list|load|unload|recommend|plan|upgrades] … | run KIND [PRESET] [--prompt …] [--input FILE] [--text …] [--cloud] [--wait] | jobs [list|watch|logs|cancel|retry] [ID] | doctor [--json] | maintenance [check|status|plan shutdown|startup|run PLAN_ID|resume RUN_ID] … | power [status|plan TARGET on|off|run PLAN_ID|resume RUN_ID] … | media search|get|status|upcoming|language … | provision [--guided [--start-over] | plan|apply|cluster|add-node|remove-node|vm|storage|capacity|add SERVICE|remove SERVICE --repo PATH …] | connect … | target …]
For example:
bromigos lab
bromigos lab status
bromigos lab run image --prompt "a lighthouse at dusk"
bromigos lab run hologram --prompt "a brass telescope"
bromigos lab run voice --text "Lights are on."
bromigos lab jobs watch
bromigos lab doctor
bromigos lab provision
bromigos lab media get "Cowboy Bebop" --seasons all --specials
From the bromigos-homelab package.
bromigos live
The whole animated background: on|off (runtime), or any bromigos-live command
Usage: bromigos live [ARGS]...
Arguments:
[ARGS]...
bromigos live start|stop|restart|status|open <deck>|tv <verb>|<deck> …
From the bromigos-live package.
bromigos lock
Lock the screen now (loginctl lock-session)
Usage: bromigos lock
Options:
-h, --help Print help
bromigos lock-run
The lock launcher hypridle runs: keeps the screen locked if the locker crashes
Usage: bromigos lock-run
Options:
-h, --help Print help
bromigos login
Sign in to your Bromigos account: a code on the website, an SSH key, or a personal access token; the sign-in stays in your keyring.
bromigos login [--ssh [--key PATH] | --with-token] [--no-browser]
For example:
bromigos login
bromigos login --ssh
bromigos login --ssh --key ~/.ssh/id_ed25519
bromigos login --with-token < token.txt
From the bromigos-core package.
bromigos logout
Sign out of your Bromigos account on this computer.
bromigos logout [--json]
For example:
bromigos logout
From the bromigos-core package.
bromigos media
Your media library in a terminal: TV, films, music, YouTube, downloads, releases, search and den TV channels; request, monitor, change quality, play, cast or delete.
bromigos media [tv|movies|music|youtube|downloads|upcoming|search|channels] | search|get|status|upcoming|recent|library|language|monitor|profile|refresh|delete|channel|cast …
For example:
bromigos media
bromigos media movies
bromigos media get "Cowboy Bebop"
bromigos media status
bromigos media cast targets
From the bromigos-homelab package.
bromigos memory
VECTOR’s memory and conversation history: what’s kept, export it, clear it (recoverably), undo the clear.
bromigos memory [status] | export DIR | clear history|memory|all --yes | undo [--json]
For example:
bromigos memory
bromigos memory export ~/Documents
bromigos memory clear history --yes
bromigos memory undo
From the bromigos-desktop package.
bromigos menu
The desktop menu (SUPER+SPACE): launch, install, setup, style, update, toggles, VECTOR, holograms.
bromigos menu [--filter TEXT | --dump | --json]
For example:
bromigos menu
bromigos menu --dump
From the bromigos-desktop package.
bromigos mute
The desktop's one mute: the theme's sounds and VECTOR's voice together (on, off, toggle, status; SUPER+SHIFT+M)
Usage: bromigos mute [OPTIONS] [VERB]
Arguments:
[VERB]
Possible values:
- on: Mute the theme's sounds and VECTOR's voice
- off: Unmute both
- toggle: Anything unmuted: mute all; all muted: unmute all (the keys)
- status: Say what is muted
[default: toggle]
Options:
--json
Print the JSON document
-h, --help
Print help (see a summary with '-h')
bromigos net
The network: Wi-Fi (on, off, scan, connect, forget), wired, VPNs, through NetworkManager.
bromigos net [status] | wifi on|off | scan | connect SSID [--password-stdin] [--hidden] [--device DEV] | disconnect DEVICE | forget NAME|UUID | up NAME|UUID | down NAME|UUID | autoconnect NAME|UUID on|off | panel on|off [--json]
For example:
bromigos net
bromigos net wifi off
echo 'secret' | bromigos net connect HomeNet --password-stdin
bromigos net up work-vpn
From the bromigos-desktop package.
bromigos notifications
Notifications (dunst): do not disturb, where they appear, how long they stay, each app’s rule.
bromigos notifications [status] | dnd on|off|toggle | position CORNER | offset X Y | timeout low|normal|critical SECONDS | app NAME show|quiet|hide | clear-history | test | reset [--json]
For example:
bromigos notifications dnd on
bromigos notifications position bottom-right
bromigos notifications timeout normal 12
bromigos notifications app Spotify quiet
From the bromigos-desktop package.
bromigos panels
The desktop panels: which are on, where they sit, the monitor, the weather’s place (your layout.json and weather.toml).
bromigos panels [status] | edit | gallery [--previews DIR] | layouts | layout apply ID [--monitor NAME] [--all-themes] | layout save NAME [--description TEXT] [--monitor NAME] | layout save --replace ID [--description TEXT] [--monitor NAME] | layout undo | tidy [--monitor NAME] | show|hide|add NAME | settings NAME | set NAME KEY VALUE… | unset NAME KEY | inspect SOURCE [--path DIR] [--ref REF] | move NAME X Y | size NAME W H|CLASS | monitor NAME|"" | weather place PLACE | weather coords LAT LON | weather units metric|imperial | weather name TEXT | weather clear | reset [--json]
For example:
bromigos panels
bromigos panels edit
bromigos panels layouts
bromigos panels layout apply homelab
bromigos panels tidy
bromigos panels add weather
bromigos panels weather place "San Diego"
bromigos panels hide connections
From the bromigos-desktop package.
bromigos peripheral
Optional peripheral modules: a Razer keyboard's macro keys, its dial as VECTOR's voice dial, lighting that follows VECTOR (list, status, enable, disable, refresh)
Usage: bromigos peripheral [OPTIONS] [COMMAND]
Commands:
list Every module: whether its device is here, whether it's on, what it needs
status The modules that are on, as the desktop runs them: devices, keys, dial, lighting
enable Turn a module on: its packages, group and services, your choice recorded, the keys bound (a verified Hyprland reload) and the dial and lighting started
disable Turn a module off (its packages stay installed)
follow What a module's lighting follows: VECTOR (his voice and mood) or the theme (its primary, always); written to peripherals.toml, the daemon takes it within 10 s
refresh Write the keys again from peripherals.toml and the devices here (after an edit, or another keyboard plugged in); Hyprland reloads only when they changed
help Print this message or the help of the given subcommand(s)
Options:
--json Print the JSON document (schema in core/README.md)
-h, --help Print help
Modules: /usr/share/bromigos/peripherals/<id>/ (packaged), ~/.config/bromigos/peripherals/<id>/
(yours: a similar keyboard; docs/peripherals.md). Your choices and key changes:
~/.config/bromigos/peripherals.toml, e.g.
[razer-keyboard]
enabled = true
rgb = "all" # the lighting: all (every Razer device), device (the keyboard), off
dial = true
[razer-keyboard.keys]
side1 = "bromigos-live timeline" # "" leaves a key unbound
then `bromigos peripheral refresh`.
bromigos peripheral list
Every module: whether its device is here, whether it's on, what it needs
Usage: bromigos peripheral list [OPTIONS]
Options:
--json Print the JSON document (schema in core/README.md)
-h, --help Print help
bromigos peripheral status
The modules that are on, as the desktop runs them: devices, keys, dial, lighting
Usage: bromigos peripheral status [OPTIONS]
Options:
--json Print the JSON document (schema in core/README.md)
-h, --help Print help
bromigos peripheral enable
Turn a module on: its packages, group and services, your choice recorded, the keys bound (a verified Hyprland reload) and the dial and lighting started
Usage: bromigos peripheral enable [OPTIONS] <ID>
Arguments:
<ID>
Options:
--dry-run Only say what it would do
--json Print the JSON document (schema in core/README.md)
--yes Answer pacman's questions with their defaults
--force Turn it on even when its device isn't connected now
--no-reload Don't reload Hyprland (it takes the keys at its next reload)
--no-system Don't install, join groups or start services (record the choice, write the keys)
-h, --help Print help
bromigos peripheral disable
Turn a module off (its packages stay installed)
Usage: bromigos peripheral disable [OPTIONS] <ID>
Arguments:
<ID>
Options:
--json Print the JSON document (schema in core/README.md)
--no-reload Don't reload Hyprland
--no-system Leave the daemon alone
-h, --help Print help
bromigos peripheral follow
What a module's lighting follows: VECTOR (his voice and mood) or the theme (its primary, always); written to peripherals.toml, the daemon takes it within 10 s
Usage: bromigos peripheral follow [OPTIONS] <ID> <FOLLOW>
Arguments:
<ID>
<FOLLOW> [possible values: vector, theme]
Options:
--json Print the JSON document (schema in core/README.md)
-h, --help Print help
bromigos peripheral refresh
Write the keys again from peripherals.toml and the devices here (after an edit, or another keyboard plugged in); Hyprland reloads only when they changed
Usage: bromigos peripheral refresh [OPTIONS]
Options:
--json Print the JSON document (schema in core/README.md)
--no-reload Don't reload Hyprland
-h, --help Print help
bromigos power
Power: the power profile, batteries, what closing the lid does, suspend.
bromigos power [status] | profile NAME | lid ACTION [--on-power ACTION] [--docked ACTION] [--print] | suspend [--json]
For example:
bromigos power
bromigos power profile power-saver
bromigos power lid lock --on-power ignore
From the bromigos-desktop package.
bromigos power menu
Choose and confirm a power action with the keyboard.
bromigos power menu [--preview]
For example:
bromigos power menu
bromigos power menu --preview
From the bromigos-core package.
bromigos private
The private overlay: encrypted values in your dotfiles, decrypted at login.
bromigos private decrypt|edit|status|seed-profile
From the bromigos-core package.
bromigos profile
Who you are and what VECTOR calls you (show, set, address, alias)
Usage: bromigos profile [OPTIONS] [COMMAND]
Commands:
show Show the profile (the default)
set Set name, full_name or pronouns ("" clears it)
address Forms of address, most preferred first: add, remove, or set the whole list
alias Other names you go by: add or remove
help Print this message or the help of the given subcommand(s)
Options:
--json Print the JSON document (after any change; schema in core/README.md)
-h, --help Print help
bromigos profile show
Show the profile (the default)
Usage: bromigos profile show [OPTIONS]
Options:
--json Print the JSON document (after any change; schema in core/README.md)
-h, --help Print help
bromigos profile set
Set name, full_name or pronouns ("" clears it)
Usage: bromigos profile set [OPTIONS] <FIELD> <VALUE>
Arguments:
<FIELD> [possible values: name, full_name, pronouns]
<VALUE>
Options:
--json Print the JSON document (after any change; schema in core/README.md)
-h, --help Print help
bromigos profile address
Forms of address, most preferred first: add, remove, or set the whole list
Usage: bromigos profile address [OPTIONS] <VERB> [VALUE]...
Arguments:
<VERB> [possible values: add, remove, set]
[VALUE]...
Options:
--json Print the JSON document (after any change; schema in core/README.md)
-h, --help Print help
bromigos profile alias
Other names you go by: add or remove
Usage: bromigos profile alias [OPTIONS] <VERB> <VALUE>...
Arguments:
<VERB> [possible values: add, remove]
<VALUE>...
Options:
--json Print the JSON document (after any change; schema in core/README.md)
-h, --help Print help
bromigos rec
Start/stop a screen recording to ~/Videos/recordings.
bromigos rec [region|screen]
From the bromigos-desktop package.
bromigos remove extension
Remove an installed extension: its links and its checkout (bromigos ext remove).
bromigos remove extension NAME
For example:
bromigos remove extension hello-deck
bromigos ext list
From the bromigos-core package.
bromigos restart
Restart what runs stale (its package is newer than the process), or the pieces named
Usage: bromigos restart [OPTIONS] [PIECES]...
Arguments:
[PIECES]... live, widgets, waybar, dunst, vector, hyprland (its config), osd, idle (hypridle), or a user unit a package's restart.d drop-in declares; none: whatever is stale
Options:
--check Only say what would restart
--json Print the JSON document (schema in core/README.md)
-h, --help Print help
bromigos rollback
Rolling updates back: `status` (how this machine snapshots updates, what can be undone), `setup` (snapper's root configuration, snap-pac, grub-btrfs with its overlay hook or limine-snapper-sync, where / is btrfs), `allow` (wheel may list root's snapshots, so updates are recorded). Undoing one is `bromigos update --rollback`
Usage: bromigos rollback [OPTIONS] [ACTION]
Arguments:
[ACTION] status (default), setup or allow
Options:
--dry-run setup, allow: only say what it would run
--yes setup: pacman doesn't ask (unattended installs)
--json Print the JSON document (schema in core/README.md)
-h, --help Print help
bromigos scene
The live layer’s settings beyond the animation switches: the world, the screensaver’s content, the sounds’ volume, the codec’s calls and den TV playback.
bromigos scene [get [KEY…]] | set KEY VALUE | reset [KEY…] | keys [--json]
For example:
bromigos scene
bromigos scene set sounds.volume 0.2
bromigos scene set world.enabled off
From the bromigos-desktop package.
bromigos secrets
Refresh the desktop’s secret files from Vault (never prints values).
bromigos secrets sync [--quiet]|status
From the bromigos-core package.
bromigos session
The live Hyprland session (prints KEY=value; import, exec or adopt it; hold and release its config reloads around a package transaction)
Usage: bromigos session [OPTIONS] [COMMAND]
Commands:
shell-env Print missing or stale local shell display settings; leave SSH and working displays alone
import Also push WAYLAND_DISPLAY and HYPRLAND_INSTANCE_SIGNATURE to systemd --user and D-Bus
exec Import, then exec CMD with the session's values
adopt At login: import, and stop VECTOR's daemon if it belongs to another session
hold Hold Hyprland's config reloads: auto-reload off in every running Hyprland (as root, every user's), what it was remembered. pacman runs it before a transaction that changes the desktop's default config (docs/update.md)
release Let go of a hold: each held Hyprland's config verified (Hyprland --verify-config), reloaded once when it verifies, auto-reload back as it was. pacman runs it after the transaction
help Print this message or the help of the given subcommand(s)
Options:
--json Print the JSON document (schema in core/README.md)
-h, --help Print help
bromigos session shell-env
Print missing or stale local shell display settings; leave SSH and working displays alone
Usage: bromigos session shell-env [OPTIONS]
Options:
--json Print the JSON document (schema in core/README.md)
-h, --help Print help
bromigos session import
Also push WAYLAND_DISPLAY and HYPRLAND_INSTANCE_SIGNATURE to systemd --user and D-Bus
Usage: bromigos session import [OPTIONS]
Options:
--json Print the JSON document (schema in core/README.md)
-h, --help Print help
bromigos session exec
Import, then exec CMD with the session's values
Usage: bromigos session exec [OPTIONS] <CMD>...
Arguments:
<CMD>...
Options:
--json Print the JSON document (schema in core/README.md)
-h, --help Print help
bromigos session adopt
At login: import, and stop VECTOR's daemon if it belongs to another session
Usage: bromigos session adopt [OPTIONS]
Options:
--json Print the JSON document (schema in core/README.md)
-h, --help Print help
bromigos session hold
Hold Hyprland's config reloads: auto-reload off in every running Hyprland (as root, every user's), what it was remembered. pacman runs it before a transaction that changes the desktop's default config (docs/update.md)
Usage: bromigos session hold [OPTIONS]
Options:
--json Print the JSON document (schema in core/README.md)
--pacman As pacman's hook: quiet when no Hyprland runs, and a watcher releases what is still held if pacman exits without running the release hook
-h, --help Print help
bromigos session release
Let go of a hold: each held Hyprland's config verified (Hyprland --verify-config), reloaded once when it verifies, auto-reload back as it was. pacman runs it after the transaction
Usage: bromigos session release [OPTIONS]
Options:
--json Print the JSON document (schema in core/README.md)
--pacman As pacman's hook: every running Hyprland gets the verified reload, held or not; quiet when none runs
-h, --help Print help
bromigos settings
Settings: displays, sound, network, power, input, the desktop, VECTOR, updates, your account (SUPER+,).
bromigos settings [PAGE[#SETTING]] | --list [--json] | --search WORDS [--json] | --render OUT.png [--page PAGE] [--size WxH] [--search WORDS] [--advanced] | --audit [--page PAGE]
For example:
bromigos settings
bromigos settings sound
bromigos settings --search wifi
bromigos settings --list
From the bromigos-desktop package.
bromigos setup
The first-run questions (monitors, the AUR, hardware, accessibility, theme, VECTOR's brain and voice, homelab, where AI runs, the creation tools, peripheral modules); run again any time, or one section: `bromigos setup voice`. `bromigos setup homelab` detects your homelab's services (bromigos-homelab; --hosts, --url, --yes, --print)
Usage: bromigos setup [OPTIONS] [SECTION]
Arguments:
[SECTION] One section: monitors, aur, hardware, accessibility, theme, vector, voice, homelab, targets, create, peripherals (none: all)
Options:
--answers <FILE> The answers from a file (TOML; docs/install.md) instead of asking
--monitors <MONITORS> Unattended answers: monitors auto|skip
--aur <AUR> Unattended answers: the AUR (an AUR helper, AUR packages in bromigos update; bromigos aur) on|off
--hardware <HARDWARE> Unattended answers: the hardware (drivers, power profiles; bromigos hw setup) auto|skip
--primary <PRIMARY> Unattended answers: the primary output (the live background and the panels go on it)
--order <ORDER> Unattended answers: outputs left to right, comma-separated (e.g. DP-2,DP-1)
--scale <OUTPUT=SCALE> Unattended answers: an output's scale, OUTPUT=SCALE (repeat for more)
--refresh <OUTPUT=HZ> Unattended answers: an output's refresh rate, OUTPUT=HZ (repeat for more)
--targets <TARGETS> Unattended answers: where AI runs, the targets in order, comma-separated (e.g. homelab,local; the cloud costs money: leave it out to never use it)
--cloud-for <SERVICE> Unattended answers: a service that may also use the cloud, last (e.g. video.loop; repeat for more)
--create <CAPABILITY=PROVIDERS> Unattended answers: a capability's providers in order, CAPABILITY=P1,P2 (e.g. image.generate=comfyui:local,nolgia; none: off), or `none` for every capability
--nolgia-token-file <FILE> Unattended answers: sign in to nolgia with the personal access token in FILE (stored 0600 for bromigos art, never printed)
--motion <LEVEL> Unattended answers: how much the desktop moves: full, reduced or still (bromigos accessibility)
--contrast <LEVEL> Unattended answers: the colours' contrast: normal or high
--theme <THEME> Unattended answers: the theme
--den <DEN> Unattended answers: the Wick's den variant
--vector <VECTOR> Unattended answers: VECTOR's brain: ollama, openai or none
--base-url <BASE_URL> Unattended answers: the OpenAI-compatible server's base URL
--api-key-file <API_KEY_FILE> Unattended answers: a file holding its API key
--model <MODEL> Unattended answers: the model
--voice <VOICE> Unattended answers: VECTOR's voice: gpu, cpu or off
--homelab <HOMELAB> Unattended answers: a homelab.toml to use
--peripheral <MODULE> Unattended answers: turn a peripheral module on (e.g. razer-keyboard; repeat for more; bromigos peripheral list)
--replace Replace an existing homelab.toml
--json Print the JSON document (schema in core/README.md)
-h, --help Print help
bromigos setup config
Open one of your config files in the editor (Hyprland reloads safely after).
bromigos setup config [NAME]
For example:
bromigos setup config
bromigos setup config hyprland
From the bromigos-desktop package.
bromigos setup homelab
Find the homelab’s services and write ~/.config/bromigos/homelab.toml (re-runnable).
bromigos setup homelab [--find [--ssh-config]] [--hosts H,H] [--url URL …] [--yes] [--print] [--json] …
For example:
bromigos setup homelab
bromigos setup homelab --find
bromigos setup homelab --hosts nas,gpu-box
bromigos setup homelab --find --print
From the bromigos-homelab package.
bromigos setup input
Keyboard layout, key repeat, the mouse and the touchpad, written to your hyprland.lua (a marked block).
bromigos setup input [--set KEY VALUE …] [--unset KEY …] [--reset] [--show] [--layouts] [--json]
For example:
bromigos setup input
bromigos setup input --set kb_layout us --set repeat_rate 50
bromigos setup input --json
From the bromigos-desktop package.
bromigos setup keybindings
Every keybind, described, in a menu that runs the chosen one; EDIT opens yours (safe reload after).
bromigos setup keybindings [--list|--edit]
For example:
bromigos setup keybindings
bromigos setup keybindings --list
From the bromigos-desktop package.
bromigos shell
Choose, configure, preview and diagnose the shell prompt.
bromigos shell [status] | prompt mehshell|starship|none [--json] | doctor [--json] [--timings] | preview [--width N] [--style STYLE] | configure KEY VALUE
For example:
bromigos shell prompt mehshell
bromigos shell doctor
bromigos shell preview --width 40
bromigos shell configure brand bromigos
From the bromigos-desktop package.
bromigos shot
Screenshot to ~/Pictures/screenshots and the clipboard.
bromigos shot [region|screen]
From the bromigos-desktop package.
bromigos sound
Sound: the output and input device, their volumes, each app’s volume, the theme’s sounds and the desktop’s mute.
bromigos sound [status] | output|input DEVICE | volume output|input|DEVICE PERCENT | mute output|input on|off|toggle | app-volume ID PERCENT | app-mute ID on|off | app-output ID DEVICE | port output|input DEVICE PORT | all-mute on|off|toggle | sounds on|off | sounds-volume PERCENT | test [DEVICE] | popup [pin|hover X|leave|close] [--json]
For example:
bromigos sound
bromigos sound volume output 40
bromigos sound output alsa_output.usb-headset
bromigos sound app-volume 79 50
From the bromigos-desktop package.
bromigos splash
Configure graphical shutdown and restart on GRUB systems.
bromigos splash status [--json] | on | off
For example:
bromigos splash status
sudo bromigos splash on
sudo bromigos splash off
From the bromigos-core package.
bromigos startup
What starts at login: bromigOS’s own, yours (a marked block in your hyprland.lua), and the floating windows put back where they were.
bromigos startup [status] | add COMMAND… [--name NAME] | add --app APP | remove N|COMMAND | windows remember|forget-class CLASS | windows all on|off | windows clear [CLASS…] | windows restart | reset [--json]
For example:
bromigos startup
bromigos startup add --app org.keepassxc.KeePassXC.desktop
bromigos startup add syncthing --name Syncthing
bromigos startup windows remember pavucontrol
From the bromigos-desktop package.
bromigos status
The live layer, VECTOR, the session and the animations
Usage: bromigos status [OPTIONS]
Options:
--json Print the JSON document (schema in core/README.md)
-h, --help Print help
bromigos storage
Inspect drives, migrate data and clean selected caches, originals or snapshots.
bromigos storage status [--json] | plan --device DEVICE --mount PATH [--roles LIST] [--json] | apply PLAN | migrate plan|run|resume|verify|status … | switch PLAN --writers-stopped | cleanup [--preview] [--json] | cleanup plan [--cache NAME] [--keep-versions N] [--migration PLAN] [--snapshot PATH] [--json] | cleanup apply PLAN [--yes] | cleanup status PLAN [--json]
For example:
bromigos storage status
bromigos storage cleanup --preview
bromigos storage migrate plan --source /path/to/data --destination /mnt/Work/data --keep-path /path/to/data
From the bromigos-core package.
bromigos target
Where AI work runs: homelab, local or cloud, per service (art, VECTOR's voice and brain); show it, probe it, switch it (`bromigos target local`)
Usage: bromigos target [OPTIONS] [WORDS]...
Arguments:
[WORDS]... show, check, probe [SERVICE…], homelab, local, cloud, order T…, reset, resolve SERVICE
Options:
--only <SERVICE> Only these services (repeat), for homelab|local|cloud, order and reset
--exclusive With homelab|local|cloud: that target alone, no fallback
--json Print the JSON document
-h, --help Print help
Words:
(none), show each service, what it would use now, and whether that answers
check every target of every service, probed
probe [SERVICE…] the same for these services (a ComfyUI: its workflow's models, its VRAM)
homelab|local|cloud put that target first (the cloud is never added by another one)
order T [T…] the exact order, e.g. `order homelab local`
reset services follow the global order again
resolve SERVICE what SERVICE tries, in order (JSON; for VECTOR; no probing)
Services: image.generate image.edit image.cutout image.upscale video.loop video.upscale
model3d.generate voice.tts voice.stt llm. Your file: ~/.config/bromigos/targets.toml (docs/targets.md).
bromigos theme
The look: list the themes, show the current one, set one (renders every app's colours)
Usage: bromigos theme [OPTIONS] [COMMAND]
Commands:
list Every theme, first-party and the user's (the default verb)
current The theme in force (the default, wick, when none was set)
set Render NAME (default: the current theme) into ~/.local/state/bromigos/theme/current and tell the running apps
install Install a theme from a git URL, a folder or the catalog: `bromigos ext install` (a git checkout that `bromigos ext update` updates)
remove Remove a theme: an extension's (`bromigos ext remove`) or one of yours (never a first-party one, never the one in force)
new A new theme to make your own, as an extension in ./NAME: from the starter, or a copy of an installed theme (--from)
help Print this message or the help of the given subcommand(s)
Options:
--json Print the JSON document (schema in core/README.md)
-h, --help Print help
bromigos theme list
Every theme, first-party and the user's (the default verb)
Usage: bromigos theme list [OPTIONS]
Options:
--json Print the JSON document (schema in core/README.md)
-h, --help Print help
bromigos theme current
The theme in force (the default, wick, when none was set)
Usage: bromigos theme current [OPTIONS]
Options:
--json Print the JSON document (schema in core/README.md)
-h, --help Print help
bromigos theme set
Render NAME (default: the current theme) into ~/.local/state/bromigos/theme/current and tell the running apps
Usage: bromigos theme set [OPTIONS] [NAME]
Arguments:
[NAME]
Options:
--json Print the JSON document (schema in core/README.md)
--no-reload Don't signal waybar, kitty, Hyprland or dunst
-h, --help Print help
bromigos theme install
Install a theme from a git URL, a folder or the catalog: `bromigos ext install` (a git checkout that `bromigos ext update` updates)
Usage: bromigos theme install [OPTIONS] <SOURCE>
Arguments:
<SOURCE>
Options:
--json Print the JSON document (schema in core/README.md)
--name <NAME> A theme repository without a manifest: the name to install it as
--force A theme of yours with the same name: move it aside and install this one
-h, --help Print help
bromigos theme remove
Remove a theme: an extension's (`bromigos ext remove`) or one of yours (never a first-party one, never the one in force)
Usage: bromigos theme remove [OPTIONS] <NAME>
Arguments:
<NAME>
Options:
--json Print the JSON document (schema in core/README.md)
-h, --help Print help
bromigos theme new
A new theme to make your own, as an extension in ./NAME: from the starter, or a copy of an installed theme (--from)
Usage: bromigos theme new [OPTIONS] <NAME>
Arguments:
<NAME>
Options:
--from <FROM> The theme to start from (bromigos theme list)
--json Print the JSON document (schema in core/README.md)
--dir <DIR> Where (default ./NAME)
-h, --help Print help
bromigos theme previews
Draw the theme switcher’s previews: each theme as a miniature screenshot of the desktop wearing it.
bromigos theme previews [NAME…] [--force] [--list] [--json] [--quiet] | [NAME | --dir DIR [--name NAME]] [--size WxH] [--panels LIST | --scene FILE] --out FILE
For example:
bromigos theme previews
bromigos theme previews mire --force
bromigos theme previews --list
bromigos theme previews wick --size 2560x1440 --panels system,network,weather,lab --out wick.png
From the bromigos-desktop package.
bromigos theme switcher
Customize: themes from previews of the desktop wearing them, and the widget gallery (SUPER+CTRL+SHIFT+SPACE).
bromigos theme switcher [--tab themes|widgets] [--save-layout] [--list [--json]] [--render [NAME…]] [--screenshot OUT.png --size WxH [--tab TAB] [--select NAME] [--filter TEXT]]
For example:
bromigos theme switcher
bromigos theme switcher --list
bromigos theme previews
From the bromigos-desktop package.
bromigos tv guide
bromigos tv guide
From the bromigos-desktop package.
bromigos update
Update everything: packages (sudo pacman -Syu, then AUR packages with paru), then migrations, the theme, and restarts of whatever runs older code than is installed
Usage: bromigos update [OPTIONS]
Options:
--check Only say what it would do: upgrades waiting, migrations pending, restarts needed, how updates are snapshotted, the updates that can be rolled back
--no-packages Skip the package step (migrations, the theme and restarts only)
--rollback [<PRE>] Undo an update: every file / had before it comes back (snapper undochange on the pre/post pair around it), after a summary and a question. PRE picks an older one. In a snapshot started from the boot menu: that snapshot becomes the root
--yes Don't ask: pacman takes its defaults, the AUR step builds without paru's review of each recipe (docs/aur.md), and a rollback goes ahead without a question
--no-aur Leave AUR packages alone this time (`bromigos aur off`: every time)
--downgrade Allow downgrades (pacman -Syuu): after a move to an older channel
--channel <NAME> Follow this channel from now on (stable, rc, edge, dev), then update
--json Print the JSON document (schema in core/README.md)
-h, --help Print help
bromigos vector
VECTOR (any bromigos-holo command: off, on, vector, ask, status, mute, …)
Usage: bromigos vector [ARGS]...
Arguments:
[ARGS]...
bromigos wallpaper
The den wallpaper (any bromigos-wallpaper command)
Usage: bromigos wallpaper [ARGS]...
Arguments:
[ARGS]...
bromigos wallpaper den|empty|masked|v1|next|previous|list [--json]|apply|outputs|status
From the bromigos-desktop package.
bromigos webapp
Web apps: a site as its own frameless window, in the launcher, with a hotkey.
bromigos webapp add NAME URL [--icon FILE|URL] [--hotkey "SUPER + SHIFT + X"] | add --from-catalog NAME | remove NAME | list | launch NAME | catalog
For example:
bromigos webapp add gmail https://mail.google.com --hotkey "SUPER + SHIFT + G"
bromigos webapp list
From the bromigos-desktop package.
bromigos welcome
The welcome tour after an install: Wi-Fi, your screens, a world, VECTOR and his voice, your homelab, the keys; every step skippable.
bromigos welcome [--if-pending] [--step STEP] [--render DIR]
For example:
bromigos welcome
bromigos welcome --step world
From the bromigos-desktop package.
bromigos welcome console
The welcome tour in the terminal (bromigOS Server’s first sign-in): the network, SSH, joining your lab, and what’s here.
bromigos welcome console [--if-pending] [--render DIR [--size WxH]]
For example:
bromigos welcome-console
From the bromigos-core package.
bromigos whats-new
What's new in this release of bromigOS: the release notes installed with it (they read offline; the manual's "What's new" page)
Usage: bromigos whats-new [OPTIONS] [RELEASE]
Arguments:
[RELEASE] A release's notes (e.g. 0.1.2); the newest by default
Options:
--all Every release's notes, newest first
-h, --help Print help
bromigos whoami
Show who’s signed in to a Bromigos account here, and how.
bromigos whoami [--json]
For example:
bromigos whoami
From the bromigos-core package.
bromigos widgets
The desktop panels: run them (login does), show or hide one or all, edit mode, type in the notes.
bromigos widgets [toggle NAME|all | show NAME|all | add NAME | edit [on|done|cancel] | notes | reload | gallery [--previews DIR]]
From the bromigos-widgets package.
bromigos windows
Remember floating windows’ positions per workspace and app, and put them back.
bromigos windows [run | list | clear [CLASS…] | forget WORKSPACE CLASS]
For example:
bromigos windows list
bromigos windows clear pavucontrol
bromigos windows clear
From the bromigos-desktop package.
bromigos wol
Keep Wake-on-LAN on for wired network cards.
bromigos wol status [--json] | apply [--quiet] [CARD...]
For example:
bromigos wol status
sudo bromigos wol apply
From the bromigos-core package.
Your own commands
Any program named bromigos-<group>-<name> on your PATH becomes a bromigos command:
bromigos <group> <name>. It shows up in bromigos commands and in the menu’s COMMANDS
group.
-
Make a file in a folder on your
PATH, such as~/.local/bin/bromigos-toggle-nightlight. -
Describe it in a comment block at the top:
#!/bin/sh # bromigos:summary=Toggle the night light # bromigos:args=[on|off] # bromigos:examples=bromigos toggle nightlight on -
Make it executable with
chmod +x, and run it asbromigos toggle nightlight.
To share a command, make it an extension.
Files and folders
bromigOS keeps three kinds of files apart: its own defaults, your settings, and files it makes for you. Updates replace bromigOS’s defaults. They don’t overwrite your settings. Now and then an update moves or adjusts one of your files so it keeps working, and keeps a copy of the old one.
The three homes
| Folder | What’s in it | Who changes it |
|---|---|---|
/usr/share/bromigos/ and /usr/lib/bromigos/ | bromigOS’s defaults, themes, tools and libraries. | Updates. Don’t edit these. |
~/.config/bromigos/, plus short files in ~/.config/hypr/, ~/.config/waybar/ and friends | Your settings. | You, Settings, and bromigos setup. |
~/.local/state/bromigos/ | Files bromigOS makes: the current theme’s colours, logs, the record of updates. | bromigOS. |
Your files in ~/.config/hypr/, ~/.config/waybar/ and the rest are short. Each one loads
bromigOS’s defaults first, then adds yours. So an update can improve the defaults without
undoing your changes.
Your settings
All in ~/.config/bromigos/:
| File or folder | What it holds | Changed by |
|---|---|---|
accessibility.toml | Motion and contrast. | Accessibility |
shell.toml | Your prompt choice. | Shell and terminal |
aur.toml | Whether bromigOS uses the AUR. | bromigos aur |
idle.toml | When the screensaver, the lock and sleep happen. | Idle and lock |
targets.toml | Where AI work runs. | Creating with AI |
create.toml | The tools that make pictures and 3D models. | bromigos setup create |
homelab.toml | Your homelab’s services. | Your homelab |
peripherals.toml | Your keyboard’s extra keys and lighting. | Keyboards and peripherals |
graphics.json | The card games and heavy apps run on. | Settings › Graphics, bromigos hw games |
bluetooth.toml | Whether headphones take over the sound when they connect. | Settings › Bluetooth, bromigos bluetooth audio-default |
keys.toml | Your own shortcuts. | Your own shortcuts |
monitors.toml | Your primary monitor. | Settings › Displays |
input.toml | The keyboard layout, key repeat, the mouse and the touchpad. | Settings › Keyboard & input |
profile.toml | Who you are, and what VECTOR calls you. | Settings › Account |
webapps.toml | Your web apps. | Web apps |
weather.toml | The weather panel’s place. | Panels |
widgets/layout.json | Where the panels sit. | Panels |
windows.toml | Which floating windows go back where you left them. | Windows and workspaces |
startpage.toml | The browser start page’s links. | Apps |
vector/ | VECTOR’s brain, voices and holograms. | VECTOR |
themes/ | Themes of your own. | Themes and worlds |
plugins/ | Panels, Settings pages and VECTOR tools of your own. | You |
live/overrides.toml | The background’s animation switches. | bromigos anim |
Your Hyprland settings, including your monitors and your own keys, are in
~/.config/hypr/hyprland.lua. bromigos setup config opens it, and your other config
files, in your editor.
Files bromigOS makes for you
| File or folder | What it is |
|---|---|
~/.local/state/bromigos/install.log | Everything the installer did. |
~/.local/state/bromigos/vector-shell.log | Every command VECTOR ran in his terminal, every one he refused, and every flip of his emergency switch. |
~/.local/state/bromigos/vector-guard.log | Every change to VECTOR’s safety code and settings. bromigos vector guard log reads it. |
~/.local/state/bromigos/theme/ | The theme you chose, drawn for every app. |
~/.local/state/bromigos-live/live.log | The animated background’s log. |
~/.local/state/bromigos/ext/ledger.json | The extensions you installed. |
~/.local/share/bromigos/notes.md | Your field notes. |
~/.local/share/bromigos/startpage/ | The browser start page. |
~/.local/share/bromigos/ext/ | Your extensions’ files. |
~/Pictures/screenshots/ | Your screenshots. |
~/Videos/recordings/ | Your screen recordings. |
~/Pictures/bromigos/lab/ | What your homelab made for you. |
~/.local/state/bromigos/hw/hyprland.lua | Your session’s graphics settings, from bromigos hw setup. Edit it and bromigOS leaves it alone. See Hardware. |
~/.local/state/bromigos/game/backup/ | A copy of Steam’s config.vdf before each change bromigOS makes. See Playing games. |
~/.local/share/applications/steam.desktop | Your copy of Steam’s launcher, while Start Steam on the games card is on. |
~/.local/share/keyrings/ | Your keyring, where sign-ins and passwords are kept, encrypted with your login password. See Your keyring. |
System files bromigOS changes
| File | What changes |
|---|---|
/etc/pam.d/login, /etc/pam.d/sddm | A line each for auth and session that unlocks your keyring when you sign in. |
/etc/pam.d/passwd | A password line, so a new password carries over to your keyring. |
bromigos keyring setup adds these lines, and bromigos update runs it once. It never
changes the other lines. See Your keyring.
Choosing graphics cards in Settings › Graphics changes these:
| File | What changes |
|---|---|
/var/lib/bromigos/hw/graphics.json | The desktop’s card and the cards kept for virtual machines. |
/etc/bromigos/hw/vfio-pci-override.sh | Hands a card kept for virtual machines to vfio-pci at start, by its PCI address. |
/etc/modprobe.d/bromigos-vfio.conf | Runs that script when vfio-pci loads, before the card’s own drivers. |
/etc/mkinitcpio.conf.d/bromigos-vfio.conf | Puts vfio-pci and the script in the start-up files. |
The last three exist only while a card is kept for virtual machines. See Keep a card for virtual machines.
The package repository
| File | What it holds |
|---|---|
/etc/pacman.conf | Which repositories pacman uses. You add bromigOS here. |
/etc/pacman.d/bromigos-mirrorlist | The stable package server and any extra mirrors you add. |
/usr/share/pacman/keyrings/bromigos.gpg | The public signing key installed by bromigos-keyring. |
/usr/share/pacman/keyrings/bromigos-trusted | The signing key’s fingerprint for pacman. |
The AUR install route puts the keyring and
mirrorlist in place. The packages leave pacman.conf for you to edit.
Keep your settings in dotfiles
Your settings are plain files, so you can keep them in a git repository with the rest of your dotfiles. To keep private values out of a public repository:
- homelab passwords and tokens are written as references, not as the secrets themselves (Keep passwords out of the file);
- other private values go in the private overlay, which is
encrypted.
bromigos private editopens it. It needs thesopsandagepackages.
What gets installed
bromigOS is a set of packages. You install one, bromigos, and it brings in the rest.
This page lists them all, so you can see what each part is and add the optional ones.
To add an optional package, run bromigos install --with and its name. For example, to add
the app bundle:
bromigos install --with bromigos-apps
| Package | What it is | Installed |
|---|---|---|
bromigos | bromigOS: holograms, homelab integrations, living themes and widgets on Arch and Hyprland | the one to install: everything below marked with bromigOS |
bromigos-keyring | bromigOS package-signing key for pacman | with bromigOS |
bromigos-core | bromigos: one command for the bromigOS desktop | with bromigOS |
bromigos-desktop | bromigOS desktop: default configs for Hyprland, waybar, rofi, dunst, gtklock and hypridle, and their tools | with bromigOS |
bromigos-settings | bromigOS system settings: the login screen, the boot splash and menu, the GTK, icon and cursor themes, the fonts | with bromigOS |
bromigos-live | bromigOS live layer: the animated, data-reactive background, its worlds and decks | with bromigOS |
bromigos-widgets | bromigOS desktop widgets: system, network, storage, workbench, notes and shortcuts panels | with bromigOS |
bromigos-vector | VECTOR, the desktop’s caretaker, and the hologram renderer he lives in (from the vector repository) | with bromigOS |
bromigos-manual | bromigOS manual: how to use the desktop, as HTML, for reading offline | with bromigOS |
bromigos-mirrorlist | bromigOS package repository mirrors | with bromigOS (through bromigos-keyring) |
bromigos-homelab | bromigOS homelab integrations: desktop panels, homelab decks and VECTOR tools | with bromigOS (through bromigos-desktop) |
bromigos-bar-hover | bromigOS bar hover popups: a waybar module that opens a popup when the pointer rests on another | with bromigOS (through bromigos-desktop) |
mehshell | Fast parallel zsh prompt engine for bromigOS | with bromigOS (through bromigos-desktop) |
oo7 | A Secret Service provider | with bromigOS (through bromigos-desktop) |
ttf-geist-mono | Geist Mono, a monospaced typeface by Vercel | with bromigOS (through bromigos-settings) |
bromigos-lab | Standalone homelab console, adapters, model catalog and reviewed provisioning | with bromigOS (through bromigos-homelab) |
bromigos-lab-catalog | bromigOS lab model catalog: the best open models per AI capability and GPU size, with licences | with bromigOS (through bromigos-homelab) |
bromigos-apps | bromigOS app bundle: LazyVim, tmux, lazygit, mise, Chromium, Spotify and Signal, configured and themed | optional: bromigos install --with bromigos-apps |
herdr | Terminal workspace manager for AI coding agents | optional: bromigos install --with herdr |
paru | Feature packed AUR helper | by bromigos install (its aur step), unless --no-aur or bromigos setup aur leaves it out |
1password | Password manager and secure wallet | optional, for bromigos-apps |
xpadneo-dkms | Advanced Linux Driver for Xbox One Wireless Gamepad | by bromigos peripheral enable xbox-controller, for an Xbox controller |
herdr, ttf-geist-mono, 1password, paru and xpadneo-dkms aren’t in Arch’s own repositories, so bromigOS packages them into its own, each pinned by checksum. Only 1password needs the AUR, and only on a public install (below).
herdr,paruandxpadneo-dkmsare built from their upstream source.ttf-geist-monopackages the fonts from Geist’s release.1passwordrepackages 1Password’s own Linux download. It isn’t built from source. Its licence is proprietary, so the public mirror leaves it out: there,bromigos install --with 1passwordgets it from the AUR with paru.
oo7, the keyring, is in Arch’s repositories too, but Arch’s version can’t unlock it at a text console login. bromigOS builds a newer one from upstream’s source, until Arch’s catches up.
BRODEC (optional): sudo pacman -S brodec-desktop. BRODEC is a separate Bromigos
product, an end-to-end encrypted messenger. Its desktop app is in the bromigOS package
repository, but it isn’t installed by default. Once you install it, system updates keep
it current. It keeps its sign-in in your keyring, as bromigOS
does.
BRODEC’s lab bridge is optional too: sudo pacman -S brodec-lab lets this machine report
to your BRODEC account as your lab. It only reads. Nothing starts until you run
sudo systemctl enable --now brodec-lab, then sudo brodec-lab pair, and scan the code it
shows in BRODEC.
Where your own files go
Updates replace the packages’ files, not yours. The full list of folders is on Files and folders.
Glossary
The words this manual uses for parts of bromigOS, in alphabetical order. Some come from the bromigOS story. You never need the story to use the desktop.
AUR
The Arch User Repository: build recipes that Arch Linux users share, for software that isn’t in Arch Linux’s own repositories. Nobody vets them. paru, which bromigOS installs, builds them on your machine. See Install an app from the AUR.
Bar
The strip along the top of the screen. It shows your workspaces, the window title, what’s playing, readings such as processor and memory use, and the clock. See The bar.
Burn-in
The bromigOS emblem: a flame inside a ring of text. It appears on the lock screen, at login, in the boot menu and on the screensaver.
Channel
Which stream of updates your machine follows: stable, rc, edge or dev. See
Channels.
Codec call
A short spoken message from the desktop about something important, such as a long job finishing. It shows on screen in a small panel while it plays. You can turn the voice off and keep the panel (Super+Shift+C). The name comes from the radio calls of the story.
Coding agent
An AI program that writes code for you in a terminal. bromigOS shows agents that run in
herdr, a terminal workspace manager. The worlds and the
Swarm show when an agent is working or needs you.
Colour theme
A theme that changes the colours of everything and shows the den in those colours. bromigOS has eight: Rime, Sunder, Cinder, Lowtown, Highwind, Deepvein, and Wick · Tidewell and Wick · Mire, the den in the two worlds’ colours.
Creation tools
The AI tools that make images, edits, cutouts (a picture with its background removed), 3D models and short video loops. VECTOR uses them. See Creating with AI.
Deck
A full-screen hologram that opens over your windows: the holo deck, the timeline, the Drift map and the Swarm, and with a homelab the lab deck, Mind, Ops theater and the network map. One deck shows at a time. See Holograms.
Den
The background of the Wick theme: a radio room with a desk of old consoles and a window onto space. Parts of it move with your machine’s readings. Colour themes show the den in their own colours.
Den TV
The den’s screens playing your own videos as TV channels: from Jellyfin, Plex, YouTube or a folder, always part-way through something, as if they’d been on all along. Each screen plays its own channel. A TV channel is one of these, not an update channel. The channel guide (Settings › Den TV) lists them all. See The den TV.
The Drift
The part of space where the bromigOS story takes place. Each world is a post somewhere in the Drift, and the Drift map is a chart of it.
Extension
An add-on that somebody shares as a git repository: a theme, a deck, a panel, a tool for VECTOR, a homelab adapter or a command. See Extensions.
Field notes
Your notes, in the FIELD NOTES panel. They save as you type. See Field notes.
Homelab
Computers you run yourself, at home or in a cupboard: servers, a machine with a graphics card for AI, a NAS. bromigOS can show your homelab on the desktop and run AI work on it. “The lab” means the same thing. See Your homelab.
Hologram
A glowing 3D view. VECTOR appears as one, decks are full-screen ones, and the gallery holds 3D models you can turn and take apart. See Holograms.
Hyprland
The window manager bromigOS runs on. It places your windows and runs the keys.
Keeper
The figure who lives in a world’s scene, such as Hollis on the porch in Mire. The keeper works while you work and dozes when you leave.
The lab
Your homelab. bromigos lab is its console. See
The lab console.
Live layer
The program that draws the animated background, the screensaver, the decks and
the lock-screen animation. Its package is bromigos-live. Turn the background off and on
with Super+Shift+B.
The line
Showing VECTOR. In the story VECTOR talks to you over a radio line, so the menu calls showing him “the line”.
The menu
The bromigOS menu, which opens with Super+Space. It launches apps and runs everything bromigOS does. See The menu.
Migration
A small script that an update runs to adjust your settings after bromigOS changes. A migration that has to change one of your files keeps a copy of the old one.
nolgia
A paid cloud service for AI images, video and 3D models. bromigOS can only use it once you sign in to it, and then only where you allow the cloud or choose nolgia for a creation tool. See Creating with AI.
Panel
A readout on the desktop, under your windows: SYSTEM, NETWORK, STORAGE, WORKBENCH, FIELD NOTES, SHORTCUTS, and others you can turn on. bromigOS’s own files sometimes call them widgets. See Panels.
Peripheral module
Optional support for a device’s extra features, such as a keyboard’s macro keys, dial and lighting. See Keyboards and peripherals.
Post
In the story, a relay station somewhere in the Drift. Each world shows the view from one post.
Primary monitor
The monitor where the background, the panels and VECTOR appear. Choose it in Settings › Displays.
Private overlay
Settings you keep encrypted alongside your dotfiles, such as addresses or keys.
bromigos private edit edits them and decrypts them again. It needs the sops and age
packages. bromigOS decrypts them when you sign in, and again whenever the encrypted file
changes, such as after you pull your dotfiles. Without your age key, nothing happens.
Scanner
A drawing of your machine’s hardware that the background can show, with live readings. Hold Super+Z to see it, or press Super+X to pin it.
Scratchpad
A hidden workspace that opens over the one you’re on. See Windows and workspaces.
Snapshot
A saved copy of the system’s files. If your system disk uses btrfs, bromigOS takes one before and after every update, so you can undo the update. See Updating and rolling back.
Super
The key with the Windows or logo symbol on it. bromigOS’s own keys use it.
Target
A place where AI work can run: homelab, local (this machine) or cloud. See
Creating with AI.
Theme
The whole look of the desktop: the colours of every app, the bar’s icons, the wallpaper, the lock screen and the boot menu. See Themes and worlds.
VECTOR
The desktop’s AI assistant. He talks, runs your tools and makes images and holograms. In the story he is the caretaker of a distant spaceport, talking to you over a radio line. See VECTOR.
The Wick
The default theme: phosphor green on black, with the den as its background. In the story the Wick is a relay station at the edge of the Drift.
Workspace
A separate screenful of windows. There are ten. See Windows and workspaces.
World
A theme with its own living scene instead of a still wallpaper. Everything that moves in it shows something real: your coding agents, your network, your homelab. bromigOS has two worlds, Mire and Tidewell. See The worlds.