diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/core/ClientAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/core/ClientAdapter.kt
index f04876edc28516075b85c29924386a6eb0fcf605..917a6cc1389f50754768f30c3bcbae1290b3a31f 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/core/ClientAdapter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/core/ClientAdapter.kt
@@ -20,6 +20,8 @@ import de.kuschku.quasseldroid.util.helper.getVectorDrawableCompat
 import de.kuschku.quasseldroid.util.helper.styledAttributes
 import de.kuschku.quasseldroid.util.helper.tint
 import de.kuschku.quasseldroid.util.helper.visibleIf
+import de.kuschku.quasseldroid.util.ui.BetterLinkMovementMethod
+import de.kuschku.quasseldroid.util.ui.LinkLongClickMenuHelper
 import org.threeten.bp.ZoneId
 import org.threeten.bp.format.DateTimeFormatter
 import org.threeten.bp.format.FormatStyle
@@ -33,6 +35,12 @@ class ClientAdapter : ListAdapter<CoreInfo.ConnectedClientData, ClientAdapter.Cl
                                     newItem: CoreInfo.ConnectedClientData) = oldItem == newItem
   }
 ) {
+  private val movementMethod = BetterLinkMovementMethod.newInstance()
+
+  init {
+    movementMethod.setOnLinkLongClickListener(LinkLongClickMenuHelper())
+  }
+
   private var disconnectListener: ((Int) -> Unit)? = null
   fun setDisconnectListener(listener: ((Int) -> Unit)?) {
     this.disconnectListener = listener
@@ -45,7 +53,8 @@ class ClientAdapter : ListAdapter<CoreInfo.ConnectedClientData, ClientAdapter.Cl
   override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ClientViewHolder(
     LayoutInflater.from(parent.context).inflate(R.layout.widget_client, parent, false),
     dateTimeFormatter,
-    ::disconnect
+    ::disconnect,
+    movementMethod
   )
 
   private val dateTimeFormatter = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM)
@@ -56,7 +65,8 @@ class ClientAdapter : ListAdapter<CoreInfo.ConnectedClientData, ClientAdapter.Cl
   class ClientViewHolder(
     itemView: View,
     private val dateTimeFormatter: DateTimeFormatter,
-    private val disconnectListener: (Int) -> Unit
+    private val disconnectListener: (Int) -> Unit,
+    movementMethod: BetterLinkMovementMethod
   ) : RecyclerView.ViewHolder(itemView) {
 
     @BindView(R.id.ip)
@@ -84,6 +94,7 @@ class ClientAdapter : ListAdapter<CoreInfo.ConnectedClientData, ClientAdapter.Cl
 
     init {
       ButterKnife.bind(this, itemView)
+      version.movementMethod = movementMethod
       disconnect.setOnClickListener {
         id?.let(disconnectListener::invoke)
       }
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/core/CoreInfoFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/core/CoreInfoFragment.kt
index 63bd080f668c965605c7a79ba88f8a5bdac6ae4e..0f1e01b0b321573034dadcd29d5af8b8682301c8 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/core/CoreInfoFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/core/CoreInfoFragment.kt
@@ -41,6 +41,8 @@ import de.kuschku.quasseldroid.util.missingfeatures.MissingFeature
 import de.kuschku.quasseldroid.util.missingfeatures.MissingFeaturesDialog
 import de.kuschku.quasseldroid.util.missingfeatures.RequiredFeatures
 import de.kuschku.quasseldroid.util.service.ServiceBoundFragment
+import de.kuschku.quasseldroid.util.ui.BetterLinkMovementMethod
+import de.kuschku.quasseldroid.util.ui.LinkLongClickMenuHelper
 import org.threeten.bp.ZoneId
 import org.threeten.bp.format.DateTimeFormatter
 import org.threeten.bp.format.FormatStyle
@@ -76,6 +78,12 @@ class CoreInfoFragment : ServiceBoundFragment() {
 
   private val dateTimeFormatter = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM)
 
+  private val movementMethod = BetterLinkMovementMethod.newInstance()
+
+  init {
+    movementMethod.setOnLinkLongClickListener(LinkLongClickMenuHelper())
+  }
+
   override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
                             savedInstanceState: Bundle?): View? {
     val view = inflater.inflate(R.layout.fragment_info_core, container, false)
@@ -106,6 +114,8 @@ class CoreInfoFragment : ServiceBoundFragment() {
         .readOnly(true)
         .show()
     }
+    version.movementMethod = movementMethod
+    versionDate.movementMethod = movementMethod
 
     val secure = requireContext().getVectorDrawableCompat(R.drawable.ic_lock)?.mutate()
     val partiallySecure = requireContext().getVectorDrawableCompat(R.drawable.ic_lock)?.mutate()