«Περίεργη» συμπεριφορά xinitrc με «χειροκινητα» sessions
#1
εχω φτιαξει το συστημα να τρεχει χωρις login manager, με xinitrc. το προβλημα μολις το προσεξα γιατι ηθελα να σηκωσω τον ποντικοφαρμακο, για να δω κατι με την εντολη xsetroot. το xinitrc ειναι ετσι:...
Κώδικας:
#!/bin/sh

# /etc/X11/xinit/xinitrc
#
# global xinitrc file, used by all X sessions started by xinit (startx)

# invoke global X session script
. /etc/X11/Xsession
gnome-session --failsafe
#ratpoison --interactive

για να «επιλεξω» τον ποντικοφαρμακο, βγαινω απο το gnome, αλλαζω το gnome με τον ποντικοφαρμακο (βγαζοντας το # απο το ποντικοφαρμακο και βαζοντας το στο gnome) και ξαναμπαινω. περιμενω να δω (η, να «μην δω» γιατι ειναι εντελως αδειο) το ποντικοφαρμακο, αλλα παλι με πεταει σε gnome. το περιεργο ειναι το εξης. αν κανω το αρχειο ετσι:...
Κώδικας:
gnome-session --failsafe
#ratpoison --interactive

αν «επιλεξω» τον ποντικοφαρμακο φορτωνει κανονικα, αν «επιλεξω» το gnome το ιδιο. αν δεν «επιλεξω» κανενα (βαζοντας # και στα 2), φορτωνει μια σκετη κενη μαυρη οθονη (λογικο αν και οχι και πολυ χρησιμο)

παντου ομως λενε οτι η σωστη συνταξη του xinitrc ειναι η 1η (με τα σκριπτ, κλπ). αν το κανω οπως στο 2ο (απλα τα sessions και τιποτα αλλο), υπαρχει καποιο προβλημα; μπορει να προκυψει καποια δυσλειτουργια;
ονομαζομαι DarkGoth, και ειμαι «καλα»( ; )... το OsArena με θεραπευσε... (goth=!ok {equals} EMO)...  Emo
  Απάντηση
#2
Κανονικά είναι
Κώδικας:
exec gnome-session --failsafe
#exec ratpoison --interactive
Μπορείς επίσης να το προσαρμόσεις ώστε να δίνεις π.χ.
Κώδικας:
startx gnome-session --failsafe
και να μη χρειάζεται να πειράξεις το .xinitrc κάθε φορά.

Το
Κώδικας:
. /etc/X11/Xsession
δεν ξέρω τι ακριβώς θα κάνει source εφόσον δεν έχει ξεκινήσει τίποτα ακόμα, κατά τα άλλα όμως, όχι, δεν υπάρχει πρόβλημα με τον τρόπο που λες. Ούτως ή άλλως, το GNOME Shell ξεκινάει τα δικά του μπλιμπλίκια μόνο του και για τον ποντικοφάρμακο υποθέτω δε θέλεις να ξεκινάει κάτι ιδιαίτερο.
Το άπλυτο κορμί το πλένεις. Καθαρίζει. Η βρόμικη ψυχή πώς πλένεται;
  Απάντηση
#3
το «/etc/x11/xsession», υποθετω οτι μαλλον θα ρυθμιζει τιποτα παραμετρους, environment variables, κλπ, πως να τρεξει ο xserver που θα φορτωσει αργοτερα, η, κατι τετοιο; καπως ετσι το υποθετω. π.χ. αν θα δεχεται συνδεσεις απο remote sessions κλπ τετοια, ποιο θα ειναι το default xsession (γιατι αν το αφησω στο xinitrc με παει παντα σε gnome, ενω αν το βγαλω φορτωνει κανονικα οτι εχω «επιλεξει»). το gnome ναι φορτωνει μονο του οτι ειναι. στον ποντικοφαρμακο προφανως και δεν θελω κατι παραπανω. μονο τον ιδιον, και αντε και κανα terminal (που ουτως'η'αλλως εχει συντομευση γι'αυτο)

το «exec» το ειδα και εγω, αλλα ειτε το βαλω, ειτε οχι, δεν βλεπω καμια απολυτως διαφορα, και το εχω παραλειψει για να ειναι το αρχειακι οσο πιο απλο και μικρο γινεται. δεν εχω βρει πουθενα που να εξηγουν τι ακριβως «προσφερει», και ποια διαφορα εχει με το «exec» και χωρις, οποτε δεν το βαζω καθολου. στο archwiki ειδα μονο οτι λενε, οτι αν το βγαλεις δεν σε κανει logoff απο το tty, οταν κλεισεις το γραφικο (ΔΕΝ θελω να με κανει logoff απο το tty οταν κλεινω το γραφικο), ενω αν το αφησεις σε βγαζει και απο το tty (δεν το δοκιμασα, αλλα το wiki του arch ειναι, οχι το φορουμ του ΜΧ :pEek )
ονομαζομαι DarkGoth, και ειμαι «καλα»( ; )... το OsArena με θεραπευσε... (goth=!ok {equals} EMO)...  Emo
  Απάντηση
#4
Δεν τα ξέρω αυτά, το Xsession είναι παλιακό (πλακίζω αλλά είναι).

Το exec δε θα σου κάνει διαφορά σε αυτό που θέλεις αλλά είναι «ορθή πρακτική» να το βάζεις (όπως επίσης είναι «ορθή πρακτική» να σε κάνει logout από τα πάντα όταν βγαίνεις, διότι ασφάλεια. Αλλά δε σε υποχρεώνει κανένας αν δε θέλεις).

Τι κάνει το exec; Αφού έχει ξεκινήσει το σύστημά σου και τρέχει το shell (/bin/sh, που είναι symlink στο /bin/bash για τις περισσότερες διανομές αλλά -νομίζω- στο /bin/dash για το Debian), φτάνεις στο σημείο που του λες για το γραφικό. Αν δε βάλεις το exec, θα δημιουργηθεί child process και θα σηκώσει το γραφικό. Τα child processes όμως «κληρονομούν» πράγματα από το parent process και αυτό «κανονικά» δεν το θέλεις επειδή το shell και το γραφικό δεν είναι το ίδιο προγραμμα. Γι' αυτό βάζεις το exec και του λες "ευχαριστώ πολύ αγαπητό shell, σταμάτα τώρα και θα σε αντικαταστήσει το γραφικό". Κι έτσι το γραφικό σου αντικαθιστά το shell, γίνεται parent process στη θέση του και κάνει τη δουλειά του.

Αν τυχόν υπάρχει κάτι μετά τη γραμμή με το exec, δε θα εκτελεστεί, εφόσον παύει το shell. Γι' αυτό και το βάζουμε στο τέλος. Το ίδιο ισχύει για οποιοδήποτε script.
Το άπλυτο κορμί το πλένεις. Καθαρίζει. Η βρόμικη ψυχή πώς πλένεται;
  Απάντηση
#5
δοκιμασα με το exec. καποια αλλαγη στα δικαιωματα προσβασης και χρηστων, δεν ειδα πουθενα. η, τουλαχιστον, οχι στα βασικα. πιο μεσα δεν το εψαξα. ειτε με το exec, ειτε χωρις, ειναι ετσι:...
Κώδικας:
root      2065  0.0  0.0  73892  3260 tty1     Ss   09:37   0:00 /bin/login -f      
debian    2070  0.0  0.0  21704  3308 tty1     S+   09:37   0:00  \_ -bash
debian    2075  0.0  0.0   4336  1364 tty1     S+   09:37   0:00      \_ /bin/sh /usr/bin/startx
debian    2097  0.0  0.0  15952  1900 tty1     S+   09:37   0:00          \_ xinit /home/debian/.xinitrc -- /etc/X11/xinit/xserverrc :0 vt1 -auth /tmp/serverauth.n347djCx22
root      2098  1.8  1.1 204364 46016 tty1     S    09:37   0:11              \_ /usr/bin/X -nolisten tcp :0 vt1 -auth /tmp/serverauth.n347djCx22
debian    2103  0.0  0.0   4336   764 tty1     S    09:37   0:00              \_ sh /home/debian/.xinitrc
debian    2104  0.0  0.2 526780 10484 tty1     Sl   09:37   0:00                  \_ gnome-session --failsafe
debian    2125  0.0  0.7 1035416 31596 tty1    Sl   09:37   0:00                      \_ /usr/lib/gnome-settings-daemon/gnome-settings-daemon
debian    2151  3.1  2.8 1539756 113948 tty1   Sl   09:37   0:18                      \_ /usr/bin/gnome-shell
debian    2464 21.6  6.5 2167196 264324 tty1   Sl   09:42   0:54                          \_ firefox-esr -p --no-remote
debian    2107  0.0  0.0  24372  1760 tty1     S    09:37   0:00 dbus-launch --exit-with-session gnome-session --failsafe
debian    2155  0.0  0.2 393060  9996 tty1     Sl   09:37   0:00 /usr/lib/gnome-settings-daemon/gsd-printer
το «. /etc/X11/Xsession» ειδα οτι ουσιαστικα αυτο που κανει, ειναι να σηκωνει εναν «x-session-manager». δεν με φαινεται και πολυ χρησιμο, οποτε αφου δεν κανει κατι αλλο το εβγαλα τελικα.
ονομαζομαι DarkGoth, και ειμαι «καλα»( ; )... το OsArena με θεραπευσε... (goth=!ok {equals} EMO)...  Emo
  Απάντηση
#6
Δεν αλλάζει δικαιώματα το exec, απλά αντικαθιστά το process. Υπάρχει ένας πολύ απλός τρόπος για να καταλάβεις τη διαφορά. Άνοιξε το τερματικό σου και δώσε μία εντολή, π.χ.
Κώδικας:
notify-send "μπλα μπλα μπλα"
Θα την τρέξει, θα δεις την ειδοποίηση και θα επιστρέψει στο prompt, γιατί το parent process είναι το shell. Μετά κάνε το ίδιο αλλά δώσε
Κώδικας:
exec notify-send "μπλα μπλα μπλα"
Θα δεις πάλι την ειδοποίηση αλλά αυτη τη φορά θα γίνει κάτι διαφορετικό.
Το άπλυτο κορμί το πλένεις. Καθαρίζει. Η βρόμικη ψυχή πώς πλένεται;
  Απάντηση
#7
[Εικόνα: Screenshot_from_2017-09-21_10-32-05.png]

μαλλον το παραεγδυσα το debian :D:p ... oops!... :D:p
ονομαζομαι DarkGoth, και ειμαι «καλα»( ; )... το OsArena με θεραπευσε... (goth=!ok {equals} EMO)...  Emo
  Απάντηση
#8
Ίσως και να μην το είχες εγκατεστημένο εξαρχής. Δεν ξέρω τι πακετάρισμα κάνει το Debian αλλά είναι το πιο συνηθισμένο σύστημα ειδοποιήσεων οπότε όλο και κάτι θα το έχει ως εξάρτηση. Βέβαια, μπορεί σε μελλοντική έκδοση το GNOME να αφαιρέσει εντελώς τις ειδοποιήσεις. Τι, μήπως είναι χρήσιμες;

EDIT: Το ίδιο το GNOME δεν το χρειάζεται γιατί χρησιμοποιεί το dbus. Εγώ το χρησιμοποιώ για τα σκριπτάκια, γιατί το dbus δεν είναι ό,τι καλύτερο σε τέτοιες περιπτώσεις.
Το άπλυτο κορμί το πλένεις. Καθαρίζει. Η βρόμικη ψυχή πώς πλένεται;
  Απάντηση
#9
το gnome αν θυμαμαι καλα εχει το zenity για desktop notifications.

στο dbus, το αντιστοιχο "notify-send", ειναι να υποθεσω το "dbus-send";
ονομαζομαι DarkGoth, και ειμαι «καλα»( ; )... το OsArena με θεραπευσε... (goth=!ok {equals} EMO)...  Emo
  Απάντηση
#10
Το zenity είναι ο αντικαταστάτης του παλιού gdialog (νομίζω) και χρησιμοποιείται για να φτιάχνεις παράθυρα διαλόγων. Μπορείς να το κάνεις να δείχνει ειδοποιήσεις (κι αυτές διάλογοι είναι) αλλά δεν τις παράγει αυτό.

Ναι, στο dbus είναι κάπως έτσι αλλά έχει ολόκληρο κατεβατό μετά. Π.χ.
Κώδικας:
dbus-send --session --dest=org.freedesktop.Notifications \
                        --type=method_call --reply-timeout=10000 \
                        /org/freedesktop/Notifications org.freedesktop.Notifications \
                        string:'Test Application' uint32:0 \
                        string: string:'Notification Title' \
                        string:'This is the body' \
                        array:string: dict:string: int32:10000
Μην το δοκιμάσεις αυτό, δε δουλεύει.
Γενικά το dbus είναι φτιαγμένο για «ενδοσυστημική» χρήση κι όχι για τους χρήστες.
Το άπλυτο κορμί το πλένεις. Καθαρίζει. Η βρόμικη ψυχή πώς πλένεται;
  Απάντηση


Πάμε στο Forum:


Πλάσματα σουλατσάρουν στο νήμα: 1 Επισκέπτης(ες)