如何在Fedora上安装Polybar状态栏
时间:2020-02-23 14:33:20 来源:igfitidea点击:
Polybar是一个创建的工具,以帮助用户构建美丽且高度可自定义的状态栏,大多数用户运行窗口经理应该知道这个工具。
PolyBar可以配置为替换传统桌面环境,而不会掌握shell脚本。
本教程将通过安装和配置Polybar状态栏的步骤来步行,以便在Fedora工作站上使用i3WM。
Polybar的特征
通过安装/构建PolyBar,我们将在状态栏上设置以下服务。
Systray IconsWindow标题播放控制和状态显示MPD的MPD使用libmpdclientalsa volument controlsworkspace和桌面面板为bspwm和i3workspace模块,用于ewmh兼容窗口经理管理器,指示器statuscpu和记忆负载指示灯DateNation National Displaynet连接详细信息Walklight和时间基于标签时间的shell脚本executioncommand输出DialingUser定义菜单Treeinter-Process Messaging和更多...
第1步:安装开发工具。
对于Fedora Systems,存储库中不可用PolyBar包。
我们将从来源构建它,因此需要开发工具。
sudo dnf install -y @development-tools cmake gcc-c++ autoconf automake
安装I3,音量控制,MPD,网络,GitHub 等的构建依赖项。
sudo dnf install xcb-util-xrm-devel xcb-proto xcb-util-devel xcb-util-wm-devel xcb-util-cursor-devel xcb-util-image-devel alsa-lib-devel pulseaudio-libs-devel i3-ipc i3-devel jsoncpp-devel libmpdclient-devel libcurl-devel wireless-tools-devel libnl3-devel cairo-devel
第2步:下载最新的PolyBar源。
在安装依赖项后,通过克隆Github存储库下载最新版本PolyBar。
cd /tmp git clone --recursive https://github.com/polybar/polybar
要编译和安装polybar,请运行以下命令:
cd polybar sudo ./build.sh
我们应该获得类似的
** Fetching submodules ** A build dir already exists (pass -f to replace) ** Setting build options ** Use GCC even if Clang is installed ----------------------------- [y/N]: y ** Include support for "internal/i3" (requires i3) ---------------- [y/N]: ** Include support for "internal/alsa" (requires alsalib) --------- [y/N]: y ** Include support for "internal/pulseaudio" (requires libpulse) -- [y/N]: y ** Include support for "internal/network" (requires libnl/libiw) -- [y/N]: y ** Include support for "internal/mpd" (requires libmpdclient) ----- [y/N]: y ** Include support for "internal/github" (requires libcurl) ------- [y/N]: y ** Build "polybar-msg" used to send ipc messages ------------------ [y/N]: y ** Executing cmake command -- Trying to enable ccache -- Couldn't locate ccache, disabling ccache... -- The CXX compiler identification is GNU 9.1.1 -- Check for working CXX compiler: /usr/bin/g++ -- Check for working CXX compiler: /usr/bin/g++ -- works -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done y-- Detecting CXX compile features -- Detecting CXX compile features - done -- No build type specified; using Release -- Using supported compiler GNU-9.1.1 -- Found PkgConfig: /usr/bin/pkg-config (found version "1.6.1") -- Looking for C++ include pthread.h -- Looking for C++ include pthread.h - found -- Looking for pthread_create -- Looking for pthread_create - not found -- Check if compiler accepts -pthread -- Check if compiler accepts -pthread - yes -- Found Threads: TRUE -- Checking for module 'cairo-fc' -- Found cairo-fc, version 1.16.0 -- Checking for module 'alsa' -- Found alsa, version 1.1.9 -- Checking for module 'libcurl' -- Found libcurl, version 7.64.0 -- Checking for module 'libmpdclient' -- Found libmpdclient, version 2.14 -- Checking for module 'libnl-genl-3.0' -- Found libnl-genl-3.0, version 3.4.0 -- Checking for module 'libpulse' -- Found libpulse, version 12.2-rebootstrapped -- Checking for module 'xcb-composite' -- Found xcb-composite, version 1.13.1 -- Checking for module 'xcb-xkb' -- Found xcb-xkb, version 1.13.1 -- Checking for module 'xcb-randr' -- Found xcb-randr, version 1.13.1 -- Checking for module 'xcb-randr>=1.12' -- Found xcb-randr, version 1.13.1 -- Checking for module 'xcb-xrm' -- Found xcb-xrm, version 1.3 -- Checking for module 'xcb-cursor' -- Found xcb-cursor, version 0.1.3 -- Build: -- Version: 3.3.0-98-gc650513 -- Type: Release -- CXX: /usr/bin/g++ -Wall -Wextra -Wpedantic -O2 -DNDEBUG -- LD: /usr/bin/ld -- Targets: -- [X] polybar-msg -- [ ] testsuite -- [ ] documentation -- Module support: -- [X] alsa (1.1.9) -- [X] curl (7.64.0) -- [ ] i3 -- [X] mpd (2.14) -- [X] network (libnl) (3.4.0) -- [X] pulseaudio (12.2-rebootstrapped) -- [X] xkeyboard (1.13.1) -- X extensions: -- [X] xcb-randr (1.13.1) -- [X] xcb-randr (monitor support) (1.13.1) -- [X] xcb-composite (1.13.1) -- [X] xcb-xkb (1.13.1) -- [X] xcb-xrm (1.3) -- [X] xcb-cursor (0.1.3) -- Log options: -- [X] Trace logging -- The C compiler identification is GNU 9.1.1 -- Check for working C compiler: /usr/bin/cc -- Check for working C compiler: /usr/bin/cc -- works -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Detecting C compile features -- Detecting C compile features - done -- Checking for module 'xcb-proto' -- Found xcb-proto, version 1.13 -- Found PythonInterp: /usr/bin/python2.7 (found suitable version "2.7.16", minimum required is "2.7") -- XCB[XCB]: Found component XCB -- Found XCB_XCB: /usr/lib64/libxcb.so -- XCB[ICCCM]: Found component ICCCM -- Found XCB_ICCCM: /usr/lib64/libxcb-icccm.so -- XCB[EWMH]: Found component EWMH -- Found XCB_EWMH: /usr/lib64/libxcb-ewmh.so -- XCB[UTIL]: Found component UTIL -- Found XCB_UTIL: /usr/lib64/libxcb-util.so -- XCB[IMAGE]: Found component IMAGE -- Found XCB_IMAGE: /usr/lib64/libxcb-image.so -- Found XCB: /usr/lib64/libxcb.so;/usr/lib64/libxcb-icccm.so;/usr/lib64/libxcb-ewmh.so;/usr/lib64/libxcb-util.so;/usr/lib64/libxcb-image.so -- Searching for xcbgen with python2 -- Searching for xcbgen with python2.7 -- Searching for xcbgen with python3 -- Found xcbgen in /usr/lib/python3.7/site-packages -- XCB[RANDR]: Found component RANDR -- Found XCB_RANDR: /usr/lib64/libxcb-randr.so -- Found XCB: /usr/lib64/libxcb.so;/usr/lib64/libxcb-icccm.so;/usr/lib64/libxcb-ewmh.so;/usr/lib64/libxcb-util.so;/usr/lib64/libxcb-image.so;/usr/lib64/libxcb-randr.so -- XCB[COMPOSITE]: Found component COMPOSITE -- Found XCB_COMPOSITE: /usr/lib64/libxcb-composite.so -- Found XCB: /usr/lib64/libxcb.so;/usr/lib64/libxcb-icccm.so;/usr/lib64/libxcb-ewmh.so;/usr/lib64/libxcb-util.so;/usr/lib64/libxcb-image.so;/usr/lib64/libxcb-randr.so;/usr/lib64/libxcb-composite.so -- XCB[XKB]: Found component XKB -- Found XCB_XKB: /usr/lib64/libxcb-xkb.so -- Found XCB: /usr/lib64/libxcb.so;/usr/lib64/libxcb-icccm.so;/usr/lib64/libxcb-ewmh.so;/usr/lib64/libxcb-util.so;/usr/lib64/libxcb-image.so;/usr/lib64/libxcb-randr.so;/usr/lib64/libxcb-composite.so;/usr/lib64/libxcb-xkb.so -- xpp: including xcb proto composite.xml -- xpp: including xcb proto randr.xml -- xpp: including xcb proto xkb.xml -- xpp: including xcb proto xproto.xml -- Font not found: fixed:pixelsize=10 -- Font not found: unifont:fontformat=truetype -- Font not found: siji:pixelsize=10 -- Configuring done -- Generating done -- Build files have been written to: /home/jmutai/Downloads/polybar/build ** Building project [ 1%] Generating ../../../lib/xpp/include/xpp/proto/x.hpp [ 2%] Generating ../../../lib/xpp/include/xpp/proto/composite.hpp [ 3%] Generating ../../../lib/xpp/include/xpp/proto/randr.hpp list: size, ['red', 'green', 'blue'] list: size, ['red', 'green', 'blue'] [ 4%] Generating ../../../lib/xpp/include/xpp/proto/xkb.hpp Scanning dependencies of target xpp [ 5%] Linking CXX static library libxpp.a [ 5%] Built target xpp Scanning dependencies of target poly [ 6%] Building CXX object bin/CMakeFiles/poly.dir/adapters/alsa/control.cpp.o [ 7%] Building CXX object bin/CMakeFiles/poly.dir/adapters/alsa/mixer.cpp.o [ 8%] Building CXX object bin/CMakeFiles/poly.dir/adapters/mpd.cpp.o [ 9%] Building CXX object bin/CMakeFiles/poly.dir/adapters/net.cpp.o [ 10%] Building CXX object bin/CMakeFiles/poly.dir/adapters/net_nl.cpp.o [ 12%] Building CXX object bin/CMakeFiles/poly.dir/adapters/pulseaudio.cpp.o [ 13%] Building CXX object bin/CMakeFiles/poly.dir/cairo/utils.cpp.o [ 14%] Building CXX object bin/CMakeFiles/poly.dir/components/bar.cpp.o [ 15%] Building CXX object bin/CMakeFiles/poly.dir/components/builder.cpp.o [ 16%] Building CXX object bin/CMakeFiles/poly.dir/components/command_line.cpp.o [ 17%] Building CXX object bin/CMakeFiles/poly.dir/components/config.cpp.o [ 18%] Building CXX object bin/CMakeFiles/poly.dir/components/controller.cpp.o [ 19%] Building CXX object bin/CMakeFiles/poly.dir/components/ipc.cpp.o [ 20%] Building CXX object bin/CMakeFiles/poly.dir/components/logger.cpp.o [ 21%] Building CXX object bin/CMakeFiles/poly.dir/components/parser.cpp.o [ 23%] Building CXX object bin/CMakeFiles/poly.dir/components/renderer.cpp.o [ 24%] Building CXX object bin/CMakeFiles/poly.dir/components/screen.cpp.o [ 25%] Building CXX object bin/CMakeFiles/poly.dir/components/taskqueue.cpp.o [ 26%] Building CXX object bin/CMakeFiles/poly.dir/drawtypes/animation.cpp.o [ 27%] Building CXX object bin/CMakeFiles/poly.dir/drawtypes/iconset.cpp.o [ 28%] Building CXX object bin/CMakeFiles/poly.dir/drawtypes/label.cpp.o [ 29%] Building CXX object bin/CMakeFiles/poly.dir/drawtypes/progressbar.cpp.o [ 30%] Building CXX object bin/CMakeFiles/poly.dir/drawtypes/ramp.cpp.o [ 31%] Building CXX object bin/CMakeFiles/poly.dir/events/signal_emitter.cpp.o [ 32%] Building CXX object bin/CMakeFiles/poly.dir/events/signal_receiver.cpp.o [ 34%] Building CXX object bin/CMakeFiles/poly.dir/modules/alsa.cpp.o [ 35%] Building CXX object bin/CMakeFiles/poly.dir/modules/backlight.cpp.o [ 36%] Building CXX object bin/CMakeFiles/poly.dir/modules/battery.cpp.o [ 37%] Building CXX object bin/CMakeFiles/poly.dir/modules/bspwm.cpp.o [ 38%] Building CXX object bin/CMakeFiles/poly.dir/modules/counter.cpp.o [ 39%] Building CXX object bin/CMakeFiles/poly.dir/modules/cpu.cpp.o [ 40%] Building CXX object bin/CMakeFiles/poly.dir/modules/date.cpp.o [ 41%] Building CXX object bin/CMakeFiles/poly.dir/modules/fs.cpp.o [ 42%] Building CXX object bin/CMakeFiles/poly.dir/modules/github.cpp.o [ 43%] Building CXX object bin/CMakeFiles/poly.dir/modules/ipc.cpp.o [ 45%] Building CXX object bin/CMakeFiles/poly.dir/modules/memory.cpp.o [ 46%] Building CXX object bin/CMakeFiles/poly.dir/modules/menu.cpp.o [ 47%] Building CXX object bin/CMakeFiles/poly.dir/modules/meta/base.cpp.o [ 48%] Building CXX object bin/CMakeFiles/poly.dir/modules/mpd.cpp.o [ 49%] Building CXX object bin/CMakeFiles/poly.dir/modules/network.cpp.o [ 50%] Building CXX object bin/CMakeFiles/poly.dir/modules/pulseaudio.cpp.o [ 51%] Building CXX object bin/CMakeFiles/poly.dir/modules/script.cpp.o [ 52%] Building CXX object bin/CMakeFiles/poly.dir/modules/systray.cpp.o [ 53%] Building CXX object bin/CMakeFiles/poly.dir/modules/temperature.cpp.o [ 54%] Building CXX object bin/CMakeFiles/poly.dir/modules/text.cpp.o [ 56%] Building CXX object bin/CMakeFiles/poly.dir/modules/xbacklight.cpp.o [ 57%] Building CXX object bin/CMakeFiles/poly.dir/modules/xkeyboard.cpp.o [ 58%] Building CXX object bin/CMakeFiles/poly.dir/modules/xwindow.cpp.o [ 59%] Building CXX object bin/CMakeFiles/poly.dir/modules/xworkspaces.cpp.o [ 60%] Building CXX object bin/CMakeFiles/poly.dir/utils/bspwm.cpp.o [ 61%] Building CXX object bin/CMakeFiles/poly.dir/utils/command.cpp.o [ 62%] Building CXX object bin/CMakeFiles/poly.dir/utils/concurrency.cpp.o [ 63%] Building CXX object bin/CMakeFiles/poly.dir/utils/env.cpp.o [ 64%] Building CXX object bin/CMakeFiles/poly.dir/utils/factory.cpp.o [ 65%] Building CXX object bin/CMakeFiles/poly.dir/utils/file.cpp.o [ 67%] Building CXX object bin/CMakeFiles/poly.dir/utils/http.cpp.o [ 68%] Building CXX object bin/CMakeFiles/poly.dir/utils/inotify.cpp.o [ 69%] Building CXX object bin/CMakeFiles/poly.dir/utils/io.cpp.o [ 70%] Building CXX object bin/CMakeFiles/poly.dir/utils/process.cpp.o [ 71%] Building CXX object bin/CMakeFiles/poly.dir/utils/socket.cpp.o [ 72%] Building CXX object bin/CMakeFiles/poly.dir/utils/string.cpp.o [ 73%] Building CXX object bin/CMakeFiles/poly.dir/utils/throttle.cpp.o [ 74%] Building CXX object bin/CMakeFiles/poly.dir/x11/atoms.cpp.o [ 75%] Building CXX object bin/CMakeFiles/poly.dir/x11/background_manager.cpp.o [ 76%] Building CXX object bin/CMakeFiles/poly.dir/x11/connection.cpp.o [ 78%] Building CXX object bin/CMakeFiles/poly.dir/x11/cursor.cpp.o [ 79%] Building CXX object bin/CMakeFiles/poly.dir/x11/ewmh.cpp.o [ 80%] Building CXX object bin/CMakeFiles/poly.dir/x11/extensions/composite.cpp.o [ 81%] Building CXX object bin/CMakeFiles/poly.dir/x11/extensions/randr.cpp.o [ 82%] Building CXX object bin/CMakeFiles/poly.dir/x11/extensions/xkb.cpp.o [ 83%] Building CXX object bin/CMakeFiles/poly.dir/x11/icccm.cpp.o [ 84%] Building CXX object bin/CMakeFiles/poly.dir/x11/registry.cpp.o [ 85%] Building CXX object bin/CMakeFiles/poly.dir/x11/tray_client.cpp.o [ 86%] Building CXX object bin/CMakeFiles/poly.dir/x11/tray_manager.cpp.o [ 87%] Building CXX object bin/CMakeFiles/poly.dir/x11/window.cpp.o [ 89%] Building CXX object bin/CMakeFiles/poly.dir/x11/winspec.cpp.o [ 90%] Building CXX object bin/CMakeFiles/poly.dir/x11/xembed.cpp.o [ 91%] Building CXX object bin/CMakeFiles/poly.dir/x11/xresources.cpp.o [ 92%] Linking CXX static library libpoly.a [ 92%] Built target poly Scanning dependencies of target polybar [ 93%] Building CXX object bin/CMakeFiles/polybar.dir/main.cpp.o [ 94%] Linking CXX executable polybar [ 94%] Built target polybar Scanning dependencies of target polybar-msg [ 95%] Building CXX object bin/CMakeFiles/polybar-msg.dir/ipc.cpp.o [ 96%] Building CXX object bin/CMakeFiles/polybar-msg.dir/utils/env.cpp.o [ 97%] Building CXX object bin/CMakeFiles/polybar-msg.dir/utils/file.cpp.o [ 98%] Building CXX object bin/CMakeFiles/polybar-msg.dir/utils/string.cpp.o [100%] Linking CXX executable polybar-msg [100%] Built target polybar-msg ** Execute 'sudo make install'? [Y/n] ** Install example configuration? [y/N]: y [ 5%] Built target xpp [ 92%] Built target poly [ 94%] Built target polybar [100%] Built target polybar-msg Install the project... -- Install configuration: "Release" -- Installing: /usr/local/share/doc/polybar/config -- Installing: /usr/local/share/bash-completion/completions/polybar -- Installing: /usr/local/share/zsh/site-functions/_polybar -- Installing: /usr/local/share/zsh/site-functions/_polybar_msg -- Installing: /usr/local/bin/polybar -- Installing: /usr/local/bin/polybar-msg [ 5%] Built target xpp [ 97%] Built target poly [100%] Built target polybar Scanning dependencies of target userconfig -- Installing: /root/.config/polybar/config [100%] Built target userconfig ** Build complete!
第3步:确认Polybar安装
确认Polybar安装和功能可用。
$which polybar /usr/local/bin/polybar $polybar --version polybar 3.3.0-98-gc650513 Features: +alsa +curl -i3 +mpd +network(libnl) +pulseaudio +xkeyboard
第4步:安装字体
在Fedora上安装字体:
# Powerline fonts/Fontawesome sudo dnf install powerline-fonts fontawesome-fonts # FiraCode font dnf copr enable evana/fira-code-fonts dnf install fira-code-fonts
配置Polybar.
我建议我们访问Polybar文档页面以了解其不同环境的配置。
下面是我的i3WM的PolyBar配置 - 路径:~/.config/polybar/config
;=====================================================
;
; To learn more about how to configure Polybar
; go to https://github.com/jaagr/polybar
;
; The README contains alot of information
;
;=====================================================
[colors]
background = #ee2f343f
background-alt = #f72f343f
foreground = #f3f4f5
foreground-alt = #f3f4f5
foreground-dim = #676e7d
primary = #ffb52a
secondary = #e60053
alert = #ff6600
high = #268bd2
high-alt = #0c2b41
; other colors
black = #000000
red = #E06C75
green = #98C379
orange = #D19A66
blue = #61AEEE
magenta = #C678DD
cyan = #56B6C2
lightgray = #ABB2BF
darkgray = #5C6370
white = #FFFFFF
[bar/main]
;monitor = ${env:MONITOR:HDMI-1}
;bottom = true
override-redirect = true
wm-restack = i3
width = 100%
height = 18
offset-x = 0
offset-y = 0
;radius = 6.0
;fixed-center = false
overline-size = 2
overline-color = #f00
underline-size = 2
underline-color = ${colors.high}
background = ${colors.background}
foreground = ${colors.foreground}
line-size = 3
line-color = #f00
border-size = 4
border-color = #00000000
padding-left = 0
padding-right = 2
module-margin-left = 0
module-margin-right = 2
;font-0 = fixed:pixelsize=10;1
;font-1 = unifont:fontformat=truetype:size=8:antialias=false;0
font-0 = Monaco:size=8:weight=bold
font-1 = FontAwesome:size=11
font-2 = siji:pixelsize=10;1
;modules-left = menu i3 xwindow
;modules-left = menu i3 xwindow
;modules-left = i3
modules-center = mpd
modules-right = fsroot fshome xkeyboard memory cpu xbacklight volume wlan eth battery temperature date powermenu
tray-position = right
tray-padding = 2
;tray-transparent = true
;tray-background = #0063ff
;wm-restack = bspwm
;wm-restack = i3
;override-redirect = true
;scroll-up = bspwm-desknext
;scroll-down = bspwm-deskprev
;scroll-up = i3wm-wsnext
;scroll-down = i3wm-wsprev
[module/xwindow]
type = internal/xwindow
;label = %title:0:30:...%
label = %title:0:30:...% %{B- -o -u}
[module/xkeyboard]
type = internal/xkeyboard
blacklist-0 = num lock
format-prefix = " "
format-underline = ${colors.secondary}
format-prefix-foreground = ${colors.foreground-alt}
label-layout = %layout%
label-indicator-padding = 2
label-indicator-background = ${colors.secondary}
label-indicator-underline = ${colors.secondary}
#[module/filesystem]
#type = internal/fs
#interval = 25
##mount-0 = /
#mount-1 = /home
##label-mounted = %{F#0a81f5}%mountpoint%%{F-}: %free%
#;label-mounted = %mountpoint%: %percentage_free%% of %total%
#label-unmounted = %mountpoint% not mounted
#label-unmounted-foreground = ${colors.foreground-alt}
[module/bspwm]
type = internal/bspwm
label-focused = %name%
label-focused-background = ${colors.background-alt}
label-focused-underline= ${colors.primary}
label-focused-padding = 2
label-occupied = %name%
label-occupied-padding = 2
label-urgent = %name%!
label-urgent-background = ${colors.alert}
label-urgent-padding = 2
label-empty = %name%
label-empty-foreground = ${colors.foreground-alt}
label-empty-padding = 2
[module/i3]
type = internal/i3
format = <label-state> <label-mode>
name-sort = true
strip-wsnumbers = true ;This will split the workspace name on ':'
ws-icon-0 = 1;
ws-icon-1 = 2;
ws-icon-2 = 3;
ws-icon-3 = 4;
ws-icon-4 = 5;
ws-icon-5 = 6;
ws-icon-6 = 7;
ws-icon-default = ♟
; Only show workspaces on the same output as the bar
;pin-workspaces = true
label-mode-padding = 2
label-mode-foreground = #000
label-mode-background = ${colors.primary}
; focused = Active workspace on focused monitor
label-focused = %name%
label-focused-background = ${module/bspwm.label-focused-background}
label-focused-underline = ${module/bspwm.label-focused-underline}
label-focused-padding = ${module/bspwm.label-focused-padding}
; unfocused = Inactive workspace on any monitor
label-unfocused = %name%
label-unfocused-padding = ${module/bspwm.label-occupied-padding}
; visible = Active workspace on unfocused monitor
label-visible = %name%
label-visible-background = ${self.label-focused-background}
label-visible-underline = ${self.label-focused-underline}
label-visible-padding = ${self.label-focused-padding}
; urgent = Workspace with urgency hint set
label-urgent = %name%
label-urgent-background = ${module/bspwm.label-urgent-background}
label-urgent-padding = ${module/bspwm.label-urgent-padding}
;
[module/mpd]
type = internal/mpd
format-online = <icon-prev> <toggle> <icon-next> <icon-random> <icon-repeat> <label-time>
format-offline = <label-offline>
label-offline = no music
icon-prev =
icon-stop = o
icon-play =
icon-pause =
icon-next =
icon-seekf = >>
icon-random =
icon-repeat =
;label-song =

