Hanya untuk pemain sejati: vlc, mpv, RhythmBox, web browser, cmus, mpd, spotify dan lain-lain.
Mengobrol
Playerctl adalah utilitas baris perintah dan perpustakaan untuk mengendalikan pemutar media yang mengimplementasikan Spesifikasi Antarmuka D-Bus MPRIS. Playerctl memudahkan untuk mengikat tindakan pemain, seperti memutar dan menjeda, ke tombol media. Anda juga bisa mendapatkan metadata tentang lagu yang diputar seperti artis dan judul untuk diintegrasikan ke dalam generator baris status atau alat baris perintah lainnya.
Playerctl juga dilengkapi dengan daemon yang memungkinkannya bertindak pada pemutar media yang sedang aktif bernama playerctld
.
playerctl [--version] [--list-all] [--all-players] [--player=NAME] [--ignore-player=IGNORE] [--format=FORMAT] [--no-messages] COMMAND
Berikut adalah daftar perintah yang tersedia:
Memerintah | Keterangan |
---|---|
play | Perintahkan pemain untuk bermain. |
pause | Perintahkan pemain untuk berhenti sejenak |
play-pause | Perintahkan pemain untuk beralih antara putar/jeda. |
stop | Perintahkan pemain untuk berhenti. |
next | Perintahkan pemain untuk melompat ke trek berikutnya. |
previous | Perintahkan pemain untuk melompat ke trek sebelumnya. |
position [OFFSET][+/-] | Perintahkan pemain untuk pergi ke posisi atau mencari OFFSET maju atau mundur dalam hitungan detik. |
volume [LEVEL][+/-] | Cetak atau atur volume ke LEVEL dari 0,0 hingga 1,0. |
status | Dapatkan status pemutaran pemain. Entah "Bermain", "Dijeda", atau "Berhenti". |
metadata [KEY...] | Cetak metadata untuk trek saat ini. Jika KEY diteruskan, cetak hanya nilai tersebut dari metadata. |
open [URI] | Perintah bagi pemain untuk membuka URI yang diberikan. Dapat berupa jalur file atau URL jarak jauh. |
loop [STATUS] | Cetak atau atur status loop. Entah "Tidak Ada", "Lagu", atau "Daftar Putar". |
shuffle [STATUS] | Cetak atau atur status acak. Entah "Aktif", "Mati". |
Tanpa menentukan pemain mana pun yang akan dikontrol, Playerctl akan bertindak berdasarkan pemain pertama yang dapat ditemukan.
Playerctl hadir dengan layanan bernama playerctld
yang memantau aktivitas pemutar media di latar belakang. Jika playerctld
sedang berjalan, Playerctl akan bertindak pada pemain berdasarkan aktivitas terakhir mereka. Untuk memulai playerctld
, tambahkan perintah berikut ke skrip startup sistem Anda:
playerctld daemon
Anda dapat membuat daftar nama pemain yang tersedia untuk dikontrol yang berjalan di sistem dengan playerctl --list-all
.
Jika Anda hanya ingin mengontrol pemain tertentu, Anda dapat memberikan nama pemain tersebut dipisahkan dengan koma dengan bendera --player
. Playerctl akan memilih instance pertama pemain dalam daftar itu yang mendukung perintah tersebut. Untuk mengontrol semua pemain dalam daftar, Anda dapat menggunakan bendera --all-players
.
Demikian pula, Anda dapat mengabaikan pemain dengan meneruskan nama mereka dengan bendera --ignore-player
.
Nama pemain khusus %any
dapat digunakan dalam daftar pemain yang dipilih satu kali untuk mencocokkan pemain mana pun yang tidak ada dalam daftar. Ini dapat digunakan untuk memprioritaskan atau menurunkan prioritas pemain.
Contoh:
# Command the first instance of VLC to play
playerctl --player=vlc play
# Command all players to stop
playerctl --all-players stop
# Command VLC to go to the next track if it's running. If it's not, send the
# command to Spotify.
playerctl --player=vlc,spotify next
# Get the status of the first player that is not Gwenview.
playerctl --ignore-player=Gwenview status
# Command any player to play, but select Chromium last
playerctl --player=%any,chromium play
# Command any player to play, but select VLC first
playerctl --player=vlc,%any play
Anda dapat meneruskan string format dengan argumen --format
untuk mencetak properti dalam format tertentu. Berikan variabel yang ingin Anda cetak dalam format string di antara kurung kurawal ganda seperti {{ VARIABLE }}
. Variabel yang tersedia adalah nama perintah kueri, atau apa pun di peta metadata yang dapat dilihat dengan playerctl metadata
. Anda dapat menggunakan ini untuk mengintegrasikan playerctl ke generator statusline.
Untuk spanduk sederhana "sedang diputar":
playerctl metadata --format " Now playing: {{ artist }} - {{ album }} - {{ title }} "
# prints 'Now playing: Lana Del Rey - Born To Die - Video Games'
Termasuk dalam bahasa templat adalah beberapa variabel bawaan dan fungsi pembantu untuk pemformatan umum yang dapat Anda panggil pada variabel templat. Ia juga dapat melakukan operasi matematika dasar pada angka.
# Prints 'Total length: 3:23'
playerctl metadata --format " Total length: {{ duration(mpris:length) }} "
# Prints 'At position: 1:16'
playerctl position --format " At position: {{ duration(position) }} "
# Prints 'Artist in lowercase: lana del rey'
playerctl metadata --format " Artist in lowercase: {{ lc(artist) }} "
# Prints 'STATUS: PLAYING'
playerctl status --format " STATUS: {{ uc(status) }} "
# Prints the time remaining in the track (e.g, 'Time remaining: 2:07')
playerctl metadata --format " Time remaining: {{ duration(mpris:length - position) }} "
# Prints volume from 0 - 100
playerctl metadata --format " Volume: {{ volume * 100 }} "
Fungsi | Argumen | Keterangan |
---|---|---|
lc | rangkaian | Ubah string menjadi huruf kecil. |
uc | rangkaian | Ubah string menjadi huruf besar. |
duration | ke dalam | Ubah durasinya menjadi format jj:mm:ss. |
markup_escape | rangkaian | Keluar dari karakter markup XML dalam string. |
default | apapun, apapun | Cetak nilai pertama jika ada, atau cetak nilai kedua. |
emoji | status atau volume | Cobalah untuk mengubah variabel menjadi representasi emoji. |
trunc | tali, int | Potong string ke panjang maksimum. |
Variabel | Keterangan |
---|---|
playerName | Nama pemain saat ini. |
position | Posisi trek saat ini dalam mikrodetik |
status | Status pemutaran pemutar saat ini |
volume | Volume dari 0,0 hingga 1,0 |
album | Album dari lagu saat ini. |
artist | Artis lagu saat ini. |
title | Judul lagu saat ini. |
Anda dapat meneruskan tanda --follow
ke perintah kueri yang akan diblokir, menunggu pemain terhubung, dan mencetak kueri setiap kali ada perubahan. Jika pemain diteruskan dengan --player
, pemain di awal daftar akan diutamakan sesuai urutan kemunculannya kecuali --all-players
diteruskan. Jika tidak ada pemain yang dapat mendukung kueri, seperti saat semua pemain keluar, baris baru akan dicetak. Misalnya, untuk mendapatkan informasi tentang trek terbaru yang sedang diputar di pemutar media Anda, gunakan:
playerctl metadata --format ' {{ playerName }}: {{ artist }} - {{ title }} {{ duration(position) }}|{{ duration(mpris:length) }} ' --follow
Anda dapat mencari posisi di trek atau melompat maju dan mundur.
# Go back 30 seconds
playerctl position 30-
# Go forward 30 seconds
playerctl position 30+
# Seek to the position at 30 seconds
playerctl position 30
Untuk mengaktifkan pencatatan log debug, setel variabel lingkungan G_MESSAGES_DEBUG=playerctl
. Sebaiknya sertakan log debug saat Anda melaporkan masalah akan sangat membantu.
Beberapa pemain seperti Spotify memerlukan pengaturan variabel lingkungan DBus tertentu yang biasanya diatur dalam manajer sesi. Jika Anda tidak menggunakan manajer sesi atau tidak menyetel variabel-variabel ini secara otomatis (seperti xinit
), luncurkan lingkungan desktop Anda dengan menggunakan perintah dbus-launch
. Misalnya, dalam file .xinitrc
Anda, gunakan ini untuk memulai WM Anda:
exec dbus-launch --autolaunch=$(cat /var/lib/dbus/machine-id) i3
Beberapa pemain mungkin memerlukan instalasi plugin atau konfigurasi lainnya.
Di Quod Libet buka jendela File -> Plugins dan pilih plugin bernama MPRIS D-Bus Support .
Jika playerctld
tidak memulai secara otomatis dan Anda menggunakan xinit
dan systemd, Anda mungkin memerlukan perbaikan ini untuk mengaktifkan aktivasi DBus agar berfungsi dengan benar:
systemctl --user import-environment DISPLAY XAUTHORITY
if which dbus-update-activation-environment >/dev/null 2>&1; then
dbus-update-activation-environment DISPLAY XAUTHORITY
fi
Pertama, periksa dan lihat apakah Playerctl tersedia dari manajer paket Anda (jika tidak, mintalah seseorang untuk menghosting paket untuk Anda) dan periksa juga halaman rilis di github.
playerctl
tersedia untuk Fedora 28 atau lebih baru:
sudo dnf install playerctl
playerctl
tersedia untuk Mageia dan openSUSE melalui repositori COPR ini. Pertama, instal file repositori untuk distribusi Anda dari COPR. Kemudian, instal playerctl
dengan manajer paket pilihan Anda.
playerctl
tersedia sebagai paket Guix yang dapat diinstal pada distribusi Linux apa pun setelah menginstal Guix:
guix install playerctl
Menggunakan cli dan perpustakaan memerlukan GLib (yang juga merupakan ketergantungan dari hampir semua pemain ini, jadi Anda mungkin sudah memilikinya). Anda dapat menggunakan perpustakaan di hampir semua bahasa pemrograman dengan perpustakaan pengikat introspeksi terkait.
Selain itu, Anda juga memerlukan dependensi build berikut:
gobject-introspection untuk membangun data introspeksi (dapat dikonfigurasi dengan opsi meson introspection
)
gtk-doc untuk membuat dokumentasi (dapat dikonfigurasi dengan opsi gtk-doc
meson)
Pengguna Fedora juga perlu menginstal redhat-rpm-config
Untuk menghasilkan dan membangun proyek untuk berkontribusi pada pengembangan dan menginstal playerctl ke /
:
meson mesonbuild
sudo ninja -C mesonbuild install
Perhatikan bahwa Anda perlu menginstal meson
. Jika distro Anda hanya memiliki meson versi lama di repositori, Anda dapat menginstal versi terbaru melalui pip:
pip3 install meson
Perlu diingat juga bahwa gtk-doc dan gobject-introspection diaktifkan secara default, Anda dapat menonaktifkannya dengan -Dintrospection=false
dan -Dgtk-doc=false
.
Jika Anda tidak ingin menginstal playerctl ke /
Anda dapat menginstalnya di tempat lain dengan mengekspor DESTDIR
sebelum memanggil ninja, misalnya:
export PREFIX="/usr/local"
meson --prefix="${PREFIX}" --libdir="${PREFIX}/lib" mesonbuild
export DESTDIR="$(pwd)/install"
ninja -C mesonbuild install
Anda dapat menggunakannya nanti dengan mengekspor variabel berikut:
export LD_LIBRARY_PATH="$DESTDIR/${PREFIX}/lib/:$LD_LIBRARY_PATH"
export GI_TYPELIB_PATH="$DESTDIR/${PREFIX}/lib/:$GI_TYPELIB_PATH"
export PATH="$DESTDIR/${PREFIX}/bin:$PATH"
Untuk menggunakan perpustakaan skrip, temukan bahasa favorit Anda dari daftar ini dan instal perpustakaan binding. Dokumentasi untuk perpustakaan dihosting di sini. Untuk contoh cara menggunakan perpustakaan, lihat folder contoh.
Untuk pengguna yang lebih mahir, Playerctl menyediakan perpustakaan introspeksi yang tersedia dalam bahasa skrip favorit Anda yang memungkinkan kontrol lebih detail seperti kemampuan untuk berlangganan acara pemutar media atau mendapatkan metadata seperti artis dan judul untuk lagu yang diputar. Contoh ini menggunakan binding Python.
#!/usr/bin/env python3
from gi . repository import Playerctl , GLib
player = Playerctl . Player ( 'vlc' )
def on_metadata ( player , metadata ):
if 'xesam:artist' in metadata . keys () and 'xesam:title' in metadata . keys ():
print ( 'Now playing:' )
print ( '{artist} - {title}' . format (
artist = metadata [ 'xesam:artist' ][ 0 ], title = metadata [ 'xesam:title' ]))
def on_play ( player , status ):
print ( 'Playing at volume {}' . format ( player . props . volume ))
def on_pause ( player , status ):
print ( 'Paused the song: {}' . format ( player . get_title ()))
player . connect ( 'playback-status::playing' , on_play )
player . connect ( 'playback-status::paused' , on_pause )
player . connect ( 'metadata' , on_metadata )
# start playing some music
player . play ()
if player . get_artist () == 'Lana Del Rey' :
# I meant some good music!
player . next ()
# wait for events
main = GLib . MainLoop ()
main . run ()
Untuk contoh lebih lengkap yang mampu mendengarkan saat pemain memulai dan keluar, lihat player-manager.py dari contoh resmi.
Lihat artikel berikut tentang Playerctl:
Proyek terkait dari pembuat Playerctl:
Karya ini tersedia di bawah GNU Lesser General Public License (Lihat SALINAN).
Hak Cipta © 2014, Tony Crisci