SlickBar (current version: 0.9.1)

SlickBar is a desktop enhancement for SuperKaramba that I wrote to be a modular, plugin- (or Panel-) based taskbar replacement.

SlickBar is intended to go a little farther than just being a SuperKaramba "theme". It consists of individual "Panel"s, which can be placed independently of one another using the XML configuration file. As of v0.9, SlickBar now includes a config GUI so you no longer have to edit the config file by hand. The config GUI includes a preview display (with drag and drop panels), and the ability to apply changes without restarting SuperKaramba! To take a look at some of the features lined up for future versions, see the TODO section.

I welcome people to try their hand at writing SlickBar Panels, however I would suggest waiting for version 1.0 to be released. Version 1.0 will be (or is, if you consider the unstable version on my computer) based on Skoot, and therefore has a number of API changes. There will be complete SlickBar API documentation for version 1.0, along with a useful tutorial.

If you create a nice Panel that could be useful to lots of people, I'd be glad to distribute it with SlickBar (with your permission, of course).

Features

  • Each Panel can be placed independently of the others (the last screenshot has an example of a configuration different than the default)
  • The MusicPanels (NoatunPanel and XMMSPanel) allow you to: go back/forward, stop, play/pause, open/close the playlist, and skip to any part of the song by clicking on the progress bar.
  • The QuickLaunchPanel creates an auto-sized panel using KDE links in the QuickLaunch directory, and finds the *right* icons using PyKDE!
  • The TaskPanel can be set to any size, and each task button sizes itself to fit inside the bar. As well, it automatically finds the appropriate icon for each task (and is pretty successful) as well as grouping related tasks into single buttons (see screenshot #2).
  • The PagerPanel allows you to switch between virtual desktops -- plus it automatically detects the number of desktops you are using and sizes itself to fit!
  • The SysTrayPanel acts as a replacement for the KDE system tray.
  • SlickBar includes a full-fledged Config GUI that allows you to add, remove, and arrange panels, as well as customize their appearance (see screenshot #1).
  • All fonts and colours are customizable on a per-Panel basis using the Config GUI.

Screenshots

Click on a screenshot to enlarge it.

Default Configuration with Config GUI

The default configuration, including the TaskPanel, XMMSPanel, QuickLaunchPanel, PagerPanel, and SysTrayPanel, with the Config GUI open.

Grouped Tasks

A demonstration of the TaskPanel's grouped tasks (including the more accurate icons available using the addMenuTaskItem patch)..

Another Configuration

Another configuration I threw together. It demonstrates PagerPanel's ability to handle a different number of desktops, as well as showing the configuration panel open.

Preview Images of v1.0

Click on a screenshot to enlarge it. Version 1.0 is currently in development, but here is some stuff to whet your appetite.

WhiteMetal Skin Preview

A preview of a new skin that will be available for SlickBar v1.0 (along with the default, and possibly others). This skin is not yet complete, and neither is the skin engine, but this is a mockup of what it should look like (if it doesn't end up quite like this, it will be because I make it better :)).

WhiteMetal Skin Preview

The same skin as above, only with the config menu open.

Requirements

SlickBar requires SuperKaramba 0.33, the Python XML libraries, and Tkinter (Tcl/Tk) for the config GUI. Most people probably have the python libs already, most python installations should have them.

The XMMSPanel requires the PyXMMS module. It is available here. Don't worry if you don't have it and you intend to use the NoatunPanel.

NoatunPanel (but not NoatunPanelSlow) requires the PyKDE module. You can get it here. Alternatively, you can use NoatunPanelSlow, but the "Slow" means REALLY REALLY SLOW. You have been warned.

QuickLaunchPanel, TaskPanel, and PagerPanel also require PyKDE.

Download

SlickBar is available for download from KDE-Look.org. Click here to download SlickBar, or check out the SlickBar page on KDE-Look.

TODO

This is a list of items currently on my todo (or that are completed but not available in a public version of SlickBar). It is a verbatim copy of the todo I use during development, so it might seem somewhat thrown together. If there is anything you think should be on this list that isn't, feel free to tell me. Note that things on this list aren't necessarily going to be in the next version.

  • config GUI:
    • make the font selectors have a font list
    • make a better colour selector
    • fine-tune the accuracy of the preview (likely target: v1.0, along with skinning/geometry fixups)
  • general options:
    • add an option to hide the K-button and the date/time panel (likely target: 1.0)
    • ontop/autohide type thing
    • add an option to "disable" kicker.
  • drag/drop (REMEMBER: drag/dropped filenames are encoded!):
    • QuickLaunchPanel (drag a file, it adds an icon for it)
    • MusicPanels (drag a file, it adds it to the playlist)
    • PagerPanel (drag an executable, it opens it on the desktop you drop it on)
  • TaskPanel:
    • fix no update on task name change
    • make minimized tasks look different
    • add mouse menu for apps
    • add task startup feedback
    • make slickbar more responsive to specific task events/reduce task-list reloading for speed improvements
  • MusicPanels:
    • make MusicPanels resizable (this will likely be done at the same time as "pressable buttons", below)
    • make it so that musicpanels have a "launch" button when the player they are associated with is not open
    • Make MusicPanels auto-align track buttons based on the fonts used
  • PagerPanel:
    • Cleaner resizing using new API (COMPLETED, v1.0).
  • SysTrayPanel:
    • Auto-panel sizing and automatic reloading when icons are added/removed using new API
  • Make SystemButtonsPanel
  • Add BiStatePanel (target: 1.0)
  • write support for larger ("taller") panels the size of the main panel
  • extend slickbar.Reload exception mechanism to work with mouseMove(), click(), etc
  • write a CPU/memory/etc monitor panel
  • write some more panels... implementations of kicker applets, some other stuff...
  • add visual feadback to buttons on the panels ("pressable buttons") (target: 1.0)
  • make slickbar skinnable. This will include fixups to the geometry/positioning logic (target: v1.0)
  • update the API tutorial (target: v1.0)
  • Cleanup the API and make it Skoot-based (COMPLETED, v1.0)
  • Display "now loading" as slickbar loads (COMPLETED, v1.0) + a progress bar (target: v1.0)
  • Even more useful error messages and kdialogs for troubleshooting (COMPLETED, v1.0)
  • No more "infite widgetUpdated errors" (COMPLETED, v1.0)
  • Fast, clean panel resizing (COMPLETED, v1.0)
  • Make date/time python controlled (target: v1.0)
  • visual indication of MusicPanel status (target: v1.0)

Changelog

A detailed list of the changes in SlickBar since v0.2 is available here