diff --git a/papersurfer.py b/papersurfer.py
index 00551b07846879212dfa24cc96db6f3ccd94dfb8..d17379a189d017d48341cf27b73a85234530917b 100644
--- a/papersurfer.py
+++ b/papersurfer.py
@@ -9,7 +9,9 @@ UI:
 4. paper (open discussion) (open paper)
 
 """
+import subprocess
 from dataclasses import dataclass
+from functools import partial
 from mattermostdriver import Driver
 import urwid
 import configargparse
@@ -21,6 +23,7 @@ CHANNEL = "n5myem9yc7fyzb9am7ym5o41ry"
 @dataclass
 class PostDTO:
     """"Encapsulate Mattermost Posts."""
+    id: str
     message: str
 
 
@@ -38,7 +41,8 @@ class Mattermost:
     def retrieve_all_messages(self):
         """Retrieve all messages from mattermost, unfiltered for papers."""
         posts = self.mattermost.posts.get_posts_for_channel(CHANNEL)
-        return [PostDTO(m['message']) for m in posts['posts'].values()]
+        return [PostDTO(m['id'], m['message'])
+                for m in posts['posts'].values()]
 
     def filter_incoming(self, posts):
         """Filter messages from mattermost to only papers."""
@@ -67,10 +71,12 @@ class Papersurfer:
         div = urwid.Divider(u'-')
 
         self.mtm = Mattermost(username, password)
-        papers = [msg.message for msg in self.mtm.retrieve()]
+        papers = self.mtm.retrieve()
         body = []
         for paper in papers:
-            button = urwid.Button(paper)
+            button = urwid.Button(paper.message)
+            urwid.connect_signal(button, 'click',
+                                 partial(self.handle_paper, paper))
             body.append(urwid.AttrMap(button, None, focus_map='reversed'))
 
         self.listcontent = urwid.SimpleFocusListWalker(body)
@@ -97,6 +103,13 @@ class Papersurfer:
         """Handle exitbutton click and exit."""
         raise urwid.ExitMainLoop()
 
+    def handle_paper(self, post, _):
+        self.open_post(post)
+
+    def open_post(self, post):
+        link = f"https://mattermost.cen.uni-hamburg.de/ifg/pl/{post.id}"
+        subprocess.call(["xdg-open", link])
+
 
 def parse_args():
     """Parse command line arguments and config file."""