#!/usr/bin/env python # License: GPLv3 Copyright: 2021, Kovid Goyal import sys from kitty.conf.types import Definition from kitty.simple_cli_definitions import CompletionSpec definition = Definition( '!kittens.themes', ) agr = definition.add_group egr = definition.end_group map = definition.add_map # shortcuts {{{ agr('shortcuts', 'Keyboard shortcuts') # Browsing mode shortcuts map('Quit', 'quit --allow-fallback=shifted,ascii q quit', ) map('Scroll down', 'scroll_down --allow-fallback=shifted,ascii j scroll_down', ) map('Scroll up', 'scroll_up --allow-fallback=shifted,ascii k scroll_up', ) map('Start search', 'search --allow-fallback=shifted,ascii s search', ) map('Accept theme', 'accept --allow-fallback=shifted,ascii c accept', ) # Accepting mode shortcuts map('Abort and return to browsing', 'abort --allow-fallback=shifted,ascii a abort', ) map('Place theme file', 'place_theme --allow-fallback=shifted,ascii p place_theme', ) map('Modify config file', 'modify_conf --allow-fallback=shifted,ascii m modify_conf', ) map('Save as dark scheme', 'dark_scheme --allow-fallback=shifted,ascii d dark_scheme', ) map('Save as light scheme', 'light_scheme --allow-fallback=shifted,ascii l light_scheme', ) map('Save as no preference scheme', 'no_preference --allow-fallback=shifted,ascii n no_preference', ) egr() # }}} help_text = ( 'Change the kitty theme. If no theme name is supplied, run interactively, otherwise' ' change the current theme to the specified theme name.' ) usage = '[theme name to switch to]' OPTIONS = ''' --cache-age type=float default=1 Check for new themes only after the specified number of days. A value of zero will always check for new themes. A negative value will never check for new themes, instead raising an error if a local copy of the themes is not available. --reload-in default=parent choices=none,parent,all By default, this kitten will signal only the parent kitty instance it is running in to reload its config, after making changes. Use this option to instead either not reload the config at all or in all running kitty instances. Note that if you have config autoreload enabled in kitty.conf (it is enabled by default) then :code:`parent` is the same as :code:`all`, since all kitty instances will detect the config file change and reload automatically. --dump-theme type=bool-set default=false When running non-interactively, dump the specified theme to STDOUT instead of changing kitty.conf. --config-file-name default=kitty.conf The name or path to the config file to edit. Relative paths are interpreted with respect to the kitty config directory. By default the kitty config file, kitty.conf is edited. This is most useful if you add :code:`include themes.conf` to your kitty.conf and then have the kitten operate only on :file:`themes.conf`, allowing :code:`kitty.conf` to remain unchanged. '''.format def main(args: list[str]) -> None: raise SystemExit('This must be run as kitten themes') if __name__ == '__main__': main(sys.argv) elif __name__ == '__doc__': cd = sys.cli_docs # type: ignore cd['usage'] = usage cd['options'] = OPTIONS cd['help_text'] = help_text cd['short_desc'] = 'Manage kitty color schemes easily' cd['args_completion'] = CompletionSpec.from_string('type:special group:complete_themes') elif __name__ == '__conf__': sys.options_definition = definition # type: ignore