Lewati ke konten

Your language is missing?

Help us translate this documentation!

See how to contribute translations →

Waybar

📂 ~/.config/waybar/
├── 📂 layouts/
├── 📂 menus/
├── 📂 modules/
├── 📂 styles/
├── 📂 includes/
├── 📄 config.jsonc
├── 📄 style.css
├── 📄 theme.css
└── 📄 user-style.css
  • config.jsonc

    • Salinan dari konfigurasi layout. Lihat layouts.
    • File bersifat sementara, jadi perubahan harus disimpan di ~/.config/waybar/layouts/
  • style.css

    • File yang dibuat secara otomatis.
    • style.css mengimpor 3 file:
      • Current styles/*.css yang sesuai dengan layout.jsonc. Lihat styles
      • theme.css yang dihasilkan oleh tema dan dapat menimpa style yang dipilih.
      • user-style.css adalah file opsional tempat untuk menambahkan styling custom. Anda juga bisa menguji CSS disini.
  • theme.css

    • File yang otomatis dihasilkan dari tema.

Direktori: ./modules/

└── 📂 modules/
├── 📄 backlight.jsonc
├── 📄 clock.jsonc
├── 📄 cpu.jsonc
├── 📄 custom-cpuinfo.jsonc
├── 📄 hyprland-language.jsonc
├── 📄 idle_inhibitor.jsonc
├── 📄 pulseaudio#microphone.jsonc
├── 📄 pulseaudio.jsonc
├── 📄 tray.jsonc
├── 📄 wlr-taskbar#windows.jsonc
└── 📄 wlr-taskbar.jsonc
  • Simpan semua modul di ~/.config/waybar/modules/.
  • File di dalam direktori ini akan didaftarkan secara rekursif sebagai entri di includes/includes.jsonc
  • Semua modul mengikuti konvensi penamaan induk-anak (parent-child) berdasarkan struktur direktori. Sebagai contoh, custom/cpuinfo akan dikonversi menjadi custom-cpuinfo. Konvensi ini digunakan untuk menentukan nama class CSS secara jelas dan konsisten, sehingga menghindari kebingungan maupun konflik penamaan.

Contoh:

.custom-cpuinfo {
padding: 1em;
}

Direktori: ./layouts/

└── 📂 layouts/
├── 📄 layout-1.jsonc
├── 📄 layout-2.jsonc
├── 📄 khing.jsonc
├── 📄 macos.jsonc
└── 📄 ....jsonc

HyDE menyimpan semua konfigurasi siap pakai di direktori layouts/. Konfigurasi ini dapat diakses menggunakan skrip hyde-shell waybar.

Untuk pengaturan gaya (CSS) pada layout, lihat bagian styles.

Direktori: ./styles/

└── 📂 styles/
└── 📂 groups/
├── 📄 layout-1.css
├── 📄 layout-2.css
├── 📄 khing.css
├── 📄 macos.css
└── 📄 ...*.css

Direktori styles/ berisi berkas CSS yang menjadi pasangan (counterpart) untuk setiap layout. Saat memilih sebuah layout, HyDE akan mencoba menggunakan gaya CSS yang sesuai dengan mencocokkan nama berkas. Misalnya khing.jsonc akan menggunakan khing.css.

Opsi eksplisit --config <file> dan --style <file> juga didukung.

Direktori: ./includes/

└── 📂 includes/
├── 📄 includes.jsonc
├── 📄 border-radius.css
└── 📄 global.css
  • border-radius.css
    • Mengatur border-radius dinamis untuk groups.

Tanpa Pembulatan di Hyprland

Tanpa pembulatan di hyprland

Squircle (pembulatan 10) di Hyprland

Pembulatan 10 di hyprland

Lingkaran (pembulatan 100) di Hyprland

Pembulatan 100 di hyprland

Sudah kebayang, kan?

  • global.css - Berisi pengaturan ukuran font dan jenis font yang bersifat dinamis. Nilai ini dibuat dinamis agar tema dapat menimpa (override) pengaturan tersebut melalui hypr.theme >> $BAR_FONT

Direktori: ./menus/

Menyimpan semua berkas GTK Object XML. Untuk mengelola berkas dengan benar, kami menempatkan berkas GObject XML di ~/.config/waybar/menus/.

Perlu diketahui bahwa Waybar HANYA menyediakan 3 opsi penempatan modul: modules-left, modules-center dan modules-right. Untuk mencapai tata letak tertentu atau efek populer seperti pill, kita perlu menggunakan class group.

Contoh: Groups in pill shape

Isi direktori ../waybar/styles/groups/ digunakan untuk mengatur border-radius dari group yang bersangkutan. Group merupakan kombinasi beberapa modul — sebagian orang menyebutnya islands.

Di HyDE, agar dapat memanfaatkan group, kita perlu mendeklarasikan modul di dalam sebuah group terlebih dahulu.

Misalnya di ~/.config/waybar/layouts/my_config.jsonc:

{
"group/pill": {
"orientation": "inherit",
"modules": [
"custom/gpuinfo",
"clock"
]
}
}

Selanjutnya, group tersebut dapat ditambahkan ke posisi modul Waybar:

{
"modules-center": [
"group/pill",
"group/pill#tag1",
"group/pill-in"
]
}

Styling melakukan styling menjadi mudah karena modul sudah dikelompokkan. Dengan cara ini, nama group dapat digunakan langsung sebagai class CSS:

#pill,
#pill-in {
/* Tambahkan styling Anda di sini */
}

Catatan: pill dan pill#tag* memiliki class name yang sama, yaitu pill. Ini adalah konvensi Waybar untuk memungkinkan pengguna menambahkan modul serupa dengan class yang sama.

MyBar.jsonc
{
/*
┌─────────────────────────────────────────────────────────────────────────────┐
│ Global Options for the Waybar configuration │
└─────────────────────────────────────────────────────────────────────────────┘
*/
"layer": "top",
"output": ["*"],
"position": "top",
"reload_style_on_change": true,
/*
┌────────────────────────────────────────────────────────────────────────────┐
│ │
│ This is one of the vital part of the configuration, it allows you to │
│ include other │
│ files │
│ The `"$XDG_CONFIG_HOME/waybar/includes/includes.json"` is auto generated │
│ by the waybar.py │
│ script. │
│ 1. Includes all the modules in `./waybar/modules` │
│ 2. Resolves all the size for the icons that the style.css in waybar │
│ CANNOT │
│ handle │
│ 3. Of course this is optional, you can remove it if you don't want to use │
│ it and │
│ include your own set of modules. │
│ │
└────────────────────────────────────────────────────────────────────────────┘
*/
"include": ["$XDG_CONFIG_HOME/waybar/includes/includes.json"],
/*
┌────────────────────────────────────────────────────────────────────────────┐
│ Declare the modules inside your desired group shapes │
│ As of now we have: │
│ │
│ - pill-left - the curve is facing left │
│ - pill-right - the curve is facing right │
│ - pill-up - the curve is facing up │
│ - pill-down - the curve is facing down │
│ - pill-in - the curve is facing inwards no matter the position │
│ - pill-out - the curve is facing outwards no matter the position │
│ - leaf - a leaf shape │
│ - leaf-inverse - a leaf shape but inverted │
│ │
└────────────────────────────────────────────────────────────────────────────┘
*/
"group/pill-left": {
"orientation": "inherit",
"modules": ["custom/keybindhint", "custom/updates"]
},
"group/pill-right": {
"orientation": "inherit",
"modules": ["battery", "custom/hyde-menu"]
},
"group/pill-up": {
"orientation": "inherit",
"modules": ["wlr/taskbar"]
},
"group/pill-down": {
"orientation": "inherit",
"modules": ["hyprland/workspaces"]
},
"group/pill-in": {
"orientation": "inherit",
"modules": ["idle_inhibitor", "clock"]
},
"group/pill-out": {
"orientation": "inherit",
"modules": ["custom/weather", "hyprland/language"]
},
"group/leaf": {
"orientation": "inherit",
"modules": ["custom/workflows", "memory"]
},
"group/leaf-inverse": {
"orientation": "inherit",
"modules": ["custom/gpuinfo", "custom/cpuinfo"]
},
/*
┌─────────────────────────────────────────────────────────────────────────┐
│ Re-using a group is simple, You just need to add a #tag to the group │
│ name. │
└─────────────────────────────────────────────────────────────────────────┘
*/
"group/pill-down#right": {
"orientation": "inherit",
"modules": ["pulseaudio", "pulseaudio#microphone", "tray"]
},
"group/pill-up#right": {
"orientation": "inherit",
"modules": ["privacy", "custom/hyprsunset", "backlight#intel_backlight"]
},
/*
┌────────────────────────────────────────────────────────────────────────────┐
│ │
│ Declare the groups in the module position provided by waybar │
│ │
└────────────────────────────────────────────────────────────────────────────┘
*/
"modules-left": ["group/pill-left", "group/pill-down", "group/pill-up"],
"modules-center": ["group/leaf", "group/pill-in", "group/leaf-inverse"],
"modules-right": [
"group/pill-up#right",
"group/pill-down#right",
"group/pill-right"
]
}

Mulailah dengan membuat file baru ~/.config/waybar/layouts/my_config.jsonc atau salin salah satu layout yang sudah ada dari ~/.local/share/waybar/layouts/.

Terminal window
cp ~/.local/share/waybar/layouts/layout-1.jsonc ~/.config/waybar/layouts/my_config.jsonc

Langkah 2: Menambahkan Opsi Konfigurasi Global

Section titled “Langkah 2: Menambahkan Opsi Konfigurasi Global”

Mulai dengan konfigurasi global utama yang menentukan perilaku dasar Waybar:

{
"layer": "top", // Position layer: "top" or "bottom"
"output": ["*"], // Apply to all monitors (* means all outputs)
"position": "top", // Bar position: top, bottom, left, right
"reload_style_on_change": true, // Auto-reload when style file changes

Langkah 3: Menyertakan Definisi Modul HyDE

Section titled “Langkah 3: Menyertakan Definisi Modul HyDE”

Tambahkan directive include untuk memuat semua modul dan konfigurasi HyDE secara otomatis:

"include": ["$XDG_CONFIG_HOME/waybar/includes/includes.json"],

HyDE Menyediakan beberapa bentuk group bawaan untuk membuat efek pill dan layout kustom. Definisikan group terlebih dahulu sebelum menetapkan modul:

// Available group shapes:
// pill-left, pill-right, pill-up, pill-down
// pill-in, pill-out, leaf, leaf-inverse
"group/pill-left": {
"orientation": "inherit",
"modules": ["custom/keybindhint", "custom/updates"]
},
"group/pill-right": {
"orientation": "inherit",
"modules": ["battery", "custom/hyde-menu"]
},
"group/pill-up": {
"orientation": "inherit",
"modules": ["wlr/taskbar"]
},
"group/pill-down": {
"orientation": "inherit",
"modules": ["hyprland/workspaces"]
},
"group/pill-in": {
"orientation": "inherit",
"modules": ["idle_inhibitor", "clock"]
},
"group/pill-out": {
"orientation": "inherit",
"modules": ["custom/weather", "hyprland/language"]
},
"group/leaf": {
"orientation": "inherit",
"modules": ["custom/workflows", "memory"]
},
"group/leaf-inverse": {
"orientation": "inherit",
"modules": ["custom/gpuinfo", "custom/cpuinfo"]
},

Langkah 5: Menggunakan Kembali Group dengan Tag

Section titled “Langkah 5: Menggunakan Kembali Group dengan Tag”

Anda dapat menggunakan kembali bentuk group yang sama dengan menambahkan tag (#tagname):

"group/pill-down#right": {
"orientation": "inherit",
"modules": ["pulseaudio", "pulseaudio#microphone", "tray"]
},
"group/pill-up#right": {
"orientation": "inherit",
"modules": ["privacy", "custom/hyprsunset", "backlight#intel_backlight"]
},

Langkah 6: Menyusun Group pada Posisi Modul

Section titled “Langkah 6: Menyusun Group pada Posisi Modul”

Terakhir, tempatkan group ke dalam tiga posisi yang disediakan Waybar:

"modules-left": ["group/pill-left", "group/pill-down", "group/pill-up"],
"modules-center": ["group/leaf", "group/pill-in", "group/leaf-inverse"],
"modules-right": [
"group/pill-up#right",
"group/pill-down#right",
"group/pill-right"
]
}

Untuk menggunakan layout baru Anda, jalankan:

Terminal window
# Menavigasi layout menggunakan rofi
hyde-shell waybar -S
# Atau terapkan langsung
waybar -c ~/.config/waybar/layouts/my_config.jsonc

alt text

ShapeDescription
pill-leftCurve facing left
pill-rightCurve facing right
pill-upCurve facing up
pill-downCurve facing down
pill-inCurve facing inwards regardless of position
pill-outCurve facing outwards regardless of position
leafLeaf shape
leaf-inverseInverted leaf shape

Untuk menyesuaikan modul individual, edit berkas di ~/.config/waybar/modules/ atau buat modul baru dengan mengikuti konvensi penamaan yang dijelaskan pada bagian Modules.