diff --git a/app/src/main/java/de/kuschku/quasseldroid/service/QuasselNotificationBackend.kt b/app/src/main/java/de/kuschku/quasseldroid/service/QuasselNotificationBackend.kt
index a05b91fb43ab4e720bde13a48fad731fb564ae7b..ad335f07e0b63ff5d0d533a7c211c1919a240178 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/service/QuasselNotificationBackend.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/service/QuasselNotificationBackend.kt
@@ -243,10 +243,13 @@ class QuasselNotificationBackend @Inject constructor(
                                             '\\')
                            .firstOrNull() ?: nickName.firstOrNull()
         val initial = rawInitial?.toUpperCase().toString()
-        val senderColor = if (it.flag.hasFlag(Message_Flag.Self))
-          selfColor
-        else
-          senderColors[senderColorIndex]
+        val senderColor = when (messageSettings.colorizeNicknames) {
+          MessageSettings.ColorizeNicknamesMode.ALL          -> senderColors[senderColorIndex]
+          MessageSettings.ColorizeNicknamesMode.ALL_BUT_MINE ->
+            if (it.flag.hasFlag(Message_Flag.Self)) selfColor
+            else senderColors[senderColorIndex]
+          MessageSettings.ColorizeNicknamesMode.NONE         -> selfColor
+        }
 
         val size = context.resources.getDimensionPixelSize(R.dimen.notification_avatar_width)
         val avatarList = AvatarHelper.avatar(messageSettings, it)
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/user/UserInfoFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/user/UserInfoFragment.kt
index 3c699be77915e783d2339fb7d6cca94fc4cb98a8..adeac03de97d29fc6439ad33bf6abf4c503f4bff 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/user/UserInfoFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/user/UserInfoFragment.kt
@@ -126,6 +126,10 @@ class UserInfoFragment : ServiceBoundFragment() {
       }
     }
 
+    val selfColor = requireContext().theme.styledAttributes(R.attr.colorForegroundSecondary) {
+      getColor(0, 0)
+    }
+
     val networkId = arguments?.getInt("networkId")
     val nickName = arguments?.getString("nick")
     combineLatest(viewModel.session, viewModel.networks).switchMap { (sessionOptional, networks) ->
@@ -147,7 +151,13 @@ class UserInfoFragment : ServiceBoundFragment() {
         val rawInitial = user.nick().trimStart(*IGNORED_CHARS).firstOrNull()
                          ?: user.nick().firstOrNull()
         val initial = rawInitial?.toUpperCase().toString()
-        val senderColor = senderColors[senderColorIndex]
+        val senderColor = when (messageSettings.colorizeNicknames) {
+          MessageSettings.ColorizeNicknamesMode.ALL          -> senderColors[senderColorIndex]
+          MessageSettings.ColorizeNicknamesMode.ALL_BUT_MINE ->
+            if (user.network().isMyNick(user.nick())) selfColor
+            else senderColors[senderColorIndex]
+          MessageSettings.ColorizeNicknamesMode.NONE         -> selfColor
+        }
 
         avatar.loadAvatars(
           AvatarHelper.avatar(messageSettings, user, maxOf(avatar.width, avatar.height)),
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/AutoCompleteHelper.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/AutoCompleteHelper.kt
index 602cd42d50bfd59564126f6a8ec7e8c71dab01d3..4d39776cbeebf7e28ace92c47427dc6075d60f06 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/AutoCompleteHelper.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/AutoCompleteHelper.kt
@@ -64,6 +64,10 @@ class AutoCompleteHelper(
     IntArray(length()) { getColor(it, 0) }
   }
 
+  private val selfColor = activity.theme.styledAttributes(R.attr.colorForegroundSecondary) {
+    getColor(0, 0)
+  }
+
   private val avatarSize = activity.resources.getDimensionPixelSize(R.dimen.avatar_size)
 
   init {
@@ -80,7 +84,13 @@ class AutoCompleteHelper(
           val rawInitial = nickName.trimStart(*IGNORED_CHARS).firstOrNull()
                            ?: nickName.firstOrNull()
           val initial = rawInitial?.toUpperCase().toString()
-          val senderColor = senderColors[senderColorIndex]
+          val senderColor = when (messageSettings.colorizeNicknames) {
+            MessageSettings.ColorizeNicknamesMode.ALL          -> senderColors[senderColorIndex]
+            MessageSettings.ColorizeNicknamesMode.ALL_BUT_MINE ->
+              if (it.self) selfColor
+              else senderColors[senderColorIndex]
+            MessageSettings.ColorizeNicknamesMode.NONE         -> selfColor
+          }
 
           fun formatNick(nick: CharSequence): CharSequence {
             val spannableString = SpannableString(nick)
@@ -177,6 +187,7 @@ class AutoCompleteHelper(
                   lowestMode,
                   user.realName(),
                   user.isAway(),
+                  user.network().isMyNick(user.nick()),
                   network.support("CASEMAPPING"),
                   AvatarHelper.avatar(messageSettings, user, avatarSize)
                 )
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/QuasselMessageRenderer.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/QuasselMessageRenderer.kt
index d27fb4107665d60f7938d301b2571a9d3aeb0ad7..095d4e4dbbe496e7f743329ba5640e69e4239cf7 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/QuasselMessageRenderer.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/QuasselMessageRenderer.kt
@@ -214,10 +214,13 @@ class QuasselMessageRenderer @Inject constructor(
         val rawInitial = nickName.trimStart('-', '_', '[', ']', '{', '}', '|', '`', '^', '.', '\\')
                            .firstOrNull() ?: nickName.firstOrNull()
         val initial = rawInitial?.toUpperCase().toString()
-        val senderColor = if (message.content.flag.hasFlag(Message_Flag.Self))
-          selfColor
-        else
-          senderColors[senderColorIndex]
+        val senderColor = when (messageSettings.colorizeNicknames) {
+          MessageSettings.ColorizeNicknamesMode.ALL          -> senderColors[senderColorIndex]
+          MessageSettings.ColorizeNicknamesMode.ALL_BUT_MINE ->
+            if (message.content.flag.hasFlag(Message_Flag.Self)) selfColor
+            else senderColors[senderColorIndex]
+          MessageSettings.ColorizeNicknamesMode.NONE         -> selfColor
+        }
 
         FormattedMessage(
           id = message.content.messageId,
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/nicks/NickListFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/nicks/NickListFragment.kt
index e7ef5a4e0c60094d3ad171232f7ad49f1990b2ea..56d702b5e4b052d1efe513ec868b460e20a20ed9 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/nicks/NickListFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/nicks/NickListFragment.kt
@@ -94,6 +94,10 @@ class NickListFragment : ServiceBoundFragment() {
       }
     }
 
+    val selfColor = requireContext().theme.styledAttributes(R.attr.colorForegroundSecondary) {
+      getColor(0, 0)
+    }
+
     val avatarSize = resources.getDimensionPixelSize(R.dimen.avatar_size)
     viewModel.nickData.toLiveData().observe(this, Observer {
       runInBackground {
@@ -113,7 +117,13 @@ class NickListFragment : ServiceBoundFragment() {
                                               '\\')
                              .firstOrNull() ?: nickName.firstOrNull()
           val initial = rawInitial?.toUpperCase().toString()
-          val senderColor = senderColors[senderColorIndex]
+          val senderColor = when (messageSettings.colorizeNicknames) {
+            MessageSettings.ColorizeNicknamesMode.ALL          -> senderColors[senderColorIndex]
+            MessageSettings.ColorizeNicknamesMode.ALL_BUT_MINE ->
+              if (it.self) selfColor
+              else senderColors[senderColorIndex]
+            MessageSettings.ColorizeNicknamesMode.NONE         -> selfColor
+          }
           fun formatNick(nick: CharSequence): CharSequence {
             val spannableString = SpannableString(nick)
             spannableString.setSpan(
diff --git a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/EditorViewModel.kt b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/EditorViewModel.kt
index 63f4296d049e543be934152163fbe80865663fe6..b48d462b704d21f7b2f6b49000d0ce93f372d66e 100644
--- a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/EditorViewModel.kt
+++ b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/EditorViewModel.kt
@@ -104,6 +104,7 @@ class EditorViewModel : ViewModel() {
                         lowestMode,
                         user.realName(),
                         user.isAway(),
+                        user.network().isMyNick(user.nick()),
                         network.support("CASEMAPPING")
                       )
                     }
diff --git a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/QuasselViewModel.kt b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/QuasselViewModel.kt
index 2a2b52f5db451f8745ba99058b988c4afb51699a..7d4af7d05b7daec57f1042ecaa47df0003fd53e7 100644
--- a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/QuasselViewModel.kt
+++ b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/QuasselViewModel.kt
@@ -220,6 +220,7 @@ class QuasselViewModel : ViewModel() {
                       user.realName(),
                       user.hostMask(),
                       user.isAway(),
+                      user.network().isMyNick(user.nick()),
                       network.support("CASEMAPPING")
                     )
                   }
diff --git a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/AutoCompleteItem.kt b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/AutoCompleteItem.kt
index afa1e13f0d35ee1e4fe879ba858fc4894bcb0c54..88f2f5424b01ace72eab92debf11ad1b2cb3b242 100644
--- a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/AutoCompleteItem.kt
+++ b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/AutoCompleteItem.kt
@@ -40,6 +40,7 @@ sealed class AutoCompleteItem(open val name: String) : Comparable<AutoCompleteIt
     val lowestMode: Int,
     val realname: CharSequence,
     val away: Boolean,
+    val self: Boolean,
     val networkCasemapping: String?,
     val avatarUrls: List<Avatar> = emptyList(),
     val fallbackDrawable: Drawable? = null,
diff --git a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/IrcUserItem.kt b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/IrcUserItem.kt
index 121ca2bed059d5e4924872188ae6407beb28ee75..ec8bfd49c0cf21bd224ec7ded5209c58557cb257 100644
--- a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/IrcUserItem.kt
+++ b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/IrcUserItem.kt
@@ -28,6 +28,7 @@ data class IrcUserItem(
   val realname: CharSequence,
   val hostmask: String,
   val away: Boolean,
+  val self: Boolean,
   val networkCasemapping: String?,
   val avatarUrls: List<Avatar> = emptyList(),
   val fallbackDrawable: Drawable? = null,