summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorQue Quotion2015-10-24 02:24:52 +0900
committerQue Quotion2015-10-24 02:24:52 +0900
commitf80fd0e76a710d4d20b1954d7770c776aec86b1f (patch)
tree43af2841236d72081a5e6d688cecf2888193555d
downloadaur-f80fd0e76a710d4d20b1954d7770c776aec86b1f.tar.gz
Seriously just take the package.
-rw-r--r--.SRCINFO22
-rw-r--r--.gitignore55
-rw-r--r--PKGBUILD36
-rw-r--r--xscreensaver-dbus-screenlock.desktop7
-rw-r--r--xscreensaver-dbus-screenlock.py24
5 files changed, 144 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO
new file mode 100644
index 000000000000..78aeace7eea7
--- /dev/null
+++ b/.SRCINFO
@@ -0,0 +1,22 @@
+pkgbase = xscreensaver-dbus-screenlock
+ pkgdesc = Emulate gnome-screensaver's dbus for integrated screen-locking in gnome-derivatives
+ pkgver = 1
+ pkgrel = 2
+ url = http://ubuntuforums.org/showthread.php?t=1865593&s=1c7f28c50a3f258e1d3404e41f098a0b&p=11418175#post11418175
+ arch = i686
+ arch = x86_64
+ license = GPL
+ depends = xscreensaver
+ depends = python
+ depends = dbus
+ depends = gnome-settings-daemon-compat
+ optdepends = indicator-session: Activate "Lock" from indicator
+ provides = gnome-screensaver
+ conflicts = gnome-screensaver
+ source = xscreensaver-dbus-screenlock.py
+ source = xscreensaver-dbus-screenlock.desktop
+ md5sums = 0a1f60e3834481b1b3043d484d4ffcf7
+ md5sums = d334857a577f92413ddf5d16df79c15c
+
+pkgname = xscreensaver-dbus-screenlock
+
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 000000000000..e2220da9a49d
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,55 @@
+# Compiled source #
+###################
+*.com
+*.class
+*.dll
+*.exe
+*.o
+*.so
+
+# Packages #
+############
+# it's better to unpack these files and commit the raw source
+# git has its own built in compression methods
+*.7z
+*.dmg
+*.gz
+*.iso
+*.jar
+*.rar
+*.tar
+*.zip
+*.xz
+
+# Archlinux Packaging #
+#######################
+*.tar
+*.tar.*
+*.zip
+*.tgz
+*.log
+*.log.*
+*.sig
+pkg/
+src/
+
+# Logs and databases #
+######################
+*.log
+*.sql
+*.sqlite
+
+# OS generated files #
+######################
+.DS_Store
+.DS_Store?
+._*
+.Spotlight-V100
+.Trashes
+ehthumbs.db
+Thumbs.db
+*~
+
+# Particulars #
+###############
+
diff --git a/PKGBUILD b/PKGBUILD
new file mode 100644
index 000000000000..5b316279d534
--- /dev/null
+++ b/PKGBUILD
@@ -0,0 +1,36 @@
+# Maintainer: Que Quotion <quequotion@bugmenot.com>
+
+pkgname=xscreensaver-dbus-screenlock
+pkgver=1
+pkgrel=2
+pkgdesc="Emulate gnome-screensaver's dbus for integrated screen-locking in gnome-derivatives"
+arch=('i686' 'x86_64')
+url="http://ubuntuforums.org/showthread.php?t=1865593&s=1c7f28c50a3f258e1d3404e41f098a0b&p=11418175#post11418175"
+license=('GPL')
+depends=('xscreensaver' 'python' 'dbus' 'gnome-settings-daemon-compat')
+optdepends=('indicator-session: Activate "Lock" from indicator')
+provides=('gnome-screensaver')
+conflicts=('gnome-screensaver')
+source=('xscreensaver-dbus-screenlock.py'
+ 'xscreensaver-dbus-screenlock.desktop')
+md5sums=('0a1f60e3834481b1b3043d484d4ffcf7'
+ 'd334857a577f92413ddf5d16df79c15c')
+
+package() {
+
+ # Don't install xscreensaver-dbus-screenlock.py script if user has a personalized copy
+ if [ ! -f "/usr/local/sbin/xscreensaver-dbus-screenlock.py" ]; then
+ install -Dm755 {${srcdir},${pkgdir}/usr/bin}/xscreensaver-dbus-screenlock.py
+ fi
+
+ # This startup script runs in user sesssions with user permissions.
+ # Because dbus sessions are exclusive, both gnome-session and indicator session expect this.
+ # It might be more secure to run the process as root, but users would be locked out of sessions!
+ # Regardless, gnome-screensaver works just the same way so whatever...
+ install -Dm644 {${srcdir},${pkgdir}/etc/xdg/autostart}/xscreensaver-dbus-screenlock.desktop
+
+ # Redirect gnome-screensaver-command calls to xscreensaver-command
+ install -Ddm755 "${pkgdir}/usr/bin/"
+ ln -s /usr/bin/xscreensaver-command "${pkgdir}/usr/bin/gnome-screensaver-command"
+
+}
diff --git a/xscreensaver-dbus-screenlock.desktop b/xscreensaver-dbus-screenlock.desktop
new file mode 100644
index 000000000000..86bce98636d8
--- /dev/null
+++ b/xscreensaver-dbus-screenlock.desktop
@@ -0,0 +1,7 @@
+[Desktop Entry]
+Type=Application
+Name=Xscreensaver DBus Screenlock
+Comment=Intercept gnome-screensaver DBus service call for xscreensaver
+TryExec=xscreensaver-dbus-screenlock.py
+Exec=xscreensaver-dbus-screenlock.py
+NotShownIn=Gnome;Unity
diff --git a/xscreensaver-dbus-screenlock.py b/xscreensaver-dbus-screenlock.py
new file mode 100644
index 000000000000..7bf1daf97363
--- /dev/null
+++ b/xscreensaver-dbus-screenlock.py
@@ -0,0 +1,24 @@
+#!/usr/bin/env python
+# Replace gnome-screensaver DBus service to call xscreensaver
+# http://ubuntuforums.org/showthread.php?t=1865593&s=1c7f28c50a3f258e1d3404e41f098a0b&p=11418175#post11418175
+
+import dbus
+import dbus.service
+import dbus.glib
+import gobject
+import subprocess
+
+class ScreenDbusObj(dbus.service.Object):
+ def __init__(self):
+ session_bus = dbus.SessionBus()
+ bus_name=dbus.service.BusName("org.gnome.ScreenSaver",bus=session_bus)
+ dbus.service.Object.__init__(self,bus_name, '/org/gnome/ScreenSaver')
+
+ @dbus.service.method("org.gnome.ScreenSaver")
+ def Lock(self):
+ subprocess.Popen(['xscreensaver-command', '-lock'])
+
+
+if __name__ == '__main__':
+ object=ScreenDbusObj()
+ gobject.MainLoop().run()