FreeBSD Desktop – Part 19 – Configuration – Plank – Skippy-XD

Long time no see :). In this article of the FreeBSD Desktop series we will add Plank and Skippy-XD to the existing setup.

I will share with You Plank configuration along with theme that fits to the rest of the setup. Plank is an open implementation of the ideas that was brought to life by Mac OS X (macOS) Dock. We will also add Skippy-XD tool that implements Mac OS X (macOS) Expose ideas.

One my ask why use Plank while we already have Tint2 for similar purposes? While both support autohide I prefer to see Tint2 all the time to get basic/fast idea about what is launched on which desktop and have Plank hidden as it does not hurt and sometimes helps.

Here is both Mac OS X (macOS) Dock and Expose in action.

macosx-dock-expose.jpg

You may want to check other articles in the FreeBSD Desktop series on the FreeBSD Desktop – Global Page where you will find links to all episodes of the series along with table of contents for each episode’s contents.

To install both Plank and Skippy-XD on FreeBSD just use the default packages as shown below.

# pkg install skippy-xd plank

Plank

Here is how Plank dock composes with the rest of the setup.

shot-res-small

The Plank dock comes with graphical preferences window if needed but you need to launch it from the command line as plank --preferences command.

plank-prefs.jpg

Here is the used Plank theme which is kept in the ~/.local/share/plank/themes/vermaden/dock.theme file.


% grep '^[^#]' ~/.local/share/plank/themes/vermaden/dock.theme

[PlankTheme]
TopRoundness=0
BottomRoundness=0
LineWidth=0
OuterStrokeColor=0;;0;;0;;255
FillStartColor=40;;40;;40;;255
FillEndColor=40;;40;;40;;255
InnerStrokeColor=40;;40;;40;;255

[PlankDockTheme]
HorizPadding=0
TopPadding=1
BottomPadding=2
ItemPadding=2.5
IndicatorSize=10
IconShadowSize=0
UrgentBounceHeight=0
LaunchBounceHeight=0
FadeOpacity=0
ClickTime=300
UrgentBounceTime=600
LaunchBounceTime=600
ActiveTime=300
SlideTime=300
FadeTime=250
HideTime=150
GlowSize=24
GlowTime=10000
GlowPulseTime=2000
UrgentHueShift=150
ItemMoveTime=150
CascadeHide=true

[PlankDrawingDockTheme]
HorizPadding=0
ItemPadding=2.5
CascadeHide=true

And here are mine Plank dock settings which are kept in the ~/.config/plank/dock1/settings file.


% grep '^[^#]' ~/.config/plank/dock1/settings

[PlankDockPreferences]
CurrentWorkspaceOnly=false
IconSize=32
HideMode=0
UnhideDelay=0
HideDelay=0
Monitor=DP-1
DockItems=caja.dockitem;;leafpad.dockitem;;firefox.dockitem;;geany.dockitem;;thunderbird.dockitem;;galculator.dockitem;;deadbeef.dockitem;;transmission-gtk.dockitem;;pidgin.dockitem
Position=3
Offset=20
Theme=vermaden
Alignment=3
ItemsAlignment=3
LockItems=false
PressureReveal=false
PinnedOnly=false
AutoPinning=true
ShowDockItem=true
ZoomEnabled=false
ZoomPercent=150


Skippy-XD

You may wonder why the XD in the Skippy name. Its because Skippy started as a pure software solution – which unfortunately was quite slow – especially in the times when Skippy was introduced, and it was about a decade ago. Then Skippy developers rewrote it to use the – new then XDAMAGE module for X11 – from this change Skippy started to work almost instantly – and this was marked in its name and it remains to this date as Skippy-XD.

This is how Skippy-XD looks like.

skippy-xd.jpg

The Skippy-XD does not need/support themes – it just has a configuration file located at ~/.config/skippy-xd/skippy-xd.rc place.


% grep '^[^#]' ~/.config/skippy-xd/skippy-xd.rc

[general]
distance = 50
useNetWMFullscreen = true
ignoreSkipTaskbar = true
updateFreq = 30.0
lazyTrans = true
pipePath = /tmp/skippy-xd-fifo
movePointerOnStart = true
movePointerOnSelect = true
movePointerOnRaise = true
switchDesktopOnActivate = true
useNameWindowPixmap = false
forceNameWindowPixmap = false
includeFrame = true
allowUpscale = true
showAllDesktops = true
showUnmapped = true
preferredIconSize = 32
clientDisplayModes = thumbnail icon filled none
iconFillSpec = orig mid mid #666666
fillSpec = orig mid mid #FFFFFF
background =

[xinerama]
showAll = true

[normal]
tint = black
tintOpacity = 0
opacity = 200

[highlight]
tint = #202020
tintOpacity = 64
opacity = 255

[tooltip]
show = true
followsMouse = true
offsetX = 20
offsetY = 20
align = left
border = #111111
background = #333333
opacity = 128
text = #eedddd
textShadow = none
font = ubuntu-10:weight=normal

[bindings]
miwMouse1 = focus
miwMouse2 = close-ewmh
miwMouse3 = iconify

One of the nice features of Skippy-XD is that you can configure it per desktop or globally per all currently existing virtual desktops. I also prefer to display window thumbnails only from the windows that exist on the current desktop. You can of course change that behavior with the Skippy-XD config file.

EOF

14 thoughts on “FreeBSD Desktop – Part 19 – Configuration – Plank – Skippy-XD

  1. Pingback: FreeBSD desktop (19) | 0ddn1x: tricks with *nix

  2. Pingback: Valuable News – 2019/12/16 | πšŸπšŽπš›πš–πšŠπšπšŽπš—

  3. Kane

    I am having problems, these either .xinitrc or these scripts will not launch dzen2 and tent2. openboxes launches without them, I cannot seem to find any errors being generated.

    #PATH TO SCRIPTS
    export PATH=${PATH}:~/scripts

    # SET PROPER locale(l) with LC_ALL VARIABLE.
    export LC_ALL=en_US.UTF-8

    # PRESTARTED APPS
    xterm
    xsetroot -solid black &
    ~/scripts__openbox_restart_dzen2.sh &
    ~/scripts/__openbox_restart_tint2.sh &
    # WINDOW MANAGER
    openbox

    I am using startx (not xdm), and I have verified all the scripts are installed and i’m pretty sure theyre executable Here is the output of ls in ~/scripts/
    https://dpaste.com/4R7MX6KVH.txt

    and my crontab…

    SHELL=/bin/sh
    PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin
    # Order of crontab fields
    # minute hour mday month wday command

    * * * * * ~/scripts/desktop-kill-shit.sh 1> /dev/null 2> /dev/null

    */5 * * * * ~/scripts/desktop-battery-warning.sh

    */20 * * * * ~/scripts/random_wallpaper.sh ~/gfx/wallpapers 1> /dev/null 2> /dev/null

    12,0 * * * * /usr/bin/find ~/.cache -mtime +10 -delete 1> /dev/null 2> /dev/null

    0 */3 * * * /usr/bin/find ~/.local/share/Trash/files -mtime +1 -delete 1> /dev/null 2> /dev/null

    0 * * * * ~/scripts/dzen2-update.sh 1> ~/.dzen2-fifo 2> /dev/null

    Like

    Reply
    1. vermaden Post author

      Hi.

      Change that:

      ~/scripts__openbox_restart_dzen2.sh &
      ~/scripts/__openbox_restart_tint2.sh &

      Into that:

      ~/scripts/__openbox_restart_dzen2.sh &
      ~/scripts/__openbox_restart_tint2.sh &

      Regards.

      Like

      Reply
      1. Kane

        So I have dzen2 running, however the tint2 script will not run from ,xinitrc
        It can be started manually, and so can tint2 and it seems to wrok but running it like that from .xinitrc does not seem to work

        #PATH TO SCRIPTS
        export PATH=${PATH}:~/scripts

        # SET PROPER locale(l) with LC_ALL VARIABLE.
        export LC_ALL=en_US.UTF-8

        # PRESTARTED APPS
        xterm &
        xsetroot -solid black &
        ~/scripts/__openbox_restart_dzen2.sh &
        ~/scripts/__openbox_restart_tint2.sh &
        # WINDOW MANAGER
        openbox

        Furthermore, what must I do to make dzen2 update on its own? I have to click it at the moment, i will re-read that part in the mean time. I am legally blind so I miss things sometimes

        Like

  4. Kane

    Whoops, I had to type my .xinitrc out on here, so I should say that missing slash does not reflect my actual .xinitrc

    Like

    Reply
    1. vermaden Post author

      The idea is that DZEN2 updates ‘automatically’ as often as configured in the crontab(5) file to save battery time and to not distract.

      This (your config) means once every hour:

      0 * * * * ~/scripts/dzen2-update.sh 1> ~/.dzen2-fifo 2> /dev/null

      To make it run every 5 minutes use this:

      */5 * * * * ~/scripts/dzen2-update.sh 1> ~/.dzen2-fifo 2> /dev/null

      Regards.

      Like

      Reply
  5. Kane

    Thanks, but I still cannot seem to get tint2 to launch properly. I have re-done the entire guide, save the bit on XDM.
    When running the script manually there are no errors other than it complaining about me using UFS, and starting in rhe wrong spot.

    Like

    Reply
    1. vermaden Post author

      I use ~/.tint2rc.ALL as a configuration file in the __openbox_restart_tint2.sh script.

      tint2 -c ~/.tint2rc.ALL

      You are probably using the shorter ~/.tint2rc name.

      Like

      Reply
      1. Kane

        Thanks, you were correct. Guide suggested the use of the rc file but I guess I should have thoroughly run the script, I think the important things working now.
        May I ask how you start things ike xbindkeys? it seems to be one of those things that .xinitrc likes to ignore.

        Like

      2. vermaden Post author

        That one I do ‘typically’ πŸ™‚

        % ls -l ~/.xbindkeysrc 
        -rw-r--r--  1 vermaden  vermaden  971 2020.06.04 09:04 /home/vermaden/.xbindkeysrc
        
        % grep xbindkeys ~/.xinitrc
          xbindkeys                                      1> /dev/null 2> /dev/null &
        

        Like

  6. kane

    I see, .xinitrc is so finicky. I wonder why these extra steps are needed, foss really be like that sometimes
    Thank you

    Like

    Reply
  7. Pingback: FreeBSD GNOME 3 Fast Track | πšŸπšŽπš›πš–πšŠπšπšŽπš—

Leave a reply to vermaden Cancel reply