diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 0000000..d8b2f0e
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,141 @@
+# Contributing to lualine.nvim
+
+
+### General
+
+* 2 spaces
+* camelCase
+
+### All contributions are very welcome but themes/ extensions require a lot of work on my part if not done properly so here's a guide on how to do them.
+
+### Adding a theme
+
+* refer to example below to see how themes are defined
+* take 4 screenshots showing a different vim modes (normal, insert, visual, replace)
+* add your theme with screenshots attached to [THEMES.md](./THEMES.md) while maintaining alphabetical order
+
+
+theme example
+
+To create a custom theme you need to define a colorscheme for each of vim's modes. Each mode has a `fg` and `bg` field for every lualine section.
+This is really easy in lua. Here is and example of a gruvbox theme.
+
+```lua
+local gruvbox = { }
+
+local colors = {
+ black = "#282828",
+ white = '#ebdbb2',
+ red = '#fb4934',
+ green = '#b8bb26',
+ blue = '#83a598',
+ yellow = '#fe8019',
+
+ gray = '#a89984',
+ darkgray = '#3c3836',
+
+ lightgray = '#504945',
+ inactivegray = '#7c6f64',
+}
+
+gruvbox.normal = {
+ a = {
+ bg = colors.gray,
+ fg = colors.black,
+ },
+ b = {
+ bg = colors.lightgray,
+ fg = colors.white,
+ },
+ c = {
+ bg = colors.darkgray,
+ fg = colors.gray
+ }
+}
+
+gruvbox.insert = {
+ a = {
+ bg = colors.blue,
+ fg = colors.black,
+ },
+ b = {
+ bg = colors.lightgray,
+ fg = colors.white,
+ },
+ c = {
+ bg = colors.lightgray,
+ fg = colors.white
+ }
+}
+
+
+gruvbox.visual = {
+ a = {
+ bg = colors.yellow,
+ fg = colors.black,
+ },
+ b = {
+ bg = colors.lightgray,
+ fg = colors.white,
+ },
+ c = {
+ bg = colors.inactivegray,
+ fg = colors.black
+ },
+}
+
+gruvbox.replace = {
+ a = {
+ bg = colors.red,
+ fg = colors.black,
+ },
+ b = {
+ bg = colors.lightgray,
+ fg = colors.white,
+ },
+ c = {
+ bg = colors.black,
+ fg = colors.white
+ },
+}
+
+gruvbox.command = {
+ a = {
+ bg = colors.green,
+ fg = colors.black,
+ },
+ b = {
+ bg = colors.lightgray,
+ fg = colors.white,
+ },
+ c = {
+ bg = colors.inactivegray,
+ fg = colors.black
+ },
+}
+
+gruvbox.terminal = gruvbox.normal
+
+gruvbox.inactive = {
+ a = {
+ bg = colors.darkgray,
+ fg = colors.gray,
+ },
+ b = {
+ bg = colors.darkgray,
+ fg = colors.gray,
+ },
+ c = {
+ bg = colors.darkgray,
+ fg = colors.gray
+ },
+}
+
+lualine.theme = gruvbox
+```
+
+
+
+### Adding an extension
+
+* add your extension with screenshots attached to [EXTENSIONS.md](./EXTENSIONS.md) while maintaining alphabetical order
diff --git a/EXTENSIONS.md b/EXTENSIONS.md
new file mode 100644
index 0000000..4d0acce
--- /dev/null
+++ b/EXTENSIONS.md
@@ -0,0 +1,5 @@
+# Available extensions
+
+### [fzf.vim](https://github.com/junegunn/fzf.vim)
+
+![fzf](https://user-images.githubusercontent.com/41551030/103468293-e7b7ad80-4d57-11eb-9d16-a150f9dac4b7.png)
diff --git a/README.md b/README.md
index df92cd2..5258846 100644
--- a/README.md
+++ b/README.md
@@ -2,14 +2,20 @@
A blazing fast and easy to configure neovim statusline written in pure lua.
`lualine.nvim` requires neovim 0.5
+
+## Contributing
+Please read [CONTRIBUTING.md](./CONTRIBUTING.md) before contributing.
+
## Screenshots
Here is a preview of how lualine can look like.
-![normal](./screenshots/normal.png)
-![normal](./screenshots/insert.png)
-![normal](./screenshots/visual.png)
-![normal](./screenshots/command.png)
-![normal](./screenshots/replace.png)
+![normal](https://user-images.githubusercontent.com/41551030/103467902-06b44080-4d54-11eb-89db-6d3bebf449fa.png)
+![insert](https://user-images.githubusercontent.com/41551030/103467914-1764b680-4d54-11eb-9e3d-528d3568dce7.png)
+![visual](https://user-images.githubusercontent.com/41551030/103467916-23507880-4d54-11eb-804e-5b1c4d6e3db3.png)
+![command](https://user-images.githubusercontent.com/41551030/103467919-2ba8b380-4d54-11eb-8585-6c667fd5082e.png)
+![replace](https://user-images.githubusercontent.com/41551030/103467925-32372b00-4d54-11eb-88d6-6d39c46854d8.png)
+
+Screenshots of all available themes are listed in [THEMES.md](./THEMES.md)
## Performance compared to other plugins
Unlike other statusline plugins lualine loads only defined components, nothing else.
@@ -61,15 +67,9 @@ lualine.status()
lualine.theme = 'gruvbox'
```
-
-Available themes
+All available themes are listed in [THEMES.md](./THEMES.md)
-* gruvbox
-* dracula
-* onedark
-
-Please create a pr if you managed to port a popular theme before me
-
+Please create a pr if you managed to port a popular theme before me, [here is how to do it](./CONTRIBUTING.md).
### Changing separator in section
Lualine defines a separator between components in given section, the default
@@ -149,13 +149,7 @@ By default no plugin extension are loaded to improve performance. If you are usi
lualine.extensions = { 'fzf' }
```
-
-Available extensions
-
-* fzf
-
-Please create a pr if you managed to create an extension before me
-
+All available extensions are listed in [EXTENSIONS.md](./EXTENSIONS.md)
### Full config example using [packer.nvim](https://github.com/wbthomason/packer.nvim)
@@ -199,7 +193,7 @@ Please create a pr if you managed to create an extension before me
vimrc config
-
+
```vim
lua << EOF
local lualine = require('lualine')
@@ -228,130 +222,6 @@ EOF
```
-### Defining custom themes
-
-
-
-Theme example
-
-To create a custom theme you need to define a colorscheme for each of vim's modes. Each mode has a `fg` and `bg` field for every lualine section.
-This is really easy in lua. Here is and example of a gruvbox theme.
-
-```lua
-local gruvbox = { }
-
-local colors = {
- black = "#282828",
- white = '#ebdbb2',
- red = '#fb4934',
- green = '#b8bb26',
- blue = '#83a598',
- yellow = '#fe8019',
-
- gray = '#a89984',
- darkgray = '#3c3836',
-
- lightgray = '#504945',
- inactivegray = '#7c6f64',
-}
-
-gruvbox.normal = {
- a = {
- bg = colors.gray,
- fg = colors.black,
- },
- b = {
- bg = colors.lightgray,
- fg = colors.white,
- },
- c = {
- bg = colors.darkgray,
- fg = colors.gray
- }
-}
-
-gruvbox.insert = {
- a = {
- bg = colors.blue,
- fg = colors.black,
- },
- b = {
- bg = colors.lightgray,
- fg = colors.white,
- },
- c = {
- bg = colors.lightgray,
- fg = colors.white
- }
-}
-
-
-gruvbox.visual = {
- a = {
- bg = colors.yellow,
- fg = colors.black,
- },
- b = {
- bg = colors.lightgray,
- fg = colors.white,
- },
- c = {
- bg = colors.inactivegray,
- fg = colors.black
- },
-}
-
-gruvbox.replace = {
- a = {
- bg = colors.red,
- fg = colors.black,
- },
- b = {
- bg = colors.lightgray,
- fg = colors.white,
- },
- c = {
- bg = colors.black,
- fg = colors.white
- },
-}
-
-gruvbox.command = {
- a = {
- bg = colors.green,
- fg = colors.black,
- },
- b = {
- bg = colors.lightgray,
- fg = colors.white,
- },
- c = {
- bg = colors.inactivegray,
- fg = colors.black
- },
-}
-
-gruvbox.terminal = gruvbox.normal
-
-gruvbox.inactive = {
- a = {
- bg = colors.darkgray,
- fg = colors.gray,
- },
- b = {
- bg = colors.darkgray,
- fg = colors.gray,
- },
- c = {
- bg = colors.darkgray,
- fg = colors.gray
- },
-}
-
-lualine.theme = gruvbox
-```
-
-
## TODO's
Please create an issue/ pr if you want to see more functionality implemented
diff --git a/THEMES.md b/THEMES.md
new file mode 100644
index 0000000..7f6e0a4
--- /dev/null
+++ b/THEMES.md
@@ -0,0 +1,22 @@
+# Available themes
+
+All available themes are only best effort ports by myself/ other users. If you find a theme to be weird/ wrong please open an issue/ pr.
+
+### dracula
+![normal](https://user-images.githubusercontent.com/41551030/103468233-2d27ab00-4d57-11eb-8f3c-36426dd2f053.png)
+![insert](https://user-images.githubusercontent.com/41551030/103468255-49c3e300-4d57-11eb-9e7a-2df1bf047465.png)
+![visual](https://user-images.githubusercontent.com/41551030/103468264-652eee00-4d57-11eb-8ec8-e433cb396a63.png)
+![replace](https://user-images.githubusercontent.com/41551030/103468272-88f23400-4d57-11eb-93fe-c3715f1bc335.png)
+
+### gruvbox
+![normal](https://user-images.githubusercontent.com/41551030/103467902-06b44080-4d54-11eb-89db-6d3bebf449fa.png)
+![insert](https://user-images.githubusercontent.com/41551030/103467914-1764b680-4d54-11eb-9e3d-528d3568dce7.png)
+![visual](https://user-images.githubusercontent.com/41551030/103467916-23507880-4d54-11eb-804e-5b1c4d6e3db3.png)
+![command](https://user-images.githubusercontent.com/41551030/103467919-2ba8b380-4d54-11eb-8585-6c667fd5082e.png)
+![replace](https://user-images.githubusercontent.com/41551030/103467925-32372b00-4d54-11eb-88d6-6d39c46854d8.png)
+
+### onedark
+![normal](https://user-images.githubusercontent.com/41551030/103468158-a83c9180-4d56-11eb-89cb-28d802f02341.png)
+![insert](https://user-images.githubusercontent.com/41551030/103468174-cdc99b00-4d56-11eb-8723-fd817ff06404.png)
+![visual](https://user-images.githubusercontent.com/41551030/103468184-ea65d300-4d56-11eb-99e2-73cb649ab679.png)
+![replace](https://user-images.githubusercontent.com/41551030/103468213-07020b00-4d57-11eb-9b66-5061de556f44.png)
diff --git a/screenshots/command.png b/screenshots/command.png
deleted file mode 100644
index 48cb49a..0000000
Binary files a/screenshots/command.png and /dev/null differ
diff --git a/screenshots/insert.png b/screenshots/insert.png
deleted file mode 100644
index a2359c8..0000000
Binary files a/screenshots/insert.png and /dev/null differ
diff --git a/screenshots/normal.png b/screenshots/normal.png
deleted file mode 100644
index 0f30574..0000000
Binary files a/screenshots/normal.png and /dev/null differ
diff --git a/screenshots/replace.png b/screenshots/replace.png
deleted file mode 100644
index 459e9bb..0000000
Binary files a/screenshots/replace.png and /dev/null differ
diff --git a/screenshots/visual.png b/screenshots/visual.png
deleted file mode 100644
index 51ca81e..0000000
Binary files a/screenshots/visual.png and /dev/null differ