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/.
 Użytkownik
 Użytkownik
	
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





 Szczawiożerca
 Szczawiożerca
	






Da się ;)
Offline
 Użytkownik
 Użytkownik
	
yossarian napisał(-a):
Da się ;)
Dzięki za informację. Od razu poczułem się lepiej.
Znalazłem jakieś informacje na ten temat 
https://stackoverflow.com/questions/39736580/look-u … x-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





 Szczawiożerca
 Szczawiożerca
	






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
Modyfikujesz do swoich potrzeb — wybór aplikacji (znajdziesz w wynikach pactl list sink-inputs) i potem pozostaje już tylko podpięcie takiego skryptu pod odpowiedni skrót klawiaturowy.
Offline
 Użytkownik
 Użytkownik
	
Udało się. Bardzo dziękuję.
Offline





 Cenzor wirtualnego świata
 Cenzor wirtualnego świata
	




 Szczawiożerca
 Szczawiożerca
	






morfik napisał(-a):
Ten playerctl jest nawet w debianie i nawet ciekawe to jest — taki tekstowy pauvcontrol. xD
To tylko interfejs do obsługi odtwarzaczy multimedialnych.
Z Pulseaudio (i ogólnie systemem dźwięku) nie ma żadnego związku.
Coś jak mpc dla MPD.
Offline
 Użytkownik
 Użytkownik
	
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 … rd-shortcuts/
Tyle, że nie wiem jak go wysłać do aplikacji z systemu / z Plasmy.
Offline





 Szczawiożerca
 Szczawiożerca
	






gnomek napisał(-a):
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 … rd-shortcuts/
Tyle, że nie wiem jak go wysłać do aplikacji z systemu / z Plasmy.
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





 Cenzor wirtualnego świata
 Cenzor wirtualnego świata
	yossarian napisał(-a):
morfik napisał(-a):
Ten playerctl jest nawet w debianie i nawet ciekawe to jest — taki tekstowy pauvcontrol. xD
To tylko interfejs do obsługi odtwarzaczy multimedialnych.
Z Pulseaudio (i ogólnie systemem dźwięku) nie ma żadnego związku.
Coś jak mpc dla MPD.
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





 Szczawiożerca
 Szczawiożerca
	






No jak w każdym odtwarzaczu ;)
Offline





 Cenzor wirtualnego świata
 Cenzor wirtualnego świata
	 Użytkownik
 Użytkownik
	
#!/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
donepacmd 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





 Szczawiożerca
 Szczawiożerca
	






morfik napisał(-a):
Smplayer raczej nie ściszy amaroka. xD
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
Offline
 Użytkownik
 Użytkownik
	
> 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
doneto nie działa.
Ostatnio edytowany przez gnomek (2018-12-23 17:04:50)
Offline





 Szczawiożerca
 Szczawiożerca
	






gnomek napisał(-a):
> 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.Kod:
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'
Przecież miałeś tam gotowca — po co tworzysz jakieś nieistniejące problemy?
Offline
 Użytkownik
 Użytkownik
	
sh ten_skrypt Spotify Nieprawidłowe określenie indeksu odpływu wejścia
Offline





 Szczawiożerca
 Szczawiożerca
	






Pokaż aktualny wynik:
pacmd list-sink-inputs
Offline
 Użytkownik
 Użytkownik
	
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





 Szczawiożerca
 Szczawiożerca
	






Miało być:
pactl list sink-inputs
Skąd te pacmd w ogóle wziąłeś?
Offline
 Użytkownik
 Użytkownik
	
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-u … x-by-property
Offline





 Szczawiożerca
 Szczawiożerca
	






pactl set-sink-input-mute 4 toggle
Tak działa?
Stąd
https://stackoverflow.com/questions/39736580/look-u … x-by-property
No ciężko nadążyć jak korzystasz z różnych sposobów w tym samym czasie.
Offline
 Użytkownik
 Użytkownik
	
pactl set-sink-input-mute 4 toggle
Działa. 
Chyba te dwa polecenia pokazują to samego. Ale nie ważne.
Offline





 Szczawiożerca
 Szczawiożerca
	






gnomek napisał(-a):
Kod:
pactl set-sink-input-mute 4 toggleDziała.
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
Offline
 Użytkownik
 Użytkownik
	
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