Live wallpapers for the X window system

Overview

xlivebg - live wallpapers for the X window system

logo

About

xlivebg is a live wallpaper framework, and collection of live wallpapers, for the X window system. xlivebg is independent of window managers and desktop environments, and should work with any of them, or even with no window manager at all.

Live wallpapers are a way to have an animated desktop background, instead of a simple static image. They are essentially programs which use OpenGL to display an animated moving image in place of the traditional wallpaper.

Live wallpapers are written as plugins for xlivebg. All X11-specific initialization, OpenGL context creation, and root window management are performend by xlivebg; the live wallpaper plugins need only provide a draw function, which is called by xlivebg at (approximately) fixed intervals.

For further information, build instructions, configuration and setup, and a guide for writing live wallpapers, refer to the manual: http://nuclear.mutantstargoat.com/sw/xlivebg/manual Also available under the doc directory in the source tree.

License

Copyright (C) 2019-2021 John Tsiombikas [email protected]

This program is free software, feel free to use, modify and/or redistribute it under the terms of the GNU General Public License version 3, or at your option any later version published by the Free Software Foundation. See COPYING for details.

Contact

For bug reports, head over to the github issues page: https://github.com/jtsiomb/xlivebg/issues

For xlivebg-related discussion, support questions, development, bug reports, feature requests, and patches, feel free to join the xlivebg mailing list:

Mailing list rules: no large attachments, no html emails, no top-posting. Send only plain text emails, hard-wrapped at 72 columns. Replies should quote only the relevant part of the previous message, and respond immediately under it

For anything else, feel free to contact me at: [email protected]. Only plain-text emails, hard-wrapped at 72-columns will be accepted.

FAQ

  1. Q: I'm running xlivebg and nothing happens. I'm still seeing the previous desktop wallpaper, a black screen, or a corrupted/broken screen.

    A: Try passing the -n option to xlivebg. This forces xlivebg to create its own "desktop" window, instead of trying to draw on the root or virtual root window.

Comments
  • Won't compile on OpenSuse Leap 15.2

    Won't compile on OpenSuse Leap 15.2

    Enjoyed your Fosdem talk. Thanks.

    I'm having trouble compiling this on OpenSuse Leap 15.2.

    I have avcodec.h installed in /usr/include/ffmpeg/libavcodec/avcodec.h

    ./configure doesn't complain. But make does:

    make[2]: Entering directory '/richi/ToDo/xlivebg/plugins/video' cc -pedantic -Wall -g -O3 -ffast-math -fPIC -I../../include -Wno-deprecated-declarations -pthread -c -o vid.o vid.c vid.c:22:10: fatal error: libavcodec/avcodec.h: No such file or directory #include <libavcodec/avcodec.h> ^~~~~~~~~~~~~~~~~~~~~~ compilation terminated.

    How to fix?

    opened by richardeigenmann 10
  • Building on OpenBSD

    Building on OpenBSD

    I am building on OpenBSD and I've run into a few issues, firstly many #ifndef operations needed to be changed to include OpenBSD, that's fine and everything seems to almost compile now, but then I get to the included libraries libimago and treestore.

    In libimago/src/file_lbm.c there seems to be some very strange declarations that neither gcc or clang seem to recognise as valid, around line 115 the following is defined:

    static uint16_t swap16(uint16_t x);
    static uint32_t swap32(uint32_t x);
    

    gcc says that it's expecting declaration specifiers, and clang just seems to complain about missing brackets. Is there any simple fix for this?

    opened by lightningx10 6
  • compton and conky

    compton and conky

    Thanks for creating this. When I run xlivebg with conky running conky is not shown. If I run compton (picom) then xlivebg display disappear altogether.

    opened by elig0n 5
  • Video plugin build failure with ffmpeg libraries v59

    Video plugin build failure with ffmpeg libraries v59

    vid.c: In function ‘vid_open’: vid.c:47:17: warning: implicit declaration of function ‘av_register_all’ [-Wimplicit-function-declaration] 47 | av_register_all(); | ^~~~~~~~~~~~~~~ vid.c:72:41: error: ‘AVStream’ has no member named ‘codec’ 72 | if(vf->avctx->streams[i]->codec->codec_type == AVMEDIA_TYPE_VIDEO) { | ^~ vid.c:82:51: error: ‘AVStream’ has no member named ‘codec’ 82 | vf->cctx = vf->avctx->streams[vf->vstream]->codec; | ^~ vid.c:84:24: warning: assignment discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers] 84 | if(!(vf->codec = avcodec_find_decoder(vf->cctx->codec_id))) { | ^ vid.c: In function ‘vid_get_frame’: vid.c:170:25: warning: implicit declaration of function ‘avcodec_decode_video2’; did you mean ‘avcodec_decode_subtitle2’? [-Wimplicit-function-declaration] 170 | avcodec_decode_video2(vf->cctx, vf->frm, &frame_done, &packet); | ^~~~~~~~~~~~~~~~~~~~~ | avcodec_decode_subtitle2

    Any help?

    opened by Mehaafa 4
  • Picom background not displaying

    Picom background not displaying

    I am running OpenBSD with dwm and a compositor picom, and xlivebg is unable to change the background image, only working with -n or with the compositor turned off.

    Is there any way of getting this to work with an external compositor? The -n flag does not actually set it as a background but just as a window that I cannot move or resize.

    opened by lightningx10 3
  • Deprecated ffmpeg methods used, causes errors when attempting to compile

    Deprecated ffmpeg methods used, causes errors when attempting to compile

    image

    As shown here, AVStream has no member named 'codec' for ffmpeg... It was deprecated recently, in favor of codecpar.

    I would downgrade my ffmpeg, but Arch is rolling-release.

    duplicate 
    opened by FlareStormGaming 2
  • CPU usage with compositors

    CPU usage with compositors

    So I tried out xlivebg with the colcycle plugin and it worked as expected out of the box. As I'm using a compositor, I used the -n option, but the CPU draw (in picom, a compton fork) was multiplied by 4. With the -w option, I was able to use xwinwrap to use xlivebg with a compositor without the -n option, and it divided by 2 the CPU draw with picom. I also tried with xcompmgr which is mentionned in the readme, but I have horrible tearing everywhere (CPU draw is fine though).

    Right now I think the only way I can use it is without a compositor (CPU is something like 8% distributed on 8 cores), or if I find a way to fix the tearing with xcompmgr (which would be ideal)

    I guess the real issues are actually in picom for the CPU issue and intel's driver for the tearing.

    Anyway I just wanted to update you to say that I tried your program and it works really well, so I'll close the issue since it doesn't come from xlivebg.

    opened by reyqn 1
  • Support or integration for GLava audio visualizer

    Support or integration for GLava audio visualizer

    The program known as GLava is an OpenGL audio visualizer that works through monitoring ALSA and Pulse Audio for audio data, and creates a live background window onto the desktop.

    GLava is seemingly incompatible with xlivebg and can not create effects on the same window as xlivebg, leading to some flexibility problems when configuring live backgrounds to include an embedded audio visualizer. Is it possible to integrate GLava into the configuration files and/or interfaces available for xlivebg, and/or allow them to render onto the same X window?

    feature request 
    opened by fried-motherboards 1
  • Xsession crash on AMD proprietary drivers

    Xsession crash on AMD proprietary drivers

    Originally reported via email. The program crashes upon execution when the AMD proprietary drivers are installed in the latest stable version of debian (Codename: Bullseye). The system is responsive but rendered virtually unusuable until the process is stopped via a ctrl + c command or killed using its' pid.

    A short image showcasing this behaviour is provided, as well as effects post-crash.

    Relevant hardwatre information: `` `~$hwinfo --short cpu: Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz

    keyboard: /dev/input/event3 China Resource Semico USB Keyboard mouse: /dev/input/mice Logitech Marble Mouse (4-button) /dev/input/event7 China Resource Semico USB Keyboard monitor: SAMSUNG S22F350 graphics card: ATI Ellesmere [Radeon RX 470] sound: Creative SB1570 SB Audigy Fx storage: Intel 200 Series PCH SATA controller [AHCI mode]`

    ` ~$ glxinfo

    GLX version: 1.4
    Vendor: AMD (0x1002)
    Device: Radeon RX 470 Series (POLARIS10, DRM 3.40.0, 5.10.0-13-amd64, LLVM 11.0.1) (0x67df)
    Version: 20.3.5
    Max core profile version: 4.6
    Max compat profile version: 4.6
    Max GLES1 profile version: 1.1
    Max GLES[23] profile version: 3.2`
    

    Relevant OS information: Crash example

    syslog didn't record any anomalities on the time period where the program was executed and the program seems to resolve successfully as shown on the information contained within the terminal post-crash in the image provided

    This bug appears exclussive to AMD radeon drivers for dedicated graphics cards, it could not be replicatedn and it was proven to be working fine, using an nvidia graphics card, intel hd graphics and amd integrated graphics. The program has not been yet tested on external graphics cards provided by intel, aditionally it's unclear whether this is an issue affecting several radeon models or if it's exclusive to the rx 470, it's known the program cannot work on AMD's GPUOpen drivers as they do not support open gl programs.

    opened by known-alias 1
  • Unable to apply different wallpapers on two monitors

    Unable to apply different wallpapers on two monitors

    This was reported by mail a few days ago.

    While applying a wallpaper on a dual monitor setup the wallpaper from screen 1 is duplicated in screen 2 even if the wallpaper used is using a resolution meant to be used for two monitors (e.g. 3840 x 1020), everything works as normal except for having the same image in the background.

    feature request 
    opened by known-alias 1
  • Stuck on start, cpu usage 100% and ping failed

    Stuck on start, cpu usage 100% and ping failed

    OS: Arch Linux

    Desktop: GNOME 3.38.3

    Installed from: AUR

    Version: xlivebg 1.0-1

    GLX Info:

    > glxinfo -B
    name of display: :0
    display: :0  screen: 0
    direct rendering: Yes
    Extended renderer info (GLX_MESA_query_renderer):
        Vendor: Intel Open Source Technology Center (0x8086)
        Device: Mesa DRI Intel(R) HD Graphics
        Version: 20.3.3
        Accelerated: yes
        Video memory: 1536MB
        Unified memory: yes
        Preferred profile: core (0x1)
        Max core profile version: 4.5
        Max compat profile version: 3.0
        Max GLES1 profile version: 1.1
        Max GLES[23] profile version: 3.1
    OpenGL vendor string: Intel Open Source Technology Center
    OpenGL renderer string: Mesa DRI Intel(R) HD Graphics
    OpenGL core profile version string: 4.5 (Core Profile) Mesa 20.3.3
    OpenGL core profile shading language version string: 4.50
    OpenGL core profile context flags: (none)
    OpenGL core profile profile mask: core profile
    
    OpenGL version string: 3.0 Mesa 20.3.3
    OpenGL shading language version string: 1.30
    OpenGL context flags: (none)
    
    OpenGL ES profile version string: OpenGL ES 3.1 Mesa 20.3.3
    OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.10
    
    

    Config:

    > cat ~/.config/xlivebg.conf
    #...
    xlivebg {
    image = ".wallpaper/0.png"
    ripple {
    raindrops = 10
    #...
    

    xlivebg -p output:

    > xlivebg -p
    Using config file: /home/user/.config/xlivebg.conf
    output: 800x600
    xlivebg: searching for plugins in /usr/lib/xlivebg
    xlivebg: registered plugin: video
    xlivebg: registered plugin: stars
    xlivebg: registered plugin: distort
    xlivebg: registered plugin: ripple
    xlivebg: registered plugin: colcycle
    xlivebg: activating plugin: video
    window size: 800x600
    window visual: e5
     double-buffered RGBA 888, 24 bits zbuffer
    

    The preview window is all black, cpu usage 100% and ping failed

    opened by Chinory 8
  • GLX3 Shader/Shader-toy compatible plugins!

    GLX3 Shader/Shader-toy compatible plugins!

    Hello, Πρώτα από όλα είμαι Έλληνας :P , ωραίος και πολύ ωραίο project! :D Having said and for this message to be readable from other people browsing github, I am trying to port my GLX3 shader based standalone renderer to create a xlivebg "plug-in" for shaders :)

    I think this can be a great addition to this tool that will make this application compatible with a ton of great work @ https://www.shadertoy.com/ . It will also be possible to have a single plug-in that can load from a multitude of different shader "text" files which will make extending xlivebg much easier for newcomers.

    I have forked your repo ( https://github.com/AmmarkoV/xlivebg/tree/master/plugins/shadertoy ) and added my source that renders this example https://www.shadertoy.com/view/Ms2SD1 using pure C / GLX3 / glew code.. I don't know if you want to pull it, currently I have changed nothing on your code, my code is also GPL3 so it is compatible with yours.

    However upon trying to add your plugin system I think that there may need to be some changes in xlivebg for my use-case ..

    You can compile my sample to check it out ..

    However I think that maybe my glx3.c/glx3.h has to be merged inside your code base in order to be able to have OpenGL3+ shader support..

    Looking forward to your feedback or comments, and once again great job!

    opened by AmmarkoV 8
Releases(v1.0)
Owner
John Tsiombikas
I'm a hacker. I usually hack graphics and low-level systems code, less frequently electronics and homebrew computers.
John Tsiombikas
WIP - Material para uma live stream que estou preparando

C para devs PHP ATENÇÃO: Este projeto ainda está em progresso. A estrutura e conteúdo aqui provavelmente ainda estão muito confusas. Eu não recomendo

Níckolas Daniel da Silva 10 Feb 24, 2022
A gdnative plugin for Godot's UWP export to add xbox live integration

GodotXbox Current instructions for setting up DLL, steps to setup project for contributing/modifying are coming soon. It should be noted that Godot's

Cregg Hancock 34 Sep 27, 2022
A demo of the relevant blog post: Hook Heaps and Live Free

LockdExeDemo A demo of the relevant blog post: Hook Heaps and Live Free DEMO Explanation There are 2 compile types. The first is an EXE. The EXE requi

null 155 Sep 21, 2022
Wtf Riot? I just want to close League of Legends and live my life. Leave me alone. F*ck corporate adware.

RiotKiller Wtf Riot? Anyways... This application launches League of Legends by calling RiotClientServices.exe --launch-product=league_of_legends --lau

Alejandro Romano 1 Mar 29, 2022
This plugin enables the use of Live++ by Molecular Matter inside of Cryengine.

Live++ // CRYENGINE This plugin enables the use of Live++ by Molecular Matter inside of Cryengine. Live++ allows for easy hot-reloading and on the fly

Philipp Gehring 5 Dec 4, 2019
A single file header-only live reload solution for C, written in C++

cr.h A single file header-only live reload solution for C, written in C++: simple public API, 3 functions to use only (and another to export); works a

Danny Angelo Carminati Grein 1.2k Sep 28, 2022
dwm is an extremely fast, small, and dynamic window manager for X.

dwm - dynamic window manager dwm is an extremely fast, small, and dynamic window manager for X. My Patches This is in the order that I patched everyth

Christian Chiarulli 31 Sep 22, 2022
JWM is a cross-platform Java window management and OS integration library.

JWM aims to expose an interface that abstracts over window creation, input handling and OS integration

JetBrains 361 Sep 30, 2022
A simple utility that cold patches dwm (uDWM.dll) in order to disable window rounded corners in Windows 11

Win11DisableRoundedCorners A simple utility that cold patches the Desktop Window Manager (uDWM.dll) in order to disable window rounded corners in Wind

Valentin-Gabriel Radu 449 Oct 2, 2022
Play video by fonts in a console window by composing characters

FontVideo Play video by fonts in a console window by composing characters. Using FFmpeg API to decode the input file, then the video stream is rendere

0xaa55 9 Jul 16, 2022
Small Header-Only Window and OpenGL Manager.

LxDemOWin Linux Demo OpenGL and Window manager A small header-Only Window and OpenGL manager made in C, written in about 2 hours. With some basic code

PipeWarp 5 Jun 4, 2022
A window manager for GNOME, with rounded corners patch

Tested in gnome-shell 40.5, should works in gnome 40 and 41. integrate the blur effects with rounded corners.The source code can be found here. Issues

Yi 481 Sep 30, 2022
Hypr is a tiling window manager written in modern C++.

Hypr is a Linux tiling window manager for Xorg. It's written in XCB with modern C++ and aims to provide easily readable and expandable code. !WARNING:

vaxerski 657 Oct 2, 2022
A simple X11 window manager

Devoid WM A simple x11 tiling window manager Devoid tries to abide by the principle - "Do one thing, do it well". All it is is a window manager which

Murtaza Udaipurwala 25 Jul 26, 2022
Draw a triangle inside Electron's window using DirectX 11, mixing web and native content.

Draw a triangle inside Electron's window using DirectX 11, mixing web and native content. Limitations The native content is rendered over a child wind

UKABUER 9 Jul 12, 2022
Small Header-Only Window and OpenGL Manager.

LxDemOWin Linux Demo OpenGL and Window manager A small header-Only Window and OpenGL manager made in C, written in about 2 hours. With some basic code

pipewarp 4 Dec 11, 2021
Hiding the window from screenshots using the function win32kfull::ChangeWindowTreeProtection

NoScreen This function is used in setwindowaffinity, but unlike the original API function, this function does not create detection vectors, for exampl

null 275 Oct 2, 2022
tabbed window manager that can tile windows inside floating containers

shod ┌───────────────────────┐ │ │ ┌─────┼────

Seninha 118 Sep 25, 2022
JWM - Cross-platform window management and OS integration library for Java

Java Window Management library Vision JWM is a cross-platform Java window management and OS integration library. JWM aims to expose an interface that

Humble UI 361 Sep 30, 2022