Code Monkey home page Code Monkey logo

bespoke-themes's Introduction

NOTE: I am no longer actively developing this theme, though its design is now part of Lambda-themes.

Bespoke-themes is a set of custom, medium contrast, light and dark themes for Emacs (intended for GUI, though basic support in terminal has been added). There is also a related, and optional, custom modeline. This started as a fork of Nicolas Rougier’s work on elegant-emacs and nano-emacs, but has evolved with some ideas and colors borrowed from material colors, solarized and nord, as well as color design aided by coolers.co and the classic Werner’s Nomenclature.

The theme is notably less conservative/minimal than nano- or elegant-emacs, in the sense that it has a broader color palette and sets fewer configuration conditions on fonts and ui elements, but bespoke-themes otherwise shares many of its basic themeing ideas with the good work done by Rougier (see also his work on on the design of text editors).

The theme sets six core colors, plus five highlight/accent colors, and colors for foreground, background, modeline, and highlight. The light and dark variants aim to be as consistent as possible in their use of colors, and to set a decent compromise between aesthetics and readability:

Faces are fairly comprehensive, including (optional) evil cursor colors. I’m trying to add faces on a regular basis. If there is a face you’d like to see added please open an issue.

NOTE: It is still early days for this theme, so there may be significant and/or breaking changes made from one commit to the next. I also may continue to tweak colors slightly to find the best balance between aesthetics and readability. Suggestions and pull requests are welcome!

Breaking Changes:

I’ll try and log all breaking changes, including renaming functions and variables here:

  • 10/19: Moved modeline to its own repo
  • 6/13: Normalized all modeline variable names from bespoke...modeline to bespoke...mode-line for consistency (commit: e119c0a)
  • 6/12: Renamed bespoke-set-mode-line-height to bespoke-set-mode-line-size (commit: a46b7b5)

Options

  • You can set italics for keywords or comments (or both).
  • You can set variable-pitch for headlines using (bespoke-set-variable-pitch).
  • There is a toggle function for toggling between light and dark theme variants: (bespoke/toggle-theme). You can also call each theme variant directly with (bespoke/light-theme) or (bespoke/dark-theme).
  • All options are available via customize-group, and can also be found in the bespoke-themes.el file.

Settings

Here’s one possible way of setting up the theme. Note that since this theme is currently not on Melpa the use-package setup below utilizes straight to install packages, but you can of course install it from this repo however you wish.

(use-package bespoke-themes
  :straight (:host github :repo "mclear-tools/bespoke-themes" :branch "main")
  :config
  ;; Set evil cursor colors
  (setq bespoke-set-evil-cursors t)
  ;; Set use of italics
  (setq bespoke-set-italic-comments t
        bespoke-set-italic-keywords t)
  ;; Set variable pitch
  (setq bespoke-set-variable-pitch t)
  ;; Set initial theme variant
  (setq bespoke-set-theme 'dark)
  ;; Load theme
  (load-theme 'bespoke t))

To get windows to divide in a more attractive manner use the following setting:

;; Vertical window divider
(use-package frame
  :straight (:type built-in)
  :custom
  (window-divider-default-right-width 12)
  (window-divider-default-bottom-width 1)
  (window-divider-default-places 'right-only)
  (window-divider-mode t))
;; Make sure new frames use window-divider
(add-hook 'before-make-frame-hook 'window-divider-mode)

For the padding in frame used in the screenshots try the following settings:

;; Make a clean & minimalist frame
(use-package frame
  :straight (:type built-in)
  :config
  (setq-default default-frame-alist
                (append (list
                '(font . "SF Mono:style=medium:size=15") ;; NOTE: substitute whatever font you prefer here
                '(internal-border-width . 20)
                '(left-fringe    . 0)
                '(right-fringe   . 0)
                '(tool-bar-lines . 0)
                '(menu-bar-lines . 0)
                '(vertical-scroll-bars . nil))))
  (setq-default window-resize-pixelwise t)
  (setq-default frame-resize-pixelwise t)

To get a splash screen see Rougier’s splash.el. You can see my customization of it here.

For dimming non-active windows try dimmer.el

;; Dim inactive windows
(use-package dimmer
  :straight (:host github :repo "gonewest818/dimmer.el")
  :hook (after-init . dimmer-mode)
  :config
  (setq dimmer-fraction 0.5)
  (setq dimmer-adjustment-mode :foreground)
  (setq dimmer-use-colorspace :rgb)
  (setq dimmer-watch-frame-focus-events nil)
  (dimmer-configure-which-key)
  (dimmer-configure-magit)
  (dimmer-configure-posframe))

Screenshots:

Note that these all use bespoke-modeline and settings from my dotemacs.

Splash

Colors

Code

Magit

Agenda

Org

Dired

bespoke-themes's People

Contributors

akirak avatar autrimpo avatar florhizome avatar mclearc avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

bespoke-themes's Issues

My theme with your custom mode-line?

Hey guys, is there a way to use the bespoke modeline with my config? I do like the style, its very minimal and cool -> good job on the theme.

bug: "cl is deprecated"

I already posted this under your reddit thread.
I got a little bit confused which is why held up reporting, since I introduced a fix myself but still got other problems.
The first thing that actually happens when I load bespoke-themes with the declaration in the manual is this

Warning (comp): bespoke-themes.el:67:11: Warning: Package cl is deprecated Disable showing Disable logging
Warning (comp): /home/flo/.emacs.d/straight/build/bespoke-themes/bespoke-themes.el: Error: Symbol's value as variable is void for 
Warning (comp): bespoke-light-theme.el:43:36: Warning: Package cl is deprecated 
Warning (comp): /home/flo/.emacs.d/straight/build/bespoke-themes/bespoke-light-theme.el: Error: Symbol's value as variable is void for 
Warning (comp): bespoke-dark-theme.el:43:36: Warning: Package cl is deprecated 
Warning (comp): /home/flo/.emacs.d/straight/build/bespoke-themes/bespoke-dark-theme.el: Error: Symbol's value as variable is void for 

Afterwards any input will just repeat Symbol's value as variable is void for .
I don't know if this is anyhow related with issue #4, but just adding (eval-when-compile (require 'cl-lib)) at the top of bespoke-themes.el will resolve the problem.

isearch face hard to read.

Currently, isearch face only sets the foreground to #bc85cf. I find this hard to spot visually, especially because that color is already used for font-lock-string-face. I suggest adding a background.

Error (use-package): bespoke-themes/:config: Wrong type argument: stringp, bespoke-faded

Cannot load manually with use-package

(use-package bespoke-themes
    :load-path "~/.emacs.d/themes/bespoke-themes"
    :init (add-to-list 'custom-theme-load-path "~/.emacs.d/themes/bespoke-themes")
    :config
    (setq bespoke-set-mode-line 'header)
    ;; Set mode line height
    (setq bespoke-set-mode-line-height 3)
    ;; Set evil cursor colors
    (setq bespoke-set-evil-cursors t)
    ;; Use mode line visual bell
    (setq bespoke-set-visual-bell t)
    ;; Set use of italics
    (setq bespoke-set-italic-comments t
          bespoke-set-italic-keywords t)
    ;; Set variable pitch
    (setq bespoke-set-variable-pitch t)
    ;; Set initial theme variant
    (setq bespoke-set-theme 'light)
    ;; Load theme
    (load-theme 'bespoke t))

It complains

Error (use-package): bespoke-themes/:config: Wrong type argument: stringp, bespoke-faded Disable showing Disable logging

Highlighted selection is barely visible in helm

Hi there, thanks for the great theme. Whenever I use helm, the highlighted selection is clear gray hence barely visible in 'light. Any idea how to change that ? The blue color that is used for the highlighted in smex would be fine.

Also, how can we add a gray background to org-block equation ? Sorry if those are basic question, I still new to theming in emacs.

Saving bandwidth by compressing screenshots or using SVG screenshots

Hello, I tried to fix some issues in the code while I was trying out this theme.

This repository is relatively large (~ several mega bytes) because of screenshots in the repository. I'd recommend compressing the images using optipng or taking SVG screenshots instead.

By compressing the entire screenshots directory using optipng (-o5), you can reduce the size from 5.4M to 3.3M:

optipng -o5 dark-agenda.png

It is also possible to take SVG screenshots using x-export-frames function (see this reddit thread).

Even if you replace the images with a compressed version, the older version will still remain in the history, so it won't save bandwidth of normal clones (and actually increases the entire repository size). However, shallow clones (--depth=1) and partial clones (--filter=blob:none) will take advantage of the change, which will be important once you publish these themes to MELPA or somewhere. I hope you will consider it.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.