A desktop shell mimicking the look and functionality of the XrossMediaBar dedicated to my cute girlfriend Laura!
Linux
| amd64 | arm64 | |
|---|---|---|
| AppImage | XMB_Shell-x86_64.AppImage | XMB_Shell-aarch64.AppImage |
| Snap package | xmbshell_beta_amd64.snap | xmbshell_beta_arm64.snap |
| Ubuntu 24.04 (.deb) | xmbshell-beta-noble-amd64.deb | xmbshell-beta-noble-arm64.deb |
Windows
| amd64 | |
|---|---|
| portable ZIP | xmbshell-beta-windows.zip |
- Awesome XMB background wave
- Basic file management
- Launch other apps
- Basic image viewer
- WIP video player
Some of the icons made by Laura herself!
First, install the following build-time dependencies:
sudo apt install clang clang-tools cmake ninja-build fonts-ubuntu glslang-tools patch curl wget gettext libglib2.0-bin libvulkan-dev pkg-config libsystemd-dev libsdl2-dev libsdl2-mixer-dev libsdl2-image-dev libglm-dev libspdlog-dev libfreetype-dev libglibmm-2.68-dev libsdbus-c++-dev libboost-dev libavformat-dev libavcodec-dev libavutil-dev libavfilter-dev libswscale-dev libswresample-dev libpostproc-dev libavdevice-dev vulkan-validationlayers
Then clone, configure and build the project:
git clone https://github.com/JnCrMx/xmbshell.git
cmake -G Ninja -DCMAKE_BUILD_TYPE=Debug -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -B build
cmake --build build
glib-compile-schemas schemas/
(This project uses C++20 named modules, so I recommend compiling with a modern Clang and Ninja)
Using CMAKE_BUILD_TYPE=Debug instructs CMake to compile the app in debug mode, which will cause it to automatically load
the Vulkan Validation Layers.
Finally, run the app directly from the build directory using the following command
GSETTINGS_SCHEMA_DIR="$PWD/schemas:$GSETTINGS_SCHEMA_DIR" XMB_ASSET_DIR=. ./build/xmbshell
- OpenXMB, a very cool fork on XMBShell, from which I ported features back to this repository and copied quite a bit of code.
- RetroArch, from which I took the XMB wave shader.
- i18n++ for internationalization (forked with some fixes here)
- sdbus-c++ for D-Bus integration
- argparse for argument parsing
- AvCpp and FFmpeg for video decoding
- glibmm for GSetting and desktop integration
- Vulkan-Hpp for C++ Vulkan bindings
- spdlog for easy and pretty logging
- SDL2 for (controller) input and window system integration
- FreeType for font rendering
- glm for vector and matrix math operations
- VulkanMemoryAllocator-Hpp and VulkanMemoryAllocator for easy and efficient Vulkan memory allocations
XMBShell, a console-like desktop shell Copyright (C) 2025 - JCM
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.