SSHMenu Manual Installation

These notes are really here for use by people who want to package SSHMenu for specific platforms. They explain exactly how to do it on a Debian or Ubuntu system, but if you have one of those you should just install the packages from the repository here.

If packages are made available for other platforms, please let us know so that we can list them here.


SSHMenu is written entirely in Ruby so no compilation is required. Once you have the prerequisite libraries installed then it's just a matter of putting the SSHMenu files in the right place.

If you are planning to package SSHMenu, then please split it into two packages (in whatever naming scheme works for your distribution):

  • sshmenu
  • sshmenu-gnome

The standalone sshmenu program does not rely on GNOME libraries and works quite happily in other desktop environments. It will work in any panel that has the ability to 'swallow' other application windows.


For the base 'sshmenu' package:

The code has been tested back to Ruby 1.8.2. Your distribution's standard package should be fine. If Ruby is split into multiple packages, make sure you install YAML support.
ruby-gtk2 library
This is from the Ruby-GNOME2 project but is not dependent on GNOME. Versions as old as 0.13 should be fine.
This library is used by ssh-add to prompt for the SSH passphrase. If you are running under GNOME then use one of the GNOME ssh-askpass packages. Otherwise Jim Knoble's x11-ssh-askpass is a good option. If you're building a package, please specify alternate dependencies for this one.

In addition to those prerequisites, the 'sshmenu-gnome' package requires:

ruby-gnome2-all library
This is from the Ruby-GNOME2 project and builds on ruby-gtk2. Make sure to include GConf and PanelApplet support. Versions as old as 0.13 should be fine.
Almost certainly included in any GNOME distribution, but if it has its own package, be sure to specify a dependency.

Installing the Files

The ultimate reference for what goes where (on my Debian system) is the Makefile from the source distribution (Makefile.dist in Git). These notes may serve to clarify the purpose and likely placement for the files.

For the 'sshmenu' package:

This is a library file which defines the Ruby classes from which the standalone sshmenu program is constructed. It should live in a directory like /usr/ruby/1.8. It must go in one of the directories listed by: ruby -e 'puts $:'
This is a short wrapper script which implements the menu using the sshmenu.rb library. This file should go in /usr/bin and must be executable.
This bash script should be sourced by an interactive shell to set up command-line completion for the sshmenu command. It should end up somewhere like /etc/bash_completion.d/sshmenu.
This is a brief man page for the standalone sshmenu program and should end up somewhere like /usr/share/man/man1/sshmenu.1.gz.

For the 'sshmenu-gnome' package:

This library adds GNOME-specific functionality and should live in the same directory as sshmenu.rb (above).
This short wrapper script implements the standalone menu with GNOME-specific functionality. It should live in the same directory as sshmenu (above) and should be executable.
This short wrapper script implements the menu as a GNOME applet. It should live in the directory where other applet 'binaries' (such as the 'clock-applet') live (eg: /usr/lib/gnome-panel) and should be executable.
This file tells GNOME about the SSHMenu applet and where to find it. The full pathname of the sshmenu-applet wrapper script is included in this file so you will need to edit this file if you chose to put the applet wrapper script in a different location. The filename of the icon (but not the pathname) is also included in this file.
This icon is only used to represent the applet in the "Add to Panel" dialog box. On Debian it lives in /usr/share/icons/hicolor/48x48/apps/gnome-sshmenu-applet.png and the package postinst script must run gtk-update-icon-cache before the icon becomes visible in GNOME.


SSHMenu is distributed under a BSD license.