
Hallo People,
found error in /etc/zsh/zshrc of grml-etc-core-0.3.49. line 948: --- if [ "${PERCENT%%%}" -lt 20 ]] ; then +++ if [ "${PERCENT%%%,}" -lt 20 ]] ; then
acpi output: Battery 0: Full, 100%, design capacity 65120 mAh ^
My Host: i386 Mobile AMD Athlon(tm) XP 3000+ Vanilla kernel 2.6.25.10-k7 acpi-1.1-2
mfg Kiste

* Kai Wilke kiste@netzworkk.de [20080914 11:27]:
found error in /etc/zsh/zshrc of grml-etc-core-0.3.49. line 948: --- if [ "${PERCENT%%%}" -lt 20 ]] ; then +++ if [ "${PERCENT%%%,}" -lt 20 ]] ; then
acpi output: Battery 0: Full, 100%, design capacity 65120 mAh
Alright, it's:
# acpi Battery 0: Full, 100%
vs.
# acpi Battery 0: Discharging, 100%, discharging [...]
Thanks, Kai.
@Frank: what do you suggest? AFAICS we should improve the way $BATTERY works when running in GNU screen as well.
regards, -mika-

Michael Prokop mika@grml.org:
- Kai Wilke kiste@netzworkk.de [20080914 11:27]:
found error in /etc/zsh/zshrc of grml-etc-core-0.3.49. line 948: --- if [ "${PERCENT%%%}" -lt 20 ]] ; then +++ if [ "${PERCENT%%%,}" -lt 20 ]] ; then
Just stripping off the comma there is not acceptable, IMO.
acpi output: Battery 0: Full, 100%, design capacity 65120 mAh
[...]
# acpi Battery 0: Full, 100% # acpi Battery 0: Discharging, 100%, discharging [...]
[...]
@Frank: what do you suggest? AFAICS we should improve the way
Okay, well for me acpi just says 'No support for device type: power_supply'.
Does 'acpi' only output *one* line at all times?
If I take your output above, we could do this:
[snip] PERCENT=${${"$(acpi 2>/dev/null)"}/(#b)[[:space:]]##Battery <->: [^0-9]##, (<->)%*/${match[1]}} [snap]
Needs extended_glob set, but that's the case in that position already. Could you two test the expression above. If it works, I'll commit it later this evening.
Regards, Frank

Frank Terbeck ft@grml.org: [...]
[snip] PERCENT=${${"$(acpi 2>/dev/null)"}/(#b)[[:space:]]##Battery <->: [^0-9]##, (<->)%*/${match[1]}} [snap]
Needs extended_glob set, but that's the case in that position already. Could you two test the expression above. If it works, I'll commit it later this evening.
Well, I discussed this with mika on IRC. Unfortunately, this does work for him on the command line, but not in the zshrc file. I have got no idea why that is.
The only thing that's required for that expression is extended_glob and that is set at that point.
If someone really wants that, please debug it.
Aside from the fact, that my attempt does not work: This is quite a misleading feature. PERCENT is *never* updated, AFAICS. And it requires starting zsh in a non standard way (BATTERY=1).
IMO, this feature should either be fixed or dropped altogether.
People who want this, should look into it.
Regards, Frank

High, high ... * Frank Terbeck ft@grml.org schrieb am [17.09.08 19:33]:
Frank Terbeck ft@grml.org: [...]
[snip] PERCENT=${${"$(acpi 2>/dev/null)"}/(#b)[[:space:]]##Battery <->: [^0-9]##, (<->)%*/${match[1]}} [...]
Well, I discussed this with mika on IRC. Unfortunately, this does work for him on the command line, but not in the zshrc file. I have got no idea why that is.
to works (my configuration /etc/zsh/zshrc):
line 943: # display battery status on right side of prompt via running 'BATTERY=1 zsh' # Benoetigt das paket acpi. battery() { if [[ $BATTERY == 1 ]] ; then if check_com -c acpi ; then PERCENT=${${"$(acpi 2>/dev/null)"}/(#b)[[:space:]]##Battery <->: [^0-9]##, (<->)%*/${match[1]}} #PERCENT="${(C)${(s| |)$(acpi 2>/dev/null)}[4]}" [[ -z "$PERCENT" ]] && PERCENT='acpi not present'
if [[ "$PERCENT" -lt 20 ]] ; then PERCENT="warning: ${PERCENT}%%" else PERCENT="${PERCENT}%%" fi fi fi }
see Var PERCENT and %%.
and Line 1036:
is4 && [[ -z $NOPRECMD || $NOPRECMD == 0 ]] && precmd () { [[ $NOPRECMD == 1 ]] && return 0 # allow manual overwriting of RPROMPT if [[ -n $RPROMPT ]] ; then [[ $TERM == screen* ]] && echo -n $'\ekzsh\e\' # return 0 fi # just use DONTSETRPROMPT=1 to be able to overwrite RPROMPT if [[ -z $DONTSETRPROMPT || $DONTSETRPROMPT == 0 ]] ; then if [[ $BATTERY == 1 ]] ; then battery RPROMPT="%(?..:()% ${PERCENT}${SCREENTITLE}" # RPROMPT="${PERCENT}${SCREENTITLE}" elif [[ -n $VCS ]] ; then RPROMPT="%(?..:()% $(__vcs_dir)${SCREENTITLE}" else RPROMPT="%(?..:()% ${SCREENTITLE}" # RPROMPT="${SCREENTITLE}" fi fi # adjust title of xterm # see http://www.faqs.org/docs/Linux-mini/Xterm-Title.html case $TERM in (xterm*|rxvt) print -Pn "\e]0;%n@%m: %~\a" ;; esac }
see precmd battery
[...]
mfg Kiste

Kai Wilke kiste@netzworkk.de:
to works (my configuration /etc/zsh/zshrc):
battery() {
I minor nitpick: the rest of the functions in that files uses 'functname() {' and I think we should stay consistent.
[...]
PERCENT=${${"$(acpi 2>/dev/null)"}/(#b)[[:space:]]##Battery <->: [^0-9]##, (<->)%*/${match[1]}}
[...]
}
[...]
is4 && [[ -z $NOPRECMD || $NOPRECMD == 0 ]] && precmd () {
[...]
if [[ -z $DONTSETRPROMPT || $DONTSETRPROMPT == 0 ]] ; then if [[ $BATTERY == 1 ]] ; then battery
[...]
}
Other than that, this looks reasonably clean. I this works for everyone (mika?), I think we can certainly take it.
Regards, Frank

High, high ... * Frank Terbeck ft@grml.org schrieb am [18.09.08 19:01]:
Kai Wilke kiste@netzworkk.de:
to works (my configuration /etc/zsh/zshrc):
battery() {
I minor nitpick: the rest of the functions in that files uses 'functname() {' and I think we should stay consistent.
Another way (consistent?):
# {{{ display battery status on right side of prompt via running 'BATTERY=1 zsh' if [[ $BATTERY == 1 ]] ; then if ! check_com -c acpi ; then BATTERY=0 fi fi # Benoetigt das paket acpi. battery() { if [[ $BATTERY == 1 ]] ; then PERCENT=${${"$(acpi 2>/dev/null)"}/(#b)[[:space:]]##Battery <->: [^0-9]##, (<->)%*/${match[1]}} if [[ -z "$PERCENT" ]] ; then PERCENT='acpi not present' else if [[ "$PERCENT" -lt 20 ]] ; then PERCENT="warning: ${PERCENT}%%" else PERCENT="${PERCENT}%%" fi fi fi } # }}}
PERCENT is not ever integer. See Code: ,----[ Line 946 ] | [[ -z "$PERCENT" ]] && PERCENT='acpi not present' | | if [[ "${PERCENT%%%}" -lt 20 ]] ; then | PERCENT="warning: ${PERCENT}%" | fi `----
[...]
mfg Kiste

Kai Wilke kiste@netzworkk.de:
High, high ...
- Frank Terbeck ft@grml.org schrieb am [18.09.08 19:01]:
Kai Wilke kiste@netzworkk.de:
to works (my configuration /etc/zsh/zshrc):
battery() {
I minor nitpick: the rest of the functions in that files uses 'functname() {' and I think we should stay consistent.
Another way (consistent?):
Actually, what I meant was:
battery() {
vs
battery() {
Yes, as I said, *minor*. :-)
Regards, Frank

High, high ... * Frank Terbeck ft@grml.org schrieb am [18.09.08 22:41]:
Kai Wilke kiste@netzworkk.de:
High, high ...
- Frank Terbeck ft@grml.org schrieb am [18.09.08 19:01]:
[...]
Another way (consistent?):
Actually, what I meant was:
battery() {
vs
battery() {
Yes, as I said, *minor*. :-)
Sorry, my english is very badly. --:-). You can german?
mfg Kiste

Kai Wilke kiste@netzworkk.de:
- Frank Terbeck ft@grml.org schrieb am [18.09.08 22:41]:
battery() {
vs
battery() {
Yes, as I said, *minor*. :-)
Sorry, my english is very badly. --:-). You can german?
Well, lasset es mich versuchen...
Was ich erhoffte, mit meiner Anmerkung zu erreichen, war das Verlegen der geschweiften öffnenden Klammer von einer für sie eigens eingeführten Zeile in die vorhergehende, welche die Funktionsdefinition enthält. Dies ist offen gesagt eine Kleinigkeit, der Rest des Werkes aus Einsen und Nullen entsprach durchaus dem was ich mir zur Lösung dieses Problems vorstellen würde.
Better? :-)
Gruß, Frank

High, high ... * Frank Terbeck ft@grml.org schrieb am [18.09.08 23:07]:
Kai Wilke kiste@netzworkk.de:
- Frank Terbeck ft@grml.org schrieb am [18.09.08 22:41]:
battery() {
vs
battery() {
Yes, as I said, *minor*. :-)
Sorry, my english is very badly. --:-). You can german?
Well, lasset es mich versuchen...
Was ich erhoffte, mit meiner Anmerkung zu erreichen, war das Verlegen der geschweiften öffnenden Klammer von einer für sie eigens eingeführten Zeile in die vorhergehende, welche die Funktionsdefinition enthält. Dies ist offen gesagt eine Kleinigkeit, der Rest des Werkes aus Einsen und Nullen entsprach durchaus dem was ich mir zur Lösung dieses Problems vorstellen würde.
Better? :-)
Bin wohl heute ganz blöd;-) Du meinst sowas wie in Line 1129 ([%j running job(s)])? Ich habe in den manpages der zsh vergeblich was dazu heraus zu bekommen, aber wie geschrieben mein Englisch ist dürftig.
Nur; für PERCENT %%.
Ich dachte zu erst PROMPT_PERCENT würde sowas machen können. Bin dann aber auch wieder auf die Nase gestossen - keine tägliche Arbeit.
mfg Kiste

Kai Wilke kiste@netzworkk.de:
- Frank Terbeck ft@grml.org schrieb am [18.09.08 23:07]:
[...]
Was ich erhoffte, mit meiner Anmerkung zu erreichen, war das Verlegen der geschweiften öffnenden Klammer von einer für sie eigens eingeführten Zeile in die vorhergehende, welche die Funktionsdefinition enthält. Dies ist offen gesagt eine Kleinigkeit, der Rest des Werkes aus Einsen und Nullen entsprach durchaus dem was ich mir zur Lösung dieses Problems vorstellen würde.
[...]
Bin wohl heute ganz blöd;-) Du meinst sowas wie in Line 1129 ([%j running job(s)])? Ich habe in den manpages der zsh vergeblich was dazu heraus zu bekommen, aber wie geschrieben mein Englisch ist dürftig.
Nur; für PERCENT %%.
Ich dachte zu erst PROMPT_PERCENT würde sowas machen können. Bin dann aber auch wieder auf die Nase gestossen - keine tägliche Arbeit.
Okay. Ich meine wirklich nur eine Nichtigkeit. Es hat nichts mit deinem Code zu tun sondern mit dem Layout. Darum habe ich extra gesagt 'minor nitpick'.
Nimm dies:
[snip] hello() { echo 'Hello World!' } [snap]
Und vergleiche das mit:
[snip] hello() { echo 'Hello World!' } [snap]
Ersteres ist das, was wir in den meisten (allen?) Teilen des zsh Setups verwenden. Und das hätte ich gern zwecks Konsistenz auch so beibehalten.
Das ist alles. :)
Wie gesagt. Dein Code war gut - wenn er für alle Leute tut, was ich nicht testen kann. Wenn mika mir sagt, daß deine Lösung bei ihm auch funktioniert, können wir sie gern einbauen.
Gruß, Frank

High, high ... * Frank Terbeck ft@grml.org schrieb am [18.09.08 23:43]:
Kai Wilke kiste@netzworkk.de:
- Frank Terbeck ft@grml.org schrieb am [18.09.08 23:07]:
[...]
Was ich erhoffte, mit meiner Anmerkung zu erreichen, war das Verlegen der geschweiften öffnenden Klammer von einer für sie eigens eingeführten Zeile in die vorhergehende, welche die Funktionsdefinition enthält. Dies ist offen gesagt eine Kleinigkeit, der Rest des Werkes aus Einsen und Nullen entsprach durchaus dem was ich mir zur Lösung dieses Problems vorstellen würde.
[...]
Bin wohl heute ganz blöd;-) Du meinst sowas wie in Line 1129 ([%j running job(s)])? Ich habe in den manpages der zsh vergeblich was dazu heraus zu bekommen, aber wie geschrieben mein Englisch ist dürftig.
Nur; für PERCENT %%.
Ich dachte zu erst PROMPT_PERCENT würde sowas machen können. Bin dann aber auch wieder auf die Nase gestossen - keine tägliche Arbeit.
Okay. Ich meine wirklich nur eine Nichtigkeit. Es hat nichts mit deinem Code zu tun sondern mit dem Layout. Darum habe ich extra gesagt 'minor
Verstanden und gehe jetzt ins Bett:) Vielleicht mach ich Morgen Früh (6:00 Uhr) noch die Korrektur. Muss morgen früh weg. Fehlt eh noch einiges. Arbeite gerade die z*.{global,local} Dateien durch, wie vielleicht bemerkt.
Ansonsten schönes WE noch, kiste
PS: Habe halt nur deine Gedanken so schnell nicht verstanden. An Code, Aussagen, schiess mich tot, kann man immer Kritik üben, wenn berechtigt. Good night:)

Frank Terbeck schrieb am Mittwoch, den 17. September 2008:
Michael Prokop mika@grml.org:
- Kai Wilke kiste@netzworkk.de [20080914 11:27]:
found error in /etc/zsh/zshrc of grml-etc-core-0.3.49. line 948: --- if [ "${PERCENT%%%}" -lt 20 ]] ; then +++ if [ "${PERCENT%%%,}" -lt 20 ]] ; then
Just stripping off the comma there is not acceptable, IMO.
acpi output: Battery 0: Full, 100%, design capacity 65120 mAh
this is with the last version no more the case. Upstream (my boss :)) removed the capacity output on my request.
Alex

High, high ... * Alexander Wirt formorer@debian.org schrieb am [18.09.08 13:13]:
Frank Terbeck schrieb am Mittwoch, den 17. September 2008:
Michael Prokop mika@grml.org:
- Kai Wilke kiste@netzworkk.de [20080914 11:27]:
found error in /etc/zsh/zshrc of grml-etc-core-0.3.49. line 948: --- if [ "${PERCENT%%%}" -lt 20 ]] ; then +++ if [ "${PERCENT%%%,}" -lt 20 ]] ; then
^ oh oh, my error.
Just stripping off the comma there is not acceptable, IMO.
acpi output: Battery 0: Full, 100%, design capacity 65120 mAh
this is with the last version no more the case. Upstream (my boss :)) removed the capacity output on my request.
update acpi to 1.2-1. My previous mail works to correct.
mfg Kiste

High, high ... * Frank Terbeck ft@grml.org schrieb am [17.09.08 17:24]:
Michael Prokop mika@grml.org:
- Kai Wilke kiste@netzworkk.de [20080914 11:27]:
found error in /etc/zsh/zshrc of grml-etc-core-0.3.49. line 948:
[...]
# acpi Battery 0: Full, 100% # acpi Battery 0: Discharging, 100%, discharging [...]
[...]
@Frank: what do you suggest? AFAICS we should improve the way
Okay, well for me acpi just says 'No support for device type: power_supply'.
Does 'acpi' only output *one* line at all times?
If I take your output above, we could do this:
[snip] PERCENT=${${"$(acpi 2>/dev/null)"}/(#b)[[:space:]]##Battery <->: [^0-9]##, (<->)%*/${match[1]}} [snap]
Besser ist die Apostrophe ans Anfang und Ende zu legen. PERCENT="${${$(acpi 2>/dev/null)}/(#b)[[:space:]]##Battery <->: [^0-9]##, (<->)%*/${match[1]}}"
Setzt ein User die Option setopt sh_word_split ein funktioniert das ganze nicht mehr.
Output: battery:6: bad math expression: operator expected at `0: Full, 1...''`
-----------------------------------------------------------------------
alle hash -d ... funktionieren nicht. Nur die Anzeige wenn man in dem Verz. ist aber nicht Bsp.: doc <enter> und dann ist man in /usr/share/doc. zsh: command not found
Mann kann dazu setopt cdable_vars setzen, dann gehts.
-----------------------------------------------------------------------
Da ich glaube das Du Frank viel mit der zsh unter grml zutun hast, kann ich dir auch mal meine bisherigen Änderungen, Vorschläge, Erweiterungen per PM schicken.
Ich habe aber auch noch nicht wirklich alles durch (Zeit) und kann auch nicht alles testen. Bin jetzt bei den bindkey's angekommen.
mfg Kiste

[..keeping the conversation in german for Kai's convenience..]
Kai Wilke kiste@netzworkk.de:
- Frank Terbeck ft@grml.org schrieb am [17.09.08 17:24]:
[...]
[snip] PERCENT=${${"$(acpi 2>/dev/null)"}/(#b)[[:space:]]##Battery <->: [^0-9]##, (<->)%*/${match[1]}} [snap]
Besser ist die Apostrophe ans Anfang und Ende zu legen.
Eigentlich nicht; Das Setzen der Double-Quotes um die Command-Substitution herum war schon so gewollt, macht bei einzeiliger Ausgabe aber nicht den riesigen Unterschied.
PERCENT="${${$(acpi 2>/dev/null)}/(#b)[[:space:]]##Battery <->: [^0-9]##, (<->)%*/${match[1]}}"
Setzt ein User die Option setopt sh_word_split ein funktioniert das ganze nicht mehr.
Das macht ein vernünftiger User auch nicht. :-) IMHO ist die Option da um einen sh-Modus implementieren zu können (der auch nicht wirklich perfekt ist).
Wie auch immer, folgendes sollte dann funktionieren: PERCENT="${${"$(acpi 2>/dev/null)"}/(#b)[[:space:]]##Battery <->: [^0-9]##, (<->)%*/${match[1]}}"
Output: battery:6: bad math expression: operator expected at `0: Full, 1...''`
Mika: Das hier schaut irgendwie nach dem Fehler aus, den du bekamst, oder? Hast du aus irgend einem Grund 'sh_word_split' gesetzt an der Stelle?
[[ -o sh_word_split ]] && echo yay || echo nay
Falls ja: warum? Und dann bitte das obige Snippet einmal probieren, wenn das geht, können wir es rein nehmen.
[...]
alle hash -d ... funktionieren nicht. Nur die Anzeige wenn man in dem Verz. ist aber nicht Bsp.: doc <enter> und dann ist man in /usr/share/doc. zsh: command not found
Mann kann dazu setopt cdable_vars setzen, dann gehts.
Nun, das ist in meinen Augen keine Frage von funktionieren und nicht funktionieren. Das von dir gewünschte Verhalten benötigt eben die Option; wir haben uns dazu entschieden beim Standardwert der Shell zu bleiben. Was ich persönlich auch gut finde - aber ich setzte selbst auch 'auto_cd' nicht. Ich mag soviel Magie an der Kommandoposition nicht.
Ein setopt cdablevars in ~/.zshrc.local und schon funktioniert es.
[...]
Da ich glaube das Du Frank viel mit der zsh unter grml zutun hast, kann ich dir auch mal meine bisherigen Änderungen, Vorschläge, Erweiterungen per PM schicken.
Ja, auch da die grml Mailingliste als internationales Forum besser in Englisch gehalten werden sollte wären Mails auf Deutsch direkt an mich (und evtl per Cc: an mika) besser, IMO.
Zum Beschreiben von Änderungen nehmen wir auch gern Unified Diffs. :-) Siehe: man diff
Mercurial kann sowas auch per 'hg diff' erzeugen.
Ich habe aber auch noch nicht wirklich alles durch (Zeit) und kann auch nicht alles testen. Bin jetzt bei den bindkey's angekommen.
^- autsch. ;-)
Für Konstruktive Kritik sind wir offen.
Gruß, Frank
Teilnehmer (4)
-
Alexander Wirt
-
Frank Terbeck
-
Kai Wilke
-
Michael Prokop