Giter VIP home page Giter VIP logo

gtd's Introduction

Readme

Summary

Get Things Displayed (GTD) is a small utility application that enables displaying text and images in large on your primary display. Text and images can be displayed immediately or set on a timer using a rich variety of ways of expressing the time-out. Both relative and absolute times are possible. Once displayed, a 'notification' can be dragged anywhere and can easily be dismissed by pressing escape. Notifications float on top of all windows so they cannot be accidentally missed.

Notification text is sized and wrapped intelligently to be as readable as possible from a distance. GTD honours text with line breaks so that, code for example, is displayed correctly.

GTD uses a server/client model. The GTD server is written in Clojure and is responsible for displaying notifications and queuing future notifications. The client is a small and simple script, written in Python, that sends notifications to the server. Both the client and server should be cross-platform compatible and have been tested on Windows and Mac OS X. The client is written in Python for it's fast start up time and low overhead compared to the JVM.

The client application is designed for the command line and is very flexible. In keeping with the UNIX philosophy it does its single job well and is very useful in conjunction with other programs via piping. It is also easily scripted and integrated with any decent text editor.

Requirements

A recent version of the JVM and Python are all that is required to run GTD.

Clojure jars are not required as all necessary Clojure libraries are included within the GTD jar. For those of you familiar with Clojure you may wish to run GTD using Leiningen and this is possible.

Installation

Installation is very simple. Simply copy the gtd-x.x.x.jar file somewhere and run this to start the server. There are various ways of forking a JVM and getting the server to run as a daemon. On Windows double clicking the jar file should take care of it. I recommend using the packaged app if you're on Mac OS X. Again this is just a case of running the app by double clicking on it.

Once the server is running, the Python gtd.py script can be used to send notifications to the server. I recommend symlinking to this from somewhere in your path. e.g.

ln -s ~/some/path/to/gtd.py ~/bin/gtd
chmod +x ~/bin/gtd

Creating a gtd-server script somewhere in your path and adding to it the commands you use to start the server is recommended. This allows you to then start the server using gtd-server but also gtd --server.

Suggested usages

Here are a few potential usages to demonstrate the possibilities of GTD.

  • Display the time and date with: date | gtd.
  • Display reminders: echo "Team meeting" | gtd 30 min or gtd -m "Coffee" 11.30.
  • Display an image: ls <somefile> | gtd.
  • Display phone numbers to be easily dialed: gtd -m "+44 (0)123 456 7890".
  • Display the results of unit tests or a lengthy build when finished: lein test|gtd or make; gtd -m "Build finished.".
  • Display a file to someone stood behind you: cat blah.clj|gtd.
  • View the bottom of a log from across the room: tail blah.log|gtd.
  • See the currently added notifications and when they will be displayed: gtd --list.

Screenshot

Here is an example usage screenshot achieved by using the command date | gtd.

Screenshot of GTD in action.

Specifying a time-out

Here are some example ways to specify the time-out period. Both relative and absolute examples are provided. For a definitive list: at present you'll have to look at the code I'm afraid. I would start with the unit tests though.

Relative

now "now" "-" "." ""
tomorrow "tomorrow" "1day" "1 day" "day" "a day" "1days" "days1"
days "xday" "xdays" "dayx" "monday-sunday"
week "7days" "week" "a week" "next week" "xweek" "xweeks"
month "month" "a month" "next month" "jan" "january"
year "year" "a year" "next year"
secs "xseconds" "xsecond" "xsecs" "xsec" "a second" "second" "sec"
mins "xminutes" "xminute" "xmins" "xmin" "a minute" "minute" "min"
hours "xhours" "xhour" "xhr" "xhrs" "a hour" "an hour" "hour" "hr"

Absolute

  • 2011-04-30
  • 2011-04-30 14:32
  • 2011-04-30 14:32:17
  • 2011-04-30 02:32pm
  • 2011-04-30 02:32 pm
  • 2011-04-30 2:32 pm
  • 2011-04-30 02:32:17pm
  • 2011-04-30 02:32:17 pm
  • 2011-04-30 2:32:17 pm
  • 14:32
  • 14:32:17
  • 02:32pm
  • 02:32 pm
  • 2:32 pm
  • 02:32:17pm
  • 02:32:17 pm
  • 2:32:17 pm

gtd's People

Contributors

gregsexton avatar

Watchers

Pavel Tokarev 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.