Git Product home page Git Product logo

pacwall's Introduction

screenshot.png

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.

Highlighting

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

Requirements

Arch Linux

sudo pacman -Syu --needed graphviz pacman-contrib

Void Linux

sudo xbps-install -S graphviz

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.

Customization

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.

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

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

pacwall's People

Contributors

augustunderground avatar bertaland avatar johnramsden avatar kharacternyk avatar p00f avatar qwxlea avatar ruijieyu avatar xon-dev avatar

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.