Sejak memasang "dark" theme, saya cenderung menjadi malas menulis. Untuk sementara, dark theme saya disable dulu yaa. Terima kasih (^_^) (bandithijo, 2024/09/15) ●
Pendahuluan
Tidak dipungkiri, beberapa aplikasi masih memerlukan trayicon. Bahkan ada beberapa aplikasi yang tidak dapat berjalan apabila tidak terdapat tempat untuk meletakkan trayicon. Untuk beberapa Window Manager yang tidak memiliki Bar yang menyediakan trayicon, kita dapat memanfaatkan Polybar sebagai tempat menyimpan trayicon.
Latar Belakang Masalah
Saya sudah pernah menggunakan metode konvensional untuk melakukan hide/show pada Polybar sebagai trayicon di artikel ini, Polybar, Bar yang Mudah Dikonfig, Praktis, dan Mudah Dikustomisasi
Terdapat banyak sekali kelemahan dari menggunakan pendekatan tersebut.
Namun, yang paling mengganggu saya adalah: Fungsi aplikasi yang sangat tergantung dengan trayicon, tidak berjalan dengan semestinya.
Contohnya seperti nm-applet yang apabila tidak disimpan di trayicon dan hanya berjalan sebagai background process, tidak akan memberikan notifikasi status network.
Pemecahan Masalah
Maka dari itu, saya lebih merekomendasikan untuk menggunakan pendekatan menggunakan IPC.
Cara ini memanfaatkan IPC (Interprocess Communication) agar kita dapat mengirimkan message process ke Polybar dengan menggunakan perintah polybar-msg
pada segment bar yang menggunakan attribute enable-ipc = true
.
Langkah-langkah
1. Tambahkan attribute enable-ipc = true
Pada segment atau section bar yang dijadikan sebagai trayicon, tambahkan attribute enable-ipc = true
.
Contoh seperti yang saya pergunakan,
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
[colors]
foreground = ${xrdb:foreground:}
background = #001E1E1E
[bar/traydwm]
monitor = ${env:MONITOR:eDP1}
fixed-center = false
width = 1%
height = 24
offset-x = 1
offset-y = 1
bottom = yes
foreground = ${colors.foreground}
background = ${colors.background}
line-size = 1
line-color = #dfdfdf
border-size = 1
padding-left = 0
padding-right = 0
module-margin-left = 0
module-margin-right = 0
font-0 = JetBrainsMono Nerd Font Bandit:size=9;2
tray-padding = 0
tray-position = left
tray-maxsize = 16
tray-scale = 1.0
tray-foreground = ${colors.foreground}
tray-background = ${colors.background}
tray-detached = true
tray-offset-x = 9
tray-offset-y = -9
override-redirect = true
enable-ipc = true
cursor-click = pointer
cursor-scroll = ns-resize
modules-left = sp1
modules-center =
modules-right =
[module/sp1]
type = custom/text
content = " "
content-foreground = ${colors.foreground}
content-background = ${colors.background}
[settings]
throttle-output = 5
throttle-output-for = 10
screenchange-reload = true
compositing-background = source
compositing-foreground = over
compositing-overline = over
compositing-underline = over
compositing-border = over
pseudo-transparent = true
[global/wm]
margin-top = 0
margin-bottom = 0
; vim:ft=dosini
Perhatikan pada baris ke-42, saya menggunakan attribute enable-ipc = true
pada section bar yang saya gunakan sebagai trayicon dengan nama section [bar/traydwm]
.
Sip, untuk langkah di Polybar config hanya seperti ini saja.
2. Mengirimkan signal hide & show dengan polybar-msg
Setelah memasang attribute enable-ipc = true
pada bar yang kita ingin dapat melakukan hide & show, selanjutnya cara memanggil dan menyembunyikannya dengan menggunakan command polybar-msg
.
Coba dulu jalankan di Terminal emulator,
Untuk menampilkan bar
$ polybar-msg cmd show
Successfully wrote command 'show' to PID 229212
Untuk menyembunyikan bar
$ polybar-msg cmd hide
Successfully wrote command 'hide' to PID 229212
Perhatikan output yang ditampilkan, terdapat keterangan PID 229212
yang menunjukkan bahwa PID tersebut milik Polybar.
Cara mengeceknya tinggal gunakan command pidof
.
$ pidof polybar
229212
Nah, kalau sudah berhasil menggunakan command polybar-msg
untuk hide & show di Terminal, tinggal mengaplikasikannya pada applikasi hotkey yang kalian gunakan. Saya menggunakan sxhkd.
1
2
3
# polybar tray
super + shift + ~b
polybar-msg cmd {show, hide}
Demonstrasi
Pesan Penulis
Penggunaan lebih lanjut saya serahkan pada imajinasi dan kreatifitas teman-teman.
Mungkin teman-teman bisa membaca-baca manual dari man polybar-msg
dan membantu dalam solusi kreatifitas teman-teman.
Terima kasih sudah mampir yaa.
Referensi
-
https://www.reddit.com/r/Polybar/comments/ak246w/polybar_hide_show_on_key_press_release_bspwmsxhkd/
Diakses tanggal: 2022/12/10 -
https://github.com/polybar/polybar/wiki#launching-the-bar-in-your-wms-bootstrap-routine
Diakses tanggal: 2022/12/10
Lisensi
Atribusi-NonKomersial-BerbagiSerupa 4.0 Internasional (CC BY-NC-SA 4.0)
Penulis
My journey kicks off from reading textbooks as a former Medical Student to digging bugs as a Software Engineer – a delightful rollercoaster of career twists. Embracing failure with the grace of a Cat avoiding water, I've seamlessly transitioned from Stethoscope to Keyboard. Armed with ability for learning and adapting faster than a Heart Beat, I'm on a mission to turn Code into a Product.
- Rizqi Nur Assyaufi