Est-il possible de déplacer la fenêtre dans laquelle vous entrez votre mot de passe sur l'écran de verrouillage en l'éloignant du centre, par exemple au bord inférieur?
gnome-screensaver
et de la reconstruire.Je ne m'attends pas à ce que ce soit très difficile
Désolé, mais est , car c'est codé en dur, du moins pour Unity et Gnome:
gnome-screensaver
.La position du dialogue est contrôlée via ce bit de code à/autour de la ligne 1212 dans gnome-screensaver/src/gs-window-x11.c
:
window-> priv-> lock_box = gtk_alignment_new (0.5, 0.5, 0, 0);
Les 0.5, 0.5
sont les coordonnées relatives des centres des dimensions X et Y de la boîte de dialogue de verrouillage (allant de 0=left/top
à 1=right/bottom
).
0.1, 0.9
donne l'alignement souhaité en bas à gauche. Bien sûr, cela nécessite une recompilation depuis le source :(Résultat:
--- 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_pack_start (GTK_BOX (window -> priv-> vbox), fenêtre-> priv-> lock_box, TRUE, TRUE, 0);
ou voir Pastebin brut
0.1, 0.9
à votre goût.Sudo apt-get installer build-essential dpkg-dev Sudo apt-get compiler-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 --commet 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
Aucune déconnexion ou redémarrage nécessaire. Pour désinstaller , faites simplement un apt-get --reinstall install gnome-screensaver
. Vous devrez répéter tout le processus de création du correctif-installation à chaque mise à jour de gnome-screensaver
. Conservez-le pour vous simplifier la vie et mettez-le à jour lorsque vous êtes prêt.
Non, je ne suis pas un des développeurs, mais j'ai une bonne connaissance du C/C++. Sinon, tout est dans Google et l'heuristique. :)
gnome-screensaver
gs-lock-plug.c
semble intéressant: create_page_one (GSLockPlug * plug) { GtkWidget * align; ... align = gtk_alignment_new (0.5, 0.5, 1, 1 );
gtk_alignment_new
, passez à 0.1, 0.9
et reconstruisez-la. Ne fonctionne pas :(debug-screensaver.sh
dans le dossier source, exécutez-le, puis verrouillez-le et connectez-vous. La sortie contient: [find_window_at_pointer] gs-manager.c: 668 (19:26:42): Demande de déverrouillage pour l'écran 0 [gs_window_request_unlock] gs-window-x11.c: 1522 (19:26: 42): Demande de déverrouillage [Window_dialog_up_changed_cb] gs-manager.c: 909 (19:26:42): La boîte de dialogue de gestion de la fenêtre vers le haut a changé: up [Handle_window_dialog_up] gs-manager.c: 851 (19:26:42): Gestion du dialogue
gs-manager.h
, qui comprend: gboolean gs_manager_request_unlock (GSManager *manager);
gs-manager.c
: gs_manager_request_unlock (gestionnaire GSManager *) { Fenêtre GSWindow *; ... /* Recherchez la fenêtre GS qui contient le pointeur */ window = find_window_at_pointer (gestionnaire); gs_window_request_unlock (window); }
gs_window_request_unlock
n'est pas de gs-manager
. grep -i -r -n gs_window_request .
révèle: ./ 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 (fenêtre); ./ gs-window-x11.c: 1518: gs_window_request_unlock (fenêtre GSWindow *)
gs-window-x11.c
; gs_window_request_unlock
n'aide pas directement mais contient un certain nombre de window->priv
mentions.struct GSWindowPrivate
près du début de gs-window-x11.c
. Il contient GtkWidget *lock_box
et GtkWidget *lock_socket
lock_box
dans le fichier; Le troisième résultat est: window->priv->lock_box = gtk_alignment_new (0.5, 0.5, 0, 0);