Files
MD-to-Prrint/desktop/install-desktop.sh
syoul 210700e4df Intégration bureau MATE/Caja avec actions contextuelles
- 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)
2025-12-25 16:38:42 +01:00

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