Можно ли переместить окно, где вы вводите пароль на экране блокировки, от центра, например на нижнем краю?
gnome-screensaver
источник и восстановление егоЯ не ожидаю, что это будет очень трудно
Извините, но это, потому что это трудно кодируется, по крайней мере, для Единицы и Gnome:
gnome-screensaver
пакет.Положением диалогового окна управляют через этот бит кода в/вокруг строке 1212 в gnome-screensaver/src/gs-window-x11.c
:
window->priv->lock_box = gtk_alignment_new (0.5, 0.5, 0, 0);
0.5, 0.5
относительные координаты центра X-и Y-размера диалогового окна блокировки (в пределах от 0=left/top
кому: 1=right/bottom
).
0.1, 0.9
дает Ваше желаемое нижнее левое выравнивание. Конечно, это требует перекомпиляции от источника :(Результат:
--- 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);
или посмотрите сырые данные pastebin
0.1, 0.9
являться на вкус.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
Никакой выход из системы или перезагрузка не необходимы. Для удаления просто сделайте apt-get --reinstall install gnome-screensaver
. Необходимо будет повторить целый процесс установки сборки патча каждый раз, когда gnome-screensaver
обновляется, поэтому держите его для создания жизни легче и обновление, когда Вы готовы.
Нет, я не один из разработчиков, но у меня есть достойное знание C/C++. Иначе это - весь Google и эвристика.:)
gnome-screensaver
gs-lock-plug.c
интересные звуки: create_page_one (GSLockPlug *plug) { GtkWidget *align; ... align = gtk_alignment_new (0.5, 0.5, 1, 1);
gtk_alignment_new
синтаксис, изменение в 0.1, 0.9
и восстановите. Не работает :( debug-screensaver.sh
в исходной папке выполненной, это, и затем блокирует и входит в систему. Вывод содержит: [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
gs-manager.h
, который включает: gboolean gs_manager_request_unlock (GSManager *manager);
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_unlock
не от gs-manager
. grep -i -r -n gs_window_request .
показывает: ./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)
gs-window-x11.c
; gs_window_request_unlock
не помогает непосредственно, но содержит много window->priv
упоминания.struct GSWindowPrivate
около начала gs-window-x11.c
. Это содержит GtkWidget *lock_box
и GtkWidget *lock_socket
lock_box
в файле; третий результат: window->priv->lock_box = gtk_alignment_new (0.5, 0.5, 0, 0);