Ich habe einige Anwendungen so eingerichtet, dass sie bei jeder Anmeldung automatisch gestartet werden (z. B. redshift-gtk, gtg), aber nachdem diese zu Startanwendungen hinzugefügt wurden ( System -> Preferences -> Startup Applications
), hat sich die Zeit für die Anmeldung offensichtlich erhöht. Aus diesem Grund dauert es zu lange, bis meine Panels, Desktops usw. angezeigt werden - bis ich warten muss.
Ich brauche diese Apps nicht, um sofort verfügbar zu sein, aber es wäre gut, wenn sie irgendwann gestartet würden. In der Zwischenzeit steht das Ubuntu-Menü / -Panel zum Ausführen anderer Apps zur Verfügung, die ich möglicherweise benötige.
Ich habe versucht, den Befehl at zu verwenden, mit der Absicht, alle Startanwendungen zu bearbeiten, um die Befehle in die Warteschlange at zu stellen, aber dies hat nicht funktioniert, da die Apps nicht die erforderlichen Umgebungsvariablen erhalten (wie DISPLAY).
Wird dafür der nice
Befehl verwendet? Irgendwelche anderen Ideen, wie ich das erreichen kann? Wenn möglich, möchte ich das Bearbeiten der Befehle für Startanwendungen vermeiden, da dies einen großen Aufwand für die Replikation auf anderen von mir verwendeten Computern bedeuten würde.
Antworten:
Die Anzahl der Sekunden, die zum Warten auf das Laden Ihres Desktops benötigt werden, ist beliebig und kann sich je nach Situation ändern.
sleep
Versuchen Sie stattdessen , Startanwendungen wie folgt auszuführen, sobald die Systemlast gesunken ist:(Bearbeiten: Koushiks Vorschlag hinzugefügt.)
Speichern Sie es als
~/bin/run-when-load-low
und fügen Sie esrun-when-load-low 'COMMAND'
in den Einstellungen für Startanwendungen hinzu.Hinweise zu dieser Methode:
DISPLAY
Umgebungsvariable an die Anwendung übergeben. Für die meisten Desktop-Anwendungen ist dies alles, was Sie benötigen. Berücksichtigen Sie daher alle Sonderfälle und berücksichtigen Sie diese Tatsache, wenn Sie Fehler beheben, die sich nicht richtig verhalten. Ein guter Ausgangspunkt, wenn Sie der Meinung sind, dass für eine Anwendung möglicherweise andere Umgebungsvariablen übergeben werden müssen, istprintenv
die Dokumentation der Anwendung, obwohl ich persönlich noch nicht auf dieses Problem gestoßen bin.batch
wirkt sich nur aus, wenn Anwendungen ausgeführt werden; es ändert nichts an ihrer Priorität / Freundlichkeit.run-when-load-low 'gedit My\ Notes.txt'
. Wenn Sie Ihrer Anwendung wirklich Parameter in einfachen Anführungszeichen übergeben müssen, müssen Sie im Startbefehl doppelte Anführungszeichen verwenden :run-when-load-low "gedit 'My Notes.txt'"
. Für etwas Komplizierteres ist es wahrscheinlich am besten, wenn Sie nur eine Kopie des Skripts mit Ihrem fest codierten Befehl ändern.quelle
batch
? Ist es auch möglich, dass sich die CPU-Auslastung verringert, bevor der Desktop vollständig geladen wurde (z. B. darauf warten, dass einige Symbole auf die Festplatte geladen werden) und diese Apps gestartet werden, was zu einer ähnlichen Situation wie zuvor führt? Mit anderen Worten, werden die Befehle mit einem Stapel ausgeführt, der von Natur aus eine niedrigere Priorität hat, die sich ergibt, wenn andere Apps ausgeführt werden möchten?batch
Warteschlange, da er noch ausgeführt wird. Daher habe ich den Prozess auch im Hintergrund gestartet. Die modifizierte Linie ist wie folgt:echo "export DISPLAY=$DISPLAY; notify-send 'Running on Load low' '$1' && $1 &" | batch
Ich fand, dass
sleep 10 && COMMAND
es nicht funktionierte , nur den Befehlsnamen zu verwenden. Ich hatte Probleme damit, dass sowohl Conky als auch Xchat zu früh geladen wurden und irgendwie beschädigt wurden. Ich musste ein kleines Skript namens schreiben~/bin/startup
und es einfügen:Sie müssen die Berechtigungen ändern, damit sie ausgeführt werden können,
chmod +x ~/bin/startup
und dann einfach den Eintrag für Startanwendungen durch den Befehl ersetzenstartup
, damit alles im Skript ausgelöst wird.Sie könnten eine Datei für jede Anwendung haben, wenn Sie so geneigt wären.
quelle
sleep
wird das Booten nicht verzögern. Startanwendungen sind nicht blockierend, was bedeutet, dass mehrere Dinge gleichzeitig geladen werden können.sleep
Mit ing kann der Rest des Gnoms die weniger wichtigen Dinge laden und dann laden.Verwenden Sie den Befehl 'sleep'.
Bearbeiten Sie unter System -> Einstellungen -> Startanwendungen den Befehl für die Programme, auf die Sie verzögern möchten:
Ersetzen Sie 10 durch die Anzahl der Sekunden, die gewartet werden soll, und BEFEHLEN Sie durch das, was ursprünglich im Befehlsfeld stand.
quelle
COMMAND &
würde es funktionieren, wenn Sie nur (im Hintergrund ausführen) verwenden.