最近我尝试了一款名为 Hyprland 的 Linux 桌面环境,这个过程让我折腾了很久。由于对 Linux 底层原理不太了解,加上各种报错让我感到无力,我先后在 Debian、Kali、Parrot 和 Arch Linux 上尝试安装。比较麻烦是来源于它只支持 C++26,而目前 Kali 和 Parrot 只有 g++13,C++26 只有在 Debian 13 测试版和 Arch Linux 系列中可用。虽然尝试在 Debian 上从零构建,但总是因为一些未知原因报错,而 Arch Linux 则相对容易构建。然而,在日常工作和学习中,各种工具环境的报错让人头疼,尽管有文档支持。
在 Arch 使用一段时间后,我渐渐的喜欢上了它,但紧接着就遇到了问题,一些工具报错甚至没有错误日志,只显示白屏。但是我仍然不想换回 Windows,因为我选择的笔记本似乎真的是为程序员设计的,装 Windows 时会出现死机和音箱破音的问题,而在 Linux 下这些问题都没有。
尽管心灰意冷,我准备结束折腾之路,老老实实换回 Kali,但 Kali 安装其他软件时的依赖问题也让我头疼,尤其是 Kali 自带的工具太多,而我并不需要,感觉很别扭。最关键的是我居然发现当前版本的kali,我的笔记本安装不上。
因此,我决定继续坚持使用 Arch,并记录下这段折腾的经历,以便在系统崩溃时能够恢复。声明一点,我的笔记本处理器为AMD6800H,且并无NVIDIA显卡。
系统安装 Arch 系列的发行版有很多,它们都基于 Arch Linux,但各自有不同的特点和目标,在众多Archlinux发行版中,我选择了EndeavourOS ,它并不需要Arch那样从0开始构建,可以让我避免花费更多的时间去做我已习惯的Arch系统安装命令,这里是官方镜像下载链接:
1 https://endeavouros.com/
U盘镜像制作工具,我使用的软通牒:
1 https://www.ultraiso.net/
制作好后插入U盘,进入操作系统安装程序启动页面:
U盘启动默认是个KDE桌面环境,会自动弹出安装助手:
左边在线安装,右边离线安装,我选择在线:
建议选择英语,中文可能会因为最初没有字体的缘故出现乱码。
地区按自己喜好选额即可,键盘布局需要根据真实情况来,各个地区键盘布局会有些许差异:
桌面环境我选择No Desktop:
因为我要使用Hyperland,要自己安装,接下来是软件选择,因为不装桌面,所以Desktop环境依赖包我不需要,Hyprland是基于Wayland,所以也不需要X11,我是AMD处理器,也就不需要Intel-ucode,我也不需要防火墙。也不需要yay。内核因为我是笔记本的缘故,散热一直是个问题,我选择内核LTS:
稳定性 :LTS 内核经过广泛测试,通常在功耗管理和硬件兼容性方面表现良好。这对于笔记本的散热管理是有利的,因为稳定的功耗管理可以减少过热的风险。
成熟的电源管理 :LTS 内核通常包含成熟的电源管理功能,能够有效地管理 CPU 频率和电压,从而降低功耗和热量产生。
性能优化较少 :可能缺乏一些最新的性能优化,这在某些情况下可能导致稍高的功耗。
使用Gurb引导:
选择整个磁盘,交换分区开起来吧,虽然可能用不到,但是万一呢,不差那点大小:
自定义安装属性:
Next安装即可。安装完毕后会重启:
可以打开ssh服务,然后从其他机器ssh连接登录,就可以复制粘贴命令了:
1 sudo systemctl start sshd.service
它会保留系统安装默认的普通内核,我喜欢干净一点,所以我决定把它删除:
1 sudo pacman -Rs linux linux-headers
1 sudo grub-mkconfig -o /boot/grub/grub.cfg
安装Hyprland 安装代理工具和paru,我不装yay是因为我喜欢paru,proxychains-ng可以很大程度解决网络问题:
1 sudo pacman -S proxychains-ng paru
Hyprland也有别人事先准备好的一键安装脚本,虽然可以自己重构,但是人家的脚本也就只构建了Hyprland,撑死加个VsCode,正好满足自己的极简主义电脑洁癖需求又可以让我轻松很多:
1 2 3 4 sudo pacman -S gitgit clone --depth 1 https://github.com/prasanthrangan/hyprdots ~/HyDE cd ~/HyDE/Scripts./install.sh
这个是系统引导Grub主题,就是开机看到的样式,因为我后边要自己换,所以随便选:
shell我觉得还是zsh比较好用:
这是多媒体处理,对于安全人员来说无所谓,根核心工作没多大关系,选第一个吧,第一个支持的多媒体格式多点:
随后便开始了Hyprland的正式安装,随后会要求选择wlogout,wlogout
是一个用于 Wayland 显示服务器协议的简单注销菜单工具。它通常用于提供一个图形化界面,允许用户在 Wayland 环境中选择注销、重启、关机、锁定屏幕等操作建议选择1,1是经过测试的稳定版,-git是从最新源码构建,可能会不稳定,我现在更倾向追求稳定:
安装过程中遇到报错不必担心,脚本可以重复多次运行。会一直安装到选择初始主题,如果没到请选择不断运行install.sh,直到选择sddm主题位置,建议选择2:
然后会问是否选择安装一些桌面应用:
这些软件我基本上都没需求,后边需要我可以自己再装,所以我选择No。随后会发现图形界面打开。
Hyprland美化 Hyprland配置文件基本都在个人用户目录.config/hypr下。
屏幕分辨率 需要在有桌面环境的终端中输入以下命令可以查看自己的显示器名称,远程ssh会话执行这条命令是获取不到显示器名称的:
记住显示器名称和刷新率,更改屏幕分辨率,配置文件在以下位置:
1 $HOME /.config/hypr/monitors.conf
配置示例:
1 monitor = Virtual-1, 1920x1080@60, 0x0, 1
脚本内部其实有一些预设主题,我根据自己的喜好先进行了一些挑选,决定在基础上对其进行美化:
壁纸 如果要对一个系统配色进行美化,我觉得需要先确定主题主要配色,我先找到了一张壁纸,壁纸需要放在Hyprland主题壁纸目录下,不然每次重启系统都会被覆盖刷新:
1 cp default_MAC.jpg ~/.config/hyde/themes/Catppuccin\ Mocha/wallpapers/
现在按Super+Shift+W,可以从中找到自己刚刚复制进去的图片作为壁纸。
sddm主题 我看上了这个:
1 https://github.com/minMelody/sddm-sequoia
安装:
1 2 3 git clone https://github.com/minMelody/sddm-sequoia.git sudo mv sddm-sequoia sequoiasudo mv sequoia /usr/share/sddm/themes/
更换sddm主题的图片:
1 sudo cp ~/Pictures/default_MAC.jpg /usr/share/sddm/themes/sequoia/backgrounds/forest.jpg
更改sddm主题配置:
1 sudo vim /usr/share/sddm/themes/sequoia/theme.conf
配置sddm主题分辨率:
更改字体大小:
更改窗口背景颜色:
1 popupsBackgroundColour="#1a1a1a"
更改聚焦颜色:
将sddm主题更改为我所安装的:
Grub主题 安装Grub主题,我选择了这个:
1 git clone https://github.com/vinceliuice/grub2-themes.git
根据官方文档选择了喜欢的主题:
1 sudo ./install.sh -t vimix -c 2560x1600 -i white
替换Grub主题背景图片:
1 sudo cp ~/Pictures/default_MAC.jpg /usr/share/grub/themes/vimix/background.jpg
鼠标与图标主题 arch源中有个挺好看鼠标指针和图标主题:
1 paru -S bibata-cursor-theme sweet-folders-icons-git
安装鼠标主题会报文件已存在,因为内置了一个白色鼠标主题:
直接把目录整个删了就好:
1 rm -rf /usr/share/icons/Bibata-Modern-Ice
在重新运行安装命令,在主题文件中配置鼠标主题:
1 vim ~/.config/hypr/themes/common.conf
1 2 3 exec = hyprctl setcursor Bibata-Modern-Classic 20exec = gsettings set org.gnome.desktop.interface cursor-theme 'Bibata-Modern-Classic' exec = gsettings set org.gnome.desktop.interface cursor-size 20
更改图标主题:
1 vim ~/.config/hypr/themes/theme.conf
1 2 3 exec = gsettings set org.gnome.desktop.interface icon-theme 'Sweet-Teal-Filled' exec = gsettings set org.gnome.desktop.interface gtk-theme 'Graphite-Mono' exec = gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark'
主题安装的插件有的受qt5配置影响,有的受qt6配置影响,里边也可以改。文件不止改这一处:
1 vim ~/.config/hyde/themes/Catppuccin\ Mocha/hypr.theme
这里是主题应用文件,不然每次一更换主题,之前改的配置就都无了,没错,这个仓库主题切换是直接霸道的覆盖重写,不过它不会删除我新建的自定义项,只会覆盖重写它自己已有的项,简而言之就是主题默认的配置文件都在 ~/.config/hyde/themes主题对应的文件中:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 exec = gsettings set org.gnome.desktop.interface icon-theme 'Sweet-Teal-Filled' exec = gsettings set org.gnome.desktop.interface gtk-theme 'Decay-Green' exec = gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark' general { gaps_in = 3 gaps_out = 8 border_size = 2 col.active_border = rgba(a5b6cfff) rgba(a5b6cfff) 45deg col.inactive_border = rgba(a5b6cfcc) rgba(a5b6cfcc) 45deg layout = dwindle resize_on_border = true } group { col.border_active = rgba(90ceaaff) rgba(ecd3a0ff) 45deg col.border_inactive = rgba(86aaeccc) rgba(93cee9cc) 45deg col.border_locked_active = rgba(90ceaaff) rgba(ecd3a0ff) 45deg col.border_locked_inactive = rgba(86aaeccc) rgba(93cee9cc) 45deg } decoration { rounding = 10 drop_shadow = false blur { enabled = yes size = 5 passes = 4 new_optimizations = on ignore_opacity = on xray = false } } layerrule = unset,waybar
Kitty 1 vim ~/.config/kitty/theme.conf
这是我的配色文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 foreground background selection_foreground selection_background cursor cursor_text_color url_color active_border_color inactive_border_color bell_border_color wayland_titlebar_color system macos_titlebar_color system active_tab_foreground active_tab_background inactive_tab_foreground inactive_tab_background tab_bar_background mark1_foreground mark1_background mark2_foreground mark2_background mark3_foreground mark3_background color0 color8 color1 color9 color2 color10 color3 color11 color4 color12 color5 color13 color6 color14 color7 color15
我选择去掉Kitty的终端透明效果:
1 vim .config/hypr/windowrules.conf
注释:
去除zsh每次启动出现得了logo,我不喜欢这个:
把最后一行的这句注释:
Rofi 按快捷键Super+A可以呼出Rofi,主题配色文件在以下路径:
1 vim ~/.config/rofi/theme.rasi
1 2 3 4 5 6 7 8 9 10 * { main-bg: main-fg: main-br: main-ex: select-bg: select-fg: separatorcolor: transparent; border-color: transparent; }
Swaylockp 是锁屏,配置文件在以下路径:
1 vim .config/swaylock/config
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 daemonize show-failed-attempts clock screenshot effect-blur=15x15 effect-vignette=1:1 color=1f1d2e80 font="Inter" indicator indicator-radius=200 indicator-thickness=20 line-color=1a1a1a ring-color=ffffff inside-color=1a1a1a key-hl-color=1a1a1a separator-color=00000000 text-color=ffffff text-caps-lock-color="" line-ver-color=1a1a1a ring-ver-color=1a1a1a inside-ver-color=1a1a1a text-ver-color=ffffff ring-wrong-color=31748f text-wrong-color=31748f inside-wrong-color=1f1d2e inside-clear-color=1f1d2e text-clear-color=e0def4 ring-clear-color=9ccfd8 line-clear-color=1f1d2e line-wrong-color=1f1d2e bs-hl-color=31748f grace=2 grace-no-mouse grace-no-touch datestr=%a, %B %e timestr=%I:%M %p fade-in=0.3 ignore-empty-password
文件中是不能放注释的:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 daemonize show-failed-attempts clock screenshot effect-blur=15x15 effect-vignette=1:1 color=1f1d2e80 font="Inter" indicator indicator-radius=200 indicator-thickness=20 line-color=1a1a1a ring-color=a5b6cf inside-color=1a1a1a key-hl-color=1a1a1a separator-color=00000000 text-color=a5b6cf text-caps-lock-color="" line-ver-color=1a1a1a ring-ver-color=1a1a1a inside-ver-color=1a1a1a text-ver-color=a5b6cf ring-wrong-color=31748f text-wrong-color=31748f inside-wrong-color=1f1d2e inside-clear-color=1f1d2e text-clear-color=e0def4 ring-clear-color=9ccfd8 line-clear-color=1f1d2e line-wrong-color=1f1d2e bs-hl-color=31748f grace=2 grace-no-mouse grace-no-touch datestr=%a, %B %e timestr=%I:%M %p fade-in=0.3 ignore-empty-password
Waybar 就是任务面板,颜色配置文件在:
1 vim .config/waybar/theme.css
1 2 3 4 5 6 7 8 9 10 @define-color bar-bg rgba(31, 35 , 40 , 0 ); @define-color main-bg @define-color main-fg @define-color wb-act-bg @define-color wb-act-fg @define-color wb-hvr-bg @define-color wb-hvr-fg
工作环境 接下来安装一下自己可能用的软件工具,我觉得有必要先设置Go代理:
1 2 go env -w GO111MODULE=on go env -w GOPROXY=https://goproxy.cn,direct
输入法和中文字体 1 sudo pacman -S adobe-source-han-serif-cn-fonts adobe-source-han-sans-cn-fonts wqy-zenhei wqy-microhei noto-fonts-cjk noto-fonts-emoji noto-fonts-extra ttf-dejavu fcitx5-im fcitx5-chinese-addons
输入法皮肤:
1 mkdir -p ~/.local/share/fcitx5/themes/dracula
1 git clone https://github.com/drbbr/fcitx5-dracula-theme.git ~/.local/share/fcitx5/themes/dracula
1 vim ~/.local/share/fcitx5/themes/dracula/theme.conf
1 2 3 4 5 6 7 8 9 10 11 12 [InputPanel] Font=Sans 12 NormalColor=#a5b6cf HighlightCandidateColor=#64b5f6 HighlightColor=#1a1a1a HighlightBackgroundColor=#1a1a1aff Spacing=3
日常软件包依赖 1 sudo pacman -S eog telegram-desktop openvpn python-pipx python-pip
1 paru -S clash-verge-rev google-chrome typora hyprshot
hyprshot是截图工具,命令行的,可以指定快捷键在
1 vim .config/hypr/keybindings.conf
1 bind = Ctrl+Alt, A, exec , hyprshot -m region --clipboard-only
–clipboard-only 参数为只复制到剪切板,不进行本地保存。
开发环境 1 sudo pacman -S pycharm-community-edition intellij-idea-community-edition mousepad dpkg
JDK版本管理 1 2 3 sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-17-openjdk/bin/java 1717sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-21-openjdk/bin/java 2121sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-11-openjdk/bin/java 1111
渗透依赖以及工具 1 sudo pacman -S nmap masscan rustscan exploitdb openbsd-netcat hashcat john impacket bind hping fping net-snmp swaks nikto pocl sqlmap tcpdump hydra sqlitebrowser wireshark-qt
1 paru -S dnsenum2 dnsmap maltego spiderfoot subfinder fscan wafw00f smtp-user-enum-git nbtscan webshells-git wordlists cewl-git crunch weevely ruby-evil-winrm netexec responder smbmap dirsearch feroxbuster gobuster whatweb neo4j-community bloodhound nuclei
1 https://github.com/dirkjanm/BloodHound.py.git
1 https://github.com/ly4k/Certipy.git
1 https://gitlab.archlinux.org/archlinux/packaging/packages/python-pyppeteer.git
1 paru -S theharvester-git --mflags "--skipchecks"
1 https://github.com/commixproject/commix.git
QEMU/KVM 1 2 3 sudo pacman -Syu --needed virt-manager qemu-desktop libvirt edk2-ovmf dnsmasq vde2 bridge-utils iptables-nft dmidecodesudo pacman -S qemu-full qemu-img virt-install virt-viewer swtpm guestfs-tools libosinfoparu -S tuned
AMD SEV支持
1 2 echo "options kvm_amd sev=1" >> /etc/modprobe.d/amd-sev.confreboot
1 sudo systemctl enable libvirtd.service
1 sudo systemctl start libvirtd.service
将当前用户添加到libvirt,kvm组可以避免每次启动切root:
1 sudo usermod -aG libvirt,kvm $USER
开启TPM
1 sudo systemctl enable --now tuned.service
优化(不知道干嘛的,但是文档里有,Chatgpt也说好,那就开呗)
1 sudo tuned-adm profile virtual-host
界面优化 部分应用可能出现fcitx5输入法无法使用,或者谷歌浏览器右键菜单有一圈毛玻璃,可以使用在启动方式后增加以下参数开启wayland效果:
1 --ozone-platform-hint=auto --enable-wayland-ime
比如谷歌:
1 /usr/bin/google-chrome-stable --ozone-platform-hint=auto --enable-wayland-ime
自定义启动项 BurpSuite:
1 "/usr/lib/jvm/java-23-openjdk/bin/java" "--add-opens=java.desktop/javax.swing=ALL-UNNAMED" "--add-opens=java.base/java.lang=ALL-UNNAMED" "--add-opens=java.base/jdk.internal.org.objectweb.asm=ALL-UNNAMED" "--add-opens=java.base/jdk.internal.org.objectweb.asm.tree=ALL-UNNAMED" "--add-opens=java.base/jdk.internal.org.objectweb.asm.Opcodes=ALL-UNNAMED" "-javaagent:burploader.jar" "-javaagent:burpsuitloader-3.7.17-all.jar" "-noverify" "-jar" "$HOME /SecTools/BurpSuite/burpsuite_pro_v2024.8.1.jar"
1 2 3 4 5 6 7 8 9 10 11 12 [Desktop Entry] Comment= Exec=env XCURSOR_SIZE=20 bash $HOME /SecTools/BurpSuite/StartBurpSuite GenericName= Icon=$HOME /SecTools/BurpSuite/burpico.png MimeType= Name=BurpSuite Path=$HOME /SecTools/BurpSuite/ StartupNotify=true Terminal=false TerminalOptions= Type=Application
1 cp BurpSuite.desktop ~/.local/share/applications
CobaltStrike:
1 /usr/lib/jvm/java-17-openjdk/bin/java -XX:ParallelGCThreads=4 -XX:+AggressiveHeap -XX:+UseParallelGC -javaagent:uHook.jar -jar cobaltstrike-client.jar $*%
1 2 3 4 5 6 7 8 9 10 11 12 [Desktop Entry] Comment= Exec=env XCURSOR_SIZE=20 bash $HOME /SecTools/CobaltSrike/Client/StartCobaltStrike GenericName= Icon=$HOME /SecTools/CobaltSrike/CobaltStrike.jpeg MimeType= Name=CobaltSrike Path=$HOME /SecTools/CobaltSrike/Client StartupNotify=true Terminal=false TerminalOptions= Type=Application
1 cp CobaltSrike.desktop ~/.local/share/applications
Behinder:
1 java -jar $HOME /SecTools/Webshells/Behinder/Behinder.jar
1 2 3 4 5 6 7 8 9 10 11 12 [Desktop Entry] Comment= Exec=env XCURSOR_SIZE=20 bash $HOME /SecTools/Webshells/Behinder/StartBehinder GenericName= Icon=$HOME /SecTools/Webshells/Behinder/icon1.png MimeType= Name=Behinder Path=$HOME /SecTools/Webshells/Behinder StartupNotify=true Terminal=false TerminalOptions= Type=Application
1 cp Behinder.desktop ~/.local/share/applications
Godzilla:
1 java -jar $HOME /SecTools/Webshells/Godzilla/godzilla.jar
1 2 3 4 5 6 7 8 9 10 11 12 [Desktop Entry] Comment= Exec=env XCURSOR_SIZE=20 bash $HOME /SecTools/Webshells/Godzilla/StartGodzilla GenericName= Icon=$HOME /SecTools/Webshells/Godzilla/icon.png MimeType= Name=Godzilla Path=$HOME /SecTools/Webshells/Godzilla StartupNotify=true Terminal=false TerminalOptions= Type=Application
1 cp Godzilla.desktop ~/.local/share/applications
窗口浮动 1 2 3 4 5 6 7 8 9 10 11 12 windowrulev2 = float ,title:(Clash Verge) windowrulev2 = size 60% 40%,title:(Clash Verge) windowrulev2 = float ,title:(Clash for Windows) windowrulev2 = size 60% 40%,title:(Clash for Windows) windowrulev2 = float ,title:Telegram windowrulev2 = size 80% 80%,title:Telegram windowrulev2 = float ,title:Mousepad windowrulev2 = float ,title:Remmina windowrulev2 = size 60% 60%,title:Remmina windowrulev2 = float ,title:Dolphin windowrulev2 = size 70% 70%,title:Dolphin
初步就这样了。
备份配置文件 初始化git目录:
1 2 3 4 5 6 7 8 9 10 11 12 mkdir backupgit init cp -r ~/.config/hyde .cp -r ~/.config/hypr .cp -r ~/.config/waybar .cp -r ~/.config/kitty .cp -r ~/.config/Kvantum .cp -r ~/.config/swaylock .cp -r ~/.config/rofi .cp ~/.zshrc .cp -r ~/.local/share/fcitx5/themes/dracula .cp -rf /usr/share/sddm/themes/sequoia .
提交Github:
1 2 3 4 5 6 7 git config --global user.email "your@email" git config --global user.name "your.name" git add . git commit -m "Config Update" git branch -M main git remote add origin https://github.com/Anneballa/Hyprland-Configs.git git push -u origin main