12 votes

Comment activer/désactiver le mode niveaux de gris dans Accessibilité via Terminal/Application ?

Je me demande comment activer/désactiver le mode niveaux de gris dans le panneau Accessibilité des Préférences Système ?

Je voudrais exécuter un simple script, soit en cliquant sur une application dans le Dock, soit par une commande Terminal, et faire en sorte qu'il passe des niveaux de gris au mode normal.

Des idées ?

10voto

RecursivelyIronic Points 251

Cela nécessite des outils de développement pour compiler un programme C objectif. Le programme est basé sur cette réponse de Stackoverflow .

Créez un fichier appelé grayscale.c avec le contenu suivant :

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

Ensuite, exécutez la commande suivante pour le compiler :

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

Exécutez maintenant ./toggle-grayscale Cela fait instantanément en sorte que l'écran soit en niveaux de gris ou non dans toutes les applications, mais ne met pas à jour le paramètre dans les Préférences Système.

Testé sur MacOS High Sierra 10.13.6, version clang Apple LLVM version 10.0.0 (clang-1000.10.44.4) .

6voto

user3439894 Points 52496

Remarque : L'exemple de code AppleScript a été mis à jour pour gérer la dernière version actuelle de MacOS (Mojave) et ajouter des améliorations supplémentaires au code. Sur les versions antérieures d'OS X/MacOS, il se peut que vous deviez supprimer l'option of group 1 des deux lignes de l'exemple de code AppleScript qui l'ont, pour que le code fonctionne.


Si vous souhaitez créer une application AppleScript à placer dans le Dock, vous pouvez utiliser la méthode suivante code dans OS X Yosemite (et plus tard, je crois).

if running of application "System Preferences" then
    try
        tell application "System Preferences" to quit
    on error
        do shell script "killall 'System Preferences'"
    end try
end if

repeat while running of application "System Preferences" is true
    delay 0.01
end repeat

tell application "System Preferences" to reveal anchor "Seeing_Display" of ¬
    pane id "com.apple.preference.universalaccess"

tell application "System Events" to tell process "System Preferences"
    repeat until exists checkbox "Use grayscale" of group 1 of ¬
        window "Accessibility"
        delay 0.01
    end repeat
    click the checkbox "Use grayscale" of group 1 of window "Accessibility"
end tell

tell application "System Preferences" to quit

Dans l'éditeur script, sauvegardez-le en tant que Toggle Grayscale en changeant le Format de fichier : en : Application

Vous pouvez donner à l'application une icône différente en faisant un copier-coller dans l'icône de la fiche d'information de l'application, puis en faisant glisser le paquet d'applications sur le Dock.

Vous devrez donner votre autorisation sous Accessibilité, dans l'onglet Confidentialité de Sécurité et confidentialité des Préférences système, afin de pouvoir l'exécuter avec succès.


Si vous souhaitez utiliser un bash script en utilisant le code fourni par IconDaemon, les éléments suivants code basculera entre l'utilisation de la couleur et des niveaux de gris en fonction de la façon dont il est actuellement défini.

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

enter image description here

4voto

IconDaemon Points 17417

Les fichiers .plist qui sont modifiés par le panneau d'accessibilité se trouvent à l'adresse suivante ~/Library/Preferences et ils sont com.apple.CoreGraphics y com.apple.universalaccess .

Aucune modification n'est apportée aux fichiers dans ~/Library/Preferences/ByHost

Exécutez les commandes :

defaults write com.apple.universalaccess grayscale -bool yes

defaults write com.apple.CoreGraphics DisplayUseForcedGray -bool yes

Forcez ensuite le changement de couleur en niveaux de gris en déchargeant et en rechargeant le fichier universalaccessd processus :

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

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

Pour revenir à la couleur, exécutez les mêmes commandes avec l'option defaults paramètres réglés sur no .

Contrairement au panneau Accessibilité, qui modifie la couleur instantanément, cette méthode peut prendre quelques secondes pour effectuer la transition.

4voto

Jonathan Leung Points 139

Pour Catalina et Big Sur, utilisez ce code AppleScript en ouvrant l'application script Editor. Ouvrez un nouveau document et copiez le code. Pour le rendre double-cliquable (en tant qu'application depuis le bureau, par exemple), cliquez sur Fichier > Exporter, puis choisissez comme Format de fichier > Application.

tell application "System Preferences"
    set the current pane to pane id "com.apple.preference.universalaccess"
    delay 1 #needs time to open universal access
    tell application "System Events" to tell process "System Preferences" to tell window "Accessibility"
        select row 5 of table 1 of scroll area 1 #open display preferences
        click radio button "Color Filters" of tab group 1 of group 1
        click checkbox "Enable Color Filters" of tab group 1 of group 1
    end tell
end tell
tell application "System Preferences" to quit

D'ici : https://gist.github.com/silesky/2da3a6bef1703e38d901ec9c623eecbd

1voto

Mike Points 35

Vous pouvez installer le logiciel libre Application Mode Niveaux de gris qui vous permet d'activer/désactiver les niveaux de gris à l'aide d'un raccourci personnalisé ou d'un simple clic droit sur l'icône de sa barre de menus

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X