Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
82 commits
Select commit Hold shift + click to select a range
1fdb721
[ryoku] orpheus: choose which coding agents the AI usage module counts
vampireJSV Oct 28, 2026
3d5a0a8
[ryoku] ui: Wm.focusedWindow skips a window on a hidden workspace
vampireJSV Oct 25, 2026
9aa19a5
[ryoku] hub: show and choose a profile picture for the user avatar
vampireJSV Oct 28, 2026
a2d51f1
[ryoku] orpheus: option to drop the spare empty workspace from the strip
vampireJSV Oct 28, 2026
ee79cc5
[ryoku] ryostore: open Apps as a marketplace with a featured shelf
dodo986 Oct 28, 2026
1dd0598
[ryoku] ryostore: share one browse grid between Apps and the catalogue
dodo986 Oct 28, 2026
ebd88b3
[ryoku] ryostore: add category tabs and a market filter
dodo986 Oct 28, 2026
b9e5c5f
Refactor image search handling in shell.qml
Ronin-CK Oct 28, 2026
f491094
[global] ryoshot: clean up searchProc and simplify browser launch
Ronin-CK Oct 28, 2026
206d067
[release] version: continue unstable at 1.6.7 after 1.0.6
neur0map Oct 28, 2026
61f3797
release: bump unstable to 1.6.8
github-actions[bot] Oct 28, 2026
5689604
[release] port imgborders to the Hyprland 0.57 renderer for Fedora
neur0map Oct 28, 2026
5b43291
release: bump unstable to 1.6.9
github-actions[bot] Oct 28, 2026
b201b93
[release] fold main back into unstable-dev after the v1.0.6 tag move
neur0map Oct 28, 2026
f8afb8b
release: bump unstable to 1.7.0
github-actions[bot] Oct 28, 2026
d3e9b50
[release] carry the Hyprland 0.57 port on the imgborders vendored HEAD
neur0map Oct 28, 2026
1d3feb1
release: bump unstable to 1.7.1
github-actions[bot] Oct 28, 2026
8583339
[installation] restore the greeter helper's exec bit on ISO installs
neur0map Oct 29, 2026
f5863ea
release: bump unstable to 1.7.2
github-actions[bot] Oct 29, 2026
486ba89
[release] fold main back into unstable-dev after hotfix #650
neur0map Oct 29, 2026
4042923
release: bump unstable to 1.7.3
github-actions[bot] Oct 29, 2026
3c08c74
[ryoku] lockscreen: probe greeter modes by driver, not /dev/dri path
tattwamashi Oct 29, 2026
108cc80
[system] bluetooth: keep the radio off when login resets bluetoothd
tattwamashi Oct 29, 2026
b0f864c
[ryoku] update: keep CachyOS-replaced packages off converted boxes
tattwamashi Oct 30, 2026
2459c66
[ryoku] hub search: keyboard navigation and Ctrl+F focus
Satirito Oct 30, 2026
495d12e
[global] dock: restore edge hover above maximized apps
AkiVonAkira Oct 31, 2026
86cecb7
fix(hypr): disable hyprland splash rendering
feelyourwarmth Oct 31, 2026
c32481b
release: bump unstable to 1.7.4
github-actions[bot] Oct 31, 2026
efb3305
[ryoku] fastfetch: preserve markers on save
Satirito Oct 31, 2026
94f2be2
[ryoku] dock: merge edge hover above app windows (#676)
neur0map Oct 31, 2026
a22fd55
[ryoku] hyprland: merge splash rendering off by default (#679)
neur0map Oct 31, 2026
1b8fd9f
[ryoku] lockscreen: merge greeter mode probe by driver (#653)
neur0map Oct 31, 2026
06f1c24
[system] bluetooth: merge radio stays off after login reset (#655)
neur0map Oct 31, 2026
f09a63c
[system] bluetooth: require confirmed powered-off state
neur0map Oct 31, 2026
90ab8e5
[ryoku] update: merge CachyOS replaced packages stay off (#666)
neur0map Oct 31, 2026
38d0972
[ryoku] hub: merge search keyboard navigation and Ctrl+F (#674)
neur0map Oct 31, 2026
ce94af1
[ryoku] fastfetch: merge markers preserved on save (#680)
neur0map Oct 31, 2026
72a0251
[ryoku] hub search: fix results list height
neur0map Oct 31, 2026
b2ef491
[ryoku] doctor: ignore shell plumbing in memory check
neur0map Oct 31, 2026
d8e390b
[ryoku] hyprland: handle monitor geometry in fullscreen binds
neur0map Oct 31, 2026
cf95cae
[release] share picker: update for Hyprland 0.57
neur0map Oct 31, 2026
570b622
[ryoku] doctor: report installed Hermes agent version
neur0map Oct 31, 2026
720a64d
[ryoku] hub: show installed Hermes agent version
neur0map Oct 31, 2026
2159841
[ryoku] hyprland: keep automatic HDR opt-in
neur0map Oct 31, 2026
4bfae74
[installation] fedora: resolve package provider conflicts
neur0map Oct 31, 2026
0abb2cb
[ryoku] hyprland: apply plugin settings at startup
neur0map Oct 31, 2026
df47760
[ryoku] orpheus: merge AI usage tool chips (#629)
neur0map Oct 31, 2026
53c7421
[ryoku] orpheus: merge spare workspace switch (#632)
neur0map Oct 31, 2026
e8f523f
[ryoku] dock: allow negative edge spacing
neur0map Oct 31, 2026
4b4ceba
[ryoku] wallpaper: publish preview palette atomically
neur0map Oct 31, 2026
9c5f484
[ryoku] ryogami: show Workshop previews and titles
neur0map Oct 31, 2026
fe0793d
[ryoku] qsbar: retry cold-start catalogue reads
neur0map Oct 31, 2026
5b29121
[ryoku] hub: disable empty update runs
neur0map Oct 31, 2026
4c2ed16
[ryoku] wm: report plugin setup and offline compositor
neur0map Oct 31, 2026
e579419
[global] ryoshot: merge direct Google Lens image search (#636)
neur0map Oct 31, 2026
ac38315
[global] ryoshot: secure direct Lens search
neur0map Oct 31, 2026
759f0e8
[release] desktop: make the radio player removable
neur0map Oct 31, 2026
227f07e
[system] desktop: match headers to installed kernels
neur0map Oct 31, 2026
29750d6
[system] headers: skip unavailable kernel packages
neur0map Oct 31, 2026
93c77f7
[ryoku] shell: keep Bluetooth controls in sync
neur0map Oct 31, 2026
72f73d1
[ryoku] lockscreen: restore password focus after resume
neur0map Oct 31, 2026
d675681
[ryoku] visualizer: keep desktop layer across toggles
neur0map Oct 31, 2026
eff7341
[ryoku] orpheus: order workspace marks by position
alvarossantos Oct 31, 2026
b85624b
[ryoku] orpheus: scroll overflowing tray cards
alvarossantos Oct 31, 2026
1f80a7a
[ryoku] orpheus: keep the bar steady while cards open
neur0map Oct 31, 2026
cd07d3d
[ryoku] ui: merge focused window skips hidden workspaces (#630)
neur0map Oct 31, 2026
b534634
[ryoku] hub: merge profile picture for the user avatar (#631)
neur0map Oct 31, 2026
426107c
[ryoku] wm: refresh niri output workspace on activation
neur0map Oct 31, 2026
4236216
[ryoku] avatars: follow AccountsService picture changes
neur0map Oct 31, 2026
2122c48
[ryoku] ui: share one AvatarImage between Hub and sidebar
neur0map Oct 31, 2026
de74e32
[ryoku] ryostore: merge Apps marketplace design (#635)
neur0map Oct 31, 2026
536f574
[ryoku] ryostore: explain blocked downloads
neur0map Oct 31, 2026
20222bc
[ryoku] ryostore: search category lists
neur0map Oct 31, 2026
d306442
[ryoku] ryostore: settle compact Apps layout
neur0map Oct 31, 2026
cc5259e
[docs] changelog: note the Hyprland splash change
neur0map Oct 31, 2026
eb2ddf7
[test] fixtures: stop renaming sleep for fake processes
neur0map Oct 31, 2026
de3f744
[global] shell: release covers after graphics hangs
neur0map Oct 31, 2026
b91b76a
release: bump unstable to 1.7.5
github-actions[bot] Oct 31, 2026
2d03553
[ryoku] radio: rename the tolerated player map
neur0map Oct 31, 2026
0bbf92d
release: bump unstable to 1.7.6
github-actions[bot] Oct 31, 2026
0b546ea
[installation] zsh: seed the selected login shell
neur0map Oct 31, 2026
c373e1d
[release] version: cut 1.0.7
neur0map Oct 31, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,16 @@ for finer detail.
user is no longer in a mango session.

### Fixed
- Fedora installs keep existing RPM Fusion FFmpeg and Docker CE packages, and
no longer request the nonexistent `util-linux-libs` package.
- RyoStore no longer leaves other products with inert download buttons while an
install is running; their actions are disabled and say that another item is
downloading until the single-flight operation completes.
- RyoStore category pages now list products A to Z and include a search field
that filters only the open category. The Apps marketplace keeps its Flathub
rankings and adds an explicit A-to-Z sort.
- The Apps marketplace gives its sort chips and scoped search separate rows on
narrow windows, so neither overlaps the compact app grid.
- Users on filtered networks can route `ryoku update` and pacman through a
local HTTP proxy without weakening package signature checks.
- Screenshots no longer pick up the animated pointer when a cursor effect has
Expand Down
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.0.6
1.0.7
4 changes: 3 additions & 1 deletion docs/barstyles.md
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,8 @@ Its settings use the `orpheus` namespace in `shell.json`:
| `mirror` | boolean | `true` | Mirror the spectrum around the centre. |
| `feel` | `fluid` or `tight` | `fluid` | Set the wave spring and damping. |
| `workspaceStyle` | `dots`, `numbers`, `kanji`, `greek`, `dashes`, or `icons` | `dots` | Choose the workspace marks. |
| `workspaceShowEmpty` | boolean | `true` | Include empty workspaces. Where workspaces are numbered, gaps fill in and one free slot follows the last used. |
| `workspaceShowEmpty` | boolean | `true` | Include empty workspaces. Where workspaces are numbered, gaps fill in and one free slot follows the last used unless `workspaceSpare` is off. |
| `workspaceSpare` | boolean | `true` | With `workspaceShowEmpty` on, add one free slot after the last used workspace. Off ends the strip at the last workspace that exists. |
| `showDate` | boolean | `true` | Show the date under the idle time. |
| `seconds` | boolean | `false` | Show seconds in the idle time. |
| `voiceWeather` | boolean | `true` | Show the weather beside the idle time. |
Expand All @@ -160,6 +161,7 @@ Its settings use the `orpheus` namespace in `shell.json`:
| `actions` | subset of `launcher`, `ask`, `overview`, `clipboard`, `capture`, `wallpaper`, `hub` | `["launcher","capture","clipboard"]` | Choose shortcut actions. |
| `trayLimit` | `3` to `12` | `6` | Set the visible tray item limit. |
| `statusItems` | subset of `wifi`, `bluetooth`, `volume`, `mic` | all four | Choose the icons in the Controls module. |
| `aiTools` | subset of `claude`, `codex`, `opencode` | all three | Choose which coding agents the AI usage module counts. Modules page, AI usage. An empty list hides the module. |

The name is Orpheus, the musician of Greek myth whose lyre moved rivers and
stones. Made by neur0map.
Expand Down
4 changes: 4 additions & 0 deletions docs/compositors.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,10 @@ A provider is one binary, `ryoku-wm-<name>`, shipped by
|`session`|the `wayland-session` desktop entry|
|`environment <pid>`|export the provider's opaque handle from one verified session process|

Ordinary workspace frames carry a one-based `index` inside their output. The
handle in `id` remains the only action argument; `index` is presentation order,
and consumers preserve frame order when an older provider omits it.

`ryoku wm compat <plugin-dir>` is the neutral plugin gate. It scans QML,
JavaScript, shell, Python and executable files without running them, then
compares any foreign shell interfaces it finds with `caps.foreignApis`. A
Expand Down
52 changes: 42 additions & 10 deletions docs/store.md
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,18 @@ product keeps an artwork stage, while a responsive editorial grid exposes the
rest of the collection. A card may animate its cover only while hovered.
Status and actions always belong to the committed selection.

The Apps catalogue is the marketplace surface. It opens with a featured shelf,
a row of Flathub category plates, a `TRENDING / POPULAR / NEW / UPDATED`
strip, and compact icon and text tiles in a responsive grid. The category
plates come from the main category tags the provider already carries and show
their counts, so a plate exists only when the catalogue has something in it.
The field beside the sort strip narrows the loaded catalogue in place, and the
shelf steps aside while a category or a filter is active. The strip sorts the
union of Flathub's popular, trending, recently added and recently updated
collections by the matching ranking field, so the tabs describe the catalogue
rather than reshuffling one popular page. A header search for Flathub keeps
its relevance order and uses the same compact tiles.

The rail exposes one semantic route order:

```text
Expand Down Expand Up @@ -168,15 +180,21 @@ ryoku/apps/ryostore/
provider_bars.go
provider_shell_qml.go
provider_fastfetch.go
provider_flatpak.go
quickshell/
shell.qml
App.qml
StoreHeader.qml
ShowroomStage.qml
Filmstrip.qml
SearchLayer.qml
AppsHero.qml
AppsTile.qml
AppsSearch.qml
ProductDetail.qml
ProductCover.qml
ProductMedia.qml
ProductGrid.qml
ProductCard.qml
ProviderTabs.qml
StatusReadout.qml
lib/
store.js
Expand Down Expand Up @@ -262,6 +280,16 @@ lives under `modules/bar/barstyles/<id>/`, a qylock theme under the qylock theme
and a plugin in the plugin data directory. Ryostore owns their catalogue adapter
and installation, not a second runtime copy.

Install, update, removal, and enablement are single-flight so receipts and package
manager state cannot race. While one product is active, every other product keeps
its action visible but disabled and names the operation that is already running;
the active product continues to show the backend's real byte or step progress.
Within a category, products are ordered by display name and a local search field
filters only that category. Marketplace categories with explicit ranking controls
keep those controls; Apps also offers **A to Z** alongside Flathub's Trending,
Popular, New, and Updated rankings.


## Provider behavior

- **Lockscreens:** fetch the qylock catalogue, preview cache, and install-only
Expand All @@ -288,14 +316,18 @@ and installation, not a second runtime copy.
the category offers Popular, New, and Verified orderings and global search.
Its thousands of preview and gallery URLs deliberately bypass eager asset
warming; only visible delegates request their remote media.
- **Apps (Flatpak):** list up to 300 of the most popular desktop applications
from the Flathub collection API, joined with `flatpak list`, so an installed
Flathub application outside that ranking is still listed and removable.
Flathub is a third-party source: it does not pass through the `ryostore`
registry or its screening. The detail labels Flathub's verified or
unverified state when known (or unknown for installed-only items) and warns
before installation; verification is not a Ryostore safety review. New apps
use the system Flatpak installation and its shared runtimes when its
- **Apps (Flatpak):** list the union of Flathub's popular, trending, recently
added and recently updated collections (up to 300 each), joined with
`flatpak list`, so an installed Flathub application outside those rankings is
still listed and removable. Each hit carries its trending score, monthly
installs, listing date and update date for the marketplace strip. The union is
cached as one snapshot and served flagged offline when Flathub is
unreachable; a partial fetch keeps the collections that answered and leaves
the complete cache in place. Flathub is a third-party source: it does not pass
through the `ryostore` registry or its screening. The detail labels Flathub's
verified or unverified state when known (or unknown for installed-only items)
and warns before installation; verification is not a Ryostore safety review.
New apps use the system Flatpak installation and its shared runtimes when its
`flathub` remote is valid; if only the user installation has a valid remote,
they install there instead. System installs may ask for authorization.
The store never adds a remote. When neither installation has a valid remote,
Expand Down
6 changes: 5 additions & 1 deletion docs/updates.md
Original file line number Diff line number Diff line change
Expand Up @@ -428,7 +428,11 @@ package provides (rustup for rust, tuned-ppd for power-profiles-daemon) counts
as present, so the box's own choice is never overwritten, and the opt-in names
(`ryokumanifest.OptIn`: hardware packages, the Limine hook and snapshot sync,
and prowl, which only ever arrives as ryoku-rashin's dependency)
belong to their gated reconcilers and are never converged. The deliver-once
belong to their gated reconcilers and are never converged. On a CachyOS box
(os-release `ID=cachyos`) the manifest is read without the names its layer
replaces (`cachyosReplaces`, from `system/packages/cachyos.replaces`: the stock
`linux` kernel and `yay-bin`), so a box converted in place, which has no ledger
entries for them, is never offered them either. The deliver-once
apps stay `reconcileShippedApps'` lane, so one update never runs two
transactions over the same names. Best-effort: a box with no mirror or no
network reports what did not land and the update moves on. `ryoku verify`
Expand Down
2 changes: 1 addition & 1 deletion fedora/packages/rpm/fetch/hyprland-preview-share-picker.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ set -euo pipefail

: "${RYOKU_FETCH_TREE:?}"
package=hyprland-preview-share-picker
commit=e2f30ff85486e557018523da45ccbc846e3a499c
commit=7e11349d3f6ecae75b42be73d6a258503656cc8f
root="$RYOKU_FETCH_TREE/.rpm-$package"
dest="$root/$package"
rm -rf "$root"
Expand Down
1 change: 0 additions & 1 deletion fedora/packages/rpm/gpu-screen-recorder.spec
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@ BuildRequires: pulseaudio-libs-devel
BuildRequires: vulkan-headers
BuildRequires: wayland-devel
Requires: bash
Requires: ffmpeg-free
Requires: libcap
Requires: libjpeg-turbo
Requires: mesa-dri-drivers
Expand Down
2 changes: 1 addition & 1 deletion fedora/packages/rpm/hyprland-preview-share-picker.spec
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
%global ryoku_vendor cargo
%global ryoku_vendor_dir .rpm-hyprland-preview-share-picker/hyprland-preview-share-picker
Name: hyprland-preview-share-picker
Version: 0.1
Version: 0.3.0
Release: 1%{?dist}
Summary: Preview screen share picker for Hyprland
License: MIT
Expand Down
4 changes: 2 additions & 2 deletions fedora/packages/rpm/ryogami.spec
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@ BuildRequires: wayland-devel
BuildRequires: wayland-protocols-devel
BuildRequires: ffmpeg-free-devel
Requires: quickshell >= 0.3.0
Requires: ffmpeg-free
# ffmpeg-free can otherwise resolve libopenh264 to Fedora's no-codec stub.
Requires: /usr/bin/ffmpeg
# Fedora's ffmpeg-free can otherwise resolve libopenh264 to its no-codec stub.
Requires: openh264
Requires: ImageMagick
Requires: qt6-qtmultimedia
Expand Down
6 changes: 3 additions & 3 deletions fedora/packages/rpm/ryoku-desktop.spec
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,6 @@ Requires: papirus-icon-theme
Requires: kf6-syntax-highlighting
Requires: brightnessctl
Requires: playerctl
Requires: mpv
Requires: mpv-mpris
Requires: yt-dlp
Requires: wl-clipboard
Requires: grim
Expand All @@ -65,7 +63,7 @@ Requires: pulseaudio-utils
Requires: jq
Requires: dbus-tools
Requires: ImageMagick
Requires: ffmpeg-free
Requires: /usr/bin/ffmpeg
Requires: curl
Requires: zenity
Requires: iw
Expand Down Expand Up @@ -105,6 +103,8 @@ Requires: kernel-headers
Requires: dkms

Recommends: power-profiles-daemon
Suggests: mpv
Suggests: mpv-mpris
Suggests: kitty
Suggests: fish
Suggests: blesh
Expand Down
2 changes: 1 addition & 1 deletion fedora/packages/rpm/ryoku-keysounds-profiles.spec
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ BuildRequires: coreutils
BuildRequires: ffmpeg-free
BuildRequires: findutils
BuildRequires: python3
Requires: ffmpeg-free
Requires: /usr/bin/ffmpeg

%description
The real switch recordings both key-sound engines use, cut from the MIT-licensed
Expand Down
2 changes: 1 addition & 1 deletion fedora/packages/rpm/ryoku-shell.spec
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ BuildRequires: wayland-devel
BuildRequires: wayland-protocols-devel
BuildRequires: ffmpeg-free-devel
Requires: quickshell >= 0.3.0
Requires: ffmpeg-free
Requires: /usr/bin/ffmpeg
Requires: libwayland-client
Requires: libwayland-cursor
Requires: libwayland-egl
Expand Down
2 changes: 1 addition & 1 deletion fedora/packages/rpm/ryotunes.spec
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ Requires: webkit2gtk4.1
Requires: libappindicator-gtk3
Requires: mpv-libs
Requires: yt-dlp
Requires: ffmpeg-free
Requires: /usr/bin/ffmpeg
Requires: openssl-libs
Requires: librsvg2
Requires: desktop-file-utils
Expand Down
6 changes: 3 additions & 3 deletions fedora/packages/translations.tsv
Original file line number Diff line number Diff line change
Expand Up @@ -139,8 +139,8 @@ matugen ryoku-extras desktop Bundled by the Ryoku extras RPM.
mesa mesa-dri-drivers mesa-libGL desktop
mise mise dev Ryoku-owned RPM.
mkinitcpio dracut system
mpv mpv desktop
mpv-mpris mpv-mpris desktop
mpv mpv optional
mpv-mpris mpv-mpris optional
nautilus nautilus desktop
nautilus-python nautilus-python desktop
neovim neovim desktop
Expand Down Expand Up @@ -254,7 +254,7 @@ ttf-readex-pro ttf-readex-pro desktop Ryoku-owned RPM.
ttf-rubik-vf google-rubik-fonts desktop
udev systemd-udev desktop
upower upower desktop
util-linux-libs util-linux-libs hyprland
util-linux-libs - hyprland Fedora splits these libraries; RPM soname dependencies install the required providers.
uv uv desktop
v4l2loopback-dkms v4l2loopback v4l2loopback-dkms optional Provided by a restricted COPR.
vdirsyncer vdirsyncer desktop
Expand Down
12 changes: 12 additions & 0 deletions installation/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,18 @@
# Changelog: installation/

## Unreleased
- **Zsh installs open with Ryoku's configured prompt on the first boot.** The
Arch, CachyOS and Void installers copy the packaged startup template after
selecting Zsh, while leaving an existing `.zshrc` untouched.
- **Fresh installs keep the launcher radio while leaving its player removable.**
The default-on Apps list owns `mpv` and `mpv-mpris` on Fedora and Void;
Arch and CachyOS continue to install both from their base set
(`installerplan/components.tsv`, `../ryoku-shell-installer/engine.go`).
- **Shell conversions install headers for their existing kernels.** The
installer skips stock `linux-headers` with the rest of the replacement boot
chain, reads each installed kernel's `pkgbase`, and adds its matching header
package only when pacman's enabled repositories provide it
(`../ryoku-shell-installer/engine.go`).

### Added
- **The Arch, CachyOS and Void ISOs have one edition-appropriate Gaming
Expand Down
28 changes: 28 additions & 0 deletions installation/backend/lib/deploy.sh
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ ryoku_deploy() {

ryoku_deploy_repo # [ryoku] stanza + mirrorlist + keyring trust (local)
ryoku_deploy_packages # pacman -S the desktop set (needs net)
ryoku_seed_login_shell_config
ryoku_seed_initcpio_hook # the HOOKS-named trim hook, if that set never came
ryoku_seed_keymap # chosen kb_layout into the neutral store
ryoku_deploy_chown "$u" # the store seed creates ~/.config as root; hand
Expand All @@ -35,6 +36,33 @@ ryoku_deploy() {
ryoku_deploy_qylock # qylock writes user files as the now-owning user
}

ryoku_seed_login_shell_config() {
local root=${RYOKU_TARGET_ROOT:-/mnt} template user target
[[ ${RYOKU_LOGIN_SHELL:-fish} == zsh ]] || return 0
template="$root/usr/share/ryoku/zsh/zshrc"

if [[ -n ${RYOKU_DRYRUN:-} ]]; then
for user in "${RYOKU_ACCOUNT_NAMES[@]}"; do
log 'DRYRUN: seed %s from %s when missing' "$root/home/$user/.zshrc" "$template"
done
return 0
fi
if [[ ! -f $template ]]; then
log 'WARNING: zsh is the login shell but its Ryoku startup template is missing at %s' "$template"
return 0
fi

for user in "${RYOKU_ACCOUNT_NAMES[@]}"; do
target="$root/home/$user/.zshrc"
[[ ! -e $target && ! -L $target ]] || continue
install -Dm644 "$template" "$target"
if [[ $root == /mnt ]]; then
run "$RYOKU_TARGET_CHROOT" /mnt chown "$user:$user" "/home/$user/.zshrc"
fi
log 'seeded the zsh login config for %s' "$user"
done
}

# deploy_file: one config file, mode 644, parents made.
deploy_file() {
local src=$1 dst=$2
Expand Down
1 change: 1 addition & 0 deletions installation/installerplan/components.tsv
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ yazi Yazi terminal Terminal yazi - on apps false * - - terminal file manager
cli-tools Modern CLI tools terminal Terminal eza,bat,fzf,zoxide - on apps false * - - ls and cat replacements; fuzzy history and directory search
git-tools Git tools terminal Terminal github-cli,lazygit - on apps false * - - the gh CLI and lazygit terminal UI
pavucontrol PulseAudio GUI media Media & tools pavucontrol - on apps false * - - the mixer the bar's audio button opens
radio Launcher radio media Media & tools mpv,mpv-mpris - on apps false * - - live radio in the launcher
songrec Songrec media Media & tools songrec - on apps false * - - Recognize Music in the launcher
openrgb OpenRGB media Media & tools openrgb - on apps false * - - keyboard and mouse lighting follows the wallpaper palette
upscale AI upscale media Media & tools waifu2x-ncnn-vulkan - on apps false * - - ryoshot Beautify HD and ryowalls Enhance
Expand Down
15 changes: 15 additions & 0 deletions release/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,17 @@
# Release / Packaging Changelog

## Unreleased
- **The desktop package carries the Zsh startup template.** Fresh installers and
Doctor can seed it without relying on CachyOS skeleton files or replacing a
user's `.zshrc`.
- **The launcher radio's player can be removed.** `mpv` and `mpv-mpris` are
optional desktop packages delivered once on a fresh Ryoku box. Removing them
now sticks across upgrades, and the radio offers an install hint instead of
failing silently.
- **Desktop packages no longer force stock Arch kernel headers.**
`ryoku-desktop` keeps DKMS but leaves headers to the installed kernels. The
CachyOS installer replaces both stock kernel packages, and doctor installs
each installed Arch or CachyOS kernel's matching header package.

### Added
- **The shell installs its equalizer backend automatically.** `ryoku-shell`
Expand Down Expand Up @@ -152,6 +163,10 @@
the other plugin packages.

### Fixed
- **The Hyprland share picker works with Hyprland 0.57 again.** The Arch and
Fedora packages now ship upstream 0.3.0, which no longer parses Hyprland's
workspace data through `hyprland-rs`. Outputs and Windows load again instead
of leaving Discord monitor shares black or forcing Region selection.
- **Fedora and Arch build the image-border plugin against Hyprland 0.57.**
Fedora moved `hyprland-devel` and Arch moved `hyprland` to 0.57, whose
renderer passes an explicit `CRenderContext` and dropped the `m_renderData`
Expand Down
7 changes: 4 additions & 3 deletions release/packages/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,9 +54,10 @@ full checkout. The Go binaries and QML plugins are built into `$srcdir`, so the
source tree is never modified, and `makepkg --clean` removes `$srcdir` and
`$pkgdir` afterward.

The `gpk`, `skwd-paper-bin`, and `ryoku-keyring` PKGBUILDs fetch pinned
upstream artifacts instead of building from the checkout. `prowl` is also
pinned upstream, but builds its selected commit from source.
The `gpk`, `skwd-paper-bin`, `hyprland-preview-share-picker`, and
`ryoku-keyring` PKGBUILDs fetch pinned upstream artifacts or source instead of
building from the checkout. `prowl` is also pinned upstream, but builds its
selected commit from source.

## Shared package payloads

Expand Down
4 changes: 2 additions & 2 deletions release/packages/hyprland-preview-share-picker/PKGBUILD
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# Maintainer: Ryoku <releases@ryoku.dev>
pkgname=hyprland-preview-share-picker
pkgver=0.2.1.r9.ge2f30ff
pkgver=0.3.0
pkgrel=1
_commit=e2f30ff85486e557018523da45ccbc846e3a499c
_commit=7e11349d3f6ecae75b42be73d6a258503656cc8f
pkgdesc="Preview-based screen-share source picker for Hyprland"
arch=('x86_64')
url="https://github.com/WhySoBad/hyprland-preview-share-picker"
Expand Down
Loading
Loading