Add better TOTP with rofi

This commit is contained in:
Thomas Avé 2023-08-27 15:17:35 +02:00
parent 4059d875e7
commit 14ab446e5e
4 changed files with 85 additions and 13 deletions

View File

@ -187,12 +187,12 @@ keys.globalkeys = gears.table.join(
end, end,
{description = "Open lock", group = "launcher"} {description = "Open lock", group = "launcher"}
), ),
-- Generate IMEC TOTP -- Generate TOTP
awful.key({modkey}, "i", awful.key({modkey}, "y",
function() function()
awful.spawn.with_shell("ykman oath accounts code \"Microsoft (IMEC)\" | cut -d ' ' -f 4 | xsel --clipboard") awful.spawn.with_shell(os.getenv("XDG_CONFIG_HOME") .. "/rofi/rofi-ykman.sh")
end, end,
{description = "Generate IMEC TOTP", group = "launcher"} {description = "Generate TOTP", group = "launcher"}
), ),
-- Spawn file manager -- Spawn file manager
awful.key({modkey}, "a", awful.key({modkey}, "a",

View File

@ -19,7 +19,7 @@ theme.fg_urgent = "#ffffff"
theme.fg_minimize = "#ffffff" theme.fg_minimize = "#ffffff"
-- Window Gap Distance -- Window Gap Distance
theme.useless_gap = dpi(3) theme.useless_gap = dpi(2)
-- Show Gaps if Only One Client is Visible -- Show Gaps if Only One Client is Visible
theme.gap_single_client = false theme.gap_single_client = false

View File

@ -6,21 +6,21 @@
"cmp-nvim-lsp": { "branch": "main", "commit": "44b16d11215dce86f253ce0c30949813c0a90765" }, "cmp-nvim-lsp": { "branch": "main", "commit": "44b16d11215dce86f253ce0c30949813c0a90765" },
"cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" }, "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" },
"cmp-snippy": { "branch": "master", "commit": "c4dc31232c510cd32d4708701e6f06746d46df90" }, "cmp-snippy": { "branch": "master", "commit": "c4dc31232c510cd32d4708701e6f06746d46df90" },
"diffview.nvim": { "branch": "main", "commit": "db97e667e03294bfa9f15e544e78f3082247bf79" }, "diffview.nvim": { "branch": "main", "commit": "7e5a85c186027cab1e825d018f07c350177077fc" },
"formatter.nvim": { "branch": "master", "commit": "44c89f09dcc220dc2a9b056e93c3a87c86e79804" }, "formatter.nvim": { "branch": "master", "commit": "44c89f09dcc220dc2a9b056e93c3a87c86e79804" },
"lazy.nvim": { "branch": "main", "commit": "dac844ed617dda4f9ec85eb88e9629ad2add5e05" }, "lazy.nvim": { "branch": "main", "commit": "3ad55ae678876516156cca2f361c51f7952a924b" },
"leap.nvim": { "branch": "main", "commit": "5efe985cf68fac3b6a6dfe7a75fbfaca8db2af9c" }, "leap.nvim": { "branch": "main", "commit": "5efe985cf68fac3b6a6dfe7a75fbfaca8db2af9c" },
"lualine.nvim": { "branch": "master", "commit": "45e27ca739c7be6c49e5496d14fcf45a303c3a63" }, "lualine.nvim": { "branch": "master", "commit": "45e27ca739c7be6c49e5496d14fcf45a303c3a63" },
"lush.nvim": { "branch": "main", "commit": "a8f0f7b9f837887f13a61d67b40ae26188fe4d62" }, "lush.nvim": { "branch": "main", "commit": "a8f0f7b9f837887f13a61d67b40ae26188fe4d62" },
"mason-lspconfig.nvim": { "branch": "main", "commit": "e86a4c84ff35240639643ffed56ee1c4d55f538e" }, "mason-lspconfig.nvim": { "branch": "main", "commit": "2997f467881ac4faa6f8c5e7065e3a672297c8ad" },
"mason.nvim": { "branch": "main", "commit": "b5bb138312dbd3f7729197ca659cbe5221d36a03" }, "mason.nvim": { "branch": "main", "commit": "a51c2d063c5377ee9e58c5f9cda7c7436787be72" },
"neogit": { "branch": "master", "commit": "b3c15c5dba0e76a3524029785d02fc897149259d" }, "neogit": { "branch": "master", "commit": "00b4486197e7ad7cf98e128a3c663d79a2cc962f" },
"nvim-autopairs": { "branch": "master", "commit": "ae5b41ce880a6d850055e262d6dfebd362bb276e" }, "nvim-autopairs": { "branch": "master", "commit": "ae5b41ce880a6d850055e262d6dfebd362bb276e" },
"nvim-cmp": { "branch": "main", "commit": "51f1e11a89ec701221877532ee1a23557d291dd5" }, "nvim-cmp": { "branch": "main", "commit": "51f1e11a89ec701221877532ee1a23557d291dd5" },
"nvim-lspconfig": { "branch": "master", "commit": "0d29cad8de3b2c654315203fc1fe12fde722a18a" }, "nvim-lspconfig": { "branch": "master", "commit": "1cfb96490c3889a2c57d1ef5e1acc59e9b47c455" },
"nvim-snippy": { "branch": "master", "commit": "ee3b830787538f259b84867c8971c4284abc4a8d" }, "nvim-snippy": { "branch": "master", "commit": "ee3b830787538f259b84867c8971c4284abc4a8d" },
"nvim-tree.lua": { "branch": "master", "commit": "59e65d88db177ad1e6a8cffaafd4738420ad20b6" }, "nvim-tree.lua": { "branch": "master", "commit": "59e65d88db177ad1e6a8cffaafd4738420ad20b6" },
"nvim-treesitter": { "branch": "master", "commit": "add1864bbf2d3b8e789ec6b4715bb5a4073e3b60" }, "nvim-treesitter": { "branch": "master", "commit": "9ea7559ea99701c900b08c1f977eca6ca57eadd2" },
"nvim-web-devicons": { "branch": "master", "commit": "cfc8824cc1db316a276b36517f093baccb8e799a" }, "nvim-web-devicons": { "branch": "master", "commit": "cfc8824cc1db316a276b36517f093baccb8e799a" },
"plenary.nvim": { "branch": "master", "commit": "267282a9ce242bbb0c5dc31445b6d353bed978bb" }, "plenary.nvim": { "branch": "master", "commit": "267282a9ce242bbb0c5dc31445b6d353bed978bb" },
"telescope-fzf-native.nvim": { "branch": "main", "commit": "9bc8237565ded606e6c366a71c64c0af25cd7a50" }, "telescope-fzf-native.nvim": { "branch": "main", "commit": "9bc8237565ded606e6c366a71c64c0af25cd7a50" },
@ -31,6 +31,6 @@
"vim-bracketed-paste": { "branch": "master", "commit": "45411da73cc159e4fc2138d930553d247bbfbcdc" }, "vim-bracketed-paste": { "branch": "master", "commit": "45411da73cc159e4fc2138d930553d247bbfbcdc" },
"vim-rooter": { "branch": "master", "commit": "4f52ca556a0b9e257bf920658714470ea0320b7a" }, "vim-rooter": { "branch": "master", "commit": "4f52ca556a0b9e257bf920658714470ea0320b7a" },
"vim-snippets": { "branch": "master", "commit": "d37486881a0a771b844a235bc3e025046088690d" }, "vim-snippets": { "branch": "master", "commit": "d37486881a0a771b844a235bc3e025046088690d" },
"vimtex": { "branch": "master", "commit": "e3d0bea39dbcb6e064db751b646c958342a3460f" }, "vimtex": { "branch": "master", "commit": "534fd725f2475a9083b032e402c7e73b8a3fc6bb" },
"vimwiki": { "branch": "dev", "commit": "f0fe154ede6b11e3db9b058b930005a056a3d1c6" } "vimwiki": { "branch": "dev", "commit": "f0fe154ede6b11e3db9b058b930005a056a3d1c6" }
} }

72
rofi/rofi-ykman.sh Executable file
View File

@ -0,0 +1,72 @@
#!/usr/bin/env bash
# rofi-ykman
# YubiKey OATH utility
#2019 nukeop
print_usage() {
echo "Usage: rofi-ykman [command]"
echo
echo "Commands:"
echo " clipboard Copy the code to the clipboard. (default)"
echo " type Type the code."
echo
}
clipboard () {
if [ $XDG_SESSION_TYPE == "wayland" ]
then
wl-copy
else
xsel --clipboard
fi
}
type () {
if [ $XDG_SESSION_TYPE == "wayland" ]
then
wtype -
else
xargs xdotool type
fi
}
# shortcuts
type="Alt+1"
clipboard="Alt+2"
main() {
accounts=$(ykman oath accounts list)
shortcuts=(
-kb-custom-1 "$type"
-kb-custom-2 "$clipboard"
)
prompt="YubiKey OATH"
account=$(echo "${accounts/, TOTP/\n}" | awk '{ print $0 "\0icon\x1fyubioath"; }' | rofi -dmenu -i -p "$prompt" ${shortcuts[@]})
case $? in
1) exit ;;
10) command=type ;;
11) command=clipboard ;;
*) command=$default_command ;;
esac
code=$(ykman oath accounts code "$account")
IFS=', ' read -r -a code <<< "$code"
case $command in
clipboard) echo -n "${code[-1]}" | clipboard;;
type) echo -n "${code[-1]}" | type;;
esac
}
default_command="${1:-type}"
case $default_command in
clipboard|type) ;;
*) print_usage; exit 1;;
esac
main