GNU/Linux >> Belajar Linux >  >> Ubuntu

Mengapa Gedit Terus Membuka Instans Baru Secara Acak Saat Membuka File Dari Nautilus?

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.

  1. Saya tidak menjalankan gedit
  2. Saya mengklik dua kali file yang akan dibuka
  3. Jendela gedit terbuka dan file dimuat
  4. 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

  1. dengan nomor layar dan nama tampilan yang sama
  2. di ruang kerja yang sama
  3. 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…

Terkait:Bagaimana Cara Memperbaiki Penyelesaian DNS yang Tidak Berfungsi Setelah Memutakhirkan ke Ubuntu 13.10 (Saucy) Di Ubuntu?

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:

  1. Bagaimana cara mencegah pembaruan paket tertentu?

Ubuntu
  1. Mengapa rsync tidak menggunakan delta-transfer untuk file lokal?

  2. Mengapa Windows tidak mengenali file di dalam partisi Linux?

  3. Mengapa `xdg-mime query filetype ...` gagal menemukan jenis file baru yang ditambahkan?

  1. Cara Menjaga Kepemilikan Dan Izin File Tetap Utuh Saat Menyalin File Atau Direktori

  2. Mengapa dd from /dev/random memberikan ukuran file yang berbeda?

  3. Mengapa rsync gagal menyalin file dari /sys di Linux?

  1. Mengapa Find -mtime +1 Hanya Mengembalikan File Lebih Lama dari 2 Hari?

  2. Saat Menggunakan Vlc, Mengapa Screen Saver Terus Bangun?

  3. Mengapa Ls -l Menghasilkan Ukuran Yang Berbeda Dari Ls -s?