Come abilitare / disabilitare la modalità scala di grigi in accessibilità tramite terminale / app?

5

Mi chiedo quale sarebbe il processo di abilitazione / disabilitazione della modalità scala di grigi nel pannello Accessibilità in Preferenze di Sistema?

Vorrei eseguire un semplice script, facendo clic su un'app nel Dock o tramite un comando Terminale e facendolo passare dalla modalità Scala di grigi alla modalità normale.

Qualche idea?

    
posta esaruoho 02.06.2016 - 22:27
fonte

3 risposte

3

Se vuoi creare un'applicazione AppleScript da inserire nel Dock puoi usare il seguente codice in OS X Yosemite (e quest'ultimo, credo).

tell application "System Preferences"
    activate
    reveal anchor "Seeing_Display" of pane id "com.apple.preference.universalaccess"
end tell
tell application "System Events" to tell process "System Preferences"
    click the checkbox "Use grayscale" of window "Accessibility"
end tell
tell application "System Preferences"
    quit
end tell

In Script Editor, salvalo come Toggle Grayscale cambiando il Formato file: a: Applicazione

Puoi dare all'app un'icona diversa tramite copia e incolla nell'icona della scheda Ottieni informazioni dell'app e poi trascina il pacchetto App sul Dock.

Dovrai dare il permesso in Accessibilità nella scheda Privacy di Sicurezza e amp; Privacy nelle Preferenze di sistema per eseguirlo correttamente.

Se vuoi usare uno script bash usando il codice fornito da IconDaemon, il seguente codice si alternerà tra l'uso del colore e in scala di grigi in base a come è attualmente impostato.

#!/bin/bash

setGrayscale () {

    defaults write com.apple.universalaccess grayscale -bool $1
    defaults write com.apple.CoreGraphics DisplayUseForcedGray -bool $1
    launchctl unload /System/Library/LaunchAgents/com.apple.universalaccessd.plist
    launchctl load /System/Library/LaunchAgents/com.apple.universalaccessd.plist

    case "$1" in
        "NO")
            echo "  Changing Display to use color. This will take a moment..."
        ;;
        "YES")
            echo "  Changing Display to use grayscale. This will take a moment..."
        ;;
    esac

}

_bool="$(defaults read com.apple.universalaccess grayscale 2>/dev/null)"

case "$_bool" in
    "0")
        setGrayscale "YES"
    ;;
    "1")
        setGrayscale "NO"
    ;;
    *)
        setGrayscale "YES"
    ;;
esac

    
risposta data 03.06.2016 - 00:12
fonte
4

I file .plist che sono modificati dal pannello Accessibilità si trovano in ~/Library/Preferences e sono com.apple.CoreGraphics e com.apple.universalaccess .

Non vengono apportate modifiche a nessun file in ~/Library/Preferences/ByHost

Esegui i comandi:

defaults write com.apple.universalaccess grayscale -bool yes

defaults write com.apple.CoreGraphics DisplayUseForcedGray -bool yes

Quindi imponi il cambio di colore in scala di grigi scaricando e ricaricando il processo universalaccessd :

launchctl unload /System/Library/LaunchAgents/com.apple.universalaccessd.plist

launchctl load /System/Library/LaunchAgents/com.apple.universalaccessd.plist

Per tornare al colore, esegui gli stessi comandi con i parametri defaults impostati su no .

A differenza del pannello Accessibilità, che cambia istantaneamente il colore, questo metodo può richiedere alcuni secondi per effettuare la transizione.

    
risposta data 02.06.2016 - 22:57
fonte
2

Ciò richiede strumenti di sviluppo per compilare un programma C obiettivo. Il programma è basato su questa risposta StackOverflow .

Crea un file chiamato grayscale.c con i seguenti contenuti:

// clang -g -O2 -std=c11 -Wall -framework ApplicationServices
// https://stackoverflow.com/questions/14163788/how-does-on-screen-color-inversion-work-in-os-x
#include <stdio.h>
#include <ApplicationServices/ApplicationServices.h>

CG_EXTERN bool CGDisplayUsesForceToGray(void);
CG_EXTERN void CGDisplayForceToGray(bool forceToGray);

int
main(int argc, char** argv)
{
    bool isGrayscale = CGDisplayUsesForceToGray();
    printf("isGrayscale = %d\n", isGrayscale);
    CGDisplayForceToGray(!isGrayscale);
    printf("Grayscale is now: %d\n", CGDisplayUsesForceToGray());

    return 0;
}

Quindi esegui il seguente comando per compilarlo:

clang -g -O2 -std=c11 -Wall -framework ApplicationServices ./grayscale.c -o toggle-grayscale

Ora esegui ./toggle-grayscale Questo rende istantaneamente lo schermo in scala di grigi o no tra tutte le applicazioni, ma non aggiorna l'impostazione in Preferenze di Sistema.

Testato su MacOS High Sierra 10.13.6, versione clang Apple LLVM version 10.0.0 (clang-1000.10.44.4) .

    
risposta data 13.11.2018 - 18:47
fonte

Leggi altre domande sui tag