From cb558efdccd6d3b5f16f460814774ef87b3daf30 Mon Sep 17 00:00:00 2001 From: Breadway Date: Wed, 17 Jun 2026 19:09:15 +0800 Subject: [PATCH 1/2] fix(ci): clone to /tmp to avoid stale work-dir permissions, use hestia label Co-Authored-By: Claude Sonnet 4.6 --- .forgejo/workflows/release.yml | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/.forgejo/workflows/release.yml b/.forgejo/workflows/release.yml index 384b829..cd57261 100644 --- a/.forgejo/workflows/release.yml +++ b/.forgejo/workflows/release.yml @@ -11,18 +11,24 @@ env: jobs: build: - runs-on: hestia-host + runs-on: hestia + defaults: + run: + working-directory: /tmp/breadpaper-build + steps: - name: checkout + working-directory: /tmp run: | + rm -rf /tmp/breadpaper-build git clone --branch "${GITHUB_REF_NAME}" --depth 1 \ - "https://git.breadway.dev/${GITHUB_REPOSITORY}.git" . + "https://git.breadway.dev/${GITHUB_REPOSITORY}.git" /tmp/breadpaper-build - name: build - run: cargo build --release --locked + run: /home/breadway/.cargo/bin/cargo build --release --locked - name: test - run: cargo test --release --locked + run: /home/breadway/.cargo/bin/cargo test --release --locked - name: prepare artifacts run: | @@ -37,6 +43,7 @@ jobs: ln -sfn "${VERSION}" "${DL_DIR}/breadpaper/latest" - name: ensure bread-ecosystem + working-directory: /tmp run: | if [[ -d "${ECOSYSTEM_DIR}/.git" ]]; then git -C "${ECOSYSTEM_DIR}" pull --ff-only @@ -46,4 +53,5 @@ jobs: fi - name: regenerate index.json + working-directory: /tmp run: bash "${ECOSYSTEM_DIR}/scripts/gen-index.sh" From 1b8830eab335623ba9cbfe34f1038cb41638c791 Mon Sep 17 00:00:00 2001 From: Breadway Date: Wed, 17 Jun 2026 22:44:48 +0800 Subject: [PATCH 2/2] fix: correct awww subcommand to img, support bare path arg, add --version Co-Authored-By: Claude Sonnet 4.6 --- src/main.rs | 16 ++++++++++------ src/wallpaper.rs | 4 ++-- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/main.rs b/src/main.rs index 38d3fc6..d108e3d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -4,17 +4,19 @@ use std::process; use clap::{Parser, Subcommand}; #[derive(Parser)] -#[command(name = "breadpaper", about = "Wallpaper manager for the bread desktop")] +#[command(name = "breadpaper", version, about = "Wallpaper manager for the bread desktop")] struct Cli { + /// Image file to set as wallpaper (shorthand for `set`) + path: Option, + #[command(subcommand)] - command: Command, + command: Option, } #[derive(Subcommand)] enum Command { /// Set wallpaper, generate pywal palette, and reload bread themes Set { - /// Path to the image file path: PathBuf, }, /// Print the current wallpaper path @@ -24,9 +26,11 @@ enum Command { fn main() { let cli = Cli::parse(); - let result = match cli.command { - Command::Set { path } => breadpaper::set(&path), - Command::Get => breadpaper::get().map(|p| println!("{}", p.display())), + let result = match (cli.command, cli.path) { + (Some(Command::Set { path }), _) | (None, Some(path)) => breadpaper::set(&path), + (Some(Command::Get), _) | (None, None) => { + breadpaper::get().map(|p| println!("{}", p.display())) + } }; if let Err(e) = result { diff --git a/src/wallpaper.rs b/src/wallpaper.rs index 4655308..f59fae1 100644 --- a/src/wallpaper.rs +++ b/src/wallpaper.rs @@ -5,13 +5,13 @@ use anyhow::{Context, Result, bail}; pub fn apply(path: &Path) -> Result<()> { let status = Command::new("awww") - .arg("set") + .arg("img") .arg(path) .status() .context("failed to run awww — is awww-daemon running?")?; if !status.success() { - bail!("awww set exited with {}", status); + bail!("awww img exited with {}", status); } Ok(()) }