This is a collection of smaller workflows, experiments, and demonstrations of interesting concepts for writing automations with the Alfred App.
Some workflows live in their own repository:
- µBib | Citations, BibTeX, and Research
- Quill | Text processing utility
- DEVONthink 3 Portal
- Logseq Workflow
- Default Browser
- Calendar++
Table of Contents
- 1. Workflows
- 1.1. Duden Workflow
- 1.2. What Unicode character is this?
- 1.3. Roman Numeral Converter
- 1.4. DEVONthink ←→ PDF Expert
- 1.5. Define Word - A Better Dictionary
- 1.6. AlfredOCR
- 1.7. Favorites
- 1.8. New File
- 1.9. Keyboard Brightness
- 1.10. GIF from Video
- 1.11. Bluetooth Device Battery
- 1.12. QResolve
- 1.13. GIF from Images
- 1.14 Extract Keywords
- 1.15 Color Picker
- 2. Proof of Concept & Demos
Search, navigate and view information from duden.de German spelling dictionary. |
shift ⇧
orcmd ⌘+Y
: Get QuickLook previews for the landing page, grammar, and synonymscmd ⌘+L
to view the full entry contents.- Action synonymes to list all synonyms. Action any synonym to view the entry for it.
- Action examples or idioms to list all that are available.
Credits: SwiftSoup
The What Unicode character is this? workflow tells you which unicode character it is. Given a character or string, you will get the unicode code points, the scalar names and general categories. |
- KATAKANA LETTER TU
U+30C4
- Other Letter
⌘ cmd
yields\u{30C4}
(swift, ES6 formatted)⌥ opt
yields\u30C4
(python, go formatted)⌃ ctrl
yieldsツ
(HTML entity)⇧ shift
yields0x30C4
(hex literal)
Given a hex value either raw or in any of the above formattings will return its corresponding unicode character.
whatisit? \u{1F914}
yields info for 🤔
Convert Roman numerals to decimal and vice versa. Accepts Arabic numbers in the range 1 to 3999.
The PDF, of course, has to live in one of your open DEVONthink databases.
cmd ⌘
to open the PDF on the same page in DEVONthink.xdev
to enable or disable opening the document in DEVONthink when using the hotkey
Expected result A
x-devonthink-item://1D7FA99A-AAFF-4883-9853-F0666A650400?page=6
Expected result B
x-devonthink-item://1D7FA99A-AAFF-4883-9853-F0666A650400?page=6&start=66&length=9&search=selection
Expected result C
x-devonthink-item://1D7FA99A-AAFF-4883-9853-F0666A650400?page=6&annotation=Squiggly&x=212&y=406
- Fails with documents opened in PDF Expert split view
xdev2.0.0.mp4
Customizable Dictionary with Quicklook Preview - and Dark Mode. |
ctrl
to see the dictionary associated with the entry
cmd + ⏎
to paste a word to the frontmost application (spell checker)
shift
or cmd+Y
to preview the dictionary entry
cmd+C
to copy the dictionary entry's plain text to the clipboard
cmd+L
to view the plain text as large type
You can define dictionaries for lookups, set the font size of the previews, or manually select a dictionary to use. The previews reflect the global appearance, i.e. they have a dark mode. The workflow also includes a preset for looking up synonyms of a word and a convenient keyboard shortcut for quick lookups. To use the workflow as a multilingual spell checker, you can use the cmd
modifier when actioning the entry to paste the word to the frontmost application.
No external dependencies are required to perform the OCR.
The workflow allows you to copy text from images using optical character recognition. Take a snapshot with your mouse or trackpad and the recognized text is automatically copied to the clipboard. You can also extract text from images sent to the workflow's File Action. |
The workflow allows you to copy text from images, or to convert PDF files into searchable PDF documents using optical character recognition, and to apply compression to PDF documents. |
1 / Snapshot
Take a snapshot with your mouse or trackpad and the recognized text is automatically copied to the clipboard.
- Default shortcut: ⌘ ⇧ 6
- Default keyword:
ocr
2 / PDF Document
-
To convert a PDF into a searchable PDF document, pass it to the workflow's Universal Action.
- To compress the resulting PDF, pass the source document on while pressing the ⌘+⇧ keys.
- To open the resulting PDF, pass the source document on while pressing the ⌥+⇧ keys.
- To force the replacement of a source document, pass it on while pressing the ⌥+⌘ keys.
-
To compress a PDF without performing OCR, pass it to the
Compress PDF Document
File Action. -
To view the progress tracker, re-enable the workflow with the
Keyword
(default:ocr
).
Add files and folders to your list of favorites by using the workflow's Universal Action. Quickly find them again by activating the workflow with the |
- Hit
enter
orcmd+O
to open a file or folder. - Add items with the workflow’s Universal Action.
- Modifiers:
ctrl
: Show full Pathcmd
: Reveal in Finderopt
: Browse in Alfredcmd+shift
: Move upopt+shift
: Move downfn
: Remove from Favoritesshift
orcmd+Y
: Quicklook Preview
The workflow will pick up on your location in the Finder and create the new file there. If you use the keyword, the most recently used Finder window will be selected as the destination. If no Finder window is currently open, the file will be created in the configurable fallback location.
Bonus: In addition to all plain-text type files, the workflow can also quickly create docx
, doc
, odt
, rtf
and rtfd
documents for you.
Modifiers
- Hold ⌘ to view the full file path.
- Hold ⌘+⇧ before hitting enter to enforce creating the file with clipboard contents.
- Hold ⌥+⇧ before hitting enter to enforce creating the file without clipboard contents.
The workflow allows you to convert video of popular formats to animated GIFs. To do this, it uses ffmpeg as a dependency. |
Either send a video to the workflow's File Action or invoke the workflow using the keyword and search for the video file you want to convert. Then select the image size you want the resulting GIF to have from the list to start the conversion.
View the battery charge status of connected Bluetooth devices (macOS 13.0+) |
Resolve and open links from QR codes |
A / Take a snapshot of the QR code you want to open the link to
- Default keyword:
qrlink
- Default shortcut: ⌘+⇧+7
B / Send an image containing the QR code to the workflow's File Action
The workflow allows you to convert a series of still images into animated GIFs. For this, it uses ImageMagick as a dependency. |
Send a series of still images to the workflow's File Action to create an animated GIF. The smallest image determines the dimensions of the result. All source images are assumed to be of the same file type, e.g. jpg or png.
Extract keywords and keyphrases from articles, books or other documents with YAKE! |
- Send
PDF
,docx
,doc
,rtf
ortxt
documents to the workflow's File Actions - Pass the text from your selection in macOS on to the workflow's Universal Action
- Use the keyword and paste your text (default:
kw
)
The workflow relies on Python3 to install the YAKE standalone.
pip install git+https://github.com/LIAAD/yake
- official installation guide
brew install poppler
- formula on brew.sh
Pick a color to get its hex, rgba, hsl representation or NSColor initializer. |
Activate the Color Sampler with the keyword (default: cp
) and pick the desired color.
To review previously picked colors, activate the workflow with the keyword preceded by a colon (default: :cp
).
Modifier Palettes & Double Tap Hotkeys. Proof of concept and demo implementation of modifier palettes to invoke actions on consecutive keystrokes in Alfred.
Modifier Palette example behavior.
⌥O
,⌥K
To trigger action A.⌥I
,⌥K
To trigger action B.
Double-Tap Hotkey example behavior
⌃+
,⌃+
To trigger action.
The core idea is to inject environment variables into the workflow configuration and to modify them with some delay.
-
To set up modifier palettes, all you have to do is define an identifier on any hotkey,
⌥O
, such as "openA
". This is the "text" argument that the hotkey passes on as{query}
. Set the identifier to some environment variable, say "gate
", and use a downstreamconditional object
triggered by a different hotkey,⌥K
, to check if the variable ({var:gate}
) is equal to the identifieropenA
. Any action that you make depend on this condition will be triggered iffgate
is equal toopenA
, i.e. if you have recently tapped the hotkey associated with the identifier. -
To set up double-tap hotkeys, proceed in the same way, defining an identifier for the hotkey's "text" argument. For each double tap hotkey, an environment variable is injected that is either
0
or1
for inactive or active.
Disclaimer
: Alfred may crash if you get the timing of the keystrokes just right. This is due to a data race where the same variable ("gate
") is accessed and modified by different threads at the same time. Also, for the double-tap hotkeys, there is some "bleed" into the other hotkeys with the way it is set up in the demo. Tapping a, then b, will also trigger b, instead of having to tap b twice.
An example of how to handle permissions gracefully for your executables. (For now, take a look at the Duden Workflow that implements the permission handler).
Run a graphical prompt and read the input. Proof of concept for using NSWindow and SwiftUI components to get user input through a graphical prompt and then use it in the Alfred app - or on the command line.
Demo for displaying notifications on a heads-up display.
The script takes two arguments:
- The text to display
- The width of the prompt