Package Details: selfspy-git 1:0.1.4.r202.ga98a9c0-2

Git Clone URL: (read-only)
Package Base: selfspy-git
Description: X11 personal keylogger daemon with statistical analysis.
Upstream URL:
Keywords: keylogger keylogging productivity quantified-self
Licenses: GPL
Conflicts: selfspy
Provides: selfspy=0.1.4.r202.ga98a9c0
Submitter: fackamato
Maintainer: grandchild
Last Packager: grandchild
Votes: 10
Popularity: 0.053673
First Submitted: 2012-04-15 18:22
Last Updated: 2018-11-11 21:44

Pinned Comments

grandchild commented on 2018-11-11 21:48

I patched this to use pycryptodome explicitly. Thanks @deraffe, for the report and patch draft.

I did have to patch API calls to pycryptodome in selfspy, which only serves as a reminder that this code is unmaintained, and the package may stop working again soon.

I will continue to patch things up for now, but ultimately things will have to happen upstream.

Latest Comments

« First ‹ Previous 1 2

jamesan commented on 2016-07-10 09:36

In the package() function, the last two install commands fail, it seems, due to invalid source path. The path would be valid if it begins with either: "$srcdir/" or "../", but not "$srcdir/../", as the source files of the two install commands are located at $srcdir/${_pkgname}.conf and $srcdir/${_pkgname}@.service and the pwd during those commands is: $srcdir/${_pkgname}.

Also, packaging guidelines indicate that at the start of each PKGBUILD function, the pwd is always $srcdir, so we can further simplify the initial cd command in the pkgver(), prepare(), and package() functions from "cd $srcdir/${_pkgname}" to just "cd ${_pkgname}".

I spotted a few other minor differences with accepted packaging guidelines and made changes. You can find them here:

jamesan commented on 2016-07-10 08:47

@Pastafarianist: when instantiating the unit, the instance name (i.e. the string between the '@' and suffix, aka. unit type) must be an existing username, not "user", unless that was a valid username in your system. For example, if the user I wanted to log in my system is named, "jamesan", the corresponding unit name would be: "selfspy@jamesan.service".

Pastafarianist commented on 2016-04-27 08:31

I'm running the latest Manjaro:

$ uname -srv
Linux 4.4.6-1-MANJARO #1 SMP PREEMPT Sat Mar 19 06:00:37 CET 2016

On my machine, selfspy crashes immediately after I start it:

$ sudo systemctl start selfspy@user.service
$ sudo systemctl status selfspy@user.service
● selfspy@user.service - Log everything user does on the computer
Loaded: loaded (/usr/lib/systemd/system/selfspy@.service; disabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Ср 2016-04-27 11:21:21 MSK; 4s ago
Process: 22728 ExecStopPost=/usr/bin/rm -f /home/%I/.selfspy/ (code=exited, status=217/USER)
Process: 22724 ExecStart=/usr/bin/selfspy --config /home/%I/.config/selfspy.conf (code=exited, status=217/USER)
Main PID: 22724 (code=exited, status=217/USER)

апр 27 11:21:21 laptop systemd[1]: Started Log everything user does on the computer.
апр 27 11:21:21 laptop systemd[1]: selfspy@user.service: Main process exited, code=exited, status=217/USER
апр 27 11:21:21 laptop systemd[1]: selfspy@user.service: Control process exited, code=exited status=217
апр 27 11:21:21 laptop systemd[1]: selfspy@user.service: Unit entered failed state.
апр 27 11:21:21 laptop systemd[1]: selfspy@user.service: Failed with result 'exit-code'.

But it works if I start it manually:

$ selfspy -c ~/.config/selfspy.conf
RECORD extension present

Without sudo, systemctl throws a weird error (df says I have enough space on all drives), but a GUI sudo dialog from Xfce is displayed regardless:

$ systemctl start selfspy@user.service
Failed to add /run/systemd/ask-password to directory watch: No space left on device

Any idea what's going on?

grandchild commented on 2016-02-06 20:34

Thanks! Fixed. (Not just in this package ;)

Anonymous comment on 2016-02-06 18:34

Just a heads up, I got this error when running makepkg:

==> ERROR: license should be an array

I believe license in PKGFILE should read:


grandchild commented on 2015-07-28 21:49

Hey, bananabas, thanks for the input! I agree on the ugliness of running a sysd service for an X-dependent program, although it has the advantage of being more convenient to query for status (system-ctl status).
I welcome the tips for the content of the service file, and will rework it in a few days.

I might end up not removing completely it in the end, since I think it might be useful to somebody, and mostly: no-one's forced to use it. I might include a warning in an .install file. (Although that's a relatively big annoyance for such a small remark. Hm...) What do you think?

bananabas commented on 2015-07-28 16:03

The file /usr/lib/systemd/system/selfspy@.service needs either a complete makeover or it simply needs to be removed. Some issues are:
* it does not have 'ExecStop=/bin/sh -c "kill -9 $(ps aux | grep foo | cut -f 1)"'
* it is not usable with 'systemctl --user'. For that it should be stored in the 'user/' instead of 'system/' dir, the line 'User=..' should be removed and '%h' should be used instead of '%I'
* even considering all the above, selfspy is a session service, and as such is best started via the DE/WM (as also stated on its github documentation page). The reason I say this is two-fold:
1) hardcoding DISPLAY=:0 in a service unit is ugly. Some users have it set to another value, or use multiple displays and
2) it is hard to synchronize with the actual display, which isn't started as a service (yet)

fackamato commented on 2012-04-16 11:39

Added 'pycrypto' to depends.

fackamato commented on 2012-04-15 21:37

Added 'tk' to depends.