.. _i3: ============== i3窗口管理器 ============== .. note:: 我最终会使用 i3 兼容的基于 :ref:`wayland` 的窗口管理器 :ref:`sway` ,我的目标是使用最少资源和最快捷的桌面系统(快速的显示管理器、精简的窗口管理器以及轻量级的应用软件)。在切换到wayland之前,我将使用基于Xorg的i3作为过渡并熟悉现代化的平铺窗口管理器。 i3是一种动态的平铺式窗口管理器,其灵感来自于面向开发者与资深用户的 wmii。i3的多桌面完美支持多显示器,并且基于树形结构的窗口管理,提供 :ref:`vim` 式的多种操作模式。 安装 ======= Debian/Ubuntu ---------------- 在 :ref:`pi_400` 主机上,也就是Debian 10系统,通过以下命令安装i3:: sudo apt install i3 .. note:: 安装 ``i3`` 会同时依赖安装 `suckless-tools `_ 是最小化窗口管理器的简单命令,提供了 ``dmenu`` / ``dmenu`` / ``wmname`` 等基础工具 .. note:: 如果系统是从字符界面开始安装,之前没有安装过任何图形系统,则还会缺少甚多图形相关服务,则还需要补充安装:: sudo apt install xinit 如果不知道缺少哪些软件包,可以从 `Debian Packages Search `_ 上查找 安装完成后,如果是使用了LightDM这样的桌面显示管理器,则只要退出一次,然后在LightDM管理器的右上角,选择gear图标,下拉选择 ``i3`` 就可以登陆到i3桌面。 如果是字符界面启动i3,则在 ``~/.Xinitrc`` 末尾添加:: exec i3 如果想记录 i3 程序所有的输出,这一行要写成:: exec i3 -V >> ~/i3log-$(date +'%F-%k-%M-%S') 2>&1 Fedora -------- 在 Fedora 35 Server上,可以通过单独安装命令:: sudo dnf install -y i3 i3status i3lock dmenu \ azote rxvt-unicode brightlight dunst \ htop mousepad thunar 软件包列表: - ``i3status`` 在 i3bar 中显示信息 - ``dmenu`` 用于在i3桌面加载应用 - ``azote`` 基于gtk3的图片浏览和墙纸设置 (也可以使用 ``feh`` 设置墙纸) - ``rxvt-unicode`` 支持utf字符的终端 .. note:: 安装软件包列表参考 `Fedora Linux with the i3 tiling window manager `_ 版本推荐应用列表 使用 ====== 第一次登陆,系统会提示没有个人配置文件,按照提示输入回车让系统为你创建个人配置文件,后续我们只要修订个人配置文件就可以定制i3. .. figure:: ../../_static/linux/desktop/i3_init_1.png i3这样的平铺式窗口管理器最大的特点是涉及简单高效,没有任何花哨的功能,是完全面向极简主义的用户。所有窗口默认自动 ``平铺`` ,以不重叠的方式定位窗口,类似于在墙上放置瓷砖。不需要担心窗口定位,i3 一般会更好地利用屏幕空间。 初次登陆i3界面,就只能看到空空如也的桌面以及屏幕底端的状态栏。 基本快捷键 ------------ 在初始化时候,默认选择 ``Win`` 键(也就是 ``Mod`` 键)作为快捷键,你也可以在之后修改配置,修改成 ``Alt`` 键。 - 打开终端(这是我们在Linux下最常用的程序)使用快捷键 ``Mod+ENTER`` 默认每次按下 ``Mod+ENTER`` 会水平再添加一个终端窗口,你可以通过按下 ``Mod+v`` 然后再按下 ``Mod+ENTER`` 就会在当前窗口下方创建一个新终端窗口 .. note:: 默认的终端是 ``rxvt-xpm`` ,速度惊人的快。不过,界面非常类似上个实际计算机图形化的蛮荒时代,有一种复古的风范。 .. note:: 如果使用双显示器,默认会在两个屏幕上显示2个桌面,完全是自动化的 如果屏幕旋转90度(例如我的办公桌面狭小,显示屏是一横一竖),则需要配置 - 启动应用程序是通过 ``dmenu`` (一个简单对文字应用菜单)启动,也就是按下 ``Mod + d`` 切换到一个屏幕上方的狭窄的命令行输入框,通过输入匹配命令,缩小选择范围,并且可以通过方向键选择需要启动的应用,之后按下回车键来启动选择的应用。 可以通过应用程序提供的退出方法(通常默认是 ``ctrl + q`` 来退出,不过如果应用程序没有提供退出方法,可以使用i3的 ``Mode + Shift + q`` 来关闭窗口,不过可能会丢失未保存工作内容。 - 退出i3会话,使用快捷键 ``Mod + Shift + e`` .. note:: 由于i3可以非常方便切换窗口 ``Mod + 数字`` ,所以我在 Desktop 分配工作: - Desktop 1: 开启一个全屏窗口,通过 :ref:`vim` 来做开发工作, - Desktop 2: 启动一个chromium窗口,作为WEB开发验证 - Desktop 3: 启动4个窗口,分别去维护不同的服务器系统 工具 ====== - 用 feh 定义桌面的背景图片。 - 使用合成器管理器,如 compton 以启用窗口淡入淡出和透明度等效果。 - 用 dmenu或 rofi 以启用可从键盘快捷方式启动的可自定义菜单。 - 用dunst 用于桌面通知。 使用建议 =============== 在 i3 中,工作区是对窗口进行分组的一种简单方法。可以按照工作流以不同的方式对它们进行分组。 将浏览器放在一个工作区上,终端放在另一个工作区上,将电子邮件客户端放在第三个工作区上等等。使用键盘快捷方式执行此操作。按 +num 切换到工作区 num 。 还可以使用工作区来控制多监视器环境,其中每个监视器都有个初始工作区。如果切换到该工作区,则切换到该监视器,而无需让手离开键盘。 上述切换工作区 ``+num`` ,在 :ref:`pi_400` 就是 ``树莓派`` 图标按钮加上数字键。 i3 中还有另一种特殊类型的工作空间:the scratchpad(便笺簿)。它是一个不可见的工作区,通过按快捷方式显示在其他工作区的中间。这是一种访问您经常使用的窗口或程序的方便方式,如电子邮件客户端或音乐播放器。 .. note:: `arch linux文档 - i3 (简体中文) `_ 对使用方法有非常详细说明,特别是配置方法可以参考,后续实践。 .. note:: :ref:`fedora_os_images` 提供了 `Fedora Linux with the i3 tiling window manager `_ ,方便安装和使用。 参考 ====== - `i3 窗口管理器入门 `_ - `i3 窗口管理器使 Linux 更美好 `_ - `i3 User’s Guide `_ - `arch linux文档 - i3 (简体中文) `_ - `Getting started with the i3 tiling window manager `_ - `Getting started with the i3 window manager on Linux `_ - `Using i3 with multiple monitors `_