Skip to main content

Touch Bar Support

· 3 min read

A versão beta do Electron 1.6.3 contém suporte inicial para o macOS Barra de Toque.


The new Touch Bar API allows you to add buttons, labels, popovers, color pickers, sliders, and spacers. These elements can be dynamically updated and also emit events when they are interacted with.

This is the first release of this API so it will be evolving over the next few Electron releases. Please check out the release notes for further updates and open issues for any problems or missing functionality.

You can install this version via npm install electron@beta and learn more about it in the TouchBar and BrowserWindow Electron docs.

Big thanks to @MarshallOfSound for contributing this to Electron. 🎉

Touch Bar Example

Touch Bar Gif

Below is an example of creating a simple slot machine game in the touch bar. It demonstrates how to create a touch bar, style the items, associate it with a window, handle button click events, and update the labels dynamically.

const {app, BrowserWindow, TouchBar} = require('electron')

const {TouchBarButton, TouchBarLabel, TouchBarSpacer} = TouchBar

let girando = false

// Etiquetas de realm
const reel1 = new TouchBarLabel()
const reel2 = new TouchBarLabel()
const reel3 = new TouchBarLabel()

// Rótulo de resultado de giração
const result = new TouchBarLabel()

// Botão de girar
const spin = new TouchBarButton({
rótulo: '🎰 Giro ',
fundoCor: '#7851A9',
clique: () => {
// Ignore cliques se já estiver girando
if (girando) {
return
}

giros = true
result . abel = ''

let timeout = 10
const spinLength = 4 * 1000 // 4 segundos
const startTime = Date. ow()

const spinReels = () => {
updateReels()

if ((Date. ow() - startTime) >= spinLength) {
finishSpin()
} else {
// Desacelere um pouco em cada giro
timeout *= 1. setTimeout(spinReels, timeout)
}
}

spinReels()
}
})

const getRandomValue = () => {
const values = ['🍒', ':gem_pedra:', '7️⃣', '🍊', '🔔', '⭐', '🍇', '🍀']
valores de retorno[Matemática. loor(Math.random() * valores.length)]
}

const updateReels = () => {
reel1. abel = getRandomValue()
reel2.label = getRandomValue()
reel3. abel = getRandomValue()
}

const finishSpin = () => {
const uniqueValues = new Set([reel1. abel, reel2.label, reel3.label]). ize
if (uniqueValues === 1) {
// Todos os 3 valores são o mesmo resultado
. abel = '💰 Jackpot!'
result.textColor = '#FDFF00'
} else if (uniqueValues === 2) {
// 2 values are the same
result.label = '😍 Winner!'
extColor = '#FDFF00'
} else {
// Nenhum valor é o mesmo resultado
. abel = '🙁 Girar Novamente'
resultados. extColor = null
}
giros = false
}

const touchBar = new TouchBar([
giros,
novo TouchBarSpacer({size: 'large'}),
fileira,
novo TouchBarSpacer({size: 'small'}),
fileiras2,
new TouchBarSpacer({size: 'small'}),
fileiras 3
novos TouchBarSpacer({size: 'large'}),
resultado
])

let janela

app. nce('ready', () => {
janela = new BrowserWindow({
frame: false,
titleBarStyle: 'hidden-inset',
largura: 200,
de altura: 200,
backgroundColor: '#000'
})
janela. oadURL('about:blank')
window.setTouchBar(touchBar)
})