Using Workrave for Activity Breaks

We all know that taking activity breaks is a healthy habit, but like many healthy habits, they can be hard to adopt.

Over the past few months, I have been using Workrave with really good results.

Here is a link if you want to try it for yourself (on Linux you can install it manually or from the repos), and here are my default preferences for your reference:

  • Micro-break: 1 min for every work-min.
  • Rest-break: 10 mins for every work-hour.

note: this might seem excessive for activity breaks, but remember that this is work-time (work-mins, work-hours …etc) and not elapsed time, read on if you are curious as to what this means.

The remaining part of this post covers some common questions and features of Workrave.

Natural Breaks vs. Prompted Breaks

In principle Workrave measures the time you are actively working on your computer (by monitoring user input) and after a given amount of work-time, it prompts you to take a break for X rest-time (this is a prompted break), after the break it restarts the work-time counter.

If on the other hand, you voluntarily take a break (e.g. by going to the bathroom) for the same X rest-time. Workrave also treats this as a break and restarts the work-time counter.

This raises another question:

How does Workrave know when a user is actively using the computer?

In its simplest form, Workrave keeps track of keyboard and mouse user input. By default if you press a key, it starts the work-time counter, but if it does not see any user input within the next 5 seconds it pauses the counter and additionally if you are inactive for X rest-time, it restarts the counter (it assumes you just took a natural break).

This is the reason why work-time is not jut the time elapsed, it can be quite a bit more (e.g. 10 work-mins can end up being 20 actual minutes).

Noise Filtering Features

In addition, to better determine when you are actively using the computer (as opposed to say playing a video or scrolling through your picture library …etc), Workrave ships with some internal extra noise-filtering features you can tune, mainly:

Activity time

How far apart do two input events need to be to be considered a valid activity i.e. to start the work-time counter.

  • default activity-time setting: 1 second.

i.e. Workrave needs to see two or more input events in a one second window in order to start the work-time counter.

Noise time

If two “events” (mouse movement or keystrokes) occur and the time between those two events is more than noise time, the activity is ignored.

  • default noise-time setting: 9 seconds.

e.g. starting in an idle state if you press a key and then 10 seconds later you press another key, Workrave still considers you as being idle i.e. it does not start the work-time counter.

Idle time

Idle time: after this time workrave considers the user idle and stops/pauses the work-time counter.

  • default idle-time setting: 5 seconds.

See the question above for an example: How does Workrave know when a user is actively using the computer?

Changing Workrave Internal Preferences: Modifying Noise Filtering Settings

For example, because I want every keystroke or mouse movement to be considered an activity: I want to disable the activity-time and noise-time.

Here is an example of how you would do it through the terminal (Workrave 1.10.1 on Linux Mint 17).

  • Activity-time, change to 0:

    gsettings set org.workrave.monitor activity 0

  • Noise-time, change to 0:

    gsettings set org.workrave.monitor noise 0

  • Idle-time, keep at default 5 seconds (for illustration-purposes only):

    gsettings set org.workrave.monitor idle 5000

Then, check and make sure our settings were changed. Type in the terminal:

gsettings list-recursively org.workrave.monitor

And you should get your Workrave settings back:

org.workrave.monitor activity 0
org.workrave.monitor idle 5000
org.workrave.monitor noise 0 

And that’s it for today, thank you for watching!

Any notes/comments are welcome.

Gifting-back on your birthday

For a while, I have been thinking of economically viable business/funding models for open technology; I believe this is the most important problem facing open technology today. See some of my previous post here: the why? the how?

Fortunately, there are many efforts in this direction. But alas, it will take time before we converge on a long-term solution with no strings attached.

I propose an interim solution.

Assuming we are all most generous on our birthdays, the general idea is simple:

  1. On  your birthday allocate a small sum of money to donate proportionally to the open projects you use the most.
  2. Then, you can also share the list of projects with your friends so that they can gift-you by supporting the projects you care about.

And here is a (potential) practical plan for open software (open source, libre) projects.

On your birthday:

  1. Generate a list of programs with usage statistics and order by percent of usage.
    • Shell/Python script?
    • Output to a Spreadsheet/CSV file.
  2. Determine the amount of money you will donate this year to support the projects you use.
    • A small fraction of your disposable income? remember some of these programs allow you to get your work done.
  3. Multiply the sum of money by the fraction of usage for every project.
  4. Donate proportionally to every project.
    • The more you use a program, the larger the fraction of money devoted to support that project.
  5.  Share your program’s usage stats spreadsheet with all of your close friends.
    • Through e-mail or social media.
    • You can use dropbox, google docs …etc.
  6. Encourage your friends to donate to your listed projects as a gift on your birthday.
    • Perhaps to projects you both use.
    • When they donate you both receive the thank you e-mail.
  7. Update the shared spreadsheet with your friends’ names and send them a personal thank you note.

Steps 1-4 are personal donations (you can do these on your own). Steps (5-7) are gifts from your friends.

Note: Steps 1-4 could be automated in the future.

Thanks for reading, all comments are welcome.

Android Quotes Display Apps v2.1

This is a continuation of my previous efforts.

A quote a day? That would be nice, wouldn’t it?

That’s what we thought too, and that’s why we created these apps.

You can use these open source apps to display personal/book quotes in your Android device. The quotes are read from text file(s) and displayed (one by one) in random order at periodic intervals (or on screen-tap).

Random Quotes App

Application to turn an Android device into a “picture frame” for displaying quotes.

Random Quotes Widget

Application to display your quotes in a small widget in the Android device front screen.


For documentation and upcoming features, see the user documentation.


All the development was done using Gradle and the android tools directly from the command line (No bloated IDEs). It’s actually pretty straightforward after you get the hold of it.

Using gradle to build Android apps from the CLI

The Gradle build process mostly involves two commands:

  • Build Debug:

    gradle assembleDebug

  • Build Release (signed apps with your own keys):

    gradle assembleRelease

Once the application builds you can use the following scripts to install and debug your application.

If you need more, you can write your own little scripts, it’s actually quite nice.


These applications were created to meet our needs, we are sharing them under the assumption that they can provide some value to others, but with no warranties of any kind; without even the implied warranty of merchantability or fitness for any particular purpose. See the GPLv3 license file for more details.

Changing the Economics of Open Source

please note: We are referring to open source as the general set of open technologies (open source, open hardware, open access …etc) for more info read the FAQ

Is it possible that in our future, we can have consumer products where the underlying hardware and software are fully open?

Perhaps, but as it stands today, there is no economic incentive for the suppliers of technology to adopt this path.

Today, the development of consumer products is largely based on keeping the intellectual property proprietary (IP is where the value is) and mass manufacturing copies of the consumer goods we all use (copies are inexpensive). Naturally in economics every party in a negotiation is seeking to maximize their return and over the years this model has been carefully tailored towards maximizing the revenue of suppliers.

But what about the consumers of technology?

For an efficient economic outcome, in aggregate, consumers of technology must be able to negotiate on equal terms with suppliers to be able to maximize their utility. But for this to be possible consumers must have accurate and honest information about the items they are purchasing.

Unfortunately, An efficient outcome for the economy as a whole is not always the optimal outcome for the individual. One way to tilt the balance towards a better outcome for suppliers is by purposely misinforming consumers about the products they are purchasing. Normally this is done by advertising greater value for products (i.e. in the consumer mind) upon the basis of visual appearance, brands and other intangibles and  leaving the necessary information (technical specifications, implementation details …etc) out of reach. Therefore consumers continuously engage in unhealthy over spending habits and wasteful consumption (with the environment consequences this carries) for the economic benefit of suppliers.

But this can change, open technologies can grow to become our standard for consumer products only if, we as consumers start demanding honest and accurate information about the products we purchase, and we start valuing/purchasing technology for what it is: applied science and not magic.

It is through our collective use and financial support of open products, that we can contribute towards making of open technology a requirement and not an option.

Until then, we will work to facilitate the progress in this direction.

KipOpen Application, Moving Forward

KipOpen is an open community investment web application. A decentralized online investment platform where informed consumers can purchase open goods.

The KipOpen application is designed to provide a viable economic path for the development of open technologies (specifically hardware and software). The overall aim is to shift the current economics of open technology (largely based on aggregate donations and corporate sponsorships) to a demand-sided model by directly connecting informed consumers with engineers and developers (see the FAQ for more general info).

KipOpen is developed such that anyone can download it and install in their own average computer/server (e.g. a spare netbook or a cheap single board computer …etc). Thus any interested person (most likely for profit/commissions) can host a local open marketplace where technical users can create open designs/products and informed consumers can purchase and vote on those designs/products.

Our long term goal with KipOpen is to facilitate the commercialization of open technology. We see a future where open is the de-facto standard for consumer products.

An open and decentralized market where informed consumers can purchase open goods to meet their everyday necessities is indeed a long-shot, but we believe with the right economics, it is possible and that is our goal.

Finally the name, KipOpen stands for Keep Intellectual Property Open, but it also stands for Keep Investment Platform Open. But after all it is just a name.