通过快捷方式将脚本中的文本粘贴到另一个应用程序

通过快捷方式将脚本中的文本粘贴到另一个应用程序

让我描述一下我想要实现的目标。我们正在使用双因素身份验证,我想创建将为我生成 TOTP 令牌的脚本,并将其粘贴到某些快捷方式上的 Firefox 中。所以我创建了一个像这样的脚本

#!/bin/sh

echo $(oathtool --totp some-seed)

但是,如果我为此脚本分配快捷方式,则无法在控制台以外的其他地方打印 PIN。好吧,我知道尝试这种做法很幼稚,但是实现我的目标最好的方法是什么?

答案1

您可以使用xclip

oathtool --totp some-seed | xclip

命令的输出将位于 X 主选择中,您可以通过单击鼠标中键来粘贴它。

您还可以将其发送到剪贴板,以便在 Firefox 中使用Ctrl+进行粘贴:V

some_command | xclip -selection clipboard

xdotool或者按照说明使用在这个问题中

答案2

这里有一个有效的解决方案没有任何痛苦。

sendkeys从这里安装脚本:https://github.com/kyoto/sendkeys

对于你的情况只需这样做:

oathtool --totp some-seed | xargs sendkeys.sh 'Firefox'

这会将输出发送oathtool到打开的 Firefox 窗口。

该脚本根据标题搜索窗口。因此,如果您想将脚本发送到 Libreoffice Writer,只需使用“Writer”即可。

答案3

下面的 xbindkeys 操作使用 xvkbd 命令,不会干扰剪贴板。

xvkbd 是 X Window 系统的虚拟(图形)键盘程序。

xvkbd -xsendevent -text `oathtool 00`

答案4

你可以结合xbindkeysxdo工具绑定一个键,将命令的输出注入到具有焦点的任何应用程序中。选择一个键,例如Ctrl++ ShiftF1然后将以下内容放入您的~/.xbindkeysrc

"xdotool type $(oathtool --totp some-seed)"
control+shift+F1

您需要xbindkeys在会话中启动该程序。如果您使用的是桌面环境,请将其添加到启动程序中。如果您从脚本(例如 )启动会话~/.xinitrc,请xbindkeys在其中添加。

相关内容