Nox (лат. «ночь») — редактор для тех, кто пишет код по ночам. Редактор кода в духе Zed, в soft‑дизайне Singularity.
Стек: Tauri 2 (Rust) · React 18 · TypeScript · Vite · Tailwind 4 · Motion · Lucide · Zustand · CodeMirror 6 · xterm.js
npm install
npm run tauri:dev # десктоп-приложение
npm run dev # браузерное превью на демо-проекте (http://localhost:1430)
npm run tauri:build # установщики: MSI/NSIS (Windows), .app/.dmg (macOS), .deb/.rpm/AppImage (Linux)Платформы. Windows 10+, macOS 11+, Linux (WebKitGTK 4.1).
- На macOS окно получает родные «светофоры» поверх своей шапки (
tauri.macos.conf.json), ⌘ работает вместо Ctrl. - Для сборки на Linux нужны
libwebkit2gtk-4.1-dev libgtk-3-dev librsvg2-dev patchelf. .github/workflows/build.ymlсобирает и тестирует приложение на всех трёх ОС.
Папку можно передать аргументом: noxcode C:\code\project.
Фонового режима и трея нет: закрытие окна завершает приложение и все терминалы. Если есть несохранённые файлы, приложение сначала спросит.
Редактор
- CodeMirror 6, 35 языков (грузятся лениво);
- мультикурсоры; поиск и замена в файле (Ctrl+F) — та же панель, что у поиска по проекту: Aa / слово / regex, стрелки, счётчик «n/N»;
- сплиты до 4 групп с синхронной правкой одного файла;
- вкладку или файл из проводника можно перетащить к левому/правому краю редактора — откроется новая группа, в середину — переедет в эту группу;
- превью-вкладки, перетаскивание вкладок между группами; полоса вкладок листается обычным колесом мыши;
- кнопки сплита и «…» в полосе вкладок можно скрыть (Settings → Layout → Tab bar);
- хлебные крошки, переход к строке;
- автосохранение, обрезка пробелов, финальный перевод строки;
- сохранение CRLF и BOM.
Подсказки и навигация — без языкового сервера, во всех языках
- автодополнение: функции, классы, типы и константы из текущего файла и всего проекта (индекс строится в фоне), ключевые слова, встроенные функции и сниппеты для Rust, Go, C/C++, Java, C#, Kotlin, Swift, Dart, Scala, PHP, Ruby, Lua, Shell, PowerShell и других; рядом с пунктом — сигнатура и doc-комментарий; в строках и комментариях не мешает;
- наведение на имя — карточка с подсвеченной сигнатурой, документацией и местом определения;
Ctrl+клик(⌘+клик на macOS) илиF12— к определению: в этом файле, в другом или по пути изimport/#include; при нескольких кандидатах — выбор;Alt+←— назад;Shift+F12— все использования по проекту; дополнительные курсоры —Alt+клик;- своё контекстное меню по правой кнопке в коде (браузерного «Inspect» больше нет).
Проводник
- виртуализированное дерево с линиями-ориентирами под открытыми папками (отключаются в настройках);
- drag & drop;
- создание, переименование, дублирование, удаление в корзину;
- git-цвета;
- живое обновление через файловый вотчер.
Поиск по проекту — вкладка редактора, как в Zed (Ctrl+Shift+F)
- regex, регистр, целое слово;
- маски include/exclude, учёт
.gitignore; - результаты — фрагменты кода с подсветкой синтаксиса, номерами строк и ±2 строками контекста; стрелки по краям фрагмента показывают больше строк;
- Enter / Shift+Enter — следующее/предыдущее совпадение (счётчик «n/N»), Alt+Enter — открыть файл;
- замена во всех файлах или в одном.
Source Control
- stage, unstage, discard, commit (Ctrl+Enter);
- side-by-side diff с HEAD;
- маркеры изменённых строк на полях.
Терминал
- настоящий PTY (ConPTY на Windows);
- выбор оболочки (стрелка рядом с «+»): PowerShell 7, Windows PowerShell, Command Prompt, Git Bash, WSL, Nushell; на macOS и Linux — zsh, bash, fish и всё из
/etc/shells; - оболочка по умолчанию или своя команда — в настройках;
- несколько вкладок (каждая в своём потоке — открытие новой не блокирует окно), максимизация;
- цвета берутся из темы.
Командная палитра
Ctrl+P— файлы (fuzzy);>— команды;:— переход к строке.
Обновления — без GitHub Releases. Приложение знает коммит, из которого собрано, и сравнивает его с веткой main на GitHub (при сборке вне git — версии из package.json). Если есть новые коммиты, в шапке появляется кнопка Update: список изменений, «View changes» и «Update now» — если исходники, из которых собрано приложение, лежат на этом компьютере, в терминале выполняется git pull, npm install, npm run tauri:build и открывается папка с новым установщиком. Проверка — при запуске и каждые 6 часов (выключается в About), вручную — Help → Check for Updates.
Темы.
- 20 встроенных:
- свои «научные»: Event Horizon, Nebula, Aurora, Photon;
- все темы Singularity;
- классика: One Dark, Dracula, Tokyo Night и другие.
- Theme Studio — редактор всех 50+ цветов с живым превью:
- курсив и жирный для синтаксиса;
- генератор темы из двух цветов;
- экспорт в JSON.
- Импорт тем VS Code — подходит любой
.jsonиз Marketplace, JSONC тоже поддерживается. - Выбор темы в палитре сразу показывает превью (стрелками), Esc отменяет выбор.
- Следование светлой/тёмной теме ОС.
- Раскладка: «Islands» — скруглённые панели с отступами со всех сторон, или «Docked» — те же панели, но прижаты к низу окна и к краю напротив сайдбара (там без скругления).
Настройки проекта (Settings → This Project или команда «Project Settings») хранятся в .nox/settings.json в корне папки и едут вместе с репозиторием: размер табуляции, пробелы/табы, перенос строк, обрезка пробелов и перевод строки при сохранении, форматирование при сохранении и опции Prettier, скрытые файлы, папка для терминала — и отдельные значения для каждого языка. .editorconfig тоже учитывается. Порядок: пользовательские настройки → .editorconfig → проект → язык в проекте.
Настройки (Ctrl+,) разбиты на группы: General (Appearance, Layout), Editor (Text Editor, Typing & Saving, Files & Explorer, This Project), Tools (Terminal, Keyboard Shortcuts), Customize (Theme Studio, File Icons, Extensions). Поиск слева (Ctrl+F) ищет по всем разделам сразу. Настройки можно скопировать как JSON (кнопка { } в шапке, About → Settings as JSON или команда «Copy Settings as JSON») и вставить обратно через «Edit JSON…».
- Компактная шапка (Layout → Title bar): меню File/Edit/View… и/или кнопки видов с шестерёнкой прячутся за одной кнопкой. По клику группа появляется на месте, после выбора пункта или когда курсор уходит — снова прячется.
- Хлебные крошки над редактором, статус-бар и линии в дереве отключаются там же (или View → Toggle Breadcrumbs).
Иконки.
- 6 иконочных тем: Glyphs, Badges, Spectral, Quantum Dots, Minimal, No Icons.
- Свои правила для расширения, имени файла или папки. Иконкой может быть:
- глиф из 180 вариантов с цветом;
- бейдж;
- эмодзи;
- точка;
- своя SVG (очищается DOMPurify).
- Толщина всех иконок интерфейса (Thin / Regular / Bold).
Горячие клавиши. Все переназначаются: поиск по командам и клавишам, запись комбинации, предупреждение о конфликтах, сброс. Клавиши работают на любой раскладке. Браузерные сочетания WebView2 (Ctrl+P — печать, Ctrl+R/F5 — перезагрузка, Ctrl+колесо — масштаб и т. п.) отключены: все клавиши принадлежат редактору.
Расширения. 22 встроенных плюс 35 языковых пакетов. Каждое включается и выключается, у многих есть настройки.
| Расширение | Что делает |
|---|---|
| Vim Mode | модальное редактирование, :‑команды |
| Minimap | обзор файла |
| Indent Guides | направляющие отступов |
| Rainbow Brackets | 4 палитры |
| Color Highlighter | свотчи цветов, клик открывает пипетку |
| TODO Highlight | свои ключевые слова |
| Git Gutter | маркеры изменённых строк |
| Prettier | формат документа и форматирование при сохранении |
| JSON Validator | проверка JSON |
| Markdown Preview | превью Markdown |
| Image Preview | просмотр картинок |
| Word Count | счётчик слов |
| Text Power Tools | сортировка, регистр, UUID, timestamp, lorem |
| Zen Mode | режим без отвлечений |
| Smooth Caret | плавный курсор |
| Spell Checker | проверка орфографии |
| Code Folding | сворачивание кода |
| Selection Highlight | подсветка выделенного |
| IntelliSense Lite | автодополнение |
| Auto Close Brackets | автозакрытие скобок |
npm run test:rust # 34 теста: fs, поиск/замена, git (на реальном репо), PTY и оболочки, вотчер
npm test # 92 теста Vitest: библиотеки, темы, импорт VS Code, иконки, сторы, компоненты
npm run test:e2e # 20 сценариев Playwright на демо-проектеsrc-tauri/src/ fsops · search · git · pty · watcher · commands
src/lib/ backend (Tauri / in-memory демо), path, glob, fuzzy, color, keys
src/editor/ CodeEditor, docHub (синхронизация сплитов), языки, подсветка
src/extensions/ реестр расширений, редакторские фичи, Prettier
src/themes/ встроенные темы, применение, импорт/экспорт
src/icons/ иконочные темы, база типов файлов, библиотека глифов
src/stores/ settings · workspace · editor · terminal · ui · cursor
src/components/ ui-кит, сайдбар, редактор, панель, оверлеи, настройки