Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Da się wyciszyć dźwięk dla skrótem klawiszowym konkretnej aplikacji, tj. bez wyciszenia innych aplikacji? Chodzi o środowisko Plasma 5.
Ostatnio edytowany przez gnomek (2018-12-23 17:19:21)
Offline
Da się ;)
Offline
[quote=yossarian]Da się ;)[/quote]
Dzięki za informację. Od razu poczułem się lepiej.
Znalazłem jakieś informacje na ten temat
https://stackoverflow.com/questions/39736580/look-up-pulseaudio-sink-input-index-by-property
i jeszcze coś takiego
https://github.com/acrisci/playerctl
ale nie wiem jak się do tego zabrać.
Ostatnio edytowany przez gnomek (2018-12-23 11:34:21)
Offline
O jaką aplikację chodzi?
Tu masz przykład, którego kiedyś używałem dla MPD:
#!/bin/sh
app_name="Music Player Daemon"
current_sink_num=''
sink_num_check=''
app_name_check=''
pactl list sink-inputs |while read line; do \
sink_num_check=$(echo "$line" |sed -rn 's/^Sink Input #(.*)/\1/p')
if [ "$sink_num_check" != "" ]; then
current_sink_num="$sink_num_check"
else
app_name_check=$(echo "$line" \
|sed -rn 's/application.name = "([^"]*)"/\1/p')
if [ "$app_name_check" = "$app_name" ]; then
echo "$current_sink_num" "$app_name_check"
pactl set-sink-input-mute "$current_sink_num" toggle
fi
fi
done[/quote]
Modyfikujesz do swoich potrzeb — wybór aplikacji (znajdziesz w wynikach [tt]pactl list sink-inputs[/tt]) i potem pozostaje już tylko podpięcie takiego skryptu pod odpowiedni skrót klawiaturowy.
Offline
Udało się. Bardzo dziękuję.
Offline
[quote=morfik]Ten playerctl jest nawet w debianie i nawet ciekawe to jest — taki tekstowy pauvcontrol. xD[/quote]
To tylko interfejs do obsługi odtwarzaczy multimedialnych.
Z Pulseaudio (i ogólnie systemem dźwięku) nie ma żadnego związku.
Coś jak [deb]mpc[/deb] dla MPD.
Offline
A jednak nie całkiem działa. Chciałem użyć tego dla Spotify. I działa jeśli się wpisze prawidłowo current_sink_num=''
Problem jest jednak taki, że Spotify ciągle zmienia ten numer.
Znalazłem info, że Spotify ma skrót dla mute: Ctrl-Shift-Down
https://support.spotify.com/is/using_spotify/system_settings/keyboard-shortcuts/
Tyle, że nie wiem jak go wysłać do aplikacji z systemu / z Plasmy.
Offline
[quote=gnomek]A jednak nie całkiem działa. Chciałem użyć tego dla Spotify. I działa jeśli się wpisze prawidłowo current_sink_num=''
Problem jest jednak taki, że Spotify ciągle zmienia ten numer.
Znalazłem info, że Spotify ma skrót dla mute: Ctrl-Shift-Down
https://support.spotify.com/is/using_spotify/system_settings/keyboard-shortcuts/
Tyle, że nie wiem jak go wysłać do aplikacji z systemu / z Plasmy.[/quote]
No MPD też ciągle zmienia (co utwór) i ten skrypt jest właśnie po to by sprawdzał na bieżąco.
Pokaż jak on u ciebie wygląda.
Offline
[quote=yossarian][quote=morfik]Ten playerctl jest nawet w debianie i nawet ciekawe to jest — taki tekstowy pauvcontrol. xD[/quote]
To tylko interfejs do obsługi odtwarzaczy multimedialnych.
Z Pulseaudio (i ogólnie systemem dźwięku) nie ma żadnego związku.
Coś jak [deb]mpc[/deb] dla MPD.[/quote]
No tak czy inaczej można przy jego pomocy operować dźwiękiem playerów i sobie ściszać/zgłaszać/mutować konkretne appki. xD
Ostatnio edytowany przez morfik (2018-12-23 16:53:46)
Offline
No jak w każdym odtwarzaczu ;)
Offline
#!/bin/sh app_name="Spotify" current_sink_num='4' sink_num_check='' app_name_check='' pactl list sink-inputs |while read line; do \ sink_num_check=$(echo "$line" |sed -rn 's/^Sink Input #(.*)/\1/p') if [ "$sink_num_check" != "" ]; then current_sink_num="$sink_num_check" else app_name_check=$(echo "$line" \ |sed -rn 's/application.name = "([^"]*)"/\1/p') if [ "$app_name_check" = "$app_name" ]; then echo "$current_sink_num" "$app_name_check" pactl set-sink-input-mute "$current_sink_num" toggle fi fi done
pacmd list-sink-inputs 1 sink input(s) available. index: 4 driver: <protocol-native.c> flags: START_CORKED state: RUNNING sink: 0 <alsa_output.pci-0000_00_1b.0.analog-stereo> volume: front-left: 65535 / 100% / -0,00 dB, front-right: 65535 / 100% / -0,00 dB balance 0,00 muted: no current latency: 537,78 ms requested latency: 980,00 ms sample spec: s16le 2 k 44100 Hz channel map: front-left,front-right Stereo resample method: (null) module: 13 client: 124 <Spotify> properties: media.role = "music" media.name = "Spotify" application.name = "Spotify" native-protocol.peer = "UNIX socket client" native-protocol.version = "32" application.process.id = "14081" application.process.user = "gnomek" application.process.host = "gnomek-pc" application.process.binary = "spotify" window.x11.display = ":0" application.language = "pl_PL.UTF-8" application.process.machine_id = "44df6c1d58a049cda85bcaf8b0fe6daf" application.process.session_id = "1" application.icon_name = "spotify-client" module-stream-restore.id = "sink-input-by-media-role:music"
Ostatnio edytowany przez gnomek (2018-12-23 16:59:43)
Offline
[quote=morfik]Smplayer raczej nie ściszy amaroka. xD[/quote]
Ale przecież playerctl to nie kolejny odtwarzacz, tylko interfejs do zarządzania odtwarzaczami.
Na podobnej zasadzie działają fizyczne klawisze Play, Pause, Next itp.
@gnomek:
Jak tam ręcznie na sztywno przypisujesz wartość zmiennej "current_sink_num" to w jaki sposób ma to niby działać? ;)
#!/bin/sh
app_name="Spotify"
current_sink_num=''
sink_num_check=''
app_name_check=''
pactl list sink-inputs |while read line; do \
sink_num_check=$(echo "$line" |sed -rn 's/^Sink Input #(.*)/\1/p')
if [ "$sink_num_check" != "" ]; then
current_sink_num="$sink_num_check"
else
app_name_check=$(echo "$line" \
|sed -rn 's/application.name = "([^"]*)"/\1/p')
if [ "$app_name_check" = "$app_name" ]; then
echo "$current_sink_num" "$app_name_check"
pactl set-sink-input-mute "$current_sink_num" toggle
fi
fi
done[/quote]
Offline
> Jak tam ręcznie na sztywno przypisujesz wartość zmiennej "current_sink_num" to w jaki sposób ma to niby działać? ;)
To jak? Może to się da użyć? Ale nie wiem jak.
pacmd list-sink-inputs | tr '\n' '\r' | perl -pe 's/ *index: ([0-9]+).+?application\.name = "([^\r]+)"\r.+?(?=index:|$)/\2:\1\r/g' | tr '\r' '\n'
Tak na czysto:
#!/bin/sh app_name="Spotify" current_sink_num='' sink_num_check='' app_name_check='' pactl list sink-inputs |while read line; do \ sink_num_check=$(echo "$line" |sed -rn 's/^Sink Input #(.*)/\1/p') if [ "$sink_num_check" != "" ]; then current_sink_num="$sink_num_check" else app_name_check=$(echo "$line" \ |sed -rn 's/application.name = "([^"]*)"/\1/p') if [ "$app_name_check" = "$app_name" ]; then echo "$current_sink_num" "$app_name_check" pactl set-sink-input-mute "$current_sink_num" toggle fi fi done
to nie działa.
Ostatnio edytowany przez gnomek (2018-12-23 17:04:50)
Offline
[quote=gnomek]> Jak tam ręcznie na sztywno przypisujesz wartość zmiennej "current_sink_num" to w jaki sposób ma to niby działać? ;)
To jak? Może to się da użyć? Ale nie wiem jak.
pacmd list-sink-inputs | tr '\n' '\r' | perl -pe 's/ *index: ([0-9]+).+?application\.name = "([^\r]+)"\r.+?(?=index:|$)/\2:\1\r/g' | tr '\r' '\n'
[/quote]
Przecież miałeś tam gotowca — po co tworzysz jakieś nieistniejące problemy?
Offline
sh ten_skrypt Spotify Nieprawidłowe określenie indeksu odpływu wejścia
Offline
Pokaż aktualny wynik:
pacmd list-sink-inputs
Offline
pacmd list-sink-inputs 1 sink input(s) available. index: 4 driver: <protocol-native.c> flags: START_CORKED state: RUNNING sink: 0 <alsa_output.pci-0000_00_1b.0.analog-stereo> volume: front-left: 65535 / 100% / -0,00 dB, front-right: 65535 / 100% / -0,00 dB balance 0,00 muted: no current latency: 1027,46 ms requested latency: 980,00 ms sample spec: s16le 2 k 44100 Hz channel map: front-left,front-right Stereo resample method: (null) module: 13 client: 124 <Spotify> properties: media.role = "music" media.name = "Spotify" application.name = "Spotify" native-protocol.peer = "UNIX socket client" native-protocol.version = "32" application.process.id = "14081" application.process.user = "gnomek" application.process.host = "gnomek-pc" application.process.binary = "spotify" window.x11.display = ":0" application.language = "pl_PL.UTF-8" application.process.machine_id = "44df6c1d58a049cda85bcaf8b0fe6daf" application.process.session_id = "1" application.icon_name = "spotify-client" module-stream-restore.id = "sink-input-by-media-role:music"
Offline
Miało być:
pactl list sink-inputs
Skąd te pacmd w ogóle wziąłeś?
Offline
pactl list sink-inputs 4. odpływ wejścia Sterownik: protocol-native.c Właściciel modułu: 13 Klient: 124 Odpływ: 0 Określenie próbki: s16le 2 k 44100 Hz Mapa kanałów: front-left,front-right Format: pcm, format.sample_format = "\"s16le\"" format.rate = "44100" format.channels = "2" format.channel_map = "\"front-left,front-right\"" Zakorkowane: nie Wyciszenie: nie Poziom głośności: front-left: 65535 / 100% / -0,00 dB, front-right: 65535 / 100% / -0,00 dB balans 0,00 Opóźnienie bufora: 1028231 us Opóźnienie odpływu: 578937 us Metoda resamplingu: nie dotyczy Właściwości: media.role = "music" media.name = "Spotify" application.name = "Spotify" native-protocol.peer = "UNIX socket client" native-protocol.version = "32" application.process.id = "14081" application.process.user = "gnomek" application.process.host = "gnomek-pc" application.process.binary = "spotify" window.x11.display = ":0" application.language = "pl_PL.UTF-8" application.process.machine_id = "44df6c1d58a049cda85bcaf8b0fe6daf" application.process.session_id = "1" application.icon_name = "spotify-client" module-stream-restore.id = "sink-input-by-media-role:music"
> Skąd te pacmd w ogóle wziąłeś?
Stąd
https://stackoverflow.com/questions/39736580/look-up-pulseaudio-sink-input-index-by-property
Offline
pactl set-sink-input-mute 4 toggle
Tak działa?
Stąd
https://stackoverflow.com/questions/39736580/look-u … x-by-property[/quote]
No ciężko nadążyć jak korzystasz z różnych sposobów w tym samym czasie.
Offline
pactl set-sink-input-mute 4 toggle
Działa.
Chyba te dwa polecenia pokazują to samego. Ale nie ważne.
Offline
[quote=gnomek]
pactl set-sink-input-mute 4 toggle
Działa.[/quote]
Sprawdź tak:
#!/bin/sh
LANGUAGE="en_US"
app_name="Spotify"
current_sink_num=''
sink_num_check=''
app_name_check=''
pactl list sink-inputs |while read line; do \
sink_num_check=$(echo "$line" |sed -rn 's/^Sink Input #(.*)/\1/p')
if [ "$sink_num_check" != "" ]; then
current_sink_num="$sink_num_check"
else
app_name_check=$(echo "$line" \
|sed -rn 's/application.name = "([^"]*)"/\1/p')
if [ "$app_name_check" = "$app_name" ]; then
echo "$current_sink_num" "$app_name_check"
pactl set-sink-input-mute "$current_sink_num" toggle
fi
fi
done[/quote]
Offline
Teraz działa. Pięknie dziękuję.
Rzeczywiście, w Spotify mam ustawiony angielski.
Ostatnio edytowany przez gnomek (2018-12-23 17:20:42)
Offline
Time (s) | Query |
---|---|
0.00022 | SET CHARSET latin2 |
0.00008 | SET NAMES latin2 |
0.00191 | SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='3.87.209.162' WHERE u.id=1 |
0.00208 | REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '3.87.209.162', 1711653311) |
0.00087 | SELECT * FROM punbb_online WHERE logged<1711653011 |
0.00143 | DELETE FROM punbb_online WHERE ident='44.192.75.131' |
0.00090 | DELETE FROM punbb_online WHERE ident='47.128.119.118' |
0.00082 | DELETE FROM punbb_online WHERE ident='47.128.31.173' |
0.00085 | DELETE FROM punbb_online WHERE ident='47.128.35.181' |
0.00100 | SELECT topic_id FROM punbb_posts WHERE id=322494 |
0.00156 | SELECT id FROM punbb_posts WHERE topic_id=30779 ORDER BY posted |
0.00102 | SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=30779 AND t.moved_to IS NULL |
0.00016 | SELECT search_for, replace_with FROM punbb_censoring |
0.00254 | SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=30779 ORDER BY p.id LIMIT 0,25 |
0.00111 | UPDATE punbb_topics SET num_views=num_views+1 WHERE id=30779 |
Total query time: 0.01655 s |