--- a/configlet/gcwidgets.py
+++ b/configlet/gcwidgets.py
@@ -6,6 +6,7 @@
 path = '/apps/rox-media'
 client = gconf.client_get_default()
 client.add_dir(path, gconf.CLIENT_PRELOAD_NONE)
+
 
 class CheckButton(gtk.CheckButton):
     def __init__(self, key, label = None, underline = True):
@@ -27,3 +28,27 @@
         new_val = self.get_active()
         if new_val != client.get_bool(self.path):
             client.set_bool(self.path, new_val)
+
+
+class Entry(gtk.Entry):
+    def __init__(self, key):
+        gtk.Entry.__init__(self)
+        global client, path
+        self.path = path + '/' + key
+        client.notify_add(self.path, self.update_text)
+        self.update_text()
+        self.connect("changed", self.text_changed)
+    
+    def update_text(self, *args, **kwargs):
+        global client
+        t = client.get_string(self.path)
+        if not t:
+            t = ""
+        if t != self.get_text():
+            self.set_text(t)
+        
+    def text_changed(self, *args):
+        global client
+        new_val = self.get_text()
+        if new_val != client.get_string(self.path):
+            client.set_string(self.path, new_val)