No project description provided
Project description
persistd is a workspace/workflow manager made for multi-tasking developers. It allows you to persist your virtual desktop over multiple reboots. Automatically open all your relevant programs, and close them when you're done for the day. Never fear the Windows updates again.
Getting Started
The development will be done using Python 3.7, and I won't be supporting Python 2.x. It's 2018. Come on.
Installation
The requirements and how to install them are specified below. Right now, there is no setup.py
to install this program. That will come in later, as well as PyPI support. For now, just download this repo to a directory and (for ease of use) make sure your path
includes the persistd
directory, so you can call persist.py
directly.
Once downloaded, you can and should modify default settings to point to your program executables. At minimum, you must modify the BASE_PATH
, which will be the main directory that will contain all your projects. If you don't like to move your existing projects, you can simply symlink them to the directory given by BASE_PATH
.
Some of the other options in default settings are already set to the common install locations of the programs. They can be changed at will. The preferred method is to create a local.py
with the same variables at the same directory, which will take precedence over default.py
. This should make sure your updates are easy.
Requirements
The dependencies are listed on requirements.txt. The list is very short, so you should be able to install it in your base Python installation and not as part of a virtual environment. You can install the dependencies by running
pip install -r requirements.txt
If you are a purist and don't want to clutter your Python installation with all of these, you can use virtualenv
to create a new environment beforehand. If you are like me and use Anaconda for managing your Python installations, you can create a new environment with the requirements by calling
conda create --name MyEnvironment --file requirements.txt
as per the instructions.
Usage
There is a very good chance that this program requires administrator access, so try doing that if you get an error in any of the steps below.
Right now, the only way to interact with the program is through a command line interface. You can use python persist.py -h
to see the options, which will give you something like this:
# python persist.py -h
usage: persist.py [-h] [-i] [-n] [-o] [-c] [-d] [-a ADD] [-r REMOVE] [-l]
[project_name]
Persist your desktop.
positional arguments:
project_name
optional arguments:
-h, --help show this help message and exit
-i, --interactive start interactive mode
-n, --new create a new project
-o, --open open a project
-c, --close close & persist the project
-d, --delete delete a project
-a ADD, --add ADD add a new program to the project
-r REMOVE, --remove REMOVE
remove a program from the project
-l, --list-projects list all projects under the base path
In general, you can run the interactive mode using
python persist.py -i
which should give you a human readable interface to interact with the program. I personally have a shortcut that calls persist.py
with this argument, so I don't have to open up a terminal each time I want to open/close a project.
If you want to go in depth with the terminal options, you can create a new project using
python persist.py -n <project_name>
which will prompt you to first select a desktop manager, and then ask you about the programs you want to use. See below for specific information about the different programs.
Once a project is created, you can launch that project using
python persist.py <project_name>
which should create a new desktop and open up any programs you have selected while setting up.
Once you're done with a project, you can close all relevant programs & the desktop using
python persist.py -c <project_name>
I'd advise against manually closing any of the programs, because their states are only persisted when closing. Right now, the only program that is really affected by this is Chrome, though that might change in the future.
If you're done with a project, you can delete it using
python persist.py -d <project_name>
This will ask you multiple times if you really want to delete that project. You can optionally delete only the persistd files from the project.
The two additional options are -a
and -r
, which adds or removes a program with the given name. For example, you can remove ConEmu from a project using
python persist.py <project_name> -r conemu
The supported program names are conemu
, chrome
, and sublime_text
.
Programs
SublimeText (Windows)
In order to use SublimeText, you need to make sure that you disable auto-reloading of the last session. Right now, the only way around this seems to be using a portable SublimeText. For those of you lazy people out there, here are the steps:
-
Go to Menu Bar > Preference > Settings (User).
-
Add the following lines to the JSON:
{ "hot_exit": false, "remember_open_files": false }
-
???
-
Profit
There is also a caveat with the current implementation, where if you use the regular subl
executable to open a file outside of this program, that Sublime Text window will be replicated when you launch a project. This is highly sub-optimal, but thats how it is for now.
Chrome (Windows)
In order to use Chrome, you first need to install the relevant extension. You can find the steps to install the unpacked extension here. Make sure you point Chrome to the extension folder.
I will make sure to actually release it to Chrome Extension Store (or whatever that's called) after a while.
ConEmu (Windows)
ConEmu is a good program. It is easy to work with. It doesn't have any problems because ConEmu is a good boy. We should all strive to be ConEmu.
Seriously though, the only thing you have to do is to create your own startfile. The included one defaults to a single cmd
window. After creating the project, modify the default startfile at <project_path>/.persistd/conemu/<project_name>_startfile.txt
. The next time you launch, ConEmu will use those settings.
Future Plans
Look at the issues to see what needs to be done. The first order of business is to get the first milestone working. From there on, more programs and desktops can be added in.
Contributing
If you see any bugs, or have suggestions, feel free to open up an issue or comment on an existing one. Since we reached the first milestone, I'm more willing to accept pull requests, but make sure that you roughly follow the coding conventions in the files already included in the repo.
License
See LICENSE for details, but its AGPL3. If you build something amazing on top of this, its great, just make sure that its source code is also available under AGPL3.
Author
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file persistd-1.2.1.tar.gz
.
File metadata
- Download URL: persistd-1.2.1.tar.gz
- Upload date:
- Size: 336.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.4.2 requests/2.19.1 setuptools/41.0.0 requests-toolbelt/0.8.0 tqdm/4.24.0 CPython/3.7.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 917e083de7edd5631c832a2163fa3a47a6ca1efa51ac802ecc98ebc8cc97d76d |
|
MD5 | f7ab7f3bfcf9b6225fb133393e79588d |
|
BLAKE2b-256 | 7f5c87ee783ce6dfa5edfd9bc30babf6708c2033ec77a21c054ac7dfaf50c00a |
File details
Details for the file persistd-1.2.1-py3-none-any.whl
.
File metadata
- Download URL: persistd-1.2.1-py3-none-any.whl
- Upload date:
- Size: 342.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.4.2 requests/2.19.1 setuptools/41.0.0 requests-toolbelt/0.8.0 tqdm/4.24.0 CPython/3.7.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 767014750255f410e40c2c89a6ebcb20625e4648ff68d80b2cbac152ab29b3ed |
|
MD5 | e2aa2282554c1a2724fb35f63da1c2df |
|
BLAKE2b-256 | 76a2d31d107b142d0f6ae0de98831b23300fdd0e6979c8e97ded48206fc15a61 |