Skip to content

Releases: nikitapn/LavaUI

LavaUI v1.4.0

Choose a tag to compare

@nikitapn nikitapn released this 25 Oct 15:56

52 commits since v1.3.0.

New apps

  • LavaPass, a KeePass vault manager: KDBX vaults, attachments, a
    scrollable Notes editor, recent vaults on the start page and in a menu.

Desktop

  • The panel replaces nm-applet and blueman: a native network applet and
    NetworkManager secret agent (VPN plugins' own dialogs included), and a
    Bluetooth applet with a pairing agent — battery levels, search while
    "Add a device" is open, pairing that trusts and connects.
  • The sound window switches outputs and inputs and sets per-app volume.
  • The calendar opens a year view from the month title, with ISO weeks.
  • The player window's transport buttons are drawn, not glyphs.
  • With nothing focused the bar offers Desktop, Go, Workspaces and Help
    (Keyboard Shortcuts) instead of the Lava menu alone.
  • No flash of the fallback menu while an app's own menu loads.
  • Glass on menus and every popup: frosted, refracted, with a lit rim.
  • LavaLauncher has a new style.

Settings

  • Network: link details, saved profiles, IPv4 and DNS, VPN import.
  • Bluetooth: this computer's name and visibility; paired devices renamed,
    trusted, blocked or forgotten; search and pair.
  • Mouse & Touchpad: speed, acceleration, natural scrolling, tap to click,
    scroll and click method, ignore while typing, and smooth scrolling.
    Applied by the compositor per libinput device, from [mouse]/[touchpad].
  • LavaSettings --section <name> opens a page.

LavaExplorer

  • FTP, FTPS and SFTP servers, with New Folder, Rename and Delete on them.
  • Profiles, favourites, and tabs that persist across launches.
  • Device mounting through UDisks, default applications honoured, icons
    for folders, files, places and the toolbar.
  • One explorer per session: LavaExplorer <path> opens a tab in the
    running one instead of a second window.

Compositor

  • Client frames are drawn once per output frame rather than on arrival,
    and paced frames keep what a presented frame committed.
  • Frost: copied without blocking the loop, recaptured only where something
    changed, rendered only over the plates' rectangle.
  • A hover fade no longer freezes under a presenting client.
  • lavactl workspace [n] and lavactl desktop.

LavaUI

  • .glassEffect() (refraction, a lit rim, optional frost) and
    .backdropBlur frosting the desktop from any view.
  • Tooltips, with a placement.
  • Popups can hang off popups.
  • A text field slides its row to keep the caret in view.
  • A Text's box is its glyphs: the implicit text margin is gone, so a
    cramped layout may need explicit padding.
  • Three ways a long-lived window grew its heap forever are fixed.
  • Chevron and TransportMark are public.

Compatibility

  • New IDL calls: SetBackdropGlassRegions, SetBackdropFrost,
    GetPointer, SetPointer, SwitchWorkspace, ToggleShowDesktop, and a
    field added to a message. Method indices are positional: rebuild clients
    and compositor together.
  • New dependencies: libnm, libssh2, libsecret, libcurl, udisks2, zlib,
    perl-file-mimeinfo on Arch (Debian and Arch lists updated); libinput is
    optional for the compositor.

LavaUI v1.3.0

Choose a tag to compare

@nikitapn nikitapn released this 14 Oct 20:41

LavaUI v1.3.0

43 commits since v1.2.0.

New apps

  • LavaPlayer, a video player on libmpv. mpv renders into dma-bufs on the
    compositor's GPU through an EGL bridge, sampled with no CPU copy
    (software frames where that path will not come up). Keyframe seeks while
    dragging, exact on release; a floating fullscreen bar that hides with the
    pointer; subtitle and audio track buttons; external subtitle files.
  • LavaPDF, a PDF reader over poppler. Tiles at the exact zoom, uploaded
    through the new pixel arena; select across pages, copy, find; the outline
    in a sidebar; links (pages, and http/https/mailto only); password-locked
    documents. Resizing keeps a fit-width page still and no longer piles up
    tiles at every size it passed through.
  • lava-index, a per-user file index daemon (SQLite FTS5, inotify, mount
    aware, systemd user unit), and LavaFind, file search over it, frosted
    over the desktop. Settings gains a Search page for its folders (Mod+S);
    LavaView and LavaExplorer report opened files to it.

Desktop

  • The panel adds a Window menu to every focused window's global menu:
    Always on Top, Center on Screen, Close (also lavactl pin|center|close).
  • Apps' first menu names the app rather than "Lava...".
  • Global menu hears layout updates, and the window stays focused under its
    menu.
  • A hardware cursor on an NVIDIA-wired output of a hybrid laptop, and no
    software cursor blurred into frost or CaptureScreen pictures.
  • Canvas waits for the compositor's reads before redrawing a shared buffer
  • Canvas waits for the compositor's reads before redrawing a shared buffer
    (RADV ignored the implicit fences), and writes the blur slot before
    recording rather than between segments.

LavaUI

  • .onHover for a view and everything in it; CursorShape.hidden.
  • Canvas(onPointerMove:): the cursor can depend on where the pointer is.
  • Wheel events carry held modifiers; KeyCode.f1...f12.
  • FileDialog.openFolder.
  • FocusManager gives focus back when the focused node leaves the tree.
  • What the first frame raises is kept; FrameTasks run after a frame, not
    after a frame held for its consumer.

Compatibility

  • New IDL calls: SetAlwaysOnTop, CenterWindow, CloseWindow, the pixel
    arena (AttachPixelArena, UploadPixels, ...) and video buffers
    (GetVideoTarget, AttachVideoBuffer, ShowVideoBuffer, ...). Method
    indices are positional: rebuild clients and compositor together.
  • New dependencies: poppler-cpp, poppler-glib and libmpv (Debian and Arch
    lists updated).

v1.2.0

Choose a tag to compare

@nikitapn nikitapn released this 10 Oct 20:44

LavaUI v1.2.0

24 commits since v1.1.1.

Desktop

  • Lava surfaces are damaged per 32 px tile instead of whole, so a caret
    blink or a clock no longer recomposites the window. Frost refreshes only
    for paints behind a frosted window. LAVA_FULL_DAMAGE=1 for the old path.
  • Idle clients stop polling: no 50 ms lease watch, heartbeats only from the
    supervised panel and dock, and GLib is pumped when the bus delivers
    rather than on a timer (panel ~48 -> 6 wakeups/s, LavaTerm ~58 -> 11).
  • Images are decoded off the compositor's loop (Compositor.GetImages): a
    24-megapixel JPEG stalled every window for 609 ms, now 70-100 ms.
  • The launcher and the switcher open maximized, which fixes the dimmed ring
    and rounded corner the launcher's drop shadow drew around it. New IDL
    call SetMaximized.
  • LavaShot opens fullscreen instead of jumping to it, and labels keep the
    keyboard.
  • LavaDebug is packaged as a desktop app, with an icon.
  • The app list finds Flatpak desktop entries.

LavaExplorer

  • Extract Here, Compress... (zip, tar.*, 7z; AES-256 zip passwords),
    locked zips, double-click to extract, Cancel. New LavaArchive target
    over libarchive.
  • Folders refresh themselves through inotify.
  • Listing from lstat: 100,000 files 50.9 s -> 255 ms.
  • Thumbnails from the freedesktop cache, an icon view, and each folder's
    view remembered between launches.

LavaUI

  • TextField(secure:).
  • ScrollView(indicatorInset:) keeps the bar clear of a rounded
    container's corners.
  • Centred and trailing wrapped labels align each row, not the block.

Compatibility

  • LavaClient.open(fillScreen:) takes ScreenFill?: .maximized (was
    true) or .output.
  • SetMaximized renumbers the IDL methods after it: rebuild clients and
    compositor together.
  • liburing and OpenSSL are dropped from the dependency lists.