Para Unity / Gnome, a posição é codificada e requer a correção da gnome-screensaver source e sua reconstrução
Eu não espero que isso seja muito difícil
Desculpe, mas é , porque é codificado, pelo menos para o Unity e o Gnome:
- A caixa de diálogo de bloqueio e a tela de bloqueio fazem parte do pacote
gnome-screensaver. -
A posição da caixa de diálogo é controlada por esse código na linha 1212 em
gnome-screensaver/src/gs-window-x11.c:window->priv->lock_box = gtk_alignment_new (0.5, 0.5, 0, 0); -
As
0.5, 0.5são as coordenadas de centro de dimensão X e Y relativas da caixa de diálogo de bloqueio (variando de0=left/topa1=right/bottom). - Definir como, por exemplo
0.1, 0.9fornece o alinhamento de baixo para a esquerda desejado. Claro, isso requer recompilar a partir da fonte: ( -
Resultado:
O patch
--- gnome-screensaver-3.4.1.orig/src/gs-window-x11.c 2012-06-04 18:14:11.000000000 -0700
+++ gnome-screensaver-3.4.1/src/gs-window-x11.c 2012-06-04 18:14:36.972433823 -0700
@@ -1209,7 +1209,7 @@
guint32 id)
{
window->priv->lock_socket = gtk_socket_new ();
- window->priv->lock_box = gtk_alignment_new (0.5, 0.5, 0, 0);
+ window->priv->lock_box = gtk_alignment_new (0.1, 0.9, 0, 0);
gtk_widget_show (window->priv->lock_box);
gtk_box_pack_start (GTK_BOX (window->priv->vbox), window->priv->lock_box, TRUE, TRUE, 0);
ou veja o pastebin cru
- Personalize o
0.1, 0.9a gosto.
Para criar e instalar
sudo apt-get install build-essential dpkg-dev
sudo apt-get build-dep gnome-screensaver
mkdir gssrc && cd gssrc
apt-get source gnome-screensaver
wget -Olockbox-left.patch http://pastebin.com/raw.php?i=pqDYRrW1
patch -i lockbox-left.patch
cd gnome-screensaver-3.4.1
dpkg-source --commit
dpkg-buildpackage -us -uc
cd ..
sudo dpkg -i gnome-screensaver_3.4.1-0ubuntu1_{i386|amd64}.deb
cd ..
rm -rf gssrc
killall /usr/bin/gnome-screensaver
Nenhum logout ou reinicialização é necessário. Para desinstalar , basta fazer um apt-get --reinstall install gnome-screensaver . Você precisará repetir todo o processo de patch-build-install sempre que gnome-screensaver for atualizado, então mantenha-o para facilitar a vida e atualizar quando estiver pronto.
Como você descobriu isso? (a pedido)
Não, eu não sou um dos desenvolvedores, mas tenho um conhecimento decente de C / C ++. Caso contrário, é tudo Google e heurística. :)
- O Google informa que não há uma maneira óbvia de responder a essa pergunta.
- Também informa que a caixa de diálogo de bloqueio é fornecida por
gnome-screensaver - Faça o download da origem e examine. Hmm,
gs-lock-plug.cparece interessante:-
create_page_one (GSLockPlug *plug) { GtkWidget *align; ... align = gtk_alignment_new (0.5, 0.5, 1, 1);
-
- Pode ser isso! Procure a sintaxe
gtk_alignment_new, mude para0.1, 0.9e reconstrua. Não funciona :( - Observe
debug-screensaver.shna pasta de origem, execute-a e, em seguida, bloqueie e efetue login. Saída contém:-
[find_window_at_pointer] gs-manager.c:668 (19:26:42): Requesting unlock for screen 0 [gs_window_request_unlock] gs-window-x11.c:1522 (19:26:42): Requesting unlock [window_dialog_up_changed_cb] gs-manager.c:909 (19:26:42): Handling window dialog up changed: up [handle_window_dialog_up] gs-manager.c:851 (19:26:42): Handling dialog up
-
- Veja
gs-manager.h, que inclui:-
gboolean gs_manager_request_unlock (GSManager *manager);
-
- Examine
gs-manager.c:-
gs_manager_request_unlock (GSManager *manager) { GSWindow * window; ... /* Find the GSWindow that contains the pointer */ window = find_window_at_pointer (manager); gs_window_request_unlock (window); }
-
-
gs_window_request_unlocknão é degs-manager.grep -i -r -n gs_window_request .revela:-
./gs-manager.c:1353: gs_window_request_unlock (window); ./gs-window.h:92:void gs_window_request_unlock (GSWindow *window); ./test-window.c:66: gs_window_request_unlock (window); ./gs-window-x11.c:1518:gs_window_request_unlock (GSWindow *window)
-
- Salte heuristicamente para a linha 1518 em
gs-window-x11.c;gs_window_request_unlocknão ajuda diretamente, mas contém váriaswindow->privmenções. - Veja
struct GSWindowPrivateperto do início degs-window-x11.c. ContémGtkWidget *lock_boxeGtkWidget *lock_socket - Procure por ocorrências de
lock_boxno arquivo; terceiro resultado é:-
window->priv->lock_box = gtk_alignment_new (0.5, 0.5, 0, 0);
-
- Faça um pouco de dança da vitória mental, mude, construa, teste, tenha sucesso, poste resposta, edite resposta ... e ganhe recompensa? :)