【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 格式)

a.png

将scripts.tar.gz文件解压到主目录中。

如果您要使用命令解压缩,请将 scripts.tar.gz 移动到家目录中,然后从家目录打开终端并执行 tar zxvf scripts.tar.gz。

b.png

通过终端从scripts文件夹执行1-prepare-sound.sh脚本。

准备声音.sh

c.png
#!/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脚本运行结束后,将在桌面上创建七个启动器。

d.png

清空垃圾桶后会发出垃圾桶清空的声音。

#!/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的声音。

e.png
#!/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。

f.png

当电池电量降至30%以下时,触发低电量警报。

g.png

当电量低于20%时,将会发出电池低电量警报。

h.png

请注意,当进入范围时,警报只会响一次(不会连续响起)。

#!/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"

最终
最后

如果有什么不明白的地方,无法正常运作或者有任何改善建议,请在评论中告知。

广告
将在 10 秒后关闭
bannerAds