Enlightenment – Wallpaper Changers, Photo Frames and System Monitors
- December 7th, 2014
- Posted in Articles • openSUSE-e • Tech
- Write comment
Updated: Changed the set_wallpaper script to the version that was accepted into 4.21, added instruction to install typelib-1_0-AppIndicator3-0_1 for systray support
Three features i have missed in enlightenment from previous systems i have used are the ability to cycle through wallpapers from a folder, a photo frame gadget for photos that don’t work as well as a wallpaper and a good system monitor gadget. I have finally found a way to do all these using external programs so I thought i’d share them with you. I’ll start off with setting up each program then go through how to lauch any program on startup and turn any program into a desktop gadget.
 Wallpaper Changer (Variety)
I discovered Variety a few weeks back thanks to this blog on openSUSE News having looked at its website I discovered it clamed to support enlightenment after a couple of packaging issues I had it installed and working, but on my work machine with 2 screens and 16 Virtual desktops I noticed that it was only updating on 1 screen and not all Virtual Desktops at the same time, so i raised a bug then i started looking at the code to fix it. This was simple as variety uses a bash script to do the actual wallpaper change, I made a couple of simple changes that seem to have fixed the issues, firstly I i backgrounded the calls to enlightenment_remote, because sometimes they don’t return quickly, the second change i made is using xrandr to determine the number of screens and using this info to set the wallpaper on all screens rather then just the first. I have included the relevent part of the script below and the full script is avalible as at http://bazaar.launchpad.net/~simotek/+junk/MultiScreenSupport/view/head:/data/scripts/set_wallpaper it will be included in variety 4.21.
~.config/variety/scripts/set_wallpaper (extract) – insert from line 79
## Get the current number of virtual desktops desk_x_count=$(enlightenment_remote -desktops-get | awk '{print $1}') desk_y_count=$(enlightenment_remote -desktops-get | awk '{print $2}') ## Get the current number of screens screen_count=1 # If xrandr is available use it to get screen desk_x_count if command -v xrandr >/dev/null 2>&1; then screen_count=$(xrandr -q | grep ' connected' | wc -l) fi ## Set the wallpaper for each virtual desktop for ((x=0; x<$desk_x_count; x++)); do for ((y=0; y<$desk_y_count; y++)); do for ((z=0; z<$screen_count; z++)); do # -desktop-bg-add OPT1 OPT2 OPT3 OPT4 OPT5 Add a desktop bg definition. # OPT1 = ContainerNo OPT2 = ZoneNo OPT3 = Desk_x. OPT4 = Desk_y. OPT5 = bg file path enlightenment_remote -desktop-bg-add 0 "$z" "$x" "$y" "$OFILE.edj"& done done done # Remove all Variety wallpapers, but the current one and the previous one # as we are calling enlightenment_remote asynchronously, if the previous wallpaper hasn't been # replaced yet then the wallpaper will get set back to the theme one causing ugly artifacts LAST_WALLPAPER_FILE="$HOME/.config/variety/.enlightenment_last_wallpaper.txt" if [ -e $LAST_WALLPAPER_FILE ]; then find $OUTPUT_DIR -name "variety_wallpaper*.*" | grep -v "$OFILE.edj" | grep -v $(cat $LAST_WALLPAPER_FILE) | xargs rm else find $OUTPUT_DIR -name "variety_wallpaper*.*" | grep -v "$OFILE.edj" | xargs rm fi echo "$OFILE.edj" > $LAST_WALLPAPER_FILE exit 0
 Setup
- In “Settings -> Modules -> System” enable the DBus Extension Module
- Install Variety
- openSUSE users
- Install from package manger
- typelib-1_0-AppIndicator3-0_1 (Adds systray support) (patch pending for packages)
- Install from software.opensuse.org
- Install from package manger
- Other Distro’s look at http://peterlevi.com/variety/how-to-install/
- openSUSE users
- Run variety for the first time to configure it.
- You can reconfigure by running variety –preferences from the commandline.
- Download my set_wallpaper script and replace the one in ~/.config/variety/scripts (Should be included in versions after 4.20)
- Add variety as a startup application or put variety in your startup script, see below.
- You can go to the next wallpaper by running variety -n from the commandline.
 Photoframe (feh)
I like to have a photo frame on my desktop as alot of my photos of family, holidays etc don’t make great wallpapers. Feh is a photo viewing program that has been around since the dawn of time, it can be launched from the commandline with some useful paramaters and then like other applications can be turned into a desktop gadget using the pin to desktop flag and some window remembers (see below). First i cd to the directory with the photos that i wish to be in my photoframe then i run the following
feh -z -g 320x240 --slideshow-delay 300 --image-bg black&
-z randomises the order the images are displayed -g sets the size and the final two options set the time photos are shown for before changing and the background color.
 Setup
- Install feh
- Create a feh.sh or copy mine and set the path to your photos
- cd to the directory with your photos
- run the above feh command
- Make feh.sh executable, chmod +x feh.sh or use your favorate file manager.
- Add <Full_PATH>/feh.sh& to your startup script (See Below)
- Setup window flags and remembers (See below)
 System Monitor (Conky)
Conky is a very flexible system monitoring application that has been around for quite some time. Using google you will see there is a huge number of configurations. The conky config file is capable of setting all the window flags and positioning required without setting anything from enlightenment, that is what i did in this config from a older blog post I have found that the positioning doesn’t work well with multiple screens so I have been using the following config file you will need to rename it to .conkyrc, and put it in your home directory.
 Setup
- Install conky
- put my .conkyrc in your home directory
- Add conky as a startup application or put conky in your startup script, see below.
- Set your window flags and remembers (as below)
 Creating startup scripts and application launchers
Enlightenment lets you start any application on startup through its “Startup Applications” setting, there are several scripts that I like to run at startup, one to lauch a synergy server and another to launch feh as above amongst other things. I have put a example below that launches all the programs above. Generally enlightenment recognisise applications by the .desktop file that ships with them, to make enlightenment recognise our script we need to create a .desktop file for it, fortunatly enlightenment makes this easy with its add Personal Application Launcher dialog. The Personal Application Launcher can also be used to add a script to the ibar.
#!/bin/bash variety & conky & /home/simon/src/scripts-config/feh.sh &
 Setup
- Create a bash script with the above code called startup.sh.
- A bash script is a text file that starts with #!/bin/bash
- Create the file in your favorate text editor with the code above
- Make the file executable (Use your file browser or chmod +x from the command line)
- A bash script is a text file that starts with #!/bin/bash
- In the settings panel go to “Apps->Personal Application Launchers”
- Set the name as “Startup”
- Set the comment to whatever you want
- Set the Application to the full path of the startup script just created above.
- Set the icon if you feel like it (useful if you want to run the script from the ibar).
- In options
- Keep “Run In Terminal” unchecked
- You probably also want to uncheck “Show In Menus”
- In the settings panel go to “Apps->Startup Applications”
- Under “Applications” find and select “Startup” or which ever name you put in the application launcher
 Turning a application into a desktop gadget with window flags
For most applications you will need to start with the following, conky you don’t need to as they are set in the config file. All these options can be found by right clicking on the window border.
- Set sticky on. (Shows the windows on all Virtual Desktops)
- In “Window->Skip” select the following, we don’t want our gadgets to show up in these places
- Taskbar
- Pager
For all windows you will need to do the following
- Set the position (Drag the window to where you want it)
- Go to “Window->Remember” Select all (This way all the things we set will be remembered between boots)
- Finally you have to choices i have shown screenshots with both
- Most people will want to select “Window->Stacking->Pin To Desktop”
- I’m using “Window->Stacking->Always Below” because i like the borders, and in the custom theme i’m doing i’ll make a border with no title and buttons
Awesome tip on the variety thing, now testing it and enjoying.