Get started with LineXinBar: Arch, Debian, Ubuntu, Fedora, NixOS
Try it in a window
You do not have to leave your desktop to see it. With Rust 1.89 or newer and the build dependencies installed, one script builds LineXinBar and opens it as a window inside the session you already have.
git clone https://github.com/Petexy/LineXinBar.git
cd LineXinBar
./scripts/run-nested.sh
The nested desktop gets its own session bus, so the applications you open inside it stay inside it. Closing the window ends it. ./scripts/run-nested.sh 3 opens three virtual displays instead of one, to try the multi-display side.
Build dependencies, for each distribution:
sudo pacman -S --needed rust pkgconf clang wayland libinput seatd systemd-libs libdrm \
mesa libxkbcommon libglvnd libx11 libxcb libxcursor libxi libxkbcommon-x11 \
alsa-lib ffmpeg libpipewire
sudo apt install build-essential pkg-config cargo clang libwayland-dev libinput-dev \
libseat-dev libudev-dev libdrm-dev libgbm-dev libxkbcommon-dev \
libegl1-mesa-dev libx11-dev libxcb1-dev libxcursor-dev libxi-dev \
libxkbcommon-x11-dev libasound2-dev libavcodec-dev libavformat-dev \
libavutil-dev libswscale-dev libpipewire-0.3-dev
On Debian 13, take Rust from rustup: the distribution's own is older than the build needs.
sudo dnf install cargo pkgconf-pkg-config clang wayland-devel libinput-devel \
libseat-devel systemd-devel libdrm-devel mesa-libgbm-devel \
libxkbcommon-devel mesa-libEGL-devel libX11-devel libxcb-devel \
libXcursor-devel libXi-devel libxkbcommon-x11-devel alsa-lib-devel \
ffmpeg-free-devel pipewire-devel
Install a package
Ready-made packages for Arch, Debian and Ubuntu, and Fedora are attached to each release on GitHub. Or build them yourself from the checkout — the recipes are in the repository.
./packaging/build.sh arch -- --syncdeps
Renders a PKGBUILD for the checkout and runs makepkg; the packages land in packaging/out/arch/.
sudo apt install dpkg-dev build-essential pkg-config clang rustup \
libasound2-dev libgbm-dev libavcodec-dev libavformat-dev libavutil-dev \
libswscale-dev libinput-dev libpipewire-0.3-dev libseat-dev libudev-dev \
libxkbcommon-dev
./packaging/build.sh debian
The builder checks for everything first and, if something is missing, names it in one apt install line.
sudo dnf install rpm-build dnf5-plugins git-core
sudo dnf builddep packaging/fedora/lxb-desktop.spec
./packaging/build.sh fedora
Binary and source RPMs are copied to packaging/out/fedora/. A fedora-toolbox container is enough to build in.
nix build path:.#linexinbar # the whole desktop, as one derivation
nix build path:.#lxb-compositor # the compositor alone
The repository is a pinned flake, and nix-build packaging/nix works without flakes.
Install lxb-compositor and lxb-desktop: the compositor, and the shell with its portal, its update coordinator and the session entry.
Start the session
Once the packages are installed, choose LineXinBar from the session list on your login screen, like any other desktop.
From a text console, lxb --shell starts the whole thing; quitting the shell logs you out rather than leaving an empty screen behind. The Console Experience login screen is made to go with it, and hands over to the shell as one continuous picture.
Settings live in ~/.config/lxb/ — mostly written by the shell's own Settings column, all readable and editable by hand.
Optional packages
Three integrations are packages of their own, so a machine that never emulates a console carries none of it. Install one while the session runs and its row appears within seconds.
lxb-retroarchYour own console games through RetroArch, with cores and covers fetched for you.
lxb-heroicYour Epic Games library through Heroic Games Launcher's Flatpak.
lxb-rpcs3PlayStation 3 games through RPCS3, with their films, music and trophies.
Each is version-locked to the shell it was built with. Steam needs no package of its own — only Valve's Steam client.
What it needs
- Linux, with a graphics driver that can drive the displays (DRM/KMS) and a working OpenGL ES driver; a Vulkan driver is used where there is one.
- systemd-logind or seatd, which hands the session its displays and input devices.
- udev, to hear about screens and controllers being plugged in.
- Optional: Xwayland for X11 programs, PipeWire for sound and screen sharing, Flatpak for the integrations, ddcutil for the brightness of external monitors.
Everything about the hardware is discovered as it runs — every display, mode and GPU — so nothing has to be configured for your machine first.
Hardware
LineXinBar is in early development. Testing so far has been mainly on one AMD graphics card driving two displays, plus nested sessions.
Nothing is tied to that hardware — the multi-GPU path exists — but other graphics vendors, handhelds and multi-GPU machines need more people trying them. If you run it on something new, a report of what worked and what did not is one of the most useful things you can send.