Erro de script do menu de canais do Openbox

5

Esta é a coisa mais estranha. O script funciona quando executado a partir do shell sem problemas. Quando eu o executo como um menu de canal do Openbox, recebo o erro " Saída inválida do menu do canal ". Depois de brincar com o script, descobri que ele tem a ver especificamente com a impressão da quinta coluna.

Para tornar as coisas ainda mais confusas, isso só acontece com o mês de julho. Todos os outros meses serão exibidos corretamente executando o script.

Aqui está o script como deveria ser. funciona quando executado a partir de um terminal:

#!/bin/bash
echo "<openbox_pipe_menu>"
cal | while read i;do
echo "<item label=\"$i\"/>"
done
echo "</openbox_pipe_menu>"
echo "</openbox_pipe_menu>"

A saída do script:

$ ./date-menu.sh 
<openbox_pipe_menu>
<item label="July 2014"/>
<item label="Su Mo Tu We Th Fr Sa"/>
<item label="1  2  3  4  5"/>
<item label="6  7  8  9 10 11 12"/>
<item label="13 14 15 16 17 18 19"/>
<item label="20 21 22 23 24 25 26"/>
<item label="27 28 29 30 31"/>
<item label=""/>
</openbox_pipe_menu>

Aqui está a versão simplificada que ainda falha ao ser executada como um menu de canais:

#!/bin/bash
calRow () {
cal | gawk -v row=$1 '{ if (NR==row) { print $0 } }'
}
echo "<openbox_pipe_menu>"
echo "<item label=\"'calRow 5'\"/>"
echo "</openbox_pipe_menu>"

MAS ... Se eu fizer o mesmo script com qualquer número, mas com 5, isso funciona como um encanto:

#!/bin/bash
calRow () {
cal | gawk -v row=$1 '{ if (NR==row) { print $0 } }'
}
echo "<openbox_pipe_menu>"
echo "<item label=\"'calRow 2'\"/>"
echo "<item label=\"'calRow 3'\"/>"
echo "<item label=\"'calRow 4'\"/>"
echo "<item label=\"'calRow 6'\"/>"
echo "<item label=\"'calRow 7'\"/>"
echo "<item label=\"'calRow 8'\"/>"
echo "</openbox_pipe_menu>"

Aqui está o arquivo menu.xml, caso alguém queira vê-lo:

<?xml version="1.0" encoding="utf-8"?>
<openbox_menu xmlns="http://openbox.org/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://openbox.org/                 file:///usr/share/openbox/menu.xsd">
    <menu id="root-menu" label="Openbox 3">
        <item label="Terminal emulator">
            <action name="Execute">
                <execute>x-terminal-emulator</execute>
            </action>
        </item>
        <item label="Browser">
            <action name="Execute">
                <execute>x-www-browser</execute>
            </action>
        </item>
        <item label="Virtualbox">
            <action name="Execute">
                <execute>virtualbox</execute>
            </action>
        </item>
        <!-- This requires the presence of the 'menu' package to work -->
        <menu id="/Debian"/>
        <separator/>
        <item label="obmenu">
            <action name="Execute">
                <execute>obmenu</execute>
            </action>
        </item>
        <item label="ObConf">
            <action name="Execute">
                <execute>obconf</execute>
            </action>
        </item>
        <item label="Reconfigure">
            <action name="Reconfigure"/>
        </item>
        <item label="Restart">
            <action name="Restart"/>
        </item>
        <separator/>
        <menu execute="obpipes/sysinfo.sh" id="pipe-sysinfo" label="System Info"/>
        <menu execute="obpipes/date-menu.sh" id="pipe-datemenu" label="Date"/>
        <menu id="client-list-menu"/>
        <separator/>
        <item label="Exit">
            <action name="Exit"/>
        </item>
    </menu>
</openbox_menu>
    
por Jeight 17.07.2014 / 10:30

1 resposta

2

Acontece que o dia atual está sendo destacado, causando o problema. Consegui consertá-lo ao desativar o destaque (cal -h)

    
por 19.07.2014 / 00:35