Re: [Nautilus] Αποσύνδεση USB δίσκου - TechTeam Community
On Sun, 2008-02-03 at 01:47 +, Simos Xenitellis wrote: On Sat, 2008-02-02 at 14:57 +0200, Kostas Papadimas wrote: Στις 02-02-2008, ημέρα Σαβ, και ώρα 12:40 +0200, ο/η Tsabolov Sergey έγραψε: http://www.techteam.gr/index.php?showtopic=118719 Δεν καταλαβαίνω. 1)Αν όντως υπάρχει πρόβλημα ΠΟΥ ΕΙΝΑΙ ΤΟ ΕΠΙΣΗΜΟ ΒUG REPORT? 2)OK το να προτείνει κάποιος script είναι θεμιτό, αλλά ποιός αφελής χρήστης εκτελεί αυτά scripts? Αν και οι προθέσεις αυτού του χρήστη είναι αγνές, το γεγονός ότι δεν έχει υποβάλλει bug report (η δεν έχει link σε αυτό αν υπάρχει ήδη) είναι επιεικώς ανήθικο .. Τι κάνει πραγματικά ο Ναυτίλος όταν επιλέγουμε αποπροσάρτηση ή εξαγωγή; Ο πηγαίος κώδικας του Ναυτίλου βρίκεται στο http://svn.gnome.org/viewvc/nautilus/trunk/ Πως εντοπίζουμε που πρέπει να κοιτάξουμε μέσα σε τόσο πηγαίο κώδικα; Ξεκινούμε από το μήνυμα που εμφανίζεται κατά την αποπροσάρτηση. Σε αγγλικό GNOME είναι _Unmount Volume ενώ σε ελληνικό είναι Αποπρο_σάρτηση τόμου (ο επόμενος χαρακτήτας μετά το _ είναι ο χαρακτήτας συντόμευσης). Εντοπίζουμε την ελληνική μετάφραση μέσα στον πηγαίο κώδικα· είναι στον υποκατάλογο po/, αρχείο el.po. Δηλαδή, http://svn.gnome.org/viewvc/nautilus/trunk/po/el.po?view=annotate Είναι στη σειρά 3618. Βλέπουμε και ότι το συγκεκριμένο μήνυμα το μετέφρασε ο Νίκος Χαρωνιτάκης. Στα σχόλια του μηνύματος αναφέρει #: ../src/file-manager/fm-directory-view.c:6266 3615 #: ../src/file-manager/fm-directory-view.c:6282 3616 #: ../src/file-manager/fm-tree-view.c:753 Δηλαδή μπορούμε να προχωρήσουμε στα αρχεία αυτά (+γραμμή) να δούμε τι ακριβώς γίνεται. Η απάντηση βρίσκεται στο fm-tree-view.c, http://svn.gnome.org/viewvc/nautilus/trunk/src/file-manager/fm-tree-view.c?view=annotate Στη γραμμή 753 λέει gtk_label_set_text (GTK_LABEL (GTK_BIN (GTK_MENU_ITEM (view-details-popup_unmount))-child), unmount_is_eject? _(E_ject):_(_Unmount Volume)); Ίσως είναι ακαταλαβίστικο, η ουσία βρίσκεται στο unmount_is_eject? _(E_ject):_(_Unmount Volume) που είναι κάπως ισοδύναμο με if (unmount_is_eject) return _(E_ject) else return _(_Unmount Volume) Δηλαδή το αν θα κάνει αποπροσάρτητη ή εξαγωγή το καθορίζει η μεταβλητή unmount_is_eject. Η μεταβλητή αυτή παίρνει τιμή στις παραπάνω γραμμές: [747] show_unmount = g_mount_can_unmount (mount) || g_mount_can_eject (mount); /* TODO: show both unmount and eject if there are more than one volume for the drive */ unmount_is_eject = g_mount_can_eject (mount); Δηλαδή αν θα εμφανίζεται η επιλογή Αποπροσάρτηση τόμου γίνεται με έλεγχο αν οι συσκευές έχουν νόημα για αποπροσάρτηση. Τώρα, αν η αποπροσάρτηση θα έχει την έννοια της εξαγωγής (δηλαδή ο χρήστης βλέπει πάντα Αποπροσάρτηση, αλλά στις κατάλληλες φορές η αποπροσάρτηση θα είναι η λειτουργία της Εξαγωγής), το καθορίζει η συνάρτηση g_mount_can_eject(). Οι συναρτήσεις με όνομα g_xxx() προέρχονται από τη βιβλιοθήκη GLib, http://svn.gnome.org/viewvc/glib/trunk/ και η συγκεκριμένη συνάρτηση προέρχεται από το αρχείο http://svn.gnome.org/viewvc/glib/trunk/gio/gmount.c?view=annotate Θα αφήσουμε για τώρα τον τρόπο καθορισμού για το αν κάποια συσκευή μπορεί να αποπροσαρτηστεί ή όχι. Όπως ειναι τώρα, δεν υπάρχει ένδειξη στον τελικό χρήστη αν θα γίνει εξαγωγή ή σκέτη αποπροσάρτηση. Κοιτώντας στο αρχικό αρχείο για την εντολή που κάνει πραγματικά την αποπροσάρτηση/εξαγωγή, βλέπουμε ότι είναι η nautilus_file_operations_unmount_mount(). Που θα βρούμε την εντολή αυτή σε όλο τον κώδικα του Ναυτίλου; Δοκιμάζουμε με Google και βρίσκουμε http://mail.gnome.org/archives/svn-commits-list/2008-January/msg04806.html Εδώ γίνονται μια σειρά από βήματα αναζήτησης που οδηγούν τελικά στο αρχείο http://svn.gnome.org/viewvc/glib/trunk/gio/gunixvolume.c?view=annotate και στη γραμμή 417, [417] char *argv[] = {eject, NULL, NULL}; argv[1] = unix_volume-device_path; Δηλαδή το σύστημα καλεί την εντολή eject με παράμετρο τη συσκευή που θέλουμε να αποπροσαρτήσουμε. Αν θέλουμε να δοκιμάσουμε με την εντολή sdparm, αρκεί να αντικαταστήσουμε με [417] char *argv[] = {sdparm, --command=stop, NULL, NULL}; argv[2] = unix_volume-device_path; Η εντολή sdparm λειτουργεί για όλες της συσκευές; Θα ήταν καλύτερη να έχουμε unmount, eject αλλά και poweroff; Είναι καλό να γίνει αναφορά σφάλματος στο Bugzilla του GNOME, στο έργο glib, συστατικό gio : http://bugzilla.gnome.org/browse.cgi?product=glib Θέλει να το αναλάβει κάποιος; Έστειλα γράμμα στη λίστα desktop-devel-list (gnome), http://mail.gnome.org/archives/desktop-devel-list/2008-February/thread.html#00015 Υπάρχει η σελίδα http://www.nslu2-linux.org/wiki/FAQ/SpinDownUSBHarddisks για το spindown εξωτερικών δίσκών. Όπως καταλαβαίνω, κάποιες συσκευές δουλεύουν ενώ άλλες δεν δουλεύουν. Αν κάποιος έχει ενδιαφέρον να δοκιμάσω, ας πει αν μπορεί με τις
[Nautilus] Αποσύνδεση USB δίσκου - TechTeam Community
http://www.techteam.gr/index.php?showtopic=118719 signature.asc Description: OpenPGP digital signature -- Ubuntu-gr mailing list Ubuntu-gr@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-gr
Re: [Nautilus] Αποσύνδεση USB δίσκου - TechTeam Community
Εγώ που δεν είμαι γραμμένος στην παρακάτω σελίδα πχ, δεν ξέρω αν υπάρχουν κι άλλοι, είναι εύκολο να στείλεις το script μέσω e-mail; ή υπάρχει άλλος τρόπος να το ανεβάσεις κάπου αλλού; Στις 02-02-2008, ημέρα Σαβ, και ώρα 12:40 +0200, ο/η Tsabolov Sergey έγραψε: http://www.techteam.gr/index.php?showtopic=118719 -- Ubuntu-gr mailing list Ubuntu-gr@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-gr
Re: [Nautilus] Αποσύνδεση USB δίσκου - TechTeam Community
Στις 02-02-2008, ημέρα Σαβ, και ώρα 12:40 +0200, ο/η Tsabolov Sergey έγραψε: http://www.techteam.gr/index.php?showtopic=118719 Δεν καταλαβαίνω. 1)Αν όντως υπάρχει πρόβλημα ΠΟΥ ΕΙΝΑΙ ΤΟ ΕΠΙΣΗΜΟ ΒUG REPORT? 2)OK το να προτείνει κάποιος script είναι θεμιτό, αλλά ποιός αφελής χρήστης εκτελεί αυτά scripts? Αν και οι προθέσεις αυτού του χρήστη είναι αγνές, το γεγονός ότι δεν έχει υποβάλλει bug report (η δεν έχει link σε αυτό αν υπάρχει ήδη) είναι επιεικώς ανήθικο .. -- Ubuntu-gr mailing list Ubuntu-gr@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-gr
Re: [Nautilus] Αποσύνδεση USB δίσκου - TechTeam Community
On Sat, 2008-02-02 at 14:57 +0200, Kostas Papadimas wrote: Στις 02-02-2008, ημέρα Σαβ, και ώρα 12:40 +0200, ο/η Tsabolov Sergey έγραψε: http://www.techteam.gr/index.php?showtopic=118719 Δεν καταλαβαίνω. 1)Αν όντως υπάρχει πρόβλημα ΠΟΥ ΕΙΝΑΙ ΤΟ ΕΠΙΣΗΜΟ ΒUG REPORT? 2)OK το να προτείνει κάποιος script είναι θεμιτό, αλλά ποιός αφελής χρήστης εκτελεί αυτά scripts? Αν και οι προθέσεις αυτού του χρήστη είναι αγνές, το γεγονός ότι δεν έχει υποβάλλει bug report (η δεν έχει link σε αυτό αν υπάρχει ήδη) είναι επιεικώς ανήθικο .. Τι κάνει πραγματικά ο Ναυτίλος όταν επιλέγουμε αποπροσάρτηση ή εξαγωγή; Ο πηγαίος κώδικας του Ναυτίλου βρίκεται στο http://svn.gnome.org/viewvc/nautilus/trunk/ Πως εντοπίζουμε που πρέπει να κοιτάξουμε μέσα σε τόσο πηγαίο κώδικα; Ξεκινούμε από το μήνυμα που εμφανίζεται κατά την αποπροσάρτηση. Σε αγγλικό GNOME είναι _Unmount Volume ενώ σε ελληνικό είναι Αποπρο_σάρτηση τόμου (ο επόμενος χαρακτήτας μετά το _ είναι ο χαρακτήτας συντόμευσης). Εντοπίζουμε την ελληνική μετάφραση μέσα στον πηγαίο κώδικα· είναι στον υποκατάλογο po/, αρχείο el.po. Δηλαδή, http://svn.gnome.org/viewvc/nautilus/trunk/po/el.po?view=annotate Είναι στη σειρά 3618. Βλέπουμε και ότι το συγκεκριμένο μήνυμα το μετέφρασε ο Νίκος Χαρωνιτάκης. Στα σχόλια του μηνύματος αναφέρει #: ../src/file-manager/fm-directory-view.c:6266 3615 #: ../src/file-manager/fm-directory-view.c:6282 3616 #: ../src/file-manager/fm-tree-view.c:753 Δηλαδή μπορούμε να προχωρήσουμε στα αρχεία αυτά (+γραμμή) να δούμε τι ακριβώς γίνεται. Η απάντηση βρίσκεται στο fm-tree-view.c, http://svn.gnome.org/viewvc/nautilus/trunk/src/file-manager/fm-tree-view.c?view=annotate Στη γραμμή 753 λέει gtk_label_set_text (GTK_LABEL (GTK_BIN (GTK_MENU_ITEM (view-details-popup_unmount))-child), unmount_is_eject? _(E_ject):_(_Unmount Volume)); Ίσως είναι ακαταλαβίστικο, η ουσία βρίσκεται στο unmount_is_eject? _(E_ject):_(_Unmount Volume) που είναι κάπως ισοδύναμο με if (unmount_is_eject) return _(E_ject) else return _(_Unmount Volume) Δηλαδή το αν θα κάνει αποπροσάρτητη ή εξαγωγή το καθορίζει η μεταβλητή unmount_is_eject. Η μεταβλητή αυτή παίρνει τιμή στις παραπάνω γραμμές: [747] show_unmount = g_mount_can_unmount (mount) || g_mount_can_eject (mount); /* TODO: show both unmount and eject if there are more than one volume for the drive */ unmount_is_eject = g_mount_can_eject (mount); Δηλαδή αν θα εμφανίζεται η επιλογή Αποπροσάρτηση τόμου γίνεται με έλεγχο αν οι συσκευές έχουν νόημα για αποπροσάρτηση. Τώρα, αν η αποπροσάρτηση θα έχει την έννοια της εξαγωγής (δηλαδή ο χρήστης βλέπει πάντα Αποπροσάρτηση, αλλά στις κατάλληλες φορές η αποπροσάρτηση θα είναι η λειτουργία της Εξαγωγής), το καθορίζει η συνάρτηση g_mount_can_eject(). Οι συναρτήσεις με όνομα g_xxx() προέρχονται από τη βιβλιοθήκη GLib, http://svn.gnome.org/viewvc/glib/trunk/ και η συγκεκριμένη συνάρτηση προέρχεται από το αρχείο http://svn.gnome.org/viewvc/glib/trunk/gio/gmount.c?view=annotate Θα αφήσουμε για τώρα τον τρόπο καθορισμού για το αν κάποια συσκευή μπορεί να αποπροσαρτηστεί ή όχι. Όπως ειναι τώρα, δεν υπάρχει ένδειξη στον τελικό χρήστη αν θα γίνει εξαγωγή ή σκέτη αποπροσάρτηση. Κοιτώντας στο αρχικό αρχείο για την εντολή που κάνει πραγματικά την αποπροσάρτηση/εξαγωγή, βλέπουμε ότι είναι η nautilus_file_operations_unmount_mount(). Που θα βρούμε την εντολή αυτή σε όλο τον κώδικα του Ναυτίλου; Δοκιμάζουμε με Google και βρίσκουμε http://mail.gnome.org/archives/svn-commits-list/2008-January/msg04806.html Εδώ γίνονται μια σειρά από βήματα αναζήτησης που οδηγούν τελικά στο αρχείο http://svn.gnome.org/viewvc/glib/trunk/gio/gunixvolume.c?view=annotate και στη γραμμή 417, [417] char *argv[] = {eject, NULL, NULL}; argv[1] = unix_volume-device_path; Δηλαδή το σύστημα καλεί την εντολή eject με παράμετρο τη συσκευή που θέλουμε να αποπροσαρτήσουμε. Αν θέλουμε να δοκιμάσουμε με την εντολή sdparm, αρκεί να αντικαταστήσουμε με [417] char *argv[] = {sdparm, --command=stop, NULL, NULL}; argv[2] = unix_volume-device_path; Η εντολή sdparm λειτουργεί για όλες της συσκευές; Θα ήταν καλύτερη να έχουμε unmount, eject αλλά και poweroff; Είναι καλό να γίνει αναφορά σφάλματος στο Bugzilla του GNOME, στο έργο glib, συστατικό gio : http://bugzilla.gnome.org/browse.cgi?product=glib Θέλει να το αναλάβει κάποιος; Σίμος -- Ubuntu-gr mailing list Ubuntu-gr@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-gr