Ketika musik diputar menggunakan MPD melalui ncmpcpp, playlist akan terus diputar oleh mpd bahkan ketika aplikasi klien (ncmpcpp) ditutup. Ini dikarenakan mpd berjalan di deamon, tapi masalahnya kita kehilangan kontrol musik yang diputar jika ncmpcpp ditutup. Selain itu mpd tidak support mpris
atau playerctl
jadi tombol multimedia di keyboard jadi tidak berguna.
Untuk mengatasi masalah kontrol tersebut, kita bisa menggunakan bridge mpris (mpdris2) atau jika kita menggunakan dwm
maka bisa memakai patch mpdcontrol
.
Menggunakan mpdris2
Mpdris2 adalah bridge tombol mpris untuk MPD. Dengan menjalankan mpdris2
maka kita bisa mengkontrol mpd player menggunakan tombol media di keyboard tanpa perlu membuka mpd klien seperti ncmpcpp.
mpdris2 bisa diinstall melalui ubuntu repository seperti berikut:
sudo apt install mpdris2
Selanjutnya tinggal tambahkan mpd
dan mpdris2
pada pengaturan startup aplikasi ubuntu dekstop dan gunakan tombol play, stop, next dan prev keyboard untuk mengkontrol mpd kapanpun setelah login ke ubuntu desktop.
Menggunakan Mpdris2 dengan DWM
Untuk menggunakan mpdris2 dengan dwm maka kamu perlu install playerctl:
sudo apt install playerctl
kemudian tambahkan mpd dan mpdris2 di config.def.h:
static const char *const autostart[] = {
"slstatus", NULL,
"mpd", NULL,
"mpdris2", NULL,
NULL /* terminate */
};
Jika kode konstan array autostart
diatas belum ada berarti kamu perlu pakai patch cool autostart
, yang sebelumnya telah dibahas di instalasi dwm.
Kemudian tambahkan keybinding multimedia key pada keyboard pada config.def.h
dwm. seperti berikut:
- Menambahkan definisi keykode di dwm, keykode bisa dicari menggunakan perintah
xev
.
--- baris kode disembunyikan ---
{ "[M]", monocle },
{ NULL, NULL },
};
/* extra keyboard keys gunakan xev*/
#define XF86AudioPlay 0x1008ff14
#define XF86AudioStop 0x1008ff15
#define XF86AudioPrev 0x1008ff16
#define XF86AudioNext 0x1008ff17
- Tambahkan perintah
playerctl
di daftar command
--- baris kode disembunyikan ---
/* commands */
static char dmenumon[2] = "0"; /* component of dmenucmd, manipulated in spawn() */
static const char *dmenucmd[] = { "dmenu_run", "-m", dmenumon, "-fn", dmenufont, "-nb", col_gray1, "-nf", col_gray3, "-sb", col_cyan, "-sf", col_gray4, NULL };
static const char *termcmd[] = { "st", NULL };
static const char *playpause[] = { "playerctl", "play-pause", NULL };
static const char *stop[] = { "playerctl", "stop", NULL };
static const char *next[] = { "playerctl", "next", NULL };
static const char *prev[] = { "playerctl", "previous", NULL };
- Bind tombol keyboard dan perintahnya
--- baris kode disembunyikan ---
{ MODKEY|ShiftMask, XK_q, quit, {0} },
{ 0,/*play pause*/ XF86AudioPlay, spawn, {.v = playpause } },
{ 0,/*stop*/ XF86AudioStop, spawn, {.v = stop } },
{ 0,/*next*/ XF86AudioNext, spawn, {.v = next } },
{ 0,/*previous*/ XF86AudioPrev, spawn, {.v = prev } },
};
Kompile dwm restart, kamu bisa play mpd ketika dwm dijalankan.
Kontrol MPD menggunakan DWM
Untuk kamu yang lebih suka menggunakan DWM sebagai kontrol mpd, maka kamu bisa menggunakan patch mpdcontrol yang dapat di download di halaman patch mpdcontrol dwm.
Kemudian patch seperti biasa:
patch -p1 < dwm-r1615-mpdcontrol.diff
Jika ada yang gagal patch-nya bisa baca cara memperbaiki patch dwm. Jika patchnya berhasil, lanjutkan install libmpdclient-dev
dan kompile dwm.
sudo apt install libmpdclient-dev
rm -f config.h
sudo make clean install
Restart dwm, maka sekarang kamu bisa mengontrol mpd dari dwm. pastikan mpd
sudah di tambahkan di list autostart. Default tombol kontrolnya yaitu:
MOD + ESC
untuk play dan pause mpdMOD + F1
untuk lagu sebelumnyaMOD + F2
untuk lagu selanjutnya
Tombol bisa di ganti sesuai keinginan di dwm config.def.h.
--- baris kode disembunyikan ---
{ MODKEY|ShiftMask, XK_q, quit, {0} },
{ MODKEY, XK_F1, mpdchange, {.i = -1} },
{ MODKEY, XK_F2, mpdchange, {.i = +1} },
{ MODKEY, XK_Escape, mpdcontrol, {0} },
};
Menggunakan keyboard media keys
Contoh konfigurasi untuk patch mpdcontrol menggunakan media key. Pada config.def.h
tambahkan daftar definisi keykode:
--- baris kode disembunyikan ---
{ "[M]", monocle },
{ NULL, NULL },
};
/* extra keyboard keys gunakan xev*/
#define XF86AudioPlay 0x1008ff14
#define XF86AudioStop 0x1008ff15
#define XF86AudioPrev 0x1008ff16
#define XF86AudioNext 0x1008ff17
Kemudian ganti bind key default dari mpdcontrol
:
--- baris kode disembunyikan ---
{ MODKEY|ShiftMask, XK_q, quit, {0} },
{ 0,/*play pause*/ XF86AudioPlay, mpdcontrol, {0} },
{ 0,/*stop*/ XF86AudioStop, mpdcontrol, {0} },
{ 0,/*next*/ XF86AudioNext, mpdchange, {.i = +1} },
{ 0,/*previous*/ XF86AudioPrev, mpdchange, {.i = -1} },
};