Shoes (GUI toolkit)

Shoes is a GUI toolkit based on the Ruby programming language. It was originally developed by Jonathan Gillette (why the lucky stiff), and others are carrying on with it after his disappearance. Shoes runs on Microsoft Windows, Mac OS X and Linux (GTK+), using the underlying technologies of Cairo and Pango.

Original author(s)why the lucky stiff
Developer(s)Team Shoes
Initial releaseJuly 30, 2007; 14 years ago (2007-07-30)
Stable release
3.3.7 (Walkabout) / March 5, 2019; 2 years ago (2019-03-05)[1]
Preview release
4.0.0.rc1 / November 30, 2017; 3 years ago (2017-11-30)[2]
Written inRuby and C, some Objective-C
Available inEnglish
LicenseMIT / Open source

Shoes' philosophy is one of simplicity. It's designed to make applications as easy as possible. Here's an example Shoes app: :title => "Push Button" do
  @note = para "Nothing pushed so far"

  button "Push me" do
    @note.replace "Aha! The button was pushed!"

Shoes has all the common widgets you would expect for creating a graphical application as well as graphic primitives to draw art like lines, circles, and even physics (via Chipmunk) cRruby extensions. Shoes 3 includes it own embedded MRI/cRuby Ruby and does not require the end user to install Ruby. It provides a customized Rubygems environment that does not conflict with any existing Ruby that might exist.

Developers can also package up their scripts in several ways to easily share with other users who have Shoes installed. Advanced developers in Shoes 3 have many deployment options available including very platform specific applications with unique gems and their own custom installer to create their own unique Applications.


  • _why releases:
  1. v1, "Curious"
  2. v2, "Raisins"
  • Post-_why releases:
  1. v3.1, "Policeman"
  2. v3.2 "Federales"
  3. v3.3 "Walkabout"

The current release is version 3.3. which is MRI/cruby based. Shoes 4 is a major re-write for jRuby supporting the "Policeman" capabilities (API) and keeping the educational spirit of _why_the_lucky_stiff.

Shoes 3.3 embraces the unique things that MRI Ruby can do with native extensions and gems, even if they are platform specific. Shoes 3.3.1 reimplemented the video_widget in "Raisins", even if it won't work in all edge cases. It also includes an SVG widget and some manipulation abilities for svg files.

Shoe 3.3.2 (in beta) adds a profiler, a new optional command line terminal, byebug debugging, and plot widget for drawing simple charts.


  1. ^ "Shoes 3.3.7". 2019-03-05. Retrieved 2021-03-09.
  2. ^ "Shoes App, 4.0.0.rc1". 2017-11-30. Retrieved 2021-03-09.

External linksEdit