DOpus
DOpus is MixOS's file manager: two panes side by side, each a folder tree, with a Places sidebar on the left and a Properties sidebar on the right. The name is a nod to Directory Opus on the Amiga, whose twin panes it keeps.
The window
- Two panes. Each shows one folder as a tree with Name, Size and Modified columns; columns that do not fit are hidden, Modified first. One pane is active; Switch Pane (Tab) moves between them, and copy and move always go to the other pane. Drag the divider to change the split.
- The path field at the top of each pane always shows where it is. Click
it, type a path and press Enter to go there;
~is your home, and a file path opens the folder that holds it. - The tree. A chevron or a double-click opens a folder in place; another collapses it. Double-click a file to open it in its default application.
- Selecting. Click a row to select it, Ctrl-click to add or remove one, Shift-click for a range. The arrow keys, Home and End move the selection.
- Sorting. Click a column header to sort by it, ascending first; click it again to reverse.
- Places lists Home, the filesystem root and your Desktop, Documents, Downloads, Music, Pictures and Videos folders, where they exist. Its toggle sits left of the left pane's path field.
- Properties shows the selected item: kind, size, dates, permissions, owner and path, under a preview of a file when one can be made. Its toggle sits right of the right pane's path field.
- Previews (View › Previews, per pane, on by default) are thumbnails
from the desktop's shared thumbnail cache, made by the thumbnailers
installed on the system (the same ones GNOME and COSMIC use). A type
with no thumbnailer keeps its icon. Files on network, FUSE and automounted filesystems (NFS, SMB,
sshfs, ntfs-3g and the like) keep their icons too, unless
remote_previews: trueis set in the configuration (below). A file whose filesystem stops answering keeps its icon rather than holding up the previews of the others. - Icons show what a folder or file holds: your well-known folders have their own, and files are grouped by their MIME type (document, code, image, audio, video, archive, spreadsheet, presentation, font, disk image, program, shell script).
- Drag and drop. Drag rows from one pane onto the other, or onto a folder in it, and choose Move Here, Copy Here or Cancel.
- Right-click a row or a pane's background for the actions that apply there.
Deleting asks first, and naming a new folder or a rename is checked before anything happens. Copies, moves and deletes run in the background, and the status line says how they ended.
Menus and keys
The menus hold every action except moving the selection (the arrow keys, Home and End) and the quick theme keys (Ctrl+Alt+D for light or dark, Ctrl+Alt+1 to 6 for a scheme; View › Theme has the full choice). Help › Keyboard Shortcuts lists every key in force.
| Menu | Action | Keys |
|---|---|---|
| File | Open | Enter |
| New Folder | Ctrl+Shift+N | |
| Rename | Ctrl+E | |
| Copy to Other Pane | Ctrl+C | |
| Move to Other Pane | Ctrl+X | |
| Delete | Delete | |
| Quit | Ctrl+Q | |
| View | Places, Properties | Ctrl+B, Ctrl+I |
| Hidden Files | Ctrl+H | |
| Refresh | Ctrl+R | |
| Sort by Name, Size, Modified | Ctrl+1, Ctrl+2, Ctrl+3 | |
| Theme | (this window's look; the session's by default) | |
| Go | Back, Forward | Alt+ArrowLeft, Alt+ArrowRight |
| Parent Folder | Backspace, Alt+ArrowUp | |
| Home | Alt+Home | |
| Location… | Ctrl+L | |
| Switch Pane | Tab | |
| Help | Keyboard Shortcuts | Ctrl+/ |
To change a key, set it in the desktop profile: the binding applies at once,
and DOpus's defaults stay for every action you leave alone. For example,
settings.apply with keymaps.dopus.nav.parent: ["Ctrl+U"] makes Ctrl+U
the parent-folder key, an empty list leaves an action without a key, and a
reset of keymaps.dopus restores the defaults. See key bindings are desktop
settings.
What it remembers
The two panes' folders, sorting and hidden-files setting, which pane was
active, the split, and the sidebars' state and widths are kept in
config.conf.mix in DOpus's own directory (by default
~/.local/state/mixos/apps/dopus/config/). dopus --print-config shows the
configuration it would use. One setting lives only there:
remote_previews (default false) makes previews of files on network,
FUSE and automounted filesystems too.
For agents
DOpus answers on the Bus as dopus (schema dopus.v1).
| Verb | Arguments | Answer |
|---|---|---|
dopus.ping, dopus.describe, dopus.info | liveness, the control surface, version and build | |
dopus.state | both panes (path, sort, hidden files, previews, selection, rows, status) and the sidebars | |
dopus.open | paths (one per pane), or one path and pane | goes there |
dopus.action | id, pane (left, right or active) | runs one action |
dopus.actions.list | every action, its keys in force and whether it can run now | |
dopus.theme.set | scheme, mode | this window's look |
dopus.quit | closes the window |
File operations are keyboard-only. dopus.action refuses every file.*
action (FORBIDDEN). Input played through the drive verbs (dopus.ui.*)
is held to the same rule: while it runs, file actions and opening files are
refused, and a delete, name or drop dialog can be dismissed but not
accepted. The rule holds for the whole time drive input runs, so a key you
press yourself in that moment is refused too; press it again after. An agent reads, navigates, sorts and selects through DOpus, but
never creates, renames, moves, copies, deletes or opens files through it.
The window is drivable like every MixOS app, including its menus: see
driving an app (dopus.ui.*, dopus.window). The verbs are
registered in docs/docs/spec/bus/verbs.conf.mix.
Each command run from a menu, a key, a sidebar button or an accepted
dopus.action is published on dopus.command.executed, with how it was
reached (menu, shortcut, ui or bus;
executed commands). A refused
action is not published.
dopus --headless runs the core and the Bus port without a window, for
tests: the same verbs, minus those that need a window. It publishes its
accepted dopus.action runs on <service>.command.executed too.