Isso funcionou para mim com yad e zenity, e o id da coluna não é visível na GUI:
zenity --list 1 "Apples" 2 "Peaches" 3 "Pumpkin" 4 "Pie" --column="id" \
--column="Select your choice" --hide-column=1 --print-column=1
Agora, para alcançar o mesmo, quando a entrada for um arquivo, você poderá pré-processar o arquivo com awk
, por exemplo, awk '{print NR};1' infile
e passar o resultado para zenity
.
Desde, de acordo com a documentação :
Zenity returns the entries in the first column of text of selected rows to standard output.
seu $item
irá armazenar apenas o número da linha (que é a entrada na primeira coluna), não o conteúdo da linha.
Para obter o conteúdo da linha, você precisa processar o arquivo novamente e extrair essa linha com base no número da linha. Então
linenumber=$(awk '{print NR};1' infile | zenity --list --column="No" \
--column="Select your choice" --text="Text above column(s)" \
--title="My menu" --hide-column=1)
então
linecontent=$(sed ${linenumber}'!d;q' infile)
Agora, você tem o número da linha selecionada e seu conteúdo salvo em linenumber
e, respectivamente, linecontent
.