Repository navigation
Releases: tarkh/w
Release list
v0.23.0
- Audio pack.
w-pack install audiosets up music production on W's
PipeWire stack: Ardour 9, qpwgraph for routing, Audacity, and a plugin starter
set (Surge XT, the LSP suite, Dragonfly Reverb). PipeWire takes over the JACK
API —pipewire-jackreplacesjack2, and stays if the pack is removed,
because other apps link against it — and your account gets realtime audio
priority from your next login. Ardour, Audacity and qpwgraph open in your W
colours. The W assistant can work inside an open Ardour session — tracks,
plugins, mixer, MIDI — once you turn on MCP HTTP Server (Experimental) in
Ardour's Preferences → Control Surfaces; it is off by default because Ardour's
server listens on every network interface without authentication. About
660 MiB. The installer offers the pack as well. - W Help.
SUPER+F1, Hub → Documentation and the new Open in Help button
on documentation cards now open the W documentation as a site in its own
window: pages by category, search, English and Russian, painted in your
current theme. It is the copy on disk in/usr/share/doc/w/html, so it works
offline. From a terminal:w-help [page[#section]]. - Assistant, Calendar, Power menu and Volume control start from any app.
Their launcher entries carried an escape that GLib rejects, so Nemo,
gio launchand the desktop portals could not start them — only W's own
launcher could. Fixed. - Arrow keys in W dialogs moved focus the wrong way in rows of buttons.
Fixed. - Assistant: remote MCP servers. A drop-in in
mcp.dcan name its server
withURL=(streamable HTTP) instead ofCOMMAND/ARGS; every assistant
host receives it in its own native form. - Signed install images. From the next nightly build the ISO carries a
Sigstore build-provenance attestation, made by the build itself. Check it with
gh attestation verify w-*-x86_64.iso --repo tarkh/w; theedgerelease
notes show the steps. - A broken link to the FAQ in Keeping W up to date (English and Russian) is
fixed.
Install image: download the current build — rebuilt nightly, including from this release.
W install image — edge
The W install image, rebuilt every night from the tip of main and again
after every release. This is the only image W publishes — there is no separate
per-version download.
| File | w-0.23.0-2026.10.15-x86_64.iso |
| Release | 0.23.0 |
| Built | 2026.10.15 (UTC) |
| From commit | 3de5b622 |
| Size | 1.6G |
| SHA-256 | 92100c0f082d3324cb3490d383fcb8a90d6fc9fdf29acea3a9eb435ab96da545 |
W is a rolling distribution, so the release number and the build date say two
different things: 0.23.0 is which version of W's own configuration this is,
and 2026.10.15 is the day its packages were pulled from Arch. Both are recorded
in /etc/os-release on the installed system as IMAGE_VERSION and
W_BUILD_DATE. An image of the same release built a month apart is a different
set of packages — that is normal, and it is why this download is rebuilt nightly
instead of being frozen per version.
sha256sum w-0.23.0-2026.10.15-x86_64.iso
The checksum only catches a broken download — it sits on the same page as the
file. The image's signature is its build provenance: a Sigstore attestation that
this file was built by this repository's edge-iso workflow from the commit
above, which is a release snapshot signed with the W release key:
gh attestation verify w-0.23.0-2026.10.15-x86_64.iso --repo tarkh/w
# in a clone of the repository — the key is the one every W machine trusts
git -c gpg.ssh.allowedSignersFile=rootfs/usr/share/w/update/w-release.allowed_signers \
verify-commit 3de5b6226f75
v0.22.0
- 3D pack.
w-pack install 3dsets up Blender 5 with the Cycles GPU runtime
for your card (AMD HIP, Intel Arc oneAPI; NVIDIA renders through its driver).
The W assistant can build and edit scenes in a running Blender — inspect them,
run code, take viewport screenshots, export — with Blender's safe mode on and
its telemetry off. Blender follows your W theme live; a theme preset you pick
in Blender yourself is left alone. Every Open/Save dialog in Blender opens at
the same size as the rest of W. The pack is heavy: about 2.5 GiB with its
dependencies. On an AMD machine whose processor has integrated graphics,
Cycles lists the iGPU as a second HIP device named after the CPU — untick it
in Preferences → System, or renders split onto the slower chip. - Engine upgrades for ComfyUI and InvokeAI. Both install their engine from
upstream, so system updates never moved it.w-pack outdatednow shows the
installed and the newest stable version, andsudo w-pack upgrademoves it:
the service is stopped (refused while it is busy), a rollback point is
recorded, and if the new version fails to start and answer, the previous one
is put back. To hold a specific version, set it with
w-conf set comfyui VERSION <x.y.z>(orinvokeai). Available engine
upgrades show up inw-update statusand in Hub → Packs with an Update
button; they are never counted in the bar's update badge and
w-update upgradenever runs them. The assistant can plan and apply the
upgrade too. - Ollama models live in the shared AI model store. With the
ai-extra
pack, Ollama now keeps its models inollama/inside the machine-wide store
(/var/lib/w/ai-modelsby default) and followsw-conf set ai-models DIR
like ComfyUI and InvokeAI. Models already in/var/lib/ollamaare moved
there once, during this update (instantly on Btrfs; otherwise copied, verified
and only then removed). If both places already hold models, the store wins and
/var/lib/ollamais left for you to merge by hand. - The assistant answers everyday requests lighter. In the default goose
host, tools of installed packs (Blender, GIMP, Inkscape) are no longer sent
with every request; the assistant turns a pack's tools on when a task needs
them, within the same turn. A plain question now carries 58 KB instead of up
to 128 KB — faster and cheaper on paid models. - Screen Recording in the launcher, next to Screenshot: it opens the region
selector and starts recording; launching it again stops the take. - Every Open/Save dialog opens at one size — floating and centred at
1000×640, in every app. Some GTK dialogs used to open tiled, and GTK saved
that full-height tile as your size for every app afterwards. If your dialogs
still open stretched after the update, that saved size is yours and W leaves
it alone; reset it once with
gsettings reset org.gtk.Settings.FileChooser window-size.
LibreOffice dialogs opened from the Start Center no longer tile either. - Terminal launches follow your terminal. Nemo's "Open in Terminal" did
nothing (it looked for gnome-terminal, which W does not ship); it now opens
your selected terminal in that folder. Apps marked to run in a terminal and
gio launchalso use it, through the standardxdg-terminal-execpackage,
which this update installs. - foot gets blur. With foot as your terminal, background blur now follows
the blur setting, including the Hub override; before, foot was never blurred.
Install image: download the current build — rebuilt nightly, including from this release.
v0.21.0
- InvokeAI pack.
w-pack install invokeaisets up InvokeAI, an image
generation app with a canvas editor, as a service on http://localhost:9090,
under its own account. It shares the machine-wide model store with ComfyUI
(/var/lib/w/ai-models): every model file already there is registered in place
— nothing is copied — and deleting a model from InvokeAI's UI can never remove
weights ComfyUI uses. The GPU backend (NVIDIA, AMD/ROCm, Intel, or CPU) is
picked for your machine; the pack adds a launcher entry and an AI skill. It
also installsopencv(four small packages) for the canvas's content-aware
infill. On a machine with two GPUs (for example an AMD card plus the
processor's integrated graphics), setdevice: cuda:0ininvokeai.yaml,
or half the jobs run on the slower one. Removing either AI pack keeps the
sharedw-aigroup for the other. - Clicking a notification opens its source. The window of the app that sent
it comes to the front, on its own workspace — Telegram shows the chat, Firefox
the tab — instead of staying behind. "Saved" notifications for screenshots and
screen recordings now show a preview of the capture, and clicking one opens the
file in its default app. - Screenshot editor opens at the size of your screen. Annotation (satty)
used to squeeze every capture into a shorter canvas and open it shrunk; it now
opens at its on-screen size, and a region capture opens right over the spot it
was taken from. - Super+Enter no longer fails at random. On systemd 262 the terminal
occasionally opened no window at all (about one launch in five in testing).
Ghostty now starts in a mode that avoids the race. - Logging out no longer loses your saved session. If a save dialog stayed
open during logout, the background session saver could overwrite the exit
snapshot with a half-closed desktop, so windows came back missing or stretched.
The saver is now paused for the exit and resumed if you cancel it. - Gaming pack: a rootless
w-pack setup gamingno longer misreports its own
library subvolumes as plain folders in home snapshots, and the MangoHud config
exists right after install instead of at the next login.
Install image: download the current build — rebuilt nightly, including from this release.
v0.20.0
-
Screen recording.
Super+Ctrl+Rrecords the current screen,
Super+Alt+Ra region you drag out,Super+Ctrl+Alt+Rthe focused window.
Each chord is a toggle: the same keys that start a take end it. While
recording, the bar shows a pulsing dot and the elapsed time; click it to stop,
right-click it to open the capture settings. Recordings land in your Videos
folder. Encoding uses the GPU when the machine has one and falls back to the CPU
with a notification, so a take never silently fails. Sound comes from the
system output by default (AUDIO=micornoneto change it); MP4, MKV and WebM
are supported. Recording all monitors at once is not possible — pick one.
The update installswf-recorderandimagemagickfor you.One step by hand: your own bar config does not pick up the new indicator
block on its own. To make the bar show it, reset that file to the shipped
default:w-reset quickshell .config/quickshell/w/config/bar.jsonThis replaces your
bar.json(the bar layout) with the shipped one — the
current copy is backed up first — so if you have customised the bar, you may
prefer to add therecordingblock by hand instead. -
Screen capture settings in the Hub. Hub → Displays has a new
"Screen capture" tab: encoder, sound, format, frame rate and screenshot
annotator, all changeable from the keyboard. The same settings are available as
w-record get|setandw-screenshot get|set, and, as everywhere in W, as
w-conf set --user record KEY VALUE. -
Window screenshots and recordings now have rounded corners and a shadow.
With no annotator (--copy,--save) or in Satty, a window screenshot gets
transparent rounded corners matching your theme and a soft macOS-style shadow.
Turn the shadow off withw-conf set --user screenshot WINDOW_SHADOW no.
Window recordings can paint the corners black too
(w-conf set --user record WINDOW_MASK yes); that is off by default because
it forces CPU encoding for window takes. Flameshot captures are unchanged.
Themes with square windows get no mask. -
Active-window screenshots include the window border. The capture used to cut
the frame off along the straight edges, because the border is drawn outside the
window's own rectangle. This has been so since window screenshots arrived in
v0.19.0; it also applies to window recordings and to the Flameshot preselection. -
The selection overlay looks the same for screenshots and recordings: no fill,
a 1 px frame and a neutral 65 % dim (Flameshot's dim is now the same depth).
The overlay fades out instantly, so it no longer ends up in the capture. -
Satty opens at the size of your capture instead of a fixed 70 % window.
It is capped at 80 % of the screen: a small region no longer opens as a huge
window, and a full-screen capture still fits with margin.
Install image: download the current build — rebuilt nightly, including from this release.
v0.19.0
-
Screenshots are now annotated in the same window you select in.
Super+Shift+I(region),Super+I(screen) andSuper+Ctrl+I(window) freeze
the display and let you drag the area and draw on it in one surface, with the
toolbar next to the selection — no second window opens. Flameshot does the
annotating; it captures through the same Wayland path as the rest of W and
wears your active theme. For region and window captures the bar steps below
the overlay instead of covering the strip you are dragging through. The
clipboard and plain-save captures are unchanged and still open nothing.Satty, the annotator this replaces, stays installed. If the overlay misbehaves
for you — wrong monitor, slow to appear — switch back without reinstalling:w-conf set --user screenshot ANNOTATOR sattyw-conf unset --user screenshot ANNOTATORreturns to Flameshot. One case
always uses Satty and ignores the setting: a single capture spanning every
monitor, which has no Flameshot equivalent. -
Two new keybinds save the screenshot straight to a file.
Super+Alt+I
(screen) andSuper+Ctrl+Alt+I(window) write a PNG into your Screenshots
folder with no annotator and no dialog. Rebindable like any other key, e.g.
w-hotkeys set screenshot_screen_save "SUPER + F12". -
New W-Pack: gaming. Steam, Lutris and Heroic on one shared
Proton/Wine/MangoHud/gamemode foundation, plus ProtonPlus, protontricks,
gamescope,ntsyncautoloading, and the game-tunedscx_lavdscheduler
(installed, not enabled). Off by default, ~4–5 GiB:w-pack install gamingThe pack enables the
multilibrepository and installs the 32-bit graphics
stack your GPU actually needs before Steam resolves its Vulkan dependency —
left to the resolver it picks the wrong provider and breaks Vulkan on
AMD/Intel. Your game library is kept out of@homesnapshots (it runs to
hundreds of gigabytes and re-downloads from the storefronts), and the MangoHud
overlay (Shift_F12) and the Heroic window are dressed in your active W
colours. Log out and back in once after installing — the pack adds your
account to thegamemodegroup, and group membership only applies to new
sessions. -
w-packbundles can declare apre.sh— a root step that runs before the
package list, for what a package list cannot express: enabling a repository,
syncing a fresh database, pinning a hardware-specific package ahead of a
virtual dependency. Only bundle authors are affected;w-pack refreshstill
never runs it.
Install image: download the current build — rebuilt nightly, including from this release.
v0.18.1
- Fixed: locking at the exact moment of a suspend no longer freezes
half-way and replays the animation on resume. When suspend arrives via
the lid, a baresystemctl suspend, or critical battery, the lock screen
used to cut off mid-fade-in and the rest of the animation played over the
desktop after wake. The lock now skips its fade-in when a suspend is
already in flight — the screen is going off anyway — while normal locks
(Super+L, idle,w-power sleep) keep it.
Install image: download the current build — rebuilt nightly, including from this release.
v0.18.0
-
New W-Pack: ComfyUI. Local image/video generation as a system service
on:8188, with the GPU-matched engine build (NVIDIA/AMD/Intel Arc/CPU)
chosen automatically, a shared model store under/var/lib/w/ai-models,
and ComfyUI-Manager enabled by default so custom nodes install from the
UI. Extra launch flags go throughw-conf set comfyui ARGS "..."; extra
environment variables go in an admin-owned20-local.confdrop-in.
Off by default — install withw-pack install comfyui. -
New W-Pack: LocalSend. AirDrop-alike file transfer, integrated into
Nemo's right-click menu ("Send with LocalSend") and scoped to the home
firewall zone. Its accent colour follows your W theme automatically,
the same way every other GTK4/libadwaita app does. -
w-confnow accepts--to end option parsing, for setting values
that start with a dash:w-conf set comfyui ARGS -- --lowvram -
Dev pack: added
cmake,clang, andninjato the common toolchain. -
Fixed:
ai-extracould silently skip installing the GPU-accelerated
Ollama backend if the plainollamapackage was already present on
the machine (e.g. pulled in earlier as a dependency) — it was mistaken
for a deliberate choice and left alone. It now installs the right
backend regardless. -
New
w-power sleepcommand. Suspending now waits for the lock
screen to finish drawing first, avoiding a black or half-drawn locker
on resume; the Power menu and idle-timeout suspend now use it. -
Fixed: some RGB mice/keyboards could still come back at their factory
colour after resume, even with the resume hook introduced in v0.17.0
— systemd could kill it before it finished detecting the device. It now
runs in a way that survives to completion.
Install image: download the current build — rebuilt nightly, including from this release.
v0.17.0
-
Home folders now follow the system language. If your interface is in
Russian,~/Downloadsbecomes~/Загрузки,~/Pictures→~/Изображения,
and so on for all six standard folders — including~/Screenshots, which
the screenshot tool (Super+Shift+S) now resolves dynamically instead of
hardcoding. The rename happens at the next login after the update and is
one-time: folders you moved are left alone. To opt out:w-conf userdirs LOCALIZE=noIf you run a non-Russian locale this changes nothing for you.
-
OpenRGB devices re-colour after suspend. Keyboards, mice and other
OpenRGB-supported lighting used to go back to their hardware default after
waking the machine and never caught up until the next theme switch. A new
system-sleep hook (w-rgb) re-applies the theme's RGB palette on resume. -
w-fingerprintnow controls the fingerprint scanner on the lock screen.
Two modes:native(the default, unchanged behaviour — fprintd authenticates
through PAM) andwake(the scanner stays armed duringhyprlock, so
touching it unlocks the screen without reaching the keyboard). Switch with:w-fingerprint lock-sensor wake -
Toolchain state hygiene: Go builds no longer litter
~/go.
GOPATH,GOMODCACHE,GOCACHEandGOBINare now routed into
~/.local/and~/.cache/— outside@homesnapshots — at every login,
across TTY, SSH and the graphical session. The subvolume is carved
automatically; a pre-existing~/gois left untouched (safe to delete by
hand). Future tools (cargo, gradle, npm…) will follow the same pattern. -
w-pack deploy_managednow preserves file modes. A managed file with
an executable bit (e.g. the graphics pack'smcpinkscapehook) kept it
in the bundle tree but arrived on the machine as0644. It now keeps the
mode the file has in the pack — matching howapply_rootfsand the
directory branch (rsync -a) have always worked. -
w-syncre-applies packs when the pack tooling itself changes.
Previously only changes underscripts/packs/triggeredw-pack refresh;
a fix tow-packor its deploy SDK now does too. -
Hyprlock: fingerprint-aware auth config shipped. A new
~/.config/hypr/hyprlock-auth.conftemplate enablesw-fingerprint lock-sensor waketo work out of the box on fresh installs. If you use
w-reset hyprlock(e.g. after the v0.16.0 lock-screen rework), the auth
fragment is included automatically.
Install image: download the current build — rebuilt nightly, including from this release.
v0.16.1
- Session restore: tabbed windows and Firefox windows come back correctly.
Two longstanding defects, both present up to and including v0.16.0:- Window groups (tabbed windows) came back scattered over the workspace
instead of as groups. Every member of a group reports the same content
rectangle, so the restore could not read the split tree and fell back to
tiling the windows in arrival order. A group is now one tile of the tree —
its tab bar accounted for — and is reassembled after the tree is in place:
tabs in the saved order, the tab that was on top on top. Dwindle only; a
floating group returns as separate floating windows and a group's lock
state is not restored. - Firefox windows came back as one window of tabs plus one blank (or
swapped). W launchedfirefoxonce per saved window, but a second launch is
a remote command to the instance already running and opens a blank window.
Firefox keeps its own session, so it is now launched once and each window it
brings back is placed where a window with the same title was. At logout W
also finishes Firefox's own "closed in series" memory in its session file —
Firefox's own pass stops at any older closed pop-up and drops the rest,
which on a real profile is why a second window went missing. - Firefox restores the tabs inside a window only if its own
Settings → Home and startup → "Open previous windows and tabs" is on; W
does not switch that on for you. Hub → System → Session now says so when you
turn restore on. - If you keep personal relaunch overrides in
~/.config/w/session-apps.tsv,
the file gains an optional flag column; two-column rows keep working. Flags:
own-session(the Firefox case above) and=in the command column to keep
the recorded command line.
- Window groups (tabbed windows) came back scattered over the workspace
- RGB lighting is more reliable. The theme's colour was sent to the
openrgb
daemon by guessing when it had come up; on a slow login the send happened
before the daemon knew its devices and was lost. W now waits untilopenrgb
reports devices (up to 20 s) before colouring, so RGB matches the theme on the
first try. This affects the RGB feature introduced in v0.16.0. - The desktop guide (
w-guide, Hub → Documentation) and the on-box assistant
explain that window groups come back as groups and where Firefox's tab-restore
setting lives — in English and Russian.
Install image: download the current build — rebuilt nightly, including from this release.