Skip to content

Commit

Permalink
feat(trackpad): add additional trackpad and gesture support:
Browse files Browse the repository at this point in the history
To `system.defaults.trackpad`, add:

```
ActuateDetents
DragLock
ForceSuppressed
TrackpadCornerSecondaryClick
TrackpadFourFingerHorizSwipeGesture
TrackpadFourFingerPinchGesture
TrackpadFourFingerVertSwipeGesture
TrackpadMomentumScroll
TrackpadPinch
TrackpadRotate
TrackpadThreeFingerHorizSwipeGesture
TrackpadThreeFingerTapGesture
TrackpadThreeFingerVertSwipeGesture
TrackpadTwoFingerDoubleTapGesture
TrackpadTwoFingerFromRightEdgeSwipeGesture
```

To `system.defaults.dock` add:

```
showAppExposeGestureEnabled
showDesktopGestureEnabled
showLaunchpadGestureEnabled
showMissionControlGestureEnabled
```
  • Loading branch information
dustypomerleau committed Sep 3, 2024
1 parent 7c4b53a commit ed15697
Show file tree
Hide file tree
Showing 2 changed files with 163 additions and 6 deletions.
32 changes: 32 additions & 0 deletions modules/system/defaults/dock.nix
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,38 @@ in {
else map (folder: { tile-data = { file-data = { _CFURLString = "file://" + folder; _CFURLStringType = 15; }; }; tile-type = if strings.hasInfix "." (last (splitString "/" folder)) then "file-tile" else "directory-tile"; }) value;
};

system.defaults.dock.showAppExposeGestureEnabled = mkOption {
type = types.nullOr types.bool;
default = null;
description = ''
Whether to enable trackpad gestures (three- or four-finger vertical swipe) to show App Exposé. The default is false. This feature interacts with `system.defaults.trackpad.TrackpadFourFingerVertSwipeGesture` and `system.defaults.trackpad.TrackpadThreeFingerVertSwipeGesture` to determine which gesture triggers App Exposé.
'';
};

system.defaults.dock.showDesktopGestureEnabled = mkOption {
type = types.nullOr types.bool;
default = null;
description = ''
Whether to enable four-finger spread gesture to show the Desktop. The default is false.
'';
};

system.defaults.dock.showLaunchpadGestureEnabled = mkOption {
type = types.nullOr types.bool;
default = null;
description = ''
Whether to enable four-finger pinch gesture to show the Launchpad. The default is false.
'';
};

system.defaults.dock.showMissionControlGestureEnabled = mkOption {
type = types.nullOr types.bool;
default = null;
description = ''
Whether to enable trackpad gestures (three- or four-finger vertical swipe) to show Mission Control. The default is false. This feature interacts with `system.defaults.trackpad.TrackpadFourFingerVertSwipeGesture` and `system.defaults.trackpad.TrackpadThreeFingerVertSwipeGesture` to determine which gesture triggers Mission Control.
'';
};

system.defaults.dock.show-process-indicators = mkOption {
type = types.nullOr types.bool;
default = null;
Expand Down
137 changes: 131 additions & 6 deletions modules/system/defaults/trackpad.nix
Original file line number Diff line number Diff line change
Expand Up @@ -9,39 +9,40 @@ with lib;
type = types.nullOr types.bool;
default = null;
description = ''
Whether to enable trackpad tap to click. The default is false.
Whether to enable tap to click. The default is false.
'';
};

system.defaults.trackpad.Dragging = mkOption {
type = types.nullOr types.bool;
default = null;
description = ''
Whether to enable tap-to-drag. The default is false.
Whether to enable tap to drag. The default is false.
'';
};

system.defaults.trackpad.TrackpadRightClick = mkOption {
type = types.nullOr types.bool;
default = null;
description = ''
Whether to enable trackpad right click. The default is false.
Whether to enable trackpad right click (two-finger tap/click).
The default is false.
'';
};

system.defaults.trackpad.TrackpadThreeFingerDrag = mkOption {
type = types.nullOr types.bool;
default = null;
description = ''
Whether to enable three finger drag. The default is false.
Whether to enable three-finger drag. The default is false.
'';
};

system.defaults.trackpad.ActuationStrength = mkOption {
type = types.nullOr (types.enum [ 0 1 ]);
default = null;
description = ''
0 to enable Silent Clicking, 1 to disable. The default is 1.
0 to enable Silent Clicking, 1 to disable. The default is 1.
'';
};

Expand All @@ -67,10 +68,134 @@ with lib;
type = types.nullOr (types.enum [ 0 2 ]);
default = null;
description = ''
0 to disable three finger tap, 2 to trigger Look up & data detectors.
Whether to enable three-finger tap gesture: 0 to disable, 2 to trigger Look up & data detectors.
The default is 2.
'';
};

system.defaults.trackpad.ActuateDetents = mkOption {
type = types.nullOr types.bool;
default = null;
description = ''
Whether to enable haptic feedback. The default is true.
'';
};

system.defaults.trackpad.DragLock = mkOption {
type = types.nullOr types.bool;
default = null;
description = ''
Whether to enable drag lock. The default is false.
'';
};

system.defaults.trackpad.ForceSuppressed = mkOption {
type = types.nullOr types.bool;
default = null;
description = ''
Whether to disable force click. The default is false.
'';
};

system.defaults.trackpad.TrackpadCornerSecondaryClick = mkOption {
type = types.nullOr (types.enum [ 0 1 2 ]);
default = null;
description = ''
Whether to enable secondary click: 0 to disable, 1 to set bottom-left corner, 2 to set bottom-right corner.
The default is 0.
'';
};

system.defaults.trackpad.TrackpadFourFingerHorizSwipeGesture = mkOption {
type = types.nullOr (types.enum [ 0 2 ]);
default = null;
description = ''
Whether to enable four-finger horizontal swipe gesture: 0 to disable, 2 to swipe between full-screen applications.
The default is 0.
'';
};

system.defaults.trackpad.TrackpadFourFingerPinchGesture = mkOption {
type = types.nullOr (types.enum [ 0 2 ]);
default = null;
description = ''
Whether to enable four-finger pinch gesture (spread shows the Desktop, pinch shows the Launchpad): 0 to disable, 2 to enable.
The default is 0.
This setting interacts with `system.defaults.dock.showDesktopGestureEnabled` and `system.defaults.dock.showLaunchpadGestureEnabled` to determine whether gestures are enabled for the Desktop, Launchpad, or both.
'';
};

system.defaults.trackpad.TrackpadFourFingerVertSwipeGesture = mkOption {
type = types.nullOr (types.enum [ 0 2 ]);
default = null;
description = ''
0 to disable four finger vertical swipe gestures, 2 to enable (down for Mission Control, up for App Exposé).
The default is 2.
When both three- and four-finger vertical swipe gestures are enabled, the three-finger variant takes precedence. This setting interacts with `system.defaults.dock.showAppExposeGestureEnabled` and `system.defaults.dock.showMissionControlGestureEnabled` to determine whether vertical swipe gestures are enabled for App Exposé, Mission Control, or both.
'';
};

system.defaults.trackpad.TrackpadMomentumScroll = mkOption {
type = types.nullOr types.bool;
default = null;
description = ''
Whether to use inertia when scrolling. The default is true.
'';
};

system.defaults.trackpad.TrackpadPinch = mkOption {
type = types.nullOr types.bool;
default = null;
description = ''
Whether to enable two-finger pinch gesture for zooming in and out.
The default is false.
'';
};

system.defaults.trackpad.TrackpadRotate = mkOption {
type = types.nullOr types.bool;
default = null;
description = ''
Whether to enable two-finger rotation gesture. The default is false.
'';
};

system.defaults.trackpad.TrackpadThreeFingerHorizSwipeGesture = mkOption {
type = types.nullOr (types.enum [ 0 1 2 ]);
default = null;
description = ''
Whether to enable three-finger horizontal swipe gesture: 0 to disable, 1 to swipe between pages, 2 to swipe between full-screen applications.
The default is 2.
'';
};

system.defaults.trackpad.TrackpadThreeFingerVertSwipeGesture = mkOption {
type = types.nullOr (types.enum [ 0 2 ]);
default = null;
description = ''
Whether to enable three-finger vertical swipe gesture (down for Mission Control, up for App Exposé): 0 to disable, 2 to enable.
The default is 2.
This setting interacts with `system.defaults.dock.showAppExposeGestureEnabled` and `system.defaults.dock.showMissionControlGestureEnabled` to determine whether vertical swipe gestures are enabled for App Exposé, Mission Control, or both.
'';
};

system.defaults.trackpad.TrackpadTwoFingerDoubleTapGesture = mkOption {
type = types.nullOr types.bool;
default = null;
description = ''
Whether to enable smart zoom when double-tapping with two fingers.
The default is false.
'';
};

system.defaults.trackpad.TrackpadTwoFingerFromRightEdgeSwipeGesture = mkOption {
type = types.nullOr (types.enum [ 0 3 ]);
default = null;
description = ''
Whether to enable two-finger swipe-from-right-edge gesture: 0 to disable, 3 to open Notification Center.
The default is 0.
'';
};

};
}

0 comments on commit ed15697

Please sign in to comment.