Faster layer renaming in Photoshop

The fastest way to manually rename a bunch of layers in Photoshop is to double-click / run your keyboard shortcut for “Layer” → “Rename Layer…” (in my case Shift+CMD+R) on one then use the tab key to apply the new layer name and jump to the next visible layer. I’ve known about this shortcut for a good long while now.

A GIF of layers being renamed with the tab key

What I only learnt a couple of weeks ago by happy accident however, is that by holding down the shift key whilst pressing tab you can reverse the order of the renaming so that rather than cycling through layers from top to bottom, you can go bottom to top.

A GIF of layers being renamed with the tab key in reverse order

I thought this might have been a discreet addition in CC 2015 but no. As I found out after a quick search, it’s been in Photoshop for a good few years now (since CS6).

My iOS to Mac screenshot workflow

I have long found it amusing that after all this time, messaging ones self a set of screenshots is still the most practical way to go about transferring them from iOS to OS X. For a while I had a better solution but we decided to stop working on Ember for iOS, so I went back to Messages.

After many years of this, I’ve finally come up with what I think is as close to a perfect workflow as I’m going to get. There are 3 parts to it: the iOS side, the middleman, and the Mac side. Not to worry though, two of them are handled automatically.

It all starts in the fantastic Workflow app that I only recently purchased to explore “its outstanding use of iOS accessibility features”. If you are unfamiliar with Workflow it is, in short, the most powerful automation tool currently available on iOS.

The middleman is unsurprisingly, Dropbox.

The Mac part of the workflow relies on Ember (get a free trial) and it’s auto-import feature. Full disclosure, it’s an app that we make.

Here’s a screen recording of the workflow in action (the Dropbox upload time will, naturally, vary depending on your connection speed):

If this looks like the sort of workflow that would work for you as well, here’s how to set it up.


Workflow

The action I use in Workflow is largely based on the “Upload Screenshots” action featured in the photos section of their built-in gallery. I’ve made the following changes to it:

  1. Under the “Save to Dropbox” option, I’ve set a specific “Destination Path”. Doing this means that it won’t prompt me to choose a folder every time I upload screenshots. The path I chose was Apps/Workflow/Screenshots/ but you can to set it to anywhere you want within your Dropbox.
  2. I added a home screen icon specifically for this workflow. To do this, tap once on the action under “My Workflows” to edit it, then tap on the cog in the upper right hand corner. In the menu, tap “Add to Home Screen” and follow the instructions.

Rather than setting all of this up yourself, you can just download my action from here if you want (open that link on an iOS device to get an install prompt.)

Dropbox

You will be asked to setup Dropbox in Workflow. As long as you already have a Dropbox account there really isn’t much to do here.

Ember

Open up Ember on your Mac and go to Preferences → Auto-Import. In the bottom left hand corner, click the ✚ icon and select the same folder you chose as your “Destination Path” back in the Workflow section. I like to have “Move original to Trash” turned on but that’s completely optional. The rest of the settings can be left as they are.

The settings in Ember’s auto import

That’s it, you’re good to go. It’s worth noting that Workflow doesn’t always handle a large number screenshots well though. I’ve found it’s best to do them half a dozen or so at a time if you have a lot.


Parts of the app could, I think, be improved but overall I’m very impressed with Workflow. As someone who enjoys experimenting with automation, I’m sure I’ll have another action to share at some point in the future.

Microblogging with Typed.com

In recent weeks, a small community has started to gather around the idea of microblogging on personal sites rather than services like Twitter (or at least cross-posting from personal sites to Twitter). From what I can tell, Manton Reece is at the source of it. That was certainly where I first came across the idea anyway.

Yesterday Manton linked to a post of mine on the Realmac forums. In it, I detail the workflow I’ve been using for my own microblogging experiment with Typed.com—our very own blogging service (still in beta).

My first workflow involved IFTTT’s DO Note app and my home server but I didn’t like the idea of relying on an external element so eventually came up with this one and it’s been working very well for me.

The gist of it is that your post, written in Drafts, gets sent to Editorial which will take care of the publishing part thanks to it’s ability to run Python and Javascript scripts in it’s built in browser. The post could be both written and published from Editorial, but as nearly everything I do on my phone runs through Drafts anyway, it made sense for this to too.

Setup Drafts

The Drafts section is very simple. Create a new action with the following steps:

1​. “Clipboard” → Make sure “Options” is set to “Replace” and that the template is set to [[draft]].

2​. “URL” → Set the URL template to editorial://new/[[time]]?root=dropbox&command=Publish%20micropost.

Setup Editorial

Create a new workflow in Editorial named “Publish micropost” (important) with the following actions:

1​. “Get Clipboard”.

2​. “URL Escape”.

3​. “Set Variable” → The variable name should be postcontent and the value should be Input.

4​. Run Python Script → Be sure to replace YOURBLOGSNAME with the actual name you used for your site in Typed.com. For example, mine would be casualnotebook.

#coding: utf-8
import workflow
#import clipboard
import urllib

postcontent = workflow.get_variable('postcontent')
#print 'Content: '+postcontent

url = "https://www.typed.com/sites/YOURBLOGSNAME"+("/posts/_new?content=%s" % (urllib.quote(postcontent)))

workflow.set_output(url)

5​. “Open URL” → “Open in” should be set to the in-app browser and “Wait until Loaded” should be on.

6​. “Evaluate Javascript”: → Depending on the length of your site’s name, you will have to change the number in var paste = content.substr(62);. If your site’s name is 14 characters then you’re all set. If it’s less, reduce 62 by the number of characters under 14 it is. If it’s more, add more. This is the line of code that strips the typed.com domain and your site’s username from your micropost.

// Set the title
document.getElementById('id_title').value = "-";

// Set the content
var urls = window.location.href;
var content = decodeURIComponent(decodeURIComponent(urls));
var paste = content.substr(62);
document.getElementById('id_content').value = paste;

// Set the slug
var num = Math.random().toString(36).substring(6);
var slug = "microblog-"+num;
document.getElementById('id_slug').value = slug;

// Set the tag
document.getElementById('id_tags-0-title').value = "microblog";

// Publish it
$('.btn-primary.btn-block').click();

7​. “Open URL” → Set the URL to drafts4://.

Styling

Microposts are styled by adding the .micropost class to any post with the “microblog” tag (which is done automatically in the previous workflow). To add the class, add the following jQuery to your site’s body code.

$('.post-meta:contains("microblog")').closest('article').addClass('micropost');

I kept the styling for my microposts pretty simple.

.micropost { font-family: "Lato", "Helvetica Neue", Helvetica, sans-serif; font-size: 17px; }
.micropost:before { content: "✎"; display: inline-block; float: left; padding-right: 10px; position: relative; top: 1px; color: #a5a5a5; }
.micropost .post-title,
.micropost .post-meta,
.micropost .read-more { display: none; }

As I said on the forum, this is just something I’ve enjoyed tinkering with as Typed.com doesn’t have an API yet. This’ll only be useful to you—for the time being at least—if you were one of our Indiegogo backers. And if that’s the case, then thank you!

Here’s how it looks in action: