parent
5e25e9b084
commit
34beb74c75
@ -0,0 +1,4 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
export PATH=/usr/libexec/gnome-commander:$PATH
|
||||||
|
exec gnome-commander $@
|
@ -0,0 +1,40 @@
|
|||||||
|
Index: mimeedit.sh
|
||||||
|
===================================================================
|
||||||
|
--- mimeedit.sh (revision 1958)
|
||||||
|
+++ mimeedit.sh (working copy)
|
||||||
|
@@ -342,6 +342,7 @@
|
||||||
|
# The .desktop file editor
|
||||||
|
#
|
||||||
|
function dtfedit (){
|
||||||
|
+ TMPFILE=`mktemp /tmp/gnome-commander.XXXXXX`
|
||||||
|
USER_DTF="$DT_FILE-$EXT"
|
||||||
|
if [ -n "$DT_FILE" ]
|
||||||
|
then
|
||||||
|
@@ -350,15 +351,22 @@
|
||||||
|
then
|
||||||
|
TO_EDIT="$DATA_DIR/$USER_DTF"
|
||||||
|
else
|
||||||
|
- TO_EDIT="$GDATA_DIR/$DT_FILE.desktop"
|
||||||
|
+ DT_FILE_PREFIX=$(echo $DT_FILE | sed -e 's|-[0-9][0-9]*||')
|
||||||
|
+ DT_FILE_SUFFIX=$(echo $DT_FILE | sed -n -e 's|^.*-\([0-9][0-9]*\)$|\1|p')
|
||||||
|
+ if [ -e $DATA_DIR/${DT_FILE_PREFIX}-usercreated-$DT_FILE_SUFFIX.desktop ]
|
||||||
|
+ then
|
||||||
|
+ TO_EDIT="$DATA_DIR/${DT_FILE_PREFIX}-usercreated-$DT_FILE_SUFFIX.desktop"
|
||||||
|
+ else
|
||||||
|
+ TO_EDIT="$GDATA_DIR/$DT_FILE.desktop"
|
||||||
|
+ fi
|
||||||
|
fi
|
||||||
|
cat "$TO_EDIT" | zenity --height="350" --width="550" --text-info --editable \
|
||||||
|
- --title "Edititng the file: $USER_DTF" > $UTMP.$USER_DTF
|
||||||
|
- if [ -s $UTMP.$USER_DTF ]
|
||||||
|
+ --title "Edititng the file: $USER_DTF" > $TMPFILE
|
||||||
|
+ if [ -s $TMPFILE ]
|
||||||
|
then
|
||||||
|
- mv $UTMP.$USER_DTF $DATA_DIR/$USER_DTF
|
||||||
|
+ mv $TMPFILE $DATA_DIR/$USER_DTF
|
||||||
|
else
|
||||||
|
- rm -f $UTMP.$USER_DTF
|
||||||
|
+ rm -f $TMPFILE
|
||||||
|
DT_FILE=""
|
||||||
|
fi
|
||||||
|
fi
|
@ -0,0 +1,376 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# gnome-file-types-properties -
|
||||||
|
# A zenity-script for chosing preferred applications.
|
||||||
|
# Written by Magnus Stålnacke (jemamo at telia.com)
|
||||||
|
# Version 0.8.4 Nov. 30 2007
|
||||||
|
#
|
||||||
|
export LANG=en_US.utf8
|
||||||
|
|
||||||
|
ARGU="$1"
|
||||||
|
UTMP="/tmp/$(whoami)"
|
||||||
|
DATA_DIR="$HOME/.local/share/applications"
|
||||||
|
GDATA_DIR="/usr/share/applications"
|
||||||
|
G_CACHE="$GDATA_DIR/mimeinfo.cache"
|
||||||
|
U_CACHE="$DATA_DIR/mimeinfo.cache"
|
||||||
|
SUBC="/usr/share/mime/subclasses"
|
||||||
|
U_DEF="$DATA_DIR/defaults.list"
|
||||||
|
EXT="usercreated.desktop"
|
||||||
|
NONEW=1
|
||||||
|
|
||||||
|
#
|
||||||
|
# Create dirs in users home if missing.
|
||||||
|
#
|
||||||
|
if [ -e "$DATA_DIR" ]; then :; else mkdir $DATA_DIR;fi
|
||||||
|
if [ -e "$U_DEF" ]
|
||||||
|
then :;
|
||||||
|
else
|
||||||
|
echo "[Default Applications]" > $DATA_DIR/defaults.list
|
||||||
|
fi
|
||||||
|
|
||||||
|
#
|
||||||
|
# Check how we got started.
|
||||||
|
#
|
||||||
|
function checkarg (){
|
||||||
|
if [ -n "$ARGU" ]
|
||||||
|
then
|
||||||
|
if [ -e "$ARGU" ]
|
||||||
|
then
|
||||||
|
chkmtpe
|
||||||
|
deflist
|
||||||
|
else
|
||||||
|
showhelp
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
selfile
|
||||||
|
dtfedit
|
||||||
|
if [ -n "$DT_FILE" ]
|
||||||
|
then
|
||||||
|
update
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Mimetype check.
|
||||||
|
#
|
||||||
|
function chkmtpe (){
|
||||||
|
MTPE=$(gnomevfs-info -s "$ARGU" | grep "MIME type" | sed 's/.*: //')
|
||||||
|
echo "The mimetype is: $MTPE"
|
||||||
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Build a list with registered apps for this mimetype.
|
||||||
|
#
|
||||||
|
function deflist (){
|
||||||
|
if [ -e "$UTMP.avail" ]; then cleanup;fi
|
||||||
|
# Create the list in "$UTMP.avail" to be used by the zenity list-box
|
||||||
|
if [ "$NONEW" == 1 ]
|
||||||
|
then
|
||||||
|
echo "FALSE Add_New_App New" > "$UTMP.avail"
|
||||||
|
fi
|
||||||
|
# Get all sub-mimetypes, one per row.
|
||||||
|
SUB="$(grep -hs "^$MTPE" $SUBC $G_CACHE $U_CACHE | awk -F= '{print $1}' | sed 's/ /\n/g')"
|
||||||
|
# Get all .desktopfiles for the above mimetypes
|
||||||
|
MTPEs=$(grep -hs "$SUB" $U_CACHE $G_CACHE | sed 's/.*=//g;s/;$//g;s/;/\n/g;')
|
||||||
|
if [ -n "$SUB" ]
|
||||||
|
then
|
||||||
|
for i in $(echo "$MTPEs" | sort -u); do
|
||||||
|
echo "FALSE $i $(grep -hs "^Name=" $GDATA_DIR/$i $DATA_DIR/$i | \
|
||||||
|
sed 's/Name=//;s/ /_/g')" >> "$UTMP.avail"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
# Change FALSE to TRUE for the default app.
|
||||||
|
if grep -q "desktop" "$UTMP.avail"
|
||||||
|
then
|
||||||
|
DEF_APP=$(gnomevfs-info -s "$ARGU" | grep "Default app" | sed 's/.*: //')
|
||||||
|
sed -i "s|FALSE $DEF_APP|TRUE $DEF_APP|" "$UTMP.avail"
|
||||||
|
fi
|
||||||
|
# Show the list
|
||||||
|
zenity --height="350" --width="550" --list --radiolist --text \
|
||||||
|
"The list below show applications that already have an entry for the mimetype:
|
||||||
|
$MTPE on your system, meaning they are registered to be able
|
||||||
|
to deal with this mimetype. You can choose your preferred default application
|
||||||
|
by checking the radiobutton. The script will adjust the mimetype settings in
|
||||||
|
your local home directory, thus not changing anything systemwide.
|
||||||
|
|
||||||
|
If you wish you can add an application that is not in the list by checking the first
|
||||||
|
option in list named Add_New_App
|
||||||
|
|
||||||
|
Please select" \
|
||||||
|
--column "Pick" --column ".desktop file" --column "Application" \
|
||||||
|
$(cat "$UTMP.avail") > "$UTMP.chosen"
|
||||||
|
retval=$?
|
||||||
|
choice=$(cat "$UTMP.chosen")
|
||||||
|
if grep -q "$MTPE=$choice" $U_DEF
|
||||||
|
then
|
||||||
|
retval=2
|
||||||
|
fi
|
||||||
|
case $retval in
|
||||||
|
0)
|
||||||
|
DEF_CH=$(grep -s "$choice" "$UTMP.avail" | awk '{print $2}')
|
||||||
|
DEF_NME=$(grep -s "$choice" "$UTMP.avail" | awk '{print $3}')
|
||||||
|
if [ "$DEF_CH" = Add_New_App ]
|
||||||
|
then
|
||||||
|
newmime
|
||||||
|
fi
|
||||||
|
if [ -z "$NOCH" ]
|
||||||
|
then
|
||||||
|
if grep -q "$MTPE" $U_DEF
|
||||||
|
then
|
||||||
|
# Set the users chosen default app for the existing mime.
|
||||||
|
sed -i "s|$MTPE=.*|$MTPE=$DEF_CH|" $U_DEF
|
||||||
|
else
|
||||||
|
# If no user default for this mimetype, add it.
|
||||||
|
echo "$MTPE=$DEF_CH" >> $U_DEF
|
||||||
|
fi
|
||||||
|
update
|
||||||
|
zenity --info --text "Default application to handle $MTPE is set to $DEF_NME"
|
||||||
|
fi;;
|
||||||
|
1)
|
||||||
|
echo "Cancel pressed.";;
|
||||||
|
-1)
|
||||||
|
echo "ESC pressed.";;
|
||||||
|
2)
|
||||||
|
zenity --info --text "Default was not changed.";;
|
||||||
|
esac
|
||||||
|
cleanup
|
||||||
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Show an input box for new app to handle the mimetype.
|
||||||
|
#
|
||||||
|
function newmime (){
|
||||||
|
NEWAPP=$(zenity --entry --text \
|
||||||
|
"Fill in the Name and command for the application you want to handle the
|
||||||
|
mimetype: $MTPE separate them with a colon (:)
|
||||||
|
|
||||||
|
Separate Name and Command with a colon. If you omit the command, or
|
||||||
|
type something that is not in your path, you will get the chance to
|
||||||
|
provide the command with full path by a file chooser dialog.")
|
||||||
|
|
||||||
|
case $? in
|
||||||
|
0)
|
||||||
|
if echo "$NEWAPP" | grep -q ":"
|
||||||
|
then
|
||||||
|
NAME=$(echo "$NEWAPP" | awk -F: '{print $1}')
|
||||||
|
CMD=$(echo "$NEWAPP" | awk -F: '{print $2}')
|
||||||
|
if [ -n "$NAME" ]
|
||||||
|
then
|
||||||
|
check
|
||||||
|
usercreate
|
||||||
|
else
|
||||||
|
zenity --error --text "Application name is missing"
|
||||||
|
newmime
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
zenity --error --text "Separator missing"
|
||||||
|
newmime
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
1)
|
||||||
|
deflist
|
||||||
|
;;
|
||||||
|
-1)
|
||||||
|
deflist
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
NOCH=yes
|
||||||
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Check if the command exists in path, if not give the
|
||||||
|
# user a filechooser.
|
||||||
|
#
|
||||||
|
function check (){
|
||||||
|
if which $CMD >&/dev/null
|
||||||
|
then
|
||||||
|
CMD=`which $CMD`
|
||||||
|
else
|
||||||
|
CMD=$(zenity --file-selection --filename=/ --title="Chose application")
|
||||||
|
if [ -z $CMD ]
|
||||||
|
then
|
||||||
|
newmime
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Create a new *.desktop file for the added app that can handle
|
||||||
|
# the mimetype in question.
|
||||||
|
#
|
||||||
|
function usercreate(){
|
||||||
|
APP=$(basename "$CMD")
|
||||||
|
USER_APP="$DATA_DIR/$APP-$EXT"
|
||||||
|
if cat $G_CACHE $U_CACHE | grep "$MTPE" | grep -q "$APP"
|
||||||
|
then
|
||||||
|
zenity --error --text "The mime type: $MTPE is alredy assigned to: $APP"
|
||||||
|
NOCH=yes
|
||||||
|
else
|
||||||
|
if [ -e "$USER_APP" ]
|
||||||
|
then
|
||||||
|
sed -i "s|MimeType=|MimeType=$MTPE;|g" $USER_APP
|
||||||
|
update
|
||||||
|
zenity --info --text \
|
||||||
|
"The mime type: $MTPE is now registered to be handled by: $APP"
|
||||||
|
else
|
||||||
|
cat <<EOF >$USER_APP
|
||||||
|
[Desktop Entry]
|
||||||
|
Encoding=UTF-8
|
||||||
|
Name=$NAME
|
||||||
|
Exec=$CMD
|
||||||
|
Type=Application
|
||||||
|
Terminal=false
|
||||||
|
NoDisplay=true
|
||||||
|
MimeType=$MTPE;
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if [ -z "$NOCH" ]
|
||||||
|
then
|
||||||
|
zenity --question --text \
|
||||||
|
"The created $(basename "$USER_APP") can now be edited manually, to add, remove or change options, do you want to do this now?
|
||||||
|
|
||||||
|
This file should work as is, so you can safely cancel this operation, but advanced users may want to edit options to their liking. But due to a bug this editor cannot handle '%' charachters and replaces them with garbage."
|
||||||
|
VAL=$?
|
||||||
|
if [ "$VAL" == 0 ]
|
||||||
|
then
|
||||||
|
DT_FILE="$APP"
|
||||||
|
dtfedit
|
||||||
|
update
|
||||||
|
else
|
||||||
|
update
|
||||||
|
fi
|
||||||
|
zenity --info --text "$APP is now registered to handle: $MTPE"
|
||||||
|
fi
|
||||||
|
NONEW=2
|
||||||
|
deflist
|
||||||
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Update the users mime chache and set the defaults
|
||||||
|
# first from the defaults.list file
|
||||||
|
#
|
||||||
|
function update (){
|
||||||
|
update-desktop-database $DATA_DIR
|
||||||
|
for i in $(sed '/\[.*\]/d' $U_DEF); do
|
||||||
|
MTYPE=$(echo "$i" | awk -F= '{print $1}')
|
||||||
|
M_FIL=$(echo "$i" | awk -F= '{print $2}')
|
||||||
|
if grep -q "$MTYPE" $U_CACHE
|
||||||
|
then
|
||||||
|
sed -i "\|$MTYPE|s|$M_FIL||;s|$MTYPE=|$i;|;s|;;|;|" $U_CACHE
|
||||||
|
else
|
||||||
|
echo "$i" >> $U_CACHE
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
# If there are rows with empty mimetypes, delete them.
|
||||||
|
sed -i '/.*=$/d' $U_CACHE
|
||||||
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Give the user a helping hand.
|
||||||
|
#
|
||||||
|
function showhelp (){
|
||||||
|
echo
|
||||||
|
echo "Usage: $(basename $0) [ARGUMENT]"
|
||||||
|
echo '''
|
||||||
|
-h, -?, --help Show this help and exit.
|
||||||
|
|
||||||
|
DESCRIPTION
|
||||||
|
This script is dependent on zenity for creating its GUI. It is
|
||||||
|
to be used as a tool for choosing the default application or to
|
||||||
|
run for different type of files (mimetypes). It modifies or add
|
||||||
|
files in "$HOME/.local/share/applications"
|
||||||
|
|
||||||
|
When passed a valid filename it checks its mimetype as interpreted
|
||||||
|
by gnomevfs, it will show a list of already registered applications
|
||||||
|
able to handle the mimetype in question, the user can change default
|
||||||
|
application in this list. The list also contains an option to add
|
||||||
|
the Name and command of a program that is not registered to be able
|
||||||
|
to open files of the mimetype. After any changes this script will
|
||||||
|
run the update-desktop-database to update the users mime cache.
|
||||||
|
|
||||||
|
When executed without any argument, the script will list all
|
||||||
|
applications associated with a mimetype. When selecting an item from
|
||||||
|
this list, the user will be able to edit the options for the selected
|
||||||
|
application. The edited file will be saved in the above path and the
|
||||||
|
update-desktop-database is executed.
|
||||||
|
|
||||||
|
When given an invalid argument or any of the options -h -? --help,
|
||||||
|
this text is shown.
|
||||||
|
'''
|
||||||
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Remove tempfiles.
|
||||||
|
#
|
||||||
|
function cleanup (){
|
||||||
|
rm -f "$UTMP.avail"
|
||||||
|
rm -f "$UTMP.chosen"
|
||||||
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# The .desktop file selector
|
||||||
|
#
|
||||||
|
function selfile (){
|
||||||
|
DT_FILE=$(for i in $GDATA_DIR/*.desktop $DATA_DIR/*.desktop; do
|
||||||
|
if grep -q "MimeType" $i
|
||||||
|
then
|
||||||
|
BNME=$(basename $i | sed 's/\.desktop//;s/-usercreated//')
|
||||||
|
if [ -e $DATA_DIR/$BNME-$EXT ]
|
||||||
|
then
|
||||||
|
i="$DATA_DIR/$BNME-$EXT"
|
||||||
|
fi
|
||||||
|
CMD=$(grep -m 1 "^Exec" $i | sed "s/^Exec=//")
|
||||||
|
NME=$(grep -m 1 "^Name=" $i | sed 's/^Name=//')
|
||||||
|
echo "$BNME---$NME---\"$CMD\""
|
||||||
|
fi
|
||||||
|
done | sort -u | sed 's/---/\n/g' | zenity --list --width="550" --height="400" \
|
||||||
|
--column="Base name" --column="Program name" --column="Program command" \
|
||||||
|
--print-column="1" --text "Select item below.
|
||||||
|
|
||||||
|
By selecting an item in this list and klick OK, you will get another window where
|
||||||
|
you can edit the file that contains the options of the selected application. The
|
||||||
|
edited file will end up in your: $DATA_DIR
|
||||||
|
|
||||||
|
Pressing "Esc", click Cancel or use the window close (X) button will close without
|
||||||
|
any changes in this or the following editor window. Be aware that the editor do
|
||||||
|
have problems with the (%)percent charachter and may replace it by garbage.")
|
||||||
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# The .desktop file editor
|
||||||
|
#
|
||||||
|
function dtfedit (){
|
||||||
|
USER_DTF="$DT_FILE-$EXT"
|
||||||
|
if [ -n "$DT_FILE" ]
|
||||||
|
then
|
||||||
|
# Chose to edit users own file if exist
|
||||||
|
if [ -e $DATA_DIR/$USER_DTF ]
|
||||||
|
then
|
||||||
|
TO_EDIT="$DATA_DIR/$USER_DTF"
|
||||||
|
else
|
||||||
|
TO_EDIT="$GDATA_DIR/$DT_FILE.desktop"
|
||||||
|
fi
|
||||||
|
cat "$TO_EDIT" | zenity --height="350" --width="550" --text-info --editable \
|
||||||
|
--title "Edititng the file: $USER_DTF" > $UTMP.$USER_DTF
|
||||||
|
if [ -s $UTMP.$USER_DTF ]
|
||||||
|
then
|
||||||
|
mv $UTMP.$USER_DTF $DATA_DIR/$USER_DTF
|
||||||
|
else
|
||||||
|
rm -f $UTMP.$USER_DTF
|
||||||
|
DT_FILE=""
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Check if we have zenity installed then start this mess.
|
||||||
|
#
|
||||||
|
if which zenity >&/dev/null
|
||||||
|
then
|
||||||
|
checkarg
|
||||||
|
else
|
||||||
|
echo "Error: zenity not found!"
|
||||||
|
fi
|
||||||
|
|
Loading…
Reference in new issue