当前位置: 首页 > news >正文

DIY Linux 桌面:让电脑再次快速运行

大家好!我是大聪明-PLUS

我曾经从 Windows 转到 FreeBSD,包括因为 FreeBSD 在相同硬件上运行速度更快,并且不需要手鼓跳舞,因为通常情况下,从头到尾所需的一切都已配置好。

然后是 Linux——因为它有更好的硬件支持,而且总的来说,人们不想再回到 Windows。

但随着时间的推移,Ubuntu 的最新版本在缓慢性和不可预测性方面与 Windows 非常相似。然后,人们又想用电视盒打造一个便捷的桌面……

原则上,我找到了一个为我的电视盒构建的现成的 Armbian 版本,它预装了 XFCE 桌面——但尽管 XFCE 被认为是“轻量级”的,结果却发现它不够轻量,没有达到我的期望。Windows
运行速度明显很慢,总的来说,一切都不太对劲……

尽管它“小巧”,但这台电脑的性能应该相当不错:4GB 内存,4 核 1.5 GHz 处理器,这些配置曾经普遍难以企及,但现在“一切正常”,而且运行速度很快,即便是在速度慢得多的硬件上。
问题出在哪里?ARM 处理器从原理上来说真的慢吗?

总的来说,我决定从零开始组装一台“台式机”。嗯,差不多了。
(除了纯粹的“硬件”部分,其他一切都适用于任何台式电脑和笔记本电脑)

要求很简单:

- 大屏幕
- 最小空间要求
- 无线,除网络之外的几乎所有功能
- 多窗口环境
- 终端仿真器(shell、vim、MidnightCommander)
- 一些图形(Gimp)
- arduino 软件
- Office
- 打印到打印机
- 浏览器
- 用于绘制印刷电路板的软件(Fritzing)
- 视频播放器、音乐、耳机 - 仅此而已

我马上就会谈论最终版本——因为中间版本由于各种原因不合适而被拒绝了。

硬件

以基于 H618 处理器的 Z8 电视盒作为基准。为了进行比较,我们在 H616 和 rk3528 等其他设备上进行了类似的测试:结果显示,H618 的图形渲染效果最佳,略逊于 H616,而 rk3528 的图形渲染效果最差。尽管从“计算机”的角度来看,rk3528 的运行速度最快。也就是说,它适合用作服务器,但不适合用作台式机。

屏幕——22英寸电视,屏幕分辨率为1920x1080。为什么是电视?因为它可以通过HDMI播放声音。过去几年,我已经很不习惯眼睛能看到像素了,以前我们是怎么在这样的显示器上工作的呢?

桌面空间的问题,用旋转显示器支架解决了。这种支架固定在桌子边缘,可以随意旋转屏幕,同时桌面本身也保持空置,不会造成任何杂乱。
哇,这以前从未发生过。

带触控板的无线全尺寸键盘可轻松收纳,节省空间。
电池续航时间超长,惊喜不已。

盒子上只有一个USB接口能用——当然,我可以在DTB里找找,试试能不能打开第二个——但我太懒了,结果发现用一个扁平的USB集线器,连着“主机”一起插到显示器上更方便。
结果发现,它竟然是一个简洁的“一体式”集线器。
这款型号没有内置WiFi和蓝牙,不过现在市面上有很多不同的USB适配器,可以轻松解决这个问题。

系统

以 Armbian-unofficial_24.5.0-trunk_Transpeed-8k618-t_bookworm_edge_6.7.12.img.xz 程序集为基础。默认情况下,安装后仅占用约 2 GB 的空间(对于既不是 RAM,也不是 ROM,也不是磁盘的东西,正确的名称应该是什么?)。

登录密码输入行,文本模式,对于服务器来说还不错,但我需要一个桌面环境来操作。同时,我的任务是尽可能避免任何“桌面环境”,主要是因为集成:当一个程序的运行依赖于另一个程序的运行时,替换其中一个程序可能会导致不可预测的后果。
当然,也因为现代桌面环境会拖累一堆各种各样的垃圾,其中一两个程序是必需的。而且 emmc“磁盘”上的空间不是弹性的。

然而,拒绝“单一集成系统”可能会导致一些有趣的故障,因此我们立即禁用了所有不必要的程序。例如,我们不得不完全禁用 systemd。
在 Debian 中,这大致如下:清除软件包缓存:

apt clean

下载将系统转换至 SystemV 模式所需的文件

apt --download-only install sysvinit-core isc-dhcp-client

让我们切换到单用户模式:

systemctl rescue

安装下载的文件:

apt install /var/cache/apt/archives/*.deb

然后重启。这样,我们就得到了经典的 SystemV 模式,它包含运行级别、服务启动/停止脚本。

为什么好老?

重点是启动不同的守护进程和脚本变得更加可预测和透明:有一个按特定顺序启动的特定脚本列表 - 并且由您决定启动什么以及何时启动或不启动,并且它们位于一个地方 - /etc/init.d从那里已经有用于启动和停止不同运行级别的符号链接: /etc/rcX.d

不存在的东西就不会启动,如果存在的东西没有启动,你总能找到原因。

同时,日志也恢复了正常,不再是单个带有过滤器的日志转储,所有信息都各归其位。
(虽然有些人喜欢相反的做法……)

然而,现在,例如,要启动网络,你需要付出一点努力并写下

/etc/network/interfaces:

...
auto end0
iface end0 inet dhcp
...

或者添加到 /etc/rc.local命令中

dhclient end0

基本上,你自己做决定,告诉计算机它到底应该做什么。
这看起来可能比较复杂——但它不会在不该做的时候自行采取行动。

安装 X-windows

我只需要图形系统来显示窗口和启动程序,所以一个简单的窗口管理器就足够了。简单来说:X 服务器在屏幕上绘制内容,程序在其窗口中绘制内容,窗口管理器管理窗口:创建、移动和关闭它们。它不执行任何特殊操作,因此实际上不会降低速度。

WindowMaker 已经证明了自己是一款优秀的窗口管理器——一款极简主义的窗口管理器,内置菜单、可自定义的热键,以及通过名称启动任何程序的功能。
当然,还有更简约的窗口管理器,总的来说,X 在这方面拥有很好的实验空间。

但为了正常运行,您还需要一个终端仿真器:
事实上,标准的终端是 xterm,但不妨先说说——最好的终端是 sakura,它可以完美地替代 xterm。

默认情况下,没有这一个,所以我安装了 sakura。

要从命令行运行 X,您需要 xinit 软件包,其中包含启动脚本。
当然,您还需要 X 服务器本身及其所有标准模块。因此,所有这些软件包的安装方式如下:

apt install xserver-xorg xinit wmaker sakura

我们以 root 身份运行 X-server 来检查其运行情况:

X :0

应该会显示黑屏,这意味着一切正常。转到另一个控制台(Ctrl-Alt-Fx 或通过 ssh)并终止 Xorg 进程。

或者它将不起作用并会写入可以在类似 /tmp/.X0/log 的日志中查看的错误 - 然后您需要看看它不喜欢什么......

现在我们以普通用户身份登录,在我们的目录中创建一个包含一行内容的文件 .xinitrc:

wmaker

我们尝试运行:

startx

WindowMaker 应该启动了。
打开菜单 - F12,菜单中有一个“运行”项 - 按下它,输入 sakura,终端就会打开。

在“默认”菜单中,xterm 很可能会被指示为终端,但我们没有设置它,所以现在就是这样,现在我们需要配置一切。

当然,“默认”视图是马马虎虎的 - 但可以稍后进行配置。

屏幕左上角(通常)是安装程序的图标。这个程序确实很老了,所以界面上有很多问题——不过你至少得用一次。虽然它很老了,但一切正常。实际上,你只需要一个菜单​​就能启动主程序并设置快捷键。

它支持多种“屏幕”、一种平铺(将两个窗口垂直或水平并排放置)、最大化/最小化等等。
剩下的就是配置背景、颜色和菜单外观,以及更美观的字体——仅此而已。它能够出色地完成窗口管理任务,这就是您所需要的一切。您需要的一切都可以单独配置。

WindowMaker 设置 - 位于目录~/GNUstep/Defaults、WindowMaker 文件和 WMRootMenu 中。
这些简单的文本文件可以手动编辑,例如,批量替换字体或调整程序列表。
有些操作比点击“安装程序”图标更简单。

WindowMaker 配置示例

当然,从头开始写这个是愚蠢的,但如果您只需要纠正字体或颜色,那么为什么不在文本中纠正它们呢?

背景填充可以设置为纯色、两点和三点渐变以及颜色本身 - 均采用“rgb:70/82/af”和“#7082af”结构

按钮修饰符:Control、Shift、Mod1(Alt)、Mod4(Win、Super)。

字体

X 支持 ttf 字体。只需从 Google Fonts 下载即可,然后解压到 .local/share/fonts 目录,然后更新缓存:

fc-cache -r

查看可用列表:

fc-list

还有抗锯齿设置 - 默认情况下抗锯齿现已启用,但如果未启用,您可以手动启用它:

创建文件 .config/fontconfig/fonts.conf

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig><match target="font"><edit name="antialias" mode="assign"><bool>true</bool></edit><edit name="hinting" mode="assign"><bool>true</bool></edit><edit name="hintstyle" mode="assign"><const>hintslight</const></edit><edit name="rgba" mode="assign"><const>rgb</const></edit><edit name="autohint" mode="assign"><bool>false</bool></edit><edit name="lcdfilter" mode="assign"><const>lcddefault</const></edit><edit name="dpi" mode="assign"><double>96</double></edit></match>
</fontconfig>

在其中,我们明确启用了抗锯齿功能,禁用了自动渲染提示(在某些字体上效果可能不佳),并为支持自动渲染提示的字体启用了渲染提示。
此处的 DPI 参数会影响字体渲染大小的计算、“点”与“像素”之间的比例(以及某些程序中界面元素的大小)。
在某些程序的设置中,大小仅用一个数字表示,例如“16”(以点为单位),而在其他程序中则以像素为单位,例如“16px”。

键盘布局

键盘通过 Xkb 以标准方式配置。在启动 wmaker 之前的启动脚本 .xinitrc 中,设置布局:

setxkbmap -layout us,ru -option grp:caps_toggle,grp_led:caps

这样就可以使用 CapsLock 键切换布局,并通过大写字母指示灯显示状态
。CapsLock(大写-小写)的标准行为是通过 Shift-CapsLock 来实现的。

其他组合也是可能的,例如 ctrl_alt_toggle、ctrl_shift_toggle 等,具体取决于您的习惯。

声音

一些应用程序可以直接通过 ALSA 工作,它们不需要任何特殊的东西。

考试:

aplay /usr/share/sounds/alsa/Front_Center.wav

如果没有声音,则需要检查权限:
ls -l /dev/snd

drwxr-xr-x 2 root root 60 Mar 10 21:04 by-path
crw-rw---- 1 root audio 116, 4 Mar 10 21:04 controlC0
crw-rw---- 1 root audio 116, 3 Mar 10 21:04 pcmC0D0c
crw-rw---- 1 root audio 116, 2 Mar 10 21:04 pcmC0D0p
crw-rw---- 1 root audio 116, 1 Mar 10 21:04 seq
crw-rw---- 1 root audio 116, 33 Mar 10 21:04 timer

也就是说,用户必须属于 audio 组。
您可以通过不同的方式将用户添加到该组,也可以直接添加 - 只需在 /etc/group 中写入用户即可。

audio:x:??:username

重新登录后,权限将生效。检查“命令 ID”,组中应该有一个组“音频”

某些应用程序(例如浏览器)需要使用 pulseaudio。安装:

apt install pulseaudio pavucontrol

.xinitrс进行更改:

...
pulseaudio --start
wmaker
pulseaudio --kill
...

我们进入startx图形,启动终端,检查:

paplay /usr/share/sounds/alsa/Front_Center.wav

如果不需要屏幕消隐功能,也可以禁用它。在启动 wmaker 之前,在同一个 .xinitrc 文件中添加:

xset s off -dpms

总的来说,初始设置已经完成,剩下的就是安装程序和配置菜单。不过很明显,一切都进行得相当快。

几个实用程序: - 屏幕锁定 - xsecurelock - 屏幕截图 - maim - 时钟 - wmclock - 有趣的处理器负载指示器 - wmfire

Wayland

X 很棒,因为它几乎可以在所有硬件上运行。不过 Wayland 现在很流行——嗯,它也能在这里运行。

无需赘述,这里的逻辑如下:使用一个“作曲家”,它结合了“图形服务器”和“窗口管理器”的功能,因此任务归结为启动这个“作曲家”。

与 X 不同的是,它的选择并不多:堪称典范的 Weston、基于磁贴的 Sway、类似 Compiz 的 Wayfire、单任务的 Kiosk,以及同样庞大的 Gnome/KDE。
似乎还有其他东西,但所有东西都是实验性的,并且是自行组装的。

为了支持纯 X 应用程序,您还需要在 Wayland 编辑器中运行的 Xwayland。

我们尽量避免使用怪物,磁贴管理器是给业余爱好者用的,Weston 的 x-applications 出了点小故障——所以我们安装了 Wayfire。
其实,如果有人还记得 Compiz 的话——它几乎和 Wayfire 一样,只是速度更快。

还有一点需要注意:Wayfire 需要“会话管理”才能工作,这通常由 logind 完成,而 logind 的工作与 systemd 的工作紧密相关。但
这里不需要,所以你还需要 seatd——一个轻量级的 logind 替代品。
因此,安装过程如下:

apt install wayfire seatd xwayland

为了使 Wayland 系统正常工作,您需要定义一个指向XDG_RUNTIME_DIR包含用户会话数据的目录的变量。
由于 logind 不用于创建该变量,因此我们将手动创建它,方法是将所有内容写入 startw 脚本(类似于 startx):

#!/bin/shmyid=$(id -u)
dir="user${myid}"mkdir -p /tmp/${dir}
XDG_RUNTIME_DIR=/tmp/${dir} ; export XDG_RUNTIME_DIRexport XDG_SCREENSHOTS_DIR=Pictures/Screenshotspulseaudio --start
wayfire :0
pulseaudio --kill

这里创建了必要的目录,并通过与 .xinitrc 类似的方式启动了 pulseaudio
(事实上,这样的脚本相当不错,因为接下来我们需要设置一些变量,比如 grimshot 的 XDG_SCREENSHOTS_DIR - 在这里这样做很方便)

另一个细微差别:您需要检查目录 /dev/dri

ls -l /dev/dri

总计 0
drwxr-xr-x 2 root root 100 Mar 19 09:04 by-path
crw-rw---- 1 root video 226, 0 Mar 19 09:04 card0
crw-rw---- 1 root video 226, 1 Mar 18 23:17 card1
crw-rw---- 1 root render 226, 128 Mar 18 23:17 renderD128

我们工作时使用的用户必须是 video 和 render 组的成员。
操作方式与 /dev/snd 相同

现在你可以运行它了,如果一切正常,我们会看到一个“黑屏”。
退出 - Ctrl-Alt-BS

只是默认情况下,它应该启动尚未安装的程序——这就是为什么屏幕上什么也没有。
配置文件是 .config/wayfire.conf,你需要创建它:

[input]
# 
xkb_layout  = us,ru
xkb_options = grp:caps_toggle,grp_led:caps[output:HDMI-A-1]
# 
# 
mode = 1920x1080@60
position = 0,0
transform = normal
scale = 1
dpms = off[core]
xwayland = true
no_dynamic_outputs = true[command]
# 
binding_terminal = <super> KEY_T
command_terminal = sakura# 
# # 
binding_launcher = <super> KEY_F2
command_launcher = wofi# Screen locker
binding_lock = <super> KEY_L
command_lock = swaylock -f -c 002020# 
# 
binding_sc1 = SCROLL_UP
command_sc1 = true
binding_sc2 = SCROLL_DOWN
command_sc2 = true
binding_sc3 = SCROLL_RIGHT
command_sc3 = true
binding_sc4 = SCROLL_LEFT
command_sc4 = true# Screenshots
# SYSRQ
binding_screenshot = KEY_SYSRQ
command_screenshot = /usr/bin/grimshot save area
binding_screenshot_interactive = <shift> KEY_SYSRQ
command_screenshot_interactive = /usr/bin/grimshot save screen

这只是一个包含相当重要设置的一小段内容:设置键盘布局、屏幕输出、启动终端(如何启动以及启动哪一个终端),以及一些细微差别,例如 PrintScreen 按钮的非标准名称或阻止不需要的反应的方法(例如,更改窗口而不是滚动其中的内容)。

简而言之 - 安装与 WindowMaker 相同的热键,启动相同的 sakura 终端,使用相同的“桌面”背景。
动画周期缩短了 - 仅在演示时看起来不错,但工作速度因此变慢。但无需完全移除它。

状态栏——waybar,菜单——wofi,背景设置——swaybg,屏幕锁定——swaylock,截图——grimshot。

让我们安装它:

apt install waybar wifi swaybg swaylock grimshot

现在您可以运行任何环境:
X - startx

Wayland - startw

两者在此硬件上运行都非常快,并且使用相同的热键和程序设置几乎没有区别。

Wayfire 似乎具有更好的窗口切换体验,GPU 显然参与其中。


文章转载自:

http://wrZJh3fa.fjmfq.cn
http://hdc7PdF1.fjmfq.cn
http://n65IOv11.fjmfq.cn
http://GFo51gbT.fjmfq.cn
http://ZmaiWzIv.fjmfq.cn
http://brobccmH.fjmfq.cn
http://XJkeMZlQ.fjmfq.cn
http://w6qhFdX6.fjmfq.cn
http://8pjVfQlC.fjmfq.cn
http://xC4FDFq4.fjmfq.cn
http://JbSZ4c9g.fjmfq.cn
http://QE7Pgny2.fjmfq.cn
http://a7arDmFU.fjmfq.cn
http://0zmR2s9f.fjmfq.cn
http://6LQCWFln.fjmfq.cn
http://ukB8EaXs.fjmfq.cn
http://pHcct2mu.fjmfq.cn
http://LaeTFuig.fjmfq.cn
http://MQdu6vQ2.fjmfq.cn
http://S1cvWH04.fjmfq.cn
http://hKDPY1QZ.fjmfq.cn
http://V9JIepvF.fjmfq.cn
http://gdh6E6sa.fjmfq.cn
http://g6zxBlw2.fjmfq.cn
http://ghSh4cnZ.fjmfq.cn
http://pDdLPRw5.fjmfq.cn
http://weNOsWME.fjmfq.cn
http://oaJnvF0P.fjmfq.cn
http://8KokxFqT.fjmfq.cn
http://2KcqtGkq.fjmfq.cn
http://www.dtcms.com/a/387311.html

相关文章:

  • MySQL基础入门:开启数据库之旅
  • C++开发者如何开发自己的第一个mac应用(xcode + XIB + Objective-C C++)
  • LabVIEW风洞测试系统稳定性措施
  • Spring Boot 深入剖析:SpringBoot的启动流程
  • 机器人工具标定-记录一下-待验证(没数据)
  • 1.0 Labview中事件结构在while循环中使用注意事项(超时时间)
  • 微服务通信
  • 重定向、命令行判断、管道、正则三剑客
  • 破垄断!东土科技与海光信息联合发布全国产化工控系统,筑牢工业安全新底座
  • 一场史诗级的冒险——Docker命令大航海!
  • 基于 Node.js 的后端框架:NestJS 和 Express(二)
  • 大数据时代时序数据库选型指南:为何Apache IoTDB成优选——从技术架构与行业实践深度剖析
  • HBase 实战:3 步掌握基于 Rowkey 的数据更新技巧
  • 【Android】Jetpack Media3 播放音频文件
  • 算法 --- 队列 + 宽搜(BFS)
  • 苹果手机怎么导出App数据目录,iOS文件管理、应用沙盒访问、日志缓存导出与性能调试实战(uni-app开发者指南)
  • Java 设计模式——策略模式:从 3 种写法到 SpringBoot 进阶
  • JVM:性能调优的理解
  • AR眼镜在巡检业务中的软件架构设计|阿法龙XR云平台
  • 活动预告 | Paraverse × Unity:Unity云XR串流——突破设备与平台限制
  • 第十四届蓝桥杯青少组C++选拔赛[2022.12.18]第二部分编程题(5、猴子拿桃)
  • 二维码辅助回桩之二维码识别
  • Mojo vs Python vs Rust,2025年搞AI,怎么学
  • 从软件工程角度谈企业管理
  • 【C语言】C 语言自定义类型:联合与枚举的基础解析
  • 模型部署:(五)安卓端部署Yolov8关键点检测项目全流程记录
  • 在业务应用中集成 go-commons,实现应用+系统双指标监控
  • ESP32-C3四种工作模式
  • ReactNative中实现可拖拽的温度计组件
  • react snippets