XShelf 1.1.4 for MacOS X README

[XShelf docked against the bottom of the screen]
Download
What is it?
XShelf enhances drag and drop in MacOS X by letting you "pause" drag and drop operations, as well as have multiple drag and drop operations in flight at once.
You can drag files or folders from Finder into the shelf and they will sit there until you drag them out. Once you drag them out, the drag operation will finish as if XShelf were never involved. You may drag individual or multiple files or folders, as well as text clippings and URLs to XShelf. With XShelf, you no longer have to shuffle windows so that both the source and target of a drag and drop are onscreen at the same time.
It also has support for Services, better integration with the clipboard, and a commandline utility (XShelver) to add items to XShelf.
In many ways, it is a replacement for the old NeXT shelf (and the Newton shelf, but never having used the Newton, I have to take this on faith :)
How do I install (or uninstall)?
Double-click the XShelf disk image file. Once the disk image launches, open it, and you will see the XShelf application, and an XShelf.html (this document). Drag XShelf to your harddrive to install and double-click to run it. To remove XShelf, simply drag XShelf to the trash. If you wish, you can delete the preferences file as well in "~/Library/Preferences/com.the-ameoba.XShelf.plist".
You MUST log out and log back in for the "Add to XShelf" Service to work.
XShelf MUST be installed in either "/Applications" or "~/Applications" for the "Add to XShelf" Service to work.
To use XShelver from the Terminal, XShelver should be placed somewhere in your $PATH (such as /usr/bin/).
How do I use it?
Select an item in Finder, or text from virtually any application, and drag it to XShelf. You may then drag the item out from XShelf to another application, or to another location in Finder. File and folders will be copied/moved as appropriate (exactly as if the drag had originated in Finder directly), and text clippings will be created (if the drag was to Finder) or pasted in place (if the drag was to an application).
Items can also be added to XShelf using a System Service, "Add to XShelf". The service can also be invoked through a key command, SHIFT-CMD-X. Invoking the Service will add the currently selected item (either text or a Finder item) to XShelf as if it had been dragged there.
XShelver is a commandline tool which can place items on XShelf. You can pass a list of files, which will be added as a single XShelf item ("./XShelver *.doc"), or if XShelver is launched with no arguments, it will take what it is passed in through standard input and make it into an XShelf clipping item.
When multiple files are added (through dragging, Services, or XShelver) to XShelf, they appear as a single icon that is badged with the number of items in the bundle.
Drag items to the trash to remove them from XShelf (dragging to the trash will NOT delete the actual file).
XShelf can be run in 2 different ways; it can be a free floating window or attached to an edge of the screen. If a free-floating window, it can be horizontal or vertical, and you may choose to have it float above all other windows, or act as a normal window. If attached to an edge of the screen (you may choose any edge - left, right, top, bottom), you may choose to have it auto-hide or stay open all the time.
If XShelf is in a Window (rather than attached to an edge of the screen), tooltips will show the file(s) in the selection, and the title of the window will also change to show the filenames.
If you click on an item, a Finder window will open with the item selected. If it was a multiple item selection, only the first item will be selected.
Control-clicking or right-clicking on an item will bring up a menu showing the filenames in that item (if a file or folder). There are also menu items for removing the item from XShelf (again, this will NOT delete the original item), locking the item, setting the preferences for XShelf, and quitting XShelf. If the item is a text-clipping, you may also copy the text contents directly to the system clipboard.
Control-clicking or right-clicking on an emtpy area will allow you to create a new item from the current contents of the system clipboard.
Double-clicking an item will lock it. When an item is locked it will be partially bracketed by blue triangles. A locked item will try to stay on the shelf after a drag and drop operation. However, if the original file(s) referenced by the item no longer exist after a drop, the item will still be removed.
Preferences?
- Item Size: You can choose the size of the item in the Shelf (from 20 to 170 pixels, defaults to 50)
- Shelf Capacity: You can choose how many items XShelf can hold (from 1 to 20, defaults to 5). Also see the "Grow as needed" preference.
- Style: You may choose to have XShelf free floating in a window (either horizontally or vertically), or you can choose to have it docked against an edge of the screen in a drawer.
- Use Metal Window: XShelf can use either the normal Aqua appearance, or the Metal appearance. You must restart the XShelf for this preference to take effect.
- Hide Drawer when Inactive: This option is only used if XShelf is docked against an edge. Once the mouse is no longer on XShelf, the drawer will close. When closed, the PopupStrip (a 1 pixel line) shows where the drawer is - touching the line with the mouse will pop the drawer up. (default is YES).
- Only hide if shelf is empty: As long as there are items on XShelf, the drawer will no hide. This option is only effective if "Drawer Hides When Inactive" is checked.
- Don't float on top: If this is unchecked, XShelf will float above most other windows.
- Grow as needed: By default, XShelf will grow as large as necessary to accomodate new items being dropped on it. The "Shelf Capacity" setting is the minimum size XShelf will shrink to as items are removed.
- Popup delay: At long last, a popup delay. If XShelf is docked against a screen edge, you can set the delay for how long the mouse must linger against the edge for XShelf to appear.
- Advanced: Window or PopupStrip transparency: If XShelf is a window (rather than docked on an edge), this controls the transparency of the window. If XShelf is docked against an edge, this controls the transparency of the PopupStrip. Note that setting the transparency to 0 will result in the (window or PopupStrip) being effectively invisible. (defaults to 1.0 - fully opaque).
- Advanced: PopupStrip color: If XShelf is docked against an edge, and the drawer can hide, this allows you to choose the color of the PopupStrip. This has no effect if the Metal appearance is being used.
- Advanced: XShelf can be run in a mode where it has no Dock icon, and no menubar. This involves changing the NSUIElement element in the Info.plist from 0 to 1. I provide a nice GUI for it, but it's easy enough to do on your own. Note that you MUST have permissions to modify the XShelf executable for this to work.
Requirements
Suggestions are welcome. If you like XShelf, do something nice for someone :)
khsu@mac.com
http://homepage.mac.com/khsu/XShelf/XShelf.html
Other Applications by me.
Karl Hsu
Version History:
1.1.4 Released 11/05/2007
- Updated for Leopard. Due to lack of time or resources, this version is only tested on 10.4 and later.
- Fitt's revenge. Items can be dropped without backing away from the edge of the screen (though the highlight doesn't appear).
- Fixed a bug where, if you had the context menu open, clicking away would leave the drawer open.
1.1.3 Released 8/31/2006
1.1.2 Released 10/07/2003
- XShelf now hides when a fullscreen application (such as the DVD Player) is frontmost.
- Fixed a bug where hiding an edge-docked XShelf would cause XShelf to vanish forever.
- Fixed a bug where XShelf wouldn't always provide feedback if something was added with XShelver
- Rewrote XShelver with a new interprocess communication implementation. Rather than using NSPerformService, I'm trying out distributed notifications.
- Updated for 10.3 (Panther)
1.1.1 Released 06/16/2003
- Fixed a bug where a window'd XShelf would vanish or deform if XShelf or the Service was used.
- Fixed (again!) a "jumping" bug with multiple monitors and a window'd XShelf.
- Fixed a bug where an edge-docked XShelf would vanish or deform when multiple monitors were in use.
- Fixed a bug where an edge-docked XShelf would get "stuck" between multiple monitors.
1.1 Released 06/02/2003
- XShelf now provides a System Service, "Add to XShelf" (shift-cmd-X)
- XShelver is a commandline tool which can place items on XShelf.
- If you control-click on an empty shelf area, you can create a new shelf item from the current contents of the clipboard.
- If you control-click on a shelf item which is a text clipping, you can copy the contents onto the clipboard.
- XShelf properly remembers it's window location when growing.
- XShelf should no longer jump around on machines with multiple monitors.
1.0 Released 02/24/2003
- Popup delay added
- Items on the shelf can be "locked" so they aren't removed after drags
- The shelf can grow (and shrink) as necessary
- Optional Metal appearance
- Better tolerance for multiple monitors and changing resolutions
- Fixed some bugs where items weren't removed from the shelf when they should have been
- Plugged memory leaks
1.0 beta1 Released 08/22/2002
- Works with MacOS X 10.2 (this version is untested with any version of MacOS X 10.1)
- Drawer opening and closing should be more reliable
- Floating window position is now saved
- XShelf now has an Icon (sorry about the pun ^_^ )
- XShelf now has Help
- Resources are ready for localization (but are not actually localized yet)
1.0 alpha2 Released 04/15/2002
- Dragging a clipping to the menubar or to itself will no longer delete the clipping
- Fixed typo in Advanced Preferences
- Preferences should open in the correct pane now
- Some appearance tweaks (better shadows, larger icon sizes allowed)
1.0 alpha1 Released 03/04/2002
- Support for Text clippings (plain and RTF)
- Partial support for URL clippings
- We now follow Fitt's Law
- Better context menus: Delete Item, Preferences, Quit
- Preferences are now live
- Items are now saved upon quit
- Advanced settings for NSUIElement (running without a Dock icon or Menubar)
- Option to leave the shelf open if there are items on it
- Tweaked font and positioning for icon labels
- Performance improvements
0.5 Released 02/24/2002 for MacOS X 10.1
- Can choose the number of items XShelf can hold.
- Can choose the size of XShelf items (in pixels).
- Can choose between Windows and Edge Docked styles.
- For Window styles, can choose Horizontal or Vertical.
- For Edge Docked styles, can choose any edge of the screen.
- Can choose window layering depth.
- Multiple Selection items are badged with the number of items in the selection.
- All items are labeled.
- Context Menus show the full paths of all files in an item.
0.1 Released 02/23/2002 for MacOS X 10.1
Known Bugs
- If XShelf is on an Edge, tooltips don't work.
- Context Menus don't distinguish between text clippings and URLs
- Right-clicks don't bring windows forward
To Do (in no particular order):
- Allow multiple selection of items with cmd-click (This is being worked on for version 1.2)
- Allow selection of single and double-click behaviors (select, reveal, open, lock)
- Be able to delete a selected item by pressing "delete"
- Be able to create an item with cmd-v when XShelf is frontmost
- Hide when certain applications are frontmost (DVD Player).
- Try and tweak the closing algorithm w.r.t context menus by using a delayed selector. Fire a close after selecting the menu item; anytime I get back into the shelf, cancel pending closes.
- Set the XShelf icon to accept drags
- Color and transparency for the drawer
- Proper path validation
- Use FSRefs (aliases) instead of filenames
- Make multiple item auto-selection work better on single-click and show+selected in Finder.
- Label text clippings
- Image clippings
- Multiple shelves? Shared or separate items? tabbed shelves? (I can attach multiple drawers to a single window...)
- Allow aggregation, so dragging onto an item adds the dragged item (e.g., a group of 4 items becomes a group of 5 items)
- Make items drag destinations, so if you drag a file/folder onto a Folder, it'll copy or move it there as appropriate.
- Localization
- Pinning to a corner
- Services support (key combo to transfer selected item to shelf, and last selection to cursor point)
- Show some clipping content in context-menu
- Smaller hotspot, corner hotspot
- Find a way to "move" text clippings? Currently OSX only does copy.
- Have a "clipboard area" which shows the latest copy of the clipboard, so it can be dragged out. Someone wanted the area to have "history".
Acknowledgments:
Jamie Curmi's images were the inspiration for the edge-docked drawers