unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#51309: 28.0.60; [Feature Request] Allow to customize tab-bar button images
@ 2021-10-20 22:03 Carlos Pita
  2021-10-21 16:46 ` Juri Linkov
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: Carlos Pita @ 2021-10-20 22:03 UTC (permalink / raw)
  To: 51309

[-- Attachment #1: Type: text/plain, Size: 23575 bytes --]

Hi all,

as you can see in the attached images, the xpm files provided for
tab-bar buttons don't look very well in many cases:

1. They are low resolution so they are scaled x 2 in HiDPI screens
(when there is support for this, I guess for other users they look
tiny instead).
2. The light background is particularly ugly (at least IMO) with dark
themes and, in general, I believe the ability to blend the button
background with the default background would be appreciated by a
number of users.
3. Vertical alignment looks slightly off center.

In tab-bar.el I see code like this:

    (add-text-properties 0 (length tab-bar-close-button)
                         `(display (image :type xpm
                                          :file "tabs/close.xpm"
                                          :margin ,tab-bar-button-margin
                                          :ascent center))
                         tab-bar-close-button))

Maybe "tabs/close.xpm" is already intended to be an abstract
specification of an xpm that is then loaded as described in [1]:

> If file is not an absolute file name, it is expanded relative to the images subdirectory of data-directory

so that each theme has to locally, temporally(, whatever) override
data-directory somehow, but I believe it's not like that, I believe
icons are simply hardcoded.

Given the shortcomings listed above, why not provide some customizable
variables to change the icons?

Best regards,
Carlos

[1] https://www.gnu.org/software/emacs/manual/html_node/elisp/Image-Descriptors.html

---

In GNU Emacs 28.0.60 (build 3, x86_64-apple-darwin20.6.0, NS
appkit-2022.60 Version 11.6 (Build 20G165))
 of 2021-10-18 built on Carloss-MacBook-Pro.local
Repository revision: f5b8f626e3d7233a935e67ffc5ffee0de9069ae5
Repository branch: emacs-28
Windowing system distributor 'Apple', version 10.3.2022
System Description:  macOS 11.6

Configured using:
 'configure --without-native-compilation'

Configured features:
ACL DBUS GLIB GMP GNUTLS JPEG JSON LCMS2 LIBXML2 MODULES NOTIFY KQUEUE
NS PDUMPER PNG RSVG THREADS TIFF TOOLKIT_SCROLL_BARS XIM ZLIB

Important settings:
  value of $LANG: en_US.UTF-8
  locale-coding-system: utf-8-unix

Major mode: ELisp/l

Minor modes in effect:
  shell-dirtrack-mode: t
  recentf-mode: t
  outline-minor-mode: t
  display-line-numbers-mode: t
  company-box-mode: t
  yas-global-mode: t
  yas-minor-mode: t
  ivy-mode: t
  global-company-mode: t
  company-mode: t
  which-key-mode: t
  override-global-mode: t
  electric-pair-mode: t
  minions-mode: t
  doom-modeline-mode: t
  ns-auto-titlebar-mode: t
  straight-use-package-mode: t
  straight-package-neutering-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tab-bar-history-mode: t
  tab-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  column-number-mode: t
  line-number-mode: t
  transient-mark-mode: t

Load-path shadows:
/Users/carlos/.emacs.d/straight/build/transient/transient hides
/Applications/Emacs.app/Contents/Resources/lisp/transient
/Users/carlos/.emacs.d/straight/build/org/ob-exp hides
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-exp
/Users/carlos/.emacs.d/straight/build/org/ob-emacs-lisp hides
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-emacs-lisp
/Users/carlos/.emacs.d/straight/build/org/oc hides
/Applications/Emacs.app/Contents/Resources/lisp/org/oc
/Users/carlos/.emacs.d/straight/build/org/ob-css hides
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-css
/Users/carlos/.emacs.d/straight/build/org/ob-lob hides
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-lob
/Users/carlos/.emacs.d/straight/build/org/ol-irc hides
/Applications/Emacs.app/Contents/Resources/lisp/org/ol-irc
/Users/carlos/.emacs.d/straight/build/org/ob-forth hides
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-forth
/Users/carlos/.emacs.d/straight/build/org/org-macs hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-macs
/Users/carlos/.emacs.d/straight/build/org/ob hides
/Applications/Emacs.app/Contents/Resources/lisp/org/ob
/Users/carlos/.emacs.d/straight/build/org/org-version hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-version
/Users/carlos/.emacs.d/straight/build/org/ob-scheme hides
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-scheme
/Users/carlos/.emacs.d/straight/build/org/ox hides
/Applications/Emacs.app/Contents/Resources/lisp/org/ox
/Users/carlos/.emacs.d/straight/build/org/ob-C hides
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-C
/Users/carlos/.emacs.d/straight/build/org/org-capture hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-capture
/Users/carlos/.emacs.d/straight/build/org/ob-ref hides
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-ref
/Users/carlos/.emacs.d/straight/build/org/ob-clojure hides
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-clojure
/Users/carlos/.emacs.d/straight/build/org/org-mouse hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-mouse
/Users/carlos/.emacs.d/straight/build/org/org-ctags hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-ctags
/Users/carlos/.emacs.d/straight/build/org/org-entities hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-entities
/Users/carlos/.emacs.d/straight/build/org/org-archive hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-archive
/Users/carlos/.emacs.d/straight/build/org/ob-screen hides
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-screen
/Users/carlos/.emacs.d/straight/build/org/ol-bibtex hides
/Applications/Emacs.app/Contents/Resources/lisp/org/ol-bibtex
/Users/carlos/.emacs.d/straight/build/org/ob-haskell hides
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-haskell
/Users/carlos/.emacs.d/straight/build/org/org-table hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-table
/Users/carlos/.emacs.d/straight/build/org/ol-eww hides
/Applications/Emacs.app/Contents/Resources/lisp/org/ol-eww
/Users/carlos/.emacs.d/straight/build/org/ol-man hides
/Applications/Emacs.app/Contents/Resources/lisp/org/ol-man
/Users/carlos/.emacs.d/straight/build/org/ox-org hides
/Applications/Emacs.app/Contents/Resources/lisp/org/ox-org
/Users/carlos/.emacs.d/straight/build/org/org-num hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-num
/Users/carlos/.emacs.d/straight/build/org/org-plot hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-plot
/Users/carlos/.emacs.d/straight/build/org/ol-rmail hides
/Applications/Emacs.app/Contents/Resources/lisp/org/ol-rmail
/Users/carlos/.emacs.d/straight/build/org/ob-awk hides
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-awk
/Users/carlos/.emacs.d/straight/build/org/ob-groovy hides
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-groovy
/Users/carlos/.emacs.d/straight/build/org/ob-octave hides
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-octave
/Users/carlos/.emacs.d/straight/build/org/org-faces hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-faces
/Users/carlos/.emacs.d/straight/build/org/oc-biblatex hides
/Applications/Emacs.app/Contents/Resources/lisp/org/oc-biblatex
/Users/carlos/.emacs.d/straight/build/org/org-colview hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-colview
/Users/carlos/.emacs.d/straight/build/org/ob-R hides
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-R
/Users/carlos/.emacs.d/straight/build/org/org-refile hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-refile
/Users/carlos/.emacs.d/straight/build/org/org-timer hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-timer
/Users/carlos/.emacs.d/straight/build/org/org-mobile hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-mobile
/Users/carlos/.emacs.d/straight/build/org/ob-fortran hides
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-fortran
/Users/carlos/.emacs.d/straight/build/org/ob-shell hides
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-shell
/Users/carlos/.emacs.d/straight/build/org/ob-perl hides
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-perl
/Users/carlos/.emacs.d/straight/build/org/ob-sqlite hides
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-sqlite
/Users/carlos/.emacs.d/straight/build/org/oc-basic hides
/Applications/Emacs.app/Contents/Resources/lisp/org/oc-basic
/Users/carlos/.emacs.d/straight/build/org/ob-sed hides
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-sed
/Users/carlos/.emacs.d/straight/build/org/org-list hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-list
/Users/carlos/.emacs.d/straight/build/org/ob-ruby hides
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-ruby
/Users/carlos/.emacs.d/straight/build/org/ob-eval hides
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-eval
/Users/carlos/.emacs.d/straight/build/org/org-habit hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-habit
/Users/carlos/.emacs.d/straight/build/org/org-clock hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-clock
/Users/carlos/.emacs.d/straight/build/org/org-goto hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-goto
/Users/carlos/.emacs.d/straight/build/org/ox-html hides
/Applications/Emacs.app/Contents/Resources/lisp/org/ox-html
/Users/carlos/.emacs.d/straight/build/org/org-src hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-src
/Users/carlos/.emacs.d/straight/build/org/ob-lisp hides
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-lisp
/Users/carlos/.emacs.d/straight/build/org/ol-eshell hides
/Applications/Emacs.app/Contents/Resources/lisp/org/ol-eshell
/Users/carlos/.emacs.d/straight/build/org/ob-ditaa hides
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-ditaa
/Users/carlos/.emacs.d/straight/build/org/org-pcomplete hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-pcomplete
/Users/carlos/.emacs.d/straight/build/org/org-lint hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-lint
/Users/carlos/.emacs.d/straight/build/org/ox-latex hides
/Applications/Emacs.app/Contents/Resources/lisp/org/ox-latex
/Users/carlos/.emacs.d/straight/build/org/ob-sass hides
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-sass
/Users/carlos/.emacs.d/straight/build/org/ob-tangle hides
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-tangle
/Users/carlos/.emacs.d/straight/build/org/ob-calc hides
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-calc
/Users/carlos/.emacs.d/straight/build/org/ob-java hides
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-java
/Users/carlos/.emacs.d/straight/build/org/ox-icalendar hides
/Applications/Emacs.app/Contents/Resources/lisp/org/ox-icalendar
/Users/carlos/.emacs.d/straight/build/org/ol-mhe hides
/Applications/Emacs.app/Contents/Resources/lisp/org/ol-mhe
/Users/carlos/.emacs.d/straight/build/org/org-attach-git hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-attach-git
/Users/carlos/.emacs.d/straight/build/org/ox-md hides
/Applications/Emacs.app/Contents/Resources/lisp/org/ox-md
/Users/carlos/.emacs.d/straight/build/org/ox-beamer hides
/Applications/Emacs.app/Contents/Resources/lisp/org/ox-beamer
/Users/carlos/.emacs.d/straight/build/org/org-element hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-element
/Users/carlos/.emacs.d/straight/build/org/oc-natbib hides
/Applications/Emacs.app/Contents/Resources/lisp/org/oc-natbib
/Users/carlos/.emacs.d/straight/build/org/org-protocol hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-protocol
/Users/carlos/.emacs.d/straight/build/org/ob-gnuplot hides
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-gnuplot
/Users/carlos/.emacs.d/straight/build/org/org-tempo hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-tempo
/Users/carlos/.emacs.d/straight/build/org/ob-latex hides
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-latex
/Users/carlos/.emacs.d/straight/build/org/ol-w3m hides
/Applications/Emacs.app/Contents/Resources/lisp/org/ol-w3m
/Users/carlos/.emacs.d/straight/build/org/org-id hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-id
/Users/carlos/.emacs.d/straight/build/org/ox-man hides
/Applications/Emacs.app/Contents/Resources/lisp/org/ox-man
/Users/carlos/.emacs.d/straight/build/org/ol-doi hides
/Applications/Emacs.app/Contents/Resources/lisp/org/ol-doi
/Users/carlos/.emacs.d/straight/build/org/org-feed hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-feed
/Users/carlos/.emacs.d/straight/build/org/ob-julia hides
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-julia
/Users/carlos/.emacs.d/straight/build/org/ob-lua hides
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-lua
/Users/carlos/.emacs.d/straight/build/org/ob-table hides
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-table
/Users/carlos/.emacs.d/straight/build/org/ob-ocaml hides
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-ocaml
/Users/carlos/.emacs.d/straight/build/org/oc-csl hides
/Applications/Emacs.app/Contents/Resources/lisp/org/oc-csl
/Users/carlos/.emacs.d/straight/build/org/ol-gnus hides
/Applications/Emacs.app/Contents/Resources/lisp/org/ol-gnus
/Users/carlos/.emacs.d/straight/build/org/org-indent hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-indent
/Users/carlos/.emacs.d/straight/build/org/ob-lilypond hides
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-lilypond
/Users/carlos/.emacs.d/straight/build/org/ob-matlab hides
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-matlab
/Users/carlos/.emacs.d/straight/build/org/org-datetree hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-datetree
/Users/carlos/.emacs.d/straight/build/org/ol-docview hides
/Applications/Emacs.app/Contents/Resources/lisp/org/ol-docview
/Users/carlos/.emacs.d/straight/build/org/ob-python hides
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-python
/Users/carlos/.emacs.d/straight/build/org/ob-makefile hides
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-makefile
/Users/carlos/.emacs.d/straight/build/org/org-duration hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-duration
/Users/carlos/.emacs.d/straight/build/org/org-agenda hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-agenda
/Users/carlos/.emacs.d/straight/build/org/ob-dot hides
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-dot
/Users/carlos/.emacs.d/straight/build/org/ob-js hides
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-js
/Users/carlos/.emacs.d/straight/build/org/ox-publish hides
/Applications/Emacs.app/Contents/Resources/lisp/org/ox-publish
/Users/carlos/.emacs.d/straight/build/org/org-inlinetask hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-inlinetask
/Users/carlos/.emacs.d/straight/build/org/ob-org hides
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-org
/Users/carlos/.emacs.d/straight/build/org/org-keys hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-keys
/Users/carlos/.emacs.d/straight/build/org/ob-core hides
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-core
/Users/carlos/.emacs.d/straight/build/org/org-compat hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-compat
/Users/carlos/.emacs.d/straight/build/org/ol hides
/Applications/Emacs.app/Contents/Resources/lisp/org/ol
/Users/carlos/.emacs.d/straight/build/org/ox-odt hides
/Applications/Emacs.app/Contents/Resources/lisp/org/ox-odt
/Users/carlos/.emacs.d/straight/build/org/ol-info hides
/Applications/Emacs.app/Contents/Resources/lisp/org/ol-info
/Users/carlos/.emacs.d/straight/build/org/ob-plantuml hides
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-plantuml
/Users/carlos/.emacs.d/straight/build/org/ob-eshell hides
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-eshell
/Users/carlos/.emacs.d/straight/build/org/ox-ascii hides
/Applications/Emacs.app/Contents/Resources/lisp/org/ox-ascii
/Users/carlos/.emacs.d/straight/build/org/org-loaddefs hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-loaddefs
/Users/carlos/.emacs.d/straight/build/org/ox-koma-letter hides
/Applications/Emacs.app/Contents/Resources/lisp/org/ox-koma-letter
/Users/carlos/.emacs.d/straight/build/org/ob-maxima hides
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-maxima
/Users/carlos/.emacs.d/straight/build/org/org hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org
/Users/carlos/.emacs.d/straight/build/org/ol-bbdb hides
/Applications/Emacs.app/Contents/Resources/lisp/org/ol-bbdb
/Users/carlos/.emacs.d/straight/build/org/org-macro hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-macro
/Users/carlos/.emacs.d/straight/build/org/ob-sql hides
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-sql
/Users/carlos/.emacs.d/straight/build/org/org-attach hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-attach
/Users/carlos/.emacs.d/straight/build/org/ob-processing hides
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-processing
/Users/carlos/.emacs.d/straight/build/org/ox-texinfo hides
/Applications/Emacs.app/Contents/Resources/lisp/org/ox-texinfo
/Users/carlos/.emacs.d/straight/build/org/org-crypt hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-crypt
/Users/carlos/.emacs.d/straight/build/org/org-footnote hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-footnote
/Users/carlos/.emacs.d/straight/build/org/org-install hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-install
/Users/carlos/.emacs.d/straight/build/org/ob-comint hides
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-comint
/Users/carlos/.emacs.d/straight/build/let-alist/let-alist hides
/Applications/Emacs.app/Contents/Resources/lisp/emacs-lisp/let-alist

Features:
(shadow sort mail-extr emacsbug sendmail ffap tramp tramp-loaddefs
trampver tramp-integration files-x tramp-compat shell ls-lisp debug
backtrace doom-Iosvkem-theme shortdoc cus-start crm cl-print help-fns
radix-tree org-element org-persist org-id org-refile avl-tree ol-eww eww
url-queue mm-url ol-rmail ol-mhe ol-irc ol-info ol-gnus nnselect
gnus-search eieio-opt speedbar ezimage dframe gnus-art mm-uu mml2015
mm-view mml-smime smime dig gnus-sum shr kinsoku svg dom browse-url url
url-proxy url-privacy url-expand url-methods url-history url-cookie
url-domsuf url-util url-parse url-vars mailcap gnus-group gnus-undo
gnus-start gnus-dbus dbus xml gnus-cloud nnimap nnmail mail-source utf7
netrc nnoo parse-time gnus-spec gnus-int gnus-range message rmc puny
rfc822 mml mml-sec epa epg rfc6068 epg-config mm-decode mm-bodies
mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader gnus-win
gnus nnheader gnus-util rmail rmail-loaddefs auth-source password-cache
rfc2047 rfc2045 ietf-drums mail-utils mm-util mail-prsvr ol-docview
doc-view jka-compr image-mode exif ol-bibtex ol-bbdb ol-w3m ol-doi
org-link-doi org ob ob-tangle ob-ref ob-lob ob-table ob-exp org-macro
org-footnote org-src ob-comint org-pcomplete pcomplete org-list
org-faces org-entities org-version ob-emacs-lisp ob-core ob-eval
org-table oc-basic json map bibtex iso8601 time-date ol org-keys oc
org-compat org-macs org-loaddefs find-func cal-menu calendar
cal-loaddefs vc-mtn vc-hg vc-git diff-mode vc-bzr vc-src vc-sccs vc-svn
vc-cvs vc-rcs vc vc-dispatcher recentf tree-widget bookmark thingatpt
noutline outline display-line-numbers server pdf-tools-autoloads
tablist-autoloads org-roam-autoloads emacsql-sqlite-autoloads
emacsql-autoloads company-box company-box-doc frame-local
company-box-icons lsp-pyright-autoloads pyvenv-autoloads
jupyter-autoloads websocket-autoloads simple-httpd-autoloads
zmq-autoloads code-cells-autoloads dired-x exec-path-from-shell
exec-path-from-shell-autoloads polymode derived poly-lock polymode-base
polymode-weave polymode-export polymode-compat polymode-methods
polymode-core format-spec polymode-classes eieio-custom eieio-base eieio
eieio-core eieio-loaddefs polymode-autoloads jinja2-mode-autoloads
yasnippet-snippets-autoloads yasnippet-snippets yasnippet
yasnippet-autoloads hl-todo-autoloads cus-edit pp cus-load wid-edit
flycheck-autoloads let-alist-autoloads pkg-info-autoloads epl-autoloads
dap-mode-autoloads bui-autoloads lsp-treemacs-autoloads
lsp-ivy-autoloads lsp-ui-autoloads lsp-mode-autoloads
markdown-mode-autoloads spinner-autoloads git-timemachine-autoloads
magit-autoloads magit-section-autoloads git-commit-autoloads
with-editor-autoloads transient-autoloads treemacs-icons-dired-autoloads
treemacs-projectile-autoloads treemacs-autoloads cfrs-autoloads
posframe-autoloads ht-autoloads hydra-autoloads lv-autoloads
pfuture-autoloads ace-window-autoloads projectile-autoloads counsel xdg
dired dired-loaddefs compile text-property-search comint ansi-color
swiper ivy delsel ivy-faces ivy-overlay colir color counsel-autoloads
swiper-autoloads ivy-autoloads company-box-autoloads
frame-local-autoloads company-oddmuse company-keywords company-etags
etags fileloop generator xref project ring company-gtags
company-dabbrev-code company-dabbrev company-files company-clang
company-capf company-cmake company-semantic company-template
company-bbdb company pcase company-autoloads which-key advice
which-key-autoloads visual-fill-column-autoloads wgrep-autoloads
avy-autoloads edmacro kmacro undo-tree-autoloads use-package-bind-key
bind-key easy-mmode elec-pair minions minions-autoloads doom-modeline
doom-modeline-segments doom-modeline-env doom-modeline-core shrink-path
rx f s all-the-icons all-the-icons-faces data-material data-weathericons
data-octicons data-fileicons data-faicons data-alltheicons dash
doom-modeline-autoloads shrink-path-autoloads f-autoloads dash-autoloads
s-autoloads all-the-icons-autoloads doom-themes-ext-org
doom-themes-ext-treemacs doom-themes-ext-visual-bell face-remap
doom-solarized-light-theme doom-themes doom-themes-base
doom-themes-autoloads finder-inf ns-auto-titlebar
ns-auto-titlebar-autoloads use-package-core use-package-autoloads
bind-key-autoloads straight-autoloads info cl-seq cl-extra help-mode seq
byte-opt straight subr-x cl-macs gv cl-loaddefs cl-lib bytecomp
byte-compile cconv iso-transl tooltip eldoc paren electric uniquify
ediff-hook vc-hooks lisp-float-type elisp-mode mwheel term/ns-win ns-win
ucs-normalize mule-util term/common-win tool-bar dnd fontset image
regexp-opt fringe tabulated-list replace newcomment text-mode lisp-mode
prog-mode register page tab-bar menu-bar rfn-eshadow isearch easymenu
timer select scroll-bar mouse jit-lock font-lock syntax font-core
term/tty-colors frame minibuffer cl-generic cham georgian utf-8-lang
misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms
cp51932 hebrew greek romanian slovak czech european ethiopic indian
cyrillic chinese composite emoji-zwj charscript charprop case-table
epa-hook jka-cmpr-hook help simple abbrev obarray cl-preloaded nadvice
button loaddefs faces cus-face macroexp files window text-properties
overlay sha1 md5 base64 format env code-pages mule custom widget
hashtable-print-readable backquote threads dbusbind kqueue cocoa ns
lcms2 multi-tty make-network-process emacs)

Memory information:
((conses 16 505641 67097)
 (symbols 48 34594 2)
 (strings 32 125591 5105)
 (string-bytes 1 4329451)
 (vectors 16 60750)
 (vector-slots 8 807482 36542)
 (floats 8 1146 584)
 (intervals 56 7466 1304)
 (buffers 992 26))

[-- Attachment #2: image.png --]
[-- Type: image/png, Size: 7381 bytes --]

[-- Attachment #3: image.png --]
[-- Type: image/png, Size: 7303 bytes --]

[-- Attachment #4: image.png --]
[-- Type: image/png, Size: 7495 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

* bug#51309: 28.0.60; [Feature Request] Allow to customize tab-bar button images
  2021-10-20 22:03 bug#51309: 28.0.60; [Feature Request] Allow to customize tab-bar button images Carlos Pita
@ 2021-10-21 16:46 ` Juri Linkov
  2021-10-21 20:30 ` Carlos Pita
  2022-10-24  7:34 ` Juri Linkov
  2 siblings, 0 replies; 5+ messages in thread
From: Juri Linkov @ 2021-10-21 16:46 UTC (permalink / raw)
  To: Carlos Pita; +Cc: 51309

> as you can see in the attached images, the xpm files provided for
> tab-bar buttons don't look very well in many cases:
>
> 1. They are low resolution so they are scaled x 2 in HiDPI screens
> (when there is support for this, I guess for other users they look
> tiny instead).
> 2. The light background is particularly ugly (at least IMO) with dark
> themes and, in general, I believe the ability to blend the button
> background with the default background would be appreciated by a
> number of users.
> 3. Vertical alignment looks slightly off center.

They look sufficiently well but there is always room for improvement.
All suggestions are welcome.

> Maybe "tabs/close.xpm" is already intended to be an abstract
> specification of an xpm that is then loaded as described in [1]:
>
>> If file is not an absolute file name, it is expanded relative to the
>> images subdirectory of data-directory
>
> so that each theme has to locally, temporally(, whatever) override
> data-directory somehow, but I believe it's not like that, I believe
> icons are simply hardcoded.
>
> Given the shortcomings listed above, why not provide some customizable
> variables to change the icons?

This definitely should be customizable, but it's unclear what do you
want to customize: only the file path to the image, or allow to set
the button propertized with an image with image properties like
:margin/:ascent?

Could you send such a button string with an image that looks good
on HiDPI screens?  Then we could try to make a customizable option
based on your design.





^ permalink raw reply	[flat|nested] 5+ messages in thread

* bug#51309: 28.0.60; [Feature Request] Allow to customize tab-bar button images
  2021-10-20 22:03 bug#51309: 28.0.60; [Feature Request] Allow to customize tab-bar button images Carlos Pita
  2021-10-21 16:46 ` Juri Linkov
@ 2021-10-21 20:30 ` Carlos Pita
  2021-10-22  7:01   ` Juri Linkov
  2022-10-24  7:34 ` Juri Linkov
  2 siblings, 1 reply; 5+ messages in thread
From: Carlos Pita @ 2021-10-21 20:30 UTC (permalink / raw)
  To: 51309

Hi Juri,

> This definitely should be customizable, but it's unclear what do you
> want to customize: only the file path to the image, or allow to set
> the button propertized with an image with image properties like
> :margin/:ascent?

Probably the entire (image ...) descriptor. So it's possible to use svg
images (with rsvg enabled which now is the
default) that will work fine at any resolution. Also, even if the images
are correctly centered, they look vertically misaligned wrt text, this
is pretty common and tweaking the ascent may help, I guess.

And perhaps setting a nil descriptor should be allowed as a way to
disable the image altogether.

> Could you send such a button string with an image that looks good
> on HiDPI screens?  Then we could try to make a customizable option
> based on your design.

Vectorized images will do it. Otherwise you will have to provide pixmaps
at twice the resolution and, anyway, with fractional scaling they might
end up being blurry again (although not so much as when scaling up
x2). I assume there are not many devices with higher scaling factors
running emacs out there, yet...

There are plenty of free svg icons for light and dark themes here:
https://github.com/microsoft/vscode-icons/tree/main/icons.

Best regards,
Carlos





^ permalink raw reply	[flat|nested] 5+ messages in thread

* bug#51309: 28.0.60; [Feature Request] Allow to customize tab-bar button images
  2021-10-21 20:30 ` Carlos Pita
@ 2021-10-22  7:01   ` Juri Linkov
  0 siblings, 0 replies; 5+ messages in thread
From: Juri Linkov @ 2021-10-22  7:01 UTC (permalink / raw)
  To: Carlos Pita; +Cc: 51309

>> Could you send such a button string with an image that looks good
>> on HiDPI screens?  Then we could try to make a customizable option
>> based on your design.
>
> Vectorized images will do it. Otherwise you will have to provide pixmaps
> at twice the resolution and, anyway, with fractional scaling they might
> end up being blurry again (although not so much as when scaling up
> x2). I assume there are not many devices with higher scaling factors
> running emacs out there, yet...

Some time ago we tried to use svg, but it had many problems with scaling
and background.  Maybe this is fixed now, need to try again.





^ permalink raw reply	[flat|nested] 5+ messages in thread

* bug#51309: 28.0.60; [Feature Request] Allow to customize tab-bar button images
  2021-10-20 22:03 bug#51309: 28.0.60; [Feature Request] Allow to customize tab-bar button images Carlos Pita
  2021-10-21 16:46 ` Juri Linkov
  2021-10-21 20:30 ` Carlos Pita
@ 2022-10-24  7:34 ` Juri Linkov
  2 siblings, 0 replies; 5+ messages in thread
From: Juri Linkov @ 2022-10-24  7:34 UTC (permalink / raw)
  To: Carlos Pita; +Cc: 51309

close 51309 29.0.50
thanks

> Given the shortcomings listed above, why not provide some customizable
> variables to change the icons?

Now tab-bar button images are customizable with the new command
'customize-icon'.





^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2022-10-24  7:34 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-10-20 22:03 bug#51309: 28.0.60; [Feature Request] Allow to customize tab-bar button images Carlos Pita
2021-10-21 16:46 ` Juri Linkov
2021-10-21 20:30 ` Carlos Pita
2021-10-22  7:01   ` Juri Linkov
2022-10-24  7:34 ` Juri Linkov

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).