Skip to content
Jyni0Public

About

No description or website provided.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Nox Code

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-кит, сайдбар, редактор, панель, оверлеи, настройки

About

No description or website provided.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages