• Stars
    star
    536
  • Rank 80,066 (Top 2 %)
  • Language
    C
  • License
    The Unlicense
  • Created about 6 years ago
  • Updated about 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

free and open-source wallpaper engine, set any window as your wallpaper

free and open-source wallpaper engine. set any window or video as your wallpaper

UPDATE: for an easy to use front-end, check out https://github.com/SegoCode/AutoWall

github doesn't like having big gifs in the readme, so here's a imgur gallery

this was put together in ~2 afternoons worth of coding. I can't maintain this very regularly as I don't use windows and I have to either fire up a virtual machine or install windows temporarily to my 2nd pc to work on it, so help and testing are welcome

only tested on Windows 10 version 1709 build 16299.15, should work on all versions of windows 10 and 8.1 as well as Windows 7

Windows 7 prerequisites

go to start -> search for "Adjust the appearance and performance of windows" and click it, then make sure at least these are checked

  • Animate controls and elements inside windows
  • Enable desktop composition
  • Use visual styles on windows and buttons

if you don't enable these settings, weebp won't be able to put your animated wallpaper behind the icons. it will still work, but it will cover your desktop icons

roadmap

  • initial focus is on the command-line interface just because that's what I would use, but a gui is not hard to implement later on. it's easy to write glue scripts to automate it or bind it to keys anyways
  • forwarding mouse interactions to the captured windows should be easy and would allow interactive wallpapers, I'll implement it ASAP

installation

download the latest binaries from https://github.com/Francesco149/weebp/releases

extract the zip and place the folder anywhere you like

double-click 0bootstrap. this will run install.ps1. it's recommended that you check install.ps1 in notepad before running this just to make sure that it hasn't been tampered with and doesn't do anything bad

this will add the folder to your Path environment variable and create three shortcuts on your desktop to quickly add windows to your wallpaper and control mpv without opening a shell

type wp in a powershell or cmd window to check out the available commands

mpv

mpv is the ideal candidate to play video files or stream videos to your desktop when combined with weebp. it's an extremely powerful player that combined with youtube-dl can stream videos and livestreams from almost any url as well as conventional video files.

download the latest mpv and youtube-dl here

I like throwing the mpv files and youtube-dl into the same folder as weebp so they're available from everywhere

if you don't want to do this, just make sure mpv's path is in your Path environment variable

check out mpv-install.bat if you wish to make mpv your default player

recipe: automatic wallpaper set-up

this example starts infinitely looping playback of %USERPROFILE%\Videos\wallpapers using mpv, moves it to the right monitor and sets it as the wallpaper on that monitor. then it starts Google Chrome in kiosk mode (borderless) on a nice 3D demo site then sets it as the wallpaper on the left monitor.

create a .bat file in the same folder as wp.exe and put the following in it

@echo off

wp run mpv ^
--player-operation-mode=pseudo-gui ^
--force-window=yes ^
--terminal=no ^
--no-audio ^
--loop=inf ^
--loop-playlist=inf ^
--input-ipc-server=\\.\pipe\mpvsocket ^
%USERPROFILE%\Videos\wallpapers

wp mv --wait --class mpv -x 1920
wp add --wait --fullscreen --class mpv

wp run "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" ^
--incognito ^
--kiosk ^
--no-default-browser-check ^
https://awkure.github.io

wp add --wait --fullscreen --name "Purgatory | Home - Google Chrome"

if you have youtube-dl in the same folder as mpv, you can plug any youtube, twitch url or pretty much any streaming service instead of a video file/folder. try http://openings.moe ! this will slow down the start-up time as it needs to connect to a server

you'd set up a script like this to run on start-up if you want your wallpaper to persist at all times

recipe: controlling mpv while it's in the wallpaper

another neat mpv feature is that you can control it through a named pipe. this means that you can send commands to an instance of mpv running in your wallpaper to skip through your playlist, display text and more. all you have to do is start mpv with --input-ipc-server=\\.\pipe\mpvsocket

wp has a built-in shortcut to write commands to mpv like wp mpv playlist-next

by the way, there's a headless version of wp.exe called wp-headless.exe that doesn't pop up a terminal. this is useful if you want to create a shortcut that runs wp commands.

rationale and how it works

on linux you can just mpv --wid 0 to play a video on the wallpaper window, but windows makes it a bit more obscure. at first I tried drawing to GetDesktopWindow and a few other windows that seemed good candidates but it would just draw over the desktop icons.

after googling around a bit and dicking around on a friend's PC over teamviewer (I don't have windows installed) I found this great comment on codeproject that points out an undocumented window message that spawns a window behind the desktop icons. this is supposedly used to display the animation when switching backgrounds

I was delighted by the simple 2-lines-of-code solution so I decided to make my own lightweight wallpaper engine

the best part is that this transparently gives you the window handle so you can plug it into virtually anything. mpv accepts a --wid parameter on windows as well so that already allows you to play almost any video format to the wallpaper. if you add youtube-dl, you can also stream videos and livestreams from all major sites

it's as simple as mpv --wid=$(wp id) myvideo.mp4 and it doesnt require having steam open or anything

building from source

this is for developers and people who just want to compile this from source for any reason

install:

  • Visual C++ Build Tools 2017
  • Windows 10 SDK (8.1 should work as well)
  • git
  • 7zip

the preferred method of installing dependencies is chocolatey

choco install git 7zip visualcpp-build-tools windows-sdk-10 -y

now open a powershell window, clone and build for 32 and 64 bit

git clone https://github.com/Francesco149/weebp
cd weebp
Set-ExecutionPolicy Bypass -Scope Process -Force
.\vcvarsall17.ps1 x86; .\release.ps1
.\vcvarsall17.ps1 x64; .\release.ps1

if all goes well, this will create two zip's correctly named after the version and architecture

if you just want to build and not package, you can run cmd /c "build.bat" instead of .\release.ps1and it will buildwp.exe``` into the current directory

using it as a C library

weebp.c is a single header library, check the top of the file for documentation

#define WP_IMPLEMENTATION
#include "weebp.c"

if you prefer using it as an actual library, a static weebp.lib is included and you can link it and omit the WP_IMPLEMENTATION define to only include the header part of weebp

there's also a dynamic library weeb.dll, it's completely untested but it should work for FFI/Pinvoke in other languages

license

this is free and unencumbered software released into the public domain see the attached UNLICENSE or http://unlicense.org for details

More Repositories

1

sharenix

A ShareX clone for Linux and FreeBSD.
Go
590
star
2

oppai-ng

difficulty and pp calculator for osu!. better, smaller, faster rewrite of https://github.com/Francesco149/oppai
C
154
star
3

protonfit

automate installing/running fitgirl repacks on linux with proton. can also be used as a steam-less proton launcher
Shell
109
star
4

oppai

legacy version of my osu! pp calculator. the newer, better version can be found here https://github.com/Francesco149/oppai-ng
C++
102
star
5

nolibc-httpd

1kb single-page http server, static binary for linux x86_64
Assembly
91
star
6

markov.sh

markov chains in ~20 lines of sh, grep, cut and awk
Shell
55
star
7

reversing-sifas

information about love live all stars internals
42
star
8

uwpinject

dll injector for uwp apps
C
34
star
9

templeos-on-bare-metal

installing TempleOS on bare-metal, dual booting with linux and moving it to other machines without a dvd drive
34
star
10

AnimuEyes

procedural anime eyes shader for godot
GLSL
33
star
11

stupidlayers

simple low latency keyboard rebinding/hotkeys for linux using evdev and uinput + example motospeed ck62 binds
C
30
star
12

TempleOSGit

archive of HOPPY,J OS,LoseThos, SparrowOS,TempleOS exported as formatted plaintext (Personal branches are my own, not part of the archive)
HolyC
30
star
13

kouta

gameboy emulator in c89
C
28
star
14

linux-osu

personal script that sets up low latency osu! on linux for alsa and pulseaudio
Shell
27
star
15

bdf2x

pixel-perfect upscale bdf bitmap fonts
C
27
star
16

ojsama

pure javascript implementation of https://github.com/Francesco149/oppai-ng
JavaScript
26
star
17

jniproxy

ARM and x86 hooking framework for love live school idol festival EN and JP
C
25
star
18

hnng-moe

Source code for hnng.moe
PHP
25
star
19

docker-msvc

a visual c++ 2017 build tools environment for docker
24
star
20

fuckcaptcha

bypass reCAPTCHA detection in pyppeteer
Python
22
star
21

baremetal-x86

commented bare-metal x86 examples I wrote while learning
Assembly
22
star
22

uwpspy

dll that hooks various uwp interfaces for debugging and reverse engineering
C++
22
star
23

q3playground

quake 3 bsp renderer in c89 and opengl 1.x
C
21
star
24

reversing-fgo

information about fate grand order internals
20
star
25

pyttanko

osu! pp and difficulty calculator, pure python implementation of https://github.com/Francesco149/oppai-ng
Python
20
star
26

push_receiver

subscribe to GCM/FCM and receive notifications in python 2/3
Python
16
star
27

gopher

new gopherspace, will be mostly programming/tech writeups
15
star
28

todokete

headless client for love live school idol festival all stars + web ui
Kotlin
14
star
29

klbvfs

reads encrypted love live all stars databases
Python
14
star
30

nolibc

Collection of libc-free C snippets that I paste and tweak in my projects
C
14
star
31

stubgen

Portable Windows DLL stub generator. Currently supports Windows and Linux.
C
13
star
32

koohii

osu! pp and difficulty calculator, pure java implementation of https://github.com/Francesco149/oppai-ng
Java
12
star
33

libmfao

memory scanning library for linux and *nixes with /proc/pid/mem and /proc/pid/maps
C
12
star
34

sniffas

logs love live all stars (SIFAS) http traffic through a stub library
C
12
star
35

liboli

personal single-header c89 library with misc utilities (I actually made this just so that I can add -loli to ldflags)
C
12
star
36

WeebCore

(work in progress) single header platform layer and game dev library, public domain
C
12
star
37

fgohook

logs fate grand order HTTP traffic through a stub library
C
11
star
38

nier_uncapped

FPS uncapper for NieR: Automata
C
10
star
39

gachanator

extensible gacha game headless client/swiss-knife library
Python
10
star
40

apk_yoink

download android apks (including region locked ones) from the command line
Python
9
star
41

www.sh

http server in sh using busybox netcat with groff support
Shell
8
star
42

dotemacs

my emacs config
Emacs Lisp
8
star
43

2xProTamsyn

ProFont-11 2x upscaled with a couple extra glyphs taken from Tamsyn
7
star
44

sw_wall

basic doom-style 3D demo in pure software rendering in < 400 LOC
C
7
star
45

android-kotlin-template

sane template to write android apps in kotlin from the terminal without ever touching xml's
Shell
7
star
46

Francesco149.github.io

music visualizer using webaudio api and some manual 3D rendering on a 2D canvas
JavaScript
7
star
47

tinynx

a pure C89 single-file implementation of the nx format for maplestory
C
7
star
48

sm64pc_instructions

how to compile the unofficial sm64 pc port on windows and linux
7
star
49

shigebot.sh

twitch irc bot and irc-ifier in sh
Shell
7
star
50

mapleguide

(WORK IN PROGRESS) guide to all the core MapleStory systems
7
star
51

sharpx

C# implementation of thebennybox's software renderer in < 1000 LOC
C#
6
star
52

hoarder

various scripts I use to automate my data hoarding
Shell
6
star
53

dc_demos

various dreamcast demos and tools I wrote while experimenting with the platform
C
6
star
54

arrow-hell

game of life implemented only using lambdas
JavaScript
6
star
55

docker-dots

(personal config) dockerfile as a whole-system configuration
Shell
6
star
56

unlicenser

simple script to generate UNLICENSE contributor agreement/guidelines
Shell
5
star
57

fizzlefade.sh

fizzlefade effect from wolfenstein 3d implemented in sh
Shell
5
star
58

android-java-template

sane template to write android apps in java from the terminal without ever touching xml's
Shell
5
star
59

namae-async

tiny async-oriented dns client
C
5
star
60

loli-overlay

personal gentoo overlay
Shell
5
star
61

go-hachi

A CHIP-8 emulator written in go.
Go
5
star
62

flake

fell for the nix meme // personal nix flake
Nix
5
star
63

lolic

(WIP) prototype of my C dialect and its compiler
C
5
star
64

steam-linux-workarounds

works around various issues with steam and other programs running over nfs or trying to access a >2TB drive.
C
4
star
65

vimpls

broadcast commands to all running vim instances on linux
C
4
star
66

startix

automatically install artix linux with a basic dwm desktop
Shell
4
star
67

weeb

Mirrors gopher content over http. Written in C without the standard C library. Powers http://weeb.ddns.net/
C
4
star
68

McBuild

linux build scripts for McOsu and McEngine based projects, with patches for relocatable data dirs
Shell
4
star
69

vfio-setup

my low latency pure qemu vfio setup
Shell
4
star
70

gweet

A sharenix plugin that uploads images and videos to twitter.
Go
3
star
71

9readjpg

glibc standalone port of plan9's/9front's readjpg decoder
C
3
star
72

nand

my exploration of combinatory logic, in particular building computers out of NAND gates
Python
3
star
73

windots

personal windows scripts (mainly powershell)
PowerShell
3
star
74

Francesco149

dummy repo for github's banner thingy
3
star
75

tos-tools

a big mess of scripts I used to archive TempleOS
C++
3
star
76

dotfiles

anything that I couldn't fit into https://github.com/Francesco149/loli-overlay/tree/master/sys-config/loli
JavaScript
3
star
77

nxfs

fuse filesystem for the .nx maplestory format
C
3
star
78

surf

personal fork of suckless surf
C
3
star
79

shigebot

A basic twitch IRC bot written in Go.
Go
3
star
80

llsif_launcher

A launcher for School Idol Festival (android version) that allows you to easily manage your multiple accounts and log into the game with one of your accounts in a single click.
C
3
star
81

siftools

android shell utilities for love live school idol festival
Shell
2
star
82

disasm.sh

live disassembler in vim similar to compiler explorer
Shell
2
star
83

uwp-template

sane template to develop and deploy uwp dx11 c++ apps from the command line without ever touching visual studio
C++
2
star
84

MacQutebrowser

wrapper for qutebrowser on macOS 10.10+
Swift
1
star
85

jsonpath

(NOT MY CODE) backup of defunct repo NodePrime/jsonpath
Go
1
star
86

dmenu

personal fork of suckless dmenu
C
1
star
87

gma4500-gaming

performance info and tweaks for games on intel gma4500/G45 integrated graphics
1
star
88

homebrew-tap

personal homebrew tap
Ruby
1
star
89

dwm

personal dwm customizations
C
1
star
90

servo-embedding-example

servo embedding example to be used as a base for a future servo front-end
Rust
1
star
91

stackdl

sh script to download stuff from stackstorage.com
Shell
1
star