autostart
This commit is contained in:
parent
9d01cbf57e
commit
0551a18cc9
6 changed files with 69 additions and 10 deletions
|
@ -302,6 +302,7 @@
|
||||||
],
|
],
|
||||||
"user": {
|
"user": {
|
||||||
"preferences": {
|
"preferences": {
|
||||||
|
"autostart": false,
|
||||||
"acceptMessage": "",
|
"acceptMessage": "",
|
||||||
"contact": "",
|
"contact": "",
|
||||||
"downloadRate": null,
|
"downloadRate": null,
|
||||||
|
|
13
ctl
13
ctl
|
@ -150,6 +150,19 @@ if [ "$1" == "open" ]; then
|
||||||
fi
|
fi
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
if [ "$1" == "autostart" ]; then
|
||||||
|
if [ $SYSTEM == "Darwin" ]; then
|
||||||
|
open "/Applications/Open Media Library.app" --args --autostart
|
||||||
|
fi
|
||||||
|
if [ $SYSTEM == "Linux" ]; then
|
||||||
|
if [ ! -e "$PID" ]; then
|
||||||
|
python3 "$NAME/oml/gtkstatus.py" --autostart
|
||||||
|
exit $?
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
if [ "$1" == "ui" ]; then
|
if [ "$1" == "ui" ]; then
|
||||||
shift
|
shift
|
||||||
python3 "$NAME/oml/ui.py" $@
|
python3 "$NAME/oml/ui.py" $@
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
import os
|
import os
|
||||||
from os.path import dirname, abspath
|
from os.path import dirname, abspath
|
||||||
import subprocess
|
import subprocess
|
||||||
import time
|
import sys
|
||||||
import webbrowser
|
import webbrowser
|
||||||
|
|
||||||
import gi
|
import gi
|
||||||
|
@ -26,7 +26,8 @@ class OMLIcon:
|
||||||
icon = None
|
icon = None
|
||||||
indicator = None
|
indicator = None
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self, autostart=False):
|
||||||
|
self.autostart = autostart
|
||||||
if appindicator:
|
if appindicator:
|
||||||
self.indicator = appindicator.Indicator.new("OML", icon,
|
self.indicator = appindicator.Indicator.new("OML", icon,
|
||||||
appindicator.IndicatorCategory.APPLICATION_STATUS)
|
appindicator.IndicatorCategory.APPLICATION_STATUS)
|
||||||
|
@ -40,6 +41,7 @@ class OMLIcon:
|
||||||
self.icon.connect("activate", self._click)
|
self.icon.connect("activate", self._click)
|
||||||
self.icon.connect("popup-menu", self._click)
|
self.icon.connect("popup-menu", self._click)
|
||||||
subprocess.Popen([ctl, 'start'])
|
subprocess.Popen([ctl, 'start'])
|
||||||
|
if not self.autostart:
|
||||||
GLib.timeout_add_seconds(1, self._open, None)
|
GLib.timeout_add_seconds(1, self._open, None)
|
||||||
GLib.timeout_add_seconds(60, self._check, None)
|
GLib.timeout_add_seconds(60, self._check, None)
|
||||||
|
|
||||||
|
@ -85,5 +87,7 @@ class OMLIcon:
|
||||||
webbrowser.open_new_tab(url)
|
webbrowser.open_new_tab(url)
|
||||||
self.menu = None
|
self.menu = None
|
||||||
|
|
||||||
OMLIcon()
|
if __name__ == '__main__':
|
||||||
Gtk.main()
|
autostart = len(sys.argv) > 1 and sys.argv[1] == '--autostart'
|
||||||
|
OMLIcon(autostart)
|
||||||
|
Gtk.main()
|
||||||
|
|
|
@ -7,15 +7,16 @@ from utils import run
|
||||||
|
|
||||||
root_dir = os.path.dirname(settings.base_dir)
|
root_dir = os.path.dirname(settings.base_dir)
|
||||||
|
|
||||||
def install_launcher():
|
def install_autostart():
|
||||||
if sys.platform == 'darwin':
|
if sys.platform == 'darwin':
|
||||||
install_launchd()
|
install_launchd()
|
||||||
elif sys.platform.startswith('linux'):
|
elif sys.platform.startswith('linux'):
|
||||||
install_xdg()
|
install_autostart_xdg()
|
||||||
else:
|
else:
|
||||||
print('no launcher integration supported for %s' % sys.platform)
|
print('no launcher integration supported for %s' % sys.platform)
|
||||||
|
|
||||||
def uninstall_launcher():
|
|
||||||
|
def uninstall_autostart():
|
||||||
if sys.platform == 'darwin':
|
if sys.platform == 'darwin':
|
||||||
name = 'com.openmedialibrary.loginscript'
|
name = 'com.openmedialibrary.loginscript'
|
||||||
plist = os.path.expanduser('~/Library/LaunchAgents/%s.plist'%name)
|
plist = os.path.expanduser('~/Library/LaunchAgents/%s.plist'%name)
|
||||||
|
@ -25,12 +26,25 @@ def uninstall_launcher():
|
||||||
os.unlink(plist)
|
os.unlink(plist)
|
||||||
elif sys.platform.startswith('linux'):
|
elif sys.platform.startswith('linux'):
|
||||||
for f in map(os.path.expanduser, [
|
for f in map(os.path.expanduser, [
|
||||||
'~/.local/share/applications/openmedialibrary.desktop',
|
|
||||||
'~/.config/autostart/openmedialibrary.desktop'
|
'~/.config/autostart/openmedialibrary.desktop'
|
||||||
]):
|
]):
|
||||||
if os.path.exists(f):
|
if os.path.exists(f):
|
||||||
os.unlink(f)
|
os.unlink(f)
|
||||||
|
|
||||||
|
def install_launcher():
|
||||||
|
if sys.platform.startswith('linux'):
|
||||||
|
install_xdg()
|
||||||
|
else:
|
||||||
|
print('no launcher integration supported for %s' % sys.platform)
|
||||||
|
|
||||||
|
def uninstall_launcher():
|
||||||
|
if sys.platform.startswith('linux'):
|
||||||
|
for f in map(os.path.expanduser, [
|
||||||
|
'~/.local/share/applications/openmedialibrary.desktop',
|
||||||
|
]):
|
||||||
|
if os.path.exists(f):
|
||||||
|
os.unlink(f)
|
||||||
|
|
||||||
def install_launchd():
|
def install_launchd():
|
||||||
return
|
return
|
||||||
name = 'com.openmedialibrary.loginscript'
|
name = 'com.openmedialibrary.loginscript'
|
||||||
|
@ -48,7 +62,7 @@ def install_launchd():
|
||||||
<key>ProgramArguments</key>
|
<key>ProgramArguments</key>
|
||||||
<array>
|
<array>
|
||||||
<string>%s/ctl</string>
|
<string>%s/ctl</string>
|
||||||
<string>start</string>
|
<string>autostart</string>
|
||||||
</array>
|
</array>
|
||||||
<key>RunAtLoad</key>
|
<key>RunAtLoad</key>
|
||||||
<true/>
|
<true/>
|
||||||
|
@ -72,3 +86,16 @@ Terminal=false
|
||||||
Categories=Network;FileTransfer;P2P;
|
Categories=Network;FileTransfer;P2P;
|
||||||
''' % {'base': root_dir})
|
''' % {'base': root_dir})
|
||||||
|
|
||||||
|
def install_autostart_xdg():
|
||||||
|
app = os.path.expanduser('~/.config/autostart/openmedialibrary.desktop')
|
||||||
|
ox.makedirs(os.path.dirname(app))
|
||||||
|
with open(app, 'w') as fd:
|
||||||
|
fd.write('''[Desktop Entry]
|
||||||
|
Type=Application
|
||||||
|
Name=Open Media Library
|
||||||
|
Comment=
|
||||||
|
Exec=%(base)s/ctl autostart
|
||||||
|
Icon=%(base)s/openmedialibrary/static/png/oml.png
|
||||||
|
Terminal=false
|
||||||
|
X-GNOME-Autostart-enabled=true
|
||||||
|
''' % {'base': root_dir})
|
||||||
|
|
|
@ -66,6 +66,8 @@ def setPreferences(data):
|
||||||
data['contact'] != settings.preferences['contact']
|
data['contact'] != settings.preferences['contact']
|
||||||
change_username = 'username' in data and \
|
change_username = 'username' in data and \
|
||||||
data['username'] != settings.preferences['username']
|
data['username'] != settings.preferences['username']
|
||||||
|
change_autostart = 'autostart' in data and \
|
||||||
|
data['autostart'] != settings.preferences['autostart']
|
||||||
if 'libraryPath' in data and \
|
if 'libraryPath' in data and \
|
||||||
data['libraryPath'] != settings.preferences['libraryPath']:
|
data['libraryPath'] != settings.preferences['libraryPath']:
|
||||||
change_path = [settings.preferences['libraryPath'], data['libraryPath']]
|
change_path = [settings.preferences['libraryPath'], data['libraryPath']]
|
||||||
|
@ -82,6 +84,12 @@ def setPreferences(data):
|
||||||
Changelog.record(state.user(), 'editcontact', data['contact'])
|
Changelog.record(state.user(), 'editcontact', data['contact'])
|
||||||
if change_path:
|
if change_path:
|
||||||
state.tasks.queue('changelibrarypath', change_path)
|
state.tasks.queue('changelibrarypath', change_path)
|
||||||
|
if change_autostart:
|
||||||
|
import integration
|
||||||
|
if settings.preferences['autostart']:
|
||||||
|
integration.install_autostart()
|
||||||
|
else:
|
||||||
|
integration.uninstall_autostart()
|
||||||
return settings.preferences
|
return settings.preferences
|
||||||
actions.register(setPreferences, cache=False)
|
actions.register(setPreferences, cache=False)
|
||||||
|
|
||||||
|
|
|
@ -136,6 +136,12 @@ oml.ui.preferencesPanel = function() {
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
advanced: [
|
advanced: [
|
||||||
|
{
|
||||||
|
id: 'autostart',
|
||||||
|
title: 'Start Open Media Library at Login',
|
||||||
|
value: preferences.autostart,
|
||||||
|
help: 'Launch Open Media Library in the background once you login to your computer.'
|
||||||
|
},
|
||||||
{
|
{
|
||||||
id: 'showDebugMenu',
|
id: 'showDebugMenu',
|
||||||
title: 'Show Debug Menu',
|
title: 'Show Debug Menu',
|
||||||
|
|
Loading…
Reference in a new issue