oxpoe deaa30689c Tooltip hint, loading bar, edit shortcut, export/import .lazy
- Keterangan tombol saat hover: baris hint di footer window dan di dalam dialog
  (bukan popup: overlay Fyne menelan klik pertama, tombol jadi perlu 2x klik)
- Dialog proses sekarang pakai progress bar berjalan (bukan spinner diam)
- Tombol edit per shortcut: ganti binary/URL, ikon (file/online), nama, kategori,
  dan lokasi; berkas .desktop + salinan Desktop ditulis ulang, berkas lama dibuang,
  jenis aplikasi dideteksi ulang, binary lama dihapus kalau nama berubah
- Export/Import daftar shortcut ke berkas SQLite .lazy (driver murni Go modernc),
  skema + meta format versi, impor tidak menimpa shortcut yang sudah ada
- Tes: detect kind, edit (rename/ganti binary/ikon/target), db roundtrip, merge impor,
  tooltip (hint muncul/hilang + klik tetap sampai ke tombol), semua paket hijau
- README: bagian backup + hint tombol
2026-10-13 09:12:39 +07:00
2026-10-13 09:02:09 +07:00
2026-10-13 09:02:09 +07:00
2026-10-13 07:59:29 +07:00
2026-10-13 09:02:09 +07:00

LazyRun — lazy shortcut build

CI Release License Platform UI

Desktop app (Go + Fyne) that creates application shortcuts on Linux in a few clicks: from an executable file, or from a web URL as a PWA. Ships as a single-file AppImage, no terminal needed.

Dream-sky theme: night violet, dusk pink and a moon-coloured accent that subtly breathes while the app is open (the koala in assets/logo.svg is the mascot).

LazyRun main window

New executable shortcut dialog Icon search dialog

  • Repo: https://github.com/oxpoe/lazyrun

  • Donate: https://donasi.oxpoe.qzz.io/

  • Executable shortcut — picks an ELF/AppImage/script/Windows .exe, copies it to ~/.local/bin/, installs the icon, writes the .desktop entry.

  • Automatic type label — every shortcut is tagged with what it actually is, detected from the file: Go, AppImage, Electron, Script, Windows, Binary (.exe files are launched through wine), or PWA for web apps.

  • Web app shortcut — opens the URL as an app: --app=<url> for Chromium-based browsers (Chrome, Chromium, Brave, Edge, Vivaldi, Helium, including Flatpak builds), --new-window for Firefox.

  • Icons — pick a file, or search in the Icon from the internet dialog:

    • app name (whatsapp) → search of the Iconify icon library;
    • website (mikrotik.com) → the site's own icons: web app manifest (up to 512 px), apple-touch-icon, favicon, plus a favicon service. Best option for apps that have no icon in icon libraries (e.g. Winbox → mikrotik.com);
    • image URL (https://…/icon.png) → that image directly. Installation also tries automatically: a nearby image file, the site's icons, then a brand icon matched by name. Every icon is converted to PNG (SVG, webp, gif, bmp, ico and jpeg included) at up to 512 px, and remembers its source so the sync icon button in the list can fetch it again later.
  • Shortcut location — checkbox for Application menu and/or Desktop, at least one is required. Desktop-only entries are written with NoDisplay=true so they do not show up in the menu.

  • Manage — list installed shortcuts, see where they live, mark entries whose .desktop file was deleted manually, uninstall (optionally removing the copied binary).

  • Auto refresh — calls update-desktop-database and kbuildsycoca6/kbuildsycoca5 after install/uninstall.

  • i18n — UI in English or Indonesian, chosen from $LANG.

  • Self update — AppImage with embedded zsync update information, optional AppImageUpdate integration via Check for Updates.

  • Desktop integration — uses the host cursor theme (KDE/GNOME setting is forwarded to the toolkit when the session does not export it), live desktop menu refresh via update-desktop-database and kbuildsycoca.

Install

Needs a desktop Linux with the usual GL/X11 or Wayland libraries (any KDE Plasma or GNOME install has them). No root, nothing outside your home directory.

Download the AppImage from Releases, then:

chmod +x lazyrun-*-x86_64.AppImage
./lazyrun-*-x86_64.AppImage

Keep it wherever you like (for example ~/.local/bin/). Automatic updates need AppImageUpdate in $PATH.

Usage

  1. + Executable or + Web App.
  2. Fill in the form (name and icon are pre-filled/auto-detected).
  3. Pick Application menu and/or Desktop, then Install.

What it writes

Purpose Path
Copied binary ~/.local/bin/<name>
Icon (always PNG) ~/.local/share/icons/hicolor/512x512/apps/<name>.png
Menu entry (source of truth) ~/.local/share/applications/<name>.desktop
Desktop copy ~/Desktop/<name>.desktop (from xdg-user-dir DESKTOP)
LazyRun metadata ~/.config/lazyrun/shortcuts.json

Everything stays inside the home directory — no root, no system directories.

The UI follows your system light/dark setting:

LazyRun in light theme

Filenames use a slug of the app name (`WhatsApp Web` → `whatsapp-web.desktop`); the `Name=` field keeps the name you typed.

Updates

LazyRun checks the latest release of this repository once, a few seconds after start (only when running as an AppImage) and offers to install it:

  • if AppImageUpdate is in $PATH it is used, so only the changed blocks are downloaded (zsync);
  • otherwise the AppImage is downloaded, verified (ELF + AppImage magic bytes) and swapped in atomically — if anything fails the current AppImage stays untouched;
  • Restart now in the dialog runs the new version.

Check for Updates in the footer runs the same flow manually.

Publishing a release is just a tag — GitHub Actions builds and uploads everything (.github/workflows/release.yml):

git tag v1.1.0 && git push --tags

The workflow builds the AppImage with the version taken from the tag, runs the tests, and publishes a release with the .AppImage + .zsync assets and auto-generated notes. To build a release locally instead:

VERSION=1.1.0 GH_USER=oxpoe GH_REPO=lazyrun ./build.sh

Build

Requirements: Go 1.24+, cgo, and X11/OpenGL development headers (Fyne).

./build.sh                # dist/lazyrun + dist/lazyrun-<version>-<arch>.AppImage
SKIP_APPIMAGE=1 ./build.sh # binary only
go test ./...             # unit + install/uninstall tests

build.sh downloads linuxdeploy into dist/tools/ on first run and needs network for the AppImage step. To embed zsync update information, set GH_USER and GH_REPO:

GH_USER=oxpoe GH_REPO=lazyrun ./build.sh

Roadmap

  • Edit existing shortcuts, detect binaries in $PATH, optional symlink instead of a Desktop copy, import/export, dark mode.
  • Firefox PWA via --kiosk, Flatpak/Snap targets, icon preview.

Known limitations are tracked as issues; the main ones:

  • the type label (Go, Electron, …) is detected when the shortcut is created, so a binary replaced by hand keeps its old label until it is reinstalled;
  • the update check runs while the app is open (startup + every 4 hours), there is no background service, and updates are offered, never forced;
  • online icon search uses Iconify plus the icons a website itself provides (manifest / touch icon / favicon) — there is no image-search scraping;
  • Electron detection uses the resources/*.asar marker, so Chromium-based apps (Vivaldi, Helium, …) show up as Binary.

Disclaimer / Catatan

EN — LazyRun is a small hobby project by oxpoe, made for fun and to make daily Linux desktop life a bit simpler: turn a portable binary or a web page into a proper application shortcut without opening a terminal. It only writes inside your home directory, but it does copy files and create launchers: check what you point it at, keep backups of anything irreplaceable, and use it at your own risk. Provided "as is", without warranty of any kind. LazyRun is not affiliated with any browser vendor or application it creates shortcuts for.

ID — LazyRun adalah proyek iseng oxpoe, dibuat untuk senang-senang dan supaya urusan shortcut di desktop Linux jadi lebih simpel: binary portable atau halaman web bisa jadi shortcut aplikasi tanpa buka terminal. Aplikasi ini hanya menulis di dalam home directory, tetapi tetap menyalin file dan membuat launcher: periksa dulu apa yang kamu pilih, backup data penting, dan gunakan dengan risiko sendiri. Disediakan "apa adanya", tanpa jaminan apa pun. LazyRun tidak berafiliasi dengan vendor browser atau aplikasi apa pun yang dibuatkan shortcut-nya.

License

MIT.

S
Description
lazy shortcut build — create Linux desktop shortcuts from executables or web apps (PWA), no terminal needed.
https://donasi.oxpoe.qzz.io/ Readme MIT
1 MiB
0 Stars 1 Watchers 0 Forks
2026-10-13 10:37:45 +07:00
Languages
Go 99%
Shell 1%