Вопрос или проблема
Я только что перешел с панели i3 по умолчанию на использование polybar (работает на Fedora 30, i3-gaps). Я установил polybar, следуя этому руководству: https://computingforgeeks.com/install-polybar-status-bar-on-fedora/.
Я сначала попробовал запустить конфигурацию по умолчанию для polybar, и она заработала, за исключением того, что ничего не было слева, где должны быть рабочие пространства. Я немного поиграл с настройками, чтобы попытаться это исправить, но никто на форумах, с которыми я столкнулся, не имел похожей ситуации.
В итоге я скопировал конфигурацию polybar, приведенную в этом ответе, так как они, похоже, настроили свои рабочие пространства в конфигурации i3 так же, как у меня: https://computingforgeeks.com/install-polybar-status-bar-on-fedora/, но результат был тот же – никаких модулей рабочего пространства не появлялось на моем polybar.
Мой конфигурационный файл polybar:
[global/wm]
margin-top = 100
margin-bottom = 100
[colors]
fg = ${xrdb:color7}
modfg = ${xrdb:color1}
bg = ${xrdb:color0}
white = #d1d1d1
gray = #585858
black = #ce1d1d1d
red = #c795ae
blue = #95aec7
yellow = #c7ae95
green = #aec795
[bar/bar1]
width = 100%
height = 41
top = true
;margin-top = 100
border-top-size = 1 # создание верхнего пространства границы
offset-y = -3 # выравнивание значков подноса с остальной частью панели
monitor = ${env:MONITOR:}
;background = #141021
background = #000f0f0f # Это шестнадцатеричный код для прозрачности (также используется в меню питания)
foreground = #c4b7c5
fixed-center = false
font-0 = FontAwesome:pixelsize=10;0
font-1 = PragmataPro Nerd Font:pixelsize=10;0
font-2 = "Font Awesome 5 Free:style=Regular:pixelsize=10;1"
font-3 = "Font Awesome 5 Free:style=Solid:pixelsize=10;1"
font-4 = "Font Awesome 5 Brands:pixelsize=10;1"
modules-left = i3
modules-center = date
modules-right = wireless-network cpu memory filesystem temperature pulseaudio backlight battery powermenu
tray-position = right
;tray-maxsize = 41
tray-background = #000f0f0f
tray-foreground= #000f0f0f
scroll-up = i3wm-wsnext
scroll-down = i3wm-wsprev
overline-size = 2
overline-color = ${colors.white}
underline-size = 4
underline-color = ${colors.white}
;override-redirect = true
;wm-restack = i3
[module/i3]
type = internal/i3
pin-workspaces = false
strip-wsnumbers = true
index-sort = false
enable-scroll = false
format = <label-state>
format-padding-right = 2
label-unfocused-foreground = #8a7f8f
label-unfocused-padding = 1
label-focused-foreground = #c16772
label-focused-padding = 1
label-urgent-foreground = #e4b226
label-urgent-padding = 1
[module/filesystem]
type = internal/fs
; Точки монтирования для отображения
mount-0 = /
label-mounted = %free%
format-mounted-padding = 2
; Секунды ожидания между обновлениями
; По умолчанию: 30
; interval = 10
; Отображение фиксированных значений точности
; По умолчанию: false
fixed-values = true
; Интервал между записями
; По умолчанию: 2
spacing = 6
[module/filesystem2]
type = internal/fs
; Точки монтирования для отображения
mount-0 = /media/<my_name>/Data
label-mounted = %free%
format-mounted-padding = 2
; Секунды ожидания между обновлениями
; По умолчанию: 30
; interval = 10
; Отображение фиксированных значений точности
; По умолчанию: false
fixed-values = true
; Интервал между записями
; По умолчанию: 2
spacing = 6
[module/cpu]
type = internal/cpu
interval = 1
format = <label>
format-padding = 2
label = %percentage%%
[module/memory]
type = internal/memory
interval = 1
format = <label>
format-padding = 2
label = %gb_used% (%percentage_used%%)
[module/temperature]
type = internal/temperature
interval = 1
thermal-zone = 0
warn-temperature = 74
format = <ramp> <label>
format-padding = 2
format-warn = <ramp> <label-warn>
format-warn-padding = 2
label = %temperature-c%
label-warn = %temperature-c%
label-warn-foreground = #e4b226
ramp-0 =
ramp-1 =
ramp-2 =
ramp-3 =
ramp-4 =
[module/date]
type = internal/date
interval = 1
date = %a %b %d,
time = %H:%M:%S
date-alt = %A, %d %B %Y
time-alt = %H:%M:%S
format = <label>
format-padding = 2
label = %date% %time%
[module/battery]
; Примечание - если батарея не отображается, попробуйте BAT0 или BAT1 и т.д.
type = internal/battery
full-at = 95
battery = BAT1
adapter = ACAD
poll-interval = 5
format-charging = <animation-charging> <label-charging>
format-charging-padding = 2
format-discharging = <ramp-capacity> <label-discharging>
format-discharging-padding = 2
format-full = <ramp-capacity> <label-full>
format-full-padding = 2
label-charging = %percentage%%
label-discharging = %percentage%%
label-full = %percentage%%
ramp-capacity-0 =
ramp-capacity-1 =
ramp-capacity-2 =
ramp-capacity-3 =
ramp-capacity-4 =
animation-charging-0 =
animation-charging-1 =
animation-charging-2 =
animation-charging-3 =
animation-charging-4 =
animation-charging-framerate = 500
[module/backlight]
type = internal/backlight
card = intel_backlight
format = <label>
format-padding = 2
label = %percentage%%
[module/pulseaudio]
type = internal/pulseaudio
; Список выходов через `pactl list sinks` и посмотрите на поле Name
sink = alsa_output.pci-0000_00_1b.0.analog-stereo
;interval = 1
format-volume-padding = 2
format-volume = <ramp-volume> <label-volume>
ramp-volume-0 =
ramp-volume-1 =
ramp-volume-2 =
format-muted-padding = 2
label-muted = 0%
[module/powermenu]
type = custom/menu
label-open =
label-close = cancel
label-close-background = #000f0f0f
label-close-foreground = #ffeefc
label-open-padding-left = 4
label-open-padding-right = 3
label-close-padding = 3
menu-0-0 = lock
menu-0-0-exec = ~/scripts/lock.sh
menu-0-0-background = #000f0f0f
menu-0-0-foreground = #c05c47
menu-0-0-padding-right = 3
menu-0-1 = reboot
menu-0-1-exec = menu-open-1
menu-0-1-background = #000f0f0f
menu-0-1-foreground = #c05c47
menu-0-1-padding-right = 3
menu-0-2 = power off
menu-0-2-exec = menu-open-2
menu-0-2-background = #000f0f0f
menu-0-2-foreground = #c05c47
menu-0-2-padding-right = 3
menu-1-0 = reboot?
menu-1-0-exec = reboot
menu-1-0-background = #000f0f0f
menu-1-0-foreground = #e4b226
menu-1-0-padding-right = 3
menu-2-0 = power off?
menu-2-0-exec = poweroff
menu-2-0-background = #000f0f0f
menu-2-0-foreground = #e4b226
menu-2-0-padding-right = 3
[module/wireless-network]
type = internal/network
; Посмотрите на ifconfig для интерфейса
interface = wlo1
format-connected = <label-connected>
format-connected-padding = 2
format-disconnected = <label-disconnected>
format-disconnected-padding = 2
label-connected = %essid%
label-disconnected = None
И моя конфигурация i3:
# Этот файл был автоматически сгенерирован i3-config-wizard(1).
# Он не будет переписан, так что редактируйте его по своему усмотрению.
#
# Если вы когда-либо измените раскладку клавиатуры, удалите
# этот файл и снова запустите i3-config-wizard(1).
#
# Конфигурационный файл i3 (v4)
#
# Пожалуйста, смотрите https://i3wm.org/docs/userguide.html для полного справочника!
set $mod Mod4
# Шрифт для заголовков окон. Также будет использоваться панелью, если в блоке панели {}
# используется другой шрифт.
font pango:System San Francisco Display 10
# Этот шрифт широко установлен, предоставляет множество юникодных глифов, рендеринг текста справа налево
# и масштабируемость на дисплеях retina/hidpi (благодаря pango).
#font pango:DejaVu Sans Mono 8
# До версии i3 v4.8 мы рекомендовали этот шрифт как стандартный:
# font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
# Шрифт выше очень экономит пространство, т.е. выглядит хорошо, четко и
# ясно в маленьких размерах. Однако его покрытие юникодных глифов ограничено, старый
# рендеринг шрифтов X не поддерживает рендеринг справа налево, и так как это
# растровый шрифт, он не масштабируется на дисплеях retina/hidpi.
# Используйте Mouse+$mod, чтобы перетаскивать плавающие окна в нужное место
floating_modifier $mod
# запустить терминал
bindsym $mod+Return exec gnome-terminal #i3-sensible-terminal
# запустить браузер
bindsym $mod+numbersign exec firefox
# закрыть активное окно
bindsym $mod+Shift+q kill
# запустить dmenu (запускатель программ)
bindsym $mod+d exec dmenu_run
# Также есть (новый) i3-dmenu-desktop, который отображает только приложения
# с файлами .desktop. Это обертка вокруг dmenu, поэтому вам нужно установить
# его.
# bindsym $mod+d exec --no-startup-id i3-dmenu-desktop
# изменить фокус
bindsym $mod+j focus left
bindsym $mod+k focus down
bindsym $mod+l focus up
bindsym $mod+semicolon focus right
# альтернативно, вы можете использовать клавиши курсора:
bindsym $mod+Left focus left
bindsym $mod+Down focus down
bindsym $mod+Up focus up
bindsym $mod+Right focus right
# переместить активное окно
bindsym $mod+Shift+j move left
bindsym $mod+Shift+k move down
bindsym $mod+Shift+l move up
bindsym $mod+Shift+semicolon move right
# альтернативно, вы можете использовать клавиши курсора:
bindsym $mod+Shift+Left move left
bindsym $mod+Shift+Down move down
bindsym $mod+Shift+Up move up
bindsym $mod+Shift+Right move right
# разделить в горизонтальной ориентации
bindsym $mod+h split h
# разделить в вертикальной ориентации
bindsym $mod+v split v
# перейти в полноэкранный режим для активного контейнера
bindsym $mod+f fullscreen toggle
# изменить макет контейнера (накопленный, вкладочный, переключение разделения)
bindsym $mod+s layout stacking
bindsym $mod+w layout tabbed
bindsym $mod+e layout toggle split
# переключить плитку / плавающее
bindsym $mod+Shift+space floating toggle
# изменить фокус между окон верхнего/плавающего
bindsym $mod+space focus mode_toggle
# фокус на родительский контейнер
bindsym $mod+a focus parent
# фокус на дочерний контейнер
#bindsym $mod+d focus child
# Определите имена для рабочих пространств по умолчанию, для которых мы позже настраиваем сочетания клавиш.
# Мы используем переменные, чтобы избежать повторения названий в нескольких местах.
set $ws1 "1:"
set $ws2 "2:"
set $ws3 "3:"
set $ws4 "4:"
#set $ws5 "5:<span font="SVGFont1 12" rise="-2000">a</span>"
set $ws6 "6:"
set $ws7 "7:"
set $ws8 "8:"
set $ws9 "9:"
set $ws10 "10:"
set $ws11 "11:"
#set $ws1 "1"
#set $ws2 "2"
#set $ws3 "3"
#set $ws4 "4"
set $ws5 "5"
#set $ws6 "6"
#set $ws7 "7"
#set $ws8 "8"
#set $ws9 "9"
#set $ws10 "10"
#set $ws11 "11"
# переключиться на рабочее пространство
bindsym $mod+1 workspace $ws1
bindsym $mod+2 workspace $ws2
bindsym $mod+3 workspace $ws3
bindsym $mod+4 workspace $ws4
bindsym $mod+5 workspace $ws5
bindsym $mod+6 workspace $ws6
bindsym $mod+7 workspace $ws7
bindsym $mod+8 workspace $ws8
bindsym $mod+9 workspace $ws9
bindsym $mod+0 workspace $ws10
bindsym $mod+Control+1 workspace $ws11
# переместить активный контейнер в рабочее пространство
bindsym $mod+Shift+1 move container to workspace $ws1
bindsym $mod+Shift+2 move container to workspace $ws2
bindsym $mod+Shift+3 move container to workspace $ws3
bindsym $mod+Shift+4 move container to workspace $ws4
bindsym $mod+Shift+5 move container to workspace $ws5
bindsym $mod+Shift+6 move container to workspace $ws6
bindsym $mod+Shift+7 move container to workspace $ws7
bindsym $mod+Shift+8 move container to workspace $ws8
bindsym $mod+Shift+9 move container to workspace $ws9
bindsym $mod+Shift+0 move container to workspace $ws10
bindsym $mod+Shift+Control+1 move container to workspace $ws11
# перезагрузить файл конфигурации
bindsym $mod+Shift+c reload
# перезапустить i3 на месте (сохранит вашу раскладку/сессию, может быть использован для обновления i3)
bindsym $mod+Shift+r restart
# выйти из i3 (выйдет из вашей X-сессии)
bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'Вы нажали сочетание клавиш выхода. Вы действительно хотите выйти из i3? Это завершит вашу X-сессию.' -B 'Да, выйти из i3' 'i3-msg exit'"
# изменить размер окна (вы также можете использовать для этого мышь)
mode "resize" {
# Эти привязки срабатывают, как только вы входите в режим изменения размера
# Нажатие влево уменьшает ширину окна.
# Нажатие вправо увеличивает ширину окна.
# Нажатие вверх уменьшает высоту окна.
# Нажатие вниз увеличивает высоту окна.
bindsym j resize shrink width 10 px or 10 ppt
bindsym k resize grow height 10 px or 10 ppt
bindsym l resize shrink height 10 px or 10 ppt
bindsym semicolon resize grow width 10 px or 10 ppt
# те же привязки, но для стрелок
bindsym Left resize shrink width 10 px or 10 ppt
bindsym Down resize grow height 10 px or 10 ppt
bindsym Up resize shrink height 10 px or 10 ppt
bindsym Right resize grow width 10 px or 10 ppt
# обратно в нормальный режим: Enter или Escape или $mod+r
bindsym Return mode "default"
bindsym Escape mode "default"
bindsym $mod+r mode "default"
}
bindsym $mod+r mode "resize"
set $bg-color #44444480
set $inactive-bg-color #44444480
set $text-color #f3f4f5
set $inactive-text-color #676E7D
set $urgent-bg-color #E53935
set $ws-focused-bg #ffc553
# цвета окон
# border background text indicator
client.focused $bg-color $bg-color $text-color #00ff00
client.unfocused $inactive-bg-color $inactive-bg-color $inactive-text-color #00ff00
client.focused_inactive $inactive-bg-color $inactive-bg-color $inactive-text-color #00ff00
client.urgent $urgent-bg-color $urgent-bg-color $text-color #00ff00
# Начать i3bar для отображения панели рабочего пространства (плюс системная информация, которую i3status
# находит, если доступна)
#bar {
# strip_workspace_numbers yes
# status_command i3status
# colors {
# background $bg-color
# separator #757575
## border background text
# focused_workspace $ws-focused-bg $ws-focused-bg $text-color
# inactive_workspace $inactive-bg-color $inactive-bg-color $inactive-text-color
# urgent_workspace $urgent-bg-color $urgent-bg-color $text-color
# }
#}
exec_always --no-startup-id $HOME/.config/polybar/launch.sh
exec compton -f -I 0.06 -O 0.6
#GAPS!!!
gaps inner 10
for_window [class=".*"] border pixel 0
# настройки для тачпада:
exec_always "~/.config/i3/touchpad_options"
# обмен клавишами:
exec_always ~/.config/i3/key_mappings
# медиа
# Управление Pulse Audio
bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume 0 +5% #увеличить звук
bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume 0 -5% #уменьшить звук
bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute 0 toggle # отключить звук
# Управление яркостью экрана
bindsym XF86MonBrightnessUp exec xbacklight -inc 10 # увеличить яркость
bindsym XF86MonBrightnessDown exec xbacklight -dec 10 # уменьшить яркость
# Управление медиаплеером
bindsym XF86AudioPlay exec playerctl play-pause
#bindsym XF86AudioPause exec playerctl pause
bindsym XF86AudioNext exec playerctl next
bindsym XF86AudioPrev exec playerctl previous
#КОМАНДЫ ХЭРИ:
# фон рабочего стола
exec_always feh --bg-fill ~/Pictures/desktop-photos/roundabout-darkened.png
# горячая клавиша блокировки:
bindsym $mod+shift+x exec i3lock -c 222222
# установить dpi для панелей i3
exec_always xrdb -merge ~/.Xresources
exec_always xrandr --dpi 120
ИЗМЕНИТЕ:
Провел еще несколько проверок и выяснил, что проблема заключается в моей установке polybar. Если я запускаю его из терминала, он говорит мне, что у меня нет встроенной поддержки для internal/i3.
Команда polybar -v дает мне:
polybar 3.3.0-101-gf0c65e6
Features: +alsa +curl -i3 +mpd +network(libnl) +pulseaudio +xkeyboard
Хотя это именно то, что руководство (ссылка выше, которое утверждало, что оно предназначено для установки i3wm на Fedora) сказало, что я должен получить в качестве вывода, похоже, что -i3 (логично) означает, что ему не хватает поддержки i3 (ссылка: https://github.com/polybar/polybar/issues/526). Я не совсем знаю, как правильно выполнить установку, но я собираюсь удалить polybar и поискать лучшую документацию о том, как это сделать.
У меня была такая же проблема (не отображается рабочее пространство) на Ubuntu 18.04. Причиной было то, что libjsoncpp-dev
в основных репозиториях пакетов слишком старый (1.7.4 против 1.7.7). Вы должны обратить внимание на вывод cmake. Если версия слишком старая, она сама создает статическую библиотеку для минимально необходимой версии. Вот что я получил сначала
./build.sh
...
-- Проверка модуля 'jsoncpp>=1.7.7'
-- Запрашиваемый 'jsoncpp >= 1.7.7', но версия jsoncpp 1.7.4
Вы можете найти новые версии jsoncpp на https://github.com/open-source-parsers/jsoncpp
-- Не удалось найти jsoncpp>=1.7.7 -- создание статической библиотеки...
-- Версия JsonCpp: 1.7.7
Затем я перешел по указанному URL, загрузил последнюю версию 1.9, установил ее, удалил пакет из репозитория системы, снова запустил ./build.sh
. Затем я получил
-- Проверка модуля 'jsoncpp>=1.7.7'
-- Найден jsoncpp, версия 1.9.0
Но при перезапуске ID рабочего пространства по-прежнему не отображался 🙁
ИЗМЕНИТЕ
Оказалось, что мне нужно активировать модуль i3, конечно. Он не является частью примера конфигурации polybar, но в вопросе это было сделано правильно. Мне нужно было
...
modules-left = i3
...
и тогда все будет работать нормально, даже без установки jsoncpp
вручную. Отлично!
Я столкнулся с той же проблемой и исправил ее. В некоторых конфигурациях polybar вы не можете увидеть рабочие пространства, если они не называются по умолчанию.
Я увидел в вашей конфигурации i3, что вы назвали каждое рабочее пространство как: 1:
, 2:
и так далее.
Чтобы исправить свою проблему, я переопределил каждое имя рабочего пространства по умолчанию: 1
, 2
и т.д.
Ответ или решение
Когда вы настраиваете Polybar для использования с i3-gaps и столкнулись с проблемой отсутствия модуля рабочих пространств, это может быть следствием нескольких факторов. Ваша конфигурация использует правильные элементы, но, как указывает ваша ситуация, Polybar не имеет встроенной поддержки для модуля internal/i3
. Приведу подробные шаги для диагностики и решения этой проблемы.
Причины проблемы
-
Отсутствие поддержки модуля i3: Ваша версия Polybar, как видно из сообщения о версии, не поддерживает i3 (отметка
-i3
указывает на отсутствие этой функциональности). Это может быть связано с тем, что Polybar был скомпилирован без поддержки модуля i3. -
Неверная конфигурация: Даже если у вас есть модуль
internal/i3
, конфигурация может содержать ошибки или несовместимости.
Решение проблемы
1. Переустановка Polybar с поддержкой i3
Для того чтобы Polybar мог работать с i3, вам нужно установить его с поддержкой модуля i3. Выполните следующие шаги:
-
Удалите текущую версию Polybar:
sudo dnf remove polybar
-
Убедитесь, что у вас установлены необходимые зависимости, т.е.
libjsoncpp
версии 1.7.7 или выше и другие библиотеки, необходимые для компиляции. Вы можете добавить репозиторий EPEL для получения более свежих библиотек, если они недоступны в стандартных репозиториях:sudo dnf install epel-release sudo dnf install cmake gcc gcc-c++ jsoncpp-devel
-
Скачайте последнюю версию Polybar с GitHub:
git clone --recursive https://github.com/polybar/polybar.git cd polybar
-
Создайте и соберите проект:
mkdir build cd build cmake .. make sudo make install
2. Проверка конфигурации Polybar
Убедитесь, что в вашей конфигурации Polybar (обычно это файл ~/.config/polybar/config
) в секции [bar/bar1]
указаны модули, включая i3
:
modules-left = i3
Также ваш модуль i3 ([module/i3]
) должен выглядеть следующим образом:
[module/i3]
type = internal/i3
format = <label-state>
label-unfocused-foreground = #8a7f8f
label-focused-foreground = #c16772
label-urgent-foreground = #e4b226
3. Нормализация названий рабочих пространств
На основании вашей конфигурации i3, вы используете кастомные названия для рабочих пространств (например, 1:
). Хотя многие конфигурации Polybar адаптируются к этим названиям, если у вас не отображаются рабочие пространства, попробуйте использовать стандартные имена (1, 2, 3 и т. д.):
set $ws1 "1"
set $ws2 "2"
set $ws3 "3"
set $ws4 "4"
set $ws5 "5"
Заключение
Если после выполнения вышеуказанных шагов у вас все еще возникают проблемы, стоит поискать обновления в документации Polybar или проверить настройки вашего дистрибутива Fedora и i3-gaps. Сообщество, например, форумы или GitHub, также может стать хорошей поддержкой в решении возникающих вопросов.
Таким образом, следуя данным рекомендациям, вы сможете восстановить функциональность виджета рабочих пространств в Polybar и управлять ими без лишних проблем.