;;; ModelineCubes --- The modeline related cubes for FG42 -*- lexical-binding: t; -*- ;; ;; Copyright (c) 2010-2022 Sameer Rahmani & Contributors ;; ;; Author: Sameer Rahmani ;; URL: https://devheroes.codes/FG42/FG42 ;; Version: 3.0.0 ;; ;; This program is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation, either version 3 of the License, or ;; (at your option) any later version. ;; ;; This program is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; ;; You should have received a copy of the GNU General Public License ;; along with this program. If not, see . ;; ;;; Commentary: ;;; Code: (require 'fpkg) (require 'fg42/cube) (require 'cubes/icons) (autoload-cube 'fg42/statusbar-default "modeline/statusbar-default.el" "The default StatusBar modeline.") (->cube smart-mode-line "Smart mode line is a pretty simple yet fantastic alternative to Emacs modeline." :straight (smart-mode-line :source melpa) :defer nil :init (progn (setq sml/theme 'respectful) (setq sml/no-confirm-load-theme t) (sml/setup))) ;; TODO: Break this into two cubes (defcube fg42/modeline-cube "Modeline cube" :title "Mini modeline" :flag mini-mode-line :group modeline :flag-default t (defun fg42/mini-modeline-setter (def) (if (null def) (let ((def-list (funcall def))) (setq-default mini-modeline-l-format (plist-get def-list :long)) (setq-default mini-modeline-r-format (plist-get def-list :brief))) (setq-default mini-modeline-r-format '("%e" mode-line-front-space mode-line-mule-info mode-line-client mode-line-modified mode-line-remote mode-line-frame-identification mode-line-buffer-identification mode-line-position evil-mode-line-tag (:eval (string-trim (format-mode-line mode-line-modes))) mode-line-misc-info )))) (fpkg/use mini-modeline :straight (mini-modeline :repo "kiennq/emacs-mini-modeline" :host github :type git) :after smart-mode-line :init (progn (setq mini-modeline-enhance-visual nil) (setq fg42/modeline-setter #'fg42/mini-modeline-setter)) :defer nil :config (add-hook 'fg42/after-init-hook #'mini-modeline-mode) (add-hook 'fg42/after-initializing-theme-hook (lambda () (custom-set-faces '(mini-modeline-mode-line ((((background light)) :background "#aa0000" :height 0.1 :box nil) (t :background "#bd93f9" :height 0.1 :box nil)))))))) (defcube fg42/statusbar-cube "Status bar replaces the default mode line aned merges with the mini buffer to provide a minimal interface for displaying valuable information." :title "Status bar cube" :flag status-bar :group modeline :flag-default nil (fg42/all-the-icons-cube) (defun fg42/statusbar-setter (def) (unless (null def) (setq-default fg42/statusbar-components (plist-get (funcall def) :brief)) (setq-default fg42/statusbar-components (plist-get (funcall #'fg42/statusbar-default) :brief)))) (setq fg42/modeline-setter #'fg42/statusbar-setter) (add-hook 'fg42/after-init-hook (lambda () (require 'fg42/statusbar) (fg42/statusbar-mode t)))) (provide 'cubes/modeline) ;;; modeline.el ends here