Giter Site home page Giter Site logo

pomo's Introduction

Pomo Build Status Dependency Status Code Climate

Command-line application for the Pomodoro time management technique, with notification and tmux status bar support.

Description

With Pomo you can add, remove, list, view, and start timing tasks all via the command-line with a simple, slick interface. You are reminded of the remaining time on a task via Notification Center, Growl, libnotify, or Quicksilver. These notifications appear half-way, at the 5 minute point, and when the task duration has expired. Also, the Pomo timer can be displayed in your tmux status bar.

Installation

$ gem install pomo

Configuration

Pomo uses ~/.pomorc for configuration options.

To initialize a default configuration file:

$ pomo initconfig

See Configuration Options for more details on all the available options.

Task Selection API

Taken from pomo help:

pomo provides a unified task selection api which can be used
with most of the commands. Commands with [task] or [task ...]
in their synopsis accept only single or both single and multiple
task selection, respectively.

Single task selection:
n          : selects a single task by index : Ex: pomo remove 1
first      : selects the first task         : Ex: pomo remove first
last       : selects the last task          : Ex: pomo remove last

Multiple task selection:
[n ]+      : selects several tasks by index : Ex: pomo remove 2 8 1
[n..n]+    : selects a range of tasks       : Ex: pomo remove 5..9 11..14
[n..-n]+   : selects a range of tasks       : Ex: pomo remove 2..-1
[api ]+    : selects several tasks by api   : Ex: pomo remove first last
complete   : selects complete tasks         : Ex: pomo remove complete
incomplete : selects incomplete tasks       : Ex: pomo remove incomplete
all        : selects all tasks              : Ex: pomo remove all

Examples

  • View global or command specific help:

    $ pomo help
    $ pomo help add
    $ pomo help remove
    
  • Get started by adding a task:

    $ pomo add "Fix IE6 stying issues"
    

    And another:

    $ pomo add "Destroy IE6" --description "because IE6 is terrible"
    
  • List your tasks (or use pomo which defaults to pomo list):

    $ pomo list
        0. Fix IE6 stying issues                : 25 minutes
        1. Destroy IE6                          : 25 minutes
    
  • Start the first incomplete task:

    $ pomo start
    

    A notification window will display:

Pomo OS X Notification

  • Alternatively, you can start the first incomplete task with a progress bar:

    $ pomo start --progress
    Started Fix IE6 stying issues, you have 25 minutes :)
    (=........................) 24 minutes remaining
    
  • Once you have completed the task, list again (alternatively pomo ls) for remaining tasks:

    $ pomo ls
        1. Destroy IE6                          : 25 minutes
    
  • Or take a break:

    $ pomo break
    $ pomo break 10
    $ pomo break --length 10
    
  • List all tasks:

    $ pomo ls --all
      ✓ 0. Fix IE6 stying issues                : 25 minutes
        1. Destroy IE6                          : 25 minutes
    
  • List only completed tasks:

    $ pomo ls --complete
      ✓ 0. Fix IE6 stying issues                : 25 minutes
    
  • At any time mid-task you may terminate pomo via CTRL + C, at which time you may manually complete the task:

    $ pomo complete first
    $ pomo complete last
    $ pomo complete 1
    $ pomo complete all
    $ pomo complete incomplete
    $ pomo complete 5..7
    
  • The next time you run pomo start the first incomplete task will start:

    $ pomo start
    

    Or choose a specific task:

    $ pomo start first
    $ pomo start last
    $ pomo start 5
    
  • You may also remove tasks:

    $ pomo remove first
    $ pomo remove last
    $ pomo remove 2
    $ pomo remove 1
    $ pomo remove 6
    $ pomo rm first
    $ pomo rm 2..5
    $ pomo rm 1..-1
    
  • View task details:

    $ pomo show first
    $ pomo show last
    $ pomo show 5
    $ pomo show 1 2 3
    
  • Remove all tasks:

    $ pomo remove all
    $ pomo rm all
    
  • Or if you prefer, create a directory specific task list. Pomo will auto-detect ./.pomo in this directory, and utilize its contents.

    $ pomo init
    

Configuration Options

The default configuration for pomo is as follows:

  • Notification library is set to Notification Center on OSX 10.8; Growl on OSX 10.7 or less and Windows; and libnotify on Linux
  • Progress bar is turned off
  • tmux integration is turned off

Settings are easily customizable. Taken from pomo help initconfig:

Examples:

# Configure with notification center, no progress bar, and tmux integration
pomo initconfig --notifier notification_center --no-progress --tmux

Options:
  --notifier <lib>     Specify notificaiton library: `notification_center`, `libnotify`, `growl`, `quicksilver`
  --[no-]progress      Run with progress bar
  --[no-]tmux          Refresh tmux status bar on timer change
  --[no-]force         force overwrite of existing config file

Tmux Status Bar Integration

Pomo's timer can be displayed in tmux's status bar with the following configuration set:

pomo initconfig --tmux

Then add the below to your ~/.tmux.conf:

set-option -g status-right '#(cat ~/.pomo_stat)'

The timer will display with the default color when not active, green during a Pomodoro, red during the last 5 minutes of a Pomodoro, and blue during a break e.g.

tmux status bar

Contributing

We ❤️ pull requests and feedback. Feel free to submit a ticket or see CONTRIBUTING for details on pull requests.

Copyright

Copyright (c) 2012 TJ Holowaychuk. See LICENSE for details.

pomo's People

Contributors

cgardner avatar josephpecoraro avatar jrunning avatar noonat avatar stephenmckinney avatar tj avatar xiongchiamiov avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pomo's Issues

pomo ls: default to incomplete tasks?

Random idea, but instead of showing all tasks with pomo ls might it be more efficient to instead list only incomplete tasks by default then just add an --all option so you only get hit with everything if you explicitly want it?

I know for myself I tend to think of it as a means of seeing what's on the plate, rather than a victory lap of stuff already done (once it's done, it's pretty much behind you at that point). This'd save a few keystrokes while narrowing things down for scanning the list more efficiently. Especially if the length of your list can get a bit out of control at times.

Add Pomodoro sets and automatic breaks

  • Pomodoro sets will default to 3
  • Short break duration will default to 5 mins
  • Long break duration will default to 25 mins
  • All the above are customizable in .pomorc
  • There will be some type of prompt to take a short/long break

You can start multiple pomos and breaks

It looks like once you start a pomo or break, the clock continues to run... and then you can start another pomo or break concurrently.

pomo should only allow for one break or pomo to be running at a time.

Admin access

TLDR; I can't add Pomo to Travis without admin access.

I use REE at work so I would like to maintain 1.8 compat. As ou can see from 5dc2d76 1.9 code creeps in unless I go back and forth in rbenv. Travis would make this easier.

Add multiple args to Pomo commands

Pomo::List#find currently does not allow for multiple args in some cases. For example the following will not work
$ pomo remove 1..3 5..-1

only the first range will register

pomo raise error on opensuse 12.2 64bit

Hello, I install pomo in my opensuse 12.2 64bit, but when i run pomo, it raise

/home/soffolk/.rvm/gems/ruby-1.9.3-p327-falcon/gems/commander-4.1.3/lib/commander/runner.rb:365:in `block in require_program': program version required (Commander::Runner::CommandError)
    from /home/soffolk/.rvm/gems/ruby-1.9.3-p327-falcon/gems/commander-4.1.3/lib/commander/runner.rb:364:in `each'
    from /home/soffolk/.rvm/gems/ruby-1.9.3-p327-falcon/gems/commander-4.1.3/lib/commander/runner.rb:364:in `require_program'
    from /home/soffolk/.rvm/gems/ruby-1.9.3-p327-falcon/gems/commander-4.1.3/lib/commander/runner.rb:52:in `run!'
    from /home/soffolk/.rvm/gems/ruby-1.9.3-p327-falcon/gems/commander-4.1.3/lib/commander/delegates.rb:11:in `run!'
    from /home/soffolk/.rvm/gems/ruby-1.9.3-p327-falcon/gems/commander-4.1.3/lib/commander/import.rb:10:in `block in <top (required)>'
/home/soffolk/.rvm/rubies/ruby-1.9.3-p327-falcon/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:55:in `require': cannot load such file -- libnotify (LoadError)
    from /home/soffolk/.rvm/rubies/ruby-1.9.3-p327-falcon/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:55:in `require'
    from /home/soffolk/.rvm/gems/ruby-1.9.3-p327-falcon/gems/pomo-2.1.1/lib/pomo/notifier/libnotify_notifier.rb:1:in `<top (required)>'
    from /home/soffolk/.rvm/rubies/ruby-1.9.3-p327-falcon/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:55:in `require'
    from /home/soffolk/.rvm/rubies/ruby-1.9.3-p327-falcon/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:55:in `require'
    from /home/soffolk/.rvm/gems/ruby-1.9.3-p327-falcon/gems/pomo-2.1.1/lib/pomo/notifier.rb:2:in `<top (required)>'
    from /home/soffolk/.rvm/rubies/ruby-1.9.3-p327-falcon/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:55:in `require'
    from /home/soffolk/.rvm/rubies/ruby-1.9.3-p327-falcon/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:55:in `require'
    from /home/soffolk/.rvm/gems/ruby-1.9.3-p327-falcon/gems/pomo-2.1.1/lib/pomo.rb:3:in `<top (required)>'
    from /home/soffolk/.rvm/rubies/ruby-1.9.3-p327-falcon/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:55:in `require'
    from /home/soffolk/.rvm/rubies/ruby-1.9.3-p327-falcon/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:55:in `require'
    from /home/soffolk/.rvm/gems/ruby-1.9.3-p327-falcon/gems/pomo-2.1.1/bin/pomo:5:in `<top (required)>'
    from /home/soffolk/.rvm/gems/ruby-1.9.3-p327-falcon/bin/pomo:19:in `load'
    from /home/soffolk/.rvm/gems/ruby-1.9.3-p327-falcon/bin/pomo:19:in `<main>'
    from /home/soffolk/.rvm/gems/ruby-1.9.3-p327-falcon/bin/ruby_noexec_wrapper:14:in `eval'
    from /home/soffolk/.rvm/gems/ruby-1.9.3-p327-falcon/bin/ruby_noexec_wrapper:14:in `<main>

Do anyone know why? Thank you

Specs

mainly for Pomo::List#find

Ruby 1.9.1 compatybility

Hi

to have this working on ruby 1.9 please add this:

coding: utf-8

to handle correct char ''✓" in source code.

Growl

It appears pomo doesn't show growl messages with growl v1.3. Have you considered using https://github.com/snaka/ruby_gntp which is what I use with Guard and it works perfectly.

Many thanks

Option to require manual completion on tasks

The guidelines for Pomodoro state that tasks may take up to seven 25-minute Pomodoros, and if it takes more, then you should consider breaking it up into multiple tasks: http://www.pomodorotechnique.com/download/pdf/Pomodoro-Cheat-Sheet.pdf

That being said, I'd like to request an option so that tasks aren't automatically marked as 'complete' after the 25 minute timer is finished.

In addition to not having to mark tasks as incomplete in order to continue, I also feel that having to manually complete a task would improve the positive feedback.

Thanks for the awesome script!

Add `pomo initconfig` to set up global preferences

e.g. pomo initconfig --tmux --no-progress --notifier growl sets global preferences.

Global preferences should be able to be overridden on the command-line. e.g. even if the config has notifier: growl a user can execute pomo start -n notification_center to override.

Grouping

Thank you for this gem :)

I great feature would be grouping, so that when you import a list of github issues etc... you could set the group/project so that your main list wouldn't become huge. So pomo <user> <project> [options] would create a group with the project name.

Detatch pomo

Fancy terminal tricks to display remaining time etc? having a shell open just for pomo is not ideal

[Bug] pomo default break time is 25 min not 5 min??

config = Pomo::Configuration.load(options.__hash__)
task = Pomo::Break.new('Break time', options.__hash__)
def self.load(options = {})
   options.reject!{|k,v| ![:notifier, :progress, :tmux].include? k}

Because call reject! in the load method so the second options.__hash__ is {}, And it led to default break time to 25

I think save options.__hash__ to one variable and use it for Pomo::Configuration.load and
Pomo::Break.new may solve the problem.

gem install pomo does not install properly

Hi

I am on Debian I did the described install. This is the error log from the shell

thanks

/var/lib/gems/2.1.0/gems/commander-4.2.0/lib/commander/runner.rb:384:in block in require_program': program version required (Commander::Runner::CommandError) from /var/lib/gems/2.1.0/gems/commander-4.2.0/lib/commander/runner.rb:383:ineach'
from /var/lib/gems/2.1.0/gems/commander-4.2.0/lib/commander/runner.rb:383:in require_program' from /var/lib/gems/2.1.0/gems/commander-4.2.0/lib/commander/runner.rb:51:inrun!'
from /var/lib/gems/2.1.0/gems/commander-4.2.0/lib/commander/delegates.rb:8:in run!' from /var/lib/gems/2.1.0/gems/commander-4.2.0/lib/commander/import.rb:10:inblock in <top (required)>'
/usr/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in require': cannot load such file -- libnotify (LoadError) from /usr/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:inrequire'
from /var/lib/gems/2.1.0/gems/pomo-2.1.3/lib/pomo/notifier/libnotify_notifier.rb:1:in <top (required)>' from /usr/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:inrequire'
from /usr/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in require' from /var/lib/gems/2.1.0/gems/pomo-2.1.3/lib/pomo/notifier.rb:2:in<top (required)>'
from /usr/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in require' from /usr/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:inrequire'
from /var/lib/gems/2.1.0/gems/pomo-2.1.3/lib/pomo.rb:3:in <top (required)>' from /usr/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:inrequire'
from /usr/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in require' from /var/lib/gems/2.1.0/gems/pomo-2.1.3/bin/pomo:5:in<top (required)>'
from /usr/local/bin/pomo:23:in load' from /usr/local/bin/pomo:23:in

'

Growl error when pomodoro starts.

disclaimer... using this on Windows 7, ruby 1.9.2, Growl Version 2.0.9.

I get the following error when I issue the command pomo start

error: private method `notify_info' called for Pomo::Notifier::Growl:Class. Use --trace to view backtrace

here is the trace

C:/Ruby192/lib/ruby/gems/1.9.1/gems/pomo-2.0.1/lib/pomo/notifier/growl.rb:11:in `notify': private method `notify_info' called for Pomo::Notifier::Growl:Class (NoMethodError)
    from C:/Ruby192/lib/ruby/gems/1.9.1/gems/pomo-2.0.1/lib/pomo/notifier.rb:22:in `notify'
    from C:/Ruby192/lib/ruby/gems/1.9.1/gems/pomo-2.0.1/lib/pomo/task.rb:115:in `background_progress'
    from C:/Ruby192/lib/ruby/gems/1.9.1/gems/pomo-2.0.1/lib/pomo/task.rb:74:in `start'
    from C:/Ruby192/lib/ruby/gems/1.9.1/gems/pomo-2.0.1/bin/pomo:64:in `block (3 levels) in <top (required)>'
    from C:/Ruby192/lib/ruby/gems/1.9.1/gems/pomo-2.0.1/lib/pomo/list.rb:66:in `block in find'
    from C:/Ruby192/lib/ruby/gems/1.9.1/gems/pomo-2.0.1/lib/pomo/list.rb:65:in `each'
    from C:/Ruby192/lib/ruby/gems/1.9.1/gems/pomo-2.0.1/lib/pomo/list.rb:65:in `each_with_index'
    from C:/Ruby192/lib/ruby/gems/1.9.1/gems/pomo-2.0.1/lib/pomo/list.rb:65:in `find'
    from C:/Ruby192/lib/ruby/gems/1.9.1/gems/pomo-2.0.1/bin/pomo:62:in `block (2 levels) in <top (required)>'
    from C:/Ruby192/lib/ruby/gems/1.9.1/gems/commander-4.1.3/lib/commander/command.rb:180:in `call'
    from C:/Ruby192/lib/ruby/gems/1.9.1/gems/commander-4.1.3/lib/commander/command.rb:180:in `call'
    from C:/Ruby192/lib/ruby/gems/1.9.1/gems/commander-4.1.3/lib/commander/command.rb:155:in `run'
    from C:/Ruby192/lib/ruby/gems/1.9.1/gems/commander-4.1.3/lib/commander/runner.rb:402:in `run_active_command'
    from C:/Ruby192/lib/ruby/gems/1.9.1/gems/commander-4.1.3/lib/commander/runner.rb:78:in `run!'
    from C:/Ruby192/lib/ruby/gems/1.9.1/gems/commander-4.1.3/lib/commander/delegates.rb:11:in `run!'
    from C:/Ruby192/lib/ruby/gems/1.9.1/gems/commander-4.1.3/lib/commander/import.rb:10:in `block in <top (required)>'

when I run the command pomo start -p, I do get the command line progress bar...any ideas?

"a task is already running"... forever

For example:

$ pomo start 23
$ a task is already running

Then try,

$ pomo help complete

as well as,

$ pomo help remove

I have not been able to stop this task from running for days. originally, if I could figure out which task it was I could manually remove it and just engage future tasks as $ pomo start --progress which would conclude the task after 25 minutes.

Right now I am buried in a list of tasks and will probably be forced to remove them one at a time to test which one is still running. There should be a way to identify what task is "currently running" and remove or stop it if you aren't using --progress.

Thanks much.

'pomo complete' doesn't stop a task

In lieu of pomo stop (see #28) I thought setting a task to complete would also stop it, alas it doesn't.

wist@box:~$ pomo list
   0. Test                                               : 25 minutes
✓  1. Another task                                       : 20 minutes
   2. Third task                                         : 25 minutes
                                                            70 minutes
wist@box:~$ pomo start 0
wist@box:~$ pomo complete 0
  - Completed Test
wist@box:~$ pomo start 2
a task is already running
wist@box:~$ 

Make tmux background color configurable

Right now, tmux integration uses the default bg color.

I'm using tmux-powerline which allows for tabbed segments with various colors While a pomo isn't running this looks great:
Screen Shot 2013-04-06 at 8 07 07 PM

However, since a running pomo's background is hardcoded to status bar's default bg color, I can't configure the background, and it looks ugly:
Screen Shot 2013-04-06 at 8 08 50 PM

pomo installation should pull in libnotify gem on Linux and Windows

A fresh installation of pomo looks like this:

igalic@tynix ~ % sudo gem install pomo
[sudo] password for igalic: 
Fetching: highline-1.6.19.gem (100%)
Fetching: commander-4.1.3.gem (100%)
Fetching: faraday_middleware-0.9.0.gem (100%)
Fetching: hashie-2.0.5.gem (100%)
Fetching: netrc-0.7.7.gem (100%)
Fetching: octokit-1.24.0.gem (100%)
Fetching: terminal-notifier-1.4.2.gem (100%)
Fetching: growl-1.0.3.gem (100%)
Fetching: pomo-2.1.3.gem (100%)
Successfully installed highline-1.6.19
Successfully installed commander-4.1.3
Successfully installed faraday_middleware-0.9.0
Successfully installed hashie-2.0.5
Successfully installed netrc-0.7.7
Successfully installed octokit-1.24.0
Successfully installed terminal-notifier-1.4.2
Successfully installed growl-1.0.3
Successfully installed pomo-2.1.3
9 gems installed
Installing ri documentation for highline-1.6.19...
Installing ri documentation for commander-4.1.3...
Installing ri documentation for faraday_middleware-0.9.0...
Installing ri documentation for hashie-2.0.5...
Installing ri documentation for netrc-0.7.7...
Installing ri documentation for octokit-1.24.0...
Installing ri documentation for terminal-notifier-1.4.2...
Installing ri documentation for growl-1.0.3...
Installing ri documentation for pomo-2.1.3...
Installing RDoc documentation for highline-1.6.19...
Installing RDoc documentation for commander-4.1.3...
Installing RDoc documentation for faraday_middleware-0.9.0...
Installing RDoc documentation for hashie-2.0.5...
Installing RDoc documentation for netrc-0.7.7...
Installing RDoc documentation for octokit-1.24.0...
Installing RDoc documentation for terminal-notifier-1.4.2...
Installing RDoc documentation for growl-1.0.3...
Installing RDoc documentation for pomo-2.1.3...
sudo gem install pomo  21.86s user 0.41s system 35% cpu 1:03.47 total
igalic@tynix ~ % pomo help
/var/lib/gems/1.9.1/gems/commander-4.1.3/lib/commander/runner.rb:365:in `block in require_program': program version required (Commander::Runner::CommandError)
        from /var/lib/gems/1.9.1/gems/commander-4.1.3/lib/commander/runner.rb:364:in `each'
        from /var/lib/gems/1.9.1/gems/commander-4.1.3/lib/commander/runner.rb:364:in `require_program'
        from /var/lib/gems/1.9.1/gems/commander-4.1.3/lib/commander/runner.rb:52:in `run!'
        from /var/lib/gems/1.9.1/gems/commander-4.1.3/lib/commander/delegates.rb:11:in `run!'
        from /var/lib/gems/1.9.1/gems/commander-4.1.3/lib/commander/import.rb:10:in `block in <top (required)>'
/usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- libnotify (LoadError)
        from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
        from /var/lib/gems/1.9.1/gems/pomo-2.1.3/lib/pomo/notifier/libnotify_notifier.rb:1:in `<top (required)>'
        from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
        from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
        from /var/lib/gems/1.9.1/gems/pomo-2.1.3/lib/pomo/notifier.rb:2:in `<top (required)>'
        from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
        from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
        from /var/lib/gems/1.9.1/gems/pomo-2.1.3/lib/pomo.rb:3:in `<top (required)>'
        from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
        from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
        from /var/lib/gems/1.9.1/gems/pomo-2.1.3/bin/pomo:5:in `<top (required)>'
        from /usr/local/bin/pomo:23:in `load'
        from /usr/local/bin/pomo:23:in `<main>'
1 igalic@tynix ~ %

Is it be possible to pull the libnotify gem on Linux and Windows? (and its equivalent on OS X?

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.