- Saved searches
- Use saved searches to filter your results more quickly
- License
- Almamu/linux-wallpaperengine
- Name already in use
- Sign In Required
- Launching GitHub Desktop
- Launching GitHub Desktop
- Launching Xcode
- Launching Visual Studio Code
- Latest commit
- Git stats
- Files
- README.md
- About
- # Wallpaper Engine on Linux or Mac OS
- # Why we created a free Android app before supporting Linux or Mac OS
- # What about support for iPhones and iPads?
Saved searches
Use saved searches to filter your results more quickly
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.
Wallpaper Engine backgrounds for Linux!
License
Almamu/linux-wallpaperengine
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Sign In Required
Please sign in to use Codespaces.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
…nstead of having an individual switch Signed-off-by: Alexis Maiquez
Git stats
Files
Failed to load latest commit information.
README.md
This is an educational project. Although the project started as a learning exercise on the Irrlicht Engine, it has kind of turned into an OpenGL one instead due to limitations and issues with Irrlicht (most likely caused by my limited experience with graphics programming). As it turns out, working directly with OpenGL is not as hard as I thought. For more information on the project’s license, check LICENSE.
2. What is this project all about?
This project aims to reproduce the background functionality of Wallpaper Engine on Linux systems. Simple as that.
3. What is Wallpaper Engine?
Wallpaper Engine is a software designed by Kristjan Skutta that provides live wallpaper functionality to Windows Systems, allowing its users to animate their own backgrounds and share their own creations. You can find more about it on their Steam page.
4. Compilation requirements
- OpenGL 2.1 support
- CMake
- LZ4
- ZLIB
- SDL
- FFmpeg
- X11 (with libxxf86vm)
- Xrandr
- GLFW3
- GLM
- GLEW
- GLUT
- FreeImage
- MPV
- PulseAudio
sudo apt-get update sudo apt-get install build-essential cmake libxrandr-dev libfreeimage-dev libxinerama-dev libxcursor-dev libxi-dev libgl-dev libglew-dev freeglut3-dev libsdl2-dev liblz4-dev libavcodec-dev libavformat-dev libavutil-dev libswscale-dev libxxf86vm-dev libglm-dev libglfw3-dev libmpv-dev mpv libmpv1 libpulse-dev libpulse0
In order to properly use this software you’ll need to own an actual copy of the Windows version of Wallpaper Engine (which you can buy on the Steam Page), as it contains some basic assets on which most of the backgrounds are based on.
The only way to get those assets is to install the Windows version through Steam. Luckily you don’t really need a Windows installation for that. Using the Linux Steam client is enough to download the files we need. Note you may need to check «Enable Steam Play for all other titles» in the Steam Play section of Steam’s settings if you haven’t already. Also note that the software cannot actually be launched through Steam Play (Proton), but the setting is required for Steam to download the software.
The automatic way doesn’t require anything extra, as long as Wallpaper Engine is installed in Steam the software should automatically detect where the assets are.
5.2.1. Extracting the assets manually
In the off-case where the software doesn’t automatically detect the correct path, the assets can be extracted manually. Once Wallpaper Engine is downloaded, open the installation folder (Right-Click the application in Steam -> Manage -> Browse local files). Here you’ll see the main folders of Wallpaper Engine. The folder we’re interested in is the one named «assets».
The assets folder itself must be copied to the same folder where the binary lives.
You can also clone the repository using git like this:
git clone git@github.com:Almamu/linux-wallpaperengine.git
Or using the HTTPS method if you haven’t set up SSH:
https://github.com/Almamu/linux-wallpaperengine.git
The project is built on CMake as the build engine. First we need to create the directory where the build will be stored and get into it:
Once the folder is created and we’re in it, CMake has to generate the actual Makefiles. This can be done this way:
Take a closer look at the CMake output, if you miss any library, CMake will report the missing libraries so you can install them either trough your package manager or manually in your system.
Finally we can compile the project to generate the actual executable.
REMEMBER: The assets folder has to be in the same folder as the executable
5.5.1. Running a background from Steam
Just like with the assets, the software can automatically detect where the subscribed backgrounds are stored. To get started, search in the workshop for whatever background you want to use and click the «+Subscribe» button. This should download the background in the steam directory.
To actually use the background you’ll need to know the workshop’s ID. This can be obtained right-clicking anywhere in the background’s page -> «Copy Page URL». You can paste this URL anywhere, it will look something like this:
https://steamcommunity.com/sharedfiles/filedetails/?id=1845706469&searchtext=portal+3
Where 1845706469 is the wallpaper’s ID. You can use this ID to run wallpaperengine:
./linux-wallpaperengine 1845706469
5.5.2. Running a background in a different folder
For the situations where the software cannot detect where the backgrounds are stored, you can specify a full path to it, like so:
./linux-wallpaperengine /home/almamu/Development/backgrounds/1845706469/
5.5.2. Running in a window (Default)
By default the app will load the backgrounds in a window so you can preview them:
./linux-wallpaperengine /home/almamu/Development/backgrounds/1845706469/
Where /home/almamu/Development/backgrounds/1845706469/ is the background’s path.
5.5.3. Running as a screen’s background
Only screens configured with the XRandr extension are supported. To specify the screen names (as reported from xrandr tool) just use the —screen-root switch. You can specify multiple screens at the same time, for example:
IMPORTANT: Right now this doesn’t work if there is anything drawing to the background (like a compositor, gnome, kde, nautilus, etc)
./linux-wallpaperengine --screen-root HDMI-1 --screen-root DVI-D-1 /home/almamu/Development/backgrounds/1845706469/
To reduce the performance hit to your system you can reduce (or increase) the FPS limit with the switch —fps , especially useful for laptops:
./linux-wallpaperengine --fps 30
It’s possible to disable the audio of the background with the silent argument
./linux-wallpaperengine --silent
It is possible to take a screenshot of the screen’s content at the moment a background is loaded up and rendered. Useful for tools like pywal to further customize your environment:
./linux-wallpaperengine --screenshot /path/to/screenshot/name.png
PNG, BMP and JPEG are supported.
Some backgrounds have a list of properties that the user can customize. These properties modify how parts of the background behave or look like. Support for these is present. First, list all the available properties in a background, you can do that with the —list-properties switch:
./linux-wallpaperengine --list-properties 2370927443
The output includes all the relevant information for each of the different properties:
barcount - slider Description: Bar Count Value: 64 Minimum value: 16 Maximum value: 64 Step: 1 bloom - boolean Description: Bloom Value: 0 frequency - combolist Description: Frequency Value: 2 Posible values: 16 -> 1 32 -> 2 64 -> 3 owl - boolean Description: Owl Value: 0 rain - boolean Description: Rain Value: 1 schemecolor - color Description: ui_browse_properties_scheme_color R: 0.14902 G: 0.23137 B: 0.4 A: 1 visualizer - boolean Description:
Add Visualizer
Value: 1 visualizercolor - color Description: Bar Color R: 0.12549 G: 0.215686 B: 0.352941 A: 1 visualizeropacity - slider Description: Bar Opacity Value: 1 Minimum value: 0 Maximum value: 1 Step: 0.1 visualizerwidth - slider Description: Bar Spacing Value: 0.25 Minimum value: 0 Maximum value: 0.5 Step: 0.01
Any of these values can be modified with the —set-property switch. Say you want to enable the bloom in this background, you would do so like this:
./linux-wallpaperengine --set-property bloom=1 2370927443
If you keep —list-properties in the commandline you can see how the values change to confirm that it applied properly.
This was the first background to even be compatible with the software. And it’s not 100% compatible yet. Both textures and shaders are properly loaded, but there are still particles missing.
In similar fashion to the example background, this one represents the progress of the program. It leverages FBOs (targets), and multiple-effects over objects.
- RePKG for the information on texture flags
- RenderDoc for the so helpful OpenGL debugging tool that simplified finding issues on the new OpenGL code. Seriously this tool ROCKS
About
Wallpaper Engine backgrounds for Linux!
# Wallpaper Engine on Linux or Mac OS
Wallpaper Engine is currently available for Windows and Android and there are no immediate plans to support other platforms at this time.
We definitely understand that users may want us to support other operating systems that they personally prefer, but it is really not a simple task to make Wallpaper Engine available on every possible platform. The core of Wallpaper Engine is a completely custom written software solution and the amount of work involved to fully port it to other platforms is enormous.
Some users might wonder how some games and applications have been seemingly easily ported to Mac and Linux by their developers: The answer to that is that these titles are based on widely used video game engines like Unity or Unreal Engine which do not require the individual developers to do anything significant to add support for more platforms. However, none of this applies when it comes to a custom application like Wallpaper Engine — since it’s an application which interacts closely with the operating system, it really needs to be tailored to each specific operating system to make it work properly. In the case of Linux, it goes even further and must be made to work with every popular display manager which differ significantly between distributions.
The situation is simply that it’s not economically viable for us to add support for Linux or Mac OS at this time. If you take a look at the Steam hardware survey
, you can see that less than 1% of Steam users use Linux. And again, this is split up even further into different distributions of Linux, mostly Ubuntu which comes in at a mere 0.25% of users.
As explained above, the time needed to port Wallpaper Engine to another operating system is immense and it will also increase the costs of on-going maintenance work significantly, while the possible user group benefiting of the large amount of time we would spend on this is comparatively very tiny. We should focus our time and energy on updates and platforms that benefit the most people, like the 96% of Steam users who use Windows.
Yet we are always keeping a close eye on the official Steam statistics and if the situation on Steam changes we are definitely open to look into figuring out how we could support more platforms in the future if it becomes viable.
# Why we created a free Android app before supporting Linux or Mac OS
A lot of our existing users use Android devices, far more than who use Linux or Mac OS devices. This is why supporting Android was the only rational next step when it comes to adding support for more platforms. By creating a free Android app as a new feature, we think we created a large improvement for the a vast number of our users.
Part of the work that went into the Android port can also be reused for Linux and OSX at a later point in time, slightly reducing the big hurdles we face supporting those operating systems. While creating the Android companion app was already a huge task for us, it was still significantly more achievable than a Linux or OSX port, where the full browsing and editing experience needs to be supported as well.
# What about support for iPhones and iPads?
Apple’s mobile operating system iOS currently does not support real dynamic live wallpapers like Android does. The possibilities for live wallpapers on iOS are very limiting since iOS does not allow for true live wallpapers. There is some limited support for very basic short animated wallpapers in the form of Live Photos but the format is very restrictive and the vast majority of Wallpaper Engine wallpapers aren’t really compatible with it in a way that we deem acceptable.