My migration from iPhoto to Photos continues, and today’s snafu was my discovery that I couldn’t rename files in Photos. This is something I’ve long done in iPhoto—not for every file, but for ones I’d like to group together using something other than Keywords.
For example, I have a collection of iOS wallpapers, for both the home and lock screens. I name each with either “H_” or “L_” as the start of the filename, which let me create this Smart Album to see them all together:
The inability to rename files isn’t critical, in particular because the Title field can be used for the same functionality. But I had a problem: When I migrated, Photos created Titles for some, but not all, of my custom-named images. In particular, it missed all of the iOS wallpapers. I’m not sure if this is because these aren’t photos in the traditional sense—they’re edited photos I export as PNGs. But whatever the reason, I had hundreds of images that needed a Title that was equal to their Filename.
AppleScript to the rescue…this simple bit of code acts on the selection in Photos, and sets the Title equal to each image’s filename.
error"Select photos before using script."
To use this bit of code, just select the photos you’d like to modify in Photos, then run the script. You can make it a bit easier by saving the script into your user’s Library > Scripts > Applications > Photos folder (create as many of those as don’t exist). It will then be available in the AppleScript menu in the menu bar, assuming you’ve enabled that in the AppleScript Editor’s preferences.
This saved me literally hours of work, copying and pasting filenames to the Title field. (I was surprised this worked, but it did—you can’t change the filename, but you can select and copy it.)
Another post thanks to Many Tricks‘ Peter Maurer; this particular bug bit me last night—I spent 30 minutes trying to figure out why a compiled AppleScript with a droplet wasn’t working. I never did get it, so I emailed Peter, and he pointed me to these tweets from a while back…
…which means the app won't launch. You have to "chmod +x applet" manually to make it work.
While playing around with Messages this morning, I noticed that it ships with a feature that, if used, throws an error. Steps to reproduce:
Open Messages’ preferences.
Set the Applescript handler pop-up to any of the listed scripts:
Close preferences, and try to send a message to anyone.
Revel in the brokenness.
I especially like the execution error: No error message…it’s that rare non-error that tosses up an error dialog!
In any event, I think it’s shameful that Apple ships the app with a feature—plainly obvious in prefs—that breaks when used. Yes, I know AppleScript is probably dying, but that doesn’t excuse shipping the app with a clearly-broken feature; if it doesn’t work, just remove it. Apparently this has been an issue since Yosemite’s release in October of 2014!
With all that said, fixing this is incredibly easy—it took me about 30 seconds of “work” to find and fix the problem. If you’d like to use the bundled AppleScripts in Messages—either as is, or in some modified form—here’s what you need to do
For those who aren’t aware, Keyboard Maestro is a macro-creation tool, designed to help you automate routine tasks. But its powers let you do some really cool stuff, not all of which could be classified as automation. Such is the case with this project: Creating an iTunes song info pop-up window.
There are lots of apps out there—including Many Tricks own Butler—that can do this for you, and my Keyboard Maestro version is worse than most of those in many respects. However, I wanted to teach myself more about Keyboard Maestro, and this seemed like a good project with which to do so.
I use Buter’s iTunes pop-up info window, which looks like this:
I wasn’t really interested in the rating or volume controls (though they should be doable), but I wanted to see if I could get the album art and song info in a window via Keyboard Maestro. After some struggles, here’s what I came up with in Keyboard Maestro:
My window is larger by design, so I can have somewhat more visible album art (aging eyes). And I can’t decide on a background color or gradient, so it keeps changing—this was the look when I snapped the screenshot, but it’s since changed again.
Read on if you’d like to know more about Keyboard Maestro, and how I used it to create this iTunes info window. (Note that this write-up assume some familiarity with Keyboard Maestro, though I try to explain each step in the process.)
OS X includes—and enables by default—translucency, which gives you ‘wonderful’ effects such as this in Calculator:
This is just one example; lots of other apps (Mail and Messages, to name two) contain panes that become grossly distorted by background color bleed-through. I’m not sure who at Apple (Marketing?) thinks this feature is good for productivity , but I find it completely distracting.
As a result, I turn off translucency on every Mac I own. You can do so yourself in System Preferences > Universal Access > Display. Just check the Reduce transparency* box, and you won’t get any more bleed-through. (You’ll also get a solid Dock, and perhaps the world’s ugliest Command-Tab task switcher. Such is the cost of usability.)
* It’s ridiculous that Apple calls this transparency, which is defined as “the condition of being transparent,” and being transparent means being see-through, clear, invisible, etc. This is clearly translucency, or “allowing light, but not detailed images, to pass through.” But I digress…
However, when writing for Many Tricks or Macworld, I often need to take screenshots. And because most users won’t disable translucency, I prefer to take those screenshots with translucency enabled, so that they’re closer to what most users might see. That means a trip through System Preferences to toggle the checkbox, which gets annoying after the second or third time you’ve done it.
There had to be an easier way—and after some missteps, I eventually found it.
Note: The scripts in this hint don’t truly mute the mic input; they drop its volume to zero. That’s because there’s no way to mute an input source via AppleScript (while you can mute an output source). At zero level, the mic will still pick up sounds, but they’re very quiet. I’m looking for a solution to mute the mic via another method, then call that from the AppleScript. For now, though, be aware that these are mostly-mute scripts.
While recording our weekly podcast, The Committed, I often want to mute the microphone input for one reason or another. (Yes, my microphone has a big Mute button on it, but pressing it results in an audible CLICK in the recording.)
There are any number of ways to do this quietly, including just sliding the level down in the Sound System Preferences panel (though it’s hard to then get it back to exactly the right spot). There are also any number of App Store apps that will do this for you; some are free, some are paid. And doing it programmatically yourself is as easy as two one-line AppleScripts:
-- mute the input volume
-- set the input volume; change 25 as desired
Save those separately, assign keyboard shortcuts (or more quietly, trackpad gestures) using your favorite third-party tool, and you’re done.
But I wanted something more. I wanted one script to mute and unmute the volume. I also wanted a visual reminder when I was muted. After an afternoon of slogging around the internet, looking up obscure AppleScript command syntax, and diving into Sal Soghoian’s AppleScript 1-2-3 book, I came up with something that seems to work. This short video shows one version of it in action:
Read on for the code and a how-to on putting it to use.
This morning, I wanted to send someone an iTunes App Store search URL, so that when they clicked it, they’d see the list of matching apps in the iTunes App Store. There’s no apparent easy way to do this within iTunes, but after much futzing about, I figured out how to structure a URL that will open to to the search results screen in the iTunes App Store.
Because Apple has separated iPhone apps and iPod apps in the store, there are actually two separate URLs, one for each type of app. The iPad version of the URL is:
Hopefully obviously, replace TERMS+TO+SEARCH+FOR with the keywords you want to use for the search, separating words with the plus sign. You can then use the URL for whatever you like: send it to someone, add it to your bookmarks bar, whatever. When clicked, the search will run and the results will open directly in the iTunes App Store for either iPad or iPhone apps.
Over the weekend, I wrote myself a little AppleScript program that makes it much easier to create license files for our customers. (Given my lack of knowledge on AppleScript, I’m quite happy with the result.)
To make it easy to use on all my Macs, I stored the finished result in Dropbox. I tested it using my MacBook Pro, assigning it a global keyboard shortcut using Butler. It worked great; as soon as I typed the shortcut, I’d see my “Which program?” onscreen dialog, and all was good.
When I got back to my iMac, I used Butler to point to the same script on Drobpox, and tested it. I was very surprised to see that, instead of launching my app, OS X presented this dialog box:
Confused, I pulled out the MacBook Pro, and tested again…and again, it worked fine, launching without any confirmation dialog.
After many minutes of hair pulling, I figured out the problem: On the MacBook Pro, I had assigned the shortcut as Shift-Option-M; on the iMac, I decided that it’d be easier to type Shift-Control-M, so that’s what I used (intending to change the MacBook Pro to the same shortcut). As soon as I removed the Control key from the shortcut, my application loaded without the confirmation dialog.
I’ve been unable to figure out why this happens, but if you’re launching AppleScript apps via global shortcuts, avoid using the Control key in those shortcuts (unless you like needless confirmation dialogs, that is).