Acabei de criar um script para a autohotkey que realiza isso no Windows 10 para até 10 áreas de trabalho.
Como fazê-lo funcionar:
Baixe e instale a autohotkey . Copie e cole o código abaixo no bloco de notas e salve-o com a extensão de arquivo .ahk
Sugiro fazer um atalho desse arquivo na sua pasta de inicialização para que ele seja executado quando o Windows iniciar.
HOTKEYS PADRÕES:
Alternar área de trabalho: WIN + NÚMERO DE DESKTOP (0 = número da área de trabalho 10)
Nova área de trabalho: CTRL + WIN + D
Fechar a área de trabalho: CTRL + WIN + F4
Exibir estado da área de trabalho: WIN + '
IMPORTANTE:
Para funcionar, você SOMENTE deve usar teclas de atalho para abrir, fechar e alterar áreas de trabalho, pois o script escuta essas teclas de atalho para saber o número atual e total de áreas de trabalho.
Se você criar, fechar ou alterar áreas de trabalho através do menu WIN + TAB com o mouse, o script deixará de funcionar. Para fazê-lo funcionar novamente, você precisará editar as duas primeiras linhas para refletir o estado atual de suas áreas de trabalho. (desktopcount / currentdesktop)
Isso não significa que você não pode usar a tela WIN + TAB como uma visão geral dos seus desktops atuais. Você pode usá-lo na combinação das teclas de atalho para organizar sua área de trabalho. Sim, as teclas de atalho ainda funcionam quando o visualizador de tarefas do Windows está aberto! (WIN + TAB) Apenas NÃO use o mouse !!!
Além disso, aguarde o carregamento do script após a inicialização do Windows antes de criar novas áreas de trabalho ou ele não funcionará. Isso pode levar um momento, dependendo de quantos programas de inicialização você possui.
Ok, adicionei mais uma coisa para tornar mais fácil sincronizar novamente o script com o estado da área de trabalho. Agora existe uma tecla de atalho que exibirá o estado em que o script acredita que as áreas de trabalho estejam, então tudo o que você precisa fazer é ajustar suas áreas de trabalho com o mouse para ajustá-las ao script e tudo será sincronizado novamente! Para mim, com um teclado suíço, funcionou muito bem com o '? chave ao lado de 0 e faz sentido com um? nele, mas em outros teclados, você pode alterar isso, o que pode ser feito facilmente, alterando a linha logo após a tecla de atalho para 0/10 (começando com # ') para o que você quiser.
Na verdade, eu acabei de perceber .... enquanto a Contagem da área de trabalho estiver correta, a criação de uma nova área de trabalho sincronizará automaticamente o valor da Área de trabalho atual.
(As linhas que começam com; são comentários e não afetam o script)
Código:
#NoTrayIcon
;If the script stops working:
;Change the following values to reflect your current desktop state and reload the script.
;Remember to change them back to 1 after reloading the script if you have it set to start with Windows
desktopcount := 1
currentdesktop := 1
;You can change the hotkeys for creating, closing, and switching desktops bellow.
;The current hotkeys are CTRL+WIN+D for new desktop, CTRL+WIN+F4 to close desktop
;and WIN+NUMBER for switching desktops.
;For example, to change the hotkey for new desktop replace ^#D bellow with the desired hotkey.
;Refer to the autohotkey documentation for a full list of symbols refering to modifier keys,
;as you can see ^ is CTRL and # is WIN key.
;If you wanted to change the switch desktop from WIN key to CTRL for example you would have
;to replace the # before each number to a ^
^#D::NewDesktop()
^#F4::CloseDesktop()
#1::SwitchDesktop(1)
#2::SwitchDesktop(2)
#3::SwitchDesktop(3)
#4::SwitchDesktop(4)
#5::SwitchDesktop(5)
#6::SwitchDesktop(6)
#7::SwitchDesktop(7)
#8::SwitchDesktop(8)
#9::SwitchDesktop(9)
#0::SwitchDesktop(10)
#'::MsgBox Desktop Count = %desktopcount%`nCurrent Desktop = %currentdesktop%
;Do not change anything after this line, unless you know what you are doing ;)
;-----------------------------------------------------------------------------------------------
SwitchDesktop(desktop)
{
global desktopcount
global currentdesktop
desktopdiff := desktop - currentdesktop
if (desktop > desktopcount)
{
return
}
if (desktopdiff < 0)
{
desktopdiff *= -1
Loop %desktopdiff%
{
Send ^#{Left}
}
}
else if (desktopdiff > 0)
{
Loop %desktopdiff%
{
Send ^#{Right}
}
}
currentdesktop := desktop
}
NewDesktop()
{
global desktopcount
global currentdesktop
if (desktopcount > 9)
{
return
}
desktopcount ++
currentdesktop := desktopcount
Send ^#d
}
CloseDesktop()
{
global desktopcount
global currentdesktop
desktopcount --
if (currentdesktop != 1)
{
currentdesktop --
}
Send ^#{f4}
}