| 1 |
# 9. Files, editing, and media |
| 2 |
|
| 3 |
Alloy ships one default per job. All of them are keyboard-driven, and most of |
| 4 |
them are vim-shaped. |
| 5 |
|
| 6 |
## Files: yazi |
| 7 |
|
| 8 |
yazi |
| 9 |
|
| 10 |
A two-pane file manager in the terminal, with previews. Under shop it renders |
| 11 |
images inline using the kitty graphics protocol rather than falling back to |
| 12 |
coloured blocks, which is most of what the terminal is asked for here. |
| 13 |
|
| 14 |
`?` lists its keys. `q` leaves. |
| 15 |
|
| 16 |
There is no graphical file manager in the image. Apps that need to open or save |
| 17 |
a file get a portal dialog, which is what a browser uses, so the daily case is |
| 18 |
covered. If you want one anyway, it comes from a flatpak remote you add (chapter 7). |
| 19 |
|
| 20 |
## Editing: helix |
| 21 |
|
| 22 |
hx <file> |
| 23 |
|
| 24 |
Modal, selection-first: you select and then act, so it is `3wd` where vim is |
| 25 |
`d3w`. Language servers, tree-sitter highlighting, and formatters are built in |
| 26 |
rather than assembled from plugins. It is useful with no configuration. |
| 27 |
|
| 28 |
`EDITOR` is set to `hx`, so git commit messages and everything else that |
| 29 |
respects `$EDITOR` open here. |
| 30 |
|
| 31 |
Alloy ships the Akari theme and a small config at `~/.config/helix/`. If you |
| 32 |
have vim muscle memory, expect a week or two of friction; the grammar is a real |
| 33 |
improvement but it is not the one your fingers know. `:tutor` is the fastest |
| 34 |
way through. |
| 35 |
|
| 36 |
## PDFs: zathura |
| 37 |
|
| 38 |
zathura <file.pdf> |
| 39 |
|
| 40 |
vim keys, statusbar-only chrome. `i` toggles recolouring, which is off in the |
| 41 |
day theme (the page already agrees with the chrome) and on at night (an |
| 42 |
unrecoloured PDF in a dark session is a floodlight). |
| 43 |
|
| 44 |
zathura reads. It does not annotate, and Alloy does not ship an annotator. |
| 45 |
|
| 46 |
## Images: imv |
| 47 |
|
| 48 |
imv <file> |
| 49 |
|
| 50 |
Wayland-native, tiny, vi-like keys. The overlay is hidden until you ask for it. |
| 51 |
|
| 52 |
## Video and audio: mpv |
| 53 |
|
| 54 |
mpv <file-or-url> |
| 55 |
|
| 56 |
No chrome by default, hardware decoding on, screenshots to |
| 57 |
`~/Pictures/Screenshots`. It plays streams through yt-dlp, capped at 1080p in |
| 58 |
the shipped config. |
| 59 |
|
| 60 |
A fullscreen mpv window holds the screen lock off. A windowed one does not, |
| 61 |
because a windowed video is usually something being glanced at. |
| 62 |
|
| 63 |
## System monitoring: bottom |
| 64 |
|
| 65 |
btm |
| 66 |
|
| 67 |
or `top`, which is aliased to it. ratatui-based, same visual family as the |
| 68 |
console. Clicking is disabled on purpose; it is keyboard-only. |
| 69 |
|
| 70 |
## Disk usage: dua |
| 71 |
|
| 72 |
du |
| 73 |
|
| 74 |
is aliased to `dua interactive`. Navigate with vim keys, mark things for |
| 75 |
deletion, delete them. |
| 76 |
|
| 77 |
## Clipboard history |
| 78 |
|
| 79 |
Everything you copy is recorded, text and images both. `Mod+Shift+V` opens a |
| 80 |
picker over the history; choose an entry and it goes back on the clipboard. |
| 81 |
|
| 82 |
The store is at `~/.local/share/cliphist/db` and needs no configuration. If you |
| 83 |
want a copy to never be recorded, there is no per-copy exclusion today; clear |
| 84 |
the history with `cliphist wipe`. |
| 85 |
|
| 86 |
## Screenshots and annotation |
| 87 |
|
| 88 |
Covered in chapter 5. The one thing worth repeating here: `Mod+Print` opens the |
| 89 |
most recent capture in satty, which is where you crop, arrow, and blur before |
| 90 |
sending it somewhere. |
| 91 |
|
| 92 |
## The browser |
| 93 |
|
| 94 |
Firefox ships in the image as the default browser. It comes from Fedora's own |
| 95 |
repositories, which matters more than it sounds: those stay enabled after you |
| 96 |
install, so a machine built with no browser at all is one `rpm-ostree install |
| 97 |
firefox` away from this one. |
| 98 |
|
| 99 |
Alloy changes exactly one file, `/etc/firefox/pref/alloy.js`, and it is worth |
| 100 |
knowing what is in it because the rule it follows is short. Alloy turns off |
| 101 |
things that serve somebody other than you: telemetry, sponsored placements on |
| 102 |
the new tab page and in the address bar, and the AI features, which arrive |
| 103 |
switched on and download models nobody asked for. It sets tracking protection |
| 104 |
to strict. It also turns on one thing, `browser.compactmode.show`, which puts |
| 105 |
the density control back in Customize where Mozilla hides it. |
| 106 |
|
| 107 |
That last one is the pattern rather than an exception. Alloy would rather hand |
| 108 |
you back a control than pick the value for you, so it does not set the density |
| 109 |
itself: compact is one click away in Customize and the choice stays yours. |
| 110 |
|
| 111 |
Nothing in that file is locked. Every line is a starting position you can |
| 112 |
change in Settings, and if you disagree with all of it, changing all of it is |
| 113 |
supported. There is no policy file, no autoconfig, and no chrome CSS. Anything |
| 114 |
past what a well-behaved app reads from the system (light or dark, the GTK |
| 115 |
theme for dialogs, the cursor, the fonts) is yours to set in the browser's own |
| 116 |
settings. |
| 117 |
|
| 118 |
Two honest notes. Because the browser lives in the image, it updates when you |
| 119 |
rebuild the image and not before (chapter 8). And Mozilla renames preferences |
| 120 |
between releases, so a line in that file can quietly stop applying; the file |
| 121 |
records which Firefox version its names were read from. |
| 122 |
|