Chciałbym użyć dźwięku beep w skrypcie powłoki. Niestety żadna z metod, które znalazłem za pośrednictwem Google, nie działa dla mnie.
próbowałem
echo -e '\a'
echo -ne '\007'
i polecenie beep
po instalacji przez apt.
Co może być przyczyną?
Chciałbym użyć dźwięku beep w skrypcie powłoki. Niestety żadna z metod, które znalazłem za pośrednictwem Google, nie działa dla mnie.
próbowałem
echo -e '\a'
echo -ne '\007'
i polecenie beep
po instalacji przez apt.
Co może być przyczyną?
Odpowiedzi:
Najpierw uruchom,
sudo modprobe pcspkr
a następniebeep
powinno działać.Nie dzieje się tak dlatego, że domyślnie Ubuntu nie ładuje już sterownika sprzętowego generującego sygnały dźwiękowe.
Jeśli to zadziała, to włącz ładowanie pcspkr na stałe edytuj
/etc/modprobe.d/blacklist.conf
plik (za pomocągksudo gedit
być może) i skomentuj wiersz, który mówiblacklist pcspkr
, że wygląda to tak:źródło
blacklist pcspkr
muszę to zrobićmodprobe -r pcspkr && modprobe pcspkr
, aby działało. Również uruchomienie sygnału dźwiękowego do pracy nie jest tym samym, co uruchomienie dźwiękowego dzwonka, dlatego askubuntu.com/questions/22168/how-do-i-enable-the-terminal-bell powinno być nadal otwarte.Nie będąc fanem sygnału dźwiękowego pcspkr, używam sygnału dźwiękowego z jednego z dźwięków systemowych za pomocą polecenia paplay zainstalowanego serwera pulseaudio.
Najpierw znajdź dźwięk, który ci się podoba (możesz na przykład przeglądać / usr / share / sound dla niektórych dostępnych) i utworzyć odniesienie
Następnie przygotuj go jako polecenie
Teraz po prostu biegnij,
beep
kiedy go potrzebujesz. Na przykład, aby ostrzec Cię, gdy polecenie zostanie zakończone:źródło
echo -e '\a'
run-my-long-test-suite.sh; beep
i odczytać przepływ stosu, aż system będzie gotowy.export BEEP=/usr/share/sounds/ubuntu/stereo/dialog-information.ogg
ialias beep='paplay $BEEP --volume=32768'
teraz to działa dobrze dla mnie. (Pamiętaj, że możesz zmienić głośność za pomocąbeep
aliasu, np.beep --volume=15000
Gra na głośności -12dB.)Aby trwale rozwiązać ten problem:
gconf-editor
a jeślidesktop | gnome | peripherals | keyboard | bell_mode
ustawienie jest obecne, zmień je zoff
naon
dconf-editor
a jeśliorg | gnome | settings-daemon | peripherals | keyboard | bell-mode
ustawienie jest obecne, zmień je zoff
naon
pactl upload-sample /usr/share/sounds/gnome/default/alerts/glass.ogg bell.ogg
do pliku~/.xprofile
(trzebagnome-control-center-data
zaglass.ogg
)[ "$DISPLAY" ] && xset b 100
do pliku~/.bashrc
Najprostszym sposobem na aktywację tego rozwiązania jest ponowne uruchomienie.
Ponadto, aby natychmiast wdrożyć to rozwiązanie dla okna terminala, które jest już otwarte, uruchom
pactl
polecenie i uruchomxset
polecenie w odpowiednim oknie terminala.źródło
pactl upload-sample
polecenie w skrypcie powłoki, ale twoja metoda jest bardziej zorganizowana. Dzięki!pactl
polecenie~/.xprofile
, zostanie ono wykonane na początku sesji GUI.dconf-editor
Wersjabell-mode
ustawienie wydaje się byćorg.gnome.settings-daemon.peripherals.keyboard
.glass.ogg
zainstalowany pakiet zawierającyPonieważ jest to bardzo wysoko oceniane pytanie w Google, dodam kroki, które zrobiłem, aby ponownie włączyć dźwięk w konsoli i X11:
W przypadku konsoli Linux ( CTRL+ ALT+ F1... F6):
Dlaczego nie działa domyślnie
Jak już odpowiedziano ,
pcspkr
sterownik jądra dla PC Speaker znajduje się na czarnej liście w Ubuntu.Tymczasowo włączaj do ponownego uruchomienia:
Automatycznie włącz przy rozruchu:
(usuń lub skomentuj
pcspkr
wiersz, poprzedzając go znakiem#
)Dla terminali X11 (takich jak domyślne
gnome-terminal
)Dlaczego nie działa domyślnie
Pod X, podobnie jak w przypadku korzystania z Unity, KDE, Gnome Shell, zdarzenia dźwiękowe są przechwytywane przez PulseAudio dzięki
module-x11-bell
, który jest domyślnie ładowany o/usr/bin/start-pulseaudio-x11
. Próbka dźwięku PulseAudio odtwarzana jest po sygnale,bell.ogg
domyślnie jest pusta. Dodatkowo głośność dzwonka może być wyciszona.Aby tymczasowo włączyć bieżącą sesję,
Istnieją inne odpowiednie próbki, które możesz wypróbować
/usr/share/sounds
, na przykład sprawdź te na/usr/share/sounds/gnome/default/alerts/
Pamiętaj, że
beep
program nie jest tak naprawdę konieczny. Ale jeśli jest zainstalowany, używa głośnika PC. To był jedyny sposób, w jaki mogłem znaleźć włączenie brzęczyka w X:Aby automatycznie włączyć podczas rozruchu, po prostu dodaj powyższe linie do swojego
~/.profile
lub całego systemu na/etc/profile
Aby to przetestować:
Brzęczyk!
Brzęczenie!
źródło
pcspkr
ibell.ogg
są niezależnymi podejściami.beep
próbuje emitować sygnał dźwiękowy przy użyciu różnych metod, np.ioctl(console_fd, KIOCSOUND, period)
użyjpcspkr
(dźwięk pochodzi z głośnika komputera na płycie głównej), podczas gdyprintf '\a'
metoda oparta na systemie może działać bez użycia tylkobell.ogg
(dźwięk ze zwykłych głośników). Druga metoda może nie działać, dopóki usługa pulseaudio nie zostanie uruchomiona i / lubxset b on
uruchomionapactl upload-sample ...
było dla mnie złote. Jak ponownie na stałe skonfigurować ładowanie próbki?~/.profile
systemie lub w/etc/profile
load-sample bell.ogg /usr/share/sounds/ubuntu/stereo/bell.ogg
w/etc/pulseaudio/default.pa
.Zetknąłem się z tym problemem wcześniej. Z tego, co pamiętam, problem polega na tym, że dzwonek terminalu próbuje zadzwonić do wewnętrznego głośnika komputerowego (jak w starym komputerze stacjonarnym), ale laptopów i niektórych nowszych komputerów czegoś takiego brakuje.
Jedynym rozwiązaniem, jakie wtedy znalazłem, było
sudo apt-get install sox
ina przykład
źródło
play -q -n synth 2 pluck C5
. C5 jest notatką.W końcu znalazłem rozwiązanie, które nie wymaga
alsamixer
opcji PC Beep. Chyba pamiętam wszystkie moje zmiany:odkomentuj następujące elementy w
/etc/pulse/default.pa
:na ten błąd , uruchom
pactl upload-sample /usr/share/sounds/ubuntu/stereo/bell.ogg bell.ogg
źródło
Connection failure: Connection refused pa_context_connect() failed: Connection refused
.Failed to open module "module-esound-protocol-unix": file not found
. Prawdopodobnie nie warto o tym rozmawiać, ponieważ korzystam z 13.04, ale chciałbym móc zweryfikować twoje rozwiązanie.Jeśli masz rzeczywiste głośniki podłączone do komputera i nie słyszysz sygnału dźwiękowego, prawdopodobnie jest to spowodowane tym, że używasz compiz. Compiz polega na tym, że pulseaudio łapie sygnały dźwiękowe i gra je, podczas gdy metacity omija zwykłe ustawienia i używa libcanberra do odtwarzania dźwięku. Jeśli działa z metacity, a nie z kompizacją, to jest twój problem, w przeciwnym razie odpowiedź udzielona przez htorque jest prawidłowa.
źródło
O ile mi wiadomo, jest to błąd: dźwięk systemu rozbił się w Karmic pomimo heroicznych wysiłków, aby go naprawić .
źródło
modprobe pcsprk
(w konsoli) lubpactl upload-sample ...
w X11 i powraca denerwujący dźwięk :)„ Sygnał dźwiękowy działa tylko wtedy, gdy komputer ma„ głośnik ”. Wiele nowoczesnych laptopów / małych urządzeń nie ma takiego głośnika ”.
Spróbuj odtworzyć taki dźwięk:
play xxxxx.wav
znalazłem fajny plik wav , który wydaje się krótki i słodki, ale możesz też wybrać własny. Działa dla mnie, gdy wszystko inne zawiodło.Dzięki: tredegar i hk_centos
źródło
Alternatywne podejście - ustaw xterm / konsolę na „Visual Bell”, aby po usłyszeniu sygnału okno po prostu odwróciło kolory na krótki czas.
Mam funkcję bash o nazwie beep, aby zwrócić moją uwagę po zakończeniu polecenia.
I jest używany w ten sposób
źródło
Może być za późno, ALE, dla faceta w przyszłości szukającego tego:
źródło