Using My Full Keyboard as an App Launcher with Goku Simultaneous Layers (Simlayer)
Goku has a concept called a simlayer
.
A simlayer
allows you to press any single key on the keyboard, then any second key while holding the first and trigger an arbitrary action as a result.
I’m going to write a karabiner.edn
config that opens Firefox when you press .+f.
{:simlayers {:launch-mode {:key :period}}, :templates {:open-app "open -a \"%s\""}, :main [{:des "launch mode", :rules [:launch-mode [:f [:open-app "Firefox"]]]}]}
❯ gokuDone!
To start, we define a simlayer
for the period key.
We will reference this layer when we define our rules.
Next we define a template.
Each entry in :templates
is a templated shell command that can run when a rule is satisfied.
Finally, we define the “launch mode” rule in :main
.
We can call it anything we want, so I chose “launch mode”.
Now let’s breakdown the rule
:launch-mode
references thesimlayer
[:f [:open-app "Firefox"]]
is the rule. In this case, when f is pressed, we invoke the:open-app
template passing “Firefox” as an argument. The shell commands that runs as a result isopen -a "Firefox"
If we want to add more mappings for applications to launch with this simlayer
, we can augment the rule like so
{:simlayers {:launch-mode {:key :period}}, :templates {:open-app "open -a \"%s\""}, :main [{:des "launch mode", :rules [:launch-mode [:f [:open-app "Firefox"]] [:s [:open-app "Spotify"]] [:i [:open-app "Cursor"]] [:c [:open-app "Calendar"]]]}]}
Lastly, let’s add another template and another rule in “launch mode” using that template, meaning we will still use the period key to trigger the rule.
{:simlayers {:launch-mode {:key :period}}, :templates {:open-app "open -a \"%s\"", :open-url "open \"%s\""}, :main [{:des "launch mode", :rules [:launch-mode [:f [:open-app "Firefox"]] [:s [:open-app "Spotify"]] [:i [:open-app "Cursor"]] [:c [:open-app "Calendar"]] [:a [:open-url "https://calendar.google.com"]]]}]}
Recommended
Intro to skhd
I learned about skhd recently, actually after coming across the yabai project. I've been toying with the idea of moving away from Hammerspoon for my...