Enlightenment – Wallpaper Changers, Photo Frames and System Monitors

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.

Feh and Conky as desktop gadgets

Feh and Conky as desktop gadgets

 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
  • 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.
A variety screenshot

A Variety screenshot from the Variety website (Not Running Under Enlightenment)

 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.

A conky screenshot from https://bbs.archlinux.org/viewtopic.php?id=39906&p=40

A conky screenshot from The Arch Linux Forums

 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)
  • 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”
Personal Application Launcher settings

Personal Application Launcher settings

  • 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
Setting the startup application

Setting the startup application

 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

 

My Current Desktop

My Current Desktop

 Downloads

Set Wallpaper script

feh.sh

  • Enlightenment – Wallpaper Changers, Photo Frames and System Monitors
    • Gustavo
    • January 29th, 2015

    Awesome tip on the variety thing, now testing it and enjoying.

  1. No trackbacks yet.

Return top