用的4K显示器,原先喜欢折腾各种Window Manager, 现在年纪大了,不善折腾了,所以切回了KDE Plasma桌面环境。Plasma对高分辨率的显示器很友好,只要使用系统设置中自带的缩放功能,就能基本已经解决绝大多数的程序缩放问题。但是发现坚果云客户端界面一直出现问题,UI元素很小,字体全部挤在一起,虽然勉强能使用,但是看着着实闹心。
打开稍微查看一下源代码,原来是用GTK写的。不知道怎么回事,没有读取到系统设置中的缩放选项,那就自己解决吧。
如果你是像我一样手动安装的,那么应该你的nustore的文件夹可以在HOME目录下找到。有关启动nutstore的是~/.nutstore/dist/gnome-config/autostart/nutstore-daemon.desktop和~/.nutstore/dist/gnome-config/menu/nutstore-menu.desktop两个文件。其中autostart文件夹中的desktop文件是用于开机自动启动程序的,另一个是用于系统菜单中的启动器。它俩基本没有区别,都是启动~/.nutstore/dist/bin/nutstore-pydeamon.py这个文件,区别是autostart中的那个增加了延时30秒的设定。现在只需要在两个启动命令前加上GDK_SCALE=2和GDK_DPI_SCALE=0.5两个环境变量即可。
修改后Exec=的结果为
autostart/nutstore-deamon.desktop
Exec=sh -c "(sleep 30 && exec env GDK_SCALE=2 env GDK_DPI_SCALE=0.5 ~/.nutstore/dist/bin/nutstore-pydaemon.py)" gnome-config/nustore-menu.desktop
Exec=sh -c "exec env GDK_SCALE=2 env GDK_DPI_SCALE=0.5 ~/.nutstore/dist/bin/nutstore-pydaemon.py" 最后重新运行命令~/.nustore/bin/install_core.sh覆盖安装一下,再重新启动坚果云程序,终于正常了,不再闹心了。
原来安装双系统的时候,将Archlinux安装到了普通机械硬盘上。最近感觉实在太慢受不了,就买了一块500GB的SSD,准备把当前系统迁移过来。
电脑的主板上只有一个m.2接口,目前已经插了一块256G的,上面装了Windows。NVME协议的一般都在1000MB/s以上,有的甚至能到3000MB/s(三星的那款,好贵),而SATA协议的SSD读写速度最高也就只到500MB/s左右,觉得没有多大意义。上网一搜,发现有NVME转PCIE的转接卡,立马下单。
新盘安装好,但是不想重装Archlinux系统,就只有想办法把根目录迁移过来吧。原来系统中硬盘分区和挂载情况是这样的:
设备 挂载点 大小 /dev/nvme0n1p1 /efi 500M /dev/sdb5 / 120G /dev/sdb3 /home 250G /dev/sdb4 swap 16G 新盘的方案为:
设备 挂载点 大小 /dev/nvme0n1p1 /efi 500M /dev/nvme1n1p3 / 剩余大小 /dev/nvme1n1p1 /home 300G /dev/nvme1n1p2 swap 16G 确定方案后,接下来就开始正式的迁移步骤,用archlinux的安装USB Stick启动系统,进入安装模式:
首先将原来的系统盘全部挂载到目录/oldRoot/中: mkdir -p /oldRoot mount /dev/sdb5/ /oldRoot mount /dev/sdb3 /oldRoot/home 用cfdisk为新盘分区,选择gpt分区表。分区完后格式化,并且挂载到/mnt上: mount /dev/nvme1n1p3/ /mnt # 这里一定要注意挂载顺序 mkdir -p /mnt/home mount /dev/nvme1n1p1/ /mnt/home # 激活swap分区 swapon /dev/nvme1n1p2 新旧系统盘挂载后,下面要开始迁移了,注意路径别弄反了,我们需要从/oldRoot迁移到/mnt中去: # -a 选项表明复制所有内容,包含子文件夹,链接等 # -f 默认强制覆盖已存在文件 # -v 显示复制文件,如果不想查看满屏刷文件,可以不加 # 一定要注意末尾的*号,没这*号,新盘中就是一个文件夹…… cp -afv /oldRoot/* /mnt 好的,现在你可以稍微休息下。喝一杯咖啡,等待复制完成。接下来需要做一些小小的设置,主要是更改原系统中的硬盘挂载点和启动设置。
Read more
bspwm安装和设置 sudo pacman -S bspwm sxhkd 安装完成后需要在$HOME/.xinitrc中添加exec bspwm,然后通过startx即可启动。如果需要登录自动启动bspwm,可以安装启动器(如lightdm)。 本人比较喜欢使用startx这种简单的方式。如果不想装启动器,又还是想用户登录后自动启动bspwm的话,也可以在$HOME/.zprofile中添加如下代码:
if systemctl -q is-active graphical.target && [[ ! $DISPLAY && $XDG_VTNR -eq 1 ]]; then exec startx fi HiDPI注意事项 个人显示器是4k屏,所以需要进行额外的设置,在$HOME/.Xresources中贴下如下代码:
Xft.autohint: 0 Xft.lcdfilter: lcddefault # 看个人喜好,如果是1080(含)以下屏幕, # 建议改为hintslight或者hintnone, # 这样不会出现歪歪扭扭的字,但是字体 # 会显得稍有些模糊。 Xft.hintstyle: hintfull # 开启字体自带的hinting Xft.hinting: 1 # 开启反锯齿 Xft.antialias: 1 Xft.rgba: rgb # 1080以下不用设置,默认是96,推荐设置: # 150% - 144 # 175% - 168 # 200% - 192 Xft.dpi: 168 经过上述的设置后,需要将.Xresources文件通过以下命令merge到xinitrc中才能生效:
Read more
我偶尔会玩一些小游戏,有一些小游戏是用RPG Maker MV制作的。最近我切回Archlinux,本来RPG Maker MV制作的游戏通常都会有Linux的原生版本,但是今天在Linux下,发现无法启动, 报了fontconfig一堆错误,最后报:Check failed: InitDefaultFont(). Could not find the default font,然后就core dumped。
我估计是archlinux的fontconfig版本太新的原因,但是又懒得找到其他发行版的机器试试了。看着游戏目录里那一堆文件,原来是nwjs制作的,索性到nwjs去下载了预编译的最新版本,然后将其解压并覆盖了游戏目录。接着启动一试,成功启动游戏。
但是游戏开头过后,黑屏错误,这时发现终端里报错ffmpeg无法解码流,这时上网查了查资料,原来官方编译的版本中的libffmpeg.so不带一些私有的解码器,而我这个游戏中的视频应该用到了私有编解码,再具体查看是VP9,所以上网想自己编译一个libffmpeg.so。再一查,编译这玩意儿要下载1个多G的文件,且不知道要编译多久。继续Google, 原来网上有热心网友一直在提供这个含私有解码器的libffmpeg.so, 具体链接在iteufel/nwjs-ffmpeg-prebuilt。下载与nwjs相对应的版本后,解压到游戏目录下lib覆盖即可。
解决方法总结: 下载预编译好的nwjs, 点此下载 到iteufel/nwjs-ffmpeg-prebuilt下载对应版本的libffmpeg.so文件放入游戏目录下的lib文件中。 注意:不一定要选择最新的版本,我试了几个版本都没有成功,最后选择了nwjs-ffmpeg-prebuilt中标记为Stable的版本后才成功
最近由Shadowsocks迁移到了Clash,使用V2Ray的VMess协议翻墙。在Windows中一切都很顺利,感觉比Shadowsocks要稳定多了(可能是心理作用)。由于Windows 10中的WSL非常好用,我已经很久没有进到我的Manjaro Linux系统了,所以一直也没能在Linux下测试一下Clash。 今天终于有机会进入Manjaro中,首先第一件事就是下载了Clash for linux以后翻墙。没想到的是Clash在Linux下不能正常工作。经过一番搜索和折腾,使用不同的版本,尝试各种配置,却发现怎么也翻不了墙。最后以为是节点挂了,然后查看日志, 发现代理都正常工作,但是用Chrome浏览器访问总是错误,错误代码ERR_CONNECTION_ERROR。随后又启动到Windows,发现相同节点在Clash for windows下是正常的。
正在我百思不得其解时,突然发现Manjaro的系统时间是错的。常装Windows和Linux双系统的同志们知道这是个常见问题,原因是Windows的系统时间采用本地时间,而Linux的系统时间采用UTC时间,所以双系统情况下系统时间经常会出现错误。 接着又突然想起在某个地方偶然见过到时间造成V2Ray错误的网页,赶紧同步时间后试试,Clash终于正常了! 随后启动到Windows,Windows时间肯定又出错了,打开Clash,果然Clash在Windows下也出现了ERR_CONNECTION_ERROR错误。
真相大白了,系统时间错误造成Clash不能正常访问。最后,在Manjaro下把系统时间设置成和Windows一致,都使用本地时间,使用Windows系统来同步系统时间,故障完美解决。
Linux设置系统时间为本地时间方法 将Linux系统时间设置为本地时间
timedatectl set-local-rtc 1 --adjust-system-clock 使用下列命令可以恢复UTC时间
timedatectl set-local-rtc 0 --adjust-system-clock
把博客从Hexo迁移到了Hugo上。我从新浪博客迁移到Hexo后,用Hexo只写一共三、四篇博文,而且都是小短文,好惭愧。回看这两年却是很忙,先是博士毕业,再后来是家里的各种琐事耗费了我几乎全部的精力。不要说写博文了,个人的技术也基本上没有什么成长。
最近重拾Go语言,突然想到有个golang写的博客系统Hugo,所以马上就弄起来,我这次把先前在Hexo上的三篇小短文也给弄来了。至于新浪博客上的博文,那就算了吧,太多了,实在没有精力了。希望从今天开始,继续把博文写起来,把笔记记起来,该学的学起来。
最后还是不能免了俗套的 -
Hello, world! 你好,世界!
最近一段时间都在使用Visual Studio Code作为主力编辑器,不得不说这款编辑器实在是好用,我完全放弃了Atom。在Windows下,Visual Studio Code的默认终端是Powershell,现在需要改为比较顺手的msys2中的bash,在Visual Studio Code中的用户设置中添加以下代码:
"terminal.integrated.shell.windows": "/path/to/bash", "terminal.integrated.shellArgs.windows": [ "--login", "-i" ] "terminal.integrated.env.windows": { "CHERE_INVOKING": 1, "MSYSTEM": "MINGW64" } 前面两个设置很好理解,最后设置的terminal.integrated.env.windows的两个环境变量非常重要,其中CHERE_INVOKING的作用是打开终端的默认工作路径为当前编辑文件所在路径,MSYSTEM主要是指msys2采用64位的环境。
当前系统的主要版本为:
Ubuntu: 16.04 Konsole: 16.04.3 KDE框架: 5.28.0 Konsole中的中文字体下半身被完全截断,如图所示。
在网络上搜索了一下发现可能是中文字体的基线没有和英文字体的基线对齐造成的。所以直接将Konsole的字体设置成中文字体应该可以解决。但是发现Konsole的选择字体列表中并没有任何的中文字体……最后还是直接修改konsole的配置文件。google了一番,最后才发现配置文件被移到了:~/.local/share/apps/konsole/xxx.profile。其中"xxx"指的是Profile的名称。
打开此配置文件,将[Appearance]下的
Font=FreeMono,13,-1,0,50,0,0,0,0,0 修改成任意一款中文字体,比如我选择的是文泉驿等宽微米黑
Font=WenQuanYi Micro Hei Mono,13,-1,0,50,0,0,0,0,0 问题解决,如图所示
今天在此处看到这个Bug居然在13年就有人提出了,到现在17年1月了还没有修复,看来是需要考虑离开KDE了。