summaryrefslogtreecommitdiff
path: root/.config/emacs/modules/bd--tabs.el
blob: 320acae7391a96e66b40c412de195218d550b74f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
;;; -*- lexical-binding: t; -*-
;;; Commentary:
;;; Code:


(use-package tab-bar
  :demand t
  :config
  (defun bd/get-mode-line-modes (buffer)
    (with-current-buffer buffer
      (format-mode-line (remove '(t erc-modified-channels-object) mode-line-modes))))
  (defun bd/tab-bar-name-function ()
    (concat (tab-bar-tab-name-current)
            " "
            (bd/get-mode-line-modes (window-buffer (minibuffer-selected-window)))))
  (defun bd/toggle-tab-bar ()
    (interactive)
    (setopt tab-bar-show (not tab-bar-show))
    ;; required to wait for the frame to update
    (sit-for 0)
    ;; dumb outer-gaps bug
    (exwm-outer-gaps-apply))

  (tab-bar-select-tab 1)
  (tab-bar-mode)
  (tab-bar-history-mode)
  (setopt tab-bar-tab-name-function #'bd/tab-bar-name-function
          tab-bar-show nil

          tab-bar-select-restore-windows nil

          ;; remove useless gui elements
          tab-bar-format
          '(tab-bar-format-tabs
            tab-bar-format-align-right)
          tab-bar-close-button-show nil
          tab-bar-auto-width-max nil

          ;; add useless text elements
          tab-bar-tab-hints nil))


(provide 'bd--tabs)
;;; bd--tabs.el ends here