Différences
Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente | ||
bricoler:prive:samba [2025/05/31 14:24] – créée dpt | bricoler:prive:samba [2025/05/31 21:24] (Version actuelle) – [IP sur le réseau] dpt | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | Solution simple : Partage de fichiers avec Samba | + | ====== |
+ | |||
+ | ===== IP sur le réseau ===== | ||
+ | |||
+ | |bureau-dp(192.168.1.179)|48: | ||
+ | |opera-dp(192.168.1.198)|d4: | ||
+ | |portable-dp(192.168.1.241)|4c: | ||
+ | |pascot(192.168.1.109)|dc: | ||
+ | |||
+ | |||
+ | ==== Questions GPT ==== | ||
Linux Mint permet de partager facilement des dossiers (comme le dossier Bureau) avec Samba, compatible avec tous les systèmes (Linux, Windows, macOS). | Linux Mint permet de partager facilement des dossiers (comme le dossier Bureau) avec Samba, compatible avec tous les systèmes (Linux, Windows, macOS). | ||
Ligne 386: | Ligne 396: | ||
Avoir une intégration automatique au démarrage ? | Avoir une intégration automatique au démarrage ? | ||
+ | |||
+ | Parfait ! Voici la version améliorée de l' | ||
+ | ✅ Fonctions incluses : | ||
+ | |||
+ | ✅ Montage des dossiers Bureau distants via case à cocher | ||
+ | |||
+ | 🧹 Démontage possible via un bouton | ||
+ | |||
+ | 📄 Liste des IPs configurable via un fichier machines.txt | ||
+ | |||
+ | 🔁 Exécutable au démarrage automatique (via .desktop) | ||
+ | |||
+ | 📁 Arborescence recommandée | ||
+ | |||
+ | Crée ce dossier pour stocker tout : | ||
+ | |||
+ | ~/ | ||
+ | ├── monter_bureaux_gui.py | ||
+ | ├── machines.txt | ||
+ | ├── monter_bureaux.desktop | ||
+ | |||
+ | 📄 machines.txt — Liste des IP/ | ||
+ | |||
+ | Crée un fichier machines.txt contenant une IP par ligne : | ||
+ | |||
+ | 192.168.1.10 | ||
+ | 192.168.1.11 | ||
+ | 192.168.1.12 | ||
+ | |||
+ | 🖥️ Script monter_bureaux_gui.py | ||
+ | |||
+ | Voici la version complète du script Python GTK avec montage/ | ||
+ | |||
+ | # | ||
+ | import gi | ||
+ | gi.require_version(" | ||
+ | from gi.repository import Gtk | ||
+ | import subprocess | ||
+ | import os | ||
+ | |||
+ | PARTAGE = " | ||
+ | MONTAGE_PARENT = os.path.expanduser(" | ||
+ | FICHIER_IP = os.path.expanduser(" | ||
+ | |||
+ | def lire_machines(): | ||
+ | if not os.path.exists(FICHIER_IP): | ||
+ | return [] | ||
+ | with open(FICHIER_IP) as f: | ||
+ | return [ligne.strip() for ligne in f if ligne.strip()] | ||
+ | |||
+ | class BureauShareItem(Gtk.Box): | ||
+ | def __init__(self, | ||
+ | super().__init__(orientation=Gtk.Orientation.HORIZONTAL, | ||
+ | self.ip = ip | ||
+ | self.checkbox = Gtk.CheckButton(label=f" | ||
+ | self.pack_start(self.checkbox, | ||
+ | self.share_available = self.check_share() | ||
+ | if not self.share_available: | ||
+ | self.checkbox.set_sensitive(False) | ||
+ | self.checkbox.set_label(f" | ||
+ | |||
+ | def check_share(self): | ||
+ | try: | ||
+ | output = subprocess.check_output([" | ||
+ | return PARTAGE in output | ||
+ | except: | ||
+ | return False | ||
+ | |||
+ | class BureauShareApp(Gtk.Window): | ||
+ | def __init__(self): | ||
+ | super().__init__(title=" | ||
+ | self.set_border_width(15) | ||
+ | self.set_default_size(450, | ||
+ | self.items = [] | ||
+ | |||
+ | vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, | ||
+ | self.add(vbox) | ||
+ | |||
+ | for ip in lire_machines(): | ||
+ | item = BureauShareItem(ip) | ||
+ | self.items.append(item) | ||
+ | vbox.pack_start(item, | ||
+ | |||
+ | hbox = Gtk.Box(spacing=10) | ||
+ | btn_monter = Gtk.Button(label=" | ||
+ | btn_monter.connect(" | ||
+ | hbox.pack_start(btn_monter, | ||
+ | |||
+ | btn_demonter = Gtk.Button(label=" | ||
+ | btn_demonter.connect(" | ||
+ | hbox.pack_start(btn_demonter, | ||
+ | |||
+ | vbox.pack_start(hbox, | ||
+ | |||
+ | def on_monter_clicked(self, | ||
+ | os.makedirs(MONTAGE_PARENT, | ||
+ | for item in self.items: | ||
+ | if item.checkbox.get_active() and item.share_available: | ||
+ | dossier = os.path.join(MONTAGE_PARENT, | ||
+ | os.makedirs(dossier, | ||
+ | subprocess.run([ | ||
+ | " | ||
+ | " | ||
+ | ]) | ||
+ | self.afficher_message(" | ||
+ | |||
+ | def on_demonter_clicked(self, | ||
+ | if not os.path.exists(MONTAGE_PARENT): | ||
+ | return | ||
+ | for nom in os.listdir(MONTAGE_PARENT): | ||
+ | chemin = os.path.join(MONTAGE_PARENT, | ||
+ | subprocess.run([" | ||
+ | self.afficher_message(" | ||
+ | |||
+ | def afficher_message(self, | ||
+ | dialog = Gtk.MessageDialog( | ||
+ | transient_for=self, | ||
+ | flags=0, | ||
+ | message_type=Gtk.MessageType.INFO, | ||
+ | buttons=Gtk.ButtonsType.OK, | ||
+ | text=texte, | ||
+ | ) | ||
+ | dialog.run() | ||
+ | dialog.destroy() | ||
+ | |||
+ | if __name__ == " | ||
+ | win = BureauShareApp() | ||
+ | win.connect(" | ||
+ | win.show_all() | ||
+ | Gtk.main() | ||
+ | |||
+ | 🔁 Démarrage automatique avec .desktop | ||
+ | |||
+ | Crée ce fichier : | ||
+ | |||
+ | ~/ | ||
+ | |||
+ | Avec ce contenu : | ||
+ | |||
+ | [Desktop Entry] | ||
+ | Name=Montage Bureaux Réseau | ||
+ | Exec=/ | ||
+ | Terminal=false | ||
+ | Type=Application | ||
+ | X-GNOME-Autostart-enabled=true | ||
+ | |||
+ | 🔁 Remplace / | ||
+ | |||
+ | ✨ Finalisation | ||
+ | |||
+ | Crée le dossier : | ||
+ | |||
+ | mkdir -p ~/ | ||
+ | |||
+ | Place : | ||
+ | |||
+ | monter_bureaux_gui.py → ~/ | ||
+ | |||
+ | machines.txt → ~/ | ||
+ | |||
+ | .desktop → ~/ | ||
+ | |||
+ | Rends le script exécutable : | ||
+ | |||
+ | chmod +x ~/ | ||
+ | |||
+ | Souhaites-tu une version empaquetée en .deb ou un lanceur dans le menu Mint ? | ||
+ | |||
+ | Parfait ! Voici la version améliorée de l' | ||
+ | ✅ Fonctions incluses : | ||
+ | |||
+ | ✅ Montage des dossiers Bureau distants via case à cocher | ||
+ | |||
+ | 🧹 Démontage possible via un bouton | ||
+ | |||
+ | 📄 Liste des IPs configurable via un fichier machines.txt | ||
+ | |||
+ | 🔁 Exécutable au démarrage automatique (via .desktop) | ||
+ | |||
+ | 📁 Arborescence recommandée | ||
+ | |||
+ | Crée ce dossier pour stocker tout : | ||
+ | |||
+ | ~/ | ||
+ | ├── monter_bureaux_gui.py | ||
+ | ├── machines.txt | ||
+ | ├── monter_bureaux.desktop | ||
+ | |||
+ | 📄 machines.txt — Liste des IP/ | ||
+ | |||
+ | Crée un fichier machines.txt contenant une IP par ligne : | ||
+ | |||
+ | 192.168.1.10 | ||
+ | 192.168.1.11 | ||
+ | 192.168.1.12 | ||
+ | |||
+ | 🖥️ Script monter_bureaux_gui.py | ||
+ | |||
+ | Voici la version complète du script Python GTK avec montage/ | ||
+ | |||
+ | # | ||
+ | import gi | ||
+ | gi.require_version(" | ||
+ | from gi.repository import Gtk | ||
+ | import subprocess | ||
+ | import os | ||
+ | |||
+ | PARTAGE = " | ||
+ | MONTAGE_PARENT = os.path.expanduser(" | ||
+ | FICHIER_IP = os.path.expanduser(" | ||
+ | |||
+ | def lire_machines(): | ||
+ | if not os.path.exists(FICHIER_IP): | ||
+ | return [] | ||
+ | with open(FICHIER_IP) as f: | ||
+ | return [ligne.strip() for ligne in f if ligne.strip()] | ||
+ | |||
+ | class BureauShareItem(Gtk.Box): | ||
+ | def __init__(self, | ||
+ | super().__init__(orientation=Gtk.Orientation.HORIZONTAL, | ||
+ | self.ip = ip | ||
+ | self.checkbox = Gtk.CheckButton(label=f" | ||
+ | self.pack_start(self.checkbox, | ||
+ | self.share_available = self.check_share() | ||
+ | if not self.share_available: | ||
+ | self.checkbox.set_sensitive(False) | ||
+ | self.checkbox.set_label(f" | ||
+ | |||
+ | def check_share(self): | ||
+ | try: | ||
+ | output = subprocess.check_output([" | ||
+ | return PARTAGE in output | ||
+ | except: | ||
+ | return False | ||
+ | |||
+ | class BureauShareApp(Gtk.Window): | ||
+ | def __init__(self): | ||
+ | super().__init__(title=" | ||
+ | self.set_border_width(15) | ||
+ | self.set_default_size(450, | ||
+ | self.items = [] | ||
+ | |||
+ | vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, | ||
+ | self.add(vbox) | ||
+ | |||
+ | for ip in lire_machines(): | ||
+ | item = BureauShareItem(ip) | ||
+ | self.items.append(item) | ||
+ | vbox.pack_start(item, | ||
+ | |||
+ | hbox = Gtk.Box(spacing=10) | ||
+ | btn_monter = Gtk.Button(label=" | ||
+ | btn_monter.connect(" | ||
+ | hbox.pack_start(btn_monter, | ||
+ | |||
+ | btn_demonter = Gtk.Button(label=" | ||
+ | btn_demonter.connect(" | ||
+ | hbox.pack_start(btn_demonter, | ||
+ | |||
+ | vbox.pack_start(hbox, | ||
+ | |||
+ | def on_monter_clicked(self, | ||
+ | os.makedirs(MONTAGE_PARENT, | ||
+ | for item in self.items: | ||
+ | if item.checkbox.get_active() and item.share_available: | ||
+ | dossier = os.path.join(MONTAGE_PARENT, | ||
+ | os.makedirs(dossier, | ||
+ | subprocess.run([ | ||
+ | " | ||
+ | " | ||
+ | ]) | ||
+ | self.afficher_message(" | ||
+ | |||
+ | def on_demonter_clicked(self, | ||
+ | if not os.path.exists(MONTAGE_PARENT): | ||
+ | return | ||
+ | for nom in os.listdir(MONTAGE_PARENT): | ||
+ | chemin = os.path.join(MONTAGE_PARENT, | ||
+ | subprocess.run([" | ||
+ | self.afficher_message(" | ||
+ | |||
+ | def afficher_message(self, | ||
+ | dialog = Gtk.MessageDialog( | ||
+ | transient_for=self, | ||
+ | flags=0, | ||
+ | message_type=Gtk.MessageType.INFO, | ||
+ | buttons=Gtk.ButtonsType.OK, | ||
+ | text=texte, | ||
+ | ) | ||
+ | dialog.run() | ||
+ | dialog.destroy() | ||
+ | |||
+ | if __name__ == " | ||
+ | win = BureauShareApp() | ||
+ | win.connect(" | ||
+ | win.show_all() | ||
+ | Gtk.main() | ||
+ | |||
+ | 🔁 Démarrage automatique avec .desktop | ||
+ | |||
+ | Crée ce fichier : | ||
+ | |||
+ | ~/ | ||
+ | |||
+ | Avec ce contenu : | ||
+ | |||
+ | [Desktop Entry] | ||
+ | Name=Montage Bureaux Réseau | ||
+ | Exec=/ | ||
+ | Terminal=false | ||
+ | Type=Application | ||
+ | X-GNOME-Autostart-enabled=true | ||
+ | |||
+ | 🔁 Remplace / | ||
+ | |||
+ | ✨ Finalisation | ||
+ | |||
+ | Crée le dossier : | ||
+ | |||
+ | mkdir -p ~/ | ||
+ | |||
+ | Place : | ||
+ | |||
+ | monter_bureaux_gui.py → ~/ | ||
+ | |||
+ | machines.txt → ~/ | ||
+ | |||
+ | .desktop → ~/ | ||
+ | |||
+ | Rends le script exécutable : | ||
+ | |||
+ | chmod +x ~/ | ||
+ | |||
+ | Souhaites-tu une version empaquetée en .deb ou un lanceur dans le menu Mint ? | ||
+ | |||
+ | |||
+ | Parfait ! Voici comment créer un lanceur dans le menu de Linux Mint pour ouvrir ton application graphique de montage de dossiers réseau. | ||
+ | ✅ Étapes pour ajouter un lanceur dans le menu Mint | ||
+ | 1. Ouvre l’éditeur de menus Mint : | ||
+ | |||
+ | Tu peux y accéder de deux manières : | ||
+ | |||
+ | Clique droit sur le menu > Configurer > onglet Menu > bouton " | ||
+ | |||
+ | Ou lance dans un terminal : | ||
+ | |||
+ | mozo | ||
+ | |||
+ | Si mozo n’est pas installé, installe-le : | ||
+ | |||
+ | sudo apt install alacarte | ||
+ | |||
+ | 2. Crée une nouvelle entrée | ||
+ | |||
+ | Dans l' | ||
+ | |||
+ | Choisis une catégorie (ex : " | ||
+ | |||
+ | Clique sur " | ||
+ | |||
+ | Remplis les champs suivants : | ||
+ | |||
+ | Nom : Montage Bureaux Réseau | ||
+ | |||
+ | Commande : | ||
+ | |||
+ | python3 / | ||
+ | |||
+ | Remplace < | ||
+ | |||
+ | Commentaire (facultatif) : Interface pour monter les dossiers Bureau partagés | ||
+ | |||
+ | Clique sur l’icône pour en choisir une si tu veux (ex. dossier réseau) | ||
+ | |||
+ | Clique sur " | ||
+ | |||
+ | 3. Tester le lanceur | ||
+ | |||
+ | Ouvre ton Menu Mint | ||
+ | |||
+ | Va dans la catégorie choisie (ex. " | ||
+ | |||
+ | Clique sur " | ||
+ | |||
+ | L’interface devrait se lancer | ||
+ | |||
+ | ✅ Astuce : si ça ne se lance pas, vérifie que le script est bien exécutable : | ||
+ | |||
+ | chmod +x ~/ | ||
+ | |||
+ | Souhaites-tu maintenant : | ||
+ | |||
+ | Ajouter une icône personnalisée (SVG/PNG) pour ce lanceur ? | ||
+ | |||
+ | Que je t’aide à convertir tout ça en un .deb installable proprement ? | ||
+ | Parfait ! Voici comment créer un lanceur dans le menu de Linux Mint pour ouvrir ton application graphique de montage de dossiers réseau. | ||
+ | ✅ Étapes pour ajouter un lanceur dans le menu Mint | ||
+ | 1. Ouvre l’éditeur de menus Mint : | ||
+ | |||
+ | Tu peux y accéder de deux manières : | ||
+ | |||
+ | Clique droit sur le menu > Configurer > onglet Menu > bouton " | ||
+ | |||
+ | Ou lance dans un terminal : | ||
+ | |||
+ | mozo | ||
+ | |||
+ | Si mozo n’est pas installé, installe-le : | ||
+ | |||
+ | sudo apt install alacarte | ||
+ | |||
+ | 2. Crée une nouvelle entrée | ||
+ | |||
+ | Dans l' | ||
+ | |||
+ | Choisis une catégorie (ex : " | ||
+ | |||
+ | Clique sur " | ||
+ | |||
+ | Remplis les champs suivants : | ||
+ | |||
+ | Nom : Montage Bureaux Réseau | ||
+ | |||
+ | Commande : | ||
+ | |||
+ | python3 / | ||
+ | |||
+ | Remplace < | ||
+ | |||
+ | Commentaire (facultatif) : Interface pour monter les dossiers Bureau partagés | ||
+ | |||
+ | Clique sur l’icône pour en choisir une si tu veux (ex. dossier réseau) | ||
+ | |||
+ | Clique sur " | ||
+ | |||
+ | 3. Tester le lanceur | ||
+ | |||
+ | Ouvre ton Menu Mint | ||
+ | |||
+ | Va dans la catégorie choisie (ex. " | ||
+ | |||
+ | Clique sur " | ||
+ | |||
+ | L’interface devrait se lancer | ||
+ | |||
+ | ✅ Astuce : si ça ne se lance pas, vérifie que le script est bien exécutable : | ||
+ | |||
+ | chmod +x ~/ | ||
+ | |||
+ | Souhaites-tu maintenant : | ||
+ | |||
+ | Ajouter une icône personnalisée (SVG/PNG) pour ce lanceur ? | ||
+ | |||
+ | Que je t’aide à convertir tout ça en un .deb installable proprement ? | ||
+ | | ||
+ | | ||
+ | Très bien ! Voici comment ajouter une icône personnalisée à ton lanceur Linux Mint pour que l’entrée dans le menu soit plus claire et visuellement agréable. | ||
+ | 🧱 Étapes pour ajouter une icône | ||
+ | 📁 1. Choisis ou crée une icône | ||
+ | |||
+ | Format recommandé : .png ou .svg | ||
+ | |||
+ | Taille recommandée : 48×48 ou 64×64 | ||
+ | |||
+ | Nom de fichier suggéré : reseau-bureau.png | ||
+ | |||
+ | 📂 2. Place ton icône | ||
+ | |||
+ | Copie l’image dans un dossier standard, par exemple : | ||
+ | |||
+ | mkdir -p ~/ | ||
+ | cp reseau-bureau.png ~/ | ||
+ | |||
+ | ✍️ 3. Modifier le fichier .desktop | ||
+ | |||
+ | Si tu as déjà créé le fichier .desktop dans ~/ | ||
+ | |||
+ | nano ~/ | ||
+ | |||
+ | Ajoute ou modifie la ligne suivante : | ||
+ | |||
+ | Icon=reseau-bureau | ||
+ | |||
+ | ⚠️ Ne mets pas l’extension .png ou .svg dans le champ Icon, juste le nom de fichier (le système les trouve automatiquement). | ||
+ | |||
+ | ✅ Exemple complet | ||
+ | |||
+ | [Desktop Entry] | ||
+ | Name=Montage Bureaux Réseau | ||
+ | Exec=python3 / | ||
+ | Icon=reseau-bureau | ||
+ | Type=Application | ||
+ | Terminal=false | ||
+ | X-GNOME-Autostart-enabled=true | ||
+ | |||
+ | 🔁 4. Rafraîchir le cache des icônes (si besoin) | ||
+ | |||
+ | gtk-update-icon-cache ~/ | ||
+ | |||
+ | 📌 Résultat | ||
+ | |||
+ | L’entrée " | ||
+ | |||
+ | Souhaites-tu que je te génère une icône réseau-dossier stylée (minimaliste ou colorée) en PNG ou SVG ? | ||
+ | |||
+ | |||