Coder Social home page Coder Social logo

almamu / linux-wallpaperengine Goto Github PK

View Code? Open in Web Editor NEW
1.6K 25.0 60.0 11.64 MB

Wallpaper Engine backgrounds for Linux!

License: GNU General Public License v3.0

CMake 5.88% C++ 93.99% C 0.01% Shell 0.12%
linux opengl wallpaper-app wallpaper-engine

linux-wallpaperengine's Introduction

help wanted

1. Disclaimer

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

linux-wallpaperengine

  • OpenGL 2.1 support
  • CMake
  • LZ4
  • ZLIB
  • SDL
  • FFmpeg
  • X11 (with libxxf86vm)
  • Xrandr
  • GLFW3
  • GLM
  • GLEW
  • GLUT
  • FreeImage
  • MPV
  • PulseAudio

Commands

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

5. How to use

5.1. Pre-requirements

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.

5.2. Extracting the assets

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".

folder

The assets folder itself must be copied to the same folder where the binary lives.

5.3. Getting the sources

You can download a zipped version of the repository here: https://github.com/Almamu/linux-wallpaperengine/archive/refs/heads/main.zip

You can also clone the repository using git like this:

git clone [email protected]:Almamu/linux-wallpaperengine.git

Or using the HTTPS method if you haven't set up SSH:

https://github.com/Almamu/linux-wallpaperengine.git

5.4. Compilation steps

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:

mkdir build
cd build

Once the folder is created and we're in it, CMake has to generate the actual Makefiles. This can be done this way:

cmake ..

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.

make

REMEMBER: The assets folder has to be in the same folder as the executable

5.5. Running a background

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

The app supports running as background in X11 and Wayland. Use the --screen-root switch and the screen name, like so:

./linux-wallpaperengine --screen-root HDMI-1 --screen-root DVI-D-1 1845706469

Wayland

Has only been tested under wlroots but should work on any flavour as long as wlr-layer-shell-unstable is supported.

X11

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)

5.5.4. Limiting FPS

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

5.6. Audio

5.6.1. Disable audio

It's possible to disable the audio of the background with the silent argument

./linux-wallpaperengine --silent

5.7. Taking a screenshot

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.

5.8. Properties

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: <hr>Add Visualizer<hr>
	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.

6. Example background

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.

example

1845706469

In similar fashion to the example background, this one represents the progress of the program. It leverages FBOs (targets), and multiple-effects over objects.

example2

7. Special thanks

  • 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

linux-wallpaperengine's People

Contributors

almamu avatar barbosart avatar doubletimedan avatar hynak avatar icecryptonym avatar knightpp avatar m3t4f1v3 avatar mihawk90 avatar nphantasm avatar pasalc avatar trainzkid avatar vaxerski avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

linux-wallpaperengine's Issues

Implement support for different compositors/Desktop Environments

Right now if compton is running as compositor and the screen-root mode is enabled the background will be rendered over everything compton displays, so this makes the app effectively useless. Look into the specifics to make sure we draw things the way compton likes, this might even fix compatibility with other compositors (?).

I Follow The Compilation Steps but ./wallengine Never Gets Made

Describe the bug
Doesnt Produce wallengine File When Compiling, Rendering the project useless
Ive been at this for a week lol, cant figure it out :/

To Reproduce
Steps to reproduce the behavior:

  1. Make Build dir (in home dir)

  2. Extract Files from /linux-wallpaperengine-master/ to build dir

  3. move assets.zip to build dir

  4. cmake ..

  5. Term Output

  6. {

  7. CMake Warning (dev) in CMakeLists.txt:
    No project() command is present. The top-level CMakeLists.txt file must
    contain a literal, direct call to the project() command. Add a line of
    code such as

    project(ProjectName)

near the top of the file, but after cmake_minimum_required().

CMake is pretending there is a "project(Project)" command on the first
line.
This warning is for project developers. Use -Wno-dev to suppress it.

-- The C compiler identification is GNU 9.3.0
-- The CXX compiler identification is GNU 9.3.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: /home/bingus/build

  1. } (hehe bingus lol)

10.(in term) make
11.output is nothing
bingus@bingus-Aspire-ES1-512:/build$ make (i dont know why when previewing its crossed it out :| )
bingus@bingus-Aspire-ES1-512:
/build$ (same here)

  1. i looked into Cmakelists.txt and its should produce wallengine but, it makes everything but that.
  2. Build, Terminal and Scene Screenshot
    Screenshot_20210712_063824

Here is a Zip of My Entire Build Dir
https://mega.nz/file/hHxXGQxD#5sYcE2RZtGCPoNvnpG8LzfHuAT75AaS7IXQPkZ9Hrzs

Expected behavior
Produce a "wallengine" File in Build Dir

(please complete the following information):

  • OS: Ubuntu 20.04.2 LTS x86_64

Sorry if im Stupid and this is actually working. but i cant seem the figure it out.

Implement audio processing support

Shaders can receive information of the current audio being played by the background (and maybe system itself?) so providing a mechanism to give this information to the shaders code is a must. There's specific variables being used for this. Issue #31 is a good starting point on this.

[BUG] Do not work from the store

Don't run wallpapers from the store, but only those that you made yourself.
Error in logs:
Irrlicht Engine version 1.8.4 Linux 5.6.19-2-MANJARO #1 SMP PREEMPT Wed Jun 17 22:24:52 UTC 2020 x86_64 Using renderer: OpenGL 4.3 NV134: nouveau OpenGL driver version is 1.2 or better. GLSL version: 4.3 terminate called after throwing an instance of 'nlohmann::detail::parse_error' what(): [json.exception.parse_error.101] parse error at 1: syntax error - unexpected end of input; expected '[', '{', or a literal Aborted (core dumped)
Also, even my wallpapers are not shown on the desktop If I don't use --screen-root DVI-D-1 it opens in a window, but if I use it it doesn't open at all.

  • OS: Arch Linux Monjaro

Cmake build error

When I try to build wallpaper engine I get the following output in the terminal

dylan@pop-os:~/Downloads/linux-wallpaperengine-master/build$ make
Scanning dependencies of target wallengine
[ 4%] Building CXX object CMakeFiles/wallengine.dir/main.cpp.o
[ 9%] Building CXX object CMakeFiles/wallengine.dir/wallpaperengine/shaders/compiler.cpp.o
[ 14%] Building CXX object CMakeFiles/wallengine.dir/wallpaperengine/project.cpp.o
[ 19%] Building CXX object CMakeFiles/wallengine.dir/wallpaperengine/scene.cpp.o
[ 23%] Building CXX object CMakeFiles/wallengine.dir/wallpaperengine/object.cpp.o
[ 28%] Building CXX object CMakeFiles/wallengine.dir/wallpaperengine/camera.cpp.o
[ 33%] Building CXX object CMakeFiles/wallengine.dir/wallpaperengine/core.cpp.o
[ 38%] Building CXX object CMakeFiles/wallengine.dir/wallpaperengine/image.cpp.o
[ 42%] Building CXX object CMakeFiles/wallengine.dir/wallpaperengine/object3d.cpp.o
[ 47%] Building CXX object CMakeFiles/wallengine.dir/wallpaperengine/effect.cpp.o
[ 52%] Building CXX object CMakeFiles/wallengine.dir/wallpaperengine/fs/utils.cpp.o
[ 57%] Building CXX object CMakeFiles/wallengine.dir/wallpaperengine/irrlicht.cpp.o
[ 61%] Building CXX object CMakeFiles/wallengine.dir/wallpaperengine/video/renderer.cpp.o
[ 66%] Building CXX object CMakeFiles/wallengine.dir/wallpaperengine/video/node.cpp.o
[ 71%] Building CXX object CMakeFiles/wallengine.dir/wallpaperengine/video/material.cpp.o
[ 76%] Building CXX object CMakeFiles/wallengine.dir/wallpaperengine/texture.cpp.o
[ 80%] Building CXX object CMakeFiles/wallengine.dir/wallpaperengine/irr/CImageLoaderTEX.cpp.o
[ 85%] Building CXX object CMakeFiles/wallengine.dir/wallpaperengine/irr/CPkgReader.cpp.o
[ 90%] Building CXX object CMakeFiles/wallengine.dir/wallpaperengine/irr/CFileList.cpp.o
[ 95%] Building CXX object CMakeFiles/wallengine.dir/wallpaperengine/sound.cpp.o
/home/dylan/Downloads/linux-wallpaperengine-master/wallpaperengine/sound.cpp: In member function ‘void wp::sound::play()’:
/home/dylan/Downloads/linux-wallpaperengine-master/wallpaperengine/sound.cpp:41:45: error: too few arguments to function ‘Mix_Music* Mix_LoadMUS_RW(SDL_RWops*, int)’
41 | music = Mix_LoadMUS_RW (sdlRwops);
| ^
In file included from /home/dylan/Downloads/linux-wallpaperengine-master/wallpaperengine/sound.cpp:6:
/usr/include/SDL2/SDL_mixer.h:170:37: note: declared here
170 | extern DECLSPEC Mix_Music * SDLCALL Mix_LoadMUS_RW(SDL_RWops *src, int freesrc);
| ^~~~~~~~~~~~~~
make[2]: *** [CMakeFiles/wallengine.dir/build.make:310: CMakeFiles/wallengine.dir/wallpaperengine/sound.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:76: CMakeFiles/wallengine.dir/all] Error 2
make: *** [Makefile:84: all] Error 2

I am running on Pop OS 20.04

ERROR PRE-COMPILING SHADER

Hi,

I've managed to build the project and I can run video based wallpapers just fine but can't seem to get any shader based ones to work.

I've tried:
https://steamcommunity.com/sharedfiles/filedetails/?id=1845706469&insideModal=0&requirelogin=1 (Which seems to be the one that should work according to github docs)
https://steamcommunity.com/sharedfiles/filedetails/?id=1281527981

Everything seems to give me the following error:
terminate called after throwing an instance of 'std::runtime_error'
what(): ERROR PRE-COMPILING SHADER
zsh: abort (core dumped) ./wallengine --pkg 1281527981

Currently using GTX 1060 with Nvidia proprietary driver.

[BUG]

Describe the bug
A clear and concise description of what the bug is.

To Reproduce
Steps to reproduce the behavior:

  1. Go to step 5.3
  2. type cmake ..
  3. Scroll down to the error
  4. it says CMake Error: The source directory "/home/someone" does not appear to contain CMakeLists.txt.
    Specify --help for usage, or press the help button on the CMake GUI.

Expected behavior
It should build

(please complete the following information):

  • OS: Linux mint 19
  • X11 server Version: latest
  • Window manager: not sure
  • Version not sure

Optimize video rendering to prevent re-allocations whenever possible

As it is right now, every frame that is being rendered when playing a video is written to a new IImage and ITexture, which basically performs (at least) two allocations of objects, which is suboptimal. A better approach would be to perform these allocations only when render window has changed it's size.

This is part of the discussion about this in PR #14
I'd say the best way to approach this is to expose the "m_isRootWindow" and "m_viewports" in CContext first so on initialization we can create the required textures in case of being displayed as desktop background (the app doesn't support changing screen settings yet) and save them under a std::vector, then the render function can cycle through the textures using an iterator. For window mode we would need to check the viewport's size from the driver and destroy the old texture and create a new one if the size changes inside the render.

This kind of sounds like premature optimization, so more investigation and profiling might be needed before actually performing these changes.

Support multiple effects on one object

Right now the system only supports ONE effect over any object in the scene, this means that backgrounds that apply more than one shader to the same object won't display properly.

Install on fedora 34

I cant manage to install this on Fedora 34. When i run the "cmake .." command i get the following output:

-- Checking for module 'xrandr'
-- Package 'xrandr', required by 'virtual:world', not found
CMake Warning (dev) at /usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:438 (message):
The package name passed to find_package_handle_standard_args (XRANDR)
does not match the name of the calling package (Xrandr). This can lead to
problems in calling code that expects find_package result variables
(e.g., _FOUND) to follow a certain pattern.
Call Stack (most recent call first):
CMakeModules/FindXrandr.cmake:64 (find_package_handle_standard_args)
CMakeLists.txt:10 (find_package)
This warning is for project developers. Use -Wno-dev to suppress it.

CMake Error at /usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
Could NOT find GLUT (missing: GLUT_glut_LIBRARY GLUT_INCLUDE_DIR)
Call Stack (most recent call first):
/usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:594 (_FPHSA_FAILURE_MESSAGE)
/usr/share/cmake/Modules/FindGLUT.cmake:139 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
CMakeLists.txt:12 (find_package)

-- Configuring incomplete, errors occurred!
See also "/home/Ajegon/.linux-wallpaperengine/build/CMakeFiles/CMakeOutput.log".
See also "/home/Ajegon/.linux-wallpaperengine/build/CMakeFiles/CMakeError.log".

I checked wether xrandr was installed, it sure is. Any clue on what the issue could be?

[Help Request] Scene Wallpapers

Describe the Problem
Everytime I try to apply a wallpaper, I get this message:

terminate called after throwing an instance of 'std::runtime_error'
what(): Only scene wallpapers are supported

What are scene wallpapers? Those .mp4 ones?

Thanks for help!

Screenshots
Screenshot_20200822_170103
Screenshot_20200822_170109

(please complete the following information):

  • OS: Manjaro
  • X11 server Version: 1.20.8
  • Window manager: kde (?)
  • Version 20.04.3

Additional context
Add any other context about the problem here.

Cannot initialize SDL audio system

Debian testing

Installed deps including

  • libsdl-mixer1.2
  • libsdl2-2.0-0

Output when I run a background from a directory

Irrlicht Engine version 1.8.4
Linux 5.2.17-rt7 #1 SMP Tue Oct 22 07:22:41 MDT 2019 x86_64
Using renderer: OpenGL 3.1
AMD BARTS (DRM 2.50.0 / 5.2.17-rt7, LLVM 9.0.0): X.Org
OpenGL driver version is 1.2 or better.
GLSL version: 1.4
Cannot initialize SDL audio system

I have also tried running as sudo

terminate called after throwing an instance of 'nlohmann::detail::parse_error' and make dislikes something in the code

when i run wallengine after compiling and trying to use a wallpaper from the steam workshop i get the following output
./wallengine --dir /home/martin/.local/share/Steam/steamapps/workshop/content/431960/2172415034/ Irrlicht Engine version 1.8.4 Linux 5.4.53-1-lts #1 SMP Wed, 22 Jul 2020 20:16:09 +0000 x86_64 Using renderer: OpenGL 4.6.0 GeForce RTX 2080 with Max-Q Design/PCIe/SSE2: NVIDIA Corporation OpenGL driver version is 1.2 or better. GLSL version: 4.6 terminate called after throwing an instance of 'nlohmann::detail::parse_error' what(): [json.exception.parse_error.101] parse error at 1: syntax error - unexpected end of input; expected '[', '{', or a literal [1] 3248 abort (core dumped) ./wallengine --dir

i had just a look in to the json file and i couldn't see what it disliked for me it looked normal (okay it has some katakana in it's text but otherwise looks normal).
the wallpapers project.json as txt-file is attached here: project.txt maybe it is helpful.

I don't know if this has something to do with my problem but, when i compiled it, make complained about the following:
/usr/bin/ld: CMakeFiles/wallengine.dir/wallpaperengine/irr/CImageLoaderTEX.cpp.o: in function 'irr::video::CImageLoaderTex::loadImage(irr::io::IReadFile*) const': CImageLoaderTEX.cpp:(.text+0xd7f): warning: the use of 'tmpnam' is dangerous, better use 'mkstemp'

X Error of failed request: BadMatch

saif@pop-os:~/apps/linux-wallpaperengine/build$ ./wallengine --screen-root eDP-1-1
Found requested screen: eDP-1-1 -> 0x0:1920x1080
Irrlicht Engine version 1.8.4
Linux 5.3.0-18-generic #19-Ubuntu SMP Tue Oct 8 20:14:06 UTC 2019 x86_64
X Error of failed request:  BadMatch (invalid parameter attributes)
  Major opcode of failed request:  152 (GLX)
  Minor opcode of failed request:  31 (X_GLXCreateWindow)
  Serial number of failed request:  26
  Current serial number in output stream:  27

Properly support composite layers and FBOs

As it is right now, any background that uses any of those won't be displayed properly. Support for FBOs and composite layers is needed (any of the textures named _rt_SOMETHING).

[BUG] terminate called after throwing an instance of 'nlohmann::detail::parse_error'

Hey!
When I try to use a background in the wallpaper engine port I'll get an exception.

"terminate called after throwing an instance of 'nlohmann::detail::parse_error'
what(): [json.exception.parse_error.101] parse error at 1: syntax error - unexpected end of input; expected '[', '{', or a literal
Aborted (core dumped)"

It said that something went wrong while parsing the json but the json is alright.
I've tried over 20 backgrounds and everytime I get this error.

I hope you can help me ^^

CMake errors (after Irrlicht removal)

This is continuing from #16, as requested.

I'm currently on 58be464 and I'm getting some CMake errors after preparing all the dependencies. For reference, this is what I currently have:

BuildRequires:  gcc gcc-c++
BuildRequires:  pkg-config
BuildRequires:  cmake >= 3.0
BuildRequires:  lz4-devel
BuildRequires:  zlib-devel
BuildRequires:  SDL-devel
BuildRequires:  SDL_mixer-devel
BuildRequires:  ffmpeg-devel
BuildRequires:  libXrandr-devel
BuildRequires:  glfw >= 3.0
BuildRequires:  glm-devel
BuildRequires:  freeimage-devel

## NOT in Dep List:
BuildRequires:  glew-devel
BuildRequires:  freeglut-devel

As noted the bottom two I had to add after getting some CMake errors still, and it resolved those.

However, now I'm stuck at another error:

Performing C SOURCE FILE Test CMAKE_HAVE_LIBC_PTHREAD failed with the following output:
Change Dir: /builddir/build/BUILD/linux-wallpaperengine-58be46460b2ac3a41ce13bc315ccadb450a4d002/x86_64-redhat-linux-gnu/CMakeFiles/CMakeTmp

Run Build Command(s):/usr/bin/gmake cmTC_f6845/fast && /usr/bin/gmake  -f CMakeFiles/cmTC_f6845.dir/build.make CMakeFiles/cmTC_f6845.dir/build
gmake[1]: Entering directory '/builddir/build/BUILD/linux-wallpaperengine-58be46460b2ac3a41ce13bc315ccadb450a4d002/x86_64-redhat-linux-gnu/CMakeFiles/CMakeTmp'
Building C object CMakeFiles/cmTC_f6845.dir/src.c.o
/usr/bin/gcc -DCMAKE_HAVE_LIBC_PTHREAD  -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1  -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection  -o CMakeFiles/cmTC_f6845.dir/src.c.o -c /builddir/build/BUILD/linux-wallpaperengine-58be46460b2ac3a41ce13bc315ccadb450a4d002/x86_64-redhat-linux-gnu/CMakeFiles/CMakeTmp/src.c
Linking C executable cmTC_f6845
/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_f6845.dir/link.txt --verbose=1
/usr/bin/gcc -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1  -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection  -Wl,-z,relro -Wl,--as-needed  -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld  -rdynamic CMakeFiles/cmTC_f6845.dir/src.c.o -o cmTC_f6845 
/usr/bin/ld: /tmp/cmTC_f6845.iWXAXL.ltrans0.ltrans.o: in function `main':
/builddir/build/BUILD/linux-wallpaperengine-58be46460b2ac3a41ce13bc315ccadb450a4d002/x86_64-redhat-linux-gnu/CMakeFiles/CMakeTmp/src.c:11: undefined reference to `pthread_create'
/usr/bin/ld: /builddir/build/BUILD/linux-wallpaperengine-58be46460b2ac3a41ce13bc315ccadb450a4d002/x86_64-redhat-linux-gnu/CMakeFiles/CMakeTmp/src.c:12: undefined reference to `pthread_detach'
/usr/bin/ld: /builddir/build/BUILD/linux-wallpaperengine-58be46460b2ac3a41ce13bc315ccadb450a4d002/x86_64-redhat-linux-gnu/CMakeFiles/CMakeTmp/src.c:13: undefined reference to `pthread_cancel'
/usr/bin/ld: /builddir/build/BUILD/linux-wallpaperengine-58be46460b2ac3a41ce13bc315ccadb450a4d002/x86_64-redhat-linux-gnu/CMakeFiles/CMakeTmp/src.c:14: undefined reference to `pthread_join'
collect2: error: ld returned 1 exit status
gmake[1]: *** [CMakeFiles/cmTC_f6845.dir/build.make:106: cmTC_f6845] Error 1
gmake[1]: Leaving directory '/builddir/build/BUILD/linux-wallpaperengine-58be46460b2ac3a41ce13bc315ccadb450a4d002/x86_64-redhat-linux-gnu/CMakeFiles/CMakeTmp'
gmake: *** [Makefile:140: cmTC_f6845/fast] Error 2


Source file was:
#include <pthread.h>

static void* test_func(void* data)
{
  return data;
}

int main(void)
{
  pthread_t thread;
  pthread_create(&thread, NULL, test_func, NULL);
  pthread_detach(thread);
  pthread_cancel(thread);
  pthread_join(thread, NULL);
  pthread_atfork(NULL, NULL, NULL);
  pthread_exit(NULL);

  return 0;
}

Determining if the function pthread_create exists in the pthreads failed with the following output:
Change Dir: /builddir/build/BUILD/linux-wallpaperengine-58be46460b2ac3a41ce13bc315ccadb450a4d002/x86_64-redhat-linux-gnu/CMakeFiles/CMakeTmp

Run Build Command(s):/usr/bin/gmake cmTC_abacd/fast && /usr/bin/gmake  -f CMakeFiles/cmTC_abacd.dir/build.make CMakeFiles/cmTC_abacd.dir/build
gmake[1]: Entering directory '/builddir/build/BUILD/linux-wallpaperengine-58be46460b2ac3a41ce13bc315ccadb450a4d002/x86_64-redhat-linux-gnu/CMakeFiles/CMakeTmp'
Building C object CMakeFiles/cmTC_abacd.dir/CheckFunctionExists.c.o
/usr/bin/gcc   -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1  -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -DCHECK_FUNCTION_EXISTS=pthread_create -o CMakeFiles/cmTC_abacd.dir/CheckFunctionExists.c.o -c /usr/share/cmake/Modules/CheckFunctionExists.c
Linking C executable cmTC_abacd
/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_abacd.dir/link.txt --verbose=1
/usr/bin/gcc -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1  -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -DCHECK_FUNCTION_EXISTS=pthread_create -Wl,-z,relro -Wl,--as-needed  -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld  -rdynamic CMakeFiles/cmTC_abacd.dir/CheckFunctionExists.c.o -o cmTC_abacd  -lpthreads 
/usr/bin/ld: cannot find -lpthreads
collect2: error: ld returned 1 exit status
gmake[1]: *** [CMakeFiles/cmTC_abacd.dir/build.make:106: cmTC_abacd] Error 1
gmake[1]: Leaving directory '/builddir/build/BUILD/linux-wallpaperengine-58be46460b2ac3a41ce13bc315ccadb450a4d002/x86_64-redhat-linux-gnu/CMakeFiles/CMakeTmp'
gmake: *** [Makefile:140: cmTC_abacd/fast] Error 2

I googled around a little and found this on StackOverflow, which sounds like the same situation:
https://stackoverflow.com/questions/63985373/cmake-error-undefined-reference-to-pthread-create

But I'm not familiar enough with any of this to make the required changes :D

Help with xrandr

Describe the bug
It says i am missing Xrandr but when i type it lowercase in terminal it works just fine any help?

To Reproduce
Steps to reproduce the behavior:

  1. Go to the directory run cmake .
  2. Scroll down to the error
  3. See error

Expected behavior
it should run cmake

Screenshots
image

(please complete the following information):

  • OS: mint 19
  • X11 server Version: latest
  • Window manager: not sure
  • Version not sure

Support Text objects

Backgrounds can draw text over the backgrounds. Implement support for these. It looks like there's some kind of javascript associated with them so the text can be dynamic. This will need more research, but for starters, normal text should be trivial to support.

For more details try the second background in this bug report:
#28

Cmake failed on Manjaro Linux

Hi, I'm trying to build this on Manjaro but making cmake .. in build directory is failing with this output:

-- The C compiler identification is GNU 11.1.0
-- The CXX compiler identification is GNU 11.1.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
CMake Error at CMakeLists.txt:13 (add_subdirectory):
The source directory

/home/jmc/wallengine/linux-wallpaperengine/lib/glfw

does not contain a CMakeLists.txt file.

-- Found X11: /usr/include
-- Looking for XOpenDisplay in /usr/lib/libX11.so;/usr/lib/libXext.so
-- Looking for XOpenDisplay in /usr/lib/libX11.so;/usr/lib/libXext.so - found
-- Looking for gethostbyname
-- Looking for gethostbyname - found
-- Looking for connect
-- Looking for connect - found
-- Looking for remove
-- Looking for remove - found
-- Looking for shmat
-- Looking for shmat - found
-- Looking for IceConnectionNumber in ICE
-- Looking for IceConnectionNumber in ICE - found
-- Checking for module 'xrandr'
-- Found xrandr, version 1.5.2
CMake Warning (dev) at /usr/share/cmake-3.21/Modules/FindPackageHandleStandardArgs.cmake:438 (message):
The package name passed to find_package_handle_standard_args (XRANDR)
does not match the name of the calling package (Xrandr). This can lead to
problems in calling code that expects find_package result variables
(e.g., _FOUND) to follow a certain pattern.
Call Stack (most recent call first):
CMakeModules/FindXrandr.cmake:64 (find_package_handle_standard_args)
CMakeLists.txt:16 (find_package)
This warning is for project developers. Use -Wno-dev to suppress it.

-- Found XRANDR: /usr/lib/libXrandr.so
-- Found OpenGL: /usr/lib/libOpenGL.so
-- Found GLEW: /usr/include (found version "2.2.0")
-- Found GLUT: /usr/lib/libglut.so
-- Found ZLIB: /usr/lib/libz.so (found version "1.2.11")
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE
-- Found SDL: /usr/lib/libSDLmain.a;/usr/lib/libSDL.so;-lpthread (found version "1.2.15")
-- Found SDL_mixer: /usr/lib/libSDL_mixer.so (found version "1.2.12")
-- Performing Test LZ4_GOOD_VERSION
-- Performing Test LZ4_GOOD_VERSION - Success
-- Found LZ4: /usr/lib/liblz4.so
-- Found LZ4: /usr/lib/liblz4.so
CMake Warning (dev) at /usr/share/cmake-3.21/Modules/FindPackageHandleStandardArgs.cmake:438 (message):
The package name passed to find_package_handle_standard_args (FFMPEG)
does not match the name of the calling package (FFmpeg). This can lead to
problems in calling code that expects find_package result variables
(e.g., _FOUND) to follow a certain pattern.
Call Stack (most recent call first):
CMakeModules/FindFFmpeg.cmake:23 (find_package_handle_standard_args)
CMakeLists.txt:24 (find_package)
This warning is for project developers. Use -Wno-dev to suppress it.

-- Could NOT find FFMPEG (missing: FFMPEG_LIBRARY FFMPEG_INCLUDE_DIR)
-- Found PkgConfig: /usr/bin/pkg-config (found version "1.7.3")
-- Checking for module 'libavcodec'
-- Found libavcodec, version 58.134.100
-- Checking for module 'libavformat'
-- Found libavformat, version 58.76.100
-- Checking for module 'libavutil'
-- Found libavutil, version 56.70.100
-- Checking for module 'libswscale'
-- Found libswscale, version 5.9.100
-- Found FFMPEG or Libav: /usr/lib/libavcodec.so;/usr/lib/libavformat.so;/usr/lib/libavutil.so;/usr/lib/libswscale.so, /usr/include
-- Found FreeImage: headers at /usr/include, libraries at :: /usr/lib/libfreeimage.so
-- Configuring incomplete, errors occurred!
See also "/home/jmc/wallengine/linux-wallpaperengine/build/CMakeFiles/CMakeOutput.log".
See also "/home/jmc/wallengine/linux-wallpaperengine/build/CMakeFiles/CMakeError.log".

What can be the problem?

Failed to open video file

I got this error when run a uncompressed wallpaper

./wallpaper --der /path/to/wallpaper

the error message here

Irrlicht Engine version 1.8.4
Linux 5.11.0-27-generic #29~20.04.1-Ubuntu SMP Wed Aug 11 15:58:17 UTC 2021 x86_64
Using renderer: OpenGL 4.3
NV138: nouveau
OpenGL driver version is 1.2 or better.
GLSL version: 4.3
/home/wenjinyu/Pictures/1810612745/project.json
terminate called after throwing an instance of 'std::runtime_error'
  what():  Failed to open video file

Just 3 files there

  • .mp4
  • git: the preview of wallpaper
  • project.json: with the content below
{
	"contentrating" : "Everyone",
	"description" : "原画来自P站画师Shell\nPixiv ID: 60886152\nMember: Shell\nhttps://www.pixiv.net/member_illust.php?mode=medium&illust_id=60886152",
	"file" : "魔法女孩2.mp4",
	"general" : 
	{
		"properties" : 
		{
			"schemecolor" : 
			{
				"order" : 0,
				"text" : "ui_browse_properties_scheme_color",
				"type" : "color",
				"value" : "0 0 0"
			}
		}
	},
	"preview" : "preview.gif",
	"tags" : [ "Anime" ],
	"title" : "魔女",
	"type" : "video",
	"visibility" : "public"
}

terminate called after throwing an instance of 'nlohmann::detail::parse_error'

I get this error whenever I try to initialize wallengine on a folder
Heres terminal input and output

❯ ./wallengine --pkg folder
Initializing irrlicht to WindowID 0
Irrlicht Engine version 1.8.4
Linux 4.19.42-1-MANJARO #1 SMP PREEMPT Fri May 10 20:52:43 UTC 2019 x86_64
Using renderer: OpenGL 3.0
Mesa DRI Intel(R) Haswell Mobile : Intel Open Source Technology Center
OpenGL driver version is 1.2 or better.
GLSL version: 1.3
terminate called after throwing an instance of 'nlohmann::detail::parse_error'
what(): [json.exception.parse_error.101] parse error at 1: syntax error - unexpected end of input; expected '[', '{', or a literal
zsh: abort (core dumped) ./wallengine --dir folder

[BUG] Could not create archive for: assets.zip

Describe the bug
When i try to run wallengine (compressed or uncompressed), i get an error "Could not create archive for: assets.zip"

To Reproduce
Steps to reproduce the behavior:

  1. Run a command like "./wallengine --dir /home/anidiot/Wall/921617616/"
  2. See Error

Expected behavior
Just create the archive and behave like it should

Screenshots
anidiot@alaptop:/linux-wallpaperengine$ make
[ 4%] Linking CXX executable wallengine
[100%] Built target wallengine
anidiot@alaptop:
/linux-wallpaperengine$ ./wallengine --dir /home/anidiot/Wall/921617616/
Irrlicht Engine version 1.8.4
Linux 5.4.0-52-generic #57-Ubuntu SMP Thu Oct 15 10:57:00 UTC 2020 x86_64
Using renderer: OpenGL 4.6.0
GeForce 920M/PCIe/SSE2: NVIDIA Corporation
OpenGL driver version is 1.2 or better.
GLSL version: 4.6
Could not create archive for: assets.zip
Cannot initialize SDL audio system: Mixer not built with MP3 support (figured about the issue)
anidiot@alaptop:~/linux-wallpaperengine$

(please complete the following information):

  • OS: [Ubuntu 20.04.1 LTS (may try debian if asked)]
  • X11 server Version: [X.Org version: 1.20.8]
  • Window manager: [GNOME Shell]
  • Version [GNOME Shell 3.36.4]

Additional context
Just build it parsing dependencies using help from google.

Project type missing

When trying to run uncompressed wallpaper it fails throwing std::runtime_error
Here is the full output

Linux 5.13.6-artix1-1 #1 SMP PREEMPT Thu, 29 Jul 2021 05:31:16 +0000 x86_64
No FSAA available.
Using renderer: OpenGL 4.6
Mesa Intel(R) UHD Graphics 630 (CFL GT2): Intel
OpenGL driver version is 1.2 or better.
GLSL version: 4.6
/home/marshy/Desktop/wallpaper/project.json
terminate called after throwing an instance of 'std::runtime_error'
  what():  Project type missing
Aborted

Error when try run

Maybe I'm doing something wrong, but when I try to run it shows an error
изображение

--dir/--pkg is deprecated

I always get this error when try to load a wallpaper:

--dir/--pkg is deprecated and not used anymore
terminate called after throwing an instance of 'std::runtime_error'
  what():  Cannot find the file in any of the containers
[1]    6533 abort  

Distro: Void Linux

[BUG] Wallpaper does not apply

Describe the bug
A clear and concise description of what the bug is.

To Reproduce
./wallengine --screen-root HDMI-A-0 --screen-root DVI-D-0 --pkg /home/maus/.wallpaperengine/steam wallpapers/1461427298/:
1461427298.zip

Found requested screen: HDMI-A-0 -> 0x75:1680x1050
Found requested screen: DVI-D-0 -> 1680x0:1920x1200
Irrlicht Engine version 1.8.4
Linux 5.8.1-3-MANJARO #1 SMP PREEMPT Sat Aug 15 19:17:30 UTC 2020 x86_64
Using renderer: OpenGL 4.6
Radeon RX 560 Series (POLARIS11, DRM 3.38.0, 5.8.1-3-MANJARO, LLVM 10.0.1): X.Org
OpenGL driver version is 1.2 or better.
GLSL version: 4.6
Could not create archive for: /home/maus/.wallpaperengine/steamscene.pkg
terminate called after throwing an instance of 'nlohmann::detail::parse_error'
  what():  [json.exception.parse_error.101] parse error at 1: syntax error - unexpected end of input; expected '[', '{', or a literal
Abgebrochen (Speicherabzug geschrieben)

./wallengine --screen-root HDMI-A-0 --screen-root DVI-D-0 --pkg /home/maus/.local/share/Steam/steamapps/workshop/content/431960/2186698820/:
2186698820.zip

Found requested screen: HDMI-A-0 -> 0x75:1680x1050
Found requested screen: DVI-D-0 -> 1680x0:1920x1200
Irrlicht Engine version 1.8.4
Linux 5.8.1-3-MANJARO #1 SMP PREEMPT Sat Aug 15 19:17:30 UTC 2020 x86_64
Using renderer: OpenGL 4.6
Radeon RX 560 Series (POLARIS11, DRM 3.38.0, 5.8.1-3-MANJARO, LLVM 10.0.1): X.Org
OpenGL driver version is 1.2 or better.
GLSL version: 4.6
LOAD TEX: This is an ARGB8: materials/particle/halo_2.tex
Loaded texture: materials/particle/halo_2.tex
LOAD TEX: This is an ARGB8: materials/masks/pulse_mask_ee0d9bbc6d0516b8583c8fb3e841485c0b7ec4e8.tex
Loaded texture: materials/masks/pulse_mask_ee0d9bbc6d0516b8583c8fb3e841485c0b7ec4e8.tex
ERROR PRE-COMPILING SHADER
racter
GLSL shader failed to compile
0:1(1): error: syntax error, unexpected end of file

LOAD TEX: This is an ARGB8: materials/particle/halo_5.tex
Loaded texture: materials/particle/halo_5.tex
LOAD TEX: This is an ARGB8: materials/masks/pulse_mask_681d95af21112ea41fc4cd51aa49d9c553ef1173.tex
Loaded texture: materials/masks/pulse_mask_681d95af21112ea41fc4cd51aa49d9c553ef1173.tex
ERROR PRE-COMPILING SHADER
racter
GLSL shader failed to compile
0:1(1): error: syntax error, unexpected end of file

LOAD TEX: Unknown texture format
: materials/particle/beam/beam_2_fade.tex
Could not load texture: materials/particle/beam/beam_2_fade.tex
LOAD TEX: This is an ARGB8: materials/masks/pulse_mask_14baecd88cd86197979e9592a3614e57bbd01235.tex
Loaded texture: materials/masks/pulse_mask_14baecd88cd86197979e9592a3614e57bbd01235.tex
ERROR PRE-COMPILING SHADER
racter
GLSL shader failed to compile
0:1(1): error: syntax error, unexpected end of file

LOAD TEX: This is an ARGB8: materials/masks/shake_mask_5207177ba9b3baf118953fd6a547ac67ade9efd7.tex
Loaded texture: materials/masks/shake_mask_5207177ba9b3baf118953fd6a547ac67ade9efd7.tex
LOAD TEX: Skipping broken mask: materials/util/white.tex
Loaded texture: materials/util/white.tex
LOAD TEX: This is an ARGB8: materials/masks/shake_mask_fa9c74bb537d37334f47fa1231eb92d0e2c956cc.tex
Loaded texture: materials/masks/shake_mask_fa9c74bb537d37334f47fa1231eb92d0e2c956cc.tex
ERROR PRE-COMPILING SHADER
racter
GLSL shader failed to compile
0:1(1): error: syntax error, unexpected end of file

LOAD TEX: This is a JPG: materials/minimalistic landscape 2.tex
Loaded texture: materials/minimalistic landscape 2.tex
LOAD TEX: This is an ARGB8: materials/workshop/2127844565/bar.tex
Loaded texture: materials/workshop/2127844565/bar.tex

Expected behavior
It should apply the wallpaper, but it doesnt. The recent fixes regarding this problem didnt seem to really fix anything, sadly.

(please complete the following information):

  • OS: Manjaro
  • X11 server Version: 1.20.8
  • Window manager: kde
  • Version 20.04.3

Couldn't able to compile

I have been trying to compile this but, I am getting error while trying to run the cmake .. command.

Error

Please help me to fix this problem! 🙏
I've already installed FFMPEG and other dependencies (libav*) but, still I'am getting this FFMPEG Library missing errors.

[BUG] Running Make fails to link when compiling.

Describe the bug
After installing all of the dependencies listed, I ran cmake .. within the build folder, followed by make. While making, the program files successfully compile but fail to link.

To Reproduce

  1. Install dependencies
  2. mkdir build
  3. cd build
  4. cmake ..
  5. make

Expected behavior
The program should compile correctly.

Screenshots

[thedudefromci@encartaempire build]$ make
[  4%] Linking CXX executable wallengine
/usr/bin/ld: CMakeFiles/wallengine.dir/wallpaperengine/irr/CImageLoaderTEX.cpp.o: in function `irr::video::CImageLoaderTex::loadImage(irr::io::IReadFile*) const':
CImageLoaderTEX.cpp:(.text+0xcbb): warning: the use of `tmpnam' is dangerous, better use `mkstemp'
/usr/bin/ld: CMakeFiles/wallengine.dir/wallpaperengine/core.cpp.o: undefined reference to symbol '_ZN3irr4core21LOCALE_DECIMAL_POINTSE'
/usr/bin/ld: /usr/lib64/libIrrXML.so.1: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/wallengine.dir/build.make:402: wallengine] Error 1
make[1]: *** [CMakeFiles/Makefile2:96: CMakeFiles/wallengine.dir/all] Error 2
make: *** [Makefile:104: all] Error 2
[thedudefromci@encartaempire build]$ 

(please complete the following information):

  • OS: Fedora 32
  • X11 server Version: 1.20.8
  • Window manager: X11
  • Gnome: 3.36.2

Additional context
X11 was not included by default with the OS. Installed manually.

Running as background on screen does not work with Plasma KDE

Running it without --screen-root works as expected (opens window), but when running with it, wallpaper does not change (Plasma still shows default wallpaper). No error output - looks like Plasma just overwrites the wallpaper (or something else is happenning?).

Output is same as with running without -screen-root (except on start, there's new Found requested screen: eDP-1 -? 0x0:1366x768.

Installation issue (CMake Compiler not set)

cmake ..
CMake Error: CMake was unable to find a build program corresponding to "Unix Makefiles". CMAKE_MAKE_PROGRAM is not set. You probably need to select a different build tool.
CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage
CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage
-- Configuring incomplete, errors occurred!
See also "/home/et/Téléchargements/wallpaper engine/build/CMakeFiles/CMakeOutput.log".

CMakeOutput.log =
The system is: Linux - 5.6.19-159.current - x86_64

Aaaand.. That's it. Any workaround ?

not able to install

i cannot understand how to use cmake and what to do,i think the problem is that in ubuntu instead of x11 and xrandr, i have x11-xserver-utils, can i use this program whith that? if so can I have some help for the installation?

Could NOT find SDL_mixer

I'm trying to use cmake .. to build this repo but I am getting this:

-- The C compiler identification is GNU 10.3.0 -- The CXX compiler identification is GNU 10.3.0 -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working C compiler: /usr/bin/cc - skipped -- Detecting C compile features -- Detecting C compile features - done -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Check for working CXX compiler: /usr/bin/c++ - skipped -- Detecting CXX compile features -- Detecting CXX compile features - done -- Looking for pthread.h -- Looking for pthread.h - found -- Performing Test CMAKE_HAVE_LIBC_PTHREAD -- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed -- Looking for pthread_create in pthreads -- Looking for pthread_create in pthreads - not found -- Looking for pthread_create in pthread -- Looking for pthread_create in pthread - found -- Found Threads: TRUE -- Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE) -- Using X11 for window creation -- Found X11: /usr/include -- Looking for XOpenDisplay in /usr/lib/x86_64-linux-gnu/libX11.so;/usr/lib/x86_64-linux-gnu/libXext.so -- Looking for XOpenDisplay in /usr/lib/x86_64-linux-gnu/libX11.so;/usr/lib/x86_64-linux-gnu/libXext.so - found -- Looking for gethostbyname -- Looking for gethostbyname - found -- Looking for connect -- Looking for connect - found -- Looking for remove -- Looking for remove - found -- Looking for shmat -- Looking for shmat - found -- Looking for IceConnectionNumber in ICE -- Looking for IceConnectionNumber in ICE - found -- Checking for module 'xrandr' -- Found xrandr, version 1.5.2 CMake Warning (dev) at /usr/share/cmake-3.18/Modules/FindPackageHandleStandardArgs.cmake:273 (message): The package name passed to find_package_handle_standard_args(XRANDR) does not match the name of the calling package (Xrandr). This can lead to problems in calling code that expectsfind_packageresult variables (e.g.,_FOUND`) to follow a certain pattern.
Call Stack (most recent call first):
CMakeModules/FindXrandr.cmake:64 (find_package_handle_standard_args)
CMakeLists.txt:15 (find_package)
This warning is for project developers. Use -Wno-dev to suppress it.

-- Found XRANDR: /usr/lib/x86_64-linux-gnu/libXrandr.so
-- Found OpenGL: /usr/lib/x86_64-linux-gnu/libOpenGL.so
-- Found GLEW: /usr/include (found version "2.1.0")
-- Found GLUT: /usr/lib/x86_64-linux-gnu/libglut.so
-- Found ZLIB: /usr/lib/x86_64-linux-gnu/libz.so (found version "1.2.11")
-- Found SDL: /usr/lib/x86_64-linux-gnu/libSDLmain.a;/usr/lib/x86_64-linux-gnu/libSDL.so;-lpthread (found version "1.2.15")
CMake Error at /usr/share/cmake-3.18/Modules/FindPackageHandleStandardArgs.cmake:165 (message):
Could NOT find SDL_mixer (missing: SDL_MIXER_LIBRARIES
SDL_MIXER_INCLUDE_DIRS)
Call Stack (most recent call first):
/usr/share/cmake-3.18/Modules/FindPackageHandleStandardArgs.cmake:458 (_FPHSA_FAILURE_MESSAGE)
/usr/share/cmake-3.18/Modules/FindSDL_mixer.cmake:92 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
CMakeLists.txt:21 (find_package)

-- Configuring incomplete, errors occurred!
See also "/home/osoa/Desktop/linux-wallpaperengine/build/CMakeFiles/CMakeOutput.log".
See also "/home/osoa/Desktop/linux-wallpaperengine/build/CMakeFiles/CMakeError.log".
`

I have installed all the SDL_mixer packages I can find but this won't change.
Sorry if this a stupid question, I am new to Linux.

terminate called after throwing an instance of 'nlohmann::detail::parse_error'

I get this error with every wallpaper I try, so it's pretty unusable to me

nexpected package header... Aborting load: /home/sbapkat/git/linux-wallpaperengine/build/2126043555/scene.pkg terminate called after throwing an instance of 'nlohmann::detail::parse_error' what(): [json.exception.parse_error.101] parse error at 18: syntax error - unexpected ':'; expected end of input [1] 6418 abort (core dumped) ./wallengine --pkg 2126043555

`--screen-root` fails possibly due to Irrlicht behavior

Describe the bug
Running wallengine succeeds without --screen-root, but fails with it enabled.

To Reproduce
./wallengine --screen-root DP-0 --pkg $HOME/.steam/steam/steamapps/workshop/content/431960/2154699571

Found requested screen: DP-0 -> 0x0:1920x1080
Irrlicht Engine version 1.8.4
Linux 5.4.0-40-generic #44-Ubuntu SMP Tue Jun 23 00:01:04 UTC 2020 x86_64
X Error of failed request:  BadMatch (invalid parameter attributes)
  Major opcode of failed request:  151 (GLX)
  Minor opcode of failed request:  31 (X_GLXCreateWindow)
  Serial number of failed request:  26
  Current serial number in output stream:  27

According to xwininfo, the normal wallengine window and the X root window differ by the GLX visual flags multiSample=8 multiSampleBuffers=1 versus 0 and 0 respectively. SDL's choice of visual should be settable by the envvar SDL_VIDEO_VISUAL_ID but in my testing it doesn't honor this flag. The Nvidia Control Panel's "override multisampling" setting also has no effect on any GLX visual flags.

It makes no difference whether another desktop compositor is running or not.

Related: https://stackoverflow.com/questions/51400305/irrlicht-fails-to-create-a-glx-context-when-passed-a-sdl2-created-window

(please complete the following information):

  • OS: Linux Mint 20 Cinnamon
  • X11 server Version: 1.20.8
  • Nvidia 440.82

On a positive note, https://steamcommunity.com/sharedfiles/filedetails/?id=2154699571 the waterwaves.frag effect works with linux-wallpaperengine currently.

GLSL shader failed to compile

Hi, I have succeed build wallpaper engine executable, but when I tried to lunch it with ./wallengine --pkg ~/2113366598, it gives me the error:

Irrlicht Engine version 1.8.4
Linux 5.7.0-kali3-amd64 #1 SMP Debian 5.7.17-1kali1 (2020-08-26) x86_64
No FSAA available.
Using renderer: OpenGL 3.1
llvmpipe (LLVM 10.0.1, 256 bits): VMware, Inc.
OpenGL driver version is 1.2 or better.
GLSL version: 1.4
LOAD TEX: This is a PNG: materials/masks/waterripple_mask_ee0d9bbc6d0516b8583c8fb3e841485c0b7ec4e8.tex
Loaded texture: materials/masks/waterripple_mask_ee0d9bbc6d0516b8583c8fb3e841485c0b7ec4e8.tex
LOAD TEX: This is an ARGB8: materials/effects/waterripplenormal.tex
Loaded texture: materials/effects/waterripplenormal.tex
LOAD TEX: This is an ARGB8: materials/util/noise.tex
Loaded texture: materials/util/noise.tex
LOAD TEX: This is a PNG: materials/masks/pulse_mask_681d95af21112ea41fc4cd51aa49d9c553ef1173.tex
Loaded texture: materials/masks/pulse_mask_681d95af21112ea41fc4cd51aa49d9c553ef1173.tex
ERROR PRE-COMPILING SHADER
racter
GLSL shader failed to compile
0:1(1): error: syntax error, unexpected end of file

LOAD TEX: This is a JPG: materials/75.tex
Loaded texture: materials/75.tex

The related background file I have attached.
2113366598.zip
My host graphic card is intel HD650 which support opengl to 4.4, but vmware only support max to 3.3 for windows.
So maybe I had to upgrade opengl to 3.3? here is the glxinfo

OpenGL vendor string: VMware, Inc.
OpenGL renderer string: llvmpipe (LLVM 10.0.1, 256 bits)
OpenGL core profile version string: 3.3 (Core Profile) Mesa 20.1.7
OpenGL core profile shading language version string: 3.30
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
OpenGL version string: 3.1 Mesa 20.1.7
OpenGL shading language version string: 1.40
OpenGL context flags: (none)
OpenGL extensions:
OpenGL ES profile version string: OpenGL ES 3.1 Mesa 20.1.7
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.10
OpenGL ES profile extensions:

[Installation issues] Undefined reference to symbol in libIrrlicht

After following the installation instructions and installing the requisite libraries (I had to install so many versions of SDL for the cmake to leave me alone), I can finally run make. Everything goes smoothly and then the linking process gets aborted as soon as it starts, spitting out:

/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/libIrrlicht.a(CIrrDeviceLinux.o): undefined reference to symbol 'XF86VidModeGetGamma'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/libXxf86vm.so: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/wallengine.dir/build.make:386: wallengine] Error 1
make[1]: *** [CMakeFiles/Makefile2:76: CMakeFiles/wallengine.dir/all] Error 2

I scoured the net for a bit and found two possible causes:
1- missing libraries (namely /usr/lib/x86_64-linux-gnu/libX11.so and /usr/lib/x86_64-linux-gnu/libXxf86vm.so.1 which are both present)
2- error in the makefile or compiler command which I don't want to mess with

For me, reproducing is simple. Just try to run make, it won't work.

I expected it to install correctly after following the installation instructions but no such luck.

I am using:

  • OS: Pop! OS 20.04
  • X11 server Version: 1.20.9
  • Window manager: mutter (gnome DE)
  • Version: most recent

Note that one part where I may have screwed up is how I installed Irrlicht. I downloaded the source code, followed the instructions to make the binary library and moved it and the includes in the respective directories on the system. Still, considering I can compile and run the Irrlicht examples fine, I feel like I should have done a decent job.

IRRLICHT issue and X11_Xxf86vm_LIB

CMake Warning (dev) at /usr/share/cmake-3.18/Modules/FindPackageHandleStandardArgs.cmake:273 (message):
  The package name passed to `find_package_handle_standard_args` (XRANDR)
  does not match the name of the calling package (Xrandr).  This can lead to
  problems in calling code that expects `find_package` result variables
  (e.g., `_FOUND`) to follow a certain pattern.
Call Stack (most recent call first):
  CMakeModules/FindXrandr.cmake:64 (find_package_handle_standard_args)
  CMakeLists.txt:10 (find_package)
This warning is for project developers.  Use -Wno-dev to suppress it.

-- IRRLICHT_INCLUDE_DIR = /usr/include
-- IRRLICHT_LIBRARY = /usr/lib/libIrrlicht.so
CMake Warning (dev) at /usr/share/cmake-3.18/Modules/FindPackageHandleStandardArgs.cmake:273 (message):
  The package name passed to `find_package_handle_standard_args` (IRRLICHT)
  does not match the name of the calling package (Irrlicht).  This can lead
  to problems in calling code that expects `find_package` result variables
  (e.g., `_FOUND`) to follow a certain pattern.
Call Stack (most recent call first):
  CMakeModules/FindIrrlicht.cmake:17 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
  CMakeLists.txt:14 (find_package)
This warning is for project developers.  Use -Wno-dev to suppress it.

-- Found LZ4: /usr/lib/liblz4.so
-- Configuring done
CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
X11_Xxf86vm_LIB (ADVANCED)
    linked by target "wallengine" in directory /home/et/Téléchargements/wallpaper engine

-- Generating done
CMake Generate step failed.  Build files cannot be regenerated correctly.

libx11-devel (solus) correctly installed but same error.

wp::video::node::render() is empty?

The program gives me a solid black output, even after I modified the path to WallPaper Engine Projects folder, I see the render() method is empty, what does it (or at least should) do?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.