zsh-apple-touchbar

by zsh-users

Make your touchbar more powerful.

239 Stars 10 Forks Last release: Not found MIT License 4 Commits 0 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:

zsh-apple-touchbar

Make your touchbar more powerful.

preview

Requirements

  • iTerm2 3.1 or later
  • zsh
  • ruby 2.3.4 or later (only if you want automatic generation)

In iterm2: Go to

View -> Customize Tool Bar...
and drag & drop the
Fn
module

Installation

Manual

  1. Clone this repository somewhere on your machine. This guide will assume
    ~/.zsh/zsh-apple-touchbar
    .
git clone https://github.com/zsh-users/zsh-apple-touchbar ~/.zsh/zsh-apple-touchbar
  1. Add the following to your
    .zshrc
    :
source ~/.zsh/zsh-apple-touchbar/zsh-apple-touchbar.zsh
  1. Start a new terminal session.

Oh My Zsh

  1. Clone this repository into
    $ZSH_CUSTOM/plugins
    (by default
    ~/.oh-my-zsh/custom/plugins
    )
git clone https://github.com/zsh-users/zsh-apple-touchbar $ZSH_CUSTOM/plugins/zsh-apple-touchbar
  1. Add the plugin to the list of plugins for Oh My Zsh to load:
plugins=(zsh-apple-touchbar)
  1. Start a new terminal session.

Customization

Automatic

You can define simple commands for FN keys in

config.yml
file.

Structure

File should have two base keys: 1.

default_view
- default view to show. 2.
views
- list of defined views.

views
section contains views you want to show. Key is a view name.

Under view name key you should define next keys: 1.

text
- text that will show on touchbar key. 2.
command
or
view
-
command
means executing some command that under is this key and
view
means show view that is under this key 3.
back
- under this key should be a view name that will be shown after executing some command.

Example

default_view: first
views:
  first:
    1:
      text: πŸ‘‰ pwd
      command: pwd |tr -d "\\n" |pbcopy
    2:
      text: second view
      view: second
    3:
      text: third view
      view: third
  second:
    1:
      text: πŸ‘ˆ back
      view: first
    2:
      text: current path
      command: pwd
    back: first
  third:
    1:
      text: πŸ‘ˆ back
      view: first
    2:
      text: ls
      command: ls -la

For generating view from

config.yml
file go to its folder:
cd $ZSH_CUSTOM/plugins/zsh-apple-touchbar

and run

generate.rb
file:
ruby generate.rb

Custom

If you need more complicated logic you can rewrite

zsh-apple-touchbar.zsh
file on your own.

View functions

For each

view
you need to define separate function that will contain keys creation. E.G.
function first_view() {
  remove_and_unbind_keys

set_state 'first'

create_key 1 'πŸ‘‰ pwd' 'pwd |tr -d "\n" |pbcopy' '-s' create_key 2 'second view' 'second_view' }

function second_view() { remove_and_unbind_keys

set_state 'second'

create_key 1 'πŸ‘ˆ back' 'first_view' create_key 2 'current path' 'pwd' '-s'

set_state 'first' }

In every function first, you need to remove and unbind old keys with

remove_and_unbind_keys
function.

Then you need to set a state (

state
variable define which view to show after reinitialization) with
set_state
function.

After that, you can create keys for this view with

create_key
function.

And after keys part you can set new state (if you want to show some view after executing key command).

Keys creation

Keys creates with

create_key
function

This function accept 4 arguments: 1. number of key (from 1 to 12) 2. key text 3.

command
or
view
4. bind option (
-s
if third argument isn't a view, nothing if it is)

Init widgets

For calling views in main function you need to init widgets for every view function.

zle -N first
zle -N second

Main function

Here you need to define which view to show for every state.

precmd_apple_touchbar() {
  case $state in
    first) first_view ;;
    second) second_view ;;
  esac
}

Full example

source ${0:A:h}/functions.zsh

set_state 'first'

function first_view() { remove_and_unbind_keys

set_state 'first'

create_key 1 'πŸ‘‰ pwd' 'pwd |tr -d "\n" |pbcopy' '-s' create_key 2 'second view' 'second_view' }

function second_view() { remove_and_unbind_keys

set_state 'second'

create_key 1 'πŸ‘ˆ back' 'first_view' create_key 2 'current path' 'pwd' '-s'

set_state 'first' }

zle -N first_view zle -N second_view

precmd_apple_touchbar() { case $state in first) first_view ;; second) second_view ;; esac }

autoload -Uz add-zsh-hook

add-zsh-hook precmd precmd_apple_touchbar

Contributing

If you have some proposals how to improve this boilerplate feel free to open issues and send pull requests!

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

License

Available as open source under the terms of the MIT License.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.