Skip to content

jmartinWestern/arexibo

 
 

Repository files navigation

Arexibo

Logo

Arexibo is an unofficial alternate Digital Signage Player for Xibo, implemented mostly in Rust but making use of Qt GUI components, for Linux platforms.

It is currently still incomplete. Don't expect more complex features to work unless tested.

Installation

Building from Source

Currently, no binary builds are provided.

To build from source, you need:

  • The Rust toolchain, version >= 1.75. Refer to https://rustup.rs/ for the easiest way to install, if the Linux distribution provided package is too old.

  • CMake and a C++ compiler.

  • Qt 6 with the QtWebEngine component and its development headers.

  • Development headers for dbus (>= 1.6), zeromq (>= 4.1) as well as pkg-config.

To build, run:

$ cargo build --release

The binary is placed in target/release/arexibo and can be run from there.

To install, run:

$ cargo install --path . --root /usr

The will install the binary to /usr/bin/arexibo. It requires no other files at runtime, except for the system libraries it is linked against.

Builds have been tested with the available dependency library versions on Fedora 41, RHEL 9 with EPEL and Ubuntu 24.04. Note that in order to play some media like mp4 videos, you will require a ffmpeg package that includes some codecs that RHEL/Fedora don't include in their packages, e.g. from rpmfusion.org.

For RHEL derived distributions, install cmake gcc-c++ cargo dbus-devel zeromq-devel qt6-qtwebengine-devel. For Debian derived, install cmake g++ cargo libdbus-1-dev libzmq3-dev qt6-webengine-dev.

Using Nix/NixOS

A Nix flake is provided for easy building and installation:

# Build the package
nix build

# Run directly
nix run

# Install to profile
nix profile install

For NixOS users, a complete system module is available. See nixos-module.md and nixos-example.md for detailed configuration examples.

To use in your NixOS configuration:

{
  inputs.arexibo.url = "github:birkenfeld/arexibo";  # or local path
  
  outputs = { nixpkgs, arexibo, ... }: {
    nixosConfigurations.myhost = nixpkgs.lib.nixosSystem {
      modules = [
        arexibo.nixosModules.default
        {
          services.arexibo = {
            enable = true;
            host = "https://your-cms.example.com/";
            key = "your-display-key";
          };
        }
      ];
    };
  };
}

Usage

Create a new directory where Arexibo can store configuration and media files. Then, at first start, use the following command line to configure the player:

arexibo --host <https://my.cms/> --key <key> <dir>

Further configuration options are --display-id (which is normally auto-generated from machine characteristics) and --proxy (if needed).

Arexibo will cache the configuration in the directory, so that in the future you only need to start with

arexibo <dir>

Log messages are printed to stdout. The GUI window will only show up once the display is authorized.

Standalone setup with X server

The following example systemd service file shows how to to start an X server with Arexibo and no DPMS/screensaver:

[Unit]
Description=Start X with Arexibo player
After=network-online.target
Requires=network-online.target

[Service]
Type=simple
ExecStart=/usr/bin/xinit /usr/bin/arexibo /home/xibo/env -- :0 vt2 -s 0 -v -dpms
User=xibo
Restart=always
RestartSec=60
Environment=NO_AT_BRIDGE=1

[Install]
WantedBy=multi-user.target

About

A Rust Linux Xibo player (flake.nix)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 80.6%
  • Nix 11.2%
  • C++ 6.9%
  • Other 1.3%