From 2b0d8bfe461ff8430cc86ee8d51ddc14adf95e23 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Tue, 5 Jun 2018 09:17:31 +0530 Subject: [PATCH] Get rid of the default kitty.conf --- kitty/conf/definition.py | 17 +- kitty/conf/utils.py | 5 +- kitty/config.py | 14 +- kitty/kitty.conf | 569 --------------------------------------- setup.py | 2 +- 5 files changed, 22 insertions(+), 585 deletions(-) delete mode 100644 kitty/kitty.conf diff --git a/kitty/conf/definition.py b/kitty/conf/definition.py index fc6fbbc37..44ef7d002 100644 --- a/kitty/conf/definition.py +++ b/kitty/conf/definition.py @@ -23,7 +23,7 @@ class Group: class Option: - __slots__ = 'name', 'group', 'long_text', 'option_type', 'defval_as_string', 'add_to_default', 'add_to_docs' + __slots__ = 'name', 'group', 'long_text', 'option_type', 'defval_as_string', 'add_to_default', 'add_to_docs', 'line' def __init__(self, name, group, defval, option_type, long_text, add_to_default, add_to_docs): self.name, self.group = name, group @@ -31,17 +31,19 @@ class Option: self.defval_as_string = defval self.add_to_default = add_to_default self.add_to_docs = add_to_docs + self.line = self.name + ' ' + self.defval_as_string class Shortcut: - __slots__ = 'name', 'group', 'key', 'action_def', 'short_text', 'long_text', 'add_to_default', 'add_to_docs' + __slots__ = 'name', 'group', 'key', 'action_def', 'short_text', 'long_text', 'add_to_default', 'add_to_docs', 'line' def __init__(self, name, group, key, action_def, short_text, long_text, add_to_default, add_to_docs): self.name, self.group, self.key, self.action_def = name, group, key, action_def self.short_text, self.long_text = short_text, long_text self.add_to_default = add_to_default self.add_to_docs = add_to_docs + self.line = 'map ' + self.key + ' ' + self.action_def def option( @@ -193,3 +195,14 @@ def as_conf_file(all_options): a('# }}''}') num_open_folds -= 1 return ans + + +def config_lines(all_options): + for opt in all_options.values(): + if isinstance(opt, Option): + if opt.add_to_default: + yield opt.line + else: + for sc in opt: + if sc.add_to_default: + yield sc.line diff --git a/kitty/conf/utils.py b/kitty/conf/utils.py index 51c27c2ab..21e39fe96 100644 --- a/kitty/conf/utils.py +++ b/kitty/conf/utils.py @@ -164,9 +164,8 @@ def load_config(Options, defaults, parse_config, merge_configs, *paths, override return Options(ans) -def init_config(defaults_path, parse_config): - with open(defaults_path, encoding='utf-8', errors='replace') as f: - defaults = parse_config(f, check_keys=False) +def init_config(default_config_lines, parse_config): + defaults = parse_config(default_config_lines, check_keys=False) Options = create_options_class(defaults.keys()) defaults = Options(defaults) return Options, defaults diff --git a/kitty/config.py b/kitty/config.py index c7b31e8d0..9e5a76708 100644 --- a/kitty/config.py +++ b/kitty/config.py @@ -10,17 +10,14 @@ from collections import namedtuple from contextlib import contextmanager from . import fast_data_types as defines -from .conf.definition import as_conf_file +from .conf.definition import as_conf_file, config_lines from .conf.utils import ( init_config, key_func, load_config as _load_config, merge_dicts, - parse_config_base, python_string, to_bool, - to_cmdline + parse_config_base, python_string, to_bool, to_cmdline ) -from .config_data import all_options +from .config_data import all_options, parse_mods, type_map from .constants import cache_dir, defconf from .utils import log_error -from .config_data import parse_mods, type_map - named_keys = { "'": 'APOSTROPHE', @@ -264,9 +261,6 @@ def special_handling(key, val, ans): defaults = None -default_config_path = os.path.join( - os.path.dirname(os.path.abspath(__file__)), 'kitty.conf' -) def parse_config(lines, check_keys=True): @@ -287,7 +281,7 @@ def parse_defaults(lines, check_keys=False): return ans -Options, defaults = init_config(default_config_path, parse_defaults) +Options, defaults = init_config(config_lines(all_options), parse_defaults) actions = frozenset(all_key_actions) | frozenset( 'run_simple_kitten combine send_text goto_tab goto_layout set_font_size new_tab_with_cwd new_window_with_cwd new_os_window_with_cwd'. split() diff --git a/kitty/kitty.conf b/kitty/kitty.conf deleted file mode 100644 index 5756d0f41..000000000 --- a/kitty/kitty.conf +++ /dev/null @@ -1,569 +0,0 @@ -# vim:fileencoding=utf-8:ft=conf:foldmethod=marker - -# You can include secondary config files via the "include" directive. -# If you use a relative path for include, it is resolved with respect to the -# location of the current config file. Note that environment variables -# are expanded, so ${USER}.conf becomes name.conf if USER=name -# For example: -# include other.conf - -# Fonts {{{ -# Font family. You can also specify different fonts for the -# bold/italic/bold-italic variants. By default they are derived automatically, -# by the OSes font system. Setting them manually is useful for font families -# that have many weight variants like Book, Medium, Thick, etc. For example: -# font_family Operator Mono Book -# bold_font Operator Mono Medium -# italic_font Operator Mono Book Italic -# bold_italic_font Operator Mono Medium Italic -# -# You can get a list of full family names available on your computer by running -# kitty list-fonts -# The default values shown below rely on your OS to choose an appropriate monospace font family. -font_family monospace -italic_font auto -bold_font auto -bold_italic_font auto - -# Font size (in pts) -font_size 11.0 - -# Adjust the cell dimensions. -# You can use either numbers, which are interpreted as pixels or percentages -# (number followed by %), which are interpreted as percentages of the -# unmodified values. You can use negative pixels or percentages less than -# 100% to reduce sizes (but this might cause rendering artifacts). -adjust_line_height 0 -adjust_column_width 0 - -# Symbol mapping (special font for specified unicode code points). Map the -# specified unicode codepoints to a particular font. Useful if you need special -# rendering for some symbols, such as for Powerline. Avoids the need for -# patched fonts. Each unicode code point is specified in the form U+. You can specify multiple code points, separated by commas -# and ranges separated by hyphens. symbol_map itself can be specified multiple times. -# Syntax is: -# -# symbol_map codepoints Font Family Name -# -# For example: -# -# symbol_map U+E0A0-U+E0A2,U+E0B0-U+E0B3 PowerlineSymbols - -# Change the sizes of the lines used for the box drawing unicode characters -# These values are in pts. They will be scaled by the monitor DPI to arrive at -# a pixel value. There must be four values corresponding to thin, normal, thick, -# and very thick lines; -box_drawing_scale 0.001, 1, 1.5, 2 -# }}} - - -# Cursor customization {{{ -# The cursor color -cursor #cccccc - -# The cursor shape can be one of (block, beam, underline) -cursor_shape block - -# The interval (in seconds) at which to blink the cursor. Set to zero to -# disable blinking. Note that numbers smaller than repaint_delay will be -# limited to repaint_delay. -cursor_blink_interval 0.5 - -# Stop blinking cursor after the specified number of seconds of keyboard inactivity. Set to -# zero to never stop blinking. -cursor_stop_blinking_after 15.0 -# }}} - - -# Scrollback {{{ -# Number of lines of history to keep in memory for scrolling back -scrollback_lines 2000 - -# Program with which to view scrollback in a new window. The scrollback buffer is passed as -# STDIN to this program. If you change it, make sure the program you use can -# handle ANSI escape sequences for colors and text formatting. -scrollback_pager less +G -R - -# Wheel scroll multiplier (modify the amount scrolled by the mouse wheel). Use negative -# numbers to change scroll direction. -wheel_scroll_multiplier 5.0 -# }}} - - -# Mouse {{{ -# The color and style for highlighting URLs on mouse-over. url_style can be one of: -# none, single, double, curly -url_color #0087BD -url_style curly - -# The modifier keys to press when clicking with the mouse on URLs to open the URL -open_url_modifiers kitty_mod - -# The program with which to open URLs that are clicked on. The special value "default" means to -# use the operating system's default URL handler. -open_url_with default - -# Copy to clipboard on select. With this enabled, simply selecting text with -# the mouse will cause the text to be copied to clipboard. Useful on platforms -# such as macOS/Wayland that do not have the concept of primary selections. Note -# that this is a security risk, as all programs, including websites open in your -# browser can read the contents of the clipboard. -copy_on_select no - -# The modifiers to use rectangular selection (i.e. to select text in a -# rectangular block with the mouse) -rectangle_select_modifiers ctrl+alt - -# Characters considered part of a word when double clicking. In addition to these characters -# any character that is marked as an alpha-numeric character in the unicode -# database will be matched. -select_by_word_characters :@-./_~?&=%+# - -# The interval between successive clicks to detect double/triple clicks (in seconds) -click_interval 0.5 - -# Hide mouse cursor after the specified number of seconds of the mouse not being used. Set to -# zero to disable mouse cursor hiding. -mouse_hide_wait 3.0 - -# Set the active window to the window under the mouse when moving the mouse around -focus_follows_mouse no -# }}} - - -# Performance tuning {{{ -# Delay (in milliseconds) between screen updates. Decreasing it, increases -# frames-per-second (FPS) at the cost of more CPU usage. The default value -# yields ~100 FPS which is more than sufficient for most uses. Note that to -# actually achieve 100FPS you have to either set sync_to_monitor to no or use a -# monitor with a high refresh rate. -repaint_delay 10 - -# Delay (in milliseconds) before input from the program running in the terminal -# is processed. Note that decreasing it will increase responsiveness, but also -# increase CPU usage and might cause flicker in full screen programs that -# redraw the entire screen on each loop, because kitty is so fast that partial -# screen updates will be drawn. -input_delay 3 - -# Sync screen updates to the refresh rate of the monitor. This prevents -# tearing (https://en.wikipedia.org/wiki/Screen_tearing) when scrolling. However, -# it limits the rendering speed to the refresh rate of your monitor. With a -# very high speed mouse/high keyboard repeat rate, you may notice some slight input latency. -# If so, set this to no. -sync_to_monitor yes -# }}} - - -# Audio/visual bell {{{ -# Visual bell duration. Flash the screen when a bell occurs for the specified number of -# seconds. Set to zero to disable. -visual_bell_duration 0.0 - -# Enable/disable the audio bell. Useful in environments that require silence. -enable_audio_bell yes - -# Request window attention on bell. -# Makes the dock icon bounce on macOS or the taskbar flash on linux. -window_alert_on_bell yes - -# Show a bell symbol on the tab if a bell occurs in one of the windows in the -# tab and the window is not the currently focused window -bell_on_tab yes -# }}} - - -# Window layout {{{ -# If enabled, the window size will be remembered so that new instances of kitty will have the same -# size as the previous instance. If disabled, the window will initially have size configured -# by initial_window_width/height, in pixels. You can use a suffix of "c" on the width/height values -# to have them interpreted as number of cells instead of pixels. -remember_window_size yes -initial_window_width 640 -initial_window_height 400 - -# The enabled window layouts. A comma separated list of layout names. The special value * means -# all layouts. The first listed layout will be used as the startup layout. -# For a list of available layouts, see the README. -enabled_layouts * - -# The step size (in units of cell width/cell height) to use when resizing -# windows. The cells value is used for horizontal resizing and the lines value -# for vertical resizing. -window_resize_step_cells 2 -window_resize_step_lines 2 - -# The width (in pts) of window borders. Will be rounded to the nearest number of pixels based on screen resolution. -# Note that borders are displayed only when more than one window is visible. They are meant to separate multiple windows. -window_border_width 1 - -# The window margin (in pts) (blank area outside the border) -window_margin_width 0 - -# The window padding (in pts) (blank area between the text and the window border) -window_padding_width 0 - -# The color for the border of the active window -active_border_color #00ff00 - -# The color for the border of inactive windows -inactive_border_color #cccccc - -# The color for the border of inactive windows in which a bell has occurred -bell_border_color #ff5a00 - -# Fade the text in inactive windows by the specified amount (a number between -# zero and one, with 0 being fully faded). -inactive_text_alpha 1.0 -# }}} - - -# Tab bar {{{ -# Which edge to show the tab bar on, top or bottom -tab_bar_edge bottom - -# The margin to the left and right of the tab bar (in pts) -tab_bar_margin_width 0 - -# The separator between tabs in the tab bar -tab_separator " ┇" - -# Tab bar colors and styles -active_tab_foreground #000 -active_tab_background #eee -active_tab_font_style bold-italic -inactive_tab_foreground #444 -inactive_tab_background #999 -inactive_tab_font_style normal -# }}} - - -# Color scheme {{{ -# The foreground color -foreground #dddddd - -# The background color -background #000000 - -# The opacity of the background. A number between 0 and 1, where 1 is opaque and 0 is fully transparent. -# This will only work if supported by the OS (for instance, when using a compositor under X11). Note -# that it only sets the default background color's opacity. This is so that -# things like the status bar in vim, powerline prompts, etc. still look good. -# But it means that if you use a color theme with a background color in your -# editor, it will not be rendered as transparent. Instead you should change the -# default background color in your kitty config and not use a background color -# in the editor color scheme. Or use the escape codes to set the terminals -# default colors in a shell script to launch your editor. -# Be aware that using a value less than 1.0 is a (possibly significant) performance hit. -background_opacity 1.0 -# If you want to dynamically change transparency of windows set dynamic_background_opacity to yes -# (this is off by default as it has a performance cost) -dynamic_background_opacity no - -# How much to dim text that has the DIM/FAINT attribute set. 1.0 means no dimming and -# 0.0 means fully dimmed (i.e. invisible). -dim_opacity 0.75 - -# The foreground for selections -selection_foreground #000000 - -# The background for selections -selection_background #FFFACD - -# The 16 terminal colors. There are 8 basic colors, each color has a dull and -# bright version. You can also set the remaining colors from the 256 color table -# as color16 to color256. - -# black -color0 #000000 -color8 #767676 - -# red -color1 #cc0403 -color9 #f2201f - -# green -color2 #19cb00 -color10 #23fd00 - -# yellow -color3 #cecb00 -color11 #fffd00 - -# blue -color4 #0d73cc -color12 #1a8fff - -# magenta -color5 #cb1ed1 -color13 #fd28ff - -# cyan -color6 #0dcdcd -color14 #14ffff - -# white -color7 #dddddd -color15 #ffffff -# }}} - - -# Advanced {{{ - -# The shell program to execute. The default value of . means -# to use whatever shell is set as the default shell for the current user. -# Note that on macOS if you change this, you might need to add --login to -# ensure that the shell starts in interactive mode and reads its startup rc files. -shell . - -# The console editor to use when editing the kitty config file or similar -# tasks. A value of . means to use the environment variable EDITOR. Note that -# this environment variable has to be set not just in your shell startup -# scripts but system-wide, otherwise kitty will not see it. -editor . - -# -# Close the window when the child process (shell) exits. If no (the default), -# the terminal will remain open when the child exits as long as there are still -# processes outputting to the terminal (for example disowned or backgrounded -# processes). If yes, the window will close as soon as the child process exits. -# Note that setting it to yes means that any background processes still using -# the terminal can fail silently because their stdout/stderr/stdin no longer -# work. -close_on_child_death no - -# Allow other programs to control kitty. If you turn this on other programs can -# control all aspects of kitty, including sending text to kitty windows, -# opening new windows, closing windows, reading the content of windows, etc. -# Note that this even works over ssh connections. -allow_remote_control no - -# Allow programs running in kitty to read and write from the clipboard. You can -# control exactly which actions are allowed. The set of possible actions is: -# write-clipboard read-clipboard write-primary read-primary -# The default is to allow writing to the clipboard and primary selection. Note -# that enabling the read functionality is a security risk as it means that any -# program, even one running on a remote server via SSH can read your clipboard. -clipboard_control write-clipboard write-primary - -# The value of the TERM environment variable to set. Changing this can break -# many terminal programs, only change it if you know what you are doing, not -# because you read some advice on Stack Overflow to change it. -term xterm-kitty - - -# }}} - - -# Keyboard shortcuts {{{ -# For a list of key names, see: http://www.glfw.org/docs/latest/group__keys.html -# For a list of modifier names, see: http://www.glfw.org/docs/latest/group__mods.html - -# The value of kitty_mod is used as the modifier for all default shortcuts, you -# can change it in your kitty.conf to change the modifiers for all the default -# shortcuts. -kitty_mod ctrl+shift -# -# You can use the special action no_op to unmap a keyboard shortcut that is -# assigned in the default configuration. -# -# You can combine multiple actions to be triggered by a single shortcut, using the -# syntax below: -# map key combine action1 action2 action3 ... -# For example: -# map kitty_mod+e combine : new_window : next_layout -# this will create a new window and switch to the next available layout -# -# You can use multi-key shortcuts using the syntax shown below: -# map key1>key2>key3 action -# For example: -# map ctrl+f>2 set_font_size 20 -# this will change the font size to 20 points when you press ctrl+f and then 2 - -# Clipboard {{{ -map kitty_mod+c copy_to_clipboard -map kitty_mod+v paste_from_clipboard -map kitty_mod+s paste_from_selection -map shift+insert paste_from_selection -# You can also pass the contents of the current selection to any program using -# pass_selection_to_program. By default, the system's open program is used, but -# you can specify your own, for example: -# map kitty_mod+o pass_selection_to_program firefox -map kitty_mod+o pass_selection_to_program -# }}} - -# Scrolling {{{ -map kitty_mod+up scroll_line_up -map kitty_mod+down scroll_line_down -map kitty_mod+k scroll_line_up -map kitty_mod+j scroll_line_down -map kitty_mod+page_up scroll_page_up -map kitty_mod+page_down scroll_page_down -map kitty_mod+home scroll_home -map kitty_mod+end scroll_end -map kitty_mod+h show_scrollback -# }}} - -# Window management {{{ -map kitty_mod+enter new_window -map kitty_mod+n new_os_window -map kitty_mod+w close_window -map kitty_mod+] next_window -map kitty_mod+[ previous_window -map kitty_mod+f move_window_forward -map kitty_mod+b move_window_backward -map kitty_mod+` move_window_to_top -map kitty_mod+r start_resizing_window -# Switching to a particular window -map kitty_mod+1 first_window -map kitty_mod+2 second_window -map kitty_mod+3 third_window -map kitty_mod+4 fourth_window -map kitty_mod+5 fifth_window -map kitty_mod+6 sixth_window -map kitty_mod+7 seventh_window -map kitty_mod+8 eighth_window -map kitty_mod+9 ninth_window -map kitty_mod+0 tenth_window -# You can open a new window running an arbitrary program, for example: -# map kitty_mod+y new_window mutt -# -# You can pass the current selection to the new program by using the @selection placeholder -# map kitty_mod+y new_window less @selection -# -# You can even send the contents of the current screen + history buffer as stdin using -# the placeholders @text (which is the plain text) and @ansi (which includes text styling escape codes). -# For only the current screen, use @screen or @ansi_screen. -# For example, the following command opens the scrollback buffer in less in a new window. -# map kitty_mod+y new_window @ansi less +G -R -# -# You can open a new window with the current working directory set to the -# working directory of the current window using -# map ctrl+alt+enter new_window_with_cwd -# }}} - -# Tab management {{{ -map kitty_mod+right next_tab -map kitty_mod+left previous_tab -map kitty_mod+t new_tab -map kitty_mod+q close_tab -map kitty_mod+l next_layout -map kitty_mod+. move_tab_forward -map kitty_mod+, move_tab_backward -map kitty_mod+alt+t set_tab_title -# You can also create shortcuts to go to specific tabs, with 1 being the first tab -# map ctrl+alt+1 goto_tab 1 -# map ctrl+alt+2 goto_tab 2 - -# Just as with new_window above, you can also pass the name of arbitrary -# commands to run when using new_tab and use new_tab_with_cwd. -# }}} - -# Layout management {{{ -# You can create shortcuts to switch to specific layouts -# map ctrl+alt+1 goto_layout tall -# map ctrl+alt+2 goto_layout stack -# }}} - -# Font sizes {{{ -# You can change the font size for all top-level kitty windows at a time -# or only the current one. -map kitty_mod+equal change_font_size all +2.0 -map kitty_mod+minus change_font_size all -2.0 -map kitty_mod+backspace change_font_size all 0 -# To setup shortcuts for specific font sizes: -# map kitty_mod+f6 change_font_size all 10.0 -# To setup shortcuts to change only the current window's font size: -# map kitty_mod+f6 change_font_size current 10.0 -# }}} - -# Select and act on visible text {{{ -# Use the hints kitten to select text and either pass it to an external program or -# insert it into the terminal or copy it to the clipboard. -# -# Open a currently visible URL using the keyboard. The program used to open the -# URL is specified in open_url_with. -map kitty_mod+e kitten hints - -# Select a path/filename and insert it into the terminal. Useful, for instance to -# run git commands on a filename output from a previous git command. -map kitty_mod+p>f kitten hints --type path --program - - -# Select something that looks like a hash and insert it into the terminal. -# Useful with git, which uses sha1 hashes to identify commits -map kitty_mod+p>h kitten hints --type hash --program - - -# Select a path/filename and open it with the default open program. -map kitty_mod+p>shift+f kitten hints --type path - -# Select a line of text and insert it into the terminal. Use for the -# output of things like: ls -1 -map kitty_mod+p>l kitten hints --type line --program - - -# Select words and insert into terminal. -map kitty_mod+p>w kitten hints --type word --program - - -# The hints kitten has many more modes of operation that you can map to different -# shortcuts. For a full description run: kitty +kitten hints --help -# }}} - -# Miscellaneous {{{ -map kitty_mod+f11 toggle_fullscreen -map kitty_mod+u input_unicode_character -map kitty_mod+f2 edit_config_file -# Open the kitty shell in a new window/tab/overlay/os_window to control kitty using commands. -map kitty_mod+escape kitty_shell window -map kitty_mod+a>m set_background_opacity +0.1 -map kitty_mod+a>l set_background_opacity -0.1 -map kitty_mod+a>1 set_background_opacity 1 -map kitty_mod+a>d set_background_opacity default - -# Sending arbitrary text on shortcut key presses -# You can tell kitty to send arbitrary (UTF-8) encoded text to -# the client program when pressing specified shortcut keys. For example: -# map ctrl+alt+a send_text all Special text -# This will send "Special text" when you press the Ctrl+Alt+a key combination. -# The text to be sent is a python string literal so you can use escapes like -# \x1b to send control codes or \u21fb to send unicode characters (or you can -# just input the unicode characters directly as UTF-8 text). The first argument -# to send_text is the keyboard modes in which to activate the shortcut. The possible -# values are normal or application or kitty or a comma separated combination of them. -# The special keyword all means all modes. The modes normal and application refer to -# the DECCKM cursor key mode for terminals, and kitty refers to the special kitty -# extended keyboard protocol. Another example, that outputs a word and then moves the cursor -# to the start of the line (same as pressing the Home key): -# map ctrl+alt+a send_text normal Word\x1b[H -# map ctrl+alt+a send_text application Word\x1bOH -# }}} - -# You can have kitty remove all shortcut definition seen up to this point. Useful, for -# instance, to remove the default shortcuts. -clear_all_shortcuts no -# }}} - - -# OS specific tweaks {{{ - -# Change the color of the kitty window's titlebar on macOS. A value of "system" -# means to use the default system color, a value of "background" means to use -# the background color of the currently active window and finally you can use -# an arbitrary color, such as #12af59 or "red". WARNING: This option works by -# using a hack, as there is no proper Cocoa API for it. It sets the background -# color of the entire window and makes the titlebar transparent. As such it is -# incompatible with background_opacity. If you want to use both, you are -# probably better off just hiding the titlebar with macos_hide_titlebar. -macos_titlebar_color system - -# Hide the kitty window's title bar on macOS. -macos_hide_titlebar no - -# Use the option key as an alt key. With this set to no, kitty will use -# the macOS native Option+Key = unicode character behavior. This will -# break any Alt+key keyboard shortcuts in your terminal programs, but you -# can use the macOS unicode input technique. -macos_option_as_alt yes - -# Hide the kitty window from running tasks (alt-tab) on macOS. -macos_hide_from_tasks no -# }}} diff --git a/setup.py b/setup.py index 88c214eda..c0ef65ab6 100755 --- a/setup.py +++ b/setup.py @@ -552,7 +552,7 @@ def package(args, for_bundle=False, sh_launcher=False): # {{{ return [ x for x in entries if '.' in x and x.rpartition('.')[2] not in - ('py', 'so', 'conf', 'glsl') + ('py', 'so', 'glsl') ] shutil.copytree('kitty', os.path.join(libdir, 'kitty'), ignore=src_ignore)