GithubHelp home page GithubHelp logo

brainthrottle's Introduction

brainthrottle

Attempts to detect when you are skimming text (through excessive scrolling) and progressively dims the screen to slow you down.

Crappy gif
Crappy cell phone video demo

Sometimes we skim when we shouldn't. This is a simple, for-fun experiment in fixing that.

How to use

Compile

Install OSX developer tools, then:

$ clang -o brainthrottle brainthrottle.c -framework IOKit -framework ApplicationServices -Wl,-U,_CGDisplayModeGetPixelWidth -Wl,-U,_CGDisplayModeGetPixelHeight -mmacosx-version-min=10.6

Run

When you should be comprehending what you are reading and scrolling is a good proxy for skimming, run brainthrottle. Use Ctrl-C to exit.

$ ./brainthrottle

You can how much scrolling triggers a screen dim, how long the screen is dimmed, etc. via constants at the top of brainthrottle.c. Command line options are on the TODO list.

Design

main installs an EventTap. The EventTap callback (handleScroll) tracks the scroll displacement (recentScrollTotal). When scrolling exceeds scrollThreshold, each time the EventTap fires a timer is created (or restarted) and the screen dims. When the timer expires, the screen brightness is restored to its original value (prevBrightness).

Known issues

  • OSX only
  • Only works with the main display
  • Main display brightness must be controllable via OSX
  • Skim detection message should have a timestamp for logging and analysis
  • Tuning parameters should be command line arguments
  • Demo is crappy cellphone gif

Author

Jonathan Foote
[email protected]
28 June 2015

Thanks to Matt Danger for blogging about OSX brightness control back in in 2008: http://mattdanger.net/

brainthrottle's People

Contributors

jfoote avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.