# -*- coding: utf-8 -*-
from setuptools import setup

packages = \
['i3bindings']

package_data = \
{'': ['*']}

entry_points = \
{'console_scripts': ['i3bindings = i3bindings.cli:main']}

setup_kwargs = {
    'name': 'i3bindings',
    'version': '1.0.0a0',
    'description': '',
    'long_description': '# i3bindings\n[![forthebadge](https://forthebadge.com/images/badges/made-with-python.svg)](https://forthebadge.com)\n[![forthebadge](https://forthebadge.com/images/badges/no-ragrets.svg)](https://forthebadge.com)\n\nSuccinct syntax for i3 config\n\n## Installation\n`pip install i3bindings`\n\n## Usage\n1. Create *input_file* using [Concepts](#Concepts) bellow.\n2. Try it with `i3bindings input_file`\n3. Write it to i3 config using `i3bindings --write input_file`\n\nCheck out `i3bindings --help` for more options.\n\n## Concepts\n### Mapping types\n*i3bindings* supports two types of mappings:\n1. Key binding, where `$mod+f -> fullscreen toggle` becomes `bindsym $mod+f fullscreen toggle`\n1. Exec binding, where `$mod+Return #> xterm` becomes `bindsym $mod+Return exec --no-startup-id xterm`\n\n### Alternatives\n*Alternatives* express the idea that the same action should be bound to multiple key-bindings.\n\nFor example:\n\n`$mod+h/Left -> focus left` will create two lines of config:\n\n`bindsym $mod+h focus left` and `bindsym $mod+Left focues left`\n\n### Variables\n*Variables* are shorter way to write bindings that have a similar structure.\n\nE.g.:\n`$mod+{f,s} -> {fullscreen,split} toggle` will create:\n\n`bindsym $mod+f fullscreen toggle`\n`bindsym $mod+s split toggle`\n\n#### Range expansion\nInside variables you can write `1-10` and it will be expanded to `1,2,3...`.\n\n#### Variable reference\nYou can reference current value of the variable using `@n` syntax, where `n` is the variable index.\nEvery variable is numbered (starting from 0) from left to right. E.g.:\n```\nfoo {bar,{foo,bar}} {0-1} ...\n    ^    ^          ^\n    0    1          2\n```\n\nUse it like this:\n`$mod+Control+Shift {1-9,0} -> move container to workspace {1-10}; workspace @1`\n\nOr to avoid repeating long sequences:\n\n`$mod+x -> {[instance=\\"calculator\\"]} scratchpad show; @0 move position center`\n\n#### Empty value\nYou can use empty value inside *Variable*, denoted by `_`. E.g. `$mod+{_,Shift+}{h/Left,j/Down,k/Up,l/Right} -> {focus,move} {left,down,up,right}`.\nThis will expand to both `bindsym $mod+h focus left` and `bindsym $mod+Shift+h move left`\n\n### Nesting\nYou can use *Alternatives* and *Variables* inside *Variable* to create many bindings at once.\n\n\n## Additional syntax\n### Parenthesis\nBy default, special characters like space, plus sign, etc. are *token* separators.\n`$mod+p/Print` is therefore expanded to `$mod+p` and `$mod+Print`.\nYou can use parenthesis to modify the behavior:\n`($mod+p/Print) #> scrot` will create two lines of config:\n`bindsym $mod+p exec --no-startup-id scrot` and `bindsym Print exec --no-startup-id scrot`\n\n### Comments\nEmpty lines or lines starting with `#` will be ignored.\n\n## Example\nTo demonstrate the syntax have a look at this input file:\n```config\n    $mod+{_,Shift+}{h/Left,j/Down,k/Up,l/Right}         -> {focus,move} {left,down,up,right}\n    $mod+Control+Shift+{{h/Left,k/Up},{l/Right,j/Down}} -> resize {shrink,grow} {width,height} 5px or 5ppt\n    $mod+{_,Shift+}{1-9,0}                              -> {_,move container to }workspace {1-10}\n    $mod+Control+Shift {1-9,0}                          -> move container to workspace {1-10}; workspace @1\n    # vim:filetype=config\n```\nThe expanded version creates this i3 config:\n```i3\n    bindsym $mod+h focus left\n    bindsym $mod+Left focus left\n    bindsym $mod+j focus down\n    bindsym $mod+Down focus down\n    bindsym $mod+k focus up\n    bindsym $mod+Up focus up\n    bindsym $mod+l focus right\n    bindsym $mod+Right focus right\n    bindsym $mod+Shift+h move left\n    bindsym $mod+Shift+Left move left\n    bindsym $mod+Shift+j move down\n    bindsym $mod+Shift+Down move down\n    bindsym $mod+Shift+k move up\n    bindsym $mod+Shift+Up move up\n    bindsym $mod+Shift+l move right\n    bindsym $mod+Shift+Right move right\n    bindsym $mod+Control+Shift+h resize shrink width 5px or 5ppt\n    bindsym $mod+Control+Shift+Left resize shrink width 5px or 5ppt\n    bindsym $mod+Control+Shift+k resize shrink height 5px or 5ppt\n    bindsym $mod+Control+Shift+Up resize shrink height 5px or 5ppt\n    bindsym $mod+Control+Shift+l resize grow width 5px or 5ppt\n    bindsym $mod+Control+Shift+Right resize grow width 5px or 5ppt\n    bindsym $mod+Control+Shift+j resize grow height 5px or 5ppt\n    bindsym $mod+Control+Shift+Down resize grow height 5px or 5ppt\n    bindsym $mod+1 workspace 1\n    bindsym $mod+2 workspace 2\n    bindsym $mod+3 workspace 3\n    bindsym $mod+4 workspace 4\n    bindsym $mod+5 workspace 5\n    bindsym $mod+6 workspace 6\n    bindsym $mod+7 workspace 7\n    bindsym $mod+8 workspace 8\n    bindsym $mod+9 workspace 9\n    bindsym $mod+0 workspace 10\n    bindsym $mod+Shift+1 move container to workspace 1\n    bindsym $mod+Shift+2 move container to workspace 2\n    bindsym $mod+Shift+3 move container to workspace 3\n    bindsym $mod+Shift+4 move container to workspace 4\n    bindsym $mod+Shift+5 move container to workspace 5\n    bindsym $mod+Shift+6 move container to workspace 6\n    bindsym $mod+Shift+7 move container to workspace 7\n    bindsym $mod+Shift+8 move container to workspace 8\n    bindsym $mod+Shift+9 move container to workspace 9\n    bindsym $mod+Shift+0 move container to workspace 10\n    bindsym $mod+Control+Shift 1 move container to workspace 1; workspace 1\n    bindsym $mod+Control+Shift 2 move container to workspace 2; workspace 2\n    bindsym $mod+Control+Shift 3 move container to workspace 3; workspace 3\n    bindsym $mod+Control+Shift 4 move container to workspace 4; workspace 4\n    bindsym $mod+Control+Shift 5 move container to workspace 5; workspace 5\n    bindsym $mod+Control+Shift 6 move container to workspace 6; workspace 6\n    bindsym $mod+Control+Shift 7 move container to workspace 7; workspace 7\n    bindsym $mod+Control+Shift 8 move container to workspace 8; workspace 8\n    bindsym $mod+Control+Shift 9 move container to workspace 9; workspace 9\n    bindsym $mod+Control+Shift 0 move container to workspace 10; workspace 10\n```\n\n## Background\n[i3](https://i3wm.org/) is a great windows manager but its config is pretty verbose.\nI tried [bspwm](https://github.com/baskerville/bspwm) with its hotkey daemon [sxhkd](https://github.com/baskerville/sxhkd) and I much prefer that syntax.\nThat\'s why I wrote *i3bindings*.\nIt uses syntax similar to `sxhkd` for expansion of binding parameters, e.g. `$mod+{1-9,0} -> workspace {1-10}` will become `bindsym $mod+1 workspace 1`, `bindsym $mod+2 workspace 2`, and so on.\nIn addition, it has few more features.\n\n',
    'author': 'Viliam Valent',
    'author_email': 'i3bindings@viliamvalent.com',
    'maintainer': None,
    'maintainer_email': None,
    'url': 'https://github.com/ViliamV/i3bindings',
    'packages': packages,
    'package_data': package_data,
    'entry_points': entry_points,
    'python_requires': '>=3.7,<4.0',
}


setup(**setup_kwargs)
