You are currently looking at an older section of the website.
Please check the new version of the site at for updated content.

wincent WinSwitch: Fast User Switching refined

Version history

Version 3.2.1 (4 April 2006):

  • Remove the spurious crash warning that may be shown on first launch.

Version 3.2 (3 April 2006):

  • French localization of the installer by Ronald Leroux.
  • "Log out…" menu item visible when holding down the option key (feature request #332).
  • Upgraded embedded WODebug framework to version 1.4 which is capable of providing much more detailed crash reports.

Version 3.2b (10 March 2006):

  • WinSwitch is now a Universal Binary which runs natively on both PowerPC and Intel processors; in addition to the WinSwitch Menu Extra itself all the supporting applications, tools and bundles are also Universal Binaries (this includes the WinSwitchHelper background application, the menu-extra-tool, the MenuCracker Menu Extra, and of course the installer).
  • WOHotKey framework updated; user visible improvements include the addition of tool tips to the editing field when setting hot key combinations and the elimination of console warning message when clicking to the right of defined hot keys in an active hot key editing view.
  • Corrected rare problem in which some user pictures would appear shrunken inside the menu (bug #137); to see this fix you must upgrade to Tiger (Mac OS X 10.4).
  • Made changes to ensure that the vertical spacing of icons in the menu exactly matches that used by Apple's version of the Fast User Switching menu (bug #136); to see this fix you must upgrade to Tiger (Mac OS X 10.4).
  • Now ships with the WOTest unit testing framework so that users can run the test suite locally.
  • Minor refinements to the Spanish localization (now refers to "nombre de pila" rather than just "nombre").
  • Corrections to Danish localization.
  • Additions to Japanese localization, provided by Yuzuru Shiraiwa.

Version 3.1 (25 April 2005):

  • Compatible with Mac OS X 10.4 Tiger (fixes bug #139).
  • Corrections and a large number of additions by Charly Avital to the Hebrew localization.
  • Numerous layout adjustments in the non-English localizations to expose previously clipped text.
  • WOBezel framework updated to version 1.2.
  • WOHotKey framework updated to version 1.2.
  • WODebug framework updated to version 1.2.
  • Built using GCC 4.0, which should result in better optimized code.

Version 3.0.1 (29 March 2005):

  • Corrections to Japanese localization by Yuzuru Shiraiwa (textual and layout changes).
  • Corrections to French localization by Fabrice Laurens (many translated strings were clipped in the preferences window).
  • Partial Hebrew localization by Seth Dimbert, Doron Neuberger and Yehoshua Goldring (Hyman Brand Hebrew Academy).

Version 3.0 (9 March 2005):

  • Additional checking on selecting "Preferences" menu item to ensure that the WinSwitchHelper background application is running.
  • For increased security, additional checking on Switch-In Items and Switch-Out Items prior to launching. Items will only be launched if both they and the containing folder are owned by the current user and the permissions are set so that only the current user has write privileges. If these conditions are not met, WinSwitch logs a warning to the console. (Note that by default, Mac OS X does create new folders and items with appropriate permissions.)
  • Fixed bug where user picture size in the menu would not appear at the default size when first run.
  • Fixed bug where the option to include the root user in the menu was inverted (in other words, turning the option off actually turned it on and vice versa).
  • Eliminated harmless console warning at startup, "Could not find image named `bezelClose'".
  • Fixed crash that would occur on systems with faulty accounts in the NetInfo database (bug #68).
  • Corrected alignment error in preferences window.
  • New Turkish localization by Alphan Gunaydin.
  • Updates to the Japanese localization by Yuzuru Shiraiwa.
  • Updates to the Norwegian localization by Sjur Nørstebø Moshagen.
  • Updates to the Dutch localization by Joost Kroon.
  • Updates to the French localization by Fabrice Laurens.
  • Updates to the Swedish localization by Christoffer Araskog.
  • Updates to the Danish localization by Jesper Juul Keller.
  • Updates to the Spanish localization by Wincent Colaiuta.
  • WinSwitchHelper application updated, and bumped version number to 3.0 to match WinSwitch's version number.
  • WOBezel framework updated to version 1.1.
  • WOHotKey framework updated to version 1.1.
  • WODebug framework updated to version 1.1.
  • Tightened up source code in some places to improve readability.

Version 3.0b (6 December 2004):

  • Adjustable user icon size inside the body of the menu itself (not just in the menu bar).
  • Norwegian localization by Sjur Nørstebø Moshagen, and Finnish localization by Lauri Vanajas; note that due to the number of new interface elements in this version the localizations have not yet been updated.
  • Changes to "Activate WinSwitch" script to make it more tolerant of errors reported by the system.
  • Work around bug in the Apple frameworks that could cause WinSwitch to die if any user pictures had multiple (NSImageRep) representations.
  • Minor optimizations in bundle- and notification-handling code.
  • Tightened up the code in some places to make the source shorter and more readable.
  • Promoted "First name only" and "Initials only" to user-visible preferences (no longer accessible only from the command line), with live updating of menu bar if the username is edited in the Accounts preference pane.
  • "Initials only" method now considers period, comma and space to be word boundary markers; this means that users names like "John P.T. Smith" will now correctly abbreviate to "JPTS".
  • Stricter filtering of items in the "Switch-In Items" and "Switch-Out Items" folders; any filename beginning with a period is ignored (previously only .DS_Store files were explicitly ignored).
  • New bundled background helper application efficiently monitors for addition of Apple version of Fast User Switching menu and displays a notification bezel telling the user of how to remove it.
  • Basic hot-key support: a customizable key combination (Control-Alt-Delete by default) takes user to loginwindow.
  • Preferences window provides quick access to all WinSwitch options, a help button, and buttons to access the "Switch-In Items" and "Switch-Out Items" in the Finder.
  • Uses WODebug framework to provide crash-catching and diagnostic capabilities.

Version 2.0 (7 September 2004):

  • Optionally auto-launch items on switch-out (to another user); WinSwitch launches items, or aliases to items, placed in "~/Library/Application Support/WinSwitch/Switch-Out Items/". Sample Switch items are installed into "/Library/Application Support/WinSwitch/Sample Switch Items/".
  • Optionally auto-launch items on switch-in (from another user); WinSwitch launches items, or aliases to items, placed in "~/Library/Application Support/WinSwitch/Switch-In Items/".
  • Power user option (available from the command line) to show "First name only" in menu bar (shows the long username truncated at the first space); to activate this feature, execute the following in the Terminal (changes take effect on next login):
    defaults write com.wincent.WinSwitch "Menu bar style" '4'
  • Power user option (available from the command line) to show "Initials only" in menu bar (composed of the first letter of each "word" in the long username, where "words" are delimited by spaces); to activate this feature, execute the following in the Terminal (changes take effect on next login):
    defaults write com.wincent.WinSwitch "Menu bar style" '5'
  • Minor optimizations (eliminated some redundant code).
  • More source code cleanups.
  • Fixed bug where root user, if logged in, would appear in menu regardless of preferences.
  • Made additions to build process to strip out some .svn directories previously left behind.

Version 1.5 (23 August 2004):

  • Dutch localization by Joost Kroon.
  • Minor corrections to Japanese and Swedish localizations.
  • Restored custom icon to "Activate WinSwitch" command which had been stripped in the move to the Subversion repository.
  • New winswitch-announce and winswitch-beta mailing lists.

Version 1.4.1 (26 July 2004):

  • Danish localization by Jesper Juul Keller.
  • Fix installation bug (the "Activate WinSwitch" command did not have its execute permissions set).

Version 1.4 (26 July 2004):

  • "Show" submenu provides option to include root user in the list of users (note that in order to log in as the root user you must use the Apple's NetInfo Manager application to activate the root account and set an appropriate password for it).
  • Match Apple behaviour of showing non-local users if and only if they are logged in on the current machine.
  • Correctly handle unlikely case where no long username is defined in the NetInfo database.
  • Ongoing improvements to source code for readability.
  • Tweak to activation script: wait a few seconds and retry activation on a slow or heavily loaded machine.
  • Expanded online documentation; additional useful information now appears on the new FAQ page.
  • Added a couple of utility scripts to the source code distribution for branching and release tagging in the Subversion repository.
  • A separate "localization pack" is now available for people who wish to contribute to the project by localizing it into their own language.

Version 1.3 (14 July 2004):

  • Added a user defaults setting for users who prefer to have their picture 16x16 (in the Terminal "defaults write com.wincent.WinSwitch 'User picture size' -float 16.0"; to use 19x19 pictures "defaults write com.wincent.WinSwitch 'User picture size' -float 19.0"; changes take effect on next login or next time WinSwitch is added to menu bar); values less than 5.0 or greater than 19.0 will be ignored, although in practice anything smaller than 16.0 is too small to clearly see.
  • Japanese localization by Yuzuru Shiraiwa.
  • Now uses Install version 1.2.2 (changes).
  • Optimizations for speed.
  • More cosmetic code changes to improve readability.
  • Recompiled with latest build of Apple's Xcode Tools.

Version 1.2.1 (19 June 2004):

  • Increased size of the user picture in the menu bar (now 19x19 pixels instead of 16x16).
  • Swedish localization by Christoffer Araskog.
  • Italian localization by Michele Zangrossi.
  • Fixed bug that could prevent "Login window" and other menu items from appearing at the bottom of the menu.
  • The same fix corrects the "items listed twice" issue.
  • Minor cosmetic changes to source code to improve readability.
  • Now uses Install version 1.2.1, which includes several bug fixes and other enhancements.

Version 1.2 (5 April 2004):

  • Major overhaul of underlying mechanism used to get information about users: now uses the NetInfo API to send queries directly to NetInfo instead of the previously-used POSIX layer calls.
  • This means that users in a lab/network context can use WinSwitch and will see only the local user accounts on their machine instead of all the users across the network.
  • Exclusion of non-local users makes WinSwitch more efficient.
  • Grabbing custom user picture is also more efficent (no longer need NSTask/nicl).
  • Use of NetInfo now means that WinSwitch updates instantly when a full username is edited in the Accounts pane of the System Preferences (previously WinSwitch waited two seconds before updating in order to give the POSIX layer time synchronize with the change).
  • Removal of POSIX calls also cures the occasional "double listing" problem that some users saw after adding, deleting or changing users in the Accounts preference panel.
  • Installer now uses less stringent error checking; it appears that a conflict with an Unsanity product was producing an error code even though WinSwitch was successfully added to the menu bar.
  • French localization by Fabrice Laurens.

Version 1.1 (1 April 2004):

  • New "Show" submenu allows user to choose what appears in the menu bar: the standard WinSwitch icon (as in version 1.0), the fulluser name (as in Apple's User menu), the custom user picture, or the short username.
  • New "Open Accounts..." menu item opens the Accounts preference pane in the System Preferences application.
  • Generic icon now shown in menu for users with an empty, stale or no "picture" key in the NetInfo database.
  • Now listens for notifications from System Preferences and updates the menu whenever a user is added, deleted, enabled, disabled, or a user picture or full username is altered; this not only means that the menu updates in realtime, but also more efficiently.
  • Listens for logout/login notifications, once again for more efficiency.
  • Uses case-insensitive sorting, like Apple's menu.
  • Fixed SystemUIServer crashes and display issues caused by ".userPicture" files created by Mac OS X.
  • Fixed leaking NSMenuItems, and NSAttributableString leak.
  • German localization by Jan Maas.
  • Improved installer (Install 1.2; changes), simplifying procedure, and always adding WinSwitch as the right-most item on the menu bar.
  • Various improvements to code and comments for readability.

Version 1.0 (29 March 2004), Initial release:

This is a total rewrite of the original FUSe codebase. The main changes are:

  • Construct user list by using getpwent().
  • Use full usernames, like Apple's
  • Use NSMenuItem -setRepresentedObject/-representedObject to identify users.
  • Prepared for internationalization and added Spanish localization.
  • Add correct highlight behaviour in menu bar, like Apple NSMenuExtras.
  • Add custom icon for .menu bundle.
  • Minor optimizations.
  • Userlist sorted alphabetically, like Apple's
  • NetInfo queried for path to user icon, if available.
  • Use tick like Apple's for currently logged in users.
  • Fixed a couple of potential minor memory leaks.
  • Reformatted code to wrap to 80 column format where possible.
  • Dim icon (and tick) for current user.
  • Ignore "users" without real shells (eg. /usr/bin/false).
  • Package and distribute with Install version 1.1.2 (changes).