Skip to content

Releases: compilando/norte

norte v0.3.0-alpha.4

norte v0.3.0-alpha.4 Pre-release
Pre-release

Choose a tag to compare

@compilando compilando released this 15 Sep 10:11

Pre-release. Linux x86_64 only.

Downloads

  • norte_0.3.0-alpha.4_amd64.deb, norte-0.3.0-alpha.4-1.x86_64.rpm, norte_0.3.0-alpha.4_amd64.AppImage — the window (norte-gui) together with the daemon (norte) and the terminal client (ntc), in one package.
  • norte-cli-x86_64-unknown-linux-gnu.tar.xz (norte), norte-tui-x86_64-unknown-linux-gnu.tar.xz (ntc) and their -installer.sh — without the window.

Requirements. Everything here was built on Ubuntu 22.04 and needs glibc 2.34 or newer; the window also needs WebKitGTK 4.1. Each artefact was installed and started in clean containers of Ubuntu 22.04 and 24.04, Debian 12 and 13, and Fedora 41 (ADR 0112). The AppImage expects the graphics and font libraries every desktop provides.

Checksums. SHA256SUMS covers every file; each archive also has its own .sha256. Nothing is signed yet.


Added

  • Your own themes by name. A theme saved as
    ~/.config/norte/themes/<name>.toml is offered by the theme picker, the
    first-run wizard and the settings screen in both frontends, previews live,
    and can be set as [ui] theme = "<name>". The order is fixed: a bundled
    preset first — a stale themes/nord.toml cannot change what nord
    means — then your themes directory, then the value as a path. A file that
    does not parse is left out of the list rather than breaking the picker.

  • norte theme import turns a Visual Studio Code colour theme into one
    of yours: norte theme import OneDark-Pro.json --use writes
    themes/one-dark-pro.toml and sets [ui] theme. It follows the theme's
    include chain, paints it over vscode-dark or vscode-light so what the
    theme leaves undefined is not monochrome, flattens translucent colours over
    the editor background, and refuses a name that a bundled preset would
    shadow. Comments and trailing commas in the JSON are fine;
    tokenColors is ignored. See docs/theming.md.

  • Seti file icons. The file-icons extension has a fourth style,
    seti: the icons Visual Studio Code shows by default, one per language
    where nerd has one per class, so a Python file and a Go file no longer
    look alike. They come from the same Nerd font, so the window's bundled
    subset grew from 18 to 73 glyphs (16 KB) and a Nerd-patched terminal font
    already has them. Twenty more extensions are recognised in every style
    (html, css, vue, svelte, dart, scala, tex, xml…).

  • Alt on its own opens the menu bar. In the window always (bridge 68):
    press and release Alt with nothing in between, as on any desktop; Alt+F4,
    Alt+Tab, an Alt-drag and AltGr do not count, and a dialog in front keeps
    the keyboard as it does for F9. In the terminal behind [ui] alt_menu,
    off by default: a lone modifier can only be reported under the kitty
    keyboard protocol (kitty, foot, WezTerm, Ghostty — not tmux, xterm or
    GNOME Terminal), and in that mode the terminal sends keys rather than
    text: a letter typed with a dead key (é) or a symbol typed with AltGr
    (@, #) arrives as its base key.

  • Column widths by dragging in the terminal too. Drag the separator
    that opens a column in the header; the width follows the pointer and is
    written to [ui.columns] when you let go, the same key the window writes.

  • Scrolling the window no longer flickers. Every update rebuilt the
    menu, panel and key bars, the tabs, the title, the column header and
    every visible row even when only the rows at the edge had changed; what
    paints the same now stays the same node. The overscan grew from 8 to 24
    rows, so a quick wheel gesture no longer shows blank rows at the edge
    while the new ones travel.

  • vscode-dark and vscode-light presets (spec 2026-09-11),
    transcribed from Visual Studio Code's Dark Modern and Light Modern and
    from the editor's built-in colour registry — a VSCode theme JSON is not
    a complete palette, so list.* and scrollbarSlider.* come from the
    registry, not from any file in the include chain. Each preset's header
    records where every role came from and where it diverges: on white,
    VSCode's own error (3.35:1) and warning (3.12:1) fall under the
    4.5:1 that norte requires of a signal you have to read when something
    has gone wrong, so both are darkened and the original values are named.

  • The window paints a theme's file colours (ADR 0108, bridge 66).
    [files.kind] and [files.ext] — half of what a theme file declares —
    had never reached the window: every entry came out the same colour,
    which reads as a broken theme rather than a plain one. An entry's
    colour is resolved by the host against the filename's raw bytes and
    travels in its row, because extensions are an open set and no CSS class
    could name them. Four of Style's six attributes cross; bg and
    reverse stay behind so a theme cannot hide where the cursor is. The
    scrollbar, row hover, widget surfaces and control focus rings now come
    from the theme too, and the pane footer stops painting its text with a
    border colour.

  • Entry colours follow the desktop's colour scheme (bridge 67). With
    theme_light/theme_dark set, flipping the desktop repainted the
    chrome from one variant and left the file names coloured by the other.

  • Ten chrome roles — hover, input-background, input-border,
    widget-background, widget-shadow, badge, scrollbar-slider,
    separator, focus-border and muted — for the surfaces a modern
    editor separates by elevation rather than by borders. A preset is not
    required to define them (Role::CORE is what completeness asserts):
    the window's stylesheet derives each from a colour the theme already
    has, so the eight existing presets gain nothing and change nowhere.

  • The window, polished (spec 2026-09-11). Bundled typography —
    JetBrains Mono for cells, Inter for chrome, 14 px on 22 px rows — with
    [ui] font/mono_font/font_size still in charge; column widths by
    dragging a header's edge, written to [ui.columns] width and honoured
    by both frontends, with the terminal's discard rule when the name would
    fall under ten cells; keycaps on the key bar, small-caps headers, an
    accent on the cursor, a mark checkbox on hover; breadcrumbs in the pane
    title, a toast for notices, pills for persistent warnings, a two-pixel
    gauge of the volume's usage in the footer; [ui] theme_light /
    theme_dark follow the desktop's colour scheme live, and a theme's
    [effects] backdrop = "blur" blurs what lies behind a dialog (the
    default preset asks for it). Bridge 64 and 65.

  • A thumbnail plugin kind (ADR 0107), in its own WIT package
    norte:thumbnail@0.1.0 so no installed guest needs a rebuild. A guest
    lists mimetypes like a previewer, gets the file's bytes (capped at 8 MiB)
    and the longest edge allowed, and answers a PNG/JPEG/WebP raster that
    the plugin-host verifies — magic, declared mimetype, dimensions, edge —
    before it crosses. plugin.thumbnail (protocol 0.73.0) carries it; the
    window's viewer asks for one when it has no picture of its own and paints
    it labelled «via ‹plugin›». org.norte.image-thumb is the first guest:
    a photo too big for the viewer's cap now gets a picture.

  • Plugins parametrised. file-icons paints one-cell Nerd Font glyphs
    (style = "nerd", bundled in the window as a 3.8 KB subset) and takes
    dir-icon and unknown-icon; two new columns plugins, size-bar (a
    █░ bar per file; scale, width, relative-to) and age (a glyph
    per bucket and a short figure; thresholds, glyphs, format);
    git-status takes glyphs (letters or symbols) and ignored.

  • The chrome of an orthodox manager, derived and configurable (ADR
    0106). A function-key bar on the last row of the terminal and a strip at
    the bottom of the window, read from the keymap of the screen that owns the
    keyboard; the panel bar names its buttons with the access letter
    underlined; every listing carries a footer with counts, what is marked and
    the free space of its volume; a dialog's key line is painted as clickable
    buttons; a status notice expires into the log after eight seconds and
    leaves a !n badge that opens it; the modified column prints local time
    with the precision the distance asks for (smart); the palette reads the
    human label first and keeps the last five commands on top; the focused
    cursor takes the theme's accent and the other pane's stays grey. Six
    [ui] keys (key_bar, panel_bar_style, pane_footer, date_format,
    notice_seconds, dialog_buttons), each a row on the settings screen and
    a section of the new appearance help page.

  • A first-start wizard. With no norte.toml of your own, both frontends
    ask three things once — which file manager you have in your fingers, which
    theme (previewed live), and whether your terminal shows icons — and write
    the answers as configuration. Esc keeps the defaults and never asks again;
    ntc --setup asks again; NORTE_NO_WIZARD=1 keeps it closed.

Changed

  • F9 opens the menu in six presets, as in mc, FAR, Norton Commander and
    Total Commander; the theme picker moves to Alt+9. Krusader keeps F9 as
    the terminal, as its source attests.
  • The mtime column is 12 cells (was 10), to fit 09-10 14:02.
  • A plugin may name a meaning, not a piece of chrome (ADR 0108,
    amending ADR 0037). role on a span or a decoration is validated
    against Role::REQUESTABLE — what a piece of content MEANS — rather
    than against every Role. The window's chrome and its state
    (selection, status-bar, mark…) are no longer requestable: a badge
    in the cursor's colour would lie about where the cursor is. A
    non-requestable name degrades to None, exactly as an unknown one
    already did. No WIT bump; the twelve bundled plugins are unaffected.
  • The window's bridge is version 67.

Fixed

  • A lua: key in the window says it is not available. Lua runs in the
    ...
Read more