At the risk of the blind leading the blind…
- An OS X GUI application is conventionally ‘bundled’ or put into a special directory structure whose root has an .app extension (see here and scroll down for Apple’s documentation on what the structure actually entails). In Finder (the OS X equivalent to Windows Explorer), right click on an application’s icon and select Show Package Contents to inspect this structure.
- One irritation with Finder (at least for me) is that you can’t show hidden files and directories with it [update: without issuing a long command to Terminal and reopening Finder – check out the comments]. As a workaround, I’ve installed the open source muCommander. It’s not the most elegant-looking thing ever written, but it does the job – and it’s not like you have to stop using Finder as a general purpose file manager.
- Another Finder irritation is it dumping .DS_Store files everywhere, even on network shares (these files are the rough equivalent of Windows Explorer’s desktop.ini). As documented here, this can be fixed by issuing the following
incantationcommand to Terminal (the OS X equivalent to the Command Prompt on Windows):
defaults write com.apple.desktopservices DSDontWriteNetworkStores true
After doing that, you will probably have to either reboot or log out and in again for the change to actually have effect. Unfortunately, I haven’t found a way to stop Finder outputting .DS_Store files on USB sticks.
- If you’re looking for a plain text editor and TextEdit (the OS X equivalent of both Notepad and Wordpad) doesn’t suit your needs, check out TextWranger. This is fast and light, with a pretty interface that includes (along with many other languages) Object Pascal syntax highlighting, built-in code folding for procedural bodies, and a ‘jump to’ combo box at the top. Alas, there is one caveat: by ‘Object Pascal’ it probably means not the language of Delphi or FPC, but the older Apple dialect. This leads to apparent oddities like ‘class’ not being recognised as a keyword.
- I probably shouldn’t be, but I’m still surprised at how somewhat Linux-y open source stuff on Windows isn’t available on the Mac (or, er, Linux!). One example is 7-Zip. Happily, Keka does the trick for decompressing existing archives.
- If you’re looking for a Mac equivalent of Dependency Walker (Depends.exe), check out MacDependency. You run it, it shows on the Dock, then you drag and drop executable and dylib files to it (dylibs are the equivalent to DLLs on Windows).
- When a program has hung, right click on its Dock icon to find an option to forcibly terminate it. Unfortunately, I haven’t found this command to be as effective as the Windows Task Manager equivalent [update: others have plainly had better experiences though, as the comments show!]. For times when that is the case, the command line comes to the rescue: open up Terminal, and type top -u [enter] to get a list of processes. Find the process to terminate, take a note of its numerical process identifier (PID) in the left-most column, and press q to quit the listing application. Next, type sudo kill -9 PID [enter] , where PID us the number just noted. If this is the first time you’ve used sudo in the terminal session, they’ll be a prompt to enter your administrator password (i.e., a UAC prompt in Windows terms). Also, in the case of an XE2 application hung during debugging, the process to terminate will probably be the debugger (dbkosx_16_0) rather than the program itself, simply because the debugger will keep the program alive in a zombie state.
- Having made the dubious decision to try out Lazarus on my Mac, I quickly found I wanted to assign the .pas file extension to TextWrangler instead. Finder then played a few games with me until a bit of Googling came to this solution: right click on a .pas file, select Get Info, then select the desired application via the ‘Open with’ combo box before clicking ‘Change All’. Note that ‘All documents like this one’ turns out to mean merely ‘all documents sharing this file’s extension’ – there doesn’t appear to be any built-in grouping beyond that.