diff --git a/README.md b/README.md
index c4ac7b82..02704b89 100644
--- a/README.md
+++ b/README.md
@@ -14,7 +14,7 @@ will likely work.
# Running
```bash
-sudo python3 setup.py install --prefix /usr && sudo key-mapper-gtk -d
+sudo python3 setup.py install && sudo key-mapper-gtk -d
```
You can also start it via your applications menu.
diff --git a/data/org.key-mapper.policy b/data/org.key-mapper.policy
index d65cb864..597e76f8 100644
--- a/data/org.key-mapper.policy
+++ b/data/org.key-mapper.policy
@@ -1,8 +1,8 @@
+ "-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
+ "http://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd"
+ >
mouse
@@ -13,7 +13,7 @@
auth_admin
auth_admin
- /usr/bin/key-mapper-gtk
+ {executable}
true
diff --git a/setup.py b/setup.py
index 6d7f5980..63e66b5f 100644
--- a/setup.py
+++ b/setup.py
@@ -19,9 +19,39 @@
# along with key-mapper. If not, see .
+import os
+
import DistUtilsExtra.auto
+class Install(DistUtilsExtra.auto.install_auto):
+ def run(self):
+ DistUtilsExtra.auto.install_auto.run(self)
+ self.ensure_polkit_prefix()
+
+ def ensure_polkit_prefix(self):
+ """Make sure the policy file uses the right prefix."""
+ executable = os.path.join(self.install_data, 'bin/key-mapper-gtk')
+ assert os.path.exists(executable)
+
+ policy_path = '/usr/share/polkit-1/actions/org.key-mapper.policy'
+
+ with open(policy_path, 'r') as f:
+ contents = f.read()
+ if '{executable}' not in contents:
+ # already done previously
+ return
+
+ with open(policy_path, 'w') as f:
+ print(
+ f'Inserting the correct path "{executable}" into '
+ 'org.key-mapper.policy'
+ )
+ f.write(contents.format(
+ executable=executable
+ ))
+
+
DistUtilsExtra.auto.setup(
name='key-mapper',
version='0.1.0',
@@ -29,6 +59,9 @@ DistUtilsExtra.auto.setup(
license='GPL-3.0',
data_files=[
('share/applications/', ['data/key-mapper.desktop']),
- ('share/polkit-1/actions/', ['data/org.key-mapper.policy']),
+ ('/usr/share/polkit-1/actions/', ['data/org.key-mapper.policy']),
],
+ cmdclass={
+ 'install': Install
+ }
)