capthookb Δημοσ. 16 Μαρτίου 2012 Δημοσ. 16 Μαρτίου 2012 Στο pc έχω ένα tv tuner (saa7134) που έχει και fm tuner και ένα σειριακό lirc receiver που χρησιμοποιώ για τηλεχειρισμό. Θέλω να μπορώ με το τηλεχειριστήριο να μπορώ να τρέχω το radio (εφαρμογή από το xawtv)και να μπορώ να αλλάζω σταθμό, να αυξομοιώνω την ένταση του ήχου και να μπορώ να βάζω την οθόνη σε suspend mode αλλά και να την "ξυπνάω" από το suspend. Μόλις ολοκληρώσω τα scripts που θα χρησιμοποιήσω θα τα βάλω εδώ, σε περίπτωση που κάποιος άλλος τα χρειαστεί. Έχει κανείς κάποια ιδέα για το πως μπορώ να βάζω/βγάζω την οθόνη σε/από suspend mode;
jim_p Δημοσ. 16 Μαρτίου 2012 Δημοσ. 16 Μαρτίου 2012 Για να μην γραφω φιλοσοφιες, ριξε μια ματια στα περι dpms του xset http://linux.die.net/man/1/xset
warlock9_0 Δημοσ. 16 Μαρτίου 2012 Δημοσ. 16 Μαρτίου 2012 με dpms μπας και γίνεται? edit. slow typing is slow
capthookb Δημοσ. 17 Μαρτίου 2012 Μέλος Δημοσ. 17 Μαρτίου 2012 Όντως γίνεται. Είχα προσπαθήσει και παλιότερα αλλά δεν είχα διαβάσει φαίνεται αυτό που έπρεπε. > #!/bin/bash DISPLAY='0:0' STATE=$(xset -display $DISPLAY -q | grep Monitor | sed 's/.*Off.*/OFF/g' | sed 's/.*On.*/ON/g') if [ "$STATE" == "ON" ]; then xset -display $DISPLAY dpms force off else xset -display $DISPLAY dpms force on sleep 1 xset s reset fi
mandos Δημοσ. 17 Μαρτίου 2012 Δημοσ. 17 Μαρτίου 2012 Με το irexec θα το καλείς το script για την οθόνη? Έστησα εχθές ένα Asus remote στο ARCH και το σύνδεσα με το vlc για αρχή. Μου άρεσε η ιδέα να σβήνω την οθόνη από εκεί και να μην γράφω κάθε φορά το command στο console. Θα την αντιγράψω. Btw εγώ το καλώ έτσι: >sleep 1; xset dpms force off το sleep μπροστά βοηθάει μερικές φορές UPDATE: έκατσα και το ετοίμασα. Ιδού το .lircrc >begin prog = irexec button = KEY_POWER config = ~/monitor-toggle.sh end και το script monitor-toggle.sh. Έβγαλα το display γιατί μου γκρίνιαζε και έβαλα και το sleep καλού κακού. >#!/bin/bash STATE=$(xset -q | grep Monitor | sed 's/.*Off.*/OFF/g' | sed 's/.*On.*/ON/g') if [ "$STATE" == "ON" ]; then sleep 1 xset dpms force off else sleep 1 xset dpms force on sleep 1 xset s reset fi Επίσης μπήκα στον πειρασμό να φτιάξω και την ένταση, πειράζω το master της ALSA στο παρακάτω παράδειγμα ενώ κάνω και mute/unmute: >begin prog = irexec button = KEY_KPPLUS config = amixer -c 0 set Master 1dB+ end begin prog = irexec button = KEY_KPMINUS config = amixer -c 0 set Master 1dB- end begin prog = irexec button = AP_LAUNCH config = amixer -c 0 set Master toggle end Ο λόγος που πειράζω το master είναι ότι έτσι μπορώ να ελέγχω την ένταση σε όλες τις εφαρμογές μέσω του remote. Εναλλακτικά κάποιος μπορεί να πειράξει μόνο την ένταση του vlc (για παράδειγμα). Μου φαίνεται θα βάλω και το irexec να τρέχει στο boot του Χ. Επίσης περίμενω να δω τι θα ετοιμάσεις εσύ, μπορεί να αντιγράψω και κάτι ακόμα υγ: να το κάνουμε wiki για το lirc?
capthookb Δημοσ. 17 Μαρτίου 2012 Μέλος Δημοσ. 17 Μαρτίου 2012 To DISPLAY το έβαλα, γιατί δε δούλευε το xset (δεν έβρισκε το display). Ίσως έχει να κάνει και με τις ρυθμίσεις του περιβάλλοντος του bash. Το δικό μου set | grep DISPLAY δεν επιστρέφει τίποτα. Ναι, με το irexec τρέχω το script. Τόσο το irexec όσο και το irxevent τα τρέχω με το που κάνει login ο χρήστης. Αυτό είναι το κομμάτι του .lircrc > begin prog = irexec button = MUSIC repeat = 0 config = /home/capthookb/docs/programming/bash/screenonoff & end begin prog = irexec button = VOL+ repeat = 1 config = /home/capthookb/docs/programming/bash/volumeup & end begin prog = irexec button = VOL- repeat = 1 config = /home/capthookb/docs/programming/bash/volumedown & end Τα volumedown και volumeup scripts θα μπορούσαν να είναι 1 αντί για 2 scripts και με κάποιο όρισμα και if στο $1 να επιλέγει αν θες να αυξήσεις ή να μειώσεις την ένταση. Προτιμώ εξωτερικό script, γιατί μου δίνει μεγαλύτερη ευελιξία και γιατί δε χρειάζεται κάθε φορά που θέλω να αλλάξω κάτι να σκοτώνω το irxevent και να το ξανατρέχω. Νομίζω πως δε διαβάζει τις αλλαγές του .lircrc live. VOLUMEUP script: > #!/bin/bash #vrisko to epipedo entasis autis ti stigmis LEVEL=$(amixer -c 0 cget iface=MIXER,name='DAC Volume' | grep ': values' | sed 's/.*=//g') let "NEWLEVEL = $LEVEL +2" amixer -c 0 cset iface=MIXER,name='DAC Volume' "$NEWLEVEL" amixer -c 0 cset iface=MIXER,name='DAC Volume',index=1 "$NEWLEVEL" Το volumedown είναι ίδιο με το volumeup αλλά αντί να αυξάνει το newlevel,το μειώνει κατά 2 μονάδες. Στη συγκεκριμένη κάρτα ήχου οι τιμές που μπορεί να πάρει το κανάλι είναι από 0-127 και γι'αυτό το βάζω αλλαγή κατα 2 μονάδες.
mandos Δημοσ. 17 Μαρτίου 2012 Δημοσ. 17 Μαρτίου 2012 ερώτησεις: 1) το irxevent γιατί το τρέχεις? 2) το irexec το καλείς μέσω .xinitrc ?
capthookb Δημοσ. 17 Μαρτίου 2012 Μέλος Δημοσ. 17 Μαρτίου 2012 To irxevent χρησιμοποιεί το .lircrc για να στείλει keystrokes κτλ σε όσα προγράμματα δέχονται input από πληκτρολόγιο.Εχει παρόμοια σύνταξη, μόνο που η γραμμή του config είναι διαφορετική Π.χ. το κομμάτι του .lircrc που έφτιαξα για το radio είναι το εξής: > begin prog = irexec button = RADIO repeat = 0 config = /home/capthookb/docs/programming/bash/radio & end begin prog = irxevent button = DOWN repeat = 0 config = Key Down konsole end begin prog = irxevent button = RIGHT repeat = 0 config = Key Page_Up konsole end begin prog = irxevent button = LEFT repeat = 0 config = Key Page_Down konsole end begin prog = irxevent button = UP repeat = 0 config = Key Up konsole end Ξεκινάω το πρόγραμμα με το irexec που τρέχει το radio script και μετά με το irxevent στέλνω στο konsole ουσιαστικά τα keystrokes που θέλω. Να και το radio script: > #!/bin/bash PROG=konsole if [ "$(pidof $PROG)" ]; then killall -9 $PROG killall -9 sox else sox --single-threaded -c 2 -b 24 --buffer 4096 -r 32000 -t alsa hw:1,0 -t alsa default & konsole -e radio & fi Έχω βάλει το if, έτσι ώστε πατώντας το ίδιο κουμπί στο τηλεχειρηστήριο να μπορώ να τρέχω ή να τερματίζω το πρόγραμμα (λίγο ανορθόδοξα βέβαια). Όχι τα irexec,irxevent δεν τα τρέχω από το .xinitrc. Παλιότερα έβαζα ένα softlink στο ~/.kde/Autostart και έτρεχαν από εκεί. Τώρα με το kde4 υπάρχουν κάπου αλλού οι ρυθμίσεις για τα προγράμματα που εκινούνται αυτόματα κατά το login αλλά δεν έχω ασχοληθεί να βρω που είναι.
mandos Δημοσ. 17 Μαρτίου 2012 Δημοσ. 17 Μαρτίου 2012 Thnx για τις πληροφορίες. Εγώ τα έχω όλα σε auto-login με XFCE. Θα κοιτάξω είτε να τρέχω το irexec από το startup του XFCE (έχει) είτε θα το δοκιμάσω μέσω .xinitrc. Ωραίες ιδέες, η μόνη βλακεία μου είναι ότι είχα 2 asus-dh remotes και το ένα το πέταξα πριν κάτι μήνες
capthookb Δημοσ. 17 Μαρτίου 2012 Μέλος Δημοσ. 17 Μαρτίου 2012 Αν θυμάμαι καλά, μπορείς να έχεις όσα remotes θέλεις. Κι εγώ έχω ένα μικρό της Asus (tv-tuner), το οποίο χρησιμοποιώ με το σειριακό receiver και όχι με το receiver της κάρτας που συνδέεται με jack στο πίσω μέρος. Όλο λέω να πάω να πάρω ένα φθηνό με πολλά κουμπιά, να έχω ευελιξία στα κουμπιά και στις ρυθμίσεις, αλλά δεν έχω αξιωθεί ακόμα. Γενικά, επειδή το έχω στο δωμάτιο το pc και σαν htpc, χειρίζομαι xbmc, mythtv(όταν έβαζα) vdr, tvtime (παλιότερα), τώρα radio κτλ. Τέτοιες λύσεις είναι που κάνουν το linux να υπερτερεί κατά πολύ έναντι άλλων λειτουργικών, κατά την άποψή μου. Μπορείς με απλά εργαλεία να σχεδιάσεις όποια λειτουργία θες και να ευχαριστηθείς κάτι δημιουργικό και παράλληλα πρακτικό. Υ.Γ. Κάποιο φεγγάρι είχα φτιάξει και osd για το τηλεχειριστήριο (μέσω του xosd), λειτουργίες Sleep με χρονοδιακόπτη κτλ. Δε θυμάμαι τι άλλο. Αν τα βρω θα τα ποστάρω. Παλιότερα είχα πρόβλημα με κάθε αλλαγή σε νέο kernel, συνήθως δε δούλευε το lirc. Αλλά από κάποια στιγμή που ενσωματώθηκε στον πυρήνα είναι εγγύηση!.
capthookb Δημοσ. 18 Μαρτίου 2012 Μέλος Δημοσ. 18 Μαρτίου 2012 Αυτό που μου μπήκε στο μυαλό τώρα είναι να μπορέσω με κάποιο τρόπο να κλείνω τους σκληρούς δίσκους και ότι άλλο δε χρειάζεται (π.χ fan της κάρτας γραφικών). Όχι όμως να αναβοσβήνουν, γιατί θα χαλάσουν στο τέλος. Αν με κάποιο τρόπο μπορέσω να φτιάξω ένα κομμάτι της μνήμης που περισσεύει σαν εικονικό δίσκο και να τρέχω από εκεί ότι χρειάζεται πιστεύω θα μπορέσω να κλείσω τους δίσκους.
mandos Δημοσ. 19 Μαρτίου 2012 Δημοσ. 19 Μαρτίου 2012 Γιατί δεν τους σβήνεις μέσω laptop-mode-tools και θες να το κάνεις εξωτερικά? Δεν είναι καλύτερα να αφήσεις το σύστημα να τους διαχειρίζεται?
capthookb Δημοσ. 19 Μαρτίου 2012 Μέλος Δημοσ. 19 Μαρτίου 2012 Όποτε το έχω κάνει(με hdparm), σβήνουν για 10-20 δεύτερα, μετά ξαναπαίρνουν για 1 λεπτό και φτου κι απ'την αρχή.
mandos Δημοσ. 19 Μαρτίου 2012 Δημοσ. 19 Μαρτίου 2012 Δεν έχω πρόσφατη εμπειρία στο θέμα των δίσκων... τελευταία φορά που το έψαξα ήταν με ένα Vaio σε arch to 2005-6 (5μιση ώρες μπαταρία με wired-lan!). Τότε είχα δουλέψει laptop-mode-tools και όχι κάτι άλλο.
semaphor Δημοσ. 25 Μαρτίου 2012 Δημοσ. 25 Μαρτίου 2012 Να παραθέσω και εγώ ένα scriptaki που είχα βρει και είχα πειράξει για commandline audio adjust + notify-send message. file: alsaVolChange.sh > #!/bin/sh version=0.03 # created by abarilla # modified by wujaklija # modified by ^^FiCK^^ #usage="usage: $0 -c up|down|mute [-i increment] [-m mixer]" usage="$0 Version $version Help\nDependencies: libnotify, alsa-utils\nusage:\n\t $0 [OPTIONS] -c COMMAND \nCOMMAND:\n-c\t up \n\t\t(increase volume by increment)\n\tdown \n\t\t(decrease volume by increment)\n\tmute \n\t\t(mute volume) \n\nOPTIONS:\n-i\t increment \n\t\t(the amount of db to increase/decrease)[default:2500] \n-m\t mixer \n\t\t(the device to change)[default:Master]" #Default values command= increment=2300 mixer="Master" while getopts "c:i:m:h" o do case "$o" in c) command=$OPTARG;; i) increment=$OPTARG;; m) mixer=$OPTARG;; h) echo -e "$usage"; exit 0;; ?) echo -e "$usage"; exit 0;; esac done #if [[ -z $command ]] || [[ -z $increment ]] || [[ -z $mixer ]] #then # echo $usage # exit 1 #fi #shift $(($OPTIND - 1)) #command=$1 #if [ "$command" = "" ]; then # echo -e "usage: $0 {up|down|mute} [increment]" # exit 0; #fi display_volume=0 icon_name="" if [ "$command" = "up" ]; then display_volume=$(amixer set $mixer $increment+ unmute | grep -m 1 "%]" | cut -d "[" -f2|cut -d "%" -f1) else if [ "$command" = "down" ]; then display_volume=$(amixer set $mixer $increment- unmute | grep -m 1 "%]" | cut -d "[" -f2|cut -d "%" -f1) else if [ "$command" = "mute" ]; then if amixer get Master | grep "\[on\]"; then display_volume=0 icon_name="notification-audio-volume-muted" amixer set $mixer mute else display_volume=$(amixer set $mixer unmute | grep -m 1 "%]" | cut -d "[" -f2|cut -d "%" -f1) fi else echo -e $usage exit 1 fi fi fi if [ "$icon_name" = "" ]; then if [ "$display_volume" = "0" ]; then icon_name="notification-audio-volume-off" else if [ "$display_volume" -lt "33" ]; then icon_name="notification-audio-volume-low" else if [ "$display_volume" -lt "67" ]; then icon_name="notification-audio-volume-medium" else icon_name="notification-audio-volume-high" fi fi fi fi #notify-send -u normal -t 100 "$mixer" notify-send " " -i $icon_name -h int:value:$display_volume -h string:synchronous:volume #notify-send "$mixer" -i $icon_name manual: > alsaVolChange.sh Version 0.03 Help Dependencies: libnotify, alsa-utils usage: alsaVolChange.sh [OPTIONS] -c COMMAND COMMAND: -c up (increase volume by increment) down (decrease volume by increment) mute (mute volume) OPTIONS: -i increment (the amount of db to increase/decrease)[default:2500] -m mixer (the device to change)[default:Master]
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα