diff --git a/daemon.cc b/daemon.cc
index 852ba78..3b813ee 100644
--- a/daemon.cc
+++ b/daemon.cc
@@ -7,6 +7,7 @@
 #include <string>
 #include <vector>
 
+#include <base/bind.h>
 #include <base/logging.h>
 #include <base/message_loop_proxy.h>
 #include <base/run_loop.h>
@@ -22,6 +23,7 @@
 const char Daemon::kInterfaceName[] = "org.chromium.lorgnette";
 const char Daemon::kScanGroupName[] = "scanner";
 const char Daemon::kScanUserName[] = "saned";
+const int Daemon::kShutdownTimeoutMilliseconds = 20000;
 
 Daemon::Daemon()
     : dont_use_directly_(new MessageLoopForUI),
@@ -47,8 +49,18 @@
   dispatcher_->attach(NULL);
   connection_.reset(new DBus::Connection(DBus::Connection::SystemBus()));
   connection_->request_name(kInterfaceName);
-  manager_.reset(new Manager);
+  manager_.reset(new Manager(
+      base::Bind(&Daemon::PostponeShutdown, base::Unretained(this))));
   manager_->InitDBus(connection_.get());
+  PostponeShutdown();
+}
+
+void Daemon::PostponeShutdown() {
+  shutdown_callback_.Reset(base::Bind(&Daemon::Quit, base::Unretained(this)));
+  message_loop_proxy_->PostDelayedTask(FROM_HERE,
+                                       shutdown_callback_.callback(),
+                                       base::TimeDelta::FromMilliseconds(
+                                           kShutdownTimeoutMilliseconds));
 }
 
 }  // namespace lorgnette
diff --git a/daemon.h b/daemon.h
index ada5fb1..4e5e301 100644
--- a/daemon.h
+++ b/daemon.h
@@ -7,6 +7,7 @@
 
 #include <string>
 
+#include <base/cancelable_callback.h>
 #include <base/memory/scoped_ptr.h>
 #include <base/message_loop.h>
 #include <dbus-c++/glib-integration.h>
@@ -44,11 +45,18 @@
  private:
   friend class DaemonTest;
 
+  // Daemon will automatically shutdown after this length of idle time.
+  static const int kShutdownTimeoutMilliseconds;
+
+  // Restarts a timer for the termination of the daemon process.
+  void PostponeShutdown();
+
   scoped_ptr<MessageLoop> dont_use_directly_;
   scoped_refptr<base::MessageLoopProxy> message_loop_proxy_;
   scoped_ptr<DBus::Glib::BusDispatcher> dispatcher_;
   scoped_ptr<DBus::Connection> connection_;
   scoped_ptr<Manager> manager_;
+  base::CancelableClosure shutdown_callback_;
 
   DISALLOW_COPY_AND_ASSIGN(Daemon);
 };
diff --git a/dbus_service/org.chromium.lorgnette.service b/dbus_service/org.chromium.lorgnette.service
new file mode 100644
index 0000000..db13365
--- /dev/null
+++ b/dbus_service/org.chromium.lorgnette.service
@@ -0,0 +1,5 @@
+[D-BUS Service]
+Name=org.chromium.lorgnette
+Exec=/usr/bin/lorgnette
+User=root
+
diff --git a/manager.cc b/manager.cc
index 0c91553..547cce9 100644
--- a/manager.cc
+++ b/manager.cc
@@ -62,7 +62,8 @@
   manager_->ScanImage(device_name, outfd, scan_properties, &error);
 }
 
-Manager::Manager() {}
+Manager::Manager(base::Callback<void()> activity_callback)
+    : activity_callback_(activity_callback) {}
 
 Manager::~Manager() {}
 
@@ -91,6 +92,7 @@
     SetError(__func__, "Unable to read scanner list output file", error);
     return ScannerInfo();
   }
+  activity_callback_.Run();
   return ScannerInfoFromString(scanner_output_string);
 }
 
@@ -117,6 +119,7 @@
                       &scan_process,
                       &convert_process,
                       error);
+  activity_callback_.Run();
 }
 
 // static
diff --git a/manager.h b/manager.h
index bf88e8b..fd5f91c 100644
--- a/manager.h
+++ b/manager.h
@@ -29,7 +29,7 @@
   typedef std::map< std::string,
                     std::map<std::string, std::string> > ScannerInfo;
 
-  Manager();
+  Manager(base::Callback<void()> activity_callback);
   virtual ~Manager();
 
   // Start DBus connection.
@@ -114,6 +114,7 @@
                        ::DBus::Error *error);
 
   scoped_ptr<DBusAdaptor> dbus_adaptor_;
+  base::Callback<void()> activity_callback_;
 
   DISALLOW_COPY_AND_ASSIGN(Manager);
 };
diff --git a/manager_unittest.cc b/manager_unittest.cc
index 09948d0..3fe10a9 100644
--- a/manager_unittest.cc
+++ b/manager_unittest.cc
@@ -30,7 +30,8 @@
      : input_pipe_fd_(kInputPipeFd),
        output_pipe_fd_(kOutputPipeFd),
        input_scoped_fd_(&input_pipe_fd_),
-       output_scoped_fd_(&output_pipe_fd_) {}
+       output_scoped_fd_(&output_pipe_fd_),
+       manager_(base::Callback<void()>()) {}
 
   virtual void TearDown() {
     // The fds that we have handed to these ScopedFD are not real, so we
