{"id":13451204,"url":"https://github.com/mihaiolteanu/mugur","last_synced_at":"2025-04-04T12:07:45.132Z","repository":{"id":39918600,"uuid":"262365848","full_name":"mihaiolteanu/mugur","owner":"mihaiolteanu","description":"Configurator for QMK compatible keyboards","archived":false,"fork":false,"pushed_at":"2024-10-28T08:28:38.000Z","size":200,"stargazers_count":192,"open_issues_count":2,"forks_count":13,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-03-26T21:11:38.085Z","etag":null,"topics":["emacs","ergodox","keyboard","programmable-keyboard","qmk","qmk-configurator"],"latest_commit_sha":null,"homepage":"","language":"Emacs Lisp","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mihaiolteanu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-05-08T15:55:42.000Z","updated_at":"2025-02-25T12:22:07.000Z","dependencies_parsed_at":"2024-01-16T03:48:10.415Z","dependency_job_id":"0ab20098-a9df-44ae-a907-c1561cec8313","html_url":"https://github.com/mihaiolteanu/mugur","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mihaiolteanu%2Fmugur","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mihaiolteanu%2Fmugur/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mihaiolteanu%2Fmugur/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mihaiolteanu%2Fmugur/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mihaiolteanu","download_url":"https://codeload.github.com/mihaiolteanu/mugur/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247174418,"owners_count":20896078,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["emacs","ergodox","keyboard","programmable-keyboard","qmk","qmk-configurator"],"created_at":"2024-07-31T07:00:49.747Z","updated_at":"2025-04-04T12:07:45.090Z","avatar_url":"https://github.com/mihaiolteanu.png","language":"Emacs Lisp","funding_links":[],"categories":["Emacs Lisp"],"sub_categories":[],"readme":"# Mugur\n\n[![MELPA](https://melpa.org/packages/mugur-badge.svg)](https://melpa.org/#/mugur)\n\nMugur is a keyboard configurator for [QMK](https://github.com/qmk/qmk_firmware)\ncompatible keyboards.  `mugur-mugur` takes a list of all the layers and keys and\ngenerates the equivalent QMK C code, ready to be flashed on the keyboard.\n\nSupported features: all the basic QMK keycodes, mod-tap, modifiers, one-shot\nkeys, layer toggle, macros, tap dance, leader key and combos.  If an Emacs\nfunction has a keybinding, it can be specified as a key.\n\n# Table of Contents\n\n- [Mugur](#mugur)\n- [How it works](#how-it-works)\n- [Features and keycodes](#features-and-keycodes)\n  * [Basic Keycodes](#basic-keycodes)\n  * [Mod-tap](#mod-tap)\n  * [Modifiers](#modifiers)\n  * [One Shot Keys](#one-shot-keys)\n  * [Layer Toggle](#layer-toggle)\n  * [Macros](#macros)\n  * [Tap Dance](#tap-dance)\n  * [Leader Key](#leader-key)\n  * [Combos](#combos)\n  * [Emacs keybound functions](#emacs-keybound-functions)\n  * [User Defined Keys](#user-defined-keys)\n  * [Insert raw C code (advanced users)](#insert-raw-c-code--advanced-users-)\n- [Configuration](#configuration)\n  * [Paths and names](#paths-and-names)\n  * [Configs (config.h)](#configs--configh-)\n  * [Special Keys](#special-keys)\n- [Supported Keyboards](#supported-keyboards)\n- [Other points](#other-points)\n- [Full Examples](#full-examples)\n  * [Ergodox](#ergodox)\n  * [Corne](#corne)\n\n(Table of contents generated with [markdown-toc](http://ecotrust-canada.github.io/markdown-toc/))\n\n# How it works\n\nGiven a list of all the layers and keys, `mugur-mugur` generates the equivalent\nC code for the qmk_firmware, ready to be built and flashed on the keyboard.\n\n```emacs-lisp\n(mugur-mugur\n '((\"base\"    a b c (LT numbers d))\n   (\"numbers\" 1 2 3 \"one two three\")))\n```\n\nThis is a two-layers layout for a keyboard with four keys. The \"base\" layer has\nthe letters 'a', 'b' and 'c' and a layer-toggle key that activates the \"numbers\"\nlayer when held and sends the letter 'd' when tapped. On the \"numbers\" layer\nthere are the 1, 2 and 3 digits, as expected, and then a macro key that sends\n\"one two three\" when pressed.\n\nThere are other possibilities, qmk features and configurations to try, but that\nis the basics of it. See the [examples](#full-examples) section for more rich\nmugur layouts.\n\n# Features and keycodes\n\nmugur-key is just a term I've invented for any of the symbols, characters,\nstrings or lists that can appear in a mugur-keymap. In the above example, both\n'a' and \"one two three\" are valid mugur-keys.\n\n## Basic Keycodes\nMugur supports all the [basic qmk\nkeycodes](https://docs.qmk.fm/#/keycodes_basic).  Their mugur-key equivalent is\neither a symbol, a digit, a character or a string.\n\nThe mugur-keys are case sensitive, c and C being different mugur-keys, one for the\nletter 'c', the other for the Ctrl modifier. Below is the list of all modifiers\nplus some additional examples.\n\n| mugur-key | qmk-keycode | comment                             |\n|:----------|:------------|-------------------------------------|\n| C         | KC_LCTL     | the C (or Ctrl) modifier            |\n| M         | KC_LALT     | the M (or Meta) modifier            |\n| G         | KC_LGUI     | the G (or Super) modifier           |\n| S         | KC_LSFT     | the S (or Shift) modifier           |\n| c         | KC_C        | the letter c, given as a symbol     |\n| \"x\"       | KC_X        | the letter x, given as a string     |\n| ?\\+       | KC_PLUS     | the plus sign, given as a character |\n| f12       | KC_F12      | the function key F12                |\n| 9         | KC_9        | the digit 9                         |\n| xx        | nil         | Invalid key, results in error       |\n\nFor every mugur-key there is either a direct correspondence with a qmk-keycode\nor with a qmk functionality (like a macro, for example). For a list of all these\nbasic codes that one can use in the layout, consult the `mugur-symbol` function\nas defined in mugur.el. For the special keys, like macros, one-shot and the\nrest, see below.\n\n## Mod-tap\nWhen pressed, the modifier is active, when tapped the key is sent.\n\n| mugur-key | example comment                              |\n|:----------|:---------------------------------------------|\n| (C x)     | Ctrl modifier when held, send x when tappend |\n| (S x)     | Hold Shift when held, send x when tapped     |\n| (C M x)   | C+M modifier when held, send x when tapped   |\n| (C M)     | Invalid, two modifiers given                 |\n| (C a b)   | Invalid, more than one key given             |\n|           |                                              |\n\n## Modifiers\nAllows key combinations like the familiar emacs's M-x, that is, hold down the\nMeta modifier and press x.\n\n| mugur-key | example comment                          |\n|:----------|:-----------------------------------------|\n| M-x       | Send x with Meta held down               |\n| C-M-x     | Send x with both Ctrl and Meta held down |\n| C-M-yes   | Invalid keycode, results in error        |\n\n## One Shot Keys\nOne shot keys are keys that remain active until the next key is pressed, and\nthen are released ([qmk documentation](https://docs.qmk.fm/#/one_shot_keys))\n\n| mugur-key     | example comment                                               |\n|:--------------|:--------------------------------------------------------------|\n| (OSM S)       | One Shot Mod - the next key will be pressed with Shift active |\n| (OSL mylayer) | One Shot Layer - the next key will be from this layer         |\n\n## Layer Toggle\nSwitching and toggling layers. \n\n| mugur-key      | example comment                                                                             |\n|:---------------|:--------------------------------------------------------------------------------------------|\n| (DF numbers)   | switch to 'numbers' layer                                                                   |\n| (MO numbers)   | momentarily activates the 'numbers' layer (as long as the key is kept pressed)              |\n| (LM numbers C) | momentarily activates the 'numbers' layer but with the C modifier active                    |\n| (LT numbers x) | momentarily activates the 'numbers' layer when held and sends x when tapped                 |\n| (OSL numbers)  | momentarily activates the 'numbers' layer until the next key is pressed                     |\n| (TG numbers)   | toggle the numbers layer, activating it if its inactive and vice-versa                      |\n| (TO numbers)   | activates the numbers layer and deactivates all the other layers, besides the default layer |\n| (TT numbers)   | layer tap-toggle                                                                            |\n\n## Macros\nSend any key combination that does not qualify as anything else.\n\n| mugur-key               | example comment                                                                   |\n|:------------------------|:----------------------------------------------------------------------------------|\n| \"this is mugur!\"        | send the specified string when key is tapped                                      |\n| (C-x d)                 | send x with C modifier pressed and then send d. (the Emacs dired command)         |\n| (C-M-u \"my pass\" enter) | send u with both C and M modifier pressed, send \"my pass\" and press enter         |\n| \"\u003e\"                     | this is *not* a macro since it has a basic qmk-keycode to which it is transformed |\n| \"λ\"                     | but this one is a macro, and this key will insert the beloved lambda              |\n| (C-x dd)                | invalid, since dd is not a valid mugur-key. Results in error                      |\n\n## Tap Dance\nHit a key once, send a key. Hit it twice in quick succession, send a different\none. The tap dance functionality is only valid for two basic mugur-keycodes\n(letter, digits, punctuation, commands, etc), and not for layers nor\nmacros. `mugur-tapdance-enable` must be set to \"yes\" for this to work, otherwise\nlook out for `error: implicit declaration of function ‘ACTION_TAP_DANCE_DOUBLE’`\nwhen building.\n\n| mugur-key        | example comment                                                                   |\n|:-----------------|:----------------------------------------------------------------------------------|\n| (DANCE a x)      | Send `a` when hitting the key once, send `x` when hit twice, in quick succession. |\n| (DANCE ?\\: ?\\;)  | Send `;` when hitting the key once, send `;` when hit twice, in quick succession  |\n| (DANCE a \"this\") | Invalid, mugur only supports basic mugur-keycodes, not macros, nor layers, etc.   |\n| (DANCE a b c)    | Invalid, can't do more than two things.                                           |\n\n## Leader Key\nTap the Leader Key and then up to five keys in quick succession, before the\n`LEADER_TIMEOUT` expires, and send whatever macro you like. Use the\n`mugur-leader-keys` to setup what keys do what,\n\n```emacs-lisp\n(setf mugur-leader-keys\n      '(((s d f) \"s, d and then f\")\n        ((z)     (M-x \"kill\"))))\n```\n\nIn the above example, tapping the Leader Key, followed by `s`, `d` and then `f`\nwill send the given string. The mugur-key after the first list, must be a valid\n[macro](#macros). The Leader Key is the mugur-key named `lead` and can appear\nanywhere on your keymap.\n\n## Combos\nHit two keys at once and send a different key. Set `mugur-combo-keys` to setup\nwhat key combinations do what,\n\n```emacs-lisp\n(setf mugur-combo-keys\n      '(((a b) x)\n        ((1 2) ?\\.)))\n```\n\nIn this example, pressing both `a` and `b` at the same time would send\n`x`. Pressing `1` and `2` would send the symbol `.`. Adjust the\n`mugur-combo-term` delay for the perfect experience.\n\n## Emacs keybound functions\nFor Emacs functions that have a keybinding, the function name can be directly\nspecified as a mugur-key.\n\n| mugur-keycode | example comment                                                                     |\n|:--------------|:------------------------------------------------------------------------------------|\n| query-replace | the usual keybinding for this is M-%, so this is equivalent with the M-% mugur-key  |\n| insert-char   | Becomes the mugur-key '(C-x 8 RET), which, in turn, is a macro that send those keys |\n|               |                                                                                     |\n\n## User Defined Keys\nFor long or often-used mugur-key sequences, or simply as a mnemonic, the\n`mugur-user-defined-keys` contains a list of items, where the car of the item is\nthe mnemonic and the cadr is any valid mugur-key.\n\n```emacs-list\n(setf mugur-user-define-keys\n      '((uname        \"my_badass_username\")\n        (weird_key    (C-c a \"right?\" ENT))))\n```\n\n## Insert raw C code (advanced users)\nAll code generated by mugur is found between `START-MUGUR-REGION` and\n`END-MUGUR-REGION` comment. For keyboard-specific code, for exploring different\nconfigurations by hand or for features not yet or ever to be provided by mugur, you\ncan write your own C code or makefile options outside these mugur regions,\n\n```\nthis is my own code\n\n// START-MUGUR-REGION\n\nThis is code generated by mugur, in keymap.c, rules.mk or config.h files.\nThe code between these regions is replaced on subsequent mugur-mugur calls.\n\n// END-MUGUR-REGION\n\nI can do whatever I want in my own region of code,\nand mugur won't touch it\n\n```\n\n# Configuration\n\n## Paths and names\n\n**mugur-qmk-path** *nil*\n\n    Path to the qmk firmware source code (root folder).\n\n**mugur-keyboard-name** *nil*\n\n    The name of your qmk keyboard.\"\n\n**mugur-layout-name** *nil*\n\n    The keymap name used in the keymaps matrix.\n    Check the 'uint16_t keymaps' matrix in the default keymap.c of\n    your keyboard.  Some have just \"LAYOUT\", others\n    \"LAYOUT_ergodox\", etc. Adapt accordingly.\n\n**mugur-keymap-name** *nil*\n\n    The name of qmk keymap generated by mugur.\n         \n## Configs (config.h)\n    \n**mugur-tapping-term** 180\n\n    Tapping term, in ms.\n    This is the maximum time allowed between taps of your Tap Dance\n    mugur-key.\n\n**mugur-combo-term** 300\n\n    Combo term, in ms.\n    This is the maximum time allowed between two keypresses in which\n    they might be considered as Combos.\n\n**mugur-leader-timeout** 300\n    \n    Timeout for the Leader Key, in ms.\n    This is the time to wait to complete the Leader Key sequence\n    after you press the Leader Key key.\n\n**mugur-leader-per-key-timing** nil\n\n    Enable or disable LEADER_PER_KEY_TIMING option.\n    If enabled, the Leader Key timeout is reset after each key is\n    tapped.\n\n## Special Keys\n\n**mugur-leader-keys** nil\n\n    List of Leader Keys and their expansion.\n    The items are lists, where the car is a list of valid mugur-keys\n    and the cadr is a valid mugur-macro.\n\n**mugur-combo-keys** nil\n\n    List of Combo Keys and their expansion.\n    The items are lists, where the car is a list of two valid\n    mugur-keys and the cadr is a valid mugur-key.\n\n**mugur-user-defined-keys** nil\n\n    User defined keys for long or often used combinations.\n    A list of lists, where the car of each entry is a symbol (a name\n    for the new key) and the cadr is any valid mugur-key.\n\n**mugur-ignore-key** *'-x-*\n\n    The symbol used in the mugur-keymap for an ignored key.\n    This is transformed into the qmk-keycode KC_NO.\n    \n**mugur-transparent-key** *'---*\n\n    The symbol used in the mugur keymap for a transparent key.\n    This is transformed into the qmk-keycode KC_TRANSPARENT.\n\n# Supported Keyboards\n\nAny keyboard that uses the QMK firmware. Users have reported success using mugur\nfor the following keyboards,\n\n| QMK Keyboard                                 | Comments |\n|:---------------------------------------------|:---------|\n| [Corne](https://github.com/foostan/crkbd)    | -        |\n| [Ergodox EZ](https://ergodox-ez.com/)        | -        |\n| [Moonlander](https://www.zsa.io/moonlander/) | -        |\n\nSend me an email if you've used mugur for other keyboards successfully. If\nyou have problems with a particular keyboard, open an issue with the keyboard\nname and the particular problem you're facing.\n\n# Other points\n\n* Not all qmk features are supported, nor there is a plan to support them all.\n* The layout structure that mugur accepts is the layout that qmk keymap.c is\n  using for your particular keyboard (check the qmk_firmware sourcecode). There\n  is a one-to-one correspondence to what is defined in a mugur-layout and what\n  you see in the qmk-layout. In short, no vertical or horizontal reordering of\n  the keys is supported nor planned to.\n* There is no support to define which LEDs to turn on/off for which mugur-layer,\n  nor there is a plan to support such a feature.\n* The mugur package generates the qmk-layout, but does not build nor flashes it\n  on your keyboard. The layout name and location is based on the values of the\n  custom variables given by the user (see the [configuration](#Configuration)\n  section). Consult the qmk documentation and your keyboard README for how to\n  build and flash your keyboard.\n\n# Full Examples \n\n## Ergodox\n\nThis is a full example for a mugur configuration of an Ergodox keyboard.\n\n```emacs-lisp\n(let ((mugur-qmk-path        \"/home/mihai/projects/qmk_firmware\")\n      (mugur-keyboard-name   \"ergodox_ez\")\n      (mugur-layout-name     \"LAYOUT_ergodox\")\n      (mugur-keymap-name     \"mugur_test\")\n      (mugur-tapping-term    175)\n      (mugur-user-defined-keys '((email  \"mihai@fastmail.fm\")\n                                 (replay (C-x e)))))\n                                 \n  (mugur-mugur\n   '((\"base\" \n      C-f1    vol-down  vol-up   -x-   -x-  -x- reset\n       -x-     (C-x k)     w      e     r    t  replay\n       -x-        a      (G s)  (M d) (C f)  g \n     (OSM S)      z        x      c     v    b  email\n       -x-       -x-      -x-    -x-   tab\n     \n                                           tab   -x-\n                                                 -x-\n                                   bspace space  -x-\n       \n       -x- -x-  -x-     -x-      -x-  -x-    -x-\n       -x-  y    u   (LT NUM i)   o   -x-    -x-\n            h  (C j)   (M k)    (G l)  p     -x-\n       -x-  n    m     comma     dot   q   (OSM S)\n                -x-      up     down  left  right\n     \n       -x-               -x-\n       (C-x b)\n       (LT media escape) (LT movement ent) (LT symbols pscreen))\n\n     (\"num\"\n      --- --- --- --- --- --- ---\n      --- ---  1   2   3  --- --- \n      ---  0   4   5   6  --- \n      ---  0   7   8   9  --- --- \n      --- --- --- --- --- \n                          --- --- \n                              ---\n                      --- --- ---\n\n      --- --- --- --- --- --- ---\n      --- --- --- --- --- --- ---\n          --- --- --- --- --- ---\n      --- --- --- --- --- --- ---\n              --- --- --- --- ---\n      --- ---\n      ---\n      --- --- ---)\n\n     (\"movement\"\n      ---  ---       ---      ---     ---    --- --- \n      ---  ---  (C-u C-space)  up   S-insert M-\u003c --- \n      ---  C-a      left      down   right   C-e \n      ---  undo      ---      ---     ---    M-\u003e ---\n      ---  ---       ---      ---     --- \n      ---  --- \n      ---\n      delete C-tab ---\n    \n      --- ---      ---                ---                 ---       --- ---\n      --- ---      ---          sp-backward-up-sexp       ---       --- ---\n          --- sp-backward-sexp        ---           sp-forward-sexp --- ---\n      --- ---      ---                ---                 ---       --- ---\n                   ---                ---                 ---       --- ---\n      --- ---\n      ---\n      --- --- ---)\n\n     (\"symbols\"\n      ---  ---  ?\\[  ?\\]  ?\\{  ?\\}  ---\n      ---  ?\\~  ---  ?\\'  ?\\\"  ?\\`  ---\n      ---  ?\\;  ?\\:  ?\\-  ?\\(  ?\\) \n      ---  ?\\/  ?\\\\  ?\\=  ?\\+  ?\\_  ---\n      ---  ---  ?\\|  ?\\\u003c  ?\\\u003e \n      ---  ---\n      ---\n      ?\\! ?\\? ---\n    \n      --- --- --- --- --- --- ---\n      --- --- --- --- --- --- ---\n          --- --- --- --- --- ---\n      --- --- --- --- --- --- ---\n      --- --- --- --- ---\n      --- ---\n      ---\n      --- --- ---)\n\n     (\"media\"\n      ---       ---        ---     ---        ---     --- --- \n      rgb_sad  rgb_sai     ---    ms_up    ms_wh_up   --- ---\n      rgb_vad  rgb_vai  ms_left  ms_down   ms_right   --- \n      rgb_hud  rgb_hui     ---     ---    ms_wh_down  --- ---\n      rgb_tog    ---       ---     ---        --- \n      --- ---\n      --- \n      ms_btn2  ms_btn1  ms_btn3\n    \n      --- --- --- --- --- --- ---\n      --- --- --- --- --- --- ---\n          --- --- --- --- --- ---\n      --- --- --- --- --- --- ---\n              --- --- --- --- ---\n      --- ---\n      ---\n      --- --- ---))))\n```\n\n## Corne\n\nFull example for a mugur configuration of a corne keyboard kindly provided by\nNik Gaffney. See details on his [crbkd github page](https://github.com/zzkt/crkbd).\n\n```emacs-lisp\n(let ((mugur-qmk-path       \"~/qmk_firmware\")\n      (mugur-keyboard-name   \"crkbd\")\n      (mugur-layout-name     \"LAYOUT_split_3x6_3\")\n      (mugur-keymap-name     \"zzkt4\")\n      (mugur-tapping-term    175))\n\n (mugur-mugur\n  '((\"base\"\n      tab  q   w   e   r   t      y   u   i   o    p   bspace\n      C    a   s   d   f   g      h   j   k   l   ?\\;  (LT move ?\\')\n      S    z   x   c   v   b      n   m  ?\\, dot  ?\\?  (MO qmik)\n     (MO emacs) lapo (G space)   ent rapc (TG numeric))\n\n     (\"numeric\"\n       ~  ?\\!  ?\\@  ?\\# ?\\$ ?\\%     ?\\^  ?\\\u0026  ?\\*   -   =  bspace\n       0   1    2    3   4    5      6    7    8    9   0  (LT move ent)\n       S  --- ?\\\u003c ?\\{  ?\\[  ?\\(     ?\\)  ?\\]  ?\\}  ?\\\u003e  |  (MO emacs)\n               (TG qmik) C-M ---   --- S (TG numeric))\n\n     (\"move\"\n       --- M-v   up   ---  --- ---    --- --- --- --- --- ---\n       C-a left down right C-e ---    --- --- --- --- --- ---\n       --- M-\u003c  C-v   M-\u003e  --- ---    --- --- --- --- --- ---\n                        --- --- ---  ---  --- --- )\n\n     (\"emacs\"\n       esc  --- --- (C-x 0) (C-x 2) (C-x 3)   (C-x 4 t)  --- --- --- --- ---\n       ---  --- M-% --- --- (M-x \"gtd\" ent)   (C-x b)    --- --- \"λ\" --- ---\n      reset --- M-x C-c ---  ?\\(               ?\\)  (M-x \"magit\" ent) --- --- --- ---\n                     --- ---  (H-i e)             (C-x 8) --- (MO hypm))\n\n     (\"hypm\"\n        --- --- --- --- --- ---    --- --- H-i  (H-i o) (H-i l) ---\n        --- --- --- H-d --- ---    --- --- ---  --- --- ---\n        --- --- --- --- --- ---    --- H-m (H-m s) --- --- ---\n                     --- --- ---  ---  --- --- )\n\n     (\"qmik\"\n       ---    rgb_tog rgb_mod --- --- ---    --- --- --- --- --- reset\n      rgb_sad rgb_vad rgb_hud --- --- ---    --- --- --- --- --- ---\n      rgb_sai rgb_vai rgb_hui --- --- ---    --- --- --- ---  S  ---\n                               --- --- ---  ---  --- --- )\n     )))\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmihaiolteanu%2Fmugur","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmihaiolteanu%2Fmugur","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmihaiolteanu%2Fmugur/lists"}