Skip to content

A dependency graph of installed packages wallpaper creator.

License

Notifications You must be signed in to change notification settings

Z2h-A6n/pacwall

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

image

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.

Navigation:

Highlighting

  • Packages

    Package/Distro Arch Void Gentoo
    Normal Red
    Explicitly installed Blue
    Orphan Green (outlined) X
    Foreign (AUR, etc.) Purple X Purple
    Outdated Yellow (outlined) X
    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.

Requirements

Arch Linux

sudo pacman -Syu --needed graphviz pacman-contrib

Void Linux

sudo xbps-install -S graphviz

Gentoo Linux

sudo emerge media-gfx/graphviz app-portage/eix

Wallpaper backends

pacwall tries to set the wallpaper using feh, hsetroot and swaymsg.

Desktop environment integration

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.

Pywal integration

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.

Xresources integration

Run ./pacwall.sh -X to use colors set in Xresources.

Customization

Customizations can be made on the command line, see the options with ./pacwall.sh -h.

USAGE: pacwall
        [ -iDWXULV ]
        [ -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 -X to enable Xresources integration.
        Use -U to disable highlighting of outdated packages.
        Use -L to label outdated packages using 'monospace 12.5pt' font.

        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.

        If you are on a distribution other than Arch, not all of the above will work.
        Partly supported distributions: Void, Gentoo.

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.

Tips and tricks

Pacman hook

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 the package in 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.

Graph size

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.

Contributors

Similar software

About

A dependency graph of installed packages wallpaper creator.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Shell 100.0%