Difference between revisions of "User:Xterminus/Perl Background Rotation/Extensions"

From ArchWiki
Jump to: navigation, search
Line 1: Line 1:
[[Category:Perl Background Rotation (English)]]
[[Category:Perl Background Rotation]]

Revision as of 16:19, 23 April 2012

These features are disabled by default. You will need to spend time carefully reading through your .wallrc file to ensure that these perform correctly.

  1. Introduction : What this does
  2. Installation : Getting the basics handled.
  3. Using Extensions : Optional feature setup.
  4. Script Extras : Related Software
  5. Tips and Tricks : Fun for the whole family!
  6. Hacking : How to create your own extensions
  7. Code : Code walkthrough and some design notes
  8. FAQ : Frequently Asked Questions
  9. Screenshot Gallery : If you use these scripts, show off!
  10. Resources : A comprehensive wallpaper list.

Image Mangling, cropping, etc

Setting this up should be pretty straightforward if you read through the configuration file. You should be aware however, that this particular feature above all others can push your cpu hard. You WILL want to run this script at nice priority 10 or above in order to limit the effect this script may have on your performance.

Here is an example showing two different auto-generated wallpaper themes which use the "image mangling" function.

http://www.taclug.org/~cmauch/screenshots/20061014-a-thumb.jpg http://www.taclug.org/~cmauch/screenshots/20061014-b-thumb.jpg

Configuration File Tweaking

The wallie daemon has a pretty sophisticated color scheme generation function. You can use the colors generated by this function in order to create or update configuration files for pretty much any software in GNU/Linux that uses a textfile for its configuration data.

In general, the process works like this. Any user wishing to make use of this process should supply a "template" configuration file. The daemon will read in the template and spit out a completed configuration file. When the render process is complete, the daemon will attempt execute a system command in order to tell the target program to reload it's configuration. In conky, this is a SIGUSR1 signal, in Openbox, it's a SIGUSR2, and in gnome you change a gconf registry key.

The following keywords will be replaced by real six digit hexadecimal color values. (The same as web pages).


This simple chart shows the relationship between the various colors, using a base color of 8c7746 ( a tan/brown ).


Color selection can be tricky. My implementation works like this:

First, the brightness of the background's mean color is set to 50%. This ensures that we don't end up with a scheme that's garish or pale. Then the saturation is determined (the saturation is the difference between the values of red/green/blue). If the saturation level is determined to be too low, a "preset" is selected as the base color.

The color scheme are generated by picking for colors based on the "base" color, then shifting about 30 degrees in each direction on the color-wheel and repeating the process for "warm" and "cool" schemes. The daemon then shifts clockwise and counter-clockwise again to generate "warmer, cooler, warmest, and coolest" schemes. Finally, the complementary color schemes are picked by selecting the color 180 degrees out of phase with the base color, and then shifting clockwise and counterclockwise again.

Conky Templating

Everyone has a favorite conky configuration. If you would like to modify your own to act as a template, it's not brain surgery. However, you might want to look at my conky template as a reference.

This perl script will read up template and transform it into a new one. Said in other words. Do not point conky to use the template file, point conky to the output conky file.

When the new file is written, a SIGUSR1 signal is sent to all running conky processes. This signal tells conky that it's configuration has changed and that it needs to reload. This is fairly painless process, although while conky is reloading it may "stick" or flicker.

Note: If you make other major changes to your conky config, those changes may not take with only a SIGUSR1 signal. I noticed that while colors change just fine on a SIGUSR1, other aspects of conky do not. For example: when adding brand new text or variables, conky does not seem to add them to the output text.

Openbox Styles

The process for creating a conky and openbox theme is virtually identical. The only difference seems to be that openbox seems to behave best when it's sent a SIGUSR2 signal.

GTK Themer

GTK themes can now be templated. A sample GTK theme based on the Murrine GTK engine is provided in the tarball.

Setup for GTK theming is a little weird. Basically, Gnome and GTK apps will not reload theme information unless you actually change the theme value in the gconf registry to something else. So you should place the gtk theme in .themes/Wallie1 and then create a symbolic link from Wallie1 to Wallie2. As each theme is generated, the daemon will toggle between these two directories (Wallie1 and Wallie2), which will ensure your gnome apps stay current.

urxvt Blurry Terminals

Blurring the backgrounds of your transparent terminals can improve the readability of text. Take a look at these two (nearly) identical terminals.


In addition to improving the readability, it looks kinda neat. I stumbled across this this effect while playing with the automove-background urxvt perl extension.

Getting Started

Fou will need to copy urxvt-theme into either a private bin folder or /usr/lib/urxvt/perl, you will need probably want to modify your .Xdefaults file to make use of this extension too.

These settings seem to work well for me.

urxvt*inheritPixmap:    false
urxvt*fading:           20
urxvt*fadeColor:        black
urxvt*tintColor:        #EFEFEF
urxvt*foreground:       #EFEFEF
urxvt*background:       black
urxvt*internalBorder:   0

urxvt*perl-lib: /home/cpm/bin/perl
urxvt*perl-ext-common: automove-background,urxvt-theme

the perl-lib is the path to your personal urxvt library. You can omit this if you copy urxvt-theme into /usr/lib/urxvt/perl.

Alternately, you can execute the urxvt extension with the following urxvt commandline:

urxvt -pe automove-background,urxvt-theme

Please note that this has not been throughly tested with urxvtc and urxvtd.

How it works

The urxvt extension basically opens a UNIX socket connection to the wallie process and waits for update information. When wallie generates a new background, it blasts out an UPDATE command to every urxvt terminal listening on the socket.

The process is VERY fast and lightweight, and the urxvt theme extension has gone through several large revisions in order to make it so.

The urxvt-theme extension is not a stand-alone urxvt extension. It requires a running copy of the wallpaper daemon so that urxvt terminals have somewhere to pull configuration information from.

Prev: Installation | Next: Script Extras