Oh, betapa saya menyukai Ubuntu dan semua fiturnya, tetapi "bug" ini telah lama membuat saya marah dan akhirnya saya memutuskan untuk meminta bantuan di sini.
Saya telah menetapkan semua .php
file yang akan dibuka dengan gedit setiap kali saya mengklik dua kali di nautilus. Sekarang, perilakunya aneh.
- Saya tidak menjalankan gedit
- Saya mengklik dua kali file yang akan dibuka
- Jendela gedit terbuka dan file dimuat
- Saya klik dua kali file lain untuk dibuka
Sekarang, ada 2 kemungkinan hasil:
5A) File terbuka di jendela gedit yang sama di tab baru
5B) File terbuka di jendela gedit baru, menghasilkan 2 gedit yang berjalan.
Apakah A atau B terjadi tampaknya benar-benar acak dan terus berlanjut tanpa batas. Itu berarti saya mengklik dua kali pada 100 file dan saya mungkin akan mendapatkan 60 gedit, beberapa di antaranya akan memiliki 1 tab, beberapa akan memiliki 2 tab, beberapa akan memiliki 3 tab…
Ini sangat menjengkelkan dan perbaikan untuk ini akan sangat dihargai. Adakah yang pernah mencoba memperbaiki masalah ini?
Ini telah terjadi di Ubuntu 10.04, 10.10 dan 11.10. Semua versi Ubuntu yang pernah saya uji.
Jawaban Terbaik
Mengapa…
gedit
memiliki algoritme yang cukup menarik untuk menentukan apakah itu membuka instance baru atau membukanya di tab di instance yang ada.
Terletak di file sumber gedit-app.c
dalam fungsi static boolean is_in_viewport
, algoritme menguji apakah instance gedit saat ini adalah
- dengan nomor layar dan nama tampilan yang sama
- di ruang kerja yang sama
- lebih dari 25% tepi port tampilan
Jika semuanya benar, maka gedit akan terbuka dalam contoh yang sama di tab baru jika tidak, gedit akan terbuka di jendela baru.
Singkatnya – satu-satunya cara realistis untuk mengubah perilaku adalah dengan mengubah algoritme…
Bagaimana…
Berikut ini adalah cara cepat untuk mendapatkan cara konsisten membuka gedit… itu akan selalu membuka instance baru.
instal alat pengembangan dasar
sudo apt-get install devscripts build-essential fakeroot
dapatkan sumbernya
cd ~/Downloads
mkdir build
cd build
apt-get source gedit
cd gedit-3.2*
buat perubahan
Buka gedit-app.c
gedit gedit/gedit-app.c
tambahkan return FALSE;
seperti yang ditunjukkan dan simpan.
Apa yang dilakukan adalah selalu keluar dari rutinitas yang mengatakan “Saya tidak berjalan di viewport dan karena itu selalu membuka instance baru”
Jika Anda menggunakan return TRUE;
ini akan selalu terbuka di instance gedit yang ada di tab baru…
beri nama paket yang unik
Oke, kami perlu memberi nama unik pada paket untuk mencegah pembaruan repositori menimpa paket Anda yang diubah
gedit debian/changelog
sekarang tambahkan +yourname
ke versi baris teratas dan simpan file yaitu
Catatan – untuk benar-benar yakin – setelah menginstal paket yang dimodifikasi di bawah ini, kunci versi sesuai pertanyaan tertaut di bawah.
membuat paket
sudo apt-get build-dep gedit
debuild -i -us -uc -b
Pergi untuk minum kopi…
cd ..
sudo dpkg -i gedit*.deb
Pertanyaan Tertaut:
- Bagaimana cara mencegah pembaruan paket tertentu?