{"action":"opened","issue":{"url":"https://api.github.com/repos/withoutboats/notty/issues/21","repository_url":"https://api.github.com/repos/withoutboats/notty","labels_url":"https://api.github.com/repos/withoutboats/notty/issues/21/labels{/name}","comments_url":"https://api.github.com/repos/withoutboats/notty/issues/21/comments","events_url":"https://api.github.com/repos/withoutboats/notty/issues/21/events","html_url":"https://github.com/withoutboats/notty/issues/21","id":135039018,"number":21,"title":"Store Config info on the Terminal struct","user":{"login":"withoutboats","id":9063376,"avatar_url":"https://avatars.githubusercontent.com/u/9063376?v=3","gravatar_id":"","url":"https://api.github.com/users/withoutboats","html_url":"https://github.com/withoutboats","followers_url":"https://api.github.com/users/withoutboats/followers","following_url":"https://api.github.com/users/withoutboats/following{/other_user}","gists_url":"https://api.github.com/users/withoutboats/gists{/gist_id}","starred_url":"https://api.github.com/users/withoutboats/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/withoutboats/subscriptions","organizations_url":"https://api.github.com/users/withoutboats/orgs","repos_url":"https://api.github.com/users/withoutboats/repos","events_url":"https://api.github.com/users/withoutboats/events{/privacy}","received_events_url":"https://api.github.com/users/withoutboats/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/withoutboats/notty/labels/help%20wanted","name":"help wanted","color":"159818"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":0,"created_at":"2016-02-20T06:25:12Z","updated_at":"2016-02-20T06:25:12Z","closed_at":null,"body":"As of writing this issue, config information is stored on a global constant called `CONFIG`, which is imported into several scopes, both in `notty` and in `notty-cairo`. Because configuration info is stored on a constant, the only way to reconfigure notty is to recompile it. This is not a great user experience.\r\n\r\nThere are several steps that need to be taken to make notty configs convenient to change, this issue is only the first step. Here is a broad roadmap of the whole process to making notty configured dynamically:\r\n\r\n1. The `Terminal` holds a `Config` struct, from which all the configurable values for that terminal are accessed. At first, all terminals can be instantiated with the `CONFIG` constant for this. This is what this issue is about.\r\n2. This `Config` struct is made into an argument, and the config info in `src/cfg.rs` is moved into the `scaffolding` terminal (though the `Config` type definition will stay inside of `notty`).\r\n3. Add a way for scaffolding to create a `Config` struct at runtime from some source (probably a [TOML](https://github.com/toml-lang/toml) file). This way, users can configure the scaffolding terminal without recompiling notty.\r\n\r\nThis is a great task for someone to pick up to learn the notty code base better (and probably also Rust). It doesn't interact much with the core logic of notty, but it does require you to explore how it is structured. I am glad to provide guidance and answer any questions about this task.\r\n\r\nTo sort of restate the issue, once this is done, `cfg::CONFIG` should be invoked in only one location, stored somewhere on the `Terminal` struct, and everywhere it is invoked now should instead invoke the value stored on the `Terminal`.\r\n\r\nPlease drop a note here if you start to work on this and I will assign the issue to you."}}