Thinkpad P14s 的 archlinux 成长手册(i3-wm 窗口管理器)

news/2024/11/20 21:42:16/文章来源:https://www.cnblogs.com/chen2ha/p/18559367

目录
  • 电脑信息
  • i3-wm 快捷键
  • 分辨率调整
  • 终端版文件管理器
  • 壁纸设置
  • 触摸板配置
  • 合盖后不休眠
  • i3 配置文件
  • 截图工具
  • 剪切板
  • i3lock-color
    • 卸载 i3lock
    • 安装 i3lock-color
    • 定义配置文件
    • i3 配置文件增加锁屏配置
  • i3 主题和图标修改
  • i3 工作区配置
    • 分配应用程序到工作区
    • 工作区字体修改
  • i3 启用透明效果
    • 修改 i3 配置文件
  • i3status
  • i3 颜色方案
    • 管理器颜色方案
    • bar 颜色方案
  • i3gaps
  • xterm 终端
    • 字体安装
    • xterm 配置文件
  • electron-ssr
  • 音频管理 pulseaudio
  • 微信
  • 中文输入法
    • 中文和 emoji 展示问题
    • 安装中文输入法
  • 其他应用


Archlinux 的安装可以看我之前的博客:虚拟机内使用 archinstall 安装 arch linux 2024.01.01

  • Archlinux 每个月都会发布一个版本,最终都是要升级上来的,初次安装,可以直接使用当月最新版本,安装步骤基本没差别
  • 后面的操作会用到 aur 源,可以从上面的博客里面找到安装的方法

电脑信息

参考这个博客做的美化处理:i3 窗口管理器终极定制指南

配置文件也放到了 gitee 上了

  • 我的配置文件
  • 上面博客的 git 仓库

i3-wm 快捷键

按键绑定 描述
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 窗口管理器

分辨率调整

安装 X 窗口系统

sudo  pacman -S xorg-server xorg-xrandr

查看显示器情况

xrandr

可以看到,当前的分辨率是 1024x768

Screen 0: minimum 320 x 200, current 1920 x 1080, maximum 16384 x 16384
eDP connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 309mm x 174mm1920x1080     60.02 +  48.001680x1050     60.021280x1024     60.021440x900      60.021280x800      60.021280x720      60.021024x768      60.02*800x600       60.02640x480       60.02
HDMI-A-0 disconnected (normal left inverted right x axis y axis)
DisplayPort-0 disconnected (normal left inverted right x axis y axis)
DisplayPort-1 disconnected (normal left inverted right x axis y axis)

手动修改分辨率(这里必须是字母 x,不能是 *,会无法识别),如果是分屏,哪个要设置为主窗口,只需要加上 --primary 参数

xrandr --output eDP --mode 1920x1080 --rate 60.02

在 i3 配置文件里面加上上面的命令实现永久更改分辨率

exec_always --no-startup-id xrandr --output eDP --mode 1920x1080 --rate 60.02

终端版文件管理器

ranger 是一个基于文本的文件管理器,使用 Python 编写,可以预览图片

sudo pacman -S ranger

壁纸设置

feh 可以查看图片,也可以用来设置桌面壁纸

sudo pacman -S feh

设置壁纸

feh --bg-scale /path/to/image.jpg

可以加入到 i3 的配置文件里面,这样可以保证每次开机之后,都会设置壁纸

exec_always --no-startup-id feh --bg-scale /path/to/image.jpg

触摸板配置

复制配置文件

sudo cp /usr/share/X11/xorg.conf.d/40-libinput.conf /etc/X11/xorg.conf.d/

找到 touchpad 添加下面的参数

Option "Tapping" "on"

完整的配置文件参考

Section "InputClass"Identifier "libinput touchpad catchall"MatchIsTouchpad "on"MatchDevicePath "/dev/input/event*"Driver "libinput"Option "NaturalScrolling" "true"# EndSection 前面加上下面这行内容开启触摸板轻点单击Option "Tapping" "on"
EndSection

合盖后不休眠

  • logind.conf.5
  • 其中几个参数
    • HandlePowerKey: 按下电源键后的行为,默认 power off
    • HandleHibernateKey: 按下休眠键后的行为,默认 hibernate
    • HandleLidSwitch: 合上笔记本盖后的行为,默认 suspend
  • 参数可选配置
    • ignore
    • poweroff
    • reboot
    • halt
    • kexec
    • suspend
    • hibernate
    • hybrid-sleep
    • suspend-then-hibernate
    • sleep
    • lock
    • factory-reset
sudo sed -i 's/^HandleLidSwitch=.*/HandleLidSwitch=lock/g' /etc/systemd/logind.conf
sudo sed -i 's/^#HandleLidSwitch=.*/HandleLidSwitch=lock/g' /etc/systemd/logind.conf

重启一下

reboot

i3 配置文件

mkdir ~/.config/i3
cp /etc/i3/config ~/.config/i3

截图工具

sudo pacman -S flameshot

通过 i3 配置文件,配置 flameshot 的快捷键

# flameshot
bindsym $mod+Shift+a exec flameshot gui

剪切板

面向 Linux 的 10 款最佳剪贴板管理器

i3 的工作区之间的数据是不互通的,需要通过剪切板来跨工作区复制粘贴内容

  • 我这里用的是 copyq,他支持中文
sudo pacman -S copyq

copyq 的全局快捷键会影响 vim 的列编辑,两个 ctrl+v 有冲突,可以在 copyq 的设置里面,确认程序里面有 ctrl+v 快捷键,可以把全局里面的 ctrl+v 快捷键删了就行

i3lock-color

自带的 i3lock 比较丑,锁屏之后是灰色的纯色页面,直接输入密码后回车,就能解锁

卸载 i3lock

sudo pacman -R i3lock

安装 i3lock-color

yay i3lock-color

定义配置文件

mkdir ~/.config/i3/scripts

创建一个名字是 i3lock-color 的文件(名字自己定义),里面的颜色,也可以自己配置和调整

#!/bin/shBLANK='#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                \

文件增加执行权限

chmod +x ~/.config/i3/scripts/i3lock-color

i3 配置文件增加锁屏配置

# 锁屏快捷键
bindsym $mod+x exec ~/.config/i3/scripts/i3lock-color

锁屏效果(作者那边直接复制的)

i3 主题和图标修改

  • materia-gtk-theme:上游推荐的 GTK 主题
  • papirus-icon-theme:主题的图标
  • lxappearance:图标的图形化管理工具
  • 安装后的操作就不展示了,可以看源文档
sudo pacman -S materia-gtk-theme papirus-icon-theme lxappearance

i3 工作区配置

默认的工作区是纯数字,不太好看,先安装字体

sudo pacman -S ttf-font-awesome

Awesome 字体 icons

找到自己想要的 icon(或者直接搜索,比如 memory),点击后,选择一个喜欢的样式,单机就会复制,然后粘贴到 i3 配置文件里面

  • 内存等硬件的 icons
  • 代码等 icons
  • WIFI 和蓝牙等 icons
  • 电池电源等 icons

分配应用程序到工作区

打开要分配的应用,同时再打开一个终端,输入 xprop 命令,获取到应用的 WM_CLASS 名称

例如这里面看到的是 firefox

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

在 i3 的配置文件里面增加下面的内容,表示将 firefox 分配到工作区2,下面的内容是做参考的,以自己实际的需要为准

  • 可以在后面加上 floating enable 表示这个应用以悬浮窗的形式打开(默认是全屏,新进程以 split 的方式分屏展示)
for_window [class="firefox"] move to workspace $ws2

工作区字体修改

sudo pacman -S ttf-ubuntu-font-family

找到 font pango:monospace 8 这一行,修改成下面的内容,数字代表字体的大小,根据自己的显示情况调整

font pango:Ubuntu Regular 10

i3 启用透明效果

安装 picom 来配置透明效果和动画效果

sudo pacman -S picom

创建配置文件

mkdir ~/.config/picom
cp /usr/share/doc/picom/picom.conf.example ~/.config/picom/picom.conf

修改配置文件

picom 配置文件

picom window_rules

rules: ({match = "window_type = 'tooltip'";fade = false;shadow = true;opacity = 0.75;full-shadow = false;
}, {match = "window_type = 'dock'    || ""window_type = 'desktop' || ""_GTK_FRAME_EXTENTS@";blur-background = false;
}, {match = "window_type != 'dock'";# shader = "my_shader.frag";
}, {match = "window_type = 'dock' || ""window_type = 'desktop'";corner-radius = 0;
}, {match = "name = 'Notification'   || ""class_g = 'Conky'       || ""class_g ?= 'Notify-osd' || ""class_g = 'Cairo-clock' || ""_GTK_FRAME_EXTENTS@";shadow = false;# 配置文件里面有 rules 的,可以只需要下面这一段内容# class_g 和上面的 class 是一样的,通过 xprop 命令获取 WM_CLASS 的第二个字段# 我这里是针对 terminal 和 vscode 以及 dock 做了透明处理
}, {match = "window_type = 'dock'    || ""class_g = 'UXTerm'";fade = false;shadow = true;opacity = 0.7;full-shadow = false;
}, {match = "class_g = 'code-oss'";fade = false;shadow = true;opacity = 0.8;full-shadow = false;
})

WINDOW_TYPE 总共有15 种可以选择

  1. unknown
  • 表示未知窗口类型,通常是默认值。如果窗口的类型未被明确指定,则可能使用此类型。
  1. desktop
  • 表示桌面窗口,通常用于显示桌面背景或桌面环境的根窗口。
  1. dock
  • 表示停靠栏窗口,例如任务栏或面板,通常用于显示快捷方式、系统托盘等。
  1. toolbar
  • 表示工具栏窗口,通常用于应用程序中的工具栏,提供快速访问功能的按钮。
  1. menu
  • 表示菜单窗口,通常是应用程序中主菜单栏的一个下拉部分。
  1. utility
  • 表示实用窗口,通常是辅助工具窗口,例如设置窗口或属性窗口。
  1. splash
  • 表示启动画面窗口,通常用于显示应用程序启动时的过渡画面。
  1. dialog
  • 表示对话框窗口,通常用于与用户交互的小型窗口,如 “保存文件” 或 “确认” 窗口。
  1. normal
  • 表示普通窗口,通常是用户运行的标准应用程序窗口。
  1. dropdown_menu
  • 表示下拉菜单窗口,例如从菜单栏或右键菜单弹出的下拉选项列表。
  1. popup_menu
  • 表示弹出菜单窗口,类似于右键菜单或上下文菜单,但通常是更独立的弹出菜单。
  1. tooltip
  • 表示工具提示窗口,通常是当用户悬停在按钮或控件上时出现的小提示框。
  1. notification
  • 表示通知窗口,通常是弹出的系统或应用通知提示。
  1. combo
  • 表示组合框窗口,通常是用于选择多个选项之一的控件,例如下拉框的扩展部分。
  1. dnd
  • 表示拖放窗口(Drag-and-Drop),通常用于在拖放操作中显示拖动的内容或目标位置。

修改 i3 配置文件

增加下面的内容,重启的时候都会开启 picom (picom 的配置文件修改后,会立刻生效,调试很方便)

exec_always --no-startup-id picom -f --config ~/.config/picom/picom.conf

i3status

i3 有两种状态栏,一个是 i3status,一个是 i3blocks,当然,还有第三方的 polybar,看大家自己需求去选择

  • i3status 有固定的内置模块,无法定制化,最多加一些图标之类的
  • i3blocks 是通过 command 来处理的,可以执行脚本,可玩性更高,但是性能需要自己注意
特性 i3status i3blocks
上手难度 简单 较高
性能开销 较高
可定制性 限制较多 强大
动态更新 较弱 优秀
美观性 基本布局 灵活布局
脚本支持 无(或有限) 强大,支持任意脚本语言

我这边需求不高,直接使用 i3status

  • ipv6
  • disk /
  • run_watch DHCP
  • run_watch VPNC
  • path_exists VPN
  • wireless wlan0
  • ethernet eth0
  • battery 0
  • cpu_temperature 0
  • memory
  • load
  • tztime local
  • tztime berlin

具体配置可以看官方文档,下面是我的配置文件

general {colors = trueinterval = 5
}# order += "ipv6"
order += "wireless _first_"
# order += "ethernet _first_"
order += "load"
order += "memory"
order += "disk /"
order += "battery all"
order += "tztime local"wireless _first_ {format_up = " (%essid) %ip"# format_up = "WLAN: (%quality at %essid) %ip"format_down = "WLAN: down"
}ethernet _first_ {format_up = "E: %ip (%speed)"format_down = "E: down"
}battery all {format = "%status %percentage"# format = "%status/%percentage/%remaining"status_chr = ""status_bat = ""
}disk "/" {format = " %avail"
}load {format = " %1min/%5min/%15min"
}memory {format = " %used/%available"threshold_degraded = "1G"format_degraded = "MEMORY < %available"
}tztime local {format = " %Y-%m-%d %H:%M"# format = "%Y-%m-%d %H:%M:%S"
}

i3status 的配置文件在 /etc/i3status.conf,可以放到指定目录下,然后修改 i3 的配置文件,在 bar {} 后面加上 -c 来指定配置文件,修改之前,记得备份一份

bar {status_command i3status -c /home/chenxiaodu/.config/i3/i3status.conf
}

i3blocks 可以看开头的博客里面的介绍,这个是当前的一个效果

i3 颜色方案

管理器颜色方案

  • 官方 i3 配置手册
  • 颜色定义
    • bgcolor 表示背景色
    • in-bgcolor 表示非活动窗口的背景色
    • text 是文本颜色
    • u-bgcolor 表示紧急操作的背景色
    • indicator 是标示下一个窗口位置的线条的颜色
    • in-text 是非活动窗口的文本颜色
  • 类别
    • client.focused 定义了焦点窗口的颜色
    • client.unfocused 定义了失去焦点时窗口的装饰
    • client.focused_inactive 当其中一个容器处于焦点但当前没有焦点时,显示的颜色
    • client.urgent 定义了紧急操作时的颜色
# 窗口的色彩方案
set $col_green   #20b2aa
set $col_gray    #525252
set $col_black   #1e1e23
set $col_purple  #b399ff
set $col_red     #470024
set $col_pink    #ff69b4
set $col_white   #ffffff
#                       边框         背景         文本         指示器(显示下一个窗口位置的线条)
client.focused          $col_green   $col_green   $col_black   $col_purple
client.unfocused        $icol_gray   $col_gray    $col_gray    $col_gray
client.focused_inactive $icol_gray   $col_gray    $col_gray    $col_gray
client.urgent           $col_red     $col_red     $col_black   $col_red

bar 颜色方案

bar {# status_command i3blocks -c /home/chenxiaodu/.config/i3/i3blocks.confstatus_command i3status -c /home/chenxiaodu/.config/i3/i3status.confcolors {separator  $col_pink#                       border        background    textfocused_workspace       $col_purple   $col_purple   $col_blackinactive_workspace      $col_black    $col_black    $col_whiteurgent_workspace        $col_red      $col_red      $col_black}
}

效果如下

i3gaps

I3-wm 默认窗口之间是没有间隙的,如下图,i3gaps 是一个添加间隙的工具

i3 配置文件增加下面的内容

# default gaps
# 窗口之间的间隙大小(像素值)
gaps inner 10
# 屏幕边缘和窗口之间的间隙大小(像素值)
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 5bindsym minus gaps outer current minus 5bindsym 0     gaps outer current set 0bindsym Shift+plus  gaps outer all plus 5bindsym Shift+minus gaps outer all minus 5bindsym Shift+0     gaps outer all set 0bindsym Return mode "$mode_gaps"bindsym Escape mode "default"
}
mode "$mode_gaps_inner" {bindsym plus  gaps inner current plus 5bindsym minus gaps inner current minus 5bindsym 0     gaps inner current set 0bindsym Shift+plus  gaps inner all plus 5bindsym Shift+minus gaps inner all minus 5bindsym Shift+0     gaps inner all set 0bindsym Return mode "$mode_gaps"bindsym Escape mode "default"
}
mode "$mode_gaps_horiz" {bindsym plus  gaps horizontal current plus 5bindsym minus gaps horizontal current minus 5bindsym 0     gaps horizontal current set 0bindsym Shift+plus  gaps horizontal all plus 5bindsym Shift+minus gaps horizontal all minus 5bindsym Shift+0     gaps horizontal all set 0bindsym Return mode "$mode_gaps"bindsym Escape mode "default"
}
mode "$mode_gaps_verti" {bindsym plus  gaps vertical current plus 5bindsym minus gaps vertical current minus 5bindsym 0     gaps vertical current set 0bindsym Shift+plus  gaps vertical all plus 5bindsym Shift+minus gaps vertical all minus 5bindsym Shift+0     gaps vertical all set 0bindsym Return mode "$mode_gaps"bindsym Escape mode "default"
}
mode "$mode_gaps_top" {bindsym plus  gaps top current plus 5bindsym minus gaps top current minus 5bindsym 0     gaps top current set 0bindsym Shift+plus  gaps top all plus 5bindsym Shift+minus gaps top all minus 5bindsym Shift+0     gaps top all set 0bindsym Return mode "$mode_gaps"bindsym Escape mode "default"
}
mode "$mode_gaps_right" {bindsym plus  gaps right current plus 5bindsym minus gaps right current minus 5bindsym 0     gaps right current set 0bindsym Shift+plus  gaps right all plus 5bindsym Shift+minus gaps right all minus 5bindsym Shift+0     gaps right all set 0bindsym Return mode "$mode_gaps"bindsym Escape mode "default"
}
mode "$mode_gaps_bottom" {bindsym plus  gaps bottom current plus 5bindsym minus gaps bottom current minus 5bindsym 0     gaps bottom current set 0bindsym Shift+plus  gaps bottom all plus 5bindsym Shift+minus gaps bottom all minus 5bindsym Shift+0     gaps bottom all set 0bindsym Return mode "$mode_gaps"bindsym Escape mode "default"
}
mode "$mode_gaps_left" {bindsym plus  gaps left current plus 5bindsym minus gaps left current minus 5bindsym 0     gaps left current set 0bindsym Shift+plus  gaps left all plus 5bindsym Shift+minus gaps left all minus 5bindsym Shift+0     gaps left all set 0bindsym Return mode "$mode_gaps"bindsym Escape mode "default"
}

配置 i3gaps 之后的效果

xterm 终端

sudo pacman -S xterm

字体安装

sudo pacman -S otf-cascadia-code

xterm 配置文件

配置文件我都是统一放 .config 目录下的

mkdir ~/.config/xterm
vim ~/.config/xterm/.Xresources

xterm

xterm RESOURCES

下面是我的配置文件,实现了

  • 右键黏贴(默认左键选中就是复制)
  • 白底黑字
  • 隐藏滚动条
  • 配置窗口默认尺寸
  • 字体和字体大小
  • 光标颜色
  • 禁止光标闪烁
xterm*vt100.translations: #override \n\<Btn3Down>: insert-selection(PRIMARY)
xterm*background: black
xterm*foreground: white
xterm*scrollBar: false
xterm*geometry: 125x45
xterm*faceName: Cascadia Code
xterm*faceSize: 11
xterm*cursorColor: #ff69b4
xterm*cursorBlink: false

electron-ssr

ssr 魔法工具,因为我用的 2024.11.01 这个版本的镜像安装,现在最新的 yay 镜像仓库已经缺失了 libappindicator-sharp 这个工具,导致安装有问题,下面记录了解决方法,对应的包我也上传到 gitee 了,以防以后又没了

# 编译 libappindicator-sharp
git clone https://aur.archlinux.org/libappindicator-sharp.git
sudo pacman -S glib2-devel
yay -S breezy
makepkg -si
# 安装 electron-ssr
yay -S python-launchpadlib
yay -S libappindicator-sharp
sudo pacman -U package/electron-ssr-0.2.7.pacman

音频管理 pulseaudio

安装工具和依赖

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

启动 pulseaudio

systemctl --user enable pulseaudio --now

如果声音轻,或者没声音,可以用 pavucontrol 调出 gui 界面进行调试

微信

https://linux.weixin.qq.com/

官方下载 AppImage 包

sudo pacman -S fuse2
chmod +x WeChatLinux_x86_64.AppImage
# 运行微信
./WeChatLinux_x86_64.AppImage

中文输入法

Localization/Simplified Chinese

  • 常用的免费(GPL 或兼容版权)中文字体包括
    • adobe-source-han-sans-cn-fonts
    • adobe-source-han-serif-cn-fonts
    • noto-fonts-cjk
    • wqy-microhei
    • wqy-microhei-lite
    • wqy-bitmapfont
    • wqy-zenhei
    • ttf-arphic-ukai
    • ttf-arphic-uming

中文和 emoji 展示问题

sudo pacman -S noto-fonts noto-fonts-cjk noto-fonts-emoji

更新字体缓存

fc-cache -fv

安装中文输入法

sudo pacman -S fcitx5 fcitx5-gtk fcitx5-qt fcitx5-configtool fcitx5-chinese-addons fcitx5-pinyin-zhwiki

i3 不属于 gui 环境,在 ~/.xprofile 配置下面的内容

export GTK_IM_MODULE=fcitx5
export QT_IM_MODULE=fcitx5
export XMODIFIERS=@im=fcitx5

启动 fcitx5

source ~/.xprofile
fcitx -d

配置输入法

fcitx5-configtool

繁体字改成简体

开启云拼音,改为百度

如果中文输入不行,reboot 一下试试

其他应用

archlinux 简明指南

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/837547.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一键生成美观的彩页演示+AI的训练过程科普

一键生成美观彩页 + AI训练揭秘:让你的内容瞬间高大上! 阅读时间: 8分钟 | 字数: 1300+ 你是否曾为制作精美的演示文稿而烦恼?是否对AI的训练过程充满好奇?今天,让我们一起探索如何用AI一键生成美观彩页,同时揭秘ChatGPT的训练过程! 🌟 天工AI彩页:内容创作的革命 🤔事情…

2个月搞定计算机二级C语言——真题(12)解析

1. 前言 本篇我们讲解2个月搞定计算机二级C语言——真题122. 程序填空题 2.1 题目要求2.2 提供的代码 #include <stdio.h> #define N 3 int fun(int (*a)[N]) {int i, j, m1, m2, row, colum;m1 = m2 = 0;for (i = 0; i < N; i++){j = N - i - 1; m1 += a[i][…

mini-lsm通关笔记Week2Day5

项目地址:https://github.com/skyzh/mini-lsm 个人实现地址:https://gitee.com/cnyuyang/mini-lsmSummary 在本章中,您将:实现manifest文件的编解码。 系统重启时从manifest文件中恢复。要将测试用例复制到启动器代码中并运行它们, cargo x copy-test --week 2 --day 5 ca…

SSTI(模板注入)

SSTI:SSTI(Server-Side Template Injection)即服务端模板注入,它是一种安全漏洞攻击技术。 当应用程序在服务器端使用模板引擎来呈现动态生成的内容时,如果用户可以控制模板引擎的输入,就可能导致 SSTI 漏洞。 服务端接收攻击者的恶意输入以后,未经任何处理就将其作为 Web…

blktrace分析IO

前言 上篇博客介绍了iostat的一些输出,这篇介绍blktrace这个神器。上一节介绍iostat的时候,我们心心念念希望得到块设备处理io的service time,而不是service time + wait time,因为对于评估一个磁盘或者云磁盘而言,service time才是衡量磁盘性能的核心指标和直接指标。很不…

数据库 校验名称唯一性,用于新增和修改功能

数据库 校验名称唯一性,用于新增和修改功能@目录概述代码 概述应用场景:xml,注解方式的自己略微改造即可使用。 提示:存粹方便自己拷贝代码,用于新增和修改前校验名称唯一性问题。代码Service/*** 校验名称是否重名* @Author 211145187* @Date 2022/5/5 15:37* @param nam…

人工智能之机器学习最优化基础——凸优化

凸优化(Convex Optimization) 是优化问题的一个重要分支,其目标是最小化或最大化一个凸函数(或凹函数),通常受限于一组凸约束条件。由于凸优化问题具有良好的数学性质,许多优化问题可以转化为凸优化问题并高效求解。1. 什么是凸优化问题? 一个标准的凸优化问题可以表示…

可信执行环境(TEE)学习笔记

可信执行环境(TEE)学习笔记来越多的数据在云环境下进行存储、共享和计算,云环境下的数据安全与隐私保护也逐渐成为学术界以及工业界关注的热点问题。目前阶段,隐私保护技术主要基于密码算法及协议(如安全多方计算、同态加密等)完成场景落地,其优点主要在于具有较高的安全…

同步与互斥与通信

同步与互斥 同步:两任务要协调 互斥:两任务要争用 举一个例子。在团队活动里,同事A先写完报表,经理B才能拿去向领导汇报。经理B必须等同事A完成报表,AB之间有依赖,B必须放慢脚步,被称为同步。在团队活动中,同事A已经使用会议室了,经理B也想使用,即使经理B是领导,他也…

Windows 自动色彩管理(ACM)

在一些笔记本上Win11可以看到设置里有“自动管理应用的颜色”选项,有些笔记上没有。这里讲下“自动管理应用的颜色”的显示规则 看华为MetaBook E设置界面显示:“自动管理应用的颜色”与“颜色自适应”是一个功能? 不是,颜色自适应是要依赖环境颜色传感器来实现的,有环境颜…

闲话 11.20

杂题乱写 11.2010 days left. 不说闲话,捡重点说。P4113 [HEOI2012] 采花 hh 的项链加强版。 首先考虑莫队,轻松写,轻松 133pts,轻松过不了后两个 hack,考虑优化。 既然是加强版,那么就考虑沿用之前的思路。记录上次出现某个数的位置和上上次出现某个数的位置,离线之后将…

CTFshow渗透知识点

1.robot.txtRobots是一个协议,全称为“网络爬虫协议”,也称爬虫协议、机器人协议等。网站通过Robots协议告诉搜索引擎哪些页面可以访问,哪些不可以访问。 使用方法: 在浏览器的网址搜索框中,输入根域名,再输入/robots.txt即可 博客:Robots.txt在渗透测试中的利用_robots.…