5 Commits

Author SHA1 Message Date
Sebastian
a45d6abb6e Merge pull request #1 from shocklateboy92/fix/chromium-icon-tempdir-drop
Fix chromium backend icon write failing with ENOENT
2026-05-25 14:05:50 +02:00
Lasath Fernando
7fc81ececa Fix chromium backend icon write failing with ENOENT
The chromium build path created a TempDir via `tempdir()?.path().join(...)`,
which dropped the TempDir at the end of the statement and deleted the
directory before fetch_or_create_icon could write into it. Every
`deskify build --backend chromium` failed with:

    Error: Failed to write RGBA PNG icon to /tmp/.tmpXXXXXX/icon.png
    Caused by: No such file or directory (os error 2)

Bind the TempDir to a local like the tauri branch already does so it
lives until the icon has been written and copied to its final location.
2026-05-18 20:44:16 -05:00
Sebastian Palencsar
557cd4dc2d Update PKGBUILD for v0.1.1-alpha.1 2026-05-09 07:12:04 +02:00
Sebastian Palencsar
cc09b629a3 Update GitHub Actions to use actions/checkout@v5 (Node.js 24 compatible) 2026-05-04 19:06:55 +02:00
Sebastian Palencsar
dec6c8f503 Update README.md with test coverage badge 2026-05-04 18:28:30 +02:00
7 changed files with 27 additions and 8 deletions

View File

@@ -28,7 +28,7 @@ jobs:
useradd -m -u 1000 builder || true useradd -m -u 1000 builder || true
- name: Checkout - name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v5
with: with:
ref: ${{ inputs.tag || github.ref_name }} ref: ${{ inputs.tag || github.ref_name }}

View File

@@ -11,7 +11,7 @@ jobs:
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v5
- name: Install Rust toolchain - name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable uses: dtolnay/rust-toolchain@stable

View File

@@ -16,7 +16,7 @@ jobs:
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v5
- name: Install Rust toolchain - name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable uses: dtolnay/rust-toolchain@stable

View File

@@ -10,6 +10,7 @@
<img src="https://img.shields.io/badge/Language-Rust-orange?style=flat-square" alt="Written in Rust" /> <img src="https://img.shields.io/badge/Language-Rust-orange?style=flat-square" alt="Written in Rust" />
<img src="https://img.shields.io/badge/Powered_by-Tauri_v2-grey?style=flat-square" alt="Tauri v2" /> <img src="https://img.shields.io/badge/Powered_by-Tauri_v2-grey?style=flat-square" alt="Tauri v2" />
<img src="https://img.shields.io/badge/Status-Alpha-yellow?style=flat-square" alt="Alpha status" /> <img src="https://img.shields.io/badge/Status-Alpha-yellow?style=flat-square" alt="Alpha status" />
<img src="https://img.shields.io/badge/Tests-37-green?style=flat-square" alt="37 unit tests" />
<img src="https://img.shields.io/github/v/release/spalencsar/deskify?label=Latest%20Release&style=flat-square" alt="Latest release" /> <img src="https://img.shields.io/github/v/release/spalencsar/deskify?label=Latest%20Release&style=flat-square" alt="Latest release" />
<img src="https://img.shields.io/badge/License-MIT-green?style=flat-square" alt="MIT license" /> <img src="https://img.shields.io/badge/License-MIT-green?style=flat-square" alt="MIT license" />
</p> </p>
@@ -102,7 +103,7 @@ Deskify intentionally does not aim to:
- **Build model:** `deskify` compiles the wrapper locally on your machine - **Build model:** `deskify` compiles the wrapper locally on your machine
- **Why this MVP design:** simpler debugging, isolated failures, low contributor complexity - **Why this MVP design:** simpler debugging, isolated failures, low contributor complexity
- **Tradeoff:** build time and distro-specific setup issues become user-facing - **Tradeoff:** build time and distro-specific setup issues become user-facing
- **Test coverage:** currently limited (core behavior is implemented, automated coverage is growing) - **Test coverage:** 37 unit tests covering desktop entry escaping, Tauri config generation, validation, Chromium backend, and app config serialization
### MVP Architecture (Today) ### MVP Architecture (Today)

17
packaging/.SRCINFO Normal file
View File

@@ -0,0 +1,17 @@
pkgbase = deskify-bin
pkgdesc = Turn websites into Linux desktop apps (prebuilt binary package)
pkgver = 0.1.1.alpha.1
pkgrel = 1
url = https://github.com/spalencsar/deskify
arch = x86_64
license = MIT
depends = glibc
optdepends = chromium: for --backend chromium
provides = deskify
conflicts = deskify
source = deskify::https://github.com/spalencsar/deskify/releases/download/v0.1.1-alpha.1/deskify-linux-x86_64
source = LICENSE::https://raw.githubusercontent.com/spalencsar/deskify/v0.1.1-alpha.1/LICENSE
sha256sums = c4e938b7b130529eb50d85ab8797ef5d4c04262c9fcb40519f2e8d87443dc2ab
sha256sums = d4e53458cd2dd461f234186497b6d9b21566c477737a4d31fa6f018ef610486f
pkgname = deskify-bin

6
packaging/PKGBUILD Normal file → Executable file
View File

@@ -1,5 +1,5 @@
pkgname=deskify-bin pkgname=deskify-bin
pkgver=0.1.0.alpha.8 pkgver=0.1.1.alpha.1
pkgrel=1 pkgrel=1
pkgdesc="Turn websites into Linux desktop apps (prebuilt binary package)" pkgdesc="Turn websites into Linux desktop apps (prebuilt binary package)"
arch=('x86_64') arch=('x86_64')
@@ -10,11 +10,11 @@ optdepends=('chromium: for --backend chromium')
provides=('deskify') provides=('deskify')
conflicts=('deskify') conflicts=('deskify')
_tag="v0.1.0-alpha.8" _tag="v0.1.1-alpha.1"
source=("deskify::https://github.com/spalencsar/deskify/releases/download/${_tag}/deskify-linux-x86_64" source=("deskify::https://github.com/spalencsar/deskify/releases/download/${_tag}/deskify-linux-x86_64"
"LICENSE::https://raw.githubusercontent.com/spalencsar/deskify/${_tag}/LICENSE") "LICENSE::https://raw.githubusercontent.com/spalencsar/deskify/${_tag}/LICENSE")
sha256sums=('7ab62ff193c2666983c72844c13f368a0ecc1fcd6da40fe95f544c9999e05f30' sha256sums=('c4e938b7b130529eb50d85ab8797ef5d4c04262c9fcb40519f2e8d87443dc2ab'
'd4e53458cd2dd461f234186497b6d9b21566c477737a4d31fa6f018ef610486f') 'd4e53458cd2dd461f234186497b6d9b21566c477737a4d31fa6f018ef610486f')
package() { package() {

View File

@@ -56,7 +56,8 @@ fn execute_build(args: &BuildArgs, dry_run: bool, print_config: bool) -> Result<
"Installing Chromium app '{}' for URL: {}", "Installing Chromium app '{}' for URL: {}",
args.name, args.url args.name, args.url
); );
let temp_icon = tempdir()?.path().join("icon.png"); let dir = tempdir().context("Failed to create temporary directory for building")?;
let temp_icon = dir.path().join("icon.png");
icon::fetch_or_create_icon(&args.url, args.icon.as_ref(), &temp_icon)?; icon::fetch_or_create_icon(&args.url, args.icon.as_ref(), &temp_icon)?;
install::install_chromium_app(args, &temp_icon)?; install::install_chromium_app(args, &temp_icon)?;
app::write_app_config_from_args(args)?; app::write_app_config_from_args(args)?;