1019Importing Screenshots to Photos with Automator

A simple Automator Action to import Screenshots in OSX into Photos:

  • Select the Folder to which the Action is attached
  • "Add to existing top-level album" - called "Screenshots"

I also have my Screenshots Folder on Dropbox, the Folder Actions are attached to that Folder.

999Running Repetitive Jobs on OSX

Traditionally Unix systems use crontab to schedule and run repetitive jobs, OSX uses launchd, an init and operating system service management daemon.

Here is a script that call my index.php every 120 seconds. (I am download snow webcams in the index.php.)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>Label</key>
  <string>org.trembl.snow</string>
  <key>ServiceDescription</key>
  <string>Getting Snow Pictures</string>
  <key>ProgramArguments</key>
  <array>
    <string>/Applications/XAMPP/bin/php</string>
    <string>/Applications/XAMPP/xamppfiles/htdocs/snow/index.php</string>
  </array>
  <key>RunAtLoad</key>
  <true/>
  <key>StartInterval</key>
  <integer>120</integer>
</dict>
</plist>

In Xcode, the same script looks like this:

Troubleshooting

I made a couple of errors, trying to get the script to run.

  1. Permissions sudo chown <user>:staff org.trembl.snow.plist
    Incorrect permissions also cause the Load failed: 122: Path had bad ownership/permissions

  2. The name of the file and the Label need to match. org.trembl.snow and org.trembl.snow.plist

  3. The plist need to be placed into ~/Library/LaunchAgents.

  4. If your Program has arguments, they need to be specified in an array:

    <key>ProgramArguments</key>
    <array>
    <string>/Applications/XAMPP/bin/php</string>
    <string>/Applications/XAMPP/xamppfiles/htdocs/snow/index.php</string>
    </array>
  5. Both strings need to be absolute. I got this error: Load failed: 122: Path had bad ownership/permissions, which was caused by only saying index.php instead of the whole absolute path.

  6. Use launchctl bootstrap and not the obsolete launchctl load.

  7. Launch with sudo launchctl bootstrap gui/`id -u` ~/Library/LaunchAgents/org.trembl.snow.plist

  8. Stop: sudo launchctl bootoutp gui/`id -u` ~/Library/LaunchAgents/org.trembl.snow.plist

981sed, -i and the macOS

Doing a Search and Replace on the shell should not be difficult:

find . -name "*.html" -exec sed -i "s/searchPattern/replacePattern/g" {} +

However, on macOS this error message occurs:

sed: 1: "./aaa/a ...": invalid command code .
sed: 1: "./aaa/b ...": invalid command code .
sed: 1: "./aaa/c ...": invalid command code .
...

It turns out, on MacOS the -i parameter needs to be followed by an empty string:

find . -name "*.html" -exec sed -i "" "s/searchPattern/replacePattern/g" {} +

979Batch Rename Files with rename

Batch renaming files on the command line, in this case screenshot to more descriptive names:

brew install rename

Dry run:

rename -n -e 's/Screen Shot/w2_OpenSCAD/' -z  *.jpg

Replace, remove the -n flag:

rename -e 's/Screen Shot/w2_OpenSCAD/' -z  *.jpg

-z does sanitize the file name, replacing empty spaces with _.

978Changing default Screenshot Form in OSX

Default format is PNG, change it to any of the following:

defaults write com.apple.screencapture type JPG
defaults write com.apple.screencapture type TIFF
defaults write com.apple.screencapture type GIF
defaults write com.apple.screencapture type PDF
defaults write com.apple.screencapture type PNG

First encountered here.

976Git, Mac, SSH Keys and the OSX Keychain

When using git with a key that has a passphrase, you are asked the passphrase every time you pull/push. To make this a bit more convenient, add the key to the OSX Keychain.

Store key in OSX Keychain:

ssh-add -K ~/.ssh/my_key

Open .ssh/config

Host *
  UseKeychain yes
  AddKeysToAgent yes
  IdentityFile ~/.ssh/my_key

959Making a Bootable Installer for OSX

Straight from the Apple Support page: How to create a bootable installer for macOS https://support.apple.com/en-us/HT201372 High Sierra Page https://support.apple.com/en-us/HT208969 High Sierra App Store Link (hidden from standard Search) https://itunes.apple.com/us/app/macos-high-sierra/id1246284741?ls=1&mt=12

951Making a Bootable USB Stick – for Linux – in OSX

The Manjaro Wiki suggests to make a bootable USB Stick like that:

sudo dd bs=4M if=/path/to/manjaro.iso of=/dev/sd[drive letter] status=progress oflag=sync

While this might work on Linux, it does not work with dd on OSX/Darwin. Here are the error messages:

dd: bs: illegal numeric value
bs does not understand M
multiply manually, 4M -> 4 1024 1024 -> 4194304

sudo dd bs=4194304 if=/path/to.iso of=/dev/diskNr status=progress oflag=sync

dd: unknown operand status
dd on OSX does not understand the status flag
remove status flag

sudo dd bs=4194304 if=/path/to.iso of=/dev/diskNr oflag=sync

dd: unknown operand oflag
dd on OSX does not understand the oflag oflag
remove oflag flag

sudo dd bs=4194304 if=/path/to.iso of=/dev/diskNr

dd: /dev/disk4: Resource busy
Unmount disk before use, either via umount or in Disk Utility

And here we have it:

sudo dd bs=4194304 if=/path/to.iso of=/dev/diskNr

915SSH form OSX to Ubuntu – Locale Error

Problem: ‘std::runtime_error’ what(): locale::facet::_S_create_c_locale name not valid Aborted Solution: export LC_ALL="en_US.UTF-8" via http://martinhjelm.github.io/2015/06/14/Runtime-error-when-sshing-from-OSX-to-Ubuntu/

910Unresponsive Atom Editor on OSX

Atom is great, current, hackable and my current go-to editor, but from time-to-time it does like to open a certain directory. It keeps timing out, restarts of the Editor or the Computer don’t help. Clearing the window state helps. atom --clear-window-state