A modern GTK4 tool to create and manage webapps, supporting multiple browsers while detecting icons and titles automatically. Integrate your favorite web applications into your desktop environment.
- Multi-browser Support: Create webapps using any installed browser
- Automatic Detection: Automatically detects website titles and favicons
- Categorization: Organize webapps by categories
- Search Functionality: Quickly find your webapps using the search feature
- Import/Export: Easily backup and restore your webapps collection
- Browser Switching: Change browsers for existing webapps without recreating them
- Customized Profiles: Uses optimized browser profiles for a better webapp experience
- Built with Rust using GTK4 and libadwaita
- WebKitGTK 6.0 for webapp viewer with isolated profiles
- Uses website scraping to extract icons and metadata
- Integrated with desktop environment via desktop files
- Compatible with both Xorg and Wayland display servers
The package is available in BigLinux repositories:
sudo pacman -S biglinux-webapps- Launch the application from your menu or run:
big-webapps-gui
- Click the "Add" button to create a new webapp
- Enter the URL, name, and select a browser
- Enjoy your new integrated webapp!
GPL-3.0-or-later
Requires a Rust toolchain (pinned in rust-toolchain.toml) plus the GTK4 /
libadwaita / WebKitGTK 6.0 dev libraries.
cargo build --release --workspace --locked
./target/release/big-webapps-guiOther binaries: big-webapps-viewer (WebKit window), big-webapps-exec
(launcher shim).
Start here before editing the tree:
AGENTS.md— crate/binary map, build/test/lint commands, where to edit.ARCHITECTURE.md— async boundaries, subprocess argv table, data flow.INVARIANTS.md— enforced contracts and their CI gate.SECURITY.md— threat model, reporting channel.
The committed quality gate is .github/workflows/rust-quality.yml
(fmt, clippy -D warnings, build --locked, test, cargo deny,
cargo machete, i18n POT freshness).
- gtk4 (>= 4.10)
- libadwaita-1 (>= 1.6)
- webkitgtk-6.0 (>= 2.50)
- gettext
- openssl
Run the repo-local validator before sending changes for review:
bash scripts/validate-customizations.shTranslations use gettext. Source catalogs live in po/.
Extracting new strings (after adding gettext("…") calls in Rust source):
# update the .pot template and merge it into every catalog
./scripts/update-translations.shAdding a new language (xx = locale code):
cp po/en.po po/xx.po
# edit xx.po with your translationsBuilding .mo files (done automatically by PKGBUILD):
for po in po/*.po; do
lang=$(basename "$po" .po)
msgfmt -o "po/${lang}.mo" "$po"
doneRuntime .mo files are installed to /usr/share/locale/<lang>/LC_MESSAGES/biglinux-webapps.mo.



