English · Русский
Лёгкие терминальные виджеты и аудиовизуализатор «Пульсация» прямо на рабочем столе macOS.
TermJ — это desktop-виджеты для macOS: терминалы с произвольными командами и визуализатор, который реагирует на музыку и подстраивается под цвета обоев.
- Терминальные виджеты — запускай любые команды (
top,htop,cava,btm, свои скрипты). - «Пульсация» — Canvas-визуализатор с файловыми пресетами.
- Адаптация под обои — автоматически извлекает палитру текущих обоев и подстраивает виджеты под фон.
- Multi-monitor — отдельная палитра на каждый дисплей: виджеты берут цвета того монитора, на котором находятся. Перекрашиваются при смене обоев и подключении/отключении экранов.
- Автообновление — проверяет новые версии с GitHub раз в сутки при запуске и по запросу из меню (Статус-бар → «Проверить обновления…»). Скачивает бандл и заменяет его в один клик.
- Режим «Радуга» — Пульсация переливается всеми цветами обоев в такт музыке.
- Панч на кик — опциональный рывок масштаба на бас-удар.
- Прозрачный фон, скругление, привязка к сетке — как в Rainmeter, но для macOS.
- Пользовательские пресеты — импортируй свои
.js-пресеты для Пульсации.
- Скачай
TermJ.appиз Releases. - Перенеси в
/Applications. - Запусти
open /Applications/TermJ.app.
При первом запуске macOS может спросить разрешения для записи экрана и доступа к аудио — они нужны для визуализатора.
git clone https://github.com/titovcode/termJ.git
cd termJ
./build-app.sh
# Готовый бандл появится в ./TermJ.appТребования: macOS 12+, Xcode Command Line Tools, Swift 5.9+.
- Правый клик по виджету → Изменить — задать startup-команды.
- Пустая строка в командах = нажатие
Enter. /wait<N>— пауза в секундах.- Чистый режим скрывает prompt и сами команды, оставляя только вывод.
- Правый клик → Стиль — выбрать пресет волны.
- Правый клик → Kick Punch — включить/выключить рывок масштаба на бас.
- Настройки → последний квадрат палитры — режим «Радуга».
Пользовательские пресеты клади в:
~/Library/Application Support/TermJ/presets/
Или открой папку через меню: правый клик по Пульсации → Стиль → Папка пресетов.
Формат пресета — обычный .js:
// @name Моя волна
function renderPreset(ctx, w, h, audio, colors, helpers) {
// ctx — Canvas 2D context
// audio.waveform, audio.smoothWave, audio.bands, audio.peaks
// colors.wave, colors.glow
// helpers.rgba(c, a), helpers.applyEdgeFade(ctx, w, h)
}Общие настройки открываются через иконку в статус-баре:
- прозрачность фона,
- скругление углов,
- язык интерфейса,
- выбор акцента из палитры обоев или режим «Радуга».
Конфиг хранится в:
~/.config/termj/config.json
Автообновление берёт последний релиз с https://github.com/titovcode/termJ/releases/latest и ищет ассет, оканчивающийся на .zip.
- Обнови версию в файле
VERSION(например0.2.0). - Собери:
./build-app.sh— рядом появитсяTermJ-<VERSION>.zip(ассет релиза). - Залей тег и релиз:
git tag v<VERSION> && git push --tags gh release create v<VERSION> TermJ-<VERSION>.zip --title "v<VERSION>" --notes "..."
При автообновлении бандл заменяется по тому же пути, поэтому разрешения TCC (запись экрана/аудио) могут запроситься заново — приложение пока не нотаризовано.
TermJ бесплатен и с открытым исходным кодом. Если приложение нравится и хочется, чтобы оно развивалось:
Распространяется под лицензией GNU GPL v3.

