为什么终结者会向未在广播模式下选择的终端发送双字符?

Jln*_*Jln 9 command-line terminator

我正在并行安装 3 台服务器,并使用带有 3 路分割窗格的 Terminator 来执行此操作。

任何时候我进入终结者中的上下文菜单,并使用广播功能选择“全部广播”时,我的按键将被广播到所有 3 个窗格中的 SSH 会话,尽管在 2 个窗格中我没有选择作为我的“活动窗格”将键入双倍字符,因此,作为示例:

------------------------
jln@server1: apt upgrade -y

------------------------
jln@server2: aapptt uuppggrraaddee --yy

------------------------
jln@server3: aapptt uuppggrraaddee --yy

------------------------

Run Code Online (Sandbox Code Playgroud)

我在 19.10 Eoan Ermine。使用官方 Ubuntu 存储库中的 Terminator 软件包。除了颜色和终端顶部条形的显示之外,我没有更改任何选项。

我的终结者版本:

terminator -v
terminator 1.91
Run Code Online (Sandbox Code Playgroud)

小智 12

当我将终止符代码更改为

del os.environ['DBUS_SESSION_BUS_ADDRESS']
Run Code Online (Sandbox Code Playgroud)

它不起作用,终结者无法运行。

然后,不久之后imports,我将变量设置DBUS_SESSION_BUS_ADDRESS''(空字符串),一切对我来说都工作得很好:

os.environ['DBUS_SESSION_BUS_ADDRESS']=''
Run Code Online (Sandbox Code Playgroud)


小智 6

将终止符脚本文件的第 142 行更改为以下内容。

须藤纳米 /usr/share/terminator/terminator

更改前(第 142 行)

ibus_running = [p for p in psutil.process_iter() if p.name == 'ibus-daemon' and p.username == username]
Run Code Online (Sandbox Code Playgroud)

改变后

ibus_running = [p for p in psutil.process_iter(['name', 'username']) if p.info['name'] == 'ibus-daemon' and p.info['username'] == username]
Run Code Online (Sandbox Code Playgroud)


小智 2

来自对相关错误报告的评论(格式化我自己的):

它是GTK_IM_MODULE环境变量(在我的系统中是 GTK_IM_MODULE=ibus)。

如果我使用GTK_IM_MODULETerminator ,则不会出现错误:

env --unset=GTK_IM_MODULE terminator
Run Code Online (Sandbox Code Playgroud)

所以取消设置GTK_IM_MODULE环境变量对我有用。


小智 1

如果你有 Ubuntu 20...

sudo nano /usr/bin/terminator
Run Code Online (Sandbox Code Playgroud)

在导入后添加:

del os.environ['DBUS_SESSION_BUS_ADDRESS']
Run Code Online (Sandbox Code Playgroud)