summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorQue Quotion2022-02-27 03:41:35 +0900
committerQue Quotion2022-02-27 03:41:35 +0900
commit0957e1845c8dff26a3d5ea7f03c451056030072a (patch)
tree05199b776d61d822b4f3e51361b4c992fff76666
downloadaur-0957e1845c8dff26a3d5ea7f03c451056030072a.tar.gz
initial commit
-rw-r--r--.SRCINFO29
-rw-r--r--PKGBUILD37
-rwxr-xr-xcompiz-cube-screensaver36
-rw-r--r--compiz-screenlock-freedesktop.desktop7
-rwxr-xr-xcompiz-screenlock-freedesktop.py24
-rw-r--r--compiz-screenlock-gnome.desktop7
-rwxr-xr-xcompiz-screenlock-gnome.py23
-rw-r--r--org.freedesktop.ScreenSaver.service3
-rw-r--r--org.gnome.ScreenSaver.service3
9 files changed, 169 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO
new file mode 100644
index 000000000000..7f5114b0b773
--- /dev/null
+++ b/.SRCINFO
@@ -0,0 +1,29 @@
+pkgbase = compiz-cube-screensaver
+ pkgdesc = Lock screen and rotate compiz cube
+ pkgver = 1
+ pkgrel = 1
+ url = http://ubuntuforums.org/showthread.php?t=1865593&s=1c7f28c50a3f258e1d3404e41f098a0b&p=11418175#post11418175
+ arch = any
+ license = GPL
+ depends = compiz
+ depends = python
+ depends = dbus
+ depends = xdotool
+ depends = xorg-xinput
+ conflicts = xscreensaver-dbus-screenlock
+ source = compiz-screenlock-freedesktop.py
+ source = compiz-screenlock-gnome.py
+ source = org.freedesktop.ScreenSaver.service
+ source = org.gnome.ScreenSaver.service
+ source = compiz-screenlock-freedesktop.desktop
+ source = compiz-screenlock-gnome.desktop
+ source = compiz-cube-screensaver
+ md5sums = e009d5e8d91e342dfaeb939fddaf4bdd
+ md5sums = 40b13abfeeaf8d669f44ca34bc836f6c
+ md5sums = fe39d0e389e764664d8fd610c59ebb91
+ md5sums = 0d1ff939325131594c8c0eb1342b3ebe
+ md5sums = 2460d93a56b4f5db5ec5d8876d12f0e9
+ md5sums = 52ed67b09a878086f41fdc250fbfcc20
+ md5sums = 4ef4564b256a445348345b14a83da601
+
+pkgname = compiz-cube-screensaver
diff --git a/PKGBUILD b/PKGBUILD
new file mode 100644
index 000000000000..9f6313c61f67
--- /dev/null
+++ b/PKGBUILD
@@ -0,0 +1,37 @@
+# Maintainer: Que Quotion <quequotion@bugmenot.com>
+pkgname=compiz-cube-screensaver
+pkgver=1
+pkgrel=1
+pkgdesc="Lock screen and rotate compiz cube"
+arch=('any')
+url="http://ubuntuforums.org/showthread.php?t=1865593&s=1c7f28c50a3f258e1d3404e41f098a0b&p=11418175#post11418175"
+license=('GPL')
+depends=('compiz' 'python' 'dbus' 'xdotool' 'xorg-xinput')
+source=(compiz-screenlock-{freedesktop,gnome}.py
+ org.{freedesktop,gnome}.ScreenSaver.service
+ compiz-screenlock-{freedesktop,gnome}.desktop
+ compiz-cube-screensaver)
+md5sums=('e009d5e8d91e342dfaeb939fddaf4bdd'
+ '40b13abfeeaf8d669f44ca34bc836f6c'
+ 'fe39d0e389e764664d8fd610c59ebb91'
+ '0d1ff939325131594c8c0eb1342b3ebe'
+ '2460d93a56b4f5db5ec5d8876d12f0e9'
+ '52ed67b09a878086f41fdc250fbfcc20'
+ '4ef4564b256a445348345b14a83da601')
+conflicts=('xscreensaver-dbus-screenlock')
+package() {
+ #Python scripts
+ install -Dm755 {${srcdir},${pkgdir}/usr/bin}/compiz-screenlock-freedesktop.py
+ install -Dm755 {${srcdir},${pkgdir}/usr/bin}/compiz-screenlock-gnome.py
+
+ #Dbus services
+ install -Dm644 {${srcdir},${pkgdir}/usr/share/dbus-1/services}/org.freedesktop.ScreenSaver.service
+ install -Dm644 {${srcdir},${pkgdir}/usr/share/dbus-1/services}/org.gnome.ScreenSaver.service
+
+ #XDG Startups
+ install -Dm644 {${srcdir},${pkgdir}/etc/xdg/autostart}/compiz-screenlock-freedesktop.desktop
+ install -Dm644 {${srcdir},${pkgdir}/etc/xdg/autostart}/compiz-screenlock-gnome.desktop
+
+ #Screensaver script
+ install -Dm755 {${srcdir},${pkgdir}/usr/bin}/compiz-cube-screensaver
+}
diff --git a/compiz-cube-screensaver b/compiz-cube-screensaver
new file mode 100755
index 000000000000..dc6bbc4590bb
--- /dev/null
+++ b/compiz-cube-screensaver
@@ -0,0 +1,36 @@
+#!/bin/bash
+
+#Xorg display to control
+DISPLAY=:0.0
+#Pointer, check `xinput --list`
+pointer=12
+#Compiz rotate plugin's "initiate" button
+INITIATE="$(dconf read /org/compiz/profiles/Default/plugins/rotate/initiate-button)"; [[ -z "${INITIATE}" ]] && exit
+#Start rotation left or right at random
+direction="${RANDOM}"; let "direction >>= 14"; [[ "${direction}" -eq 1 ]] && direction=90 || direction=270
+#Pixels to move XTEST mouse (rotation speed)
+step=1
+
+#Disable input devices other than pointer and XTEST
+for i in $(xinput list --id-only); do \
+ [[ "${i}" -gt "5" ]] && [[ "${i}" -ne "${pointer}" ]] && \
+ enabled="$(xinput list-props ${i} | grep "Device Enabled")" && \
+ [[ "${enabled: -1}" -eq "1" ]] && \
+ xinput disable "${i}" && \
+ disabled+=("${i}"); \
+done
+
+xdotool mousedown "${INITIATE//[!0-9]/}" &
+
+#Rotate Cube
+while [ $(xprintidle) -gt 0 ]; do \
+ xdotool mousemove_relative --polar "${direction}" "${step}" & \
+ sleep 0.0166; \
+done
+
+xdotool mouseup "${INITIATE//[!0-9]/}" &
+
+#Re-enable input devices
+for i in "${disabled[@]}"; do \
+ xinput enable "${i}" & \
+done &
diff --git a/compiz-screenlock-freedesktop.desktop b/compiz-screenlock-freedesktop.desktop
new file mode 100644
index 000000000000..b9e87b1082c7
--- /dev/null
+++ b/compiz-screenlock-freedesktop.desktop
@@ -0,0 +1,7 @@
+[Desktop Entry]
+Type=Application
+Name=Compiz+xdotool DBus Screenlock
+Comment=Intercept light-locker DBus service call for compiz screensaver
+TryExec=xdotool
+Exec=compiz-screenlock.py
+NotShownIn=Gnome;Unity
diff --git a/compiz-screenlock-freedesktop.py b/compiz-screenlock-freedesktop.py
new file mode 100755
index 000000000000..c60e4f2d9191
--- /dev/null
+++ b/compiz-screenlock-freedesktop.py
@@ -0,0 +1,24 @@
+#!/usr/bin/env python
+# Provide DBus service to call compiz+xdotool
+# http://ubuntuforums.org/showthread.php?t=1865593&s=1c7f28c50a3f258e1d3404e41f098a0b&p=11418175#post11418175
+
+import dbus
+import dbus.service
+import dbus.glib
+from gi.repository import GObject
+import subprocess
+
+class ScreenDbusObj(dbus.service.Object):
+ def __init__(self):
+ session_bus = dbus.SessionBus()
+ bus_name=dbus.service.BusName("org.freedesktop.ScreenSaver",bus=session_bus)
+ dbus.service.Object.__init__(self,bus_name, '/org/freedesktop/ScreenSaver')
+
+ @dbus.service.method("org.freedesktop.ScreenSaver")
+ def Lock(self):
+ subprocess.Popen(['bash','/usr/bin/compiz-cube-screensaver'])
+
+if __name__ == '__main__':
+ object=ScreenDbusObj()
+ GObject.MainLoop().run()
+
diff --git a/compiz-screenlock-gnome.desktop b/compiz-screenlock-gnome.desktop
new file mode 100644
index 000000000000..f990e2e5c28c
--- /dev/null
+++ b/compiz-screenlock-gnome.desktop
@@ -0,0 +1,7 @@
+[Desktop Entry]
+Type=Application
+Name=Compiz+xdotool DBus Screenlock (GNOME)
+Comment=Intercept light-locker DBus service call for compiz screensaver
+TryExec=xdotool
+Exec=compiz-screenlock-gnome.py
+NotShownIn=Gnome;Unity
diff --git a/compiz-screenlock-gnome.py b/compiz-screenlock-gnome.py
new file mode 100755
index 000000000000..0224016eed3e
--- /dev/null
+++ b/compiz-screenlock-gnome.py
@@ -0,0 +1,23 @@
+#!/usr/bin/env python
+# Provide DBus service to call compiz+xdotool
+# http://ubuntuforums.org/showthread.php?t=1865593&s=1c7f28c50a3f258e1d3404e41f098a0b&p=11418175#post11418175
+
+import dbus
+import dbus.service
+import dbus.glib
+from gi.repository 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(['bash','/usr/bin/compiz-cube-screensaver'])
+
+if __name__ == '__main__':
+ object=ScreenDbusObj()
+ GObject.MainLoop().run()
diff --git a/org.freedesktop.ScreenSaver.service b/org.freedesktop.ScreenSaver.service
new file mode 100644
index 000000000000..779d3cb24a6d
--- /dev/null
+++ b/org.freedesktop.ScreenSaver.service
@@ -0,0 +1,3 @@
+[D-BUS Service]
+Name=org.freedesktop.ScreenSaver
+Exec=/usr/bin/compiz-screenlock-freedesktop.py
diff --git a/org.gnome.ScreenSaver.service b/org.gnome.ScreenSaver.service
new file mode 100644
index 000000000000..ff29f4e4c356
--- /dev/null
+++ b/org.gnome.ScreenSaver.service
@@ -0,0 +1,3 @@
+[D-BUS Service]
+Name=org.gnome.ScreenSaver
+Exec=/usr/bin/compiz-screenlock-gnome.py