Skip to content

Commit 043133d

Browse files
committed
Fix kanata
1 parent ab1b484 commit 043133d

2 files changed

Lines changed: 53 additions & 12 deletions

File tree

macos/build/05-00-kanata

Lines changed: 33 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,25 +10,48 @@ if ! command_exists kanata; then
1010
exit 0
1111
fi
1212

13-
log_step "Deploying kanata configuration"
13+
log_step "Validating kanata configuration"
14+
NEW_CONFIG="$SYSTEM_DIR/config/kanata/iso-us-international.kbd"
15+
16+
# Basic validation: check if file exists and is not empty
17+
if [[ ! -f "$NEW_CONFIG" ]]; then
18+
log_error "Config file not found: $NEW_CONFIG"
19+
exit 1
20+
fi
21+
22+
if [[ ! -s "$NEW_CONFIG" ]]; then
23+
log_error "Config file is empty: $NEW_CONFIG"
24+
exit 1
25+
fi
1426

27+
log_info "Config file validation passed"
28+
29+
log_step "Deploying kanata configuration"
1530
CONFIG_DIR="$HOME/.config/kanata"
1631
mkdir -p "$CONFIG_DIR"
1732

18-
cp "$SYSTEM_DIR/config/kanata/iso-us-international.kbd" "$CONFIG_DIR/config.kbd"
33+
cp "$NEW_CONFIG" "$CONFIG_DIR/config.kbd"
1934
log_success "Configuration deployed to $CONFIG_DIR/config.kbd"
2035

2136
KANATA_PLIST="/Library/LaunchDaemons/com.kanata.plist"
2237
if [[ -f "$KANATA_PLIST" ]]; then
23-
log_step "Starting kanata service"
24-
25-
if sudo launchctl list | grep -q "com.kanata"; then
26-
log_info "Reloading kanata service"
27-
sudo launchctl unload "$KANATA_PLIST" 2>/dev/null || true
38+
log_step "Restarting kanata service"
39+
40+
# Bootout (unload) - will fail silently if not loaded
41+
sudo launchctl bootout system "$KANATA_PLIST" 2>/dev/null || true
42+
sleep 0.5
43+
44+
# Bootstrap (load and start)
45+
if sudo launchctl bootstrap system "$KANATA_PLIST" 2>/dev/null; then
46+
log_success "kanata service restarted (passwordless sudo)"
47+
else
48+
# Try kickstart if already loaded
49+
if sudo launchctl kickstart -k system/com.kanata 2>/dev/null; then
50+
log_success "kanata service restarted via kickstart"
51+
else
52+
log_warning "Could not restart service - may need manual intervention"
53+
fi
2854
fi
29-
30-
sudo launchctl load "$KANATA_PLIST"
31-
log_success "kanata service started"
3255
else
3356
log_warning "kanata LaunchDaemon not found"
3457
log_info "Run 'dot install kanata' to set up the launch service"

macos/install/05-10-kanata

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -202,18 +202,36 @@ sudo tee "$KANATA_PLIST" > /dev/null << EOF
202202
</plist>
203203
EOF
204204

205-
# Set correct permissions
206205
sudo chmod 644 "$KANATA_PLIST"
207206
sudo chown root:wheel "$KANATA_PLIST"
208207

209208
log_success "kanata LaunchDaemon created"
209+
210+
# Set up passwordless sudo for kanata service management
211+
log_step "Setting up passwordless sudo for kanata management"
212+
SUDOERS_FILE="/etc/sudoers.d/kanata"
213+
214+
sudo tee "$SUDOERS_FILE" > /dev/null << 'SUDOEOF'
215+
# Allow passwordless sudo for kanata service management
216+
%admin ALL=(root) NOPASSWD: /bin/launchctl bootout system /Library/LaunchDaemons/com.kanata.plist
217+
%admin ALL=(root) NOPASSWD: /bin/launchctl bootstrap system /Library/LaunchDaemons/com.kanata.plist
218+
%admin ALL=(root) NOPASSWD: /bin/launchctl kickstart -k system/com.kanata
219+
SUDOEOF
220+
221+
sudo chmod 440 "$SUDOERS_FILE"
222+
log_success "Sudoers configured for passwordless kanata management"
210223
log_info "kanata will start automatically after 'dot build kanata' deploys the config"
211224

212225
echo ""
213226
log_warning "IMPORTANT: Kanata requires system permissions"
214227
log_info "1. Approve the Karabiner extension in System Settings > Privacy & Security if needed"
215228
log_info "2. Restart your Mac if prompted"
216-
log_info "3. Grant Input Monitoring permissions to your terminal app (e.g., Ghostty)"
229+
log_info "3. Grant Input Monitoring permissions to: $KANATA_PATH"
230+
log_info " Go to: System Settings > Privacy & Security > Input Monitoring"
217231
log_info "4. Run 'dot build kanata' to deploy configuration and start kanata"
232+
log_info ""
233+
log_info "Manage kanata service without password:"
234+
log_info " sudo launchctl bootout system /Library/LaunchDaemons/com.kanata.plist"
235+
log_info " sudo launchctl bootstrap system /Library/LaunchDaemons/com.kanata.plist"
218236
echo ""
219237

0 commit comments

Comments
 (0)