diff --git a/lua/mappings.lua b/lua/mappings.lua
index b977627..5d0e7ce 100644
--- a/lua/mappings.lua
+++ b/lua/mappings.lua
@@ -16,9 +16,11 @@ map('n', '<leader>kc', ':new<cr>', { desc = 'New buffer' })
 map('n', '<leader>ko', '<cmd>%bd|e#<cr>', { desc = 'Close all buffers but the current one' }) -- https://stackoverflow.com/a/42071865/516188
 
 -- tab navigation
-map('n', '<leader>tp', ':tabprevious<cr>', { desc = 'Prev tab' })
-map('n', '<leader>tn', ':tabnext<cr>', { desc = 'Next tab' })
+map('n', '<leader>tn', ':tabnew<cr>', { desc = 'New tab' })
+map('n', '<leader>th', ':tabprevious<cr>', { desc = 'Prev tab' })
+map('n', '<leader>tl', ':tabnext<cr>', { desc = 'Next tab' })
 map('n', '<leader>td', ':tabclose<cr>', { desc = 'Close tab' })
+map('n', '<leader>tc', ':tcd', { desc = 'Change working directory for tab' })
 
 -- plugin management
 map('n', '<leader>pc', ':Lazy check<cr>', { desc = 'Check plugins' })
diff --git a/lua/plugins/dracula.lua b/lua/plugins/dracula.lua
index 4f9a442..37d9ea4 100644
--- a/lua/plugins/dracula.lua
+++ b/lua/plugins/dracula.lua
@@ -11,6 +11,7 @@ return {
     overrides = {
       CursorLine = { bg = '#1e1e2e' },
       LineNr = { fg = '#45475a' },
+      TabLineSel = { bg = '#181825' },
     },
   },
 }
diff --git a/lua/plugins/tabby.lua b/lua/plugins/tabby.lua
new file mode 100644
index 0000000..671f612
--- /dev/null
+++ b/lua/plugins/tabby.lua
@@ -0,0 +1,29 @@
+local theme = {
+  fill = 'TabLineFill',
+  current_tab = 'TabLineSel',
+  tab = 'TabLine',
+}
+
+return {
+  'nanozuki/tabby.nvim',
+  config = function()
+    require('tabby').setup({
+      line = function(line)
+        return {
+          line.tabs().foreach(function(tab)
+            local hl = tab.is_current() and theme.current_tab or theme.tab
+            return {
+              ' ',
+              tab.name(),
+              ' ',
+              hl = hl,
+            }
+          end),
+          line.spacer(),
+          hl = theme.fill,
+        }
+      end,
+    })
+  end,
+  lazy = false,
+}