cocoadock 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/ext/cocoadock/cocoadock.m +67 -0
- data/lib/cocoadock/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 4eef3e193759ac51e31073e02a8861b457a4012b72c2a91c4387235db3ce2696
|
|
4
|
+
data.tar.gz: becec7e1af13027c9f5c25dc6d8c50e3be19cb23e6ce5b8d9d59aadcfbe8c437
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 29e8df3ec0d53f627bd04183b7acfed4a9b2bc85cd93939704b7df52a6c603d9e3eae7c8745a27db971ae433b9d7f195def24a3069abfdbe29f280671e118d8c
|
|
7
|
+
data.tar.gz: c456df1df1c72f9d1923991ec089b96b3c60a6d5c0927824bab07166bc7fd292e0e57d9ca4474d43a0afba8e0214afbc6df2e782092262829a6a6bf11fa9c238
|
data/ext/cocoadock/cocoadock.m
CHANGED
|
@@ -9,6 +9,36 @@ VALUE cocoadock_is_app_to_dock(VALUE self, VALUE path);
|
|
|
9
9
|
VALUE cocoadock_add_app_to_dock(VALUE self, VALUE path);
|
|
10
10
|
VALUE cocoadock_remove_app_from_dock(VALUE self, VALUE path);
|
|
11
11
|
VALUE cocoadock_remove_others_in_dock(VALUE self);
|
|
12
|
+
VALUE cocoadock_remove_all_apps_in_dock(VALUE self);
|
|
13
|
+
|
|
14
|
+
NSMutableArray *LoadDockApps(void) {
|
|
15
|
+
CFArrayRef persistentApps = CFPreferencesCopyAppValue(
|
|
16
|
+
CFSTR("persistent-apps"),
|
|
17
|
+
CFSTR("com.apple.dock")
|
|
18
|
+
);
|
|
19
|
+
|
|
20
|
+
if (!persistentApps) {
|
|
21
|
+
return [NSMutableArray array];
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
NSMutableArray *apps =
|
|
25
|
+
[(__bridge NSArray *)persistentApps mutableCopy];
|
|
26
|
+
|
|
27
|
+
CFRelease(persistentApps);
|
|
28
|
+
return apps;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
void SaveDockApps(NSArray *apps) {
|
|
32
|
+
CFPreferencesSetAppValue(
|
|
33
|
+
CFSTR("persistent-apps"),
|
|
34
|
+
(__bridge CFArrayRef)apps,
|
|
35
|
+
CFSTR("com.apple.dock")
|
|
36
|
+
);
|
|
37
|
+
|
|
38
|
+
CFPreferencesAppSynchronize(CFSTR("com.apple.dock"));
|
|
39
|
+
|
|
40
|
+
system("killall Dock");
|
|
41
|
+
}
|
|
12
42
|
|
|
13
43
|
NSMutableArray *LoadDockOthers(void) {
|
|
14
44
|
CFArrayRef persistentOthers = CFPreferencesCopyAppValue(
|
|
@@ -39,6 +69,38 @@ void SaveDockOthers(NSArray *others) {
|
|
|
39
69
|
system("killall Dock");
|
|
40
70
|
}
|
|
41
71
|
|
|
72
|
+
BOOL RemoveAllAppsInDock(void) {
|
|
73
|
+
|
|
74
|
+
int attempts = 0;
|
|
75
|
+
|
|
76
|
+
while (attempts < 3) {
|
|
77
|
+
|
|
78
|
+
NSMutableArray *apps = LoadDockApps();
|
|
79
|
+
|
|
80
|
+
if (apps.count == 0) {
|
|
81
|
+
return YES; // Already empty
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
[apps removeAllObjects];
|
|
85
|
+
|
|
86
|
+
SaveDockApps(apps);
|
|
87
|
+
|
|
88
|
+
// Give Dock time to restart & commit
|
|
89
|
+
[NSThread sleepForTimeInterval:0.25];
|
|
90
|
+
|
|
91
|
+
// Verify
|
|
92
|
+
NSMutableArray *verify = LoadDockApps();
|
|
93
|
+
if (verify.count == 0) {
|
|
94
|
+
return YES;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
attempts++;
|
|
98
|
+
[NSThread sleepForTimeInterval:0.1];
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
return NO;
|
|
102
|
+
}
|
|
103
|
+
|
|
42
104
|
BOOL RemoveOthersInDock(void) {
|
|
43
105
|
|
|
44
106
|
int attempts = 0;
|
|
@@ -313,6 +375,7 @@ Init_cocoadock(void)
|
|
|
313
375
|
rb_define_method(rb_mCocoadockClass, "app_in_dock?", cocoadock_is_app_to_dock, 1);
|
|
314
376
|
rb_define_method(rb_mCocoadockClass, "remove_app", cocoadock_remove_app_from_dock, 1);
|
|
315
377
|
rb_define_method(rb_mCocoadockClass, "remove_others", cocoadock_remove_others_in_dock, 0);
|
|
378
|
+
rb_define_method(rb_mCocoadockClass, "remove_all", cocoadock_remove_all_apps_in_dock, 0);
|
|
316
379
|
}
|
|
317
380
|
|
|
318
381
|
VALUE cocoadock_initialize(VALUE self) {
|
|
@@ -343,3 +406,7 @@ VALUE cocoadock_remove_app_from_dock(VALUE self, VALUE path) {
|
|
|
343
406
|
VALUE cocoadock_remove_others_in_dock(VALUE self) {
|
|
344
407
|
removeOthersInDock();
|
|
345
408
|
}
|
|
409
|
+
|
|
410
|
+
VALUE cocoadock_remove_all_apps_in_dock(VALUE self) {
|
|
411
|
+
RemoveAllAppsInDock();
|
|
412
|
+
}
|
data/lib/cocoadock/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: cocoadock
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.4.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Tommy Jeff
|
|
8
8
|
bindir: exe
|
|
9
9
|
cert_chain: []
|
|
10
|
-
date: 2026-02-
|
|
10
|
+
date: 2026-02-12 00:00:00.000000000 Z
|
|
11
11
|
dependencies: []
|
|
12
12
|
description: Cocoa dock functions for Ruby on macOS
|
|
13
13
|
email:
|