diff -urp privatemsg/privatemsg.module privatemsg_new/privatemsg.module
--- privatemsg/privatemsg.module	2008-08-24 21:07:57.889525900 +0100
+++ privatemsg_new/privatemsg.module	2008-08-24 21:35:31.138925900 +0100
@@ -30,6 +30,24 @@ function privatemsg_menu() {
     'access arguments' => array('read privatemsg'),
     'type' => MENU_NORMAL_ITEM,
   );
+  $items['user/%/messages'] = array(
+    'title' => t('Messages'),
+    'page callback' => 'privatemsg_list',
+    'access arguments' => array('read privatemsg'),
+    'type' => MENU_LOCAL_TASK,
+  );
+  $items['user/%/messages/inbox'] = array(
+    'title' => t('Inbox'),
+    'page callback' => 'privatemsg_list',
+    'access arguments' => array('read privatemsg'),
+    'type' => MENU_DEFAULT_LOCAL_TASK,
+  );
+  $items['user/%/messages/sent'] = array(
+    'title' => t('Sent messages'),
+    'page callback' => 'privatemsg_list',
+    'access arguments' => array('read privatemsg'),
+    'type' => MENU_LOCAL_TASK,
+  );
   //list all messages this user received
   $items['messages/inbox'] = array(
     'title' => t('Inbox'),
@@ -213,6 +231,14 @@ function privatemsg_list($uid = NULL) {
   global $user;
   disallow_anon_access();
   
+  if (arg(0) == 'user' && is_numeric(arg(1)) ) {
+    $uid = arg(1);
+    $switcharg = 3;
+  }
+  else {
+    $switcharg = 1;
+  }
+  
   if (!$uid) {    
     // default behavior: we are trying to view our own private message if no uid is passed
     $account = $user;
@@ -235,7 +261,7 @@ function privatemsg_list($uid = NULL) {
    */
   
 //  drupal_set_message('<pre>'. print_r($uid, 1) .'</pre>');
-  switch (arg(1)) {
+  switch (arg($switcharg)) {
    case 'sent':
      $query = _privatemsg_assemble_query('privatemsg_list_sent', $account);
      break;
