XLibre to the rescue?

Thank you! Test XLibre for us! Unfortunately I don’t have spare time to test OM Cooker. Thank you so much.

Is cooker stable enough for production use?

Cooker is the development branch, so it’s not stable by design.

If your paycheck depends on it being reliable, then I would say no, stick with Rock6.0 or ROME. If you can tolerate occasional downtime to figure out bugs with us, then by all means, lend assistance.

1 Like

Alright.
Here is the script that compiles Xlibre and installs it in /usr/local:

#!/bin/bash
# The input driver is almost always required.
INPUT_DRIVER_URL="https://github.com/X11Libre/xf86-input-libinput.git"

# !!! IMPORTANT: EDIT THE LINE BELOW BASED ON YOUR HARDWARE !!!
# Find the correct URL from the XLibre README. I have provided common examples.
#
# For AMD:
# VIDEO_DRIVER_URL="https://github.com/X11Libre/xf86-video-amdgpu.git"
#
# For Intel:
# VIDEO_DRIVER_URL="https://github.com/X11Libre/xf86-video-intel.git"
#
# For NVIDIA (Open Source):
# VIDEO_DRIVER_URL="https://github.com/X11Libre/xf86-video-nouveau.git"

VIDEO_DRIVER='amdgpu'
VIDEO_DRIVER_URL="https://github.com/X11Libre/xf86-video-$VIDEO_DRIVER" # <-- PASTE THE CORRECT URL FOR YOUR VIDEO CARD HERE

VERSION='25.0.0.8'
EXTENSION_ARCHIVE='tar.gz'
URL_SOURCE="https://codeload.github.com/X11Libre/xserver/tar.gz/refs/tags/xlibre-xserver-$VERSION"
FILE_SOURCE="./source.$EXTENSION_ARCHIVE"
FOLDER_SOURCE="xserver-xlibre-xserver-$VERSION"
COMPILE_PATH="/tmp"

# --- DRIVER DEFINITIONS ---
# The input driver is almost always required.
INPUT_DRIVER_URL="https://github.com/X11Libre/xf86-input-libinput.git"

# !!! IMPORTANT: EDIT THE LINE BELOW BASED ON YOUR HARDWARE !!!
# Find the correct URL from the XLibre README. I have provided common examples.
#
# For AMD:
# VIDEO_DRIVER_URL="https://github.com/X11Libre/xf86-video-amdgpu.git"
#
# For Intel:
# VIDEO_DRIVER_URL="https://github.com/X11Libre/xf86-video-intel.git"
#
# For NVIDIA (Open Source):
# VIDEO_DRIVER_URL="https://github.com/X11Libre/xf86-video-nouveau.git"

VIDEO_DRIVER='amdgpu'
VIDEO_DRIVER_URL="https://github.com/X11Libre/xf86-video-$VIDEO_DRIVER" # <-- PASTE THE CORRECT URL FOR YOUR VIDEO CARD HERE

VERSION='25.0.0.8'
EXTENSION_ARCHIVE='tar.gz'
URL_SOURCE="https://codeload.github.com/X11Libre/xserver/tar.gz/refs/tags/xlibre-xserver-$VERSION"
FILE_SOURCE="./source.$EXTENSION_ARCHIVE"
FOLDER_SOURCE="xserver-xlibre-xserver-$VERSION"
COMPILE_PATH="/tmp"

set -e

echo
echo
echo "IMPORTANT: HAVE YOU EDITED THE SCRIPT TO HAVE CORRECT DEVICE DRIVER URLS AND OTHER PARAMS??"
echo
echo "This script is to compile the drivers for your specific hardware."
echo "The script will now pause. In another terminal, please run the following command:"
echo ""
echo "  lspci -k | grep -A 3 -i vga"
echo ""
echo "Look at the 'Device' line to see if you have AMD, Intel, or NVIDIA."
echo "You will need to edit this script and set the VIDEO_DRIVER_URL variable below."
echo "If you have already edited and saved the script, press Enter to continue, or Ctrl+C to stop if you still need to edit it."
read

sudo dnf clean all
sudo dnf distro-sync --refresh --allowerasing 2>&1 | tee dsync2-log.txt

echo "Will now install required packages. Press Enter to continue or Ctrl+C to stop."
read

sudo dnf install -y \
    git \
    gcc \
    gcc-c++ \
    make \
    autoconf \
    automake \
    libtool \
    pkgconf \
    lib64md-devel \
    x11-server-devel \
    libx11-devel \
    libxkbfile-devel \
    libinput-devel \
    libudev-devel \
    lib64GL-devel \
    lib64gbm-devel \
    mesa-common-devel \
    pixman-devel \
    libepoxy-devel \
    x11-xtrans-devel \
    lib64xcvt-devel \
    lib64xslt-devel \
    lib64xcb-util-devel \
    lib64xshmfence-devel \
    lib64bsd-devel \
    xkbcomp \
    x11-util-macros \
    lib64fontenc-devel \
    lib64selinux-devel \
    lib64audit-devel \
    lib64xcb-util-wm-devel \
    xmlto \
    meson \
    ninja

cd "$COMPILE_PATH"
curl "$URL_SOURCE" -o "$FILE_SOURCE"

echo "Will now download and compile the source code. Press Enter to continue or Ctrl+C to stop."
read

tar -xf "$FILE_SOURCE"
cd "$FOLDER_SOURCE"

rm -rf build

CFLAGS="-O3 -march=native" \
CXXFLAGS="-O3 -march=native" \
    meson setup build \
        --prefix=/usr/local \
        -Ddocs=auto

ninja -C build

# ==============================================================================
# PART 2: INSTALL THE SERVER AND COMPILE DRIVERS
# ==============================================================================

sudo ninja -C build install

sudo chmod u+s /usr/local/bin/Xorg

echo "XLibre server has been installed."

# --- DRIVER COMPILATION FUNCTION ---
# This function will handle compiling and installing a driver for us.

compile_x_driver() {
    DRIVER_URL=$1
    DRIVER_NAME=$(basename "$DRIVER_URL" .git)
    
    echo "--------------------------------------------------"
    echo "Compiling driver: $DRIVER_NAME"
    echo "--------------------------------------------------"
    
    cd "$COMPILE_PATH"
    if [ -d "$DRIVER_NAME" ]; then
        echo "Driver directory already exists. Skipping download."
    else
        git clone "$DRIVER_URL"
    fi
    cd "$DRIVER_NAME"

    # Clean any previous build attempt
    rm -rf build

    # Check if the driver uses Meson or Autotools and compile accordingly
    if [ -f "meson.build" ]; then
        echo "Meson build system detected."
        CFLAGS="-O3 -march=native" \
        CXXFLAGS="-O3 -march=native" \
            meson setup build \
                --prefix=/usr/local
        
        ninja -C build
        sudo ninja -C build install
    else
        echo "Autotools build system detected."
        # Clear old build files if they exist
        if [ -f "Makefile" ]; then
            make distclean
        fi
        
        ./autogen.sh || true

        # --- The Definitive Fix ---
        # 1. Manually query pkg-config with the correct path to get the definitive flags.
        #    This is the command you proved works.
        XORG_CFLAGS_VAL=$(PKG_CONFIG_PATH="/usr/local/lib64/pkgconfig" pkg-config --cflags xorg-server)
        XORG_LIBS_VAL=$(PKG_CONFIG_PATH="/usr/local/lib64/pkgconfig" pkg-config --libs xorg-server)

        # 2. Pass these values directly into the variables the configure script is hardcoded
        #    to look for first. This overrides its internal pkg-config calls.
        XORG_CFLAGS="$XORG_CFLAGS_VAL" \
        XORG_LIBS="$XORG_LIBS_VAL" \
        CFLAGS="-O3 -march=native" \
        CXXFLAGS="-O3 -march=native" \
        ./configure \
            --prefix=/usr/local \
            --with-xorg-module-dir=/usr/local/lib64/xorg/modules
        
        make -j$(nproc)
        sudo make install
    fi
    
    echo "Finished with driver: $DRIVER_NAME"
}

# --- COMPILE THE DRIVERS ---
# Now we call the function for each driver we need.
compile_x_driver "$INPUT_DRIVER_URL"

if [ -n "$VIDEO_DRIVER_URL" ]; then
    compile_x_driver "$VIDEO_DRIVER_URL"
else
    echo "WARNING: VIDEO_DRIVER_URL is not set. Your system may not have a working display driver for XLibre."
fi


# ==============================================================================
# PART 3: CREATE THE LOGIN SESSION
# ==============================================================================

echo "Will now create the necessary session files. Press Enter."
read

# Create the wrapper script that starts Plasma on the XLibre server
sudo tee /usr/local/bin/start-plasma-xlibre.sh > /dev/null <<EOF
#!/bin/sh
# Wrapper to launch a Plasma session with the XLibre server

# Force the dynamic linker to look in /usr/local/lib64 first.
# This ensures all applications in the session use our new XLibre libraries,
# preventing the library conflict crash.
export LD_LIBRARY_PATH="/usr/local/lib64"

# Ensure /usr/local/bin is in the path, so we find Xlibre and its drivers
export PATH="/usr/local/bin:$PATH"

# Use xinit to start the plasma session on the Xlibre server.
# The -- tells xinit that the rest of the line is the server command.
# We now explicitly tell Xorg where to write its log file, solving the final crash.
exec xinit /usr/bin/startplasma-x11 -- /usr/local/bin/Xorg -logfile "$HOME/.local/share/xorg/Xorg.libre.log" :1 vt1 "$@"
EOF

# Make the wrapper script executable
sudo chmod +x /usr/local/bin/start-plasma-xlibre.sh

# Create the .desktop file that the login manager SDDM will see
sudo tee /usr/share/xsessions/plasma-xlibre.desktop > /dev/null <<EOF
[Desktop Entry]
Name=Plasma (XLibre)
Comment=Plasma by KDE on the XLibre server
Exec=/usr/local/bin/start-plasma-xlibre.sh
Type=Application
EOF

# ==============================================================================
# FINAL MESSAGE
# ==============================================================================

echo ""
echo "--------------------------------------------------"
echo "ALL DONE!"
echo "--------------------------------------------------"
echo "The XLibre server and drivers have been compiled and installed."
echo "A new session entry has been created."
echo ""
echo "Please REBOOT your system now."
echo "At the login screen, look for the 'Session' menu (usually in a corner)"
echo "and select 'Plasma (XLibre)' before entering your password."
echo

Problem?
It is only the Xlibre and nothing else.
You can run it then with:

startx xterm -- /usr/local/bin/Xnest :2 -geometry 1280x720 -xkbdir /usr/share/X11/xkb -ac

But it only opens a black screen with a terminal inside it inside your wayland!
Why is that so?
This error:

Process 5107 (konsole) of user 1000 terminated abnormally with signal 6/ABRT, processing...

Basically the entire “nation” of KDE needs to be compiled against Xlibre and installed in /usr/local
AI told me it can take days to figure out and roll.
I give up. For now…

What is a wayland?

4 Likes

Wayland J. Smithers?

3 Likes

As long as we’re talking about Wayland:

https://rumble.com/v6x6kpo-counter-strike-2-switched-to-wayland-for-one-day.html

Gnome 49 is shipping with X11 disabled by default. Rumor is that Gnome 50 will be wayland only.

1 Like

Gnome = RedHat = IBM = woke corporate slop.

7 Likes

Agreed

1 Like

I tried out Gnome when I was testing Debian and I hated it completely so I switched to XFCE. I had no idea the politics of it at the time. Gnome fought me every step of the way every time I tried to do something.

I switched to Devuan on my super low end laptop with XFCE and I love it. KDE is fine, but XFCE is a joy to use.

4 Likes

Earlier on in this thread, it is mentioned that there are plans to ship the next release of Rock with xLibre. Since KDE is planning to ditch X11 from KWin with the release of Plasma 7, I wonder what desktop environment Rock/xLibre will use? I wonder how long Plasma 6 will be maintained. As far as I know, Plasma 5.27 is still maintained by KDE, so will a version of Plasma 6 be maintained through, say, 2027 or longer?
So many questions!

In the 2010’s I used CDE every week day for 7 years and am not afraid to do so again if need be.

It sounds more like when Plasma7 arrives there just won’t be any new features added to the kwin-x11 session.

Its already feature frozen.
Maintenance/bug fixes will end with Plasma7. Kwin-Wayland will be named kwin.

Ach - this makes me sad.

Xfce is okay I guess but I really don’t want to use gtk - the Gnome accolytes’ design decisions are definitely generated whilst on crack.

Is LXQt any good?

LXQt is good as far as functionality. I haven’t used it enough to see if I actually like it or if it is as easily customizable as KDE or XFCE.

Gotta love the people at xLibre:

https://rumble.com/v6yue9o-xlibre-trolls-leftists-renames-firstscreenptr-to-masterscreen.html

5 Likes

Does this mean we get to watch smoke and flames coming out of their ears?

Do I need to call the local fire department?

6 Likes