-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path5.CreateMimeAndDesktopType.sh
119 lines (107 loc) · 3.81 KB
/
5.CreateMimeAndDesktopType.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
#!/bin/bash
set -e
#------------------------------------------------------------
# this script creates desktop and file assosiations needed for
# PriMus from Columbussoft on Linux using wine
#------------------------------------------------------------
export WINEPREFIX="${HOME}/.wine-primus"
#
# extract application icons from EXE
#
ICONDIR=downloads/SetupPriMus/Icons
rm -rf ${ICONDIR}
mkdir -p ${ICONDIR}
wrestool -x "--output=${ICONDIR}/" -t14 "${WINEPREFIX}/drive_c/Program Files (x86)/PriMus/PriMus.exe"
(cd ${ICONDIR} && convert *.ico -set filename:mysize "columbussoft-primus-%wx%h" "%[filename:mysize].png")
cp "${WINEPREFIX}/drive_c/Program Files (x86)/PriMus/System/emildoc.ico" "${WINEPREFIX}/drive_c/Program Files (x86)/PriMus/System/emixdoc.ico"
for ico in "${WINEPREFIX}/drive_c/Program Files (x86)/PriMus/System/"*.ico
do
echo "ico='${ico}'"
name=$(basename "${ico}" ".ico")
(cd ${ICONDIR} && convert "${ico}" -set filename:mysize "columbussoft-primus-${name}-%wx%h" "%[filename:mysize].png")
done
#
# install application icons to resources
#
for png in downloads/SetupPriMus/Icons/*.png
do
echo "png='${png}'"
name=$(basename "${png}" ".png")
size=$(convert "${png}" -print "%w" /dev/null)
item=${name%-*}
echo "name='${name}' item='${item}' size='${size}'"
xdg-icon-resource install --mode user --size ${size} ${png} ${item}
done
#
# create a simple command line script for primus to allow start
# it verifies, there is a timidity server running.
#
mkdir -p ~/bin
cat << -EOF- > ~/bin/primus
#!/bin/bash
if ! pgrep fluidsynth
then
systemctl --user start fluidsynth
if ! pgrep fluidsynth
then
zenity --error --width=320 --text "fluidsynth not running\nCannot start PriMus as it would freeze"
exit 1
fi
fi
export WINEPREFIX="${HOME}/.wine-primus"
export WINEDLLOVERRIDES=winemenubuilder.exe=d
wine "\${WINEPREFIX}/drive_c/Program Files (x86)/PriMus/PriMus.exe" "\$@"
-EOF-
chmod +x ~/bin/primus
function create_mime
{
#----------------------------------
# define mime type with icon
#----------------------------------
echo "-- create mime type --"
cat << -EOF- > /tmp/columbussoft-primus-$1.xml
<?xml version="1.0" encoding="UTF-8"?>
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
<mime-type type="application/columbussoft-primus-$1">
<comment>$2</comment>
<glob pattern=$3/>
<icon name="columbussoft-primus-$1"/>
</mime-type>
</mime-info>
-EOF-
xdg-mime install --mode user /tmp/columbussoft-primus-$1.xml
}
create_mime "pridoc" "PriMus-Datei" '"*.pri"'
create_mime "prbdoc" "PriMus-Backup" '"*.prb"'
create_mime "emildoc" "Emil-Datei" '"*.emil"'
create_mime "emixdoc" "Emix-Datei" '"*.emix"'
#----------------------------------
# define desktop file
#----------------------------------
echo "-- create application type --"
cat << -EOF- > /tmp/columbussoft-primus.desktop
[Desktop Entry]
Encoding=UTF-8
Version=1.0
Type=Application
MimeType=application/columbussoft-primus-pridoc;application/columbussoft-primus-prbdoc;application/columbussoft-primus-emildoc;application/columbussoft-primus-emixdoc;audio/midi;
Exec=${HOME}/bin/primus %F
##Categories=Audio;
Terminal=false
Icon=columbussoft-primus
Name=PriMus!
-EOF-
chmod +x /tmp/columbussoft-primus.desktop
xdg-desktop-menu install --mode user /tmp/columbussoft-primus.desktop
DESKTOP=$(xdg-user-dir DESKTOP)
cp /tmp/columbussoft-primus.desktop ${DESKTOP}/
#----------------------------------
# simple new file template
#----------------------------------
TEMPLATES=$(xdg-user-dir TEMPLATES)
cp "${WINEPREFIX}/drive_c/Program Files (x86)/PriMus/Templates/Templates/Favorites/Voice and Piano.pri" "${TEMPLATES}/PriMus.pri"
#----------------------------------
# install license if in current dir
#----------------------------------
if [ -f ~/license.dat ] ; then cp ~/license.dat "${WINEPREFIX}/drive_c/Program Files (x86)/PriMus/" ; fi
find ~/.local -iname "*primus*"