Herbstluftwm második felvonás

enlightened Ez az oldal a közösségért készül. heart Kövess minket máshol is:  Linux Mint Magyar Közösség a Mastodon-on  Telegram csatorna – csak hírek  Beszélgessünk a Telegram – Linux csevegő csoport  Hírek olvasása RSS segítségével  Linux Mint Hivatalos Magyar Közösség a Facebook-on      Linux Mint Baráti Kör a Facebook-on
wink Ha hasznosnak találod, és szeretnéd, hogy folytatódjon, támogasd a munkát Ko-fi vagy Paypal segítségével. laugh

Ahogy azt az eredeti bejegyzésben írtam, a Herbstluftwmhez "mellékelt" dzen2 alapú panel nekem iszonyú szívás volt, a lecserélése a Yambarra egy igazán indokolt lépés szerintem! Nézzük!

A jelenlegi Yambarban nincs natív Herbstluftwm modul, viszont ez könnyen megoldható a Yambar szkript moduljával (~/.config/yambar/herbst-tags.sh; tedd futathatóvá):

#!/bin/sh

# Aktuális herbstluftwm tag lekérdezése
current="$(herbstclient attr tags.focus.name)"

# 1-9 tagek megjelenítése.
# Az aktuális tag [ ] jelek között jelenik meg.

case "$current" in
    1)  text="[1]  2   3   4   5   6   7   8   9" ;;
    2)  text=" 1  [2]  3   4   5   6   7   8   9" ;;
    3)  text=" 1   2  [3]  4   5   6   7   8   9" ;;
    4)  text=" 1   2   3  [4]  5   6   7   8   9" ;;
    5)  text=" 1   2   3   4  [5]  6   7   8   9" ;;
    6)  text=" 1   2   3   4   5  [6]  7   8   9" ;;
    7)  text=" 1   2   3   4   5   6  [7]  8   9" ;;
    8)  text=" 1   2   3   4   5   6   7  [8]  9" ;;
    9)  text=" 1   2   3   4   5   6   7   8  [9]" ;;
    *)  text="$current" ;;
esac

printf 'tags|string|%s\n\n' "$text"

Most jön a fő konfiguráció (~/.config/yambar/config.yml):

bar:
  # ------------------------------------------------------------------
  # Alapbeállítások
  # ------------------------------------------------------------------

  height: 28
  location: top

  background: 1e1e2eff
  foreground: cdd6f4ff

  font: JetBrainsMono Nerd Font:size=12

  # A modulok közötti távolság
  spacing: 8

  # ------------------------------------------------------------------
  # BAL OLDAL
  # herbstluftwm tagek
  # ------------------------------------------------------------------

  left:

    - script:
        path: ~/.config/yambar/herbst-tags.sh
        poll-interval: 250
        content:
          string:
            text: "{tags}"

  # ------------------------------------------------------------------
  # KÖZÉP
  # Aktuális X11 ablak
  # ------------------------------------------------------------------

  center:

    - xwindow:
        content:
          string:
            text: "{title}"
            max: 80

  # ------------------------------------------------------------------
  # JOBB OLDAL
  # ------------------------------------------------------------------

  right:

    # --------------------------------------------------------------
    # CPU
    # --------------------------------------------------------------

    - cpu:
        poll-interval: 2000

        content:
          map:
            conditions:

              # Csak a teljes CPU-terhelést mutatjuk.
              # A cpu modul -1 ID-val jelzi az összesített értéket.
              id < 0:
                string:
                  text: "CPU {cpu}%"

    # --------------------------------------------------------------
    # RAM
    # --------------------------------------------------------------

    - mem:
        poll-interval: 2000

        content:
          string:
            text: "RAM {percent_used}%"


    # --------------------------------------------------------------
    # PulseAudio
    # --------------------------------------------------------------

    - pulse:
        content:
          string:
            text: "VOL {sink_percent}%"

    # --------------------------------------------------------------
    # Billentyűzetkiosztás
    # --------------------------------------------------------------

    - xkb:

        content:
          string:
            text: "{symbol}"


    # --------------------------------------------------------------
    # ÓRA
    # --------------------------------------------------------------

    - clock:

        time-format: "%H:%M"

        content:
          string:
            text: "{time}"

És a módosított Herbstluftwm konfig (~/.config/herbstluftwm/autostart):

#!/usr/bin/env bash
# Berus ~/.config/herbstluftwm/autostart

# Segédfüggvény a herbstclient hívások egyszerűsítésére és rövidebbé tételére
hc() {
    herbstclient "$@"
}

# Értesítés (hook) küldése a panelnek vagy egyéb scripteknek az újratöltésről
hc emit_hook reload

# Háttérszín beállítása (ha nincs panel, vagy amíg a panel betölt)
xsetroot -solid '#2A2A2A'

# ==========================================
# 1. MÓDOSÍTÓ GOMB (MODIFIER) BEÁLLÍTÁSA
# ==========================================
# Mod1 = Alt, Mod4 = Super (Windows gomb). A Super ajánlott a modern DE-kkel való ütközés elkerülésére.
Mod=Mod4

# ==========================================
# 2. GYORSBILLENTYŰK (KEYBINDINGS) TÖRLÉSE ÉS ÚJRADEFINIÁLÁSA
# ==========================================
hc keyunbind --all # Töröljük az alapértelmezetteket a tiszta lap érdekében

# Rendszervezérlés
hc keybind $Mod-Shift-e quit                             # WM bezárása
hc keybind $Mod-Shift-p spawn ~/.local/bin/rmenu.sh      # WM bezárása
hc keybind $Mod-Shift-r reload                           # Konfiguráció újratöltése
hc keybind $Mod-q close                                  # Fókuszált ablak bezárása
hc keybind Mod1+Control+t spawn kitty                    # Terminál indítása
#hc keybind $Mod-Return spawn kitty                      # Terminál indítása
hc keybind $Mod-d spawn rofi -show drun                  # Program indító
hc keybind Print spawn ~/.local/bin/scrot.sh             # Képernyőkép

# ==========================================
# 3. TAG-EK (VIRTUÁLIS ASZTALOK) KEZELÉSE
# ==========================================
TAG_NAMES=( {1..9} )
TAG_KEYS=( {1..9} 0 ) # Az 1-9 és a 0 gombokhoz rendeljük a tag-eket

# Az alapértelmezett "default" tag átnevezése "1"-re
hc rename default "${TAG_NAMES[0]}" || true
for i in "${!TAG_NAMES[@]}"; do
    hc add "${TAG_NAMES[$i]}"
    key="${TAG_KEYS[$i]}"
    if [ -n "$key" ]; then
        # Ugrás a kiválasztott tag-re
        hc keybind "$Mod-$key" use_index "$i"
        # Fókuszált ablak áthelyezése a tag-re és ugrás oda
        hc keybind "$Mod-Shift-$key" move_index "$i"
    fi
done

# ==========================================
# 4. ELRENDEZÉS (LAYOUT) ÉS FRAME KEZELÉS
# ==========================================
# Alapértelmezett elrendezés
hc set default_frame_layout horizontal

for tag in 1 2 3 4 5 6 7 8 9; do
    hc use "$tag"
    hc set_layout horizontal
done

hc use 1

# Frame elrendezés váltása a fókuszált keretben (vertical, horizontal, max, grid között ciklikusan)
hc keybind $Mod-space cycle_layout 1

# Keret felosztása (0.5 = 50% arány)
hc keybind $Mod-u split vertical 0.5    # Függőleges osztás (fel/le)
hc keybind $Mod-o split horizontal 0.5  # Vízszintes osztás (bal/jobb)

# Keret eltávolítása (összevonás a szomszédos kerettel)
hc keybind $Mod-r remove

# ==========================================
# 5. ABLAKOK MOZGATÁSA ÉS ÁTMÉRETEZÉSE (Vim-szerű navigáció)
# ==========================================
# Fókusz váltása a keretek között
hc keybind $Mod-h focus left
hc keybind $Mod-j focus down
hc keybind $Mod-k focus up
hc keybind $Mod-l focus right
hc keybind $Mod-Left  focus left
hc keybind $Mod-Down  focus down
hc keybind $Mod-Up    focus up
hc keybind $Mod-Right focus right

# Ablak áthelyezése a szomszédos keretbe
hc keybind $Mod-Shift-h shift left
hc keybind $Mod-Shift-j shift down
hc keybind $Mod-Shift-k shift up
hc keybind $Mod-Shift-l shift right
hc keybind $Mod-Shift-Left  shift left
hc keybind $Mod-Shift-Down  shift down
hc keybind $Mod-Shift-Up    shift up
hc keybind $Mod-Shift-Right shift right

# Keret átméretezése (lépésköz: 5%)
RESIZESTEP=0.05
hc keybind $Mod-Control-h resize left +$RESIZESTEP
hc keybind $Mod-Control-j resize down +$RESIZESTEP
hc keybind $Mod-Control-k resize up +$RESIZESTEP
hc keybind $Mod-Control-l resize right +$RESIZESTEP
hc keybind $Mod-Control-Left  resize left +$RESIZESTEP
hc keybind $Mod-Control-Down  resize down +$RESIZESTEP
hc keybind $Mod-Control-Up    resize up +$RESIZESTEP
hc keybind $Mod-Control-Right resize right +$RESIZESTEP

# ==========================================
# 6. ABLAK ÁLLAPOTOK (FLOATING, FULLSCREEN, PSEUDOTILE)
# ==========================================
hc keybind $Mod-s floating toggle        # Lebegő mód ki/bekapcsolása az aktuális tag-en
hc keybind $Mod-f fullscreen toggle      # Teljes képernyős mód
hc keybind $Mod-p pseudotile toggle      # Pszeudo-csempézés

# ==========================================
# 7. EGÉR VEZÉRLÉS (MOUSEBINDINGS)
# ==========================================
hc mouseunbind --all
hc mousebind $Mod-Button1 move           # Bal gomb + Mod: ablak mozgatása
hc mousebind $Mod-Button2 resize         # Középső gomb + Mod: ablak átméretezése
hc mousebind $Mod-Button3 zoom           # Jobb gomb + Mod: ablak maximalizálása a keretben
hc set focus_follows_mouse 1             # Fókusz követi az egeret

# ==========================================
# 8. MEGJELENÉS ÉS SZÍNEK (THEME)
# ==========================================
hc set frame_border_active_color '#83b8e7'   # Aktív keret színe
hc set frame_border_normal_color '#101010'   # Inaktív keret színe
hc set frame_bg_transparent 1                # Keret háttere átlátszó
hc set frame_border_width 1                  # Keret szegélyvastagsága
hc set window_border_width 2                 # Ablak szegélyvastagsága
hc set window_border_normal_color '#215668'  # Inaktív ablak szegélye
hc set window_border_active_color '#83b8e7'  # Aktív ablak szegélye
hc set always_show_frame 1                   # Mindig mutassa a kereteket (segít a navigációban)
hc set window_gap 4                          # Rés az ablakok között (pixel)
hc set tree_style '╾│ ├└╼─┐'

# ==========================================
# 9. ABLAK SZABÁLYOK (RULES)
# ==========================================
hc unrule -F # Összes meglévő szabály törlése újratöltéskor

# Alapértelmezett: ne adjon fókuszt az új ablakoknak (kivéve, ha szabály felülírja)
hc rule focus=off

# Kivétel: a terminálok kapjanak fókuszt (reguláris kifejezéssel)
hc rule class~'(.*[Rr]xvt.*|.*[Tt]erm|Konsole|Alacritty|Kitty)' focus=on

# Kivétel: párbeszédablakok (dialog) legyenek pszeudo-csempézettek és kapjanak fókuszt
hc rule windowtype~'_NET_WM_WINDOW_TYPE_(DIALOG|UTILITY|SPLASH)' pseudotile=on
hc rule windowtype='_NET_WM_WINDOW_TYPE_DIALOG' focus=on

# Kivétel: értesítések és dock alkalmazások (pl. wbar, conky, polybar) kezelése
# manage=off: a herbstluftwm egyáltalán nem kezeli ezeket az ablakokat, így nem zavarják a layoutot
hc rule windowtype~'_NET_WM_WINDOW_TYPE_(NOTIFICATION|DOCK)' manage=off
hc rule class~'[Ww]bar' manage=off
hc rule class~'[Cc]onky' manage=off
hc rule class~'polybar' manage=off

# ==========================================
# 10. MULTIMONITOR ÉS PANEL BEÁLLÍTÁSOK
# ==========================================
# Padding beállítása: hc pad <monitor> <top> <right> <bottom> <left>
# Ez helyet hagy a panelnek a képernyő tetején (pl. 20 pixel), hogy az ablakok ne takarják ki
hc pad 0 24 0 0 0

# Panel indítása minden monitoron (ha létezik a panel.sh)
#panel=~/.config/herbstluftwm/panel.sh
#[ -x "$panel" ] || panel=/etc/xdg/herbstluftwm/panel.sh
#for monitor in $(hc list_monitors | cut -d: -f1); do
#    $panel "$monitor" &
#done

# ----------------------------------------------------------------
# Yambar
# ----------------------------------------------------------------

# Ha reload történik, a régi yambar példányt eltávolítjuk.
pkill -x yambar 2>/dev/null || true

# Yambar indítása
yambar -b xcb -c "$HOME/.config/yambar/config.yml" &

# WM feloldása (zárás után újra aktív)
hc unlock

# ==========================================
# AUTOMATIKUSAN INDULÓ PROGRAMOK (DAEMONOK)
# ==========================================

# 1. Numlock bekapcsolása , Caps Lock -> ESC
# Ezek rövid parancsok, nem kell '&'
numlockx on
# setxkbmap -option caps:escape_shifted_capslock

# 2. Redshift (képernyő színhőmérsékletének állítása)
# Folyamatosan fut, ezért kell a '&' a végére!
# Opcionálisan megadhatod a koordinátáidat is (-l földrajzi szélesség -g hosszúság)
redshift &

# 3. Kompozitor (árnyékok, átlátszóság, animációk)
# Ha picom-ot használsz:
picom &
# Vagy ha a régebbi compton-ot:
# compton --daemon &

# 4. Értesítési daemon (Notification server)
# Nélküle a programok értesítései (pl. hangerőváltozás, letöltés vége) nem jelennek meg.
dunst &

# 5. Háttérkép beállítása 
#"$HOME/.fehbg"
nitrogen --restore

# ==========================================
# HANGERŐ SZABÁLYOZÁS NUMPAD GOMBOKKAL
# ==========================================

# PulseAudio hangerő beállítása 30%-ra
pactl set-sink-volume @DEFAULT_SINK@ 30%

hc keybind XF86AudioRaiseVolume  spawn pactl set-sink-volume @DEFAULT_SINK@ +5%
hc keybind XF86AudioLowerVolume  spawn pactl set-sink-volume @DEFAULT_SINK@ -5%
hc keybind XF86AudioMute         spawn pactl set-sink-mute @DEFAULT_SINK@ toggle

A dzen2 verzió is működik, de ahogy mondani szoktam, ez tisztább, szárazabb érzés!

Első felvonás: https://linuxmint.hu/blog/2026/08/palcikawm-vi-herbstluftwm

Berus