pacwall.sh
is a shell script that changes your wallpaper to the dependency
graph of installed packages. Each package is a node and each edge indicates a
dependency between two packages.
An AUR package is available.
Packages
Package/Distro
Arch
Void
Normal
Red
Explicitly installed
Blue
Orphan
Green (outlined)
Foreign (AUR, etc.)
Purple
X
Outdated
Yellow (outlined)
Virtual (see below)
White (translucent)
X
Dependencies
- A depends on B: an arrow that points towards B
- A provides B (B is a virtual package): an inverted arrow that points towards B (applies only to Arch)
The exact default colors have been taken from pywal's solarized theme. See Customization and Pywal integration if you want to change them.
sudo pacman -Syu --needed graphviz pacman-contrib
sudo xbps-install -S graphviz
pacwall
tries to set the wallpaper using feh
, hsetroot
and swaymsg
.
Use -D
to enable desktop environment integration (KDE Plasma, GNOME, ...).
You will be able to see the generated wallpapers in the graphical wallpaper picker.
DE integration requires imagemagick
and if you are on X11, xorg-xdpyinfo
.
If you are using a Wayland compositor other than sway, you need to specify
the screen size manually like this: ./pacwall.sh -DS 1920x1200
.
WARNING:
Setting a wallpaper in GNOME and the derivatives isn't possible with feh
and hsetroot
.
-D
is required.
Run ./pacwall.sh -W
to use colors set by pywal.
Some themes don't follow the color order convention, though many do. If you use a scheme that doesn't, then the color description table above may be partially invalid e.g. updates are highlighted green instead of yellow and orphans are yellow instead of green.
Customizations can be made on the command line, see the options with
./pacwall.sh -h
.
USAGE: pacwall [ -iDWULV ] [ -b BACKGROUND_COLOR ] [ -s EDGE_COLOR ] [ -d NODE_COLOR ] [ -e EXPLICIT_NODE_COLOR ] [ -p ORPHAN_NODE_COLOR ] [ -f FOREIGN_NODE_COLOR ] [ -u OUTDATED_NODE_COLOR ] [ -y VIRTUAL_NODE_COLOR ] [ -x ORPHAN_NODE_OUTLINE ] [ -z OUTDATED_NODE_OUTLINE ] [ -c ROOT ] [ -r RANKSEP ] [ -o OUTPUT ] [ -S SCREEN_SIZE ] [ REPO:COLOR ... ] [ GROUP%COLOR ... ] [ PACKAGE@COLOR ... ] Use -i to suppress wallpaper setting. Use -D to enable integration with desktop environments. Use -W to enable pywal integration. Use -U to disable highlighting of outdated packages. Use -L to label outdated packages using 'monospace 12.5pt' font. Use -V if you are on VOID LINUX (EXPERIMENTAL, SOME FEATURES DON'T WORK) All colors may be specified either as - a color name (black, darkorange, ...) - a value of format #RRGGBB - a value of format #RRGGBBAA If OUTLINE value is bigger than 1, then OUTLINE-1 additional circles are drawn around the corresponding packages. ROOT is the package that will be put in the center of the graph. RANKSEP is the distance in **inches** between the concentric circles. OUTPUT is the path where the generated image is put. SCREEN_SIZE makes sense to set only if -D is enabled and you're on Wayland. REPO:COLOR overrides the highlight color for packages from REPO to COLOR. GROUP%COLOR overrides the highlight color for packages from GROUP to COLOR. PACKAGE@COLOR overrides the highlight color for PACKAGE to COLOR.
Additional customizations can be performed by modifying the script itself.
The code in the script is well-structured (should be).
To discover the customization possibilities, read the man page of graphviz
and twopi
, particularly the section on GRAPH, NODE AND EDGE ATTRIBUTES.
90-pacwall.hook
is an example of a pacman hook that you may put into
/usr/share/libalpm/hooks/
. It will trigger wallpaper regenerating each time
a package is removed, added or upgraded. It's not a part of a package from AUR,
because one is expected to customize the pacwall invocation and flags. Also not
everyone likes the noticeable delay that the hook introduces to pacman invocations.
Pywal integration doesn't work.
If the graph is too large/small, use -r
.
For example, -r 0.3
means that the distance between the concentric circles
of the graph will be 0.3 inch.
- Nazar Vinnichuk: the original author and maintainer;
- PitcherTear22: integration with GNOME and other DEs, first ever rice with pacwall;
- John Ramsden: PKGBUILD, cmdopts parsing, general code quality;
- Ruijie Yu: PKGBUILD, sudo mode;
- Yannic Uhlmann: Void support;
- Luca Leon Happel: pywal integration,
hsetroot
backend; - QWxleA: screen size autodetection via
xdpyinfo
; - Daniel Bertalan: sway integration;