# go-touchbar [![Go Reference](https://pkg.go.dev/badge/github.com/LouisBrunner/go-touchbar.svg)](https://pkg.go.dev/github.com/LouisBrunner/go-touchbar)
Go library to integrate the MacBook Touch Bar
## Installation
```bash
go get github.com/LouisBrunner/go-touchbar
```
## Usage
```go
// Setup your window code (including NSApplication/NSWindow on macOS)
tb := touchbar.New(touchbar.Options{})
err := tb.Install(Configuration: touchbar.Configuration{
// Add your configuration here
})
if err != nil {
// handle
}
// run your application
// when you want to update the touchbar (even from another routine), call do
err = tb.Update(Configuration: touchbar.Configuration{
// Add your updated configuration here
})
if err != nil {
// handle
}
err = tb.Uninstall()
if err != nil {
// handle
}
```
### Configuration
https://user-images.githubusercontent.com/7120871/197391736-450bef36-4dd6-4c79-8ae7-3bd68a932eec.mp4
See [example application](./examples/tester/main.go) for a real-life example.
Note: most of the widgets are direct translations of the one in Apple's documentation and have similar options.
Please refer to [the official documentation](https://developer.apple.com/documentation/appkit/touch_bar/creating_and_customizing_the_touch_bar?language=objc) for more details.
You configure this library by specifying a list of items from the following options:
- `Button`: a button that can be clicked (has an event handler)
- **NOT IMPLEMENTED** `Candidates`: a list of text options, allows to give custom recommendations for the current text field
- **NOT IMPLEMENTED** `ColorPicker`: used to choose a color (has an event handler)
- **NOT IMPLEMENTED** `Custom`: can render anything you want, feedback any touch with a X position (has an event handler)
- **NOT IMPLEMENTED** `Group`: used to group other items
- `Label`: allows to display text and images
- **NOT IMPLEMENTED** `Picker`: used to pick one or more options from a list of choices, equivalent to radio/checkbox buttons (has an event handler)
- `Popover`: a button which shows more options when clicked, equivalent to a modal or collapse widget
- **NOT IMPLEMENTED** `Scrubber`: allows to select items from a list, which supports scrolling (has an event handler)
- **NOT IMPLEMENTED** `SegmentedControl`: shows multiple buttons grouped together, similar to `Picker` (has an event handler)
- **NOT IMPLEMENTED** `Sharer`: allows to share using the standard macOS sharing system
- `Slider`: a slider used to pick value in a range (has an event handler)
- **NOT IMPLEMENTED** `Stepper`: a control to pick a value in a range through increments (has an event handler)
But also from this list of standard Apple widgets which have no customizable options:
- `OtherItemsProxy`: where to display other Touch Bar closer to the first responder
- `SpaceSmall`: a small space
- `SpaceLarge`: a bigger space
- `SpaceFlexible`: a space that grows as much as possible
<!-- - `CharacterPicker`: opens the macOS character picker (e.g. to pick an emoji)
- `CandidateList`: shows the standard macOS predictive text widget
- `TextFormat`: a group of text formatting options
- `TextAlignment`: allows to pick text alignement
- `TextColorPicker`: allows to pick text color
- `TextList`: allows to pick text listing options
- `TextStyle`: allows to pick text style -->
## Further work
Check TODO/FIXME as well
- (!!!) Finish implementing widgets
- Allow user customization (`customizationLabel`, `templateItems`, etc)
- Layout constraints (e.g. sizing)
- More options for widgets:
- Color-picker
- Custom
- Popover
- Support standard/UI colors
- Support custom images
- Better validation in Go (validator on the structs?)
- A few random crashes: `signal arrived during cgo execution` and `[touchBar itemIdentifiers] was mutated while items array was being built` (in `[WindowController setupTouchBar]`)
## Acknowledgements
This library's API was influenced by [Electron's](https://www.electronjs.org/docs/latest/api/touch-bar).
The [demo application](./examples/tester/demo.go) is a reimplementation of [`electron-touch-bar`](https://github.com/pahund/electron-touch-bar).
The [catalog](./examples/tester/catalog.go) was influenced by [Apple's](https://developer.apple.com/documentation/appkit/touch_bar/creating_and_customizing_the_touch_bar?language=objc), which also helped with the Objective-C part of the implementation.
没有合适的资源?快使用搜索试试~ 我知道了~
基于LCL(Lazarus Component Library) 开发的GUI框架. 可开发轻量级原生应用. 具有丰富的控件库
共557个文件
go:524个
md:18个
dll:6个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 119 浏览量
2024-08-30
08:38:23
上传
评论
收藏 10.88MB ZIP 举报
温馨提示
lcl是Go语言基于LCL(Lazarus Component Library) 开发的GUI框架. 可开发轻量级原生应用. 具有丰富的控件库.
资源推荐
资源详情
资源评论
收起资源包目录
基于LCL(Lazarus Component Library) 开发的GUI框架. 可开发轻量级原生应用. 具有丰富的控件库 (557个子文件)
liblcl.dll 9.07MB
liblcl.dll 8.01MB
liblcl.dll 6.88MB
liblcl.dll 6.08MB
WebView2Loader.dll 159KB
WebView2Loader.dll 114KB
.gitattributes 131B
.gitignore 2KB
deficon.go 1.73MB
import_lcl_autogen.go 354KB
lcl.go 123KB
as_component_class.go 91KB
lazvirtualstringtree.go 75KB
lazvirtualdrawtree.go 69KB
basevirtualtree.go 66KB
control.go 55KB
type_operator.go 51KB
callback_event.go 49KB
predef_winapi.go 49KB
errcode.go 47KB
customdrawgrid.go 36KB
application.go 31KB
const.go 31KB
customimagelist.go 29KB
callback_def_events.go 25KB
listview.go 25KB
customtreeview.go 25KB
message.go 24KB
customform.go 24KB
treeview.go 23KB
wincontrol.go 22KB
themeservices.go 22KB
treenode.go 21KB
strings.go 21KB
types.go 19KB
datetimepicker.go 18KB
menuitem.go 18KB
user32dll.go 17KB
fpcustomcanvas.go 16KB
customrichmemo.go 16KB
consts.go 16KB
screen.go 16KB
customlistview.go 15KB
canvas.go 15KB
customlistbox.go 14KB
toolbutton.go 14KB
import_predef.go 14KB
valuelisteditor.go 14KB
customabstractgroupededit.go 13KB
toolbar.go 13KB
registry.go 13KB
vtheader.go 13KB
stringgrid.go 13KB
json.go 13KB
treenodes.go 13KB
drawgrid.go 13KB
kernel32dll.go 13KB
statusbar.go 12KB
pagecontrol.go 12KB
customcombobox.go 11KB
combobox.go 11KB
colors.go 11KB
predef.go 11KB
comboboxex.go 11KB
checkcombobox.go 11KB
customapplication.go 10KB
directoryedit.go 10KB
import_wk_autogen.go 10KB
label.go 10KB
updown.go 10KB
virtualtreecolumn.go 10KB
frame.go 10KB
scrollbox.go 10KB
panel.go 10KB
customtabcontrol.go 10KB
predef.go 10KB
custominifile.go 10KB
json_test.go 9KB
array.go 9KB
customgrid.go 9KB
customspeedbutton.go 9KB
form.go 9KB
maskedit.go 9KB
avltree.go 9KB
customimage.go 9KB
shape.go 9KB
colorbox.go 9KB
customimagelistresolution.go 9KB
lazaccessibleobject.go 9KB
object.go 9KB
dividerbevel.go 8KB
gridcolumn.go 8KB
memo.go 8KB
statictext.go 8KB
imagebutton.go 8KB
customtaskdialog.go 8KB
listitem.go 8KB
paintbox.go 8KB
controlborderspacing.go 8KB
lazintfimage.go 8KB
共 557 条
- 1
- 2
- 3
- 4
- 5
- 6
资源评论
Java程序员-张凯
- 粉丝: 1w+
- 资源: 7157
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功