<html prefix="og: http://ogp.me/ns#"><head>
<script src="https://js-agent.newrelic.com/nr-974.min.js"></script><script async="" src="//www.google-analytics.com/analytics.js"></script><script type="text/javascript">window.NREUM||(NREUM={});NREUM.info={"beacon":"bam.nr-data.net","errorBeacon":"bam.nr-data.net","licenseKey":"844a840367","applicationID":"13323906","transactionName":"c1cMREAKXVRcRhpFUlNTA1dXFh5LUVtC","queueTime":40,"applicationTime":47,"agent":""}</script>
<script type="text/javascript">window.NREUM||(NREUM={}),__nr_require=function(t,e,n){function r(n){if(!e[n]){var o=e[n]={exports:{}};t[n][0].call(o.exports,function(e){var o=t[n][1][e];return r(o||e)},o,o.exports)}return e[n].exports}if("function"==typeof __nr_require)return __nr_require;for(var o=0;o<n.length;o++)r(n[o]);return r}({1:[function(t,e,n){function r(){}function o(t,e,n){return function(){return i(t,[(new Date).getTime()].concat(u(arguments)),e?null:this,n),e?void 0:this}}var i=t("handle"),a=t(2),u=t(3),c=t("ee").get("tracer"),f=NREUM;"undefined"==typeof window.newrelic&&(newrelic=f);var s=["setPageViewName","setCustomAttribute","setErrorHandler","finished","addToTrace","inlineHit"],p="api-",l=p+"ixn-";a(s,function(t,e){f[e]=o(p+e,!0,"api")}),f.addPageAction=o(p+"addPageAction",!0),e.exports=newrelic,f.interaction=function(){return(new r).get()};var d=r.prototype={createTracer:function(t,e){var n={},r=this,o="function"==typeof e;return i(l+"tracer",[Date.now(),t,n],r),function(){if(c.emit((o?"":"no-")+"fn-start",[Date.now(),r,o],n),o)try{return e.apply(this,arguments)}finally{c.emit("fn-end",[Date.now()],n)}}}};a("setName,setAttribute,save,ignore,onEnd,getContext,end,get".split(","),function(t,e){d[e]=o(l+e)}),newrelic.noticeError=function(t){"string"==typeof t&&(t=new Error(t)),i("err",[t,(new Date).getTime()])}},{}],2:[function(t,e,n){function r(t,e){var n=[],r="",i=0;for(r in t)o.call(t,r)&&(n[i]=e(r,t[r]),i+=1);return n}var o=Object.prototype.hasOwnProperty;e.exports=r},{}],3:[function(t,e,n){function r(t,e,n){e||(e=0),"undefined"==typeof n&&(n=t?t.length:0);for(var r=-1,o=n-e||0,i=Array(o<0?0:o);++r<o;)i[r]=t[e+r];return i}e.exports=r},{}],ee:[function(t,e,n){function r(){}function o(t){function e(t){return t&&t instanceof r?t:t?u(t,a,i):i()}function n(n,r,o){t&&t(n,r,o);for(var i=e(o),a=l(n),u=a.length,c=0;c<u;c++)a[c].apply(i,r);var s=f[m[n]];return s&&s.push([w,n,r,i]),i}function p(t,e){g[t]=l(t).concat(e)}function l(t){return g[t]||[]}function d(t){return s[t]=s[t]||o(n)}function v(t,e){c(t,function(t,n){e=e||"feature",m[n]=e,e in f||(f[e]=[])})}var g={},m={},w={on:p,emit:n,get:d,listeners:l,context:e,buffer:v};return w}function i(){return new r}var a="nr@context",u=t("gos"),c=t(2),f={},s={},p=e.exports=o();p.backlog=f},{}],gos:[function(t,e,n){function r(t,e,n){if(o.call(t,e))return t[e];var r=n();if(Object.defineProperty&&Object.keys)try{return Object.defineProperty(t,e,{value:r,writable:!0,enumerable:!1}),r}catch(i){}return t[e]=r,r}var o=Object.prototype.hasOwnProperty;e.exports=r},{}],handle:[function(t,e,n){function r(t,e,n,r){o.buffer([t],r),o.emit(t,e,n)}var o=t("ee").get("handle");e.exports=r,r.ee=o},{}],id:[function(t,e,n){function r(t){var e=typeof t;return!t||"object"!==e&&"function"!==e?-1:t===window?0:a(t,i,function(){return o++})}var o=1,i="nr@id",a=t("gos");e.exports=r},{}],loader:[function(t,e,n){function r(){if(!h++){var t=y.info=NREUM.info,e=s.getElementsByTagName("script")[0];if(t&&t.licenseKey&&t.applicationID&&e){c(m,function(e,n){t[e]||(t[e]=n)});var n="https"===g.split(":")[0]||t.sslForHttp;y.proto=n?"https://":"http://",u("mark",["onload",a()],null,"api");var r=s.createElement("script");r.src=y.proto+t.agent,e.parentNode.insertBefore(r,e)}}}function o(){"complete"===s.readyState&&i()}function i(){u("mark",["domContent",a()],null,"api")}function a(){return(new Date).getTime()}var u=t("handle"),c=t(2),f=window,s=f.document,p="addEventListener",l="attachEvent",d=f.XMLHttpRequest,v=d&&d.prototype;NREUM.o={ST:setTimeout,CT:clearTimeout,XHR:d,REQ:f.Request,EV:f.Event,PR:f.Promise,MO:f.MutationObserver},t(1);var g=""+location,m={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net",agent:"js-agent.newrelic.com/nr-974.min.js"},w=d&&v&&v[p]&&!/CriOS/.test(navigator.userAgent),y=e.exports={offset:a(),origin:g,features:{},xhrWrappable:w};s[p]?(s[p]("DOMContentLoaded",i,!1),f[p]("load",r,!1)):(s[l]("onreadystatechange",o),f[l]("onload",r)),u("mark",["firstbyte",a()],null,"api");var h=0},{}]},{},["loader"]);</script>
<title>project-manager</title>
<link rel="stylesheet" media="all" href="https://github-atom-io-herokuapp-com.global.ssl.fastly.net/assets/application-ba07c5c2889a34307a4b7d49410451d9.css" data-turbolinks-track="true">
<script src="https://github-atom-io-herokuapp-com.global.ssl.fastly.net/assets/application-3db62b578ebfc39ee871abc91b175302.js" data-turbolinks-track="true"></script>
<meta name="csrf-param" content="authenticity_token">
<meta name="csrf-token" content="AXBSBYtFNzpFrPZ6KTxP1EaYvy+M9SNIjjb8FG+IwZPcT+N6XQiWZ682Ag3IqRcnHh4lanQa+scCltO/uIGN2A==">
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-3769691-35', 'atom.io');
<meta property="og:url" content="https://atom.io/packages/project-manager">
<meta property="og:site_name" content="Atom">
<meta property="og:title" content="project-manager">
<meta property="og:description" content="Project Manager for easy access and switching between projects in Atom.">
<meta property="og:type" content="website">
<meta property="og:author" content="https://github.com/danielbrodin">
<meta property="og:image" content="https://travis-ci.org/danielbrodin/atom-project-manager.svg?branch=master">
<meta property="twitter:card" content="summary_large_image">
<meta property="twitter:site" content="@AtomEditor">
<meta property="twitter:creator" content="https://github.com/danielbrodin">
<meta property="twitter:title" content="project-manager">
<meta property="twitter:description" content="Project Manager for easy access and switching between projects in Atom.">
<meta property="twitter:image:src" content="https://travis-ci.org/danielbrodin/atom-project-manager.svg?branch=master">
<meta name="description" content="At GitHub, we’re building the text editor we’ve always wanted: hackable to the core, but approachable on the first day without ever touching a config file. We can’t wait to see what you build with it.">
<link rel="shortcut icon" href="/favicon.ico">
<link rel="alternate" type="application/atom+xml" title="Atom Packages and Themes" href="https://atom.io/packages.atom">
<body data-luckynumber="19293882828282">
<div class="footer-push">
<div class="wrapper no-pad">
<li><h1 title="Atom: A hackable text editor for the 21st Century"><a href="/" class="logo-small"></a></h1></li>
<li><a class="is-selected" href="/packages">Packages</a></li>
<li><a class="" href="/themes">Themes</a></li>
<li><a class="" href="/docs">Documentation</a></li>
<li><a href="http://blog.atom.io">Blog</a></li>
<li><a href="http://discuss.atom.io">Discuss</a></li>
<div class="top-bar-right">
<a href="/login?last_url=%2Fpackages%2Fproject-manager">
<span class="octicon octicon-log-in"></span> Sign in
<div id="js-pjax-container">
<div class="wrapper package-show content-push">
<div class="package-card card">
<div class="body css-truncate">
<span class="css-truncate-target"><a href="/packages/project-manager">project-manager</a></span>
<span class="css-truncate-target card-description">Project Manager for easy access and switching between projects in Atom.</span>
<li><a href="/packages/search?utf8=✓&q=keyword:project">#project</a></li>
<li><a href="/packages/search?utf8=✓&q=keyword:manager">#manager</a></li>
<li><a href="/packages/search?utf8=✓&q=keyword:settings">#settings</a></li>
<li><a href="/packages/search?utf8=✓&q=keyword:workflow">#workflow</a></li>
<li><a href="/packages/search?utf8=✓&q=keyword:productivity">#productivity</a></li>
<a href="/users/danielbrodin">
<img src="https://github.com/danielbrodin.png" alt="danielbrodin" class="gravatar">
<a href="/users/danielbrodin" class="author">
<a class="linked-octicon" href="https://github.com/danielbrodin/atom-project-manager/releases/tag/v2.9.7">
<span class="stat tooltipped tooltipped-n" aria-label="Latest version">
<span class="octicon octicon-versions"></span> <span class="value">2.9.7</span>
<span class="stat tooltipped tooltipped-n" aria-label="Downloads">
<span class="octicon octicon-cloud-download"></span> <span class="value">424,500</span>
<span class="js-star-wrap">
<div class="star-box tooltipped tooltipped-nw" aria-label="You must be signed in to star packages">
<a href="/packages/project-manager/star" class="js-star-button star-button minibutton with-count disabled " data-skip-pjax="">
<span class="octicon octicon-star"></span>
<a class="social-count" href="/packages/project-manager/stargazers">
<div class="package-meta">
<li><a href="https://github.com/danielbrodin/atom-project-manager"><span class="octicon octicon-repo"></span> Repo</a></li>
<li><a href="https://github.com/danielbrodin/atom-project-manager/issues"><span class="octicon octicon-bug"></span> Bugs</a></li>
<li><a href="https://github.com/danielbrodin/atom-project-manager/releases"><span class="octicon octicon-versions"></span> Versions</a></li>
<a href="https://github.com/danielbrodin/atom-project-manager/blob/faa5a97edfb01d1a501b8f7ef9100dbabbb5dcac/LICENSE.md"><span class="octicon octicon-law"></span> License</a>
<a href="#flag-modal" class="js-show-flag show-flag"><span class="octicon octicon-circle-slash"></span> Flag as spam or malicious</a>
<div class="markdown-body readme">
<a href="#project-manager"></a>Project Manager</h1>
<p><a href="https://travis-ci.org/danielbrodin/atom-project-manager/"><img src="https://i.github-camo.com/dc09fd5c511c34857268a706483390c9bb221431/68747470733a2f2f7472617669732d63692e6f72672f64616e69656c62726f64696e2f61746f6d2d70726f6a6563742d6d616e616765722e7376673f6272616e63683d6d6173746572" alt="Build status" data-canonical-src="https://travis-ci.org/danielbrodin/atom-project-manager.svg?branch=master"></a>
<a href="https://atom.io/packages/project-manager"><img src="https://i.github-camo.com/2fc372771b24599f2ba3aa124f19cb36b645798b/68747470733a2f2f696d672e736869656c64732e696f2f61706d2f646d2f70726f6a6563742d6d616e616765722e737667" alt="apm" data-canonical-src="https://img.shields.io/apm/dm/project-manager.svg"></a>
<a href="https://github.com/danielbrodin/atom-project-manager/blob/v2.9.7/"><img src="https://i.github-camo.com/0b30b32aeacda6a25922fa8d90220b8531f70ff9/68747470733a2f2f696d672e736869656c64732e696f2f61706d2f762f70726f6a6563742d6d616e616765722e737667" alt="apm" data-canonical-src="https://img.shields.io/apm/v/project-manager.svg"></a></p>
<p><img src="https://i.github-camo.com/9f58c50dd32d6173bb555f1a0ca08c713d8a2f2a/68747470733a2f2f7261772e6769746875622e636f6d2f64616e69656c62726f64696e2f61746f6d2d70726f6a6563742d6d616e616765722f6d61737465722f70726f6a6563742d6d616e616765722e676966" alt="Project Manager" data-canonical-src="https://raw.github.com/danielbrodin/atom-project-manager/master/project-manager.gif"></p>
<p>Get easy access to all your projects and manage them with project specific settings and options.</p>
<a href="#install"></a>Install</h2>
<pre><code>$ apm install project-manager
<p>or open Atom and go to Preferences > Install and search for <code>project-manager</code></p>
<a href="#use"></a>Use</h2>
<a href="#list-projects"></a>List Projects</h3>
<p><code>ctrl-cmd-p</code> (mac) / <code>alt-shift-P</code> (win & linux) or <code>Project Manager: List Projects</code> in the Command Palette.</p>
<p>You can filter projects by <code>title</code>, <code>group</code> and <code>template</code>.
<code>group: atom</code> would list all projects with the group <code>atom</code>. Default is <code>title</code></p>
<a href="#save-project"></a>Save Project</h3>
<p><code>Project Manager: Save Project</code> in the Command Palette and write the title you want to save the project as.</p>
<a href="#edit-projects"></a>Edit Projects</h3>
<p>All projects are saved in a <code>.cson</code> file which you can easily reach by searching for <code>Project Manager: Edit Projects</code> in the Command Palette.</p>
<a href="#project-settings"></a>Project Settings</h2>
<td><code>title</code></td>
<td><code>string</code></td>
<td>Projects title. Used in the projects list</td>
<td><code>paths</code></td>
<td><code>array</code></td>
<td>The folders that will open in the tree view. First path is the main one that counts as the project.</td>
<td><code>settings</code></td>
<td><code>Object</code></td>
<td>Enables you to set project specific settings. Everything that goes in the <code>config.cson</code> file can go here. It also supports scoped settings.</td>
<td><code>icon</code></td>
<td><code>string</code></td>
<td>Icon that shows in the projects list. It's class-based so can either be a class already provided by Atom like <code>icon-squirell</code> or a class of your own.</td>
<td><code>'icon-chevron-right'</code></td>
<td><code>devMode</code></td>
<td><code>boolean</code></td>
<code>true</code> if project should open in dev mode</td>
<td><code>false</code></td>
<td><code>group</code></td>
<td><code>string</code></td>
<td>Adds a group to the projects list that can be used to group and filter projects</td>
<td><code>null</code></td>
<td><code>template</code></td>
<td><code>string</code></td>
<td>If you add a project in the <code>projects.cson</code> file without <code>paths</code> it will count as a template. This way you can easily share settings between projects</td>
<td><code>null</code></td>
<a href="#local-settings-file"></a>Local settings file</h3>
<p>All these settings can be added to a <code>project.cson</code> file in the root folder of the project. It follows the below example, but without the project key.</p>
<a href="#example"></a>Example</h3>
<pre><code>projectmanager:
template: 'coffeescript-template'
'/path/to/project-manager'
icon: 'icon-coffeescript'
'editor.preferredLineLength': 80
<a href="#package-settings"></a>Package Settings</h2>
<td><code>project-manager.showPath</code></td>
<td><code>true</code></td>
<td>Shows each projects paths in the projects list</td>
<td>Environment Specific Projects</td>
<td><code>project-manager.environmentSpecificProjects</code></td>
<td><code>false</code></td>
<td>If you share your <code>.atom</code> folder between computers but don't use the same projects. Will create a <code>projects.[hostname].cson</code> for each environment</td>
<td><code>project-manager.sortBy</code></td>
<td><code>'default'</code></td>
<td>Will sort the projects list by selected option. Default sorting is the order in which the are</td>
<td><code>project-manager.closeCurrent</code></td>
<td><code>false</code></td>
<td>Closes the current window before opening a new project.</td>
<a href="#api"></a>API</h2>
<p>The project manager provides a service that you can use in your own Atom packages. To use it, include <code>project-manager</code> in the <code>consumedServices</code> section of your package.json.</p>
<pre><code>"consumedServices": {
"^2.2.1": "consumeProjectManager"
<p>Then in your package's main module, call methods on the service</p>
<pre><code>module.exports =
doSomethingWithTheCurrentProject: (project) ->
consumeProjectManager: (PM) ->
PM.projects.getCurrent (project) =>
@doSomethingWithTheCurrentProject(project)
<a href="#methods"></a>Methods</h3>
<a href="#projects"></a><code>{Projects}</code>
<code>{Function} callback</code> - Callback that receives an <code>Array</code> of <code>{Project}</code>'s</li>
<code>::getCurrent</code>
<code>{Function} callback</code> - Callback that receives the current <code>{Project}</code> or <code>false</code> if there is none active</li>
<code>{Function} callback</code> - Will be called each time a project have been updated</li>
<a href="#project"></a><code>{Project}</code>
<code>{props}</code> - Contains all properties of the project like <code>title</code>, <code>paths</code> and <code>settings</code>
<code>::open</code> - Will open the project</li>
<code>::isCurrent</code> - Returns <code>true</code> if it's the current project</li>
<code>{Function} callback</code> - Will be called when the project have been updated</li>
<code>::set</code> - Will set the property on the project
<li><code>{String} key</code></li>
<li><code>{Mixed} value</code></li>
<code>::unset</code> - Will remove the property from the project
<li><code>{String} key</code></li>
<p>Please let me know if you make something out of it :)</p>
<a href="#contribute"></a>Contribute</h2>
<p>If you would like to contribute to the project manager, be it new features or bugs,
please do the following:</p>
<li>Fork the repository</li>
<li>Create a new topic branch off the master branch that describe what it does</li>
<li>Commit and push the branch</li>
<li>Make a pull request describing what you have done</li>
<li>Now it will hopefully get merged :)</li>
<li>Pass the <a href="https://atom.io/packages/linter-jscs">jscs</a> linter</li>
<li>Pass the <a href="https://atom.io/packages/linter-jshint">jshint</a> linter</li>
<li>Add a test when it makes sense, which should be most of the time</li>
<p><a href="https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=DR4XQWAZV6M2A&lc=SE&item_name=Project%20Manager&item_number=atom%2dproject%2dmanager&currency_code=EUR&bn=PP%2dDonationsBF%3abtn_donate_SM%2egif%3aNonHosted"><img src="https://i.github-camo.com/e14c85b542e06215f7e56c0763333ef1e9b9f9b7/68747470733a2f2f7777772e70617970616c6f626a656374732e636f6d2f656e5f55532f692f62746e2f62746e5f646f6e6174655f534d2e676966" alt="Paypal Donations" data-canonical-src="https://www.paypalobjects.com/en_US/i/btn/btn_donate_SM.gif"></a> a <img title=":beer:" alt=":beer:" src="https://i.github-camo.com/07079713c7cff0474267d22ecd1becc613970e6d/68747470733a2f2f613234382e652e616b616d61692e6e65742f6173736574732e6769746875622e636f6d2f696d616765732f69636f6e732f656d6f6a692f756e69636f64652f31663337612e706e67" height="20" width="20" align="absmiddle" data-canonical-src="https://a248.e.akamai.net/assets.github.com/images/icons/emoji/unicode/1f37a.png"> if you enjoy using the <a href="https://github.com/danielbrodin/atom-project-manager">project manager</a> :)</p>
<div id="flag-modal" style="display:none">
I think this package is bad news.
Good catch. Let us know what about this package looks wrong to you, and we'll
<form action="/packages/project-manager/flag" accept-charset="UTF-8" method="post"><input name="utf8" type="hidden" value="✓"><input type="hidden" name="authenticity_token" value="AXBSBYtFNzpFrPZ6KTxP1EaYvy+M9SNIjjb8FG+IwZPcT+N6XQiWZ682Ag3IqRcnHh4lanQa+scCltO/uIGN2A==">
<textarea rows="5" name="flag[message]" id="flag_message"></textarea>
<input type="submit" name="commit" value="Flag project-manager" class="button primary flag-button">
<div class="footer-pad"></div>
<div class="wrapper no-pad">
<li><a href="/terms">Terms of Use</a></li>
<li><a href="https://help.github.com/articles/github-privacy-policy/">Privacy</a></li>
<li><a href="http://contributor-covenant.org/version/1/2/0">Code of Conduct</a></li>
<li><a href="/releases">Releases</a></li>
<li><a href="/faq">FAQ</a></li>
<li><a href="/contact">Contact</a></li>
<div class="footer-right">
<a href="https://github.com"><span class="octicon octicon-code"></span> with <span class="octicon octicon-heart"></span> by <span class="octicon octicon-logo-github"></span></a>
<div id="lean_overlay"></div><div id="lean_overlay"></div><div id="global-zeroclipboard-html-bridge" class="global-zeroclipboard-container" style="position: absolute; left: 0px; top: -9999px; width: 15px; height: 15px; z-index: 999999999;"> <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" id="global-zeroclipboard-flash-bridge" width="100%" height="100%"> <param name="movie" value="//github-atom-io-herokuapp-com.global.ssl.fastly.net/assets/ZeroClipboard-1271a06aa3ba38e76fdbc8393d3d0b9e.swf?noCache=1473427863527"> <param name="allowScriptAccess" value="always"> <param name="scale" value="exactfit"> <param name="loop" value="false"> <param name="menu" value="false"> <param name="quality" value="best"> <param name="bgcolor" value="#ffffff"> <param name="wmode" value="transparent"> <param name="flashvars" value="trustedOrigins=atom.io%2C%2F%2Fatom.io%2Chttps%3A%2F%2Fatom.io"> <embed src="//github-atom-io-herokuapp-com.global.ssl.fastly.net/assets/ZeroClipboard-1271a06aa3ba38e76fdbc8393d3d0b9e.swf?noCache=1473427863527" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="100%" height="100%" name="global-zeroclipboard-flash-bridge" allowscriptaccess="always" allowfullscreen="false" type="application/x-shockwave-flash" wmode="transparent" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="trustedOrigins=atom.io%2C%2F%2Fatom.io%2Chttps%3A%2F%2Fatom.io" scale="exactfit"> </object></div></body></html>