1. mathematicalcoffee
  2. xpenguins-gnome-shell-extension


xpenguins-gnome-shell-extension /

Filename Size Date modified Message
380 B
526 B
8.6 KB
11.9 KB
26.0 KB

xpenguins GNOME Shell Extension

This extension is a port of the original XPenguins to GNOME-shell. Little cute penguins walk around on your desktop and windows, and get squashed if you drag windows over them.

If you have Linux but not GNOME-shell, just use the original XPenguins. Even if you have GNOME-shell you can run the original XPenguins, but you have to set Nautilus to handle the desktop, and the toons will think that the windows are bigger than they actually are so it can look weird.

Penguins walk all over your windows Configure via menu
Screenshot of XPenguins extension Configure XPenguins

Extension written 2012 by mathematical.coffee mathematical.coffee@gmail.com.
The original XPenguins was written by Robin Hogan (http://xpenguins.seul.org/).
Project webpage: at bitbucket.


To start/stop XPenguins, use the toggle.


XPenguins is themable, and you can have multiple themes running simultaneously. Use the sliders to add or remove toons from each theme. Clicking the 'help' button to the left of the slider will give you some more info on the theme and its creators.

Ignore popups

Whether popup windows (right click menu, tooltips) are considered solid to the toons.

Ignore maximised windows

Whether maximised windows (and windows underneath these) are ignored. Toons only run around on the region of your desktop not covered by windows, so if windows are maximised you won't get any toons. Ignoring maximised windows means you can enjoy toons even with maximised windows. They will only bump into windows that are visible and non-maximised.

Ignore half-maximised windows

If ignoring maximised windows is true, should we also ignore half-maximised windows (those that are maximised vertically or horizontally but not both)? This can be handy for people with big monitors who just use half-maximised windows all the time. Only used if 'Ignore Maximised' is true.

Always on visible workspace

Whether toons stay on the workspace you started XPenguins on, or follow you around all your workspaces.


Whether to show animations with blood (for example in the original Penguin theme the 'splat' animation has blood).


Whether to show penguin angels floating up to heaven after dying.

God mode

Enabling "God mode" lets you squash (smite) toons by clicking on them.

Time between frames

The time (in milliseconds) between each frame of the animation. By default the number specified by the theme is used (probably 60ms).

Recalc Mode

Ignore this. If you are suffering from severe performance issues AND you resize/move your windows really really often you can try switching this to "PAUSE" which will pause toons while you drag windows around. It probably won't make much difference at all.

Load Averaging

This defines two thresholds; when the computer's load average (for example given by uptime or top) exceeds the lower threshold, toons will start to be killed. When the load average exceeds the upper threshold, all toons will be killed. This checks the load average every 5 seconds.


The easy way (recommended):

  1. Download the .zip file on the Downloads page.
  2. Open gnome-tweak-tool, go to "Shell Extensions", "Install Extension" and select the .zip file.

Alternatively (developers?):

  1. Checkout the repository: hg clone https://bitbucket.org/mathematicalcoffee/xpenguins-gnome-shell-extension
  2. Update to the 3.2 or 3.4 branch (the default branch is NOT guaranteed to work!).
  3. Copy the folder xpenguins@mathematical.coffee.gmail.com to .local/share/gnome-shell/extensions.
  4. If on GNOME 3.2, use dconf-editor and modify the key /org/gnome/shell/enabled-extensions to include 'xpenguins@mathematical.coffee.gmail.com'. If on GNOME 3.4, then just do gnome-shell-extension-tool -e xpenguins@mathematical.coffee.gmail.com.

All together now:

hg clone https://bitbucket.org/mathematicalcoffee/xpenguins-gnome-shell-extension
cd xpenguins-gnome-shell-extension
# Use 'hg branches' to see what branches are available. They are GNOME versions it is compatible with.
hg up 3.2 
cp -r xpenguins@mathematical.coffee.gmail.com ~/.local/share/gnome-shell/extensions
# if you have GNOME 3.4:
gnome-shell-extension-tool -e xpenguins@mathematical.coffee.gmail.com
# if you have GNOME 3.2:
dconf read '/org/gnome/shell/enabled-extensions' | sed -r -e 's#\[(.+)\]#dconf write "/org/gnome/shell/enabled-extensions" "[\1, '\'xpenguins@mathematical.coffee.gmail.com\'']"#' | /bin/sh


I want more themes!

By default this comes with the Penguins, Big Penguins, Classic Penguins, Turtles, and Bill themes. Normal XPenguins themes will work - put them in ~/.xpenguins/themes or in the folder themes in the extension directory and they will be detected.

XPenguins themes Simpsons Sonic the Hedgehog, Lemmings, Winnie the Pooh and Worms can be downloaded from the XPenguins website (on the right where it says "XPenguins Themes 1.0 (16 December 2002)").

Even more themes created by users of XPenguins can be found here.

To learn about creating your own themes, read the THEMES section of the xpenguins man page and have a look at the config file for the Penguins theme (in themes/Penguins/config).

I found a bug!

See next question.

The toons froze and toggling them off doesn't do anything.

You must have discovered a bug in the extension! Contact me on the issues page with: your gnome-shell version your extension version (look in metadata.json; give both dev-version and version) your current options configurations: what themes you had turned on and what options (on all workspaces, ignore popups, etc) were on. if you know how to reproduce the bug, do let me know! * finally: look at the bottom of ~/.xsession-errors and if it has any 'JS ERROR !!!' lines, give me those too.

You'll have to restart gnome-shell to wipe those frozen toons off your screen.

Known issues

Here are some known issues/limitations of the program (if you think you can fix one, feel free to check out the code and have a go!)

  • When you have dual monitors of different sizes, toons will happily walk in the areas of the combined screens' bounding box that are not visible to the user (patches welcome!).
  • Toons don't treat the message tray or gnome-shell menus/popups as solid. This is because XPenguins can only make toons interact with objects that the window manager knows about, and things created with GNOME-shell such as the message tray/notifications are not handled by the window manager.

Wish list

Patches welcome! (add wish list stuff as an 'enhancement' on the Issues page.

  • toons talk to each other with little speech bubbles
  • toons jump up and down when you get new mail
  • run xpenguins in a specified window instead of on the desktop (need some sort of window selector and listeners to signals for when the window moves)
  • toons try to get to your cursor (???) --> climb up windows/turn into superman/etc in order to get there?


v1.1: added a slider to control load averaging: the lower limit is when toons start to be killed, and the upper is when all are killed. added a slider to control animation speed * when changing options while XPenguins is sleeping, it will wake up to re-process them straight away.

Branch Info (for developers)

  • Branch gnome3.2 is compatible with GNOME 3.2. It is supposed to be stable.
  • Branch gnome3.4 is meant to be for GNOME 3.4. It is supposed to be stable.
  • Default branch is a polyglot - has try/catches in it such that it works simultaneously with 3.2 and 3.4. This is just helpful for me to do testing. It is also a lot more verbose than the release branches. Default branch is not guaranteed to be stable at any commit.
  • Bookmark 'windowed-mode' is an attempt to get windowed mode working, i.e. toons run around in a specified window.
  • I attempt to make new features with bookmarks instead of branches.