如何在 Linux 上安装、配置和自定义 Waybar如何在 Linux 上安装、配置和自定义 Waybar如何在 Linux 上安装、配置和自定义 Waybar如何在 Linux 上安装、配置和自定义 Waybar
  • 业务
  • 目标
  • 支持
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容

如何在 Linux 上安装、配置和自定义 Waybar

发表 admin at 2025年2月28日
类别
  • 未分类
标签
コアサーバーV2プランご契約でドメイン更新費用が永久無料

Waybar 是一个高度可定制的 Wayland 栏,适用于 Sway 和其他基于 Wlroots 的合成器,例如 Hyprland 或 River。 Waybar 的许多可用功能都组织在模块中,可以轻松配置和设计样式。

在本教程中,我们学习如何在一些最常用的 Linux 发行版上安装和配置 Waybar。

在本教程中您将学习:

  • 如何安装Waybar
  • 如何配置 Waybar 和一些最有用的模块并设置样式

安装

Waybar 是免费的开源软件;该代码可在 GitHub 上找到,但所有主要的 Linux 发行版都在其官方存储库中包含该 bar 的预编译版本,可供安装。要在最新的 Debian 稳定版 (Bookworm) 和其他基于 Debian 的发行版上安装 Waybar,我们可以运行:

$ sudo apt install waybar

相反,在 Fedora 上,我们可以使用 dnf 安装“waybar”包:

$ sudo dnf install waybar

Waybar 也可以在 Archlinux“Extra”存储库中找到。我们可以使用 pacman 安装它:

$ sudo pacman -Sy waybar

路栏配置

Waybar 使用 JSONC(带注释的 JSON)文件格式进行配置,并按优先级顺序在以下位置查找配置文件:

  • $XDG_CONFIG_HOME/waybar/config
  • 〜/.config/waybar/config
  • 〜/.waybar/config
  • /etc/xdg/waybar/config

在开始讨论模块以及如何配置它们之前,我们想要编写“通用”Waybar 配置。这是一个例子:

{
  "layer": "bottom",
  "position": "top",
  "height": 24,
  "spacing": 5,
  "modules-left": ["sway/workspaces","sway/mode"],
  "modules-center": ["sway/window"],
  "modules-right": ["idle_inhibitor","cpu","memory","battery","pulseaudio","clock","tray"]
}

通过使用layer键,我们指定该栏是否应显示在其他窗口的顶部或后面。在平铺窗口管理器环境中,当使用“dmenu”等实用程序时,这变得相关,以确保菜单窗口可见(如果在调用时它出现在栏的相同位置)。有效值为“顶部”和“底部”,这是默认值。使用 position 键,我们声明该栏应放置在屏幕的哪一侧。有效选项有:“上”、“下”、“左”、“右”。

height 和 spacing 键都采用整数值,分别指定栏的高度和模块之间的空间量。最后,modules_left、modules_center 和 modules_right 键让我们指定要在栏的相应部分中使用的模块。这些键中的每一个都接受一组模块名称作为值。

路栏模块

Waybar 附带了大量可供选择的模块。尽管不可能在本教程中看到所有这些内容,但我们至少看一下上面配置中包含的内容。

“摇摆/工作空间”模块

sway/workspaces 模块显示 Sway 窗口管理器中当前使用的工作区。默认情况下,仅显示工作区编号;但是,可以使用 format 键和可用的占位符来更改此设置。其中:

  • {value}:替换为 sway 配置中定义的整个工作区的名称
  • {name}:如果工作区名称以“:”格式指定,则替换为列右侧的值。例如,如果工作区名称为“1:TERMINAL”,则模块将显示:“TERMINAL”
  • {output}:替换为工作区所在的输出(例如 HDMI-A-2)

“摇摆/模式”模块

sway/mode 模块用于显示当前 Sway WM 模式(例如模式“resize”)。默认只是显示模式名称,对应如下配置:

"sway/mode": { 
  "format": "{}"
},

“摇摆/窗口”模块

sway/window 模块显示当前聚焦窗口的标题。默认配置通过使用“{title}”占位符作为 format 键的值来确保仅显示窗口的标题:

"sway/window": { 
  "format": "{title}"
}

其他可用的占位符是“{app_id}”,它被焦点应用程序的 ID 替换(例如:org.kde.ghostwriter),以及“{shell}”,它被焦点窗口的 shell 替换:“xwayland” Windows 使用 xwayland 或“xdg-shell”作为本机 Wayland 应用程序。

“空闲抑制器”模块

空闲抑制器模块可用于激活所谓的“演示模式”,其中涉及暂停屏幕消隐和锁定等节能活动。单击 Waybar 中显示的模块可切换演示模式状态。这是一个配置示例:

"idle_inhibitor": { 
  "format": "{icon}", 
  "format-icons": { 
    "activated": "\uf06e", 
    "deactivated": "\uf070" 
  } 
}

有两个占位符可以用作format的值:“{status}”,它被替换为表示空闲抑制器状态的字符串(“actived”与“deactivated”),以及“{icon}”,它被 format-icons 对象中定义的相应图标替换。

Font-awesome 字体提供了一系列非常漂亮的 unicode 图标,可以在 Waybar 中使用。这些字体通常打包在最常用的发行版的存储库中。例如,在 Debian 及其衍生版本上,该软件包称为“fonts-font-awesome”;在 Fedora 上,字体位于“fontawesome-fonts”包中,在 ArchLinux 上,它们被打包为“otf-font-awesome”。

在本教程的过程中,我们使用其 unicode 转义序列来表示图标,以确保您能够正确地可视化它们。但是,在您的配置中,您只需复制并粘贴相应的字符即可。

“CPU”模块

cpu 模块对于监视 CPU 利用率很有用。默认情况下,报告的数据每 10 秒更新一次,并且使用情况以百分比形式显示。这是通过 format 键使用“{usage}”占位符定义的:

"cpu": { 
  "interval": 10, 
  "format": "CPU: {usage}%" 
},

我们可以使用的其他一些占位符是:

  • {load}:替换为当前CPU负载
  • {avg_Frequency}:替换为所有核心的当前 CPU 平均频率(以 GHz 为单位)
  • {min_Frequency}:替换为最小最低核心频率(以 GHz 为单位)
  • {max_Frequency}:替换为最高频率核心的当前最大频率(GHz)

“记忆”模块

内存模块显示 RAM 和交换区使用情况。默认情况下,仅使用“{percentage}”占位符以百分比格式显示前者的状态。状态每 30 秒更新一次:

"memory": { 
  "interval": 30, 
  "format": "{percentage}%" 
},

通过使用其他一些可用的占位符,我们可以显示总可用内存量和交换使用情况。这是一个例子:

"memory": {
  "interval": 30,
  "format": "RAM: {used:0.1f}GiB/{total:0.1f}GiB ({percentage}%) SWAP: {swapUsed:0.1f}GiB/{swapTotal:0.1f}GiB ({swapPercentage}%)"
},

“{used}”占位符扩展为以 GiB 表示的已用内存量,而“{total}”则替换为总可用内存。 “{swapUsed}”和“{swapTotal}”占位符对于交换具有相同的作用。在占位符内,我们指定了格式化样式:“0.1f”格式化输出,以便仅显示单个十进制值,以提高可读性。

“电池”模块

电池模块显示当前可用的电池电量及其状态。以下是其配置示例:

"battery": {
  "bat": "BAT0",
  "states": {
    "good": 95,
    "warning": 30,
    "critical": 5
  },
  "format": "BAT0: {capacity}%",
  "format-charging": "BAT0: {capacity}% (charging)",
  "format-plugged": "BAT0: {capacity}% (plugged)",
},

bat 键用于指定模块应使用 /sys/proc/power_supply 中可用的电池监视器。如果此选项留空,则自动检测该值;如果您的机器有多个电池,您可能需要指定它。 states 键采用 JSON 对象作为值;其中的每个键值对代表一个状态和对应的费用百分比阈值。

我们可以使用 format-charging、format-plugged 和 format 键来定义电池充电时、交流电关闭时数据的格式化方式适配器已插入(插入适配器并不一定意味着电池正在充电:请参阅充电阈值),以及所有其他情况。

“时钟”模块

我们可以使用时钟模块来显示当前的日期和时间。默认情况下,输出中仅包含时间:

"clock": {
  "format": "{:%H:%M}"
},

要显示当前日期,我们可以使用以下配置:

"clock": {
  "format": "{:%Y/%m/%d %H:%M}",
},

要将小日历显示为工具提示,我们可以使用 tooltip-format 键,并为其指定以下值:

"clock": {
  "format": "{:%Y/%m/%d %H:%M}",
  "tooltip-format": "<tt><small>{calendar}</tt>",
},

可以使用calendar对象进一步自定义日历的样式。例如,要将月份名称涂成黄色,当前日期涂成红色,我们可以这样写:

"clock": {
  "format": "{:%Y/%m/%d %H:%M}",
  "tooltip-format": "<tt><small>{calendar}</tt>",
  "calendar": {
    "format": {
      "months": "<span color='#ffead3'><b>{}</b></span>",
      "today": "<span color='#ff6699'><b>{}</b></span>"
    }
  }
},

您几乎可以根据需要配置日历。模块的 GitHub 页面上显示了一些配置示例。

“pulseaudio”模块

脉冲音频模块报告有关当前脉冲音频音量的信息。默认配置仅显示音量百分比:

"pulseaudio": {
  "format": "{volume}%"
}

为了让事情看起来更好,我们可以在百分比值旁边显示一个图标。我们可以使用 format-icons 键根据音量级别(从低到高)定义要使用的图标:

"pulseaudio": { 
  "format": "{volume}% {icon}", 
  "format-icons": { 
    "default": ["\uf026", "\uf027", "\uf028"] 
  }  
},

通过在 Waybar 中的“pulseaudio”模块上滚动鼠标滚轮,可以提高和降低音量。如果有一种快速将音频完全静音的方法也很好。我们可以做到这一点,但指定一个“pactl”命令(pactl是一个控制Puseaudio服务器的实用程序),当“on-click”、“on-click-right”或“on-middle-click”事件之一发生时已注册。在下面的示例中,我们单击鼠标左键将音频静音,然后单击右键启动 pavucontrol:

"pulseaudio": {
  "format": "{volume}% {icon}",
  "format-muted": " {volume}%",
  "format-icons": {
    "default": ["\uf026", "\uf027", "\uf028"]
  },
  "on-click": "pactl set-sink-mute @DEFAULT_SINK@ toggle",
  "on-click-right": "pavucontrol"
},

最后,我们可能想要指定音频静音时要使用的格式。我们可以使用format-muted键来做到这一点:

"pulseaudio": {
  "format": "{icon} {volume}%",
  "format-icons": {
    "default": ["\uf026", "\uf027", "\uf028"]
  },
  "on-click": "pactl set-sink-mute @DEFAULT_SINK@ toggle",
  "on-click-right": "pavucontrol",
  "format-muted": "\uf00d {volume}%"
},

“托盘”模块

托盘栏是传统桌面体验的基本组成部分。有些应用程序被设计为在关闭时最小化在托盘中,如果没有它,就不可能获取它们的状态。 Waybar 通过“托盘”模块支持托盘功能。

我们可以在托盘模块配置中使用的一些键是:icons-size,它设置托盘中图标的大小,以及spacing,它定义空间图标之间。两个键均采用整数作为值。以下是典型的托盘配置:

"tray": {
  "icon-size": 20,
  "spacing": 10
}

把它们放在一起

当我们将所有元素放在一起时,完整的配置如下所示:

{
  "layer": "bottom",
  "position": "top",
  "height": 24,
  "spacing": 5,
  "modules-left": ["sway/workspaces","sway/mode"],
  "modules-center": ["sway/window"],
  "modules-right": ["idle_inhibitor","cpu","memory","battery","pulseaudio","clock","tray"],
  "sway/mode": {
    "format": "{}"
  },
  "sway/window": {
    "format": "{title}"
  },
  "idle_inhibitor": {
    "format": "{icon}",
    "format-icons": {
      "activated": "\uf06e",
      "deactivated": "\uf070"
    }
  },
  "cpu": { 
    "interval": 10, 
    "format": "CPU: {usage}%" 
  },
  "memory": {
    "interval": 30,
    "format": "RAM: {used:0.1f}GiB/{total:0.1f}GiB ({percentage}%) SWAP: {swapUsed:0.1f}GiB/{swapTotal:0.1f}GiB ({swapPercentage}%)"
  },
  "battery": {
    "bat": "BAT0",
    "states": {
      "good": 95,
      "warning": 30,
      "critical": 5
    },
    "format": "BAT0: {capacity}%",
    "format-charging": "BAT0: {capacity}% (charging)",
    "format-plugged": "BAT0: {capacity}% (plugged)",
  },
  "clock": {
    "format": "{:%Y/%m/%d %H:%M}",
    "tooltip-format": "<tt><small>{calendar}</tt>",
    "calendar": {
      "format": {
        "months": "<span color='#ffead3'><b>{}</b></span>",
        "today": "<span color='#ff6699'><b>{}</b></span>"
      }
    }
  },
  "pulseaudio": {
    "format": "{icon} {volume}%",
    "format-icons": {
      "default": ["\uf026", "\uf027", "\uf028"]
    },
    "on-click": "pactl set-sink-mute @DEFAULT_SINK@ toggle",
    "on-click-right": "pavucontrol",
    "format-muted": "\uf00d {volume}%"
  },
  "tray": {
    "icon-size": 20,
    "spacing": 10
  },
}

样式栏

我们可以使用以下 css 文件之一自定义 Waybar 的外观:

  • 〜/.config/waybar/style.css
  • 〜/waybar/style.css
  • /etc/xdg/waybar/style.css

我们可以使用选择器来引用栏的各种元素。让我们看一些例子。假设我们要设置waybar背景和文字颜色;我们将通过 ID 引用该栏:

#waybar { 
  background-color: #333333; 
  color: #ffffff; 
}

在另一个示例中,当演示模式处于活动状态时,我们定义“idle_inhibitor”模块的背景颜色(请参阅“.activated”类):

#idle_inhibitor.activated { 
  background-color: #285577; 
}

要全局设置字体系列及其大小,请改为:

*{ 
  font-family: FontAwesome, Roboto, Helvetica, Arial, sans-serif; 
  font-size: 13px; 
}

非常简单直观。模块的所有有效 CSS 类都列在模块页面上。举个例子,这是我当前应用的样式:

* {
    font-family: FontAwesome, Roboto, Helvetica, Arial, sans-serif;
    font-size: 13px;
}

#waybar {
    background-color: #333333;
    color: #ffffff;
}

button {
    box-shadow: inset 0 -3px transparent;
    border: none;
    border-radius: 0;
    padding: 0 5px;
}

#workspaces button {
    background-color: #5f676a;
    color: #ffffff;
}

#workspaces button:hover {
    background: rgba(0,0,0,0.2);
}

#workspaces button.focused {
    background-color: #285577;
}

#workspaces button.urgent {
    background-color: #900000;
}

#workspaces button.active {
    background-color: #285577;
}

#clock,
#battery,
#cpu,
#memory,
#pulseaudio,
#tray,
#mode,
#idle_inhibitor,
#window,
#workspaces {
    margin: 0 5px;
}


.modules-left > widget:first-child > #workspaces {
    margin-left: 0;
}


.modules-right > widget:last-child > #workspaces {
    margin-right: 0;
}

@keyframes blink {
    to {
        background-color: #ffffff;
        color: #000000;
    }
}

#battery.critical:not(.charging) {
    background-color: #f53c3c;
    color: #ffffff;
    animation-name: blink;
    animation-duration: 0.5s;
    animation-timing-function: linear;
    animation-iteration-count: infinite;
    animation-direction: alternate;
}

label:focus {
    background-color: #000000;
}

#tray > .passive {
    -gtk-icon-effect: dim;
}

#tray > .needs-attention {
    -gtk-icon-effect: highlight;
    background-color: #eb4d4b;
}

#idle_inhibitor {
    font-size: 15px;
    background-color: #333333;
    padding: 5px;
}

#idle_inhibitor.activated {
    background-color: #285577;
}

这是生成的 Waybar 的样子。没什么太奇特的,确实很丑,但希望它能给你一个总体的想法。定制的限制几乎是你的创造力:

结论

在本教程中,我们了解了如何在 Linux 上安装、配置和自定义 Waybar。 Waybar 是一个非常强大的 Wayland 栏,适用于 Sway 等基于 Wlroots 的合成器。我们了解了如何创建一个简单的配置文件、如何使用 Waybar 中集成的一些模块,以及最后如何使用 CSS 样式表设置栏的样式。如果您是第一次使用 Waybar,为了避免从头开始配置,您可以将安装为 /etc/xdg/waybar/config 的系统范围配置文件复制到 ~/.config/waybar 下,并将其用作一个起点。

©2015-2025 Norria support@alaica.com