Monday, April 29, 2024
 Popular · Latest · Hot · Upcoming
45
rated 0 times [  45] [ 0]  / answers: 1 / hits: 11931  / 1 Year ago, sun, november 27, 2022, 11:56:16

Oh how I love Ubuntu and all its features, but this "bug" has been making me angry for so long and I've finally decided to ask for help here.



I've assigned all .php files to be opened with gedit whenever I double-click them in nautilus. Now, the behavior is strange.




  1. I have no gedit running

  2. I double click a file to be opened

  3. A gedit window opens and the file loads

  4. I double click another file to be opened



Now, there are 2 possible outcomes:



5A) The file opens in the same gedit window in a new tab



5B) The file opens in a new gedit window, resulting in 2 gedits running.



Whether A or B happens seems to be totally random and keeps on going infinitely. That means I double click on 100 files and I might end up with 60 gedits, some of which will have 1 tab, some will have 2 tabs, some will have 3 tabs...



This is extremely annoying and a fix for this would be very appreciated. Anyone ever tried to fix this problem?



This has happened in Ubuntu 10.04, 10.10 and 11.10. All Ubuntu versions I've ever tested.


More From » gedit

 Answers
1

Why...



gedit has quite an interesting algorithm to determine whether it opens a new instance or if it opens in a tab in an existing instance.



Located in the source file gedit-app.c in the function static boolean is_in_viewport, the algorithm tests if the current gedit instance is




  1. in the same screen number and display name

  2. in the same workspace

  3. greater than 25% of the edges of the view port



If all are true then gedit opens in the same instance in a new tab otherwise it opens in a new window.



In summary - the only realistic way of changing the behaviour is to change the algorithm...



How...



The following is a quick way to get a consistent way of opening gedit... it will always open a new instance.



install the basic development tools



sudo apt-get install devscripts build-essential fakeroot 


get the source



cd ~/Downloads
mkdir build
cd build
apt-get source gedit
cd gedit-3.2*


make the change



Open gedit-app.c



gedit gedit/gedit-app.c


enter image description here



add return FALSE; as shown and save.



What this does is to always exit the routine saying "i'm not running in a viewport and therefore always open a new instance"



If you use return TRUE; this will always open in an existing instance of gedit in a new tab...



give it a unique package name



OK, we need to give the package a unique name to prevent repository updates from overwriting your changed package



gedit debian/changelog


now append +yourname to the top line version and save the file i.e.



Note - to be absolutely sure - after installing the modified package below, lock the version as per the linked question below.



enter image description here



build the package



sudo apt-get build-dep gedit
debuild -i -us -uc -b


Go for a coffee...



cd ..
sudo dpkg -i gedit*.deb





Linked Question:




  1. How to prevent updating of a specific package?


[#42286] Monday, November 28, 2022, 1 Year  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
irripri

Total Points: 164
Total Questions: 111
Total Answers: 107

Location: South Georgia
Member since Sun, Aug 8, 2021
3 Years ago
;