• Café
  • Eure brauchbarsten Funktionen

harald91 schriebFür welche Anwendungen verwendest Du diese Funktion?
In screen z.B. …
irgendwas das ewig dauert && say "Bearbeitung abgeschlossen"
… wäre eine Idee 🙂
Cool! Leider muss man Umlaute umschreiben.
Dirk schrieb
irgendwas das ewig dauert && say "Bearbeitung abgeschlossen"
… wäre eine Idee 🙂
echo -e "\a"
hat mir für diesen Zweck bisher stets gereicht.
Das macht bei mir nichts 🙂
sleep 5; echo -e "\a"
Bitte das Kommando mal ausführen und innerhalb dieser fünf Sekunden auf einen anderen Desktop wechseln. Das echo-Kommando setzt den Status des Desktops auf "urgent" (englisch für dringend). Der Status bleibt solange auf "urgent" bis man wieder auf diesen Desktop wechselt (ihm also sozusagen Aufmerksamkeit widmet). Ich weiß nicht, wie das bei irgendwelchen x-beliebigen WMs aussieht, aber bei mir in XMonad (mit meiner .xmonad.hs) sieht das folgendermaßen aus:




Es werden in meinem dmenu nur diejenigen Desktops angezeigt, die nicht-leer sind. Derjenige Desktop auf dem ich mich gerade befinde ist blau unterlegt. Ich habe dann das Kommando ausgeführt und bin von Desktop 1 auf Desktop 2 gewechselt. Nach Ablauf des sleep-Kommandos hat dann echo den Status von Desktop 1 auf "urgent" gesetzt, weshalb XMonad ihn rot unterlegt. Genau das passiert auch immer mit meinem Desktop 6 (auf dem von Haus aus Thunderbird gestartet ist), wenn ich neue Mails erhalte. Das ganze geht auch innerhalb eines Desktops; bei mir auch im Tabbing-Layout, wenn der enstprechende Tab gerade nicht sichtbar ist (dann wird dieser markiert).


in folgender Passage in meiner ~/.xmonad/xmonad.hs sind die Farben dafür festgelegt:
>>> grep -A7 dzenPP /home/harald/.xmonad/xmonad.hs
myDzenPP = dzenPP
    { ppCurrent = wrap "^fg(snow1)^bg(#1987BE) " " ^fg()^bg()"
    , ppHidden  = dzenColor "#78AEB1" "" .wrap " " " "
    , ppUrgent  = wrap "^fg(snow1)^bg(#FE5764) " " ^fg()^bg()"
    , ppSep     = " "
    , ppLayout  = const ""
    , ppTitle   = const ""
    }
harald91 schriebDas echo-Kommando setzt den Status des Desktops auf "urgent" (englisch für dringend).
Ist natürlich nutzlos, wenns in ’ner screen-Session läuft, die gerade detached ist 🙂
Stimmt, aber in so einer Session habe ich das Kommando das ewig läuft ja auch im Blick 😉
Na ich guck dem ja nicht die ganze Zeit zu 🙂

On-Topic: Zwar keine Funktion, sondern eher schon ein ausgewachsenes Script (das geht sicher auch kürzer bei selbem Ergebnis)
#!/bin/bash
# vim: ts=4:sw=4
# Printing all defined colors to terminal.
# Dirk Sohler
# spam@0x7be.de


# Enter your definitions file here

RES="${HOME}/.Xresources"



# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #

CLINES=$(grep "color[0-9]\{1,3\}:" "${RES}")
COUNT=$(grep "color[0-9]\{1,3\}:" "${RES}" | wc -l)
NLEN=$(echo -ne "${COUNT}" | wc -m)

ELEN=$(expr $(grep "color[0-9]\{1,3\}:" "${RES}" \
		| head -n1\
		| sed s/"\(.*color\)[0-9]\{1,3\}.*"/"\1"/g\
		| wc -m) - 1 + ${NLEN})

VLEN=$(expr $(grep "color[0-9]\{1,3\}:" "${RES}"\
	| head -n1\
	|awk '{print $2}'\
	| wc -m))

echo -ne "\n\e[1;4m "
printf %${NLEN}s " "
echo -ne "   Example    "
printf %-${ELEN}s "Entry"
echo -ne "   "
printf %-${VLEN}s "Value"
echo -ne "\033[0m\n"

IFS=$(echo -ne "\n\b")
I=0

for C in ${CLINES}; do
	I=$(expr $I + 1)
	NUM=$(echo ${C} | sed s/".*color\([0-9]\{1,3\}\).*"/"\1"/g)
	EXA=$(echo -e "\e[48;05;${NUM}m        \e[0m")
	NAM=$(echo ${C} | sed s/"\(.*color[0-9]\{1,3\}\).*"/"\1"/g)
	STR=$(echo ${C} | awk '{print $2}')
	LNUM=$(printf %${NLEN}d ${I})
	LNAM=$(printf %-${ELEN}s ${NAM})
	echo -e " ${LNUM}   ${EXA}   ${LNAM}   ${STR}"
done

echo -ne "\n"
Gibt alle in der entsprechenden Datei angegebenen Farbdefinitionen aus, und ist dabei fähig, beliebig viele Definitionen auszugeben (wer in einem entsprechenden TErminal mehr als die üblichen 16 Farben definiert hat, bekommt die auch alle angezeigt.)



Zur Abstandsmessung wird die erste Farbdefinition hergenommen, wer also mehrere verschiedene Definitionen hat (urxvt*color, bliblablubb*color, etc.), bekommt zwar probleme mit den Abständen, aber ansonsten finde ich das schon sehr schick 🙂
Hallo,

mit LINES hast Du Dir eine Systemvariable neudefiniert.
harald91 schriebmit LINES hast Du Dir eine Systemvariable neudefiniert.
Hab ich gar nichts von gemerkt, was macht die?

Na ja, ist jedenfalls angepasst, heißt jetzt CLINES 🙂
Gibt glaub ich die Anzahl der Zeilen in Deinem Terminalfenster an, oder irgendso was 😃 Aber die Ausgabe von Deinem Skript sieht sehr beeindruckend aus, das werde ich die Tage über mal genauer unter die Lupe nehmen.
LINES ist keine Systemvariable sondern eine bash-builtin Variable die aber nur in interaktiven Shells gesetzt ist, in Skripts ist sie nicht gesetzt. In interaktiven Shells gibt sie die Anzahl der Zeilen an die das Terminal hat.
Danke für die Verbesserung portix.
Ein Terminalfarbenskript habe ich auch mal geschrieben, anders als das Skript von Dirk parst es nicht .Xresources sondern zeigt bei Terminals die 256 Farben unterstützen die Farben an
#!/bin/bash 

[ $1 ] && [ $1 -a 0 -le $1 -a $1 -le 255 ] && c=$1 || c=16
j=3; l=4;
for i in {0..255}; do 
  [ $i = 16 ] && k=0 && j=4 && l=3;
  printf "\e[38;5;$c;48;5;%dm%-${j}d\e[0m\e[48;5;$c;38;5;%dm%-${j}d\e[0m" $i $i $i $i
  [ $((++k%(2*l))) = 0 ] && printf "\n"
done
Auch nice! 🙂
harald91 schriebFür welche Anwendungen verwendest Du diese Funktion?
Lass mich nachdenken ... Keine Ahnung ... Fand es einfach lustig^^
harald91 schrieb
irgendwas das ewig dauert && say "Bearbeitung abgeschlossen"
… wäre eine Idee 🙂
Coole Idee 😃

Eine Anmerkung hätte ich noch, ispeech klingt weitaus besser als Google:
http://api.ispeech.org/api/rest?apikey=YOURAPIKEY&voice=eurgermanfemale&action=convert&text=$1
(Keys findet man wunderbar in der Doku und auf stackoverflow ;D)
13 Tage später
>>> grep -A3 Einträge der Historie ~/.zshrc.local
# Gibt von den letzten i Einträgen der Historie die aus, welche <Pattern1 oder Pattern2 oder ...> enthalten.
for i in {1..100} {200,250,300,400,500,1000,10000,$HISTSIZE}; do
  h$i() { if [ $1 ]; then history -${0:1} | egrep $(echo $@ | tr -s ' ' '|'); else history -${0:1}; fi }
done; alias h="h$HISTSIZE"
z.B:
h100 ls echo             # gibt von den letzten 100 Befehlen, diejenigen aus, die "ls" ODER "echo" enthalten. 
h "vim.*.sh"             # gibt von allen history-Eintägen diejenigen aus, die "vim" UND ".sh" enthalen und bei denen "vim" VOR ".sh" steht. 
h250 "vim.*.sh|.sh.*vim" # gibt von den letzten 250 Einträgen der history diejenigen an, die "vim" und ".sh" in beliebiger Reihenfolge enthalten. 
h5                       # gibt die letzten fünf Einträge der Historie aus
Wer das Skript mit der bash nutzen mächte solte "-${0:1}" zu "${0:1}" abändern.
4 Monate später
function media {
    `adb shell input keyevent KEYCODE_HOME`
    `adb shell input keyevent KEYCODE_MEDIA_$1:u`
}
Damit lassen sich "medien" auf Android steuern, wenn über ADB angeschlossen.
media next
z.B. skippt das aktuelle Lied.
  • [gelöscht]

Mal eine blöde Frage aber wo packt ihr die Funktion hin?
Z.B. deine ~/.bashrc 🙂