diff --git a/README.md b/README.md
index 4cf78770e2660aaed6876850bdcd59097e5ad5de..83ff19a2104bb068f1754f63f7a465d5c235f764 100644
--- a/README.md
+++ b/README.md
@@ -19,18 +19,38 @@ You can also use the scripts in the `bin`-directory (all scripts will rebuild th
 # Run the binary directly (mostly used to control the bar via rpc)
 ./bin/run --help
 
-# Install the binary to ~/.local/bin
+# Install the binary to ~/.local/bin (this can also install tab completions)
 ./bin/install
 ```
 
 ## Configuration
 
-Custom configuration is currently only possible from Haskell:
+All configuration is currently done with command line arguments. The executable uses a command-style interface (e.g. `qbar theme rainbow`) which supports `--help` at every level of the tree. It also provides bash, zsh and fish tab completions.
+
+### Sway
+
+Use the following `status_command`:
+
+```
+qbar server swaybar default
+```
+
+You can specify a custom set of blocks:
+
+```
+qbar server swaybar date cpu network script ~/bin/my_script
+```
+
+### i3
+
+i3 runs the status command for every screen that shows a bar. To reuse the output of your primary display you can use mirror mode:
+
+```
+# Configure for primary display
+qbar server i3bar default
+
+# Configure for other displays
+qbar mirror i3bar
 ```
-myConfig :: BarIO ()
-myConfig = do
-  addBlock dateBlock
 
-main :: IO ()
-main = parseOptions >>= runQBar myConfig
-```
\ No newline at end of file
+Theming is not supported on mirrored servers.