Autor Thema: GUI erstellen mit gtkdialog  (Gelesen 6434 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Offline Leiche

  • Global Moderator
  • *
  • Beiträge: 619
  • Gott weiß, ich bin kein Engel
    • Tipps und Tricks
GUI erstellen mit gtkdialog
« am: 28.Februar.2015, 00:14:40 »
Hallo,

Ich fange einfach mal an eine GUI zu erstellen mit gtkdialog (Unbedingt den Link besuchen).
Eine Übersetzung von Tutorial - Creating a GUI with Gtkdialog - PCLinuxOS Magazine findest Du unter GUI erstellen mit GTKDialog von musonio (Übersetzer Leiche).
Ich verwende hier Geany um meine GUI zu erstellen.
Die Scripte, nichts anderes sind es, müssen ausführbar gemacht werden!

EDIT: 17.03.15
Wenn man nicht unbedingt eine Ausgabe ala ** (gtkdialog:6160): ERROR **: gtkdialog: Error in line 488, near token '  title="': syntax error  /SiCuSys: Zeile 958:  6160 Trace/Breakpoint ausgelöst   gtkdialog -p GUI erhalten möchte, sollte man immer Zeilenweise oder Abschnitt weise vorgehen, denn suche mal den Fehler, wenn nur das " fehlt. ;)

Mit Geany legen wir uns eine neue Datei an, können diese benennen als Meine_GUI und machen diese gleich mal ausführbar..

Damit das System weiß um was es sich handelt, muss im Header unser Datei folgendes stehen.
#! /bin/bashSomit weiß das System, das es sich um eine BASH Datei handelt und demzufolge die entsprechende Aktionen ausführt.
Wir wollen einfach mal eine Abfrage starten, wenn etwas vorhanden ist, braucht keine Information ausgegeben werden, sollte jedoch die Applikation fehlen, soll eine Information ausgegeben werden.
#! /bin/bash

if [ ! -f /usr/bin/inxi ]; then
export INFO_DIALOG='
<window window_position="1" title="Abfrage zu inxi" icon-name="info">
<vbox>
<hbox border-width="30">
<pixmap>
<input file icon="gtk-dialog-info"></input>
</pixmap>
<text use-markup="True">
<label>"<b>INXI wurde nicht gefunden!</b>
Installieren Sie INXI über ihren Paket Managment."</label>
</text>
</hbox>
<hseparator></hseparator>
<hbox homogeneous="true">
<button ok></button>
</hbox>
</vbox>
</window>
'
gtkdialog --program=INFO_DIALOG
echo $"no inxi found!"
fi

Wenn wir nun nicht inxi installiert haben, bekommen wir folgende Information



Haben wir inxi installiert, passiert gar nichts, da die Aplikation schon vorhanden ist.

Um aber zu sehen wie es funktioniert, brauchen wir nicht inxi deinstallieren, es reicht die Zeile
if [ ! -f /usr/bin/inxi ]; then
abzuändern zu
if [ ! -f /usr/bin/inxi1 ]; then

Viel Spaß bei der Abfrage.

Nächste Runde beschäftigen wir uns um einige Variablen...
« Letzte Änderung: 17.März.2015, 08:48:33 von Leiche »

Offline Leiche

  • Global Moderator
  • *
  • Beiträge: 619
  • Gott weiß, ich bin kein Engel
    • Tipps und Tricks
Re: GUI erstellen mit gtkdialog
« Antwort #1 am: 28.Februar.2015, 23:00:06 »
Nun wissen wir, das inxi benötigt wird für unsere GUI. Doch was genau wollen wir mit inxi ermitteln?
Wir wollen die Desktop Umgebung ausgeben, bei manchen Systeme haut das einfache echo $DESKTOP_SESSION nicht hin.

[daniel@daniel-64bit ~]$ echo $DESKTOP_SESSION
gnome
[daniel@daniel-64bit ~]$
Obwohl ich KDE am rennen habe, wird mir gnome angezeigt.
Nutze ich jedoch inxi -S | grep Desktop | cut -d " " -f 13 erhalte ich

[daniel@daniel-64bit ~]$ inxi -S | grep Desktop | cut -d " " -f 13
KDE
[daniel@daniel-64bit ~]$
Nur inxi -S ergibt

[daniel@daniel-64bit ~]$ inxi -S
System:    Host: daniel-64bit Kernel: 3.18.8-pclos1 x86_64 (64 bit) Desktop: KDE 4.14.3 Distro: PCLinuxOS
[daniel@daniel-64bit ~]$

So wie können wir das einbauen in unsere GUI?

#! /bin/bash

Simple_Current_Systeminfo='
<window  window_position="1">
<frame '$"Desktop Umgebung"'>  ## Anzeigen der Arbeitsoberflächen Umgebung
<text wrap="false" xalign="0" selectable="true">
<input>inxi -S | grep Desktop | cut -d " " -f 13</input>
</text>
<vbox>
<button>
<label>Schließen</label>
<input file icon="exit"></input>
<action type="exit">Simple_Current_Systeminfo</action>
</button>
</vbox>
</frame>
</window>
'
export GUI="`echo "$Simple_Current_Systeminfo" | sed -e 's/##.*//'`"
gtkdialog -p GUI



Noch ziemlich mager unsere GUI und was war mit den Variablen, dazu mehr im nächsten Thread...
Noch etwas über diese Zeile
export GUI="`echo "$Simple_Current_Systeminfo" | sed -e 's/##.*//'`"
Um Kommentare zu hinterlassen im Script müssen wir bei gtkdialog mit sed arbeiten, da ansonsten gtkdialog die GUi nicht startet, und nur eine Fehlermeldung ausgibt.
Alles was nun hinter zwei ## stehen wird durch sed entfernt und gtkdialog gibt keinen Fehler aus.
Somit kann man nicht nur Kommentare hinterlassen, auch ganze Codezeilen ohne zu löschen, verstecken.
« Letzte Änderung: 01.März.2015, 14:58:31 von Leiche »

Offline Leiche

  • Global Moderator
  • *
  • Beiträge: 619
  • Gott weiß, ich bin kein Engel
    • Tipps und Tricks
Re: GUI erstellen mit gtkdialog
« Antwort #2 am: 01.März.2015, 16:45:33 »
Wie wir im vorherigen Thread sehen konnten, war das GUI ein wenig spartanisch. Da war die Abfrage schon mehr
als unser Programm, was uns Informationen anzeigen soll. Also werden wir uns mal ein wenig um das Fenster kümmern.


#! /bin/bash

Simple_Current_Systeminfo='
<window  window_position="1">
Wir fügen die erste Variable hinzu in die leere Zeile, um nicht immer wieder den Namen unsere Application zu benennen
müssen.
#! /bin/bash
# Variablen zum einfachen Handhabung des Programm
TITLE="Einfache Systeminformationen"

# Hauptprogramm
Simple_Current_Systeminfo='
<window  window_position="1" title="'$TITLE'">
<frame '$"Desktop Umgebung"'>  ## Anzeigen der Arbeitsoberflächen Umgebung
<text wrap="false" xalign="0" selectable="true">
<input>inxi -S | grep Desktop | cut -d " " -f 13</input>
</text>
<vbox>
<button>
<label>Schließen</label>
<input file icon="exit"></input>
<action type="exit">Simple_Current_Systeminfo</action>
</button>
</vbox>
</frame>
</window>
'
export GUI="`echo "$Simple_Current_Systeminfo" | sed -e 's/##.*//'`"
gtkdialog -p GUI



Jetzt bekommen wir zwar schon mal den Namen des Programms angezeigt, aber dennoch ist das noch zu wenig.
Mit width_request="550" können wir das Fenster eine feste minimale Größe zuweisen.

#! /bin/bash
# Variablen zum einfachen Handhabung des Programm
TITLE="Einfache Systeminformationen"

# Hauptprogramm
Simple_Current_Systeminfo='
<window  window_position="1" title="'$TITLE'" width_request="550" >
<frame '$"Desktop Umgebung"'>  ## Anzeigen der Arbeitsoberflächen Umgebung
<text wrap="false" xalign="0" selectable="true">
<input>inxi -S | grep Desktop | cut -d " " -f 13</input>
</text>
<vbox>
<button>
<label>Schließen</label>
<input file icon="exit"></input>
<action type="exit">Simple_Current_Systeminfo</action>
</button>
</vbox>
</frame>
</window>
'
export GUI="`echo "$Simple_Current_Systeminfo" | sed -e 's/##.*//'`"
gtkdialog -p GUI



Mit einer weiteren Variable können wir auch gleich die Version angeben, macht schon mal was her und
wir brauchen nur die Versionsnummer in der Variablen ändern. Ansonsten müsste man immer das ganze
Script durchgehen um die Versionsnummer zu ändern.

#! /bin/bash
# Variablen zum einfachen Handhabung des Programm
TITLE="Einfache Systeminformationen"
VERSION=" 0.1.5"

# Hauptprogramm
Simple_Current_Systeminfo='
<window  window_position="1" title="'$TITLE$VERSION'" width_request="550" >
<frame '$"Desktop Umgebung"'>  ## Anzeigen der Arbeitsoberflächen Umgebung
<text wrap="false" xalign="0" selectable="true">
<input>inxi -S | grep Desktop | cut -d " " -f 13</input>
</text>
<vbox>
<button>
<label>Schließen</label>
<input file icon="exit"></input>
<action type="exit">Simple_Current_Systeminfo</action>
</button>
</vbox>
</frame>
</window>
'
export GUI="`echo "$Simple_Current_Systeminfo" | sed -e 's/##.*//'`"
gtkdialog -p GUI



Um jetzt eine weitere Abfrage zu unseren System zu starten und es auch angezeigt zu bekommen
müssen wir das jetzt verschachteln mit <vbox></vbox>.

# Hauptprogramm
Simple_Current_Systeminfo='
<window  window_position="1" title="'$TITLE$VERSION'" width_request="550" >
<vbox>
<frame '$"Desktop Umgebung"'>  ## Anzeigen der Arbeitsoberflächen Umgebung
----------
</vbox>
</window>
'
      

Ohne der Verschachtelung würden wir dieses Fenster erhalten



#! /bin/bash
# Variablen zum einfachen Handhabung des Programm
TITLE="Einfache Systeminformationen"
VERSION=" 0.1.5"

# Hauptprogramm
Simple_Current_Systeminfo='
<window  window_position="1" title="'$TITLE$VERSION'" width_request="550" >
<frame '$"Desktop Umgebung"'>  ## Anzeigen der Arbeitsoberflächen Umgebung
<text wrap="false" xalign="0" selectable="true">
<input>inxi -S | grep Desktop | cut -d " " -f 13</input>
</text>
</frame>
<frame '$"Running Kernel"'>  ## Laufende Kernelversion
<text wrap="false" xalign="0" selectable="true">
<input>uname -r</input>
</text>
</frame>
<vbox>
<button>
<label>Schließen</label>
<input file icon="exit"></input>
<action type="exit">Simple_Current_Systeminfo</action>
</button>
</vbox>
##</frame>
</window>
'
export GUI="`echo "$Simple_Current_Systeminfo" | sed -e 's/##.*//'`"
gtkdialog -p GUI
   

Mit vbox Verschachtelung:

#! /bin/bash
# Variablen zum einfachen Handhabung des Programm
TITLE="Einfache Systeminformationen"
VERSION=" 0.1.5"

# Hauptprogramm
Simple_Current_Systeminfo='
<window  window_position="1" title="'$TITLE$VERSION'" width_request="550" >
<vbox>
<frame '$"Desktop Umgebung"'>  ## Anzeigen der Arbeitsoberflächen Umgebung
<text wrap="false" xalign="0" selectable="true">
<input>inxi -S | grep Desktop | cut -d " " -f 13</input>
</text>
</frame>
<frame '$"Aktueller Kernel"'>  ## Laufende Kernelversion
<text wrap="false" xalign="0" selectable="true">
<input>uname -r</input>
</text>
</frame>
<vbox>
<button>
<label>Schließen</label>
<input file icon="exit"></input>
<action type="exit">Simple_Current_Systeminfo</action>
</button>
</vbox>
</vbox>
</window>
'
export GUI="`echo "$Simple_Current_Systeminfo" | sed -e 's/##.*//'`"
gtkdialog -p GUI



All diese Abfragen brauchen noch kein eigenes TMP Verzeichnis! Wir schmücken das noch ein wenig
aus.

#! /bin/bash
# Variablen zum einfachen Handhabung des Programm
TITLE="Einfache Systeminformationen"
VERSION=" 0.1.5"

# Hauptprogramm
Simple_Current_Systeminfo='
<window  window_position="1" title="'$TITLE$VERSION'" width_request="550" >
<vbox>
<frame '$"Desktop Umgebung"'>  ## Anzeigen der Arbeitsoberflächen Umgebung
<text wrap="false" xalign="0" selectable="true">
<input>inxi -S | grep Desktop | cut -d " " -f 13</input>
</text>
</frame>
<frame '$"Version"'>  ## Anzeigen der Version
<text wrap="false" xalign="0" selectable="true">
<input file>/etc/version</input>
</text>
</frame>
<frame '$"Aktueller Kernel"'>  ## Laufende Kernelversion
<text wrap="false" xalign="0" selectable="true">
<input>uname -r</input>
</text>
</frame>
<frame '$"Benutzer"'>  ## Anzeigen des Benutzer
<text wrap="false" xalign="0">
<input>whoami</input>
</text>
</frame>
<frame '$"Laufzeit"'>  ## Anzeigen des Betriebszeit
<text wrap="false" xalign="0" selectable="true">
<input>uptime</input>
</text>
</frame>
<vbox>
<button>
<label>Schließen</label>
<input file icon="exit"></input>
<action type="exit">Simple_Current_Systeminfo</action>
</button>
</vbox>
</vbox>
</window>
'
export GUI="`echo "$Simple_Current_Systeminfo" | sed -e 's/##.*//'`"
gtkdialog -p GUI



Nächste Runde mit eigenem TMP-Verzeichnis...

Offline Leiche

  • Global Moderator
  • *
  • Beiträge: 619
  • Gott weiß, ich bin kein Engel
    • Tipps und Tricks
Re: GUI erstellen mit gtkdialog
« Antwort #3 am: 04.März.2015, 23:15:39 »
Nun benötigen wir ein temporäres Verzeichnis um komplexere Ausgaben darstellen zu können.
Dazu verwenden wir if und fi um nicht jedes mal ein Verzeichnis anzulegen.
if [ ! -d /tmp/SiCuSys ]; then
mkdir /tmp/SiCuSys
fi 
In diesem Verzeichnis können wir nun verschiedene temporäre Dateien ablegen. Wie einst schon
ein Forenmitglied aus dem ersten deutschen Forum sagte, sollte man temporäre Dateien nach
Beendigung des Programms löschen. Sollte das Programm mal nicht ordnungsgemäß beendet
worden sein, so können wir das Verzeichnis beim starten des Scripts bereinigen.
rm -rf /tmp/SiCuSys/*
Beim beendigen des Programms können wir das Verzeichnis auch löschen durch
<action>rm -r /tmp/SiCuSys/*</action>
Des weiteren haben wir noch das ein oder andere hinzugefügt zu unserem Programm, das
jetzt wie folgt aussieht.



Der Code lautet:
#! /bin/bash
# Temporäres Verzeichnis abfrage/erstellen
if [ ! -d /tmp/SiCuSys ]; then
mkdir /tmp/SiCuSys
fi
# Temporäres Verzeichnis bereinigen, wenn mal das
# Verzeichnis nicht bereinigt wurde beim schliessen
# des Programms!
rm -rf /tmp/SiCuSys/*
# Variablen zum einfachen Handhabung des Programm
TITLE="Einfache Systeminformationen"
VERSION=" 0.1.5"
SCREEN=`xrandr | grep '*' | sed -e 's/*+//'`
# Audiogerät abfrage
lspci | grep "Audio device" | cut -d ":" -f3 > /tmp/SiCuSys/audio_name
echo -e "
> Ausgabe von  /proc/asound/cards <
" >> /tmp/SiCuSys/audio_name
cat /proc/asound/cards >> /tmp/SiCuSys/audio_name

# Hauptprogramm
Simple_Current_Systeminfo='
<window  window_position="1" title="'$TITLE$VERSION'" width_request="550" >
<vbox>
## cpuinfo - zeigt Informationen zu den CPU an
<frame '$"CPU"'>   
<text wrap="true" xalign="0" selectable="true">
<input>cat /proc/cpuinfo | grep ^"model name" -m1 | cut -d ":" -f2</input>
</text>
</frame>
## ACPI - zeigt Informationen ausgegeben von ACPI
<frame '$"Ladezustand"'> 
<text wrap="true" xalign="0" selectable="true">
<input>acpi -aib</input>
</text>
</frame>
## Anzeigen der Arbeitsoberflächen Umgebung
<frame '$"Desktop Umgebung"'>
<text wrap="false" xalign="0" selectable="true">
<input>inxi -S | grep Desktop | cut -d " " -f 13</input>
</text>
</frame>
## Anzeigen der Version
<frame '$"Version"'> 
<text wrap="false" xalign="0" selectable="true">
<input file>/etc/version</input>
</text>
</frame>
## Laufende Kernelversion
<frame '$"Kernel"'> 
<text wrap="false" xalign="0" selectable="true">
<input>uname -r</input>
</text>
</frame>
## aktuelle Bildschirmgröße
<frame '$"Bildschirmauflösung"'>
<text wrap="false" xalign="0" selectable="true">
<input>echo '"$SCREEN"'</input>
</text>
</frame>
## Anzeigen des Benutzer
<frame '$"Benutzer"'> 
<text wrap="false" xalign="0">
<input>whoami</input>
</text>
</frame>
## Anzeigen des Betriebszeit
<frame '$"Laufzeit"'>
<text wrap="false" xalign="0" selectable="true">
<input>uptime</input>
</text>
</frame>
## Audiogerät abfragen
<frame '$"Audiokarte"'>
<text wrap="true" xalign="0" selectable="true">
<input file>/tmp/SiCuSys/audio_name</input>
</text>
</frame>
<vbox>
<button>
<label>Schließen</label>
<input file icon="exit"></input>
<action>rm -r /tmp/SiCuSys/*</action>
<action type="exit">Simple_Current_Systeminfo</action>
</button>
</vbox>
</vbox>
</window>
'
export GUI="`echo "$Simple_Current_Systeminfo" | sed -e 's/##.*//'`"
gtkdialog -p GUI

Nun sieht das Fenster ziemlich voll aus, daher kümmern wir uns nächstes Mal
um weitere Tabs und auch um weitere Schaltflächen...
« Letzte Änderung: 05.März.2015, 18:58:40 von Leiche »

Offline Leiche

  • Global Moderator
  • *
  • Beiträge: 619
  • Gott weiß, ich bin kein Engel
    • Tipps und Tricks
Re: GUI erstellen mit gtkdialog
« Antwort #4 am: 05.März.2015, 19:47:58 »
Heute ganz kurz und bündig...
Wir hatten in der ersten Post die Abfrage und lassen diese in unser Script einfliessen.
Nicht nur das, da wir auch noch XTERM und die Oyxgen Symbole benötigen, können wir das auch
gleich mal abfragen. Auch können wir für das Terminal die ein oder andere Ausgabe ausgeben.
# Ausgabe für das Terminal
echo $"inxi ist nicht installiert!"
else
echo "inxi ist installiert!"
Somit kann man das Programm über das Terminal starten, um eventuelle Fehler zu erkennen, wenn
es mal nicht startet.

Auch habe ich ein Icon und eine Schaltfläche hinzugefügt, zu der CPU Ausgabe..
## cpuinfo - zeigt Informationen zu den CPU an
<frame '$"CPU"'>
<hbox scrollable="false" space-expand="true" space-fill="true" allow-shrink="true">
<pixmap xalign="0">
<input file>/usr/share/icons/oxygen/32x32/devices/cpu.png</input>
</pixmap>
<text wrap="true" xalign="0" selectable="true">
<input>cat /proc/cpuinfo | grep ^"model name" -m1 | cut -d ":" -f2</input>
</text>
<vbox tooltip-text="'$"Komplette Ausgabe"'">
<button>
<label>'$"CPUINFO"'</label>
<input file icon="info"></input>
<action>xterm -geometry 160x60 -title "/proc/cpuinfo" -hold -e cat /proc/cpuinfo</action>
</button>
</vbox>
</hbox>
</frame>

Vorher sah es wie folgt aus:
## cpuinfo - zeigt Informationen zu den CPU an
<frame '$"CPU"'>   
<text wrap="true" xalign="0" selectable="true">
<input>cat /proc/cpuinfo | grep ^"model name" -m1 | cut -d ":" -f2</input>
</text>
</frame>

Wenn Sie nun über die Schaltfläche verweilen mit dem Mauszeiger, erhalten Sie ein Tooltipp.
Verantwortlich ist diese Zeile tooltip-text="'$"Komplette Ausgabe"'".

Aussedem haben wir noch INXI in der untersten Schaltfläche eingepflegt.
<vbox tooltip-text="'$"Inxi -FxzMGS"'">
<button>
<label>'$"INXI"'</label>
<input file icon="info"></input>
<action>xterm -geometry 100x40 -bg black -title "inxi_output" -hold -e inxi -FxzMGS</action>
</button>
</vbox>
         

Nächste Runde kommen dann die Tabs ;)

Noch einmal das ganze Script:
#! /bin/bash
# Abfrage nach benötigte Programme
if [ ! -f /usr/bin/inxi ]; then
export INFO_DIALOG='
<window window_position="1" title="Abfrage zu inxi" icon-name="info">
<vbox>
<hbox border-width="30">
<pixmap>
<input file icon="gtk-dialog-info"></input>
</pixmap>
<text use-markup="True">
<label>"<b>INXI wurde nicht gefunden!</b>
Installieren Sie INXI über ihren Paket Managment."</label>
</text>
</hbox>
<hseparator></hseparator>
<hbox homogeneous="true">
<button ok></button>
</hbox>
</vbox>
</window>
'
gtkdialog --program=INFO_DIALOG
# Ausgabe für das Terminal
echo $"inxi ist nicht installiert!"
else
echo "inxi ist installiert!"
fi
if [ ! -f /usr/bin/xterm ]; then
export INFO_DIALOG='
<window window_position="1" title="Abfrage zu xterm" icon-name="info">
<vbox>
<hbox border-width="30">
<pixmap>
<input file icon="gtk-dialog-info"></input>
</pixmap>
<text use-markup="True">
<label>"<b>XTERM wurde nicht gefunden!</b>
Installieren Sie XTERM über ihren Paket Managment."</label>
</text>
</hbox>
<hseparator></hseparator>
<hbox homogeneous="true">
<button ok></button>
</hbox>
</vbox>
</window>
'
gtkdialog --program=INFO_DIALOG
# Ausgabe für das Terminal
echo $"xterm ist nicht installiert!"
else
echo "xterm ist installiert!"
fi
if
 [ ! -d /usr/share/icons/oxygen ]; then
export INFO_DIALOG='
<window window_position="1" title="Abfrage zu Oxygen Symbole" icon-name="info">
<vbox>
<hbox border-width="30">
<pixmap>
<input file icon="gtk-dialog-info"></input>
</pixmap>
<text use-markup="True">
<label>"<b>Oxygen Symbole wurden nicht gefunden!</b>
Installieren Sie Oxygen Icon Themen über ihren Paket Managment."</label>
</text>
</hbox>
<hseparator></hseparator>
<hbox homogeneous="true">
<button ok></button>
</hbox>
</vbox>
</window>
'
gtkdialog --program=INFO_DIALOG
# Ausgabe für das Terminal
echo $"Oxygen Symbole sind nicht installiert!"
else
echo "Oxygen Symbole sind installiert!"
fi
# Temporäres Verzeichnis abfrage/erstellen
if [ ! -d /tmp/SiCuSys ]; then
mkdir /tmp/SiCuSys
fi
# Temporäres Verzeichnis bereinigen, wenn mal das
# Verzeichnis nicht bereinigt wurde beim schliessen
# des Programms!
rm -rf /tmp/SiCuSys/*
# Variablen zum einfachen Handhabung des Programm
TITLE="Einfache Systeminformationen"
VERSION=" 0.1.5"
SCREEN=`xrandr | grep '*' | sed -e 's/*+//'`
# Audiogerät abfrage
lspci | grep "Audio device" | cut -d ":" -f3 > /tmp/SiCuSys/audio_name
echo -e "
> Ausgabe von  /proc/asound/cards <
" >> /tmp/SiCuSys/audio_name
cat /proc/asound/cards >> /tmp/SiCuSys/audio_name

# Hauptprogramm
Simple_Current_Systeminfo='
<window  window_position="1" title="'$TITLE$VERSION'" width_request="550" >
<vbox>
## cpuinfo - zeigt Informationen zu den CPU an
<frame '$"CPU"'>
<hbox scrollable="false" space-expand="true" space-fill="true" allow-shrink="true">
<pixmap xalign="0">
<input file>/usr/share/icons/oxygen/32x32/devices/cpu.png</input>
</pixmap>
<text wrap="true" xalign="0" selectable="true">
<input>cat /proc/cpuinfo | grep ^"model name" -m1 | cut -d ":" -f2</input>
</text>
<vbox tooltip-text="'$"Komplette Ausgabe"'">
<button>
<label>'$"CPUINFO"'</label>
<input file icon="info"></input>
<action>xterm -geometry 160x60 -title "/proc/cpuinfo" -hold -e cat /proc/cpuinfo</action>
</button>
</vbox>
</hbox>
</frame>
## ACPI - zeigt Informationen ausgegeben von ACPI
<frame '$"Ladezustand"'> 
<text wrap="true" xalign="0" selectable="true">
<input>acpi -aib</input>
</text>
</frame>
## Anzeigen der Arbeitsoberflächen Umgebung
<frame '$"Desktop Umgebung"'>
<text wrap="false" xalign="0" selectable="true">
<input>inxi -S | grep Desktop | cut -d " " -f 13</input>
</text>
</frame>
## Anzeigen der Version
<frame '$"Version"'> 
<text wrap="false" xalign="0" selectable="true">
<input file>/etc/version</input>
</text>
</frame>
## Laufende Kernelversion
<frame '$"Kernel"'> 
<text wrap="false" xalign="0" selectable="true">
<input>uname -r</input>
</text>
</frame>
## aktuelle Bildschirmgröße
<frame '$"Bildschirmauflösung"'>
<text wrap="false" xalign="0" selectable="true">
<input>echo '"$SCREEN"'</input>
</text>
</frame>
## Anzeigen des Benutzer
<frame '$"Benutzer"'> 
<text wrap="false" xalign="0">
<input>whoami</input>
</text>
</frame>
## Anzeigen des Betriebszeit
<frame '$"Laufzeit"'>
<text wrap="false" xalign="0" selectable="true">
<input>uptime</input>
</text>
</frame>
## Audiogerät abfragen
<frame '$"Audiokarte"'>
<text wrap="true" xalign="0" selectable="true">
<input file>/tmp/SiCuSys/audio_name</input>
</text>
</frame>
<hbox>
<vbox tooltip-text="'$"Inxi -FxzMGS"'">
<button>
<label>'$"INXI"'</label>
<input file icon="info"></input>
<action>xterm -geometry 100x40 -bg black -title "inxi_output" -hold -e inxi -FxzMGS</action>
</button>
</vbox>
<vbox tooltip-text="'$"Beendet $TITLE"'">
<button>
<label>Schließen</label>
<input file icon="exit"></input>
<action>rm -r /tmp/SiCuSys/*</action>
<action type="exit">Simple_Current_Systeminfo</action>
</button>
</vbox>
</hbox>
</vbox>
</window>
'
export GUI="`echo "$Simple_Current_Systeminfo" | sed -e 's/##.*//'`"
gtkdialog -p GUI

                  

Offline Leiche

  • Global Moderator
  • *
  • Beiträge: 619
  • Gott weiß, ich bin kein Engel
    • Tipps und Tricks
Re: GUI erstellen mit gtkdialog
« Antwort #5 am: 14.März.2015, 22:58:59 »
Wie schon bereits erwähnt sind Kommentare durch sed kein Problem und wir können somit unser
Script für andere und auch für uns Leserlicher machen. Wenn man ein Script mit mehr als 900 Zeilen hat,
kann man schon mal den Überblick verlieren. Auch das Einfügen (Einzug) erleichtert das Lesen des Scripts.
Zitat
<window>
   <vbox>
      <notebook>
         <hbox>
            <frame>
               <...>
               </...>
            </frame>
         </hbox>
         <hbox>
            <frame>
               <--->
               </--->
            </frame>
         </hbox>   
      </notebook>
   </vbox>   
</window>
Natürlich garantiere ich nicht, das alle meine Scripte auch wirklich danach erstellt wurden...

Wir wollen nun Tabs hinzufügen, um das Fenster übersichtlicher zu gestalten. Mit <notebook labels="STANDARD|AUDIO/VIDEO">
bestimmen wir gleich mal, wieviele Tabs wir möchten und haben die auch gleich mal benannt. Wichtig für notebook sind die
danach folgende vbox oder hbox, damit wird bestimmt, was im jeweiligen Tab angezeigt werden soll. 


Möchte man ein anderes Symbol haben für das Fenster, kann man das mit icon-name="xx" realisieren. Hat man jedoch eigene
Symbole erstellt und will diese anzeigen, geht das nur über die Installation in den icons Ordner vom System. Alle anderen
Versuche scheiterten hier bei mir. Man kann auch im Home Ordner das Symbole ablegen ~/.local/share/icons/hicolor/32x32/apps.
Wenn nicht vorhanden, dann diese Ordner Struktur anlegen.
# Hauptprogramm
Simple_Current_Systeminfo='
<window  window_position="1" title="'$TITLE$VERSION'" width_request="550" icon-name="info">


Wie immer das ganze Script und ein Shot...

#! /bin/bash
# Abfrage nach benötigte Programme
if [ ! -f /usr/bin/inxi ]; then
export INFO_DIALOG='
<window window_position="1" title="Abfrage zu inxi" icon-name="info">
<vbox>
<hbox border-width="30">
<pixmap>
<input file icon="gtk-dialog-info"></input>
</pixmap>
<text use-markup="True">
<label>"<b>INXI wurde nicht gefunden!</b>
Installieren Sie INXI über ihren Paket Managment."</label>
</text>
</hbox>
<hseparator></hseparator>
<hbox homogeneous="true">
<button ok></button>
</hbox>
</vbox>
</window>
'
gtkdialog --program=INFO_DIALOG
# Ausgabe für das Terminal
echo $"inxi ist nicht installiert!"
else
echo "inxi ist installiert!"
fi
if [ ! -f /usr/bin/xterm ]; then
export INFO_DIALOG='
<window window_position="1" title="Abfrage zu xterm" icon-name="info">
<vbox>
<hbox border-width="30">
<pixmap>
<input file icon="gtk-dialog-info"></input>
</pixmap>
<text use-markup="True">
<label>"<b>XTERM wurde nicht gefunden!</b>
Installieren Sie XTERM über ihren Paket Managment."</label>
</text>
</hbox>
<hseparator></hseparator>
<hbox homogeneous="true">
<button ok></button>
</hbox>
</vbox>
</window>
'
gtkdialog --program=INFO_DIALOG
# Ausgabe für das Terminal
echo $"xterm ist nicht installiert!"
else
echo "xterm ist installiert!"
fi
if
 [ ! -d /usr/share/icons/oxygen ]; then
export INFO_DIALOG='
<window window_position="1" title="Abfrage zu Oxygen Symbole" icon-name="info">
<vbox>
<hbox border-width="30">
<pixmap>
<input file icon="gtk-dialog-info"></input>
</pixmap>
<text use-markup="True">
<label>"<b>Oxygen Symbole wurden nicht gefunden!</b>
Installieren Sie Oxygen Icon Themen über ihren Paket Managment."</label>
</text>
</hbox>
<hseparator></hseparator>
<hbox homogeneous="true">
<button ok></button>
</hbox>
</vbox>
</window>
'
gtkdialog --program=INFO_DIALOG
# Ausgabe für das Terminal
echo $"Oxygen Symbole sind nicht installiert!"
else
echo "Oxygen Symbole sind installiert!"
fi
# Temporäres Verzeichnis abfrage/erstellen
if [ ! -d /tmp/SiCuSys ]; then
mkdir /tmp/SiCuSys
fi
# Temporäres Verzeichnis bereinigen, wenn mal das
# Verzeichnis nicht bereinigt wurde beim schliessen
# des Programms!
rm -rf /tmp/SiCuSys/*
# Variablen zum einfachen Handhabung des Programm
TITLE="Einfache Systeminformationen"
VERSION=" 0.1.5"
SCREEN=`xrandr | grep '*' | sed -e 's/*+//'`
# Audiogerät abfrage
lspci | grep "Audio device" | cut -d ":" -f3 > /tmp/SiCuSys/audio_name
echo -e "
> Ausgabe von  /proc/asound/cards <
" >> /tmp/SiCuSys/audio_name
cat /proc/asound/cards >> /tmp/SiCuSys/audio_name

# Hauptprogramm
Simple_Current_Systeminfo='
<window  window_position="1" title="'$TITLE$VERSION'" width_request="550" icon-name="info">
<vbox>
<notebook labels="STANDARD|AUDIO/VIDEO">
##----------------------------------------------------------------------
##------------------------- STANDARD -----------------------------------
##----------------------------------------------------------------------
<vbox>
##-------- cpuinfo - zeigt Informationen zu den CPU an -----------------
<frame '$"CPU"'>
<hbox scrollable="false" space-expand="true" space-fill="true" allow-shrink="true">
<pixmap xalign="0">
<input file>/usr/share/icons/oxygen/32x32/devices/cpu.png</input>
</pixmap>
<text wrap="true" xalign="0" selectable="true">
<input>cat /proc/cpuinfo | grep ^"model name" -m1 | cut -d ":" -f2</input>
</text>
<vbox tooltip-text="'$"Komplette Ausgabe"'">
<button>
<label>'$"CPUINFO"'</label>
<input file icon="info"></input>
<action>xterm -geometry 160x60 -title "/proc/cpuinfo" -hold -e cat /proc/cpuinfo</action>
</button>
</vbox>
</hbox>
</frame>
##----------- ACPI - zeigt Informationen ausgegeben von ACPI -----------
<frame '$"Ladezustand"'> 
<text wrap="true" xalign="0" selectable="true">
<input>acpi -aib</input>
</text>
</frame>
##------------- Anzeigen der Arbeitsoberflächen Umgebung ---------------
<frame '$"Desktop Umgebung"'>
<text wrap="false" xalign="0" selectable="true">
<input>inxi -S | grep Desktop | cut -d " " -f 13</input>
</text>
</frame>
##--------------------- Anzeigen der Version ---------------------------
<frame '$"Version"'> 
<text wrap="false" xalign="0" selectable="true">
<input file>/etc/version</input>
</text>
</frame>
##--------------------- Laufende Kernelversion -------------------------
<frame '$"Kernel"'> 
<text wrap="false" xalign="0" selectable="true">
<input>uname -r</input>
</text>
</frame>
##-------------------- aktuelle Bildschirmgröße ------------------------
<frame '$"Bildschirmauflösung"'>
<text wrap="false" xalign="0" selectable="true">
<input>echo '"$SCREEN"'</input>
</text>
</frame>
##---------------------- Anzeigen des Benutzer -------------------------
<frame '$"Benutzer"'> 
<text wrap="false" xalign="0">
<input>whoami</input>
</text>
</frame>
##------------------- Anzeigen des Betriebszeit ------------------------
<frame '$"Laufzeit"'>
<text wrap="false" xalign="0" selectable="true">
<input>uptime</input>
</text>
</frame>
</vbox>
##-----------------------------------------------------------------------
##------------------------ AUDIO/VIDEO ----------------------------------
##-----------------------------------------------------------------------
<vbox>
##----------------------- Audiogerät abfragen --------------------------
<frame '$"Audiokarte"'>
<text wrap="true" xalign="0" selectable="true">
<input file>/tmp/SiCuSys/audio_name</input>
</text>
</frame>
##----------------------- Grafikkarte abfragen -------------------------
<frame '$"Grafikkarte"'>
<text wrap="true" xalign="0" selectable="true">
<input>lspci -nnk | grep -i VGA -A2</input>
</text>
</frame>
</vbox>
</notebook>
##----------------------------------------------------------------------
##---------------------- Untere Schaltflächen --------------------------
##----------------------------------------------------------------------
<hbox>
<vbox tooltip-text="'$"Inxi -FxzMGS"'">
<button>
<label>'$"INXI"'</label>
<input file icon="info"></input>
<action>xterm -geometry 100x40 -bg black -title "inxi_output" -hold -e inxi -FxzMGS</action>
</button>
</vbox>
<vbox tooltip-text="'$"Beendet $TITLE"'">
<button>
<label>Schließen</label>
<input file icon="exit"></input>
<action>rm -r /tmp/SiCuSys/*</action>
<action type="exit">Simple_Current_Systeminfo</action>
</button>
</vbox>
</hbox>
</vbox>
</window>
'
export GUI="`echo "$Simple_Current_Systeminfo" | sed -e 's/##.*//'`"
gtkdialog -p GUI




« Letzte Änderung: 15.März.2015, 11:42:22 von Leiche »

Offline Leiche

  • Global Moderator
  • *
  • Beiträge: 619
  • Gott weiß, ich bin kein Engel
    • Tipps und Tricks
Re: GUI erstellen mit gtkdialog
« Antwort #6 am: 15.März.2015, 12:40:30 »
Heute wollen wir ein Informationsfenster generieren, was aussagt, was unser Programm eigentlich ist.
Das können wir auch in dass jetzige Script unterbringen, oder als Art Modul (eigenes Script) integrieren.(Dazu später
mehr).

Über unser # Hauptprogramm legen wir
Zitat
# Über
export ABOUT='
<window window_position="1" icon-name="info" width-request="600"  title="'$"About"'">

an. Die Zeile <window window_position="1" icon-name="info" width-request="600"  title="'$"Über"'">
erinnert an die Zeile vom Hauptfenster. Nur den Titel haben wir geändert in Über, kann man machen,
muss man aber nicht. ( An dieser Stelle mal etwas über "'$"bla"'", möchte man das Script in anderen
Sprachen übersetzen wollen, so muss man im Header die Zeilen export TEXTDOMAIN=SiCuSys
export TEXTDOMAINDIR="/usr/share/locale"
angeben. Will man nicht das Programm übersetzen lassen, reicht ein
"bla").

Dieses Script füllen wir nun mit den benötigen Details, um unser Programm kurz vorzustellen.
Wichtig für das Über Fenster ist eine Variable, um das Hilfe Fenster zu schließen, ohne das ganze Programm zu
beenden.
Zitat
<vbox><hbox> 
         <button>
            <label>OK</label>
            <variable>ABOUT</variable>
            <action type="closewindow">ABOUT</action>
         </button>
      </hbox></vbox>
   </frame>
</window>

Im Hauptfenster müssen wir noch eine Schaltfläche anlegen, um das Hilfe Fenster öffnen zu können.
Zitat
<vbox tooltip-text="'$"Was ist es..."'">
         <button>
            <label>'$"Über"'</label>
            <input file icon="help"></input>
            <action type="launch">ABOUT</action>
         </button>
      </vbox>

Nun haben wir schon wieder ein Teil hinzugefügt zu unser Programm und das mit wenig Aufwand.
Wie immer ein Bild und das ganze Script.



#! /bin/bash
# Abfrage nach benötigte Programme
if [ ! -f /usr/bin/inxi ]; then
export INFO_DIALOG='
<window window_position="1" title="Abfrage zu inxi" icon-name="info">
<vbox>
<hbox border-width="30">
<pixmap>
<input file icon="gtk-dialog-info"></input>
</pixmap>
<text use-markup="True">
<label>"<b>INXI wurde nicht gefunden!</b>
Installieren Sie INXI über ihren Paket Managment."</label>
</text>
</hbox>
<hseparator></hseparator>
<hbox homogeneous="true">
<button ok></button>
</hbox>
</vbox>
</window>
'
gtkdialog --program=INFO_DIALOG
# Ausgabe für das Terminal
echo $"inxi ist nicht installiert!"
else
echo "inxi ist installiert!"
fi
if [ ! -f /usr/bin/xterm ]; then
export INFO_DIALOG='
<window window_position="1" title="Abfrage zu xterm" icon-name="info">
<vbox>
<hbox border-width="30">
<pixmap>
<input file icon="gtk-dialog-info"></input>
</pixmap>
<text use-markup="True">
<label>"<b>XTERM wurde nicht gefunden!</b>
Installieren Sie XTERM über ihren Paket Managment."</label>
</text>
</hbox>
<hseparator></hseparator>
<hbox homogeneous="true">
<button ok></button>
</hbox>
</vbox>
</window>
'
gtkdialog --program=INFO_DIALOG
# Ausgabe für das Terminal
echo $"xterm ist nicht installiert!"
else
echo "xterm ist installiert!"
fi
if
 [ ! -d /usr/share/icons/oxygen ]; then
export INFO_DIALOG='
<window window_position="1" title="Abfrage zu Oxygen Symbole" icon-name="info">
<vbox>
<hbox border-width="30">
<pixmap>
<input file icon="gtk-dialog-info"></input>
</pixmap>
<text use-markup="True">
<label>"<b>Oxygen Symbole wurden nicht gefunden!</b>
Installieren Sie Oxygen Icon Themen über ihren Paket Managment."</label>
</text>
</hbox>
<hseparator></hseparator>
<hbox homogeneous="true">
<button ok></button>
</hbox>
</vbox>
</window>
'
gtkdialog --program=INFO_DIALOG
# Ausgabe für das Terminal
echo $"Oxygen Symbole sind nicht installiert!"
else
echo "Oxygen Symbole sind installiert!"
fi
# Temporäres Verzeichnis abfrage/erstellen
if [ ! -d /tmp/SiCuSys ]; then
mkdir /tmp/SiCuSys
fi
# Temporäres Verzeichnis bereinigen, wenn mal das
# Verzeichnis nicht bereinigt wurde beim schliessen
# des Programms!
rm -rf /tmp/SiCuSys/*
# Variablen zum einfachen Handhabung des Programm
TITLE="Einfache Systeminformationen"
VERSION=" 0.1.5"
SCREEN=`xrandr | grep '*' | sed -e 's/*+//'`
# Audiogerät abfrage
lspci | grep "Audio device" | cut -d ":" -f3 > /tmp/SiCuSys/audio_name
echo -e "
> Ausgabe von  /proc/asound/cards <
" >> /tmp/SiCuSys/audio_name
cat /proc/asound/cards >> /tmp/SiCuSys/audio_name

# Über
export ABOUT='
<window window_position="1" icon-name="info" width-request="600"  title="'$"Über"'">
<frame>
<vbox scrollable="false" space-expand="true" space-fill="true" allow-shrink="true">
<text use-markup="True" width-chars="30">
<label>"<span color='"'blue'"'><b>SiCuSys</b></span>"</label>
</text>

<text use-markup="True">
<label>"'$"<b>Version "$VERSION"</b>"'"</label>
</text>
   
<text  use-markup="True">
<label>"'$"<b>Autor:</b> D.M-Wilhelm [leiche]"'"</label>
</text>

<text>
<label>"'$"Ein einfacher Weg Informationen über ihr System zu erfahren!"'" </label>
</text>
<text use-markup="True">
<label>"<span color='"'red'"'><b>*******************************************************************************</b></span>"</label>
</text>
<text use-markup="True">
<label>"'$"Hier bei handelt es sich um ein <b>Tutorial</b>, das ganze Script git es nur in den <b>PCLinuxOS Paketquellen</b>!"'"</label>
</text>
<text use-markup="True">
<label>"<span color='"'red'"'><b>*******************************************************************************</b></span>"</label>
</text>
<text use-markup="True">
<label>"'$"<b>Freigegeben</b> 2011-2015"'"</label>
</text>

<text use-markup="True">
<label>"<b>'$"Unter GPLv2 Lizenz"'</b>"</label>
</text>
</vbox>
<vbox><hbox> 
<button>
<label>OK</label>
<variable>ABOUT</variable>
<action type="closewindow">ABOUT</action>
</button>
</hbox></vbox>
</frame>
</window>
'

# Hauptprogramm
Simple_Current_Systeminfo='
<window  window_position="1" title="'$TITLE$VERSION'" width_request="550" icon-name="info">
<vbox>
<notebook labels="STANDARD|AUDIO/VIDEO">
##----------------------------------------------------------------------
##------------------------- STANDARD -----------------------------------
##----------------------------------------------------------------------
<vbox>
##-------- cpuinfo - zeigt Informationen zu den CPU an -----------------
<frame '$"CPU"'>
<hbox scrollable="false" space-expand="true" space-fill="true" allow-shrink="true">
<pixmap xalign="0">
<input file>/usr/share/icons/oxygen/32x32/devices/cpu.png</input>
</pixmap>
<text wrap="true" xalign="0" selectable="true">
<input>cat /proc/cpuinfo | grep ^"model name" -m1 | cut -d ":" -f2</input>
</text>
<vbox tooltip-text="'$"Komplette Ausgabe"'">
<button>
<label>'$"CPUINFO"'</label>
<input file icon="info"></input>
<action>xterm -geometry 160x60 -title "/proc/cpuinfo" -hold -e cat /proc/cpuinfo</action>
</button>
</vbox>
</hbox>
</frame>
##----------- ACPI - zeigt Informationen ausgegeben von ACPI -----------
<frame '$"Ladezustand"'> 
<text wrap="true" xalign="0" selectable="true">
<input>acpi -aib</input>
</text>
</frame>
##------------- Anzeigen der Arbeitsoberflächen Umgebung ---------------
<frame '$"Desktop Umgebung"'>
<text wrap="false" xalign="0" selectable="true">
<input>inxi -S | grep Desktop | cut -d " " -f 13</input>
</text>
</frame>
##--------------------- Anzeigen der Version ---------------------------
<frame '$"Version"'> 
<text wrap="false" xalign="0" selectable="true">
<input file>/etc/version</input>
</text>
</frame>
##--------------------- Laufende Kernelversion -------------------------
<frame '$"Kernel"'> 
<text wrap="false" xalign="0" selectable="true">
<input>uname -r</input>
</text>
</frame>
##-------------------- aktuelle Bildschirmgröße ------------------------
<frame '$"Bildschirmauflösung"'>
<text wrap="false" xalign="0" selectable="true">
<input>echo '"$SCREEN"'</input>
</text>
</frame>
##---------------------- Anzeigen des Benutzer -------------------------
<frame '$"Benutzer"'> 
<text wrap="false" xalign="0">
<input>whoami</input>
</text>
</frame>
##------------------- Anzeigen des Betriebszeit ------------------------
<frame '$"Laufzeit"'>
<text wrap="false" xalign="0" selectable="true">
<input>uptime</input>
</text>
</frame>
</vbox>
##-----------------------------------------------------------------------
##------------------------ AUDIO/VIDEO ----------------------------------
##-----------------------------------------------------------------------
<vbox>
##----------------------- Audiogerät abfragen --------------------------
<frame '$"Audiokarte"'>
<text wrap="true" xalign="0" selectable="true">
<input file>/tmp/SiCuSys/audio_name</input>
</text>
</frame>
##----------------------- Grafikkarte abfragen -------------------------
<frame '$"Grafikkarte"'>
<text wrap="true" xalign="0" selectable="true">
<input>lspci -nnk | grep -i VGA -A2</input>
</text>
</frame>
</vbox>
</notebook>
##----------------------------------------------------------------------
##---------------------- Untere Schaltflächen --------------------------
##----------------------------------------------------------------------
<hbox>
<vbox tooltip-text="'$"Was ist es..."'">
<button>
<label>'$"Über"'</label>
<input file icon="help"></input>
<action type="launch">ABOUT</action>
</button>
</vbox>
<vbox tooltip-text="'$"Inxi -FxzMGS"'">
<button>
<label>'$"INXI"'</label>
<input file icon="info"></input>
<action>xterm -geometry 100x40 -bg black -title "inxi_output" -hold -e inxi -FxzMGS</action>
</button>
</vbox>
<vbox tooltip-text="'$"Beendet $TITLE"'">
<button>
<label>Schließen</label>
<input file icon="exit"></input>
<action>rm -r /tmp/SiCuSys/*</action>
<action type="exit">Simple_Current_Systeminfo</action>
</button>
</vbox>
</hbox>
</vbox>
</window>
'
export GUI="`echo "$Simple_Current_Systeminfo" | sed -e 's/##.*//'`"
gtkdialog -p GUI
      
« Letzte Änderung: 16.März.2015, 11:35:48 von Leiche »

Offline planlos

  • Beiträge: 502
    • the best linux for ever
Re: GUI erstellen mit gtkdialog
« Antwort #7 am: 16.März.2015, 03:34:43 »
Wo ist das Bild?  8)

Es sind die kleinen Dinge, die das Leben schön machen, jemanden aber auch zum Verzweifeln bringen können.
Kernel 4.11.3-pclos2 - Intel(R) Pentium(R) CPU G3220 @ 3.00GHz - RAM: 16 GB - nVidia GeForce 9400 GT

Offline Leiche

  • Global Moderator
  • *
  • Beiträge: 619
  • Gott weiß, ich bin kein Engel
    • Tipps und Tricks
Re: GUI erstellen mit gtkdialog
« Antwort #8 am: 16.März.2015, 09:21:57 »
Moin,

Also wenn mich meine Hardware nicht täuscht, über den Code ;)

Regards
Daniel

Gesendet von Hero8020D

Offline planlos

  • Beiträge: 502
    • the best linux for ever
Re: GUI erstellen mit gtkdialog
« Antwort #9 am: 16.März.2015, 13:00:24 »
ok, liegt wohl an der Verbindung
nun kann ich wenigstens schon mal sehen, wo das Bild hin soll


geladen wird es bei mir aber nicht :'(

Es sind die kleinen Dinge, die das Leben schön machen, jemanden aber auch zum Verzweifeln bringen können.
Kernel 4.11.3-pclos2 - Intel(R) Pentium(R) CPU G3220 @ 3.00GHz - RAM: 16 GB - nVidia GeForce 9400 GT

Offline Leiche

  • Global Moderator
  • *
  • Beiträge: 619
  • Gott weiß, ich bin kein Engel
    • Tipps und Tricks
Re: GUI erstellen mit gtkdialog
« Antwort #10 am: 16.März.2015, 19:45:48 »
Versuch mal den direkt Link
http://min.us/i/UqYuxHeXGg0H

Regards
Daniel

Offline planlos

  • Beiträge: 502
    • the best linux for ever
Re: GUI erstellen mit gtkdialog
« Antwort #11 am: 16.März.2015, 23:09:00 »
Problem gelöst
über Tor-Browser kann ich dein Bild sehen
keine Ahnung, warum die hier minus blocken

Es sind die kleinen Dinge, die das Leben schön machen, jemanden aber auch zum Verzweifeln bringen können.
Kernel 4.11.3-pclos2 - Intel(R) Pentium(R) CPU G3220 @ 3.00GHz - RAM: 16 GB - nVidia GeForce 9400 GT

Offline Leiche

  • Global Moderator
  • *
  • Beiträge: 619
  • Gott weiß, ich bin kein Engel
    • Tipps und Tricks
Re: GUI erstellen mit gtkdialog
« Antwort #12 am: 17.März.2015, 08:51:20 »
Immer mal wieder den ersten Post im Auge behalten, dort werden immer mal wieder kleine Informationen einfließen, wie halt heute.

Wenn fragen sind oder halt Verbesserungsvorschläge, so posten, ansonsten fahre ich wie bisher fort...

Regards
Daniel

Offline Leiche

  • Global Moderator
  • *
  • Beiträge: 619
  • Gott weiß, ich bin kein Engel
    • Tipps und Tricks
Re: GUI erstellen mit gtkdialog
« Antwort #13 am: 17.März.2015, 22:03:17 »
Weiter gehts...

Bei unserem Programm soll es sich ja bekanntlich um Informationen handeln. Wieso also nicht Informationen
 ausgeben über den fehlerhaften Zustand. Das heißt es nicht, das jeder Fehler auch gleich Kritisch ist.
 Also kein Ansturm auf die Foren starten. Wenn man das System neu startet und dann die Fehleranalyse startet
 bekommt man einen guten Eindruck wie es um das System steht, was im Kernel unterstützt wird oder was halt
 fehlt.
 
 Meistens fragt man diesen Zustand via DMESG ab, gerne genommen wird
 dmesg | grep -i error oder via XORG
 grep 'EE' /var/log/Xorg.0.log
 Wir können das aber einfacher haben ohne jedesmal die Konsole zu starten, in dem wir das in unser Script
 integrieren. Dazu erweitern wir die Tabs um ein weiteren Eintrag.
 <notebook labels="STANDARD|AUDIO/VIDEO|FEHLERAUSGABE">
 
 Und fügen dann noch dieses hinzu...
 
Zitat
##----------------------------------------------------------------------
##-------------------------- Fehlerausgabe -----------------------------
##----------------------------------------------------------------------
         <vbox>
##------------------------- Fehler anzeigen ----------------------------            
            <frame '$"DMESG Ausgabe"'>
               <hbox scrollable="true"  space-expand="true" space-fill="true" allow-shrink="true">
                  <pixmap xalign="0" tooltip-text="'$"Prüfe auf Fehler beim laden des laufenden Kernel!"'">
                     <input file>/usr/share/icons/oxygen/32x32/apps/hwinfo.png</input>
                  </pixmap>
                  <vbox>
                     <text use-markup="True" width-chars="30" xalign="0">
                        <label>"'$"Fehler"'"</label>
                     </text>
                     <text wrap="false" xalign="0" selectable="true">
                        <input>dmesg | grep -i error</input>
                     </text>
                     <text use-markup="True" width-chars="30" xalign="0">
                        <label>"'$"Fehlt"'"</label>
                     </text>
                     <text wrap="false" xalign="0" selectable="true">
                        <input>dmesg | grep -i fail</input>
                     </text>
                     <text use-markup="True" width-chars="30" xalign="0">
                        <label>"'$"Warnung"'"</label>
                     </text>
                     <text wrap="false" xalign="0" selectable="true">
                        <input>dmesg | grep -i warn</input>
                     </text>
                  </vbox>
               </hbox>
            </frame>
            
## -------------------------------- Fehler anzeigen --------------------            
            <frame '$"XORG Ausgabe"'> 
               <hbox scrollable="true"  space-expand="true" space-fill="true" allow-shrink="true">
                  <pixmap xalign="0" tooltip-text="'$"Fehlerausgabe entdeckt durch XORG!"'">
                     <input file>/usr/share/icons/oxygen/32x32/apps/hwinfo.png</input>
                  </pixmap>
                  <vbox>
                     <text use-markup="True" width-chars="30" xalign="0">
                        <label>"'$"Fehler"'"</label>
                     </text>
                     <text wrap="false" xalign="0" selectable="true">
                        <input>grep 'EE' /var/log/Xorg.0.log </input>
                     </text>
                     <text use-markup="True" width-chars="30" xalign="0">
                        <label>"'$"Warnung"'"</label>
                     </text>
                     <text wrap="false" xalign="0" selectable="true">
                        <input>grep 'WW' /var/log/Xorg.0.log </input>
                     </text>
                     <text use-markup="True" width-chars="30" xalign="0">
                        <label>"'$"Nicht inplementiert"'"</label>
                     </text>
                     <text wrap="false" xalign="0" selectable="true">
                        <input>grep 'NI' /var/log/Xorg.0.log </input>
                     </text>
                     <text use-markup="True" width-chars="30" xalign="0">
                        <label>"'$"Unbekannt"'"</label>
                     </text>
                     <text wrap="false" xalign="0" selectable="true">
                        <input>grep '??' /var/log/Xorg.0.log </input>
                     </text>
                  </vbox>
               </hbox>
            </frame>
         </vbox>   
         



Wollen wir nun nicht immer, diese Fehlerausgabe sehen, (WW) warning, (EE) error, (NI) not implemented, (??) unknown.
hilft sed aus. Der Befehl wäre grep 'WW' /var/log/Xorg.0.log | sed s/"(WW) warning.*//"
grep 'WW' /var/log/Xorg.0.log
        (WW) warning, (EE) error, (NI) not implemented, (??) unknown.
[    27.708] (WW) Falling back to old probe method for v4l
[    27.708] (WW) Falling back to old probe method for fglrx
[    27.916] (WW) fglrx: No matching Device section for instance (BusID PCI:0@0:1:1) found
[    33.402] (WW) fglrx(0): board is an unknown third party board, chipset is supported
[daniel@daniel-64bit ~]$ grep 'WW' /var/log/Xorg.0.log | sed s/"(WW) warning.*//"

[    27.708] (WW) Falling back to old probe method for v4l
[    27.708] (WW) Falling back to old probe method for fglrx
[    27.916] (WW) fglrx: No matching Device section for instance (BusID PCI:0@0:1:1) found
[    33.402] (WW) fglrx(0): board is an unknown third party board, chipset is supported

Im Programm sähe das wie folgt aus:



Das ganze Script zum ausprobieren:

#! /bin/bash
# Abfrage nach benötigte Programme
if [ ! -f /usr/bin/inxi ]; then
export INFO_DIALOG='
<window window_position="1" title="Abfrage zu inxi" icon-name="info">
<vbox>
<hbox border-width="30">
<pixmap>
<input file icon="gtk-dialog-info"></input>
</pixmap>
<text use-markup="True">
<label>"<b>INXI wurde nicht gefunden!</b>
Installieren Sie INXI über ihren Paket Managment."</label>
</text>
</hbox>
<hseparator></hseparator>
<hbox homogeneous="true">
<button ok></button>
</hbox>
</vbox>
</window>
'
gtkdialog --program=INFO_DIALOG
# Ausgabe für das Terminal
echo $"inxi ist nicht installiert!"
else
echo "inxi ist installiert!"
fi
if [ ! -f /usr/bin/xterm ]; then
export INFO_DIALOG='
<window window_position="1" title="Abfrage zu xterm" icon-name="info">
<vbox>
<hbox border-width="30">
<pixmap>
<input file icon="gtk-dialog-info"></input>
</pixmap>
<text use-markup="True">
<label>"<b>XTERM wurde nicht gefunden!</b>
Installieren Sie XTERM über ihren Paket Managment."</label>
</text>
</hbox>
<hseparator></hseparator>
<hbox homogeneous="true">
<button ok></button>
</hbox>
</vbox>
</window>
'
gtkdialog --program=INFO_DIALOG
# Ausgabe für das Terminal
echo $"xterm ist nicht installiert!"
else
echo "xterm ist installiert!"
fi
if
 [ ! -d /usr/share/icons/oxygen ]; then
export INFO_DIALOG='
<window window_position="1" title="Abfrage zu Oxygen Symbole" icon-name="info">
<vbox>
<hbox border-width="30">
<pixmap>
<input file icon="gtk-dialog-info"></input>
</pixmap>
<text use-markup="True">
<label>"<b>Oxygen Symbole wurden nicht gefunden!</b>
Installieren Sie Oxygen Icon Themen über ihren Paket Managment."</label>
</text>
</hbox>
<hseparator></hseparator>
<hbox homogeneous="true">
<button ok></button>
</hbox>
</vbox>
</window>
'
gtkdialog --program=INFO_DIALOG
# Ausgabe für das Terminal
echo $"Oxygen Symbole sind nicht installiert!"
else
echo "Oxygen Symbole sind installiert!"
fi
# Temporäres Verzeichnis abfrage/erstellen
if [ ! -d /tmp/SiCuSys ]; then
mkdir /tmp/SiCuSys
fi
# Temporäres Verzeichnis bereinigen, wenn mal das
# Verzeichnis nicht bereinigt wurde beim schliessen
# des Programms!
rm -rf /tmp/SiCuSys/*
# Variablen zum einfachen Handhabung des Programm
TITLE="Einfache Systeminformationen"
VERSION=" 0.1.5"
SCREEN=`xrandr | grep '*' | sed -e 's/*+//'`
# Audiogerät abfrage
lspci | grep "Audio device" | cut -d ":" -f3 > /tmp/SiCuSys/audio_name
echo -e "
> Ausgabe von  /proc/asound/cards <
" >> /tmp/SiCuSys/audio_name
cat /proc/asound/cards >> /tmp/SiCuSys/audio_name

# Über
export ABOUT='
<window window_position="1" icon-name="info" width-request="600"  title="'$"Über"'">
<frame>
<vbox scrollable="false" space-expand="true" space-fill="true" allow-shrink="true">
<text use-markup="True" width-chars="30">
<label>"<span color='"'blue'"'><b>SiCuSys</b></span>"</label>
</text>

<text use-markup="True">
<label>"'$"<b>Version "$VERSION"</b>"'"</label>
</text>
   
<text  use-markup="True">
<label>"'$"<b>Autor:</b> D.M-Wilhelm [leiche]"'"</label>
</text>

<text>
<label>"'$"Ein einfacher Weg Informationen über ihr System zu erfahren!"'" </label>
</text>
<text use-markup="True">
<label>"<span color='"'red'"'><b>*******************************************************************************</b></span>"</label>
</text>
<text use-markup="True">
<label>"'$"Hier bei handelt es sich um ein <b>Tutorial</b>, das ganze Script git es nur in den <b>PCLinuxOS Paketquellen</b>!"'"</label>
</text>
<text use-markup="True">
<label>"<span color='"'red'"'><b>*******************************************************************************</b></span>"</label>
</text>
<text use-markup="True">
<label>"'$"<b>Freigegeben</b> 2011-2015"'"</label>
</text>

<text use-markup="True">
<label>"<b>'$"Unter GPLv2 Lizenz"'</b>"</label>
</text>
</vbox>
<vbox><hbox> 
<button>
<label>OK</label>
<variable>ABOUT</variable>
<action type="closewindow">ABOUT</action>
</button>
</hbox></vbox>
</frame>
</window>
'

# Hauptprogramm
Simple_Current_Systeminfo='
<window  window_position="1" title="'$TITLE$VERSION'" width_request="550" icon-name="info">
<vbox>
<notebook labels="STANDARD|AUDIO/VIDEO|FEHLERAUSGABE">
##----------------------------------------------------------------------
##------------------------- STANDARD -----------------------------------
##----------------------------------------------------------------------
<vbox>
##-------- cpuinfo - zeigt Informationen zu den CPU an -----------------
<frame '$"CPU"'>
<hbox scrollable="false" space-expand="true" space-fill="true" allow-shrink="true">
<pixmap xalign="0">
<input file>/usr/share/icons/oxygen/32x32/devices/cpu.png</input>
</pixmap>
<text wrap="true" xalign="0" selectable="true">
<input>cat /proc/cpuinfo | grep ^"model name" -m1 | cut -d ":" -f2</input>
</text>
<vbox tooltip-text="'$"Komplette Ausgabe"'">
<button>
<label>'$"CPUINFO"'</label>
<input file icon="info"></input>
<action>xterm -geometry 160x60 -title "/proc/cpuinfo" -hold -e cat /proc/cpuinfo</action>
</button>
</vbox>
</hbox>
</frame>
##----------- ACPI - zeigt Informationen ausgegeben von ACPI -----------
<frame '$"Ladezustand"'> 
<text wrap="true" xalign="0" selectable="true">
<input>acpi -aib</input>
</text>
</frame>
##------------- Anzeigen der Arbeitsoberflächen Umgebung ---------------
<frame '$"Desktop Umgebung"'>
<text wrap="false" xalign="0" selectable="true">
<input>inxi -S | grep Desktop | cut -d " " -f 13</input>
</text>
</frame>
##--------------------- Anzeigen der Version ---------------------------
<frame '$"Version"'> 
<text wrap="false" xalign="0" selectable="true">
<input file>/etc/version</input>
</text>
</frame>
##--------------------- Laufende Kernelversion -------------------------
<frame '$"Kernel"'> 
<text wrap="false" xalign="0" selectable="true">
<input>uname -r</input>
</text>
</frame>
##-------------------- aktuelle Bildschirmgröße ------------------------
<frame '$"Bildschirmauflösung"'>
<text wrap="false" xalign="0" selectable="true">
<input>echo '"$SCREEN"'</input>
</text>
</frame>
##---------------------- Anzeigen des Benutzer -------------------------
<frame '$"Benutzer"'> 
<text wrap="false" xalign="0">
<input>whoami</input>
</text>
</frame>
##------------------- Anzeigen des Betriebszeit ------------------------
<frame '$"Laufzeit"'>
<text wrap="false" xalign="0" selectable="true">
<input>uptime</input>
</text>
</frame>
</vbox>
##-----------------------------------------------------------------------
##------------------------ AUDIO/VIDEO ----------------------------------
##-----------------------------------------------------------------------
<vbox>
##----------------------- Audiogerät abfragen --------------------------
<frame '$"Audiokarte"'>
<text wrap="true" xalign="0" selectable="true">
<input file>/tmp/SiCuSys/audio_name</input>
</text>
</frame>
##----------------------- Grafikkarte abfragen -------------------------
<frame '$"Grafikkarte"'>
<text wrap="true" xalign="0" selectable="true">
<input>lspci -nnk | grep -i VGA -A2</input>
</text>
</frame>
</vbox>
##----------------------------------------------------------------------
##-------------------------- Fehlerausgabe -----------------------------
##----------------------------------------------------------------------
<vbox>
##------------------------- Fehler anzeigen ----------------------------
<frame '$"DMESG Ausgabe"'>
<hbox scrollable="true"  space-expand="true" space-fill="true" allow-shrink="true">
<pixmap xalign="0" tooltip-text="'$"Prüfe auf Fehler beim laden des laufenden Kernel!"'">
<input file>/usr/share/icons/oxygen/32x32/apps/hwinfo.png</input>
</pixmap>
<vbox>
<text use-markup="True" width-chars="30" xalign="0">
<label>"'$"<b>Fehler</b>"'"</label>
</text>
<text wrap="false" xalign="0" selectable="true">
<input>dmesg | grep -i error</input>
</text>
<text use-markup="True" width-chars="30" xalign="0">
<label>"'$"<b>Fehlt</b>"'"</label>
</text>
<text wrap="false" xalign="0" selectable="true">
<input>dmesg | grep -i fail</input>
</text>
<text use-markup="True" width-chars="30" xalign="0">
<label>"'$"<b>Warnung</b>"'"</label>
</text>
<text wrap="false" xalign="0" selectable="true">
<input>dmesg | grep -i warn</input>
</text>
</vbox>
</hbox>
</frame>

## -------------------------------- Fehler anzeigen --------------------
<frame '$"XORG Ausgabe"'> 
<hbox scrollable="true"  space-expand="true" space-fill="true" allow-shrink="true">
<pixmap xalign="0" tooltip-text="'$"Fehlerausgabe entdeckt durch XORG!"'">
<input file>/usr/share/icons/oxygen/32x32/apps/hwinfo.png</input>
</pixmap>
<vbox>
<text use-markup="True" width-chars="30" xalign="0">
<label>"'$"<b>Fehler</b>"'"</label>
</text>
<text wrap="false" xalign="0" selectable="true">
<input>grep 'EE' /var/log/Xorg.0.log | sed s/"(WW) warning.*//"</input>
</text>
<text use-markup="True" width-chars="30" xalign="0">
<label>"'$"<b>Warnung</b>"'"</label>
</text>
<text wrap="false" xalign="0" selectable="true">
<input>grep 'WW' /var/log/Xorg.0.log | sed s/"(WW) warning.*//"</input>
</text>
<text use-markup="True" width-chars="30" xalign="0">
<label>"'$"<b>Nicht inplementiert</b>"'"</label>
</text>
<text wrap="false" xalign="0" selectable="true">
<input>grep 'NI' /var/log/Xorg.0.log | sed s/"(WW) warning.*//"</input>
</text>
<text use-markup="True" width-chars="30" xalign="0">
<label>"'$"<b>Unbekannt</b>"'"</label>
</text>
<text wrap="false" xalign="0" selectable="true">
<input>grep '??' /var/log/Xorg.0.log | sed s/"(WW) warning.*//"</input>
</text>
</vbox>
</hbox>
</frame>
</vbox>
</notebook>
##----------------------------------------------------------------------
##---------------------- Untere Schaltflächen --------------------------
##----------------------------------------------------------------------
<hbox>
<vbox tooltip-text="'$"Was ist es..."'">
<button>
<label>'$"Über"'</label>
<input file icon="help"></input>
<action type="launch">ABOUT</action>
</button>
</vbox>
<vbox tooltip-text="'$"Inxi -FxzMGS"'">
<button>
<label>'$"INXI"'</label>
<input file icon="info"></input>
<action>xterm -geometry 100x40 -bg black -title "inxi_output" -hold -e inxi -FxzMGS</action>
</button>
</vbox>
<vbox tooltip-text="'$"Beendet $TITLE"'">
<button>
<label>Schließen</label>
<input file icon="exit"></input>
<action>rm -r /tmp/SiCuSys/*</action>
<action type="exit">Simple_Current_Systeminfo</action>
</button>
</vbox>
</hbox>
</vbox>
</window>
'
export GUI="`echo "$Simple_Current_Systeminfo" | sed -e 's/##.*//'`"
gtkdialog -p GUI

Offline Leiche

  • Global Moderator
  • *
  • Beiträge: 619
  • Gott weiß, ich bin kein Engel
    • Tipps und Tricks
Re: GUI erstellen mit gtkdialog
« Antwort #14 am: 24.April.2015, 00:14:08 »
Wie erstellt man den nun ein Ausgabefeld, bzw. zeigt man Ausgaben in einem
Bereich an?

Hat man nun mehrere Schaltflächen integriert, die verschiedene Abfragen starten,
will man diese bestimmt im gleichen Bereich oder Fenster ausgeben. Dazu bestimmen
wir das alle Schaltflächen in die gleiche Datei schreiben, jedoch jede Schaltfläche,
diese Datei überschreibt, ansonsten würde die Datei zu groß.

<vbox tooltip-text="'$"lspci ist ein Linux-Befehl der detaillierte Informationen über die PCI-Geräte und -Busse im System ausgibt."'">
<button>
<label>LSPCI</label>
<input file>'$ICON'/hwinfo.png</input>
<action>lspci > /tmp/SiCuSys/hardware</action>
<action type="refresh">DISPLAY_OUT</action>
</button>
</vbox>
<vbox tooltip-text="'$"lscpu - Informationen Ausgeben über die CPU Architektur"'">
<button>
<label>LSCPU</label>
<input file>/usr/share/icons/oxygen/32x32/devices/cpu.png</input>
<action>lscpu > /tmp/SiCuSys/hardware</action>
<action type="refresh">DISPLAY_OUT</action>
</button>
</vbox>
      

Gleichzeitig legen wir fest, wo wir diese Informationen ausgeben...

<pixmap xalign="0" width="600" height="200">
<input file>/usr/share/icons/oxygen/32x32/apps/hwinfo.png</input>
</pixmap>
<vbox width="600" height="200">
<text wrap-mode="0" xalign="0" selectable="true" justify="0">
<variable>DISPLAY_OUT</variable>
<input file>/tmp/SiCuSys/hardware</input>
</text>
</vbox>
<vseparator></vseparator>
   

Wir müssen eine Variable angeben zum Anzeigen der Informationen, bzw.
um die Informationen zu aktualisieren.
Gleichzeitig fügen wir in der Schaltfläche <action type="refresh">DISPLAY_OUT</action>
ein, um unser Informationsfenster zu aktualisieren. Ohne die Variable
würde das Fenster nicht aktualisiert.

Das ganze Script zum testen:
#! /bin/bash
# Abfrage nach benötigte Programme
if [ ! -f /usr/bin/inxi ]; then
export INFO_DIALOG='
<window window_position="1" title="Abfrage zu inxi" icon-name="info">
<vbox>
<hbox border-width="30">
<pixmap>
<input file icon="gtk-dialog-info"></input>
</pixmap>
<text use-markup="True">
<label>"<b>INXI wurde nicht gefunden!</b>
Installieren Sie INXI über ihren Paket Managment."</label>
</text>
</hbox>
<hseparator></hseparator>
<hbox homogeneous="true">
<button ok></button>
</hbox>
</vbox>
</window>
'
gtkdialog --program=INFO_DIALOG
# Ausgabe für das Terminal
echo $"inxi ist nicht installiert!"
else
echo "inxi ist installiert!"
fi
if [ ! -f /usr/bin/xterm ]; then
export INFO_DIALOG='
<window window_position="1" title="Abfrage zu xterm" icon-name="info">
<vbox>
<hbox border-width="30">
<pixmap>
<input file icon="gtk-dialog-info"></input>
</pixmap>
<text use-markup="True">
<label>"<b>XTERM wurde nicht gefunden!</b>
Installieren Sie XTERM über ihren Paket Managment."</label>
</text>
</hbox>
<hseparator></hseparator>
<hbox homogeneous="true">
<button ok></button>
</hbox>
</vbox>
</window>
'
gtkdialog --program=INFO_DIALOG
# Ausgabe für das Terminal
echo $"xterm ist nicht installiert!"
else
echo "xterm ist installiert!"
fi
if
 [ ! -d /usr/share/icons/oxygen ]; then
export INFO_DIALOG='
<window window_position="1" title="Abfrage zu Oxygen Symbole" icon-name="info">
<vbox>
<hbox border-width="30">
<pixmap>
<input file icon="gtk-dialog-info"></input>
</pixmap>
<text use-markup="True">
<label>"<b>Oxygen Symbole wurden nicht gefunden!</b>
Installieren Sie Oxygen Icon Themen über ihren Paket Managment."</label>
</text>
</hbox>
<hseparator></hseparator>
<hbox homogeneous="true">
<button ok></button>
</hbox>
</vbox>
</window>
'
gtkdialog --program=INFO_DIALOG
# Ausgabe für das Terminal
echo $"Oxygen Symbole sind nicht installiert!"
else
echo "Oxygen Symbole sind installiert!"
fi
# Temporäres Verzeichnis abfrage/erstellen
if [ ! -d /tmp/SiCuSys ]; then
mkdir /tmp/SiCuSys
fi
# Temporäres Verzeichnis bereinigen, wenn mal das
# Verzeichnis nicht bereinigt wurde beim schliessen
# des Programms!
rm -rf /tmp/SiCuSys/*
# Variablen zum einfachen Handhabung des Programm
TITLE="Einfache Systeminformationen"
VERSION=" 0.1.5"
SCREEN=`xrandr | grep '*' | sed -e 's/*+//'`
# Audiogerät abfrage
lspci | grep "Audio device" | cut -d ":" -f3 > /tmp/SiCuSys/audio_name
echo -e "
> Ausgabe von  /proc/asound/cards <
" >> /tmp/SiCuSys/audio_name
cat /proc/asound/cards >> /tmp/SiCuSys/audio_name

# Über
export ABOUT='
<window window_position="1" icon-name="info" width-request="600"  title="'$"Über"'">
<frame>
<vbox scrollable="false" space-expand="true" space-fill="true" allow-shrink="true">
<text use-markup="True" width-chars="30">
<label>"<span color='"'blue'"'><b>SiCuSys</b></span>"</label>
</text>

<text use-markup="True">
<label>"'$"<b>Version "$VERSION"</b>"'"</label>
</text>
   
<text  use-markup="True">
<label>"'$"<b>Autor:</b> D.M-Wilhelm [leiche]"'"</label>
</text>

<text>
<label>"'$"Ein einfacher Weg Informationen über ihr System zu erfahren!"'" </label>
</text>
<text use-markup="True">
<label>"<span color='"'red'"'><b>*******************************************************************************</b></span>"</label>
</text>
<text use-markup="True">
<label>"'$"Hier bei handelt es sich um ein <b>Tutorial</b>, das ganze Script git es nur in den <b>PCLinuxOS Paketquellen</b>!"'"</label>
</text>
<text use-markup="True">
<label>"<span color='"'red'"'><b>*******************************************************************************</b></span>"</label>
</text>
<text use-markup="True">
<label>"'$"<b>Freigegeben</b> 2011-2015"'"</label>
</text>

<text use-markup="True">
<label>"<b>'$"Unter GPLv2 Lizenz"'</b>"</label>
</text>
</vbox>
<vbox><hbox> 
<button>
<label>OK</label>
<variable>ABOUT</variable>
<action type="closewindow">ABOUT</action>
</button>
</hbox></vbox>
</frame>
</window>
'

# Hauptprogramm
Simple_Current_Systeminfo='
<window  window_position="1" title="'$TITLE$VERSION'" width_request="600" icon-name="info">
<vbox>
<notebook labels="STANDARD|AUDIO/VIDEO|HARDWARE|FEHLERAUSGABE">
##----------------------------------------------------------------------
##------------------------- STANDARD -----------------------------------
##----------------------------------------------------------------------
<vbox>
##-------- cpuinfo - zeigt Informationen zu den CPU an -----------------
<frame '$"CPU"'>
<hbox scrollable="false" space-expand="true" space-fill="true" allow-shrink="true">
<pixmap xalign="0">
<input file>/usr/share/icons/oxygen/32x32/devices/cpu.png</input>
</pixmap>
<text wrap="true" xalign="0" selectable="true">
<input>cat /proc/cpuinfo | grep ^"model name" -m1 | cut -d ":" -f2</input>
</text>
<vbox tooltip-text="'$"Komplette Ausgabe"'">
<button>
<label>'$"CPUINFO"'</label>
<input file icon="info"></input>
<action>xterm -geometry 160x60 -title "/proc/cpuinfo" -hold -e cat /proc/cpuinfo</action>
</button>
</vbox>
</hbox>
</frame>
##----------- ACPI - zeigt Informationen ausgegeben von ACPI -----------
<frame '$"Ladezustand"'> 
<text wrap="true" xalign="0" selectable="true">
<input>acpi -aib</input>
</text>
</frame>
##------------- Anzeigen der Arbeitsoberflächen Umgebung ---------------
<frame '$"Desktop Umgebung"'>
<text wrap="false" xalign="0" selectable="true">
<input>inxi -S | grep Desktop | cut -d " " -f 13</input>
</text>
</frame>
##--------------------- Anzeigen der Version ---------------------------
<frame '$"Version"'> 
<text wrap="false" xalign="0" selectable="true">
<input file>/etc/version</input>
</text>
</frame>
##--------------------- Laufende Kernelversion -------------------------
<frame '$"Kernel"'> 
<text wrap="false" xalign="0" selectable="true">
<input>uname -r</input>
</text>
</frame>
##-------------------- aktuelle Bildschirmgröße ------------------------
<frame '$"Bildschirmauflösung"'>
<text wrap="false" xalign="0" selectable="true">
<input>echo '"$SCREEN"'</input>
</text>
</frame>
##---------------------- Anzeigen des Benutzer -------------------------
<frame '$"Benutzer"'> 
<text wrap="false" xalign="0">
<input>whoami</input>
</text>
</frame>
##------------------- Anzeigen des Betriebszeit ------------------------
<frame '$"Laufzeit"'>
<text wrap="false" xalign="0" selectable="true">
<input>uptime</input>
</text>
</frame>
</vbox>
##-----------------------------------------------------------------------
##------------------------ AUDIO/VIDEO ----------------------------------
##-----------------------------------------------------------------------
<vbox>
##----------------------- Audiogerät abfragen --------------------------
<frame '$"Audiokarte"'>
<text wrap="true" xalign="0" selectable="true">
<input file>/tmp/SiCuSys/audio_name</input>
</text>
</frame>
##----------------------- Grafikkarte abfragen -------------------------
<frame '$"Grafikkarte"'>
<text wrap="true" xalign="0" selectable="true">
<input>lspci -nnk | grep -i VGA -A2</input>
</text>
</frame>
</vbox>
##----------------------------------------------------------------------
##-------------------------- Informationen -----------------------------
##----------------------------------------------------------------------
<vbox space-expand="true" space-fill="true" allow-shrink="true">
<frame '$"Output"'>
<hbox scrollable="true" space-expand="true" space-fill="true" allow-shrink="true">
<pixmap xalign="0" width="600" height="200">
<input file>/usr/share/icons/oxygen/32x32/apps/hwinfo.png</input>
</pixmap>
<vbox width="600" height="200">
<text wrap-mode="0" xalign="0" selectable="true" justify="0">
<variable>DISPLAY_OUT</variable>
<input file>/tmp/SiCuSys/hardware</input>
</text>
</vbox>
<vseparator></vseparator>
<vbox>
<vbox tooltip-text="'$"lspci ist ein Linux-Befehl der detaillierte Informationen über die PCI-Geräte und -Busse im System ausgibt."'">
<button>
<label>LSPCI</label>
<input file>/usr/share/icons/oxygen/32x32/apps/hwinfo.png</input>
<action>lspci > /tmp/SiCuSys/hardware</action>
<action type="refresh">DISPLAY_OUT</action>
</button>
</vbox>
<vbox tooltip-text="'$"lscpu - Informationen Ausgeben über die CPU Architektur"'">
<button>
<label>LSCPU</label>
<input file>/usr/share/icons/oxygen/32x32/devices/cpu.png</input>
<action>lscpu > /tmp/SiCuSys/hardware</action>
<action type="refresh">DISPLAY_OUT</action>
</button>
</vbox>
</vbox>
</hbox>
</frame>
</vbox>
##----------------------------------------------------------------------
##-------------------------- Fehlerausgabe -----------------------------
##----------------------------------------------------------------------
<vbox>
##------------------------- Fehler anzeigen ----------------------------
<frame '$"DMESG Ausgabe"'>
<hbox scrollable="true"  space-expand="true" space-fill="true" allow-shrink="true">
<pixmap xalign="0" tooltip-text="'$"Prüfe auf Fehler beim laden des laufenden Kernel!"'">
<input file>/usr/share/icons/oxygen/32x32/apps/hwinfo.png</input>
</pixmap>
<vbox>
<text use-markup="True" width-chars="30" xalign="0">
<label>"'$"<b>Fehler</b>"'"</label>
</text>
<text wrap="false" xalign="0" selectable="true">
<input>dmesg | grep -i error</input>
</text>
<text use-markup="True" width-chars="30" xalign="0">
<label>"'$"<b>Fehlt</b>"'"</label>
</text>
<text wrap="false" xalign="0" selectable="true">
<input>dmesg | grep -i fail</input>
</text>
<text use-markup="True" width-chars="30" xalign="0">
<label>"'$"<b>Warnung</b>"'"</label>
</text>
<text wrap="false" xalign="0" selectable="true">
<input>dmesg | grep -i warn</input>
</text>
</vbox>
</hbox>
</frame>

## -------------------------------- Fehler anzeigen --------------------
<frame '$"XORG Ausgabe"'> 
<hbox scrollable="true"  space-expand="true" space-fill="true" allow-shrink="true">
<pixmap xalign="0" tooltip-text="'$"Fehlerausgabe entdeckt durch XORG!"'">
<input file>/usr/share/icons/oxygen/32x32/apps/hwinfo.png</input>
</pixmap>
<vbox>
<text use-markup="True" width-chars="30" xalign="0">
<label>"'$"<b>Fehler</b>"'"</label>
</text>
<text wrap="false" xalign="0" selectable="true">
<input>grep 'EE' /var/log/Xorg.0.log | sed s/"(WW) warning.*//"</input>
</text>
<text use-markup="True" width-chars="30" xalign="0">
<label>"'$"<b>Warnung</b>"'"</label>
</text>
<text wrap="false" xalign="0" selectable="true">
<input>grep 'WW' /var/log/Xorg.0.log | sed s/"(WW) warning.*//"</input>
</text>
<text use-markup="True" width-chars="30" xalign="0">
<label>"'$"<b>Nicht inplementiert</b>"'"</label>
</text>
<text wrap="false" xalign="0" selectable="true">
<input>grep 'NI' /var/log/Xorg.0.log | sed s/"(WW) warning.*//"</input>
</text>
<text use-markup="True" width-chars="30" xalign="0">
<label>"'$"<b>Unbekannt</b>"'"</label>
</text>
<text wrap="false" xalign="0" selectable="true">
<input>grep '??' /var/log/Xorg.0.log | sed s/"(WW) warning.*//"</input>
</text>
</vbox>
</hbox>
</frame>
</vbox>
</notebook>
##----------------------------------------------------------------------
##---------------------- Untere Schaltflächen --------------------------
##----------------------------------------------------------------------
<hbox>
<vbox tooltip-text="'$"Was ist es..."'">
<button>
<label>'$"Über"'</label>
<input file icon="help"></input>
<action type="launch">ABOUT</action>
</button>
</vbox>
<vbox tooltip-text="'$"Inxi -FxzMGS"'">
<button>
<label>'$"INXI"'</label>
<input file icon="info"></input>
<action>xterm -geometry 100x40 -bg black -title "inxi_output" -hold -e inxi -FxzMGS</action>
</button>
</vbox>
<vbox tooltip-text="'$"Beendet $TITLE"'">
<button>
<label>Schließen</label>
<input file icon="exit"></input>
<action>rm -r /tmp/SiCuSys/*</action>
<action type="exit">Simple_Current_Systeminfo</action>
</button>
</vbox>
</hbox>
</vbox>
</window>
'
export GUI="`echo "$Simple_Current_Systeminfo" | sed -e 's/##.*//'`"
gtkdialog -p GUI