#!/usr/bin/env lua -- Entries contain three strings: 1 - name, 2 - shell command, and 3 - keybinding. local entries = { { "Toggle terminal transparency", "${HOME}/scripts/toggle-term-transparency.sh", "dead_acute", }, { "Toggle bg", "${HOME}/scripts/switch-bg.sh t", "ccedilla" }, } local addQuotes = function(str) return '"' .. str .. '"' end local makeBinding = function(str) return "\"['" .. str .. "']\"" end -- create and set custom_list. Gsettings needs this in order to create bindings before they can be modified. local custom_list = '"[' for i, _ in pairs(entries) do custom_list = custom_list .. "'custom" .. (i - 1) .. "'," end -- remove last comma, close bracket etc custom_list = custom_list:sub(1, custom_list:len() - 1) .. ']"' os.execute("gsettings set org.cinnamon.desktop.keybindings custom-list " .. custom_list) -- set bindings local gset = function(index, name, command, binding) local cmd = "gsettings set org.cinnamon.desktop.keybindings.custom-keybinding:/org/cinnamon/desktop/keybindings/custom-keybindings/custom" .. index .. "/ name " .. addQuotes(name) os.execute(cmd) cmd = "gsettings set org.cinnamon.desktop.keybindings.custom-keybinding:/org/cinnamon/desktop/keybindings/custom-keybindings/custom" .. index .. "/ command " .. addQuotes(command) os.execute(cmd) cmd = "gsettings set org.cinnamon.desktop.keybindings.custom-keybinding:/org/cinnamon/desktop/keybindings/custom-keybindings/custom" .. index .. "/ binding " .. makeBinding(binding) os.execute(cmd) end for i, entry in pairs(entries) do gset(i - 1, entry[1], entry[2], entry[3]) end print("REMEMBER: Cinnamon has to be restarted (ctrl+alt+esc) before these changes will take effect!")