Crea un nuevo espacio usando un atajo de teclado

10

Soy consciente de que puedes hacerlo desde Mission Control haciendo clic y no hay un acceso directo disponible en 'Teclado'.

¿Hay alguna manera de hacer esto usando un programa de terceros o Applescript?

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

Jonathan De Wet
fuente
Pregunta muy útil para mi flujo de trabajo. ¡También me gustaría saber sobre tu fondo de escritorio!
Qcom
1
Me alegra que te haya gustado la pregunta :) Aquí hay un enlace al fondo de pantalla somethingpeach.com/wp-content/uploads/2014/06/…
Jonathan De Wet

Respuestas:

1

Actualización: este método funciona en OS X 10.11 y anterior al menos a OS X 10.8 (no lo probé en nada anterior a OS X 10.8) pero ya no funciona como está codificado en macOS 10.12 debido a cambios significativos en el Control de Misión realizado por Apple .


Para agregar mediante programación un Escritorio en Mission Control, el siguiente código se puede usar como AppleScript o BASH Script junto con un Servicio Automator usando Run AppleScript o Run Shell Script, respectivamente, y una secuencia de teclas asignada al Servicio en Preferencias del Sistema en el Teclado Atajos


Código AppleScript:

do shell script "open -a 'Mission Control'"
delay 0.5
tell application "System Events" to click (every button whose value of attribute "AXDescription" is "add desktop") of group 1 of process "Dock"
delay 0.5
tell application "System Events" to key code 53

Código de script BASH:

#!/bin/bash

open -a 'Mission Control'
osascript -e 'delay 0.5' \
          -e 'tell application "System Events" to click (every button whose value of attribute "AXDescription" is "add desktop") of group 1 of process "Dock"' \
          -e 'delay 0.5' \
          -e 'tell application "System Events" to key code 53'

  • Abra Automator y seleccione Servicio .

  • Conjunto: el servicio no recibe ninguna entrada en ninguna aplicación

  • Agregue una acción Ejecutar AppleScript o Ejecutar script de shell .

  • Agregue el código apropiado para la Acción de destino .

  • Guarde el servicio como, por ejemplo: Agregar nuevo escritorio

  • Asigne un método abreviado de teclado para el Servicio en Preferencias del Sistema .

Nota: Tendrá que asignar una secuencia de teclas que no se use en ningún otro lugar del Sistema o en el Finder si elige cualquier aplicación del Servicio .

Lo probé con: ⌃⌥⌘D (Control-Opción-Comando-D)

usuario3439894
fuente
Gracias, esto funcionó muy bien. ¿Crees que podrías hacer un segundo script para eliminar espacios?
Jonathan De Wet
@Jonathan, para empezar, agregar un escritorio es un tipo de error, programáticamente, porque es posible que haya un AXButton con la AXDescripción de "agregar escritorio" en el que se puede hacer clic, sin embargo, los AXButton bajo Control de misión con AXTitle, por ejemplo " Escritorio 2 ", aunque tiene un elemento cerrado (un círculo con hacha, en la esquina superior izquierda del botón) no es direccionable de la misma manera que no hay un botón" quitar escritorio ". Así que realmente no conozco una manera fácil de eliminar uno mediante programación, lo siento.
user3439894
Eso tiene sentido. Gracias por tomarse el tiempo para explicármelo
Jonathan De Wet
He intentado esto en macOS (10.12.1) y no he tenido suerte. Abre Mission Control durante .5 segundos, pero no se presiona el botón Nuevo escritorio.
domi91c
2
@ user3439894 Sí, solo estaba comentando en caso de que alguien tuviera una respuesta para MacOS. No había considerado crear una pregunta por separado; ¿debería? Sin embargo, gracias, agradezco la ayuda.
domi91c
2

OK, usando la grabación de Automator, hice que funcionara con una versión revisada del AppleScript en la otra respuesta.

Reemplace "del grupo 1" con "del grupo 2 del grupo 1 del grupo 1 de":

on run {input, parameters}

    do shell script "open -a 'Mission Control'"
    delay 0.5
    tell application "System Events" to click (every button whose value of attribute "AXDescription" is "add desktop") of group 2 of group 1 of group 1 of process "Dock"
    delay 0.5
    tell application "System Events" to key code 53

    return input
end run
Andrusoid
fuente
La respuesta marcada no funcionó para mí, pero esta sí =)
Brian Schermerhorn
1

Sí, eso funciona, más o menos. El problema es que la solución de user3439894 termina arrojando un error si la aplicación activa (Finder, textedit, etc.) no se ha agregado al panel de Accesibilidad de seguridad y privacidad.

Para solucionar esto, necesitamos dos flujos de trabajo, el servicio user3439894 con la lista de grupos actualizada como una aplicación Automator, y un segundo servicio Automator para iniciarlo.

La aplicación Automator (guardada en / Aplicaciones como "Nuevo escritorio").

en ejecución {entrada, parámetros}

hacer script de shell "abrir -a 'Control de misión'"

retraso 0.5

dígale a la aplicación "Eventos del sistema" que haga clic (cada botón cuyo valor del atributo "AXDescription" es "agregar escritorio") del grupo 2 del grupo 1 del grupo 1 del proceso "Dock"

retraso 0.5

diga a la aplicación "Eventos del sistema" al código clave 53

entrada de retorno

fin de carrera

Luego solo necesitamos crear el segundo flujo de trabajo como un servicio, utilizando la acción "Iniciar aplicación" y guardarlo como "New_Desktop"

Los últimos pasos son agregar "Nueva aplicación de escritorio" a Preferencias del sistema> Seguridad y privacidad> Accesibilidad

A continuación, agregue el método abreviado de teclado en Preferencias del sistema> Teclado> Métodos abreviados> Servicios> General para el flujo de trabajo New_Desktop.

Andrusoid
fuente