KDE+wayland的Arch初始化

前言

arch的中文百科,很多时候能派上用场,或者善用bing和AI。
https://wiki.archlinuxcn.org/wiki/Wayland
下面这是我用的系统。
https://endeavouros.com/

劝退

  1. 如果对linux没有执着,建议还是用windows。linux作为非商业的系统,很多软件只会出win版和mac版本。linux系统分裂,兼容性难解决,最重要的是,用户还少。GUI方面的bug,比windows只多不少。

  2. 如果对wayland没有执着,建议使用X11,使用wayland面对很多软件都有兼容性问题,而且面对一些个人开发者的软件,这些问题是无法解决的。wayland的兼容性问题不是你一个个人用户能够解决的,你只能为了wayland做自身需求的妥协。很多软件在wayland上无法设定快捷键。
    chrome我还能忍忍,因为我开浏览器就是一整天,但是vscode和cursor启动也会变慢。难以忍受。
    https://linux.cn/article-16520-1.html
    https://fcitx.cn/post/using_fcitx5_on_wayland/
    英伟达显卡,在wayland下与才chrome发生了一些奇妙的兼容性问题,导致chrome启动异常慢,设置中找到图形加速并关掉,可以起到掩耳盗铃的作用。

性能bug

UI方面经常有透过窗口看到底下的情况,以及黑屏,花屏(比如改变窗口大小时有概率复现)等,如下图。
image
不清楚是不是显卡兼容性问题,反正问题是确实存在的。

还有一些窗口方面的问题,有时候点击任务栏某个应用,就是不弹出窗口(比如warp,有时候就出不来),或者窗口不在最顶上。

软件生态

软件生态的缺失。Adobe全家桶不支持linux,剪视频都不好剪,阿里云盘等一系列云盘不提供linux版本(百度提供了,表扬一下)。

  • 网游/还有部分单机
  • 剪视频(主流的剪辑软件PR以及国产的那些比如剪映,都没有linux版本)
  • 解压软件,linux上没办法双击解压、以及记忆密码的功能(办法可能有,估计挺麻烦),windows上我使用bandizip实现。
    还有一些压缩包以exe形式提供,虽然kde能直接解压,但是没跳出输密码的步骤,结果还是得wine。
    image

如图,卡进度了

  • 第三方软件不必多说,还有隐形的生态,搜索引擎上搜索linux的软件默认都是一些命令,找GUI程序会困难一些。

游戏

除了steam,不推荐你用wine去运行windows游戏,一旦出点问题就是纯浪费时间。

玩游戏需要套一层wine,steam还行,玩本地的游戏需要多浪费一些时间配置(可以用wine游戏助手,相对来说挺好用的),而且并不能兼容所有的游戏。
image

这个页面出来就要等个半天,我等了一个多小时后实在等不下去了。

双击点开exe,大概率跳出更新配置
image
运行wine游戏卡住后,拖动任务管理器变成这个样子。
image

网游尤其是腾讯系,就别想了,老老实实windows。
4399就更别想了。
玩玩steam是最省心的,毕竟商业公司。

理念

  1. 实用主义,能一行命令解决的不用两行命令,能直接安装的不从源码编译。开源一定是优点,闭源不算很大的缺点,如果闭源软件表现更优异,我会毫不犹豫地使用闭源软件。
  2. 符合个人直观感受,比如我青睐于键鼠,而不是纯键盘。
  3. 基于以上观点,能用热门的软件就不要用冷门的软件,热门的软件总是能找到更多的解决方案。

基础设施

蓝牙故障

不知为何,我在gui中打不开蓝牙,于是连不上鼠标。
使用如下命令,开机自启蓝牙。

systemctl enable bluetooth
# 立即启动蓝牙服务
systemctl start bluetooth

按键映射(X11)

用笔记本时会用到这个功能。
在我的笔记本上,f12是数字锁,而这个功能我从来不用,却让我f12时需要按fn+f12两个键(我的笔记本不支持fn切换,他只能用组合键)。

yay -S xorg-xev
xev

会出现一个窗口,不必管他,按下要映射的按键,会出现提示。
我们要用到keycode,将其记下来,这个数字就代表这个按键。
如果怕看错了就多按几下,重复的肯定就是自己按的键了(没啥必要)。
image
以上是我的笔记本的f12按键,他默认映射数字锁。
先查一下f12的映射。

xmodmap -pke| grep -i f12

输出如下:

keycode  96 = F12 F12 F12 F12 F12 F12 XF86Switch_VT_12

只需把等号右侧的记住即可(按复制)。

micro ~/.Xmodmap

输入下面的,保存即可。

xmodmap ~/.Xmodmap
keycode 77 = F12 F12 F12 F12 F12 F12 XF86Switch_VT_12

按键映射(Wayland和X11通用)

没错,上面的配置只对X11桌面有效,而我们用的是wayland(KWin)
https://wiki.archlinux.org/title/Input_remap_utilities
https://www.v2ex.com/t/875994
https://github.com/rvaiya/keyd
arch的百科里面,有提到如何修改按键映射。
arch可以使用yay直接安装keyd

git clone https://github.com/rvaiya/keyd
cd keyd
make && sudo make install
sudo systemctl enable --now keyd

使用下面的命令可以监听按键。

sudo keyd monitor
AT Translated Set 2 keyboard    0001:0001:700355d0      numlock down
AT Translated Set 2 keyboard    0001:0001:700355d0      numlock up
# 查看如何配置
man keyd
sudo micro /etc/keyd/default.conf

layer表示一种状态,比如按住ctrl。
id表示限制设备,id用星号就是全部键盘都这样映射。
image

[ids]
*

[main]
numlock = f12
sudo keyd reload

shell

bash用起来不是那么地智能,比如按tab不会切换文件(而powershell都有这个功能)
这在文件名是中文的情况下,会降低效率。
安装zsh

yay -S zsh

https://www.haoyep.com/posts/zsh-config-oh-my-zsh/
默认的zsh不显示当前路径,很不方便,因此装上ohmyzsh。

sh -c "$(curl -fsSL https://gitee.com/pocmon/ohmyzsh/raw/master/tools/install.sh)"

要美化自己找教程,简洁就挺好的。
命令补全
https://github.com/zsh-users/zsh-autosuggestions/blob/master/INSTALL.md

yay -S zsh-autosuggestions

打开~/.zshrc,添加如下命令

source ~/.zsh/zsh-autosuggestions/zsh-autosuggestions.zsh

终端文本编辑器

实在不行就用nano吧,如果没有心情去解决复制粘贴问题。

使用micro,默认快捷键就是和windows一样,ctrl+c,ctrl+v。
退出使用Ctrl+q(quit),很直观。
而且最nb的是,他可以在终端上直接用鼠标,简直不要太爽。

yay -S micro

复制粘贴问题(错误方法)

使用时遇到了问题,micro里面复制,到外面就没用了。必应一搜就找到解决办法了。
image
解决方法如下:
https://github.com/zyedidia/micro/issues/1365#issuecomment-819039335

micro

打开micro,按Ctrl+e,输入如下命令并回车

set clipboard terminal

复制粘贴问题(解决方法)

set clipboard internal
micro内部粘贴复制,可以用终端的粘贴快捷键来粘贴到里面,但是micro内部的复制无法影响到系统的剪切板
set clipboard terminal
内部复制可以到系统剪切板上,但是系统剪切板无法粘贴到micro内部
内部的Ctrl+V也没反应,只能用终端粘贴快捷键,比如Ctrl+Shift+V或者Shift+Insert这种。  
set clipboard external
始终使用系统剪切板。有个比较无解的地方就是,使用sudo时,就不能读取系统的剪切板。  
这个问题,可以使用终端的粘贴快捷键。比如Ctrl+Shift+V,始终使用这个快捷键进行粘贴,体验就会比较一致。(C和V对应)

https://forum.manjaro.org/t/micro-editor-cut-paste-behaviour/119035
正确做法如下
wayland需要安装复制的包

yay -S wl-clipboard

打开micro,按Ctrl+e,输入如下命令并回车(这个好像就是默认设置)

set clipboard external

可能有用的链接如下:
https://github.com/zyedidia/micro/blob/master/runtime/help/copypaste.md

文件查找

需要类似于windows上面everything的功能,虽然linux自带find,但是没有那么好用。
对我来说,图形界面的更直观,找到文件双击就能打开,有图标来区分文件类型,不需要记命令行等多种优势,另一方面,可能我用惯everyting了。
安装fsearch。

yay -S fsearch

输入法

输入法我主要使用全拼,因为平时并不需要打很多中文,而且全拼相对于双拼比较直观。
就好像我用惯了windows和vscode,一用vim就浑身不舒服。双拼和五笔对我来说都有很高的成本,而我又比较懒,不想学。
输入法分为多个模块,其中,首先最重要的是输入法引擎(主流引擎就fcitx和ibus两个)。
比较喜欢fcitx。

装输入法的时候,很迷惑为什么要装这么多软件包,因此去了解了一下,防止换了个系统就不会用了。而且看别人写的博客,有一些东西一笔带过了,但是总体也是很复杂,于是还是得自己折腾。

基础功能

  1. fcitx5-im

fcitx5-im包含以下软件包

fcitx5
fcitx5-configtool
fcitx5-gtk
fcitx5-qt

linux多数软件由qt和gtk构建GUI,用户期望无论他们正在使用的应用程序是基于哪种 GUI 库构建的,输入法的行为都是一致的。通过同时支持 Qt 和 GTK,Fcitx5-im 确保了这种一致性的用户体验。

因此建议直接装fcitx5-im,而不是一个个装。

  1. Fcitx5-rime

Fcitx5-rime是rime输入法提供的,由于rime在linux上是由fcitx提供的,因此是这个名字。
Fcitx5-rime可以看作是功能的增强,主要功能还是由fcitx提供,Fcitx5-rime只是添加了一些rime的功能。
既可以说自己用的是fcitx输入法,也可以说用的是rime输入法。
我用rime纯粹是因为linux上用这玩意的多,而输入法我不想多折腾。
3. fcitx5-chinese-addons

没什么好说的,这个软件包提供常用的中文输入方式,比如拼音、五笔之类的。

yay -S fcitx5-im fcitx5-rime fcitx5-chinese-addons

环境变量

根据桌面管理器(Desktop Explorer)和窗口管理器(Window Manager)需要配置不同的变量。

访问wiki以查看如何配置。
https://wiki.archlinuxcn.org/wiki/Fcitx5?rdfrom=https%3A%2F%2Fwiki.archlinux.org%2Findex.php%3Ftitle%3DFcitx5_(%25E7%25AE%2580%25E4%25BD%2593%25E4%25B8%25AD%25E6%2596%2587)%26redirect%3Dno#X11
我使用kde和wayland,只需要配置一个环境变量。
image

sudo micro /etc/environment
XMODIFIERS=@im=fcitx

不重启,设置里面是找不到输入法的,因此我不确定能否找到下面这个虚拟键盘选项。
打开设置,搜索虚拟键盘,选择fcitx5。

sudo reboot

词库

维基百科和萌娘百科的词库。

yay -S fcitx5-pinyin-zhwiki fcitx5-pinyin-moegirl

雾凇拼音,是一套rime配置。
https://github.com/iDvel/rime-ice
由于我前面一直没有修改rime配置文件,因此不用考虑什么覆盖配置、备份配置的问题,直接安装即可。

yay -S rime-ice-git

emoji

谷歌emoji,或者是说安卓。

yay -S noto-fonts-emoji

主题

https://github.com/hosxy/Fcitx5-Material-Color
我一般是不怎么在意主题的,奈何默认的外观实在是太丑了。

yay -S fcitx5-material-color
nano ~/.config/fcitx5/conf/classicui.conf

内容如下,和文档相比,我只改了一个主题颜色,用的橙色。

# 垂直候选列表
Vertical Candidate List=False

# 按屏幕 DPI 使用
PerScreenDPI=True

# Font (设置成你喜欢的字体)
Font="思源黑体 CN Medium 13"

# 主题
Theme=Material-Color-Orange

恕我愚笨,没找到在哪里重启fcitx5。

# 直接结束进程,他会自动重启,然后shell程序会一直换行,可以使用ctrl+C退出。  
pkill fcitx5

image

rime配置

改配置时,他里面的按键是用英文命名,而不是字符。比如逗号叫comma。
https://github.com/LEOYoon-Tsaw/Rime_collections/blob/master/Rime_description.md#八其它
~/.local/share/fcitx5/rime下,创建文件default.custom.yaml
内容如下

patch:
  # 仅使用「雾凇拼音」的默认配置,配置此行即可
  __include: rime_ice_suggestion:/
  # 以下根据自己所需自行定义,仅做参考。
  # 针对对应处方的定制条目,请使用 <recipe>.custom.yaml 中配置,例如 rime_ice.custom.yaml
  __patch:
    # 关闭以词选字,没有用的功能
    key_binder/select_first_character: ""
    key_binder/select_last_character: ""
    key_binder/bindings/+:
        # 方括号换页。
        - { when: paging, accept: bracketleft, send: Page_Up }
        - { when: has_menu, accept: bracketright, send: Page_Down }
    # 每页的长度
    "menu/page_size": 6
  # 关闭【方案选单】快捷键,一个用不到的功能居然要占用我的快捷键,Ctrl+`打开终端的快捷键被占去了
  switcher/hotkeys:


下面可以看到雾凇的默认配置路径。
image

基于雾凇改的另一款。
https://github.com/gaboolic/rime-frost

其他

rime的配置地址如下,如果你没有进行任何配置,rime这个目录需要你自己创建。

~/.local/share/fcitx5/rime/

其他rime配置文件:
https://github.com/wongdean/rime-settings

Wayland

wayland和fcitx5兼容性

https://fcitx-im.org/wiki/Using_Fcitx_5_on_Wayland
Chrome加过参数后,会出现花屏的现象,也有启动慢的问题。
image
b站这个验证页面点不动。
image

wayland和Electron

需要关闭图形加速。wayland、英伟达显卡和Chrome,兼容性不太行。
启动加上如下参数。

 --disable-gpu --enable-features=UseOzonePlatform --ozone-platform=wayland --enable-wayland-ime

我是直接换x11了,wayland这样搞,显卡都废了

切换回X11

切换回x11后,Ghostty终端中,无法使用快捷键切换输入法,与Kitty终端的问题并不相同,我尝试了kitty并设置环境变量后,他正常运行了,然而Ghostty却不是。
https://github.com/ghostty-org/ghostty/issues/882
我厌倦了去找issue,我看了半天并没有我想要的答案,看样子他们提出的issue是wayland上面的,我在wayland时期确实没有遇到这种问题,Konsole其实也够用了。
切换回X11后,需要照着前面输入法的环境变量重新设置,并重新登录以使其生效。

必备软件

微信

yay -S wechat

office

一般使用wps,毕竟linux上面不能使用微软的office。
wps国产软件,比较符合使用习惯。

有人推荐永中和onlyoffice,但是我建议还是直接wps。
onlyoffice是开源的,除此之外就没什么

注意wps-office是国际版,页面全英文,加个后缀-cn就是中文版。
https://wiki.archlinuxcn.org/wiki/WPS_Office

剪切板管理工具

KDE自带的Klipper稍微可以用一用。

支持图片保存到剪切板。

之前在windows使用CopyQ来管理剪切板,他可以分多个标签,因此有时key起到快速输入的效果。
我没有剪切板同步的需求。
https://www.bilibili.com/opus/1012253233964384288

  1. CrossPaste,不知为何图片没有进入剪切板。
  2. 剪切助手,无linux端
  3. SyncClipboard,问题如图
    image
  4. 柠檬 Push,纯同步,linux无GUI。
  5. 快贴,好像也是没有GUI。
  6. ProjectSend,功能不对。
  7. EcoPaste,不支持wayland。
  8. PasteBarApp,不支持linux。
  9. 1clipboard,不支持linux。

CopyQ,我在windows上面一直用。
在发现CopyQ的快捷键不起作用后,我放弃了wayland。

可选软件

常用工具

yay -S cmake clang

lutris,wine

https://arch.icekylin.online/app/common/daily.html#🍷-wine
用这个网址提供的wine安装命令执行失败了,建议用wine游戏助手(lutris国内版)

sudo pacman -S wine zenity
sudo pacman -S lib32-libpulse

黑屏、花屏的现象都会出现。
有时候就是不弹出窗口(之前能运行),如果玩玩植物大战僵尸之类的小游戏还是没什么问题的。

百度网盘

少有的提供linux版本的网盘。

yay -S baidunetdisk-bin

进度显示有点问题,有时候不会动。
image

zed(不推荐)

zed打开设置,以下格式配置代理。
https://github.com/zed-industries/zed/discussions/7525

"proxy" : "http://yourProxyURL.com:8080"

终端

https://www.cnblogs.com/PeterJXL/p/18418016

  1. tabby(不推荐)
    因为有eletron的以来,这玩意的aur包要装很久。
    image
    装了半天,没装上。

  2. Konsole
    KDE自带的终端,中规中矩。

  3. IShell
    使用fcitx5中文输入法,打出来的字会变成三倍。
    他提供的反馈渠道显示繁忙。
    官网的反馈渠道更是404.
    https://bugs.ishell.cc/bugs
    有内置ai等功能,但是不太适合作为本地的终端。

  4. windTerm和Xterminal。
    都还不错,我在windows上使用过。

  5. mobaxTerm(不推荐)
    以前用这个,只有windows版本而且全英文。

  6. kitty(不推荐)
    默认文字间距很宽,看起来非常难受。
    image

  7. WezTerm(不推荐)
    有点丑,比起Konsole感觉也没什么优势,而且还需要装上字体才能获得正常体验。

  8. Blackbox
    Gnome自带的,应该是和Konsole类似,比较平庸。

  9. warp(推荐)
    爽。
    https://www.warp.dev/download
    下载tar.zst格式

yay -U ./xxx.tar.zst

有时候放后台,再点进去弹不出来,不适合做常驻终端。

steam和显卡驱动

装steam之前,你应该解决显卡驱动问题。
我的这篇博客中解决了显卡问题,除了开机会黑屏一会儿,并无大碍。
https://www.cnblogs.com/oldsaltfish/p/18649056
装完驱动后,安装steam就行了。

yay -S stesm

image
steam用的少,下下来只为了测试显卡是否正常工作。

cursor

yay -S cursor-bin

安装Vscode。

yay -S visual-studio-code-bin

utools

提供一些工具,用得少,但是能解决问题就很爽。
为数不多的全平台工具。

wox也能在linux使用,喜欢开源的可以试试。
wox中快捷键不生效,搜不到自带软件,我很快就对他失去耐心了。
image
上面utools,下面wox
image

yay -S utools-bin

github-cli

yay -S github-cli

音乐

只有qq音乐提供了linux版本。

yay -S qqmusic-bin

github

Fine-grained personal access token,用于限制组织成员对组织内资源的访问。
https://github.net.cn/zh/organizations/managing-programmatic-access-to-your-organization/setting-a-personal-access-token-policy-for-your-organization#restricting-access-by-personal-access-tokens-classic

由于这个选项只有读仓库的权力(没有写),应该是用于提交PR,管理issue之类的其他权限。

无权限。

remote: Permission to OldSaltFish/cmd-with-rust.git denied to OldSaltFish.  
致命错误:无法访问 'https://github.com/OldSaltFish/cmd-with-rust.git/':The requested URL returned error: 403

其他问题

apipost用不了,黑屏。
由于vscode的开源版用起来没有问题,所以应该是软件问题。
可以使用apifox。
https://apifox.com/
https://apifox.com/apiskills/api-test-tools/

尽量不要使用electron的应用。

跨平台应用

flatpak

nix

nix-env 主要用于管理和操作用户级别的软件包,提供了安装、卸载、更新等功能,并且支持回滚机制。
nix-shell 则专注于创建隔离的开发环境,使得开发者能够在不受系统其他部分干扰的情况下工作,特别适合多语言项目和复杂的依赖关系管理。

https://search.nixos.org/packages?channel=24.11&show=snipaste&from=0&size=50&sort=relevance&type=packages&query=snipaste
当我试着安装截图软件snipaste时,他报错如下:

➜  ~ nix-shell -p snipaste
error: getting status of '/nix/var/nix/daemon-socket/socket': Permission denied
➜  ~ sudo nix-shell -p snipaste
[sudo] dreamsoul 的密码:
error:
       … while calling the 'derivationStrict' builtin
         at <nix/derivation-internal.nix>:34:12:
           33|
           34|   strict = derivationStrict drvAttrs;
             |            ^
           35|

       … while evaluating derivation 'shell'
         whose name attribute is located at /nix/store/w74d7b6nqn0sx6vac9scwaszy17vj9n9-nixpkgs/nixpkgs/pkgs/stdenv/generic/make-derivation.nix:375:7

       … while evaluating attribute 'buildInputs' of derivation 'shell'
         at /nix/store/w74d7b6nqn0sx6vac9scwaszy17vj9n9-nixpkgs/nixpkgs/pkgs/stdenv/generic/make-derivation.nix:422:7:
          421|       depsHostHost                = elemAt (elemAt dependencies 1) 0;
          422|       buildInputs                 = elemAt (elemAt dependencies 1) 1;
             |       ^
          423|       depsTargetTarget            = elemAt (elemAt dependencies 2) 0;

       (stack trace truncated; use '--show-trace' to show the full, detailed trace)

       error: Package ‘snipaste-2.10.3’ in /nix/store/w74d7b6nqn0sx6vac9scwaszy17vj9n9-nixpkgs/nixpkgs/pkgs/by-name/sn/snipaste/package.nix:27 has an unfree license (‘unfree’), refusing to evaluate.

       a) To temporarily allow unfree packages, you can use an environment variable
          for a single invocation of the nix tools.

            $ export NIXPKGS_ALLOW_UNFREE=1

          Note: When using `nix shell`, `nix build`, `nix develop`, etc with a flake,
                then pass `--impure` in order to allow use of environment variables.

       b) For `nixos-rebuild` you can set
         { nixpkgs.config.allowUnfree = true; }
       in configuration.nix to override this.

       Alternatively you can configure a predicate to allow specific packages:
         { nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [
             "snipaste"
           ];
         }

       c) For `nix-env`, `nix-build`, `nix-shell` or any other Nix command you can add
         { allowUnfree = true; }
       to ~/.config/nixpkgs/config.nix.

https://github.com/NixOS/nixpkgs/issues/109421
需要改root用户的配置文件来允许不自由的软件安装(因为用的是sudo)。
安装软件奇慢无比,而且命令行中会显示一大堆copy path,对使用软件没有任何帮助。
image
真是搞不懂为什么能这么慢,几乎是卡着不动了。
image

sudo nix-shell -p localsend

运行localsend没有反应,对nix失去耐心了。

markdown

yay -S obsidian

每个人写markdown的软件不一样,没什么好说的

flatpak和Appimage

flatpak等用到了再说,Appimage确实用得多。
还有一个nix。

体验

很多商业软件都只提供deb和rpm,幸好arch的第三方软件源非常强大。

  1. 截图功能
    自带的截图软件Spectacle不太好用,比起windows的pixpin差远了。
    没有贴图功能。可能需要使用flameshot,但是太丑了实在是,功能也只是勉强能用。
    只能使用snipaste,希望pixpin早日做出linux版本。
    snipaste没有录制gif的功能,也没有OCR。
    客观比较的话,我体感上,pixpin比snipaste卡一些。
    https://zh.snipaste.com/

  2. yay真是太好用了,少打很多sudo。

  3. 微信的AppImage包体验不太好,幸好aur源里面有微信。

https://sh.alynx.one/posts/GNOME-IBus-Wayland-IME/

其他

Avalonia,使用Visual Studio开发跨平台应用。

生态有限,IDE工具繁重,建议还是不要用。
https://www.cnblogs.com/Fengyinyong/p/13346642.html
https://docs.avaloniaui.net/zh-Hans/docs/get-started/install

flutter

https://docs.flutter.cn/get-started/install/linux/desktop#install-the-flutter-sdk

yay -S jetbrains-toolbox

看别人的说法,直接使用官网的压缩包或者使用yay都有一定问题。因此可以使用toolsbox进行安装。
打包发布。
https://distributor.leanflutter.dev/zh-hans
提供了pacman的支持,但是没有给出文档。
https://github.com/leanflutter/flutter_distributor/pull/198

posted @ 2025-03-09 01:53  魂祈梦  阅读(739)  评论(0)    收藏  举报