ロック画面のパスワードを入力したウィンドウを中心から移動することは可能ですか?下端で?
gnome-screensaver
ソースにパッチを適用して再構築する必要がありますこれが非常に難しいとは思わない
申し訳ありませんが、少なくともUnityとGnomeについてはハードコードされているため、isです。
gnome-screensaver
パッケージの一部です。ダイアログの位置は、gnome-screensaver/src/gs-window-x11.c
の行1212付近のコードのこのビットを介して制御されます。
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);
または raw 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
が更新されるたびにpatch-build-installプロセス全体を繰り返す必要があるので、準備ができたら作業を楽にし、更新するためにそれを保持します。
いいえ、私は開発者の1人ではありませんが、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):画面0のロック解除のリクエスト [gs_window_request_unlock] gs-window-x11.c:1522(19:26: 42):ロック解除を要求します(19:26:42):ダイアログを処理しています
gs-manager.h
を見てください。gboolean gs_manager_request_unlock (GSManager *manager);
gs-manager.c
:を調べます。gs_manager_request_unlock(GSManager * manager) { GSWindow * window; ... /*ポインターを含むGSWindowを見つけます*/ 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
の行1518にヒューリスティックにジャンプします。 gs_window_request_unlock
は直接助けにはなりませんが、いくつかのwindow->priv
の言及が含まれています。struct GSWindowPrivate
の先頭近くにあるgs-window-x11.c
を見てください。 GtkWidget *lock_box
とGtkWidget *lock_socket
が含まれていますlock_box
の出現を検索します。 3番目の結果は次のとおりです。window->priv->lock_box = gtk_alignment_new (0.5, 0.5, 0, 0);