Permalink

Optimize PNG: Bildkomprimierung mittels pngquant, advpng und Keyboard Maestro

Eine meiner goldenen Regeln beim Bloggen ist die Darstellung von verhältnismäßig vielen Screenshots. Zum einen ergänzt es geschriebene Artikel. Zum anderen macht es die vorgestellte App oder auch Hardware für den Leser greifbarer.

Viele Screenshots wirken sich allerdings oft nachteilig auf die Ladezeiten im Browser aus. Und das erst recht, wenn man so wie ich auf das PNG-Format schwört. Daher ist es umso wichtiger, dass man Bilder vor der Veröffentlichung optimiert.

Viele Bildbearbeitungsprogramme wie Pixelmator (Pro), Acorn oder Affinity Photo bieten schon out-of-the-box für Bilder einen Webexport an, die meiner Meinung nach aber allesamt maximal nur für den schnellen Wurf zu gebrauchen sind. Besser eignen sich kostenlose Tools wie ImageOptim oder ImageAlpha, die Bilder bei gleichbleibender Qualität wesentlich effizienter optimieren bzw. komprimieren.

Gerade ImageAlpha hat sich bei mir in den letzten Jahren als Killerapp etabliert. Eine der Grundlagen dieser App ist ein Kommandozeilentool namens pngquant, das man auch ganz ohne GUI direkt von seiner Webseite oder mittels Homebrew installieren kann.

Im Gegensatz zu ImageAlpha hat man mit pngquant in der Kommandozeile wesentlich mehr Möglichkeiten, was sich schlussendlich in eine noch bessere Bildkompression bei nahezu gleicher Bildqualität niederschlägt.

Damit man nun nicht alle Optionen von pngquant auswendig lernen und für den Batchbetrieb aufwendig ins Terminal eingeben muss, kommt die Allzweckwaffe Keyboard Maestro zum Einsatz.

Einzige Voraussetzung sind der Import eines fertigen Macros und die Installation von pngquant. Dazu muss die Variable ENV_PATH in den Einstellungen von Keyboard Maestro auf den binary Pfad von Homebrew (normalerweise /usr/local/bin) zeigen.

brew install pngquant

Anschließend markiert man eine oder mehrere PNG, TIFF, GIF oder BMP Dateien im Finder und startet das Macro (beispielsweise) mittels eines in KM definierten Shortcuts.

Der daraufhin aufpoppende Setup Dialog ist im Prinzip ein gepimptes ImageAlpha. Nun sind alle in pngquant verfügbaren Optionen in einer GUI sichtbar und können nach Belieben angepasst werden.

Neben der eigentlichen Bildqualität kann man beispielsweise das Dithering, die Geschwindigkeit oder auch das Anhängen eines Suffixes an das neu komprimierte Bild festlegen.

Interessant ist noch die Möglichkeit die Dateigröße des Bildes, nachdem die Komprimierung mit pngquant abgeschlossen ist, mit AdvanceCOMP weiter zu optimieren.

Bei diesem Tool, das zur Nutzung natürlich auch erst mal wieder installiert sein muss (Stichwort Homebrew), handelt es sich um einen Deflate-Encoder, der bei der Kompression von PNG-Dateien oft noch bessere Ergebnisse liefert. Im Optimalfall sind hier zusätzliche 5 bis 20% (verlustfrei) bei der Dateigröße herauszuholen. Das ist super, geht zu Lasten der Geschwindigkeit.

brew install advancecomp

Abschließend kann man die nun (fast) fertig komprimierten Bilder noch automatisiert an ImageOptim übergeben, um die wirklich letzten Bytes aus der Datei herauszuquetschen.

Es lohnt sich übrigens auch mal ein Blick in das importierte Macro. Hier sieht man mal, wie komplex Workflows in Keyboard Maestro sein können und vor allem wie viel Zeit man mit ihnen im Vergleich zum Fußweg über das Terminal (zumindest in diesem Fall) sparen kann.

Schlussendlich kann man festhalten, dass sich durch die zusätzlichen Optionen, die dieses Macro gegenüber ImageAlpha bietet, im Schnitt zusätzliche 10 bis 20% bei der Dateigröße einsparen lassen.

-> https://forum.keyboardmaestro.com/t/png-optimizer

Permalink

Review: Keyboard Maestro 8 · Automatisierung unter macOS (Gewinnspiel inside)

Geht es um das Thema automatisierte Arbeitsabläufe am Mac, führt bei mir kein Weg an Keyboard Maestro vorbei.

Diese oft extrem unterschätze Software war in den letzten Jahren immer mal wieder Bestandteil unserer Artikel, so dass auch der Workflow-Laie das Potential der App vielleicht schon erahnt hat. Heute möchte ich mit Keyboard Maestro 8 die neuste Version genauer vorstellen.

Grundlagen

Bei Keyboard Maestro handelt es sich um ein Workflow-Automatisierungstool, das im Grunde genommen Apples Automator ähnelt. So kann man auch ohne große Programmiersprachenkenntnisse Workflows erstellen, die das tägliche Arbeiten mit dem Mac erleichtern.

Die Fähigkeiten von Keyboard Maestro gehen dabei weit über die des Automators hinaus. Über eine Kombination aus Aktionen und Triggern lassen sich Macros erstellen, die den eigentlichen Workflow darstellen. Der Komplexität sind kaum Grenzen gesetzt. Für einen Einstieg empfehle ich eine Suche hier im Blog bzw. direkt den Blick ins Wiki oder den Supportbereich des Entwicklers. Auch der Twitteraccount des Entwicklers ist eine exzellente Quelle für neue Macros.

Was ist neu?

Das umfangreiche Changelog zeigt für KM8 über 100 neue Features und Bugfixes an. Ich werde mich daher für diese Review wieder ausschließlich auf die wichtigsten Neuerungen der neuen Version konzentrieren.

Neben einem neuen Assistance System, das bei der Fehlersuche innerhalb von Makros hilfreich ist, sind vor allem die neuen Aktionen und Trigger interessant.

Mit diesen neuen Features muss man in der Regel erst mal etwas experimentieren, um die nun neu geschaffenen Möglichkeiten gänzlich zu begreifen. Es kommt auch gar nicht mal so selten vor, dass neue Aktionen und Trigger bestehende Makros obsolet machen oder sie mit Blick auf die Komplexität erheblich vereinfachen.

Aktion: Send SMS / Send iMessage

Diese beiden neuen Aktionen nutzen Apples Nachrichten App und erlauben somit die Kommunikation mit der Außenwelt.

Wenn also irgendein Macro unsichtbar im Hintergrund läuft, kann man sich nun per Notifications (SMS oder iMessage) auf den Mac oder das Smartphone Updates senden lassen. Man muss einfach nur eine E-Mail Adresse oder Telefonnummer (bzw. wählt einen Empfänger aus den Kontakten) samt Nachrichtentext eingeben. Der Rest läuft automatisch.

Die KM Doku weist allerdings darauf hin, dass die SMS u.U. den falschen Empfänger erreichen kann. Daher sollte man auf sensitive Inhalte besser verzichten.

Aktion: Prompt With List

Macros waren bisher nicht wirklich interaktiv. Man könnte sie zwar mit Text oder Dateien füllen, diese Daten aber nicht on-the-fly definieren.

Mit der neuen Prompt With List Aktion hat man basierend auf der Zwischenablage, einer Variable, Datei oder Text Auswahlmöglichkeiten und kann den Input von Macros vor dem eigentlichen Start anpassen.

Touch Bar Support

Die Unterstützung der Touch Bar gehört, trotz der nach wie vor sehr stiefmütterlichen Behandlung durch Apple, zum guten Ton einer jeden App. So natürlich auch bei Keyboard Maestro.

Dazu kann man nun über die neue Aktion Get Touch Bar Selection verschiedene Knöpfe auf der Touch Bar abbilden und deren Ergebnis auf verschiedene Arten (neues Fenster, Notification, gespeichert als Variable oder in der Zwischenablage…) ausgeben.

Darüber hinaus kann man jetzt über die Aktion Show Palette of Macros (neben der separaten Palette) den Namen ausgewählter Marcos auf der Touch Bar anzeigen und die Marcos auch von dort starten. Gleiches gilt für Macros, die per Conflict Palette gestartet werden.

Trigger: Cron, Gesture, Idle, Audio Output Changed, Remote, Dragged File

Neben den neuen Aktionen, hat sich natürlich auch etwas bei den Triggern getan.

Über das Cron Format kann man Macros nun zeitlich basiert (Uhrzeit, Tag, Woche oder Jahr) abfahren lassen. Der Gesture Trigger macht gleiches auf Basis einer Geste auf dem Trackpad oder der Maus. Die Idle und Audio Output Changed Trigger sind selbsterklärend. Interessant ist noch der neue Remote Trigger, über den man Macros entfernt über einen Trigger Code per Webseite steuern kann.

Mit Keyboard Maestro 8.2 kam noch ein erwähnenswerter Dragged File Trigger hinzu, der u.U. das anfangs schon erwähnte Umbauen bestehender Macros erforderlich macht.

Möchte man beispielsweise den Pfad einer im Finder markierten Datei abrufen, kann folgendes Macro zum Ziel führen:

Gleiches erledigt das jetzt folgende Macro im Zusammenspiel mit dem neuen Dragged File Trigger.

Der Unterschied zur vorherigen Version besteht halt darin, dass man die Datei, von der man den Pfad haben möchte, auf das Marco innerhalb einer Palette “droppen” muss.

Applications Palette

Ebenfalls mit Keyboard Maestro 8.2 kam die Applications Palette hinzu.

Dieses Feature wird entweder über die Einstellungen oder das Menüleisten Icon von KM8 aktiviert und zeigt alle gerade laufenden Apps an.

Wie alle Paletten in KM kann man auch diese über den Theme Editor optisch anpassen oder spezielle Apps von der Anzeige ausschließen.

Zieht man jetzt Dateien oder Ordner auf eines der App-Icons in der Palette, werden diese Daten mit dieser App geöffnet bzw. verarbeitet. Mit einen Rechtsklick können über ein Kontextmenü weitere Aktionen ausgeführt werden.

Außerdem kann man über die Applications Palette mit Klick auf eines der Icons direkt zur App springen (quasi das klassische Cmd+Tab Feature von macOS).

Sonstiges

Bei KM8 gab es zudem sehr viele kleinere Anpassungen im Macro Editor, die man erst beim genauen Hinschauen oder Durchlesen der Release Notes wahrnimmt.

So bietet der Editor nun die volle Unterstützung von AppleScript.

Ganz nett ist auch das “draggen” von Dateien in Macros. Daraufhin werden nämlich automatisch zur Datei passende Aktionen erstellt. Zieht man beispielsweise eine App in ein Macro, folgt die Aktion Activate Application. Zieht man ein Skript hinein, folgt die Aktion Execute Script u.s.w.

Abschließend noch ein kleines Video vom Entwickler, das Keyboard Maestro 8 in bewegten Bildern vorstellt.

Preise und Verfügbarkeit

Keyboard Maestro 8 wird ausschließlich über die Homepage von Entwickler Stairways Software für derzeit knapp 36 Euro (von aktuellen Dollarkurs abhängig) verkauft. Ein Upgrade wird nach Prüfung der vorhandenen Lizenz für 25 Euro angeboten.

Skeptiker greifen vor dem Kauf zur kostenlosen Testversion. Zur Installation wird OS X 10.10 Yosemite oder neuer vorausgesetzt.

-> http://www.keyboardmaestro.com

tl;dr

Ich sagte ja bereits im ersten Satz dieser Review, dass Keyboard Maestro für mich bei automatisierten Arbeitsabläufen unverzichtbar ist. Ich kann gar nicht genau sagen, für was ich die App alles nutze…

Mit Version 8 wurde das Tool mit neuen Triggern und Aktionen sowie vielerlei Anpassungen beim Editor weiter verfeinert. Dazu kamen Anpassungen bei der Zwischenablagefunktion und ein erweiterter MIDI-Support, um auch mal Dinge zu nennen, die in der Review noch nicht erwähnt wurden.

Insgesamt kann ich Bestandskunden das Upgrade auf Version 8 bedenkenlos empfehlen. Neukunden werden anfangs wieder etwas Einarbeitungszeit mit dem Tool benötigen. Keyboard Maestro ist halt sehr speziell. Hinzu kommt, dass jeder andere Workflows hat, die sich mit dem Tool automatisieren lassen.

aptgetupdateDE Wertung: (10/10)

Gewinnspiel

Auch dieses Mal hat uns Stairways Software wieder drei Lizenzen von Keyboard Maestro für eine Verlosung zur Verfügung gestellt.

Zur Teilnahme kommt erneut Gleam zum Einsatz, bei dem die folgenden optionalen und gleichwertigen Lose enthalten sind:

  • Frage beantworten
  • aptgetupdateDE bei Twitter folgen
  • Tweet zur Review bei Twitter retweeten
  • aptgetupdateDE bei Facebook besuchen
  • aptgetupdateDE bei Google+ besuchen

Die Auslosung findet kommenden Montag, den 23.04.2018, statt. Viel Glück!

Permalink

Howto: macOS Apps mit Keyboard Maestro oder AppleScript aktivieren/pausieren/beenden

Heute möchte ich mal wieder einen kleinen Workflow verlinken, der dieser Tage von Alexander veröffentlicht wurde.

Es geht im Grunde genommen um das an einem bestimmten Wochentag mit vorgegebener Uhrzeit selbstständige Starten von Apps. Dazu kann man die Dauer der Aktivierung bis zum automatischen Beenden der App festlegen.

Als Tools kommen die alles erschlagende Allzweckwaffe Keyboard Maestro und/oder ein AppleScript zum Einsatz.

Viel Spaß beim Nachbauen 😎

Abschließend noch das passende AppleScript, das für die jeweilige App natürlich angepasst werden muss.

Dieses Beispiel bezieht sich ausschließlich auf MailMate, meinen unter macOS bevorzugten Mailclient.

tell application "MailMate"
 launch
 activate
 delay 3
  tell application "System Events"
   activate
   set theTime to text returned of (display dialog "Wie lange soll MailMate aktiviert bleiben?" with title 
                                    "MailMate Aktivierung" default answer "" buttons {"Cancel", "Start"} default button 2)
   delay theTime * 60
   tell application "MailMate" to quit
  end tell
end tell
Permalink

Howto: Yoink · iCloud Sync zwischen iOS und macOS einrichten (Gewinnspiel inside)

Dass Yoink ein sensationell guter Ablagespeicher für den Mac und neuerdings auch für iOS ist, hatte unsere ausführliche Review von vor gut zwei Wochen schon ganz gut beschrieben.

Eine der wenigen Meckerpunkte war und ist die noch fehlende geräte- bzw. systemübergreifende Synchronisation aller in Yoink befindlichen Objekte. Was für iOS bereits als Update angekündigt ist, gestaltet sich für einen Sync zwischen macOS und iOS schwierig, da Apple eine derartige Aktion schlichtweg nicht erlaubt.

Bildschirmfoto 2017-11-21 um 15.59.59-minishadow_1300px

Es gibt natürlich dennoch eine Möglichkeit die Objekte systemübergreifend zu synchronisieren.

Ich übergebe hiermit das Wort an Alexander, der diese Möglichkeit mit Hilfe des iCloud Drives und dem Aufräumtool Hazel in seinem neusten Screencast vorstellt. Für das Pro-Level kommt dann noch die Allzweckwaffe Keyboard Maestro zum Einsatz.

Benötigte Tools

Zunächst benötigt man natürlich Yoink, das für iOS und macOS in den jeweiligen App Stores zum Download bereit steht und derzeit 3,49 Euro bzw. 7,99 Euro kostet.

Yoink - Besseres Drag und Drop
Yoink - Besseres Drag und Drop
Yoink - Verbessert Drag & Drop
Yoink - Verbessert Drag & Drop

Darüber hinaus braucht man Hazel, das von seinem Entwickler Noodlesoft ausschließlich direkt verkauft wird und nach einer kostenlosen Testphase mit 32 US-Dollar zu Buche schlägt.

-> https://www.noodlesoft.com

Für die Kür ist Keyboard Maestro wünschenswert, das ebenfalls über eine kostenlose Testphase verfügt und schlussendlich mit knapp 38 Euro zu Buche schlägt.

-> http://www.keyboardmaestro.com

Verlosung

Der österreichische Entwickler von Yoink, Eternal Storms Software, hat aptgetupdateDE für ein Gewinnspiel fünf Promo Codes von Yoink für den Mac zur Verfügung gestellt.

Zur Teilnahme kommt wieder Gleam zum Einsatz, bei dem die folgenden optionalen und gleichwertigen Lose enthalten sind:

  • Frage beantworten
  • aptgetupdateDE bei Twitter folgen
  • aptgetupdateDE bei Facebook besuchen
  • aptgetupdateDE bei Google+ besuchen

Die Auslosung findet kommenden Mittwoch, den 29.11.2017, statt. Viel Glück!

Permalink

Howto: Per Shortcut in macOS Apps einloggen (mit Hilfe von 1Password und Keyboard Maestro)

Trotz aller Kontroversen bin ich nach wie vor ein sehr großer Fan des Passwortmanagers 1Password.

Vor etwas mehr als zwei Jahren hatte ich auf die verfügbaren Tastaturkürzel der App aufmerksam gemacht und gezeigt, wie man sich über 1Password mini relativ einfach in Webseiten und Apps einloggen kann.

Bildschirmfoto 2017-08-25 um 11.02.06-minishadow

Während das Einloggen auf Webseiten (meistens) mit einem nur einem Klick oder Sprachbefehl erledigt ist, sind zum Einloggen in eine App schon mehrere Schritte notwendig.

Um diesen Workflow abzukürzen, hatte unser geschätzter Kollege Alexander vor gut zwei Wochen ein erstes Video-Tutorial erstellt, in dem er erklärt, wie man sich mit Hilfe von Keyboard Maestro und nur einem Mausklick, einem Shortcut oder auch nur durch das Starten einer App in Accounts einloggen kann.

Damit dieses erste Tutorial problemlos funktioniert, muss 1Password mini allerdings ständig entsperrt sein. Ist es das nicht, was bei vielen Nutzern der Standardfall sein sollte, funktioniert das Makro nicht und man muss sich etwas Neues einfallen lassen. Das hat Alexander auch getan und mit Hilfe des Keyboard Maestro Forums eine Lösung gefunden, die auf nur einem einzigen AppleScript basiert 😲

use AppleScript version "2.4" -- Yosemite (10.10) or later
use framework "Foundation"
use scripting additions

on run
  set searchTerm to "icloud"

  tell application "System Events"
    set preClip to (the clipboard) as text
    set elements to every UI element whose creator type is "1Ph*"
    if elements is {} then
      log "1Password Mini is not running"
      return false
    end if
    set mini to (first item of elements)
    set miniName to short name of mini
    log miniName & " is running as " & name of mini
    set isLocked to my isOPMiniLocked(miniName)
    open location "x-onepassword-helper://search/" & searchTerm
    if isLocked then
      if not (my waitForUnlock(miniName, 10)) then
        return false
      end if
    end if
    tell its UI element (name of mini)
      set frontmost to true
      set i to 0
      repeat
        try
          if (focused of text field 1 of window 1) is true then
            tell text field 1 of window 1
              set value to searchTerm
              perform action "AXConfirm"
            end tell
            delay 1.0
            keystroke "c" using {command down, shift down}
            delay 0.5
            set thePass to (the clipboard) as text
            exit repeat
          end if
        end try
        delay 0.1
        set i to i + 1
        if i > 100 then
          return false
        end if
      end repeat
  
      tell application "App Store" to activate
      delay 0.5
      keystroke thePass
      key code 36
      set the clipboard to preClip
    end tell
  end tell
end run

on isOPMiniLocked(miniName)
  tell application "System Events"
    tell application process miniName
      perform action "AXPress" of menu bar item 1 of menu bar 1
      set isLocked to (subrole of text field 1 of window 1 is "AXSecureTextField")
      delay 0.1
      key code 53 -- Escape key to close 1PMini window
      if isLocked then
        log "1Password Mini is locked"
        return true
      end if
      log "1Password Mini is unlocked"
      return false
    end tell
  end tell
end isOPMiniLocked

on waitForUnlock(pProcessName, pMaxTimeSec)
  local startTime, elapTime, errMsg
  set startTime to current application's NSDate's |date|()
  log startTime
  tell application "System Events"
    repeat
      set elapTime to (-(round ((startTime's timeIntervalSinceNow()) * 100)) / 100.0)
      if (elapTime > pMaxTimeSec) then
        set errMsg to "Max Time of " & pMaxTimeSec & " seconds exceeded waiting for " & pProcessName
        log errMsg
        return false
      end if
      try
        set roleMode to (subrole of text field 1 of window 1) of (application process pProcessName)
        if roleMode is "AXSearchField" then
          return true
        end if
      end try
      delay 0.1
    end repeat
  end tell
end waitForUnlock

Ohne jetzt in die Tiefen des Codes einzusteigen, muss gesagt werden, dass dieses Skript nur bedingt universell verwendbar ist. Je nachdem in welche App man sich einloggen möchte, muss das AppleScript an zwei Stellen angepasst werden.

Zum einen direkt am Anfang bei der Suche nach dem in 1Password hinterlegten Login. Zum anderen bei der App, für die ein Login benötigt wird.

KM_Macro_Screenshot_2017-09-08 um 09.52.01_1300px

Ist nun alles gut?! Mitnichten, denn für Leute wie mich, die eines dieser neumodischen MacBook Pro mit Touch ID verwenden, funktioniert das AppleScript nicht; zumindest wenn man Touch ID zum Entsperren von 1Password verwendet.

Aber auch hier kamen Alexander und ich nach einigen Überlegungen zum Ziel: Keyboard Maestro hat nämlich den Vorteil, dass man Bedingungen an am Bildschirm angezeigte Fenster bzw. Grafiken knüpfen kann.

Somit ist das vorherige AppleScript jetzt in zwei Teile zerhackt, funktioniert aber auch mit Touch ID 😎

KM_Macro_Screenshot_2017-09-08 um 09.51.21_1300px 2

Auch hier gilt wieder: das Makro ist nicht universell verwendbar, sondern muss für jeden App-Login an drei Stellen angepasst werden. Zu den aus dem ersten AppleScript bekannten Stellen kommt jetzt noch eine Grafik hinzu, die den gefundenen Login in 1Password mini identifiziert.

Zum finalen Anzeigen bzw. Nutzen der verschiedenen Logins empfiehlt es sich auf die von Keyboard Maestro zur Verfügung gestellten globalen Makro Paletten zu setzen. Hier genügt dann im Endeffekt ein Mausklick und man ist in App X oder App Y eingeloggt.

Bildschirmfoto 2017-09-08 um 11.19.40

Um jetzt das ganze Prozedere besser nachverfolgen und auch live in Aktion sehen zu können, hatte Alexander vor ein paar Tagen ein zweites Video erstellt, das das erste Tutorial ergänzt bzw. aktualisiert.

Viel Spaß beim Anschauen 📼

Die beiden hier vorgestellten Makros können übrigens hier heruntergeladen werden.

Permalink

speedtest-cli · Kommandozeilen Tool zum Messen der Internet Bandbreite

Möchte man daheim oder im Büro die Datenübertragungsraten des Internetanschlusses testen, führt der Weg meistens über den Browser zu speedtest.net.

Braucht man keine fancy Grafiken, kann man selbiges auch im Terminal über das Kommandozeilen Tool speedtest-cli, welches quasi eine non-GUI-Ansicht von speedtest.net ist, erreichen.

Bildschirmfoto 2017-04-08 um 01.24.40-minishadow

Die Installation erfolgt recht simpel über Brew:

brew install speedtest_cli

Möchte man den Weg über Brew nicht gehen, sind auf der Projektseite bei GitHub weitere Installationsmöglichkeiten aufgelistet. Die einfachste ist sicherlich der Download über das Terminal:

curl -Lo speedtest-cli https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py
chmod +x speedtest-cli

Jetzt kann man speedtest starten und bekommt in den default-Einstellungen, wie oben im Screenshot zu sehen, recht umfangreiche Informationen angezeigt.

Vielleicht als Hinweis:
Normalerweise startet man speedtest über den Befehl speedtest. Darüber hinaus gibt es noch die beiden Aliase speedtest-cli und speedtest_cli, die Identisches bewirken.

Auf der Projektseite sieht man auch schon, dass es recht vielfältige Optionen zum Starten des Tools gibt. Die vereinfachte dreizeilige Anzeige der Ergebnisse erzielt man mit:

speedtest --simple

Bildschirmfoto 2017-04-08 um 01.25.38-minishadow

Exkurs Keyboard Maestro

Möchte man das Testen der Internet Bandbreite automatisieren oder mit einem globalen Shortcut (ohne Umweg über das Terminal) starten, kommt wieder die Allzweckwaffe Keyboard Maestro zum Einsatz.

Nachfolgend drei Macros, die immer etwas ausgefeilter werden:

The Simple Version

Über die erste und die letzte Aktion, und das ist allen Macros gleich, wird das Macro nach dem Starten gesperrt. Damit wird verhindert, dass das Macro doppelt gestartet wird und schlussendlich unsaubere Ergebnisse liefert.

KM_Macro_Screenshot_2017-04-05 um 12.24.57

Die zweite Aktion generiert eine Notification, die über den Start des Tests informiert und schon mal darauf hinweist, dass das Ergebnis ebenfalls in einer Notification angezeigt wird.

Die dritte Aktion ist der eigentliche, in diesem Fall vereinfachte dreizeilige Test, der einige Sekunden braucht, um Ergebnisse zu liefern. Hier ist darauf zu achten, dass der vollständige Pfad zum Tool angegeben ist. Da ich die Installation über Brew nutze, steht bei mir /usr/local/bin.

Bildschirmfoto 2017-04-04 um 22.54.10

The Fancy Version

Auch hier wird das Macro über die erste und letzte Aktion gesperrt, sofern es ausgeführt wird.

KM_Macro_Screenshot_2017-04-05 um 12.25.11

Die Notification aus der zweiten Aktion, die über den Start des Tests informiert, ist nun etwas detaillierter. Man kann den Titel sowie Untertitel und den eigentlichen Text separat festlegen. Dazu wird ein kleiner Soundeffekt abgespielt.

Die dritte Aktion startet den, in diesem Fall kompletten Test (auch hier muss man wieder auf den Pfad achten) und speichert das Ergebnis zunächst in eine Variable. Diese Variable wird in der vierten Aktion durchsucht und zur Ergebnisaufbereitung vier neuen Variablen zugeordnet. Diese neuen Variablen werden in der fünften Aktion aufgegriffen und unter einem Soundeffekt als Ergebnis des Tests als Notification angezeigt.

Bildschirmfoto 2017-04-04 um 22.54.58

The Special Version

Dieses Macro ist quasi eine Kopie des ersten Macros; allerdings mit zwei kleinen Unterschieden.

Zum einen wird das Macro bei eingeloggtem User jeden Tag alle 90 Minuten automatisch ausgeführt.

KM_Macro_Screenshot_2017-04-05 um 12.32.14

Zum anderen wird anstelle des direkten Aufrufs des Speedtest-Tools ein Python-Skript gestartet, das diesen Aufruf übernimmt (hier muss man erneut auf den Pfad zum Tool achten) und das Ergebnis aufbereitet als Notification ausgibt.

Das Ergebnis wird dann im Vergleich zum ersten Macro auch etwas anders dargestellt.

Bildschirmfoto 2017-04-04 um 23.01.59

Die drei hier vorgestellten Macros habe ich bei GitHub hochgeladen, so dass sie jeder selbst ohne großes Zutun ausprobieren und modifizieren kann.

-> https://github.com/johnnycash69/km-macros

Terminal Know-how

Möchte man nur die Downloadgeschwindigkeit seine Internetanschlusses testen, kann man auf den Service von speedtest.net oder dem dazugehörigen CLI auch komplett verzichten. Es genügt im Prinzip ein Einzeiler im Terminal. Voraussetzung ist allerdings die vorherige Installation des Tools wget.

wget --no-cache cachefly.cachefly.net/400mb.test -O /dev/null

Dieses Kommando lädt von CacheFly, einem der weltweit schnellsten CDNs eine 400 MB große Datei (man kann hier auch 100 MB, 600 MB… angeben) runter und zeigt dabei die Download-Geschwindigkeit an. Die Option -O /dev/null verschiebt diese Datei auch gleich ins Nulldevice, so dass nicht unnötig Platz auf der Festplatte verschwendet wird.

Bildschirmfoto 2017-04-08 um 01.27.56-minishadow_1300px

Möchte man auch auf das gute alte wget verzichten, führt auch folgendes Kommando zu Ziel, das das in macOS eingebaute Tool curl zum Testen nutzt.

curl --no-sessionid cachefly.cachefly.net/400mb.test -o /dev/null

Bildschirmfoto 2017-04-08 um 01.33.59-minishadow_1300px

(thx @konfluenzpunkt, via, via)

Permalink

Howto: Websuchen-Tool mit Keyboard Maestro erstellen

Websuchen aller Art haben einen entscheidenden Nachteil: Man muss zunächst die Webadresse im Browser eingeben, danach das Suchfeld identifizieren bzw. anklicken und kann dann erst den Suchbegriff eingeben; also viele kleine Schritte mit vergleichsweise viel Klickerei…

Wesentlich einfacher geht es über ein Websuchen-Tool, das man mit der Allzweckwaffe Keyboard Maestro realisieren kann.

Zur Erstellung dieses Tools kommt ein Feature namens Conflict Palette zum Einsatz, das den Vorteil hat, dass man mit nur einem Shortcut mehrere Aktionen gleichzeitig aufrufen und per hervorgehobenen Zeichens daraus auswählen kann.

So haben im Keyboard Maestro Editor sämtliche Macros, die die Websuche betreffen, zur Aktivierung ein identisches Tastaturkürzel. Der Rest ist frei konfigurierbar und kann somit den eigenen Bedürfnissen angepasst werden.

Das fängt beispielsweise vorne mit dem Icon an. Die anschließenden zwei Zahlen mit der geschlossenen Klammer besitzen einen sortierenden Charakter und werden im eigentlichen Namen des Macros nicht angezeigt. Um diese Sortierung, beispielsweise nach Funktionalität, zu unterstreichen, sind Trennstriche (bei 10), 20), 30)…) eingefügt. Da der KM Editor hier nichts Eigenes anbietet, handelt es sich schlicht um eine Aneinanderreihung von en dashes (Shortcut: Option+Minus). Schön ist anders aber es funktioniert…

Ein wichtiger Punkt ist der darauf folgende Buchstabe. Da dieser einer Websuche eineindeutig zugeordnet ist, handelt es sich quasi um eine per Tastatur auswählbare ID, die die Websuche einleitet.

Fehlt diese Eineindeutigkeit, wird der erste Buchstabe vom Namen des Macros gewählt. Gibt es hier eine Doppelbelegung, wird die Auswahl solange eingeschränkt, bis sie eineindeutig ist. Führt also im ersten Fall ein simples a zum Ziel, sind im zweiten mit a-p-t schon drei Schritte notwendig, um diese Eineindeutigkeit herbeizuführen.

Ein entscheidender Bestandteil sind selbstverständlich auch die Suchmuster. Diese müssen für jede Webseite oder App (man kann beispielsweise auch iTunes oder den Mac App Store auf diese Weise durchsuchen bzw. direkt Promo Codes einlösen) angepasst werden. Einige Inspirationen kann man sich in der sehr guten (Web Search-)Dokumentation zur Alfred App holen.

Wem übrigens das Aussehen der Conflict Palette nicht gefällt, kann in den Einstellungen von Keyboard Maestro über einen Theme Editor diverse Anpassungen vornehmen.

-> https://github.com/johnnycash69/km-macros

(via)