hapus judul bar dari program lain

10

Saya telah mengembangkan sebuah program dengan pustaka kekenyangan dan ingin menghapus bilah judulnya.

Karena tidak mungkin untuk menghapus bilah judul dari perpustakaan glut saya harus menggunakan alat eksternal untuk menghapus bilah judulnya.

Mengenai fakta bahwa adalah mungkin untuk memanipulasi dekorasi jendela lain di sistem operasi Windows, saya berharap untuk menemukan obat yang sama untuk kendala ini.

Apakah Anda memiliki Ide tentang cara menghapus bilah judul jendela tertentu dengan skrip atau aplikasi X11 sederhana?

Sponge Kamerad
sumber
Manajer jendela juga dapat memanipulasi dekorasi jendela pada tingkat tertentu. Dengan IceWM Anda dapat meletakkan baris di ~ / .icewm / winoptions yourWindow.dTitleBar: 0.
manatwork
Bilah judul jendela dibuat dan dikelola oleh manajer jendela, bukan oleh aplikasi. Manajer jendela memutuskan hal-hal seperti apakah akan menampilkan judul bar berdasarkan petunjuk ICCCM atau turunan modern mereka. Saya tidak berpikir Anda dapat mengontrol ini dengan cara yang independen dari aplikasi dan manajer jendela.
Gilles 'SANGAT berhenti menjadi jahat'

Jawaban:

10

Wmctrl

Ini agak terkait tetapi Anda dapat mengubah teks di bilah judul aplikasi misteri ini menggunakan perintah wmctrl.

Contoh

Katakanlah saya menjalankan aplikasi gvim. Itu muncul sebagai berikut ketika saya daftar windows yang terbuka.

$  wmctrl -l
0x04402eed -1 grinchy N/A
0x00c00003 -1 grinchy Bottom Expanded Edge Panel
0x00c00028 -1 grinchy Top Expanded Edge Panel
0x0120001e  0 grinchy x-nautilus-desktop
0x02a00004  0 grinchy saml@grinchy:~
0x06800003  0 grinchy [No Name] - GVIM

Jadi gvimjendela tersebut memiliki judul "[Tanpa Nama] - GVIM", kita dapat mengubah namanya seperti itu, sekali lagi menggunakan wmctrl:

$ wmctrl -r "[No Name] - GVIM" -N "new name"

Menjalankan -lsakelar lagi kita bisa melihat nama baru:

$ wmctrl -l
0x04402eed -1 grinchy N/A
0x00c00003 -1 grinchy Bottom Expanded Edge Panel
0x00c00028 -1 grinchy Top Expanded Edge Panel
0x0120001e  0 grinchy x-nautilus-desktop
0x02a00004  0 grinchy saml@grinchy:~
0x06800003  0 grinchy new name

Semua dekorasi

Ada metode ini yang dibahas dalam Tanya Jawab Ubuntu berjudul: Dapatkah saya menyembunyikan bilah judul MPlayer di gnome? .

Ada intisari dari Python - window-toggle-decorations.py yang sepertinya melakukan apa yang Anda inginkan. Mungkin dapat dimodifikasi sesuai dengan kebutuhan Anda.

window-toggle-decorations.py

#! /usr/bin/python2
import gtk.gdk
w = gtk.gdk.window_foreign_new( gtk.gdk.get_default_root_window().property_get("_NET_ACTIVE_WINDOW")[2][0] )
w.set_decorations( (w.get_decorations()+1)%2 ) # toggle between 0 and 1
gtk.gdk.window_process_all_updates()
gtk.gdk.flush()

# now bind this to super-r or something 
slm
sumber
Wow ! itu berhasil! Ini harus dijalankan dengan cara ini: python2 ./toggle.py . Saya belum melihat sesuatu seperti itu dan setidaknya sekarang saya memiliki petunjuk untuk jawabannya. Terima kasih Smart Looking Man (slm).
Sponge Kamerad
Saya mengujinya dengan panggilan sistem ("python2 ./toggle.py") dan berhasil juga, namun saya yakin kodenya dapat dikonversi ke C ++.
Sponge Kamerad
Yang aneh adalah saya harus menyebutnya dua kali untuk berlaku !!! sistem ("python2 ./toggle.py"); sistem ("python2 ./toggle.py"); itu konyol! tetapi itu bekerja untuk saya dan itu sudah cukup: D
Sponge Comrade
6

Ada program C sederhana yang berfungsi, awalnya dikembangkan oleh Muktupavels .

Saya menggunakannya dan itu bekerja dengan sangat baik. Itu disini

https://gist.github.com/cat-in-136/96ee8e96e81e0cc763d085ed697fe193

Ini memungkinkan Anda mengaktifkan dan menonaktifkan bilah judul untuk aplikasi apa pun.

Untuk menggunakannya, cukup pastikan Anda telah libx11-devmenginstal perpustakaan

sudo apt-get install -y libx11-dev

kemudian kompilasi kodenya menggunakan perintah ini

gcc toggle-decorations.c -Wall -o toggle-decorations `pkg-config --cflags --libs x11`

dan jalankan dengan perintah ini

./toggle-decorations $(wmctrl -lx | grep -E "name_of_your_application_here" | grep -oE "[0-9a-z]{10}")

di mana $(...)menangkap --idaplikasi Anda menggunakan wmctrl.

Saya tidak melakukan pekerjaan besar ini dan tidak mengambil kredit untuk itu.

Itu dilakukan oleh muktupavels.

Kes
sumber
satu-satunya hal yang bekerja pada Unity / compiz thx!
Aquarius Power