Giter Site home page Giter Site logo

nayamamarshe / please Goto Github PK

View Code? Open in Web Editor NEW
560.0 8.0 26.0 4.37 MB

๐Ÿ™ Please CLI - Minimalistic New Tab Page CLI Tool with a greeting, date and time, inspirational quotes and your personal tasks and to-do list

License: MIT License

Python 100.00%
terminal cli gnome-terminal inspiration konsole new page tab task-list tasks

please's Introduction

For updates, questions and more:

๐Ÿ™ Please - New Tab Page for your Terminal ๐Ÿ™

Get a beautifully formatted minimalistic new tab page with a greeting, date and time, inspirational quotes, your personal tasks and to-do list everytime you open the terminal with Please CLI.

Upgrade with pip3 install please-cli --upgrade

๐Ÿ“– Table of Contents

๐Ÿš€ Installation

Method 1:

  1. Make sure you have Python 3 installed on your computer.

  2. Open your terminal and paste the command below:

    pip install please-cli
    
    # If you get an error about 'pip not found', just replace pip with pip3.
  3. To run please everytime you open the terminal:

    # FOR BASH
    echo 'please' >> ~/.bashrc
    
    # FOR ZSH
    echo 'please' >> ~/.zshrc
    
    # FOR FISH
    set fish_greeting please

    Or if you prefer to run please once a day:

    # FOR BASH
    echo 'please daily' >> ~/.bashrc
    
    # FOR ZSH
    echo 'please daily' >> ~/.zshrc
    
    # FOR FISH
    set fish_greeting please daily
  4. That's it! Check if please command works in your terminal.

Method 2:

  1. Go to the releases section.

  2. Download the latest release WHL file.

  3. Open terminal and paste the command below:

    pip install --user ~/Downloads/please_cli*
    
    # If you get an error about 'pip not found', just replace pip with pip3.

    Change the path of the file if you downloaded it elsewhere.

  4. To run please everytime you open the terminal:

    # FOR BASH
    echo 'please' >> ~/.bashrc
    
    # FOR ZSH
    echo 'please' >> ~/.zshrc
    
    # FOR FISH
    set fish_greeting please
  5. That's it! Check if please command works in your terminal.

Having trouble with installation or have any ideas? Please create an issue ticket :)

๐Ÿš‘ Troubleshooting

Getting a command not found: please error? That means the Python modules installation folder is not in PATH. To fix this:

echo 'export PATH="$PATH:$HOME/.local/bin"' >> ~/.bashrc

and restart the terminal.

๐Ÿ‘จโ€๐Ÿ’ป Commands

Some of these commands may not be in the latest release.

# Show time, quotes and tasks
please

# Add a task
please add "TASK NAME"

# Delete a task
please delete <TASK NUMBER>

# Mark task as done
please do <TASK NUMBER>

# Edit task name
please edit <TASK NUMBER> <NEW NAME>

# Mark task as undone
please undo <TASK NUMBER>

# Show tasks even if all tasks are marked as done
please showtasks

# Move task to specified position
please move <OLD NUMBER> <NEW NUMBER>

# Toggle Time between 24 hours and 12 hours format
please changetimeformat

# Change your name
please callme "NAME"

# Delete all done tasks
please clean

# Reset all settings and tasks
please setup

๐Ÿงฐ Additional Optional Configuration

image

Remove Greeting in please's output

1.Navigate to ~/.config/please
2. Open config.json
3. Change "diable_greeting": false to "diable_greeting": true (All lowercase).

Remove Horizontal Line in please's output

1.Navigate to ~/.config/please
2. Open config.json
3. Change "diable_line": false to "diable_line": true (All lowercase).

Remove Quotes in please's output

1.Navigate to ~/.config/please
2. Open config.json
3. Change "diable_quotes": false to "diable_quotes": true (All lowercase).

๐Ÿ’ป Local Development

  1. To get started, first install poetry:
curl -sSL https://install.python-poetry.org | python3 -
  1. Clone this project
  2. cd to the project directory and run virtual environment:
poetry shell

# OR THIS, IF 'poetry shell' doesn't work

. "$(dirname $(poetry run which python))/activate"
  1. Install all dependencies:
poetry install
  • please will be available to use as a command in the virtual environment after using poetry install.
  1. Finally, run the python script with:
python please/please.py
  1. To build a WHL package:
poetry build
  • The package will be generated in dist folder, you can then use pip to install the WHL file.
  1. For Nayam: Publish the package with:
poetry publish -u <username> -p <password>

๐Ÿšฎ Uninstalling

Open your terminal and type:

pip uninstall please-cli

and also edit your .zshrc or .bashrc file and remove the line that says please at the end of the file.

โ™ฅ Credits

  • Thanks to @CodePleaseRun & @guedesfelipe for their contributions.
  • Thanks to @lukePeavey for the quotes.json file taken from quotable.io

Made by TGS963 and NayamAmarshe with โŒจ and ๐Ÿ–ฑ

please's People

Contributors

anonymousasimov avatar chemdevv avatar codepleaserun avatar dankuri avatar guedesfelipe avatar jzaluska avatar mjpc13 avatar nayamamarshe avatar niksingh710 avatar tgs963 avatar theparadoxbox 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

please's Issues

[Suggestion] Clean Done and Create History file

First, thank you for this awesome simple, yet very useful program.

To further improve usability of this program, I want to propose 2 new features:

  1. Batch remove done task. It can become a chore to remove done task 1-by-1. Perhaps an API such as please clean.
  2. Any deleted should be moved to another file such as history.json. Then, introduce new API such as please history to display all done and "cleaned" task. This should allow the user to keep task history, while keeping the main task clean from bloat.

I understand the main concern is speed. Both of above suggestion should not impact the performance as it was outside of default please command.

Error Since Upgrade to Python 3.11

When I open my terminal after upgrading to Python 3.11 I get the following errors:

Traceback (most recent call last):
File "/usr/lib/python3.11/importlib/metadata/init.py", line 563, in from_name
return next(cls.discover(name=name))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
StopIteration

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/usr/bin/please", line 33, in
sys.exit(load_entry_point('please-cli==0.3.1', 'console_scripts', 'please')())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/bin/please", line 22, in importlib_load_entry_point
for entry_point in distribution(dist_name).entry_points
^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/importlib/metadata/init.py", line 981, in distribution
return Distribution.from_name(distribution_name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/importlib/metadata/init.py", line 565, in from_name
raise PackageNotFoundError(name)
importlib.metadata.PackageNotFoundError: No package metadata was found for please-cli

Please let me know if I can provide any additional information to help with this. And thank you for building Please, it always brings a smile to my face when I launch my terminal. :)

Option to remove horizontal line at the top?

Hello there, I love the app, it's already replaced Neofetch on my production machine.
However, I use a tiling WM, and that means that often, my terminal windows are resized after opening, if I open additional windows in that workspace. This breaks the task list, because the horizontal line at the top forces all text below to wrap when the terminal window shrinks horizontally.
It's not a huge deal, I have aliased 'clrpls' to clear the terminal and relaunch 'please', but it would be nice to be able to eliminate that top line so that resizing the terminal window is more forgiving.
Thank you for making such a great tool :)

Add categories ?

Hi,

Sorry, it's not really an issue, but, do you plan to add categories ?.

For me, it's a very good feature, and it's not "too" complicated :), maybe.

Thanks
F.

No status images since last update

Hi!
I felt in love with this amazing tool
and I'm working with it as my primary To-Do list app.
One issue I can't ignore is since the last update I can't see the status icons.
I'm running Manjaro with Gnome.

Maybe you can assist me?

ืฆื™ืœื•ื ืžืกืš ืžึพ2023-04-03 14-02-40

Disable tasks

I would like to disable printing of the tasks.

There seems to be options to disable greeting, line and quote.

But no options to disable printing of tasks.

Improvement: Option to add task without string quotes `"`

Wouldn't it be better to not have " quotes attached when naming a task

All other arguments after add can be added to form the title

Some people like me are lazy to reach and hold shift key for "

Instead of this command
please add "Task name"
this would be a choice
please add Task name

or atleast can we make it optional with config file

After installing please does not work, wrong file edited (.-bashrc).

zkitzo@Hetzner:~$ please
-bash: please: command not found
zkitzo@Hetzner:~$ source .bashrc
zkitzo@Hetzner:~$ please
-bash: please: command not found
zkitzo@Hetzner:~$ nano .bashrc
zkitzo@Hetzner:~$ echo `echo $0`
-bash
zkitzo@Hetzner:~$ ls -lAh
-rw-rw-r--  1 zkitzo zkitzo  209 May 31 19:49 .bash_aliases
-rw-------  1 zkitzo zkitzo 205K Jun 13 17:11 .bash_history
-rw-r--r--  1 zkitzo zkitzo  220 Jan  7 22:16 .bash_logout
-rw-rw-r--  1 zkitzo zkitzo    7 Jun 13 17:10 .-bashrc
-rw-r--r--  1 zkitzo zkitzo 4.1K May 22 21:08 .bashrc

Also /home/zkitzo/.local/bin is not in my $PATH. Easy to add but I think you should fix it!

Possibility to change tasks order

One interesting feature is the possibility to change the order of the tasks. This is a nice and simple feature you can implement and is important for the flow of tasks.

Calendar UX

Library to use: icspy

Goal:

  • Let users add their own ics file.
  • Show events and holidays from the ics file in please during shell startup
  • Show upcoming all upcoming events in the current week.

addcalendar():

ICS Implementation:

  • Check if key "calendar_type" exists in config.
    • If not, Give users the choice to choose between Google and ICS file
      • If ICS is selected, then ask users to copy paste a single ICS file in ~/.config/please
      • If Google is selected, then login and synchronizes
    • If yes, check if key "calendar_type" == "google" or "ics" and prompt user about overwriting previous calendar
      • If ICS is selected, then do previous steps for ICS.
      • If Google is selected, then do previous steps for Google Login.
      • If Cancel is selected, print "No worries, maybe later..."

showcalendar():

  • Check if key "calendar_type" exists in config.
    • If not, call addcalendar()
    • If yes, check if key "calendar_type" == "google" or "ics"
      • If ICS, then fetch events from ics and print the upcoming events in the next 7 days.
      • If Google is selected, then fetch data and print the upcoming events in the next 7 days.

Add OpenWeather support

It takes a long time to visit various sites, I spend much more time in the terminal. And if the weather greets me at every launch, it will be just fine :)
After installing please, you will need to insert your Weather token and configure your location. By default, the city should be set, according to the time zone, if this is not possible, any city is set.

JSON error...

โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Traceback (most recent call last) โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ /home/depressedpineapple/.local/lib/python3.8/site-packages/please/please.py โ”‚
โ”‚ :330 in main โ”‚
โ”‚ โ”‚
โ”‚ 327 โ”‚ try: โ”‚
โ”‚ 328 โ”‚ โ”‚ with open(os.path.join(config_path, "config.json")) as config_ โ”‚
โ”‚ 329 โ”‚ โ”‚ โ”‚ global config โ”‚
โ”‚ โฑ 330 โ”‚ โ”‚ โ”‚ config = json.load(config_file) โ”‚
โ”‚ 331 โ”‚ except FileNotFoundError: โ”‚
โ”‚ 332 โ”‚ โ”‚ open(os.path.join(config_path, "config.json"), "w") โ”‚
โ”‚ 333 โ”‚ โ”‚ typer.run(setup) โ”‚
โ”‚ โ”‚
โ”‚ โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ locals โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ โ”‚
โ”‚ โ”‚ config_file = <io.TextIOWrapper โ”‚ โ”‚
โ”‚ โ”‚ name='/home/depressedpineapple/.config/please/config.json' โ”‚ โ”‚
โ”‚ โ”‚ mode='r' encoding='UTF-8'> โ”‚ โ”‚
โ”‚ โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ โ”‚
โ”‚ โ”‚
โ”‚ /usr/lib/python3.8/json/init.py:293 in load โ”‚
โ”‚ โ”‚
โ”‚ 290 โ”‚ To use a custom JSONDecoder subclass, specify it with the cl โ”‚ โ”‚ 291 โ”‚ kwarg; otherwise JSONDecoderis used. โ”‚ โ”‚ 292 โ”‚ """ โ”‚ โ”‚ โฑ 293 โ”‚ return loads(fp.read(), โ”‚ โ”‚ 294 โ”‚ โ”‚ cls=cls, object_hook=object_hook, โ”‚ โ”‚ 295 โ”‚ โ”‚ parse_float=parse_float, parse_int=parse_int, โ”‚ โ”‚ 296 โ”‚ โ”‚ parse_constant=parse_constant, object_pairs_hook=object_pairs_ โ”‚ โ”‚ โ”‚ โ”‚ โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ locals โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ โ”‚ โ”‚ โ”‚ cls = None โ”‚ โ”‚ โ”‚ โ”‚ fp = <_io.TextIOWrapper โ”‚ โ”‚ โ”‚ โ”‚ name='/home/depressedpineapple/.config/please/confiโ€ฆ โ”‚ โ”‚ โ”‚ โ”‚ mode='r' encoding='UTF-8'> โ”‚ โ”‚ โ”‚ โ”‚ kw = {} โ”‚ โ”‚ โ”‚ โ”‚ object_hook = None โ”‚ โ”‚ โ”‚ โ”‚ object_pairs_hook = None โ”‚ โ”‚ โ”‚ โ”‚ parse_constant = None โ”‚ โ”‚ โ”‚ โ”‚ parse_float = None โ”‚ โ”‚ โ”‚ โ”‚ parse_int = None โ”‚ โ”‚ โ”‚ โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ โ”‚ โ”‚ โ”‚ โ”‚ /usr/lib/python3.8/json/__init__.py:357 in loads โ”‚ โ”‚ โ”‚ โ”‚ 354 โ”‚ if (cls is None and object_hook is None and โ”‚ โ”‚ 355 โ”‚ โ”‚ โ”‚ parse_int is None and parse_float is None and โ”‚ โ”‚ 356 โ”‚ โ”‚ โ”‚ parse_constant is None and object_pairs_hook is None and n โ”‚ โ”‚ โฑ 357 โ”‚ โ”‚ return _default_decoder.decode(s) โ”‚ โ”‚ 358 โ”‚ if cls is None: โ”‚ โ”‚ 359 โ”‚ โ”‚ cls = JSONDecoder โ”‚ โ”‚ 360 โ”‚ if object_hook is not None: โ”‚ โ”‚ โ”‚ โ”‚ โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ locals โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ โ”‚ โ”‚ โ”‚ cls = None โ”‚ โ”‚ โ”‚ โ”‚ kw = {} โ”‚ โ”‚ โ”‚ โ”‚ object_hook = None โ”‚ โ”‚ โ”‚ โ”‚ object_pairs_hook = None โ”‚ โ”‚ โ”‚ โ”‚ parse_constant = None โ”‚ โ”‚ โ”‚ โ”‚ parse_float = None โ”‚ โ”‚ โ”‚ โ”‚ parse_int = None โ”‚ โ”‚ โ”‚ โ”‚ s = '' โ”‚ โ”‚ โ”‚ โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ โ”‚ โ”‚ โ”‚ โ”‚ /usr/lib/python3.8/json/decoder.py:337 in decode โ”‚ โ”‚ โ”‚ โ”‚ 334 โ”‚ โ”‚ containing a JSON document). โ”‚ โ”‚ 335 โ”‚ โ”‚ โ”‚ โ”‚ 336 โ”‚ โ”‚ """ โ”‚ โ”‚ โฑ 337 โ”‚ โ”‚ obj, end = self.raw_decode(s, idx=_w(s, 0).end()) โ”‚ โ”‚ 338 โ”‚ โ”‚ end = _w(s, end).end() โ”‚ โ”‚ 339 โ”‚ โ”‚ if end != len(s): โ”‚ โ”‚ 340 โ”‚ โ”‚ โ”‚ raise JSONDecodeError("Extra data", s, end) โ”‚ โ”‚ โ”‚ โ”‚ โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ locals โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ โ”‚ โ”‚ โ”‚ _w = <built-in method match of re.Pattern object at 0x7fcd86338cf0> โ”‚ โ”‚ โ”‚ โ”‚ s = '' โ”‚ โ”‚ โ”‚ โ”‚ self = <json.decoder.JSONDecoder object at 0x7fcd862a6a30> โ”‚ โ”‚ โ”‚ โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ โ”‚ โ”‚ โ”‚ โ”‚ /usr/lib/python3.8/json/decoder.py:355 in raw_decode โ”‚ โ”‚ โ”‚ โ”‚ 352 โ”‚ โ”‚ try: โ”‚ โ”‚ 353 โ”‚ โ”‚ โ”‚ obj, end = self.scan_once(s, idx) โ”‚ โ”‚ 354 โ”‚ โ”‚ except StopIteration as err: โ”‚ โ”‚ โฑ 355 โ”‚ โ”‚ โ”‚ raise JSONDecodeError("Expecting value", s, err.value) fro โ”‚ โ”‚ 356 โ”‚ โ”‚ return obj, end โ”‚ โ”‚ 357 โ”‚ โ”‚ โ”‚ โ”‚ โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ locals โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ โ”‚ โ”‚ โ”‚ idx = 0 โ”‚ โ”‚ โ”‚ โ”‚ s = '' โ”‚ โ”‚ โ”‚ โ”‚ self = <json.decoder.JSONDecoder object at 0x7fcd862a6a30> โ”‚ โ”‚ โ”‚ โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ โ”‚ โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ JSONDecodeError: Expecting value: line 1 column 1 (char 0) Failed while loading configuration โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Traceback (most recent call last) โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ โ”‚ /home/depressedpineapple/.local/lib/python3.8/site-packages/please/please.py โ”‚ โ”‚ :330 in main โ”‚ โ”‚ โ”‚ โ”‚ 327 โ”‚ try: โ”‚ โ”‚ 328 โ”‚ โ”‚ with open(os.path.join(config_path, "config.json")) as config_ โ”‚ โ”‚ 329 โ”‚ โ”‚ โ”‚ global config โ”‚ โ”‚ โฑ 330 โ”‚ โ”‚ โ”‚ config = json.load(config_file) โ”‚ โ”‚ 331 โ”‚ except FileNotFoundError: โ”‚ โ”‚ 332 โ”‚ โ”‚ open(os.path.join(config_path, "config.json"), "w") โ”‚ โ”‚ 333 โ”‚ โ”‚ typer.run(setup) โ”‚ โ”‚ โ”‚ โ”‚ โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ locals โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ โ”‚ โ”‚ โ”‚ config_file = <_io.TextIOWrapper โ”‚ โ”‚ โ”‚ โ”‚ name='/home/depressedpineapple/.config/please/config.json' โ”‚ โ”‚ โ”‚ โ”‚ mode='r' encoding='UTF-8'> โ”‚ โ”‚ โ”‚ โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ โ”‚ โ”‚ โ”‚ โ”‚ /usr/lib/python3.8/json/__init__.py:293 in load โ”‚ โ”‚ โ”‚ โ”‚ 290 โ”‚ To use a customJSONDecodersubclass, specify it with thecl โ”‚
โ”‚ 291 โ”‚ kwarg; otherwise JSONDecoder is used. โ”‚
โ”‚ 292 โ”‚ """ โ”‚
โ”‚ โฑ 293 โ”‚ return loads(fp.read(), โ”‚
โ”‚ 294 โ”‚ โ”‚ cls=cls, object_hook=object_hook, โ”‚
โ”‚ 295 โ”‚ โ”‚ parse_float=parse_float, parse_int=parse_int, โ”‚
โ”‚ 296 โ”‚ โ”‚ parse_constant=parse_constant, object_pairs_hook=object_pairs
โ”‚
โ”‚ โ”‚
โ”‚ โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ locals โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ โ”‚
โ”‚ โ”‚ cls = None โ”‚ โ”‚
โ”‚ โ”‚ fp = <_io.TextIOWrapper โ”‚ โ”‚
โ”‚ โ”‚ name='/home/depressedpineapple/.config/please/confiโ€ฆ โ”‚ โ”‚
โ”‚ โ”‚ mode='r' encoding='UTF-8'> โ”‚ โ”‚
โ”‚ โ”‚ kw = {} โ”‚ โ”‚
โ”‚ โ”‚ object_hook = None โ”‚ โ”‚
โ”‚ โ”‚ object_pairs_hook = None โ”‚ โ”‚
โ”‚ โ”‚ parse_constant = None โ”‚ โ”‚
โ”‚ โ”‚ parse_float = None โ”‚ โ”‚
โ”‚ โ”‚ parse_int = None โ”‚ โ”‚
โ”‚ โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ โ”‚
โ”‚ โ”‚
โ”‚ /usr/lib/python3.8/json/init.py:357 in loads โ”‚
โ”‚ โ”‚
โ”‚ 354 โ”‚ if (cls is None and object_hook is None and โ”‚
โ”‚ 355 โ”‚ โ”‚ โ”‚ parse_int is None and parse_float is None and โ”‚
โ”‚ 356 โ”‚ โ”‚ โ”‚ parse_constant is None and object_pairs_hook is None and n โ”‚
โ”‚ โฑ 357 โ”‚ โ”‚ return _default_decoder.decode(s) โ”‚
โ”‚ 358 โ”‚ if cls is None: โ”‚
โ”‚ 359 โ”‚ โ”‚ cls = JSONDecoder โ”‚
โ”‚ 360 โ”‚ if object_hook is not None: โ”‚
โ”‚ โ”‚
โ”‚ โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ locals โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ โ”‚
โ”‚ โ”‚ cls = None โ”‚ โ”‚
โ”‚ โ”‚ kw = {} โ”‚ โ”‚
โ”‚ โ”‚ object_hook = None โ”‚ โ”‚
โ”‚ โ”‚ object_pairs_hook = None โ”‚ โ”‚
โ”‚ โ”‚ parse_constant = None โ”‚ โ”‚
โ”‚ โ”‚ parse_float = None โ”‚ โ”‚
โ”‚ โ”‚ parse_int = None โ”‚ โ”‚
โ”‚ โ”‚ s = '' โ”‚ โ”‚
โ”‚ โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ โ”‚
โ”‚ โ”‚
โ”‚ /usr/lib/python3.8/json/decoder.py:337 in decode โ”‚
โ”‚ โ”‚
โ”‚ 334 โ”‚ โ”‚ containing a JSON document). โ”‚
โ”‚ 335 โ”‚ โ”‚ โ”‚
โ”‚ 336 โ”‚ โ”‚ """ โ”‚
โ”‚ โฑ 337 โ”‚ โ”‚ obj, end = self.raw_decode(s, idx=_w(s, 0).end()) โ”‚
โ”‚ 338 โ”‚ โ”‚ end = _w(s, end).end() โ”‚
โ”‚ 339 โ”‚ โ”‚ if end != len(s): โ”‚
โ”‚ 340 โ”‚ โ”‚ โ”‚ raise JSONDecodeError("Extra data", s, end) โ”‚
โ”‚ โ”‚
โ”‚ โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ locals โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ โ”‚
โ”‚ โ”‚ _w = <built-in method match of re.Pattern object at 0x7fcd86338cf0> โ”‚ โ”‚
โ”‚ โ”‚ s = '' โ”‚ โ”‚
โ”‚ โ”‚ self = <json.decoder.JSONDecoder object at 0x7fcd862a6a30> โ”‚ โ”‚
โ”‚ โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ โ”‚
โ”‚ โ”‚
โ”‚ /usr/lib/python3.8/json/decoder.py:355 in raw_decode โ”‚
โ”‚ โ”‚
โ”‚ 352 โ”‚ โ”‚ try: โ”‚
โ”‚ 353 โ”‚ โ”‚ โ”‚ obj, end = self.scan_once(s, idx) โ”‚
โ”‚ 354 โ”‚ โ”‚ except StopIteration as err: โ”‚
โ”‚ โฑ 355 โ”‚ โ”‚ โ”‚ raise JSONDecodeError("Expecting value", s, err.value) fro โ”‚
โ”‚ 356 โ”‚ โ”‚ return obj, end โ”‚
โ”‚ 357 โ”‚
โ”‚ โ”‚
โ”‚ โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ locals โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ โ”‚
โ”‚ โ”‚ idx = 0 โ”‚ โ”‚
โ”‚ โ”‚ s = '' โ”‚ โ”‚
โ”‚ โ”‚ self = <json.decoder.JSONDecoder object at 0x7fcd862a6a30> โ”‚ โ”‚
โ”‚ โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
JSONDecodeError: Expecting value: line 1 column 1 (char 0)
Failed while loading configuration

Release v0.2

Features:

  • Refactored Codebase
  • No unnecessary dependencies
  • Option to disable horizontal rule
  • Better formatting in obscure terminals
  • Change Tasks Order with move
  • Option to change time format between 24h and 12h
  • Option to delete all done tasks with clean
  • Add contribution credits for @CodePleaseRun @guedesfelipe in README
  • Add documentation for new commands
  • Better README, Like https://github.com/anatoliygatt/heart-switch/

Error config file path in WSL

Hi,
When I launch please command, I've thsi error :

Something's wrong with your config file. You can fix ~/.config/please/config.json file manually or you can enter your name again in the setup wizard to reset the config file.  
ENTERING NAME WILL OVERWRITE YOUR PREVIOUS CONFIG.

The config.json is empty, and I have create it (rw-rw-rw)

So, I try to setup :

$ please setup
Something's wrong with your config file. You can fix ~/.config/please/config.json file manually or you can enter your name again in the setup wizard to reset the config file.  
ENTERING NAME WILL OVERWRITE YOUR PREVIOUS CONFIG.
Usage: please [OPTIONS]
Try 'please --help' for help.

Error: Got unexpected extra argument (setup)

Thanks
F.

Is there a way to change the time format of please, to 24 hours instead of 12?

I prefer seeing my time in the 24 hour format I've customized my time and date format in the .bashrc script however, please displays time in the 12 hour AM, PM style. I suspect the answer may be located in please.py but I'm not sure how to go about customizing the settings. I know it's not really an issue, but if anyone knows how I could do what I want, I'd be very happy and grateful. Thanks.

Feature request: Show quote only once per day or per session

I really like the idea of opening the terminal and being greeted with a quote. However after some time it gets annoying when I have a day where I use new terminal instances all the time. So I would prefer if please only shows once per day or only once and then again after having rebooted the system.

Really nice: One request

Thanks for please :-)

It would be really cool if you could have todo lists on a per directory basis. If I am in

~/project1

I would love to have

~/project1/.please/items.json

and use these instead of the global todo items.

Don't know if it is possible, but here you go :-)

Greetings
Saลกa

Add 24 hour time

For people who normally use 24h time, having 12h time in an app feels weird, it would be great to have an option to toggle between 12h or 24h time.

(This is my first ever feature request forgive me if I am doing something wrong. I have so far only used github in private,)

Themes

Is there theming support? If not, is it planned?

Installation failed on macOS

I followed the guideโ€ฆ

% pip3 install --user please_cli-0.3.1
ERROR: Could not find a version that satisfies the requirement please_cli-0.3.1 (from versions: none)
ERROR: No matching distribution found for please_cli-0.3.1

"please daily" - > Error: No such command 'daily'

I am on linux with the latest version of "please" at the time of writing. When I run the please daily command to start the program once a day, as described in the README, I get this error:

Usage: please [OPTIONS] COMMAND [ARGS]...
Try 'please --help' for help.

Error: No such command 'daily'.

Not showing greetings

The greetings are not being displayed. I attached a screenshot of how it looks, and my JSON config file as well.
please_issue
please_config

I installed it via pip. Don't know if this might be related to the issues.

By the way, I really liked the idea. Thanks for this amazing CLI tool.

New feature: auth method and syncronism to different equipments

Hi...
One featurethat I'm interested in is synchronization with different equipments. I have three desktops and laptops and I find an account and task sync to be a nice feature.
I can help with that too. Let me know if you need some help.

Good work guys.

minor spelling error

hi, cool package! just a minor spelling error in the README (so minor, it's not even worth creating a PR):

# Mark task as undone
pleae undone <TASK NUMBER>

kindly note the word please is misspelled

Missing LICENSE file

I see the project is MIT. You should create a LICENSE.md file in the root directory to show this clearly within the first page view.

please - UX

please uses config.json kept in ~/.config/please as a database.

Basic App

Initial:

  • Check if ~/.config/please exists
    • If yes, continue
    • If no, create the folder
  • Check if config.json exists
    • If no, create new config file.
  • If config.json exists, check if initial_setup_done key has the value "true"
    • If yes, then we now simply call the default show() function.
    • If no, then we call the setup() function.

setup():

  • Ask user for name
  • save name in config.json with key "user_name"
  • Set "initial_setup_done" key as true
  • Also set the key "tasks" as an empty list

callme():

  • Takes in name as argument
  • Sets the "user_name" key value as name in the config.json
  • Feedback

show():

  • Show time of the day followed by name from json "user_name" key
  • Show tasks
  • Show calendar events

Tasks

add():

  • Take in a string task as an argument
  • Take the pre-existing array from config.json, append the new task to it with the following format:
tasks: [
  {
    name: "...",
    done: false,
    date_added: "...",
    date_completed: "...",
    priority: "1" // 1 is high, 2 is low...
  }
]
  • Show updated table

delete():

  • Takes in an index integer
  • Takes the array of tasks from config.json and deletes the element at index
  • Show updated table

done():

  • Takes in an index integer
  • Takes the array of tasks from config.json and sets the key "done" to True for element at index
  • Show updated table

showtasks():

  • Prints table of tasks, sorted by date (Most recently added is first)
  • Columns:
Number Task Done? Date Added Date Completed
  • Don't show date added and date completed columns yet.

Nix expression [feature request]

There usually is a ./contrib folder that contains some integration-like files.

Some nix expert may come along and help in with the idiomic way. But there is what worked for my flake.nix

{ config, pkgs, ... }:
let

  py3-with-deps-for-please = pkgs.python3.withPackages (ps: [ ps.typer ps.rich ]);
  py3-code-for-please = pkgs.fetchFromGitHub {
    rev = "390ecaeda5cad70b56f2b4ef64725c1d1a10a842";
    owner = "NayamAmarshe";
    repo = "please";
    hash = "sha256-U0wT6uZ9IV4lemMD9UVTSMvGeQ9h5l1TQ9gUiH/tlJc=";
  };
  please-cli = pkgs.writeShellScriptBin "please" ''
    ${pkgs.lib.getExe py3-with-deps-for-please} ${py3-code-for-please}/please/please.py $@
  '';

in

{

  config.users.users.mt.shell = pkgs.fish;

  config.environment.systemPackages = [
    please-cli 
  ];
}

I hope for someone to publish a correct package not only to AUR but also to nixpkgs

TimeFormat behaves weird at startup

image

It looks like default value makes time to appear in 12h format, but for changetimeformat command (which does change 24h to 12h) the default value appears as 24h

Support for todo.txt

Is it possible to read an existing todo.txt file at startup? All todos of the day or the week should then be displayed.

A synchronization is not necessary, for this there would be other tools, such as syncthing.

Feature Request - Countdown to date/event?

Hello!

I have a big deadline coming up in some months, and I thought it might be nice to have some kind of countdown timer present in the preamble to help me keep the looming date in mind. (eg. "There are 42 days left until your deadline.")

Perhaps this is something which could be added to individual tasks as well? In the case of structuring and organizing a smaller set of tasks for a larger project, it could be nice to set micro-deadlines as well, and potentially organize/prioritize the different tasks based on their time constraints.

Hopefully someone else would find this useful as well. Thanks!

Simple Tasks Hierarchy

hello @NayamAmarshe After using your please CLI for a few months daily, the only shortcoming I felt encountering for my usage would be detailing some tasks with a few sub-tasks.

So naturally I forked the project and added this functionnality, please find linked to this enhancement issue my branch, and if so inclined, you may review it and eventually merge it.

https://github.com/vchalmel/please/tree/hierarchy
#56

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.