twiner Δημοσ. 21 Οκτωβρίου 2010 Δημοσ. 21 Οκτωβρίου 2010 (επεξεργασμένο) Γιατί Μαρμελάδα; γιατί η σπιτική(home made) είναι καλύτερη, όπως και το σύστημα που θα στήσουμε γιατί θα ανταλλάξουμε "συνταγές" -σαν τις θείτσες γιατί έτσι αξιοποιούμε τα παραγινομένα φρούτα (ή τα pc) γιατί το "project feather" ήταν πιασμένο και είπα να πρωτοτυπήσω. για random lolz Στόχος: Συγκέντρωση και διαμοιρασμός της γνώσης για τo στήσιμο gnu/linux συστήματος με customized γραφικό περιβάλλον και μικρό memory footprint. Ξεκινώντας από ένα πολύ βασικό σύστημα (Debian ή Arch κατά προτίμηση) να καταλήξουμε σ'ένα ελαφρύ αλλά πλήρες γραφικό περιβάλλον εργασίας. Αυτό το topic φιλοδοξεί να μπει στο wiki (με ελαφρώς πιο συμβατικό τίτλο) και χρειάζεται οπωσδήποτε τη βοήθεια σας! Η ιδέα: να πάμε το project του tritonas00 ένα βήμα παραπέρα. Πώς μπορώ να βοηθήσω; εγώ που διαβάζω αυτό το...πράγμα 0. Να γράψω (ή να βρω και να προσαρμώσω) σύντομο και απλό οδηγό εγκατάστασης minimal συστήματος Debian, Arch ή άλλης διανομής. Ο οδηγός να περιλαμβάνει δημιουργία χρήστη και ρύθμιση: Δικτύου, X και Alsa. 1. Να εντοπίσω χρήσιμα tips (σχετικά με ελαφριές εφαρμογές, window managers, file managers κτλ κτλ) που είναι διάσπαρτα μέσα στο Linux Section, και να τα ποστάρω εδώ (σε quotes) π.χ. τερματισμός + επανεκκίνηση χωρίς δικαιώματα root sudo chmod a+s /sbin/shutdown Mια φορα το κανεις και τελος. Και μετα φυσικα απο οποιοδηποτε χρηστη /sbin/shutdown -h now για halt και /sbin/shutdown -r now για reboot. Τα εχω συντομευση στο fbpanel. Αλλα φυσικα λυση που δουλευει ανεξαρτητως de,wm διανομης κλπ.. 2. Να μοιραστώ δικά μου configuration files μαζί με screenshot. 3.Να προτείνω εφαρμογές που ταιριάζουν στο project. 4. Να καταθέσω ολοκληρωμένη πρόταση: συλλογή εφαρμογών και configuration files, για ένα πλήρες κι ελαφρύ Desktop. όχι πολύ σιρόπι γιατί θα βαρύνει Κανόνες για κατάθεση ολοκληρωμένης πρότασης: 1. παραθέτω οπωσδήποτε screenshot του τελικού αποτελέσματος. 2. δίνω σε code tags την εντολή εγκαστάσης (με apt,pacman κτλ) όλων των εφαρμογών της σύνθεσης μου. 3. παραθέτω αρχεία ρυθμίσεων: .xinitrc, .conkyrc κτλ. σε code tags 4. αν συμπεριλάβω εφαρμογή που κατέθεσε άλλος χρήστης βάζω σε quote ή αναφέρω ρητά το username του. Αφού τελειώσει η πρώτη φάση και έχουμε π.χ 3-4 ολοκληρωμένες προτάσεις, θα χρειαστούν εθελοντές για να τις δοκιμάσουν σε πραγματική εγκατάσταση ή virtualbox και να δώσουν feedback. Παράδειγμα "ολοκληρωμένης" Πρότασης: γραμμή εγκατάστασης: σε Arch Linux >sudo pacman -S openbox obmenu obconf fbpanel nitrogen thunar thunar-volman xarchiver lxappearance lxtask gpicview gnome-icon-theme geany audacious smplayer chromium xfburn scrot terminus-font urxvt ~/.xinitrc ># ~/.xinitrc #automount usb, cd, dvd thunar --daemon & #wallpaper! nitrogen --restore; #panels fbpanel -p top & fbpanel -p bottom & #window manager exec ck-launch-session openbox ~/.config/fbpanel/top για το επάνω panel ># ~/.config/fbpanel/top Global { edge = top allign = center margin = 0 widthtype = percent width = 100 height = 30 transparent = false tintcolor = #ffffff alpha = 28 setdocktype = true setpartialstrut = true autohide = false heightWhenHidden = 2 roundcorners = false roundcornersradius = 7 layer = above MaxElemHeight = 32 setlayer = false } Plugin { type = space config { size = 2 } } Plugin { type = menu config { IconSize = 22 icon = start-here systemmenu { } separator { } menu { name = Computer icon = computer item { name = Terminal icon = terminal action = urxvt } separator { } item { name = Reboot icon = gnome-session-reboot action = sudo shutdown -r now } item { name = Shutdown icon = gnome-session-halt action = sudo shutdown -h now } } } } Plugin { type = space config { size = 10 } } Plugin { type = launchbar config { button { icon = file-manager tooltip = File Manager action = thunar } button { icon = terminal tooltip = Terminal action = urxvt } button { icon = web-browser tooltip = Web Browser action = chromium } } } Plugin { type = space expand = true } plugin { type = volume } Plugin { type = tray } Plugin { type = space config { size = 1 } } Plugin { type = tclock config { ShowSeconds = false TooltipFmt = %A %x ShowCalendar = true ClockFmt = <span font="Verdana 17"><span color="black">%R</span></span> } } Plugin { type = icons config { DefaultIcon = /usr/share/fbpanel/images/default.xpm application { icon = gnome-terminal ClassName = XTerm } application { icon = gnome-terminal ClassName = mlterm } application { icon = gnome-terminal ClassName = URxvt } application { icon = gnome-emacs ClassName = Emacs } application { icon = mozilla-firefox ClassName = Firefox-bin } application { icon = mozilla-firefox ClassName = Firefox } } } ~/.config/fbpanel/bottom για το κάτω panel ># ~/.config/fbpanel/bottom Global { edge = bottom allign = center margin = 0 widthtype = percent width = 100 height = 30 transparent = false tintcolor = #ffffff alpha = 28 setdocktype = true setpartialstrut = true autohide = false heightWhenHidden = 2 roundcorners = false roundcornersradius = 7 layer = none MaxElemHeight = 32 } Plugin { type = wincmd config { icon = gnome-fs-desktop tooltip = Left click to iconify all windows. Middle click to shade them. } } Plugin { type = space config { size = 15 } } Plugin { type = taskbar expand = true config { ShowIconified = true ShowMapped = true ShowAllDesks = false tooltips = true IconsOnly = false MaxTaskWidth = 150 } } Plugin { type = space config { size = 15 } } Plugin { type = pager config { showwallpaper = true } } ~/.Xdefaults για όμορφο urxvt τερματικό >Xft.dpi: 96 Xft.antialias: true Xft.hinting: full Xft.hintstyle: hintslight Xft.rgba: rgb !"terminus" font!!! urxvt.font: xft:terminus:pixelsize=20 urxvt*boldFont: xft:terminus:pixelsize=20 urxvt.termName: xterm urxvt.scrollBar: false urxvt.imLocale: en_US.UTF-8 urxvt.loginShell: true urxvt.saveLines: 512 urxvt.geometry: 60x20 urxvt.boldMode: false urxvt.inheritPixmap: false urxvt.shading: 40 urxvt.xftAntialias: false urxvt.jumpScroll: true urxvt.tintColor: white urxvt.internalBorder: 0 urxvt.cursorBlink: false urxvt.cursorColor: grey urxvt.cursorColor2: #000000 urxvt.background: #262729 urxvt.foreground: light grey urxvt.colorBD: #ffffff urxvt.colorIT: #bbbbbb urxvt.colorUL: #999999 urxvt.underlineColor: #999999 urxvt.borderless: true !black *color0 : #222222 *color8 : #454545 !red *color1 : #F92672 *color9 : #F92672 !green *color2 : #A6E22E *color10: #A6E22E !yellow *color3 : #FD971F *color11: #FD971F !blue *color4 : #4682B4 *color12: #4682B4 !magenta *color5 : #AE81FF *color13: #AE81FF !cyan *color6: #89b6e2 *color14: #46a4ff !white *color7 : #FFFFFF *color15: #FFFFFF ~/.config/openbox/menu.xml για το μενού που εμφανίζεται με δεξί κλικ στο Desktop ><?xml version="1.0" encoding="utf-8"?> <openbox_menu> <menu id="root-menu" label="OpenBox 3"> <item label="Τερματικό"> <action name="Execute"> <execute> urxvt </execute> </action> </item> <separator/> <item label="Web browser"> <action name="Execute"> <execute> chromium </execute> </action> </item> <separator/> <menu id="root-menu-36311" label="εμφάνιση"> <item label="εικόνα επιφάνειας εργασίας"> <action name="Execute"> <execute> nitrogen ~/wallpapers </execute> </action> </item> <item label="lxappearance"> <action name="Execute"> <execute> lxappearance </execute> </action> </item> </menu> <separator/> <item label="screenshot!"> <action name="Execute"> <execute> scrot -d 4 </execute> </action> </item> <separator/> <item label="επεξεργασία μενού"> <action name="Execute"> <execute> obmenu </execute> </action> </item> <separator/> <item label="ρύθμιση openbox"> <action name="Execute"> <execute> obconf </execute> </action> </item> <separator/> <menu id="40" label="OpenBox"> <menu id="client-list-menu"/> <item label="Reconfigure"> <action name="Reconfigure"/> </item> <separator/> <item label="Exit"> <action name="Exit"/> </item> </menu> </menu> </openbox_menu> καλή διασκέδαση! Επεξ/σία 21 Οκτωβρίου 2010 από twiner
twiner Δημοσ. 21 Οκτωβρίου 2010 Μέλος Δημοσ. 21 Οκτωβρίου 2010 (επεξεργασμένο) Γιατί Μαρμελάδα; γιατί η σπιτική(home made) είναι καλύτερη, όπως και το σύστημα που θα στήσουμε γιατί θα ανταλλάξουμε "συνταγές" -σαν τις θείτσες γιατί έτσι αξιοποιούμε τα παραγινομένα φρούτα (ή τα pc) γιατί το "project feather" ήταν πιασμένο και είπα να πρωτοτυπήσω. για random lolz Στόχος: Συγκέντρωση και διαμοιρασμός της γνώσης για τo στήσιμο gnu/linux συστήματος με customized γραφικό περιβάλλον και μικρό memory footprint. Ξεκινώντας από ένα πολύ βασικό σύστημα (Debian ή Arch κατά προτίμηση) να καταλήξουμε σ'ένα ελαφρύ αλλά πλήρες γραφικό περιβάλλον εργασίας. Αυτό το topic φιλοδοξεί να μπει στο wiki (με ελαφρώς πιο συμβατικό τίτλο) και χρειάζεται οπωσδήποτε τη βοήθεια σας! Η ιδέα: να πάμε το project του tritonas00 ένα βήμα παραπέρα. Πώς μπορώ να βοηθήσω; εγώ που διαβάζω αυτό το...πράγμα 0. Να γράψω (ή να βρω και να προσαρμώσω) σύντομο και απλό οδηγό εγκατάστασης minimal συστήματος Debian, Arch ή άλλης διανομής. Ο οδηγός να περιλαμβάνει δημιουργία χρήστη και ρύθμιση: Δικτύου, X και Alsa. 1. Να εντοπίσω χρήσιμα tips (σχετικά με ελαφριές εφαρμογές, window managers, file managers κτλ κτλ) που είναι διάσπαρτα μέσα στο Linux Section, και να τα ποστάρω εδώ (σε quotes) π.χ. τερματισμός + επανεκκίνηση χωρίς δικαιώματα root sudo chmod a+s /sbin/shutdown Mια φορα το κανεις και τελος. Και μετα φυσικα απο οποιοδηποτε χρηστη /sbin/shutdown -h now για halt και /sbin/shutdown -r now για reboot. Τα εχω συντομευση στο fbpanel. Αλλα φυσικα λυση που δουλευει ανεξαρτητως de,wm διανομης κλπ.. 2. Να μοιραστώ δικά μου configuration files μαζί με screenshot. 3.Να προτείνω εφαρμογές που ταιριάζουν στο project. 4. Να καταθέσω ολοκληρωμένη πρόταση: συλλογή εφαρμογών και configuration files, για ένα πλήρες κι ελαφρύ Desktop. όχι πολύ σιρόπι γιατί θα βαρύνει Κανόνες για κατάθεση ολοκληρωμένης πρότασης: 1. παραθέτω οπωσδήποτε screenshot του τελικού αποτελέσματος. 2. δίνω σε code tags την εντολή εγκαστάσης (με apt,pacman κτλ) όλων των εφαρμογών της σύνθεσης μου. 3. παραθέτω αρχεία ρυθμίσεων: .xinitrc, .conkyrc κτλ. σε code tags 4. αν συμπεριλάβω εφαρμογή που κατέθεσε άλλος χρήστης βάζω σε quote ή αναφέρω ρητά το username του. Αφού τελειώσει η πρώτη φάση και έχουμε π.χ 3-4 ολοκληρωμένες προτάσεις, θα χρειαστούν εθελοντές για να τις δοκιμάσουν σε πραγματική εγκατάσταση ή virtualbox και να δώσουν feedback. Παράδειγμα "ολοκληρωμένης" Πρότασης: γραμμή εγκατάστασης: σε Arch Linux >sudo pacman -S openbox obmenu obconf fbpanel nitrogen thunar thunar-volman xarchiver lxappearance lxtask gpicview gnome-icon-theme geany audacious smplayer chromium xfburn scrot terminus-font urxvt ~/.xinitrc ># ~/.xinitrc #automount usb, cd, dvd thunar --daemon & #wallpaper! nitrogen --restore; #panels fbpanel -p top & fbpanel -p bottom & #window manager exec ck-launch-session openbox ~/.config/fbpanel/top για το επάνω panel ># ~/.config/fbpanel/top Global { edge = top allign = center margin = 0 widthtype = percent width = 100 height = 30 transparent = false tintcolor = #ffffff alpha = 28 setdocktype = true setpartialstrut = true autohide = false heightWhenHidden = 2 roundcorners = false roundcornersradius = 7 layer = above MaxElemHeight = 32 setlayer = false } Plugin { type = space config { size = 2 } } Plugin { type = menu config { IconSize = 22 icon = start-here systemmenu { } separator { } menu { name = Computer icon = computer item { name = Terminal icon = terminal action = urxvt } separator { } item { name = Reboot icon = gnome-session-reboot action = sudo shutdown -r now } item { name = Shutdown icon = gnome-session-halt action = sudo shutdown -h now } } } } Plugin { type = space config { size = 10 } } Plugin { type = launchbar config { button { icon = file-manager tooltip = File Manager action = thunar } button { icon = terminal tooltip = Terminal action = urxvt } button { icon = web-browser tooltip = Web Browser action = chromium } } } Plugin { type = space expand = true } plugin { type = volume } Plugin { type = tray } Plugin { type = space config { size = 1 } } Plugin { type = tclock config { ShowSeconds = false TooltipFmt = %A %x ShowCalendar = true ClockFmt = <span font="Verdana 17"><span color="black">%R</span></span> } } Plugin { type = icons config { DefaultIcon = /usr/share/fbpanel/images/default.xpm application { icon = gnome-terminal ClassName = XTerm } application { icon = gnome-terminal ClassName = mlterm } application { icon = gnome-terminal ClassName = URxvt } application { icon = gnome-emacs ClassName = Emacs } application { icon = mozilla-firefox ClassName = Firefox-bin } application { icon = mozilla-firefox ClassName = Firefox } } } ~/.config/fbpanel/bottom για το κάτω panel ># ~/.config/fbpanel/bottom Global { edge = bottom allign = center margin = 0 widthtype = percent width = 100 height = 30 transparent = false tintcolor = #ffffff alpha = 28 setdocktype = true setpartialstrut = true autohide = false heightWhenHidden = 2 roundcorners = false roundcornersradius = 7 layer = none MaxElemHeight = 32 } Plugin { type = wincmd config { icon = gnome-fs-desktop tooltip = Left click to iconify all windows. Middle click to shade them. } } Plugin { type = space config { size = 15 } } Plugin { type = taskbar expand = true config { ShowIconified = true ShowMapped = true ShowAllDesks = false tooltips = true IconsOnly = false MaxTaskWidth = 150 } } Plugin { type = space config { size = 15 } } Plugin { type = pager config { showwallpaper = true } } ~/.Xdefaults για όμορφο urxvt τερματικό >Xft.dpi: 96 Xft.antialias: true Xft.hinting: full Xft.hintstyle: hintslight Xft.rgba: rgb !"terminus" font!!! urxvt.font: xft:terminus:pixelsize=20 urxvt*boldFont: xft:terminus:pixelsize=20 urxvt.termName: xterm urxvt.scrollBar: false urxvt.imLocale: en_US.UTF-8 urxvt.loginShell: true urxvt.saveLines: 512 urxvt.geometry: 60x20 urxvt.boldMode: false urxvt.inheritPixmap: false urxvt.shading: 40 urxvt.xftAntialias: false urxvt.jumpScroll: true urxvt.tintColor: white urxvt.internalBorder: 0 urxvt.cursorBlink: false urxvt.cursorColor: grey urxvt.cursorColor2: #000000 urxvt.background: #262729 urxvt.foreground: light grey urxvt.colorBD: #ffffff urxvt.colorIT: #bbbbbb urxvt.colorUL: #999999 urxvt.underlineColor: #999999 urxvt.borderless: true !black *color0 : #222222 *color8 : #454545 !red *color1 : #F92672 *color9 : #F92672 !green *color2 : #A6E22E *color10: #A6E22E !yellow *color3 : #FD971F *color11: #FD971F !blue *color4 : #4682B4 *color12: #4682B4 !magenta *color5 : #AE81FF *color13: #AE81FF !cyan *color6: #89b6e2 *color14: #46a4ff !white *color7 : #FFFFFF *color15: #FFFFFF ~/.config/openbox/menu.xml για το μενού που εμφανίζεται με δεξί κλικ στο Desktop ><?xml version="1.0" encoding="utf-8"?> <openbox_menu> <menu id="root-menu" label="OpenBox 3"> <item label="Τερματικό"> <action name="Execute"> <execute> urxvt </execute> </action> </item> <separator/> <item label="Web browser"> <action name="Execute"> <execute> chromium </execute> </action> </item> <separator/> <menu id="root-menu-36311" label="εμφάνιση"> <item label="εικόνα επιφάνειας εργασίας"> <action name="Execute"> <execute> nitrogen ~/wallpapers </execute> </action> </item> <item label="lxappearance"> <action name="Execute"> <execute> lxappearance </execute> </action> </item> </menu> <separator/> <item label="screenshot!"> <action name="Execute"> <execute> scrot -d 4 </execute> </action> </item> <separator/> <item label="επεξεργασία μενού"> <action name="Execute"> <execute> obmenu </execute> </action> </item> <separator/> <item label="ρύθμιση openbox"> <action name="Execute"> <execute> obconf </execute> </action> </item> <separator/> <menu id="40" label="OpenBox"> <menu id="client-list-menu"/> <item label="Reconfigure"> <action name="Reconfigure"/> </item> <separator/> <item label="Exit"> <action name="Exit"/> </item> </menu> </menu> </openbox_menu> καλή διασκέδαση! Επεξ/σία 21 Οκτωβρίου 2010 από twiner
gtroza Δημοσ. 21 Οκτωβρίου 2010 Δημοσ. 21 Οκτωβρίου 2010 bravo twiner! πολύ καλή ιδέα και ωραια παρουσιασμένη .
gtroza Δημοσ. 21 Οκτωβρίου 2010 Δημοσ. 21 Οκτωβρίου 2010 bravo twiner! πολύ καλή ιδέα και ωραια παρουσιασμένη .
tritonas00 Δημοσ. 21 Οκτωβρίου 2010 Δημοσ. 21 Οκτωβρίου 2010 (επεξεργασμένο) ΣΥΓΧΑΡΗΤΗΡΙΑ Κ.twiner για το εξαιρετικο project! Συνταγη - Προταση γραμμή εγκατάστασης: σε Arch Linux >sudo pacman -S xorg xorg-xinit fluxbox fbpanel lxpanel thunar thunar-volman gtk-chtheme libnotify leafpad gpicview conky wicd chromium pidgin vlc mplayer gparted transmission-gtk links-g w3m gksu gexec xsmbrowser moc xarchiver lshw lxrandr centerim ultrasol xterm rxvt-unicode htop ~/.xinitrc >exec ck-launch-session fluxbox & fbpid=$! sleep 1 { tail -f /var/log/auth.log | grep --line-buffered -e "sshd:session" -e "password" > ssh & tail -n0 -f /home/babis/ssh | while read line; do notify-send "Authority" "$line"; done & tail -n0 -f /var/log/gnump3d/access.log | while read line; do notify-send "Gnump3d" "$line"; done & fbpanel & lxpanel & wicd-gtk & urxvt & conky & setxkbmap -option terminate:ctrl_alt_bksp & } & wait $fbpid ~/.config/fbpanel/default για το κατω panel >Global { edge = bottom allign = center margin = 0 widthtype = request width = 20 height = 26 transparent = true tintcolor = #ffffff alpha = 0 setdocktype = true setpartialstrut = true autohide = false heightWhenHidden = 2 roundcorners = false roundcornersradius = 7 layer = none } Plugin { type = space config { size = 0 } } Plugin { type = launchbar config { button { image = /usr/share/pixmaps/new/terminal.ico tooltip = Terminal action = xterm -bg black -fg orange } button { image = /usr/share/pixmaps//new/iTunes.ico tooltip = Moc audio player action = urxvt2 -e mocp -T red_theme } button { image = /usr/share/pixmaps/new/Lightning-002.png tooltip = Links action = links -g } button { image = /usr/share/pixmaps/new/Web.ico tooltip = Light Web action = /home/babis/scripts/./web } button { image = /usr/share/pixmaps/new/msnmessenger.ico tooltip =Centerim #action = pidgin action = xterm -bg black -fg orange -e centerim } button { image = /usr/share/pixmaps/new/Transmission.ico tooltip = Torrent Client action = transmission } button { image = /usr/share/pixmaps/new/paste.ico tooltip = Text Editor action = leafpad } button { image = /usr/share/pixmaps/new/jpg.ico tooltip = Image Viewer action = gpicview } button { image = /usr/share/pixmaps/new/Sandra.ico tooltip = Hardware List action = gksu gtk-lshw } button { image = /usr/share/pixmaps/new/tinkertool.ico tooltip = Run action = gksu } button { image = /usr/share/pixmaps/new/Winzip-005.png tooltip = Xarchiver action = xarchiver } button { image = /usr/share/pixmaps/new/Heart.ico tooltip = Solitaire action = ultrasol } button { image = /usr/share/pixmaps/new/Warning.ico tooltip = Kill action = xkill } button { image = /usr/share/pixmaps/new/network.ico tooltip = View samba shares action = xsmbrowser } button { image = /usr/share/pixmaps/new/Restorator.ico tooltip = Screen Resolution action = lxrandr } button { image = /usr/share/pixmaps/new/vmware.ico tooltip = Fit Wallpaper action = fbsetbg /home/babis/Files/pictures/Aqua_Blue_with_Leaves,_Mac_OS_Theme.jpg } button { image = /usr/share/pixmaps/new/keychain-005.png tooltip = Scripts menu action = urxvt2 -e /home/babis/./menu } button { image = /usr/share/pixmaps/new/Reboot-005.png tooltip = Reboot action = rebot } button { image = /usr/share/pixmaps/new/poweroff.ico tooltip = Shutdown action = shut } } } Plugin { type = space config { size = 0 } } Εικονιδια ----> Albook extended dark 782 icns ~/.config/lxpanel/default/panels/bottom για το επανω panel >Global { edge=top allign=center margin=26 widthtype=percent width=100 height=20 transparent=1 tintcolor=#c1dacb alpha=142 autohide=0 heightwhenhidden=2 setdocktype=1 setpartialstrut=1 usefontcolor=0 fontcolor=#000000 background=0 backgroundfile=/usr/share/lxpanel/images/background.png iconsize=16 } Plugin { type = menu Config { image=/usr/share/pixmaps/archlinux-icon-tango-64.png system { } separator { } item { command=run } separator { } item { image=gnome-logout command=logout } } } Plugin { type = taskbar expand=1 Config { tooltips=0 IconsOnly=0 ShowAllDesks=0 UseMouseWheel=0 UseUrgencyHint=1 FlatButton=1 MaxTaskWidth=200 spacing=1 GroupedTasks=0 } } Plugin { type = tray } Plugin { type = cpu } Plugin { type = volumealsa } Plugin { type = xkb Config { DisplayType=1 PerAppLayout=1 DefaultGroup=0 } } Plugin { type = dclock Config { ClockFmt=%R TooltipFmt=%A %x BoldFont=1 IconOnly=0 } } ~/.config/lxpanel/default/panels/panel για το panel δεξια >Global { edge=right allign=left margin=125 widthtype=percent width=43 height=41 transparent=1 tintcolor=#000000 alpha=0 autohide=0 heightwhenhidden=2 setdocktype=0 setpartialstrut=0 usefontcolor=0 fontcolor=#ffffff background=0 backgroundfile=/usr/share/lxpanel/images/background.png iconsize=41 } Plugin { type = launchbar Config { Button { id=/usr/share/applications/Thunar.desktop } Button { id=/usr/share/applications/thunar.desktop } Button { id=/usr/share/applications/chromium.desktop } Button { id=/usr/share/applications/pidgin.desktop } Button { id=/usr/share/applications/vlc.desktop } Button { id=/usr/share/applications/gparted.desktop } } } ~/.conkyrc - Τροποποιηση του αρχικου configuration απο τον χρηστη markelos >#avoid flicker double_buffer yes #own window to run simultanious 2 or more conkys own_window no own_window_transparent yes own_window_type normal own_window_hints undecorate,sticky,skip_taskbar,skip_pager #borders draw_borders no border_inner_margin 1 #shades draw_shades no #position gap_x 0 gap_y 22 alignment top_middle #behaviour update_interval 1 #colour default_color FFDEAD #default_shade_color 000000 own_window_colour 333333 #font use_xft yes xftfont droid sans:size=8 # Force UTF8? note that UTF8 support required XFT override_utf8_locale yes #to prevent window from moving use_spacer none minimum_size 10 30 maximum_width 1000 #mpd #mpd_host localhost #mpd_port 6600 TEXT Cpu speed: ${color F0F8FF}${freq} Mhz ${color} Uptime: ${color F0F8FF}${uptime_short}${color} ${color} Memory ${color F0F8FF} ${memmax}${color} Used: ${color F0F8FF}${mem} ${color} Free:${color F0F8FF}${memeasyfree} ${color} Total Swap:${color F0F8FF} ${swapmax} ${color} Used: ${color F0F8FF}${swap} ${color} ${color} Net:${color F0F8FF} ${downspeed}${color F0F8FF} ${upspeed} ~/.Xdefaults για transparent urxvt και χρωματιστο xterm >Xft.antialias: true Xcursor.theme: Vanilla-DMZ-AA ## urxvt config URxvt*termName: rxvt URxvt*background: #000000 URxvt*foreground: #eab93d URxvt*scrollBar_right: false URxvt*scrollBar: false URxvt*borderLess: false URxvt*inheritPixmap: true URxvt*geometry: 84x24 URxvt*tint: white #URxvt*font: xft:terminus-font:size=12x24 URxvt*color0: #000000 URxvt*color1: #A80000 URxvt*color2: #00A800 URxvt*color3: #A85400 URxvt*color4: #0000A8 URxvt*color5: #A800A8 URxvt*color6: #00A8A8 URxvt*color7: #A8A8A8 URxvt*color8: #545054 URxvt*color9: #F85450 URxvt*color10: #50FC50 URxvt*color11: #F2FC50 URxvt*color12: #5054F8 URxvt*color13: #F854F8 URxvt*color14: #50FCF8 URxvt*color15: #F8FCF8 ## xterm config xterm*termName: xterm xterm*background: #000000 xterm*foreground: #eab93d ~/.fluxbox/apps για να οριζω το που και πως θα γινεται το decoration ανα εφαρμογη(βοηθησε και στην ενσωματωση του urxvt στο desktop καθως και του mplayer για ενσωματωμενο video playback στο desktop.) > [app] (name=urxvt) [Dimensions] {400 298} [Position] (UPPERLEFT) {0 50} [Deco] {NONE} [Hidden] {yes} [end] [app] (name=xv) (class=MPlayer) [Dimensions] {360 261} [Position] (UPPERRIGHT) {40 0} [Deco] {NONE} [Hidden] {yes} [end] [app] (name=Links) (class=Links) [Dimensions] {1230 691} [Position] (UPPERLEFT) {50 -28} [Maximized] {yes} [end] [app] (name=gpicview) (class=Gpicview) [Dimensions] {800 659} [Position] (UPPERLEFT) {207 4} [end] [app] (name=leafpad) (class=Leafpad) [Dimensions] {754 511} [Position] (UPPERLEFT) {178 143} [Close] {yes} [end] [app] (name=Pidgin) (class=Pidgin) (role=buddy_list) [Dimensions] {284 601} [Position] (UPPERLEFT) {673 37} [Close] {yes} [end] [app] (name=Pidgin) (class=Pidgin) (role=conversation) [Dimensions] {340 411} [Position] (UPPERLEFT) {127 90} [end] [app] (name=urxvt2) (class=URxvt) [Dimensions] {480 187} [Position] (LOWERRIGHT) {0 0} [Deco] {NONE} [Hidden] {yes} [end] [app] (name=chromium) (class=Chromium) [Dimensions] {948 671} [Position] (UPPERLEFT) {17 24} [Close] {yes} [end] [app] (name=vlc) (class=Vlc) (role=vlc-main) [Dimensions] {427 370} [Position] (UPPERLEFT) {259 149} [Close] {yes} [end] [app] (name=ultrasol) (class=Ultrasol) [Dimensions] {663 613} [Position] (UPPERLEFT) {239 30} [end] [app] (name=Thunar) (class=Thunar) [Dimensions] {831 545} [Position] (UPPERLEFT) {88 62} [Close] {yes} [end] Θεμα του fluxbox --------> Blendish ~/.mplayer/config > vo=xv #vfm=ffmpeg #lavdopts=lowres=1 #lavdopts=fast=yes #lavdopts=skiploopfilter=all font=/home/babis/.mplayer/font-arial-14-iso-8859-7/font.desc subcp=enca:gr:greek #fs=yes MEΡΙΚΕΣ ΕΠΕΞΗΓΗΣΕΙΣ. Θα αναρωτηθει κανεις τι στο καλο ειναι αυτα τα action = rebot action = shut που υπαρχουν στο τελος του καταλογου του ~/.config/fbpanel/default και φυσικα αντιστοιχουν στα 2 τελευταια εικονιδια της κατω μπαρας(fbpanel) Δυο απλουστατα scripts για για κανω επανεκκινηση και κλεισιμο του μηχανηματος με ενα κλικ σε....3 sec αφου το πατησω σε συνδυασμο με το libnotify. /usr/bin/rebot >#!/bin/sh notify-send System "The system will reboot in 3 seconds!!" & sleep 3 /sbin/shutdown -r now /usr/bin/shut >#!/bin/sh notify-send System "The system will halt in 3 seconds!!" & sleep 3 /sbin/shutdown -h now Επισης τα > tail -f /var/log/auth.log | grep --line-buffered -e "sshd:session" -e "password" > ssh & tail -n0 -f /home/babis/ssh | while read line; do notify-send "Authority" "$line"; done & tail -n0 -f /var/log/gnump3d/access.log | while read line; do notify-send "Gnump3d" "$line"; done & στο ~/.xinitrc ειναι για να ειδοποιουμαι με desktop notification (libnotify) ανα πασα στιγμη και ωρα για την δραστηριοτητα του ssh(ποιος μπαινει ποιος βγαινει ποιος δεν μπορεσε να μπει κ.λ.π) καθως και για τον media streaming server μου.(gnump3d) Φυσικα εχουν δωθει και τα απαραιτητα read δικαιωματα στα συγκεκριμενα logs. Επεξ/σία 13 Νοεμβρίου 2010 από tritonas00
tritonas00 Δημοσ. 21 Οκτωβρίου 2010 Δημοσ. 21 Οκτωβρίου 2010 (επεξεργασμένο) ΣΥΓΧΑΡΗΤΗΡΙΑ Κ.twiner για το εξαιρετικο project! Συνταγη - Προταση γραμμή εγκατάστασης: σε Arch Linux >sudo pacman -S xorg xorg-xinit fluxbox fbpanel lxpanel thunar thunar-volman gtk-chtheme libnotify leafpad gpicview conky wicd chromium pidgin vlc mplayer gparted transmission-gtk links-g w3m gksu gexec xsmbrowser moc xarchiver lshw lxrandr centerim ultrasol xterm rxvt-unicode htop ~/.xinitrc >exec ck-launch-session fluxbox & fbpid=$! sleep 1 { tail -f /var/log/auth.log | grep --line-buffered -e "sshd:session" -e "password" > ssh & tail -n0 -f /home/babis/ssh | while read line; do notify-send "Authority" "$line"; done & tail -n0 -f /var/log/gnump3d/access.log | while read line; do notify-send "Gnump3d" "$line"; done & fbpanel & lxpanel & wicd-gtk & urxvt & conky & setxkbmap -option terminate:ctrl_alt_bksp & } & wait $fbpid ~/.config/fbpanel/default για το κατω panel >Global { edge = bottom allign = center margin = 0 widthtype = request width = 20 height = 26 transparent = true tintcolor = #ffffff alpha = 0 setdocktype = true setpartialstrut = true autohide = false heightWhenHidden = 2 roundcorners = false roundcornersradius = 7 layer = none } Plugin { type = space config { size = 0 } } Plugin { type = launchbar config { button { image = /usr/share/pixmaps/new/terminal.ico tooltip = Terminal action = xterm -bg black -fg orange } button { image = /usr/share/pixmaps//new/iTunes.ico tooltip = Moc audio player action = urxvt2 -e mocp -T red_theme } button { image = /usr/share/pixmaps/new/Lightning-002.png tooltip = Links action = links -g } button { image = /usr/share/pixmaps/new/Web.ico tooltip = Light Web action = /home/babis/scripts/./web } button { image = /usr/share/pixmaps/new/msnmessenger.ico tooltip =Centerim #action = pidgin action = xterm -bg black -fg orange -e centerim } button { image = /usr/share/pixmaps/new/Transmission.ico tooltip = Torrent Client action = transmission } button { image = /usr/share/pixmaps/new/paste.ico tooltip = Text Editor action = leafpad } button { image = /usr/share/pixmaps/new/jpg.ico tooltip = Image Viewer action = gpicview } button { image = /usr/share/pixmaps/new/Sandra.ico tooltip = Hardware List action = gksu gtk-lshw } button { image = /usr/share/pixmaps/new/tinkertool.ico tooltip = Run action = gksu } button { image = /usr/share/pixmaps/new/Winzip-005.png tooltip = Xarchiver action = xarchiver } button { image = /usr/share/pixmaps/new/Heart.ico tooltip = Solitaire action = ultrasol } button { image = /usr/share/pixmaps/new/Warning.ico tooltip = Kill action = xkill } button { image = /usr/share/pixmaps/new/network.ico tooltip = View samba shares action = xsmbrowser } button { image = /usr/share/pixmaps/new/Restorator.ico tooltip = Screen Resolution action = lxrandr } button { image = /usr/share/pixmaps/new/vmware.ico tooltip = Fit Wallpaper action = fbsetbg /home/babis/Files/pictures/Aqua_Blue_with_Leaves,_Mac_OS_Theme.jpg } button { image = /usr/share/pixmaps/new/keychain-005.png tooltip = Scripts menu action = urxvt2 -e /home/babis/./menu } button { image = /usr/share/pixmaps/new/Reboot-005.png tooltip = Reboot action = rebot } button { image = /usr/share/pixmaps/new/poweroff.ico tooltip = Shutdown action = shut } } } Plugin { type = space config { size = 0 } } Εικονιδια ----> Albook extended dark 782 icns ~/.config/lxpanel/default/panels/bottom για το επανω panel >Global { edge=top allign=center margin=26 widthtype=percent width=100 height=20 transparent=1 tintcolor=#c1dacb alpha=142 autohide=0 heightwhenhidden=2 setdocktype=1 setpartialstrut=1 usefontcolor=0 fontcolor=#000000 background=0 backgroundfile=/usr/share/lxpanel/images/background.png iconsize=16 } Plugin { type = menu Config { image=/usr/share/pixmaps/archlinux-icon-tango-64.png system { } separator { } item { command=run } separator { } item { image=gnome-logout command=logout } } } Plugin { type = taskbar expand=1 Config { tooltips=0 IconsOnly=0 ShowAllDesks=0 UseMouseWheel=0 UseUrgencyHint=1 FlatButton=1 MaxTaskWidth=200 spacing=1 GroupedTasks=0 } } Plugin { type = tray } Plugin { type = cpu } Plugin { type = volumealsa } Plugin { type = xkb Config { DisplayType=1 PerAppLayout=1 DefaultGroup=0 } } Plugin { type = dclock Config { ClockFmt=%R TooltipFmt=%A %x BoldFont=1 IconOnly=0 } } ~/.config/lxpanel/default/panels/panel για το panel δεξια >Global { edge=right allign=left margin=125 widthtype=percent width=43 height=41 transparent=1 tintcolor=#000000 alpha=0 autohide=0 heightwhenhidden=2 setdocktype=0 setpartialstrut=0 usefontcolor=0 fontcolor=#ffffff background=0 backgroundfile=/usr/share/lxpanel/images/background.png iconsize=41 } Plugin { type = launchbar Config { Button { id=/usr/share/applications/Thunar.desktop } Button { id=/usr/share/applications/thunar.desktop } Button { id=/usr/share/applications/chromium.desktop } Button { id=/usr/share/applications/pidgin.desktop } Button { id=/usr/share/applications/vlc.desktop } Button { id=/usr/share/applications/gparted.desktop } } } ~/.conkyrc - Τροποποιηση του αρχικου configuration απο τον χρηστη markelos >#avoid flicker double_buffer yes #own window to run simultanious 2 or more conkys own_window no own_window_transparent yes own_window_type normal own_window_hints undecorate,sticky,skip_taskbar,skip_pager #borders draw_borders no border_inner_margin 1 #shades draw_shades no #position gap_x 0 gap_y 22 alignment top_middle #behaviour update_interval 1 #colour default_color FFDEAD #default_shade_color 000000 own_window_colour 333333 #font use_xft yes xftfont droid sans:size=8 # Force UTF8? note that UTF8 support required XFT override_utf8_locale yes #to prevent window from moving use_spacer none minimum_size 10 30 maximum_width 1000 #mpd #mpd_host localhost #mpd_port 6600 TEXT Cpu speed: ${color F0F8FF}${freq} Mhz ${color} Uptime: ${color F0F8FF}${uptime_short}${color} ${color} Memory ${color F0F8FF} ${memmax}${color} Used: ${color F0F8FF}${mem} ${color} Free:${color F0F8FF}${memeasyfree} ${color} Total Swap:${color F0F8FF} ${swapmax} ${color} Used: ${color F0F8FF}${swap} ${color} ${color} Net:${color F0F8FF} ${downspeed}${color F0F8FF} ${upspeed} ~/.Xdefaults για transparent urxvt και χρωματιστο xterm >Xft.antialias: true Xcursor.theme: Vanilla-DMZ-AA ## urxvt config URxvt*termName: rxvt URxvt*background: #000000 URxvt*foreground: #eab93d URxvt*scrollBar_right: false URxvt*scrollBar: false URxvt*borderLess: false URxvt*inheritPixmap: true URxvt*geometry: 84x24 URxvt*tint: white #URxvt*font: xft:terminus-font:size=12x24 URxvt*color0: #000000 URxvt*color1: #A80000 URxvt*color2: #00A800 URxvt*color3: #A85400 URxvt*color4: #0000A8 URxvt*color5: #A800A8 URxvt*color6: #00A8A8 URxvt*color7: #A8A8A8 URxvt*color8: #545054 URxvt*color9: #F85450 URxvt*color10: #50FC50 URxvt*color11: #F2FC50 URxvt*color12: #5054F8 URxvt*color13: #F854F8 URxvt*color14: #50FCF8 URxvt*color15: #F8FCF8 ## xterm config xterm*termName: xterm xterm*background: #000000 xterm*foreground: #eab93d ~/.fluxbox/apps για να οριζω το που και πως θα γινεται το decoration ανα εφαρμογη(βοηθησε και στην ενσωματωση του urxvt στο desktop καθως και του mplayer για ενσωματωμενο video playback στο desktop.) > [app] (name=urxvt) [Dimensions] {400 298} [Position] (UPPERLEFT) {0 50} [Deco] {NONE} [Hidden] {yes} [end] [app] (name=xv) (class=MPlayer) [Dimensions] {360 261} [Position] (UPPERRIGHT) {40 0} [Deco] {NONE} [Hidden] {yes} [end] [app] (name=Links) (class=Links) [Dimensions] {1230 691} [Position] (UPPERLEFT) {50 -28} [Maximized] {yes} [end] [app] (name=gpicview) (class=Gpicview) [Dimensions] {800 659} [Position] (UPPERLEFT) {207 4} [end] [app] (name=leafpad) (class=Leafpad) [Dimensions] {754 511} [Position] (UPPERLEFT) {178 143} [Close] {yes} [end] [app] (name=Pidgin) (class=Pidgin) (role=buddy_list) [Dimensions] {284 601} [Position] (UPPERLEFT) {673 37} [Close] {yes} [end] [app] (name=Pidgin) (class=Pidgin) (role=conversation) [Dimensions] {340 411} [Position] (UPPERLEFT) {127 90} [end] [app] (name=urxvt2) (class=URxvt) [Dimensions] {480 187} [Position] (LOWERRIGHT) {0 0} [Deco] {NONE} [Hidden] {yes} [end] [app] (name=chromium) (class=Chromium) [Dimensions] {948 671} [Position] (UPPERLEFT) {17 24} [Close] {yes} [end] [app] (name=vlc) (class=Vlc) (role=vlc-main) [Dimensions] {427 370} [Position] (UPPERLEFT) {259 149} [Close] {yes} [end] [app] (name=ultrasol) (class=Ultrasol) [Dimensions] {663 613} [Position] (UPPERLEFT) {239 30} [end] [app] (name=Thunar) (class=Thunar) [Dimensions] {831 545} [Position] (UPPERLEFT) {88 62} [Close] {yes} [end] Θεμα του fluxbox --------> Blendish ~/.mplayer/config > vo=xv #vfm=ffmpeg #lavdopts=lowres=1 #lavdopts=fast=yes #lavdopts=skiploopfilter=all font=/home/babis/.mplayer/font-arial-14-iso-8859-7/font.desc subcp=enca:gr:greek #fs=yes MEΡΙΚΕΣ ΕΠΕΞΗΓΗΣΕΙΣ. Θα αναρωτηθει κανεις τι στο καλο ειναι αυτα τα action = rebot action = shut που υπαρχουν στο τελος του καταλογου του ~/.config/fbpanel/default και φυσικα αντιστοιχουν στα 2 τελευταια εικονιδια της κατω μπαρας(fbpanel) Δυο απλουστατα scripts για για κανω επανεκκινηση και κλεισιμο του μηχανηματος με ενα κλικ σε....3 sec αφου το πατησω σε συνδυασμο με το libnotify. /usr/bin/rebot >#!/bin/sh notify-send System "The system will reboot in 3 seconds!!" & sleep 3 /sbin/shutdown -r now /usr/bin/shut >#!/bin/sh notify-send System "The system will halt in 3 seconds!!" & sleep 3 /sbin/shutdown -h now Επισης τα > tail -f /var/log/auth.log | grep --line-buffered -e "sshd:session" -e "password" > ssh & tail -n0 -f /home/babis/ssh | while read line; do notify-send "Authority" "$line"; done & tail -n0 -f /var/log/gnump3d/access.log | while read line; do notify-send "Gnump3d" "$line"; done & στο ~/.xinitrc ειναι για να ειδοποιουμαι με desktop notification (libnotify) ανα πασα στιγμη και ωρα για την δραστηριοτητα του ssh(ποιος μπαινει ποιος βγαινει ποιος δεν μπορεσε να μπει κ.λ.π) καθως και για τον media streaming server μου.(gnump3d) Φυσικα εχουν δωθει και τα απαραιτητα read δικαιωματα στα συγκεκριμενα logs. Επεξ/σία 13 Νοεμβρίου 2010 από tritonas00
jim_p Δημοσ. 21 Οκτωβρίου 2010 Δημοσ. 21 Οκτωβρίου 2010 Δυο παρατηρησεις. - Γιατι κανετε χρηση του xinitrc, το οποιο εκτελει τα περιεχομενα του ανεξαρτητως de και wm, και δεν κανετε χρηση του autostart που παρεχει ο καθε wm. Πχ, αν βαλω αυριο fluxbox που μου παρεχει δικο του κατω πανελ και tray, για ποιο λογο να τρεχω και εκει το fbpanel που τρεχω στο openbox? - Το notification (για τερματισμο/επανεκκινηση εδω) απαιτει καποιον daemon να τρεχει ηδη?
jim_p Δημοσ. 21 Οκτωβρίου 2010 Δημοσ. 21 Οκτωβρίου 2010 Δυο παρατηρησεις. - Γιατι κανετε χρηση του xinitrc, το οποιο εκτελει τα περιεχομενα του ανεξαρτητως de και wm, και δεν κανετε χρηση του autostart που παρεχει ο καθε wm. Πχ, αν βαλω αυριο fluxbox που μου παρεχει δικο του κατω πανελ και tray, για ποιο λογο να τρεχω και εκει το fbpanel που τρεχω στο openbox? - Το notification (για τερματισμο/επανεκκινηση εδω) απαιτει καποιον daemon να τρεχει ηδη?
macabre_sunsets Δημοσ. 21 Οκτωβρίου 2010 Δημοσ. 21 Οκτωβρίου 2010 Πρόταση: Προσθήκη LCD οθόνης χαρακτήρων για προβολή live πληροφοριών + Παρακολούθηση θερμοκρασιών & fans με lm-sensors Αν και το παρακάτω δεν αφορά ακριβώς «τo στήσιμο gnu/linux συστήματος με customized γραφικό περιβάλλον και μικρό memory footprint», πιστεύω να είναι κάπως on topic και (ίσως) να φανεί χρήσιμο σε κάποιους. Σκοπός: Κάποιοι πιστεύω χρησιμοποιούν widgets ώστε να παρακολουθούν διάφορες πληροφορίες για το σύστημά τους (Χρήση CPU/RAM, Χώρος στους δίσκους, Θερμοκρασίες, Ταχύτητα ανεμιστήρων, και άλλα...). Αυτές οι πληροφορίες δεν φαίνονται όμως όταν τρέχει κάποια full-screen εφαρμογή ή κάποιο παιχνίδι. Κάποιοι άλλοι μπορεί να χρησιμοποιούν τον υπολογιστή ως «κατεβαστήρι»/server και να μην έχουν καν οθόνη. Ο σκοπός αυτού του post είναι η εγκατάσταση, παραμετροοπίηση και χρήση μιας LCD οθόνης χαρακτήρων (20 χαρακτήρες x 4 γραμμές, controller HD44780) η οποία μπορεί να βρεθεί σε προσιτές τιμές στο Internet (πχ/ ebay). Εκτός του παραπάνω, θα γίνει εγκατάσταση και παραμετροποίηση του προγράμματος lm-sensors για παρακολούθηση θερμοκρασιών και στροφών των ανεμιστήρων του συστήματος. Δυστυχώς, η οθόνη που έχω στην διάθεσή μου απαιτεί παράλληλη θύρα (που πιθανώς αρκετοί να μην έχουν), αλλά δίνοντας λίγα παραπάνω χρήματα μπορείτε να αγοράσετε μια πλακέτα που επιτρέπει στην οθόνη να συνδεθεί μέσω USB (οι αντάπτορες USB -> Parallel δεν λειτουργούν, σύμφωνα με όσα έχω διαβάσει σε διάφορες σελίδες). Το αποτέλεσμα: Στο ακόλουθο διάγραμμα παρουσιάζεται η συνδεσμολογία της LCD οθόνης με την παράλληλη θύρα. Τα ακόλουθα δοκιμάστηκαν σε Debian Squeeze/Sid (testing) με kernel 2.6.32-5-amd64. Η οθόνη έχει δοκιμαστεί και με παλαιότερο kernel (32bit, δυστυχώς δεν θυμάμαι ποιον) και έπαιζε μια χαρά. Αρχίζοντας λίγο ανάποδα, θα δούμε πρώτα την εγκατάσταση και παραμετροποίηση του lm-sensors. Ανοίγουμε την κονσόλα (είτε από το γραφικό περιβάλλον είτε μέσω ssh) και κάνουμε login σαν root (ή χρησιμοποιούμε sudo πριν από κάθε εντολή). >apt-get install lm-sensors Ενδεχομένως να εμφανίσει κάτι σαν το ακόλουθο, στο οποίο θα πρέπει να απαντήσουμε καταφατικά (y). >Reading package lists... Done Building dependency tree Reading state information... Done The following extra packages will be installed: fancontrol libdb4.7 libsensors4 perl perl-modules Suggested packages: sensord read-edid i2c-tools perl-doc libterm-readline-gnu-perl libterm-readline-perl-perl make The following NEW packages will be installed: fancontrol libdb4.7 libsensors4 lm-sensors perl perl-modules 0 upgraded, 6 newly installed, 0 to remove and 0 not upgraded. Need to get 8,818 kB of archives. After this operation, 37.5 MB of additional disk space will be used. Do you want to continue [Y/n]? Εφόσον εγκατασταθούν επιτυχώς όλα τα πακέτα εκτελούμε την εντολή >sensors-detect Θα ερωτηθούμε κάποια πράματα, στα οποία θα πρέπει να απαντήσουμε καταφατικά (y). Ένα παράδειγμα με όλες τις ερωτήσεις ακολουθεί (όπου υπάρχει ο χαρακτήρας "y" είναι η απάντησή μας): ># sensors-detect revision 5818 (2010-01-18 17:22:07 +0100) # System: To Be Filled By O.E.M. To Be Filled By O.E.M. # Board: ASRock A330GC This program will help you determine which kernel modules you need to load to use lm_sensors most effectively. It is generally safe and recommended to accept the default answers to all questions, unless you know what you're doing. Some south bridges, CPUs or memory controllers contain embedded sensors. Do you want to scan for them? This is totally safe. (YES/no): y Silicon Integrated Systems SIS5595... No VIA VT82C686 Integrated Sensors... No VIA VT8231 Integrated Sensors... No AMD K8 thermal sensors... No AMD Family 10h thermal sensors... No AMD Family 11h thermal sensors... No Intel Core family thermal sensor... No Intel Atom thermal sensor... Success! (driver `coretemp') Intel AMB FB-DIMM thermal sensor... No VIA C7 thermal sensor... No VIA Nano thermal sensor... No Some Super I/O chips contain embedded sensors. We have to write to standard I/O ports to probe them. This is usually safe. Do you want to scan for Super I/O sensors? (YES/no): y Probing for Super-I/O at 0x2e/0x2f Trying family `National Semiconductor'... No Trying family `SMSC'... No Trying family `VIA/Winbond/Nuvoton/Fintek'... Yes Found `Winbond W83627DHG-P Super IO Sensors' Success! (address 0x290, driver `w83627ehf') Probing for Super-I/O at 0x4e/0x4f Trying family `National Semiconductor'... No Trying family `SMSC'... No Trying family `VIA/Winbond/Nuvoton/Fintek'... No Trying family `ITE'... No Some systems (mainly servers) implement IPMI, a set of common interfaces through which system health data may be retrieved, amongst other things. We first try to get the information from SMBIOS. If we don't find it there, we have to read from arbitrary I/O ports to probe for such interfaces. This is normally safe. Do you want to scan for IPMI interfaces? (YES/no): y Probing for `IPMI BMC KCS' at 0xca0... No Probing for `IPMI BMC SMIC' at 0xca8... No Some hardware monitoring chips are accessible through the ISA I/O ports. We have to write to arbitrary I/O ports to probe them. This is usually safe though. Yes, you do have ISA I/O ports even if you do not have any ISA slots! Do you want to scan the ISA I/O ports? (yes/NO): y Probing for `National Semiconductor LM78' at 0x290... No Probing for `National Semiconductor LM79' at 0x290... No Probing for `Winbond W83781D' at 0x290... No Probing for `Winbond W83782D' at 0x290... No Lastly, we can probe the I2C/SMBus adapters for connected hardware monitoring devices. This is the most risky part, and while it works reasonably well on most systems, it has been reported to cause trouble on some systems. Do you want to probe the I2C/SMBus adapters now? (YES/no): y Using driver `i2c-i801' for device 0000:00:1f.3: Intel 82801G ICH7 Module i2c-dev loaded successfully. Next adapter: SMBus I801 adapter at 0400 (i2c-0) Do you want to scan it? (yes/NO/selectively): y Client found at address 0x50 Probing for `Analog Devices ADM1033'... No Probing for `Analog Devices ADM1034'... No Probing for `SPD EEPROM'... Yes (confidence 8, not a hardware monitoring chip) Probing for `EDID EEPROM'... No Client found at address 0x52 Probing for `Analog Devices ADM1033'... No Probing for `Analog Devices ADM1034'... No Probing for `SPD EEPROM'... Yes (confidence 8, not a hardware monitoring chip) Next adapter: intel drm CRTDDC_A (i2c-1) Do you want to scan it? (YES/no/selectively): y Client found at address 0x49 Probing for `National Semiconductor LM75'... No Probing for `Dallas Semiconductor DS75'... No Probing for `National Semiconductor LM77'... No Probing for `Dallas Semiconductor DS1621/DS1631'... No Probing for `National Semiconductor LM73'... No Probing for `National Semiconductor LM92'... No Probing for `National Semiconductor LM76'... No Probing for `Maxim MAX6633/MAX6634/MAX6635'... No Client found at address 0x50 Probing for `Analog Devices ADM1033'... No Probing for `Analog Devices ADM1034'... No Probing for `SPD EEPROM'... No Probing for `EDID EEPROM'... Yes (confidence 8, not a hardware monitoring chip) Client found at address 0x51 Probing for `Analog Devices ADM1033'... No Probing for `Analog Devices ADM1034'... No Probing for `SPD EEPROM'... No Client found at address 0x52 Probing for `Analog Devices ADM1033'... No Probing for `Analog Devices ADM1034'... No Probing for `SPD EEPROM'... No Client found at address 0x53 Probing for `Analog Devices ADM1033'... No Probing for `Analog Devices ADM1034'... No Probing for `SPD EEPROM'... No Now follows a summary of the probes I have just done. Just press ENTER to continue: Driver `w83627ehf': * ISA bus, address 0x290 Chip `Winbond W83627DHG-P Super IO Sensors' (confidence: 9) Driver `coretemp': * Chip `Intel Atom thermal sensor' (confidence: 9) To load everything that is needed, add this to /etc/modules: #----cut here---- # Chip drivers coretemp w83627ehf #----cut here---- If you have some drivers built into your kernel, the list above will contain too many modules. Skip the appropriate ones! Do you want to add these lines automatically to /etc/modules? (yes/NO) y Successful! Monitoring programs won't work until the needed modules are loaded. You may want to run '/etc/init.d/module-init-tools start' to load them. Unloading i2c-dev... OK Παρατηρούμε ότι εντόπισε τα τα coretemp και w83627ehf σαν chip drivers, τα οποία θα πρέπει να τα «φορτώσουμε» στο σύστημά μας ώστε να πάρουμε το επιθυμητό αποτέλεσμα: >modprobe coretemp modprobe w83627ehf Οι chip drivers ενδεχομένως να είναι διαφορετικοί για την κάθε μητρική. Εφόσον απαντήσουμε "y" στην ερώτηση "Do you want to add these lines automatically to /etc/modules? (yes/NO)", οι chip drivers θα «φορτώνονται» αυτόματα κατά την εκκίνηση του συστήματος. Ειδάλλως, θα πρέπει να εκτελούμε συνέχεια το "modprobe xxx". Εφόσον όλα έχουν πάει καλά, δίνουμε την εντολή >sensors και θα (πρέπει να) δούμε κάτι σαν το ακόλουθο: >coretemp-isa-0000 Adapter: ISA adapter Core 0: +49.0°C (crit = +90.0°C) coretemp-isa-0001 Adapter: ISA adapter Core 1: +52.0°C (crit = +90.0°C) w83627dhg-isa-0290 Adapter: ISA adapter Vcore: +1.10 V (min = +0.00 V, max = +1.74 V) in1: +1.02 V (min = +1.03 V, max = +0.04 V) ALARM AVCC: +3.33 V (min = +3.20 V, max = +3.09 V) ALARM VCC: +3.33 V (min = +2.51 V, max = +2.42 V) ALARM in4: +1.66 V (min = +1.94 V, max = +0.72 V) ALARM in5: +1.66 V (min = +0.29 V, max = +0.26 V) ALARM in6: +1.91 V (min = +1.30 V, max = +0.04 V) ALARM 3VSB: +3.46 V (min = +0.32 V, max = +3.23 V) ALARM Vbat: +3.31 V (min = +0.99 V, max = +1.58 V) ALARM fan1: 0 RPM (min = 767 RPM, div = 16) ALARM fan2: 0 RPM (min = 42187 RPM, div = 16) ALARM fan3: 0 RPM (min = 795 RPM, div = 16) ALARM fan4: 0 RPM (min = 1140 RPM, div = 16) ALARM fan5: 0 RPM (min = 1318 RPM, div = 16) ALARM temp1: +47.0°C (high = -121.0°C, hyst = +36.0°C) ALARM sensor = thermistor temp2: +56.5°C (high = +80.0°C, hyst = +75.0°C) sensor = thermistor temp3: +48.0°C (high = +80.0°C, hyst = +75.0°C) sensor = thermistor cpu0_vid: +0.000 V Συνεχίζοντας και έχοντας ήδη συνδέσει την LCD οθόνη στον υπολογιστή, εκτελούμε την εντολή >apt-get install lcdproc η οποία θα εγκαταστήσει το πρόγραμμα LCDProc το οποίο στέλνει τα δεδομένα στην LCD οθόνη. Ενδεχομένως να εμφανίσει το ακόλουθο: >Reading package lists... Done Building dependency tree Reading state information... Done The following NEW packages will be installed: lcdproc 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. Need to get 378 kB of archives. After this operation, 1,204 kB of additional disk space will be used. Εφόσον εγκατασταθεί επιτυχώς το πρόγραμμα, διαλέγουμε τον αγαπημένο μας text editor και επεξεργαζόμαστε το αρχείο "/etc/LCDd.conf" >nano /etc/LCDd.conf Στο "WaitTime=5" δίνουμε τον χρόνο (σε δευτερόλεπτα) που θέλουμε να εμφανίζεται η κάθε πληροφορία στην LCD οθόνη μας. Βγάζουμε από σχόλιο (αφαιρώντας το # από την αρχή της γραμμής) το "ServerScreen=no". Αυτό θα εμποδίσει την αρχική «οθόνη» από το να εμφανίζεται σε κάθε κύκλο (η αρχική «οθόνη» θα παρουσιαστεί παρακάτω). Αλλάζουμε το "Driver=curses" σε "Driver=hd44780". Έπειτα προχωράμε (αρκετά) παρακάτω στο αρχείο ώσπου να συνατήσουμε το "## Hitachi HD44780 driver ##" και αλλάζουμε το "ConnectionType=4bit" με "ConnectionType=winamp". Αποθηκεύουμε το αρχείο και το κλείνουμε. Στην συνέχεια (επαν)εκκινούμε τον «δαίμονα» δίνοντας την εντολή >/etc/init.d/LCDd restart Εαν όλα έχουν πάει καλά θα πρέπει να εμφανιστεί η αρχική «οθόνη» (η οποία αναφέρθηκε και παραπάνω): Παρατηρούμε ότι δεν υπάρχει κάποιος client συνδεμένος στον «δαίμονα» ούτε κάποια «οθόνη» πληροφοριών. Για να προσθέσουμε έναν client και μερικές «οθόνες» πρέπει να επεξεργαστούμε το αρχείο "/etc/lcdproc.conf" >nano /etc/lcdproc.conf Όλες οι «οθόνες» ενεργοποιούνται θέτοντας "Active=true" και απενεργοποιούνται θέτοντας "Active=false". Εάν επιλέξετε να εμφανιστούν όλες (ή οι πιο πολλές), ίσως αντιμετωπίσετε πρόβλημα με το πρόγραμμα (δεν εμφανίζει τίποτα). Πιθανώς υπάρχει ένα όριο, το οποίο δυστυχώς δεν γνωρίζω. Εφόσον επιλέξουμε ποιες «οθόνες» θέλουμε να εμφανίζονται, αποθηκεύουμε το αρχείο και το κλείνουμε. Στην συνέχεια δίνουμε την εντολή >lcdproc Στην LCD οθόνη το "Clients" από 0 (μηδέν) θα γίνει 1 (ένα) και αντίστοιχα, το "Screens" από 0 (μηδέν) θα λάβει μια τιμή. Ενδεικτικές «οθόνες» φαίνονται στις παρακάτω φωτογραφίες: Δυστυχώς, όπως θα παρατηρήσατε στο αρχείο "/etc/lcdproc.conf" δεν υπάρχει καμία «οθόνη» που να δείχνει πληροφορίες σχετικά με θερμοκρασίες και ταχύτητες των fans. Ευτυχώς όμως, μπορούμε να φτιάξουμε ότι «οθόνη» θέλουμε. Δημιουργήστε ένα νέο αρχείο με όνομα "lcdsensors.pl" σε όποιο path σας βολεύει (το όνομα δεν έχει τόση σημασία, παρα μόνο η κατάληξη *.pl). >nano /usr/scripts/lcdsensors.pl και προσθέστε τις ακόλουθες γραμμές >#!/usr/bin/perl ## --> CHANGE THESE VARIABLES !!!!!! ## variables regarding lm_sensors, update these conform to your system my $chip='/sys/devices/platform/w83627ehf.656'; # directory where lm_sensors writes its data - Various temperatures my $core0='/sys/devices/platform/coretemp.0'; # directory where lm_sensors writes its data - Core 0 temperatures my $core1='/sys/devices/platform/coretemp.1'; # directory where lm_sensors writes its data - Core 1 temperatures my $cpusens='temp1_input'; my $syssens='temp2_input'; my $mobsens='temp3_input'; my $c00sens='temp1_input'; my $c01sens='temp1_input'; my $fan1sens='fan1_input'; my $fan2sens='fan2_input'; my $fan3sens='fan3_input'; my $cpumaxsens='temp1_max'; my $cpuminsens='temp1_min'; my $sysmaxsens='temp2_max'; my $sysminsens='temp2_min'; my $mobmaxsens='temp3_max'; my $mobminsens='temp3_min'; my $c00maxsens='temp1_crit'; my $c01maxsens='temp1_crit'; ## variables regarding LCDd, update if necessary, but normally these are correct my $server='localhost'; my $port='13666'; ######################################################################## ## ## ## don't change the following unless you know what you're doing ## ## ## ######################################################################## ## Check if the values above are correct if (!-d "$chip") { print "$chip not found! \n"; print "Did you change the variables? Edit this file please.\n"; exit 0; } if (!-e "$chip/$cpusens") { print "No cpu sensor found! \n"; print "Did you change the variables? Edit this file please.\n"; exit 0; } if (!-e "$chip/$syssens") { print "No system sensor found! \n"; print "Did you change the variables? Edit this file please.\n"; exit 0; } if (!-e "$chip/$mobsens") { print "No motherboard sensor found! \n"; print "Did you change the variables? Edit this file please.\n"; exit 0; } if (!-e "$chip/$c00sens") { print "No core 0 sensor found! \n"; print "Did you change the variables? Edit this file please.\n"; exit 0; } if (!-e "$chip/$c01sens") { print "No core 1 sensor found! \n"; print "Did you change the variables? Edit this file please.\n"; exit 0; } if (!-e "$chip/$fan1sens") { print "No cpu fan sensor found! \n"; print "Did you change the variables? Edit this file please.\n"; exit 0; } if (!-e "$chip/$fan2sens") { print "No case fan sensor found! \n"; print "Did you change the variables? Edit this file please.\n"; exit 0; } if (!-e "$chip/$fan3sens") { print "No system fan sensor found! \n"; print "Did you change the variables? Edit this file please.\n"; exit 0; } ## don't change these variables my $cpumin; # minimum cpu temperature as found in $cpusens my $cpumax; # maximum cpu temperature as found in $cpusens my $sysmin; # minimum system temperature as found in $syssens my $sysmax; # maximum system temperature as found in $syssens my $mobmin; # minimum motherboard temperature as found in $mobsens my $mobmax; # maximum motherboard temperature as found in $mobsens my $c00min; # minimum core 0 temperature - Is set to 0 further down my $c00max; # maximum core 0 temperature as found in $c00sens my $c01min; # minimum core 1 temperature - Is set to 0 further down my $c01max; # maximum core 1 temperature as found in $c01sens my $cput; # current cpu temperature my $syst; # current system temperature my $mobt; # current motherboard temperature my $c00t; # current core 0 temperature my $c01t; # current core 1 temperature my $rpm1; # current speed of cpu fan my $rpm2; # current speed of case fan my $rpm3; # current speed of system fan my $dim1; # dimension of cpu bar my $dim2; # dimension of system bar my $dim3; # dimension of motherboard bar my $dim4; # dimension of core 0 bar my $dim5; # dimension of core 1 bar my $temp; # temp variabele used for several purposes my @veld; # temp array my $lcdwid; # width of the lcd my $lcdhgt; # height of the lcd my $title; # title my $pos; # position of the temps to be placed my $maxdim; # maximum allowable dimension of the bars my $version='1.0'; use IO::Socket; use Fcntl; use Getopt::Std; use strict; use vars qw($opt_h $opt_v); ## evaluate the options &getopts("hv")||die "ERROR: Illegal option. -h for help\n"; &help if ($opt_h); if($opt_v) { print ("LCDsensors $version\n"); exit 0; } ## determine minimum and maximum temperatures $cpumax = getVal( "$chip/$cpumaxsens" ); $cpumin = getVal( "$chip/$cpuminsens" ); $sysmax = getVal( "$chip/$sysmaxsens" ); $sysmin = getVal( "$chip/$sysminsens" ); $mobmax = getVal( "$chip/$mobmaxsens" ); $mobmin = getVal( "$chip/$mobminsens" ); $c00max = getVal( "$core0/$c00maxsens" ); $c00min = 0; $c01max = getVal( "$core1/$c01maxsens" ); $c01min = 0; ## create screen title chomp($title = "System Temps"); ## Connect to the server my $remote = IO::Socket::INET->new( Proto => "tcp", PeerAddr => $server, PeerPort => $port, ) || die "Cannot connect to LCDproc at $server on port $port\n"; $remote->autoflush(1); # Make sure our messages get there right away sleep 1; # Give server plenty of time to notice us... print $remote "hello\n"; # tell the server we're here $temp = <$remote>; # read the server's answer @veld = split(/ /,$temp); # split up the contents $lcdwid=$veld[7]; # read the lcd's dimensions - width $lcdhgt=$veld[9]; # read the lcd's dimensions - height # Turn off blocking mode... fcntl($remote, F_SETFL, O_NONBLOCK); ## define where the widgets will be placed $pos = $lcdwid - 3; # temps will be placed next to right edge $maxdim = 5 * ( $lcdwid - 6 ); # max ($lcdwid - 6) characters for the bars print $remote "client_set name {Sensors}\n"; # tell the server our name # set up some screens print $remote "screen_add sensor\n"; # add sensors screen print $remote "widget_add sensor title title\n"; # add the title print $remote "widget_set sensor title {$title}\n"; # display the title print $remote "widget_add sensor cpu string\n"; # add the cpu string print $remote "widget_add sensor ctemp string\n"; # add the string holding the cpu temp print $remote "widget_add sensor sys string\n"; # add the system string print $remote "widget_add sensor stemp string\n"; # add the string holding the system temp print $remote "widget_add sensor mob string\n"; # add the motherboard string print $remote "widget_add sensor mtemp string\n"; # add the string holding the motherboard temp print $remote "widget_add sensor alarm1 string\n"; # add a string indicating cpu alarm state print $remote "widget_add sensor alarm2 string\n"; # add a string indicating system alarm state print $remote "widget_add sensor alarm3 string\n"; # add the string indicating motherboard alarm state print $remote "widget_add sensor bar1 hbar\n"; # add the bar for the cpu temp print $remote "widget_add sensor bar2 hbar\n"; # add the bar for the system temp print $remote "widget_add sensor bar3 hbar\n"; # add the bar for the motherboard temp print $remote "widget_set sensor cpu 1 2 {CPU:}\n"; # display CPU: print $remote "widget_set sensor sys 1 3 {SYS:}\n"; # display SYS: print $remote "widget_set sensor mob 1 4 {MOB:}\n"; # display MOB: print $remote "screen_add cores\n"; # add cores screen print $remote "widget_add cores title title\n"; # add the title print $remote "widget_set cores title {$title}\n"; # display the title print $remote "widget_add cores core0 string\n"; # add the core 0 string print $remote "widget_add cores c00temp string\n"; # add the string holding the core 0 temp print $remote "widget_add cores core1 string\n"; # add the core 1 string print $remote "widget_add cores c01temp string\n"; # add the string holding the core 1 temp print $remote "widget_add cores alarm4 string\n"; # add a string indicating core 0 alarm state print $remote "widget_add cores alarm5 string\n"; # add a string indicating core 1 alarm state print $remote "widget_add cores bar4 hbar\n"; # add the bar for the core 0 temp print $remote "widget_add cores bar5 hbar\n"; # add the bar for the core 1 temp print $remote "widget_set cores core0 1 2 {C 0:}\n"; # display C 0: print $remote "widget_set cores core1 1 3 {C 1:}\n"; # display C 1: print $remote "screen_add fans\n"; # add fans screen print $remote "widget_add fans title title\n"; # add the title print $remote "widget_set fans title {$title}\n"; # display the title print $remote "widget_add fans fan1 string\n"; # add the fan1 string print $remote "widget_add fans rpm1 string\n"; # add the string holding the fan1 speed print $remote "widget_add fans fan2 string\n"; # add the fan2 string print $remote "widget_add fans rpm2 string\n"; # add the string holding the fan2 speed print $remote "widget_add fans fan3 string\n"; # add the fan3 string print $remote "widget_add fans rpm3 string\n"; # add the string holding the fan3 speed print $remote "widget_set fans fan1 1 2 {Fan1: rpm}\n"; # display Fan1: rpm print $remote "widget_set fans fan2 1 3 {Fan2: rpm}\n"; # display Fan2: rpm print $remote "widget_set fans fan3 1 4 {Fan3: rpm}\n"; # display Fan3: rpm # do forever while(1) { chomp($cput = sprintf "%.1f", getVal ( "$chip/$cpusens" )); # read the cpu temp value chomp($syst = sprintf "%.1f", getVal ( "$chip/$syssens" )); # read the system temp value chomp($mobt = sprintf "%.1f", getVal ( "$chip/$mobsens" )); # read the motherboard temp value chomp($c00t = sprintf "%.1f", getVal ( "$core0/$c00sens" )); # read core 0 temp value chomp($c01t = sprintf "%.1f", getVal ( "$core1/$c01sens" )); # read the core 1 temp value chomp($rpm1 = sprintf "%.4d", getVal2 ( "$chip/$fan1sens" )); # read the fan1 speed value chomp($rpm2 = sprintf "%.4d", getVal2 ( "$chip/$fan2sens" )); # read the fan2 speed value chomp($rpm3 = sprintf "%.4d", getVal2 ( "$chip/$fan3sens" )); # read the fan3 speed value print $remote "widget_set sensor ctemp $pos 2 {$cput}\n"; # display the cpu temp print $remote "widget_set sensor stemp $pos 3 {$syst}\n"; # display the system temp print $remote "widget_set sensor mtemp $pos 4 {$mobt}\n"; # display the motherboard temp print $remote "widget_set cores c00temp $pos 2 {$c00t}\n"; # display the core 0 temp print $remote "widget_set cores c01temp $pos 3 {$c01t}\n"; # display the core 1 temp print $remote "widget_set fans rpm1 8 2 {$rpm1}\n"; # display the fan1 speed print $remote "widget_set fans rpm2 8 3 {$rpm2}\n"; # display the fan2 speed print $remote "widget_set fans rpm3 8 4 {$rpm3}\n"; # display the fan3 speed if ( $cput > $cpumax || $cput < $cpumin ) { # check if the temp is within range print $remote "widget_set sensor alarm1 6 2 {ALARM!}\n"; # if not print ALARM $dim1 = 0; # set the bar's dimension to 0 } else { print $remote "widget_set sensor alarm1 6 2 {}\n"; $dim1 = ($cput - $cpumin )* $maxdim / ($cpumax - $cpumin); # calculate the dimension of the bar } if ( $syst > $sysmax || $syst < $sysmin ) { # check if the temp is within range print $remote "widget_set sensor alarm2 6 3 {ALARM!}\n"; # if not print ALARM $dim2 = 0; # set the bar's dimension to 0 } else { print $remote "widget_set sensor alarm2 6 3 {}\n"; $dim2 = ($syst - $sysmin )* $maxdim / ($sysmax - $sysmin); # calculate the bar's dimension } if ( $mobt > $mobmax || $mobt < $mobmin ) { # check if the temp is within range print $remote "widget_set sensor alarm3 6 4 {ALARM!}\n"; # if not print ALARM $dim3 = 0; # set the bar's dimension to 0 } else { print $remote "widget_set sensor alarm3 6 4 {}\n"; $dim3 = ($mobt - $mobmin )* $maxdim / ($mobmax - $mobmin); # calculate the bar's dimension } if ( $c00t > $c00max || $c00t < $c00min ) { # check if the temp is within range print $remote "widget_set cores alarm4 6 4 {ALARM!}\n"; # if not print ALARM $dim4 = 0; # set the bar's dimension to 0 } else { print $remote "widget_set cores alarm4 6 4 {}\n"; $dim4 = ($c00t - $c00min )* $maxdim / ($c00max - $c00min); # calculate the bar's dimension } if ( $c01t > $c01max || $c01t < $c01min ) { # check if the temp is within range print $remote "widget_set cores alarm5 6 4 {ALARM!}\n"; # if not print ALARM $dim5 = 0; # set the bar's dimension to 0 } else { print $remote "widget_set cores alarm5 6 4 {}\n"; $dim5 = ($c01t - $c01min )* $maxdim / ($c01max - $c01min); # calculate the bar's dimension } print $remote "widget_set sensor bar1 6 2 $dim1\n"; # display cpu bar print $remote "widget_set sensor bar2 6 3 $dim2\n"; # display system bar print $remote "widget_set sensor bar3 6 4 $dim3\n"; # display motherboard bar print $remote "widget_set cores bar4 6 2 $dim4\n"; # display core 0 bar print $remote "widget_set cores bar5 6 3 $dim5\n"; # display core 1 bar sleep 5; # wait some time } ## help message sub help { print <<EOM; LCD-sensors $version Script by Nick Van Helleputte Modified by Macabre Sunsets Displays data provided by lm-sensors on an LCD using LCDd provided by lcdproc. Usage: perl lcdsensors.pl [OPTIONS] Options: -h Displays this message -v Displays version Important: !! Be certain to edit the file and change the first variables !! concerning LM-sensors to meet your specific system. This script needs a working version of lm-sensors. (see [url]http://www2.lm-sensors.nu/~lm78/[/url] for more details) This script needs a working version of LCDd, the server daemon coming with the package lcdproc. (see [url]http://lcdproc.omnipotent.net/[/url] for more details) This script is optimized for 20x4 displays. EOM exit 1; } ## subroutine to read a number out of a file sub getVal { my ($filename, $index) = @_; # first argument is where to read from, second is witch number to read open (FILE, $filename); # open the file my $temp = <FILE>; # store the contents close (FILE); return $temp / 1000; # divide by 1000 to get actual temp } sub getVal2 { my ($filename, $index) = @_; # first argument is where to read from, second is witch number to read open (FILE, $filename); # open the file my $rpm = <FILE>; # store the contents close (FILE); return $rpm; } exit 1; # normally, you will never come this far Οι γραμμές >my $chip='/sys/devices/platform/w83627ehf.656'; # directory where lm_sensors writes its data - Various temperatures my $core0='/sys/devices/platform/coretemp.0'; # directory where lm_sensors writes its data - Core 0 temperatures my $core1='/sys/devices/platform/coretemp.1'; # directory where lm_sensors writes its data - Core 1 temperatures θα πρέπει να αλλαχτούν ανάλογα με την μητρική σας (θυμηθείτε τους chip drivers που «φορτώσαμε» για το lm-sensors). Αποθηκεύουμε το αρχείο και το κλείνουμε. Στην συνέχεια το εκτελούμε δίνοντας > perl lcdsensors.pl Προϋπόθεση είναι να υπάρχει η perl εγκατεστημένη στον υπολογιστή. Εαν όλα πάνε καλά, θα πρέπει να δείτε εκτός από τις «οθόνες» του "lcdproc.conf" και τις 3 (τρεις) ακόλουθες: Εμφανίζονται 2 πυρήνες επειδή τόσους έχει ο επεξεργαστής μου. Για περισότερους πυρήνες θα πρέπει να παραμετροποιήσετε το παραπάνω αρχείο και να το φέρετε στα μέτρα σας (γίνεται πολύ απλά με copy/paste). Την στιγμή που έβγαλα την φωτογραφία δεν υπήρχαν συνδεμένοι ανεμιστήρες στην μητρική, για αυτό και όλοι δείχνουν 0 στροφές. Ομοίως με προηγουμένος, εάν θέλετε παραπάνω από 3 (τρεις) ανεμιστήρες θα πρέπει να επεξεργαστείτε το αντίστοιχο αρχείο. Εφόσον είστε ευχαριστημένοι με το αποτέλεσμα, πατήστε Ctrl + C ώστε να τερματιστεί το εκτελέσιμο "lcdsensors.pl". Αυτό θα αφαιρέσει τις επιπλεον «οθόνες» για τώρα. Για να κάνουμε τους clients να εκκινούν αυτόματα με τον «δαίμονα» ανοίγουμε το αρχείο "/etc/init.d/LCDd". >nano /etc/init.d/LCDd και προσθέτουμε τα ακόλουθα στο block "start" >lcdproc perl /usr/scripts/lcdsensors.pl & Η τελική μορφή θα μοιάζει με το ακόλουθο: >start) echo -n "Starting $DESC: " start-stop-daemon --start --quiet --background \ --exec $DAEMON -- $DAEMON_OPTS lcdproc perl /usr/scripts/lcdsensors.pl & echo "$NAME." ;; Αντικαταστήστε το "/usr/scripts/lcdsensors.pl" με το δικό σας path και όνομα αρχείου. Τελευταίο βήμα η επανεκκίνηση του «δαίμονα» >/etc/init.d/LCDd restart Εάν όλα έχουν πάει καλά, θα πρέπει να εκκινήσει ο «δαίμονας» και αυτόματα και οι «οθόνες».
macabre_sunsets Δημοσ. 21 Οκτωβρίου 2010 Δημοσ. 21 Οκτωβρίου 2010 Πρόταση: Προσθήκη LCD οθόνης χαρακτήρων για προβολή live πληροφοριών + Παρακολούθηση θερμοκρασιών & fans με lm-sensors Αν και το παρακάτω δεν αφορά ακριβώς «τo στήσιμο gnu/linux συστήματος με customized γραφικό περιβάλλον και μικρό memory footprint», πιστεύω να είναι κάπως on topic και (ίσως) να φανεί χρήσιμο σε κάποιους. Σκοπός: Κάποιοι πιστεύω χρησιμοποιούν widgets ώστε να παρακολουθούν διάφορες πληροφορίες για το σύστημά τους (Χρήση CPU/RAM, Χώρος στους δίσκους, Θερμοκρασίες, Ταχύτητα ανεμιστήρων, και άλλα...). Αυτές οι πληροφορίες δεν φαίνονται όμως όταν τρέχει κάποια full-screen εφαρμογή ή κάποιο παιχνίδι. Κάποιοι άλλοι μπορεί να χρησιμοποιούν τον υπολογιστή ως «κατεβαστήρι»/server και να μην έχουν καν οθόνη. Ο σκοπός αυτού του post είναι η εγκατάσταση, παραμετροοπίηση και χρήση μιας LCD οθόνης χαρακτήρων (20 χαρακτήρες x 4 γραμμές, controller HD44780) η οποία μπορεί να βρεθεί σε προσιτές τιμές στο Internet (πχ/ ebay). Εκτός του παραπάνω, θα γίνει εγκατάσταση και παραμετροποίηση του προγράμματος lm-sensors για παρακολούθηση θερμοκρασιών και στροφών των ανεμιστήρων του συστήματος. Δυστυχώς, η οθόνη που έχω στην διάθεσή μου απαιτεί παράλληλη θύρα (που πιθανώς αρκετοί να μην έχουν), αλλά δίνοντας λίγα παραπάνω χρήματα μπορείτε να αγοράσετε μια πλακέτα που επιτρέπει στην οθόνη να συνδεθεί μέσω USB (οι αντάπτορες USB -> Parallel δεν λειτουργούν, σύμφωνα με όσα έχω διαβάσει σε διάφορες σελίδες). Το αποτέλεσμα: Στο ακόλουθο διάγραμμα παρουσιάζεται η συνδεσμολογία της LCD οθόνης με την παράλληλη θύρα. Τα ακόλουθα δοκιμάστηκαν σε Debian Squeeze/Sid (testing) με kernel 2.6.32-5-amd64. Η οθόνη έχει δοκιμαστεί και με παλαιότερο kernel (32bit, δυστυχώς δεν θυμάμαι ποιον) και έπαιζε μια χαρά. Αρχίζοντας λίγο ανάποδα, θα δούμε πρώτα την εγκατάσταση και παραμετροποίηση του lm-sensors. Ανοίγουμε την κονσόλα (είτε από το γραφικό περιβάλλον είτε μέσω ssh) και κάνουμε login σαν root (ή χρησιμοποιούμε sudo πριν από κάθε εντολή). >apt-get install lm-sensors Ενδεχομένως να εμφανίσει κάτι σαν το ακόλουθο, στο οποίο θα πρέπει να απαντήσουμε καταφατικά (y). >Reading package lists... Done Building dependency tree Reading state information... Done The following extra packages will be installed: fancontrol libdb4.7 libsensors4 perl perl-modules Suggested packages: sensord read-edid i2c-tools perl-doc libterm-readline-gnu-perl libterm-readline-perl-perl make The following NEW packages will be installed: fancontrol libdb4.7 libsensors4 lm-sensors perl perl-modules 0 upgraded, 6 newly installed, 0 to remove and 0 not upgraded. Need to get 8,818 kB of archives. After this operation, 37.5 MB of additional disk space will be used. Do you want to continue [Y/n]? Εφόσον εγκατασταθούν επιτυχώς όλα τα πακέτα εκτελούμε την εντολή >sensors-detect Θα ερωτηθούμε κάποια πράματα, στα οποία θα πρέπει να απαντήσουμε καταφατικά (y). Ένα παράδειγμα με όλες τις ερωτήσεις ακολουθεί (όπου υπάρχει ο χαρακτήρας "y" είναι η απάντησή μας): ># sensors-detect revision 5818 (2010-01-18 17:22:07 +0100) # System: To Be Filled By O.E.M. To Be Filled By O.E.M. # Board: ASRock A330GC This program will help you determine which kernel modules you need to load to use lm_sensors most effectively. It is generally safe and recommended to accept the default answers to all questions, unless you know what you're doing. Some south bridges, CPUs or memory controllers contain embedded sensors. Do you want to scan for them? This is totally safe. (YES/no): y Silicon Integrated Systems SIS5595... No VIA VT82C686 Integrated Sensors... No VIA VT8231 Integrated Sensors... No AMD K8 thermal sensors... No AMD Family 10h thermal sensors... No AMD Family 11h thermal sensors... No Intel Core family thermal sensor... No Intel Atom thermal sensor... Success! (driver `coretemp') Intel AMB FB-DIMM thermal sensor... No VIA C7 thermal sensor... No VIA Nano thermal sensor... No Some Super I/O chips contain embedded sensors. We have to write to standard I/O ports to probe them. This is usually safe. Do you want to scan for Super I/O sensors? (YES/no): y Probing for Super-I/O at 0x2e/0x2f Trying family `National Semiconductor'... No Trying family `SMSC'... No Trying family `VIA/Winbond/Nuvoton/Fintek'... Yes Found `Winbond W83627DHG-P Super IO Sensors' Success! (address 0x290, driver `w83627ehf') Probing for Super-I/O at 0x4e/0x4f Trying family `National Semiconductor'... No Trying family `SMSC'... No Trying family `VIA/Winbond/Nuvoton/Fintek'... No Trying family `ITE'... No Some systems (mainly servers) implement IPMI, a set of common interfaces through which system health data may be retrieved, amongst other things. We first try to get the information from SMBIOS. If we don't find it there, we have to read from arbitrary I/O ports to probe for such interfaces. This is normally safe. Do you want to scan for IPMI interfaces? (YES/no): y Probing for `IPMI BMC KCS' at 0xca0... No Probing for `IPMI BMC SMIC' at 0xca8... No Some hardware monitoring chips are accessible through the ISA I/O ports. We have to write to arbitrary I/O ports to probe them. This is usually safe though. Yes, you do have ISA I/O ports even if you do not have any ISA slots! Do you want to scan the ISA I/O ports? (yes/NO): y Probing for `National Semiconductor LM78' at 0x290... No Probing for `National Semiconductor LM79' at 0x290... No Probing for `Winbond W83781D' at 0x290... No Probing for `Winbond W83782D' at 0x290... No Lastly, we can probe the I2C/SMBus adapters for connected hardware monitoring devices. This is the most risky part, and while it works reasonably well on most systems, it has been reported to cause trouble on some systems. Do you want to probe the I2C/SMBus adapters now? (YES/no): y Using driver `i2c-i801' for device 0000:00:1f.3: Intel 82801G ICH7 Module i2c-dev loaded successfully. Next adapter: SMBus I801 adapter at 0400 (i2c-0) Do you want to scan it? (yes/NO/selectively): y Client found at address 0x50 Probing for `Analog Devices ADM1033'... No Probing for `Analog Devices ADM1034'... No Probing for `SPD EEPROM'... Yes (confidence 8, not a hardware monitoring chip) Probing for `EDID EEPROM'... No Client found at address 0x52 Probing for `Analog Devices ADM1033'... No Probing for `Analog Devices ADM1034'... No Probing for `SPD EEPROM'... Yes (confidence 8, not a hardware monitoring chip) Next adapter: intel drm CRTDDC_A (i2c-1) Do you want to scan it? (YES/no/selectively): y Client found at address 0x49 Probing for `National Semiconductor LM75'... No Probing for `Dallas Semiconductor DS75'... No Probing for `National Semiconductor LM77'... No Probing for `Dallas Semiconductor DS1621/DS1631'... No Probing for `National Semiconductor LM73'... No Probing for `National Semiconductor LM92'... No Probing for `National Semiconductor LM76'... No Probing for `Maxim MAX6633/MAX6634/MAX6635'... No Client found at address 0x50 Probing for `Analog Devices ADM1033'... No Probing for `Analog Devices ADM1034'... No Probing for `SPD EEPROM'... No Probing for `EDID EEPROM'... Yes (confidence 8, not a hardware monitoring chip) Client found at address 0x51 Probing for `Analog Devices ADM1033'... No Probing for `Analog Devices ADM1034'... No Probing for `SPD EEPROM'... No Client found at address 0x52 Probing for `Analog Devices ADM1033'... No Probing for `Analog Devices ADM1034'... No Probing for `SPD EEPROM'... No Client found at address 0x53 Probing for `Analog Devices ADM1033'... No Probing for `Analog Devices ADM1034'... No Probing for `SPD EEPROM'... No Now follows a summary of the probes I have just done. Just press ENTER to continue: Driver `w83627ehf': * ISA bus, address 0x290 Chip `Winbond W83627DHG-P Super IO Sensors' (confidence: 9) Driver `coretemp': * Chip `Intel Atom thermal sensor' (confidence: 9) To load everything that is needed, add this to /etc/modules: #----cut here---- # Chip drivers coretemp w83627ehf #----cut here---- If you have some drivers built into your kernel, the list above will contain too many modules. Skip the appropriate ones! Do you want to add these lines automatically to /etc/modules? (yes/NO) y Successful! Monitoring programs won't work until the needed modules are loaded. You may want to run '/etc/init.d/module-init-tools start' to load them. Unloading i2c-dev... OK Παρατηρούμε ότι εντόπισε τα τα coretemp και w83627ehf σαν chip drivers, τα οποία θα πρέπει να τα «φορτώσουμε» στο σύστημά μας ώστε να πάρουμε το επιθυμητό αποτέλεσμα: >modprobe coretemp modprobe w83627ehf Οι chip drivers ενδεχομένως να είναι διαφορετικοί για την κάθε μητρική. Εφόσον απαντήσουμε "y" στην ερώτηση "Do you want to add these lines automatically to /etc/modules? (yes/NO)", οι chip drivers θα «φορτώνονται» αυτόματα κατά την εκκίνηση του συστήματος. Ειδάλλως, θα πρέπει να εκτελούμε συνέχεια το "modprobe xxx". Εφόσον όλα έχουν πάει καλά, δίνουμε την εντολή >sensors και θα (πρέπει να) δούμε κάτι σαν το ακόλουθο: >coretemp-isa-0000 Adapter: ISA adapter Core 0: +49.0°C (crit = +90.0°C) coretemp-isa-0001 Adapter: ISA adapter Core 1: +52.0°C (crit = +90.0°C) w83627dhg-isa-0290 Adapter: ISA adapter Vcore: +1.10 V (min = +0.00 V, max = +1.74 V) in1: +1.02 V (min = +1.03 V, max = +0.04 V) ALARM AVCC: +3.33 V (min = +3.20 V, max = +3.09 V) ALARM VCC: +3.33 V (min = +2.51 V, max = +2.42 V) ALARM in4: +1.66 V (min = +1.94 V, max = +0.72 V) ALARM in5: +1.66 V (min = +0.29 V, max = +0.26 V) ALARM in6: +1.91 V (min = +1.30 V, max = +0.04 V) ALARM 3VSB: +3.46 V (min = +0.32 V, max = +3.23 V) ALARM Vbat: +3.31 V (min = +0.99 V, max = +1.58 V) ALARM fan1: 0 RPM (min = 767 RPM, div = 16) ALARM fan2: 0 RPM (min = 42187 RPM, div = 16) ALARM fan3: 0 RPM (min = 795 RPM, div = 16) ALARM fan4: 0 RPM (min = 1140 RPM, div = 16) ALARM fan5: 0 RPM (min = 1318 RPM, div = 16) ALARM temp1: +47.0°C (high = -121.0°C, hyst = +36.0°C) ALARM sensor = thermistor temp2: +56.5°C (high = +80.0°C, hyst = +75.0°C) sensor = thermistor temp3: +48.0°C (high = +80.0°C, hyst = +75.0°C) sensor = thermistor cpu0_vid: +0.000 V Συνεχίζοντας και έχοντας ήδη συνδέσει την LCD οθόνη στον υπολογιστή, εκτελούμε την εντολή >apt-get install lcdproc η οποία θα εγκαταστήσει το πρόγραμμα LCDProc το οποίο στέλνει τα δεδομένα στην LCD οθόνη. Ενδεχομένως να εμφανίσει το ακόλουθο: >Reading package lists... Done Building dependency tree Reading state information... Done The following NEW packages will be installed: lcdproc 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. Need to get 378 kB of archives. After this operation, 1,204 kB of additional disk space will be used. Εφόσον εγκατασταθεί επιτυχώς το πρόγραμμα, διαλέγουμε τον αγαπημένο μας text editor και επεξεργαζόμαστε το αρχείο "/etc/LCDd.conf" >nano /etc/LCDd.conf Στο "WaitTime=5" δίνουμε τον χρόνο (σε δευτερόλεπτα) που θέλουμε να εμφανίζεται η κάθε πληροφορία στην LCD οθόνη μας. Βγάζουμε από σχόλιο (αφαιρώντας το # από την αρχή της γραμμής) το "ServerScreen=no". Αυτό θα εμποδίσει την αρχική «οθόνη» από το να εμφανίζεται σε κάθε κύκλο (η αρχική «οθόνη» θα παρουσιαστεί παρακάτω). Αλλάζουμε το "Driver=curses" σε "Driver=hd44780". Έπειτα προχωράμε (αρκετά) παρακάτω στο αρχείο ώσπου να συνατήσουμε το "## Hitachi HD44780 driver ##" και αλλάζουμε το "ConnectionType=4bit" με "ConnectionType=winamp". Αποθηκεύουμε το αρχείο και το κλείνουμε. Στην συνέχεια (επαν)εκκινούμε τον «δαίμονα» δίνοντας την εντολή >/etc/init.d/LCDd restart Εαν όλα έχουν πάει καλά θα πρέπει να εμφανιστεί η αρχική «οθόνη» (η οποία αναφέρθηκε και παραπάνω): Παρατηρούμε ότι δεν υπάρχει κάποιος client συνδεμένος στον «δαίμονα» ούτε κάποια «οθόνη» πληροφοριών. Για να προσθέσουμε έναν client και μερικές «οθόνες» πρέπει να επεξεργαστούμε το αρχείο "/etc/lcdproc.conf" >nano /etc/lcdproc.conf Όλες οι «οθόνες» ενεργοποιούνται θέτοντας "Active=true" και απενεργοποιούνται θέτοντας "Active=false". Εάν επιλέξετε να εμφανιστούν όλες (ή οι πιο πολλές), ίσως αντιμετωπίσετε πρόβλημα με το πρόγραμμα (δεν εμφανίζει τίποτα). Πιθανώς υπάρχει ένα όριο, το οποίο δυστυχώς δεν γνωρίζω. Εφόσον επιλέξουμε ποιες «οθόνες» θέλουμε να εμφανίζονται, αποθηκεύουμε το αρχείο και το κλείνουμε. Στην συνέχεια δίνουμε την εντολή >lcdproc Στην LCD οθόνη το "Clients" από 0 (μηδέν) θα γίνει 1 (ένα) και αντίστοιχα, το "Screens" από 0 (μηδέν) θα λάβει μια τιμή. Ενδεικτικές «οθόνες» φαίνονται στις παρακάτω φωτογραφίες: Δυστυχώς, όπως θα παρατηρήσατε στο αρχείο "/etc/lcdproc.conf" δεν υπάρχει καμία «οθόνη» που να δείχνει πληροφορίες σχετικά με θερμοκρασίες και ταχύτητες των fans. Ευτυχώς όμως, μπορούμε να φτιάξουμε ότι «οθόνη» θέλουμε. Δημιουργήστε ένα νέο αρχείο με όνομα "lcdsensors.pl" σε όποιο path σας βολεύει (το όνομα δεν έχει τόση σημασία, παρα μόνο η κατάληξη *.pl). >nano /usr/scripts/lcdsensors.pl και προσθέστε τις ακόλουθες γραμμές >#!/usr/bin/perl ## --> CHANGE THESE VARIABLES !!!!!! ## variables regarding lm_sensors, update these conform to your system my $chip='/sys/devices/platform/w83627ehf.656'; # directory where lm_sensors writes its data - Various temperatures my $core0='/sys/devices/platform/coretemp.0'; # directory where lm_sensors writes its data - Core 0 temperatures my $core1='/sys/devices/platform/coretemp.1'; # directory where lm_sensors writes its data - Core 1 temperatures my $cpusens='temp1_input'; my $syssens='temp2_input'; my $mobsens='temp3_input'; my $c00sens='temp1_input'; my $c01sens='temp1_input'; my $fan1sens='fan1_input'; my $fan2sens='fan2_input'; my $fan3sens='fan3_input'; my $cpumaxsens='temp1_max'; my $cpuminsens='temp1_min'; my $sysmaxsens='temp2_max'; my $sysminsens='temp2_min'; my $mobmaxsens='temp3_max'; my $mobminsens='temp3_min'; my $c00maxsens='temp1_crit'; my $c01maxsens='temp1_crit'; ## variables regarding LCDd, update if necessary, but normally these are correct my $server='localhost'; my $port='13666'; ######################################################################## ## ## ## don't change the following unless you know what you're doing ## ## ## ######################################################################## ## Check if the values above are correct if (!-d "$chip") { print "$chip not found! \n"; print "Did you change the variables? Edit this file please.\n"; exit 0; } if (!-e "$chip/$cpusens") { print "No cpu sensor found! \n"; print "Did you change the variables? Edit this file please.\n"; exit 0; } if (!-e "$chip/$syssens") { print "No system sensor found! \n"; print "Did you change the variables? Edit this file please.\n"; exit 0; } if (!-e "$chip/$mobsens") { print "No motherboard sensor found! \n"; print "Did you change the variables? Edit this file please.\n"; exit 0; } if (!-e "$chip/$c00sens") { print "No core 0 sensor found! \n"; print "Did you change the variables? Edit this file please.\n"; exit 0; } if (!-e "$chip/$c01sens") { print "No core 1 sensor found! \n"; print "Did you change the variables? Edit this file please.\n"; exit 0; } if (!-e "$chip/$fan1sens") { print "No cpu fan sensor found! \n"; print "Did you change the variables? Edit this file please.\n"; exit 0; } if (!-e "$chip/$fan2sens") { print "No case fan sensor found! \n"; print "Did you change the variables? Edit this file please.\n"; exit 0; } if (!-e "$chip/$fan3sens") { print "No system fan sensor found! \n"; print "Did you change the variables? Edit this file please.\n"; exit 0; } ## don't change these variables my $cpumin; # minimum cpu temperature as found in $cpusens my $cpumax; # maximum cpu temperature as found in $cpusens my $sysmin; # minimum system temperature as found in $syssens my $sysmax; # maximum system temperature as found in $syssens my $mobmin; # minimum motherboard temperature as found in $mobsens my $mobmax; # maximum motherboard temperature as found in $mobsens my $c00min; # minimum core 0 temperature - Is set to 0 further down my $c00max; # maximum core 0 temperature as found in $c00sens my $c01min; # minimum core 1 temperature - Is set to 0 further down my $c01max; # maximum core 1 temperature as found in $c01sens my $cput; # current cpu temperature my $syst; # current system temperature my $mobt; # current motherboard temperature my $c00t; # current core 0 temperature my $c01t; # current core 1 temperature my $rpm1; # current speed of cpu fan my $rpm2; # current speed of case fan my $rpm3; # current speed of system fan my $dim1; # dimension of cpu bar my $dim2; # dimension of system bar my $dim3; # dimension of motherboard bar my $dim4; # dimension of core 0 bar my $dim5; # dimension of core 1 bar my $temp; # temp variabele used for several purposes my @veld; # temp array my $lcdwid; # width of the lcd my $lcdhgt; # height of the lcd my $title; # title my $pos; # position of the temps to be placed my $maxdim; # maximum allowable dimension of the bars my $version='1.0'; use IO::Socket; use Fcntl; use Getopt::Std; use strict; use vars qw($opt_h $opt_v); ## evaluate the options &getopts("hv")||die "ERROR: Illegal option. -h for help\n"; &help if ($opt_h); if($opt_v) { print ("LCDsensors $version\n"); exit 0; } ## determine minimum and maximum temperatures $cpumax = getVal( "$chip/$cpumaxsens" ); $cpumin = getVal( "$chip/$cpuminsens" ); $sysmax = getVal( "$chip/$sysmaxsens" ); $sysmin = getVal( "$chip/$sysminsens" ); $mobmax = getVal( "$chip/$mobmaxsens" ); $mobmin = getVal( "$chip/$mobminsens" ); $c00max = getVal( "$core0/$c00maxsens" ); $c00min = 0; $c01max = getVal( "$core1/$c01maxsens" ); $c01min = 0; ## create screen title chomp($title = "System Temps"); ## Connect to the server my $remote = IO::Socket::INET->new( Proto => "tcp", PeerAddr => $server, PeerPort => $port, ) || die "Cannot connect to LCDproc at $server on port $port\n"; $remote->autoflush(1); # Make sure our messages get there right away sleep 1; # Give server plenty of time to notice us... print $remote "hello\n"; # tell the server we're here $temp = <$remote>; # read the server's answer @veld = split(/ /,$temp); # split up the contents $lcdwid=$veld[7]; # read the lcd's dimensions - width $lcdhgt=$veld[9]; # read the lcd's dimensions - height # Turn off blocking mode... fcntl($remote, F_SETFL, O_NONBLOCK); ## define where the widgets will be placed $pos = $lcdwid - 3; # temps will be placed next to right edge $maxdim = 5 * ( $lcdwid - 6 ); # max ($lcdwid - 6) characters for the bars print $remote "client_set name {Sensors}\n"; # tell the server our name # set up some screens print $remote "screen_add sensor\n"; # add sensors screen print $remote "widget_add sensor title title\n"; # add the title print $remote "widget_set sensor title {$title}\n"; # display the title print $remote "widget_add sensor cpu string\n"; # add the cpu string print $remote "widget_add sensor ctemp string\n"; # add the string holding the cpu temp print $remote "widget_add sensor sys string\n"; # add the system string print $remote "widget_add sensor stemp string\n"; # add the string holding the system temp print $remote "widget_add sensor mob string\n"; # add the motherboard string print $remote "widget_add sensor mtemp string\n"; # add the string holding the motherboard temp print $remote "widget_add sensor alarm1 string\n"; # add a string indicating cpu alarm state print $remote "widget_add sensor alarm2 string\n"; # add a string indicating system alarm state print $remote "widget_add sensor alarm3 string\n"; # add the string indicating motherboard alarm state print $remote "widget_add sensor bar1 hbar\n"; # add the bar for the cpu temp print $remote "widget_add sensor bar2 hbar\n"; # add the bar for the system temp print $remote "widget_add sensor bar3 hbar\n"; # add the bar for the motherboard temp print $remote "widget_set sensor cpu 1 2 {CPU:}\n"; # display CPU: print $remote "widget_set sensor sys 1 3 {SYS:}\n"; # display SYS: print $remote "widget_set sensor mob 1 4 {MOB:}\n"; # display MOB: print $remote "screen_add cores\n"; # add cores screen print $remote "widget_add cores title title\n"; # add the title print $remote "widget_set cores title {$title}\n"; # display the title print $remote "widget_add cores core0 string\n"; # add the core 0 string print $remote "widget_add cores c00temp string\n"; # add the string holding the core 0 temp print $remote "widget_add cores core1 string\n"; # add the core 1 string print $remote "widget_add cores c01temp string\n"; # add the string holding the core 1 temp print $remote "widget_add cores alarm4 string\n"; # add a string indicating core 0 alarm state print $remote "widget_add cores alarm5 string\n"; # add a string indicating core 1 alarm state print $remote "widget_add cores bar4 hbar\n"; # add the bar for the core 0 temp print $remote "widget_add cores bar5 hbar\n"; # add the bar for the core 1 temp print $remote "widget_set cores core0 1 2 {C 0:}\n"; # display C 0: print $remote "widget_set cores core1 1 3 {C 1:}\n"; # display C 1: print $remote "screen_add fans\n"; # add fans screen print $remote "widget_add fans title title\n"; # add the title print $remote "widget_set fans title {$title}\n"; # display the title print $remote "widget_add fans fan1 string\n"; # add the fan1 string print $remote "widget_add fans rpm1 string\n"; # add the string holding the fan1 speed print $remote "widget_add fans fan2 string\n"; # add the fan2 string print $remote "widget_add fans rpm2 string\n"; # add the string holding the fan2 speed print $remote "widget_add fans fan3 string\n"; # add the fan3 string print $remote "widget_add fans rpm3 string\n"; # add the string holding the fan3 speed print $remote "widget_set fans fan1 1 2 {Fan1: rpm}\n"; # display Fan1: rpm print $remote "widget_set fans fan2 1 3 {Fan2: rpm}\n"; # display Fan2: rpm print $remote "widget_set fans fan3 1 4 {Fan3: rpm}\n"; # display Fan3: rpm # do forever while(1) { chomp($cput = sprintf "%.1f", getVal ( "$chip/$cpusens" )); # read the cpu temp value chomp($syst = sprintf "%.1f", getVal ( "$chip/$syssens" )); # read the system temp value chomp($mobt = sprintf "%.1f", getVal ( "$chip/$mobsens" )); # read the motherboard temp value chomp($c00t = sprintf "%.1f", getVal ( "$core0/$c00sens" )); # read core 0 temp value chomp($c01t = sprintf "%.1f", getVal ( "$core1/$c01sens" )); # read the core 1 temp value chomp($rpm1 = sprintf "%.4d", getVal2 ( "$chip/$fan1sens" )); # read the fan1 speed value chomp($rpm2 = sprintf "%.4d", getVal2 ( "$chip/$fan2sens" )); # read the fan2 speed value chomp($rpm3 = sprintf "%.4d", getVal2 ( "$chip/$fan3sens" )); # read the fan3 speed value print $remote "widget_set sensor ctemp $pos 2 {$cput}\n"; # display the cpu temp print $remote "widget_set sensor stemp $pos 3 {$syst}\n"; # display the system temp print $remote "widget_set sensor mtemp $pos 4 {$mobt}\n"; # display the motherboard temp print $remote "widget_set cores c00temp $pos 2 {$c00t}\n"; # display the core 0 temp print $remote "widget_set cores c01temp $pos 3 {$c01t}\n"; # display the core 1 temp print $remote "widget_set fans rpm1 8 2 {$rpm1}\n"; # display the fan1 speed print $remote "widget_set fans rpm2 8 3 {$rpm2}\n"; # display the fan2 speed print $remote "widget_set fans rpm3 8 4 {$rpm3}\n"; # display the fan3 speed if ( $cput > $cpumax || $cput < $cpumin ) { # check if the temp is within range print $remote "widget_set sensor alarm1 6 2 {ALARM!}\n"; # if not print ALARM $dim1 = 0; # set the bar's dimension to 0 } else { print $remote "widget_set sensor alarm1 6 2 {}\n"; $dim1 = ($cput - $cpumin )* $maxdim / ($cpumax - $cpumin); # calculate the dimension of the bar } if ( $syst > $sysmax || $syst < $sysmin ) { # check if the temp is within range print $remote "widget_set sensor alarm2 6 3 {ALARM!}\n"; # if not print ALARM $dim2 = 0; # set the bar's dimension to 0 } else { print $remote "widget_set sensor alarm2 6 3 {}\n"; $dim2 = ($syst - $sysmin )* $maxdim / ($sysmax - $sysmin); # calculate the bar's dimension } if ( $mobt > $mobmax || $mobt < $mobmin ) { # check if the temp is within range print $remote "widget_set sensor alarm3 6 4 {ALARM!}\n"; # if not print ALARM $dim3 = 0; # set the bar's dimension to 0 } else { print $remote "widget_set sensor alarm3 6 4 {}\n"; $dim3 = ($mobt - $mobmin )* $maxdim / ($mobmax - $mobmin); # calculate the bar's dimension } if ( $c00t > $c00max || $c00t < $c00min ) { # check if the temp is within range print $remote "widget_set cores alarm4 6 4 {ALARM!}\n"; # if not print ALARM $dim4 = 0; # set the bar's dimension to 0 } else { print $remote "widget_set cores alarm4 6 4 {}\n"; $dim4 = ($c00t - $c00min )* $maxdim / ($c00max - $c00min); # calculate the bar's dimension } if ( $c01t > $c01max || $c01t < $c01min ) { # check if the temp is within range print $remote "widget_set cores alarm5 6 4 {ALARM!}\n"; # if not print ALARM $dim5 = 0; # set the bar's dimension to 0 } else { print $remote "widget_set cores alarm5 6 4 {}\n"; $dim5 = ($c01t - $c01min )* $maxdim / ($c01max - $c01min); # calculate the bar's dimension } print $remote "widget_set sensor bar1 6 2 $dim1\n"; # display cpu bar print $remote "widget_set sensor bar2 6 3 $dim2\n"; # display system bar print $remote "widget_set sensor bar3 6 4 $dim3\n"; # display motherboard bar print $remote "widget_set cores bar4 6 2 $dim4\n"; # display core 0 bar print $remote "widget_set cores bar5 6 3 $dim5\n"; # display core 1 bar sleep 5; # wait some time } ## help message sub help { print <<EOM; LCD-sensors $version Script by Nick Van Helleputte Modified by Macabre Sunsets Displays data provided by lm-sensors on an LCD using LCDd provided by lcdproc. Usage: perl lcdsensors.pl [OPTIONS] Options: -h Displays this message -v Displays version Important: !! Be certain to edit the file and change the first variables !! concerning LM-sensors to meet your specific system. This script needs a working version of lm-sensors. (see [url]http://www2.lm-sensors.nu/~lm78/[/url] for more details) This script needs a working version of LCDd, the server daemon coming with the package lcdproc. (see [url]http://lcdproc.omnipotent.net/[/url] for more details) This script is optimized for 20x4 displays. EOM exit 1; } ## subroutine to read a number out of a file sub getVal { my ($filename, $index) = @_; # first argument is where to read from, second is witch number to read open (FILE, $filename); # open the file my $temp = <FILE>; # store the contents close (FILE); return $temp / 1000; # divide by 1000 to get actual temp } sub getVal2 { my ($filename, $index) = @_; # first argument is where to read from, second is witch number to read open (FILE, $filename); # open the file my $rpm = <FILE>; # store the contents close (FILE); return $rpm; } exit 1; # normally, you will never come this far Οι γραμμές >my $chip='/sys/devices/platform/w83627ehf.656'; # directory where lm_sensors writes its data - Various temperatures my $core0='/sys/devices/platform/coretemp.0'; # directory where lm_sensors writes its data - Core 0 temperatures my $core1='/sys/devices/platform/coretemp.1'; # directory where lm_sensors writes its data - Core 1 temperatures θα πρέπει να αλλαχτούν ανάλογα με την μητρική σας (θυμηθείτε τους chip drivers που «φορτώσαμε» για το lm-sensors). Αποθηκεύουμε το αρχείο και το κλείνουμε. Στην συνέχεια το εκτελούμε δίνοντας > perl lcdsensors.pl Προϋπόθεση είναι να υπάρχει η perl εγκατεστημένη στον υπολογιστή. Εαν όλα πάνε καλά, θα πρέπει να δείτε εκτός από τις «οθόνες» του "lcdproc.conf" και τις 3 (τρεις) ακόλουθες: Εμφανίζονται 2 πυρήνες επειδή τόσους έχει ο επεξεργαστής μου. Για περισότερους πυρήνες θα πρέπει να παραμετροποιήσετε το παραπάνω αρχείο και να το φέρετε στα μέτρα σας (γίνεται πολύ απλά με copy/paste). Την στιγμή που έβγαλα την φωτογραφία δεν υπήρχαν συνδεμένοι ανεμιστήρες στην μητρική, για αυτό και όλοι δείχνουν 0 στροφές. Ομοίως με προηγουμένος, εάν θέλετε παραπάνω από 3 (τρεις) ανεμιστήρες θα πρέπει να επεξεργαστείτε το αντίστοιχο αρχείο. Εφόσον είστε ευχαριστημένοι με το αποτέλεσμα, πατήστε Ctrl + C ώστε να τερματιστεί το εκτελέσιμο "lcdsensors.pl". Αυτό θα αφαιρέσει τις επιπλεον «οθόνες» για τώρα. Για να κάνουμε τους clients να εκκινούν αυτόματα με τον «δαίμονα» ανοίγουμε το αρχείο "/etc/init.d/LCDd". >nano /etc/init.d/LCDd και προσθέτουμε τα ακόλουθα στο block "start" >lcdproc perl /usr/scripts/lcdsensors.pl & Η τελική μορφή θα μοιάζει με το ακόλουθο: >start) echo -n "Starting $DESC: " start-stop-daemon --start --quiet --background \ --exec $DAEMON -- $DAEMON_OPTS lcdproc perl /usr/scripts/lcdsensors.pl & echo "$NAME." ;; Αντικαταστήστε το "/usr/scripts/lcdsensors.pl" με το δικό σας path και όνομα αρχείου. Τελευταίο βήμα η επανεκκίνηση του «δαίμονα» >/etc/init.d/LCDd restart Εάν όλα έχουν πάει καλά, θα πρέπει να εκκινήσει ο «δαίμονας» και αυτόματα και οι «οθόνες».
jim_p Δημοσ. 21 Οκτωβρίου 2010 Δημοσ. 21 Οκτωβρίου 2010 Σε περιπτωση που δεν τον ξερετε, ο nodm ειναι ενας display manager που απλα ξεκιναει το γραφικο περιβαλλον με autologin. http://www.enricozini.org/sw/nodm/
jim_p Δημοσ. 21 Οκτωβρίου 2010 Δημοσ. 21 Οκτωβρίου 2010 Σε περιπτωση που δεν τον ξερετε, ο nodm ειναι ενας display manager που απλα ξεκιναει το γραφικο περιβαλλον με autologin. http://www.enricozini.org/sw/nodm/
tritonas00 Δημοσ. 21 Οκτωβρίου 2010 Δημοσ. 21 Οκτωβρίου 2010 (επεξεργασμένο) Δυο παρατηρησεις. - Γιατι κανετε χρηση του xinitrc, το οποιο εκτελει τα περιεχομενα του ανεξαρτητως de και wm, και δεν κανετε χρηση του autostart που παρεχει ο καθε wm. Μα ακριβως επειδη δεν θελουμε να μπλεξουμε με το καθε de,wm καθως και για να ξεκιναμε οποιο θελουμε μεσω αυτου και γενικως να εχουμε πληρη ελεγχο.Aν πχ αλλαξω wm ?Αντε παλι απτην αρχη?Αφου υπαρχει ενας ενιαιος - ανεξαρτητος τροπος. Πχ, αν βαλω αυριο fluxbox που μου παρεχει δικο του κατω πανελ και tray, για ποιο λογο να τρεχω και εκει το fbpanel που τρεχω στο openbox? Γιατι πχ δεν σου αρεσει το panel του fluxbox και θελεις καποιο αλλο. Δεν καταλαβαινω την ερωτηση σου. - Το notification (για τερματισμο/επανεκκινηση εδω) απαιτει καποιον daemon να τρεχει ηδη? το notification-daemon που ειναι εξαρτηση του libnotify. Σε περιπτωση που δεν τον ξερετε, ο nodm ειναι ενας display manager που απλα ξεκιναει το γραφικο περιβαλλον με autologin. http://www.enricozini.org/sw/nodm/ Bασικα αυτο γινεται στο /etc/inittab αλλα thanks for the tip. Επεξ/σία 21 Οκτωβρίου 2010 από tritonas00
tritonas00 Δημοσ. 21 Οκτωβρίου 2010 Δημοσ. 21 Οκτωβρίου 2010 (επεξεργασμένο) Δυο παρατηρησεις. - Γιατι κανετε χρηση του xinitrc, το οποιο εκτελει τα περιεχομενα του ανεξαρτητως de και wm, και δεν κανετε χρηση του autostart που παρεχει ο καθε wm. Μα ακριβως επειδη δεν θελουμε να μπλεξουμε με το καθε de,wm καθως και για να ξεκιναμε οποιο θελουμε μεσω αυτου και γενικως να εχουμε πληρη ελεγχο.Aν πχ αλλαξω wm ?Αντε παλι απτην αρχη?Αφου υπαρχει ενας ενιαιος - ανεξαρτητος τροπος. Πχ, αν βαλω αυριο fluxbox που μου παρεχει δικο του κατω πανελ και tray, για ποιο λογο να τρεχω και εκει το fbpanel που τρεχω στο openbox? Γιατι πχ δεν σου αρεσει το panel του fluxbox και θελεις καποιο αλλο. Δεν καταλαβαινω την ερωτηση σου. - Το notification (για τερματισμο/επανεκκινηση εδω) απαιτει καποιον daemon να τρεχει ηδη? το notification-daemon που ειναι εξαρτηση του libnotify. Σε περιπτωση που δεν τον ξερετε, ο nodm ειναι ενας display manager που απλα ξεκιναει το γραφικο περιβαλλον με autologin. http://www.enricozini.org/sw/nodm/ Bασικα αυτο γινεται στο /etc/inittab αλλα thanks for the tip. Επεξ/σία 21 Οκτωβρίου 2010 από tritonas00
twiner Δημοσ. 22 Οκτωβρίου 2010 Μέλος Δημοσ. 22 Οκτωβρίου 2010 ευχαριστώ πολύ για τη συμμετοχή σας παιδιά! gtroza ευχαριστώ για την άμεση υποστήριξη. φοβόμουν ότι θα με πάρουν με τις...μαρμελάδες. Χαίρομαι ιδιαίτερα που ο tritonas00 εγκαινίασε κι όλας το νεογέννητο project* με μια αξιόλογη συνταγή. keep them coming *που πατάει στις πλάτες του δικού του. χρήσιμες οι παρεμβάσεις του jim_p, φυσικά αναμένουμε πολύ περισσότερα. "συνταγή" και άνω Η έκπληξη ήταν η πρόταση του macabre_sunset, που αν και δεν κολλάει ακριβώς στη "μαρμελάδα" , δίνει το έναυσμα για δημιουργία side project του στυλ: "headless server tips & tricks". Δεν το κατέχω το άθλημα αλλά είμαι σίγουρος ότι μερικοί εδώ μέσα έχουν να συνεισφέρουν πολλά σε αυτό. Πάντως αν θέλετε βοήθεια με την ονομασία...κάτι θα βρούμε.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα