Janela central na tela


2

Estou criando algumas transmissões de tela e queria centralizar exatamente minhas janelas na tela. Alguma boa maneira de fazer isso no Mac? Encontrei um exemplo do Apple Script (e algumas telas vinculadas), mas nenhuma delas suporta centralizar o 'Terminal' verticalmente (embora suporte a centralização vertical de outros aplicativos).


Respostas:


2

Gosto de usar o SizeUp para gerenciar janelas, uma das quais é uma opção central na tela. Boa sorte.


2

Não tenho certeza se isso também pode fazer o que você está procurando, mas o Divvy também é um excelente software para organizar janelas.

Eu sugiro que você assista ao screencast no site deles para ver se ele faz o que você está procurando, mas basicamente ele possui uma grade na qual você pode alterar o tamanho e a posição da janela mais à frente.

Você também pode alterar a grade exibida para ter um controle mais fino sobre o tamanho das janelas com as quais está trabalhando.

Espero que isto ajude.


2

Kevin. Eu sou o autor do post ao qual você vinculou no incrementalism.net.

A razão pela qual a janela do Terminal se move para o topo é apenas um bug no suporte AppleScript do Terminal.

Esta versão faz a centralização vertical e contorna o bug do Terminal:

tell application "Finder"
    set screenSize to bounds of window of desktop
    set screenWidth to item 3 of screenSize
    set screenHeight to item 4 of screenSize
end tell

tell application "System Events"
    set myFrontMost to name of first item of ¬
        (processes whose frontmost is true)
end tell

try
    tell application myFrontMost
        set windowSize to bounds of window 1
        set windowXl to item 1 of windowSize
        set windowYt to item 2 of windowSize
        set windowXr to item 3 of windowSize
        set windowYb to item 4 of windowSize

        set windowWidth to windowXr - windowXl
        set windowHeight to windowYb - windowYt

        if myFrontMost is "Terminal" then
            set bounds of window 1 to 
                round ((screenWidth - windowWidth) / 2) rounding as taught in school, ¬
                round ((screenHeight + windowHeight) / 2) rounding as taught in school, ¬
                round ((screenWidth + windowWidth) / 2) rounding as taught in school, ¬
                round ((screenHeight + windowHeight) / 2 + windowHeight) rounding as taught in school}
        else
            set bounds of window 1 to 
                round ((screenWidth - windowWidth) / 2) rounding as taught in school, ¬
                round ((screenHeight - windowHeight) / 2) rounding as taught in school, ¬
                round ((screenWidth + windowWidth) / 2) rounding as taught in school, ¬
                round ((screenHeight + windowHeight) / 2) rounding as taught in school}
        end if

        set the result to bounds of window 1

    end tell
end try

Espero que ajude, se você ainda não pagou por uma das outras opções. Também adicionei um comentário com esta solução alternativa à postagem original.


2

Correções para:

  • O bug com o Terminal
  • Nomes de processos estranhos (firefox-bin)
  • Tamanhos da barra de menus e do Dock
  • Suporte a Applescript desativado na visualização
  • As janelas com largura / altura quase total serão redimensionadas para largura / altura total

Observações:

  • rounding as taught in school não é realmente necessário
    • o padrão é rounding to nearest, que arredonda 0,5 para o número par mais próximo (por exemplo, 22,5 a 22)
  • Realmente, nomes de variáveis ​​mixedCase, mesmo aqui ?

Ainda assim, há uma dúzia de coisas que podem dar errado. A parte Dock não é realmente necessária se você estiver oculto sempre ativado. (Mas, por exemplo, orientação = parte inferior, convém definir dth para dth - 4.)

-- defaults write /Applications/Preview.app/Contents/Info NSAppleScriptEnabled -bool yes

tell app "Finder" to set {0, 0, dtw, dth} to bounds of window of desktop
set dtw0 to dtw
set dth0 to dth

tell app "System Events" to tell dock preferences
    set hiding to autohide
    set edge to screen edge as string
end tell

if hiding then
    set docksize to 4
else
    tell app "System Events" to tell process "Dock"
        set sz to size in list 1
        if edge = "bottom" then
            set docksize to item 2 of sz
        else
            set docksize to item 1 of sz
        end if
    end tell
end if

if edge = "bottom" then
    set dth to dth - docksize
else if edge = "right" then
    set dtw to dtw - docksize
else if edge = "left" then
    set dtw to dtw + docksize
end if

set a to (path to frontmost application as text)
try
    tell app a
        set b to bounds of window 1
        set w to (item 3 of b) - (item 1 of b)
        set h to (item 4 of b) - (item 2 of b)
        if w > dtw0 - 40 then set w to dtw
        if h > dth0 - 40 then set h to dth
        set item 1 of b to {dtw - w} / 2
        set item 1 of b to (dtw - w) / 2
        set item 2 of b to (dth - h + 22) / 2
        set item 3 of b to (dtw + w) / 2
        set item 4 of b to (dth + h + 22) / 2
    end tell
    if app "Terminal" is frontmost then
        tell app "Terminal" to set position of window 1 to b
    else
        tell app a to set bounds of window 1 to b
    end if
end try

1

Se você quiser centralizá-las exatamente (de maneira horizontal e vertical), poderá usar o exemplo dado nos comentários no site ao qual você vinculou e adaptar a resposta postada a esta pergunta sobre o stackoverflow .

Eu acabei com isso:

tell application "System Events" to tell application "Finder"
    set {posx, posy, screenWidth, screenHeight} to bounds of window of desktop
end tell

tell application "Terminal" to set {windowLeft, windowTop, windowRight, windowBottom} to bounds of window 1

set windowWidth to windowRight - windowLeft
set windowHeight to windowBottom - windowTop

set newBounds to 
    ((screenWidth - windowWidth) / 2), ¬
    ((screenHeight - windowHeight) / 2), ¬
    ((screenWidth + windowWidth) / 2), ¬
    ((screenHeight + windowHeight) / 2) ¬
        }

set newPosition to 
    ((screenWidth - windowWidth) / 2), ¬
    ((screenHeight - windowHeight) / 2) ¬
        }

tell application "Terminal" to set bounds of window 1 to newBounds
tell application "Terminal" to set position of window 1 to newPosition

Lembre-se de que isso será centralizado window 1; portanto, se você usar ferramentas como o Visor , precisará usá-lo window 2.


Eu tentei esse script, mas por algum motivo ele está bloqueando meu terminal na parte superior da tela. Talvez seja porque eu estou usando o terminal transparente ou algo assim.
precisa

1

Uma alternativa é o MercuryMover. 'Janela central' é um dos atalhos internos.

Você pode mover as janelas com atalhos, definir posições personalizadas - e fazer um pouco mais. Dica: tente o arquivo de preferências para definir números de pixels personalizados diferentes de 1, 10, 100.

É caro com US $ 20, mas paga com o tempo. Enfim, há um julgamento à moda antiga… MacUpdate: MercuryMover

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.