Sagar Sharma 发布的文章

apt-add-repository 到“软件及更新”工具,这里有几种从 Ubuntu 移除软件仓库的方法。

你可以 在 Ubuntu 中添加外部仓库 来访问官方仓库中不可用的软件包。

例如,如果你 在 Ubuntu 中安装 Brave 浏览器,则将其仓库添加到你的系统中。如果你添加了一个 PPA,它也会添加为外部仓库。

当你不需要特定软件时,请将其删除。但是,外部仓库仍然存在。你还可以也应该将其删除以保持系统原始状态。

Ubuntu 可以让你轻松删除软件仓库。有不同的方法可以做到这一点:

  • 使用 apt-add-repository 命令删除仓库
  • 使用 GUI 删除仓库(对于桌面用户)
  • 通过修改 /etc/apt/sources.list 文件的文件内容(针对专家)

但在此之前,如果你对这个概念不熟悉,我强烈建议你 熟悉包管理器的概念 和仓库。

方法 1、使用 apt 删除仓库?

你知道你还可以使用 apt 命令 来删除仓库吗? 嗯,从技术上讲,它不是核心 apt 命令的一部分,但它的工作方式类似。

在处理外部仓库时,你可以使用 add-apt-repository 或者 apt-add-repository 命令(两者是同一命令)。

首先,使用以下命令列出添加的仓库:

apt-add-repository --list

list enabled repositories in Ubuntu

完成后,你可以按所示方式使用带有 -r 标志的 apt-add-repository 命令来从列表中删除:

sudo apt-add-repository -r repo_name

例如,如果我想删除 yarn 仓库,我必须使用以下命令:

sudo add-apt-repository -r deb https://dl.yarnpkg.com/debian/ stable main

Remove repository using the apt-add-repository command in Ubuntu

按回车键进行确认。

接下来,使用以下命令更新仓库:

sudo apt update

现在,如果你列出已启用的仓库,你将不会在此处找到已删除的仓库:

apt-add-repository --list

confirm repository removal process by listing enabled repositories in Ubuntu

这就完成了!

方法 2、使用 GUI 删除 Ubuntu 中的软件仓库?️

? 不建议删除你一无所知的仓库,因为它可能会限制你将来安装你最喜欢的软件包,因此请确保你知道自己在做什么。

作为 最适合初学者的发行版之一,你可以使用 GUI 来删除仓库,而无需使用终端。

为此,首先从系统菜单打开“ 软件及更新 software & updates ”应用:

search for software and updates from the system menu

现在,单击“ 其他软件 Other Software ”部分,它将列出系统中的 PPA 和外部仓库。

列出中勾选的 ✅ 是已启用的。

要删除仓库,你必须遵循三个简单的步骤

  • 选择需要删除的仓库
  • 点击“ 删除 Remove ”按钮
  • 最后,点击“ 关闭 Close ”按钮

Disable repository from Ubuntu

单击关闭按钮后,它将打开一个提示,要求你在进行更改时更新信息。

只需单击 “ 重新载入 Reload ” 按钮即可:

Click on reload to after removing repository from Ubuntu and save changes

或者,你可以从命令行更新仓库以使更改生效:

sudo apt update

方法 3、通过目录来删除仓库(对于专家?‍?)

之前,我解释了如何使用工具(GUI 和 CLI)来删除仓库。在这里,你将修改负责管理仓库的系统目录(/etc/apt/sources.list.d)。

首先,将工作目录更改为 sources.list.d 并列出其内容:

cd /etc/apt/sources.list.d/ && ls

list contents of sources.list.d directory

在这里,你将找到所有仓库的列表。

如果你仔细观察,一个仓库将有两个文件。一个带有 .list 扩展名,另一个带有 .save 扩展名。

你必须删除具有 .list 扩展名的文件:

sudo rm Repo_name.list

例如,在这里,我使用以下命令删除了 node 仓库

sudo rm nodesource.list

remove repository by removing the repository directory in Ubuntu

要使更改生效,请使用以下命令更新仓库索引:

sudo apt update

想了解更多有关 sources.list 的信息吗?阅读 这篇文章

附加步骤:删除仓库后删除 GPG 密钥(对于高级用户)

如果你希望在删除仓库后删除 GPG 密钥,请按以下步骤操作。

首先,使用以下命令列出现有的 GPG 密钥:

apt-key list

现在,输出可能会让某些用户感到困惑。

以下是要记住的事情:

  • GPG 密钥名称将放置在虚线(----)上方
  • 公钥在第二行

例如,以下是 Chrome GPG 密钥的相关数据:

list GPG keys in Ubuntu

要删除 GPG 密钥,你可以使用公钥的最后两个字符串(不带任何空格)。

例如,以下是我将如何使用 Chrome 浏览器公钥的最后两个字符串(D38B 4796)删除其 GPG 密钥:

sudo apt-key del D38B4796

remove GPG key in Ubuntu

同样,你也可以使用整个公钥。但这一次,你必须在两个字符串之间包含空格,如下所示:

sudo apt-key del "72EC F46A 56B4 AD39 C907  BBB7 1646 B01B 86E5 0310"

小心添加和删除的内容

特别是当你是 Linux 新用户时,你会遇到许多感兴趣的软件,对仓库添加了又删除。

虽然尝试是件好事,但你应该始终小心添加/删除到系统中的任何内容。你应该记住一些事情,例如:它包含更新的软件包吗? 它是受信任或维护的仓库吗?

保持谨慎将使你的系统免受不必要的仓库和软件包的影响。

我希望本指南可以帮助你删除不需要的仓库!

如果你遇到任何问题请在下面评论。

(题图:MJ/3d436ed6-76fc-47ef-88c3-b5f3e2862c7d)


via: https://itsfoss.com/remove-software-repositories-ubuntu/

作者:Sagar Sharma 选题:lkxed 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

在这份超详细的指南中了解如何通过 i3 窗口管理器来自定义系统的外观和体验。

你可能在网上(尤其是通过 r/unixporn 子区)看到过很多炫酷的截图,用户可以根据个人喜好自定义他们的桌面并与大家分享。

这是因为 Linux 允许你自定义桌面体验的方方面面。

而结果?就是比任何 Mac 或 Windows 系统更具视觉和感知效果

来看一下这个 ?

看起来像一个 Linux Mint 系统吗? ?

但是你怎样才能做到这样呢?自定义你的 Linux 桌面外观是很困难的

答案就在于 窗口管理器。如果你能配置好窗口管理器,你就能自定义外观。

在本指南中,我将引导你完成使用 i3 窗口管理器 进行基本配置。它是 Linux 上最好的窗口管理器之一

? “ 加料 Rice ” 是一个常用的词汇,用来指代在桌面上进行视觉改进和自定义。引用自 /r/unixporn (LCTT 译注:“加料”一词来自于购买便宜的亚洲汽车,并给它们安装售后零件,以让它更好地类似于赛车。)

在遵循本指南之前,你需要了解以下内容:

  • 在本指南中,我将使用 Arch Linux 来演示步骤,但你可以使用你喜欢的任何发行版,结果也是一样的。
  • 请记住,本指南是 对 i3 进行“加料”定制的基础

在按照本指南进行操作后,你应该得到以下预期结果:

如何在 Linux 中配置 i3 窗口管理器、i3blocks 和 i3gaps

? 为了节省你的时间,我已经在 GitHub 上上传了与本文相关的所有 i3 配置文件,你可以通过这些文件实现我们在本文中所期望的最终外观。
下载 i3 配置文件

首先,让我们开始安装 i3 窗口管理器

在 Linux 上安装 i3 窗口管理器

基于 Ubuntu/Debian:

sudo apt install xorg lightdm lightdm-gtk-greeter i3-wm i3lock i3status i3blocks dmenu terminator

Arch Linux:

sudo pacman -S xorg lightdm lightdm-gtk-greeter i3-wm i3lock i3status i3blocks dmenu terminator

当你完成安装后,使用以下命令启用 lightdm 服务:

sudo systemctl enable lightdm.service

然后启动 lightdm 服务:

sudo systemctl start lightdm.service

这将启动 lightdm 登录界面,并要求你输入用户名密码。

如果你安装了多个桌面环境,你可以从选择菜单中选择 i3:

在 Arch Linux 上使用 lightdm 使用 i3 窗口管理器

当首次登录 i3 时,它会询问你是否要创建一个 i3 配置文件。

按下回车键创建一个新的 i3 配置文件:

生成 i3 配置文件

接下来,它会询问你选择 WinAlt 键哪个作为修饰键(mod)。

我建议你选择 Win(或者 Super 键),因为大多数用户已经习惯将其用作快捷键:

现在你可以开始使用 i3 窗口管理器了。

但在我们开始定制之前,让我先介绍一下你如何使用 i3。

i3 窗口管理器的按键绑定

让我们从基础知识开始。

窗口管理器的基本功能是将多个窗口水平和垂直地组合在一起,这样你就可以同时监视多个进程。

结果是这样的:

在 Arch Linux 上使用 i3

你可以使用以下按键绑定执行更多操作:

按键绑定描述
Mod + Enter打开终端。
Mod + ←切换到左侧窗口。
Mod + →切换到右侧窗口。
Mod + ↑切换到上方窗口。
Mod + ↓切换到下方窗口。
Mod + Shift + ←将窗口移动到左侧。
Mod + Shift + →将窗口移动到右侧。
Mod + Shift + ↑将窗口移动到上方。
Mod + Shift + ↓将窗口移动到下方。
Mod + f将焦点窗口切换到全屏模式。
Mod + v下一个窗口将垂直放置。
Mod + h下一个窗口将水平放置。
Mod + s启用堆叠式窗口布局。
Mod + w启用选项卡式窗口布局。
Mod + Shift + Space启用浮动窗口(针对焦点窗口)。
Mod + 鼠标左键单击使用鼠标拖动整个窗口。
Mod + 0-9切换到另一个工作区。
Mod + Shift + 0-9将窗口移动到另一个工作区。
Mod + d打开应用程序启动器(D 菜单)。
Mod + Shift + q关闭焦点窗口。
Mod + Shift + c重新加载 i3 配置文件。
Mod + Shift + r重启 i3 窗口管理器。
Mod + Shift + e退出 i3 窗口管理器。

我知道按键绑定很多,但如果你每天练习它们,你很快就会习惯。

如果你想知道,你可以根据需要更改按键绑定,后面的指南中我会分享如何做到这一点。

现在,让我们来看看配置部分。

在 Arch Linux 中启用 AUR

如果你刚刚安装了 Arch Linux,可能还没有启用 AUR。

这意味着你错过了 Arch Linux 最重要的特性。

启用 AUR,你需要使用 AUR 包管理器。在这里,我将使用 yay

首先,安装 git

sudo pacman -S git

现在,克隆 yay 存储库并切换到 yay 目录:

git clone https://aur.archlinux.org/yay-git.git && cd yay

最后,构建包:

makepkg -si

还有其他一些 AUR 包管理器,比如 Paru,如果你想使用除 yay 之外的其他工具,你可以继续或者探索其他选项。

更改 i3 窗口管理器的分辨率

如果你使用虚拟机运行窗口管理器,可能会遇到问题,尤其是显示分辨率可能被锁定在 1024x768 上,就像我一样。

因此,你需要执行以下命令,指定所需的显示分辨率:

xrandr --output [显示名称] --mode [分辨率]

要找到已连接显示器的名称,你需要使用以下形式的 xrandr 命令:

xrandr | grep -w 'connected'

在 i3 中查找已连接显示器

在我的情况下,显示名称是 Virtual-1

因此,如果我想将分辨率更改为 1920*1080,我需要执行以下命令:

xrandr --output Virtual-1 --mode 1920x1080

但这只是暂时生效。要使其永久生效,你需要在 i3 配置文件中进行更改。

首先,打开配置文件:

nano ~/.config/i3/config

通过按下 Alt + / 来在 nano跳到文件末尾,并使用以下语法来永久更改显示分辨率:

# 显示分辨率
exec_always xrandr --output [显示名称] --mode [分辨率]

结果应该是这样的:

在 i3 中永久更改显示分辨率

完成后,保存更改并退出 nano 文本编辑器。

现在,使用 Mod + Shift + r 重新启动 i3 窗口管理器,以使你对配置文件所做的更改生效!

在 i3 窗口管理器中更改壁纸

默认情况下,i3 的外观比较陈旧,你可能想切换回之前的桌面环境。

但是通过更改壁纸,你可以改变整个系统的氛围。

在 i3 中有多种方式可以更改壁纸,但在这里,我将向你展示如何使用 feh 实用工具。

首先,让我们从安装开始:

对于基于 Arch 的发行版

sudo pacman -S feh

对于 Ubuntu/Debian 系的发行版:

sudo apt install feh

安装完成后,你可以从互联网上下载你喜欢的壁纸。接下来,打开 i3 配置文件

nano ~/.config/i3/config

跳到文件的末尾,使用如下所示的 feh 命令:

# 显示壁纸
exec_always feh --bg-fill /path/to/wallpaper

在我的情况下,壁纸位于 Downloads 目录中,所以我的命令如下:

使用 feh 实用工具在 I3 窗口管理器中更改背景

保存更改并退出 nano 文本编辑器。

为了使配置文件的更改生效,使用 Mod + Shift + r 重新启动 i3 窗口管理器。

我的效果如下:

在 i3 窗口管理器中更改壁纸

自定义 i3 锁屏界面

默认情况下,如果你想锁定系统,你需要执行以下命令:

i3lock

锁屏界面如下所示:

锁定 i3 窗口管理器

下面,我将向你展示:

  • 如何创建自定义快捷方式以锁定 i3 会话
  • 如何更改锁屏界面的壁纸

为了使锁屏界面更加美观,你需要使用 i3lock-color 包。

但首先,你需要移除现有的 i3lock,因为它会与 i3lock-color 冲突:

在 Arch Linux 上移除它:

sudo pacman -R i3lock

对于 Ubuntu/Debian 用户:

sudo apt remove i3lock

完成后,你可以使用 AUR 包管理器安装 i3lock-color

yay i3lock-color

如果你使用的是基于 Ubuntu 的系统,你需要从头编译它。你可以在他们的 GitHub 页面上找到 详细的说明

安装完成后,让我们创建一个新目录并创建一个新文件来存储锁屏界面的配置:

安装好 i3lock-color 后,你可以创建一个新目录并创建一个新文件来存储锁屏界面的配置:

mkdir ~/.config/scripts && nano ~/.config/scripts/lock

将以下文件内容粘贴到文件中,定义锁屏界面的样式:

#!/bin/sh

BLANK='#00000000'
CLEAR='#ffffff22'
DEFAULT='#00897bE6'
TEXT='#00897bE6'
WRONG='#880000bb'
VERIFYING='#00564dE6'

i3lock \
--insidever-color=$CLEAR     \
--ringver-color=$VERIFYING   \
\
--insidewrong-color=$CLEAR   \
--ringwrong-color=$WRONG     \
\
--inside-color=$BLANK        \
--ring-color=$DEFAULT        \
--line-color=$BLANK          \
--separator-color=$DEFAULT   \
\
--verif-color=$TEXT          \
--wrong-color=$TEXT          \
--time-color=$TEXT           \
--date-color=$TEXT           \
--layout-color=$TEXT         \
--keyhl-color=$WRONG         \
--bshl-color=$WRONG          \
\
--screen 1                   \
--blur 9                     \
--clock                      \
--indicator                  \
--time-str="%H:%M:%S"        \
--date-str="%A, %Y-%m-%d"       \
--keylayout 1                \

保存更改并退出文本编辑器。

? 在网上可以找到各种不同的 i3 锁屏样式的 bash 脚本。这只是一个示例,对于大多数情况来说是一个较为简单的选项。

现在,使用 chmod 命令 将该文件设置为可执行文件:

sudo chmod +x .config/scripts/lock

接下来,你需要对配置文件进行一些更改,以添加该配置文件的路径以使其生效。

此外,我将向你展示如何使用自定义键盘快捷键锁定屏幕。

首先,打开配置文件:

nano ~/.config/i3/config

使用 Alt + / 跳至行尾并粘贴以下内容:

# 锁屏快捷键
bindsym $mod+x exec /home/$USER/.config/scripts/lock

在上面的示例中,我将 mod + x 作为锁定屏幕的快捷键,你可以选择任何你喜欢的快捷键。

最后的配置文件将如下所示:

如何在 Arch Linux 中使用 i3lock-color

相当不错,不是吗?

在 i3 窗口管理器中更改主题和图标

我知道你可能会想到这个问题。

你为什么需要图标呢?你并不仅仅使用窗口管理器来使用命令行工具。

有时候,使用图形界面更加方便,比如使用文件管理器。所以,在处理这些工具时,你希望界面看起来更好看?

因此,在本部分中,我将向你展示:

  • 如何在 i3 中更改主题
  • 如何在 i3 中更改图标

让我们从安装主题开始。

在这里,我将使用 materia-gtk-themepapirus 图标,但你可以使用任何你喜欢的主题和图标。

在 Arch 中安装主题,使用以下命令:

sudo pacman -S materia-gtk-theme papirus-icon-theme

在 Ubuntu/Debian 系统中:

sudo apt install materia-gtk-theme papirus-icon-theme

但仅仅安装还不能完成任务。你需要像使用 GNOME “ 调整 Tweaks ” 应用更改主题一样来应用主题。

在 i3 中,你可以使用 lxappearance 工具 来更改主题和图标。

在 Arch 中安装 lxappearance,使用以下命令:

sudo pacman -S lxappearance

在 Ubuntu/Debian 系统中:

sudo apt install lxappearance

安装完成后,使用 Mod + d 启动 D 菜单,然后输入 lxappearance,并在第一个结果上按回车键。

在这里,选择你喜欢的主题。我这里选择 Materia-dark

选择主题后,点击应用按钮以应用更改:

同样地,要更改图标,选择 “ 图标主题 Icon Theme ”,选择图标主题,然后点击应用按钮:

使用 lxappearance 更改 i3 窗口管理器中的图标

应用主题和图标后,我的文件管理器如下所示:

在 i3 窗口管理器中更改主题和图标

在 i3 窗口管理器中为工作区设置图标

默认情况下,工作区仅由数字表示,这并不是你想要使用工作区的最理想方式。

因此,在本部分中,我将引导你如何使用合适的图标更改工作区的名称。

为了在配置文件中使用图标,首先你需要安装名为 Awesome 的新字体:

对于基于 Arch 的发行版:

sudo pacman -S ttf-font-awesome

对于 Ubuntu/Debian 系统:

sudo apt install fonts-font-awesome

安装完成后,打开 i3 配置文件:

nano ~/.config/i3/config

在这个配置文件中,找到工作区的部分,你将会看到为每个工作区给出的变量:

在 i3 配置文件中的工作区变量

在这个部分,你需要用你想要的名称替换给出的工作区数字。

我将把第一个工作区命名为 “programs”,因为在本教程的后面部分,我将展示如何将特定的应用程序分配到特定的工作区。

我主要使用前 5 个工作区,所以我会相应地命名它们:

# 定义默认工作区的名称,稍后我们将在其中配置键绑定。
# 我们使用变量来避免在多个地方重复使用名称。
set $ws1 "1: Terminal"
set $ws2 "2: Firefox"
set $ws3 "3: VMWare"
set $ws4 "4: Spotify"
set $ws5 "5: Shutter"
set $ws6 "6"
set $ws7 "7"
set $ws8 "8"
set $ws9 "9"
set $ws10 "10"

现在让我们为配置文件中提到的每个应用程序添加图标。

你可以 参考 awesome 字体的备忘单 来找到合适的图标。

将图标复制粘贴到名称前面:

# 定义默认工作区的名称,稍后我们将在其中配置键绑定。
# 我们使用变量来避免在多个地方重复使用名称。
set $ws1 "1:  Terminal"
set $ws2 "2:  Firefox"
set $ws3 "3:  VMWare"
set $ws4 "4:  Spotify"
set $ws5 "5:  Shutter"
set $ws6 "6"
set $ws7 "7"
set $ws8 "8"
set $ws9 "9"
set $ws10 "10"

不要担心它看起来可怕!

完成后,使用 Mod + e 退出 i3,然后再次登录以应用你刚刚所做的更改。

我的效果如下图所示:

字体看起来太小?是时候解决这个问题了!

在 i3 中更改标题窗口和状态栏的字体

首先,让我们安装新的字体(我将在这里使用 Ubuntu 字体)。

要在 Arch 上安装 Ubuntu 字体,请执行以下操作:

sudo pacman -S ttf-ubuntu-font-family

如果你使用的是 Ubuntu,你已经安装了这些字体!

安装完成后,打开配置文件:

nano ~/.config/i3/config

在配置文件中,找到 font pango:monospace 8 这一行,这是默认字体。

找到那行后,添加字体名称和大小,如下所示:

font pango:Ubuntu Regular 14

然后,使用 Mod + Shift + r 重新启动窗口管理器,这样就完成了工作:

在 i3 窗口管理器中分配应用程序到工作区

在给工作区命名之后,你会想要将特定的软件分配到相应的工作区中。

例如,如果我将第二个工作区命名为 “Firefox”,那么我只想在该工作区中使用 Firefox。

那么要如何实现呢?

为了做到这一点,你需要找到每个要分配的应用程序的类名。

听起来复杂? 让我告诉你如何做。

首先,将应用程序和终端并排打开。例如,在这个例子中,我将 Firefox 和终端并排打开:

并排打开应用程序和终端

现在,在终端中执行 xprop 命令,它会改变鼠标指针的形状:

xprop

接下来,将鼠标悬停在应用程序上,并在应用程序窗口内的任何位置单击,如图所示:

在 i3 窗口管理器中查找类名

类名将在以下行的最后一个字符串中找到:

WM_CLASS(STRING) = "Navigator", "firefox"

在我的情况下,Firefox 浏览器的类名将是 firefox

对所有你想要分配到工作区的应用程序重复这个过程。

一旦你知道每个你想要分配到工作区的应用程序的类名,打开配置文件:

nano ~/.config/i3/config

使用 Alt + /nano 定位到文件末尾,并使用以下语法将应用程序分配到工作区:

# 分配应用到工作区
for_window [class="类名"] move to workspace $[工作区变量]

作为参考,下面是我为不同应用程序分配了 4 个工作区后的配置文件示例:

将应用分配到工作区

现在,无论在哪个工作区打开任何应用程序,它都会自动放置在配置的工作区中。非常方便! ?

在 i3 窗口管理器中让终端变透明

要启用透明效果,你需要安装 picom 合成器并对配置文件进行一些更改。

让我们从安装开始。

对于基于 Arch 的发行版:

sudo pacman -S picom

对于基于 Ubuntu/Debian 的发行版:

sudo apt install picom

安装完成后,你需要告诉系统使用 picom

首先打开配置文件:

nano ~/.config/i3/config

在配置文件的末尾插入以下行:

# 使用 picom 合成器实现透明效果
exec_always picom -f

这里,我使用 -f 标志来在切换工作区、打开新应用程序等时启用淡入淡出效果。

保存并退出文本编辑器。

现在,使用 Mod + Shift + r 重新启动 i3。

接下来,打开终端,打开 “ 首选项 Preference ”,然后选择“ 配置文件 Profiles ”,选择“ 背景 Background ”,然后选择“ 透明背景 Transparent background ”选项。

从这里,你可以调整透明度:

在 i3 窗口管理器中更改终端背景透明度

在 i3 窗口管理器中自定义状态栏

默认情况下,状态栏显示各种信息,但没有图标。

因此,在这个部分,我将展示如何从状态栏中删除一些元素以及如何为它们添加图标。

但是,在这里,我将在 /etc/i3status.conf 中创建一个原始状态栏的副本,以便如果出现任何错误,你可以随时恢复到默认配置。

首先,在 .config 目录下创建一个新的目录:

mkdir .config/i3status

在以下命令中,我使用了 cp 命令来复制文件

sudo cp /etc/i3status.conf ~/.config/i3status/i3status.conf

接下来,使用 chown 命令更改所有者,以便你可以进行所需的更改:

sudo chown $USER:$USER ~/.config/i3status/i3status.conf

现在,你需要通过修改 i3 配置文件来指示窗口管理器使用新的 i3status 配置文件。首先打开配置文件:

nano ~/.config/i3/config

在该配置文件中查找 status_command i3status 这一行。这是你将提供新状态配置文件路径的行。

找到该行后,进行以下更改:

bar {
    status_command i3status -c /home/$USER/.config/i3status/i3status.conf
}

最终的结果应该如下所示:

在 i3 窗口管理器中更改 i3 状态配置路径

保存更改并退出文本编辑器。

现在,让我们从状态栏中删除不必要的指示器。

首先,打开 i3status 配置文件:

nano .config/i3status/i3status.conf

在这里,你可以将以 order 开头的行注释掉,这些行实际上是指示器的变量。

例如,在这里,我禁用了 ipv6wireless _first_battery allload 这些对我来说不必要的指示器:

#order += "ipv6"
#order += "wireless _first_"
order += "ethernet _first_"
#order += "battery all"
order += "disk /"
#order += "load"
order += "memory"
order += "tztime local"

然后,在浏览器中打开 awesome font 列表,找到与状态栏中列出的项目相关的适当图标。

在我的设置中,我删除了以下内容:

  • 删除了显示可用内存的行
  • 删除了显示以太网连接速度的行

最终,我的状态栏如下所示:

自定义 i3 窗口管理器中的状态栏

在 i3 窗口管理器中改变颜色方案

更改 i3 窗口管理器中的颜色方案是这个指南中最重要的部分,因为窗口管理器最吸引人的地方就是你选择的窗口装饰颜色。

? 我将为每个颜色声明变量,这样你只需更改变量本身的值,就可以轻松地获得新的颜色方案。

首先,打开 i3 配置文件:

nano ~/.config/i3/config

使用 Alt + / 快捷键到达文件末尾,并使用以下语法添加变量来存储颜色:

# 窗口的色彩方案
set $bgcolor    #523d64
set $in-bgcolor #363636
set $text       #ffffff
set $u-bgcolor  #ff0000
set $indicator  #a8a3c1
set $in-text    #969696
#                       边框            背景            文本            指示器(显示下一个窗口位置的线条)     
client.focused          $bgcolor        $bgcolor        $text           $indicator
client.unfocused        $in-bgcolor     $in-bgcolor     $in-text        $in-bgcolor
client.focused_inactive $in-bgcolor     $in-bgcolor     $in-text        $in-bgcolor
client.urgent           $u-bgcolor      $u-bgcolor      $text           $u-bgcolor

在这里:

  • bgcolor 表示背景色。
  • in-bgcolor 表示非活动窗口的背景色。
  • text 是文本颜色。
  • u-bgcolor 表示紧急操作的背景色。
  • indicator 是标示下一个窗口位置的线条的颜色。
  • in-text 是非活动窗口的文本颜色。

对于本指南,我仅使用了四个基本类别:

  • client.focused 定义了焦点窗口的颜色。
  • client.unfocused 定义了失去焦点时窗口的装饰。
  • client.focused_inactive 当其中一个容器处于焦点但当前没有焦点时,显示的颜色。
  • client.urgent 定义了紧急操作时的颜色。
? 除了这四个类别,还有更多类别,请参考 官方 i3 配置手册 以了解更多信息。

一旦你对配置文件进行了更改,请使用 Mod + Shift + r 重新启动 i3。

如果你按照我的颜色方案,设置应该如下所示:

更改 I3 窗口管理器中的窗口颜色

那么,状态栏的颜色怎么办?当然可以改!

更改 i3 窗口管理器中状态栏的颜色方案

在本节中,你将意识到为什么我使用变量来存储颜色,因为我将使用相同的变量来为我的状态栏上色!

要在状态栏中使用颜色,你需要在 i3 配置文件的 bar {...} 部分进行更改。

首先,打开配置文件:

nano ~/.config/i3/config

在配置文件中查找 bar {...} 部分。

找到该部分后,创建一个颜色部分,并为状态栏定义颜色和类别,与你为窗口所做的相同:

bar {
        status_command i3status -c /home/$USER/.config/i3status/i3status.conf
        colors {
                background $bgcolor
                separator #191919
                #                       border          background      text
                focused_workspace       $bgcolor        $bgcolor        $text
                inactive_workspace      $in-bgcolor     $in-bgcolor     $text
                urgent_workspace        $u-bgcolor      $u-bgcolor      $text   

        }
}

在这里,我使用了 focused_workspaceinactive_workspaceurgent_workspace 这三个类别,根据需要定义了相应的颜色。

保存更改后,重新启动 i3,状态栏也会显示颜色。

设置 i3 状态栏的透明度

本节将向你展示如何使 i3 状态栏透明。

在此之前,让我们先更改 i3 状态栏的字体。

这里,我将使用 Droid 字体,使其看起来干净而带有一种极客风格。

要在 Arch Linux 上安装 Droid 字体,请使用以下命令:

sudo pacman -S ttf-droid

对于 Ubuntu/Debian 系统,请使用以下命令:

sudo apt install fonts-droid-fallback

安装完成后,打开配置文件:

nano ~/.config/i3/config

进入 bar {...} 部分,并按下面的示例输入字体名称和大小:

font pango: Droid Sans Mono 11

在 i3 状态栏中更改字体

完成后,请重新启动 i3,字体将会被更改!

要使状态栏透明,你可以使用现有十六进制代码中的额外两个数字来定义透明度。

如果你想要控制透明度,我建议你查看 此指南,其中提供了从 0 到 100% 透明度的代码范围

为此,我将在配置文件中使用两个新变量。首先,打开配置文件:

nano ~/.config/i3/config

在这里,我为背景颜色添加了 60% 的透明度,并为非活跃背景颜色添加了 30% 的透明度:

set $bgcolor    #523d6499
set $in-bgcolor #3636364D

如果你仔细观察,我在现有的十六进制颜色代码中添加了两位数字来定义透明度。例如,使用 99 来表示 60% 的透明度,而使用 4D 来表示 30% 的透明度。

此外,我添加了两个新变量,透明度不同但颜色相同,作为背景使用,使其看起来更好:

set $focused-ws #523d6480
set $bar-color  #523d640D

完成后,让我们修改 bar {...} 部分来应用透明度。

bar {...} 中添加两行代码:

i3bar_command i3bar --transparency
tray_output none

请注意,使用 tray_output none,它将不会在托盘中显示任何图标。如果你不希望出现这种行为,则可以跳过此行,只添加第一行以实现透明度。

一旦完成,修改状态栏的颜色方案,例如更改背景颜色、边框和活动工作区的背景。

修改后,配置文件应如下所示:

使 i3 状态栏透明的配置文件(i3 窗口管理器)

为了使你所做的更改生效,请重新启动 i3,你将得到透明的窗口和状态栏:

在 i3 窗口管理器中使状态栏和窗口透明

在窗口管理器中使用 i3blocks

默认的 i3 状态栏在我看来毫无用处;怎么样让它变得有用起来呢?

在本部分,我将解释如何添加以下功能:

  • 软件包更新
  • 内存使用情况
  • 磁盘使用情况
  • 音量指示器
  • Spotify 指示器
? 要实现这些功能,你需要使用一些脚本,这些脚本将允许你向状态栏添加所需的操作。不用担心,我不会让你手动输入脚本;GitHub 上有各种脚本可供选择,几乎涵盖了你所需的所有方面。

但在此之前,你需要进行一些配置,以存储脚本并指示 i3 使用 i3block 的配置,而不是使用 i3bar。

如果你在本指南的开头按照给定的说明进行操作,那么 i3blocks 已经安装好了,并且配置文件位于 /etc/i3blocks.conf

如果你希望快速下载块配置文件以进行设置而不阅读其他内容,请点击以下链接:

i3 配置文件

在本教程中,我将创建一个副本,使用它代替原始的配置文件,因此首先我们要创建一个目录来存储配置文件的副本:

mkdir ~/.config/i3blocks

现在,创建一个原始配置文件的副本:

sudo cp /etc/i3blocks.conf ~/.config/i3blocks/

最后,使用 chown 命令更改文件的所有者,以便你进行所需的更改:

sudo chown $USER:$USER ~/.config/i3blocks/i3blocks.conf

要启用 i3blocks,在 i3 配置文件中进行一些更改:

nano ~/.config/i3/config

进入 bar {...} 部分,在这里,你需要将 status_command 更改为 i3blocks 并添加 i3blocks 配置文件的路径,如下所示:

在 i3 窗口管理器中启用 i3blocks

完成后,使用 Mod + Shift + r 重新启动 i3 窗口管理器,整个状态栏都会被更改,并显示如下:

i3 窗口管理器中 i3blocks 的默认外观

不要担心,你将很快使状态栏比以前的 i3bar 更有价值和好看。

添加磁盘块

如果你想要显示磁盘剩余空间,可以添加此块。

在这里,我将使用 nano 创建并打开用于磁盘块的配置文件。

nano ~/.config/scripts/disk

然后粘贴以下行:

#!/usr/bin/env sh
DIR="${DIR:-$BLOCK_INSTANCE}"
DIR="${DIR:-$HOME}"
ALERT_LOW="${ALERT_LOW:-$1}"
ALERT_LOW="${ALERT_LOW:-10}" # color will turn red under this value (default: 10%)

LOCAL_FLAG="-l"
if [ "$1" = "-n" ] || [ "$2" = "-n" ]; then
    LOCAL_FLAG=""
fi

df -h -P $LOCAL_FLAG "$DIR" | awk -v label="$LABEL" -v alert_low=$ALERT_LOW '
/\/.*/ {
    # full text
    print label $4
    # short text
    print label $4
    use=$5
    # no need to continue parsing
    exit 0
}
END {
    gsub(/%$/,"",use)
    if (100 - use < alert_low) {
        # color
        print "#FF0000"
    }
}
'

保存更改并从文本编辑器中退出。

现在,将此文件设置为可执行:

sudo chmod +x ~/.config/scripts/disk

接下来,打开 I3blocks 配置文件:

nano ~/.config/i3blocks/i3blocks.conf

根据你想要放置磁盘块的位置,粘贴以下行:

[disk]
command=/home/$USER/.config/scripts/disk
LABEL=
#DIR=$HOME
#ALERT_LOW=10
interval=30

完成后,保存更改并使用 Mod + Shift + r 重新启动 i3,状态栏中将显示带有磁盘图标的可用磁盘空间。

添加内存块

这将是状态栏中指示系统中已使用内存的块。

首先,创建并打开一个新文件用于新的块:

nano ~/.config/scripts/memory

然后在新文件中粘贴以下行:

#!/usr/bin/env sh
TYPE="${BLOCK_INSTANCE:-mem}"
PERCENT="${PERCENT:-true}"

awk -v type=$TYPE -v percent=$PERCENT '
/^MemTotal:/ {
    mem_total=$2
}
/^MemFree:/ {
    mem_free=$2
}
/^Buffers:/ {
    mem_free+=$2
}
/^Cached:/ {
    mem_free+=$2
}
/^SwapTotal:/ {
    swap_total=$2
}
/^SwapFree:/ {
    swap_free=$2
}
END {
    if (type == "swap") {
        free=swap_free/1024/1024
        used=(swap_total-swap_free)/1024/1024
        total=swap_total/1024/1024
    } else {
        free=mem_free/1024/1024
        used=(mem_total-mem_free)/1024/1024
        total=mem_total/1024/1024
    }
    pct=0
    if (total > 0) {
        pct=used/total*100
    }
    # full text
    if (percent == "true" ) {
        printf("%.1fG/%.1fG (%.f%%)\n", used, total, pct)
    } else {
        printf("%.1fG/%.1fG\n", used, total)
    }
    # short text
    printf("%.f%%\n", pct)
    # color
    if (pct > 90) {
        print("#FF0000")
    } else if (pct > 80) {
        print("#FFAE00")
    } else if (pct > 70) {
        print("#FFF600")
    }
}
' /proc/meminfo

保存更改并从文本编辑器中退出。

现在,要使其生效,你需要使用以下命令将此文件设置为可执行:

sudo chmod +x ~/.config/scripts/memory

接下来,打开 i3blocks 配置文件:

nano ~/.config/i3blocks/i3blocks.conf

并将以下内容粘贴到你希望在状态栏中显示内存使用情况的位置:

[memory]
command=/home/$USER/.config/scripts/memory
label=
interval=30

保存更改并从文本编辑器中退出。重新启动 i3 以使更改生效!

添加更新指示块

这是最有帮助的指示器,它显示需要更新的旧软件包数量。

首先,使用以下命令安装依赖项以使其正常工作:

sudo pacman -S pacman-contrib

现在,创建一个新文件来存储脚本:

nano ~/.config/scripts/arch-update

然后粘贴以下内容:

#!/usr/bin/env python3
import subprocess
from subprocess import check_output
import argparse
import os
import re


def create_argparse():
    def _default(name, default='', arg_type=str):
        val = default
        if name in os.environ:
            val = os.environ[name]
        return arg_type(val)

    strbool = lambda s: s.lower() in ['t', 'true', '1']
    strlist = lambda s: s.split()

    parser = argparse.ArgumentParser(description='Check for pacman updates')
    parser.add_argument(
        '-b',
        '--base_color',
        default = _default('BASE_COLOR', 'green'),
        help='base color of the output(default=green)'
    )
    parser.add_argument(
        '-u',
        '--updates_available_color',
        default = _default('UPDATE_COLOR', 'yellow'),
        help='color of the output, when updates are available(default=yellow)'
    )
    parser.add_argument(
        '-a',
        '--aur',
        action = 'store_const',
        const = True,
        default = _default('AUR', 'False', strbool),
        help='Include AUR packages. Attn: Yaourt must be installed'
    )
    parser.add_argument(
        '-y',
        '--aur_yay',
        action = 'store_const',
        const = True,
        default = _default('AUR_YAY', 'False', strbool),
        help='Include AUR packages. Attn: Yay must be installed'
    )
    parser.add_argument(
        '-q',
        '--quiet',
        action = 'store_const',
        const = True,
        default = _default('QUIET', 'False', strbool),
        help = 'Do not produce output when system is up to date'
    )
    parser.add_argument(
        '-w',
        '--watch',
        nargs='*',
        default = _default('WATCH', arg_type=strlist),
        help='Explicitly watch for specified packages. '
        'Listed elements are treated as regular expressions for matching.'
    )
    return parser.parse_args()


def get_updates():
    output = ''
    try:
        output = check_output(['checkupdates']).decode('utf-8')
    except subprocess.CalledProcessError as exc:
        # checkupdates exits with 2 and no output if no updates are available.
        # we ignore this case and go on
        if not (exc.returncode == 2 and not exc.output):
            raise exc
    if not output:
        return []

    updates = [line.split(' ')[0]
               for line in output.split('\n')
               if line]

    return updates


def get_aur_yaourt_updates():
    output = ''
    try:
        output = check_output(['yaourt', '-Qua']).decode('utf-8')
    except subprocess.CalledProcessError as exc:
        # yaourt exits with 1 and no output if no updates are available.
        # we ignore this case and go on
        if not (exc.returncode == 1 and not exc.output):
            raise exc
    if not output:
        return []

    aur_updates = [line.split(' ')[0]
                   for line in output.split('\n')
                   if line.startswith('aur/')]

    return aur_updates

def get_aur_yay_updates():
    output = check_output(['yay', '-Qua']).decode('utf-8')
    if not output:
        return []

    aur_updates = [line.split(' ')[0] for line in output.split('\n') if line]

    return aur_updates


def matching_updates(updates, watch_list):
    matches = set()
    for u in updates:
        for w in watch_list:
            if re.match(w, u):
                matches.add(u)

    return matches


label = os.environ.get("LABEL","")
message = "{0}<span color='{1}'>{2}</span>"
args = create_argparse()

updates = get_updates()
if args.aur:
    updates += get_aur_yaourt_updates()
elif args.aur_yay:
    updates += get_aur_yay_updates()

update_count = len(updates)
if update_count > 0:
    if update_count == 1:
      info = str(update_count) + ' update available'
      short_info = str(update_count) + ' update'
    else:
      info = str(update_count) + ' updates available'
      short_info = str(update_count) + ' updates'

    matches = matching_updates(updates, args.watch)
    if matches:
        info += ' [{0}]'.format(', '.join(matches))
        short_info += '*'
    print(message.format(label, args.updates_available_color, info))
    print(message.format(label, args.updates_available_color, short_info))
elif not args.quiet:
    print(message.format(label, args.base_color, 'system up to date'))

保存更改并从文本编辑器中退出。

现在,使用以下命令将此文件设置为可执行:

sudo chmod +x ~/.config/scripts/arch-update

接下来,打开 i3blocks 配置文件:

nano ~/.config/i3blocks/i3blocks.conf

并将以下内容粘贴到所需的位置:

[arch-update]
command=/home/$USER/.config/scripts/arch-update
interval=3600
markup=pango
LABEL=

保存更改并重新加载 i3 窗口管理器,它将显示需要更新的软件包数量。

如果你正在使用 Ubuntu,你可以 按照 GitHub 页面上的说明 进行操作。

添加音量指示块

添加音量指示块需要一些努力,因为你希望它的行为符合预期。你需要实现以下功能:

  • 使用媒体控制键管理音量的键绑定
  • 添加一个指示音量的音量块

但要做到这一点,首先你需要安装一些依赖项。

如果你使用的是 Arch Linux,请使用以下命令:

sudo pacman -S pulseaudio-alsa pulseaudio-bluetooth pulseaudio-equalizer pulseaudio-jack alsa-utils playerctl

如果你使用的是 Ubuntu/Debian 系统,请使用以下命令:

sudo apt install pulseaudio-module-bluetooth pulseaudio-equalizer pulseaudio-module-jack alsa-utils playerctl

接下来,让我们看看如何在 i3 窗口管理器中启用媒体控制键。

首先,打开 i3 配置文件:

nano ~/.config/i3/config

转到文件的末尾,并粘贴以下内容:

# Key bindings for Media control keys
bindsym XF86AudioPlay exec playerctl play
bindsym XF86AudioPause exec playerctl pause
bindsym XF86AudioNext exec playerctl next
bindsym XF86AudioPrev exec playerctl previous

现在,让我们为此块创建一个新文件:

nano ~/.config/scripts/volume

然后粘贴以下内容:

#!/usr/bin/env bash
if [[ -z "$MIXER" ]] ; then
    MIXER="default"
    if command -v pulseaudio >/dev/null 2>&1 && pulseaudio --check ; then
        # pulseaudio is running, but not all installations use "pulse"
        if amixer -D pulse info >/dev/null 2>&1 ; then
            MIXER="pulse"
        fi
    fi
    [ -n "$(lsmod | grep jack)" ] && MIXER="jackplug"
    MIXER="${2:-$MIXER}"
fi
if [[ -z "$SCONTROL" ]] ; then
    SCONTROL="${BLOCK_INSTANCE:-$(amixer -D $MIXER scontrols |
                      sed -n "s/Simple mixer control '\([^']*\)',0/\1/p" |
                      head -n1
                    )}"
fi

# The first parameter sets the step to change the volume by (and units to display)
# This may be in in % or dB (eg. 5% or 3dB)
if [[ -z "$STEP" ]] ; then
    STEP="${1:-5%}"
fi

NATURAL_MAPPING=${NATURAL_MAPPING:-0}
if [[ "$NATURAL_MAPPING" != "0" ]] ; then
    AMIXER_PARAMS="-M"
fi

#------------------------------------------------------------------------

capability() { # Return "Capture" if the device is a capture device
  amixer $AMIXER_PARAMS -D $MIXER get $SCONTROL |
    sed -n "s/  Capabilities:.*cvolume.*/Capture/p"
}

volume() {
  amixer $AMIXER_PARAMS -D $MIXER get $SCONTROL $(capability)
}

保存更改并退出配置文件。

接下来,打开 I3blocks 配置文件:

nano ~/.config/i3blocks/i3blocks.conf

然后粘贴以下内容:

[volume]
command=/home/$USER/.config/scripts/volume
LABEL=♪
#LABEL=VOL 
interval=1
signal=10
#STEP=5%
MIXER=default
#SCONTROL=[determined automatically]
#NATURAL_MAPPING=0

保存更改并重新加载 i3,从现在开始,音量快捷键将起作用,并且指示器将按预期工作!

? 如果遇到音频/视频不工作等问题,请使用此命令,它应该解决该问题:
systemctl --user disable --now pipewire.{socket,service} && systemctl --user mask pipewire.socket

添加 Spotify 块

我将使用 firatakandere 的脚本来添加此功能。在继续之前,你可以先查看一下该脚本。

首先,创建并打开一个用于 Spotify 块的新文件:

nano ~/.config/scripts/spotify.py

然后粘贴以下内容:

#!/usr/bin/python

import dbus
import os
import sys


try:
    bus = dbus.SessionBus()
    spotify = bus.get_object("org.mpris.MediaPlayer2.spotify", "/org/mpris/MediaPlayer2")


    if os.environ.get('BLOCK_BUTTON'):
        control_iface = dbus.Interface(spotify, 'org.mpris.MediaPlayer2.Player')
        if (os.environ['BLOCK_BUTTON'] == '1'):
            control_iface.Previous()
        elif (os.environ['BLOCK_BUTTON'] == '2'):
            control_iface.PlayPause()
        elif (os.environ['BLOCK_BUTTON'] == '3'):
            control_iface.Next()

    spotify_iface = dbus.Interface(spotify, 'org.freedesktop.DBus.Properties')
    props = spotify_iface.Get('org.mpris.MediaPlayer2.Player', 'Metadata')

    if (sys.version_info > (3, 0)):
        print(str(props['xesam:artist'][0]) + " - " + str(props['xesam:title']))
    else:
        print(props['xesam:artist'][0] + " - " + props['xesam:title']).encode('utf-8')
    exit
except dbus.exceptions.DBusException:
    exit

完成后,使用以下命令使其可执行:

sudo chmod +x ~/.config/scripts/spotify.py

现在,打开 I3blocks 配置文件:

nano ~/.config/i3blocks/i3blocks.conf

然后粘贴以下内容(建议将其粘贴到块的开头):

[spotify]
label=
command=/home/$USER/.config/scripts/spotify.py
color=#81b71a
interval=5

保存更改,退出配置文件,并重新启动 i3。

添加了我提到的块后,状态栏将如下所示:

在 i3 窗口管理器中定制 i3blocks

你可以查看我的主屏幕,其中包含这些块(点击下方的图片查看)。

在 i3 窗口管理器中定制 i3blocks

? 如果你对那些默认块(文档和问候语)的位置感到困惑,我用了几个注释将它们禁用以实现所示的外观!

在 Linux 中使用 i3gaps

如果你想在窗口之间添加间隙,可以使用 i3gaps。在颜色方案之后,i3gaps 是这个指南中最关键的元素。

要使用间隙,你必须对 i3 配置文件进行一些更改。

打开 i3 配置文件:

nano ~/.config/i3/config

转到文件的末尾,并粘贴以下内容:

# default gaps
gaps inner 15
gaps outer 5

# gaps
set $mode_gaps Gaps: (o)uter, (i)nner, (h)orizontal, (v)ertical, (t)op, (r)ight, (b)ottom, (l)eft
set $mode_gaps_outer Outer Gaps: +|-|0 (local), Shift + +|-|0 (global)
set $mode_gaps_inner Inner Gaps: +|-|0 (local), Shift + +|-|0 (global)
set $mode_gaps_horiz Horizontal Gaps: +|-|0 (local), Shift + +|-|0 (global)
set $mode_gaps_verti Vertical Gaps: +|-|0 (local), Shift + +|-|0 (global)
set $mode_gaps_top Top Gaps: +|-|0 (local), Shift + +|-|0 (global)
set $mode_gaps_right Right Gaps: +|-|0 (local), Shift + +|-|0 (global)
set $mode_gaps_bottom Bottom Gaps: +|-|0 (local), Shift + +|-|0 (global)
set $mode_gaps_left Left Gaps: +|-|0 (local), Shift + +|-|0 (global)
bindsym $mod+Shift+g mode "$mode_gaps"

mode "$mode_gaps" {
        bindsym o      mode "$mode_gaps_outer"
        bindsym i      mode "$mode_gaps_inner"
        bindsym h      mode "$mode_gaps_horiz"
        bindsym v      mode "$mode_gaps_verti"
        bindsym t      mode "$mode_gaps_top"
        bindsym r      mode "$mode_gaps_right"
        bindsym b      mode "$mode_gaps_bottom"
        bindsym l      mode "$mode_gaps_left"
        bindsym Return mode "$mode_gaps"
        bindsym Escape mode "default"
}

mode "$mode_gaps_outer" {
        bindsym plus  gaps outer current plus 5
        bindsym minus gaps outer current minus 5
        bindsym 0     gaps outer current set 0

        bindsym Shift+plus  gaps outer all plus 5
        bindsym Shift+minus gaps outer all minus 5
        bindsym Shift+0     gaps outer all set 0

        bindsym Return mode "$mode_gaps"
        bindsym Escape mode "default"
}
mode "$mode_gaps_inner" {
        bindsym plus  gaps inner current plus 5
        bindsym minus gaps inner current minus 5
        bindsym 0     gaps inner current set 0

        bindsym Shift+plus  gaps inner all plus 5
        bindsym Shift+minus gaps inner all minus 5
        bindsym Shift+0     gaps inner all set 0

        bindsym Return mode "$mode_gaps"
        bindsym Escape mode "default"
}
mode "$mode_gaps_horiz" {
        bindsym plus  gaps horizontal current plus 5
        bindsym minus gaps horizontal current minus 5
        bindsym 0     gaps horizontal current set 0

        bindsym Shift+plus  gaps horizontal all plus 5
        bindsym Shift+minus gaps horizontal all minus 5
        bindsym Shift+0     gaps horizontal all set 0

        bindsym Return mode "$mode_gaps"
        bindsym Escape mode "default"
}
mode "$mode_gaps_verti" {
        bindsym plus  gaps vertical current plus 5
        bindsym minus gaps vertical current minus 5
        bindsym 0     gaps vertical current set 0

        bindsym Shift+plus  gaps vertical all plus 5
        bindsym Shift+minus gaps vertical all minus 5
        bindsym Shift+0     gaps vertical all set 0

        bindsym Return mode "$mode_gaps"
        bindsym Escape mode "default"
}
mode "$mode_gaps_top" {
        bindsym plus  gaps top current plus 5
        bindsym minus gaps top current minus 5
        bindsym 0     gaps top current set 0

        bindsym Shift+plus  gaps top all plus 5
        bindsym Shift+minus gaps top all minus 5
        bindsym Shift+0     gaps top all set 0

        bindsym Return mode "$mode_gaps"
        bindsym Escape mode "default"
}
mode "$mode_gaps_right" {
        bindsym plus  gaps right current plus 5
        bindsym minus gaps right current minus 5
        bindsym 0     gaps right current set 0

        bindsym Shift+plus  gaps right all plus 5
        bindsym Shift+minus gaps right all minus 5
        bindsym Shift+0     gaps right all set 0

        bindsym Return mode "$mode_gaps"
        bindsym Escape mode "default"
}
mode "$mode_gaps_bottom" {
        bindsym plus  gaps bottom current plus 5
        bindsym minus gaps bottom current minus 5
        bindsym 0     gaps bottom current set 0

        bindsym Shift+plus  gaps bottom all plus 5
        bindsym Shift+minus gaps bottom all minus 5
        bindsym Shift+0     gaps bottom all set 0

        bindsym Return mode "$mode_gaps"
        bindsym Escape mode "default"
}
mode "$mode_gaps_left" {
        bindsym plus  gaps left current plus 5
        bindsym minus gaps left current minus 5
        bindsym 0     gaps left current set 0

        bindsym Shift+plus  gaps left all plus 5
        bindsym Shift+minus gaps left all minus 5
        bindsym Shift+0     gaps left all set 0

        bindsym Return mode "$mode_gaps"
        bindsym Escape mode "default"
}

保存更改并退出配置文件。

使用 Mod + Shift + r 重新加载 i3,并会看到窗口之间的间隙:

在 i3 窗口管理器中使用 i3gaps

但是,如果你想调整间隙的大小怎么办?这非常简单,只需要简单的步骤即可完成:

  • 按下 Mod + Shift + g 进入间隙模式
  • 使用给定的选项选择要更改的内容
  • 使用 +- 增加/减小间隙
  • 完成后,按 Esc 键退出间隙模式

就是这样!

我们忘记自定义终端了吗?

不用担心;你可以 切换到 Zsh,这是一个不同的 shell,使终端看起来与众不同,或者探索一些鲜为人知的 Linux Shell

无论如何,你都可以 自定义现有终端,或选择不同的 终端模拟器

我希望你不再畏难如何美化系统! ?

如果你有任何建议或想展示你的配置,请在评论部分留言。

(题图:MJ/2874542d-6a8f-4b27-8e65-477389a0dcca)


via: https://itsfoss.com/i3-customization/

作者:Sagar Sharma 选题:lkxed 译者:ChatGPT 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

如果你正在找寻适合你的系统的完美发行版,那么选择基于 Ubuntu 的发行版的可能性非常高。

你可能会问为什么。

嗯,毫不奇怪,Ubuntu 是 最适合初学者的 Linux 发行版之一。它也非常流行,这就是为什么你会发现它拥有庞大的用户社区。不仅如此,它还广泛用于 云服务器 上。

因此,将 Ubuntu 作为 Linux 发行版的基础应该带来一些有用的优势,对吧?

这就是为什么我列出了基于 Ubuntu 的最佳发行版清单,希望你能找到一款足够出色,让你停止频繁更换发行版的选择。

1、Ubuntu 官方衍生版

budgie desktop screenshot 2022

如果你不喜欢 Ubuntu 官方提供的 GNOME 桌面环境,你可以尝试官方衍生版,它们在 Ubuntu 的基础上提供了不同的桌面环境。

简单来说,你将得到同样的 Ubuntu 使用体验,但拥有不同的用户界面。

为了让你的用户体验更加愉快,这些桌面环境已经进行了预调整和主题设置,这使它们成为了那些希望拿来即用的完美选择。

以下是可用的选项:

  • Kubuntu(KDE Plasma)
  • Lubuntu(最节约资源的选择,使用 LXDE/LXQT)
  • Ubuntu Studio(面向创作者的发行版)
  • Ubuntu Budgie(Budgie 桌面环境)
  • Ubuntu Kylin(专为中国用户定制)
  • Ubuntu MATE(使用 MATE 桌面和工具)
  • Xubuntu(Xfce 桌面)

此外,你还可以在 Ubuntu 22.10 中发现一个带有经典 Unity 桌面环境的新的官方衍生版,因为 Ubuntu Unity Remix 现已成为官方 Ubuntu 衍生版

解析:我应该使用哪个 Ubuntu 版本?
Ubuntu 衍生版

2、Linux Mint

linux mint 21 home

Linux Mint 的主要特点:

  • 默认不使用 Snap。
  • 使用 Cinnamon 桌面环境,提供直观、易用的体验。
  • 精美的用户界面。
  • 对于 Windows 用户而言,具有熟悉的操作体验。
  • 管理编解码器和硬件驱动程序非常方便。

如果我要用一句话来描述 Linux Mint,那就是 “简洁优雅的用户体验,足够满足高级用户的需求”。

通过 Linux Mint 的 Cinnamon 桌面环境,你可以期待到一个精心打磨和定制的体验。现在由 Linux Mint 团队开发的 Timeshift 之类的工具,可以让你享受无缝的使用体验。

Linux Mint 包括了基本必备的应用软件,包括办公套件和满足多媒体消费需求的应用程序,非常适合初学者使用。

Linux Mint

3、Pop!\_OS

pop os screenshot 2022

Pop!\_OS 的主要特点:

  • 开箱即用的英伟达显卡支持。
  • COSMIC 桌面(定制的 GNOME 使用体验)。
  • 提供窗口管理器的基本功能。
  • 一个用于从灾难中恢复系统的恢复分区。

由受欢迎的开源硬件制造商 System76 开发,Pop!\_OS 22.04 LTS 是我目前的主力操作系统,而背后有着充分的理由。

Pop!\_OS 定期更新 Linux 内核包,在本文撰写时运行 Linux 内核 5.19。是的,我知道你可以 轻松升级到最新的内核,但官方支持更为便捷,这正是 Pop!\_OS 作为基于 Ubuntu 的发行版的优势所在。

除了最新的内核外,你还将得到一个美观的 COSMIC 桌面,以及一些预安装的应用程序,如用于方便地安装 deb 包的 Eddy,还默认应用磁盘加密以及许多其他功能,让你获得愉快的体验!

Pop!\_OS

4、KDE Neon

kde neon screenshot 2022

KDE Neon 的主要特点:

  • 基于 Ubuntu 平台,提供最原生的 KDE 使用体验。
  • 提供最新版本的 KDE Plasma。

除非你追求最新的 KDE 体验,否则 KDE Neon 可能不适合你。换句话说,它并非旨在作为日常使用的操作系统,而是旨在提供最前沿的 KDE 体验。

如果你想体验 KDE 的最新功能,KDE Neon 仍然是最佳的基于 Ubuntu 的发行版之一。

还有很多其他基于 KDE Plasma 的发行版;如果你不是非要追求最新的体验,那么 Kubuntu 是你最好的选择。

此外,KDE Neon 仅预装了最基本的工具,以让用户有足够的空间可以自行决定在特定任务中使用什么工具。

KDE Neon

5、elementaryOS

elementaryos screenshot 2022

elementaryOS 的主要特点:

  • 使用 Pantheon,最优雅的桌面环境之一。
  • 支持画中画模式。
  • 专门定制的应用中心。

所以,如果你是 macOS 的粉丝,又想体验 Linux,elementaryOS 绝对不会让你失望。

开发者专门为 elementaryOS 开发了 Pantheon 桌面环境,你会注意到它在每个方面都非常注重细节,无论是暗色模式还是强调色彩。你将会在 elementary OS 中获得出色的用户体验。

与其他 Ubuntu 发行版相比,elementaryOS 的发布周期可能不太频繁。但他们在每个版本中都致力于提供稳定的使用体验。

elementaryOS

6、Zorin OS

zorin os home screenshot

Zorin OS 的主要特点:

  • 提供类似于 Windows 和 macOS 的不同布局。
  • 能够在不需要任何调整的情况下安装 Windows 软件。
  • Zorin OS 的精简版可以让十多年前的计算机重焕生机。

Zorin OS 是另一个基于 Ubuntu 的发行版,为用户提供了精心打磨的体验。其壁纸、用户界面调整和其他改进使 Linux 看起来令人惊艳。

你可以使用其工具 Zorin Connect 无缝集成你的移动设备和计算机,这样你就可以传输文件、控制音频播放,甚至使用移动设备作为触控板!

Zorin OS

7、Linux Lite

linux lite

Linux Lite 的主要特点:

  • 极为轻量级。
  • 使用 Xfce 和 LTS 版本的 Ubuntu,提供稳定的使用体验。
  • 易于使用。

所以,如果你正在寻找一个开箱即用的轻量级发行版,那么 Linux Lite 就是为像你这样的用户而设计的。它是最好的(也是最简单的)类似于 Windows 的 Linux 发行版 之一。

稳定性是 Linux Lite 的另一个核心特点,这也解释了为什么它使用 Xfce 作为其桌面环境。

Linux Lite

8、Voyager

voyager linux

Voyager 的主要特点:

  • 用户可以在其二合一版本中在 GNOME 和 Xfce 会话之间切换。
  • 预先配置了图形用户界面元素和插件,以提供愉快的使用体验。

Voyager 是一个基于 Xubuntu 的 Linux 发行版,在其最新的 22.04 LTS explorer 版本中提供了 GNOME 和 Xfce。

这个发行版从一开始就提供了用户选择。如果你喜欢人体工程学,可以启动 GNOME 会话;或者选择 Xfce 以获得更简单和更快的体验。

Voyager 提供了一个定制外观,带给用户古老而有格调的 Linux 使用体验。

我会向喜欢在不同环境之间切换、寻找定制化体验和稳定性的人推荐使用。

Voyager

9、Feren OS

feren os screenshot 2022

Feren OS 的主要特点:

  • 提供一个开箱即用的最小化配置且经过精调的 KDE 使用体验。
  • 定制化,但对系统资源占用较低。
  • 带有预调优的网络浏览器管理器,以获取更好的体验。

我已经提到了 Zorin OS 如何提供预配置的布局以适应你自己,但它是基于 GNOME 的。那么如果你是 KDE 的粉丝呢?那么 Feren OS 就是为你而设计的!

除了提供预配置的 KDE 使用体验外,Feren OS 的内存占用也令人信服,我给任何想要开始使用基于 KDE Plasma 桌面的 Ubuntu 发行版的人强烈推荐 Feren OS。

Feren OS

10、LXLE

lxle screenshot 2022

LXLE 的主要特点:

  • 极其轻量级。
  • 几乎整个系统都保持了主题的一致性。

LXLE 是基于 Lubuntu 的,因此你可以想象到它的内存占用会很轻。它是最好的 轻量级 Linux 发行版之一

因此,如果要用一个词来概括整个发行版,那就是“高效”。但这还不止。你还可以获得大量的自定义选项和预安装的壁纸集以适配外观。

当我在虚拟机中使用它时,我对系统的轻盈程度感到惊讶(空闲时使用 360Mb 的内存)。对于新的 Linux 用户来说,可能不是一个舒适的体验,但如果你不介意经典的用户界面和各种新东西,那么值得一试。

LXLE

11、UbuntuDDE Remix

ubuntudde remix

UbuntuDDE Remix 的主要特点:

  • 深度桌面环境
  • 美观的用户界面

你喜欢基于 Debian 的深度 Linux 发行版吗?但是,你对尝试它没有兴趣吗?

嗯,在这种情况下,你可以尝试一下 UbuntuDDE Remix。它虽然不是官方的版本,但是它与基于 Ubuntu 的系统配合得非常好。

与深度 Linux 不同,它并非主要为中国用户定制的。因此,你会发现语言设置和软件源设置比深度 Linux 更好。

UbuntuDDE Remix

你理想的基于 Ubuntu 的发行版

Ubuntu 仍然是为新手和高级用户提供易于使用的体验的首选。

有时候我们只想完成任务,而不需要定制或控制发行版的任何方面。在这种情况下,基于 Ubuntu 的发行版可以节省你的时间,并根据你的偏好提供很多选项。

如果你必须使用上述提到的发行版中的一个,你会选择哪个?请在评论中分享 ?

(题图:MJ/541cb931-34af-4926-b713-6193bdd63095)


via: https://itsfoss.com/best-ubuntu-based-linux-distros/

作者:Sagar Sharma 选题:lkxed 译者:ChatGPT 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

pipx 解决了流行的 pip 工具的不足之处。学习在 Linux 中安装和使用 pipx

pip 是一种流行的工具,用于从 Python 包索引 中安装 Python 包和模块。

然而,在最近的发行版本中,pip 用户遇到了 外部管理环境错误

error: externally-managed-environment

这是为避免通过 pip 安装的 Python 包与本机包管理器之间发生冲突而添加的“功能”。Python 希望你使用单独的虚拟环境,而不是通过 pip 在全局安装包。

这就是 pipx 发挥作用的地方。它为你安装的每个应用创建一个新的虚拟环境,然后在全局级别的 /bin 中创建到本地二进制文件的链接。这一切都是自动的。它为你节省时间和精力。

让我们看看如何在 Ubuntu 和其他 Linux 发行版上安装和使用 pipx

在 Ubuntu 和其他 Linux 上安装 pipx

安装很简单,可以在 Ubuntu 和 Debian 上使用以下命令安装:

sudo apt update && sudo apt install pipx

对于其他发行版,请使用你的包管理器并安装它。

完成安装后,将其添加到 $PATH 以便可以从任何地方访问它:

pipx ensurepath

install pipx in ubuntu

关闭终端并重新启动它。这就完成了! 现在,让我们看看如何使用它。

使用 pipx

包管理器的主要用途是什么? 软件包安装、更新和删除。

让我向你展示如何使用 pipx 执行以下操作:

  • 搜索包
  • 包安装
  • 升级
  • 包移除

让我们从安装开始。

如何使用 pipx 安装包

要使用 pipx 安装包,你必须遵循一个简单的命令语法:

pipx install <package_name>

例如,在这里,我安装了一个非常有用的程序 Cowsay:

pipx install cowsay

install python packages in isolation using pipx in ubuntu

同样,如果你想安装特定版本的包,你必须在 == 后跟上版本号,如下所示:

pipx install package==version

例如,在这里,我安装了 1.24.1 版本的 numpy:

pipx install numpy==1.24.1

如何搜索包

pipx 程序没有搜索功能(因为 PyPI 的 API 使用限制)但这并不意味着你不能搜索 Python 包。

要搜索包,你需要安装 pypisearch

pipx install pypisearch

完成后,你可以使用 pypisearch 命令搜索包:

pypisearch python_package_name

在这里,我搜索了 neofetch:

search python packages in Ubuntu

如何使用 pipx 升级包

与任何其他现代包管理器一样,你可以一次升级所有包,也可以一次升级一个包。

要一次升级所有软件包,你只需执行以下命令:

pipx upgrade-all

upgrade all the python packages at once in ubuntu

如你所见,它将 numpy 升级到最新版本。

但是如果你想升级一个特定的包,你可以这样做:

pipx upgrade package-name

假设我想将 cowsay 包升级到最新版本,那么,我将使用以下命令:

pipx upgrade cowsay

upgrade specific python package using pipx in ubuntu

如何使用 pipx 卸载包

要删除包,你必须使用 uninstall 标志,如下所示:

pipx uninstall package_name

为了供你参考,在这里,我从我的系统中删除了 numpy

pipx uninstall numpy

remove python packages using pipx in ubuntu

pip 还是 pipx?

pip 的限制影响了最终用户对它的使用。值得庆幸的是,pipx 提供了急需的替代方案。它符合使用虚拟环境的 Python 准则,同时允许已安装的应用在全局范围内可用。

对于不是 Python 应用开发的最终用户,这提供了使用发行版仓库中不可用的 Python 应用的选项。

希望本教程对你有所帮助。如果你有任何问题或建议,请告诉我。

(题图:MJ/fc6190e2-a412-443e-a83c-91fce1dcf695)


via: https://itsfoss.com/install-pipx-ubuntu/

作者:Sagar Sharma 选题:lkxed 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

压力测试 CPU 是检查处理器在重负载下性能表现以及系统在此情况下的温度的最佳方法之一。

当你压力测试 CPU 时,可以监视系统资源,观察它们在最高工作负载下的表现。虽然性能不会改变,但如果处理器不具备良好散热能力,温度可能会影响其运作。

对于发烧友来说,压力测试是建造新系统时必不可少的,特别是如果你打算以后超频 CPU。

例如,在压力测试过程中,如果你的 CPU 很快变得太热,你需要通过更换 CPU 风扇、使用更好的通风机箱等方式来改进散热解决方案。

现在你已经了解到压力测试的好处,接下来我将为你介绍在 Linux 中压力测试 CPU 的以下两种方法:

  • 使用 GtkStressTesting(图形界面方式)
  • 使用 stress 和 s-tui 实用程序(命令行方式)

接下来,让我们从第一种方法开始。

使用图形界面方法压力测试 Linux CPU ?️

如果你更喜欢使用图形界面方法,而不是通过终端操作,我有一个最简单的方法来帮助你进行系统压力测试。

有一个名为 GtkStressTesting 的图形界面实用工具,可以帮助你进行压力测试和同时监视温度。它提供了多种预设来进行系统压力测试,并提供了选择在测试期间需要使用多少个内核的功能。

? 该工具在 GitLab 上已不再积极维护。但是它仍能按预期工作。

GtkStressTesting 可以作为 Flatpak 安装,因此如果你尚未启用 Flatpak 支持,请参考我们的 Flatpak 安装指南

一旦你启用了 Flatpak 支持,可以通过终端(如果没有软件中心)使用以下命令来安装 GtkStressTesting 实用工具:

flatpak install flathub com.leinardi.gst

安装完成后,你可以从系统菜单中启动 GtkStressTesting 实用工具。

在这里,我建议你点击“ 读取全部 Read all ”按钮,并输入 sudo 密码,以便工具可以获取你系统的全部信息:

授予 GtkStressTesting 读取所有的权限

从这里,你可以选择压力测试系统的时间(如果温度过高,随时可以停止进程),并在“ 工作线程:自动 Workers: Auto ”下拉菜单中选择可用的的最大数量。

我选择了 12 核心和 5 分钟的压力测试

选择 Linux 中 CPU 压力测试的时间和核心数

完成后,单击“ 开始 Start ”按钮,监视温度,如果超过 90 度,请停止压力测试。

在我的系统上,压力测试过程中最高温度为 85 度:

使用图形界面压力测试 Linux CPU

这是一种非常简便的压力测试 CPU 的方法,是不是很简单呢? ?

使用命令行终端压力测试 Linux CPU

使用 s-tui 命令行实用程序进行压力测试

使用命令行终端压力测试需要两个实用工具:s-tuistress

你可以从默认软件仓库或 使用 pip 来安装这些工具。如果你可以接受使用旧版本的工具,使用默认软件仓库更容易。

以下是适用于流行 Linux 发行版的安装命令:

基于 Ubuntu/Debian 的发行版:

sudo apt install s-tui stress

Arch Linux:

sudo pacman -S s-tui stress

Fedora/RHEL:

sudo dnf install s-tui stress

如果想要使用 pip 安装最新版本,可以使用以下命令:

pip install s-tui --user

安装完成后,在终端中启动 s-tui 实用工具:

s-tui

你将会看到以下内容:

在 Linux 中监控 CPU 的时钟速度、负荷和利用率

你可以使用鼠标或键盘箭头键浏览菜单,然后点击“ 压力选项 Stress options ”,选择你想要压力测试系统的时间(以“秒”为单位):

设置 Linux 中 CPU 压力测试的时间长度

最后,选择“ 压力 Stress ”选项,它会在指定时间内开始压力测试:

使用终端压力测试 Linux 中的 CPU

如果温度失控,你可以点击“ 退出 Quit ”按钮手动停止压力测试。另外,如果你想要将数据存储在 .csv 格式中,该工具也提供了相应的功能。

要存储数据,你只需要在启动 s-tui 实用工具时附加 -c 标记,如下所示:

s-tui -c

如果你想用自己喜欢的名称保存文件,则必须使用 --csv-file 标记,如下所示:

s-tui --csv-file <file 名称>.csv

例如,这里我将文件命名为 Hello.scv

s-tui --csv-file Hello.scv

你可以在它的 GitHub 页面 上了解更多关于这个工具的信息。

系统快乐,人生快乐 ?

并非每个用户都意识到进行压力测试的好处。有时候它会让他们感到害怕,认为系统无缘无故地达到其极限。

但是,测试将帮助你快速评估和监视系统的状况。例如,温度异常上升和 CPU 无法处理现有负载等问题,可以帮助你及早识别硬件问题。

在任何情况下,如果你想在不进行压力测试的情况下 保持 CPU 温度正常,可以参考我们提供的温度监控资源。

你还可以查看一些 Linux 的 系统监控工具htop 的替代品,以监控系统资源的使用情况。

? 你对于在 Linux 中压力测试 CPU 有什么看法?你认为我们应该这样做吗?请在评论区分享你的想法。

(题图:MJ/e5f3fc49-5e47-4f8a-8970-43a445849172)


via: https://itsfoss.com/stress-test-cpu-linux/

作者:Sagar Sharma 选题:lkxed 译者:ChatGPT 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

学习如何在 Ubuntu 中正确安装 Qemu,然后在虚拟机中配置 Linux 发行版。

如果你需要运行 Linux 虚拟机,Qemu 是目前最快的管理程序之一,甚至没有“之一”。

除了速度之外,你还可以获得出色的配置选项。即使你不是一个资深用户,它也给你足够的调整空间。

在本教程中,我将引导你完成:

  • 在 Ubuntu 上安装 Qemu 和 KVM
  • 在 Qemu 上安装另一个发行版
  • 在 Qemu 中启用共享文件夹、自动调整大小和复制粘贴(可选,但会使你的虚拟机体验更顺畅)。

那么让我们从安装开始吧。

在 Ubuntu 上安装 Qemu 和 KVM

✋ 在开始安装之前,让我们检查一下你的机器是否支持虚拟化。

要做到这一点,请使用以下命令:

LC_ALL=C lscpu | grep Virtualization

如果你有一个英特尔处理器,它应该带来以下输出:

检查该计算机是否支持基于硬件的虚拟化

如果你有一个 AMD 处理器,它应该得到以下输出:

Virtualization:                  AMD-V

另外,确保你的系统有多个处理器核心,这样你可以分配一些给你的虚拟机,并且仍然有足够的处理能力提供给宿主机。

如果你不确定,使用下面的命令,输出应该大于零

egrep -c '(vmx|svm)' /proc/cpuinfo

检查 Linux 中系统的核心总数和线程数

一旦你都准备好了,你就可以用以下命令在 Ubuntu 上安装 Qemu 和 KVM:

sudo apt install qemu qemu-kvm virt-manager bridge-utils

安装结束后,重新启动你的系统

将用户添加到适当的组中

为了使 Qemu 工作,你必须 将你的用户加入两个组libvirt-kvmlibvirt

要做到这一点,请逐一使用以下命令:

sudo useradd -g $USER libvirt
sudo useradd -g $USER libvirt-kvm

接下来,启用并启动 libvirt 服务:

sudo systemctl enable libvirtd.service && sudo systemctl start libvirtd.service

这就行了!Qemu 的安装已经完成。

用 Qemu 安装另一个 Linux 虚拟机

? 请下载你想在 Qemu 虚拟机中安装的 Linux 发行版的 ISO 文件。

首先,从系统菜单中打开 虚拟机管理器 Virtual Machine Manager

从系统菜单中启动 Qemu

接下来,点击 “ 文件 File ” 菜单,选择 “ 新建虚拟机 New Virtual Machine ” 选项:

在 Qemu 中创建新的虚拟机

从这里,选择第一个选项 “ 本地安装介质 Local install media ”,这将允许你从文件管理器中选择 ISO:

选择本地 ISO 文件以在 Qemu 中创建新的虚拟机

接下来,你将被要求添加 ISO 文件。在这里,点击 “ 浏览 Browse ” 按钮;它将打开一个新的提示窗口,在那里,点击 “ 浏览本地 Browse Local ”。

它将打开文件管理器,从那里选择 ISO 文件:

在 Qemu 中导入 ISO 文件

在大多数情况下,ISO 文件会被检测到,但如果你发现它没有自动检测到,请按照以下步骤操作:

  • 取消勾选 “ 自动从安装介质/源检测 Automatically detect from the installtion media / source ” 选项
  • 选择 “ 常见的 Linux Generic Linux ” 选项

解决 Qemu 中未检测到 ISO 的问题

接下来,你将被要求根据你的需要分配内存和存储。我建议桌面版至少要有 2 个核心、4GB 内存和 25GB 的存储空间:

在 Qemu 中为虚拟机分配内存、内核和存储空间

? 除了磁盘空间,CPU 和内存等系统资源只在 VM 中运行操作系统时使用。

最后,给你的虚拟机起一个合适的名字;完成后,点击 “ 完成 Finish ” 按钮:

在 Qemu 中命名你的虚拟机

它将加载 ISO,所以你可以从这里开始安装。

这就完成了。你可能会觉得这已经很不错了,但如果你启用共享文件夹、剪贴板共享等,你会更喜欢它。下面的几节将介绍如何做到这一点。

在 Qemu 中启用共享文件夹(可选)

在本节中,我将向你展示如何将宿主机的现有目录与虚拟机共享。

要做到这一点,你必须执行以下步骤:

  • 通过 Qemu 中的虚拟机设置添加一个共享文件系统
  • 在虚拟机中挂载文件系统

因此,首先从系统菜单中打开虚拟机管理器,选择虚拟机,并点击 “ 打开 Open ” 按钮来管理控制台:

打开 Qemu 中虚拟机的设置

现在,点击 “ 信息 Info ” 按钮,选择 “ 内存 Memory ” 并启用共享内存:

在 Qemu 中启用共享内存

接下来,点击 “ 添加硬件 Add Hardware ” 按钮,选择 “ 文件系统 Filesystem ” 选项。

在这里,你必须做以下工作:

  • 在 “ 源路径 Source Path ” 部分添加一个你想共享的目录的路径
  • 在 “ 目标路径 Target Path ” 部分添加该目录的名称

在 Qemu 中创建共享文件夹

完成后,点击 “ 完成 Finish ” 按钮,启动虚拟机。

在虚拟机中,打开终端,使用下面的语法来挂载共享目录:

sudo mount -t virtiofs sharename path/to/shared/directory

在我的例子中,它是 Downloads 目录,所以我将使用下面的方式:

sudo mount -t virtiofs Downloads /home/sagar/Downloads

在 Qemu 中挂载共享文件夹

这就行了。

但这是一个临时的解决方案。

要使它成为永久性的,你必须在虚拟机的 /etc/fstab 中创建一个条目。

要这样做,首先,用下面的方法打开 /etc/fstab 配置文件:

sudo nano /etc/fstab

按下Alt + /在 nano 文本编辑器中转到文件的末尾 ,并使用以下语法创建一个条目:

sharename path/to/shared/directory virtiofs defaults 0 0

这是我的配置,看起来像这样:

使 Qemu 中的共享文件夹永久化

一旦完成,保存更改并退出 nano 文本编辑器。

这里我展示了我是如何在主机上的 Downloads 目录下创建一个新文件,并且这些变化反映在我的虚拟机上:

在 Qemu 中使用共享文件夹

因此,现在你可以使用这个共享文件夹在主机和虚拟机之间传输文件,没有任何问题了!

在 Qemu 中启用共享剪贴板(可选)

要启用共享剪贴板,你所要做的就是在虚拟机中安装 spice-vdagent 工具。

因此,如果你的虚拟机是基于 Ubuntu/Debian 的,你可以使用以下方法:

sudo apt install spice-vdagent

对于基于 Arch 的发行版:

sudo pacman -S spice-vdagent

对于基于 Fedora 的发行版:

sudo yum install spice-vdagent

一旦你完成了安装,重启你的虚拟机,剪贴板应该可以如期工作了。

在 Qemu 中启用自动调整大小(可选)

自动调整大小的功能没什么,但当你调整虚拟机窗口的大小时,虚拟机的显示会立即适应大小的变化:

Qemu 中的自动调整大小

要启用 Qemu 中的自动调整大小功能,你必须遵循 2 个简单的步骤:

  • 点击 “ 视图 View ”(从顶部菜单栏)。
  • 选择 “ 缩放显示 Scale Display ” 并选择 “ 总是 Always ” 选项。

这就是我这边看到的情况了。

想要使用 Qemu 的即插即用版本?

在本教程中,我介绍了如何在 Qemu 中手动安装虚拟机,但如果我告诉你,你可以自动完成整个过程,如分配存储空间、内存等步骤呢?

是的,它提供了同样的效率,但当你想尽快创建一个新的虚拟机时,它就会派上用场!这个工具叫 Quickgui,我们有一个专门的安装教程:

用基于 Qemu 的 Quickgui 轻松地创建虚拟机

我希望你会发现这个指南对你有帮助。如果你有任何疑问,欢迎在评论中提问。

(题图:MJ/b3c4d5b2-e727-4b70-9bb8-e864941eef9a)


via: https://itsfoss.com/qemu-ubuntu/

作者:Sagar Sharma 选题:lkxed 译者:wxy 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出