실제 플레이어 전용: vlc, mpv, RhythmBox, 웹 브라우저, cmus, mpd, Spotify 및 기타.
채팅
Playerctl은 MPRIS D-Bus 인터페이스 사양을 구현하는 미디어 플레이어를 제어하기 위한 명령줄 유틸리티이자 라이브러리입니다. Playerctl을 사용하면 재생 및 일시 중지와 같은 플레이어 작업을 미디어 키에 쉽게 바인딩할 수 있습니다. 상태 표시줄 생성기나 기타 명령줄 도구에 통합하기 위해 아티스트 및 제목과 같은 재생 트랙에 대한 메타데이터를 얻을 수도 있습니다.
Playerctl에는 playerctld
라는 현재 활성 미디어 플레이어에서 작동할 수 있는 데몬도 함께 제공됩니다.
playerctl [--version] [--list-all] [--all-players] [--player=NAME] [--ignore-player=IGNORE] [--format=FORMAT] [--no-messages] COMMAND
사용 가능한 명령 목록은 다음과 같습니다.
명령 | 설명 |
---|---|
play | 플레이어에게 플레이하라고 명령합니다. |
pause | 플레이어에게 일시 중지 명령을 내립니다. |
play-pause | 플레이어에게 재생/일시 중지 간을 전환하도록 명령합니다. |
stop | 플레이어에게 중지하라고 명령합니다. |
next | 플레이어에게 다음 트랙으로 건너뛰도록 명령합니다. |
previous | 플레이어에게 이전 트랙으로 건너뛰도록 명령합니다. |
position [OFFSET][+/-] | 플레이어에게 해당 위치로 이동하거나 몇 초 만에 앞뒤 OFFSET을 찾도록 명령합니다. |
volume [LEVEL][+/-] | 볼륨을 0.0에서 1.0까지 LEVEL로 인쇄하거나 설정합니다. |
status | 플레이어의 플레이 상태를 가져옵니다. '재생 중', '일시 중지됨' 또는 '중지됨'입니다. |
metadata [KEY...] | 현재 트랙의 메타데이터를 인쇄합니다. KEY가 전달되면 메타데이터에서 해당 값만 인쇄합니다. |
open [URI] | 플레이어가 주어진 URI를 열도록 하는 명령입니다. 파일 경로 또는 원격 URL일 수 있습니다. |
loop [STATUS] | 루프 상태를 인쇄하거나 설정합니다. "없음", "트랙" 또는 "재생 목록"입니다. |
shuffle [STATUS] | 셔플 상태를 인쇄하거나 설정합니다. "켜기", "끄기" 중 하나입니다. |
제어할 플레이어를 지정하지 않고 Playerctl은 찾을 수 있는 첫 번째 플레이어에 대해 작업을 수행합니다.
Playerctl에는 백그라운드에서 미디어 플레이어의 활동을 모니터링하는 playerctld
라는 서비스가 함께 제공됩니다. playerctld
실행 중인 경우 Playerctl은 마지막 활동 순서대로 플레이어에 대해 작업을 수행합니다. playerctld
시작하려면 시스템 시작 스크립트에 다음 명령을 추가하세요.
playerctld daemon
playerctl --list-all
사용하면 시스템에서 실행 중인 제어 가능한 플레이어의 이름을 나열할 수 있습니다.
특정 플레이어만 제어하려면 --player
플래그를 사용하여 해당 플레이어의 이름을 쉼표로 구분하여 전달할 수 있습니다. Playerctl은 해당 목록에서 명령을 지원하는 플레이어의 첫 번째 인스턴스를 선택합니다. 목록의 모든 플레이어를 제어하려면 --all-players
플래그를 사용할 수 있습니다.
마찬가지로 --ignore-player
플래그를 사용하여 이름을 전달하여 플레이어를 무시할 수 있습니다.
특수 플레이어 이름 %any
선택한 플레이어 목록에서 한 번 사용하여 목록에 없는 플레이어와 일치시킬 수 있습니다. 이는 플레이어의 우선순위를 지정하거나 우선순위를 낮추는 데 사용될 수 있습니다.
예:
# 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
--format
인수와 함께 형식 문자열을 전달하여 특정 형식으로 속성을 인쇄할 수 있습니다. {{ VARIABLE }}
과 같은 이중 중괄호 사이에 형식 문자열로 인쇄하려는 변수를 전달합니다. 사용 가능한 변수는 쿼리 명령의 이름이거나 playerctl metadata
로 볼 수 있는 메타데이터 맵의 모든 것입니다. 이를 사용하여 playerctl을 상태 표시줄 생성기에 통합할 수 있습니다.
간단한 "지금 재생 중" 배너의 경우:
playerctl metadata --format " Now playing: {{ artist }} - {{ album }} - {{ title }} "
# prints 'Now playing: Lana Del Rey - Born To Die - Video Games'
템플릿 언어에는 템플릿 변수에 대해 호출할 수 있는 일반적인 형식 지정을 위한 몇 가지 기본 제공 변수와 도우미 함수가 포함되어 있습니다. 숫자에 대한 기본적인 수학 연산도 수행할 수 있습니다.
# 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 }} "
기능 | 논쟁 | 설명 |
---|---|---|
lc | 끈 | 문자열을 소문자로 변환합니다. |
uc | 끈 | 문자열을 대문자로 변환합니다. |
duration | 정수 | 기간을 hh:mm:ss 형식으로 변환합니다. |
markup_escape | 끈 | 문자열의 XML 마크업 문자를 이스케이프합니다. |
default | 어떤, 어떤 | 존재하는 경우 첫 번째 값을 인쇄하고, 그렇지 않으면 두 번째 값을 인쇄합니다. |
emoji | 상태 또는 볼륨 | 변수를 이모티콘 표현으로 변환해 보세요. |
trunc | 문자열, 정수 | 문자열을 최대 길이로 자릅니다. |
변하기 쉬운 | 설명 |
---|---|
playerName | 현재 플레이어의 이름입니다. |
position | 현재 트랙의 위치(마이크로초) |
status | 현재 플레이어의 재생 상태 |
volume | 0.0에서 1.0까지의 볼륨 |
album | 현재 트랙의 앨범입니다. |
artist | 현재 트랙의 아티스트입니다. |
title | 현재 트랙의 제목입니다. |
--follow
플래그를 전달하여 명령을 차단하고 플레이어가 연결될 때까지 기다리며 변경될 때마다 쿼리를 인쇄할 수 있습니다. --player
사용하여 플레이어를 전달하는 경우 --all-players
전달하지 않는 한 목록의 앞부분에 있는 플레이어가 나타나는 순서대로 우선 적용됩니다. 모든 플레이어가 종료하는 등 어떤 플레이어도 쿼리를 지원할 수 없는 경우 줄 바꿈이 인쇄됩니다. 예를 들어, 미디어 플레이어에서 현재 재생 중인 최신 트랙에 대한 정보를 받으려면 다음을 사용하세요.
playerctl metadata --format ' {{ playerName }}: {{ artist }} - {{ title }} {{ duration(position) }}|{{ duration(mpris:length) }} ' --follow
트랙에서 특정 위치를 찾거나 앞뒤로 건너뛸 수 있습니다.
# Go back 30 seconds
playerctl position 30-
# Go forward 30 seconds
playerctl position 30+
# Seek to the position at 30 seconds
playerctl position 30
디버그 로깅을 활성화하려면 환경 변수 G_MESSAGES_DEBUG=playerctl
설정하세요. 문제를 보고할 때 디버그 로그를 포함하면 도움이 됩니다.
Spotify와 같은 일부 플레이어에서는 일반적으로 세션 관리자 내에서 설정되는 특정 DBus 환경 변수를 설정해야 합니다. 세션 관리자를 사용하지 않거나 이러한 변수를 자동으로 설정하지 않는 경우(예: xinit
) dbus-launch
명령으로 래핑된 데스크톱 환경을 시작하세요. 예를 들어, .xinitrc
파일에서 다음을 사용하여 WM을 시작합니다.
exec dbus-launch --autolaunch=$(cat /var/lib/dbus/machine-id) i3
일부 플레이어는 플러그인 설치나 기타 구성이 필요할 수 있습니다.
Quod Libet에서 File -> Plugins 창을 열고 MPRIS D-Bus Support 라는 플러그인을 선택합니다.
playerctld
자동 시작되지 않고 xinit
및 systemd를 사용하는 경우 DBus 활성화가 올바르게 작동하려면 다음 수정이 필요할 수 있습니다.
systemctl --user import-environment DISPLAY XAUTHORITY
if which dbus-update-activation-environment >/dev/null 2>&1; then
dbus-update-activation-environment DISPLAY XAUTHORITY
fi
먼저, 패키지 관리자에서 Playerctl을 사용할 수 있는지 확인하고(그렇지 않은 경우 패키지를 호스팅해 줄 사람을 구하세요) github의 릴리스 페이지도 확인하세요.
playerctl
Fedora 28 이상에서 사용할 수 있습니다.
sudo dnf install playerctl
playerctl
이 COPR 저장소를 통해 Mageia 및 openSUSE에서 사용할 수 있습니다. 먼저 COPR에서 배포용 리포지토리 파일을 설치합니다. 그런 다음 선택한 패키지 관리자를 사용하여 playerctl
설치하십시오.
playerctl
은 Guix 설치 후 모든 Linux 배포판에 설치할 수 있는 Guix 패키지로 제공됩니다.
guix install playerctl
cli와 라이브러리를 사용하려면 GLib가 필요합니다(거의 모든 플레이어의 종속성이므로 이미 갖고 있을 것입니다). 연관된 자체 검사 바인딩 라이브러리를 사용하면 거의 모든 프로그래밍 언어에서 라이브러리를 사용할 수 있습니다.
또한 다음 빌드 종속성도 필요합니다.
내부 검사 데이터 구축을 위한 gobject-introspection( introspection
중간자 옵션으로 구성 가능)
문서 작성을 위한 gtk-doc( gtk-doc
meson 옵션으로 구성 가능)
Fedora 사용자는 redhat-rpm-config
도 설치해야 합니다.
개발에 기여할 프로젝트를 생성 및 빌드하고 playerctl을 /
에 설치하려면 다음을 수행하십시오.
meson mesonbuild
sudo ninja -C mesonbuild install
meson
설치해야 합니다. 배포판의 저장소에 이전 버전의 meson만 있는 경우 pip를 통해 최신 버전을 설치할 수 있습니다.
pip3 install meson
또한 gtk-doc 및 gobject-introspection은 기본적으로 활성화되어 있으며 -Dintrospection=false
및 -Dgtk-doc=false
를 사용하여 비활성화할 수 있습니다.
playerctl을 /
에 설치하지 않으려면 ninja를 호출하기 전에 DESTDIR
내보내어 다른 곳에 설치할 수 있습니다. 예:
export PREFIX="/usr/local"
meson --prefix="${PREFIX}" --libdir="${PREFIX}/lib" mesonbuild
export DESTDIR="$(pwd)/install"
ninja -C mesonbuild install
나중에 다음 변수를 내보내서 사용할 수 있습니다.
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"
스크립팅 라이브러리를 사용하려면 이 목록에서 원하는 언어를 찾아 바인딩 라이브러리를 설치하세요. 라이브러리에 대한 문서는 여기에서 호스팅됩니다. 라이브러리 사용 방법에 대한 예제는 예제 폴더를 참조하세요.
고급 사용자를 위해 Playerctl은 미디어 플레이어 이벤트를 구독하거나 재생 트랙의 아티스트 및 제목과 같은 메타데이터를 가져오는 기능과 같은 보다 세부적인 제어를 허용하는 선호하는 스크립팅 언어로 사용할 수 있는 자체 검사 가능한 라이브러리를 제공합니다. 이 예제에서는 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 ()
플레이어가 시작하고 종료할 때 들을 수 있는 더 완전한 예를 보려면 공식 예에서 player-manager.py를 참조하세요.
Playerctl에 대한 다음 기사를 확인하세요.
Playerctl 제작자의 관련 프로젝트:
이 저작물은 GNU Lesser General Public License(복사 참조)에 따라 사용할 수 있습니다.
저작권 © 2014, 토니 크리스시