[RISOLTO] Pacchetto per aggiungere/rimuovere le icone del dock in macOS

Domande sul packaging WAPT / Richieste e assistenza sui pacchetti Wapt.
Regole del forum
Regole del forum della community
* Supporto in inglese su www.reddit.com/r/wapt
* Supporto della community in francese disponibile su questo forum
* Si prega di anteporre [RISOLTO] al titolo dell'argomento se è stato risolto.
* Si prega di non modificare un argomento contrassegnato con [RISOLTO]. Aprire un nuovo argomento facendo riferimento a quello precedente.
* Specificare la versione di WAPT installata, la versione completa e il numero di build (2.2.1.11957 / 2.2.2.12337 / ecc.) nonché l'edizione Enterprise/Discovery.
* Le versioni 1.8.2 e precedenti non sono più supportate. Le uniche domande accettate relative alla versione 1.8.2 riguardano l'aggiornamento a una versione supportata (2.1, 2.2, ecc.).
* Specificare il sistema operativo del server (Linux/Windows) e la versione (Debian Buster/Bullseye - CentOS 7 - Windows Server 2012/2016/2019).
* Specificare il sistema operativo della macchina di amministrazione/creazione dei pacchetti e della macchina con l'agente problematico, se applicabile (Windows 7/10/11/Debian 11/ecc.).
* Evitare di porre più domande quando si apre una discussione, altrimenti potrebbe essere ignorata. Se ci sono più discussioni, aprirle separatamente, preferibilmente una dopo l'altra e non tutte contemporaneamente (ovvero, non intasare il forum).
* Includere frammenti di codice, screenshot e altre immagini direttamente nel post. I link a Pastebin, Bitly e altri siti di terze parti verranno sistematicamente rimossi.
* Come in qualsiasi forum della community, il supporto è fornito volontariamente dai membri. Se si necessita di supporto commerciale, è possibile contattare il reparto vendite di Tranquil IT al numero 02.40.97.57.55
Risposta
bastien30
Messaggi: 38
Registrazione: 8 marzo 2024 - 15:21

8 novembre 2024 - 17:00

Buongiorno,

Ecco il pacchetto che ho creato per aggiungere e rimuovere applicazioni nel dock delle workstation MacOS che distribuiamo.

È facilmente modificabile modificando le tabelle da rimuovere[] E da_aggiungere[] a tuo piacimento.
Gestisce solo le applicazioni che si trovano in /Applicazioni/ (ma non è difficile modificarle se necessario).

È anche possibile riprendere solo le funzioni rimuovi_scorciatoia_dock() E aggiungi_scorciatoia_dock() e usali nei tuoi pacchetti.

Non è pulitissimo, ma fa il suo lavoro; se ne hai uno migliore, sono tutto orecchie :D

Codice: Seleziona tutto

# -*- coding: utf-8 -*-
from setuphelpers import *

# Source: https://stackoverflow.com/questions/19918547/how-to-remove-an-application-icon-from-dock-from-mac-osx-mavericks

def install():
    print(r'Installation does nothing, dock will be configured per user at first session-setup.') 
    
def uninstall():
    print(r'Uninstallation does nothing, launch "defaults delete com.apple.dock; killall Dock" in user shell to reset the dock to defaults settings.')

def session_setup():
    to_remove = ["Safari", "Messages", "Mail", "Plans", "Photos", "FaceTime", "Contacts", "Freeform", "TV", "Musique", "Keynote", "Numbers", "Pages", "App Store"]
    for app in to_remove:
        remove_dock_shortcut(name=app)
    
    to_add = ["Thunderbird", "3CX Desktop App", "Spark", "WAPT/WAPT Self-service"]
    for app in to_add:
        add_dock_shortcut(name=app)

    # Reload dock after all modifications    
    run("osascript -e 'tell Application \"Dock\"' -e 'quit' -e 'end tell'")

def remove_dock_shortcut(name=None, reload=False):
    """Remove shortcut from MacOS dock
    Args:
        name : application name (it has to be in /Application/)
        reload (boolean) : if True, reload dock before return
    Returns:
        True if dock was updated, else False
    """
    if name:
        all_shortcuts = run(r'defaults read com.apple.dock persistent-apps | grep file-label\"').split("\n")
        i = 0
        for shortcut in all_shortcuts:
            if "=" in shortcut:
                current = shortcut.split("=")[1].split(";")[0].strip().strip('"')
                if current == name:
                    run(r'/usr/libexec/PlistBuddy -c "Delete persistent-apps:%s" ~/Library/Preferences/com.apple.dock.plist' % i)
                    if reload:
                        run("osascript -e 'tell Application \"Dock\"' -e 'quit' -e 'end tell'")
                    return True
            i += 1
    return False

def add_dock_shortcut(name=None, reload=False):
    """Add shortcut to MacOS dock
    Args:
        name : application name (it has to be in /Application/)
        reload (boolean) : if True, reload dock before return
    Returns:
        True if dock was updated, else False
    """
    if name:
        run(r'defaults write com.apple.dock persistent-apps -array-add "<dict><key>tile-data</key><dict><key>file-data</key><dict><key>_CFURLString</key><string>/Applications/%s.app/</string><key>_CFURLStringType</key><integer>0</integer></dict></dict></dict>"' % name)
        if reload:
            run("osascript -e 'tell Application \"Dock\"' -e 'quit' -e 'end tell'")
        return True
    return False
Risposta