Skip to content

Handy profile switcher for Karabiner Elements using Alfred Workflows

Notifications You must be signed in to change notification settings

awinecki/karabiner-elements-profile-switcher

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Karabiner Elements profile switcher (Alfred Workflow)

CAUTION (DEPRECATED): I'm no longer maintaining this project. I'm no longer using multiple keyboards daily and generally experiment with Alfred replacements – check out https://raycast.com/. If you wish to take over this repo, contact me.

The fresh macOS Sierra rewrite of the original Karabiner, the Karabiner Elements qietly supports multiple profiles, which has been one of the core features, historically speaking. Although, as of now, you can define multiple profiles in the ~/.config/karabiner/karabiner.json file, but you can't switch between them easily. This is an important features for people that regularly switch between internal / Apple keyboard and an external USB one, which usually have different layout, hence the need for 2+ profiles.

Karabiner Elements listens for changes in karabiner.json config file, and there is a setting that specifies which profile is currently active – selected: true.

This workflow does the following:

  1. Type keprofile (you can change this if you like), to fetch your profiles defined in karabiner.json and list them in Alfred
  2. Once you select a profile you want to switch to, hit ENTER and the workflow script will edit your karabiner.json file so that the selected profile becomes active

Note that after you switch to a different profile, you can adjust its settings inside Karabiner Elements preferences window, save them and it'll all work seamlessly; the workflow only changes selected: true|false attribute, nothing else.

Commands

  • keprofile - lists your profiles; then ENTER to switch to one

Example

Workflow

You can freely edit settings of each profile after switching to it

Sample karabiner.json with multiple profiles

{
    "profiles": [
        {
            "devices": [
                {
                    "disable_built_in_keyboard_if_exists": false,
                    "identifiers": {
                        "is_keyboard": true,
                        "is_pointing_device": false,
                        "product_id": 610,
                        "vendor_id": 1452
                    },
                    "ignore": false
                },
                {
                    "disable_built_in_keyboard_if_exists": false,
                    "identifiers": {
                        "is_keyboard": true,
                        "is_pointing_device": false,
                        "product_id": 5890,
                        "vendor_id": 1241
                    },
                    "ignore": false
                }
            ],
            "fn_function_keys": {
                "f1": "vk_consumer_brightness_down",
                "f10": "mute",
                "f11": "volume_down",
                "f12": "volume_up",
                "f2": "vk_consumer_brightness_up",
                "f3": "f3",
                "f4": "vk_launchpad",
                "f5": "vk_consumer_illumination_down",
                "f6": "vk_consumer_illumination_up",
                "f7": "vk_consumer_previous",
                "f8": "vk_consumer_play",
                "f9": "vk_consumer_next"
            },
            "name": "USB Standard Keyboard",
            "selected": true,
            "simple_modifications": {
                "caps_lock": "escape",
                "escape": "caps_lock",
                "fn": "left_control",
                "left_command": "left_option",
                "left_option": "left_command"
            },
            "virtual_hid_keyboard": {
                "caps_lock_delay_milliseconds": 0,
                "keyboard_type": "ansi"
            }
        },
        {
            "devices": [
                {
                    "disable_built_in_keyboard_if_exists": false,
                    "identifiers": {
                        "is_keyboard": true,
                        "is_pointing_device": false,
                        "product_id": 610,
                        "vendor_id": 1452
                    },
                    "ignore": false
                },
                {
                    "disable_built_in_keyboard_if_exists": false,
                    "identifiers": {
                        "is_keyboard": true,
                        "is_pointing_device": false,
                        "product_id": 5890,
                        "vendor_id": 1241
                    },
                    "ignore": false
                }
            ],
            "fn_function_keys": {
                "f1": "vk_consumer_brightness_down",
                "f10": "mute",
                "f11": "volume_down",
                "f12": "volume_up",
                "f2": "vk_consumer_brightness_up",
                "f3": "f3",
                "f4": "vk_launchpad",
                "f5": "vk_consumer_illumination_down",
                "f6": "vk_consumer_illumination_up",
                "f7": "vk_consumer_previous",
                "f8": "vk_consumer_play",
                "f9": "vk_consumer_next"
            },
            "name": "Apple Keyboard",
            "selected": true,
            "simple_modifications": {
                "caps_lock": "escape",
                "escape": "caps_lock",
                "fn": "left_control"
            },
            "virtual_hid_keyboard": {
                "caps_lock_delay_milliseconds": 0,
                "keyboard_type": "ansi"
            }
        }
    ]
}

Thanks to

About

Handy profile switcher for Karabiner Elements using Alfred Workflows

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages