Manjaro Linux(KDE) 配置简记

Manjaro Linux(KDE) 配置简记

网站

Manjaro Manjaro中文官网 ManjaroWIki

ArchLinuxWiki(Manjaro基于Arch,所以大部分问题是相通的)

安装与引导

有几种不同的桌面环境,我选的是KDE桌面版本。

下载安装镜像

中文下载页

虽然推荐从官网下载,但是速度实在不敢恭维,还是乖乖从中科大或者清华的镜像下载吧。

刻录安装U盘

在win下使用Rufus刻录,使用GPT+UEFI,刻录时选择使用DD镜像方式。

从U盘启动安装

在BIOS的Boot顺序中设置U盘优先启动,并且关闭Secure Boot(Manjaro和这个不兼容)。

插入安装U盘,启动电脑,进入Manjaro Live系统,可以体验一下。

然后启动桌面上的安装程序,一路点点点安装。

注意如果是双系统要把/boot/efi挂载选到安装win时建立的100MB左右的那个启动分区。

其他基本没什么。

另外即使安装完毕也不要重新开SecureBoot,那样会无法启动Manjaro,让它关着好了。

有关双系统引导问题

如果先安装win10再安装Manjaro,这时默认启动时出现的是Manjaro的引导界面。

不建议用EasyBCD之类的工具在Win下修改启动配置,一是EasyBCD对于UEFI已经过时,二是即使设置成功,windows boot manager也无法启动Manjaro。(猜测是只能引导win类的系统)。

双系统时间冲突问题

如果是双系统,可能会出现两个系统时间不一致的问题,改了其中一个的时间,到另一个系统就又不一样了。在设置中修改一下大多数时候可以解决。

硬件配置

鼠标滚轮

使用imwheel。

蓝牙鼠标

提高轮询率

如果鼠标移动时存在卡顿、延迟,可以提高轮训率。参考

1
sudo vim /var/lib/bluetooth/<mac-of-your-adapter>/<mac-of-your-mouse>/info

其中的适配器mac地址和鼠标mac地址需要自行从设置面板获取。

编辑文件时,找到或添加如下配置:

1
2
3
4
5
[ConnectionParameters]
MinInterval=7
MaxInterval=7
Latency=100
Timeout=300

其中的值可以按需求设定,完成后重启蓝牙服务,观察鼠标移动是否更加流畅。

触摸板手势

在windows中,支持多指触控的触摸板可以通过手势完成许多操作,例如切换虚拟桌面等,manjaro默认不支持这些操作。可以使用软件实现。

安装触控板手势软件touchegg和它的GUI配置界面touche:

1
2
3
yay -S touchegg touche # 安装
systemctl enable touchegg.service #开机启动
systemctl start touchegg.service #立即启动

而后打开touche,可以配置全局的手势或者在某个应用程序中的手势,并且可以自定义手势的功能。这一点要比windows强大。

键盘

键位映射修改

20220602更新:

系统设置-输入设备-键盘-高级里面已经自带了许多修改的设置,因此以下操作没有必要,或者可以用于配置某些鼠标上的额外按键。

更友好的方式可以使用input-remapper,支持检测按键。

坑:failed to start virtual console setup

启动时会一闪而过两行这个报错,后面检查发现在tty1。检查日志:

1
journalctl --boot --unit systemd-vconsole-setup.service

提示loadkeys: unable to open file 'cn': 没有那个文件或目录

检查 /etc/vconsole.conf

1
2
3
KEYMAP=cn
FONT=
FONT_MAP=

推测是这里的cn的锅,改成KEYMAP=us,再重启就正常了。


20220606更新:

实践发现系统设置配置的键位映射会偶尔还原,目前没有找到原因,所以建议还是使用下面xmodmap的方法。


ArchLinuxWiki关于Xmodmap的页面

我的需求是将CapsLock和Control_L互换。使用自带的xmodmap可以实现自定义键位映射的功能,在查了许多资料之后蓦然回首,发现man xmodmap中已经有现成的例子:

存为~/.Xmodmap,大小写注意。

1
2
3
4
5
6
7
8
9
!
! Swap Caps_Lock and Control_L
!
remove Lock = Caps_Lock
remove Control = Control_L
keysym Control_L = Caps_Lock
keysym Caps_Lock = Control_L
add Lock = Caps_Lock
add Control = Control_L

然后执行xmodmap ~./xmodmap

执行第二遍可以复原,依次类推。

显卡

一个坑:更改错驱动后无法进入桌面

1
[FAILED] Failed to start Simple Desktop Display Manager

搜到了一个相同问题的老哥:https://forum.manjaro.org/t/failed-to-start-simple-desktop-display-manager-after-gpu-change/155241

这个帖子下面有人给出了解决办法,但是要用到之前的启动盘来进入终端。

实际上,在显示上面[FAILED]的界面按Ctrl+Alt+F3即可进入tty终端环境,输入帐号密码即可登录开始操作。

对于因为更改驱动造成无法进入桌面的情况,可以在终端使用mhwd命令来卸载和安装驱动。

1
2
3
sudo mhwd -li -d #显示已经安装驱动的详细信息
sudo mhwd -r pci video-xxx#卸载xxx显示驱动
sudo mhwd -i pci video-xxx#安装xxx显示驱动

如果记得最后一次是更改了什么驱动导致的问题可以直接修改,否则可以把所有显示驱动都卸载掉,重新安装最初通用的video-linux(一般系统装完没有问题就是这个驱动)。

完成之后用reboot命令即可重启。

自动挂载硬盘

默认情况下开机时manjaro只会挂载主分区,如果想要在启动时自动挂载某个分区或者所有分区,在设置-可移动存储设备中可以选择需要在登录时,或者插入时自动挂载的设备,也可选择自动挂载所有已知设备。

坑:硬盘开机无法挂载

情况1:双系统睡眠锁定

对于双系统,如果Windows下睡眠后boot到linux,会导致硬盘被windows锁定而无法挂载,需要重启到windows后自动关机

情况2:NTFS文件系统损坏

linux如果挂载的是NTFS格式的分区,使用的是ntfs3驱动,比不上windows的原生驱动,在进行大量文件写入操作时容易把文件系统整挂,例如cargo run,或者脚本写入大文件等。

此时对于双系统,一种解决办法是重启到windows,使用windows的CHKDSK命令修复文件系统,例如如果要修复的分区在E盘:

1
2
#使用管理员权限运行
chkdsk E: /F

运行时会提示是否需要dismount,选是即可,等待修复结束即可回到linux正常挂载。

什么?你说你不是双系统?那你用什么NTFS?

应用安装与更新

切换国内源

通过软件源安装软件包时,最好使用国内的镜像以加快下载速度。

终端输入sudo pacman-mirrors -i -s -c China -m rank,而后在弹出的窗口选择想要使用的源(可以多选)。

增加-s参数的含义是忽略状态,可以显示更完整的源列表,部分国内镜像站必须在这个参数下才能显示,但是其软件源本身是稳定的。

也可以在/etc/pacman.d/mirrorlist中手动编辑。

切换pip源

1
2
pip install pip -U
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

使用yay

yay是一个AUR软件包安装助手,除了官方软件仓库外还支持安装AUR内的软件包,安装之后就可以不直接用pacman了。

安装yay

1
sudo pacman -S yay

以后可以使用yay来代替pacman,而且无需sudo。

yay项目地址

yay 常用操作

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
yay -Ss xxx #以xxx位关键字查找包
yay -S xxx  #安装xxx包(名字必须完全匹配)
yay -Qs xxx  #以xxx为关键字查找已安装的包
yay -Qi xxx #查看软件包详细信息
yay -Ql xxx #查看所有某软件包有关的文件
yay -Qo [file] # 查看某个文件由哪个软件包拥有
yay -R xxx  #卸载包
yay -Rns xxx #卸载包以及无用的依赖

yay -U xxx  #xxx为本地包的地址,从离线包安装
yay -Sc     #清理软件包缓存
yay -Yc     #清理不需要的依赖包
yay -Syyu   #全面更新

使用代理

由于go语言的特性,yay不能直接使用proxychains,虽然有使yay支持的解决方法但是比较麻烦。

通过使用环境变量可以实现yay临时使用代理:

1
ALL_PROXY=socks://localhost:[xxxx] yay ...

其中[xxxx]的端口号需要打开自己使用的代理软件设置,查看提供SOCKS代理的地址和端口号。

可以将上述命令添加alias到所使用shell的rc文件以避免每次都输入一遍。例如我使用zsh,则可以在~/.zshrc的最后添加:

1
2
#alias for using proxy in yay
alias yayp="ALL_PROXY=socks://localhost:1089 yay"

这样以后只需要执行yayp xxx即可直接为yay启用代理。

安装deb包

首先安装debtap(方法见上),这是一个可以将deb包转化为可用yay等安装的包的工具。

使用时用debtap xxx.deb将本地的deb包转化为pkg.tar.zst格式,然后可以直接用yay -U安装,当然能否成功看依赖。

降级软件包

有时候某个软件包的更新产生了冲突或者某个调整不喜欢,此时可以降级安装旧版本。根据manjaro关于降级软件包的文档,首先安装:

1
yay -S manjaro-downgrade

需要降级安装软件包xxx时,执行如下命令,而后选择需要的版本即可:

1
sudo manjaro-downgrade xxx

默认情况只会提供已下载的旧版本安装包缓存,如果需要其他版本,需要首先设置shell环境变量DOWNGRADE_FROM_ALA=1。另外访问ALA也需要代理,可以使用proxychains。

注意降级可能造成软件包版本不兼容,有一定风险。

自定义启动器项

需要应用或者自己的脚本在启动器(就是按win/meta键显示的类似windows开始菜单的界面)中显示的话,可以进到/usr/share/applications/目录中自行添加项(可以复制一个已有的程序或者原来的火狐的启动项照着改)。

.desktop文件的格式可以看ArchlinuxWiki的介绍,或者这里

常用应用安装与配置

大部分应用直接yay安装即可,这里给出部分有坑的应用安装和配置的方法以及遇到的问题。

firefox

预装的火狐是国际版,和中国特供版的数据不通用。一般推荐用国际版,因为中国版有导航主页和收藏夹广告。最近还屏蔽了大陆用户安装去广告插件,反正就是夹带了许多私活。

国际版使用中国同步服务器

参考https://bbs.deepin.org/zh/post/203348

使用火狐安装国内谋智公司附加组件管理器,然后打开设置,选择“同步”,拉到最下面就会有一个切换服务的链接,点击“切换到本地服务”(不安装扩展是没有这个选项的)。成功之后正常登录原来国内版账号即可。

此时已经用不到这个扩展了,可以禁用(除非你需要来回切换服务器)。

解决打开外部链接时复制到~/.cache/kioexec/krun

现象:将firefox设置为默认浏览器,并且在其他应用打开链接时,会出现“正在复制到~/.cache/kioexec/krun”的通知,而后firefox会打开一个形如file:///home/[username]/.cache/kioexec/krun/93407_0/unnamed的网页文件,而不是直接访问地址栏。

原因:这个问题通常是由于安装或者卸载遗漏的旧的.desktop启动项造成的,如果使用的是正常的国际版firefox,其启动器文件应位于/usr/share/applications/firefox.desktop;但如果因为安装了国内特供版本或者一些其他的遗留原因,会在~/.local/share/applications留下形如userapp-Firefox-132500.desktop,或者另一个firefox.desktop。这个启动器没有配置好scheme,但会在默认浏览器设置中被优先使用。

解决方法:将~/.local/share/applications下的firefox有关启动项都删除。打开系统设置-应用程序-默认应用程序,系统设置里的默认浏览器名称从“火狐浏览器”文字自动变为“Firefox”。如果没有,就手动再设置一下。

此时再点击外部链接就能正常跳转网页了。

输入法

fcitx

ArchlinuxWki的解释十分详细,不再赘述。

要点是修改.xprofile进行环境变量设置,以及将“键盘-US”排在第一位。

搜狗

需要先手动安装fcitx-qt4。

安装之后在fcitx配置中启用。

目前我遇到候选词乱码以及无法打开搜狗拼音设置,查到的使用rm -rf ~/.config/Sougou* sogou*的方法对我没有效果。


更新:

直接安装fcitx-sogoupinyin即可(目前的依赖是fcitx-qt5),一次大更新之后已经是使用体验很好的输入法了。

微信

2024更新:

微信提供了新版原生linux版本,可以使用yay安装使用bwrap沙盒的版本:

1
yay -S wechat-universal-bwrap

目前功能不是特别完整,包括没有朋友圈、无法撤回、引用消息,一些特殊消息看不见。 linux版本数据文件夹与原Wechat Files不互通。


可以直接使用yay安装deepin-wine-wechat。

调整界面DPI

按照项目主页的介绍更改deepin-wine dpi即可:

1
env WINEPREFIX="$HOME/.deepinwine/Deepin-WeChat" deepin-wine winecfg

然后在“显示”选项卡更改dpi到合适的大小,我的1080P屏幕选择125dpi差不多。

根据wine官方的文档,DPI修改是通过修改注册表实现,如果嫌每次更新之后手动修改太麻烦,可以写成脚本:

1
2
3
4
5
6
7
8
9
env WINEPREFIX="$HOME/.deepinwine/Deepin-WeChat" deepin-wine5 \
    reg add "HKLM\System\CurrentControlSet\Hardware Profiles\Current\Software\Fonts" \
    /v LogPixels /d 0x0000007d /t REG_DWORD /f
    # name          value       type       no-prompt
if [ $? -eq 0 ]; then
    echo "done"
else
    echo "failed, make sure WeChat is not running and retry."
fi

保存为shell脚本,然后chmod +x xxx.sh之后每次更新后运行一次即可一键修改。

用户文件位置

默认情况下微信存储的用户文件位于$HOME/.deepinwine/Deepin-QQ/drive_c/user/$USERNAME/My Documents/Wechat Files,如果使用双系统,可以通过软链接将win下的用户文件目录链接到此处,这样就可以实现双系统微信聊天记录同步。也可以通过同样的方法将用户文件移到其他分区用于缓解空间紧张。

注:不推荐直接在微信设置中修改存放位置,wine在访问模拟的win系统外的文件时兼容性不是很好。

QQ/TIM

2022-12-30更新:

腾讯推出了基于Electron的新版linuxqq,官网链接

或者可从AUR下载:

1
yay -S linuxqq

腾讯有官方linuxqq,但是界面、功能很古老,使用久了会闪退。

可以同样使用上述方法打包的deepin-wine-qq/deepin-wine-tim:

1
yay -S deepin-wine-qq

安装好后同上述方法修改DPI设置。

除此之外还需替换dwrite.dll,否则会闪退、崩溃。

替换dwrite.dll

从windows系统中的C:\system32中找到Dwrite.dll,替换掉$HOME/.deepinwine/Deepin-QQ/drive_c/windows/system32/dwrite.dll

然后同样在deepin-wine-qq的winecfg中找到函数库,添加dwrite,方式为原装先于內建。

如果需要自动化,命令行方法为:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# set native,buildin
env WINEPREFIX="$HOME/.deepinwine/Deepin-QQ" deepin-wine5 \
    reg add "HKEY_USERS\S-1-5-21-0-0-0-1000\Software\Wine\DllOverrides" \
    /v dwrite /d "native,builtin" /t REG_SZ /f
    # name          value         type       no-prompt
if [ $? -eq 0 ]; then
    echo "done"
else
    echo "set native,buildin failed, make sure QQ is not running and retry."
fi

其中注册表路径中的S-1-5-21-0-0-0-1000可能与设备相关,自行修改。

强制宋体问题

如果使用的linux系统安装了宋体,TIM将会默认强制使用宋体,可能还会造成闪退卡顿问题。如果觉得宋体太难看可以按这个方法替换为伪装的微软雅黑。

用户文件位置

可以用与微信相同的方法将默认的$HOME/.deepinwine/Deepin-QQ/drive_c/user/$USERNAME/My Documents/Tencent Files用户目录链接到win下的用户目录或者其他分区。

WPS

直接用yay安装wps-office。

中文界面

再安装wps-office-mui-zh-cn,然后重启wps应该会自动切换语言。没有的话试试在右上角的字典图标。

字体缺失

不用管网上那些复杂的字体移来移去的方法啦,直接再安装ttf-wps-fonts。

打开字体发虚

https://cloud.tencent.com/developer/article/1937211

1
env QT_SCREEN_SCALE_FACTORS=1

导出PDF的过程中遇到错误

根据arch wiki关于WPS的描述,其pdf功能依赖于 libtiff5.so.5 ,而系统更新后提供的是 libtiff5.so.6+导致依赖异常。解决方案:

1
yay -S libtiff5

或者创建sudo ln /usr/lib/libtiff.so.6 /usr/lib/libtiff.so.5的硬链接狸猫换太子。

加粗的字体糊成一团

https://home.wps.cn/topic/3137

解决方案:降级freetype2到2.13.0-1

首先需要安装downgrade软件包,略过,而后执行降级:

1
sudo DOWNGRADE_FROM_ALA=1 downgrade freetype2

在列表中找到2.13.0-1版本回车,而后完成安装过程即可。

完成后重启WPS,字体恢复正常

钉钉

2021.12.25更新:

钉钉官方已经推出了linux版本,可在官网查看。也可使用yay安装AUR打包好的版本:

1
yay -S dingtalk-bin

高分屏用户可能需要在钉钉设置里调整一下缩放。

目前官方版本支持已经很完善,观察了一下除了直播其他大部分功能都支持了。


deepin-wine没有已经打包好的钉钉,已有的可直接安装的版本是利用网页版和electron包装的,有很多限制(不能查看加密消息等)。据说有官方的linux版本泄露,但是同样不能看群直播和其他限制。

我直接用wine安装的效果还不错。

首先下载钉钉的exe安装包,然后在该目录下执行wine Dingtalk-xxx.xx.exe。之所以用wine是因为用deepin-wine会报32位和64位的错,没有解决。

然后按指示正常安装即可。

重点来了:

使用env WINEPREFIX="yourDingTalkPrefix" wine winecfg打开钉钉的wine配置,其中wineprefix按照你的安装路径确定。

然后选择windows版本为win7;

在“函数库”选项卡新增如下几个函数库顶替:msvcp120,msvcp60,riched20,riched32。

上面这一步是重中之重,不做的话会导致钉钉以各种方式崩溃。

然后再在“显示”选项卡取消“允许窗口管理器装饰窗口”,以及调整一下dpi。

这样之后钉钉基本可以正常使用所有功能

有时钉钉最小化之后会残留一个阴影,重新最小化或者最大化一下再最小化可以解决。


2020.8更新:换用封装好的deepin.com.dingtalk.com软件包,更加稳定不容易闪退。

直接使用yay安装:

1
yay -S deepin.com.dingtalk.com

外观与美化

统一QT/GTK程序风格

如果系统中同时使用GTK程序,采用默认风格会造成严重的风格割裂。因为默认的GTK/GNOME程序使用Adwaita主题。解决方法如下:

首先为GTK安装KDE默认的breeze主题:

1
yay -S breeze-gtk

而后进入设置-外观-应用程序风格,选择右下角配置GNOME/GTK应用程序风格-在下拉菜单中找到breeze主题并选择,最后点击应用即可。

系统信息监控部件(CPU/RAM/Network/Temprature)

分别通过如下几个部件实现:

  • SysMon
  • Network widget
  • Thermal Monitor Fix

系统自带的系统监视器也可以监视CPU和内存、网速,但是两侧有大量留空,很不美观;

Thermal Monitor 原版在点开配置时会使整个桌面环境崩溃,搜索带有Fix后缀的版本以解决该问题。

最后效果如图:

系统信息监控

透明任务栏

使用部件Panel Transparency Button实现,在编辑模式拖动到任务栏面板时会显示一个滑块开关,打开则启用透明样式。退出编辑模式时这个开关会自动隐藏。

功能增强与使用技巧

启用sudo密码回显

https://linux.cn/article-9376-1.html

默认情况sudo输入密码时是什么也不显示的,可以避免其他人看到你的密码长度,但是很容易输错。痛疼下述方法可以在输入密码时显示"*“号。

1
2
sudo cp /etc/sudoer{,.bak} # 备份/etc/sudoers
sudo visudo

此时会以默认终端文本编辑器(通常是vi)打开配置文件。在最后加上一行:

1
Defaults pwfeedback

保存退出,重启终端,此时再使用sudo输入密码时就能看到“*”号回显了。

关闭选区自动复制

https://www.jianshu.com/p/c6e0c318f279

默认配置下,只要拖拉光标选择一些字符,就会被自动复制到系统的剪贴板上。解决办法就是,状态栏剪贴板右键 -> 配置剪贴板 -> 常规 -> 勾选[忽略选区]

文件快速搜索与对话框跳转

windows下有Listary能够大幅增强文件搜索、跳转操作,下面的步骤可以在Manjaro获得近似的体验。

开启文件索引

设置-搜索-文件搜索,勾选启用文件搜索,并关闭索引文件内容(加快速度),然后在下面的文件夹中添加需要索引的文件夹。

文件快速搜索

按Alt+F2可以打开Krunner,输入内容即可搜索文件和文件夹。

注意:Krunner在搜索中文时需要使用形如”*文件夹*“的方式添加通配符来搜索。

如果需要有更好的搜索体验,可以使用Fsearch

对话框快速跳转

在浏览器下载文件,或者在应用中打开、保存文件时,往往需要一层层点到所需的文件夹或者文件,十分麻烦。win下的Listary的一大特色功能就是支持对话框路径快速搜索跳转。

在Manjaro下,在打开对话框时,可以使用Alt+F2呼出KRunner并搜索需要的文件夹或者文件,当搜索出结果时,将显示的结果项拖动到对话框的窗口(会显示一个绿色边框),然后松开即可自动跳转。

注意:该方法支持大部分对话框,但在某些使用单纯QFileDialog的应用中不起作用。

Dophin添加文件右键快速预览

Dophin是默认的文件管理器,使用F11可打开信息面板,可以预览部分文件,但是无法预览代码、PDF等。在windows下可使用QuickLook,在KDE下可使用如下方法勉强使用。

预览程序

以下两个是采用的预览程序,可用yay安装。(还有一个sushi适用于GNOME,在KDE下不太兼容)

  • gloobus-preview(程序源码、图片、音视频、PDF)
  • hawkeye-quicklook-git(Markdown,PDF,HTML)

使用方法(以gloobusPreview为例):在命令行执行gloobus-preview [file],即可预览文件。

添加项到dophin右键菜单

首先查询菜单文件存放位置:

1
kf5-config --path services

然后编写菜单文件(以gloobusPreview为例):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
[Desktop Entry]
Type=Service
X-KDE-ServiceTypes=KonqPopupMenu/Plugin
MimeType=inode/directory;application/octet-stream
Actions=gloobusPreview
X-KDE-Priority=TopLevel

[Desktop Action gloobusPreview]
Exec=gloobus-preview %u
Icon=gloobus-preview
Name=Preview file using gloobus-preview
Comment=Preview file using gloobus-preview

其中Exec是执行的命令,%u是文件占位符,在点击菜单时会替换为选取的文件。

MimeType项用于指定该菜单生效的文件类型,此处选取任意目录和文件。

X-KDE-Priority=TopLevel用于指定在顶层右键菜单。

保存菜单文件为xxx.desktop到前面命令的目录即可生效。

快捷键翻译

首先安装依赖的如下软件包:

1
yay -S kdialog xclip translate-shell

打开设置-工作区-快捷键-自定义快捷键,编辑-新建-命令,添加快捷键命令:

1
 `kdialog --title "Translation" --msgbox "`xclip -o |trans -b `"

之后选中文本再按下快捷键即可得到翻译结果。当然translate-shell也可用其他翻译程序替代。

截图OCR

windows中有天若OCR,linux也可以通过自定义快捷键命令的方式实现一键截图OCR。

首先安装依赖软件包,这里选取tesseract,支持离线OCR:

1
yay -S tesseract tesseract-data-chi_sim spectacle kdialog xclip

而后在合适的位置新建执行脚本,命名为screenOcr.sh:

1
2
3
4
5
6
#/bin/bash
spectacle -r -b -n -o /tmp/ocr.png
result="`tesseract /tmp/ocr.png stdout -l chi_sim`"
result=$(sed -E 's/ //gm;t;d' <<<"$result") # 清除不必要的空格
kdialog --title "识别结果" --msgbox "$result"
echo ${result}|xclip -selection clipboard

赋予执行权限:

1
chmod +x screenOcr.sh

而后用前述同样的方法为该脚本添加自定义快捷键,即可实现截图OCR功能。


0%