ProjectHub: A Lightweight, Local-First Project Launcher for Linux Developers

ProjectHub: A Lightweight, Local-First Project Launcher for Linux Developers

If you switch between several repositories throughout the day, you know the routine: open a terminal or file picker, remember where that particular service lives, navigate there, and launch your editor.

JetBrains users have long appreciated the Projects view in JetBrains Toolbox for solving this friction. But if your daily toolkit on Linux revolves around fast, standalone tools like Zed, Sublime Text, and Ghostty, there hasn't been a clean, editor-agnostic equivalent that stays out of your way.

That is why I built ProjectHub — a lightweight, local-first desktop project launcher for Linux (Ubuntu 24.04 LTS / 26.04 LTS, GNOME) that keeps every local repository one click or one tray menu item away.

Philosophy: Local-First and Focused

ProjectHub doesn't try to replace your editor, terminal, or Git client. There are no user accounts, no cloud sync, and no telemetry. Your entire catalog and configuration live locally in two plain, XDG-compliant JSON files (~/.config/projecthub/projects.json and settings.json).

Key Features (v0.1.0)

  • One-click project catalog. Add folders via the native picker or drag and drop directories straight onto the window (single or batch). Give each project a custom name, description, favorite star, and optional per-project default editor. Removing a project only unregisters it—never touching files on disk.
  • Open with your favorite tools. Supports Zed and Sublime Text, Ghostty (using single-instance +new-window on 1.3+ with automatic fallback) or any custom terminal via argument templates (with presets for Ptyxis, GNOME Terminal, kitty, Alacritty, WezTerm, and Konsole), plus your system file manager (gio open / xdg-open or a custom executable).
  • Read-only Git status at a glance. See the current branch (or short commit hash on detached HEAD), a dot for uncommitted tracked changes, ahead/behind counts in the tooltip, and a clear Missing badge when a folder no longer exists.
  • Favorites, Recent, search & keyboard workflow. Switch between All, Favorites, and Recent, filter instantly by name, description, or path (Ctrl+F), sort by name or last opened, and navigate with the keyboard (↑/↓, Enter, Ctrl+Enter, F2, Delete).
  • System tray & single instance. Jump straight into your 8 most recently opened projects from the StatusNotifierItem tray menu (supported out of the box on Ubuntu via AppIndicators). Closing the window minimizes to the tray when a tray host is available, or cleanly quits when there isn't one. Launching projecthub a second time brings the existing window back into focus.
  • JSON import & export. Move your catalog between machines with a full preview of new, duplicate, and missing paths—choosing either Merge or Replace (which saves a timestamped backup of your existing projects.json).
  • Light, dark, and system themes, remembered window dimensions, and an optional always-on-top mode.

Under the Hood

ProjectHub is built with Go 1.26+, Wails 3 (GTK 4 + WebKitGTK 6.0), and Vue 3 (<script setup lang="ts">, strict TypeScript, Tailwind CSS v4, and Pinia):

  • Strict separation of concerns. The Go backend owns all filesystem, process, dialog, and Git operations. The Vue frontend communicates exclusively through typed Wails bindings by project ID and never passes raw filesystem paths to read or write.
  • No shell injection. External applications are spawned directly with exec.Command and discrete argument slices—never through sh -c or bash -c, safely handling spaces and special characters in directory paths.
  • Hardened, read-only Git inspection. Status checks are concurrency-bounded (up to 4 workers) and time-limited (3 seconds per repository), never fetch over the network, sanitize inherited GIT_* environment variables, and disable core.fsmonitor and repository-defined filter drivers so inspecting an untrusted repo cannot execute arbitrary hooks.
  • Atomic config persistence. JSON files are written with 0600 permissions via a temp file, fsync, atomic rename, and directory fsync. Corrupted config files are surfaced with an actionable error instead of being silently overwritten.

Try & Install ProjectHub

ProjectHub is open source under the MIT License, distributed as a .deb package for Ubuntu 24.04 LTS and 26.04 LTS (amd64), and easy to build from source with task.

👉 GitHub Repository: github.com/semelyanov86/ProjectHub
📦 Download Latest Release (.deb + SHA256SUMS): github.com/semelyanov86/ProjectHub/releases/latest

Install on Ubuntu:

sha256sum --check --ignore-missing SHA256SUMS
sudo apt install ./projecthub_*_amd64.deb

Once installed, launch ProjectHub from your GNOME applications menu or pin it to your dock. Give it a try—feedback, issues, stars, and pull requests on GitHub are very welcome!

Popular Posts

My most popular posts

Maximum productivity on remote job
Business

Maximum productivity on remote job

I started my own business and intentionally did my best to work from anywhere in the world. Sometimes I sit with my office with a large 27-inch monitor in my apartment in Cheboksary. Sometimes I’m in the office or in some cafe in another city.

Hello! I am Sergey Emelyanov and I am hardworker
Business PHP

Hello! I am Sergey Emelyanov and I am hardworker

I am a programmer. I am an entrepreneur in my heart. I started making money from the age of 11, in the harsh 90s, handing over glassware to a local store and exchanging it for sweets. I earned so much that was enough for various snacks.

Hire Professional CRM developer for $25 per hour

I will make time for your project. Knowledge of Vtiger CRM, SuiteCRM, Laravel, Vue.js, Wordpress. I offer cooperation options that will help you take advantage of external experience, optimize costs and reduce risks. Full transparency of all stages of work and accounting for time costs. Pay only development working hours after accepting the task. Accept PayPal and Payoneer payment systems. How to hire a professional developer? Just call or message me.

I usually answer within a few hours. When my workload is heavy it may be the next day, so please be patient. For anything urgent, call me directly and I will do my best to help.

Get in touch directly

This site has no forms: I neither collect nor store personal data of its visitors. Just call or message me whichever way suits you and the link will open the right app.