属于macos用户的Ubuntu配置指南

Posted by Hsz on December 4, 2024

属于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.本篇我们还是以官方驱动为准.

可以使用如下步骤安装:

  1. 安装安装器

     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版本.

  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 OpenCL
    • mlsdk,包含mllib,额外附带MIOpen和Clang OpenCL的开发库
    • asan,支持ASAN(内存检测工具)的ROCm工具

    正常情况下使用amdgpu-install --usecase=rocm,graphics 安装即可

  3. 设置系统连接

    也就是设置相关工具的查找位置

     sudo tee --append /etc/ld.so.conf.d/rocm.conf <<EOF
     /opt/rocm/lib
     /opt/rocm/lib64
     EOF
    
     sudo ldconfig
    
  4. 使用update-alternatives更新配置ROCm二进制文件的路径.

     update-alternatives --list rocm
    
  5. 设置环境变量

    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
    
  6. 检查驱动是否正常

     dkms status
    

    这个命令会打印出显卡的状态

  7. 检查rocm是否正常安装

     rocminfo # 检查rocm状态
     clinfo # 检查opencl状态
    
  8. 检查包是否安装正常

     apt list --installed
    
rocm版本更新

更新版本我们需要完全卸载已有的rocm,驱动,和rocm安装器

sudo amdgpu-install --uninstall # 卸载驱动和库
sudo apt purge amdgpu-install # 卸载安装器
sudo apt autoremove # 卸载对应依赖
sudo reboot # 重启后生效

之后在下载新版本的安装器重新安装配置一次即可

基础设置

在开始其他设置之前,我们还需要做如下设置

git的安装设置

git工具我们需要好好设置下,毕竟ubuntu下很多东西,尤其是大文件的项目都需要git下载

  1. 安装git,ubuntu并不会默认安装git工具,因此我们需要先安装git

     sudo 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系统界面大致可以分为如下几个部分

系统界面

美化系统我们大致可以分为如下几个步骤

  1. 美化桌面
  2. 美化登录页面
  3. 添加实用插件
  4. 美化terminal
  5. 美化字体

一般我也会按这个次序进行设置

在开始设置之前,我们需要先安装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 ,然后解压,可以获得两个文件夹macOSmacOS-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中蓝牙设备在机器长期不用后会自动断开连接.这对于一般的设备来说挺好,毕竟还省电了.但对于鼠标那就尴尬了.

为了让蓝牙设备不丢失,可以这样设置

  1. 从terminal中进入蓝牙的设置文件cd /etc/bluetooth
  2. 找到其中的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的这篇博客)

  1. 设置->系统->区域与语言中设置中文环境.
  2. 语言支持中选择默认的输入法框架为Fcitx 5
  3. /etc/environment中设置环境变量

     LANG=zh_CN.UTF-8
     LANGUAGE=zh_CN:en_US
    
     XMODIFIERS=@im=fcitx
     QT_IM_MODULE=fcitx
     GTK_IM_MODULE=fcitx
    

    之后重启

  4. 显示应用->工具->优化中将Fcitx 5添加自启动项,重启即可

  5. 安装Gnome插件Input Method Panel
  6. 着全局代理执行如下命令

     curl -sSL https://www.debuggerx.com/fcitx5_customizer/fcitx5_customizer.sh | bash -s -- recommend
    
  7. 之后除了去掉搜狗词库外都按推荐的来即可

优化快捷键

快捷键优化我们需要分为在桌面环境和在terminal中,在ubuntu中主要的快捷键逻辑还是跟随的windows,这就有点尴尬了.我个人会对快捷键做出如下设置

  1. 重新设置一些系统级快捷键

    我们可以进入设置->键盘->键盘快捷键->查看及自定义快捷键

    分类 操作 按键组合
    启动器 启动终端 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
  2. 重新设置一些terminal快捷键

    右键terminal,点击首选项,在快捷键中进行如下修改

    操作 按键组合
    复制 Control + C
    黏贴 Control + V
    编辑器全选 Control + A
    关闭窗口 Control + Q
  3. 设置vscode.

    进入文件->首选项->键盘快捷方式通过搜索关键字替换快捷键

    操作 按键组合 冲突
    格式化文档 Shift + Alt + F 会有两个冲突,分别设置为Alt + FShift + F 即可
  4. 左侧ControlWin键(Linux下Super键,Mac下Command键)互换映射.

    点击显示应用,打开工具->优化,选择键盘->布局->其他布局,勾选Ctrl位置->交换左win左ctrl

    这样操作起来就和mac中一样了.如果你的键盘是机械键盘,你也可以将ContrlWin键互换位置

这样我们就可以将整机的快捷键统一为如下,需要注意现在你的键盘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.

注意:

  1. armx86架构无法使用homebrew,只有x86_amd64才可以
  2. 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

FlatpakGnome社区推的一套沙盒化应用方案,背后是老牌开源解决方案供应商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应用就很简单了

  1. 下载.AppImage为后缀的文件
  2. chmod +x 文件名.AppImageAppImage应用服务可执行权限
  3. 双击或者进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.这就需要手动将他们集成到桌面系统已方便打开,怎么注册呢?通常我们用如下方式:

  1. 下载软件压缩包,并解药到~/Applications目录
  2. 进入~/.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;否则设置为false
    • Categories: 用于帮助应用程序菜单对快捷方式进行分类

    其他字段可以参考desktop-entry-spec相关规定

  3. 为这个.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是用户级而非系统级.

amappman共用一份应用索引作为应用仓库,

安装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

硬件加速:

  1. 地址栏输入chrome://settings/
  2. 左侧选中系统,右边激活使用图形加速功能(如果可用)

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应用-入口

添加非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程序调用这些被转译的依赖以执行.这一套方案原理上逻辑上没啥问题,但一直以来支持并不好,主要原因是图形接口的转译跟不上.

  1. 一方面是厂商不开源,让转译工作难以进行,
  2. 另一方面是开源的工具(opengl这类)性能拉胯.
  3. 最后就是项目是社区驱动的,没钱没资源,维护自然也跟不上

而就在最近几年转译应用忽然就迎来了春天,主要取决于两点

  1. 微软开始拥抱开源了,
  2. 阀门社开始做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-ge

使用proton运行windows软件

即便是安装好proton后,windows平台的软件也是不能直接下载了用的,我们需要选中已经购买好的游戏,点击右侧设置(齿轮按钮)->属性->兼容性,选一个proton版本强制指定兼容层.这样游戏就可以下载运行了.

设置proton-入口

设置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效果还不错.

用法也不复杂

  1. 接收端的机器安装steam link,苹果直接在app store里下,安卓则去官网下即可,之后打开它
  2. 发送端机器打开steam,在steam->设置中找到远程畅玩,激活后配对流式应用即可.如果你已经有配对好了的就需要先取消设备配对然后再做配对
  3. 这时你接收端的机器会有个pin码,在发送端机器中将这个码填上就配对完成了.

steamlink设置入口-1 steamlink设置入口-2

steam串流非常吃网络,发送端一定要用有线的方式接入网络,接收端也尽量在网络覆盖范围内.网络稳定串流才能稳定