diff --git a/DockPhobia.xcodeproj/project.pbxproj b/DockPhobia.xcodeproj/project.pbxproj
index 4ba5d57..2157965 100644
--- a/DockPhobia.xcodeproj/project.pbxproj
+++ b/DockPhobia.xcodeproj/project.pbxproj
@@ -23,6 +23,19 @@
};
/* End PBXContainerItemProxy section */
+/* Begin PBXCopyFilesBuildPhase section */
+ A98E7EA02D836FBB0004DA00 /* Embed XPC Services */ = {
+ isa = PBXCopyFilesBuildPhase;
+ buildActionMask = 2147483647;
+ dstPath = "$(CONTENTS_FOLDER_PATH)/XPCServices";
+ dstSubfolderSpec = 16;
+ files = (
+ );
+ name = "Embed XPC Services";
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXCopyFilesBuildPhase section */
+
/* Begin PBXFileReference section */
A91E849D2D82CF4100FC2E5F /* DockPhobia.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = DockPhobia.app; sourceTree = BUILT_PRODUCTS_DIR; };
A91E84AE2D82CF4300FC2E5F /* DockPhobiaTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = DockPhobiaTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -102,6 +115,7 @@
A91E84992D82CF4100FC2E5F /* Sources */,
A91E849A2D82CF4100FC2E5F /* Frameworks */,
A91E849B2D82CF4100FC2E5F /* Resources */,
+ A98E7EA02D836FBB0004DA00 /* Embed XPC Services */,
);
buildRules = (
);
@@ -392,6 +406,7 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
+ ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO;
CODE_SIGN_ENTITLEMENTS = DockPhobia/DockPhobia.entitlements;
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
@@ -401,7 +416,7 @@
ENABLE_HARDENED_RUNTIME = YES;
ENABLE_PREVIEWS = YES;
GENERATE_INFOPLIST_FILE = YES;
- INFOPLIST_KEY_LSUIElement = YES;
+ INFOPLIST_KEY_LSUIElement = NO;
INFOPLIST_KEY_NSHumanReadableCopyright = "";
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
@@ -420,6 +435,7 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
+ ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO;
CODE_SIGN_ENTITLEMENTS = DockPhobia/DockPhobia.entitlements;
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
@@ -429,7 +445,7 @@
ENABLE_HARDENED_RUNTIME = YES;
ENABLE_PREVIEWS = YES;
GENERATE_INFOPLIST_FILE = YES;
- INFOPLIST_KEY_LSUIElement = YES;
+ INFOPLIST_KEY_LSUIElement = NO;
INFOPLIST_KEY_NSHumanReadableCopyright = "";
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
diff --git a/DockPhobia.xcodeproj/xcuserdata/neon443.xcuserdatad/xcschemes/xcschememanagement.plist b/DockPhobia.xcodeproj/xcuserdata/neon443.xcuserdatad/xcschemes/xcschememanagement.plist
index 9070765..c886bc1 100644
--- a/DockPhobia.xcodeproj/xcuserdata/neon443.xcuserdatad/xcschemes/xcschememanagement.plist
+++ b/DockPhobia.xcodeproj/xcuserdata/neon443.xcuserdatad/xcschemes/xcschememanagement.plist
@@ -9,6 +9,11 @@
orderHint
0
+ DockPhobiaHelper.xcscheme_^#shared#^_
+
+ orderHint
+ 1
+
diff --git a/DockPhobia/Assets.xcassets/AppIcon.appiconset/Contents.json b/DockPhobia/Assets.xcassets/AppIcon.appiconset/Contents.json
index 3f00db4..6815a88 100644
--- a/DockPhobia/Assets.xcassets/AppIcon.appiconset/Contents.json
+++ b/DockPhobia/Assets.xcassets/AppIcon.appiconset/Contents.json
@@ -1,51 +1,61 @@
{
"images" : [
{
+ "filename" : "DockPhobiaAppIcon 16.png",
"idiom" : "mac",
"scale" : "1x",
"size" : "16x16"
},
{
+ "filename" : "DockPhobiaAppIcon 33.png",
"idiom" : "mac",
"scale" : "2x",
"size" : "16x16"
},
{
+ "filename" : "DockPhobiaAppIcon 32.png",
"idiom" : "mac",
"scale" : "1x",
"size" : "32x32"
},
{
+ "filename" : "DockPhobiaAppIcon 64.png",
"idiom" : "mac",
"scale" : "2x",
"size" : "32x32"
},
{
+ "filename" : "DockPhobiaAppIcon 128.png",
"idiom" : "mac",
"scale" : "1x",
"size" : "128x128"
},
{
+ "filename" : "DockPhobiaAppIcon 256.png",
"idiom" : "mac",
"scale" : "2x",
"size" : "128x128"
},
{
+ "filename" : "DockPhobiaAppIcon 257.png",
"idiom" : "mac",
"scale" : "1x",
"size" : "256x256"
},
{
+ "filename" : "DockPhobiaAppIcon 512.png",
"idiom" : "mac",
"scale" : "2x",
"size" : "256x256"
},
{
+ "filename" : "DockPhobiaAppIcon 513.png",
"idiom" : "mac",
"scale" : "1x",
"size" : "512x512"
},
{
+ "filename" : "DockPhobiaAppIcon 1024.png",
"idiom" : "mac",
"scale" : "2x",
"size" : "512x512"
diff --git a/DockPhobia/Assets.xcassets/AppIcon.appiconset/DockPhobiaAppIcon 1024.png b/DockPhobia/Assets.xcassets/AppIcon.appiconset/DockPhobiaAppIcon 1024.png
new file mode 100644
index 0000000..6705458
Binary files /dev/null and b/DockPhobia/Assets.xcassets/AppIcon.appiconset/DockPhobiaAppIcon 1024.png differ
diff --git a/DockPhobia/Assets.xcassets/AppIcon.appiconset/DockPhobiaAppIcon 128.png b/DockPhobia/Assets.xcassets/AppIcon.appiconset/DockPhobiaAppIcon 128.png
new file mode 100644
index 0000000..848acd0
Binary files /dev/null and b/DockPhobia/Assets.xcassets/AppIcon.appiconset/DockPhobiaAppIcon 128.png differ
diff --git a/DockPhobia/Assets.xcassets/AppIcon.appiconset/DockPhobiaAppIcon 16.png b/DockPhobia/Assets.xcassets/AppIcon.appiconset/DockPhobiaAppIcon 16.png
new file mode 100644
index 0000000..f06dfd7
Binary files /dev/null and b/DockPhobia/Assets.xcassets/AppIcon.appiconset/DockPhobiaAppIcon 16.png differ
diff --git a/DockPhobia/Assets.xcassets/AppIcon.appiconset/DockPhobiaAppIcon 256.png b/DockPhobia/Assets.xcassets/AppIcon.appiconset/DockPhobiaAppIcon 256.png
new file mode 100644
index 0000000..9eef0a3
Binary files /dev/null and b/DockPhobia/Assets.xcassets/AppIcon.appiconset/DockPhobiaAppIcon 256.png differ
diff --git a/DockPhobia/Assets.xcassets/AppIcon.appiconset/DockPhobiaAppIcon 257.png b/DockPhobia/Assets.xcassets/AppIcon.appiconset/DockPhobiaAppIcon 257.png
new file mode 100644
index 0000000..9eef0a3
Binary files /dev/null and b/DockPhobia/Assets.xcassets/AppIcon.appiconset/DockPhobiaAppIcon 257.png differ
diff --git a/DockPhobia/Assets.xcassets/AppIcon.appiconset/DockPhobiaAppIcon 32.png b/DockPhobia/Assets.xcassets/AppIcon.appiconset/DockPhobiaAppIcon 32.png
new file mode 100644
index 0000000..130c065
Binary files /dev/null and b/DockPhobia/Assets.xcassets/AppIcon.appiconset/DockPhobiaAppIcon 32.png differ
diff --git a/DockPhobia/Assets.xcassets/AppIcon.appiconset/DockPhobiaAppIcon 33.png b/DockPhobia/Assets.xcassets/AppIcon.appiconset/DockPhobiaAppIcon 33.png
new file mode 100644
index 0000000..130c065
Binary files /dev/null and b/DockPhobia/Assets.xcassets/AppIcon.appiconset/DockPhobiaAppIcon 33.png differ
diff --git a/DockPhobia/Assets.xcassets/AppIcon.appiconset/DockPhobiaAppIcon 512.png b/DockPhobia/Assets.xcassets/AppIcon.appiconset/DockPhobiaAppIcon 512.png
new file mode 100644
index 0000000..3490ef4
Binary files /dev/null and b/DockPhobia/Assets.xcassets/AppIcon.appiconset/DockPhobiaAppIcon 512.png differ
diff --git a/DockPhobia/Assets.xcassets/AppIcon.appiconset/DockPhobiaAppIcon 513.png b/DockPhobia/Assets.xcassets/AppIcon.appiconset/DockPhobiaAppIcon 513.png
new file mode 100644
index 0000000..3490ef4
Binary files /dev/null and b/DockPhobia/Assets.xcassets/AppIcon.appiconset/DockPhobiaAppIcon 513.png differ
diff --git a/DockPhobia/Assets.xcassets/AppIcon.appiconset/DockPhobiaAppIcon 64.png b/DockPhobia/Assets.xcassets/AppIcon.appiconset/DockPhobiaAppIcon 64.png
new file mode 100644
index 0000000..e6c7370
Binary files /dev/null and b/DockPhobia/Assets.xcassets/AppIcon.appiconset/DockPhobiaAppIcon 64.png differ
diff --git a/DockPhobia/ContentView.swift b/DockPhobia/ContentView.swift
index f5cf061..2cefcc1 100644
--- a/DockPhobia/ContentView.swift
+++ b/DockPhobia/ContentView.swift
@@ -8,13 +8,24 @@
import SwiftUI
struct ContentView: View {
+ @Binding var enabled: Bool
+ @State var mouseloc = NSEvent.mouseLocation
var body: some View {
VStack {
-
+ Text("\(NSEvent.mouseLocation)")
+ Toggle("on", isOn: $enabled)
+ .toggleStyle(SwitchToggleStyle())
Image(systemName: "globe")
.imageScale(.large)
.foregroundStyle(.tint)
Text("Hello, world!")
+ Spacer()
+ Button("df") {
+ startTrackingMouse()
+ }
+ Button("undf") {
+ stopTrackingMouse()
+ }
Button() {
NSApp.terminate(nil)
} label: {
@@ -26,5 +37,5 @@ struct ContentView: View {
}
#Preview {
- ContentView()
+ ContentView(enabled: .constant(true))
}
diff --git a/DockPhobia/DockPhobiaApp.swift b/DockPhobia/DockPhobiaApp.swift
index 4ba149d..ca5bf29 100644
--- a/DockPhobia/DockPhobiaApp.swift
+++ b/DockPhobia/DockPhobiaApp.swift
@@ -5,34 +5,122 @@
// Created by neon443 on 13/03/2025.
//
+import Foundation
import SwiftUI
+import Cocoa
+import CoreGraphics
+
+//@main
+//struct DockPhobiaApp: App {
+// @State var enabled: Bool = true
+// var body: some Scene {
+// WindowGroup {
+// ContentView(enabled: $enabled)
+// }
+// MenuBarExtra(
+// "Menu Bar",
+// systemImage: "cursorarrow\(enabled ? "" : ".slash")"
+// ) {
+//
+// Button("One") {
+// enabled.toggle()
+// }
+// .keyboardShortcut("1")
+//// ContentView(enabled: $enabled)
+//// .frame(width: 300, height: 200)
+// }
+// .menuBarExtraStyle(.window)
+// }
+//// NSEvent.addGlobalMonitorForEvents(matching: [.mouseMoved]) { event in
+//// print("event:", event)
+//// }
+//
+//}
+////struct DockPhobiaApp: App {
+//// var body: some Scene {
+//// WindowGroup {
+//// ContentView()
+//// }
+//// }
+////}
+import Foundation
+
+func moveDock() {
+ let process = Process()
+ process.executableURL = URL(fileURLWithPath: "/usr/bin/osascript")
+
+ if let scriptPath = Bundle.main.path(forResource: "/Users/neon443/Documents/Xcode/DockPhobia/DockPhobia/script.scpt", ofType: "scpt") {
+ process.arguments = [scriptPath]
+
+ do {
+ try process.run()
+ process.waitUntilExit()
+ } catch {
+ print("error")
+ }
+ } else {
+ print("error script not found")
+ }
+}
@main
struct DockPhobiaApp: App {
+ enum DockPosition: String {
+ case left
+ case right
+ case bottom
+ }
+
+ @State var enabled: Bool = true
+
var body: some Scene {
- MenuBarExtra(
- "Menu Bar",
- systemImage: "star"
- ) {
- ContentView()
- .overlay(alignment: .topLeading) {
- Button() {
- NSApp.terminate(nil)
- } label: {
- Image(systemName: "xmark.circle.fill")
- .foregroundStyle(.blue)
- }
- .buttonStyle(PlainButtonStyle())
- }
- .frame(width: 300, height: 180)
+ WindowGroup {
+ ContentView(enabled: $enabled)
+ }
+ MenuBarExtra("Dock Phobia", systemImage: "cursorarrow\(enabled ? "" : ".slash")") {
+ Toggle(enabled ? "Enabled" : "Disabled", isOn: $enabled)
+
+ Divider()
+ Button("Right") {
+ moveDock()
+ }
+ Button("Quit") {
+ NSApplication.shared.terminate(nil)
+ }
+ .keyboardShortcut("q")
}
- .menuBarExtraStyle(.window)
}
}
-//struct DockPhobiaApp: App {
-// var body: some Scene {
-// WindowGroup {
-// ContentView()
-// }
-// }
-//}
+
+// global event tap
+var eventTap: CFMachPort?
+
+func startTrackingMouse() {
+ let mask = CGEventMask(1 << CGEventType.mouseMoved.rawValue)
+
+ //try creating event tap
+ eventTap = CGEvent.tapCreate(
+ tap: .cgSessionEventTap,
+ place: .headInsertEventTap,
+ options: CGEventTapOptions.defaultTap,
+ eventsOfInterest: mask,
+ callback: { (proxy, type, event, userInfo) -> Unmanaged? in
+ let location = event.location
+ print("mouse at \(location)")
+ //TODO: add Dock moving here
+ return Unmanaged.passRetained(event)
+ },
+ userInfo: nil
+ )
+
+ //event tap started checking
+ if let eventTap = eventTap {
+ let runLoopSource = CFMachPortCreateRunLoopSource(kCFAllocatorDefault, eventTap, 0)
+ CFRunLoopAddSource(CFRunLoopGetMain(), runLoopSource, .commonModes)
+ CGEvent.tapEnable(tap: eventTap, enable: true)
+
+ print(" mouse tracking started!")
+ } else {
+ print(" failed to create event tap.")
+ }
+}
diff --git a/DockPhobia/script.scpt b/DockPhobia/script.scpt
new file mode 100644
index 0000000..9daca3a
--- /dev/null
+++ b/DockPhobia/script.scpt
@@ -0,0 +1,5 @@
+tell application "System Events"
+ tell dock preferences
+ set screen edge to right
+ end tell
+end tell
diff --git a/DockPhobiaAppIcon.pxd b/DockPhobiaAppIcon.pxd
index 37e6044..9056ed9 100644
Binary files a/DockPhobiaAppIcon.pxd and b/DockPhobiaAppIcon.pxd differ