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ępnie beep
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ówi blacklist pcspkr
, że wygląda to tak:
# brzydki i głośny hałas, który działa na nerwy wszystkich; powinno to zostać wykonane przez # nice pulseaudio bing (Ubuntu: # 77010) # czarna lista pcspkr
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
export BEEP=/usr/share/sounds/ubuntu/ringtones/Harmonics.ogg
Następnie przygotuj go jako polecenie
alias beep='paplay $BEEP'
Teraz po prostu biegnij, beep
kiedy go potrzebujesz. Na przykład, aby ostrzec Cię, gdy polecenie zostanie zakończone:
find . | grep treasure ; beep
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
i alias 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śli desktop | gnome | peripherals | keyboard | bell_mode
ustawienie jest obecne, zmień je z off
naon
dconf-editor
a jeśli org | gnome | settings-daemon | peripherals | keyboard | bell-mode
ustawienie jest obecne, zmień je z off
naon
pactl upload-sample /usr/share/sounds/gnome/default/alerts/glass.ogg bell.ogg
do pliku ~/.xprofile
(trzeba gnome-control-center-data
za glass.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 uruchom xset
polecenie w odpowiednim oknie terminala.
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
Wersja bell-mode
ustawienie wydaje się być org.gnome.settings-daemon.peripherals.keyboard
.
glass.ogg
zainstalowany pakiet zawierający
Ponieważ 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:
Jak już odpowiedziano , pcspkr
sterownik jądra dla PC Speaker znajduje się na czarnej liście w Ubuntu.
Tymczasowo włączaj do ponownego uruchomienia:
sudo modprobe pcspkr
Automatycznie włącz przy rozruchu:
sudo nano /etc/modprobe.d/blacklist.conf
(usuń lub skomentuj pcspkr
wiersz, poprzedzając go znakiem #
)
gnome-terminal
)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ę,
xset b 100 # perhaps not needed, on my system it was 40 by default
pactl upload-sample /usr/share/sounds/ubuntu/stereo/bell.ogg bell.ogg
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:
sudo apt-get install beep
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ć:
printf '\a'
Brzęczyk!
beep
Brzęczenie!
pcspkr
i bell.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żyj pcspkr
(dźwięk pochodzi z głośnika komputera na płycie głównej), podczas gdy printf '\a'
metoda oparta na systemie może działać bez użycia tylko bell.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 / lub xset b on
uruchomiona
pactl 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
i
play -n synth <duration in seconds> sine <freq in Hz> vol <volume (0-1)>
na przykład
play -n synth 0.1 sine 880 vol 0.5
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
:
load-sample-lazy x11-bell /usr/share/sounds/ubuntu/stereo/bell.ogg
load-module module-x11-bell sample=bell-windowing-system
na ten błąd , uruchompactl upload-sample /usr/share/sounds/ubuntu/stereo/bell.ogg bell.ogg
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.
O ile mi wiadomo, jest to błąd: dźwięk systemu rozbił się w Karmic pomimo heroicznych wysiłków, aby go naprawić .
modprobe pcsprk
(w konsoli) lub pactl 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.
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.
beep () { while true; do echo -en '\a'; sleep 1; done }
I jest używany w ten sposób
longrun-command ; beep