Manjaro XFCE 安装和调教
这两天终于下定决心再次转投Manjaro,顺手记录下安装踩坑调教全过程。
最后更新时间:2021-09-21
坑爹的Win10
首先当然还是要吐槽下win10啦,各位不想看的可以直接跳到下一部分~
最开始是笔记本长时间无操作会锁屏,重新解锁之后,WIFI就会莫名其妙的丢失连接。当时感觉问题也不大,也就是手动点两下重新连接WIFI的事,所以也没想着换系统。
前一阵子搭建了NAS,然后发现其它设备都可以匿名访问,唯独Win10要求输入帐号密码。输入就输入吧,然后又发现每次启动之后都会提示“无法重新连接所有网络驱动器”,然后又得重新输入帐号密码。网上搜了一圈,发现在v2ex已经有讨论帖。仔细一看,居然是2015年就已经出现的bug,硬生生拖了5年,终于在win10(ver 2004)修复了。
既然修复了,那就去更新系统呗。Windows Update吭哧吭哧忙活半天,也没有给我更新到ver 2004,只是升级到了ver 1909。一进系统我就发现File Explorer不对劲,上面的地址栏都可以跑马了,感情这是越更新越丑啊。刚刚好那天下午需要打印一点文件,然后就发现这次更新直接把Print Spooler服务给搞瘫痪了。只要我一试图打印,Print Spooler服务就会自动关闭。最后弄的没办法了,开了个虚拟机来完成打印的。
打印完我就在想,win10是越来越不靠谱了啊,看来是时候再次投奔Linux系统了。
我用Linux断断续续也有两三年了,不过那会儿一直都是双系统。最开始用的是Ubuntu 16.04,后来又尝试过Raspbian (Buster)和Manjaro。要说印象最好的应该就是Manjaro了,没有繁琐的配置,但是作为滚动发行版又可以用到最新的软件,还是挺香的。
所以就这么拍板决定用Manjaro了~
Manjaro下载安装
Manjaro有好几个自带不同DE的版本,都可以在下载页面找到。我个人偏向xfce,因为相对比较轻量,而且之前用的树梅派也是xfce。据说kde也很不错,兼顾了特效、功能、轻量,用的人也挺多,有兴趣的可以试试,我是不想折腾了。
下载.iso
文件还是相当容易的,如果直接下载比较慢的话,可以通过种子来下载。
当然,下载完镜像之后还需要制作启动盘,一般都用Rufus,准备个U盘就行了。
但是我手头没U盘,咋办?这里我用的是DriveDroid
这个app来把拥有root权限的安卓手机变成启动盘。只需要把Manjaro镜像文件拷进去,然后挂载,就可以当启动盘用了,还是相当方便的。
安装基本上就是一路确定,如果用不到休眠(hibernate),那么swap分区可以不给。办公套件建议先选择不装,毕竟LibreOffice使用体验确实不咋地,打开中文文档的时候感觉卡顿特别严重。安装完成之后可以去下载WPS,体验吊打各种开源Office软件。
sudo免密码
每次sudo
都要输入密码挺烦的,不过sudo免密码(NOPASSWD)会极大的降低安全性,这个各位自己衡量。
输入下面命令来打开sudoers,这里编辑器指定为nano,因为简单好用。
1 | sudo EDITOR=nano visudo |
接下来有两种处理方式,可以根据自己喜好选择。
给自己免密码
这个方案就特别简单粗暴,不过仅对自己有效,如果是多用户的话就得写很多行。
在sudoers文件的最后,加上下面这句,这里需要把<YOUR_USERNAME>
替换成自己的用户名。
1 | <YOUR_USERNAME> ALL=(ALL) NOPASSWD: ALL |
给wheel组免密码
这个方案比较一劳永逸,修改一次之后就不需要再动sudoers文件了。
首先需要把自己加入wheel组,不过这一步Manjaro已经代劳了,可以通过下面任意一条命令确认是否如此。
1 | # 查看wheel用户组的成员 |
然后把下面这行取消注释,这样以后还有其他用户要免密码的话,可以直接把用户添加到wheel用户组就可以了。
1 | %wheel ALL=(ALL) NOPASSWD: ALL |
更新软件包
基本上装完系统第一件事就是先更新各类软件包,这个指令要跑好一会儿。
1 | sudo pacman -Syu --noconfirm |
安装常用工具
我一般会安装这些工具:
- neofetch:展示系统信息
- tldr:精简版man page,懒人专属
- you-get:下载视频必备工具,直接贴视频网站的链接就行
- aria2:多线程下载工具
- yay:(必备)AUR的包管理器
1 | sudo pacman -S --noconfirm neofetch tldr you-get aria2 yay |
pacman不会用的话,直接输入tldr pacman
就可以看到最常见的用法了,压根不用看又臭又长的man page。
悄悄说一声,如果一个命令不知道是干啥的,可以使用whatis
命令查询,返回的结果是man page的NAME部分。
还有一个没用的小工具:
- lolcat:把输出变成彩虹色
字体配置
修正终端字体间距
这个问题好像是只有用中文系统才会看到,英文系统是正常的。反正换个字体就好了,比如安装文泉驿字体。
1 | sudo pacman -S --noconfirm wqy-microhei |
查看可用字体
已安装的字体可以通过fc-list
配合grep
来查找。如果你确定安装了某个字体但是没找到,可以用fc-cache -f -v
刷新字体缓存。下面给出搜索文泉驿
字体的例子
1 | $ fc-list | grep -i Micro |
fc-list :lang=zh
可以列出全部中文字体。
全局emoji支持
fcitx5是支持emoji的输入的,但是试图在Chrome地址栏输入emoji会显示为黑框,所以需要配置全局emoji的支持。
先安装noto-fonts-emoji,命令如下
1 | sudo pacman -S --noconfirm noto-fonts-emoji |
创建/etc/fonts/local.conf
并写入如下内容
注意:对于sans-serif,这里首选的是Noto Sans CJK SC而不是参考文章中所给出的Noto Sans。老外不用中文,所以配置不能直接照抄,否则可能会出现莫名其妙的问题。例如在用Mono来运行C# WinForm程序的时候,SystemFonts.DefaultFont.Name就会是Noto Sans而不是Noto Sans CJK SC,从而导致汉字全都显示成方框。
1 | <?xml version="1.0"?> |
然后在Settings > Appearance > Fonts 把字体设置为Noto Sans CJK SC Regular就可以了。
参考文章:Tutorial: How to enable system-wide color emoji support
安装Windows字体
Linux上面当然没有Windows字体(例如Times New Roman),所以在打开一些docx
文档的时候,排版会出问题。使用下面命令可以安装Microsoft核心字体包,不过字体很少,可能不管用。
1 | yay -S --noconfirm ttf-ms-fonts |
当然还有其它带版权的Windows字体,可以通过Microsoft fonts - ArchWiki了解更多。这里推荐ttf-ms-win10这个包,涵盖了一百多种字体。由于带版权,所以ttf文件需要自行从Windows系统里头提取出来,具体操作流程可以阅读对应PKGBUILD顶部的注释部分。在执行makepkg的时候,可能会出现校验错误,因此建议带上--skipchecksums参数。如果选择安装ttf-ms-win10,那就不用安装ttf-ms-fonts,因为这两个包冲突。
安装输入法(fcitx5)
这里直接推荐新版的fcitx5,原来的fcitx就不要再用了。
首先安装fcitx5全家桶(fcitx5,fcitx5-qt,fcitx5-gtk,fcitx5-configtool)。
1 | sudo pacman -S --noconfirm fcitx5-im |
然后安装中文输入法和zhwiki词库。
1 | sudo pacman -S --noconfirm fcitx5-chinese-addons |
现在fcitx5-configtool已经普及,可以直接通过图形界面来修改配置,因此不再推荐手写配置文件。直接右键点击fcitx5托盘图标,然后点配置,就可以添加输入法了。注意拼音输入法添加的是“pinyin”而不是“键盘 - 汉语”。
激活输入法就是Ctrl
+ Space
,输入法切换就是熟悉的Ctrl
+ Shift
,在中文输入法下可以用Left Shift
临时切到英文。
如果还要安装日语输入法,输入下面命令安装fcitx5-mozc(Google日语输入法开源版),然后在fcitx5配置界面添加即可。
1 | sudo pacman -S --noconfirm fcitx5-mozc |
设置开机启动
Settings > Session and Startup > Application Autostart,点击add就可以填写内容添加了。下面是我填写的内容,仅供参考。
1 | Name: fcitx5 |
注:KDE不需要设置这个
修改环境变量
在~/.xprofile
添加如下内容
1 | export GTK_IM_MODULE=fcitx |
修改主题
看了一圈,一堆教程都推荐Fcitx5-Material-Color,看图例感觉还不错,于是依葫芦画瓢装个试试。
1 | sudo pacman -S --noconfirm fcitx5-material-color |
主题在 附加组件 > 经典用户界面 开启。
安装常用软件
Linux原生软件
我一般会安装这些软件:
- Google Chrome:谷歌浏览器的同步还是很方便的
- Filezilla:开源的文件传输软件
- WPS Office:比开源的LibreOffice好用多了
- wps-office-mui-zh-cn:WPS中文语言包
- wps-office-fonts:方正字体
- ttf-wps-fonts:数学公式字体
- Telegram:里头很多Manjaro大佬
- Discord:聊游戏专用
- Virtualbox:开源的虚拟机
- virtualbox-ext-oracle:一些闭源插件(USB3.0支持等)
- SMPlayer:个人感觉比VLC好用
- Anki:背单词挺不错
1 | yay -S --noconfirm google-chrome |
汉化包
这些汉化包其实装不装都行的,感觉平时也很少用这几个软件。
1 | sudo pacman -S --noconfirm firefox-i18n-zh-cn |
疑难杂症
WPS安装报错
如果出现 Cannot find the strip binary required for object file stripping,代表少了binutils
这个包,所以执行下面命令即可。
1 | sudo pacman -S --noconfirm base-devel |
WPS界面字体太丑
可以在右上角的皮肤中心设置字体,我用的 WenQuanYi Micro Hei + 125% 缩放
Firefox字体太丑
火狐默认的字体实在太丑,这里可以在 Fonts and Colors 进行设置。Latin 和 Simplified Chinese 都要改。
1 | Serif: WenQuanYi Micro Hei |
Chrome在每次开机后首次启动要求keyring密码
这个问题貌似只有xfce下才会出现,一个简单的处理方法就是设置为空密码,不过安全性可能会下降。鱼和熊掌不可兼得,这个自行取舍。
使用如下命令备份keyrings后删除,如果只存放了Chrome的keyring就不需要备份,直接删除就行
1 | cp -r ~/.local/share/keyrings ~/keyrings-backup |
然后重启系统,再次打开Chrome,就会重新要求设定keyring密码。这里直接敲回车(空密码),会提示“By choosing to use a blank password, your stored passwords will not be safely encrypted. They will be accessible by anyone with access to your files.”,这里直接点continue即可。
参考文章:Chrome harasses me for a keychain password at startup
浏览器默认缩放值
使用高分屏的话,浏览器的字会很小。平时Win10有全局150%的缩放,但是Manjaro就需要自己动手设置。
个人感觉缩放设置在125%会比较舒服。
Chrome:Settings > Page zoom
Firefox:Preferences > Zoom > Default zoom
Chrome用触摸板滑动没有惯性
这个功能叫smooth scrolling(用inertial或kinetic也能搜到这类问题),Chrome好像不支持libinput,所以目前无解。
Bug tracker:763791 - Please support libinput kinetic scrolling. - chromium
Discord强制要求更新
虽然discord在linux下表现很棒,但是强制更新这个确实有点恶心。有时候Manjaro的仓库里头还没有更新discord版本,但是discord客户端不更新就不让用了。好在客户端本身并不是真的不让登录,只是简单的检测了下版本号,所以应该知道怎么解决了吧。
首先找到discord的路径,如下所示
1 | $ ls -al `which discord` |
然后在discord文件夹找到./resources/build_info.json
,修改里头的版本号即可。
参考文章:Discord won't open on Linux when an update is available
VLC看NAS上的视频经常断流
这个问题很神奇,不管是Windows还是Linux,只要用VLC播放就会间歇性断流,在 Preference > Input / Codecs > Advanced 修改File caching和Network caching也不管用。
所以我直接换成了SMPlayer,然后就再也没出现过断流的问题。
QQ & Wechat
QQ和微信这两个一直都不太好搞,值得单独拿出来说说。目前看来基本有三套可行方案。
Virtualbox
最容易的就是直接在Virtualbox里头跑完整的系统,然后使用seamless mode(Right Ctrl + L),不过视觉效果看起来不太好,QQ周围会有一圈Windows的背景。
当然,在虚拟机下运行的效果肯定是最好的,也不会出什么奇怪的毛病,就是占用资源会比较多。QQ截图功能只能在虚拟机内使用,并且使用的也是虚拟机内的输入法。
LinuxQQ
官方也有发布Linux版QQ,不过UI十分简陋,功能也不全,简直是梦回十年前。最麻烦的问题,还是不能用帐号密码登录,必须要用手机扫码,不知道用意何在。
目前最新版是2020/4/9发布的2.0.0 Beta2
,已经年久失修,不建议使用。
deepin-wine
这里重点说下deepin-wine
方案。虽然各种小毛病挺多的,不过总体表现不错。AUR上面有大佬打包好的,基本上是开箱即用。而且更香的是,deepin-wine
方案的QQ截图是可以作用于全局的,只要QQ拥有焦点,就可以使用截图热键(Ctrl + Alt + A)。
这里以TIM QQ为例,使用下面命令安装
1 | yay -S --noconfirm deepin-wine-tim |
安装之后,输入法应该是直接可以用的。如果不行,那就在/opt/deepinwine/apps/Deepin-TIM/run.sh
文件头部的WINE_CMD="wine"
下面添加如下代码。
1 | export GTK_IM_MODULE=fcitx |
deepin-wine疑难杂症
字体太小
先退出QQ/微信,然后在终端运行下面代码
1 | # 原版wine运行这个 |
在弹出来的wine设置面板中找到显示 > 屏幕分辨率,修改dpi即可(建议120dpi)。
个人文件夹被占用
这个是因为QQ进程有残留,在启动之前杀掉就可以了。
1 | kill $(ps aux | grep '[T]IM.exe' | awk '{print $2}') |
这里我是直接修改了桌面的launcher,使用文本编辑器打开launcher,将Exec那行替换成下面这个即可
1 | Exec=sh -c "kill $(ps aux | grep '[T]IM.exe' | awk '{print $2}'); '/opt/deepinwine/apps/Deepin-TIM/run.sh' -u %u" |
表情/@人/右键无效
QQ自带的表情(不是emoji)发不出去,然后右键菜单(例如回复指定消息,撤回)无法使用,群里也没法在输入框中@其他人。
解决不能发表情/@其他人:设置(Settings) > 窗口管理器(Window Manager) > 焦点(Focus) > 取消勾选自动聚焦新创建的窗口(Automatically give focus to newly created windows)。
解决不能右键使用:设置(Settings) > 窗口管理器微调(Window Manager Tweaks) > 焦点(Focus) > 取消勾选遵照标准的ICCCM焦点提示(Honor standard ICCCM focus hint)。
然后就会发现新建终端之后没法直接输入,需要点击窗口获取焦点才行。根据issue下方的讨论跟帖,只要重新勾选自动聚焦新创建的窗口就行了,而且QQ表情不会受影响。我试了下,果然如此,也不知道是什么原理,反正问题解决了就行。
参考文章:关于xfce环境下qq不能发表情和右键使用的解决办法 #87
配置编程环境
基本上我会安装这些东西:
- R(R,R Studio)
- Java(jre-openjdk,maven)
- JS(nodejs,npm)
- GitHub Desktop(鼠标点点点就可以commit和push)
- Unity3d
- Android Studio
- VSCode
- SQL(mariadb,mysql-workbench)
- Docker
1 | yay -S --noconfirm r rstudio-desktop-bin |
VSCode
其中VSCode还是需要更进一步的配置。
VSCode的配置文件在~/.config/Code - OSS/User/settings.json,这里给出我的配置
1 | { |
当然插件是必不可少的,这里直接通过命令行安装,省事儿。
1 | code --install-extension ms-ceintl.vscode-language-pack-zh-hans |
MonoDevelop
如果需要编译运行C# (.Net)程序,那建议直接安装全家桶:
- mono
- monodevelop-bin
- mono-msbuild
- mono-msbuild-sdkresolver
1 | sudo pacman -S --noconfirm mono |
MariaDB
数据库装完之后,如果直接运行会报下面这个错,特别坑。
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/run/mysqld/mysqld.sock' (2)
由于Arch系不会自动安装,所以要手动执行下面这句。。。
1 | sudo mariadb-install-db --user=mysql --basedir=/usr --datadir=/var/lib/mysql |
接下来就可以启动mariadb服务了。
1 | sudo systemctl start mariadb |
然后这里启动安全配置助手,通过交互式环境来设置安全选项,下面的选项仅供参考。
1 | $ sudo mysql_secure_installation |
最后用下面命令就能进去了,sudo情况下貌似敲什么密码都能进去,因为本身已经是root用户。
1 | sudo mysql -u root -p |
进去之后,如果想不带sudo使用mariadb,或者想用GUI来操作数据库,那还需要执行额外几个步骤,否则会出现Access Denied。
首先执行下面语句查看authentication_string,可以发现root对应的是invalid,说明此时是无法直接用账户密码登录的。
1 | MariaDB [(none)]> SELECT user,authentication_string,plugin,host FROM mysql.user; |
这个时候就需要使用下面语句设置密码,这里把密码设置成password。完成之后再查看authentication_string,就不是invalid了。顺带吐槽下,这一步mariadb的语句居然跟mysql不一样。。。
1 | MariaDB [(none)]> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('password'); |
到这里就大功告成了,可以使用MySQL Workbench连接,也可以不带sudo直接进入mariadb了。
Docker
首先启动docker服务并设置为开机启动
1 | sudo systemctl start docker.service |
然后把当前用户加入docker组(以后不需要sudo来跑docker),改完之后记得重启电脑
1 | sudo usermod -aG docker $USER |
Linux游戏
在Linux上玩游戏也不是不行,只是有时候没法开箱即用,要稍微折腾一下。
如果是从 steam 下载的话,还是能找到很多原生linux游戏的。不过绝大部分游戏都还是只支持Windows,所以就要用steam提供的proton(wine改版)来跑。
游戏运行的情况可以在ProtonDB查看。
下面就列举我亲自试过并且跑通的游戏~
千恋万花(steam版)
TLDR:proton 4.11 + WINED3D + wmp9
使用 proton 4.11,启动选项如下:
1 | PROTON_USE_WINED3D=1 %command% |
初次启动,steam会安装一些额外的内容。游戏成功跑起来之后就可以关掉,然后执行下面的命令安装Windows Media Player 9(用于播放OP / ED)。
1 | protontricks 1144400 -q wmp9 |
正常情况下不会报错的,脚本可以一路跑完。如果安装时报错,或者游戏内播放视频时报错崩溃,那大概是你中途切换过 proton 的版本。这时候不慌,直接用GUI删掉 wineprefix(放心,并不会删掉游戏本体),重新“初次”运行游戏,然后再安装 wmp9。
首先是打开GUI~
1 | protontricks --gui |
然后选择 Select the default wineprefix,最后选择 Delete ALL DATA AND APPLICATION INSIDE THIS WINEPREFIX。到这里就成功删除 wineprefix 了。
如果一路顺利,那么应该就能完美运行了,steam云存档也没问题~
最后稍微提一下,关于 Proton-GE-6.16,我也测试了。首先 Proton-GE 跟 protontricks 不兼容,不过可以自己动手写一个 Protonfixes 的 Python 脚本。其次,哪怕我装上了 wmp9 或者 wmp11,也一样无法播放视频。
声卡驱动
一般来说,声卡驱动都是开箱即用的。但是我运气不是那么好,亦或是我这个笔记本(Acer sf315-52)比较坑,反正就是没声音。具体表现是检测不到声卡,然后右下角声音设置显示的“dummy output”。当然,在开始动手之前,首先得确认声卡在Windows下没有问题~
一般可以执行下面这些命令来收集信息,然后就可以用一些关键字(比如声卡型号,设备名称,驱动名称等)搜索了。
1 | $ aplay -l |
1 | $ inxi -F |
这里我搜的“intel corporation sunrise point-lp hd audio no sound”,翻了几条就找到解决方案了。
根据[SOLVED] Sunrise Point-LP HD audio quit working after update这个帖子,我也依葫芦画瓢跑了下面这些命令,结果跟楼主的结果一模一样。
1 | $ sudo dmesg|grep -i sof |
于是乎直接抄答案就完事了~
1 | # 在 /etc/modprobe.d/inteldsp.conf 加入下面这行 |
打印机
Manjaro自带CUPS(Common Unix Printing System),可以直接通过Web UI来进行管理,不过这里用命令行就更快更方便。
下面以我的打印机Brother HL-L2320D为例,各位自行替换成自己的型号。
首先需要准备ppd文件(打印机描述文件)。Manjaro自带了很多来自Foomatic和Gutenprint的ppd文件,所以执行下面命令先看看有没有。
1 | lpinfo -m | grep "HL-L2320D" |
如果有那就万事大吉,没有也没关系,这时候去AUR看看有没有别人构建好的ppd文件。我运气还不错,已经有现成的可以下载。如果AUR也没有,那么就要自行提取ppd文件了,兄弟打印机的提取方法可以看Packaging Brother printer drivers - Arch Wiki。
1 | yay -S --noconfirm brother-hll2320d |
搞定ppd文件之后,再执行刚才的lpinfo
命令就能看到ppd文件的路径了。
1 | $ lpinfo -m | grep "HL-L2320D" |
接下来只需要指定打印机名称,地址和ppd路径,就搞定了,比如输入像下面这样的命令
1 | printername="HL-L2320D" |
到这里打印机就已经搞定了,不过如果要进一步设置打印选项,可以使用lpoptions -l
查看可设置项目。下面给出一例,实际可设置项目很多,这里篇幅所限只节选部分输出。
1 | $ lpoptions -l |
上面这个是双面打印的相关设置,默认是关闭的,这里要用下面命令打开
1 | lpadmin -p HL-L2320D -o Duplex=DuplexNoTumble |
这个地方有个大坑,正确方法当然是用lpadmin
,错误方法是使用lpoptions
。因为是要在GUI环境下打印,所以只有通过lpadmin
修改,其它程序才能看到。lpoptions
也可以跟同样的参数修改,不过只能被lp
和lpr
这类基于命令行的打印程序看到。
大坑参考的是Setting CUPS defaults with lpoptions vs web interface
CUPS的命令行管理文档可以看Command-Line Printer Administration
触摸板
跟Windows一模一样的应该只有“双指点击”(等同于右键单击)
双指滑动和轻按
Manjaro双指滑动的方向跟Windows是相反的,而且触摸板轻按无效。好在这些配置可以随意改。
在 Settings > Mouse and Touchpad 可以找到键鼠相关设置,然后在Device下拉菜单那里选中自己的触摸板。在Buttons and Feedback栏目勾选Reverse scroll direction,然后在Touchpad栏目勾选Tap touchpad to click,就搞定了。
更多手势
如果需要更多手势,需要执行下面命令安装相关软件
1 | sudo pacman -S --noconfirm libinput-gestures |
接下来依次执行下面命令
1 | # 把自己(当前用户)加入input组 |
然后就打开gestures添加手势就行了。如果要抄配置,那就在~/.config/中找到libinput-gestures.conf,然后在文件末尾写入。下面给出我的配置。
1 | # 浏览器前进 |
设置时钟
个性化时间日期显示
打开Clock的设置,居然不能直接从GUI设置24小时制,这怎么能忍?好在可以自定义格式,左下角有个Help,可以看到时间日期格式清单。
这里我使用的是%F %R
,等价于%Y-%m-%d %H:%M
。
修正时区问题
这个问题我记得是Linux和Windows看待电脑硬件时间的方式不太一样。如果时区正确设置但是时间仍然不对,运行下面命令就好了
1 | sudo timedatectl set-ntp 1 |
托盘显示电量
右下角只有电池图标,点进去才能看到剩余电量,就感觉这个图标特别鸡肋,希望能够在外面就显示剩余电量百分比。
进入Settings > Panel > Items,添加Power Manager Plugin或者Battery Monitor,这个就看自己喜好了。
Power Manager Plugin属于xfce4-power-manager,设置项特别少,只有百分比和剩余时间两个选项,而且还有个傻大粗的鸡肋电池图标。不过点击电池图标会有更多功能,比如显示外设电量,调节亮度,进入Power Manager设置面板。
Battery Monitor属于xfce4-battery-plugin,设置项丰富,可以在托盘展示各种类型的信息,不过也就只能展示,想要修改配置还是得靠xfce4-power-manager。
双显示器(HDMI)
用GUI设置
正常情况下,GUI点几下还是非常方便的,没有特殊需求的话,建议用GUI操作。
设置显示输出
显示设置项在Settings > Display,系统默认是mirror displays,取消勾选,然后点Apply,就搞定了。
设置声音输出
声音输出跟Windows不一样,是要分开设置的。点右下角托盘的喇叭 > Audio mixer,或者终端直接输入pavucontrol
(GTK)/ pavucontrol-qt
(Qt)。
在弹出的窗口,找到Configuration,会看到Built-in Audio Profile的下拉菜单,选择Digital Stereo (HDMI) Output即可。如果要切换回来就选Analog Stereo Output。如果没找到想要的输出设备,可以用aplay -l
查看所有声卡和音频设备(List all soundcards and digital audio devices)。
用命令行设置
当然,如果不想每次外接显示器都这么点几下,或者想写进自动化脚本,可以直接用万能的命令行。
设置显示输出
这里用xrandr
进行设置。
首先,使用-q
或者--query
查看当前能用的显示器,这里节选部分输出展示。
1 | $ xrandr -q |
可以看到笔记本自带的eDP1
和外接的HDMI1
,这里可以用下面命令,把HDMI1
拼接到eDP1
的右边。
1 | # --auto 以系统偏好的分辨率(最大分辨率) |
设置声音输出
这里用pactl
(选项少)和pacmd
(选项多,有交互式环境)进行设置,因为自带的pavucontrol
只提供GUI设置,对应的命令行也是用来打开GUI的。
首先使用pacmd
的list-cards
查看声卡信息(或者直接输入pacmd
进入交互式环境)。这里由于输出了近百行的内容,因此删去大量无关紧要的信息。
1 | $ pacmd list-cards |
这里name
就是声卡名字,profiles
是输入输出的方案。
然后可以用pactl
或者pacmd
来设置,一般来说只会在下面两个方案之间切,注意命令里头的声卡名字
需要自行替换。
1 | # 命令格式(pacmd):pacmd set-card-profile <NAME> <PROFILE> |
参考资料:PulseAudio/Examples - ArchWiki
亮度精准调节
自带的xfce4-power-manager虽然可以接管笔记本上的亮度按键,但是每按一次的变化量是10,实在是太大了。更过分的是,Power Manager居然还不让配置step参数,导致如果想继续使用Power Manager,就只能自行修改源码重新编译。
编译是不可能编译的,搞不好又出什么诡异的问题!
所以首先就要关闭Power Manager对亮度按键的接管(Handle display brightness keys),然后使用命令行工具xorg-xbacklight
来调节亮度。亮度的范围是0-100,直接输入xbacklight
就可以看到当前亮度。需要调节亮度,可以在xbacklight
后面带上变化量。
当然不可能每次都敲命令调节亮度,所以要在 Settings > Keyboard > Application Shortcuts 设置快捷键。
Command | Shortcut |
---|---|
xbacklight +2 | Monitor brightness up |
xbacklight -2 | Monitor brightness down |
不过这么搞,就不能在调节之后马上看到亮度条了,因为亮度条是xfce4-power-manager的一部分。反正我觉得不亏,毕竟现在可以通过快捷键把亮度降得很低了。
自定义grub
自带的grub有点丑,而且分辨率还比较低,可以在/etc/default/grub
修改,或者直接用带有GUI界面的grub-customizer
,可以通过pacman或者yay安装。
其实还能直接安装配置好的主题,可以在Grub Themes下载。
新建文件Template
在Windows系统上,右键点击空白处就可以新建各类文件,相比之下Manjaro默认只能新建Empty File,所以可以添加一些常用的template。
正常情况下template文件都存在~/Templates
,可以通过cat ~/.config/user-dirs.dirs
确认。如果不是,那可以用下面命令修改。
1 | xdg-user-dirs-update --set TEMPLATES ~/Templates |
只需要把一个空的对应格式的文件(注意不是新建Empty File然后改后缀名)放进~/Templates
,template的文件名将会是右键菜单显示的名字,最后log out再log in就能生效了。
xfce Thunar官方的文档可以看Working with Files and Folders
参考文章:Thunar Create Document > / General discussion / Xfce Forums
桌面挂件(conky)
conky是一个能在桌面展示信息的开源项目,类似Android上的widget。
除了下面我试过的这些用法,还可以看看Conky/Tips and tricks - ArchWiki。
安装
用下面命令安装,conky-manager是带GUI的配置工具,装不装都行,好像也用不上。
1 | sudo pacman -S --noconfirm conky conky-manager |
然后顺手在Settings > Session and Startup > Application Autostart设置下开机启动。这里使用sleep 5
是要确保conky在网络连接后启动,否则有些需要网络的命令(例如gcalcli)可能获取不到信息。
1 | Name: conky |
或者也可以把下面内容写到~/.conky
下面的conky-startup.sh
,然后开机启动那里的Command
修改为用sh
执行这个脚本。
1 | sleep 5 |
配置
conky --print-config
可以输出默认配置,所以使用下面命令生成配置文件
1 | mkdir -p ~/.config/conky && conky --print-config > ~/.config/conky/conky.conf |
所有的配置项可以看Configuration Settings,文档本身清晰明了,我就提几个重点配置项。
保持在桌面上
先说最重要的,在默认配置下,如果点击桌面空白处,conky窗口就没了。。。
网上答案五花八门,实际上把own_window_hints
改成'below'
就解决了。
参考内容:Conky disappears when I click on the desktop #205
窗口位置
alignment
、gap_x
、gap_y
一起决定了conky在桌面上的位置。
字体
用不用等宽字体(Mono)看需求,等宽字体没那么好看,但是可以对齐。如果要指定style,可以在字体名后面加上:style=xxx
。下面给出我的配置。
1 | conky.config = { |
透明背景
1 | conky.config = { |
显示内容
依葫芦画瓢去修改配置文件的conky.text
部分即可。conky的wiki也收集了一些很漂亮的配置方案。
内置变量可以看Conky Objects
显示gcalcli
gcalcli
是Google Calendar的开源第三方命令行工具,使用下面命令安装
1 | yay -S --noconfirm gcalcli |
gcalcli
需要client_id
和client_secret
才能工作,本来gcalcli
可以自动引导获取的,但是这个操作貌似被Google禁止了,所以需要手动获取。在Google Calendar API Quickstart点击“Enable the Google Calendar API”来快速获取。拿到之后运行下面命令就可以绑定了。
1 | gcalcli --client_id=YOUR_ID --client_secret=YOUR_SECRET agenda |
最后把下面这行放进conky配置文件的conky.text
就大功告成了。
1 | ${execpi 300 gcalcli --conky agenda} |
参考内容:Sign in with Google temporarily disabled for this app #497
修改颜色
很奇怪,以前文档应该是有写这些,但是现在没找到。
1 | --[no]color: Enable/Disable all color output |
例如下面就是把日期从默认的黄色改成绿色
1 | gcalcli --conky agenda --color-date green |
参考文章:[SOLVED] Some help with Conky (related to gcalcli)
转义字符串
如果输出的内容含有特殊字符,比如#
,那么就会被conky错误识别,导致无法显示或者显示不全。这个问题在谷歌日历的待办事项中应该比较常见,比如Quiz #1
。这里针对gcalcli给出patch方法,其它开源程序的改法可以触类旁通。
首先执行下面命令找到gcalcli安装位置,返回的路径有好几个,找到类似下面带有site-packages的路径,一般来说python包都在里头。
1 | python -m site |
在gcalcli文件夹中找到gcal.py,做出下面修改。
1 | # 修改前 |
显示天气
OpenWeatherMap
网站上给出了很清晰的注册教程,跟着走就能拿到API key了。
建议使用One Call API,一次请求就能获取这些信息:
- 当前天气
- 1小时内的每分钟预测
- 48小时内的每小时预测
- 7天内的每天预测
- 过去5天的天气信息
要注意的是,白嫖帐号每天只能调用1000次One Call API,只要刷新频率不是太高的话,应该是完全够用的。
这里给出自用代码,需要自行提供经纬度和API key。
1 | import json |
最后在conky.conf
里头添加下面这行就可以了,路径自行替换。
1 | ${execpi 300 python <PATH_TO_weather.py>} |
wttr.in
如果只需要当前天气,那就直接从wttr.in
抓就可以了,网上随便找了个,试了能用。如果要在conky里头展示颜色,那需要把终端颜色代码动态替换成conky的颜色代码。
1 | curl -s wttr.in | sed -n '3,7{s/\d27\[[0-9;]*m//g;s/^..//;s/ *$//;p}' |
参考文章:How to add wttr.in to .conkyrc so that conky can show the weather #118
AccuWeather (RSS)
AccuWeather的API要氪金,但是其实他们还有个RSS可以白嫖(仅限个人使用)。
1 | http://rss.accuweather.com/rss/liveweather_rss.asp?metric=xxx&locCode=xxx |
返回内容是XML,筛选下信息就能拿到天气了。
参考内容:Conky - Really Simple Weather Script
Win10更新后修复grub
辣鸡Windows10,大版本更新之后就会搞坏grub,或者倒不如说他们只照顾了他们预想的东西。
反正Win10更新完之后大概率会看到下面这样的黑框,这个时候别慌,其实很容易就可以修好的。
1 | error: no such partition. |
首先ls
看看分区,然后找出带有/boot
的。
1 | grub rescue> ls |
这里已经发现带有/boot
的是(hd0, gpt6)
,这时候使用set
看看grub所在的分区。
1 | grub rescue> set |
很明显,Win10更新之后做了点手脚,/boot
已经不在(hd0, gpt5)
,而是在(hd0, gpt6)
,当然grub也就进不去。所以这里需要使用set
重新给prefix
赋值。最后使用insmod加载normal模块就可以进入grub了。
1 | grub rescue> set prefix=(hd0, gpt6)/boot/grub |
当然,进了grub不代表能进入系统,还需要选中Manjaro启动项,然后按e
修改menuentry。上面提到了分区的变化,所以这里就按照上面的结果,把所有gpt5
换成gpt6
,最后ctrl+x
就可以启动系统了。
到这还没完,如果不想每次启动都这么修改,那就需要更新grub。
1 | sudo update-grub |
小结
目前要调教的地方基本上就这么多,后续有发现新的内容会继续更新。
感谢Telegram Manjaro Linux CN群的@AsamiSaori(浅见 沙织)协助改进sudo和fcitx5部分内容~
KDE的一些东西
U盘挂载不上
Dolphin挂载u盘有问题的话,运行这个
1 | sudo ntfsfix -d /dev/sda1 |
原因是分区被标记为dirty,所以运行上面指令之后即可挂载
出处:Mounting ntfs partition by ntfs3 failed
音量控制F2/F3 Sticky
好像联想的本子才有这毛病,诡异。。。
1 | sudo touch /lib/udev/hwdb.d/70-keyboard.hwdb |
然后把下面内容复制进去(按原帖解释,evdev:atkbd:dmi:*会应用到所有键盘)。如果音量控制不是F2/F3,可以用sudo evtest
查看 keycode
1 | evdev:atkbd:dmi:* |
保存之后运行下面命令
1 | sudo systemd-hwdb update |
输出里头有下面两行就是生效了
1 | E: KEYBOARD_KEY_ae=!volumedown |
Source:
有线耳机有底噪
这个也是莫名其妙的。。。
1 | sudo pacman -S alsa-tools |
然后
1 | sudo touch /usr/local/fix-headphone.sh |
在文本框输入下面内容(5秒 sleep 之后就能生效,太早执行就无效,有点神奇)
1 | #!/usr/bin/env bash |
接下来创建开机自启动项目
1 | nano /etc/systemd/system/fix-headphone.service |
在弹出的文本框输入下面内容
1 | [Unit] |
最后执行这个
1 | sudo systemctl enable --now fix-headphone.service |
Source:
Thinkbook s13 电池养护模式
可以通过下面命令查看,1 是开启,0 是关闭。开启之后充到60%就会切换到电源供电。修改的话直接用文本编辑器就行了。
1 | cat /sys/bus/platform/drivers/ideapad_acpi/VPC2004:00/conservation_mode |