- Fichiers .desktop pour actions: Imprimer, Convertir, Prévisualiser - Script install-desktop.sh pour installation automatique - Support sélection multiple de fichiers - Compatible Caja Actions (MATE Desktop)
230 lines
7.9 KiB
Bash
Executable File
230 lines
7.9 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Script d'installation pour l'intégration bureau MD_to_Print
|
|
# Usage: ./install-desktop.sh [--uninstall]
|
|
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROJECT_DIR="$(dirname "$SCRIPT_DIR")"
|
|
CAJA_ACTIONS_DIR="$HOME/.local/share/caja/actions"
|
|
LOCAL_BIN_DIR="$HOME/.local/bin"
|
|
SYSTEM_BIN_DIR="/usr/local/bin"
|
|
|
|
# Couleurs
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m'
|
|
|
|
# Fonction d'aide
|
|
show_help() {
|
|
cat << EOF
|
|
Installation de l'intégration bureau MD_to_Print
|
|
|
|
Usage: $0 [OPTIONS]
|
|
|
|
OPTIONS:
|
|
--uninstall Désinstaller l'intégration bureau
|
|
--system Installer dans /usr/local/bin (nécessite sudo)
|
|
--help Afficher cette aide
|
|
|
|
Par défaut, installe dans ~/.local/bin (pas besoin de sudo)
|
|
EOF
|
|
}
|
|
|
|
# Fonction de notification
|
|
notify() {
|
|
local level="$1"
|
|
shift
|
|
local message="$*"
|
|
|
|
if command -v notify-send &> /dev/null; then
|
|
case "$level" in
|
|
info) notify-send -i "dialog-information" "MD_to_Print" "$message" 2>/dev/null || true ;;
|
|
success) notify-send -i "dialog-information" "MD_to_Print" "$message" 2>/dev/null || true ;;
|
|
error) notify-send -i "dialog-error" "MD_to_Print" "$message" 2>/dev/null || true ;;
|
|
esac
|
|
fi
|
|
echo -e "${GREEN}$message${NC}"
|
|
}
|
|
|
|
# Vérification des dépendances
|
|
check_dependencies() {
|
|
local missing=()
|
|
local critical_missing=()
|
|
|
|
# Dépendance critique : caja-actions
|
|
if ! command -v caja-actions-config-tool &> /dev/null && ! dpkg -l | grep -q "caja-actions"; then
|
|
critical_missing+=("caja-actions")
|
|
fi
|
|
|
|
if ! command -v notify-send &> /dev/null; then
|
|
missing+=("libnotify-bin")
|
|
fi
|
|
|
|
if ! command -v zenity &> /dev/null && ! command -v yad &> /dev/null; then
|
|
missing+=("zenity")
|
|
fi
|
|
|
|
if [ ${#critical_missing[@]} -gt 0 ]; then
|
|
echo -e "${RED}Dépendance CRITIQUE manquante: ${critical_missing[*]}${NC}"
|
|
echo -e "${YELLOW}Sans caja-actions, les actions ne pourront pas apparaître dans le menu contextuel.${NC}"
|
|
echo -e "${BLUE}Installation: sudo apt-get install caja-actions${NC}"
|
|
echo ""
|
|
read -p "Installer caja-actions maintenant? (o/N): " -n 1 -r
|
|
echo
|
|
if [[ $REPLY =~ ^[Oo]$ ]]; then
|
|
if sudo apt-get install -y caja-actions; then
|
|
echo -e "${GREEN}caja-actions installé avec succès${NC}"
|
|
else
|
|
echo -e "${RED}Échec de l'installation de caja-actions${NC}"
|
|
return 1
|
|
fi
|
|
else
|
|
echo -e "${YELLOW}Installation de caja-actions annulée. Les actions ne fonctionneront pas.${NC}"
|
|
return 1
|
|
fi
|
|
fi
|
|
|
|
if [ ${#missing[@]} -gt 0 ]; then
|
|
echo -e "${YELLOW}Dépendances optionnelles manquantes: ${missing[*]}${NC}"
|
|
echo -e "${BLUE}Installation: sudo apt-get install ${missing[*]}${NC}"
|
|
return 1
|
|
fi
|
|
|
|
return 0
|
|
}
|
|
|
|
# Installation
|
|
install() {
|
|
local INSTALL_BIN_DIR="$LOCAL_BIN_DIR"
|
|
local USE_SUDO=false
|
|
|
|
# Vérifier option --system
|
|
if [ "${1:-}" = "--system" ]; then
|
|
INSTALL_BIN_DIR="$SYSTEM_BIN_DIR"
|
|
USE_SUDO=true
|
|
|
|
if [ "$EUID" -ne 0 ] && ! sudo -n true 2>/dev/null; then
|
|
echo -e "${RED}Erreur: --system nécessite les privilèges sudo${NC}"
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
echo -e "${BLUE}=== Installation de l'intégration bureau MD_to_Print ===${NC}"
|
|
|
|
# Vérifier les dépendances
|
|
if ! check_dependencies; then
|
|
if ! command -v caja-actions-config-tool &> /dev/null && ! dpkg -l | grep -q "caja-actions"; then
|
|
echo -e "${RED}Installation annulée: caja-actions est requis${NC}"
|
|
exit 1
|
|
fi
|
|
echo -e "${YELLOW}Certaines dépendances optionnelles sont manquantes, mais l'installation continue...${NC}"
|
|
fi
|
|
|
|
# Créer les répertoires nécessaires
|
|
mkdir -p "$CAJA_ACTIONS_DIR"
|
|
mkdir -p "$INSTALL_BIN_DIR"
|
|
|
|
# Copier les fichiers .desktop
|
|
echo -e "${BLUE}Installation des actions Caja...${NC}"
|
|
cp "$SCRIPT_DIR"/*.desktop "$CAJA_ACTIONS_DIR/" 2>/dev/null || {
|
|
echo -e "${RED}Erreur: Impossible de copier les fichiers .desktop${NC}"
|
|
exit 1
|
|
}
|
|
|
|
# Installer les scripts
|
|
echo -e "${BLUE}Installation des scripts...${NC}"
|
|
|
|
if [ "$USE_SUDO" = true ]; then
|
|
sudo cp "$PROJECT_DIR/scripts/md_to_print_gui.sh" "$INSTALL_BIN_DIR/"
|
|
sudo cp "$PROJECT_DIR/scripts/md_to_print_notify.sh" "$INSTALL_BIN_DIR/"
|
|
sudo chmod +x "$INSTALL_BIN_DIR/md_to_print_gui.sh"
|
|
sudo chmod +x "$INSTALL_BIN_DIR/md_to_print_notify.sh"
|
|
else
|
|
cp "$PROJECT_DIR/scripts/md_to_print_gui.sh" "$INSTALL_BIN_DIR/"
|
|
cp "$PROJECT_DIR/scripts/md_to_print_notify.sh" "$INSTALL_BIN_DIR/"
|
|
chmod +x "$INSTALL_BIN_DIR/md_to_print_gui.sh"
|
|
chmod +x "$INSTALL_BIN_DIR/md_to_print_notify.sh"
|
|
fi
|
|
|
|
# Vérifier que les scripts sont dans le PATH
|
|
if [[ ":$PATH:" != *":$INSTALL_BIN_DIR:"* ]] && [ "$INSTALL_BIN_DIR" = "$LOCAL_BIN_DIR" ]; then
|
|
echo -e "${YELLOW}Attention: $INSTALL_BIN_DIR n'est pas dans votre PATH${NC}"
|
|
echo -e "${BLUE}Ajoutez cette ligne à votre ~/.bashrc ou ~/.profile:${NC}"
|
|
echo -e "${GREEN}export PATH=\"\$HOME/.local/bin:\$PATH\"${NC}"
|
|
fi
|
|
|
|
# Vérifier que md_to_print.sh est accessible
|
|
if ! command -v md_to_print.sh &> /dev/null && [ ! -f "$PROJECT_DIR/md_to_print.sh" ]; then
|
|
echo -e "${YELLOW}Attention: md_to_print.sh non trouvé${NC}"
|
|
echo -e "${BLUE}Assurez-vous que md_to_print.sh est installé ou que Docker est configuré${NC}"
|
|
fi
|
|
|
|
notify success "Installation terminée avec succès!"
|
|
echo -e "${GREEN}=== Installation terminée ===${NC}"
|
|
echo ""
|
|
echo -e "${BLUE}IMPORTANT: Configuration Caja Actions${NC}"
|
|
echo -e "${YELLOW}1. Ouvrez l'outil de configuration:${NC}"
|
|
echo -e "${GREEN} caja-actions-config-tool${NC}"
|
|
echo ""
|
|
echo -e "${YELLOW}2. Dans les préférences (Édition > Préférences), désactivez:${NC}"
|
|
echo -e "${GREEN} 'Créer un menu racine Caja-Actions'${NC}"
|
|
echo -e "${YELLOW} (pour que les actions apparaissent directement dans le menu)${NC}"
|
|
echo ""
|
|
echo -e "${BLUE}3. Redémarrez Caja:${NC}"
|
|
echo -e "${GREEN} caja -q${NC}"
|
|
echo ""
|
|
echo -e "${BLUE}Les actions suivantes sont maintenant disponibles:${NC}"
|
|
echo -e " - Imprimer avec MD_to_Print"
|
|
echo -e " - Convertir en PDF (MD_to_Print)"
|
|
echo -e " - Prévisualiser avant impression"
|
|
}
|
|
|
|
# Désinstallation
|
|
uninstall() {
|
|
echo -e "${BLUE}=== Désinstallation de l'intégration bureau MD_to_Print ===${NC}"
|
|
|
|
# Supprimer les fichiers .desktop
|
|
if [ -d "$CAJA_ACTIONS_DIR" ]; then
|
|
echo -e "${BLUE}Suppression des actions Caja...${NC}"
|
|
rm -f "$CAJA_ACTIONS_DIR"/md-to-print-*.desktop
|
|
fi
|
|
|
|
# Supprimer les scripts
|
|
echo -e "${BLUE}Suppression des scripts...${NC}"
|
|
|
|
if [ -f "$LOCAL_BIN_DIR/md_to_print_gui.sh" ]; then
|
|
rm -f "$LOCAL_BIN_DIR/md_to_print_gui.sh"
|
|
fi
|
|
|
|
if [ -f "$LOCAL_BIN_DIR/md_to_print_notify.sh" ]; then
|
|
rm -f "$LOCAL_BIN_DIR/md_to_print_notify.sh"
|
|
fi
|
|
|
|
if [ -f "$SYSTEM_BIN_DIR/md_to_print_gui.sh" ]; then
|
|
if [ "$EUID" -eq 0 ] || sudo -n true 2>/dev/null; then
|
|
sudo rm -f "$SYSTEM_BIN_DIR/md_to_print_gui.sh"
|
|
sudo rm -f "$SYSTEM_BIN_DIR/md_to_print_notify.sh"
|
|
else
|
|
echo -e "${YELLOW}Les scripts système nécessitent sudo pour être supprimés${NC}"
|
|
fi
|
|
fi
|
|
|
|
notify success "Désinstallation terminée"
|
|
echo -e "${GREEN}=== Désinstallation terminée ===${NC}"
|
|
echo -e "${BLUE}Redémarrez Caja: caja -q${NC}"
|
|
}
|
|
|
|
# Parsing des arguments
|
|
if [ "${1:-}" = "--uninstall" ]; then
|
|
uninstall
|
|
elif [ "${1:-}" = "--help" ] || [ "${1:-}" = "-h" ]; then
|
|
show_help
|
|
else
|
|
install "$@"
|
|
fi
|
|
|