+all:
+ @echo "Call \"make install\" to install this program."
+ @echo "Call \"make hotplug\" to install matching hotplug events."
+INSTALL_PATH=/usr/local/bin
install:
- install -m 775 autorandr /usr/bin/
- install -m 775 autorandr_monitor /usr/bin/
+ install auto-disper ${INSTALL_PATH}
+ install -m 755 autorandr ${INSTALL_PATH}
install -m 644 bash_completion/autorandr /etc/bash_completion.d/
- ln -sf /usr/bin/autorandr /usr/bin/auto-disper
- install -m 644 Xsession.d/autorandr /etc/X11/Xsession.d/99zautorandr
- #install -m 644 pm-utils/40autorandr /etc/pm/power.d/
+
+hotplug:
+ install -m 755 pm-utils/40autorandr /etc/pm/sleep.d/
+ install -m 644 udev/40-monitor-hotplug.rules /etc/udev/rules.d/
- udevadm control --reload-rules
++ udevadm control --reload-rules
--- /dev/null
--- /dev/null
++#!/usr/bin/env python
++""""
++Author: Tomasz Bogdal (a.k.a. QueezyTheGreat)
++Home: https://github.com/queezythegreat/autorandr
++License: This Source Code Form is subject to the terms of the
++ Mozilla Public License, v. 2.0
++"""
++import os
++import pyinotify
++from pyinotify import ProcessEvent
++
++#TODO: Fork off when started
++#TODO: Add configuration file
++#TODO: Add command line options
++
++SYS_VIDEO_OUTPUTS='/sys/class/drm/'
++DEFAULT_PROFILE='default'
++AUTORANDR_CMD='autorandr --change --default %s' % DEFAULT_PROFILE
++
++class VideoOutputMonitor(ProcessEvent):
++ """ Launch autorandr when video card output status is changed. """
++
++ def process_IN_ACCESS(self, event):
++ """ Handle IN_ACCESS events to `status` file. """
++ if event.name == 'status':
++ print 'Change status of %s' % os.path.basename(event.path)
++ os.system(AUTORANDR_CMD)
++
++
++def register_video_cards(manager):
++ """ Register all video card ouptus for monitoring. """
++ if not os.path.exists(SYS_VIDEO_OUTPUTS):
++ return
++
++ for directory in os.listdir(SYS_VIDEO_OUTPUTS):
++ path = os.path.join(SYS_VIDEO_OUTPUTS, directory)
++ status = os.path.join(path, 'status')
++ if os.path.exists(status):
++ print 'Monitoring %s' % path
++ manager.add_watch(path, pyinotify.ALL_EVENTS)
++
++def main():
++ # pyinotify.log.setLevel(10)
++ manager = pyinotify.WatchManager()
++ handler = VideoOutputMonitor()
++ notifier = pyinotify.Notifier(manager, default_proc_fun=handler)
++
++ register_video_cards(manager)
++
++ notifier.loop()
++
++if __name__ == '__main__':
++ main()