概要
前回の記事では、MATE、GNOMEなど、/usr/share/sounds
にサウンドのテーマ入れればすぐに鳴らせるデスクトップ環境でもっと多くの音を鳴らす方法を紹介しました。
今回は、サウンドのテーマの構造が異なっているCinnamon、KDE、Trinity(Q4OS)でもっと多くの音を鳴らす方法を紹介します。
ダウンロード
今回のセットのリンクを貼ります。
Cinnamon
KDE
Trinity(Q4OS)
登録方法
前回紹介した方法と同じです。
scripts.tar.gzをダウンロードします。
scripts.tar.gzをホームに展開します。
scriptsフォルダーから端末を使って1-prepare-sound.shを実行します。
サウンドのテーマの変更
Cinnamon、KDE、Trinity(Q4OS)ではサウンドのテーマの構造が異なっていますが、可能な限りGNOMEなどと同じようにサウンドのテーマを変更できるようにしました。
サウンドのテーマの構造が異なっているとはいえ、GNOMEなどのサウンドのテーマの構造は使われていないだけで存在しているので、使われているのサウンドのテーマの構造と同時にGNOMEなどのサウンドのテーマも変更します。
change-sound.sh
を実行すれば、同じようにサウンドのテーマのフォルダー名を入力して、テーマを変更できます。
説明
以下、説明です。
Cinnamon
サウンドのテーマの構造
サウンド設定はgsettingsの中に書かれています。
gssettingsとはWindowsでいうレジストリのようなものです。
org.cinnamon.sounds
のようなURLのようなものをスキーマといいます。
スキーマの中にlogin-enabled
などのような値が入っていて、これをキーといいます。
gsettingsのorg.cinnamon.sounds
の(サウンド名)-enabled
がtrue
だと有効、false
だと無効です。
gsettingsのorg.cinnamon.sounds
の(サウンド名)-file
にサウンドのパスが登録されています。
ただし、volume-sound
だけがスキーマがorg.cinnamon.sounds
ではなくorg.cinnamon.desktop.sound
なので注意が必要です。
change-cinnamon-sound.sh
GNOMEなどのサウンド設定に一致するCinnamonのサウンド設定をgsettingsに登録することによって、Cinnamonでも同じようにサウンドのテーマを使えるようにします。
GNOMEなどのサウンド設定にはCinnamonのtile
に一致するサウンド設定はないので、コメントにしています。
#!/bin/bash
theme=$1
change_cinnamon_sound() {
sound="/usr/share/sounds/$theme/stereo/$2"
if [ "$1" = "volume-sound" ]; then
schema="org.cinnamon.desktop.sound"
else
schema="org.cinnamon.sounds"
fi
if [ -e "$sound.oga" ]; then
gsettings set $schema $1-file "$sound.oga"
elif [ -e "$sound.ogg" ]; then
gsettings set $schema $1-file "$sound.ogg"
elif [ -e "$sound.wav" ]; then
gsettings set $schema $1-file "$sound.wav"
else
return 1
fi
return 0
}
change_cinnamon_sound "login" "desktop-login"
change_cinnamon_sound "logout" "desktop-logout" || change_cinnamon_sound "logout" "desktop-logoff"
change_cinnamon_sound "switch" "desktop-switch-left" || change_cinnamon_sound "switch" "desktop-switch-right"
change_cinnamon_sound "map" "window-new"
change_cinnamon_sound "close" "window-close"
change_cinnamon_sound "minimize" "window-minimized"
change_cinnamon_sound "maximize" "window-maximized"
change_cinnamon_sound "unmaximize" "window-unmaximized"
#change_cinnamon_sound "tile" "window-tile"
change_cinnamon_sound "plug" "device-added"
change_cinnamon_sound "unplug" "device-removed"
change_cinnamon_sound "notification" "notification"
change_cinnamon_sound "volume-sound" "audio-volume-change"
play-cinnamon-sound.sh
./play-cinnamon-sound.sh "(サウンド名)"
でCinnamonの音を鳴らします。
volume-sound
の時だけスキーマを変更しています。
#!/bin/bash
if [ "$1" = "volume-sound" ]; then
schema=org.cinnamon.desktop.sound
else
schema=org.cinnamon.sounds
fi
if [ `gsettings get $schema $1-enabled` = "true" ]; then
paplay `gsettings get $schema $1-file | sed "s/'//g"`
fi
cinnamon-sound-test.sh
Cinnamonの音をテストします。
#!/bin/bash
play_cinnamon_sound_debug() {
echo "$2"
if [ "$1" = "volume-sound" ]; then
schema=org.cinnamon.desktop.sound
else
schema=org.cinnamon.sounds
fi
if [ `gsettings get $schema $1-enabled` = "true" ]; then
sound=`gsettings get $schema $1-file | sed "s/'//g"`
echo "$sound"
paplay "$sound"
else
echo "無効"
fi
}
play_cinnamon_sound_debug "login" "Cinnamon の開始"
play_cinnamon_sound_debug "logout" "Cinnamon の終了"
play_cinnamon_sound_debug "switch" "ワークスペースの切り替え"
play_cinnamon_sound_debug "map" "新しいウィンドウを開く"
play_cinnamon_sound_debug "close" "ウィンドウを閉じる"
play_cinnamon_sound_debug "minimize" "ウィンドウの最小化"
play_cinnamon_sound_debug "maximize" "ウィンドウの最大化"
play_cinnamon_sound_debug "unmaximize" "ウィンドウの最大化を解除"
play_cinnamon_sound_debug "tile" "ウィンドウのタイル表示/スナップ操作"
play_cinnamon_sound_debug "plug" "デバイスの接続"
play_cinnamon_sound_debug "unplug" "デバイスの取り外し"
play_cinnamon_sound_debug "notification" "通知の表示"
play_cinnamon_sound_debug "volume-sound" "音量の変更"
reset-sound.sh
gsettingsをリセットすることにより、Cinnamonのサウンドをリセットします。
#!/bin/bash
gsettings reset-recursively org.cinnamon.sounds
gsettings reset org.cinnamon.desktop.sound volume-sound-enabled
gsettings reset org.cinnamon.desktop.sound volume-sound-file
gsettings reset org.cinnamon.desktop.sound theme-name
KDE
サウンドのテーマの構造
デフォルトのサウンド設定は/usr/share/knotifications5
の中の.notifyrc
ファイルに書かれており、変更したサウンド設定は~/.config
の中の.notifyrc
ファイルに書かれています。
make-notifyrc.sh
.notifyrc
ファイルを作成します。
GNOMEなどのサウンド設定に一致するKDEのサウンド設定を.notifyrc
ファイルに書き込むことによって、KDEでも同じようにサウンドのテーマを使えるようにします。
#!/bin/bash
theme="$1"
check_sound() {
if [ -e "/usr/share/sounds/$theme/stereo/$1.oga" ]; then
format="oga"
elif [ -e "/usr/share/sounds/$theme/stereo/$1.ogg" ]; then
format="ogg"
elif [ -e "/usr/share/sounds/$theme/stereo/$1.wav" ]; then
format="wav"
else
return 1
fi
if [ "$3" = "" ]; then
action=""
else
action="Action=$3\n"
fi
setting="[Event/$2]\n${action}Execute=\nLogfile=\nSound=$theme/stereo/$1.$format\nTTS="
if [ -e ~/.config/$notifyrc.notifyrc ]; then
echo -e "\n$setting" >> ~/.config/$notifyrc.notifyrc
else
echo -e "$setting" > ~/.config/$notifyrc.notifyrc
fi
return 0
}
notifyrc="plasma_workspace"
rm ~/.config/$notifyrc.notifyrc
check_sound "completion-fail" "Textcompletion: no match" "Sound"
check_sound "completion-partial" "Textcompletion: partial match" "Sound"
check_sound "completion-rotation" "Textcompletion: rotation" "Sound"
check_sound "trash-empty" "Trash: emptied" ""
check_sound "bell" "beep" "" || check_sound "bell-window-system" "beep" ""
check_sound "suspend-error" "catastrophe" ""
check_sound "desktop-logout" "exitkde" "Sound" || check_sound "desktop-logoff" "exitkde" "Sound"
check_sound "suspend-error" "fatalerror" ""
check_sound "dialog-error" "messageCritical" ""
check_sound "dialog-information" "messageInformation" ""
check_sound "dialog-warning" "messageWarning" ""
check_sound "dialog-question" "messageboxQuestion" ""
check_sound "notification" "notification" ""
check_sound "desktop-login" "startkde" "Sound"
notifyrc="ksmserver"
rm ~/.config/$notifyrc.notifyrc
check_sound "service-logout" "locked" "Sound"
check_sound "service-login" "unlocked" "Sound"
notifyrc="networkmanagement"
rm ~/.config/$notifyrc.notifyrc
check_sound "network-connectivity-established" "ConnectionActivated" "Sound|Popup"
check_sound "network-connectivity-lost" "ConnectionDeactivated" "Sound|Popup"
check_sound "network-connectivity-error" "FailedToActivateConnection" "Sound|Popup"
notifyrc="powerdevil"
rm ~/.config/$notifyrc.notifyrc
check_sound "battery-caution" "criticalbattery" ""
check_sound "battery-full" "fullbattery" "Sound"
check_sound "battery-low" "lowbattery" ""
check_sound "battery-low" "lowperipheralbattery" ""
check_sound "power-plug" "pluggedin" ""
check_sound "power-unplug" "unplugged" ""
notifyrc="akonadi_newmailnotifier_agent"
rm ~/.config/$notifyrc.notifyrc
check_sound "message-new-email" "new-email" "Sound|Popup"
notifyrc="konsole"
rm ~/.config/$notifyrc.notifyrc
check_sound "bell" "BellInvisible" "Sound|Popup" || check_sound "bell-terminal" "BellInvisible" "Sound|Popup"
check_sound "bell" "BellVisible" "Sound" || check_sound "bell-terminal" "BellVisible" "Sound"
play-kde-sound.sh
/usr/share/knotifications5
の中の.notifyrc
と~/.config
の中の.notifyrc
ファイルを解析して、現在のサウンド設定を読み取り、音を鳴らします。
./play-kde-sound.sh "(アプリケーション名)" "(サウンド名)"
でKDEの音を鳴らします。
#!/bin/bash
notifyrc=`sed -E '/^(Name|Comment)/d' /usr/share/knotifications5/$1.notifyrc`
l=`echo "$notifyrc" | grep -m 1 -n "^\[Event/$2\]" | grep -E -o '^[0-9]+'`
if [ "$l" != "" ]; then
notifyrc=`echo "$notifyrc" | sed "1,${l}d"`
l=`echo "$notifyrc" | grep -m 1 -n '^\[' | grep -E -o '^[0-9]+'`
if [ "$l" != "" ]; then
notifyrc=`echo "$notifyrc" | head -n $(($l - 1))`
fi
action=`echo "$notifyrc" | sed -n 's/Action=//p'`
sound=`echo "$notifyrc" | sed -n 's/Sound=//p'`
if [ -e ~/.config/$1.notifyrc ]; then
notifyrc=`cat ~/.config/$1.notifyrc`
l=`echo "$notifyrc" | grep -m 1 -n "^\[Event/$2\]" | grep -E -o '^[0-9]+'`
if [ "$l" != "" ]; then
notifyrc=`echo "$notifyrc" | sed "1,${l}d"`
l=`echo "$notifyrc" | grep -m 1 -n '^\[' | grep -E -o '^[0-9]+'`
if [ "$l" != "" ]; then
notifyrc=`echo "$notifyrc" | head -n $(($l - 1))`
fi
if [[ "$notifyrc" =~ "Action=" ]]; then
action=`echo "$notifyrc" | sed -n 's/Action=//p'`
fi
if [[ "$notifyrc" =~ "Sound=" ]]; then
sound=`echo "$notifyrc" | sed -n 's/Sound=//p'`
fi
fi
fi
if [[ "$action" =~ "Sound" ]]; then
if [ "${sound::1}" != "/" ] && [ "${sound::1}" != "~" ]; then
sound="/usr/share/sounds/$sound"
fi
paplay "$sound"
fi
fi
kde-sound-test.sh
全部は多いので、plasma_workspace
、ksmserver
、networkmanagement
、powerdevil
、akonadi_newmailnotifier_agent
、konsole
のKDEの音をテストします。
kde-sound-test-debug.sh
はデバッグ用にサウンドのパスを表示しながら鳴らします。
#!/bin/bash
directory=$(cd $(dirname $0); pwd)
notifyrcs=("plasma_workspace" "ksmserver" "networkmanagement" "powerdevil" "akonadi_newmailnotifier_agent" "konsole")
for i in "${notifyrcs[@]}"
do
for j in `sed -n 's%^\[Event/%%p' /usr/share/knotifications5/$i.notifyrc | sed 's/\]//g' | sed 's/ /!/g'`
do
clear
echo "$i/${j//!/ }"
$directory/play-kde-sound.sh "$i" "${j//!/ }"
done
done
reset-sound.sh
.notifyrc
を削除することにより、KDEのサウンドをリセットします。
#!/bin/bash
rm ~/.config/*.notifyrc
Trinity(Q4OS)
サウンドのテーマの構造
KDEとよく似ています。
デフォルトのサウンド設定は/opt/trinity/share/apps/(アプリケーション名)
の中のeventsrc
ファイルに書かれており、変更したサウンド設定は~/.trinity/share/config
の中の.eventsrc
ファイルに書かれています。
make-eventsrc.sh
.eventsrc
ファイルを作成します。
GNOMEなどのサウンド設定に一致するKDEのサウンド設定を.eventsrc
ファイルに書き込むことによって、Trinity(Q4OS)でも同じようにサウンドのテーマを使えるようにします。
#!/bin/bash
directory=$(cd $(dirname $0); pwd)
theme="$1"
copy_eventsrc() {
cp $directory/$eventsrc.eventsrc ~/.trinity/share/config
}
check_sound() {
if [ -e "/usr/share/sounds/$theme/stereo/$1.oga" ]; then
format="oga"
elif [ -e "/usr/share/sounds/$theme/stereo/$1.ogg" ]; then
format="ogg"
elif [ -e "/usr/share/sounds/$theme/stereo/$1.wav" ]; then
format="wav"
else
return 1
fi
sed -i "$(($2 + 3))cpresentation=$(($3 | 1))" ~/.trinity/share/config/$eventsrc.eventsrc
sed -i "$(($2 + 4))csoundfile\[\$e\]=/usr/share/sounds/$theme/stereo/$1.$format" ~/.trinity/share/config/$eventsrc.eventsrc
return 0
}
eventsrc="knotify"
copy_eventsrc
check_sound "completion-fail" 1 1 #Textcompletion: no match
check_sound "completion-partial" 7 1 #Textcompletion: partial match
check_sound "completion-rotation" 13 1 #Textcompletion: rotation
check_sound "trash-empty" 19 1 #Trash: emptied
check_sound "suspend-error" 37 2 #catastrophe
check_sound "desktop-logout" 43 1 || check_sound "desktop-logoff" 43 1 #exittde
check_sound "suspend-error" 49 2 #fatalerror
check_sound "dialog-error" 55 65 #messageCritical
check_sound "dialog-information" 61 65 #messageInformation
check_sound "dialog-warning" 67 65 #messageWarning
check_sound "dialog-question" 73 65 #messageboxQuestion
check_sound "notification" 79 1 #notification
check_sound "desktop-login" 91 1 #starttde
eventsrc="twin"
copy_eventsrc
check_sound "window-maximized" 151 0 #maximize
check_sound "window-minimized" 157 0 #minimize
check_sound "window-move-end" 163 0 #moveend
check_sound "window-move-start" 169 0 #movestart
check_sound "window-resize-end" 193 0 #resizeend
check_sound "window-resize-start" 199 0 #resizestart
check_sound "window-slide-in" 205 0 #shadedown
check_sound "window-slide-out" 211 0 #shadeup
check_sound "window-unmaximized" 229 0 #unmaximize
check_sound "window-unminimized" 235 0 #unminimize
eventsrc="tdenetworkmanager"
copy_eventsrc
check_sound "network-connectivity-established" 1 0 #tdenm-nm-connected
check_sound "network-connectivity-error" 13 0 #tdenm-nm-connection-attempt-failed
check_sound "network-connectivity-lost" 31 0 #tdenm-nm-disconnected
eventsrc="tdepowersave"
copy_eventsrc
check_sound "suspend-start" 13 17 #autosuspend_event
check_sound "battery-caution" 19 17 #battery_critical_event
check_sound "battery-low" 25 17 #battery_low_event
check_sound "battery-low" 31 17 #battery_warning_event
check_sound "suspend-start" 49 0 #freeze_event
check_sound "lid-open" 55 0 #lid_opened_event
check_sound "lid-close" 61 0 #lid_closed_event
check_sound "power-plug" 67 17 #plug_event
check_sound "suspend-resume" 73 0 #resume_from_freeze_event
check_sound "suspend-resume" 79 0 #resume_from_standby_event
check_sound "suspend-resume" 85 0 #resume_from_suspend2disk_event
check_sound "suspend-resume" 91 0 #resume_from_suspend2ram_event
check_sound "suspend-start" 127 0 #standby_event
check_sound "suspend-start" 133 0 #suspend2disk_event
check_sound "suspend-start" 139 0 #suspend2ram_event
check_sound "power-unplug" 145 17 #unplug_event
eventsrc="konsole"
copy_eventsrc
check_sound "bell" 7 16 || check_sound "bell-terminal" 7 16 #BellInvisible
check_sound "bell" 13 1 || check_sound "bell-terminal" 13 1 #BellVisible
play-tde-sound.sh
/opt/trinity/share/apps/(アプリケーション名)
の中のeventsrc
と~/.trinity/share/config
の中の.eventsrc
ファイルを解析して、現在のサウンド設定を読み取り、音を鳴らします。
./play-tde-sound.sh "(アプリケーション名)" "(サウンド名)"
でTrinity(Q4OS)の音を鳴らします。
#!/bin/bash
presentation=0
soundfile=""
if [ -e ~/.trinity/share/config/$1.eventsrc ]; then
eventsrc=`cat ~/.trinity/share/config/$1.eventsrc`
else
eventsrc=`sed -E '/^(Name|Comment)/d' /opt/trinity/share/apps/$1/eventsrc`
fi
l=`echo "$eventsrc" | grep -m 1 -n "^\[$2\]" | grep -E -o '^[0-9]+'`
if [ "$l" != "" ]; then
eventsrc=`echo "$eventsrc" | sed "1,${l}d"`
l=`echo "$eventsrc" | grep -m 1 -n '^\[' | grep -E -o '^[0-9]+'`
if [ "$l" != "" ]; then
eventsrc=`echo "$eventsrc" | head -n $(($l - 1))`
fi
if [[ "$eventsrc" =~ "default_presentation=" ]]; then
presentation=`echo "$eventsrc" | sed -n 's/default_presentation=//p'`
elif [[ "$eventsrc" =~ "presentation=" ]]; then
presentation=`echo "$eventsrc" | sed -n 's/presentation=//p'`
fi
if [[ "$eventsrc" =~ 'default_sound=' ]]; then
soundfile=`echo "$eventsrc" | sed -n 's/default_sound=//p'`
elif [[ "$eventsrc" =~ 'soundfile[$e]=' ]]; then
soundfile=`echo "$eventsrc" | sed -n 's/soundfile\[\$e\]=//p'`
fi
fi
if [ $(($presentation & 1)) -eq 1 ]; then
if [ "$soundfile" != "" ]; then
if [ "${soundfile::5}" = '$HOME' ]; then
soundfile=${soundfile/\$HOME/$HOME}
elif [ "${soundfile::1}" != "/" ] && [ "${soundfile::1}" != "~" ]; then
soundfile="/opt/trinity/share/sounds/$soundfile"
fi
paplay "$soundfile"
fi
fi
tde-sound-test.sh
全部は多いので、knotify
、twin
、tdenetworkmanager
、tdepowersave
、konsole
のTrinity(Q4OS)の音をテストします。
tde-sound-test-debug.sh
はデバッグ用にサウンドのパスを表示しながら鳴らします。
#!/bin/bash
directory=$(cd $(dirname $0); pwd)
eventsrcs=("knotify" "twin" "tdenetworkmanager" "tdepowersave" "konsole")
for i in "${eventsrcs[@]}"
do
for j in `sed -n 's%^\[%%p' /opt/trinity/share/apps/$i/eventsrc | sed 's/\]//g' | sed 's/ /!/g'`
do
if [ "$j" != "!Global!" ]; then
clear
echo "$i/${j//!/ }"
$directory/play-tde-sound.sh "$i" "${j//!/ }"
fi
done
done
reset-sound.sh
.eventsrc
を削除することにより、KDEのサウンドをリセットします。
#!/bin/bash
rm ~/.trinity/share/config/*.eventsrc
最後に
わからない、うまく動かない、改善案などがあれば、コメントでお知らせください。
自分でも説明が不足している部分があると思うので、多分この記事は何回も編集すると思います。