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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 854f6ae805d2626929da28f513cd471e2c252be893a0c062823f52d157b0bb44
4
- data.tar.gz: 632c33c8faaa92152b5a68a8d9affe598fe8afcbf0b3bc5691f19def81b94ae3
3
+ metadata.gz: 4eef3e193759ac51e31073e02a8861b457a4012b72c2a91c4387235db3ce2696
4
+ data.tar.gz: becec7e1af13027c9f5c25dc6d8c50e3be19cb23e6ce5b8d9d59aadcfbe8c437
5
5
  SHA512:
6
- metadata.gz: b3688a9af53f4d84559ac1374485dce4a38bf020a86427a0d7f2d5ce19b9eafcca844f7d630a568e42204b3401a4c44e592f95b2b57d19e1581af1474297ebe6
7
- data.tar.gz: 6547eff88bb43c512e2879439c9891d5dcfed40ae8afe901c0582d6145fa2d6f1974f66360b6d29b41a166892690985e1b8b826c07e041c8c84ad8d040b17c75
6
+ metadata.gz: 29e8df3ec0d53f627bd04183b7acfed4a9b2bc85cd93939704b7df52a6c603d9e3eae7c8745a27db971ae433b9d7f195def24a3069abfdbe29f280671e118d8c
7
+ data.tar.gz: c456df1df1c72f9d1923991ec089b96b3c60a6d5c0927824bab07166bc7fd292e0e57d9ca4474d43a0afba8e0214afbc6df2e782092262829a6a6bf11fa9c238
@@ -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
+ }
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Cocoadock
4
- VERSION = "0.3.0"
4
+ VERSION = "0.4.0"
5
5
  end
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.3.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-11 00:00:00.000000000 Z
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: