sshmenu σε Gnome3

sshmenu σε Gnome3

Πριν μερικές μέρες έκανα την αναβάθμιση από το Gnome2 στο Gnome3 (gnome-shell). Μεταξύ των πολλών αντιμετώπισα ένα μικρό πρόβλημα με το sshmenu.

Δυστυχώς το συγκεκριμένο προγραμματάκι, προς το παρόν δεν μπορεί να ενσωματωθεί σαν applet. Μπορεί όμως να εκτελεστεί σε δικό του (πραγματικά μικρό) παράθυρο. Το δεύτερο αρνητικό είναι ότι δεν ενσωματώνεται σωστά με το Gnome, αφού δεν μπορεί να εκκινήσει την σύνοδο ssh σε gnome-terminal (το sshmenu-gnome δεν μπορεί να εγκατασταθεί).

Συνεπώς, αν και το πρόγραμμα δουλεύει, πρέπει να αρκεστούμε στο xterm, το οποίο δεν έχει τις ευκολίες του gnome-terminal.

Η λύση που χρησιμοποιώ (μέχρι να υπάρξει επίσημη -- αν υπάρξει --) έκδοση, δεν είναι ότι καλύτερο, αλλά δουλεύει.

Αρχικά πρέπει να επεξεργαστούμε το αρχείο: /usr/lib/ruby/1.8/sshmenu.rb

sudo nano /usr/lib/ruby/1.8/sshmenu.rb

Περίπου στην σειρά 1096 κάνουμε comment στις παρακάτω γραμμές:

#    def build_window_command(host)
# --------------distibution code-----------------
#      command = "#{host.env_settings}xterm -T " + shell_quote(host.title)
#      if host.geometry and host.geometry.length > 0
#        command += " -geometry #{host.geometry}"
#      end
#      ssh_cmnd = ssh_command(host)
#      command += ' -e sh -c ' +
#                 shell_quote("#{ssh_cmnd} #{host.sshparams_noenv}") + ' &'
#      return command
#    end

και αμέσως μετά επικολλούμε τις παρακάτω:

 def build_window_command(host)
      command = 'gnome-terminal'
      command = command + ' --disable-factory'
      if host.geometry and host.geometry.length > 0
        command += " --geometry=#{host.geometry}"
      end
      command += ' --window-with-profile=' + shell_quote('green')
      command += ' --title=' + shell_quote(host.title)
      ssh_cmnd = "#{ssh_command(host)} #{host.sshparams_noenv}"
      command += ' -e ' + shell_quote("sh -c #{shell_quote(ssh_cmnd)}")
      return command + ' &';
end

 

Μια μικρή λεπτομέρεια: Επειδή δεν χρησιμοποιείται το sshmenu-gnome δεν διαβάζονται οι ρυθμίσεις από το gconf, οπότε, πρέπει μόνοι μας να θέσουμε το προφλ του gnome-terminal. Αν κοιτάξετε τον κώδικα παραπάνω, θα δείτε ότι περίπου στην μέση θέτω σαν προφιλ του τερματικού το green, που είναι αυτό που χρησιμοποιώ εγώ. Τα υπόλοιπα μπορείτε να τα αφήσετε όπως τα βλέπετε.

Η παραπάνω λύση κάθε άλλο παρά ιδανική είναι (αφού πειράζουμε αρχείο που έρχεται με την διανομή) αλλά τουλάχιστον μας κάνει την δουλειά.

Για την ruby 1.9.1 απλά αντιγράψτε το /usr/lib/ruby/1.8/sshmenu.rb στο /usr/lib/ruby/1.9.1/sshmenu.rb

cp /usr/lib/ruby/1.8/sshmenu.rb  /usr/lib/ruby/1.9.1/sshmenu.rb

Για την ruby 2.1 μπορείτε να αντιγράψτε το /usr/lib/ruby/1.8/sshmenu.rb στο /usr/lib/ruby/2.1./sshmenu.rb (ή να το αφήσετε στο /usr/lib/ruby/1.9.1/sshmenu.rb)

cp /usr/lib/ruby/1.8/sshmenu.rb  /usr/lib/ruby/2.1/sshmenu.rb

και αλλάξτε τον παρακάτω κώδικα στο sshmenu.rb (σειρά 978)

    def menu_position(menu, event)
    (w, h) = event.window.size
      x = event.x_root - event.x - 1
      y = event.y_root - event.y + η + 1

σε

    def menu_position(menu, event)
  #    (w, h) = event.window.size
      x = event.x_root - event.x - 1
      y = event.y_root - event.y + 10 + 1