;;; my-ui.el --- configure UI elements ;;; Commentary: ;;; Code: (eval-and-compile (require 'use-package)) (use-package scroll-bar :config (scroll-bar-mode -1)) (use-package tool-bar :config (tool-bar-mode -1)) (use-package menu-bar :config (menu-bar-mode -1)) (use-package diminish :ensure t) (use-package frame :config (blink-cursor-mode -1) (setq frame-title-format '("%b@" (:eval (or (file-remote-p default-directory 'host) system-name)))) (when (memq window-system '(mac ns)) (add-to-list 'default-frame-alist '(font . "Source Code Pro-15")) (add-to-list 'default-frame-alist '(fullscreen . maximized)) (add-to-list 'default-frame-alist '(ns-appearance . nil)) (add-to-list 'default-frame-alist '(ns-transparent-titlebar . nil)) (when (boundp 'ns-use-native-fullscreen) (setq ns-use-native-fullscreen nil)) (when (boundp 'mac-allow-anti-aliasing) (setq mac-allow-anti-aliasing t))) (when (memq window-system '(x pgtk)) ;; if using `set-frame-font`, when opening a new frame with ;; emacsclient, the font will not be used. Instead, use ;; `default-frame-alist` to have the same font with emacsclient. (add-to-list 'default-frame-alist '(font . "Source Code Pro-11")) ;; this is a fall back in the case we have Unicode characters. ;; For example, with this settings, the following source is ;; rendered correctly 😇 😀 and 🤢 (set-fontset-font t 'symbol "Noto Color Emoji" nil 'append))) (use-package modus-themes :ensure t :init ;; Load the theme files before enabling a theme (else you get an error). (modus-themes-load-themes) :config (modus-themes-load-operandi) :custom (modus-themes-syntax '(yellow-comments)) (modus-themes-links '(bold)) (modus-themes-markup '(bold intense background)) (modus-themes-org-blocks 'gray-background) (modus-themes-headings '((1 . (background 1)) (2 . (rainbow semibold 1)) (t . (bold)))) (modus-themes-completions '((matches . (extrabold intense)) (selection . (semibold intense)) (popup . (extrabold intense))))) (require 'time) (setq display-time-24hr-format t) (setq display-time-day-and-date t) (setq display-time-format "%a %e %b, %H:%M") (setq display-time-interval 60) (setq display-time-default-load-average nil) (setq zoneinfo-style-world-list '(("UTC" "UTC") ("America/Los_Angeles" "Berkeley") ("America/Denver" "Mountain Time") ("America/Chicago" "Central Time") ("America/New_York" "New York") ("Europe/London" "London") ("Europe/Paris" "Paris") ("Asia/Calcutta" "Bangalore") ("Asia/Tokyo" "Tokyo"))) ;; the following setup only works with emacs >=28 I think (when (boundp 'world-clock-list) (setq world-clock-list t)) (when (boundp 'world-clock-time-format) (setq world-clock-time-format "%R %z %A %d %B")) (when (boundp 'world-clock-timer-enable) (setq world-clock-timer-enable t)) (when (boundp 'world-clock-timer-second) (setq world-clock-timer-second 60)) ;; Disable help mouse-overs for mode-line as they provide little to no benefits (setq mode-line-default-help-echo nil show-help-function nil) (use-package uniquify :defer 5 :config ;; don't muck with special buffers (setq uniquify-ignore-buffers-re "^\\*") (setq uniquify-buffer-name-style 'forward) (setq uniquify-separator "/")) (setq display-buffer-alist `( ("\\*\\(.* # Help.*\\|Help\\|xref\\)\\*" ; See the hooks for `visual-line-mode' (display-buffer-reuse-mode-window display-buffer-in-side-window) (window-width . 0.35) (side . left) (slot . 0)) ("\\*\\(Flymake diagnostics\\|eldoc\\|Package-Lint\\).*" (display-buffer-in-side-window) (window-height . 0.16) (side . top) (slot . 0)) ("\\*\\(Backtrace\\|Warnings\\|Compile-Log\\|Flymake log\\)\\*" (display-buffer-in-side-window) (window-height . 0.16) (side . top) (slot . 2)) ("\\*\\(Wo\\)\?Man" (display-buffer-in-side-window) (window-width . 0.4) (side . left) (slot . 0)) ("\\*\\(wclock\\).*" (display-buffer-in-side-window) (window-width . 0.35) (side . left) (slot . 0)))) (add-hook 'help-mode-hook #'visual-line-mode) (provide 'my-ui) ;;; my-ui.el ends here