Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
81 commits
Select commit Hold shift + click to select a range
02ba2bb
Merge pull request #15 from antonbarchukov/main
am-will Mar 24, 2026
27cdefe
plan: record shortcut inventory
am-will Mar 24, 2026
6b5828a
host: add shortcut metadata registry
am-will Mar 24, 2026
d87d40d
host: add shortcut config contract
am-will Mar 24, 2026
c53622b
plan: record shortcut inventory
am-will Mar 24, 2026
84caabd
host: wire shortcuts through runtime registry
am-will Mar 24, 2026
7b3441a
plan: verify shortcut config groundwork
am-will Mar 24, 2026
3f17cba
host: route shortcut capture through registry
am-will Mar 24, 2026
4917045
host: derive shortcut tooltips from registry
am-will Mar 24, 2026
32099c5
host: finalize configurable shortcut registry
am-will Mar 24, 2026
60572ca
host: add shortcut persistence primitives
am-will Mar 25, 2026
54df740
host: harden shortcut config persistence
am-will Mar 25, 2026
eac64c1
host: add terminal keybind editor
am-will Mar 25, 2026
ecbce1f
docs: cover keybind editor verification
am-will Mar 25, 2026
4dde46a
docs: fix keybind testing checklist numbering
am-will Mar 25, 2026
9172da3
host: stabilize keybind editor opening
am-will Mar 25, 2026
90198ee
host: capture shortcuts on first non-modifier key
am-will Mar 25, 2026
5fc304f
host: fix first-click keybind capture
am-will Mar 25, 2026
b33bbda
host: focus keybind editor on popup
am-will Mar 25, 2026
bfb1243
host: focus keybind popover capture
am-will Mar 25, 2026
52d5bd9
host: open keybinds in pane tab
am-will Mar 25, 2026
2b50e9e
host: let keybind tab fill pane height
am-will Mar 25, 2026
6c76328
host: avoid restore borrow conflict for keybind tabs
am-will Mar 25, 2026
88fc948
chore: checkpoint before keybind editor fixes
am-will Mar 25, 2026
14a4636
host: escape dropped terminal control bytes
am-will Mar 25, 2026
fffa41b
fix keybind editor shortcut capture gaps
am-will Mar 25, 2026
6841290
add super key support for shortcuts
am-will Mar 25, 2026
586b1f2
Add fullscreen and top bar toggles
am-will Mar 25, 2026
71643a3
Fix GTK F11 accelerator mapping
am-will Mar 25, 2026
4ae4427
host: fix rust quality for surface shortcut refactor
am-will Mar 25, 2026
03425df
Make sidebar title strip draggable
am-will Mar 25, 2026
ac70080
Add pane and workspace tab drag and drop
am-will Mar 25, 2026
57d1d80
Fix tab drag workspace cleanup
am-will Mar 25, 2026
34d9e02
fix: reduce split_pane arguments
am-will Mar 25, 2026
299fe75
Adjust shortcuts and sidebar resize behavior
am-will Mar 25, 2026
fafb470
Fix shortcut config formatting
am-will Mar 25, 2026
cc0de75
Handle Codex OSC 9 notifications
am-will Mar 25, 2026
825a105
Handle Ghostty desktop notifications in host
am-will Mar 25, 2026
c902ec4
Release 0.1.8
am-will Mar 26, 2026
a8a6fb2
Fix workspace save reentrancy and cut 0.1.9 release
am-will Mar 26, 2026
e1ddec2
Remove accidental plan docs
am-will Mar 26, 2026
388ef5e
Add opt-in terminal hover focus setting
IgorWarzocha Mar 26, 2026
b35205f
Release 0.1.10
am-will Mar 26, 2026
ba00da8
Add browser action to terminal context menu
IgorWarzocha Mar 26, 2026
1af8dfb
host: split settings and shortcut config files
am-will Mar 26, 2026
e63ab31
Merge pull request #22 from IgorWarzocha/feat/hover-focus
am-will Mar 26, 2026
d6d79b9
Focus first pane when switching workspaces
am-will Mar 27, 2026
6e2e58d
Fix light theme entry contrast
am-will Mar 30, 2026
930adef
fix: handle localhost URLs in browser pane
threehymns Mar 31, 2026
a997efd
Support Ghostty background opacity
am-will Apr 1, 2026
aa5226c
fix browser localhost URL normalization
am-will Apr 1, 2026
f1e9174
Merge pull request #33 from am-will/issue-30-background-opacity
am-will Apr 1, 2026
536e6e9
Fix search activation for IME and dead keys
am-will Apr 1, 2026
ac4d3e3
Merge pull request #32 from threehymns/fix/localhost-url-handling
am-will Apr 1, 2026
ecc35e7
Merge pull request #23 from IgorWarzocha/feat/terminal-context-open-b…
am-will Apr 1, 2026
742befa
fix: format host window test imports
am-will Mar 29, 2026
54b17ff
Add a settings dialog with persisted appearance controls
turbineBMW Mar 28, 2026
66445b4
In rust/limux-host-linux/src/window.rs:1456, portal value 0 now map…
turbineBMW Mar 28, 2026
da71572
The startup theme path in rust/limux-host-linux/src/window.rs:669 n…
turbineBMW Mar 28, 2026
fd12902
• New first-run config creation now writes both appearance defaults a…
turbineBMW Mar 28, 2026
db53d10
tests: fix rebased window imports
am-will Apr 1, 2026
3186578
Merge pull request #26 from turbineBMW/appearance-settings
am-will Apr 1, 2026
0929e8a
Fix 10+ second freeze on pane split/close
mvbmir Apr 1, 2026
ead50d3
Update app icon to dark mode variant
mvbmir Apr 1, 2026
6a28d75
Merge pull request #37 from mvbmir/mvbmir/dark-mode-icon
am-will Apr 1, 2026
47c7903
Fix wrapped workspace root pane resolution
am-will Apr 1, 2026
5b013f4
Merge pull request #34 from mvbmir/fix/split-freeze-upstream
am-will Apr 1, 2026
49e8422
host: coalesce ghostty wakeup idles
am-will Apr 1, 2026
b47475f
Reject Debug builds of libghostty in packaging script
mvbmir Apr 2, 2026
abad76e
Build libghostty with ReleaseFast automatically in package.sh
mvbmir Apr 2, 2026
e89d8e5
host: reconcile render throttling with main
am-will Apr 1, 2026
63a30df
Clarify packaging prerequisites
am-will Apr 2, 2026
585da0a
Merge pull request #38 from mvbmir/fix/libghostty-release-build
am-will Apr 2, 2026
93a7fd7
Wire control socket to GTK UI (#35)
mvbmir Apr 2, 2026
d892ea0
release: bump version to 0.1.11
am-will Apr 2, 2026
db91815
Focus new panes after split
am-will Apr 3, 2026
2c901a8
Fix stale ghostty runtime env fallback
am-will Apr 3, 2026
7fd02c9
release: bump version to 0.1.12
am-will Apr 3, 2026
4794089
feat: add AUR source package (limux) alongside limux-bin
antonbarchukov Apr 5, 2026
ab314a0
fix: use system ghostty for resources, clean up AUR workflow
antonbarchukov Apr 6, 2026
058bc5f
fix: resolve glad symbol lookup error in source build
antonbarchukov Apr 6, 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
128 changes: 111 additions & 17 deletions .github/workflows/aur-publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,50 +9,144 @@ on:
description: "Version to publish (without v prefix)"
required: true

# Only run on upstream — secrets are not available on forks
run-name: "Publish ${{ inputs.version || github.ref_name }} to AUR"

permissions:
contents: read

jobs:
aur-publish:
resolve-version:
runs-on: ubuntu-latest

steps:
- name: Check out repository
uses: actions/checkout@v6
outputs:
version: ${{ steps.resolve.outputs.version }}

- name: Extract version
id: version
steps:
- name: Resolve version
id: resolve
run: |
if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
echo "version=${{ inputs.version }}" >> "$GITHUB_OUTPUT"
else
echo "version=${GITHUB_REF_NAME#v}" >> "$GITHUB_OUTPUT"
fi

- name: Generate AUR PKGBUILD
validate-src:
needs: resolve-version
runs-on: ubuntu-latest
container: archlinux:base-devel

env:
VERSION: ${{ needs.resolve-version.outputs.version }}

steps:
- name: Check out repository
uses: actions/checkout@v6
with:
submodules: recursive

- name: Install build dependencies
run: |
pacman -Syu --noconfirm
pacman -S --noconfirm zig rust git gtk4 libadwaita webkitgtk-6.0 ghostty

- name: Validate PKGBUILD template
run: |
sed "s/@@VERSION@@/$VERSION/" PKGBUILD-source.template > /tmp/PKGBUILD
source /tmp/PKGBUILD
echo "PKGBUILD parsed OK: $pkgname $pkgver"

- name: Build
run: |
cd ghostty && zig build -Dapp-runtime=none -Doptimize=ReleaseFast && cd ..
cargo build --release

- name: Verify build outputs
run: |
test -f target/release/limux
test -f ghostty/zig-out/lib/libghostty.so
test -d /usr/share/ghostty

validate-bin:
needs: resolve-version
runs-on: ubuntu-latest

outputs:
sha256: ${{ steps.validate.outputs.sha256 }}

env:
VERSION: ${{ needs.resolve-version.outputs.version }}

steps:
- name: Download and validate tarball
id: validate
run: |
set -euo pipefail
VERSION="${{ steps.version.outputs.version }}"
TARBALL_URL="https://github.com/am-will/limux/releases/download/v${VERSION}/limux-${VERSION}-linux-x86_64.tar.gz"
curl -fL --retry 5 --retry-delay 10 "$TARBALL_URL" -o /tmp/limux.tar.gz

for i in 1 2 3 4 5; do
curl -fL "$TARBALL_URL" -o /tmp/limux.tar.gz && break
echo "Attempt $i failed, retrying in 30s..."
sleep 30
done
SHA256=$(sha256sum /tmp/limux.tar.gz | awk '{print $1}')
cd /tmp && tar xzf limux.tar.gz
DIR="limux-${VERSION}-linux-x86_64"
test -f "$DIR/limux"
test -f "$DIR/lib/libghostty.so"
test -f "$DIR/share/applications/dev.limux.linux.desktop"
test -d "$DIR/share/limux/ghostty"

echo "sha256=$(sha256sum /tmp/limux.tar.gz | awk '{print $1}')" >> "$GITHUB_OUTPUT"

publish-bin:
if: github.repository == 'am-will/limux'
needs: [resolve-version, validate-bin]
runs-on: ubuntu-latest

env:
VERSION: ${{ needs.resolve-version.outputs.version }}

steps:
- name: Check out repository
uses: actions/checkout@v6

- name: Generate PKGBUILD
run: |
sed -e "s/@@VERSION@@/$VERSION/" \
-e "s/@@SHA256@@/$SHA256/" \
-e "s/@@SHA256@@/${{ needs.validate-bin.outputs.sha256 }}/" \
PKGBUILD.template > PKGBUILD

- name: Publish to AUR
- name: Publish limux-bin to AUR
uses: KSXGitHub/github-actions-deploy-aur@v4.1.1
with:
pkgname: limux-bin
pkgbuild: PKGBUILD
commit_username: "limux-aurbot"
commit_email: limux-aurbot@users.noreply.aur.archlinux.org
ssh_private_key: ${{ secrets.AUR_SSH_PRIVATE_KEY }}
commit_message: "chore: bump to ${{ steps.version.outputs.version }}"
commit_message: "Update to ${{ env.VERSION }}"
force_push: true

publish-src:
if: github.repository == 'am-will/limux'
needs: [resolve-version, validate-src]
runs-on: ubuntu-latest

env:
VERSION: ${{ needs.resolve-version.outputs.version }}

steps:
- name: Check out repository
uses: actions/checkout@v6

- name: Generate PKGBUILD
run: |
sed "s/@@VERSION@@/$VERSION/" PKGBUILD-source.template > PKGBUILD

- name: Publish limux to AUR
uses: KSXGitHub/github-actions-deploy-aur@v4.1.1
with:
pkgname: limux
pkgbuild: PKGBUILD
commit_username: "limux-aurbot"
commit_email: limux-aurbot@users.noreply.aur.archlinux.org
ssh_private_key: ${{ secrets.AUR_SSH_PRIVATE_KEY }}
commit_message: "Update to ${{ env.VERSION }}"
force_push: true
21 changes: 15 additions & 6 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ resolver = "2"
authors = ["limux contributors"]
edition = "2021"
license = "MIT"
version = "0.1.6"
version = "0.1.12"

[workspace.dependencies]
anyhow = "1.0"
Expand Down
67 changes: 67 additions & 0 deletions PKGBUILD-source.template
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
# Maintainer: Anton Barchukov <anton@barchukov.com>
pkgname=limux
pkgver=@@VERSION@@
pkgrel=1
pkgdesc="GPU-accelerated terminal workspace manager for Linux, powered by Ghostty's rendering engine (cmux port)"
arch=('x86_64')
url="https://github.com/am-will/limux"
license=('MIT')
depends=('gtk4' 'libadwaita' 'webkitgtk-6.0')
makedepends=('zig' 'cargo' 'git' 'ghostty' 'patchelf')
conflicts=('limux-bin' 'limux-bin-debug')
source=("$pkgname-$pkgver::git+https://github.com/am-will/limux.git#tag=v$pkgver")
sha256sums=('SKIP')

build() {
cd "$srcdir/$pkgname-$pkgver"
git submodule update --init --recursive
cd ghostty
git submodule update --init --recursive
zig build -Dapp-runtime=none -Doptimize=ReleaseFast
cd ..
# Build glad as a shared lib — libghostty.so needs these symbols at runtime
# but cargo's --gc-sections discards them from the static link.
gcc -shared -fPIC -o libglad.so \
ghostty/vendor/glad/src/gl.c \
-Ighostty/vendor/glad/include

cargo build --release
}

package() {
cd "$srcdir/$pkgname-$pkgver"

# Binary — patch in libglad.so dependency so libghostty.so can find glad symbols
install -Dm755 target/release/limux "$pkgdir/usr/bin/limux"
patchelf --add-needed libglad.so "$pkgdir/usr/bin/limux"

# Shared libraries
install -Dm644 ghostty/zig-out/lib/libghostty.so "$pkgdir/usr/lib/limux/libghostty.so"
install -Dm644 libglad.so "$pkgdir/usr/lib/limux/libglad.so"

# ld.so.conf.d entry so the linker finds libghostty.so
install -Dm644 /dev/stdin "$pkgdir/etc/ld.so.conf.d/limux.conf" <<< "/usr/lib/limux"

# Desktop file and AppStream metadata
install -Dm644 rust/limux-host-linux/dev.limux.linux.desktop "$pkgdir/usr/share/applications/dev.limux.linux.desktop"
install -Dm644 rust/limux-host-linux/dev.limux.linux.metainfo.xml "$pkgdir/usr/share/metainfo/dev.limux.linux.metainfo.xml"

# App icons
for size in 16 32 128 256 512; do
install -Dm644 "rust/limux-host-linux/icons/app/${size}.png" \
"$pkgdir/usr/share/icons/hicolor/${size}x${size}/apps/limux.png"
done

# Action icons (SVGs)
install -dm755 "$pkgdir/usr/share/icons/hicolor/scalable/actions"
install -Dm644 rust/limux-host-linux/icons/*.svg -t "$pkgdir/usr/share/icons/hicolor/scalable/actions/"

# Ghostty resources (themes, shell integration) from system ghostty package
install -dm755 "$pkgdir/usr/share/limux"
cp -r /usr/share/ghostty "$pkgdir/usr/share/limux/ghostty"

# Terminfo entries from system ghostty-terminfo package
install -dm755 "$pkgdir/usr/share/limux/terminfo/g" "$pkgdir/usr/share/limux/terminfo/x"
[ -f /usr/share/terminfo/g/ghostty ] && install -Dm644 /usr/share/terminfo/g/ghostty "$pkgdir/usr/share/limux/terminfo/g/ghostty"
[ -f /usr/share/terminfo/x/xterm-ghostty ] && install -Dm644 /usr/share/terminfo/x/xterm-ghostty "$pkgdir/usr/share/limux/terminfo/x/xterm-ghostty"
}
2 changes: 1 addition & 1 deletion PKGBUILD.template
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ url="https://github.com/am-will/limux"
license=('MIT')
depends=('gtk4' 'libadwaita' 'webkitgtk-6.0')
provides=('limux')
conflicts=('limux')
conflicts=('limux' 'limux-debug')
options=(!debug !strip)
source=("limux-${pkgver}.tar.gz::https://github.com/am-will/limux/releases/download/v${pkgver}/limux-${pkgver}-linux-x86_64.tar.gz")
sha256sums=('@@SHA256@@')
Expand Down
Loading
Loading