diff --git a/jrnl/config.py b/jrnl/config.py index a8733612..8b7c16c4 100644 --- a/jrnl/config.py +++ b/jrnl/config.py @@ -115,6 +115,15 @@ def get_default_config() -> dict[str, Any]: } +def get_default_colors() -> dict[str, Any]: + return { + "date": "none", + "title": "black", + "body": "yellow", + "tags": "cyan", + } + + def get_default_journal_path() -> str: journal_data_path = xdg.BaseDirectory.save_data_path(XDG_RESOURCE) or home_dir() return os.path.join(journal_data_path, DEFAULT_JOURNAL_NAME) diff --git a/jrnl/install.py b/jrnl/install.py index 239f07be..6f14e967 100644 --- a/jrnl/install.py +++ b/jrnl/install.py @@ -12,6 +12,7 @@ from rich.pretty import pretty_repr from jrnl import __version__ from jrnl.config import DEFAULT_JOURNAL_KEY from jrnl.config import get_config_path +from jrnl.config import get_default_colors from jrnl.config import get_default_config from jrnl.config import get_default_journal_path from jrnl.config import load_config @@ -147,6 +148,11 @@ def install() -> dict: default_config["encrypt"] = True print_msg(Message(MsgText.JournalEncrypted, MsgStyle.NORMAL)) + # Use colors? + use_colors = yesno(Message(MsgText.UseColorsQuestion), default=True) + if use_colors: + default_config["colors"] = get_default_colors() + save_config(default_config) return default_config diff --git a/jrnl/messages/MsgText.py b/jrnl/messages/MsgText.py index 6438b7e9..a0fd6dd0 100644 --- a/jrnl/messages/MsgText.py +++ b/jrnl/messages/MsgText.py @@ -37,6 +37,9 @@ class MsgText(Enum): EncryptJournalQuestion = """ Do you want to encrypt your journal? (You can always change this later) """ + UseColorsQuestion = """ + Do you want jrnl to use colors when displaying entries? (You can always change this later) + """ YesOrNoPromptDefaultYes = "[Y/n]" YesOrNoPromptDefaultNo = "[y/N]" ContinueUpgrade = "Continue upgrading jrnl?" diff --git a/tests/bdd/features/file_storage.feature b/tests/bdd/features/file_storage.feature index b705ddba..cecb21f6 100644 --- a/tests/bdd/features/file_storage.feature +++ b/tests/bdd/features/file_storage.feature @@ -57,6 +57,7 @@ Feature: Journals iteracting with the file system in a way that users can see When we run "jrnl hello world" and enter test.txt n + \n Then the output should contain "Journal 'default' created" When we change directory to "subfolder" And we run "jrnl -n 1" diff --git a/tests/bdd/features/install.feature b/tests/bdd/features/install.feature index abef3d91..7f9e71b9 100644 --- a/tests/bdd/features/install.feature +++ b/tests/bdd/features/install.feature @@ -5,6 +5,7 @@ Feature: Installing jrnl When we run "jrnl hello world" and enter \n \n + \n Then the output should contain "Journal 'default' created" And the default journal "journal.txt" should be in the "." directory And the config should contain "encrypt: false" @@ -15,6 +16,7 @@ Feature: Installing jrnl When we run "jrnl hello world" and enter default/custom.txt n + \n Then the output should contain "Journal 'default' created" And the default journal "custom.txt" should be in the "default" directory And the config should contain "encrypt: false" @@ -26,6 +28,7 @@ Feature: Installing jrnl When we run "jrnl hello world" and enter ~/custom.txt n + \n Then the output should contain "Journal 'default' created" And the default journal "custom.txt" should be in the "home" directory And the config should contain "encrypt: false" @@ -36,10 +39,38 @@ Feature: Installing jrnl When we run "jrnl hello world" and enter encrypted.txt y + \n Then the output should contain "Journal will be encrypted" And the default journal "encrypted.txt" should be in the "." directory And the config should contain "encrypt: true" And the version in the config file should be up-to-date When we run "jrnl" Then we should be prompted for a password - \ No newline at end of file + + Scenario: Install jrnl with colors by default + Given we use no config + When we run "jrnl hello world" and enter + \n + \n + \n + Then the output should contain "Journal 'default' created" + And the config should contain + colors: + date: none + title: black + body: yellow + tags: cyan + + Scenario: Install jrnl without colors + Given we use no config + When we run "jrnl hello world" and enter + \n + \n + N + Then the output should contain "Journal 'default' created" + And the config should contain + colors: + date: none + title: none + body: none + tags: none