Crea un nuevo espacio usando un atajo de teclado

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

¿Hay alguna forma de hacerlo usando un programa de terceros o Applescript?

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

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

Respuestas (3)

Actualización: este método funciona en OS X 10.11 y versiones anteriores, al menos hasta 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 Mission Control realizados por Apple .


Para agregar mediante programación un escritorio en Mission Control, el código a continuación se puede usar como AppleScript o BASH Script junto con un Automator Service usando Ejecutar AppleScript o Ejecutar Shell Script, respectivamente, y una secuencia de teclas asignada al Servicio en Preferencias del sistema en 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 secuencia de comandos 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 atajo 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 Finder si elige sobre cualquier aplicación en el Servicio .

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

Gracias esto funcionó muy bien. ¿Crees que podrías hacer un segundo script para borrar espacios?
@Jonathan, Agregar un escritorio es una especie de chapuza, programáticamente, para empezar y es posible porque hay un AXButton con la AXDescription de "agregar escritorio" en el que se puede hacer clic, sin embargo, el(los) AXButton(s) bajo Mission Control con AXTitle, por ejemplo, " Escritorio 2", si bien tiene un elemento de cierre (un círculo con un hacha, en la esquina superior izquierda del botón), no es direccionable de la misma manera que no hay un botón "eliminar escritorio". Entonces, realmente no conozco una manera fácil de eliminar uno mediante programación, lo siento.
Eso tiene sentido. Gracias por tomarte el tiempo de explicármelo
Probé esto en macOS (10.12.1) y no tuve suerte. Abre Mission Control durante 0,5 segundos, pero no se presiona el botón Nuevo escritorio.
@portOdin, si observa las etiquetas en el OP, muestra el capitán y eso es lo que se probó y funciona allí. Cada versión del sistema operativo genera sus propios problemas, así como el código de descifrado que funcionó en versiones anteriores del sistema operativo. Cuando tenga un momento, lo probaré en macOS Sierra y veré si puedo hacer que funcione allí.
@ user3439894 Sí, solo estaba comentando en caso de que alguien tuviera una respuesta para MacOS. No había considerado crear una pregunta separada; ¿debería? Gracias de todos modos, agradezco la ayuda.

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

Sustitúyase "del grupo 1" por "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
La respuesta marcada no me funcionó, pero esta sí =)

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 evitar esto, necesitamos dos flujos de trabajo, el servicio del usuario 3439894 con la lista de grupos actualizada como una aplicación de Automator y un segundo servicio de Automator para iniciarlo.

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

en ejecución {entrada, parámetros}

hacer shell script "abrir -a 'Mission Control'"

retraso 0.5

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

retraso 0.5

Dile a la aplicación "Eventos del sistema" el código clave 53

entrada de retorno

carrera final

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

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

A continuación, agregue su método abreviado de teclado en Preferencias del sistema > Teclado > Accesos directos > Servicios > General para New_Desktop.workflow.