在 Arch 配置 i3-wm 终端模拟器 xterm

关于怎么在 Arch 安装 i3-wm 可以查看上一篇文章 https://www.cnblogs.com/shadow-/p/17572589.html

安装终端模拟器

以下是一些常见终端模拟器以及它们的优势:

  1. xterm: X Window 系统的标准终端模拟器,简单轻量,可在几乎所有系统上找到。
  2. gnome-terminal: GNOME 桌面环境默认的终端模拟器,易于使用且功能丰富。
  3. konsole: KDE 桌面环境默认的终端模拟器,功能强大,支持分屏和会话管理。
  4. xfce4-terminal: Xfce 桌面环境默认的终端模拟器,轻量且简单。
  5. lxterminal: LXDE 桌面环境默认的终端模拟器,快速启动和占用较少资源。
  6. terminator: 支持分屏和多标签页,适用于多任务处理。
  7. tilix: 支持分屏、多标签页和自定义快捷键,可在用户交互性和外观方面进行高度定制。
  8. rxvt-unicode (urxvt): 极简主义终端模拟器,轻量且占用较少资源。
  9. termite: 极简终端模拟器,可在配置文件中进行高度定制,支持 vim 键绑定。
  10. st: 一个简单的、轻量级的终端模拟器,可通过源码自定义配置。
  11. qterminal: Qt 基础的终端模拟器,适用于 Qt 环境和其他桌面环境。
  12. tilda: 下拉式终端,通过快捷键显示和隐藏终端。
  13. guake: 另一个下拉式终端,可以通过快捷键轻松访问。
  14. cool-retro-term: 模拟旧式计算机终端,外观独特且有趣。
  15. alacritty: 极快的 GPU 加速终端模拟器,适用于高性能需求。
  16. kitty: 支持 GPU 加速和高度可配置的终端模拟器。
  17. mosh: 在不稳定网络上提供更好的远程终端连接体验。
  18. xst: 简单终端模拟器,支持字体渲染和缩放。
  19. fbterm: 在 Linux 控制台下提供框架缓存终端模拟器。
  20. termit: 一个简单的 VTE 基础终端模拟器,易于使用。

以上这些终端模拟器各有特点,根据个人喜好和使用需求,可以选择最适合自己的终端模拟器。注意,对于一些终端模拟器,你可能需要在系统中手动安装它们,以便在 i3 或其他窗口管理器中使用。这里我选择的是 xterm 终端模拟器,因为它是 X Window 系统的标准终端模拟器

sudo pacman -S xterm
  • 我们安装 xterm 不需要配置 ~/.config/i3/config 配置文件,因为在配置项中默认配置 bindsym Mod1+Return exec i3-sensible-terminal,其中 i3-sensible-terminal 在 i3 默认配置中调用来启动终端,关于启动顺序查看 https://man.archlinux.org/man/i3-sensible-terminal.1 文档。在文档中 xterm 优先级最高,所以我们安装 xterm 终端模拟器后,i3 默认会调用 xterm 来启动终端模拟器。
  • 如果你想要使用其它终端模拟器,可以修改 i3-sensible-terminal 为你想要的终端模拟器。如果在 i3-sensible-terminal 中且是唯一模拟终端则不需要过多配置。如果要修改,我的建议是将原有配置行注释,然后在下面添加新的配置行,这样方便以后修改。

i3 默认配置文件示例 https://github.com/i3/i3/blob/next/etc/config

简单使用 xterm

在 i3 环境启动和关闭 xterm 终端模拟器的方法:

  • 通过 startx 启动 i3-wm 后,按下 Mod + Enter 快捷键,即可启动 xterm 终端模拟器。
  • 通过 Mod + Shift + q 快捷键,即可关闭 xterm 终端模拟器。

你也可以修改 ~/.config/i3/config 配置文件,自定义启动和关闭终端模拟器的快捷键。方法是参考 https://github.com/i3/i3/blob/next/etc/config 中的配置项,修改默认配置项即可。

使用鼠标和键盘来实现文本的复制和粘贴方法:

  • 使用鼠标复制和粘贴:

    • 复制:要复制文本,只需按住鼠标左键并拖动,将选定的文本高亮显示即可。一旦你释放鼠标左键,选定的文本将被自动复制到剪贴板中。
    • 粘贴:要粘贴文本,将鼠标指针放在你想要粘贴的位置,然后点击鼠标中键(通常是滚轮按钮)。这将把剪贴板中的文本粘贴到光标所在位置。
  • 使用键盘快捷键:

    • 复制:按住 Shift 键并用鼠标选择你想要复制的文本,然后松开鼠标左键。选定的文本将自动复制到剪贴板中。
    • 粘贴:要粘贴文本,将鼠标指针放在你想要粘贴的位置,然后按下 Shift + Insert 键(或者是 Ctrl + Shift + V 键)。这将把剪贴板中的文本粘贴到光标所在位置。

Xresources 文件

在 X Window 系统中,Xresources 是一种配置文件,用于定义应用程序的外观和行为。它使用特定的语法格式来设置资源(也称为选项或参数)。这些资源可以是应用程序的名称、窗口类或特定资源。

  • 语法格式如下:

    name.Class.resource: value
    • name:表示应用程序的名称或实例。它是可选的,如果省略,则资源将应用于所有具有相应类的应用程序。

    • Class:表示应用程序的类别或窗口类。也是可选的,如果省略,则资源将应用于所有具有相应名称的应用程序。

    • resource:表示要设置的具体资源或选项名称。

    • value:表示资源的值。

    通过这种格式,可以定义各种资源,例如窗口的背景颜色、字体、边框样式等。

  • 通配符匹配:

    Xresources 支持通配符 *?,用于更广泛地匹配资源。例如,如果你想将相同的资源应用于所有应用程序的所有类和名称,你可以使用以下形式:

    *.*.resource: value

    这将应用于所有应用程序的所有类和名称。

    缩略写法:

    为了简化配置文件,可以使用缩略写法。这些缩略是为了方便而引入的,以减少重复输入。例如,你可以使用*来代表所有的类和名称。所以,下面的两个例子是等效的:

    xterm*background: black
    *background: black
  • 注释:Xresources 允许使用 ! 来添加注释。所有在 ! 符号后面的内容都会被视为注释,不会被解释。

  • 文件包含:

    Xresources 还支持 #include 指令,允许你从其他文件中包含资源。这对于组织配置文件和共享资源非常有用。

    例如:

    #include "/path/to/another/file"

    这将把 /path/to/another/file 文件中的资源包含到当前的 Xresources 文件中。

Xresources 文件中的资源定义在启动 X11 会话时会被读取和应用,通常可以通过 xrdb 命令来加载和更新资源。

  • 编辑 Xresources 文件后,需要运行 xrdb -merge ~/.Xresources 命令来使更改生效。
  • 不是所有的应用程序都支持 Xresources 文件,而且支持程度可能因应用程序的实现而异。
  • 对于一些配置修改可能需要重启应用程序或重新登录 X 会话才能生效。

注意事项:使用 xrdb 命令的前提是在使用 X Window System 的环境中,其中包括运行 X 服务器(X Server)的图形用户界面(GUI)环境。 xrdb 是 X11 资源数据库管理器,用于管理 X11 资源数据库。X11 资源数据库是 X Window System 中用于存储应用程序配置信息的数据库。所有没有启动 X Window System 的环境使用时可能会出现 xrdb: No such file or directory xrdb: can't open display '' 错误。想要了解更多关于 xrdb 命令的信息

实际配置 Xresources 的语法会更加复杂,这里进行了一定的简化。具体资料:

并且在文件位置也有讲究,在 Linux 中你可以会经常看见 .d 结尾的目录,他们一般是复杂前缀名称对应配置的拓展集。核心思想是不破坏原有配置文件,通过添加进行拓展。当你想要复原时,只需要删除对应的文件即可。

配置 xterm

我们尝试将 xterm 设置为背景前景及字体。我在字体上选择的是 Cascadia Code 字体,这是一款由微软开发的开源等宽字体,它是一款专为终端设计的字体,非常适合用于终端模拟器。它在 Arch 上有多种 https://archlinux.org/packages/?sort=&q=Cascadia+Code&maintainer=&flagged=,我选择的是 otf-cascadia-code 包。使用 pacman 安装即可。

字体类型简单说明(更多追求,使用搜索引擎):

  • TTF 字体通常包含简单的字形和基本排版功能。
  • OTF 字体支持更复杂的字形和更丰富的排版功能。

在家目录下创建 .Xresources 文件,添加如下内容:

xterm*background: #1E1E1E
xterm*foreground: #EFEFEF xterm*faceName: Cascadia Code
xterm*faceSize: 12

配置中的 * 你通过前面介绍应该知道是什么意思了,这里不再赘述。

~/.xinitrc 中添加下面配置,使其在启动 X 会话时自动加载 .Xresources 文件,因为我们可能会反复测试使用这种方法更方便。注意需要在之前配置的 exec i3 前添加,完整如下:

xresources=$HOME/.Xresources

if [[ -f $xresources ]]; then
xrdb -merge $xresources
fi exec i3

之所以使用 xresources 变量,是为了方便后续修改,只需要修改一处即可。

解决 Vbox Guest Additions 增强功能

下面我们要对复制粘贴功能进行改动。在此之前我们需要做一些准备工作,使用 pacman 安装 virtualbox-guest-utils 包,它是可以增强 VirtualBox 功能。

# 安装
sudo pacman -S virtualbox-guest-utils # 设置自启动
sudo systemctl enable --now vboxservice.service # 重启
sudo reboot
  • 继续修改 .Xresources 文件,添加如下内容:

    xterm*selectToClipboard: true
  • 打开 VirtualBox 窗口中的 设备 > 共享粘贴板 > 双向

  • 然后执行 VBoxClient --clipboard,可以在启动 i3-wm 环境后的 xterm 中使用。然后尝试能否和宿主机共享粘贴板。关于复制粘贴在 之前 已经有过介绍。

  • 配置 xterm 复制粘贴快捷键,继续修改 .Xresources 文件,添加如下内容:

    xterm.VT100.translations: #override \n\
    Shift Ctrl <Key> C: copy-selection(CLIPBOARD) \n\
    Shift Ctrl <Key> V: insert-selection(CLIPBOARD)

简单解释一下 xterm*selectToClipboard: true 这个配置。在 X Window 系统中,xterm 终端模拟器具有与 PRIMARY 和 CLIPBOARD 剪贴板相关的特殊行为和一些潜在问题。这涉及到 X Window 系统中的剪贴板系统的工作原理。

  • PRIMARY 剪贴板:

    • PRIMARY 是 X Window 系统中的一个剪贴板,它是用于鼠标选择文本并进行复制和粘贴的默认剪贴板。当你在 xterm 中选择文本时,选择的文本会自动复制到 PRIMARY 剪贴板中。你可以通过中键粘贴(按下鼠标中键)将 PRIMARY 剪贴板中的文本粘贴到其他应用程序中。
    • 这种行为对于与 xterm 和其他 X 应用程序之间的文本传递非常方便。
  • CLIPBOARD 剪贴板:

    • CLIPBOARD 是另一个 X Window 系统中的剪贴板,它专门用于通过复制和粘贴菜单选项进行剪贴板操作。通常,当你使用菜单中的 "复制" 或 "剪切" 功能时,文本会被复制到 CLIPBOARD 剪贴板中。
    • xterm 默认情况下不会直接将选择的文本放入 CLIPBOARD 剪贴板中。这意味着如果你使用菜单选项或其他终端模拟器(如 GNOME Terminal 或 Konsole)的 "复制" 功能,将无法直接粘贴 xterm 中的选择内容。

潜在问题,由于 PRIMARY 和 CLIPBOARD 剪贴板的区别,可能会导致一些剪贴板相关的问题:

  1. 复制粘贴问题:如果你在 xterm 中选择文本后,希望通过其他终端模拟器的 "粘贴" 功能将其粘贴到其他应用程序中,可能会失败,因为 xterm 默认情况下不会将文本放入 CLIPBOARD 剪贴板。
  2. 粘贴 xterm 到其他应用程序:如果你希望从 xterm 中复制文本到其他应用程序,并且该应用程序只支持从 CLIPBOARD 剪贴板获取内容,你可能需要使用其他方法,如使用鼠标中键将 PRIMARY 中的内容粘贴到应用程序中。VirtualBox 的共享剪贴板功能就无法使用。

为了解决这些问题,可以添加我们之前 xterm*selectToClipboard: true 这个配置,当你在 xterm 中选择文本后,它会自动复制到 CLIPBOARD 剪贴板,这样你就可以直接在其他应用程序中使用 "粘贴" 功能了。

相关参考:

结束

上面全部片段总合的 ~/.Xresources 文件内容如下:

xterm*background: #1E1E1E
xterm*foreground: #EFEFEF xterm*faceName: Cascadia Code
xterm*faceSize: 12 xterm*selectToClipboard: true
xterm.VT100.translations: #override \n\
Shift Ctrl <Key> C: copy-selection(CLIPBOARD) \n\
Shift Ctrl <Key> V: insert-selection(CLIPBOARD)

关于 xterm 配置资料:

这次就先到这里。后续我会继续分享一些 X 环境的配置,敬请期待

在 Arch 配置 i3-wm 终端模拟器 xterm的更多相关文章

  1. Terminix:基于 GTK3 的平铺式 Linux 终端模拟器

    现在,你可以很容易的找到大量的 Linux 终端模拟器,每一个都可以给用户留下深刻的印象.但是,很多时候,我们会很难根据我们的喜好来找到一款心仪的日常使用的终端模拟器.这篇文章中,我们将会推荐一款叫做 ...

  2. 推荐一款好用的WSL终端模拟器

    Windows 10 中包含了一个 WSL(Windows Subsystem for Linux)子系统,我们可以在其中运行未经修改过的原生 Linux ELF 可执行文件.利用它我们可以做很多事情 ...

  3. Linxu基础知识:终端、终端模拟器、shell

    实验楼课程第二个实验的讲解部分出现了三个词,我不知道它们三个是什么关系.查阅了度娘,归纳如下: - 终端: 在UNIX/LINUX系统中,用户通过终端登录系统后得到一个Shell进程,这个终端就成为S ...

  4. 5 款最酷的 Linux 终端模拟器

    转载:https://cloud.tencent.com/developer/article/1040344 首先我要推荐的第一个终端是 Xiki. Xiki 是 Craig Muth 的智慧结晶,他 ...

  5. 4 个独特的 Linux 终端模拟器(转)

    4 个独特的 Linux 终端模拟器 译自:https://www.linux.com/blog/learn/2018/12/4-unique-terminals-linux作者: Jack Wall ...

  6. archlinux 源配置 桌面美化 终端美化 常用软件 grub配置

    简介 本文讲对archlinux进行一些基础系统的配置.常用安装的安装,美化进行配置,先看一下美化后的效果吧 配置pacman和使用AUR(archlinuxcn源) archlinux采用滚动更新的 ...

  7. linux mint konsole终端模拟器 字符之间空格

    最近安装了linux mint 发现里面的终端是:konsole终端模拟器 ,问题是每次输字符随着输入字符越来越多,字符与光标之间的距离也越来越大(看上去像是自动添加了空格一样), 同时在使用vi时, ...

  8. 安卓上用Termux终端模拟器安装MC Forge 1.12.2服务器!

    本教程重度新手向,大神勿喷(因为楼主本人就是Linux小白)! 为了让教程合乎简约至上的原则,将不在基本操作上赘述 测试环境:酷派大神Note3 Android5.0 2GBRAM 未root 截图是 ...

  9. Ubuntu 18.04 下配置 HAXM 加速 Android模拟器

    Ubuntu 18.04 下配置 HAXM 加速 Android模拟器 最近在vmware环境下搭建ubuntu18.04开发环境,开始发现总是运行android模拟器在console提示加载如下错误 ...

  10. fbterm的配置,纯文本终端显示中文

    安装 fbterm sudo apt-get install fbterm 设置普通用户可以执行 fbterm 命令 sudo adduser username video #username为用户名 ...

随机推荐

  1. Nginx配置https并监听80端口重定向到443

    1.进入nginx安装目录,进入config文件夹编辑nginx.conf文件 vim nginx.conf 配置端口  443 listen 443 http2 ssl default_server ...

  2. 《爆肝整理》保姆级系列教程-玩转Charles抓包神器教程(16)-Charles其他骚操作之大结局

    1.简介 今天就说一些Charles的其他操作.以及抓包跨域的问题和常见的问题如何解决.到此Charles这一系列的文章也要和大家说再见了,其他什么小程序.Android7.0等等的问题可以查看宏哥的 ...

  3. BS系统自动更新的实现

    背景: 我公司做的考试系统(基于java开发的BS系统)是卖给学校的,随着客户数量增多,日常版本升级.远程维护工作占了程序员很多时间,遂考虑实现系统自动化更新. 要解决的问题及解决方案: 1.什么时候 ...

  4. 🚀 jdbc-plus是一款基于JdbcTemplate增强工具包, 已实现分页、多租户、动态表名等插件,可与mybatis、mybatis-plus等混合使用

    jdbc-plus简介 jdbc-plus是一款基于JdbcTemplate增强工具包, 基于JdbcTemplate已实现分页.多租户.动态表名等插件,可自定义扩展插件,可与mybatis.myba ...

  5. 2022-12-23:portainer是docker的web可视化工具。如果根据docker部署去写yaml,默认local是k8s,而不是docker,这不符合需求,需要修改yaml。请问部署在

    2022-12-23:portainer是docker的web可视化工具.如果根据docker部署去写yaml,默认local是k8s,而不是docker,这不符合需求,需要修改yaml.请问部署在 ...

  6. 2022-09-14:以下go语言代码输出什么?A:0 0;B:0 1;C:1 1;D:1 0。 package main func main() { println(f(1)) } func

    2022-09-14:以下go语言代码输出什么?A:0 0:B:0 1:C:1 1:D:1 0. package main func main() { println(f(1)) } func f(x ...

  7. 2021-02-16:n皇后问题。给定一个整数n,返回n皇后的摆法有多少种?

    福哥答案2021-02-16: 自然智慧即可.1.普通递归.有代码.需要判断同列和斜线.2.位运算递归.有代码.3.我的递归.有代码.只需要判断斜线. 代码用golang编写,代码如下: packag ...

  8. 2022-03-03:课程表 III。 这里有 n 门不同的在线课程,按从 1 到 n 编号。给你一个数组 courses ,其中 courses[i] = [durationi, lastDayi]

    2022-03-03:课程表 III. 这里有 n 门不同的在线课程,按从 1 到 n 编号.给你一个数组 courses ,其中 courses[i] = [durationi, lastDayi] ...

  9. shader编程基础:画线

    以sin曲线为例,任何函数曲线画法类似. 画线原理虽然十分简单,却是复杂图形曲线绘制的基础. uv和smoothstep等函数不清楚请参考跳转链接: shader编程基础:画圆 #define T . ...

  10. [ARC114D] Moving Pieces on Line 解题报告

    AT题面 简要题意 有一个红色的数轴,相邻两个整点之间连有一条边,所有边初始为红色.数轴上有 \(n\) 个棋子,将一个棋子从 \(a\) 位置移到 \(b\) 位置,可以将 \((a,b)\) 之间 ...