标签: xterm

读取设备状态报告ANSI转义序列回复

我正在尝试使用以下代码检索VT100终端中光标的坐标:

void getCursor(int* x, int* y) {
  printf("\033[6n");
   scanf("\033[%d;%dR", x, y);
}
Run Code Online (Sandbox Code Playgroud)

我正在使用以下ANSI转义序列:

设备状态报告 - ESC [6n

将光标位置报告给应用程序(就像键入键盘一样)ESC [n; mR,其中n是行,m是列.

代码编译并发送ANSI序列,但是,在接收到它之后,终端将^[[x;yR字符串打印到stdout而不是stdin使我无法从程序中检索它:

终端窗口

显然,字符串是为程序指定的,所以我必须做错误的事情.有人知道它是什么吗?

c terminal ncurses xterm ansi-escape

8
推荐指数
2
解决办法
2507
查看次数

xmonad:将所有新窗口移动到当前关注的工作区

我知道可以将某些程序设置为在某些工作空间中生成,如下所示:

myManageHook = composeAll
    [ classname =? "XTerm" --> doShift "3" ]
main = xmonad $ defaultConfig
    { manageHook = myManageHook <+> manageHook defaultConfig }
Run Code Online (Sandbox Code Playgroud)

这样所有的实例Xterm都会在工作区"3"中产生.我想要做的是让所有新程序在工作区中产生,它们在启动时处于焦点,例如,如果我在工作区"1"并启动firefox,则快速切换到工作区"2" ,firefox窗口将保留在工作区"1".

我正在想一些有效的东西

import qualified XMonad.StackSet as W

myManageHook = composeAll
    [ classname =? ".*" --> doShift currentTag ]
main = xmonad $ defaultConfig
    { manageHook = myManageHook <+> manageHook defaultConfig }
Run Code Online (Sandbox Code Playgroud)

这显然不起作用,但希望你能得到这个想法.

我的问题与意图中的这个问题非常相似,但是我希望所有程序都在最初聚焦的工作区中产生,但是我打开它们(dmenu,从终端等)

haskell xmonad xterm

8
推荐指数
0
解决办法
942
查看次数

-qemu中的serial pty,如何打开?

我正在运行 qemu

-串行 pty

选项,qemu 给出了这个消息

字符设备重定向到/dev/pts/1

但是,它不会生成新窗口,我可以cat从不同的窗口对 pts1 执行操作,但随后我无法向其中输入任何字符。

无论如何,你可以启动一个具有特定点数的新 xterm 吗?

serial-port qemu pts xterm pty

8
推荐指数
1
解决办法
7357
查看次数

使用python时/后输入的终端显示不同步?(临时修复=`重置')

每次我运行pythonpython3使用交互式控制台时,提示的显示几乎在第一次或第二次交互后几乎立即失去同步:

>>> [1,2,3]
>>> [1, 2, 3]
print('hi')
>>> hi
Run Code Online (Sandbox Code Playgroud)

然后,当我退出python时,这种行为会延续到bash,另外当你输入时,屏幕上什么都没有出现,但它仍会运行.在以下示例中,我键入date然后history | tail -n3:

$ Thu Oct  8 07:55:47 CEST 2015
$   488  python
  489  date
  490  history | tail -n3
Run Code Online (Sandbox Code Playgroud)

但是,打字后reset,一切都恢复正常.

不用说,这种行为非常烦人.原因是什么,我该如何解决?

我在OS X上.使用iTerm或内置的Terminal.app都会产生相同的行为.我的python构建来自macports.这个问题不存在/usr/bin/python(OS X中包含的python 2.7.2).

============================

编辑:如果我使用zsh,那么python仍然有问题,但在zsh退出python之后一切正常.

$TERMxterm-256color在这两个bashzsh.

python macos bash macports xterm

8
推荐指数
1
解决办法
284
查看次数

如何在 Websocket API 中传递 Authorization Bearer Token

我正在尝试使用 Websocket 执行 kubernetes pod,根据 kubernetes 文档,它可以通过传递承载 THETOKEN来实现

当使用来自 http 客户端的承载令牌身份验证时,API 服务器需要一个值为 Bearer THETOKEN 的 Authorization 标头

下面是wscat将 Header Value 传递--header "Authorization: Bearer $TOKEN"给 pod 建立 exec 并且连接成功的示例

/ # wscat  --header "Authorization: Bearer $TOKEN"  -c "wss://api.0cloud0.com/api/v1/namespaces/ba410a7474380169a5ae230d8e784535/pods/txaclqhshg
-6f69577c74-jxbwn/exec?stdin=1&stdout=1&stderr=1&tty=1&command=sh"
Run Code Online (Sandbox Code Playgroud)

但是当涉及到来自 Web 浏览器的Websocket API连接时

如何根据文档在 web Socket 中传递这个 Beaer Token 没有传递自定义标头的标准方法

在 API 查询中尝试了 URI 查询参数access_token= Bearer TOKEN它不起作用并且身份验证被 403 拒绝

wss://api.0cloud0.com/api/v1/namespaces/ba410a7474380169a5ae230d8e784535/pods/txaclqhshg-%206f69577c74-jxbwn/exec?stdout=1&stdin=1&stderr=1&tty=1&command=%2Fbin%2Fsh&command=-i&access_token=$TOKEN
Run Code Online (Sandbox Code Playgroud)

xterm websocket kubernetes

8
推荐指数
1
解决办法
1927
查看次数

Python终端仿真

我想在Python应用程序中运行一个xterm兼容的虚拟终端.我需要在其中运行基于ncurses的应用程序,使用用户的输入提供它并读取其输出.

到目前为止,我已经找到了python-vte,但它只提供了一个GTK +小部件(libvte具有所需的VtePty类,但Python绑定没有)并且具有不可接受的libgtk依赖性.

有没有其他方法可以在Python中执行终端仿真?

python xterm pty terminal-emulator

7
推荐指数
1
解决办法
1万
查看次数

如何获取命令的退出代码而不是xterm?

如果我用xterm调用一个命令(在我的情况下是另一个脚本),如下所示:

xterm -e sh second.sh
Run Code Online (Sandbox Code Playgroud)

$?xterm返回后的值是xterm的退出状态代码(通常为我0)而不是我的脚本.

反正有没有得到我的脚本的退出状态代码?

bash xterm

7
推荐指数
1
解决办法
2090
查看次数

在所有命令上隐式调用 grc 终端着色器

我喜欢终端的 grc 着色器。但是,我必须明确地为我想要着色的任何内容添加前缀:

grc --config=conf.mine
Run Code Online (Sandbox Code Playgroud)

有什么方法可以让它自动应用于您在命令行上输入的所有内容(这样我可能甚至不需要知道 grc 是什么)?如果不存在更好的替代方案,也许使用 shell 钩子?

terminal colorize xterm text-coloring ansi-colors

7
推荐指数
1
解决办法
1833
查看次数

如何启动多个 xterm 窗口并在每个窗口上运行命令,然后让每个窗口保持打开状态?

我很懒,而且我更喜欢计算机为我完成工作。我每天都会通过 ssh 连接到多台机器,因此我创建了一个简单的脚本来启动一些 xterm 窗口并将它们放置在我想要的位置(如您所见,我正在使用 bash):

#!/bin/bash
xterm -geometry 80x27+1930+0 &
xterm -geometry 80x27+2753+0 &
xterm -geometry 80x27+1930+626 &
xterm -geometry 80x27+2753+626 &
Run Code Online (Sandbox Code Playgroud)

但是,我接下来要做的就是转到第一个窗口并输入

ssh server_a
Run Code Online (Sandbox Code Playgroud)

然后在第二个

ssh server_b
Run Code Online (Sandbox Code Playgroud)

等等。我想做的是让我的脚本在每个 xterm 窗口中执行 ssh 命令,然后让窗口保持打开状态以供我完成工作。我已经看到 xterm 的 -e 选项,但是在执行命令后窗口会关闭。有没有办法做到这一点?

如果这是一个重复的问题,我深表歉意。我四处寻找,但没有任何运气。非常感谢!

unix linux ssh bash xterm

7
推荐指数
1
解决办法
2万
查看次数

如何根据Bash中的VI模式更改光标形状?

我的.bashrc中有以下行:

set -o vi
Run Code Online (Sandbox Code Playgroud)

当我处于插入模式时,我希望我的光标具有管道形状,当我处于命令模式时,我希望我的光标具有块形状,就像我在Vim中将以下内容放在我的.vimrc中一样:

let &t_SI = "\e[6 q"
let &t_SR = "\e[4 q"
let &t_EI = "\e[2 q"
Run Code Online (Sandbox Code Playgroud)

除非在这种情况下,我希望在命令行上具有等效行为.

我在这里找到了我的问题的部分答案 - https://unix.stackexchange.com/questions/22527/change-cursor-shape-or-color-to-indicate-vi-mode-in-bash - 由@gogolb撰写.

这是答案,复制:

#!/bin/bash
# Script "kmtest.sh"

TEST=`bind -v | awk '/keymap/ {print $NF}'`
if [ "$TEST" = 'vi-insert' ]; then
    echo -ne "\033]12;Green\007"
else
    echo -ne "\033]12;Red\007"
fi

export PS1="\u@\h \$(kmtest.sh)> "
Run Code Online (Sandbox Code Playgroud)

不幸的是,正如答案中所解释的那样,示例脚本仅在回车后更改光标形状,而我想要的是当我点击<Esc>时(即当我更改模式时)光标形状会改变.

我在Linux上运行本机终端应用程序,使用Bash 4.4.7和我的$ TERM变量设置为xterm-256color.另外,我不知道tmux对我要求的是否有任何影响,但理想情况下,我希望该解决方案能够在tmux会话内部和外部工作.


我自己最终发现了这个问题的答案,我在另一个问题中描述了这个问题:

如何正确地将修补后的GNU readline库链接到所有现有程序?

别担心,该解决方案不需要任何修补.;)

bash terminal xterm

7
推荐指数
2
解决办法
2011
查看次数