0

I'm trying to write two lines of text in the macOS system tray, very much like iStat pro does for the network activity:

enter image description here

I know I have to subclass NSView to do so, but I can't manage to get it working even for one line:

class CustomView:NSView {

  override func draw(_ dirtyRect: NSRect) {
        let text: NSString = "my string"

        let textRect: NSRect = NSMakeRect(0, 0, 100, 20)
        text.draw(in: textRect)

  }
}

and then:

let statusBar = NSStatusBar.system
statusItem = statusBar.statusItem(withLength: 100)
let view = CustomView()
view.wantsLayer = true
statusItem.button?.addSubview(view)

I've found other threads on stackoverflow:

1 Answers1

1

Doubt that it's what you are looking for, but this will put two lines of text in a status item:

import Cocoa

let app = NSApplication.shared
let statusItem = NSStatusBar.system.statusItem(withLength:-1)
statusItem.button?.font = NSFont(name:"Menlo Bold", size: 10.0)
statusItem.button!.title = "one\ntwo"
app.run()

It's still just one button and I don't see how you will separate the selection of each item. Perhaps a drop down menu would work better?

apodidae
  • 1,988
  • 2
  • 5
  • 9