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-portalfor 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 --shellon a console, or nested; - the logs around the moment it went wrong —
journalctl --user -bfor 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 arecargo test, and the nested session is the way to see a change working.
License
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 licenses, 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 license.