¿Cómo habilitar / deshabilitar el modo de escala de grises en Accesibilidad a través de Terminal / Aplicación?

5

Me pregunto ¿cuál sería el proceso de habilitar / deshabilitar el modo de escala de grises en el panel Accesibilidad en Preferencias del sistema?

Me gustaría ejecutar un script simple, ya sea haciendo clic en una aplicación en el Dock o mediante un comando de Terminal, y hacer que cambie de la escala de grises al modo normal.

¿Alguna idea?

    
pregunta esaruoho 02.06.2016 - 22:27

3 respuestas

3

Si desea crear una aplicación AppleScript para colocarla en el Dock, puede usar el siguiente código en OS X Yosemite (y en este último caso, creo).

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

En el Editor de secuencias de comandos, guárdelo como Cambiar a escala de grises cambiando el Formato de archivo: a: Aplicación

Puede darle a la aplicación un ícono diferente a través de copiar y pegar en el ícono de la hoja Obtener información de la aplicación y luego arrastrar y soltar el paquete de la aplicación en el Dock.

Tendrá que dar permiso en Accesibilidad en la pestaña Privacidad de Seguridad y amp; Privacidad en las Preferencias del Sistema para ejecutarlo con éxito.

Si desea utilizar un bash script utilizando el código que proporciona IconDaemon, el siguiente código alternará entre el uso del color y escala de grises en función de cómo está configurado actualmente.

#!/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

    
respondido por el user3439894 03.06.2016 - 00:12
4

Los archivos .plist que son modificados por el panel Accesibilidad se encuentran en ~/Library/Preferences y son com.apple.CoreGraphics y com.apple.universalaccess .

No se realizan cambios en ningún archivo en ~/Library/Preferences/ByHost

Ejecuta los comandos:

defaults write com.apple.universalaccess grayscale -bool yes

defaults write com.apple.CoreGraphics DisplayUseForcedGray -bool yes

Luego fuerza el cambio de color a escala de grises descargando y recargando el proceso universalaccessd :

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

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

Para volver al color, ejecute los mismos comandos con los parámetros defaults establecidos en no .

A diferencia del panel Accesibilidad, que cambia el color instantáneamente, este método puede tardar unos segundos en hacer la transición.

    
respondido por el IconDaemon 02.06.2016 - 22:57
2

Esto requiere herramientas de desarrollador para compilar un programa C objetivo. El programa se basa en esta respuesta de Stackoverflow .

Cree un archivo llamado grayscale.c con el siguiente contenido:

// 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;
}

Luego ejecuta el siguiente comando para compilarlo:

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

Ahora ejecute ./toggle-grayscale Esto hace que la pantalla aparezca en escala de grises o no en todas las aplicaciones, pero no actualiza la configuración en Preferencias del sistema.

Probado en MacOS High Sierra 10.13.6, versión de clang Apple LLVM version 10.0.0 (clang-1000.10.44.4) .

    
respondido por el RecursivelyIronic 13.11.2018 - 18:47

Lea otras preguntas en las etiquetas