forked from giomatfois62/rofi-desktop
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrofi-mime.sh
executable file
·128 lines (104 loc) · 3.8 KB
/
rofi-mime.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
120
121
122
123
124
125
126
127
128
#!/bin/bash
ROFI_CMD="rofi -dmenu -i -matching fuzzy"
MIME_FILE="$HOME/.config/mimeapps.list"
declare -A actions=(
["Web Browser"]=set_browser
["File Manager"]=set_fm
["Text Editor"]=set_txt
["Image Viewer"]=set_image_viewer
["PDF Reader"]=set_pdf
["Audio Player"]=set_audio_player
["Video Player"]=set_video_player
)
mime_menu() {
categories="Web Browser\nFile Manager\nText Editor\nPDF Reader\nImage Viewer\nAudio Player\nVideo Player"
while choice=`echo -en $categories | $ROFI_CMD -p "Default Applications"`; do
if [ ${#choice} -gt 0 ]; then
${actions[$choice]};
fi
done
}
seach_applications() {
grep $1 -H -l /usr/share/applications/* $HOME/.local/share/applications/* | xargs -I {} basename {} .desktop
}
set_application() {
line_exists=$(fgrep "$1" $MIME_FILE)
# delete previous mimetype association
if [ ${#line_exists} -gt 0 ]; then
tmp_file="$HOME/.cache/mimeapps"
escaped_mimetype=$(echo "$1" | sed 's/\//\\\//g')
sed "/^$escaped_mimetype=/d" $MIME_FILE > $tmp_file
mv $tmp_file $MIME_FILE
fi
# add new mimetype association
#app="$(basename ${2})"
echo "$1=$2"".desktop" >> $MIME_FILE
}
set_browser() {
selected=$(seach_applications "WebBrowser" | $ROFI_CMD -p "Web Browser")
if [ ${#selected} -gt 0 ]; then
set_application "application/x-extension-htm" $selected;
set_application "application/x-extension-html" $selected;
set_application "application/x-extension-shtml" $selected;
set_application "application/x-extension-xht" $selected;
set_application "application/x-extension-xhtml" $selected;
set_application "application/xhtml+xml" $selected;
set_application "text/html" $selected;
fi
}
set_fm() {
selected=$(seach_applications 'FileManager' | $ROFI_CMD -p "File Manager")
if [ ${#selected} -gt 0 ]; then
set_application "inode/directory" $selected;
fi
}
set_txt() {
selected=$(seach_applications 'TextEditor;' | $ROFI_CMD -p "Text Editor")
if [ ${#selected} -gt 0 ]; then
set_application "text/plain" $selected;
set_application "text/markdown" $selected;
fi
}
set_pdf() {
selected=$(seach_applications 'PDF' | $ROFI_CMD -p "PDF Reader")
if [ ${#selected} -gt 0 ]; then
set_application "application/pdf" $selected;
fi
}
set_image_viewer() {
selected=$(seach_applications 'Image Viewer' | $ROFI_CMD -p "Image Viewer")
if [ ${#selected} -gt 0 ]; then
set_application "image/bmp" $selected;
set_application "image/gif" $selected;
set_application "image/png" $selected;
set_application "image/tiff" $selected;
set_application "image/webp" $selected;
set_application "image/jpeg" $selected;
fi
}
set_audio_player() {
selected=$(seach_applications 'Player;' | $ROFI_CMD -p "Audio Player")
if [ ${#selected} -gt 0 ]; then
set_application "audio/aac" $selected;
set_application "audio/mp4" $selected;
set_application "audio/mpeg" $selected;
set_application "audio/ogg" $selected;
set_application "audio/flac" $selected;
set_application "audio/x-mpegurl" $selected;
set_application "audio/x-wav" $selected;
set_application "audio/flac" $selected;
fi
}
set_video_player() {
selected=$(seach_applications 'Player;' | $ROFI_CMD -p "Video Player")
if [ ${#selected} -gt 0 ]; then
set_application "video/webm" $selected;
set_application "video/x-matroska" $selected;
set_application "video/mp4" $selected;
set_application "video/mpeg" $selected;
set_application "video/ogg" $selected;
set_application "video/quicktime" $selected;
set_application "video/x-msvideo" $selected;
fi
}
mime_menu