Metadata-Version: 1.1
Name: i3configger
Version: 0.3.0
Summary: i3 config generation tool
Home-page: https://github.com/obestwalter/i3configger
Author: Oliver Bestwalter
Author-email: UNKNOWN
License: UNKNOWN
Description: |Project Status: Active – The project has reached a stable, usable state
        and is being actively developed.| |Build Status| # i3configger Generates
        an `i3 <https://i3wm.org>`__ config from a set of ``.conf`` files in
        ``~/.i3/config.d``. Does some nifty conditional integration of files on
        demand and variable resolution (also for i3status configs).
        
        Why?
        ----
        
        -  To be able to split my long and messy config file in many short,
           aptly named, messy config files
        -  To be able to assign variables to variables (``set $var $otherVar``)
        -  To be able to also use variables in i3status configurations
        -  To be able to change the config dynamically without having to
           manually make changes to the config file
        
        Getting started
        ---------------
        
        Simple
        ~~~~~~
        
        1. Cut your config file into chewable chunks with the extension
           ``.conf`` and put them in the directory ``~/.i3/config.d``.
        2. Run ``i3configger``.
        3. ``i3configger.json`` and ``.state.json`` are created in ``config.d``
        4. A new config file is generated instead of your old config.
        5. A backup of the last config is kept with suffix ``.bak``
        
        -  ``i3configger.json`` can be used to do configuration of the status
           bars.
        -  ``.state.json`` remembers the state of your current settings
        
        Watch files in the background
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        
        If you are experimenting with the config and want it automatically
        updated on change:
        
        run it in the foreground:
        
        ::
        
            $ i3configger --watch
        
        run it as a daemon:
        
        ::
        
            $ i3configger --daemon
        
        stop the daemon:
        
        ::
        
            $ i3configger --kill
        
        Diving a bit deeper
        -------------------
        
        I use this to generate `my own i3
        config <https://github.com/obestwalter/i3config>`__. Here are the config
        partials and settings:
        `.i3/config.d <https://github.com/obestwalter/i3config/tree/master/config.d>`__,
        from which
        `config <https://github.com/obestwalter/i3config/tree/master/config>`__
        and all ``i3status.*conf`` files are built.
        
        With my config, the call:
        
        ::
        
            $ i3configger select scheme solarized-dark
        
        will integrate ``scheme.solarized-dark.conf`` in the build and exclude
        all other ``scheme.*.conf`` files.
        
        ::
        
            $ i3configger select-next scheme will switch to the next theme
        
        This is persisted in ``.state.json``
        
        If I want to get my dock out of the way:
        
        ::
        
            $ i3configger set mode hide
        
        So in short: ``select`` helps switching between partial files and
        ``set`` is assigning new values to arbitrary variables that I have set
        in the configuration.
        
        Config partials that follow the naming scheme <key>.<value>.conf are
        only rendered into the config if explicitly set via configuration or a
        message from the command line (which then will be persisted).
        
        Features
        --------
        
        -  build main config and one or several i3status configs from the same
           sources
        -  variables are handled slightly more intelligently than i3 does it
           (variables assigned to other variables are resolved)
        -  end of line comments are possible (removed at build time)
        -  variables in i3status configs are also resolved (set anywhere in the
           sources)
        -  reload or restart i3 when a change has been done (using ``i3-msg``)
        -  notify when new config has been created and activated (using
           ``notify-send``)
        -  simple way to render partials based on selectors (see example above)
        -  simple way to communicate settings to renderer
           (``$i3configger_key value``)
        -  build config as one shot script or watch for changes (foreground and
           daemon)
        -  If ``i3 -C fails`` with the newly rendered config, the old config
           will be kept, no harm done
        
        Installation
        ------------
        
        **Note** the code is Python 3.6 only. I want to play with the new toys
        :)
        
        ``i3configger`` is released on `the Python Package
        Index <https://pypi.org/project/i3configger/>`__. The standard
        installation method is:
        
        ::
        
            $ pip install i3configger
        
        Resources
        ---------
        
        I3 official
        ~~~~~~~~~~~
        
        -  `i3wm <https://i3wm.org/>`__
        -  `reddit group <https://www.reddit.com/r/i3wm/>`__
        -  `Archlinux Wiki <https://wiki.archlinux.org/index.php/I3>`__
        
        Other Tools
        ~~~~~~~~~~~
        
        ... from the i3wm ecosystem
        
        I did not try them all, but stumbled over them while checking if
        somebody else solved my problem already.
        
        -  `i3ColourChanger <https://github.com/PMunch/i3ColourChanger>`__
        -  `i3-manager <https://github.com/erayaydin/i3-manager>`__
        
        .. |Project Status: Active – The project has reached a stable, usable state and is being actively developed.| image:: http://www.repostatus.org/badges/latest/active.svg
           :target: http://www.repostatus.org/#active
        .. |Build Status| image:: https://travis-ci.org/obestwalter/i3configger.svg?branch=master
           :target: https://travis-ci.org/obestwalter/i3configger
        
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Operating System :: POSIX :: Linux
Classifier: License :: OSI Approved :: MIT License
Classifier: Environment :: Console
Classifier: Topic :: Utilities
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3.6
