Saya memiliki ikatan kunci untuk ToggleShowDesktop
. Saat saya menekan Menu , semua jendela diminimalkan dan saya melihat Wallpaper Desktop saya (seperti yang diharapkan):
<keybind key="Menu">
<action name="ToggleShowDesktop"/>
</keybind>
Sekarang masalahnya adalah, saya tidak ingin melihat wallpaper saya. Saya menggunakan terminator
sebagai wallpaper saya, yaitu ketika saya memulai terminator
, itu ditempatkan pada lapisan di bawah ini:
<application name="terminator">
<focus>yes</focus>
<layer>below</layer>
<desktop>1</desktop>
<position>
<y>0</y>
<x>0</x>
</position>
<skip_taskbar>yes</skip_taskbar>
<maximized>true</maximized>
</application>
Apakah mungkin untuk mengonfigurasi ToggleShowDesktop
sehingga meninggalkan lapisan "bawah" tidak terpengaruh? yaitu saya hanya ingin jendela normal diminimalkan, tetapi bukan terminator
. Dengan kata lain, saya ingin terminator berperilaku seperti wallpaper biasa – tidak terpengaruh oleh ToggleShowDesktop
.
Saya menggunakan Debian Wheezy
dengan LXDE
.
(menggunakan metode yang disarankan oleh @Suchipi):
Saya telah meninggalkan beberapa detail dari pertanyaan awal saya, dan sekarang detail ini tampaknya relevan:
Pengaturan saya memiliki 2 monitor dan 4 desktop virtual. Jadi saya punya "8 wallpaper" untuk diisi dengan terminator
. Dari apa yang saya baca sebelumnya, saya berasumsi bahwa 8 jendela ini harus dapat dibedakan, jadi saya telah membuat 8 symliks ke terminator
, .yaitu:
/usr/bin/terminator-wallpaper-1a -> terminator
/usr/bin/terminator-wallpaper-1b -> terminator
/usr/bin/terminator-wallpaper-2a -> terminator
...
Akibatnya dibuat 8 aplikasi yang berbeda (dengan nama yang berbeda).
Demikian pula, di .config/openbox/lxde-rc.xml
Saya tidak punya 1, tapi 8 definisi:
<application name="terminator-wallpaper-1a">
<desktop>1</desktop>
<position>
<monitor>1</monitor>
</position>
...
</application>
<application name="terminator-wallpaper-1b">
<desktop>1</desktop>
<position>
<monitor>2</monitor>
</position>
...
</application>
<application name="terminator-wallpaper-2a">
<desktop>2</desktop>
<position>
<monitor>1</monitor>
</position>
...
</application>
Dan terakhir, di /.config/autostart
Saya punya 8 *.desktop
file, yang akan dimulai secara otomatis setelah login:
/.config/autostar/terminator-wallpaper-1a.desktop
/.config/autostar/terminator-wallpaper-1b.desktop
/.config/autostar/terminator-wallpaper-2a.desktop
Bagi saya ini tampaknya terlalu rumit dan tidak elegan, tetapi saya tidak melihat cara yang lebih baik untuk melakukannya.
Sekarang, ketika saya mengikuti instruksi dari @Suchipi, hal berikut terjadi:
1) bagian dengan devilspie
bekerja dengan baik. Ternyata, saya hanya perlu satu definisi yang mencakup semua 8 jendela saya (menggantikan matches
untuk is
):
$ cat .devilspie/terminator.ds
(if
(matches (application_name) "terminator-wallpaper")
(begin
(wintype "desktop")
)
)
Dan saya bisa melihat dengan obxprop
bahwa itu berfungsi seperti yang diharapkan.
$ obxprop | egrep '(_OB_APP|_NET_WM_WINDOW_TYPE)'
_OB_APP_TYPE(UTF8_STRING) = "normal"
_OB_APP_TITLE(UTF8_STRING) = "None"
_OB_APP_CLASS(UTF8_STRING) = "Terminator-wallpaper-1"
_OB_APP_NAME(UTF8_STRING) = "terminator-wallpaper-1"
_OB_APP_ROLE(UTF8_STRING) =
_NET_WM_WINDOW_TYPE(ATOM) = _NET_WM_WINDOW_TYPE_DESKTOP
2) sekarang bagian dengan xdotool
lebih rumit:
pertama-tama, menggunakan 100%
untuk resolusi tidak berfungsi, yaitu jendela menghilang (saya tidak melihatnya). Saat menggunakan statis:
xdotool search --class "Terminator-wallpaper-1a" windowunmap --sync windowmap windowsize %1 1920 1056
ini berfungsi untuk monitor desktop 1 1. Tetapi ketika saya menjalankannya untuk desktop lain, itu tidak berpengaruh, yaitu:
xdotool search --class "Terminator-wallpaper-2a" windowunmap --sync windowmap windowsize %1 1920 1056
Sebenarnya, ini juga berfungsi untuk desktop lain, tetapi hanya jika saya menjalankan xdotool
perintah pada desktop tertentu, yang ingin saya pengaruhi. yaitu saya harus beralih ke desktop 2
dan jalankan xdotool search --class "Terminator-wallpaper-2a"
dan kemudian berhasil.
Juga, saya bertanya-tanya apakah windowsize %1
memainkan peran apa pun di sini.
PERBARUI 07-12-2019:
jadi, saya sekarang mencoba mengatur sistem yang sama di Debian Buster (Openbox 3.6) dan saya mengalami masalah baru. Saya menduga beberapa properti telah berubah di versi baru openbox.
Semuanya tampak seperti sebelumnya, yaitu:
terminator-wallpaper-1a --profile wallpaper -b &
terminator-wallpaper-1b --profile wallpaper -b &
xdotool search --class 'Terminator-wallpaper-1a' windowunmap --sync windowmap windowsize %1 1920 1180
xdotool search --class 'Terminator-wallpaper-1b' windowunmap --sync windowmap windowsize %1 1920 1180
Saya mendapatkan dua terminal sebagai wallpaper. Tapi masalahnya, hanya satu dari terminal ini yang benar-benar dapat digunakan. Yang lainnya adalah "tidak fokus" dan bahkan ketika saya mengkliknya dengan mouse, saya tidak dapat membuatnya fokus. Yaitu, saya dapat melihat terminal, tetapi saya tidak dapat mengetik di dalamnya.
Terkait:Konfigurasikan postfix untuk menerima email dari dua WAN?Masalah ini tidak ada sebelumnya, di versi Openbox yang lebih lama
Bagaimana cara memperbaiki masalah ini?
Jawaban yang Diterima:
Openbox akan memberikan fungsionalitas yang Anda cari ke windows yang _OB_APP_TYPE
properti diatur ke "desktop" (Anda dapat menggunakan obxprop
untuk memeriksa properti jendela).
Jadi kita perlu mengatur _OB_APP_TYPE
untuk jendela terminator Anda ke "desktop" sehingga ini akan terjadi.
Membaca kode sumber openbox, di client.c
Saya dapat melihat _OB_APP_TYPE
diwarisi dari _NET_WM_WINDOW_TYPE
. Jadi saya mencari aplikasi yang bisa mengubah _NET_WM_WINDOW_TYPE
. Aplikasi yang saya temukan bernama devilspie
.
Pertama, instal:
sudo apt-get install devilspie
Selanjutnya, kita akan membuat folder untuk devilspie
file konfigurasi:
mkdir ~/.devilspie
Sekarang kita akan menambahkan file konfigurasi yang memberitahu devilspie
untuk mencari aplikasi bernama terminator
dan atur jenis jendelanya ke desktop
. Masukkan yang berikut ke dalam ~/.devilspie/terminator.ds
:
(if
(is (application_name) "terminator")
(begin
(wintype "desktop")
)
)
Sekarang, jika Anda menjalankan devilspie
(atau devilspie -a
untuk mempengaruhi jendela yang ada, bukan hanya yang baru dibuat) Anda akan melihat jika Anda menggunakan obxprop
pada terminator yang _NET_WM_WINDOW_TYPE
telah berubah, tetapi _OB_APP_TYPE
belum. Mari gunakan xdotool
untuk membuka peta dan memetakan kembali jendela (dalam terminologi X11 ini berarti kita akan berhenti menggambar dan mulai menggambar jendela), yang akan memaksa openbox untuk memperhatikan nilainya.
Instal xdotool:
sudo apt-get install xdotool
Kemudian kita jalankan script berikut untuk mencari terminator
jendela, hapus petanya, tunggu sampai tidak dipetakan, lalu petakan kembali. Kami juga mengubah ukuran jendela karena ketika tidak dipetakan dan dipetakan ulang kehilangan maksimalisasinya:
xdotool search --class "terminator" windowunmap --sync windowmap windowsize %1 1024 768
Ganti 1024 768
dengan resolusi Anda. Perhatikan juga bahwa versi xdotool
yang lebih baru daripada yang ditemukan di dukungan repo apt Debian menggunakan 100% 100%
alih-alih resolusi statis. Anda dapat menemukan .deb
paket untuk versi xdotool
yang lebih baru di halaman googlecode xdotool.
Jendela terminator akan segera menjadi tidak didekorasi, dan jika Anda sekarang menggunakan obxprop
, Anda akan melihat bahwa kedua nilai telah disetel dengan benar. Jika sekarang Anda menekan tombol yang Anda ikat ToggleShowDesktop
hingga beberapa kali, jendela terminator akan selalu aktif.
Untuk membuat ini persisten, Anda harus menjalankan perintah ini saat login. Halaman Wiki LXDE untuk LXSession menunjukkan beberapa cara berbeda untuk melakukan ini (global, per-pengguna, per-profil, dll). Dengan asumsi Anda menginginkan pengaturan ini hanya untuk pengguna Anda dan di bawah profil LXDE (default), Anda ingin mengedit ~/.config/lxsession/LXDE/autostart
dan tambahkan perintah yang kita jalankan, ingatlah bahwa perintah xdotool perlu dijalankan setelah jendela terminator telah dirender, jadi lakukan sesuatu seperti (sleep 1s & xdotool ...)
. Anda juga dapat mengatur perintah ini sebagai keybinds di openbox jika diinginkan.