Ich habe mir im April 2020 einen Dell G7 17 – 7700 zugelegt. Nach nunmehr einem halben Jahr möchte ich hier meine Erfahrungen mit diesem Laptop darstellen.
Anforderungen
Als Erstes möchte ich kurz auf meine Anforderungen eingehen. Diese waren:
Linux-Kompatibilität. Das Ding soll einfach laufen. Ich habe wenig Lust bei der Installation viel rum zu friemeln. Ich will Ubuntu installieren und gut.
Brauchbare Akkulaufzeit. Mir ist wichtig, wenn ich mal auf Reisen bin, auch im Zug ein paar Stunden arbeiten zu können. Ich brauche keinen Laptop, der einen ganzen Arbeitstag ohne Stromanschluss durchhält. Die meiste Zeit residiert mein Laptop eh auf meinem Schreibtisch.
Eine gute Tastatur. Wenn man schon mal mit dem Laptop direkt auf dem Schoß arbeiten muss arbeitet, dann soll die Tastatur auch angenehm zu schreiben sein. Ich persönlich mag Tastaturen mit kurzem Hub.
Ordentlich Speicher. Da ich beruflich viel mit React und Webpack arbeite, und dabei viele Browser Fenster offen habe, benötige ich einiges an Arbeitsspeicher. 16 GB sind eigentlich das absolute Minimum, besser sind wahrscheinlich 32 GB.
Große Festplatte. Ähnliches gilt für die Festplatte, am Ende sollte es wahrscheinlich ein Terabyte sein, damit man mit virtuellen Maschinen und ein paar Videos nicht gleich den ganzen Platz verbraucht.
17 Zoll Display. Ich persönlich mag 17 Zoll (ca. 43 cm) Laptops. Sie ersetzen auf dem Schreibtisch einen zweiten Monitor und wenn man sie auch mal auf dem Schoß hat, machen sie einem Nacken und Schultern nicht so sehr kaputt, wie kleinere Modelle.
Ordentliche Verarbeitung. Eine gewisse Wertigkeit sollte der Laptop schon haben. Ich brauche kein Modell aus Vollaluminium, aber wie eine Brotdose auf dem Schulhof sollte er auch nicht so wirken.
Mit dem oben genannten Anforderungen bin ich dann erst mal auf die Suche gegangen. Die vielen günstigen Geräte, die es in der 17 Zoll Klasse gibt, schieden schon einmal aus, da Tastatur und Gehäuse meistens eine unterirdische Qualität haben.
Leider waren auch die Geräte von auf Linux spezialisierten Anbietern nichts für mich. Deren 17 Zoll Laptops sind meistens White-Label Spiele-Laptops, die sehr schwer, sehr dick, sehr teuer sind und recht billig aussehen.
Um eines klarzustellen: Ich bin großer Fan von auf Linux spezialisierten Anbietern. Einen Desktop-PC würde ich jederzeit von solch einem Anbieter kaufen. Leider bestehen Laptops nicht wie Desktop-PCs aus Standard Bauteilen, und deswegen, ist es für Nischen-Anbieter sehr schwierig eigene Laptops zu entwickeln.
Nach einiger Recherche kam ich zu der Überlegung, einen Spiele-Laptop zu kaufen, der nicht auf absolut maximale Leistung ausgelegt ist, sondern eher für Gelegenheitsspieler gedacht ist. Spiele-Laptops haben in der Regel ordentliche Hardware verbaut und besitzen eine brauchbare Tastatur, weil Spieler ja dauernd in die Tasten hacken müssen.
Ich habe mich dann für den Dell G7 17 – 7700 entschieden, weil er eine etwas erhöhtes Display hat, von dem ich mir beim Arbeiten auf dem Schoß einen kleinen Ergonomie-Vorteil versprach.
Lautsprecher: Stereo, Tastatur: Chiclet, Tastatur-Beleuchtung: ja
Gewicht
3.29 kg
Installation
Nach ca. 7 Tagen war der Laptop bei mir zu Hause angekommen. Als Erstes habe ich dann mit einem Live-Stick die Ubuntu-Tauglichkeit getestet. Nach ein paar Minuten ohne Probleme, bin ich dann zur Installation übergegangen. Ich habe Windows runtergeschmissen und Ubuntu 20.04 installiert.
Ich habe die Voreinstellungen des Ubuntu-Installers einfach übernommen. Brav wie ich bin, habe ich auch die Festplattenverschlüsselung angestellt.
Nach kurzer Zeit war die Installation fix und fertig. Der G7 und war somit einsatzbereit und konnte auch schon gut verwendet werden.
Am BIOS habe ich übrigens nichts geändert, sondern die Werkseinstellungen gelassen wie sie sind.
Nacharbeiten
Wo viel Licht ist, da ist auch Schatten. Zwar konnte man mit dem G7 nach der Ubuntu-Installation direkt loslegen und arbeiten. Aber nichtsdestotrotz gab es ein paar Kleinigkeiten, die es zu optimieren galt.
Der vom Ubuntu-Installer standardmäßig installierte Nvidia-Treiber funktionierte mit meinem Multi-Monitor Setup nicht. Ich habe meinem Arbeitsplatz neben dem Laptop Monitor noch zwei weitere Monitore die ich einmal per USB und einmal per HDMI anspreche. Mit dem proprietären Nvidia-Treiber hat es schlicht nicht funktioniert, mehr als einen Monitor anzusprechen.
Da Spielen für mich keine Priorität hat, habe ich mich nach anderen Lösungen umgeschaut. Meine erste Idee war es auf den quelloffenen Nouveau-Treiber zu setzen. Und zu meinem Glück funktionierte diese auch direkt. Sein Vorteil ist, dass er sich wesentlich besser in die Ubuntu-/Gnome-Settings einfügt.
Die schlechtere Performance bei grafiklastigen Anwendungen spielt für mich keine große Rolle
Neben den Problemen mit der Grafikkarte hakte nur der Fingerprint-Reader. Um den habe ich mich aber nicht weiter gekümmert.
Bildschirm
Der Full HD Bildschirm ist sehr hell und man kann damit problemlos auch in der Sonne arbeiten. Die maximale Auflösung liegt bei 1920 x 1080.
Batterielaufzeit
Mit der Batterielaufzeit bin ich durchaus zufrieden. Für eine Bahnreise reicht es allemal. Ich muss meinen Laptop nicht den ganzen Tag nutzen können, ohne ihn laden. 5 bis 6 Stunden sind bei normaler Benutzung allemal drin.
Tastatur & Touchpad
Tastatur und Touchpad sind die heimlichen Highlights des G7. Der Tastenhub ist sehr gering, was ich persönlich mag, und funktioniert butterweich.
Das große Touchpad ist aus Glas und lässt sich sehr angenehm nutzen. Anders als bei billigen Laptops gleitet man sehr leicht über die Oberfläche. Die Multitouch Unterstützung mit Ubuntu ist zumindest für meine ansprechen Ansprüche ausreichen.
Fazit
Abschließend muss ich sagen, dass ich mit dem G7 sehr zufrieden bin. Es war für mich ein echter Glücksgriff. Das Gerät ist leistungsfähig genug, sieht gut aus und hat eine sehr gute Ergonomie.
Ich habe hier Anwendungen aufgelistet, die ich selbst auf meinem Linux-Laptop nutze – die meisten sind Open-Source-Software; alle sind kostenlos und großartig zu benutzen.
Um sie zu installieren, verwendest du am Besten, den Paketmanager deiner Linux-Distribution.
Aktuell habe ich keine Apps aufgeführt, die ich persönlich nicht benötige. Deswegen findest du weder einen Video-Editor noch eine Instant-Messaging-App. Wenn du gute Vorschläge hast, möchte ich dich ermutigen, sie in den Kommentaren zu nennen. Auch habe ich keine Webseiten genannt, die ich für bestimmte Aufgaben nutze, wie z.B. Google Calendar oder Gmail.
Abschließend habe ich Systemprogramme wie die Desktopumgebung ausgeklammert. Persönlich nutze ich KDE, aber die gelisteten Apps funktionieren mit jeder Desktopumgebung.
Internet
Firefox
Firefox ist der freie Web-Browser des Mozilla-Projekts. Es gibt eine Menge Erweiterungen, um deine Surf-Erfahrung anzupassen. Firefox wirkt etwas schneller und Ressourcen-schonender als Chromium.
Chromium
Chromium ist die freie Variante von Google’s Chrome Browser. Chromium besitzt ein minimales User-Unterface und es sind für Chromium eine Unmenge an Erweiterungen vorhanden. Anders als Chrome, kommt Chromium nicht mit dem Flash-Player und einigen unfreien Video-Codecs. Ein schönes Feature ist die Fähigkeit, bestimmte Websites im Anwendungs-Menu speichern zu können. Diese öffnen sich dann als unabhängige Anwendung ohne Browser-Tabs.
THUNDERBIRD
Thunderbird ist der freie E-Mail-Client des Mozilla-Projekts. Wie Firefox ist auch Thunderbird sehr stark anpassbar und es gibt eine Menge Erweiterungen.
Office
LIBREOFFICE
LibreOffice ist die Bürosoftware für Linux. Alle Alternativen sind für seriöse Büro-Arbeit nicht geeignet. Seitdem LibreOffice von OpenOffice geforkt wurde, gewinnt die Entwicklung ständig an Fahrt. Wenn du auf der Suche nach OpenOffice bist, verwende LibreOffice.
TYPORA
Typora Typora ist ein sehr eleganter Markdown-Editor. Anders als die meisten anderen Markdown-Editoren besitzt er keine Preview-Funktion, sondern ein WYSIWIG-Interface.
StarDict
StarDict ist eine Wörterbuch-App, die auf unterschiedliche Wörterbücher zugreifen kann. Ich benutze sie, um schnell englische Worte nachzuschlagen. Dafür markierst du einfach das Wort, dass du übersetzt haben möchtest. Und schon erscheint die Übersetzung. Als Qt-Alternative bietet sich GoldenDict an.
Text Editors
Visual Studio Code
VSCode ist ähnlich wie Atom mit Web-Technologien entwickelt. Auch er ist sehr anpassbar und bietet über eine große Anzahl an Erweiterungen. Anders als Atom fühlt er sich deutlich schneller in der Benutzung an. Das Design der Oberfläche gefällt mir im Vergleich zu Atom nicht so gut. Kontraste und Abstände sind zu gering gewählt. Dies wird speziell in der Suchfunktion deutlich.
ATOM
Atom ist ein Texteditor, der mit Web-Technologien entwickelt wurde. Er ist sehr anpassbar, verfügt über eine große Anzahl Erweiterungen und ist leichter zu verwenden als Emacs. Der Nachteil von Atom ist, dass er für einen Texteditor sehr Resourcen-hungrig ist. Speziell, wenn man viele Erweiterungen gleichzeitig verwendet.
EMACS
Emacs ist ein erweiterbarer, anpassbarer Editor des GNU-Projects. Er ist wahrscheinlich der mächtigste Editor, den es gibt. Auf der anderen Seite besitzt das 1984 gestartete Projekt eine Menge Eigenarten, die die Lernkurve recht steil machen. Ich persönlich empfehle dir einen Blick auf Spacemacs oder ErgoEmacs zu werfen, um die Emacs-Erfahrung ein wenig zu erleichtern.
Todo-List
AKIEE
Das ist jetzt schamlose Eigenwerbung: Ich bin der Akiee-Author, aber ich glaube, dass Akiee einer der nützlichsten Task-Manager ist, die erhältlich sind. Seine Benutzung basiert auf der Kanban-Methodik und macht es einfach Aufgaben zu priorisieren und sich darauf zu konzentrieren, was man als Nächstes macht.
ORG-MODE
Org-Mode ist ein spezieler Modus in Emacs, der einem die Möglichkeit gibt, Notizen zu machen, Aufgaben zu planen und Texte zu strukturieren. Für Menschen die Emacs noch nicht benutzen, ist die Einarbeitungszeit leider beträchtlich.
Notizen
ZIM
Zim ist ein persönliches Wiki, mit dem einfach seine eigenen Notizen verwalten kann. Mit Zim kann man seine Notizen wie in einem Wiki verbinden und organisieren. Es kommt mit einigen Erweiterungen, wie einem LaTex-Editor.
LEO
Leo ist eine App zum Gliedern von Texten. Speziell, wenn du eine Menge Text zu schreiben hast, nutze Leo für Notizen, Gliederungen und sogar Literate-Programming. Wie bei den meisten mächtigen Werkzeugen benötigst du eine längere Zeit der Einarbeitung.
BASKET
Basket ist eine mächtige Notiz-App. Basket hat deutlich mehr Features als Zim – aber auch eine höhere Lernkurve.
FREEMIND
FreeMind ist eine Mindmapping-Software, die einfach zu bedienen ist und für alle Plattformen erhältlich ist. Wenn du gerne mit Mindmaps arbeitest, solltest du dir FreeMind genauer ansehen.
Developer-Tools
VIRTUALBOX
Wenn du eine Virtualsierungs-Lösung auf deinem Linux-Desktop brauchst, ist VirtualBox der einfachste Weg. Es gibt noch andere Lösungen, aber keine ist so einfach zu benutzen.
SMARTGIT
SmartGit ist eine einfach zu benutzende, voll funktionsfähige Git-Oberfläche. Sie ist leider keine freie Software, aber für den persönlichen Gebrauch kostenlos.
Security
KEEPASSX
Die Benutzung eines Passwort-Managers ist wahrscheinlich die beste Maßnahme, die man ergreifen kann, um die eigene Sicherheit im Internet zu verbessern. Für mich ist KeePassX die am besten funktionierende Lösung.
Multimedia
VLC
VLC ist einer der bekanntesten Multimedia-Spieler überhaupt. Und das aus gutem Grund. Er spielt fast jede Art von Multimedia-Datei ab. Wenn dein vorinstallierter Multimedia-Spieler nicht deine Erwartungen erfüllt, solltest du VLC einmal ausprobieren.
SPOTIFY DESKTOP
Spotify-Desktop ist kein besonders gutes Stück Software, aber wenn du Spotify-Nutzer bist, gibt es leider keine bessere Alternative.
Grafik
GIMP
Gimp ist deine Lösung, wenn du eine Bildbearbeitungssoftware unter Linux benötigst. Es kann die meisten Dinge, die Photoshop kann. Nutzer, die andere Bildbearbeitungssoftware gewohnt sind, benötigen manchmal ein wenig Einarbeitungszeit.
INKSCAPE
Inkscape ist ein Programm zum Bearbeiten und Erstellen von Vektor-Grafiken, dass du für professionelle Designs nutzen kannst. Es besitzt flexible Zeichenwerkzeuge, kann eine Menge Dateiformate (inklusive PDF) importieren und hat ein mächtiges Textwerkzeug.
SCRIBUS
Scribus ist ein DTP-Programm mit dem man Booklets, Broschüren, Magazine und alles, was man sonst noch so drucken lässt, erstellen kann.
Lernen
ANKI
Anki ist eine intelligente Karteikarten-App, mit der man einfach Fakten lernen kann – wie beispielsweise Vokabeln.
Spiele
STEAM
Steam ist eine Internet-Vertriebsplattform für Computerspiele. Du findest dort über 160 kommerzielle Spiele für Linux. Wenn du ernsthaft unter Linux spielen willst, kommst du an Steam nicht vorbei.
FROZEN BUBBLE
Frozen Bubble ist ein niedliches Logik-Spiel für Linux. Es besitzt einen guten Soundtrack und kann süchtig machen.
FREECIV
FreeCiv ist ein freier Civilization-Klon. Wenn du das Original magst, wirst du FreeCiv lieben.
Zubehör
CLIPIT
ClipIt ist ein leichtgewichtiger Zwischenablage-Manager. Wenn deine Desktopumgebung keinen beinhaltet, solltest du definitiv einen installieren. ClipIt wird Wunder für deine Produktivität bewirken.
ALBERT
Albert ist eine Produktivitäts-App, die dich einfach Anwendungen starten, Dateien suchen, deine Lesezeichen überblicken und sogar einfache Rechnungen durchführen lässt.
AUTOKEY
AutoKey ist ein Tool, mit dem du Aufgaben automatisieren und auf Knopfdruck ausführen lassen kannst. Es erlaubt dir eine Sammlung von Skripten und Text-Phrasen zu speichern, und die mit Abkürzungen und Tastenkombinationen zu versehen. AutoKey ermöglicht dir, bei bedarf einen Text einzufügen – aus jedem Programm heraus, das du gerade nutzt.
QTerminal
QTerminal ist ein leichtgewichtiges Terminal-Programm, dass es dir erlaubt, einzelne Terminals in einem Kachel-artigen Layout zu öffnen. Qterminal ist sehr praktisch, wenn du gleichzeitig mehrerer Terminals benutzen möchtest. Anwender die Gnome, Xfce, Ubuntu und Mint benutzen, können auch Tilix installieren, dass besser in ihre Desktopumgebung integriert ist.
Yukuaka
Yukuake ist ein Terminal, das von der Bildschirm-Spitze herunter scrollt, wenn man eine bestimmte Tastenkombination drückt. Es ist sehr nützlich, wenn du kurz einen Befehl im Terminal eingeben willst, ohne dabei gleich ein neues Fenster zu öffnen. Anwender die Gnome, Xfce, Ubuntu und Mint benutzen, können auch Guake nutzen, dass besser in ihre Desktopumgebung integriert ist.
SYNERGY
Synergy ist eine Anwendung, mit der man eine Maus und Tastatur auf mehreren Computern gleichzeitig nutzen kann. Man kann den Computer einfach wechseln, indem man mit der Maus über den Bildschirmrand zum nächsten Computer wechselt – wie bei einem zweiten Display.
Emulatoren
Wine
Wine ist eine Windows-kompatible Laufzeitumgebung, mit der man Windows-Programme unter Linux nutzen kann. Ich benutze Wine beispielsweise um eine alte Version von OpenOffice zu verwenden, die noch mit dem Duden-Korrektor kompatibel ist.
PlayOnLinux
PlayOnLinux ist eine grafische Benutzeroberfläche für Wine. Damit ist es sehr viel einfacher Windows-Programme zu installieren und unterschiedliche Wine-Versionen zu verwalten.
Nachdem wir im dritten Teil unsere Demoanwendung fertiggestellt haben, werden wir nun installierbare Pakete für die unterschiedlichen Plattformen bauen.
Stellvertretend für Linux-Systeme werden wir ein Debian Paket bauen. Für Windows werden wir ein Squirrel-Paket bauen und für Mac OS eine ZIP-Paket.
Wer seine App in die App Stores der jeweiligen Plattform bringen will, kann dies auch mit electron-forge machen.
Die Dokumentation gibt ausführlich Auskunft über die Möglichkeiten, wie man seine Pakete bauen kann und man sie auch gleichzeitig veröffentlichen kann.
Vorbereitung
In der package.json geben wir unserer Demo-App eine ordentliche Beschreibung und legen fest, dass wir für Linux nur ein Debian-Paket erstellen möchten.
Darüber hinaus geben wir Anwendungsdatei einen Namen und definieren den Pfad zum App-Icon.
"description": "Rebuild of the gtk3-demo-application with electron",
...
"linux": [
"deb
]
...
"electronPackagerConfig": {
"packageManager": "yarn",
"executableName": "electron-react-example",
"icon": "./icon.svg"
}
...
Da unser Anwendungsname electron im Namen hat müssen wir die Abfrage für den Entwicklungsmodus ein ganz wenig anpassen. In der index.js fragen wir deswegen nicht nur, ob der Fahrt zur Anwendungsdatei electron enthält, sondern das electron ein Unterverzeichnis ist.
Als Icon für die Anwendung habe ich mir von openclipart.org ein einfaches Icon heruntergeladen. Grundsätzlich reicht uns hierfür jegliche SVG- oder PNG-Datei.
Für den Linux-Build legen wir in der package.json dann unter electronInstallerDebian Werte für das Icon und die Kategorie fest.
Nun können wir in der Kommandozeile mit electron-forge make unsere Anwendungen bauen. Wenn alles gut gegangen ist findet man unter out/make das Debian-Paket.
Mac OS-Build
Für den Mac-Build habe ich mir in einer virtuellen Maschine das Repo geklont und unser Icon in das icns-format konvertiert.
In der Kommandozeile habe ich dann mit NPM alle Abhängigkeiten installiert und dann wieder mit electron-forge make den Build angestoßen. Mehr war nicht notwendig.
Am Ende sollte eine ZIP-Datei stehen, die eine ausführbare Anwendung enthält.
electron-forge bietet auch die Möglichkeit DMGs für den Mac zu erstellen.
Windows-Build
Als Vorbereitung für den Windows-Build habe ich unser Icon diesmal in eine ico-Datei konvertiert. Dann habe ich wieder mit electron-forge den-Build in einer virtuellen Maschine angestoßen. Mehr ist auch hier nicht nötig.
Grundsätzlich ist es auch möglich electron-Pakete mit Wine zu bauen. Allerdings ist in der aktuellen Version von electron-forge diese Funktionalitäten nicht eingebaut. Wer trotzdem unter Linux Windows-Pakete bauen will, sollte sich das Paket electron-packager einmal anschauen.
Wir haben jetzt mit geringem Aufwand Pakete für alle bekannten Plattformen gebaut. Damit endet unser Tutorial. Ich hoffe ich konnte zeigen, dass Electron mit React eine interessante Alternative ist, wenn man plattformübergreifende Desktop-Applikation bauen möchte.
Im zweiten Teil haben wir unserer Electron-App einen zum jeweiligen Betriebssystem passenden Look verpasst. Dabei haben wir je nach Plattform ein passendes Stylesheet verwendet, damit sich die Anwendung gut einpasst.
In diesem Teil werden wir nun das Menü der gtk3-demo-application nachbauen. Dazu werden wir als Erstes das App-Menü der Anwendung bauen. Dieses definieren wir beim Start der App. Als zweiten Schritt werden wir ein Kontext-Menü erstellen, dass zur Laufzeit der Anwendung komponiert wird. Damit unterscheidet es sich in der Art und Weise der Definition vom App-Menü.
Abschließend werden wir noch ein paar Optimierungen für Mac OS vornehmen. Das App-Menü auf einem Mac unterscheidet sich grundlegend von den Menüs unter Windows und Linux.
App-Menü
Das App-Menü erstellen wir in der Datei src/index.js. Dort wird es während des Starts der App geladen. Als Template für das Menü verwenden wir einen Javascript-Array, der Javascript-Objekte enthält. Die Javascript Objekte entsprechen einem Menüpunkt.
Jeder Menüpunkt kann wiederum eigene Untermenüs enthalten. Der sich so ergebende Baum stellt das App-Menü da.
Mit der Methode buildFromTemplate erstellen wir dann das Menü-Objekt.
Zusätzlich ergänzen wir src/index.js noch um eine Funktion showMessage, die uns als Dummy-Callback dient.
import { app, BrowserWindow, Menu, dialog } from 'electron';
...
mainWindow = null;
});
const showMessage = message => dialog.showMessageBox({
type: 'info',
message: `You activated action: "${message}"`,
buttons: ['Close'],
});
const menu = Menu.buildFromTemplate([
{
label: 'Preferences',
submenu: [
{
label: 'Prefer Dark Theme',
type: 'checkbox',
},
{
label: 'Hide Titlebar when maximized',
type: 'checkbox',
},
{
label: 'Color',
submenu: [
{
label: 'Red',
type: 'radio',
accelerator: 'CmdOrCtrl+R',
click: () => showMessage('Red'),
},
{
label: 'Green',
type: 'radio',
accelerator: 'CmdOrCtrl+G',
click: () => showMessage('Green'),
},
{
label: 'Blue',
type: 'radio',
accelerator: 'CmdOrCtrl+B',
click: () => showMessage('Blue'),
},
],
},
{
label: 'Shape',
submenu: [
{
label: 'Square',
type: 'radio',
accelerator: 'CmdOrCtrl+S',
click: () => showMessage('Square'),
},
{
label: 'Rectangle',
type: 'radio',
accelerator: 'CmdOrCtrl+R',
click: () => showMessage('Rectangle'),
},
{
label: 'Oval',
type: 'radio',
accelerator: 'CmdOrCtrl+O',
click: () => showMessage('Oval'),
},
],
},
{
label: 'Bold',
type: 'checkbox',
accelerator: 'CmdOrCtrl+Shift+B',
click: () => showMessage('Bold'),
},
],
},
{
label: 'Help',
submenu: [
{
label: 'About',
accelerator: 'CmdOrCtrl+A',
click: () => dialog.showMessageBox({
type: 'info',
title: 'about',
message: `GTK+ Code Demos
3.22.30
Running against GTK+ 3.22.30
Program to demonstrate GTK+ functions.
(C) 1997-2013 The GTK+ Team
This program comes with absolutely no warranty.
See the GNU Lesser General Public License,
version 2.1 or later for details.`,
buttons: ['Close'],
}),
},
],
},
]);
Menu.setApplicationMenu(menu);
...
Anschließend sollte das Menü zu sehen sein. Das Development-Menü wird nicht mehr angezeigt. Für ein größeres Projekt könnte es sinnvoll sein, ein Development-Menü zu erhalten, dass im Entwicklungsmodus angezeigt wird und bei Auslieferung ausgeschaltet wird.
Kontext-Menu
Die Demo-App besitzt auch ein Kontextmenü zur Textbearbeitung. Um dieses nachzubauen, gehen wir etwas anders vor. Wir erstellen es nicht mehr aus einem Template, sondern komponieren es zur Laufzeit.
Dementsprechend ergänzen wir unseren Code auch nicht mehr in der src/index.js, sondern in src/app.jsx.
Als Erstes definieren wir das Menü im Konstruktor unsere App-Komponente. Weil die Menu-Klasse nur im Hauptprozess zur Verfügung steht, müssen wir auf sie über das Remote-Objekt zugreifen.
Das Menü selbst ist sehr viel einfacher als das App-Menü gehalten. Wir fügen nur ein paar Standardfunktionen und einen Trenner in das Kontext-Menü ein. Wir machen dabei ausgiebig Gebrauch von der role-Option. Diese erlaubt uns, von Electron vordefinierte Standardmenüs zu verwenden.
Damit wir auf das Kontext-Menü zugreifen können, definieren wir einen onContextMenu-Handler für die Textarea. Dieser macht nichts anderes, als einfach das Kontextmenü zu öffnen und mit dem Hauptfenster zu verbinden.
Jetzt kann man über der Textarea mit der rechten Maustaste ein Kontext-Menü aufrufen.
Mac-Menü
Das App-Menü unter Mac OS unterscheidet sich deutlich von den App-Menüs unter Windows und Linux.
In Mac OS gibt es 3 Standard Menüs, die jeder Anwendung bereitstellen sollte:
window
help
services
Zu diesem Zweck stellt Electron unter Mac OS einige Standard-Menüs über Rollen bereit. Diese helfen beim Aufbau des Menüs.
Als Erstes speichern wir in src/index.js das Template für das App-Menü in einer eigenen Variablen.
Dann passen wir die Rolle unsere Hilfe-Menüs an.
Als Nächstes fügen wir die beiden anderen Unter-Menüs in unserem App-Menü ein, falls wir uns auf einem Mac befinden. Dazu verwenden wir Standard-JavaScript-Methoden, um unser Template-Array zu erweitern.
Wenn wir nun unsere Beispielanwendung auf einem Mac starten, wird das Menü im globalen Menü von Mac OS angezeigt.
Anfang des Jahres habe ich einer Kundin die Epikur-Praxisverwaltung auf ihrem Ubuntu-Laptop installiert. Meine Kundin hat sich zum Jahresanfang mit einem halben Kassensitz selbstständig gemacht. Zur Abrechnung mit den gesetzlichen Krankenkassen benötigte sie den Anschluss an ein Lesegerät für Krankenkassenkarten.
Im Folgenden möchte ich meine Erfahrungen und die meiner Kundin mit Epikur und Ubuntu beschreiben. Starten werde ich mit der Installation von Server und Client. Danach werde ich auf die Einrichtung des Kartelesegeräts und auf die Benutzung von Epikur eingehen.
Wer noch weitere Fragen zum Thema Epikur und Ubuntu hat, kann mich gerne unter marco@rockiger.com erreichen.
Warum Epikur und Ubuntu?
Auf meinen Rat hin verwendet die Kundin schon seit einiger Zeit Ubuntu. Zum Zeitpunkt der Installation von Epikur war für meine Kundin der Umstieg auf Windows kein Thema mehr.
Die Vorteile von Ubuntu gegenüber Windows liegen auf der Hand:
geringerer Ressourcenverbrauch
höhere Systemsicherheit
bessere Usability (zumindest aus Sicht meiner Kundin)
niedrigere Kosten
Die Unterstützung von Ubuntu war der ausschlaggebende Punkt für die Nutzung von Epikur. Epikur ist die einzige Praxisverwaltungssoftware, die Ubuntu unterstützt. Die Konkurrenten Elephant und Psyprax schieden wegen der fehlenden Ubuntu Unterstützung aus.
Installation von Epikur auf Ubuntu Linux
Weil eine Nutzung der Praxisverwaltungssoftware mit einem Tablet sichergestellt werden sollte, haben wir uns für die Server-Variante von Epikur entschieden. Die Epikur-Clients entsprechen der Einzelplatzvariante, nur dass sie sich eben beim Start mit einem Server verbinden.
Mit einem Epikur-Server können sich mehrere Clients verbinden. Mit einem Zusatzmodul ist es darüber hinaus möglich, ein HTML-Frontend zu betreiben. Es erlaubt, einen reduzierten Funktionsumfang von Epikur als Website zu nutzen – hierfür reicht der Browser des Tablets aus.
Ziel ist es, das Dokumentationen schon während der Therapie im Tablet eingegeben werden können, ohne die Notizen von Papier in die Praxisverwaltungssoftware zu übertragen. Alternativ einen Laptop während der Therapie zu benutzen, war für meine Kundin keine Option.
Nach mehr als 2 Monaten Nutzung gab es bisher noch keine Probleme mit dem Server und dem openjdk-8. Die freie Java-Variante passt sich meiner Erfahrung nach besser in Ubuntu ein und kann direkt aus den Paketquellen installiert werden:
sudo apt install openjdk-8-jdk
Danach wird der heruntergeladene Server installiert:
Für was diese Bibliotheken notwendig sind, ist mir nicht klar. Der Client startet auch ohne sie.
Ich empfehle noch, den ttf-mscorefonts-installer zu installieren, damit die Arial-Schriftart installiert ist. Sie wird für manche Grafikanzeigen im Client benötigt.
Um alle Abhängigkeiten nutzt man am besten wieder die Kommandozeile:
Oder man nutzt wieder Ubuntu Software. Um den Epikur-Client zu starten, benutzt man den Befehl epikur4Client. Es wird ein laufender Epikur-Server benötigt, damit der Epikur-Client starten kann. Sonst bricht der Start mit einer Fehlermeldung ab.
Die exakte Konfiguration wurde auch hier vom Service-Mitarbeiter per Fernwartung durchgeführt.
Erfahrungen in der Praxis
Kartenlesegerät SCM eHealth500 unter Ubuntu
Bis zur Einrichtung der Telematikinfrastruktur benötigt meine Kundin noch eine Möglichkeit, Versicherungskarten einzulesen. Die Auswahl an Karten, die mit Ubuntu funktionieren, ist deutlich geringer als Geräte, die mit Windows funktionieren.
Das Kartenlesegerät SCM eHealth500 ist ein ausgelaufenes Produkt, das uns unter Ubuntu anfangs ein wenig Kopfzerbrechen bereitet hat. Anfangs war es uns nicht möglich, das Gerät zum Laufen zu bringen. Auch mithilfe des Service-Mitarbeiters nicht.
Nach Anfrage bei SCM wurde mir mitgeteilt, dass keine Weiterentwicklung der Treiber für Ubuntu 18.04 geplant ist.
Nach kurzer Zeit wurde uns aber glücklicherweise ein extra Treiberpaket von Epikur zur Verfügung gestellt, mit dem wir eingelesene Kartendaten auf den Epikur-Client übertragen konnten.
Beim Einlesen werden die Kartendaten erst mal auf dem kabellosen Kartenlesegerät zwischengespeichert. Bei Bedarf werden die Daten dann im Epikur-Client eingelesen.
Synchronisation der Kalenderdaten mit Google Calendar
Die einzige Funktion, die wir bis jetzt nicht zum Laufen bekommen haben, ist die Google-Calender-Synchronisation. Diese speichert Patienten-Termine anonymisiert in Google Calender. Damit hat der Therapeut seine Termine auch von unterwegs im Griff.
Nach mehreren Teamviewer-Sitzungen konnte das Problem noch nicht gelöst werden. Mittlerweile gab es aber Kontakt mit dem Entwickler des Google-Calendar-Moduls. Dieser arbeitet an einer Lösung des Problems.
Im letzten Teil haben wir eine Electron-Anwendung geschrieben, die auf der GTK-Demo-App basiert. Wir haben die grundsätzliche Struktur der Anwendung erstellt und die Funktionalität, die die Anwendung bereitstellt hinzugefügt.
In diesem Teil möchten wir nur nun die Optik der Anwendung entsprechend anpassen. Dazu werden wir als Erstes herausfinden, auf welchem Betriebssystem und mit welchem Fenstermanager die Anwendung läuft.
Ausgestattet mit dieser Information werden wir dann das jeweilige passende Stylesheet laden, um die Anwendung nativ aussehen zu lassen.
Das Ziel ist es nicht, dass die Anwendung 100 % so aussieht, wie eine Anwendung, die mit dem Window-Toolkit des Betriebssystems geschrieben ist. Unser Ziel ist es, dass die Anwendung mit vertretbarem Aufwand so aussieht, dass sie nicht als Fremdkörper wahrgenommen wird.
In welcher Umgebung läuft die App?
Und herauszufinden, in welcher Umgebung die App läuft, müssen wir eine kleine Javascript-Abfrage beim Start der Anwendung einbauen. Mit dieser Laden wird dann, damit wir ein spezifisches Stylesheet laden können.
Dazu öffnen wir die index.html-Datei, laden style.css für plattformunabhängige Styles und fügen folgendes Javascript ein.
<link rel="stylesheet" type="text/css" href="./styles/style.css">
<script type="text/javascript">
let cssUrl = '';
if (process.platform === 'linux') {
const execSync = require('child_process').execSync;
const theme = execSync('gsettings get org.gnome.desktop.interface gtk-theme').toString().toLowerCase()
if (theme.includes('adwaita')) {
cssUrl = 'adwaita.css'
} else if (theme.includes('arc')) {
cssUrl = 'arc.css'
} else if (theme.includes('OSC') || theme.includes('mac')) {
cssUrl = 'mac.css';
} else if (theme.includes('win')) {
cssUrl = 'win.css';
}
} else if (process.platform === 'darwin') {
cssUrl = 'mac.css';
} else if (process.platform === 'win32') {
cssUrl = 'win.css';
}
if (cssUrl) {
document.write('<link rel="stylesheet" type="text/css" href="./styles/'+ cssUrl +'">');
}
</script>
Dabei nutzen wir die process-Bibliothek von NodeJS und schauen als Erstes auf welchem Betriebssystem wir uns befinden. Befinden wir uns auf einem Mac- oder einem Windows-Rechner, nutzen wir die CSS-Datei mac.css oder win.css.
Für den Fall, dass wir uns auf einem Linux Rechner befinden haben wir noch eine kleine Besonderheit eingebaut: Wir führen mit NodeJS eine Kommandozeilen-Abfrage durch, die uns den Namen des aktuellen Themes zurückgibt. Dementsprechend verwenden wir nun die passende CSS-Datei.
Die Auswahl des Themes lässt sich beliebig erweitern, da ich persönlich das Arc-Theme verwende, werden wir uns auf dieses konzentrieren. An dieser Stelle muss jeder selbst entscheiden, mit wie viel Aufwand er Linux-User zu unterstützen möchte. Ich könnte mir vorstellen, dass ein Theme für Ubuntu-Nutzer auch noch sinnvoll wäre. Dies könnte eine gute Übung sein.
Cross-platfform Styling
Um nun ein plattform-gerechtes Styling der Einzelkomponenten zu kreieren, müssen wir diverse CSS-Dateien anlegen. Dazu erstellen wir den Ordner styles im src-Verzeichnis. Für jede angegebene CSS-Dateien müssen wir nun eine anlegen.
Als Erstes entfernen wir jegliche Inline-Styles aus unseren Komponenten. Sonst können wir diese nur mühsam überschreiben.
Im neu geschaffenen styles-Verzeichnis legen wir nun die Datei style.css an. In diese Datei kommen alle Style-Informationen, die wir vorher inline eingefügt hatten. Für die Farben legen wir CSS-Variablen fest.
Fairerweise muss man dazu sagen, dass alle drei Theme ohne Gradienten auskommen und somit nur wenig Änderungen brauchen. Das Gnome Standard-Theme Adwaita nachzubauen, wäre deutlich aufwendiger.
Mit der Kombination ausElectronundReactkann man sehr einfach Desktopanwendungen für Linux, Windows und Mac entwickeln. Die Kombination ausElectronundReactermöglicht einen angenehmen Entwicklungsworkflow, der den meisten anderen GUI-Frameworks weit voraus ist.
Ein Beispiel für eine Anwendung die mit React und Electron entwickelt wurde, ist Alva. Alva ist eine Anwendung um Prototypen für Web-Komponenten zu entwerfen.
Was istElectron?
Electronist ein Framework, um Desktop Anwendungen mithilfe von Web-Technologien zu entwickeln.Electronbasiert auf dem Chromium-Browser und dem NodeJS-Framework.
Durch die Kombination von Chromium und NodeJS kann man gleichzeitig seine Web-Entwicklungs-Kenntnisse nutzen und trotzdem auf das Dateisystem bzw. die Hardware des Host-Rechners zugreifen.
Bekannte Beispiele für Anwendungen, die mitElectrongeschrieben worden sind, sind die Text-Editor Atom und Visual Studio Code, die Desktop-Anwendung von Skype und der Slack Chat-Client.Electronist vor allem bei Startups aus dem Silicon Valley sehr populär.
Durch die Verwendbarkeit von JavaScript-Bibliotheken kann man bei der Entwicklung vonElectron-Apps auf einen riesigen Vorrat an nützlichen Frameworks zurückgreifen. Daher kann man auchReactmitElectronverwenden.
Was istReact?
Reactist eine JavaScript-Bibliothek zur Entwicklung von Benutzerschnittstellen.Reactwird von Facebook entwickelt und eignet sich besonders für die Entwicklung von Single-Page-Apps, wie sie häufig mitElectronentwickelt werden.
Das Besondere an der GUI-Entwicklung mitReactist, dass man seine Benutzerschnittstelledeklarativ entwickelt. Das heißt, man muss seine Web-Komponenten nicht selber verändern, wenn sich der zugrundeliegende Zustand der Anwendung verändert. DurchReactpassen sich die einzelnen Komponenten automatisch dem aktuellen Zustand der Anwendung an.
Dieses reaktive Verhalten ist auch der Namensgeber fürReact. Darüber hinaus bietetReactnoch einige interessanten Funktionen zum Zustands-Management, die bei Bedarf auch noch durch weitere Bibliotheken erweitert werden kann.
WarumElectron+React?
Die Kombination ausReactundElectronbildet ein GUI-Framework, dass sehr gut dokumentiert ist, sehr Entwickler freundlich ist und auf ein riesiges Ökosystem zurückgreifen kann. Alles Eigenschaften, die die gängigen GUI-Frameworks, speziell unter Linux, so nicht bieten.
Erste Schritte
Im Folgenden gehe ich von grundlegenden JavaScript-Kenntnissen und Basiswissen in der Verwendung von Nodejs aus.
Als Erstes müssen wirElectronmitReactaufsetzen. Das geht am leichtesten mitElectron Forge.Electron Forgeist ein Command-Line-Projekt. Mit dem sichElectronProjekte schnell aufsetzen lassen. Es stehen mehrere Templates zur Verfügung um schnell das passende Framework fürElectronaufzusetzen. NebenReactkann man beispielsweise auch TypeScript oder Angular mitElectronaufsetzen.
UmElectron Forgezu installieren und dann ein neuesElectron-ReactProjekt zu starten, gibst du in einem Terminal folgenden Code ein:
Der Prozess dauert ein wenig, da die komplette Runtime vonElectronheruntergeladen wird. Am Ende sollte dic einElectronFenster mit einer neuenReact-App begrüßen.
Eine weitere beliebte alternativeElectronApps mitReactzu erstellen ist dasElectronReact Boilerplate. Ich habe mich fürElectron Forgeentschieden, weil die Optionen zur Paketierung der App aus meiner Sicht umfangreicher sind und besser funktionieren.ElectronReact Boilerplate bietet sehr umfangreiche Voreinstellungen fürReact, die mir mehr im Weg standen, als sie mir genutzt haben.
Warum kein create-react-app?
Ein Wort noch zu Create React App. Create React App ist das offizielle Tool von Facebook um neueReactApps zu erstellen. Allerdings ist Create React App ganz klar auf “echte” Web-Applikationen ausgelegt.
So verhindert Create React App die Benutzung von nativen Nodejs-Modulen. Damit degradiert esElectronzu einem einfachen Browser-Fenster. Sodass der eigentliche Sinn vonElectronzerstört wird.
Um zu sehen, ob das Hot-Reloading vonElectron Forgefunktioniert, werden wir eine kleine Änderung an unserer App vornehmen, bevor wir richtig loslegen.
Dafür öffnen wir die Datei app.jsx und ändern den Platzhaltertext ab.
...
<h2>Demo Application</h2>
...
Sobald du die Datei geändert hast und abspeicherst, sollte sich auch der angezeigte Text in derElectronApp ändern.
Um aus der Kombination vonElectron undReactein richtiges GUI framework zu machen, benötigen wir noch eine weitere Bibliothek: BlueprintJS.
BlueprintJS ist ein UI-Toolkit fürReact. Es bietet eine große Anzahl an Komponenten, aus denen wir unsere Oberfläche bauen können. Um BlueprintJS zu installieren, geben wir folgenden Code in der Kommandozeile ein:
npm i @blueprintjs/core --save
Danach müssen wir noch die CSS-Datein einbinden. Dazu öffnen wir index.html und fügen folgenden Code ein vor dem </head>-Tag ein:
Wenn du nach der Änderung die Electronneu lädst (<Strg>+R), solltest du eine andere Schriftart sehen.
Um unsere Demoanwendung nachzubauen, werden wir wie folgt vorgehen: Zuerst werden wir die Toolbar nachbauen, dann werden wir ein Textfeld integrieren und abschließend die Statuszeile implementieren.
Der Einfachheit halber werden wir alles in einer Datei entwickeln. Bei einer echten Anwendung würden wir aus Gründen der Übersichtlichkeit die Komponenten in mehrere Dateien aufspalten.
Toolbar
Die Toolbar-Komponente heißt in BlueprintJS Navbar. Sie hat mindestens eine NavbarGroup als Tochter. Diese wiederum kann Buttons und Trenner als Töchter haben.
Um die Demo Applikation nachzubilden haben wir der Navbar 5 Töchter gegeben. Davon sind 4 Buttonn und eine ein Trenner. Den Button mit dem Pfeil nach unten haben wir in ein Popover gepackt, um das Menü zu repräsentieren.
Wir importieren zuerst die benötigten Module und erweitern dann die App-Komponente. Jede React Komponenten-Klasse benötigt eine Render-Methode. Das Besondere der Render-Methode ist, dass man dort HTML und Javascript mischen kann. (Es gibt auch noch andere Komponenten. Die Besprechung würde hier aber zu weit fühern. Ich verweise daher auf die React-Dokumentation.)
Um das Verhalten der Toolbar nachzubauen, müssen wir nun den einzelnen Buttons eine onclick-Funktion geben.
DaElectronzwischen Haupt- und Render-Prozess unterscheidet, können wir aus einem Render-Prozess ( Das ist immer das, was als Fenster dargestellt wird.) auf den Hauptprozess nur zugreifen, wenn wir das Remote-Modul importieren.
Dies haben wir in den ersten drei Zeilen gemacht: Wir haben das Remote-Modul importiert und dann die Methode ShowMessageBox und das App-Objekt in zwei Konstanten gespeichert.
Die eigentlichen Click-Handler sind sehr einfach gehalten. Aus diesem werden nur die importiertenElectronMethoden aufgerufen. Das Ordnersymbol hat übrigens keinen Click-Handler bekommen, weil dies in der Demo App auch so ist. Allerdings könnte es eine gute Übung sein, mit einem Klick auf das Ordnersymbol einen Öffnen-Dialog zu zeigen.
Textfeld
Als nächstes werden wir das Textfeld einfügen. Hier bedienen wir uns einer HTML-Textarea.
Es muss dazu gesagt werden, dass dies kein vollständiger Text-Editor ist. Eine Textarea hat nur eine eingeschränkte API. Es sind viele Bibliotheken auf dem Markt, um leistungsfähige Editoren in eine Website zu integrieren.
Bekannte Bibliotheken, die gut mit React funktionieren sind draft.js und slate.js. Laut diesem Github-Issue soll eine Lösung auf Basis von draft.js demnächst in Blueprint landen. Allerdings ist dieses Ticket schon relativ alt und ich weiß nicht, wann diese Lösung eingeführt wird.
Um unser Layout wie in der Demo-Application zu halten, müssen wir das CSS für das umschließende Element und den Editor ein wenig abändern. Wir nutzen Flexbox, damit das Textfeld den gesamten freien Raum des Fensters einnimmt.
Abschließend erstellen wir noch unsere Statusbar. Diese stellt uns neben dem eigentlichen Layout, noch vor eine zweite Aufgabe: Wir müssen nämlich die Cursorposition und die Anzahl der Zeichen in der Statusbar anzeigen.
Das Layout ist schnell erstellt. Wir erstellen ein HTML Element, das eine Höhe von 50 Pixel hat und einen leicht grauen Hintergrund. Hierzu verwenden wir vordefinierte Farben von Blueprint und schreiben sie in das Style-Attribut der Statusbar.
Aufwändiger wird es nun, die Statistik über das Textdokument zu erstellen. Hierfür müssen wir Zustand inReacteinführen. Das Tolle anReactist, das bei Veränderungen des Zustands die betroffenen Komponenten aktualisiert werden. Das erlaubt es ein sehr simples Zustandsmodell der Applikation zu entwerfen. Wer noch gar keine Erfahrung mitReact hat, sollte an dieser Stelle mit dem offiziellen Tutorial auseinandersetzen und dann hierher zurückkommen.
Als erstes führen wir eine Zustandsvariable statistic ein und initialisieren diese. Darüber hinaus wollen wir deren Inhalt in der Statusbar darstellen.
Als Erstes legen wir einen Konstruktor für unsere Komponente an, in der wir die Zustandsvariable definieren. Wo wir gerade im Konstruktor sind, binden wir noch eine Methode an das this-Objekt der Komponenten. Die Methode werden wir gleich erstellen.
Als nächstes ergänzen wir das Textfeld um ein onKeyDown-Attribut. Damit wir Nutzer-Eingaben abfangen können. Um die Änderung der Textarea nun von unserer Statusbar darstellen zu können, fügen wir folgenden Text innerhalb des Elements ein.
Dabei erlaubt uns React mit den geschweiften Klammern direkt auf die Zustandsvariable der Komponente zuzugreifen. Bei jeder Änderung der Zustandsvariablen wird die Komponente aktualisiert.
Zu guter Letztschreiben wir noch eine einen Event-Handler für Nutzer-Eingaben.Dieser passt den Zustand der Komponenteder aktuellen Cursorposition des Textfeldes an.Achtung: Der Event-Handlerberücksichtigt nicht die typische VorgehensweiseinReact.Er dient nur zur Veranschaulichungdes reaktiven Charakters von React. Ich möchte an dieser Stelle nicht noch weitere React-Konzepte wie Referenzenoder Props einführen.
Wenn er nun unsereAnwendung anschauenist dieseder Beispielanwendung von GTKsehr ähnlich.
Im nächsten Teil, werden wirdie Optik der App anpassen, um das Feeling der App noch “nativer” erscheinen zu lassen. Später werden wirnoch das Menü entsprechend abändern, dass es die gleiche Funktionalität umfasst wie in dergtk3-demo-application.
Auf der Suche nach einem Music-Player für Ubuntu? Keine Ahnung wo du suchen sollst? Ich habe euch die 10 besten Music-Player für Ubuntu zusammengestellt – die ich finden konnte. Mit dieser Auswahl könnt ihr loslegen und ausprobieren welcher Audio-Player euch unter Ubuntu am besten gefällt.
Als Unterstützung habe ich jeweils eine PPA und eine Installations-Anleitung angegeben. Damit könnte ihr bequem, die jeweils neueste Version installieren
Audacious
Vorteile
leichtgewichtig
sowohl GTK-Skin als auch klassisches Winamp-Skin
sehr übersichtliche Benutzeroberfläche
Nachteile
keine Musikbibliothek
Installieren
sudo apt-get install audacious audacious-plugins
Banshee
Vorteile
guter Kompromis aus Funktionumfang und Benutzerfreundlichkeit
Nachteile
benötigt das Mono-framework
Installieren
sudo apt-get install banshee
Clementine
Vorteile
gute Performance, trotz hohen Funktionsumfangs
Cross-Platform
Nachteile
keine GTK-Anwendung
Installieren
sudo apt-get install clementine
Qmmp
Vorteile
schnell
unterstützt WinAmp-Skins
Nachteile
häßlicher Standardskin
keine GTK-Anwendung
keine Musikbibliothek
Installieren
sudo apt-get install qmmp
Quod Libet
Vorteile
leistungsfähige Bibliotheksfunktion
Nachteile
unaufgeräumte Oberfläche
Installieren
sudo apt-get install quodlibet
Rhythmbox
Vorteile
großer Funktionsumfang
standard in Ubuntu
Nachteile
Installieren
sudo apt-get install rhythmbox
Lollypop
Vorteile
großer Funktionsumfang
moderne Umsetzung eines Audioplayers
Nachteile
sehr auf Gnome zugeschnitten
Installieren
sudo add-apt-repository ppa:gnumdk/lollypop
sudo apt-get update
sudo apt-get install lollypop
Tomahawk
Vorteile
unterstützt viele Musikdienste im Internet
Nachteile
langsam
Installieren
sudo apt-get install tomahawk
Spotify
Vorteile
einzige Möglichkeit mit einem kostenlosen Account Spotify zu hören
Nachteile
langsam
umständliche Installation
basiert auf Webtechnologien
Installieren
echo deb http://repository.spotify.com stable non-free | sudo tee /etc/apt/sources.list.d/spotify.list
Diese Liste ist natürlich hoch subjektiv – also nicht gleich auf mich einschlagen. Ich persönlich nutze momentan entweder Audacious oder Spotify; Welchen Music-Player benutzt ihr?
Wer noch bessere Audio-Player kennt, ist natürlich aufgefordert, diesen in den Kommentaren zu vermerken.
Ich habe Akiee Version 0.0.4 veröffentlicht. Dieses Release verbessert die User-Experience in einigen Details.
So wurden die Ansichten für den Source-Code der Markdown-Datei und für die Gesamtübersicht (Board-View) in das Menü verlegt, weil ich sie selbst kaum benutzt habe und sie aus meiner Sicht nicht so oft benutzt werden sollten.
Wiederholende Aufgaben werden nun wieder auf TODO gesetzt, wenn sie abgeschloßen wurden. Beendete Aufgaben bekommen ein Erledigungsdatum, damit man nachschauen kann, wann eine Aufgabe beendet wurde. Dies gilt auch für sich wiederholende Aufgaben, sie bekommen als Erledigungsdatum das Datum der letzten Erledigung.
In der DONE-Ansicht werden nun alle erledigten Aufgaben in chronologischer Folge angezeigt, da man so besser nachschauen kann, was man in letzter Zeit erledigt hat.
Um den Backlog besser zu ordnen, kann man nun einzelne Aufgaben an das Ende oder den Anfang verschieben.
Wer seine Aufgaben über Cloud-Storage-Dienste wie Dropbox, OwnCloud oder Syncthing abgleichen möchte, kann dies nun tun. Man wählt einfach ein synchronisiertes Verzeichnis als Ort zum Speichern der Aufgaben an.
Zusätzlich habe ich Akiee deutlich schneller gemacht. Zum einen läuft Akiee nun auf Electron und zum anderen wurde die Darstellung überarbeitet, damit sie schneller angezeigt wird. Dank Electron gibt es jetzt Downloads für jegliche erdenkliche Plattform und in jedem erdenklichen Paketformat.
Die User Storys für Akiee 0.0.3
Port from Node-Webkit to Electron.
As a (kanban) user I want to have the DONE state ordered by time in reverse, that I can see what I finished last.
When I am ordering my backlog, I want to put Tasks from the end of the backlog to the top.
Dropbox support.
Refactoring – Speedup
Move to electron for better toolkit and faster user interface.
Test Section aus dem Reagent Cookbook durcharbeiten und auf Akiee anwenden – Make Akiee ready for mobile.
Try to speed up akiee with cursors.
When I “done” a repeating task, I want that it is put to TODO again, but I want to see it in the DONE view.
Move Code-View and Board View to Menu, because it is almost never used.
Geplante Features
Mobile App to View task and add new ones.
Zim integration.
Markdown mode for zim.
When I enter a new task, I want to able to add more information to it without leaving my current view.
When I am scanning through a list in Akiee, I want to be able to use arrow-, page-, end- and pos1 keys.
When I am using Akiee a lot, I want to be able to donate somthing to the author, that I can help with / influence the development of Akiee.
When I am ordering my tasks, I want to be able to move them by drag&drap, because it is much faster, than using the arrow-buttons.
When I have larger tasks/stories (like writing a test article), I want to be able to divide it in sub-tasks.
wryte ist eine kleine Diktier-App, die ich geschrieben habe. Die Grundidee ist, dass man am besten so schreibt, wie man spricht. Was liegt da also näher, als wirklich zu sprechen.
Umgesetzt habe ich breit mit Elektron auf Basis der Speech-To-Text-API von Google Chrome. Da es beim Diktieren häufig zu kleinen Fehlern kommt, hatte ich die Idee, den diktierten Text im Anschluss an das Diktat durch eine Rechtschreibprüfung zu jagen.
Um das Diktieren flüssiger zu gestalten, können Satzzeichen einfach per Shortcut eingegeben werden und müssen nicht diktiert werden. So werden Gedankengänge nicht unnötig unterbrochen.
Wenn man mit dem Diktieren fertig ist, kommt man in einen Edit-Modus, in dem einem alle gefundenen Fehler angezeigt werden, und man den Text schnell überarbeiten kann.
Wichtig: Die ganze App ist ein erster Prototyp, der noch viele kleine Bugs besitzt und dem noch grundlegende Funktion fehlen, wie zum Beispiel eine Speichern-Funktion.
Umgesetzt habe ich wryte mit folgenden Technologien: