diff --git a/app/config.js b/app/config.js
new file mode 100644
index 00000000..3a9cfc17
--- /dev/null
+++ b/app/config.js
@@ -0,0 +1,36 @@
+import React from 'react';
+import { ipcRenderer, remote } from 'electron';
+
+const config = remote.require('./config');
+
+export default class Config extends React.Component {
+
+ constructor () {
+ super();
+ this.state = {
+ config: config.get()
+ };
+ this.onChange = this.onChange.bind(this);
+ }
+
+ onChange () {
+ new Notification('HyperTerm configuration reloaded!');
+ this.setState({ config: config.get() });
+ }
+
+ componentDidMount () {
+ ipcRenderer.on('config change', this.onChange);
+ }
+
+ // passes `config` as props to the decorated component
+ render () {
+ const child = React.Children.only(this.props.children);
+ const { config } = this.state;
+ return React.cloneElement(child, { config });
+ }
+
+ componentWillUnmount () {
+ ipcRenderer.removeListener('config change', this.onChange);
+ }
+
+}
diff --git a/app/index.js b/app/index.js
index e752e422..2aa54bb5 100644
--- a/app/index.js
+++ b/app/index.js
@@ -1,8 +1,9 @@
import { render } from 'react-dom';
import HyperTerm from './hyperterm';
import React from 'react';
+import Config from './config';
require('./css/hyperterm.css');
require('./css/tabs.css');
-render(, document.getElementById('mount'));
+render(, document.getElementById('mount'));