Skip to content

Instantly share code, notes, and snippets.

@heydamianc
Forked from lucamarrocco/app.swift
Created November 18, 2018 23:28
Show Gist options
  • Save heydamianc/80125e450a7b5eb564316a4b2ed6555d to your computer and use it in GitHub Desktop.
Save heydamianc/80125e450a7b5eb564316a4b2ed6555d to your computer and use it in GitHub Desktop.
swift osx application without nib
import Cocoa
class WindowController: NSWindowController {
}
class AppDelegate: NSObject {
var mainWindow: NSWindow?
var mainController: NSWindowController?
}
extension AppDelegate {
@objc func quit(sender: NSMenuItem) {
NSApp.terminate(self)
}
}
extension AppDelegate: NSApplicationDelegate {
func applicationDidFinishLaunching(_ aNotification: Notification) {
let mainMenu = NSMenu()
let mainMenuFileItem = NSMenuItem(title: "File", action: nil, keyEquivalent: "")
let fileMenu = NSMenu(title: "File")
fileMenu.addItem(withTitle: "Quit", action: #selector(quit(sender:)), keyEquivalent: "q")
mainMenuFileItem.submenu = fileMenu
mainMenu.addItem(mainMenuFileItem)
NSApp.mainMenu = mainMenu
let window = NSWindow(contentRect: NSMakeRect(1280, 960, 1280, 960), styleMask:[.titled, .closable, .resizable], backing: .buffered, defer: false)
window.backgroundColor = NSColor(calibratedRed: 0.1, green: 0.1, blue: 0.1, alpha: 1.0)
window.title = "App"
window.orderFrontRegardless()
mainWindow = window
let controller = WindowController(window: window)
controller.showWindow(window)
mainController = controller
NSApp.activate(ignoringOtherApps: true)
}
func applicationWillTerminate(_ aNotification: Notification) {
}
func applicationShouldTerminateAfterLastWindowClosed(_ app: NSApplication) -> Bool{
return true
}
}
let app = NSApplication.shared
let delegate = AppDelegate()
app.delegate = delegate
app.setActivationPolicy(.regular)
atexit_b { app.setActivationPolicy(.prohibited); return }
app.run()
.PHONY: build
build:
@DEVELOPER_DIR="/Applications/Xcode.app" SDKROOT="/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk" xcrun swiftc -o app app.swift && ./app
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment