|
--- /dev/null
|
|
+++ b/bash/winexec
|
|
@@ -0,0 +1,27 @@
|
|
+#!/bin/bash
|
|
+
|
|
+allargs=("$@")
|
|
+
|
|
+fixpath=0
|
|
+for idx in "${!allargs[@]}"; do
|
|
+ arg="${allargs[$idx]}"
|
|
+
|
|
+ if [[ $fixpath -eq 0 ]]; then
|
|
+ # fix file paths only after the first executable is found in arg
|
|
+ if [[ "$arg" == *.exe ]]; then
|
|
+ fixpath=1
|
|
+ fi
|
|
+ if [[ "$arg" == *.EXE ]]; then
|
|
+ fixpath=1
|
|
+ fi
|
|
+ continue
|
|
+ elif [[ $fixpath -eq 1 ]]; then
|
|
+ # if arg starts with '/' and it's a path that exists on host
|
|
+ # precede the path with drive 'Z:'
|
|
+ if [[ "${arg:0:1}" == '/' && -e "$arg" ]]; then
|
|
+ allargs[$idx]="z:${arg//\//\\}"
|
|
+ fi
|
|
+ fi
|
|
+done
|
|
+
|
|
+exec env "${allargs[@]}"
|
|
|
|
--- /dev/null
|
|
+++ b/bash/remove_shortcut
|
|
@@ -0,0 +1,41 @@
|
|
+#!/usr/bin/env bash
|
|
+
|
|
+# Copyright (C) 2011 Pâris Quentin
|
|
+
|
|
+
|
|
+# This program is free software; you can redistribute it and/or modify
|
|
+# it under the terms of the GNU General Public License as published by
|
|
+# the Free Software Foundation; either version 2 of the License, or
|
|
+# (at your option) any later version.
|
|
+
|
|
+# This program is distributed in the hope that it will be useful,
|
|
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
+# GNU General Public License for more details.
|
|
+
|
|
+# You should have received a copy of the GNU General Public License along
|
|
+# with this program; if not, write to the Free Software Foundation, Inc.,
|
|
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
+
|
|
+# This script makes shortcut of programs
|
|
+
|
|
+[ "$PLAYONLINUX" = "" ] && exit 0
|
|
+source "$PLAYONLINUX/lib/sources"
|
|
+
|
|
+
|
|
+TITLE="$(eval_gettext '$APPLICATION_TITLE shortcut remover')"
|
|
+
|
|
+if [ "$1" ]; then
|
|
+ PACKAGE="$1"
|
|
+else
|
|
+ POL_SetupWindow_games "$(eval_gettext "Please choose a software to package")" "$TITLE"
|
|
+ PACKAGE="$APP_ANSWER"
|
|
+fi
|
|
+
|
|
+POL_SetupWindow_Init
|
|
+POL_SetupWindow_wait_next_signal "$(eval_gettext "Removing shortcut...")" "$TITLE"
|
|
+POL_Shortcut_RemoveDesktopShortcut "$PACKAGE"
|
|
+POL_SetupWindow_message "$(eval_gettext "The shortcut has been removed from $HOME.local/share/applications/ and your desktop")" "$TITLE"
|
|
+POL_SetupWindow_Close
|
|
+
|
|
+exit 0
|
|
|
|
--- a/python/mainwindow.py
|
|
+++ b/python/mainwindow.py
|
|
@@ -784,7 +784,9 @@
|
|
i+=1
|
|
self.menuGaucheAddLink("pol_prgm_configure", _("Configure"), i,Variables.playonlinux_env+"/resources/images/menu/run.png",self.Configure)
|
|
i+=1
|
|
- self.menuGaucheAddLink("pol_prgm_shortcut", _("Create a shortcut"), i,Variables.playonlinux_env+"/resources/images/menu/shortcut.png",self.Package)
|
|
+ self.menuGaucheAddLink("pol_prgm_shortcut", _("Create desktop shortcut"), i,Variables.playonlinux_env+"/resources/images/menu/shortcut.png",self.Package)
|
|
+ i+=1
|
|
+ self.menuGaucheAddLink("pol_prgm_shortcut_rem", _("Remove desktop shortcut"), i,Variables.playonlinux_env+"/resources/images/menu/shortcut.png",self.RemShortcut)
|
|
i+=1
|
|
self.menuGaucheAddLink("pol_prgm_adddir", _("Open the directory"), i,Variables.playonlinux_env+"/resources/images/menu/folder-wine.png",self.GoToAppDir)
|
|
|
|
@@ -980,6 +982,10 @@
|
|
def Package(self, event):
|
|
game_exec = self.GetSelectedProgram()
|
|
subprocess.Popen(["bash", Variables.playonlinux_env+"/bash/make_shortcut", game_exec])
|
|
+
|
|
+ def RemShortcut(self, event):
|
|
+ game_exec = self.GetSelectedProgram()
|
|
+ subprocess.Popen(["bash", Variables.playonlinux_env+"/bash/remove_shortcut", game_exec])
|
|
|
|
def UninstallGame(self, event):
|
|
game_exec = self.GetSelectedProgram()
|
|
|
|
--- a/lib/scripts.lib
|
|
+++ b/lib/scripts.lib
|
|
@@ -384,7 +384,7 @@
|
|
# Do nothing on Mac OS
|
|
if [ -n "$Categories" -a "$POL_OS" = "Linux" ] || [ -n "$Categories" -a "$POL_OS" = "BSD" ]; then
|
|
LOCALAPPS="$HOME/.local/share/applications"
|
|
- make_desktop_shortcut "$iconPath" "$ICON_FILENAME" "$LOCALAPPS" "$PLAYONLINUX/playonlinux --run \"$ICON_FILENAME\"" "$binary_name" "$Categories" "playonlinux-"
|
|
+ make_desktop_shortcut "$iconPath" "$ICON_FILENAME" "$LOCALAPPS" "$PLAYONLINUX/bash/winexec $PLAYONLINUX/playonlinux --run \"$ICON_FILENAME\"" "$binary_name" "$Categories" "playonlinux-"
|
|
fi
|
|
fi
|
|
|
|
@@ -394,7 +394,7 @@
|
|
if [ "$POL_OS" = "Mac" ]; then
|
|
POL_SetupWindow_AutoApp "$ICON_FILENAME"
|
|
else
|
|
- make_desktop_shortcut "$iconPath" "$ICON_FILENAME" "$DESKTOP" "$PLAYONLINUX/playonlinux --run \"$ICON_FILENAME\"" "$binary_name" "$Categories"
|
|
+ make_desktop_shortcut "$iconPath" "$ICON_FILENAME" "$DESKTOP" "$PLAYONLINUX/bash/winexec $PLAYONLINUX/playonlinux --run \"$ICON_FILENAME\"" "$binary_name" "$Categories"
|
|
fi
|
|
fi
|
|
fi
|
|
@@ -1039,13 +1039,33 @@
|
|
# http://stackoverflow.com/questions/8939580/bash-split-a-string-exactly-like-readline-would-split-it
|
|
eval set -- $(grep '^POL_Wine ' "$POL_USER_ROOT/shortcuts/$PACKAGE"|tail -n 1)
|
|
local binary="$2"
|
|
- make_desktop_shortcut "$iconPath" "$PACKAGE" "$DESKTOP" "$PLAYONLINUX/playonlinux --run \"$PACKAGE\"" "$binary" ""
|
|
+ LOCALAPPS="$HOME/.local/share/applications"
|
|
+ make_desktop_shortcut "$iconPath" "$PACKAGE" "$LOCALAPPS" "$DESKTOP" "$PLAYONLINUX/bash/winexec $PLAYONLINUX/playonlinux --run \"$PACKAGE\"" "$binary" ""
|
|
+ ln -s "$PLACE/$PACKAGE.desktop" "$DESKTOP"
|
|
;;
|
|
|
|
*)
|
|
POL_Debug_Warning "POL_Shortcut_MakeDesktopShortcut: not supported OS: $POL_OS"
|
|
esac
|
|
}
|
|
+
|
|
+POL_Shortcut_RemoveDesktopShortcut()
|
|
+{
|
|
+ PACKAGE="$1"
|
|
+ if [ "$POL_OS" = "Mac" ]; then
|
|
+ if [ -f "$HOME/Desktop/$PACKAGE.app" ]; then
|
|
+ rm "$HOME/Desktop/$PACKAGE.app"
|
|
+ fi
|
|
+ fi
|
|
+ if [ "$POL_OS" = "Linux" ] || [ "$POL_OS" == "FreeBSD" ]; then
|
|
+ LOCALAPPS="$HOME/.local/share/applications"
|
|
+ if [ -f "$LOCALAPPS/$PACKAGE.desktop" ];then
|
|
+ rm "$DESKTOP/$PACKAGE.desktop"
|
|
+ rm "$LOCALAPPS/$PACKAGE.desktop"
|
|
+ fi
|
|
+ fi
|
|
+}
|
|
+
|
|
POL_System_is32bit()
|
|
{
|
|
# Check if the file (1) is a 32bit executable
|
|
|
|
--- a/lib/playonlinux.lib
|
|
+++ b/lib/playonlinux.lib
|
|
@@ -670,12 +670,12 @@
|
|
(echo "[Desktop Entry]"
|
|
echo "Encoding=UTF-8"
|
|
echo "Name=$ICON_NAME"
|
|
- echo "Comment=PlayOnLinux"
|
|
echo "Type=Application"
|
|
- echo "Exec=$EXECUTABLE %F"
|
|
+ echo "Exec=$EXECUTABLE"
|
|
echo "Icon=$ICON"
|
|
- echo "Name[fr_FR]=$ICON_NAME"
|
|
echo "StartupWMClass=$WMCLASS"
|
|
+ echo "StartupNotify=true"
|
|
+ echo "Comment="
|
|
echo "Categories=$CATEGORIES") > "${SHORT_NAME}.desktop"
|
|
chmod +x "${SHORT_NAME}.desktop"
|
|
}
|
|
|
|
--- a/bash/make_shortcut
|
|
+++ b/bash/make_shortcut
|
|
@@ -34,7 +34,7 @@
|
|
POL_SetupWindow_Init
|
|
POL_SetupWindow_wait_next_signal "$(eval_gettext "Creating shortcut...")" "$TITLE"
|
|
POL_Shortcut_MakeDesktopShortcut "$PACKAGE"
|
|
-POL_SetupWindow_message "$(eval_gettext "The shortcut has been placed on your desktop")" "$TITLE"
|
|
+POL_SetupWindow_message "$(eval_gettext "The shortcut has been placed on $HOME.local/share/applications/ and linked to your desktop")" "$TITLE"
|
|
POL_SetupWindow_Close
|