Если в течение дня вы постоянно переключаетесь между несколькими репозиториями, знакомый сценарий повторяется десятки раз: открыть терминал или файловый менеджер, вспомнить, в какой директории лежит нужный сервис, перейти туда и запустить редактор.
У пользователей IDE от JetBrains для этого давно есть удобная вкладка Projects в JetBrains Toolbox. Но если вы перешли на лёгкие редакторы вроде Zed или Sublime Text и терминал Ghostty на Linux, аналогичного простого, независимого от конкретной IDE лаунчера под рукой часто не хватает.
Именно поэтому я сделал ProjectHub — небольшое, быстрое и полностью локальное десктоп-приложение для Linux (Ubuntu 24.04 LTS / 26.04 LTS, GNOME), которое держит все ваши проекты на расстоянии одного клика или пункта меню в трее.
Главная идея: простота и local-first
ProjectHub не пытается заменить вашу IDE, файловый менеджер или Git-клиент. Он не требует аккаунтов, не синхронизируется с облаком и не собирает телеметрию. Вся конфигурация и каталог проектов хранятся локально в двух обычных JSON-файлах по стандарту XDG (~/.config/projecthub/projects.json и settings.json).
Что умеет ProjectHub (v0.1.0)
- Каталог проектов в один клик. Добавляйте папки вручную или перетаскивайте их прямо в окно (Drag & Drop — можно сразу по несколько штук). Для каждого проекта можно задать имя, описание, флаг «Избранное» и персональный редактор по умолчанию. Удаление проекта из списка никогда не затрагивает файлы на диске.
- Гибкий запуск инструментов. Из коробки поддерживаются Zed и Sublime Text, терминал Ghostty (включая открытие новых окон в существующем процессе для версии 1.3+) или любой другой терминал по настраиваемому шаблону аргументов (встроены пресеты для Ptyxis, GNOME Terminal, kitty, Alacritty, WezTerm и Konsole), а также системный файловый менеджер (
gio open / xdg-open или ваш собственный).
- Статус Git без лишних рисков. В списке сразу видны текущая ветка (или короткий хэш при detached HEAD), индикатор незафиксированных изменений в отслеживаемых файлах, счётчики ahead/behind во всплывающей подсказке и метка
Missing, если папка больше не существует.
- Избранное, недавние и быстрый поиск. Вкладки All, Favorites и Recent, поиск по названию, описанию и пути (
Ctrl+F), сортировка по имени или времени последнего открытия и полноценная навигация с клавиатуры (↑/↓, Enter, Ctrl+Enter, F2, Delete).
- Системный трей и единый экземпляр. Через StatusNotifierItem-трей (например, со стандартным расширением Ubuntu AppIndicators) можно быстро открыть один из 8 последних проектов или вернуть окно. При закрытии окно сворачивается в трей (поведение настраивается), а если трея в системе нет — приложение корректно завершается. Повторный запуск
projecthub просто поднимает уже открытое окно.
- Импорт и экспорт в JSON. Переносите список проектов на другую машину с предпросмотром новых, дублирующихся и отсутствующих путей — в режиме слияния или полной замены (с автоматическим бэкапом предыдущего
projects.json).
- Светлая, тёмная и системная темы, запоминание размера окна и опция «поверх всех окон».
Как это устроено внутри
В основе ProjectHub — стек Go 1.26+, Wails 3 (GTK 4 + WebKitGTK 6.0) и Vue 3 (<script setup lang="ts">, строгий TypeScript, Tailwind CSS v4, Pinia):
- Чёткое разделение ответственности. Весь доступ к файловой системе, процессам, нативным диалогам и Git-инспекции сосредоточен на стороне Go. Фронтенд общается с бэкендом только через типизированные биндинги Wails по ID проекта и не передаёт пути к файлам для чтения или записи.
- Безопасный запуск без shell-инъекций. Внешние приложения запускаются строго через
exec.Command с раздельными аргументами — никакого sh -c или bash -c, даже если в пути проекта есть пробелы или спецсимволы.
- Безопасная read-only инспекция Git. Проверка репозиториев ограничена по времени (3 секунды на репозиторий) и параллелизму (до 4 процессов), не делает сетевых запросов, очищает унаследованные переменные
GIT_* и принудительно отключает core.fsmonitor и фильтры из конфигурации репозитория, чтобы случайное открытие чужого проекта не могло выполнить произвольный код.
- Атомарная запись конфигурации. Файлы пишутся через временный файл с
fsync, переименованием и синхронизацией директории с правами 0600. Повреждённый JSON никогда не перезаписывается молча — пользователь получает понятное сообщение об ошибке.
Попробуйте и установите ProjectHub
Проект распространяется под лицензией MIT в виде .deb-пакета для Ubuntu 24.04 LTS и Ubuntu 26.04 LTS (amd64), а также легко собирается из исходников с помощью task.
👉 Репозиторий и исходный код: github.com/semelyanov86/ProjectHub
📦 Скачать последний релиз (.deb + SHA256SUMS): github.com/semelyanov86/ProjectHub/releases/latest
Установка на Ubuntu:
sha256sum --check --ignore-missing SHA256SUMS
sudo apt install ./projecthub_*_amd64.deb
После установки ProjectHub появится в меню приложений GNOME и поиске, его можно закрепить в доке, а все настройки всегда останутся под вашим контролем в ~/.config/projecthub. Буду рад звёздам на GitHub, отзывам, баг-репортам и пул-реквестам!