From 73e4b78595ea48d6d3e6af5d9f6454cbcb5c1c4c Mon Sep 17 00:00:00 2001 From: kylethedeveloper <8023096+kylethedeveloper@users.noreply.github.com> Date: Sun, 29 Mar 2026 19:38:12 -0400 Subject: [PATCH 1/3] fix: disable debug mode in Windows to not open cmd --- src-tauri/src/main.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs index 213205d..4c6d6fe 100644 --- a/src-tauri/src/main.rs +++ b/src-tauri/src/main.rs @@ -1,3 +1,5 @@ +#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] + fn main() { oratiotext_lib::run() } From fa619fe7849337ce186fb1d83a5f2dd824b26549 Mon Sep 17 00:00:00 2001 From: kylethedeveloper <8023096+kylethedeveloper@users.noreply.github.com> Date: Sun, 29 Mar 2026 19:38:20 -0400 Subject: [PATCH 2/3] feat: add Linux build & release flows --- .github/workflows/build.yml | 46 +++++++++++++++++++++++++++++- .github/workflows/release.yml | 53 +++++++++++++++++++++++++++++++++++ BUILD.md | 14 +++++---- README.md | 28 ++++++++++++++++-- src-tauri/Cargo.toml | 2 +- src-tauri/tauri.conf.json | 2 +- 6 files changed, 135 insertions(+), 10 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 7a68839..ea4de73 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -105,4 +105,48 @@ jobs: name: OratioText-windows-x86_64 path: | src-tauri/target/x86_64-pc-windows-msvc/release/bundle/**/*.msi - src-tauri/target/x86_64-pc-windows-msvc/release/bundle/**/*.exe \ No newline at end of file + src-tauri/target/x86_64-pc-windows-msvc/release/bundle/**/*.exe + + build-linux-x86_64: + runs-on: ubuntu-22.04 + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Install Rust stable + uses: dtolnay/rust-toolchain@stable + with: + targets: x86_64-unknown-linux-gnu + + - name: Install system dependencies (Linux) + run: | + sudo apt-get update + sudo apt-get install -y \ + libwebkit2gtk-4.1-dev \ + libappindicator3-dev \ + librsvg2-dev \ + patchelf \ + libssl-dev \ + libgtk-3-dev \ + libayatana-appindicator3-dev \ + ffmpeg + + - name: Rust cache + uses: swatinem/rust-cache@v2 + with: + workspaces: src-tauri + + - name: Build Tauri app + uses: tauri-apps/tauri-action@v0 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + args: "--target x86_64-unknown-linux-gnu --bundles deb,appimage" + + - name: Upload build artifacts + uses: actions/upload-artifact@v4 + with: + name: OratioText-linux-x86_64 + path: | + src-tauri/target/x86_64-unknown-linux-gnu/release/bundle/**/*.deb + src-tauri/target/x86_64-unknown-linux-gnu/release/bundle/**/*.AppImage \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 4607700..0515dec 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -136,3 +136,56 @@ jobs: releaseBody: "Download the attached assets to install OratioText." releaseDraft: false prerelease: ${{ steps.prerelease.outputs.is_prerelease == 'true' }} + + release-linux-x86_64: + runs-on: ubuntu-22.04 + permissions: + contents: write + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Install Rust stable + uses: dtolnay/rust-toolchain@stable + with: + targets: x86_64-unknown-linux-gnu + + - name: Install system dependencies (Linux) + run: | + sudo apt-get update + sudo apt-get install -y \ + libwebkit2gtk-4.1-dev \ + libappindicator3-dev \ + librsvg2-dev \ + patchelf \ + libssl-dev \ + libgtk-3-dev \ + libayatana-appindicator3-dev \ + ffmpeg + + - name: Rust cache + uses: swatinem/rust-cache@v2 + with: + workspaces: src-tauri + + - name: Evaluate pre-release status + id: prerelease + run: | + if [[ "${{ github.ref_name }}" == *"-rc"* || "${{ github.ref_name }}" == *"-beta"* || "${{ github.ref_name }}" == *"-alpha"* ]]; then + echo "is_prerelease=true" >> "$GITHUB_OUTPUT" + else + echo "is_prerelease=false" >> "$GITHUB_OUTPUT" + fi + shell: bash + + - name: Build and Publish Tauri app + uses: tauri-apps/tauri-action@v0 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + args: "--target x86_64-unknown-linux-gnu --bundles deb,appimage" + tagName: ${{ github.ref_name }} + releaseName: "OratioText ${{ github.ref_name }}" + releaseBody: "Download the attached assets to install OratioText." + releaseDraft: false + prerelease: ${{ steps.prerelease.outputs.is_prerelease == 'true' }} diff --git a/BUILD.md b/BUILD.md index 9033d70..b8535a5 100644 --- a/BUILD.md +++ b/BUILD.md @@ -2,11 +2,12 @@ ## Prerequisites -| Requirement | macOS | Windows | -|---|---|---| -| Rust | [rustup.rs](https://rustup.rs/) | [rustup.rs](https://rustup.rs/) | -| Node.js | `brew install node` | [nodejs.org](https://nodejs.org/) | -| FFmpeg | `brew install ffmpeg` | `choco install ffmpeg` | +| Requirement | macOS | Windows | Linux (Debian/Ubuntu) | +|---|---|---|---| +| Rust | [rustup.rs](https://rustup.rs/) | [rustup.rs](https://rustup.rs/) | [rustup.rs](https://rustup.rs/) | +| Node.js | `brew install node` | [nodejs.org](https://nodejs.org/) | `sudo apt install nodejs npm` | +| FFmpeg | `brew install ffmpeg` | `choco install ffmpeg` | `sudo apt install ffmpeg` | +| System libs | — | — | `sudo apt install libwebkit2gtk-4.1-dev libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev patchelf` | ## Local Build @@ -27,6 +28,7 @@ cargo tauri build Output: - **macOS**: `src-tauri/target/release/bundle/dmg/OratioText_*.dmg` - **Windows**: `src-tauri/target/release/bundle/msi/OratioText_*.msi` +- **Linux**: `src-tauri/target/release/bundle/deb/OratioText_*.deb` and `src-tauri/target/release/bundle/appimage/OratioText_*.AppImage` ## GitHub Actions CI @@ -45,6 +47,7 @@ The workflow (`.github/workflows/build.yml`) uses the official [Tauri Action](ht | macOS Apple Silicon | `aarch64-apple-darwin` | `.dmg` | | macOS Intel | `x86_64-apple-darwin` | `.dmg` | | Windows | `x86_64-pc-windows-msvc` | `.msi` / `.exe` | +| Linux | `x86_64-unknown-linux-gnu` | `.deb` / `.AppImage` | ### Accessing Build Artifacts @@ -75,6 +78,7 @@ src/ # Frontend (HTML/CSS/JS) Models are **not bundled** with the app. They are downloaded from [Hugging Face](https://huggingface.co/ggerganov/whisper.cpp) on first use and cached in: - **macOS**: `~/Library/Application Support/OratioText/models/` - **Windows**: `%APPDATA%/OratioText/models/` +- **Linux**: `~/.local/share/OratioText/models/` | Model | Size | Quality | |---|---|---| diff --git a/README.md b/README.md index 49d07dd..84b0322 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,10 @@ Built with [Tauri v2](https://tauri.app/) and [whisper.cpp](https://github.com/g You can download the latest installers and packages for your operating system from the [GitHub Releases](https://github.com/kylethedeveloper/OratioText/releases) page. -Choose the appropriate `.dmg` or `.msi` file to install OratioText easily! +Choose the appropriate file for your platform: +- **macOS**: `.dmg` +- **Windows**: `.msi` or `.exe` +- **Linux**: `.deb` or `.AppImage` ## Basic Usage @@ -37,7 +40,7 @@ Choose the appropriate `.dmg` or `.msi` file to install OratioText easily! ## System Requirements -- macOS 10.15+ or Windows 10+ +- macOS 10.15+, Windows 10+, or Linux (Ubuntu 22.04+ / equivalent) - FFmpeg installed and in PATH - Internet connection for initial model download @@ -53,6 +56,27 @@ xattr -cr /Applications/OratioText.app Then open the app normally. +### Linux Installation Note + +If you downloaded the `.AppImage`, you need to make it executable before running: + +```bash +chmod +x OratioText_*.AppImage +./OratioText_*.AppImage +``` + +For the `.deb` package, install it with: + +```bash +sudo dpkg -i OratioText_*.deb +``` + +Make sure you have FFmpeg and the required WebKit2GTK runtime libraries installed: + +```bash +sudo apt install ffmpeg libwebkit2gtk-4.1-0 +``` + ## Development ### Prerequisites diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index fac14cd..6978dbf 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "oratiotext" -version = "1.0.3" +version = "1.0.4" description = "A cross-platform desktop application for converting speech to text using Whisper" authors = ["kylethedeveloper"] edition = "2021" diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index 585dc34..d5369b2 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -1,7 +1,7 @@ { "$schema": "https://raw.githubusercontent.com/tauri-apps/tauri/dev/crates/tauri-config-schema/schema.json", "productName": "OratioText", - "version": "1.0.3", + "version": "1.0.4", "identifier": "com.oratiotext.app", "build": { "frontendDist": "../src" From d76b4509c6ec454302a9105e8674b4b7397888c1 Mon Sep 17 00:00:00 2001 From: kylethedeveloper <8023096+kylethedeveloper@users.noreply.github.com> Date: Sun, 29 Mar 2026 19:40:54 -0400 Subject: [PATCH 3/3] fix: Linux package dependencies --- .github/workflows/build.yml | 1 - .github/workflows/release.yml | 1 - 2 files changed, 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ea4de73..0957360 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -123,7 +123,6 @@ jobs: sudo apt-get update sudo apt-get install -y \ libwebkit2gtk-4.1-dev \ - libappindicator3-dev \ librsvg2-dev \ patchelf \ libssl-dev \ diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 0515dec..ea73ed7 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -155,7 +155,6 @@ jobs: sudo apt-get update sudo apt-get install -y \ libwebkit2gtk-4.1-dev \ - libappindicator3-dev \ librsvg2-dev \ patchelf \ libssl-dev \