Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

何でもは知らないわよ。知ってることだけ。

cover

这里是,一个 Fedora KDE 用户,创建的个人站点,包含一些自用说明文档、备忘录和其他琐碎的东西。

关于

该部分的内容以杂谈为主。

影视&番剧记录单

符号名称说明
A特别推荐个人觉得值得向阅读此文的人推荐的类别
B推荐个人观看体验满意的类别
C一般个人观看体验一般的类别
D不推荐个人观看体验不满意的类别
X未定义因为没有看懂,所以无法归类
S季度影视剧集或动画番剧的季度
TVTV 版在电视台上放送的动画版本
OVA原创视频动画映像特典、番外剧集等非主线内容
M电影电影、动画电影或剧场版动画
+加号表示“和”
~波浪号表示“至”

说明:

  1. 本文基于个人主观体验进行推荐;
  2. 括号内为番剧名称的日文原文、日语罗马字或英文原名;
  3. 符号后紧跟的数字表示其发布次序,例如 S2 表示第二季。
  4. 没有特别注明季度时,默认为第一季或第一部。

动画

A 类

  • 日常(Nichijou)
  • 刺客五六七 S1~S3
  • 工作细胞 Black(はたらく細胞 Black)
  • 罗小黑战记 S1~S2 + M
  • 灵能百分百(モブサイコ100) S1~S2
  • 小魔女学园(Little Witch Academia)TV + OVA + M
  • 来自深渊(MADE IN ABYSS) S1
  • 魔术快斗(まじっく快斗)
  • 别对映像研出手!(映像研には手を出すな!)
  • 成龙历险记
  • 瑞克和莫蒂 S1~S3
  • 米老鼠(初代)
  • 海绵宝宝 S1~S4
  • 猫和老鼠
  • 摇曳露营△(ゆるキャン△) S1~S2 + OVA + M
  • 0 号宿舍
  • 大理寺日志 S1~S2
  • 新世纪福音战士(Neon Genesis Evangelion)TV 版
  • EVA 新剧场版 1(EVANGELION: 1.0 YOU ARE (NOT) ALONE.)
  • 飞出个未来 S1~S7
  • RWBY S1~S2
  • 白箱(SHIROBAKO) TV + OVA
  • 冰菓(Hyouka: Classic Literature Club series)
  • SSSS.GRIDMAN
  • 奇巧计程车(Odd Taxi)
  • 哥斯拉 奇异点(Godzilla Singular Point)
  • 赛马娘 Pretty Derby(Uma Musume Pretty Derby) S2
  • 某科学的超电磁炮(とある科学の超電磁砲)S1
  • 物语系列1(Monogatari Series)
  • 魔法少女小圆(Puella Magi Madoka Magica)TV + M1~M3
  • 天元突破 红莲螺岩(天元突破グレンラガン)
  • 斩服少女(Kill la Kill)
  • 乒乓(Ping Pong The Animation v2)
  • 赛博朋克:边缘行者(Cyberpunk: Edgerunners)
  • Gon 的旱獭 S1~S3 + OVA
  • 游戏三人娘(あそびあそばせ)
  • 男子高校生的日常(男子高校生の日常)
  • 鲁邦三世~名为峰不二子的女人~(Lupin the Third Mine Fujiko to Iu Onna)
  • 星际牛仔(Cowboy Bebop)
  • 四叠半神话大系(The Tatami Galaxy)
  • 四叠半时光机布鲁斯(Yojouhan Time Machine Blues)
  • 春宵苦短,少女前进吧!(Yoru wa Mijikashi Aruke yo Otome)
  • 葬送的芙莉莲(葬送のフリーレン)
  • 为美好的世界献上祝福(KonoSuba: God’s Blessing on This Wonderful World!) S1~S3
    • 为美好的世界献上祝福!OAD(この素晴らしい世界に祝福を! OAD)
    • 为美好的世界献上祝福!第三季 ーBONUS STAGEー
    • 为美好的世界献上祝福!红传说(この素晴らしい世界に祝福を!紅伝説)
  • 月刊少女野崎君(月刊少女野崎くん)
  • 胆大党(DAN DA DAN) S1
  • 四月是你的谎言(四月は君の嘘)

B 类

  • 比翼之吻(Darling in the Franxx)
  • 异种族风俗娘评鉴指南(異種族レビュアーズ)
  • 珈百璃的堕落(Gabriel Dropout)
  • 动物新世纪(BNA: Brand New Animal)
  • 巨兵长城传
  • 女子高中生的虚度日常(女子高生の無駄づかい)
  • 慎重勇者~这个勇者明明超强却过分慎重~(慎重勇者~この勇者が俺TUEEEくせに慎重すぎる~)
  • 辉夜大小姐想让我告白(Kaguya-sama: Love Is War) S1~S2
  • 非洲的动物上班族(アフリカのサラリーマン)
  • 小林家的龙女仆(Miss Kobayashi’s Dragon Maid) S1
  • 请吃小红豆吧 S1~S4
  • 监狱学园(監獄学園)
  • 没有黄段子存在的无聊世界(下ネタという概念が存在しない退屈な世界)
  • 恋爱研究所(恋愛ラボ)
  • 瑞克和莫蒂 S4~S6
  • 十万分冷笑话 S1~S3 + M1~M2
  • 一拳超人(One-Punch Man) S1~S2
  • EVA 新剧场版 4(Evangelion - 3.0+1.01 Thrice Upon a Time)
  • 英雄联盟:奥术(Arcane: League of Legends)
  • RWBY S3
  • 更衣人偶坠入爱河(その着せ替え人形は恋をする)
  • 碧蓝之海(ぐらんぶる)S1~S2
  • 万圣街
  • 咸鱼哥
  • 轻音少女(K-ON!) S1~S2
  • 动物狂想曲(Beastar) S1~S2
  • 街角魔族(まちカドまぞく)S1~S2
  • 孤独摇滚(Bocchi the rock)
  • 甘城光辉游乐园(甘城ブリリアントパーク)
  • 异世界舅舅(異世界おじさん)
  • 梦想成为魔法少女(魔法少女にあこがれて)
  • 中年上班族转生恶役(悪役令嬢転生おじさん)
  • 路人女主的养成方法(冴えない彼女(ヒロイン)の育てかた) S1~S2

C 类

  • 非人哉
  • 埃罗芒阿老师(Eromanga Sensei)TV + OVA
  • 笨女孩(アホガール)
  • 埃及神明们的日常(とーとつにエジプト神)
  • 干物妹小埋(干物妹!うまるちゃん)
  • 我不是说了能力要平均值么!(私、能力は平均値でって言ったよね!)
  • 不正经的魔法讲师与禁忌教典(ロクでなし魔術講師と禁忌教典) S1
  • 在下坂本,有何贵干(坂本ですが?)
  • EVA 新剧场版 2(EVANGELION: 2.0 YOU CAN (NOT) ADVANCE.)
  • 汉化日记 S1~S2
  • 转生恶役只好拔除破灭旗标(乙女ゲームの破滅フラグしかない悪役令嬢に転生してしまった…) S1
  • Endro!
  • 亚人酱有话要说(亜人ちゃんは語りたい)
  • 入间同学入魔了(魔入りました!入間くん) S1
  • 旗扬!兽道(旗揚!けものみち)
  • 这个美术社大有问题!(この美術部には問題がある!)
  • 默绘女高(女子かう生)
  • 餐桌上的世说新语 S1~S2
  • 成群逐队!西顿学园(群れなせ!シートン学園)
  • 关于我转生变成史莱姆这档事(転生したらスライムだった件) S1
  • 齐木楠雄的灾难(The Disastrous Life of Saiki K.) S1
  • 笨拙之极的上野(上野さんは不器用)
  • Goku 午夜之眼(MIDNIGHT EYE ゴクウ) OVA
  • RWBY S4
  • 乱马1/2 TV + OVA
  • 物语系列 外传季&怪物季(〈物語〉シリーズ オフ&モンスターシーズン)

X 类

  • 漂流少年(Sonny Boy)
  • 龙与虎(TIGER×DRAGON!)
  • 在盛夏等待(あの夏で待ってる) TV + OVA
  • 未闻花名(Anohana: The Flower We Saw That Day)
  • EVA 剧场版 真心为你(The End of Evangelion)

D 类

  • 猫娘乐园(NEKOPARA)
  • 我的朋友很少(僕は友達が少ない)S1
  • 喂,看见耳朵啦(ほら、耳がみえてるよ!) S1
  • 仙王的日常生活
  • 关于完全听不懂老公在说什么的事 S1~S2
  • EVA 新剧场版 3 (EVANGELION: 3.0 YOU CAN (NOT) REDO.)
  • 小林家的龙女仆 S
  • 我的朋友很少 S2
  • Overflow
  • 淫乱的青酱不能学习
  • 贤惠幼妻仙狐小姐
  • 人马少女的烦恼
  • 公主连接! Re:Dive
  • 无彩限的怪灵世界
  • 贤者之孙
  • 关于我转生变成史莱姆这档事 S2

影视剧集

A 类

  • 女子警察的逆袭(ハコヅメ ~たたかう!交番女子~)
  • 新·奥特曼(シン・ウルトラマン)
  • 流浪地球 M1~M2
  • 正义联盟·导演剪辑版(Zack Snyder’s Justice League)
  • 阿甘正传(Forrest Gump)
  • 让子弹飞
  • 功夫
  • 红辣椒(パプリカ)
  • 千年女优(千年女優)
  • 东京教父(東京ゴッドファーザーズ)
  • 唐伯虎点秋香
  • 盗梦空间(Inception)
  • 奥本海默(Oppenheimer)
  • 猫鼠游戏(Catch Me If You Can)
  • 白日梦想家(The Secret Life of Walter Mitty)

B 类

  • 冰雪奇缘(Frozen) M1
  • 怪兽大学(Monsters University)
  • 怪兽电力公司(Monsters, Inc.)
  • 机器人总动员(WALL·E)
  • 疯狂动物城(Zootopia)
  • 阿凡达(Avatar)
  • 超能陆战队(Big Hero 6)
  • 头号玩家(Ready Player One)
  • 无敌破坏王(Wreck-It Ralph) M1~M2
  • 火星救援(The Martian)
  • 星际穿越(Interstellar)
  • 蜘蛛侠:纵横宇宙(Spider-Man: Across the Spider-Verse)

C 类

X 类

  • 未麻的部屋(Perfect Blue)
  • 你想活出怎样的人生(君たちはどう生きるか)

D 类

  • 冰雪奇缘(Frozen) M2

  1. 仅包含 1st season、2nd season 和 Final season 三个季度的动画。

openSUSE Tumbleweed 与 Fedora 体验上的异同

openSUSE Tumbleweed 和 Fedora KDE 我都用过一阵子。所以基于自己的使用体验,随意地聊一下两者的异同。

稳定性

一般而言,两者的稳定度差异不大。但它们遇到问题的情景会略有不同。

Tumbleweed 会在上游发生某些变更,或没有被 OpenQA 检查出来的情况下发生问题。问题产生的可能性与快照大小没有必然联系,openSUSE 每月至少会有一个大型快照。有时候大半年都没有什么问题,也有时候一个无线驱动故障拖了大半个月才修好。

Fedora 比较容易在新版本刚刚发布的时候因为测试并不充分而产生故障,新版本大概发布后一两个月就会稳定下来。

就故障发生的频次而言,Tumbleweed 会比 Fedora 更频繁一点(毕竟是滚动发行版)。

但很多 Tumbleweed 用户对此是无所畏惧的,因为有 btrfs 快照兜底,只要还能进 BIOS,大抵还是有救的。大概所有滚动发行版中也就 Tumbleweed 用户可以完全不看更新日志了。

更新内容

Tumbleweed 追求为用户提供最新,最稳定的软件包。Fedora 基于它使命和原则1,则致力于为用户提供版本最新且技术最新的软件包。

这个差异在 KDE wayland 上很明显地体现出来了,Fedora KDE 是最早抛弃 X11 的发行版,而 openSUSE 至今依旧提供 X11 会话。初次启动刚安装好的系统,且没有取消自动登陆,Tumbleweed 用户就会立即进入 KDE X11 会话。

Tumbleweed 更新比 Fedora 更频繁,更新快照发布的频次为 1~2 日/次,这使得快照常常充满了各种小更新。

软件包

理论上,Fedora 的软件包多于 openSUSE Tumbleweed,开发者给 RPM 系统打包会优先考虑 Fedora/RHEL。

实际上,流行的软件包两者都有打包,我认识的开发者打包时多多少少也会考虑到 Tumbleweed。更有可能出现的问题是开发者只打包了 DEB,然后只能指望社区有没有人打包了 RPM、appimage 或者 Flathub。

管理工具

openSUSE 的 YaST 之于 sysadmin,有些类似于 ArchLinux 之于 Linuxer。它很好用,对用户友好,对新手大概是友好的吧?当然负面效果就是 openSUSE 会比 Fedora 多了一个软件包组(我有时觉得这是冗余的,因为真的很少用它)。

Fedora 就是很常规的 Linux 了,主要的管理工具都是 CLI,网上的教程也很多,比如著名的《Linux Bible》就是以和 Fedora 同源的 RHEL 作为示例系统。当然 Fedora KDE 也有预装一些图形化的软件包,比如防火墙。但总的来说,Fedora 是认为用户应使用 CLI 管理系统的。

zypper 和 dnf 选一个的话,我大概会选 dnf。虽然我更喜欢 zypper 的 TUI,但我更想要 dnf 那稳定高速的并行下载体验。

KDE の风味

Fedora KDE 比 Tumbleweed 预装了更多的 KDE 套件,但 KDE 上留有的 Fedora 特征并不多(就换了一下壁纸,塞了两三个红帽开发的 GUI 管理工具),体验类似于无印版。

Tumbleweed KDE 留有的大蜥蜴特征就比较多,开始菜单里的 YaST 全家桶就引人注目,openSUSE 还专门做了一整套 KDE 主题。


  1. Fedora’s Mission and Foundations

Minecraft 壁纸归档

关于

该部分的内容主要是作为一个可离线使用的参考资料库,以省略在不同的网站间跳跃的时间。

Windows 11 安装与配置

注意:

  • 本文最后更新于 2024 年 8 月 29 日;
  • 本文适用于 Windows 11 23H2;
  • 本文优先使用便携软件;
  • 本文不具有普适性。

流程概览

  1. 下载 ISO 文件;
  2. 使用 ventoy 安装系统;
  3. 等待 Windows Update 更新完毕;配置 Windows 系统设置,安装基本的运行库;
  4. 再次检查是否有更新;
  5. 安装显卡驱动;
  6. 卸载无用软件;
  7. 安装软件;
  8. 便携软件列表。

1、获取 ISO 文件

下载 Windows 11 页面获取 Windows 11 安装助手。使用这个助手仅下载 Windows.iso 而不直接刻入到 U 盘。

2、使用 ventoy 安装系统

使用 Ventoy 将 U 盘或可移动设备转换为一个可启动的安装介质。

使用 VentoyPlugson.exe 配置设备,在 全局控制插件 中,在 指定搜索目录 中设置 ISO 文件存放的文件夹。

开机时连按 Esc 进入 BIOS,从 BIOS 启动 U 盘。安装系统时:

  • 断开网络
  • 使用本地账户
  • 不设置密码
  • 拒绝所有的微软服务

3.1、更新系统

在系统设置中,重命名此电脑。连接 WiFi,然后重启系统。

启动 Windows update,此时并不建议卸载任何软件。

Windows 和 Officee 激活见沧水的 KMS 服务

3.2、配置 Windows 系统设置

使用 Dism++ 调整系统

在启动 Dism++ 后,点击左栏的系统优化,然后:

  1. 开始菜单及 Windows 体验 中,将除了 登录界面默认打开小键盘关闭 Onedrive 以外的选项全部开启;注意每次编辑都需要重启一次 explorer.exe
  2. Explorer 中,打开
    • 打开资源管理器时显示此电脑
    • 显示所有文件扩展名
    • 创建快捷方式时不添加“快捷方式”文字
    • 此电脑中视频、照片、文档、下载、音手、卓面、3D 对象七个文件夹
    • 快速访问不显示常用文件夹
    • 快速访问不显示最近使用的文件
    • 禁用Win11加入的新右键菜单,默认显示更多的选项
  3. 桌面图标管理中 隐藏全部的图标
  4. 资源管理器导航窗口图标管理 中,打开
    • 隐藏资源管理器导航窗口中的库
    • 隐藏资源管理器导航窗口中的收藏夹
  5. 微软拼音输入法 中,打开
    • 微软拼音默认为英语输入

Windows 设置

系统

  • 通知:
    其他设置 中,取消勾选
    • 更新以及登录后显示 Windows 欢迎体验以显示新增功能和建议内容
    • 建议我如何充分利用 Windows 并完成设置此设备
    • 当我使用 Windows 时获取提示和建议
  • 电源和电池:
    屏幕和睡眠 设置为默认设置1
  • 储存:
    存储感知 应当是自动开启的。打开 优化驱动器 整理磁盘碎片。
  • 就近共享:
    关闭此功能
  • 剪贴板:
    打开 剪贴板历史记录
  • 系统信息:
    • 高级系统设置高级环境变量Path 中,点击 编辑,插入环境变量。
D:\software\lib
D:\software\lib\git
D:\software\lib\git\cmd
D:\software\lib\python
D:\software\lib\python\Scripts

蓝牙和其他设备

  • 触摸板:
    三指手势 的点击动作,修改为 鼠标中键

个性化

  • 背景:
    个性化设置背景 修改为 幻灯片放映,打开 在使用电池供电时仍允许运行幻灯片放映
  • 颜色:
    设置为 钢蓝色
  • 锁屏界面:
    个性化锁屏界面 修改为 图片
    取消勾选 在锁屏界面上获取花絮、提示、技巧等
  • 开始:
    • 布局 选择为 更多固定项
    • 关闭 布局 下方所有的选项
    • 文件夹 中,只打开 设置
  • 任务栏:
    • 任务栏项系统托盘图标 中关闭或隐藏全部选项,除了 任务视图
    • 其他系统托盘图标 中,选择性开启所需应用图标。
    • 任务栏行为 中,勾选 单击任务栏右下角以显示桌面
  • 设备使用情况:
    关闭全部选项

账户

登陆选项 中,设置密码和头像。

时间和语言

语言和区域 中,修改 区域格式

修改 微软拼音输入法

  • 按键 中,取消勾选 Shift
  • 词库和自学习 中,启用全部的专业词典

辅助功能

  • 键盘
    关闭与粘滞键、过滤键和切换键相关的全部选项

隐私和安全性

  • 常规 中,关闭全部选项
  • 诊断和反馈 中,将反馈频率调成 从不
  • 活动历史记录 中,关闭活动历史记录
  • 搜索权限 中,关闭所有选项
  • 搜索 Windows 中,打开 编制索引时遵从电源设置

Windows 更新:

高级选项 中,关闭 传递优化

3.3、安装基本的运行库

  1. 安装 Microsoft Visual C++ 2015-2022 RedistributableChrome
  2. 启动下列软件,将其集成到文件资源管理器中或关联文件格式:
    • 7-zip(需要管理员权限)
  3. 启动 v2rayN 并设置开机启动。

使用 ContextMenuManager 编辑鼠标右键菜单,启用 其他规则 中的 新建文件夹重启资源管理器复制路径

4、再次检查是否有更新

在更新完重启系统后,重新检查一下 Windows update 是否有可用更新。

5、安装显卡驱动

下载 AMD SoftwareAMD Software 旧版本)并安装。

完成后调整音量和屏幕亮度。

对于 AMD 驱动的设置,在 游戏显卡 中,推荐选择 自定义 方案。并只开启:

  • Radeon™ Anti-Lag
  • Radeon™ 增强同步(仅对独显有效)

游戏显示器 中,

  • 关闭 Vari-Bright
  • 打开自定义颜色,将色温调整到 6900

系统屏幕显示卡 中,添加需要使用显卡的应用。

Alt + R 启动 AMD Software 面板。

6、卸载无用软件

使用 Geek Uninstaller 清理系统的 UWP 软件(包括 OneDrive),仅保留(含厂商驱动):

然后使用微软商店更新 UWP 应用。更新过程中,已删除的应用可能会被重新安装回来。

使用强制删除卸载无法卸载的 Edge 和 webview2 ,并使用 Edge Blocker 禁止系统再次安装 edge。

7、安装软件

  • 注意:安装后会产生大量小文件的应用默认不以便携模式进行部署。

使用 Office Tool Plus 安装 Microsoft Office,并卸载 Office 2021 稍后自动安装的一个应用。

安装:

无线与蓝牙驱动:

8、便携软件列表

注意:以下是以便携模式或类似状态使用的软件。

D:\software\portable
  • 7-zip(本质是个便携软件,需要管理员权限以便于重新注入 shell)
    打开 工具选项
    • 7-Zip 页面,取消勾选 层叠右键菜单压缩并邮寄压缩<档案>.7z并邮寄压缩<档案>.zip并邮寄
    • 显示 页面,勾选 显示 ⌜…⌟ 项显示真实图标整行选择显示网格线单击打开项目
  • aria2
    另见:安装与使用 aria2
  • benchmark-toolkit
  • ContextMenuManager(需要管理员权限)
  • Dism++(需要管理员权限)
  • Everything(需要管理员权限)
  • FreeFileSync(本质是个便携软件)
    仅同步 git 仓库的压缩包文件
  • GoldenDict-ng
    • 需要在 GoldenDict.exe 所在目录新建一个名为 portable 的文件夹
    • 便携模式下,词典文件只能放置在 content 文件夹中
  • KeePassXC
  • music-toolkit:
  • Notepad3(本质是个便携软件)
  • sordum toolkit
  • sysinternals
  • Telegram
  • v2rayN(TUN 模式需要管理员权限)
  • VSCode
    需要在应用目录中新建一个 data 文件夹。


D:\software\lib
  • git
    • 需要将它添加至环境变量中,详见上文。
    • 配置文件(C:\Users\Poplar.gitconfig):
    [user]
        name = Poplar at twilight
        email = poplar.cubic@gmail.com
    [http]
        proxy = http://127.0.0.1:7890
    
  • python
  • pandoc

D:\software\installed

  1. 我的设备在睡眠状态下不会断开网络链接,所以此设置只需要遵循 Windows 的节能建议即可。

安装与使用 aria2

安装

sudo dnf in aria2

文件目录

~/bin/aria2 目录下新建文本文档:

poplar@Greysia:~> tree ~/bin/aria2
/home/poplar/bin/aria2
├── aria2.conf
├── aria2.log
├── aria2.service
├── aria2.session
└── index.html

1 directory, 5 files

aria2.conf

# 文件的保存路径(可使用绝对路径或相对路径), 默认: 当前启动位置
dir=/home/poplar/Downloads/Aria2

# 日志文件保存目录
log=/home/poplar/bin/aria2/aria2.log

# 启用磁盘缓存, 0 为禁用缓存, 需 1.16 以上版本, 默认:16M
disk-cache=50M

# 文件预分配方式, 能有效降低磁盘碎片, 默认: prealloc
# 预分配所需时间: none < falloc ? trunc < prealloc
# falloc 和 trunc 则需要文件系统和内核支持,
# NTFS 建议使用 falloc, EXT3/4 建议 trunc, MAC 下需要注释此项
#file-allocation=falloc

# 断点续传
continue=true


## 下载连接相关 ##

# 最大同时下载任务数, 运行时可修改, 默认:5
#max-concurrent-downloads=5

# 同一服务器连接数, 添加时可指定, 默认:1
max-connection-per-server=16

# 最小文件分片大小, 添加时可指定, 取值范围1M -1024M, 默认:20M
# 假定 size=10M, 文件为 20MiB 则使用两个来源下载; 文件为 15MiB 则使用一个来源下载
min-split-size=20M

# 单个任务最大线程数, 添加时可指定, 默认:5
split=32

# 整体下载速度限制, 运行时可修改, 默认:0
#max-overall-download-limit=0

# 单个任务下载速度限制, 默认:0
#max-download-limit=0

# 整体上传速度限制, 运行时可修改, 默认:0
#max-overall-upload-limit=0

# 单个任务上传速度限制, 默认:0
#max-upload-limit=0

# 禁用IPv6, 默认:false
#disable-ipv6=true

# 连接超时时间, 默认:60
#timeout=60

# 最大重试次数, 设置为 0 表示不限制重试次数, 默认:5
#max-tries=5

# 设置重试等待的秒数, 默认:0
#retry-wait=0


## 进度保存相关 ##

# 从会话文件中读取下载任务
input-file=/home/poplar/bin/aria2/aria2.session

# 在 aria2 退出时保存`错误/未完成`的下载任务到会话文件
save-session=/home/poplar/bin/aria2/aria2.session

# 定时保存会话, 0 为退出时才保存, 需 1.16.1 以上版本, 默认:0
save-session-interval=120


## RPC相关设置 ##

# 启用 RPC, 默认:false
enable-rpc=true

# 允许所有来源, 默认:false
rpc-allow-origin-all=true

# 允许非外部访问, 默认:false
#rpc-listen-all=true

# 事件轮询方式, 取值:[epoll, kqueue, port, poll, select], 不同系统默认值不同
#event-poll=select

# RPC监听端口, 端口被占用时可以修改, 默认:6800
#rpc-listen-port=6800

# 设置的 RPC 授权令牌, v1.18.4 新增功能, 取代 --rpc-user 和 --rpc-passwd 选项
rpc-secret=poplar

# 是否启用 RPC 服务的 SSL/TLS 加密,
# 启用加密后 RPC 服务需要使用 https 或者 wss 协议连接
#rpc-secure=true

# 在 RPC 服务中启用 SSL/TLS 加密时的证书文件,
# 使用 PEM 格式时,您必须通过 --rpc-private-key 指定私钥
#rpc-certificate=/path/to/certificate.pem

# 在 RPC 服务中启用 SSL/TLS 加密时的私钥文件
#rpc-private-key=/path/to/certificate.key

aria2.service

设置使用 systemd 启动 aria2 的服务文件 aria2.service

[Unit]
Description=Start aria2 daemon

[Service]
ExecStart=/usr/bin/aria2c --conf-path=/home/poplar/bin/aria2/aria2.conf
Type=simple
WorkingDirectory=/home/poplar/bin/aria2

[Install]
WantedBy=default.target

index.html

启动服务

使用 ~/bin/command/aria2-m 启动服务:

#!/bin/sh
#本脚本用于维护 aria2 及验证和归档 ISO 文件

export ISO_DL_DIR=/home/poplar/Downloads/Aria2
export ISO_DIR=/home/poplar/Downloads/ISO
export ARIA2_DIR=/home/poplar/bin/aria2
#设定目录
SERVICES_FILE=/home/poplar/bin/aria2/aria2.service
OPENSUSE_DVD=/home/poplar/Downloads/Aria2/openSUSE-Tumbleweed-DVD-x86_64-Current.iso
OPENSUSE_DVD_OLD=/home/poplar/Downloads/ISO/openSUSE-Tumbleweed-DVD-x86_64-Current.iso
OPENSUSE_LIVE_ISO=/home/poplar/Downloads/Aria2/openSUSE-Tumbleweed-KDE-Live-x86_64-Current.iso
OPENSUSE_LIVE_ISO_OLD=/home/poplar/Downloads/ISO/openSUSE-Tumbleweed-KDE-Live-x86_64-Current.iso

while true; do

    printf -- '-%0.s' {1..100} && echo
    printf 'You can use the aria2 & ISO files maintenance script for:\n\n'
    printf 'R - Register Aria2 service\n'
    printf 'C - Clean up aria2 logs\n'
    printf 'V - Verify openSUSE ISO files\n'
    printf '1 - Download openSUSE DVD files\n'
    printf '2 - Download openSUSE KDE LiveISO files\n'
    printf 'Q - End script\n\n'
    printf '==> '
    read answer

    if [ "$answer" = "R" ] || [ "$answer" = "r" ]; then
    #注册服务
        printf 'Start registering systemd service...\n'
        mkdir -p ~/.config/systemd/user
        if [ -f $SERVICES_FILE ]; then
            cp $SERVICES_FILE ~/.config/systemd/user
            systemctl daemon-reload --user
            printf 'Service file loaded: OK!\n'
            systemctl enable --now --user aria2
            printf 'Service status: Running.\n'
        else
            printf 'ERROR: Service file not found!\n'
        fi

    elif [ "$answer" = "C" ] || [ "$answer" = "c" ]; then
    #清理日志
        ls -lh $ARIA2_DIR/aria2.log
        systemctl status aria2 --user | grep "Active"
        systemctl stop aria2 --user
        rm $ARIA2_DIR/aria2.log; touch $ARIA2_DIR/aria2.log
        printf 'Cleaning up logs: OK!\n'
        systemctl restart aria2 --user
        systemctl status aria2 --user | grep "Active"
        ls -lh $ARIA2_DIR/aria2.log

    elif [ "$answer" = "V" ] || [ "$answer" = "v" ]; then
    #校验 ISO 文件
        cd $ISO_DL_DIR
        if [ -f $OPENSUSE_DVD ]; then
            gpg --verify openSUSE-Tumbleweed-DVD-x86_64-Current.iso.sha256.asc
            cat openSUSE-Tumbleweed-DVD-x86_64-Current.iso.sha256 | sed 's/openSUSE-Tumbleweed-DVD-x86_64-Snapshot\(........\)-Media.iso/openSUSE-Tumbleweed-DVD-x86_64-Current.iso/' > temp.sha256
            sha256sum -c temp.sha256
            rm temp.sha256
            if [ -f $OPENSUSE_DVD_OLD ]; then
                printf 'Found the old DVD ISO file.'
                rm $ISO_DIR/openSUSE-Tumbleweed-DVD*.*
                mv $ISO_DL_DIR/openSUSE-Tumbleweed-DVD*.* $ISO_DIR
                printf 'Update DVD ISO files: OK!\n'
            else
                printf 'No found the old DVD ISO file.\n'
                mv $ISO_DL_DIR/openSUSE-Tumbleweed-DVD*.* $ISO_DIR
                printf 'Update DVD ISO files: OK!\n'
            fi
        else
            printf 'No found the new DVD ISO files\n'
        fi
        printf -- '-%0.s' {1..100} && echo
        if [ -f $OPENSUSE_LIVE_ISO ]; then
            gpg --verify openSUSE-Tumbleweed-KDE-Live-x86_64-Current.iso.sha256.asc
            cat openSUSE-Tumbleweed-KDE-Live-x86_64-Current.iso.sha256 | sed 's/openSUSE-Tumbleweed-KDE-Live-x86_64-Snapshot\(........\)-Media.iso/openSUSE-Tumbleweed-KDE-Live-x86_64-Current.iso/' > temp.sha256
            sha256sum -c temp.sha256
            rm temp.sha256
            if [ -f $OPENSUSE_LIVE_ISO_OLD ]; then
                printf 'Found the old Live ISO file.'
                rm $ISO_DIR/openSUSE-Tumbleweed-KDE-Live-x86_64-Current.*
                mv $ISO_DL_DIR/openSUSE-Tumbleweed-KDE-Live-x86_64-Current.* $ISO_DIR
                printf 'Update Live ISO files: OK!\n'
            else
                printf 'No found the old Live ISO file.\n'
                mv $ISO_DL_DIR/openSUSE-Tumbleweed-KDE-Live-x86_64-Current.* $ISO_DIR
                printf 'Update Live ISO files: OK!\n'
            fi
        else
            printf 'No found the new Live ISO files\n'
        fi

    elif [ $answer = 1 ]; then
        aria2c -d $ISO_DL_DIR -s 16 https://mirror.sjtu.edu.cn/opensuse/tumbleweed/iso/openSUSE-Tumbleweed-DVD-x86_64-Current.iso
        aria2c -d $ISO_DL_DIR -s 16 https://mirror.sjtu.edu.cn/opensuse/tumbleweed/iso/openSUSE-Tumbleweed-DVD-x86_64-Current.iso.sha256
        aria2c -d $ISO_DL_DIR -s 16 https://mirror.sjtu.edu.cn/opensuse/tumbleweed/iso/openSUSE-Tumbleweed-DVD-x86_64-Current.iso.sha256.asc

    elif [ $answer = 2 ]; then
        aria2c -d $ISO_DL_DIR -s 16 https://mirror.sjtu.edu.cn/opensuse/tumbleweed/iso/openSUSE-Tumbleweed-KDE-Live-x86_64-Current.iso
        aria2c -d $ISO_DL_DIR -s 16 https://mirror.sjtu.edu.cn/opensuse/tumbleweed/iso/openSUSE-Tumbleweed-KDE-Live-x86_64-Current.iso.sha256
        aria2c -d $ISO_DL_DIR -s 16 https://mirror.sjtu.edu.cn/opensuse/tumbleweed/iso/openSUSE-Tumbleweed-KDE-Live-x86_64-Current.iso.sha256.asc

    elif [ "$answer" = "Q" ] || [ "$answer" = "q" ]; then
        exit

    else
    #重新开始循环
        printf 'ERROR: Invalid input!\n'
        continue

    fi
done

补充说明

  • 配置不包含 BT 下载功能,相关另见 qBittorrent 配置备忘录
  • aria2 只有在工作时才会读写日志。下载完文件后,记得要清理一下日志文件。

参考资料

游戏画面设置参考

  • 材质纹理:
    • 材质:对观感影响很大,几乎不吃性能,吃显存,建议开高
    • 纹理:同上
    • 各向异性过滤:保证纹理正确显示,不吃性能,建议开高
  • 光照和阴影:
    • 光线:反射、折射、散射、镜面、光线追踪:很吃性能,对观感影响小,属锦上添花
    • 阴影:阴影质量、环境光遮蔽等:对性能影响适中,有和没有是两个游戏,开最高性价比低
    • 体积:体积云、体积雾、体积光:对性能影响很大,看风景可以开
  • 模型视距:
    • 细节层次:让远处的物体更清晰,对性能影响中等。一般情况下建议开中,看风景开高
    • 可视距离:同上
    • 曲面细分:对性能影响适中,对观感几乎没有影响,不建议开
  • 草地植被:
    • 草地植被密度:对观感影响较大,对性能影响中等,看风景可以开最高
  • 物理类:
    • 水物理:对性能影响非常大,对观感影响较小,玩水可以开高
  • 粒子特效:
    • 粒子质量:对性能影响中等、对观感影响较大,根据具体情况选择
    • 特效质量:同上
  • 抗锯齿:
    • TAA(时间抗锯齿):推荐大部分玩家,不吃性能,抗锯齿和抗闪烁优秀,低分辨率会糊
    • MSAA(多重采样抗锯齿):推荐给高配玩家,很吃性能,抗锯齿效果好,不糊
    • FXAA(快速近似抗锯齿):推荐给低配玩家,不吃性能,抗锯齿效果一般,会模糊
    • SMAA(增强型子像素形态学抗锯齿):推荐给大部分玩家,对性能稍有影响,抗锯齿效果较好,不糊
  • 后期滤镜:
    • 动态模糊:对性能要求低,仅建议低于 30 帧的玩家开启
    • 景深、炫光、高光等:几乎不吃性能,看个人喜好开启

qBittorrent & PeerBanHelper 配置备忘录

说明:

安装

sudo dnf in qbittorrent

开机启动

在 KDE 的系统设置中,把 qbittorrent 添加至开机启动的列表中。

相关文件

配置文件:

  • ~/.config/qBittorrent
  • ~/.local/share/qBittorrent

下载文件夹:

poplar@Greysia:~> tree /home/bt/network -L 1
/home/bt/network
├── downloads1
├── downloads2
├── misc
├── torrents1
└── torrents2

6 directories, 0 files

用户界面

  • 在菜单栏的 视图日志 中,勾选全部类型的日志信息。
  • 调整列:
    • 名称
    • 选定大小
    • 进度
    • 状态
    • 做种数
    • 用户
    • 下载速度
    • 上传速度
    • 剩余时间
    • 比率
    • 标签
    • 本次会话上传
    • 最近活动
  • 分类:
    • 完整下载:/home/bt/network/downloads1(默认分类)
    • 非完整下载:/home/bt/network/downloads2
    • 缓存:/home/bt/network/misc(临时下载)
  • 标签:
    • 1 类(长期做种)
    • 2 类(短期做种)
    • 3 类(临时下载)
    • 电影
    • 动画
    • 其他
    • 特典
    • 未读
    • 新番
    • 音乐
    • OVA

软件设置

在默认配置的基础上

行为

修改:

  • 启动时窗口:隐藏
  • 在通知区域显示 qBittorrent
    • 最小化 qBittorrent 到通知区域
    • 关闭 qBittorrent 到通知区域
  • 托盘图表样式:单色(深色主题)

下载

修改:

  • 为所有文件预分配磁盘空间
  • 默认 Torrent 管理模式:自动
  • 默认保存位置:/home/bt/network/misc

连接

修改:

  • 端口:大于 10000 的任意端口
  • 全局最大连接数:800
  • 每个 torrent 最大连接数:200
  • 使用我的路由器的 UPnP/NAT-PMP 端口转发(当路由器没有将设备直接映射到公网的时候开启)

不使用:

  • 全局上传窗口限制
  • 每个 torrent 上传窗口限制

速度

修改:

  • 对 µTP 协议进行速度限制
  • 对传送总开销进行速度限制
  • 对本地网络用户进行速度限制

BitTorret

修改:

WebUI

修改:

  • Web 用户界面(远程控制)
  • 对本地主机上的客户端跳过身份验证

高级

修改:

  • 网络接口:wlp6s0(无线网卡)
  • 保存恢复数据的间隔:60 分钟
  • 异步 I/O 线程数:64(AMD 7840H)
  • 文件池大小:400
  • 校验时内存使用扩增量:256 MiB
  • 合并读写
  • 发送分块上传建议
  • 禁止连接到特权端口上的 peer

部署 Peerbanhelper

将下载好的 PeerBanHelper*.zip 放置到 pbh 脚本设定的 $PBH_UP 文件夹中。

poplar@Greysia:~> tree ~/bin/pbh -L 1
/home/poplar/bin/pbh
├── data
├── key.txt
├── libraries
└── PeerBanHelper.jar

3 directories, 2 files

配置文件

使用下文的 pbh 安装并启动服务,然后修改 ~/bin/pbh/data/config/config.yml

  • server: 将 address 的值设置为 127.0.0.1

然后在 http://127.0.0.1:8080。生成 token 并添加 qBittorrent 下载器,并修改 ~/bin/pbh/data/config/config.yml

  • language:改为 zh_CN
  • btn:改为 true,并填入 app-idapp-secret
    • config-url 改为 https://btn-prod.ghostchu-services.top/ping/config
  • proxy:将 setting: 0 改为 setting: 2,并检查服务器地址和端口是否正确。
  • logger:将 hide-finish-log 改为 true

集成管理脚本

用于管理 PeerBanHelper 的脚本 pbh

#!/bin/sh
# 本脚本用于 Peerbanhelper 的日常维护
# 注意,本脚本只适用于直接使用 PeerBanHelper_*.zip 文件进行部署的方式

export PBH_DIR=$HOME/bin/pbh
# PeerBanHelper 主目录
export PBH_UP=$HOME/Downloads
# PeerBanHelper 更新包文件路径
export BIN_DIR=$HOME/bin
# PeerBanHelper 的父级目录

SER_FILE=$HOME/.config/systemd/user/pbh.service

while true; do
    printf -- '-%0.s' {1..100} && echo
    printf 'You can use the PeerBanHelper maintenance script for:\n\n'
    printf '1 - Install PeerBanHelper\n'
    printf '2 - Activate systemd service\n'
    printf '3 - Stop systemd service\n'
    printf '4 - Delete systemd service\n\n'
    printf 'U - Upgrade PeerBanHelper\n'
    printf 'D - Degrade PeerBanHelper\n'
    printf 'F - Delete unused old files\n'
    printf 'L - Read logs of PeerBanHelper\n\n'
    printf 'C - Clear terminal output\n'
    printf 'Q - Quit\n\n'
    printf '==> '
    read answer

    if [ $answer = 1 ]; then
    # 安装 PeerBanHelper
        printf 'After installing the app, you need to manually edit the configuration file at: /data/config/config.yml \n'
        if [ -f $SER_FILE ]; then
        # 检查 systemd 服务文件是否存在
            printf 'INFO: Found the systemd service file.\n'
        else
            printf 'INFO: NO found the systemd service file.\n'
            mkdir -p ~/.config/systemd/user
            echo "[Unit]" > $SER_FILE
            echo "Description=Start PeerBanHelper Service" >> $SER_FILE
            echo >> $SER_FILE
            echo "[Service]" >> $SER_FILE
            echo "ExecStart=/usr/bin/java -jar -Xmx512M -XX:+UseG1GC -XX:+UseStringDeduplication -XX:+ShrinkHeapInSteps PeerBanHelper.jar nogui" >> $SER_FILE
            echo "Type=simple" >> $SER_FILE
            echo "WorkingDirectory=$PBH_DIR" >> $SER_FILE
            echo >> $SER_FILE
            echo "[Install]" >> $SER_FILE
            echo "WantedBy=default.target" >> $SER_FILE
            printf 'INFO: Systemd service file created.\n'
        fi
        if [ -f $PBH_DIR/PeerBanHelper.jar ]; then
        # 检查主程序是否存在
            printf 'INFO: Main program found.\n'
            systemctl daemon-reload --user
            systemctl enable --user pbh
            systemctl status --user pbh | grep "Loaded"
        else
            if [ -f $PBH_UP/PeerBanHelper*.zip ]; then
                printf 'INFO: Found zip file to install.\n'
                cd $PBH_UP
                7z x PeerBanHelper*.zip
                mv $PBH_UP/PeerBanHelper $BIN_DIR
                mv $BIN_DIR/PeerBanHelper $BIN_DIR/pbh
                printf 'INFO: PeerBanHelper installed.\n'
                systemctl daemon-reload --user
                systemctl enable --user pbh
                systemctl status --user pbh | grep "Loaded"
            else
                printf 'ERROR: No found zip file to install!\n'
            fi
        fi

    elif [ $answer = 2 ]; then
    # 启动服务
        systemctl start --user pbh
        systemctl status --user pbh | grep "Active"

    elif [ $answer = 3 ]; then
    # 关闭服务
        systemctl stop --user pbh
        systemctl status --user pbh | grep "Active"
    
    elif [ $answer = 4 ]; then
    # 删除服务
        systemctl disable --user pbh --now
        systemctl status --user pbh | grep "Active"
        rm $SER_FILE
        systemctl daemon-reload --user
        printf 'INFO: systemd service deleted.\n'

    elif [ "$answer" = "U" ] || [ "$answer" = "u" ]; then
    # 更新 PeerBanHelper
        systemctl stop --user pbh
        systemctl status --user pbh | grep "Active"
        if [ -f $PBH_UP/PeerBanHelper*.zip ]; then
            printf 'INFO: Found zip file to upgrade.\n'
            cd $PBH_UP
            7z x PeerBanHelper*.zip
            rm -r $PBH_DIR/libraries
            printf 'INFO: Delete old libraries.\n'
            mv $PBH_UP/PeerBanHelper/libraries $PBH_DIR
            printf 'INFO: Update libraries.\n'
            mv -f $PBH_DIR/PeerBanHelper.jar $PBH_DIR/PeerBanHelper.jar.old
            printf 'INFO: Jar files back up.\n'
            mv $PBH_UP/PeerBanHelper/PeerBanHelper.jar $PBH_DIR
            printf 'INFO: Update jar files.\n'
            systemctl restart --user pbh
            systemctl status --user pbh | grep "Active"
            rm -r $PBH_UP/PeerBanHelper
            rm -r $PBH_UP/PeerBanHelper*.zip
            printf 'INFO: Deleted the update tarball.\n'
        else
            printf 'ERROR: PeerBanHelper*.zip not found!\n'
        fi

    elif [ "$answer" = "E" ] || [ "$answer" = "e" ]; then
    # 降级更新 Peerbanhelper
        if [ -f $PBH_DIR/PeerBanHelper.jar.old ]; then
            printf 'INFO: Found the backup files.\n'
            systemctl stop --user pbh
            systemctl status --user pbh | grep "Active"
            mv -f $PBH_DIR/PeerBanHelper.jar $PBH_DIR/PeerBanHelper.jar.error
            mv -f $PBH_DIR/PeerBanHelper.jar.old $PBH_DIR/PeerBanHelper.jar
            printf 'INFO: Downgrade completed.\n'
            systemctl restart --user pbh
            systemctl status --user pbh | grep "Active"
        else
            printf 'ERROR: PeerBanHelper.jar.old not found!\n'
        fi

    elif [ "$answer" = "F" ] || [ "$answer" = "f" ]; then
        printf 'INFO: Start deleting files...\n'
        if [ -d $PBH_DIR/data/logs ]; then
            rm $PBH_DIR/data/logs/*.gz
            printf 'Removed archive logs: OK!\n'
        else
            printf 'ERROR: No found log files.\n'
        fi
        if [ -f $PBH_DIR/PeerBanHelper.jar.error ]; then
            rm $PBH_DIR/PeerBanHelper.jar.error
            printf 'INFO: Removed PeerBanHelper.jar.error.\n'
        else
            printf 'ERROR: PeerBanHelper.jar.error not found!\n'
        fi

    elif [ "$answer" = "L" ] || [ "$answer" = "l" ]; then
    # 读取 Peerbanhelper 日志
        tail -n 30 $PBH_DIR/data/logs/latest.log
        # 读取最新的 30 条日志
        # 也可以使用:
        #journalctl --user -u pbh

    elif [ "$answer" = "C" ] || [ "$answer" = "c" ]; then
        clear

    elif [ "$answer" = "Q" ] || [ "$answer" = "q" ]; then
        exit

    else
        echo "ERROR: Invalid input!"
        continue

    fi
done

检查系统信息

要列出 CPU 设备信息,可使用 lscpu

要列出当前系统的块设备信息,可使用 lsblk,可附加 --fs

要列出 USB 设备信息,可使用 lsusb

要列出 PCI 设备信息,可使用 lspci

要列出 RAM 信息,可使用 free -m

dmidecode

dmidecode 运行时需要 root 权限,可用于读取系统的硬件信息,例如内存条的频率。

使用 sudo dmidecode -t 查询可列出的硬件信息。

hwinfo

hwinfodmidecode,使用 sudo hwinfo --help 列出可查询的信息。

文件系统、文件所有权及文件权限

所有东西都是文件,包括文件夹也是文件的一种。

文件系统

Linux 的文件系统树如下:

poplar@Greysia:~> tree / -L 1
/
├── bin -> usr/bin
├── boot
├── dev
├── etc
├── home
├── lib -> usr/lib
├── lib64 -> usr/lib64
├── mnt
├── opt
├── proc
├── root
├── run
├── sbin -> usr/sbin
├── srv
├── sys
├── tmp
├── usr
└── var

19 directories, 0 files

根目录下,常见的文件夹的用途1

  • /bin:存放常用的 Linux 用户命令,如 lsdatechmod 等。
  • /boot:存放可引导 Linux 内核、初始化 RAM 磁盘和引导加载器配置文件(GRUB)
  • /dev:存放代表系统设备访问点的文件。例如终端设备(tty*)、硬盘(hd*sd*)、RAM(ram*)和 CD-ROM(cd*)等。用户可以通过这些设备文件直接访问设备。
  • /etc:存放管理配置文件,大多数是可编辑的纯文本文件。
  • /home:普通用户的主目录。
  • /media:为自动挂载的设备(特别是可移除的设备,如移动硬盘)提供一个标准挂载点。在 openSUSE 上,这个位置默认在 /run/media/$USER/。如果该设备有卷标,则文件夹的名称就是卷标。
  • /lib:存放 /bin/sbin 中的应用程序启动系统时所需的共享库。
  • /mnt:在被 /media 取代前,是一个常用的设备挂载点。
  • /misc:有时用于根据请求自动挂载文件系统的目录。
  • /opt:存放附加应用软件(一般是用户自行安装的软件)。
  • /proc:存放有关系统资源的信息。
  • /rootroot 用户的主目录。
  • /sbin:存放管理命令和守护进程。
  • /sys:存放调整块存储和管理 cgroup 等参数。
  • /tmp:存放应用使用的临时文件
  • /usr:‘Unix System Resource’ 的缩写,存放用户文档、游戏、图形文件(X11)、库文件(lib)以及其他大量在系统启动时不是必须的命令和文件。/usr 用于存放安装后不会更改的文件(理论上,/usr 可以只读方式挂载)。
  • /var:存放各种应用使用的数据。/var 常用于存放经常变更的文件。

XFS 与 Btrfs

XFS 与 Btrfs 都是 openSUSE 默认推荐使用的文件系统。openSUSE 推荐用户数据目录使用 XFS,操作系统目录使用 Btrfs。

Btrfs 和 XFS 代表了满足 Linux 文件系统需求的成熟且互补的选项。Btrfs 提供现代的写时复制功能,例如简单的快照和压缩以及灵活的存储增长。 XFS 专注于为超大容量提供坚如磐石的稳定性和巨大的可扩展性,并具有持续的高吞吐量。
详细对比另见:Btrfs vs XFS: An In-Depth Comparison of Linux File Systems

文件所有权与文件权限

一个文件面向三种访问者,

  • 文件所有者(author,u)
  • 文件所有者所在组的其他用户(group,g)
  • 其他人(others,o)

有三种权限:

  • 可读(Read, r=4)
  • 可写(Write, w=2)
  • 可执行(Execute, x=1)

chmod

一个典型的文件及文件夹应当具有如下的权限设置:

poplar@Greysia:~/1> l
总计 0
drwxr-xr-x  1 poplar poplar  12  9月24日 13:22 ./
drwx--x---+ 1 poplar poplar 556  9月24日 13:22 ../
drwxr-xr-x  1 poplar poplar   0  9月24日 13:22 2/
-rw-r--r--  1 poplar poplar   0  9月24日 13:22 2.txt

第一行表示当前的文件夹,第二行表示父级文件夹,第三和第四行分别是子文件夹和子文件。

-rw-r--r-- 共有十个字符,第一位字符表示文件的性质(文件/文件夹/符号链接),然后是三个字符一组,依次表示文件所有者、文件所有者所在组的其他用户和其他用户对这个文件的权限。

chmod 命令可以使用数字或字母组合更改文件权限。

使用数字组合时,参考上文,对应的权限组合对应的数值,例如:

poplar@Greysia:~/1> chmod 777 2.txt; ll
总计 0
drwxr-xr-x 1 poplar poplar 0  9月24日 13:22 2
-rwxrwxrwx 1 poplar poplar 0  9月24日 13:22 2.txt

使用字母组合时,使用 字母 + 加减符号 + 权限 的形式。

针对所有用户时,使用 a(all),或者省略字母。添加权限使用加号,删除权限使用减号。

两边的字母可以多个(同时指定多个对象),例如:

poplar@Greysia:~/1> chmod go-wx 2.txt; ll
总计 0
drwxr-xr-x 1 poplar poplar 0  9月24日 13:22 2
-rwxr--r-- 1 poplar poplar 0  9月24日 13:22 2.txt

使用 -R 标志或者 * 可以将操作递归地(recursively)应用到该文件夹的所有文件(包括子文件和子文件夹)。

文件夹的可执行权限

文件夹应当默认具有可执行权限(drwxr-xr-x)。文件目录具有的可执行权限允许用户访问目录内的项目,即使用户无法列出目录内容2

poplar@Greysia:~/1> ll
总计 0
drwxr-xr-x 1 poplar poplar 0  9月24日 13:22 2
-rw-r--r-- 1 poplar poplar 0  9月24日 13:22 2.txt
poplar@Greysia:~/1> mv 2.txt 2
poplar@Greysia:~/1> chmod -x *; l 2
ls: 无法访问 '2/.': 权限不够
ls: 无法访问 '2/..': 权限不够
ls: 无法访问 '2/2.txt': 权限不够
总计 0
d????????? ? ? ? ?              ? ./
d????????? ? ? ? ?              ? ../
-????????? ? ? ? ?              ? 2.txt

chown

$ chown 用户名:用户组 /文件路径


  1. 参考《Linux Bible, 10th Edition》Part II: Becoming a Linux Power User - Moving Around the Filesystem,第 94,95 页

  2. 参考 Why must a folder be executable?

KVM 备忘录

安装

安装软件包:

sudo dnf in @virtualization

加入用户组:

sudo usermod -aG libvirt $USER

注销重新登录。

主宿机文件共享

Windows

首先,在虚拟机安装完毕后,在虚拟机关机的情况下,打开虚拟机的详情页,点击 内存,勾选 Enable shared memory

然后,点击左下角的 添加新硬件,选择 文件系统,驱动程序保持默认(即 virtiofs),将 源路径 修改为要与虚拟机共享的文件夹路径,将 目标路径 命名为给定的名称,例如 sharing-folder,然后点击 完成

然后下载两个驱动文件:

将下载的文件打包成 ISO 文件,作为一个 SATA CDROM 存储设备添加到虚拟机中。

mkisofs -o 文件名.iso /文/件/路/径

首先安装 WinFSP Core,然后安装 virtio-win-guest-tools.exevirtiofs

安装完毕后,按下 Win + R 键唤出 CMD,输入 services.msc,然后找到并启动 VirtIO-FS Service

Linux

参考上文配置好虚拟机后,启动虚拟机,确认 virtiofsd 已安装。

然后运行:

mount -t virtiofs mount_tag /mnt/mount/path

mount_tag 是上文中设定的 目标路径,/mnt/mount/path 则是要挂载 virtiofs 的路径,例如:

sudo mount -t virtiofs sharing-folder /mnt #将 sharing-folder 文件夹挂载到 /mnt

3D 图形加速

首先关闭虚拟机,然后将虚拟机的 显示协议 Spice监听类型 修改为 ,然后勾选下方的 OpenGL

最后修改 显卡,将类型更换为 Virtio,并勾选 3D 加速

启动虚拟机即可。

注意,如果独显不能稳定渲染,则使用核显进行 3D 加速渲染。

常见问题

托盘图标

托盘图标可以清晰地显示 KVM 是否正在运行。

要启用托盘图标,需要先打开虚拟机系统管理器,点击菜单栏的 编辑 > Preferences,勾选 启用系统托盘图标

鼠标捕获

要停止鼠标捕获至虚拟机,按下左 Ctrl + 左 Alt 键即可。

虚拟机全屏显示

虚拟机切换至全屏的按钮在右上方,切换至全屏后,如果要退出全屏,请将鼠标移动至屏幕正上方,会出现一个退出按钮。

Windows 虚拟机分辨率无法调节

请安装 virtio-win-guest-tools.exe

混乱的计量单位

位元(bit,又称:比特)是信息资讯最小的单位。位元组(Byte,又称为:字节),一个位元组等于 8 位元。

  • 位元的单位是:b
  • 位元组的单位是:B

上述两个单位使用的国际单位制词头有两种:

  • 十进制:如 KB
  • 二进制:在词头与单位之间新增一个 i,如 KiB

对照表

公制/十进制IEC/二进制
1000B = 1kBkilobyte1024B = 1KiBkibibyte
1000^2^B = 1MBmegabyte1024^2^B = 1MiBmebibyte
1000^3^B = 1GBgigabyte1024^3^B = 1GiBgibibyte
1000^4^B = 1TBterabyte1024^4^B = 1TiBtebibyte
1000^5^B = 1PBpetabyte1024^5^B = 1PiBpebibyte
1000^6^B = 1EBexabyte1024^6^B = 1EiBexbibyte
1000^7^B = 1ZBzettabyte1024^7^B = 1ZiBzebibyte
1000^8^B = 1YByottabyte1024^8^B = 1YiByobibyte
1000^9^B = 1RBronnabyte1024^9^B-
1000^10^B = 1QBquettabyte1024^10^B-

常见使用场景

  • 十进制:
    • 硬盘/内存制造商标注的硬盘/内存条容量
  • 二进制:
    • Linux 系统的内存/存储空间计算
  • 位元:
    • 网络带宽

部分命令

使用 ls 命令列出文件大小时,可以使用 --block-size= 的 flag 指定显示的大小,如:

poplar@Greysia:~/Downloads/ISO> ll openSUSE-Tumbleweed-DVD-x86_64-Snapshot20241001-Media.iso
-rw-r--r-- 1 root root 4594860032 10月 3日 09:24 openSUSE-Tumbleweed-DVD-x86_64-Snapshot20241001-Media.iso
poplar@Greysia:~/Downloads/ISO> ll openSUSE-Tumbleweed-DVD-x86_64-Snapshot20241001-Media.iso --block-size=MiB
-rw-r--r-- 1 root root 4382MiB 10月 3日 09:24 openSUSE-Tumbleweed-DVD-x86_64-Snapshot20241001-Media.iso

详见 man ls

又如 free -m 的含义就是以 mebibyte 显示当前的内存信息:

poplar@Greysia:~> sudo free -m
[sudo] root 的密码:
               total        used        free      shared  buff/cache   available
内存:         15201        6875        2356         335        6634        8325
交换:          8191        1757        6434
poplar@Greysia:~> sudo free --mega
               total        used        free      shared  buff/cache   available
内存:         15939        7203        2476         351        6956        8736
交换:          8589        1842        6747

详见 free --help

个人自用的 mpv 配置

poplar@Greysia:~> tree ~/.config/mpv
/home/poplar/.config/mpv
├── mpv.conf
├── shaders_cache
└── watch-later

3 directories, 1 file
poplar@Greysia:~> cat ~/.config/mpv/mpv.conf
vo=gpu
# 视频输出驱动
profile=high-quality
# 使用一个内置的画质方案预设
vd-lavc-dr=auto
# 解码到显存中
hwdec=yes
# 使用硬解(原生模式)

gpu-api=vulkan
vulkan-async-compute=yes
vulkan-async-transfer=yes
vulkan-queue-count=1
# vulkan 或者 opengl
gpu-shader-cache-dir=/home/poplar/.config/mpv/shaders_cache
# 着色器缓存目录

video-sync=display-resample
interpolation=yes
tscale=oversample
# 帧数超采样
# 如果耗电量大,可以考虑关掉

#log-file="/home/poplar/.config/mpv/mpv.log"
# 日志文件目录(debug 用)

vd-lavc-dr=yes
opengl-pbo=yes
# 可能对 4K 解码有帮助

save-position-on-quit=yes
watch-later-directory=/home/poplar/.config/mpv/watch-later
# 退出时保存当前的播放状态
keep-open=yes
# 播放结束后不退出
watch-later-options=start,vid,aid,sid
# 指定保存播放状态的属性列表(示例表示:播放位置、视频 音频 字幕轨号)

audio-file-auto=fuzzy
alang=jpn,ja,eng,en
# 自动加载近似名的外置音轨
sub-auto=fuzzy
slang=chi,zh-CN,sc,chs
# 自动加载近似名的外置字幕

screenshot-format=png
# 截图格式
screenshot-dir="/home/poplar/Pictures/screenshots"
# 截图输出路径

deband=yes
# 启用去色带
cscale=catmull_rom
# 色度平面的拉伸

blend-subtitles=video
# 设置将字幕渲染到视频源分辨率并随视频一起缩放并进行色彩管理

#audio-channels=stereo
# 如果双声道系统播放多声道影片时有的声道声音没出现,尝试强制设定为双声道

显卡切换

NVIDIA PRIME Render Offload

在安装完 NVIDIA 独显驱动后,删除以下软件包:

sudo zypper rm -u suse-prime
sudo zypper al suse-prime

使用下列命令检查驱动是否运行在 modesettings mode

sudo cat /sys/module/nvidia_drm/parameters/modeset

终端输出结果应该是 “Y”。

如果不是,打开 YaST,找到并打开 引导加载器 -> 内核参数(K),在 可选内核命令行参数(P) 中,填入 nvidia-drm.modeset=1,保存设置并退出 YaST。

然后重启系统。

要让应用在 NVIDIA GPU 运行,使用:

__NV_PRIME_RENDER_OFFLOAD=1 __VK_LAYER_NV_optimus=NVIDIA_only __GLX_VENDOR_LIBRARY_NAME=nvidia [命令]

或者将上述命令写成名为 prime-run 的 bash 脚本,放置在 $PATH 中:

#!/bin/bash
__NV_PRIME_RENDER_OFFLOAD=1 __VK_LAYER_NV_optimus=NVIDIA_only __GLX_VENDOR_LIBRARY_NAME=nvidia "$@"

DRI_PRIME

对于 AMD 显卡,使用 DRI_PRIME 变量直接切换显卡即可。

*.gpg*.sig*.asc 文件的区别

签名(signature)可以验证文件的完整性,密钥对(keypair)中的私钥(private keypair)用于生成签名,公钥(public keypair)用于验证签名。

三种文件都是 gpg2 生成的签名文件。

  • *.gpg*.sig 都是二进制文件,*.asc 是纯文本文件。
  • 生成命令:
    • gpg -sgpg --sign*.gpg
    • gpg -b--detach-sign*.sig
    • gpg --clear-sign*.asc
  • *.gpg 是二进制的 GPG 公钥文件1,含有被签名文件的一份压缩的拷贝
  • *.sig 是二进制的 GPG 签名文档文件2,可含有被签名的文件
  • *.asc 是可含有封装文档的 ASCII 加密签名,纯文本格式。

一个操作实例3(签名,加密,解密,提取文件):

poplar@Greysia:~/Downloads/Aria2> ll
总计 91348KiB
-rw-r--r-- 1 poplar poplar 91346KiB  9月24日 15:39 vm.iso
poplar@Greysia:~/Downloads/Aria2> gpg -s vm.iso
poplar@Greysia:~/Downloads/Aria2> gpg -b vm.iso
poplar@Greysia:~/Downloads/Aria2> gpg --clear-sign vm.iso
gpg: 输入行长度超过 19995 字符
poplar@Greysia:~/Downloads/Aria2> sha256sum vm.iso > vm.iso.sha256
poplar@Greysia:~/Downloads/Aria2> gpg --clear-sign vm.iso.sha256
poplar@Greysia:~/Downloads/Aria2> ll
总计 262924KiB
-rw-r--r-- 1 poplar poplar 91346KiB  9月24日 15:39 vm.iso
-rw-r--r-- 1 poplar poplar 90179KiB 10月 7日 14:50 vm.iso.asc
-rw-r--r-- 1 poplar poplar 81383KiB 10月 7日 14:50 vm.iso.gpg
-rw-r--r-- 1 poplar poplar     1KiB 10月 7日 14:51 vm.iso.sha256
-rw-r--r-- 1 poplar poplar     1KiB 10月 7日 14:51 vm.iso.sha256.asc
-rw-r--r-- 1 poplar poplar     1KiB 10月 7日 14:50 vm.iso.sig
poplar@Greysia:~/Downloads/Aria2> cat vm.iso.sha256.asc
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

7716911111580decfb84ec983f10b1beec1a6d6b18ee31f236495703005dcd4d  vm.iso
-----BEGIN PGP SIGNATURE-----

iHUEARYKAB0WIQQrQpu5CY17IY7L1Nr4+uWxAB7+YwUCZwOFBwAKCRD4+uWxAB7+
Y6SfAP4+aYK5q04517RUW61RLDvWOnroXa56qhp+q4k6Ug9k4AEAzJEHVyvFExOn
2eQkaVVIXRvIc+CjCUyljSNFLQrOOwI=
=nLki
-----END PGP SIGNATURE-----
poplar@Greysia:~/Downloads/Aria2> mv vm.iso vms.iso
poplar@Greysia:~/Downloads/Aria2> ll
总计 262924KiB
-rw-r--r-- 1 poplar poplar 90179KiB 10月 7日 14:50 vm.iso.asc
-rw-r--r-- 1 poplar poplar 81383KiB 10月 7日 14:50 vm.iso.gpg
-rw-r--r-- 1 poplar poplar     1KiB 10月 7日 14:51 vm.iso.sha256
-rw-r--r-- 1 poplar poplar     1KiB 10月 7日 14:51 vm.iso.sha256.asc
-rw-r--r-- 1 poplar poplar     1KiB 10月 7日 14:50 vm.iso.sig
-rw-r--r-- 1 poplar poplar 91346KiB  9月24日 15:39 vms.iso
poplar@Greysia:~/Downloads/Aria2> gpg --output vm.iso --decrypt vm.iso.gpg
gpg: 签名建立于 2024年10月07日 星期一 14时50分31秒 CST
gpg:               使用 EDDSA 密钥 2B429BB9098D7B218ECBD4DAF8FAE5B1001EFE63
gpg: 完好的签名,来自于 “White Poplar <poplar.cubic@gmail.com>” [绝对]
poplar@Greysia:~/Downloads/Aria2> ll
总计 354272KiB
-rw------- 1 poplar poplar 91346KiB 10月 7日 14:53 vm.iso
-rw-r--r-- 1 poplar poplar 90179KiB 10月 7日 14:50 vm.iso.asc
-rw-r--r-- 1 poplar poplar 81383KiB 10月 7日 14:50 vm.iso.gpg
-rw-r--r-- 1 poplar poplar     1KiB 10月 7日 14:51 vm.iso.sha256
-rw-r--r-- 1 poplar poplar     1KiB 10月 7日 14:51 vm.iso.sha256.asc
-rw-r--r-- 1 poplar poplar     1KiB 10月 7日 14:50 vm.iso.sig
-rw-r--r-- 1 poplar poplar 91346KiB  9月24日 15:39 vms.iso
poplar@Greysia:~/Downloads/Aria2> gpg --output vm.iso2.sig --sign vm.iso
poplar@Greysia:~/Downloads/Aria2> ll
总计 435656KiB
-rw------- 1 poplar poplar 91346KiB 10月 7日 14:53 vm.iso
-rw-r--r-- 1 poplar poplar 81383KiB 10月 7日 14:55 vm.iso2.sig
-rw-r--r-- 1 poplar poplar 90179KiB 10月 7日 14:50 vm.iso.asc
-rw-r--r-- 1 poplar poplar 81383KiB 10月 7日 14:50 vm.iso.gpg
-rw-r--r-- 1 poplar poplar     1KiB 10月 7日 14:51 vm.iso.sha256
-rw-r--r-- 1 poplar poplar     1KiB 10月 7日 14:51 vm.iso.sha256.asc
-rw-r--r-- 1 poplar poplar     1KiB 10月 7日 14:50 vm.iso.sig
-rw-r--r-- 1 poplar poplar 91346KiB  9月24日 15:39 vms.iso
poplar@Greysia:~/Downloads/Aria2> ll
总计 90180KiB
-rw-r--r-- 1 poplar poplar 90179KiB 10月 7日 14:50 vm.iso.asc
poplar@Greysia:~/Downloads/Aria2> gpg --output vm.iso --decrypt vm.iso.asc
gpg: 签名建立于 2024年10月07日 星期一 14时50分58秒 CST
gpg:               使用 EDDSA 密钥 2B429BB9098D7B218ECBD4DAF8FAE5B1001EFE63
gpg: 完好的签名,来自于 “White Poplar <poplar.cubic@gmail.com>” [绝对]
poplar@Greysia:~/Downloads/Aria2> ll
总计 180300KiB
-rw------- 1 poplar poplar 90120KiB 10月 7日 15:01 vm.iso
-rw-r--r-- 1 poplar poplar 90179KiB 10月 7日 14:50 vm.iso.asc

  1. GNU Privacy Guard public keyring file

  2. GPG signed document file

  3. 参考 Making and verifying signatures

将 mdbook 项目部署到 Pages 中

首次部署:

mdbook build
git worktree add --orphan -B gh-pages gh-pages
cp -r book/* gh-pages
git config user.name "Deploy from CI"
git config user.email ""
cd gh-pages
git add -A
git commit -m 'deploy new book'
git push origin +gh-pages

再次部署:

mdbook build
cp -r book/* gh-pages
cd gh-pages
git add -A
git commit -m 'deploy new book'
git push origin +gh-pages

shell 脚本

  • 注意,此脚本需要在有登陆授权的 git 终端中使用
#!/bin/sh
# 本脚本用于将 mdbook 部署到 Pages

work_dir=/home/poplar/Others/git/whiteboard
# 默认的工作文件夹
branch_name=gh-pages

cd work_dir

if git branch --list | grep -q "$branch_name"; then
    echo 'Find gh-pages'
    mdbook build
    cp -r book/* gh-pages
    cd gh-pages
    git add -A
    git commit -m 'deploy new book'
    git push origin +gh-pages
else
    echo 'No find gh-pages'
    mdbook build
    git worktree add --orphan -B gh-pages gh-pages
    cp -r book/* gh-pages
    git config user.name "Deploy from CI"
    git config user.email ""
    cd gh-pages
    git add -A
    git commit -m 'deploy new book'
    git push origin +gh-pages
fi

关于

该份笔记的主要内容是记录 Fedora KDE Edition 的安装与配置信息。

系统信息

Operating System: Fedora Linux 43
KDE Plasma Version: 6.5.2
KDE Frameworks Version: 6.19.0
Qt Version: 6.10.0
Kernel Version: 6.17.7-300.fc43.x86_64 (64-bit)
Graphics Platform: Wayland
Processors: 16 × AMD Ryzen 7 7840H  w/ Radeon 780M Graphics
Memory: 16 GiB of RAM (14.8 GiB usable)
Graphics Processor 1: AMD Radeon 780M Graphics
Graphics Processor 2: AMD Radeon RX 7600M XT

准备

ISO 文件

因为 Fedora 不会更新 ISO 文件,所以不必频繁下载新版 ISO 文件。

下载:

校验文件

wget https://fedoraproject.org/fedora.gpg
gpgv --keyring ./fedora.gpg Fedora-KDE-43-1.6-x86_64-CHECKSUM
sha256sum --ignore-missing -c Fedora-KDE-43-1.6-x86_64-CHECKSUM

烧录 ISO 文件

使用 ventoy 创建可启动安装介质,启动模式为正常启动。

切换引导启动项

关机后,按下开机键,同时按 Esc 进入 BIOS 界面,切换启动项。

备份文件

使用 LiveCD 环境将旧用户文件夹 poplar 重命名 poplar.old

安装系统

转移数据

在 Live 环境中,先将旧版用户文件夹重命名,然后启动安装程序。

磁盘分区

poplar@Greysia:~$ lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
zram0       251:0    0    8G  0 disk [SWAP]
nvme1n1     259:0    0  1.8T  0 disk 
├─nvme1n1p1 259:1    0   95M  0 part /boot/efi
└─nvme1n1p2 259:2    0  1.8T  0 part /home
                                     /boot
                                     /
nvme0n1     259:3    0  1.8T  0 disk 
└─nvme0n1p1 259:4    0  1.8T  0 part /bt
  • 注意:Fedora 使用 SwapOnZRAM,一般不需要手动创建 swap 分区/分区文件。

一般地,需要手动创建:

  • ESP 分区:文件系统格式为 EFI,大小为 100MiB。

然后将剩余的空间新建一个 btrfs 文件系统,并新建三个子卷:

  • ROOT:系统安装位置
    • 该子卷要格式化,格式化操作不会影响到其他的子卷。
  • HOME:用于存储用户文件的子卷
    • 设置挂载点时不要勾选格式化选项
  • boot:用于挂载 /boot

/dev/nvme0n1p1 挂载到 /bt

初次启动

恢复备份文件

将个人文件复制到新的 $USER 文件夹中。一般需要:

/home/poplar/bin
/home/poplar/Desktop
/home/poplar/Documents
/home/poplar/Downloads
/home/poplar/Misc
/home/poplar/Others
/home/poplar/Pictures

/home/poplar/.config/audacious
/home/poplar/.config/fcitx5
/home/poplar/.config/chromium
/home/poplar/.config/goldendict
/home/poplar/.config/htop
/home/poplar/.config/MangoHud
/home/poplar/.config/mpv
/home/poplar/.config/pip
/home/poplar/.config/qBittorrent

/home/poplar/.local/share/fcitx5
/home/poplar/.local/share/FlClash
/home/poplar/.local/share/fonts
/home/poplar/.local/share/konsole
/home/poplar/.local/share/qBittorrent
/home/poplar/.local/share/plasma-systemmonitor
/home/poplar/.local/share/TelegramDesktop

/home/poplar/.var

/home/poplar/.bashrc
/home/poplar/.gitconfig
  • 不要备份 flatpak 和 steam 的应用文件夹(存在 sockets 和大量小文件)。
  • 从其他发行版更新至 Fedora 时,旧版 ~/.bashrc 的内容应接在文件的末尾,而非直接覆盖。

更改防火墙

打开 firewall-config,将默认区域从 fedora-workstation 修改为 public,并设置为 永久 配置。

设置主机名

set-hostname

音量控制故障

如果播放器音量大小与系统设置的音量值不呈线性变化,则使用 alsamixerBase Speaker 的值降到 0。

安装基本工具

网络

连接网络,使用 dnf 安装该 rpm 软件包及依赖。

其他

安装输入法、git-core 和 keepassxc:

sudo dnf in fcitx5 fcitx5-chinese-addons git-core keepassxc

Fcitx5

在 KDE 系统设置中,将虚拟键盘设置为 Fcitx5。

Fcitx5 的主题使用 Fluent-fcitx5

Fcitx5 的自定义词库文件(*.dict):

注意,词库维护者会把新旧版词库放在同一个 release 中。

词库文件夹:~/.local/share/fcitx5/pinyin/dictionaries/

附注:

  • 云输入法可以使用 Google 源,但需要设置代理。
  • 跟换皮肤后,如果没有正常地显示,可以重启一下系统。

清理无用软件包

  • akregator
  • plasma-discover
  • dragon
  • elisa-player
  • mediawriter
  • firefox
  • plasma-welcome
  • kmouth
  • kaddressbook
  • kamoso
  • kdeconnectd
  • kdebugsettings
  • kgpg
  • kmahjongg
  • kmail
  • kmines
  • kolourpaint
  • korganizer
  • kpat
  • krdc
  • krfb
  • neochat
  • qrca
  • skanpage
  • PackageKit
  • ibus
  • plasma-browser-integration
sudo dnf rm akregator plasma-discover dragon elisa-player mediawriter firefox plasma-welcome kmouth kaddressbook kamoso kdeconnectd kdebugsettings kgpg kmahjongg kmail kmines kolourpaint korganizer kpat krdc krfb neochat qrca skanpage PackageKit ibus plasma-browser-integration

自动移除不再使用的软件包:

sudo dnf autoremove
  • 可用 sudo dnf clean all 清除全部缓存。
  • 详见 dnf --help

移除 geoclue2 服务:

sudo rm /etc/xdg/autostart/geoclue-demo-agent.desktop

更新并重启

sudo dnf up

安装软件包

为 libreoffice 安装中文语言包:

  • 当不需要安装弱依赖时,可以选择使用 --setopt=install_weak_deps=False 选项。
sudo dnf in libreoffice-langpack-zh-Hans --setopt=install_weak_deps=False

RPMFusion

sudo dnf install https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm

切换软件包供应商:

sudo dnf swap mesa-va-drivers mesa-va-drivers-freeworld
sudo dnf swap mesa-vdpau-drivers mesa-vdpau-drivers-freeworld
sudo dnf swap mesa-vulkan-drivers mesa-vulkan-drivers-freeworld
sudo dnf swap ffmpeg-free ffmpeg --allowerasing

浏览器

如果无法使用 fcitx 输入中文,在 chrome://flags 中打开 #wayland-text-input-v3,并将 --ozone-platform-hint=auto --enable-wayland-ime 添加至应用程序的环境变量中。

Chromium

sudo dnf install chromium

多媒体播放器

sudo dnf in audacious mpv

Flatpak

sudo dnf in flatpak
flatpak-add
sudo usermod -aG flatpak $USER

删除系统的软件源:

flatpak remote-delete fedora

清理不再需要的库:

flatpak uninstall --unused

卸载时一并清理应用数据:

flatpak uninstall <package id> --delete-data

fcitx5 皮肤没有正确显示

关闭所有 flatpak 应用,然后运行:

flatpak override --env=QT_IM_MODULE= --user
flatpak override --env=GTK_IM_MODULE= --user

应用 GTK 主题与当前系统主题不匹配

使用 Flatseal 编辑应用,使其能访问主题文件夹(/usr/share/themes),然后为该应用设置如下环境变量:

GTK_THEME=Adwaita-dark

KVM

sudo dnf in @virtualization
sudo usermod -aG libvirt $USER
sudo systemctl enable libvirtd --now

重启系统,另见:KVM 备忘录

其他

  • gimp
  • goverlay
    • 详见 man mangohud
  • kleopatra
  • goldendict-ng
    • 如果出现问题则换成 flatpak 版
  • steam
    • 编辑 desktop 文件,设置:
      PrefersNonDefaultGPU=false
      StartupNotify=false
      
    • 更改默认界面语言
    • 关闭着色器缓存
    • 更改默认打开的页面
    • 添加新的库
    • steam 会默认优先运行游戏的 Linux 原生版本。如果出现性能问题,请强制使用 steam proton 兼容工具。
    • 如果存在连接性问题,则使用 steam-proxy 命令。
    • 如果无法正常缩放,则设置变量:
    STEAM_FORCE_DESKTOPUI_SCALING=1.5
    
  • jpegoptim
  • qbittorrent
  • pandoc
  • papirus-icon-theme
  • webkit2gtk4.1
sudo dnf in kleopatra goverlay gimp goldendict-ng steam jpegoptim qbittorrent pandoc papirus-icon-theme webkit2gtk4.1
  • Fedora KDE 默认使用 Kwrite,它比 Kate 简洁轻便很多。不太需要更换。

散装软件包

telegram-desktop

telegram 依赖的 Qt 版本经常落后于官方版本,建议使用官方的二进制文件包以免阻碍 dnf 正常更新系统。

下载文件:

VSCodium

下载文件:https://github.com/VSCodium/vscodium/releases

在与 VSCodium*.tar.gz 同级文件夹中新建 data/extensionsdata/user-data

  • 右键点击 KDE 开始菜单,选择 编辑应用程序,可以快速新建一个 desktop 文件。

desktop 文件模板:

[Desktop Entry]
Categories=Development;
Comment[zh_CN]=
Comment=
Exec=/home/poplar/bin/codium/codium --ozone-platform-hint=auto --enable-wayland-ime --wayland-text-input-v3
GenericName[zh_CN]=
GenericName=
Icon=/home/poplar/bin/codium/data/paulo22s.png
MimeType=
Name[zh_CN]=VSCodium
Name=VSCodium
Path=/home/poplar/bin/codium
PrefersNonDefaultGPU=false
StartupNotify=false
Terminal=false
TerminalOptions=
Type=Application
X-KDE-SubstituteUID=false
X-KDE-Username=

Logo 文件可从 VSCodium/icons 仓库下载获得。

字体设置:

'Noto Sans Mono', 'Noto Sans SC', monospace

常用扩展列表:

  • MS-CEINTL.vscode-language-pack-zh-hans
  • GitHub.vscode-pull-request-github
  • GitHub.github-vscode-theme
  • shd101wyy.markdown-preview-enhanced
  • PKief.material-icon-theme
  • alefragnani.project-manager
  • ms-python.python
  • AaaaronZhou.vscode-auto-light-dark-theme

图标另见: https://github.com/VSCodium/icons

更新脚本 update-code 另见 shell-script

FreeFileSync

直接安装开发者提供的二进制文件。

mangohud & Goverlay

对于 steam 游戏,使用 mangohud %command%。使用说明详见:man mangohud

注意:

  1. 不要在游戏启动时让 mangohud 读取游戏的平均帧和 1% low 帧
  2. 使用 Goverlay 时,如果有按钮被遮挡,可以把显示器缩放比例从 150% 调整为 100%

nano

如果 nano 没有启用语法高亮,则在用户目录下添加下列配置文件:

poplar@Greysia:~> cat .nanorc
include /usr/share/nano/*.nanorc

Czkawka

下载 linux_czkawka_gui

Shell 脚本与配置文件

AMD GPU

以核显运行应用的环境变量:

DRI_PRIME=0

以独显运行程序的环境变量:

DRI_PRIME=1

bashrc

## 代理设置

alias pyx='https_proxy=http://127.0.0.1:7890 http_proxy=http://127.0.0.1:7890'
alias dnfx='pyx dnf'
# 对 dnf 设置代理
#alias flatpakx="pyx flatpak --user"
# 对 flatpak 使用代理,并增加 --user 标签
alias set-proxy="export https_proxy=http://127.0.0.1:7890 http_proxy=http://127.0.0.1:7890 all_proxy=http://127.0.0.1:7890"
alias unset-proxy="unset http_proxy; unset https_proxy; unset all_proxy"
# 代理变量手动开关
alias steam-proxy="set-proxy; steam"
# 设置代理,并启动 steam
#alias steam-proxy="set-proxy; env STEAM_FORCE_DESKTOPUI_SCALING=1.5 steam"
# 设置代理,并启动 steam(150% 缩放)

## 软件源命令

#alias flatpak-add="set-proxy; flatpak remote-add --if-not-exists --user flathub https://dl.flathub.org/repo/flathub.flatpakrepo"
# 添加 flathub

## shell 自定义

alias ls="ls --block-size=KiB --color=auto"
# 以 KiB 为单位显示文件大小
alias l="ls --block-size=KiB --color=auto -lt"
# 更简短的命令
export PATH=/home/poplar/.local/bin:/home/poplar/bin:/home/poplar/bin/command:/usr/local/bin:/usr/bin:/bin
# 自定义 $PATH 路径
unset GTK_IM_MODULE
unset QT_IM_MODULE
# 针对 wayland 会话的 Fcitx5 环境变量
alias sudo="sudo "
# 对 sudo 后的字符启用别名
alias set-hostname="sudo hostnamectl set-hostname --pretty 'C004-H1' && sudo hostnamectl set-hostname --static Greysia"
# 设置主机名

## 实用命令

alias sha256sum-dir="find . -type f -exec sha256sum {} \; > ../checksum.sha256; mv ../checksum.sha256 .; echo 'Complete calculation!'"
# 自动计算当前文件夹内的全部文件的哈希,并将结果写入 sha256 文件
alias git-repo-clean="git remote prune origin && git repack && git prune-packed && git reflog expire --expire=1.month.ago && git gc --aggressive"
# 清理并压缩 git 仓库
alias pings="ping mirror.nyist.edu.cn -c 6; ping bing.com -c 6; ping 1.1.1.1 -c 6"
# 测试网络连通性
alias venv-setup="python3 -m venv venv"
alias venv="source venv/bin/activate"
# 启动 python 容器环境
#alias furmark='DRI_PRIME=1 $HOME/bin/FurMark_linux64/FurMark_GUI'
# 启动 GPU 压力测试

update-code

#!/bin/sh
#本脚本用于更新 VScodium

FILE=/home/poplar/Downloads/VSCodium*.tar.gz

if [ -f $FILE ]; then
    mv /home/poplar/bin/codium/data /home/poplar/bin/data
    printf 'Back up data: OK!\n'
    rm -r /home/poplar/bin/codium/*
    printf 'Remove old exc: OK!\n'
    tar -xf /home/poplar/Downloads/VSCodium*.tar.gz -C /home/poplar/bin/codium
    printf 'Software update: OK!\n'
    mv /home/poplar/bin/data /home/poplar/bin/codium/data
    printf 'Data restored: OK!\n'
    rm /home/poplar/Downloads/VSCodium*.tar.gz
    printf 'Clear tarball: OK!\n'

else
    printf 'ERROR: Update tarball no found!\n'
fi

cab

#!/bin/sh
# 本脚本用于 cbz 文件半自动化打包

WD1=$HOME/Others/repository/img-main-repo/0-tmp1/0
WD2=$HOME/Others/repository/img-main-repo/2-comic-mix/0-cache
WD3=$HOME/Downloads
# 可用工作目录列表

echo ""
printf 'Choose the working dir:\n'
printf 'WD1: 0-tmp1/0\n'
printf 'WD2: 2-comic-mix/0-cache\n'
printf 'WD3: Downloads\n'
printf 'Enter (1/2/3):'

read -r user_choice

default_wd=""

# 手动选择工作目录
case "$user_choice" in
    1)
        default_wd=$WD1
        ;;
    2)
        default_wd=$WD2
        ;;
    3)
        default_wd=$WD3
        ;;
    *)
        default_wd=$WD2
        printf 'Code: set_default_wd_to_wd2\n'
        ;;
esac

cd $default_wd

while true; do

    echo ""
    echo "Current working path: $default_wd"
    printf '1. Initialize\n'
    printf '2. Unzip the zip file\n'
    printf '3  Edit src.md\n'
    printf '4. Calculate the hash value\n'
    printf '5. Pack the cbz file\n'
    printf '6. Change to another wd\n'
    printf '7. Exit(q)\n\n'
    printf 'Please select an operation:'
    read -r user_operation

    zip_file_count=$(find $default_wd -name "*.zip" -print | wc -l)

    # 初始化
    if [ "$user_operation" = "1" ]; then
        printf 'WARNING:\nThis will delete the files in the WD folder, do you want to continue? (y/n) '
        read -r rm_duble_check
        if [ "$rm_duble_check" = "Y" ] || [ "$rm_duble_check" = "y" ]; then
            rm -f sha256sum.txt src.md
            rm -rf ch* main
            touch sha256sum.txt src.md
            printf 'OK: init_completed\n'
        elif [ "$rm_duble_check" = "N" ] || [ "$rm_duble_check" = "n" ]; then
            printf 'INFO: stop_init\n'
        else
            printf 'ERROR: invalid_input\n'
        fi

    # 解压文件
    elif [ "$user_operation" = "2" ]; then
        if [ "$zip_file_count" -gt 1 ]; then
            ls -l
            read -p "Enter the name of the zip file to unzip: " zip_filename
            if [ -f "$zip_filename" ] && [[ "$zip_filename" == *.zip ]]; then
                read -p "Enter the chapter number: " chapter_number
                unar "$zip_filename" -q -D -o ch$chapter_number
                printf 'OK: unzip_tarballs\n'
            else
                printf 'ERROR: tarball_filename_not_match\n'
            fi
        else
            if [ "$zip_file_count" -eq 1 ]; then
                unar *.zip -q -D -o main
                printf 'OK: unzip_single_tarball\n'
            else
                printf 'INFO: no_zipfile_to_extract\n'
            fi
        fi
    
    # 编辑 src.md
    elif [ "$user_operation" = "3" ]; then
        if [ "$zip_file_count" -eq 1 ]; then
            read -p 'Enter author name of comic:' src_author
            read -p 'Enter title of comic:' src_title
            read -p 'Enter src url of comic:' src_url
            echo "- [$src_author - $src_title]($src_url)" > src.md
            printf 'OK: edit_src_md\n'
        else
            #nano src.md
            kwrite src.md
        fi

    # 计算哈希值
    elif [ "$user_operation" = "4" ]; then
        if [ -d main ] && [ -f src.md ]; then
            sha256sum main/* src.md > sha256sum.txt
            printf 'OK: single_hash_calc\n'
        else
            printf 'INFO: file_not_match_when_calc_single_hash\n'
            if [ -d ch1 ] && [ -f src.md ]; then
                sha256sum ch*/* src.md > sha256sum.txt
                printf 'OK: multi_hash_calc\n'
            else
                printf 'INFO: file_not_match_when_calc_multi_hash\n'
            fi
        fi

    # 压缩文件
    elif [ "$user_operation" = "5" ]; then
        if [ -d main ] && [ -f src.md ] && [ -f sha256sum.txt ]; then
            zip -q tmp.zip main/* sha256sum.txt src.md
            mv tmp.zip tmp.cbz
            printf 'OK: build_finished_single\n'
        else
            printf 'ERROR: file_not_match_single\n'
            if [ -d ch1 ] && [ -f src.md ] && [ -f sha256sum.txt ]; then
                zip -q tmp.zip ch*/* sha256sum.txt src.md
                mv tmp.zip tmp.cbz
                printf 'OK: build_finished_multiple\n'
            else
                printf 'ERROR: file_not_match_multiple\n'
            fi
        fi
        if [ -f tmp.cbz ]; then
            read -p 'Enter author name:' author_name
            read -p 'Enter title name:' title_name
            filename="[$author_name] $title_name"
            mv tmp.cbz "$filename".cbz
            ls -l
        else
            printf 'Info: tmp.cbz_no_found\n'
        fi

    elif [ "$user_operation" == "6" ]; then
        printf 'Choose working dir:\n'
        printf 'WD1: 0-tmp1\n'
        printf 'WD2: 2-comic-mix/0-cache\n'
        printf 'WD3: ~/Downloads\n'
        printf 'Enter (1/2/3):'
        read -r new_choice
        case "$new_choice" in
            1)
                default_wd=$WD1
                ;;
            2)
                default_wd=$WD2
                ;;
            3)
                default_wd=$WD3
                ;;
            *)
                default_wd=$WD2
                printf 'ERROR:invalid_input\nINFO: set_default_wd_to_wd2\n'
                ;;
            esac
        cd $default_wd

    elif [ "$user_operation" == "7" ]; then
        printf 'INFO: stop_and_quit\n'
        break
    elif [ "$user_operation" = "Q" ] || [ "$user_operation" = "q" ]; then
        printf 'INFO: stop_and_quit\n'
        break
    else
        printf 'ERROR: invalid_input'
        continue
    fi
done

配置文件

git

~/.gitconfig 中,写入:

[user]
    name = Poplar at twilight
    email = poplar.cubic@gmail.com
[http]
    proxy = http://127.0.0.1:7890

python

设置代理(~/.config/pip/pip.conf):

[global]
proxy=http://localhost:7890

KDE 相关

杂项

TTY

按下 Ctrl + Alt + F1 ~ F9 在不同的 TTY 中切换。

启动动画

要关闭应用的启动动画,可以在 desktop 文件中新增:StartupNotify=false,或在 编辑应用程序 > 应用程序 > 高级选项,关闭 启用启动特效

图标主题

某些快捷键

  • 杀死窗口:Super + Ctrl + Esc
  • 切换窗口:Alt + Tab

以太网

新建有线以太网连接时,需要在 仅限使用此设备 中指定设备(enp5s0)。


KDE 设置

鼠标和触摸板 > 触摸板:

  • 反向滚动(自然滚动)

键盘 > 键盘:

  • NumLock 在 Plasma 启用时的状态:打开

键盘 > 虚拟键盘:

  • Fcitx 5

声音:

  • 静音麦克风

显示和监视器:

  • 缩放率:150%

颜色和主题,修改:

  • 图标
  • 光标
  • 欢迎屏幕
  • 登录屏幕

壁纸:

  • 幻灯片

常规行为:

  • 单击文件或者文件夹时:打开

锁屏:

  • 自动锁定屏幕:15 分钟
  • 外观

用户反馈:

  • 第四档

电源管理:

  • 交流供电:
    • 不活动一段时间后:无操作
    • 按下电源键时:关闭屏幕
    • 合上笔记本盖时:锁屏

用户:

  • 更换头像

自动启动:

  • qBittorrent
  • telegram
  • FlClash

会话 > 桌面会话:

  • 位置:将默认位置重定向到当前文件夹
  • 登录时自动启动应用程序:启动为空会话

用户字体

Windows 字体包

下载地址:Windows 11 font list

poplar@Greysia:~> tree ~/.local/share/fonts
/home/poplar/.local/share/fonts
└── win11-fonts-partial
    ├── arial
    │   ├── arialbd.ttf
    │   ├── arialbi.ttf
    │   ├── ariali.ttf
    │   ├── ARIALNBI.TTF
    │   ├── ARIALNB.TTF
    │   ├── ARIALNI.TTF
    │   ├── ARIALN.TTF
    │   ├── arial.ttf
    │   └── ariblk.ttf
    ├── checksum.sha256
    ├── jhengHei
    │   ├── msjhbd.ttc
    │   ├── msjhl.ttc
    │   └── msjh.ttc
    ├── times-new-roman
    │   ├── timesbd.ttf
    │   ├── timesbi.ttf
    │   ├── timesi.ttf
    │   └── times.ttf
    ├── yahei
    │   ├── msyhbd.ttc
    │   ├── msyhl.ttc
    │   └── msyh.ttc
    └── zh-sc
        ├── Dengb.ttf
        ├── Dengl.ttf
        ├── Deng.ttf
        ├── simfang.ttf
        ├── simhei.ttf
        ├── simkai.ttf
        ├── simsunb.ttf
        └── simsun.ttc

7 directories, 28 files

关于我

我是 Poplar at twilight (简称为白杨;zh-Hans: 暮光的白杨,en: Poplar)。我常用 KDE 桌面环境。

OpenPGP 公钥

你可以在此处下载公钥。

  • PGP 指纹:2B42 9BB9 098D 7B21 8ECB D4DA F8FA E5B1 001E FE63

关于友链

如果你想出现在此页面中,你可以向博客的源代码仓库提交 PR 或者 issue。如果你要将我的网站添加至友链中,参考信息如下:

  • 注意:
    1. 如果你没有提供自我介绍的描述,那我将直接在使用你在你的个人网站的所写的简介资料。
    2. 如果你没有提供头像,那我将依次查询你的 Github/Gitlab 账户头像、TG 用户头像和社交媒体头像。直到找到可用非默认头像。

这里是朋友们的博客链接:

头像称谓个人博客/站点链接自我简介
imagesImBearChildhttps://imbearchild.cyou/喜欢猫猫的技术爱好者,openSUSE 中文社区新闻网站维护者之一。
images竹林里有冰https://zhul.in/Fedora 用户,但同时也在维护某些 AUR 的包,dipper 机型的 crDroid Official Maintainer。
images安静https://anjing.art/每一个不曾起舞的日子,都是对生命的辜负。
imageKaruboniruhttps://yanqiyu.info就是个学物理的,懂个屁的计算机。
images一座桥在水上https://blog.othing.xyz/我想冻住–
我的所见,所听,所想
他人所写,所创造
自然所变,所灭
冻住世界,冻住时间,冻住本就存在的一切!
imagesBlockcityhttps://ratizux.github.io/about/Ratizux by Blockcity. 使用 Markdown

About Licenses

  • 如果没有特别声明,本站点的所有文章都是基于 CC-BY-SA 4.0 进行分发授权。
    Unless otherwise stated, all articles on this site are distributed under CC-BY-SA 4.0 license.
  • 搭建此博客所使用的 mdbook 基于 MPL 2.0 进行授权分发。
    The mdbook used to build this blog are licensed and distributed under the MPL 2.0.