0


Nvidia显卡在Archlinux上安装桌面环境 wayland + hyprland

Nvidia显卡在Archlinux上安装桌面环境 wayland + hyprland

2023.2.10 修改环境变量部分
2023.2.12 修改环境变量部分,另外添加了hyprland的软件网站,有几个非常有意思
2023.2.13 修改键绑定部分内容 ,上传一张截图
2023.2.16 添加github仓库链接
2023.2.18 修改环境变量部分内容
2023.2.19 添加GTK3设置程序,SSH客户端,添加一个wayland的软件集合网站
2023.3.7 登录管理器更改为tuigreet
2023.3.8 修改hyprland.conf部分内容

hyprland官网
这几天折腾archlinux,对dwm和leftwm的表现不太满意,特别是状态栏,dwm使用polybar比较麻烦,leftwm功能不太全,还有就是X11的各种状态栏我都不怎么喜欢

翻看油管和B站的时候无意中发现hyprland,我对wayland的印象还停留在几年前,当时好像只有sway,但它是 I3wm的wayland版,我个人是不喜欢I3的,所以一直在X11下打滚…
既然看到了hyprland,看起来不错的样子,没道理不试一下

记录一下安装过程,重装系统的时候用 😃
刚开始使用wayland,可能有地方有错误或者不严谨,还是以archlinux的wiki为准
目前为止按照以下步骤安装,在我的机器上运行还算正常,每个人的情况不同,不能一概而论,所以本文只能作为参考,不能作为教程

一、安装系统

首先安装Archlinux,前段时间的安装过程备份,链接

二、安装桌面环境

paru -S wayland wlroots-hidpi-git qt5-wayland qt6-wayland glfw-wayland polkit-kde-agent

三、安装hyprland

paru -S hyprland-nvidia-hidpi-git waybar-hyprland-git foot wofi dunst

我安装 hyprland-nvidia-git一直出错,找不到原因,所以用了hidpi这个分支
waybar-hyprland是状态栏
登录管理器我放弃sddm,转用ly
终端模拟器用foot,一直想用,但是X11下没有…这回终于可以试试了
wofi是程序运行器,类似rofi
dunst是通知程序,或者用mako

四、NVIDIA显卡的配置

1、grub.cfg

doas vi /etc/default/grub

在GRUB_CMDLINE_LINUX_DEFAULT最后加上:nvidia_drm.modeset=1

保存退出后重新生成grub.cfg

doas grub-mkconfig -o /boot/grub/grub.cfg

2、修改mkinitcpio.conf

doas vi /etc/mkinitcpio.conf

MODULES=(nvidia nvidia_modeset nvidia_uvm nvidia_drm)

保存退出后重新生成 initramfs

doas mkinitcpio -P

3、设置 pacman hook

为避免在 NVIDIA 驱动程序升级后没有更新initramfs
设置一下hook

doas mkdir -v /etc/pacman.d/hooks
doas vi /etc/pacman.d/hooks/nvidia.hook

加入下面这一段

[Trigger]
Operation=Install
Operation=Upgrade
Operation=Remove
Type=Package
#根据安装的nvidia驱动修改,可用值 : nvidia、nvidia-dkms、nvidia-lts等等
Target=nvidia-dkms
#如果用lts内核就改成:linux-lts ,如果默认内核就改成: linux
Target=linux-zen
[Action]
Description=Update NVIDIA module in initcpio
Depends=mkinitcpio
When=PostTransaction
NeedsTargets
Exec=/bin/sh -c ‘while read -r trg; do case $trg in linux-zen) exit 0; esac; done; /usr/bin/mkinitcpio -P’
#Exec=/usr/bin/mkinitcpio -P

4、添加环境变量

如果你还有其他x11的桌面,那么别往这里乱加东西,我这是只有hyprland一个WM,所以设置成全局变量,用户级环境变量我没有研究

doas vi /etc/environment

HYPRLAND_LOG_WLR=1
#XDG设置
XDG_SESSION_TYPE=wayland
XDG_SESSION_DESKTOP=Hyprland
XDG_CURRENT_DESKTOP=Hyprland

#NVIDIA专用
LIBVA_DRIVER_NAME=nvidia
GBM_BACKEND=nvidia-drm
__GLX_VENDOR_LIBRARY_NAME=nvidia
__GL_GSYNC_ALLOWED=0
__GL_VRR_ALLOWED=0
WLR_NO_HARDWARE_CURSORS=1
#如果有闪屏问题试试打开注释
#WLR_DRM_NO_ATOMIC=1

#QT设置
QT_AUTO_SCREEN_SCALE_FACTOR=1
QT_QPA_PLATFORM=wayland
QT_WAYLAND_DISABLE_WINDOWDECORATION=1
QT_QPA_PLATFORMTHEME=qt5ct

#工具包使用的变量
SDL_VIDEODRIVER=wayland
_JAVA_AWT_WM_NONEREPARENTING=1
CLUTTER_BACKEND=wayland
GDK_BACKEND=wayland

#主题相关
#XCURSOR_THEME=Bibata-Modern-Classic
XCURSOR_SIZE=20
#GTK_THEME=

#其他设置
EDITOR=nvim
VISUAL=nvim
RUST_BACKTRACE=1

五、运行hyprland

普通用户运行

Hyprland

如果进入桌面,那么就是安装成功了,然后开始配置
按照屏幕上面的黄条里的提示,按快捷键退出hyprland
WIN+m

vi ~/.config/hypr/hyprland.conf

注释掉这一句,取消黄条警告信息: autogenerated=1
找到exec-once位置加入:
exec-once = xprop -root -f _XWAYLAND_GLOBAL_OUTPUT_SCALE 32c -set _XWAYLAND_GLOBAL_OUTPUT_SCALE 2
exec-once = /usr/lib/polkit-kde-authentication-agent-1
exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
ecec-once = waybar
exec-once = fcitx5
exec-once = foot --server
exec-once = dunst
找到kitty位置,把kitty替换为footclient
保存退出

我实际测试了一下foot和footclient,foot启动后占用17M内存,footserver占用25M左右,每一个footclient启动后占用900k左右

mkdir ~/.config/waybar

抄一个waybar的配置用,以后再慢慢修改 😃
我抄的是这个:brunoanesio/waybar-config
另一个配置文件:linuxmobile/hyprland-dots
复制config和style.css到 ~/.config/waybar/ 目录下

重新进入hyprland

Hyprland

默认打开终端的快捷键是
WIN+q
关闭窗口快捷键
WIN+c
程序运行器快捷键
WIN+r

其他快捷键在配置文件自己修改吧,最好的教程是官方WIKI

目前没有解决的问题
nvidia-settings 无法设置,还没来得及研究
1 - chrome浏览器,点击右键后弹出的菜单是一个黑框,移动鼠标到黑框上才会显示菜单内容。
问题解决,阅读arch wiki

vi ~/.config/chrome-flags.conf

如果不设置gtk-version=4,那么fcitx5无法在chrome切出输入法

–ozone-platform=wayland
–gtk-version=4

2 - 浏览器打开中文页面,旁边再打开一个终端,切换窗口焦点,切到浏览器上,终端字体会发虚,切回终端,大概1秒钟时间才会调整正常 ,浏览器打开英文页面没发现有这个问题。更新一下:仔细观察了一下,不是字体发虚,而是浏览器获得焦点的时候,会稍微调整一下位置,我猜测可能和边框有关,但是通过windowrule = noborder,^(google-chrome)$ 去掉chrome的边框后,问题还在,找不到解决办法。

问题原因找到了,是因为状态栏设置太矮,浏览器打开中文页面,标题栏显示标题时会显示中文,但是中文字体比较大,会自动增加状态栏高度,目前暂时禁止显示标题 ~,标题栏高度设置为28,问题解决

vi ~/.config/waybar/config


“height”: 28,

六 登录管理器

先安装rust

doas pacman -S rustup
rustup default nightly
paru -S greetd greetd-tuigreet
vi /etc/greetd/config.toml

[terminal]
vt = 1
[default_session]
command = “tuigreet --cmd Hyprland”
user = “用户名”

doas systemctl enable greetd

七 一些使用中的发现和配置

1、快捷键切换layout脚本

使用win+space切换master和dwindle模式

mkdir ~/.config/hypr/scripts
vi ~/.config/hypr/scripts/toggle-layout.sh

关于hyprctl,需要深入研究一下使用方法,个人觉得是一个很强大的工具

#!/usr/bin/env bashCURRENT_LAYOUT=$(hyprctl getoption general:layout |sed -n '4p'|awk'{print $2}'|sed's/\"//g')if[[$CURRENT_LAYOUT== dwindle ]];then
  hyprctl keyword general:layout master
elif[[$CURRENT_LAYOUT== master ]];then
  hyprctl keyword general:layout dwindle
fi
vi ~/.config/hypr/hyprland.conf
$scripts= ~/.config/hypr/scripts
bind=$mainMod, Space, exec, sh$scripts/toggle-layout.sh

2、动画

hyprland可以设置各种不同的动画组合,很有意思
bezier是一个挺好玩的东西,我玩了半天设置各种不同的动画

3、键绑定

键绑定有些很实用的功能
比如调节音量,我在dwm下快捷键调节音量,我设置的每次调5%音量,如果想从100%音量降到20%,需要按16次键盘
hyprland下使用binde绑定按键,只需要按住键盘就可以
我的台式机键盘是古老的DELL KB212,用了很多年了,没有多媒体按键

binde= $mainMod, left, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 1%-
binde= $mainMod, right, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 1%+
binde= $mainMod, down, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle

类似的还有:bindl,bindr,bindm …各有不同功能

还有就是发现一个很好用的功能:Submaps
官网上的例子,当按下alt+r时,进入子映射模式
然后在子映射模式中设置键绑定,这对于使用大量键绑定的人来说是一个很方便的功能…前提是能记住这些键绑定 😃

#‎将切换到名为“resize”的子映射‎
bind=ALT,R,submap,resize
#‎将启动一个名为“resize”的子映射‎
submap=resize
#‎设置可重复的绑定以调整活动窗口的大小‎
binde=,L,resizeactive,10 0
binde=,H,resizeactive,-10 0
binde=,J,resizeactive,0 -10
binde=,K,resizeactive,0 10
#‎按ESC返回到全局子映射‎
bind=,escape,submap,reset
#‎重置子映射,这意味着结束当前子映射并返回到全局子映射‎
submap=reset
#‎再往下键绑定将再次全局‎…

4、一些软件

(1) 截图

doas pacman -S grim slurp
vi ~/.config/hypr/hyprland.conf

grim -l 后面的数字是图片压缩等级,0是不压缩,我截一张不太复杂的全屏图片大概有6M左右
压缩等级1,同样的全屏图片,大小在550k左右
压缩等级9,也是同样的图片,大小在440k左右

bind = , print, exec, grim -l 1 ~/.config/picture/$(date +‘%s_grim.png’)

bind = SUPER, print, exec, grim -l 1 -g “(slurp)” ~/.config/picture/$(date +‘%s_grim.png’)

(2) 壁纸

paru -S hyprpaper-git preload
vi ~/.config/hypr/hyprpaper.conf

我只有一个显示器,也不想动态更换,所以只加载了一张壁纸
monitor的值可以用phyrctl monitors查看

preload = /壁纸图片目录/image.png
wallpaper = monitor,/壁纸图片目录/image.png

vi ~/.config/hypr/hyprland.conf

ecec-once = hyprpaper

(3) GTK3设置

paru -S nwg-look

(4) SSH客户端
Termius

(5) 一些工具的集合
awesome hyprland website
awesome wayland

上传截图的时候出了点事故,chrome一点击上传就崩溃…无语了
实再没招解决,换了edge浏览器,需要设置一下参数,不然edge是跑在xwayland上

vi ~/.config/microsoft-edge-stable-flags.conf

加入下面几句,gtk那句如果不设置,无法呼出fcitx5
而且设置完又出问题了,输入法提示框位置不对 😃 头大

–enable-features=WebRTCPipeWireCapturer
–enable-features=UseOzonePlatform
–ozone-platform=wayland
–gtk-version=4

在这里插入图片描述

我的配置文件github仓库地址

标签: linux

本文转载自: https://blog.csdn.net/kimux/article/details/128948241
版权归原作者 kimux 所有, 如有侵权,请联系我们删除。

“Nvidia显卡在Archlinux上安装桌面环境 wayland + hyprland”的评论:

还没有评论