Skip to content

Add support for icons for TouchBar submenus (and maybe other customizations) #1105

Closed as not planned

Description

@jabrouwer82

According to the code, :menu doesn't support setting an icon for touchbar submenus.

For example in the hypothetical nested menu TouchBar.Example.Thing, TouchBar.Example can only be plain a plain text (or emoji) button, but TouchBar.Example.Thing could have an icon declared in the :menu command that defined it.

The (semi) original touchbar implementation (#715) suggests using the macmenu command to support extra customization options.

Activity

  1. ychin commented on Oct 7, 2020

    @ychin
    Member

    Yes that's correct. Thinking more about it I think just fixing Vim's :menu variants to be able to set icon on TouchBar subfolders may be better and more consistent for users instead of having to learn a new thing.

  2. added this to the Backlog milestone on Oct 7, 2020
  3. added
    UIIssues related to UI elements, tabs, scrollbars, window resizing, etc.
    on Oct 7, 2020
  4. jabrouwer82 commented on Oct 8, 2020

    @jabrouwer82
    Author

    But other options like color, priority, etc, would probably need to be something special, right?

  5. ychin commented on Oct 8, 2020

    @ychin
    Member

    I haven't quite decided on them, but yes, maybe. The macmenu command is always a little odd and I would like to keep things as consistent as possible. So if you define icons through the normal :menu commands for toolbar and non-subfolder Touch Bar items, then ideally that's the way we define icons for Touch Bar subfolders too, just to reduce the cognitive load. I haven't looked at the code yet though, so I don't have a sense how big a refactor from upstream that is. It's likely that it's a simple check that we just need to fix.

    Some other special items like the emoji picker is specified by special menu item names, like amenu TouchBar.-characterpicker- <Nop> or -flexspace-. Those probably won't fly for color and priority though. I think priority is relatively low in usefulness because you can always choose to enable/disable menu items, but if we have a generic way to hook it up, why not.

  6. DesantBucie commented on Oct 15, 2020

    @DesantBucie

    Maybe not entirely on topic but is it possible to update touchbar names dynamicaly during one session? Like when I i press button name1 it changes to name2?

  7. ychin commented on Oct 15, 2020

    @ychin
    Member

    Use :tmenu

  8. DesantBucie commented on Oct 18, 2020

    @DesantBucie

    Yea I tried, but it does not seem to update in the same session. Anyway thanks :)

  9. ychin commented on Oct 19, 2020

    @ychin
    Member

    @DesantBucie that should not be the case. Do you have the exact sequence of commands you used?

  10. DesantBucie commented on Oct 19, 2020

    @DesantBucie

    Well I tried something like this

    let g:TabSpaces = 4
    
    function! TabSpaces()
    
        if g:TabSpaces == 4
            set tabstop = 2 | set shiftwidth = 2
            let g:TabSpaces = 2
            
        else
            set tabstop = 4 | set shiftwidth = 4
            let g:TabSpaces = 4
            
        endif
    endfunction
    
    nmenu TouchBar.Settings.Tab :TabSpaces<CR>
    if g:TabSpaces == 4
        tmenu TouchBar.Settings.Tab Set Tab 2
    else
        tmenu TouchBar.Settings.Tab Set Tab 4
    endif
  11. ychin commented on Oct 19, 2020

    @ychin
    Member

    @DesantBucie You need to debug your script more and make sure it works before even trying out the fancier Touch Bar label functionality. I don't think your script currently works at all.

    1. You can't put spaces after "=" in set tabstop = 2(it should be throwing errors at you). You have to do set tabstop=2.
    2. You are not invoking the tmenu command inside the function so it's not going to magically update the label for you after you call TabSpaces().
    3. Your menu is calling :TabSpaces which assumes TabSpaces is a command, but it is a function instead. You need to be doing :call TabSpaces()<CR> instead.
    4. Try to use nnoremenu instead of nmenu because it's more foolproof. If you don't mind it showing up in other modes (insert, command, etc), you could consider using anoremenu.
  12. DesantBucie commented on Oct 19, 2020

    @DesantBucie

    I fixed 1,2,3, put both tmenus to function, got "default" one on vimrc and it works like magic. And no I wanted it to be available only on normal mode so it's fine. Thanks awfully for your time.

  13. added
    Feature RequestNew features request. Not an existing issue or bug.
    on Dec 28, 2020
  14. destructobeam commented on Feb 6, 2021

    @destructobeam

    Sorry to just hop in here, this could possibly be a separate issue, but is related to icons. In the toolbar and Touch Bar would it be possible to add SF Symbols support? So you could do something like:

    nnoremenu icon=cross.case.fill TouchBar.Fix :ALEFix <CR>
  15. ychin commented on Feb 8, 2021

    @ychin
    Member

    Yeah it's something on my mind. I will likely touch these after the next release. It will also make the toolbars look better and fit macOS 11 better.

  16. ychin commented on Oct 30, 2022

    @ychin
    Member

    @destructobeam, #1329 will add the ability to use SF Symbols for tool bar and Touch Bar icons! This includes the ability to customize the symbol to use palette color etc.

    As for the original request, @jabrouwer82 , submenu icons isn't supported yet. I may eventually add this but there are a lot of other things on my plate that are higher priority MacVim-wise. One compromise is that SF Symbols can be used in raw text form. You can actually copy the symbol out and paste it in as text (easiest way to do so is by using the SF Symbols app that you can download from Apple). For example, you can do this to make a submenu with the SF Symbol "gearshape.2.fill" as the icon for it: an icon=arrowshape.backward TouchBar.􀥏.Back <Nop> (you may need to copy the string out to a text edit program to see this as web browser doesn't show it correctly). It doesn't work as well as specifying a symbol using icon=, because the OS treats the symbol as text rather than an icon so it looks a little smaller, but it works. You also cannot customize the style of the symbol (e.g. palette, multicolor, etc) unlike using the icon= syntax as introduced in #1329. So it's not a slam dunk.

  17. ychin commented on Oct 31, 2023

    @ychin
    Member

    With the release of the M3 14" MacBook Pro, Apple has officially stopped making any new hardware that has a Touch Bar, with the M2 13" MacBook Pro being the last product that had it. Because of that, there will be no more effort put in for new Touch Bar features, sorry.

    Meanwhile, 🪦🫗 Touch Bar. I personally liked it despite it being a little polarizing and seemed to never really catch on with other third-party apps (or even first-party Apple ones).

  18. destructobeam commented on Feb 28, 2024

    @destructobeam

    @ychin Late reply, but just a thanks for your work on this. I too liked the touch bar, a lot, and I will miss it. I feel like the disdain for it from a few popular commentators/podcasters killed this very useful feature.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Feature RequestNew features request. Not an existing issue or bug.UIIssues related to UI elements, tabs, scrollbars, window resizing, etc.

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions