【Linux】增加声音输出的方法【Ubuntu】【Ubuntu MATE】
简要概述
在Linux中,有与Windows不同的声音配置设置。
在以前的文章中,我已经介绍了Linux的声音设置方法。
即使注册了,也有一些音频是不会被使用的。
因此,今天我会介绍如何播放更多的声音,例如启动音、关闭音等。
请下载
我会把这次套餐的链接放在这里。
请下载您的台式电脑环境的scripts.tar.gz文件。
(2022/9/1记录)
已更新套件,并更改为tar.gz格式。
伙计
GNOME、Budgie、以及基于GNOME的桌面环境
Xfce是一个桌面环境的选择。
LXQt = 轻量级桌面环境
请注意
由于Cinnamon、KDE和Trinity(Q4OS)的声音主题结构不同,如果要介绍它们,将在另一篇文章中介绍。
(2022/9/1更新)
我已经完成了这篇文章。
注册方式
我将在Ubuntu MATE上使用MATE套件进行注册,作为示例。
请注意,此处提供的所有shell脚本均适用于MATE。
下载 scripts.tar.gz 文件。(请忽略图片上显示的是7z,请认为是 tar.gz 格式)
将scripts.tar.gz文件解压到主目录中。
如果您要使用命令解压缩,请将 scripts.tar.gz 移动到家目录中,然后从家目录打开终端并执行 tar zxvf scripts.tar.gz。
通过终端从scripts文件夹执行1-prepare-sound.sh脚本。
准备声音.sh
#!/bin/bash
gsettings set org.mate.sound event-sounds true
gsettings set org.mate.sound input-feedback-sounds true
directory=$(cd $(dirname $0); pwd)
XDG_DESKTOP_DIR=`xdg-user-dir DESKTOP`
cd $XDG_DESKTOP_DIR
echo -e "#!/usr/bin/env xdg-open\n[Desktop Entry]\nVersion=1.0\nType=Application\nTerminal=false\nIcon=window-close\nIcon[ja]=window-close\nName[ja]=ゴミ箱を空にする\nExec=$directory/recycle.sh\nName=ゴミ箱を空にする" > ゴミ箱を空にする.desktop
echo -e "#!/usr/bin/env xdg-open\n[Desktop Entry]\nVersion=1.0\nType=Application\nTerminal=false\nIcon=system-log-out\nIcon[ja]=system-log-out\nName[ja]=ログアウト\nExec=$directory/logout.sh\nName=ログアウト" > ログアウト.desktop
echo -e "#!/usr/bin/env xdg-open\n[Desktop Entry]\nVersion=1.0\nType=Application\nTerminal=false\nIcon=system-lock-screen\nIcon[ja]=system-lock-screen\nName[ja]=ロック\nExec=$directory/lock.sh\nName=ロック" > ロック.desktop
echo -e "#!/usr/bin/env xdg-open\n[Desktop Entry]\nVersion=1.0\nType=Application\nTerminal=false\nIcon=system-hibernate\nIcon[ja]=system-hibernate\nName[ja]=ハイバネート\nExec=systemctl hibernate\nName=ハイバネート" > ハイバネート.desktop
echo -e "#!/usr/bin/env xdg-open\n[Desktop Entry]\nVersion=1.0\nType=Application\nTerminal=false\nIcon=system-suspend\nIcon[ja]=system-suspend\nName[ja]=サスペンド\nExec=systemctl suspend\nName=サスペンド" > サスペンド.desktop
echo -e "#!/usr/bin/env xdg-open\n[Desktop Entry]\nVersion=1.0\nType=Application\nTerminal=false\nIcon=system-reboot\nIcon[ja]=system-reboot\nName[ja]=再起動\nExec=$directory/reboot.sh\nName=再起動" > 再起動.desktop
echo -e "#!/usr/bin/env xdg-open\n[Desktop Entry]\nVersion=1.0\nType=Application\nTerminal=false\nIcon=system-shutdown\nIcon[ja]=system-shutdown\nName[ja]=シャットダウン\nExec=$directory/shutdown.sh\nName=シャットダウン" > シャットダウン.desktop
chmod 755 *.desktop
mkdir ~/.config/autostart
cd ~/.config/autostart
echo -e "[Desktop Entry]\nType=Application\nExec=canberra-gtk-play -i \"desktop-login\"\nHidden=false\nName[ja]=起動音\nName=起動音\nComment[ja]=\nComment=\nX-MATE-Autostart-Delay=0" > canberra-gtk-play.desktop
if [ -d "/sys/class/power_supply" ]; then
sudo apt update
sudo apt install acpi
echo -e "[Desktop Entry]\nType=Application\nExec=$directory/battery-alarm.sh\nHidden=false\nName[ja]=バッテリーアラーム\nName=バッテリーアラーム\nComment[ja]=\nComment=\nX-MATE-Autostart-Delay=0" > battery-alarm.sh.desktop
($directory/battery-alarm.sh &)
fi
如果在途中收到指示,我们会按照指示来进行操作。
用中文原生语言转述以下内容:只需提供一种选项:
启动器。
当prepare-sound.sh脚本运行结束后,将在桌面上创建七个启动器。
清空垃圾桶后会发出垃圾桶清空的声音。
#!/bin/bash
rm -r ~/.local/share/Trash/files/*
rm -r ~/.local/share/Trash/info/*
rm -r /media/*/*/.Trash-1000
canberra-gtk-play -i "trash-empty"
登出、重新启动、关机是通过播放desktop-logout、desktop-logoff、system-shutdown之一来完成的。
#!/bin/bash
canberra-gtk-play -i "desktop-logout" || canberra-gtk-play -i "desktop-logoff" || canberra-gtk-play -i "system-shutdown"
killall mate-session
#!/bin/bash
canberra-gtk-play -i "desktop-logout" || canberra-gtk-play -i "desktop-logoff" || canberra-gtk-play -i "system-shutdown"
reboot
#!/bin/bash
canberra-gtk-play -i "desktop-logout" || canberra-gtk-play -i "desktop-logoff" || canberra-gtk-play -i "system-shutdown"
poweroff
当屏幕被锁定后,会发出service-logout的声音。然后使用zenity命令显示一个消息框并等待,
当消息框关闭后,会发出service-login的声音。
#!/bin/bash
mate-screensaver-command -l
canberra-gtk-play -i "service-logout"
zenity --info --text="再開します。" --no-wrap
canberra-gtk-play -i "service-login"
在中文中,以下是对原文的本地化释义:
在不使用Shell脚本的情况下,直接执行Hibernation(休眠)和Suspend(挂起)操作。
启动声音
起动声音也会被注册。
#!/bin/bash
directory=$(cd $(dirname $0); pwd)
canberra-gtk-play -i "desktop-login" || canberra-gtk-play -i "system-ready"
电池警报
而且,对于笔记本电脑,可以设置电池警报。
当电池充电达到80%以上时,会发出充电完成警报battery-full。
当电池电量降至30%以下时,触发低电量警报。
当电量低于20%时,将会发出电池低电量警报。
请注意,当进入范围时,警报只会响一次(不会连续响起)。
#!/bin/bash
if [ $$ != `pgrep -fo $0` ]; then
exit 1
fi
full_battery_alarm=0
low_battery_alarm=0
critical_battery_alarm=0
while true
do
export DISPLAY=:0.0
battery_level=`acpi -b | grep -P -o '[0-9]+(?=%)'`
if on_ac_power; then #check if AC is plugged in
if [ $battery_level -ge 80 ]; then #check if the battery level is over 80%
if [ $full_battery_alarm -eq 0 ]; then
notify-send -u critical "バッテリ充電完了アラーム" "バッテリーの充電が完了しました。充電器を取り外してください。" -i battery-full-charged
canberra-gtk-play -i "battery-full"
full_battery_alarm=1
fi
fi
low_battery_alarm=0
critical_battery_alarm=0
else
if [ $battery_level -le 20 ]; then #check if the battery level is under 20%
if [ $critical_battery_alarm -eq 0 ]; then
notify-send -u critical "バッテリ切れアラーム" "バッテリーが切れそうになりました。充電してください。" -i battery-caution
canberra-gtk-play -i "battery-caution"
critical_battery_alarm=1
fi
elif [ $battery_level -le 30 ]; then #check if the battery level is under 30%
if [ $low_battery_alarm -eq 0 ]; then
notify-send -u normal "バッテリ低下アラーム" "バッテリーが低下しました。充電する準備をしてください。" -i battery-low
canberra-gtk-play -i "battery-low"
low_battery_alarm=1
fi
fi
full_battery_alarm=0
fi
sleep 60 #wait for 60 seconds before checking again
done
这个Shell脚本是参考了这边的。
更改音效主题
在Ubuntu MATE中,您可以在音频设置中轻松更改音频主题,但也有许多其他发行版没有这种功能。
因此,我们准备了change-sound.sh。
#!/bin/bash
if [ $# -eq 0 ]; then
ls /usr/share/sounds
read theme
else
theme=$1
fi
if [ -e "/usr/share/sounds/$theme/index.theme" ]; then
gsettings set org.mate.sound theme-name $theme
theme_name=`sed -n 's/Name=//p' "/usr/share/sounds/$theme/index.theme"`
notify-send -i dialog-information "サウンドのテーマ変更" "サウンドのテーマを$theme_nameに変更しました。"
canberra-gtk-play -i "theme-demo"
else
notify-send -i dialog-error "サウンドのテーマ変更" "サウンドのテーマ$themeは見つかりませんでした。"
canberra-gtk-play -i "dialog-error"
fi
运行此Shell脚本,将显示声音主题文件夹的名称列表。
输入文件夹名称,声音主题将被更改,并播放theme-demo声音。
但是,如果没有index.theme的文件夹,即使输入文件夹名称,声音主题也不会被更改。
音效测试
我准备了一个用于测试当前声音主题的Shell脚本。
它将测试Linux的所有声音。
sound-test.sh会播放默认音乐,如果没有与音乐主题相关的音乐。
#!/bin/bash
play_sound() {
clear
echo "$1"
canberra-gtk-play -i "$1"
}
play_sound "network-connectivity-lost"
play_sound "network-connectivity-error"
play_sound "dialog-error"
play_sound "battery-low"
play_sound "suspend-error"
play_sound "software-update-urgent"
play_sound "power-unplug-battery-low"
play_sound "message"
play_sound "message-new-instant"
play_sound "message-new-email"
sound-test-debug.sh只会播放与音频主题相关的声音。
还会显示声音的完整路径。
#!/bin/bash
play_sound_debug() {
echo "$1"
theme=`gsettings get org.mate.sound theme-name | sed "s/'//g"`
sound="/usr/share/sounds/$theme/stereo/$1"
if [ -e "$sound.oga" ]; then
echo "$sound.oga"
paplay "$sound.oga"
elif [ -e "$sound.ogg" ]; then
echo "$sound.ogg"
paplay "$sound.ogg"
elif [ -e "$sound.wav" ]; then
echo "$sound.wav"
paplay "$sound.wav"
else
echo "サウンドがありません。"
fi
}
play_sound_debug "network-connectivity-lost"
play_sound_debug "network-connectivity-error"
play_sound_debug "dialog-error"
play_sound_debug "battery-low"
play_sound_debug "suspend-error"
play_sound_debug "software-update-urgent"
play_sound_debug "power-unplug-battery-low"
play_sound_debug "message"
play_sound_debug "message-new-instant"
play_sound_debug "message-new-email"
最终
最后
如果有什么不明白的地方,无法正常运作或者有任何改善建议,请在评论中告知。