December 17, 2007

Screen Sharing – Enable New Features

I noticed a post on digg talking about new features for Screen Sharing via the terminal so I decided to dig into the app itself and see what all was available. Using the trusty strings command from the command line I hit the binary inside System/Library/CoreServices/Screen Sharing.app/Contents/MacOS/Screen Sharing. After parsing it I found a few interesting items.

  • mFSWindow
  • mFSToolPalette
  • mFSQualitySlider
  • mFSControlButton
  • mFSCurtainButton
  • mFSShareButton
  • mFSCaptureButton
  • mFSExitButton
  • mFSFullScreenButton
  • mFSShowButton
  • mFSGetClipboardButton
  • mFSSendClipboardButton
  • mFSMultiDisplayPopUpButton
  • mFSMultiDisplayToolbarView

These all interested me very much as they seemed to represent items on the button bar which you can bring up by pressing the expander at the top right hand side of the window. I noticed they were using the defaults command line so I knew they were modifying the resources in the plist file on the hd so a quick trip over to ~/Library/Preferences I found the com.apple.ScreenSharing.plist file. I opened it using the Property List Editor which you can get by installing the developer tools in Leopard. Once opened I looked around and found the following xpath /NSToolbar Configuration ControlToolbar/TB Item Identifiers/ inside here were the dead giveaways. Items named very similar to the items I found inside the app itself. I extracted the most probable names from the list above and came up with the following valide toolbar items.

  • Quality
    • This controls things like bit depth, compression and the like move further to the right for quality or left for speed.
  • Control
    • Allows you to toggle between control and observer mode
  • Curtain
    • Lets you turn on the curtain on the remote display and prevents the remote user from interacting with the session. (Enables some type of frame buffer mode haven’t figured out the details yet.)
  • Share
    • Lets you turn on and off the user’s ability to control the machine.
  • Capture
    • Straight up screen cap of the remote display.
  • Exit
    • This option appears to only show up in full screen mode and controls exiting from that mode.
  • FullScreen
    • Takes the remote display full screen on your local display.
  • Show
    • Unsure what this does imagine it might be for some quick view feature, maybe ichat implements it.
  • GetClipboard
    • Gets the clipboard from the remote machine.
  • SendClipboard
    • Sends the clipboard from your local machine.
  • MultiDisplayPopUp
    • Only displays if the remote machine has multiple displays. It allows you to select the display individually or combine them into one super display in a single window via a drop down.

There is one other option that is very useful and that was an option you will notice at the bottom of the property list window. It is the ShowBonjourBrowser_Debug option a boolean with the value of no. Change it to yes and it enables a nice window on startup for selecting from a list of predefined clients or adding and connecting to new clients. The only issue I had with it is there is no way that I could see to rename the connection but if you add and save all your entries exit Screen Sharing and open the plist file back up in the editor you will see your entries under SavedComputers. In this dictionary there is a list of machines each machine has a property called name. Edit this name and it will be reflected in the Screen Sharing list under My Computers. Now I have my labels for when I’m outside my office and labels for when I’m in the office for connecting to my main machines.

Seeing this is promising that Apple realizes that home users need some of the functionality of their Apple Remote Desktop software without the 500 dollar price tag. I really wish I had come across a way to transfer files to and from machines but there are ways around that and at least with the features hidden under the surface now we have a powerful computer to computer remote management solution that won’t break the bank. I had already replaced the chicken with the jolly fast client but now it looks like I can drop all vnc clients on the mac in favor of this solution.

Leave a comment

You must be logged in to post a comment.