Alfred better dictionary
Tags: productivity, macos, alfred
Published: 2021-07-11 14:01:39

## What is Alfred?

For those who have never heard of [Alfred](https://www.alfredapp.com), it is an app for macOS which boosts your efficiency with hotkeys, keywords, text expansion, and more. Alfred does come with a free tier, but you might consider upgrading to their [powerpack](https://www.alfredapp.com/powerpack/) if you find the additional features useful. In this article, I am going to share with you the default [workflow](https://www.alfredapp.com/workflows/) Alfred has for looking up definitions of words and the little workflow I created to make the experience a little better.

**Disclaimer**: You need the powerpack to use some of the Alfred features I am using.

## Alfred Dictionary

Before we move on to the little workflow I have created,  let's take a quick look at the default one. Alfred has an amazing integration with the Macbook built-in dictionaries for which I can easily toggle Alfred and type in the keyword `define` (this is customizable as well) follow with the word I want to search for. Here is a screenshot on what it looks like when I try to look up the definition for the word `amazing`:

![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1623997357667/R9BvHCRn4.png)

Now, if I click `Enter`, it will actually open up the dictionary app with the word `amazing` prefilled to the search field. This does make looking up definitions easier because I no longer have to open up my browser and google for the definitions. But, could it be better?

## Alfred Better Dictionary?

By better, I mean it will be great to have a preview of the definitions instead of having to open the dictionary app to see the full definitions. Of course, I am not the only one asking this question. A quick google search gave me a list of results of people asking similar questions on [Alfred forum](https://www.alfredforum.com/topic/16134-better-dictionaries/) and also [Reddit thread](https://www.reddit.com/r/Alfred/comments/juewpl/better_dictionary/). After doing some research, there is a [workflow](https://github.com/mr-pennyworth/alfred-better-dictionaries#better-dictionaries) created by `mr-pennyworth` which do just that. I gave the workflow a try, and it did work, but I am not a fan of having to import the dictionaries into HTML files. So, I did not stop here, the search for a better dictionary continues. Unfortunately, I couldn't find any other alternatives that could meet my need, until I learn about [Alfred QuickLook](https://www.alfredapp.com/help/features/previews/). So what QuickLook can do is, if I type in an URL in Alfred search bar, I can then use the default binding `Shift/⌘ Y` to toggle a preview of that URL in my default browser.

![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1623999080715/-TYQOuNI9.png)

![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1623999094286/rMws5FmNc.png)

## My take on a better dictionary

Now that QuickLook feature is awesome, and ideas quickly popped into my mind to use it to improve the definition look-up experience. The idea is simple, I can type in the word I want to look up for, and then hitting `Shift` will open the preview of the definition in any of the online dictionaries I have set. Let's take a quick look at the end result before moving on to the implementation.

- `en` is the keyword and the word after that is whatever I want to look up for. Currently, I have two online dictionaries setup, [Oxford](https://www.oxfordlearnersdictionaries.com/) and [Cambridge](https://dictionary.cambridge.org/)

 ![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1623999588121/sjKmXxpGw.png)

- Now I can easily navigate to the dictionary I want to look up from and hit `Shift` to open the preview.

![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1623999872956/aEg5Jlxid.png)

- And that's it, I am pretty happy with this workflow. And here is what I did to get it to work. It is super simple, all I need to do is to create a blank workflow, add a [Script Filter Input](https://www.alfredapp.com/help/workflows/inputs/script-filter/) and the following script. This script is just an example for English-English definitions, you can also set it up for online thesaurus, English-to other language definitions, translations, etc.

![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1624000252063/ZPtcllFwX.png)

```ruby
require 'json'

dictionary_list = [
	{"Oxford Dictionary": "https://www.oxfordlearnersdictionaries.com/definition/english/{query}?q={query}"},
	{"Cambridge Dictionary": "https://dictionary.cambridge.org/dictionary/english/{query}"}
]

script_filter_items = []

dictionary_list.each do |hash|
	hash.each do |k, v|
		script_filter_items.push(title: k, quicklookurl: v)
	end
end

puts({ items: script_filter_items }.to_json)
```


## Caveat

Thank you for reading this far, if you decided to give it a try please be aware that:

1. This flow will not work if you don't have an internet connection
2. You might see advertisements in the preview depending on the online dictionary you are using.