Depende do programa. A maioria dessas configurações da janela "principal" (ou, mais precisamente, configurações da janela "documento") são codificadas permanentemente. Eu acredito que eles usam o que a Apple fornece em seus frameworks de gerenciamento de janelas, como por exemplo o Preview.app.
Na maioria dos aplicativos, somente as propriedades NSWindow
das janelas auxiliares são armazenadas nas Listas de propriedades do programa, enquanto as configurações da janela do documento podem ser armazenadas em outro local. Isso é o que o Chrome faz, pois é de plataforma cruzada e usa um formato de preferências compartilhadas em vários computadores.
Por exemplo, com.macromates.textmate.plist
tem a seguinte entrada:
NSWindow Frame New File Sheet
568 932 386 209 0 0 1920 1178
Você pode alterá-los e acredito que eles usam coordenadas e origens de retângulo para representação, sendo os primeiros quatro valores NSRect
:
- coordenada X à esquerda superior
- coordenada Y à esquerda superior
- largura
- altura
TextMate faz armazenar sua posição na janela principal em OakDocumentWindowFrame
, mas como já mencionei, este não é o caso de todos os aplicativos baseados em documentos.
O Google Chrome usa sua própria maneira de lidar com isso, ou seja, em um arquivo JSON. Ele tem uma configuração de window_placement
e você pode encontrá-lo em:
~/Library/Application Support/Google/Chrome/Default/Preferences
Veja como fica:
"window_placement": {
"always_on_top": false,
"bottom": 1046,
"left": 0,
"maximized": false,
"right": 1680,
"top": 22,
"work_area_bottom": 1046,
"work_area_left": 0,
"work_area_right": 1680,
"work_area_top": 22
},