属于MacOs用户的Ubuntu配置指南
说来惭愧,作为一个整天折腾Linux服务器程序员,自己却没有真正折腾过Linux桌面系统,这主要是被MacOs和docker给惯坏了.这次搞aipc顺便就折腾下.
作为一个老MacOs用户,我对这个桌面系统的要求是
- 精简流畅.
- 使用兼容性和支持尽量好的发行版.
- 可以使界面和操作尽量接近MacOs.
- 可以的话增加一些window下的优秀交互工具
- 尽量少折腾
选哪个发行版答案就呼之欲出了–标题上的ubuntu.
这篇文章虽然来自于折腾aipc,但本身并不涉及具体的配置和软件,因此可以看做通用美化和设置教程来使用.
基本操作逻辑
Ubuntu毕竟是个独立的操作系统,它有自己的一套操作逻辑和对应工具.
Ubuntu首先是个Linux系统,这就意味着它运行在linux内核上而且所有操作都可以在terminal中实现.而桌面图形界面其实可以理解为是一个gui化的bash命令.
Ubuntu的桌面使用的是GNOME桌面,具体到我现在使用的Ubuntu 24.04 LTS
使用的GNOME 46
,而GNOME
是GNU计划中的一部份,它基于纯C实现的GTK开发. 在Linux桌面这个语境下GUI的实现方案一般就两个–GTK和QT.QT好用但会给用户带来法律上授权上的麻烦;GTK难用但完全开源不会有纠纷.所以作为GNU的一部分自然是选用的GTK.
那由于用了相对开发难度大的GTK,自然的GNOME桌面的逻辑会更简单,资源占用也会相对多些,可配置性也会差不少.与之对应的是arch linux,它使用的就是QT,可配置性和资源占用都会更好,但小bug多,适合自定义桌面比较多的场景,比如steamos就是arch linux变体.
GNOME桌面的结构如下图,
可管理的元素和windows/macos基本是一致的,都是应用->窗口->工作区
这样的3级归属模式,但使用逻辑就不一样了.GNOME非常强调工作区的作用,它的使用逻辑是
- Ubuntu鼓励一个应用开一个窗口
- 一个窗口下可以多开应用,但应该是相关的应用
- 一个工作区下可以多开窗口,但这些窗口应该是相互关联的.
比如你有一个工作区就专门用来编程,一个工作区就专门用来打游戏.拿来编程的工作区开一个vscode,开一个浏览器查资料,开一个pdf阅读器看文档,那在编程时你就只需要在这个工作区内切窗口就好了.而如果你想打游戏了,直接切工作区到打游戏的哪个工作区就行了.
当然了我们想像macos一样基于应用使用也没啥问题.这只是使用习惯问题.
更新系统
安装完系统后我建议先全面更新下系统,因为一般下载到系统镜像都不会是真正的最新版本.通常我们会比较关心系统发行版本和内核版本.
查看系统内核版本可以使用命令sudo uname -r
实现,查看发行版本可以用cat /etc/os-release
查看
我们可以使用如下命令更新系统
更新整个系统
sudo apt update # 更新软件包的索引或包列表
sudo apt full-upgrade #更新系统上所有过时的软件包升级到最新版本并解决依赖问题,如果不要解决依赖问题,可以使用`sudo apt upgrade`
sudo reboot
仅更新linux内核
sudo apt update # 更新软件包的索引或包列表
sudo apt-get upgrade linux-image-generic #更新内核
sudo reboot
安装驱动
通常我们并不需要手动安装驱动,系统自带的通用驱动都可以正常使用.ubuntu本身也提供了一个应用驱动管理
来检测和安装驱动.只有一些特殊硬件我们需要在特定情况下手动安装驱动.
显卡驱动
最常见的需要手动安装驱动的硬件就是显卡.这种通常是为了通过官方工具调用显卡计算接口.主流的显卡其实就amd(ati)显卡和Nvidia显卡两家,最近几年Intel也开始做独显了,虽然基本没人买.
我手头只有一个apu和一张Nvidia显卡,所以就只介绍这俩了.
我这边仅以ubuntu 24.04 TLS系统为例
amd显卡/apu核显
对应的工具链叫rocm,需要注意目前rocm在同时存在amd独显和amd核显的情况下会有错误.因此如果你用的是amd独显需要在bios中禁用核显(amd的这个操作真的很神奇,因此一般推荐au配n卡).
不过需要注意,rocm官方版本目前对大多数商用级别的apu和显卡都不官方支持(官方目前仅支持7900xtx,7900xt).我们的780m核显虽然可以安装但需要有额外设置而且很多周边工具并不支持,当然正常用是没啥问题的,而且pytorch和llama.cpp是可以正常使用的,但如果想要用全套ai相关工具,我们可能还是得借助第三方工具链lamikr/rocm_sdk_builder.本篇我们还是以官方驱动为准.
可以使用如下步骤安装:
-
安装安装器
sudo apt update # 更新软件包的索引或包列表 sudo apt install "linux-headers-$(uname -r)" "linux-modules-extra-$(uname -r)" # 根据linux内核来安装对应的linux-headers和linux-modules-extra sudo apt install python3-setuptools python3-wheel sudo usermod -a -G render,video $LOGNAME # 添加当前用户到渲染和视频分组 wget https://repo.radeon.com/amdgpu-install/6.2.4/ubuntu/noble/amdgpu-install_6.2.60204-1_all.deb # 下载amdgpu安装工具,这里以6.2.60204为例 sudo apt install ./amdgpu-install_6.2.60204-1_all.deb #安装rocm安装工具 sudo reboot #重启后生效
上面的代码只是例子,我们安装的是rocm 6.2.4的安装器,具体版本可以查看rocm发布页
为什么选这个版本呢?因为pytorch目前(2025-01-02)只支持到6.2版本.
-
根据使用场景安装需要组件
上面的代码安装了
amdgpu-install
这个工具,它是一个amdgpu的管理工具,可以用于安装和更新AMDGPU的驱动,rocm
,rocm 组件
等amdgpu相关的工具.在重启后我们重新进入命令行,然后运行
amdgpu-install
来安装所必须得组件amdgpu-install --usecase=rocm,graphics,hip sudo reboot
支持的usecase可以通过命令
sudo amdgpu-install --list-usecase
查看.主要的usecase包括
dkms
,仅安装驱动,其他的所有usecase都会安装驱动所以一般不用这个graphics
,图形界面相关工具,如果你使用ubuntu桌面系统你就得装,不装很多软件会因为显卡报错无法打开(比如各种electron封装)multimedia
,开源多媒体库相关工具multimediasdk
,开源多媒体开发,包含multimedia
workstation
,工作站相关工具,包含multimedia
同时包含闭源的OpenGL工具rocm
,显卡做异构计算工具,包括OpenCL运行时,HIP运行时,机器学习框架,和rocm相关的库和工具rocmdev
,rocm开发工具,包含rocm
和相关的调试开发工具rocmdevtools
,仅包含rocm
和相关的调试开发工具amf
,基于amf编解码器(闭源)的多媒体工具lrt
,rocm的编译器,运行时和设备库等工具opencl
,异构计算库opencl相关工具,库和运行时openclsdk
,包含opencl
,同时包含opencl的相关开发工具和头文件等hip
,高性能计算库hip的运行时hiplibsdk
,包含hip
,同时包含hip开发相关库和工具以及ROCm的数学库openmpsdk
,并行计算库openmp的运行时和相关库和工具mllib
,机器学习相关工具和库,包括MIOpen核心和相关库,以及Clang OpenCLmlsdk
,包含mllib
,额外附带MIOpen和Clang OpenCL的开发库asan
,支持ASAN(内存检测工具)的ROCm工具
正常情况下使用
amdgpu-install --usecase=rocm,graphics
安装即可 -
设置系统连接
也就是设置相关工具的查找位置
sudo tee --append /etc/ld.so.conf.d/rocm.conf <<EOF /opt/rocm/lib /opt/rocm/lib64 EOF sudo ldconfig
-
使用
update-alternatives
更新配置ROCm二进制文件的路径.update-alternatives --list rocm
-
设置环境变量
rocm安装好后会被放在
/opt/rocm-<ver>
目录,我们不妨设置一个环境变量ROCM_HOME
export ROCM_HOME=/opt/rocm-6.2.4
-
rocm的可执行文件会放在
/opt/rocm-<ver>/bin
目录. 如果无法使用rocm工具,可以将它的bin
目录加入到PATH中export PATH=$PATH:$ROCM_HOME/bin
-
rocm的动态链接库会放在
/opt/rocm-<ver>/lib
目录. 如果要用到这些动态链接库,可以将它临时加入到LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$ROCM_HOME/lib
-
rocm的模块则会被放在
/opt/rocm-<ver>/lib/rocmmod
目录. -
最后,由于我们使用的是核显780m,所以需要额外设置环境变量
HSA_OVERRIDE_GFX_VERSION
export HSA_OVERRIDE_GFX_VERSION=11.0.0
这个
11.0.0
对应的是8000系apu核显的版本.顺道一提780m的编号gfx1103
这样,我们的
.zshrc
就有如下内容了# ======================================================================= rocm export ROCM_HOME=/opt/rocm-6.2.4 export PATH=$PATH:$ROCM_HOME/bin export HSA_OVERRIDE_GFX_VERSION=11.0.0
-
-
检查驱动是否正常
dkms status
这个命令会打印出显卡的状态
-
检查rocm是否正常安装
rocminfo # 检查rocm状态 clinfo # 检查opencl状态
-
检查包是否安装正常
apt list --installed
rocm版本更新
更新版本我们需要完全卸载已有的rocm,驱动,和rocm安装器
sudo amdgpu-install --uninstall # 卸载驱动和库
sudo apt purge amdgpu-install # 卸载安装器
sudo apt autoremove # 卸载对应依赖
sudo reboot # 重启后生效
之后在下载新版本的安装器重新安装配置一次即可
基础设置
在开始其他设置之前,我们还需要做如下设置
git的安装设置
git工具我们需要好好设置下,毕竟ubuntu下很多东西,尤其是大文件的项目都需要git下载
-
安装
git
,ubuntu并不会默认安装git工具,因此我们需要先安装gitsudo apt install git # 安装git sudo apt-get install git-lfs
2.设置以支持大文件传输
-
.gitconfig
[filter "lfs"] clean = git-lfs clean -- %f smudge = git-lfs smudge -- %f process = git-lfs filter-process required = true [user] name = HUANG SIZHE email = hsz1273327@gmail.com [http] postBuffer = 157286400 version = HTTP/1.1 [core] packedGitLimit = 512m packedGitWindowSize = 512m [pack] deltaCacheSize = 2047m packSizeLimit = 2047m windowMemory = 2047m
配置代理
作为一个写代码的,代理几乎波不可少.作为一台主力办公机,没道理不按一个clash客户端.clashverge自然是ubuntu下的首选,安装也只是下载下来,先安装依赖再安装本体即可.
和在macos上一样,我们可以在.zshrc
或其他shell的配置文件中像这样配置代理
#========================================================================= proxy
# 设置使用本机代理
alias setproxy="export https_proxy=http://127.0.0.1:7897 http_proxy=http://127.0.0.1:7897 all_proxy=socks5://127.0.0.1:7897"
# 设置使用本地局域网代理
alias setlocalproxy="export https_proxy=http://192.168.50.177:7890 http_proxy=http://192.168.50.177:7890 all_proxy=socks5://192.168.50.177:7890"
# 清空代理配置
alias unsetproxy="unset https_proxy;unset http_proxy;unset all_proxy"
ssh客户端设置
-
.ssh/config
ControlPersist 4h ServerAliveInterval 30 ControlMaster auto ControlPath /tmp/ssh_mux_%h_%p_%r ForwardX11Trusted yes HostKeyAlgorithms +ssh-rsa PubkeyAcceptedKeyTypes +ssh-rsa
美化系统
ubuntu系统界面大致可以分为如下几个部分
美化系统我们大致可以分为如下几个步骤
- 美化桌面
- 美化登录页面
- 添加实用插件
- 美化terminal
- 美化字体
一般我也会按这个次序进行设置
在开始设置之前,我们需要先安装gnome-tweaks
sudo apt install gnome-tweaks
这是gnome环境的优化
工具,安装好后会放在显示应用
->工具
->优化
.
macos风格的Gnome桌面美化一般使用的是vinceliuice/WhiteSur-gtk-theme这个项目. 这个项目其实已经可以包办大部分的美化任务了.
我们可以先找个地方(比如~/workspace/init_source
)来安装它
mkdir -p workspace/init_source # 构造目录
cd workspace/init_source
git clone https://github.com/vinceliuice/WhiteSur-gtk-theme.git --depth=1
美化桌面
对于美化桌面,其实也可以认为是3个任务
美化主题
一个是主题美化,这是一个很复杂的问题,我们知道ubuntu最开始使用的是源自debian的deb
软件分发,但最近几个版本他们搞了个snap
.而且还存在一种flatpak
应用,也就是说有三种gui应用.
deb
软件,debian的软件包格式,最轻量,也最多.apt
工具安装的就是这种flatpak
软件,可以在flathub中下载并安装.一种完全开源的,面向跨发行版分发的软件包格式.我们的美化主题需要额外设置以适配snap
软件,ubuntu主推的软件包格式,也是为了跨发行版分发而推出的,但由于其服务端并不开源,不太受开源社区待见.
主题美化不光是自带软件的美化,还得让各种gui应用都可以获得相应的美化.这就很难了.
但对于我们这种要求不高的其实就很简单.直接执行WhiteSur-gtk-theme
项目的./install.sh
脚本即可
cd workspace/init_source/WhiteSur-gtk-theme
./install.sh
./install.sh -t all # 安装指定颜色主题,如果要全部颜色可以使用`-t all`,要指定颜色则是类似`-t [purple/pink/red/orange/yellow/green/grey]`
./install.sh -N mojave # 改变文件管理器分栏样式,可选为默认,`mojave`和`glassy`
./install.sh -l # 安装对`libadwaita`软件的适配,目前并不完美
sudo flatpak override --filesystem=xdg-config/gtk-3.0 && sudo flatpak override --filesystem=xdg-config/gtk-4.0 # 适配非snap的flatpak应用
美化壁纸
另一个桌面的美化点就是壁纸,我们可以使用vinceliuice/WhiteSur-wallpapers项目提供的macos风格的壁纸.安装好然后去设置中替换即可.
cd workspace/init_source
git clone https://github.com/vinceliuice/WhiteSur-wallpapers.git
cd WhiteSur-wallpapers
# 安装会根据时间变化的桌面壁纸,
#可以使用`-t [whitesur|monterey|ventura]`指定壁纸,默认全装;
#可以使用`-s [1080p|2k|4k]`指定分辨率,默认4k;
sudo ./install-gnome-backgrounds.sh
# 安装静态壁纸
#可以使用`-t [whitesur|monterey|ventura]`指定壁纸,默认全装;
#可以使用`-s [1080p|2k|4k]`指定分辨率,默认4k;
#可以使用`-c [night|light|dark]`指定颜色风格,默认全装;
#可以使用`-n [whitesur|monterey|ventura]`安装灰化壁纸,默认不灰化;
./install-wallpapers.sh
美化图标
最后是美化图标.实话讲ubuntu的图标确实丑.我们可以使用vinceliuice/WhiteSur-icon-theme项目提供的图标来美化它,这个图标库就很还原macos了.
cd workspace/init_source
git clone https://github.com/vinceliuice/WhiteSur-icon-theme.git
cd WhiteSur-icon-theme
./install.sh
./install.sh -a # 安装macos风格的替换图标
./install.sh -b # 安装右上角下拉菜单的图标
需要注意这个库对snap应用并不原生支持
在安装好后我们还需要设置激活
在显示应用->工具->优化
中选中外观
然后设置.我个人习惯用如下设置
图标
:WhiteSur-light
shell
:WhiteSur-light-solid
过时应用程序
:WhiteSur-light-solid
美化鼠标
这也属于不优化也没什么大不了的项目,但如果能优化下确实体验是能更好些.
美化鼠标可以使用项目ful1e5/apple_cursor这个项目,去它最新的release中下载macOS.tar.xz
,然后解压,可以获得两个文件夹macOS
和macOS-White
,将他们都移动到/usr/share/icons
目录后重启就安装完成了.
cd macOS
sudo mv macOS* /usr/share/icons/
sudo reboot
之后在显示应用->工具->优化
中选中外观
然后设置光标
为macOS
即可.
美化登录页面
对于登录界面我们还是使用vinceliuice/WhiteSur-gtk-theme
这个项目
cd workspace/init_source/WhiteSur-gtk-theme
sudo ./tweaks.sh -g # 我们可以增加`-nd`(不将背景变暗)或`-nb`(不将背景变模糊)或`-b default`(默认,背景变暗变模糊)来设置效果.
这个登录页除了ubuntu字样外就完全果里果气了.
添加实用插件
Gnome支持插件.插件可以增加功能也可以增加动画效果等.而gnome的插件搜索和安装在ubuntu下我们一般依赖于firefox浏览器.那不妨我们就先优化下firefox浏览器的体验.
firefox浏览器优化
就像ie/edge之于windows,safari之于macos,firefox浏览器是ubuntu自带的默认浏览器.讲道理它和chrome一样很好用,甚至在chrome之前它是最好用的浏览器.但由于我个人chrome用的太久,要迁移太麻烦,所以我还是会将chrome作为主力浏览器.
但即便为了Gnome插件,firefox也是值得优化下体验的.这个优化主要包括3个方面
美化
依然借助vinceliuice/WhiteSur-gtk-theme
项目,这个项目提供了对firefox的专门优化
cd workspace/init_source/WhiteSur-gtk-theme
./tweaks.sh -f monterey # 可选flat和monterey,monterey比较紧凑
墙
处理墙的问题我们只要安装zeroomega即可.进去网页https://addons.mozilla.org/en-US/firefox/addon/zeroomega/点击安装就可以了,剩下的就是设置ip和端口.
内建翻译
firefox有内建翻译,但不支持中文,我们可以安装插件划词翻译借助谷歌百度等的翻译来实现和chrome中的相同效果
安装gnome浏览器插件
虽然是个浏览器插件,但我们得用apt安装.
sudo apt-get install gnome-browser-connector
安装好后firefox的右上角插件栏中就会有一个脚印一样的图标,它就是gnome的浏览器插件,点击它就可以进入插件搜索页面.
gnome插件安装
安装gnome插件很简单,用firefox的gnome浏览器插件进入到gnome插件页面后点击插件名后面的开关到开的状态即可.
当安装好后我们可以在扩展
应用中对插件进行开关和设置,而已经安装了哪些插件可以在installed extentions页面中查看.
需要注意我们的系统ubuntu 2024.04
使用的是Gnome 46
,插件需要支持这个版本才能安装.
下面是我认为比较有必要的gnome插件汇总
插件 | 推荐等级 | 用途 | 补充说明 |
---|---|---|---|
user-themes | 高 | 管理用户主题 | — |
Dash to Dock | 高 | 一个对主题更友好的dash | 关闭Ubuntu Docker ,功能重复了 |
Blur my Shell | 高 | 一个提供桌面模糊的插件 | 建议修改Dash to Dock 中的拐角半径 |
Clipboard Indicator | 高 | 剪切板功能,可以保存近期的复制内容 | — |
Lock Keys | 低 | 大小写锁定提示 | — |
Removable Drive Menu | 高 | 顶栏的移动存储操作工具 | — |
Screenshort-cut | 低 | 顶栏截图工具 | 需要额外安装sudo apt install gir1.2-gtop-2.0 lm-sensors 获取硬盘信息 |
Vitals | 中 | 顶栏系统监控 | — |
GSConnect | 高 | 快速连接移动端设备 | 需要配合appkde connect |
Todoit | 低 | 顶部todolist | — |
Lunar Calendar 农历 | 中 | 日历改为农历 | 需要先额外安装Nei/ChineseCalendar |
Compiz alike magic lamp effect | 中 | 仿macos的最小化动画 | — |
gTile | 中 | 多应用划分窗口 | — |
Input Method Panel | 高 | 输入法相关 | — |
Click to close overview | 高 | 点击空白处关闭预览 | — |
Hide Top Bar | 低 | 自动隐藏顶部工具栏 | — |
desktop-lyric | 中 | 桌面歌词 | |
applications-menu | 低 | 顶部提供应用的归类入口 | |
weather-or-not | 低 | 顶部天气插件,需要有gnome weahter |
除此之外,我个人推荐对系统默认插件做如下处理
- 禁用Desktop Icons,这个插件会让桌面有图标(默认会有你的home目录文件夹)
- 如果安装有
applications-menu
则在全部配置完成后dash to dock插件中关闭显示应用程序
增加空格键预览功能
mac下一个经典操作就是选中目标后按空格键
sudo apt-get install gnome-sushi unoconv
美化terminal
ubuntu默认就是zsh,美化terminal其实也分成两个部分
terminal本体的美化
依然是使用Solarized Dark
.在Default->颜色->内置方案
中找到并设置即可.剩下的就是根据个人习惯做细微修改,
比如我会将文本颜色和光标改为更醒目的白色,将粗体字改为紫色,高亮字改为橙色,将光标改为竖线,并稍微设置点透明度.
ubuntu 默认使用的是Gonme termial
,他只支持统一的透明度,比较可惜.
zsh的美化
我们还是把bash环境替换为zsh,毕竟确实更好用.
# 安装 zsh
sudo apt install zsh
# 更改默认shell为zsh
chsh -s /bin/zsh
安装
oh-my-zsh
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
zsh的经典插件安装
-
autojump
sudo apt install autojump
-
zsh-autosuggestions
git clone https://github.com/zsh-users/zsh-autosuggestions $ZSH_CUSTOM/plugins/zsh-autosuggestions
-
zsh-syntax-highlighting
git clone https://github.com/zsh-users/zsh-syntax-highlighting $ZSH_CUSTOM/plugins/zsh-syntax-highlighting
在~/.zshrc
中配置启用这些插件:
...
plugins=(git autojump zsh-autosuggestions zsh-syntax-highlighting)
...
安装主题[可选]
我们可以使用powerlevel10k
这个主题
cd workspace/init_source
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
在~/.zshrc
中配置启用新的主题
ZSH_THEME="powerlevel10k/powerlevel10k"
关闭后重启终端,会有几个问题:
# 这看起来像菱形吗?
Does this look like a diamond (rotated square)?
# 这看起来像一个锁吗?
Does this look like a lock?
# 这看起来像一个向上的箭头吗?
Does this look like an upwards arrow?
# 这些图标都正常显示放在 x 之间,没有重叠吗?
Do all these icons fit between the crosses?
回答好后就选择终端前面的提示样式.下面是推荐的样式
项目 | 推荐选择 | 说明 |
---|---|---|
Prompt Style | Rainbow | 选择提示样式 |
Character Set | Unicode | 选择字符集 |
Show current time? | 24-hour format | 选择提示时间样式 |
Prompt Separators | Round | 提示分隔符的样式 |
Prompt Heads | Blurred | 选择提示箭头的样式 |
Prompt Tails | Flat | 选择提示尾样式 |
Prompt Height | Two line | 提示是否独立一行显示 |
Prompt Connection | Disconnected | 头尾连接样式 |
Prompt Frame | Left | 两行间的联系提示样式 |
Frame Color | Light | 两行间的联系提示颜色 |
Prompt Spacing | Compact | 行间距离 |
Icons | Many icons | 是否开启图标 |
Prompt Flow | Concise | 提示细节 |
Enable Transient Prompt | Yes | 是否启用瞬时提示 |
就行了,要重置可以执行p10k configure
再来一遍
美化字体
ubuntu中字体分为界面字体
,文档字体
,等宽字体
.所谓界面字体
就是gui界面上展示的字体,比如应用title,菜单栏的字体;所谓文档字体
就是打字时的字体;等宽字体
则是每个字符固定宽度的字体,在一些特殊位置会用到.
在中文环境中,我们对字体的要求自然是对中问支持良好,而作为编程写文档为主用途来说,字体优雅辨识度高就是重中之重. 下面是我推荐的几种字体
-
思源宋体/黑体,思源宋体/黑体是由Adobe和Google两家公司合作开发的中文字体,具有良好的字形结构和视觉效果.该字体支持的字符编码达到了GB18030字符集的完整覆盖,在Linux系统中运行稳定且无需进行额外的配置,舒适自然,适用于流畅的中英文混排场景.这个字体适合用作
界面字体
或者文档字体
# `noto sans cjk sc`为黑体,`noto serif cjk sc`为宋体 sudo apt-get install fonts-noto-cjk
-
nerd-fonts,是一套专门为编程设计的字体,适合给terminal用
cd workspace/init_source git clone https://github.com/ryanoasis/nerd-fonts.git --depth 1
设置字体
设置全局字体在显示应用
->工具
->优化
.选中字体
这个位置,我个人习惯设置成如下:
界面文本
:Noto Sans CJK SC Meduim
文档文本
:Noto Serif CJK SC Meduim
等宽文本
:Ubuntu San Font
之后我们可以进terminal,在首选项
->default
->自定义字体
中选择Ubuntu Normal Nerd Font
.
系统优化
ubuntu默认状态下是很原始的,我们需要做如下操作才能让它用起来舒服些
常用软件预加载
preload是一个空间换时间的应用预加载工具. 它会根据用户行为预先加载常用软件进内存.对于拥有大内存的机器这个工具可以大幅提高应用的打开速度.
我们可以使用如下命令在terminal中安装
sudo apt-get install preload
systemctl status preload
全面的编解码器支持
ubuntu受限于版权并不能直接提供全部的编解码支持,但我们可以安装ubuntu-restricted-extras
来或者这一能力
sudo apt install ubuntu-restricted-extras
安装好后市面上大部分的音频视频格式我们就都可以使用了
优化蓝牙连接
ubuntu中蓝牙设备在机器长期不用后会自动断开连接.这对于一般的设备来说挺好,毕竟还省电了.但对于鼠标那就尴尬了.
为了让蓝牙设备不丢失,可以这样设置
- 从terminal中进入蓝牙的设置文件
cd /etc/bluetooth
- 找到其中的
main.conf
,在[LE]
块下修改Autoconnecttimeout=0
优化输入法
在linux桌面环境下输入法似乎是一个比较麻烦的问题.在Linux系统上常见的输入法框架(Keyboard input method system)有三种:
- IBus(Intelligent Input Bus),也是ubuntu的默认输入法
- Fcitx(FlexibleInput Method Framework),谷歌搜狗等用的框架,
- XIM(X Input Method).一般没啥用
上面的3种输入法框架Ubuntu 24.04都自带,但相对而言Fcitx可能是更智能的选择,因为字库比较多.
我们可以用如下步骤设置出一个相对好用的中文输入环境(参考自大佬DebuggerX的这篇博客)
- 在
设置->系统->区域与语言
中设置中文环境. - 在
语言支持
中选择默认的输入法框架为Fcitx 5
-
在
/etc/environment
中设置环境变量LANG=zh_CN.UTF-8 LANGUAGE=zh_CN:en_US XMODIFIERS=@im=fcitx QT_IM_MODULE=fcitx GTK_IM_MODULE=fcitx
之后重启
-
在
显示应用->工具->优化
中将Fcitx 5
添加自启动项,重启即可 - 安装Gnome插件
Input Method Panel
-
着全局代理执行如下命令
curl -sSL https://www.debuggerx.com/fcitx5_customizer/fcitx5_customizer.sh | bash -s -- recommend
- 之后除了去掉
搜狗词库
外都按推荐的来即可
优化快捷键
快捷键优化我们需要分为在桌面环境和在terminal中,在ubuntu中主要的快捷键逻辑还是跟随的windows,这就有点尴尬了.我个人会对快捷键做出如下设置
-
重新设置一些系统级快捷键
我们可以进入
设置->键盘->键盘快捷键->查看及自定义快捷键
分类 操作 按键组合 启动器 启动终端 Control + Alt + T
启动器 全局搜索 Super+ Space
导航 切换应用 Control+ Tab
截图 全屏截图 Shift + Control + 2
截图 窗口截图 Shift + Control + 3
截图 截图 Shift + Control + 4
截图 录屏 Shift + Control + 5
窗口 全屏模式切换 Super + Control + F
窗口 最大化模式切换 Alt + Control + F
窗口 隐藏窗口(最小化) Control + M
窗口 关闭应用 Control + Q
系统 锁定屏幕 Control + Super + Q
-
重新设置一些terminal快捷键
右键terminal,点击
首选项
,在快捷键
中进行如下修改操作 按键组合 复制 Control + C
黏贴 Control + V
编辑器全选 Control + A
关闭窗口 Control + Q
-
设置vscode.
进入
文件->首选项->键盘快捷方式
通过搜索关键字替换快捷键操作 按键组合 冲突 格式化文档 Shift + Alt + F
会有两个冲突,分别设置为 Alt + F
和Shift + F
即可 -
左侧
Control
和Win
键(Linux下Super
键,Mac下Command
键)互换映射.点击
显示应用
,打开工具->优化
,选择键盘->布局->其他布局
,勾选Ctrl位置->交换左win左ctrl
这样操作起来就和mac中一样了.如果你的键盘是机械键盘,你也可以将
Contrl
和Win
键互换位置
这样我们就可以将整机的快捷键统一为如下,需要注意现在你的键盘Win
键和Control
已经互换了位置:
操作 | 按键组合 |
---|---|
复制 | Control + C |
黏贴 | Control + V |
切换输入法 | Control + Space |
全局搜索 | Super+ Space |
全屏截图 | Shift + Control + 3 |
截图 | Shift + Control + 4 |
录屏 | Shift + Control + 5 |
全屏模式切换 | Super + Control + F |
最大化模式切换 | Alt + Control + F |
应用最小化 | Control + M |
关闭应用 | Control + Q |
切换应用 | Control+ Tab |
锁屏 | Control + Super + Q |
编辑器格式化 | Shift + Alt + F |
编辑器搜索 | Control + F |
存储文件 | Control + S |
编辑器全选 | Control + A |
编辑器撤销 | Control + Z |
编辑器注释 | Control + / |
ubuntu特有操作
操作 | 按键组合 |
---|---|
快速启动terminal | Control + Alt + T |
workspace管理 | Super |
切换窗口 | Alt + Tab |
移动到左边的工作空间 | Super + PageUp |
移动到右边的工作空间 | Super + PageDown |
将窗口向左移动一个工作空间 | Shift + Super + PageUp |
将窗口向右移动一个工作空间 | Shift + Super + PageDown |
切换到第一个工作空间 | Super + Home |
切换到最后一个工作空间 | Super + End |
将窗口移动到第一个工作空间 | Shift + Super + Home |
将窗口移动到最后一个工作空间 | Shift + Super + End |
由于键盘Win
键和Control
互换了位置,因此即便有一些没有覆盖到的快捷键也会和mac上的基本一致不用额外修改
如果你不在乎wayland,可以接受桌面环境运行在x11上,那我们也可以安装kinto这个项目来获得不同风格且统一的快捷键布局.
这么改有个缺陷就是只能使用Control + Alt + C
在terminal中中断程序了
安装docker环境
可以这么说,原生的docker环境是linux系统最大的竞争力之一,docker自然是要装的,而且必须装原生docker!
-
添加docker源
# Add Docker's official GPG key: sudo apt-get update sudo apt-get install ca-certificates curl sudo install -m 0755 -d /etc/apt/keyrings sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc sudo chmod a+r /etc/apt/keyrings/docker.asc # Add the repository to Apt sources: echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \ $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt-get update
-
安装docker
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
-
设置非root权限使用docker
sudo groupadd docker sudo usermod -aG docker $USER newgrp docker
-
修改docker配置增加镜像站
sudo nano /etc/docker/daemon.json
{ "registry-mirrors":[ "https://hub.geekery.cn", "https://hub.littlediary.cn", "https://registry.dockermirror.com" ] }
-
安装轻量级docker监控工具whaler,这个工具可以监控系统中的容器和compose-stack.已经相当够用.
-
重启后生效,然后就可以使用了
安装常用环境
ubuntu的apt是最常用的环境安装工具,但apt工具安装的包和应用都是系统级的,一旦出问题那就问题大了.因此遵循macos上的习惯,我们装homebrew.
注意:
arm
和x86
架构无法使用homebrew
,只有x86_amd64
才可以- linux下无法使用
Homebrew Cask
# 安装依赖
sudo apt-get install build-essential procps curl file git
# 安装homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# 配置环境
echo >> /home/hsz/.zshrc
echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"' >> /home/hsz/.zshrc
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
# 测试安装没问题
brew install hello
hello
homebrew
会被安装在linuxbrew
用户目录下(根目录为/home/linuxbrew
),而安装的包都会被放在/home/linuxbrew/.linuxbrew/Cellar
目录下
安装好homebrew
后我们自然也就需要安装cmake,protobuf,grpc,go,node,python3.11,micromamba
等等这些基本环境了.
修改我们的.zshrc
以固定各个包或工具的配置
#========================================================================= golang
# 主要是将go的mod缓存和gopath改到`Libraries`目录
export GO111MODULE=on
export GOPROXY=https://goproxy.cn
export GOPATH=/home/hsz/Libraries/go
export GOMODCACHE=/home/hsz/Libraries/go/pkg/mod
export PATH="$PATH:/home/hsz/Libraries/go/bin"
安装和管理Linux应用
linux上目前应用的分发是相当碎片化的,为了可以安装管理各种渠道的应用我们就得做对应的优化.不考虑虚拟机中使用应用,我们可以将应用分为原生应用,沙盒化应用两种.
沙盒化应用
应对应用的安全性问题,盒化方案在厂商看来更有优势,所以目前的三个主流沙盒化方案中有两个由厂商主导,剩下的一个也有厂商背书,而国产的统信系统使用的应用管理工具玲珑
也是这个路线.
沙盒化应用大多可以理解为更轻量的docker.最基础的就是通过Linux的容器技术(namespace
)隔离应用与操作系统,再单独为应用提供一套统一的lib作为runtime.不同的方案可能还会隔离应用的静态文件,做额外的权限控制等等.
沙盒化由于都多少使用了容器技术,计算性能多少会受一些影响(io性能基本没啥影响),但优点在于环境统一,这样分发效率就高太多了. 所有的沙盒化应用方案都是相似的结构: 服务端提供应用仓库;客户端提供命令行或gui的应用管理工具;再提供一套打包工具给开发者就齐活了.看看docker是不是似曾相识?就知道为啥厂商都爱这套方案了.
Flatpak
Flatpak
是Gnome
社区推的一套沙盒化应用方案,背后是老牌开源解决方案供应商redhat
,主打的就是一个开源.也因为开源,linux社区普遍对它风评还不错.
Flatpak
没有snap
那么严格,包的没那么多,但性能损失也和snap
差不太多,在10%~15%的程度,只是相同的应用通常比snap
少损失个1%左右.至于制成品包的大小,Flatpak
算的是除去各种依赖层各种runtime后的大小,因此看起来会比snap
小的多,但熟悉docker的都知道这只相当于docker镜像的最外面一层.因此一般装Flatpak
应用它还会下一堆依赖runtime什么的,总体看时间差不多.
安装和配置
在ubuntu中我们要安装Flatpak
应用需要先安装如下内容:
-
Flatpak
客户端工具sudo apt install flatpak
-
Gnome
环境下的Flatpak
支持插件sudo apt install gnome-software-plugin-flatpak sudo reboot
设置
flatpak
仓库
虽然flatpak
号称去中心化完全开源,但也还是有一个社区维护的主仓库的,这就是flathub.
flathub
基本就是一个网页版的flatpak
应用中心,不想用命令行安装flatpak
应用,我们可以直接上去搜索找到要装的应用,点击Install
按钮下载安装文件,然后双击就可以安装了.
如果要用命令行工具flatpak
安装,则还需要做如下设置将flathub
添加到仓库索引:
flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
sudo reboot
flathub
明显是一个境外网站,因此网速往往尴尬,尤其它很多运行时源用的是github,因此很多时候
管理
Flatpak应用
为了更好的管理flatpak应用,我们最好安装Warehouse来统一管理.
安装方式也很简单,在网页上点击Install
按钮下载安装文件,然后双击就可以安装了.不过我更喜欢用命令来安装
flatpak install flathub io.github.flattool.Warehouse
snap
Ubuntu
的开发公司Canonical
搞出来的一套沙盒化应用方案,也是Ubuntu
现在主推的标准,目前Ubuntu
的应用中心也只能管理snap
软件.
snap
有最严格的权限管理,而且它的包仓库是Canonical
自己维护的并不开源,也就是说你也没办法自己部署一个snap
的私有仓库,这在开源精神泛滥的linux社区中那是触了逆鳞了,这也是snap
最不受人待见的一点.
然后就是性能损失.由于snap
包的最多,性能损失也是最严重的,相比原生版本一般有10%~15%的性能(计算性能)损失,而它的打包方式也类似docker,是包含完整runtime的,因此制成品包也是最大的.
虽然说了这么多缺点,但它作为Ubuntu
默认的应用分发模式体验其实还算不错–开箱即用,下载速度也还不错,个人认为没啥必要黑它.
原生应用
原生应用直接运行在裸机上,提供了最大程度灵活性和最大程度资源利用,但问题就在于安全性.由于直接接触系统,原生应用之间可能会相互影响,造成依赖冲突等问题,一个不小心甚至可能将系统整崩溃.
deb
ubnutu是从debian发展而来的,继承了其deb应用的生态.我们可以使用apt
工具很轻易的安装库或者应用,而这些都是使用deb
分发的.
由于apt工具会处理依赖,deb
包往往大量相互依赖而本体非常小.但请注意,如果不是万不得已,用户级别的应用我是不推荐用deb安装的,因为一旦依赖出了问题那就很难修复,想要重回干净的系统基本只能重装系统了,而python用户应该都清楚依赖冲突问题是多么容易发生.
管理deb软件包我们可以安装synaptic
.
sudo apt install synaptic ### 安装资源监控工具
PORTABLE LINUX APPS
PORTABLE LINUX APPS
这种”独立自主”路线固然是一个方案,但显然并不是唯一方案,沙盒化应用就是另一个方案.显然沙
所谓PORTABLE LINUX APPS
是在GNU/Linux上可以独立运行(理论上)的应用程序,这种应用程序可以在任何地方运行甚至在U盘上都可以.
这些应用程序可以是AppImage应用
,也可以是独立归档应用(比如Firefox
,Blender
,Thunderbird
).
独立归档应用
独立归档应用
本质上是一个文件夹,它里面包含了应用需要的所有资源,从静态资源到依赖包,而其中的可执行文件可以不依赖系统本身的lib就可以执行.
这种应用可以在所有linux发行版中直接使用的.
一般独立归档应用
并不多见不多,只有重型应用像上面例子里的firefox,blender才会支持这样分发.
一般如果我们用的是开源软件,可以在github上找找,看看它的release
中是否有给linux使用的非source压缩包,如果有一般就是独立归档应用
,下载下来解压出来根据文档设置就可以正常使用了.
AppImage应用
AppImage应用是独立归档应用更进一步的产物,它提供了一套规范将一个完整的包含所有依赖的应用打包成了一个文件.这个文件除了可以提取出应用所需的文件外还可以直接赋予可执行权限后直接执行.
这个分发方式就像windows上的绿色软件
和macos中应用的结合,可以说相当创新.但很可惜似乎从2019年开始发展就慢下来了.不过我个人依然推荐如果要开发linux下的应用,可以将这种方式作为一个分发选项.
一般如果我们用的是开源软件,可以在github上找找,看看它的release
中是否有以.AppImage
为后缀的文件.有的话就是了,下载下来就可以直接使用了.
注意AppImage
实际有两个版本,版本1基本已经废弃,只会在一些已经停止维护的古早软件上有机会看到,这里讨论的都是版本2的AppImage应用
直接执行
AppImage应用
直接执行AppImage
文件的原理很简单,AppImage
文件里面有个SquashFS的文件系统,运行的时候会借助libfuse挂在到一个临时的endpoint,里面的内容类似独立归档应用
,有所有只读的文件,包括可执行文件,库文件,静态数据等.除此之外都和普通的软件运行环境是一样.也就是说直接运行AppImage
文件相当于挂载了一块只读盘执行其中的可执行文件.
我们要直接执行AppImage
文件需要确保系统中有libfuse
.很遗憾ubuntu中是没有的,我们可以使用apt进行安装.以我所用的Ubuntu 24.04
为例,使用如下语句
sudo add-apt-repository universe
sudo apt install libfuse2t64
在满足这个条件后,安装AppImage应用
就很简单了
- 下载
.AppImage
为后缀的文件 chmod +x 文件名.AppImage
给AppImage应用
服务可执行权限- 双击或者进terminal输入文件名就可以使用了
需要注意现在很多应用是electron
开发的,他们底层是Chromium
,对于这类应用我们需要执行是增加参数--no-sandbox
,否则会报错,这是Chromium
的限制
提取
AppImage应用
后当做独立归档应用
处理
AppImage应用
自带的运行时支持使用flage--appimage-extract
将其中的内容解包成一个文件夹(AppDir)放到路径squashfs-root
下.
提取出来以后我们完全可以将它当做独立归档应用
处理
AppImage应用
的兼容性问题
没错,AppImage
实际上并没有完全解决兼容性问题,因为不同的linux发行版甚至同意linux发行版的不同版本,他们的glibc
都不一定版本一样,而很多应用即便封装成了AppImage
也并没有将glibc
封装进去.这就造成了一些AppImage应用
有兼容性问题.毕竟AppImage
这套方案并没有任何审核,也没有任何强制手段,怎么封装全靠开发者自觉,这也是开源去中心化的代价.
如果碰到用不了的AppImage应用
,我们基本只能放弃,看看有没有其他方案的可以用了.
系统集成
光是能执行并不够,我们希望在操作系统中可以方便的找到这些PORTABLE LINUX APPS
.这就需要手动将他们集成到桌面系统已方便打开,怎么注册呢?通常我们用如下方式:
- 下载软件压缩包,并解药到
~/Applications
目录 -
进入
~/.local/share/applications
目录,创建xxx.desktop
并编辑[Desktop Entry] Version=<应用版本> Type=Application Encoding=UTF-8 Name=<应用名> Comment=<应用说明> Icon=<应用图标路径> Exec=<应用可执行文件路径> %U Terminal=false Categories=Application;
其中
Version
: 应用版本Type
: 指定快捷方式类型Encoding
: 指定编码格式Name
: 快捷方式的名称Comment
: 快捷方式的简短描述Icon
: 快捷方式的图标路径,一般解压后都有Exec
: 要执行的命令. 是一个占位符如果快捷方式是通过文件管理器启动的,则使用%U
这个占位符指定文件将被作为参数传递给命令.Terminal
: 如果程序需要在终端中运行,则设置为true;否则设置为falseCategories
: 用于帮助应用程序菜单对快捷方式进行分类
其他字段可以参考desktop-entry-spec相关规定
-
为这个
.desktop
文件赋予可执行权限chmod +x ~/Desktop/xxx.desktop
PORTABLE LINUX APPS
管理工具
PORTABLE LINUX APPS
可以说是真正的去中心化,社区驱动,以至于时至今日已经有点驱动不下去了的感觉.
但不管怎样PORTABLE LINUX APPS
也是一类重要的解决方案.这类应用的维护相对麻烦些,工具简陋,维护相对不上心,我们能做的就是多一些手动介入让他们在系统中相对更简洁好维护而已.
为了做到这一点,我个人会给PORTABLE LINUX APPS
的部署做如下限制
- 限制
PORTABLE LINUX APPS
仅用户级安装 - 限制
PORTABLE LINUX APPS
的应用全部安装在~/Applications
目录下,且一个应用一个文件夹或一个.appimage
文件不做嵌套
说回到管理工具,PORTABLE LINUX APPS
的管理工具其实也是有的,但一样也是相当的”去中心化”而且完成度相对低.我体验的相对靠谱的是ivan-hc/AM这套工具.
这套的缺点是只有命令行工具没有带gui的管理应用.但相对的index整理的算比较全的,而且提供了一个轻量级沙盒功能可以进一步隔离应用和操作系统.
我更加推荐安装它的非root版本ivan-hc/AppMan,他们功能一样,只是appman是用户级而非系统级.
am
和appman
共用一份应用索引作为应用仓库,
安装
appman
安装appman
可以通过如下命令实现
wget -q https://raw.githubusercontent.com/ivan-hc/AM/main/AM-INSTALLER && chmod a+x ./AM-INSTALLER && ./AM-INSTALLER
注意由于数据在github上,最好先挂上代理再执行上面的命令.
执行好后会让你选安装am
还是appman
,选2
就是appman
.
安装完成后会有如下几个位置有相关文件
- 执行命令的目录下会有安装脚本
AM-INSTALLER
,可以删掉 ~/.local/bin
下会有可执行文件appman
~/Applications
下会有文件夹appman
要卸载appman
时先将appman
安装的应用都卸载了,然后直接将这些文件,文件夹删除即可
使用
appman
-
搜索am数据库中索引的应用
appman -q <关键字>
-
安装am数据库中索引的应用
appman -i <应用名>
安装即可.如果希望安装
AppImage
而不是独立归档应用
,可以添加flag-a
appman -ia <应用名>
如果希望安装的同时进行沙盒化,可以加个flag
-s
appman -is <应用名>
am
工具的沙盒化是使用的Aisap. -
安装来自github而am数据库中索引未收录的应用
如果我们希望让
apman
安装并管理未被收录的github上的appimage
,则可以使用-e
命令替代-i
和-ia
appman -e <github地址> <应用名> [关键字]
如果这个地址中有不止一个
appimage
文件,可选的关键字
可以用来指定实际需要的是哪个.而<应用名>
则是这个安装好的appimage
文件在系统内的命名. -
将本地已经下载好的
appimage
文件注册到appman
并集成进系统appman --launcher /path/to/File.AppImage
-
查看本地由
appman
维护的应用appman -f
-
更新应用
appman -u <应用名>
-
卸载应用
appman -R <应用名>
选择应用安装方式的总结
在ubuntu中可以顺利使用的应用分发方式我做了如下总结
对比项目 | 独立归档应用 |
deb |
AppImage |
Flatpak |
snap |
---|---|---|---|---|---|
发行版支持 | 跨发行版 | 仅debian系 | 跨发行版 | 跨发行版 | 跨发行版 |
是否独立执行 | 是 | 否 | 是 | 否 | 否 |
是否沙盒运行 | 否但可以 | 否 | 否但可以 | 是 | 是 |
性能损失 | 无损失 | 无损失 | 启动有略微损失,运行无损失 | 损失较小 | 损失小 |
空间占用 | 大 | 最小 | 大 | 本体较小,算上依赖大 | 最大 |
资源平台 | portable-linux-apps</br>应用官网 | apt </br>github release </br>各种官网下载 |
portable-linux-apps</br>github release |
flathub | ubuntu应用商店 |
平台资源数量 | 较少 | 多 | 较少 | 较多 | 较少 |
平台版本活跃度 | 高 | 取决于渠道 | 取决于渠道 | 高 | 高 |
维护工具 | am /appman |
apt /synaptic |
am /appman |
Warehouse |
系统应用商店 |
安装难度 | 大 | 小 | 极小 | 小 | 小 |
维护难度 | 大 | 小 | 大 | 小 | 小 |
可以看到如果这些平台都各有利弊.我们应该针对不同需求使用不同的平台.
- 对于比较大的公司或知名大项目提供的产品,比如谷歌微软blender什么的,尽量用官方提供的安装方案
- 对性能要求比较高的尤其是吃计算资源的应用
- 优先尝试使用
独立归档应用
- 如果有
Appimage
也可以尝试用Appimage
- 如果没有就找官网有没有提供
deb
包
- 优先尝试使用
- 对于扩展性要求较高的比如要自己装插件改文件的应用
- 优先尝试使用
独立归档应用
- 如果有
Appimage
,可以解压出来当做独立归档应用来尝试使用
- 优先尝试使用
- 其他应用无脑
Flatpak
即可.
常用软件
linux下我会尽量推荐开源工具.下面是一些常用软件的安装信息
系统工具
软件 | 渠道 | 说明 | ||
---|---|---|---|---|
Disk Usage Analyzer | flathub | 查看硬盘使用情况的工具 | ||
Remmina | flathub | 远程桌面的连接客户端 | ||
timeshift | sudo apt install timeshift |
系统快照,我们需要自备一块</br>空的U盘专门做快照,每半年做一份快照 | ||
missioncenter | flathub | 有着window上资源管理器风格的综合性资源监控软件,可以监控GP | ||
CPU-X | sudo apt install cpu-x |
windows上cpu-z在linux上的平替 | ||
AMD GPU TOP | 官网下载deb | amdgpu的运行详细信息监控 | ||
bleachbit | sudo apt install bleachbit |
系统清理工具 | ||
gufw | sudo apt install gufw |
防火墙工具,使用sudo ufw enable 启动 |
||
chrome | 官网下载deb | google的浏览器 | ||
Warehouse | flathub | flatpak应用管理 | ||
synaptic | sudo apt install synaptic |
新立得软件包管理器,管理deb应用和包 | ||
appman | 官网脚本下载 | 管理PORTABLE LINUX APPS |
||
whaler | flathub | 轻量级docker容器监控工具 | ||
<!– | WineZGUI | flathub | wine工具集 | –> |
补充设置
chrome
硬件加速:
- 地址栏输入
chrome://settings/
- 左侧选中系统,右边激活
使用图形加速功能(如果可用)
gpu加速:
在地址栏输入chrome://flags/#disable-accelerated-video-decode
,找到其中的
Hardware-accelerated video decode
硬件解码设置,确保置为已启用
生产力工具
软件 | 渠道 | 说明 |
---|---|---|
Calculator | flathub | 基本的计算器工具 |
gimp | flathub | 开源的图像编辑软件,ps平替 |
Inkscape | flathub | 矢量图编辑工具 |
freecad | appman -i freecad |
开源的工程制图,autocad平替 |
blender | appman -i blender |
开源的3d建模渲染工具,maya平替 |
godot | appman -i godot |
开源的轻量级游戏引擎 |
unrealengine5 | 官网下载 | 大名鼎鼎的虚幻引擎, |
shotcut | appman -i shotcut |
轻量级的开源视频剪辑工具 |
DaVinci Resolve | 官网下载 | 大名鼎鼎的生产级视频剪辑工具达芬奇,有免费的社区版 |
KiCad | flathub | 知名的开源eda工具 |
balenaEtcher | 官网下载 | 镜像写入工具 |
飞书 | 官网下载deb | 知名的办公协作工具,flathub版本无法后台挂载因此用官网版本 |
微信 | 官网下载deb | 知名的聊天工具,由于flathub版本的后台功能有缺陷因此使用AppImage版本 |
wps | 官网下载deb | 知名的office套件,flatpak版本过低 |
obs | flathub | 知名的开源直播录屏工具 |
vscode | 官网下载deb | 文本编辑器 |
github desktop | github下载deb | github desktop的第三方linux fork |
Xmind | flathub | 知名的脑图工具 |
minder | flathub | xmind的开源替代 |
补充设置
vscode额外设置: vscode默认会将标题栏和工具栏分开,非常的丑也非常的不紧凑.我们可以进入
文件->首选项->设置
,在其中搜索window.titleBarStyle
,将其设置为custom
.这样标题栏就会和工具栏合并,好看很多.
娱乐工具
软件 | 渠道 | 说明 |
---|---|---|
vlc | flathub | 知名的开源视频播放器 |
NetEase Cloud Music Gtk4 | flathub | 网易云音乐的开源第三方客户端 |
steam | 官网下载 | 知名的pc游戏平台 |
ProtonUp-Qt | flathub | 为steam管理GE-Proton |
protontricks | flathub | 为Steam/Proton游戏以及其他常见Wine功能运行Winetricks命令 |
Linux下神奇的Steam
steam大家都知道,知名的游戏平台嘛.但在linux下steam是一个神奇的存在,某种程度上可以说是steam盘活了桌面linux生态都不过分.
steam最基本的能力当然是让玩家可以方便的打游戏,阀门社为了这个目标煞费苦心,他们的努力直接给linux平台大范围扩展了生态,以至于steam即便不打游戏都是linux上的必装软件.
添加非steam应用
steam除了可以管理它自己平台上的软件,也可以自己给它添加软件由他启动
steam runtime
如果游戏也算应用的话steam在linux上可能是最大的应用分发渠道了.steam通过steam-linux-runtime支持原生linux应用.
而这个steam-linux-runtime
实际上就是一个通用的轻量级沙盒,包含了一个统一的库环境并用namespace与操作系统隔离.一些游戏开发相关的开源应用比如blender
,godot
,原生支持linux的游戏比如dota
也都可以使用这种方式运行.
由于这个环境也是用namespace做抽象的,所以性能损失也是有的,只是没那么多.
话虽如此,我个人还是不太推荐用steam
管理除游戏以外的linux原生应用的,一方面这种应用太少,另一方面这类应用都往往是对计算性能要求比较高的类型,白白损失性能还是太可惜了.
转译应用
其实很久之前就有一个开源项目wine致力于让linux和macos可以执行windows程序.起工作原理可以理解为将windows程序调用的各种系统依赖在linux/macos上重新实现一遍,然后让windows程序调用这些被转译的依赖以执行.这一套方案原理上逻辑上没啥问题,但一直以来支持并不好,主要原因是图形接口的转译跟不上.
- 一方面是厂商不开源,让转译工作难以进行,
- 另一方面是开源的工具(
opengl
这类)性能拉胯. - 最后就是项目是社区驱动的,没钱没资源,维护自然也跟不上
而就在最近几年转译应用忽然就迎来了春天,主要取决于两点
- 微软开始拥抱开源了,
- 阀门社开始做steam deck了.
总而言之,阀门社搞了个开源的转译层项目proton.这直接让linux下可以正常跑大部分windows平台的游戏,还顺便让其他windows软件也可以借助steam进行管理运行.
我们就以官网下载的原生版本的steam为基准,介绍转译应用.
使用steam安装proton
首先我们要先安装steam,由于steam本身是一个启动器,后需可能会有很多需要手动操作的部分,因此最好是原生安装方便手动调试.然后进入steam,进入库
,勾选工具
,找到proton
,一般装个最新版本就够用了.也可以多装一个proton experimental
备用,然后视游戏安装相关的反作弊运行时即可.
使用ProtonUp-Qt安装proton-ge
proton项目是开源的,除了steam官方的proton,自然也会有魔改proton.其中最知名的自然就是proton-ge,这个第三方的魔改proton
据说比官方版本效率更高些,而且兼容性会更好些,虽然也一样可能有兼容性问题.
proton-ge
官方给的安装方式还是比较麻烦的,我们可以使用ProtonUp-Qt来进行自动安装,只要打开后选择最新版本安装即可.需要注意steam必须是原生安装的,否则安装位置会不对了.
使用proton运行windows软件
即便是安装好proton
后,windows平台的软件也是不能直接下载了用的,我们需要选中已经购买好的游戏,点击右侧设置
(齿轮按钮)->属性
->兼容性
,选一个proton
版本强制指定兼容层.这样游戏就可以下载运行了.
之于能不能玩,这就得群策群力了,protondb是一个steam上游戏兼容性的数据网站,主要靠社区玩家提交报告来确定特定游戏的兼容性.我们可以先在其中查看
游戏帧数检测
我们看到很多评测视频里会有帧数(FPS)等指示用来观察游戏的流畅程度.在linux下也有,需要使用flightlessmango/MangoHud这个软件.
sudo apt install mangohud
安装完成后我们可以在steam中设置启动选项修改
为mangohud %command%
默认会在游戏界面的左上角给出cpu,gpu占用和帧数数据.我们可以在~/.config/MangoHud/MangoHud.conf
文件中对展示的内容进行自定义,具体有哪些参数可以看这张表.建议像我下面这样设置
cpu_temp
gpu_temp
ram
vram
position=top-left
用steam串流
说到串流可能大家想到的更多的是sunshine-moonlight的串流组合.但实际情况是在用N卡的情况下sunshine强无敌,而在用a卡尤其是apu的核显的情况下sunshine并不好用,尤其在linux下根本用不了.反而是steam link效果还不错.
用法也不复杂
- 接收端的机器安装
steam link
,苹果直接在app store里下,安卓则去官网下即可,之后打开它 - 发送端机器打开steam,在
steam->设置
中找到远程畅玩
,激活后配对流式应用
即可.如果你已经有配对好了的就需要先取消设备配对
然后再做配对 - 这时你接收端的机器会有个pin码,在发送端机器中将这个码填上就配对完成了.
steam串流非常吃网络,发送端一定要用有线的方式接入网络,接收端也尽量在网络覆盖范围内.网络稳定串流才能稳定