‹ Start screenDevelop

Develop LineXinBar: documentation, source code, translations

Documentation

The full user and developer reference lives beside the code, in docs/. Every guide:

How it is built

Two programs, both in Rust: lxb, a small Wayland compositor built on Smithay, and lxb-desktop, the shell, drawn on the GPU with wgpu.

  • The compositor drives the displays through DRM/KMS itself — every connector a real output with its own swapchain and its own vblank-driven loop — or runs nested in a window for development. It runs X11 programs through a private Xwayland.
  • The shell is a layer-shell client, so it also runs on other compositors that implement layer-shell. It talks to the compositor over one private protocol, lxb_shell_v1, which only the session's own programs may use.
  • The look is computed, not painted. The wallpaper is one analytic function of where you look, evaluated per pixel; every mark is a white silhouette measured into a distance field and stood up as a bead of water by the shader. This website runs ports of the same two shaders.
  • Around them: lxb-portal for screen sharing, file dialogs and the rest of the desktop portal; lxb-updates, the update coordinator; and the optional helpers for RetroArch, Heroic and RPCS3.

Translations

Every word the shell shows comes from a Fluent catalog, in ten languages: German, British and American English, Spanish, French, Hindi, Polish, Brazilian Portuguese, Russian and Simplified Chinese.

The catalogs are plain text files in crates/lxb-desktop/locales/. Correcting a translation is editing a line; a new language is a new catalog, and the tests check that every catalog carries the same messages with the same arguments. The login screen and the sibling applications have catalogs of their own in the same form.

Report a bug

Open an issue on GitHub, and include the four things that make a problem reproducible:

  • your distribution and its version;
  • your graphics card and driver;
  • how you started LineXinBar — from the login screen, lxb --shell on a console, or nested;
  • the logs around the moment it went wrong — journalctl --user -b for a session, or the terminal output of a nested run.

A controller problem is easier to chase with the pad's make and model, and whether it is plugged in or over Bluetooth.

Contribute

Bug reports, hardware testing, translations and code are all welcome.

  • Hardware testing matters most right now: other graphics vendors, handhelds, several GPUs, unusual displays and controllers.
  • Translations: correct what reads wrong in your language, or add one.
  • Code: the build is cargo build --release --locked, the tests are cargo test, and the nested session is the way to see a change working.

Licence

LineXinBar is free software, licensed under the GNU General Public License, version 3 only.

The bundled Roboto and Roboto Mono fonts are under their own open licences, as are the Noto faces the shell carries for Hindi and Chinese and the Bibata cursor theme. This website is part of the repository and under the same licence.