ProjectHub: лёгкий локальный лаунчер проектов для Linux-разработчиков

ProjectHub: лёгкий локальный лаунчер проектов для Linux-разработчиков

Если в течение дня вы постоянно переключаетесь между несколькими репозиториями, знакомый сценарий повторяется десятки раз: открыть терминал или файловый менеджер, вспомнить, в какой директории лежит нужный сервис, перейти туда и запустить редактор.

У пользователей 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, отзывам, баг-репортам и пул-реквестам!

Популярное

Самые популярные посты

Как быть максимально продуктивным на удалённой работе?
Business

Как быть максимально продуктивным на удалённой работе?

Я запустил собственный бизнес и намеренно сделал всё возможное, чтобы работать из любой точки мира. Иногда я сижу с своём кабинете с большим 27-дюймовым монитором в своей квартире в г. Чебоксары. Иногда я нахожусь в офисе или в каком-нибудь кафе в другом городе.

Привет! Меня зовут Сергей Емельянов и я трудоголик
Business PHP

Привет! Меня зовут Сергей Емельянов и я трудоголик

Я программист. В душе я предприниматель. Я начал зарабатывать деньги с 11 лет, в суровые 90-е годы, сдавая стеклотару в местный магазин и обменивая её на сладости. Я зарабатывал столько, что хватало на разные вкусняшки.

Акция! Профессиональный разработчик CRM за 2000 руб. в час

Выделю время под ваш проект. Знания технологий Vtiger CRM, SuiteCRM, Laravel, Vue.js, Golang, React.js, Wordpress. Предлагаю варианты сотрудничества, которые помогут вам воспользоваться преимуществами внешнего опыта, оптимизировать затраты и снизить риски. Полная прозрачность всех этапов работы и учёт временных затрат. Оплачивайте только рабочие часы разработки после приемки задачи. Экономьте на платежах по его содержанию разработчика в штате. Возможно заключение договора по ИП. С чего начать, чтобы нанять профессионального разработчика на full-time? Просто позвоните или напишите мне!

Обычно я отвечаю в течение нескольких часов. Если загрузка большая, могу ответить на следующий день — наберитесь терпения. По срочным вопросам звоните напрямую, я постараюсь помочь.

Свяжитесь со мной напрямую

На сайте нет форм: я не собираю и не храню персональные данные посетителей. Просто позвоните или напишите мне удобным способом — ссылка откроет нужное приложение.