controller: add auto-connect service
This commit is contained in:
		
							parent
							
								
									628c1f0e11
								
							
						
					
					
						commit
						5f12c128e4
					
				
					 3 changed files with 48 additions and 12 deletions
				
			
		
							
								
								
									
										26
									
								
								scripts/auto_connect_gamepad
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										26
									
								
								scripts/auto_connect_gamepad
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,26 @@
 | 
			
		|||
#!/bin/sh
 | 
			
		||||
 | 
			
		||||
list_paired_controllers() {
 | 
			
		||||
    bluetoothctl devices Paired | grep -i 'controller' | cut -d' ' -f2
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
count_connected_controllers() {
 | 
			
		||||
    bluetoothctl devices Connected | grep -i 'controller' | wc -l
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
try_to_connect_to_all_controllers() {
 | 
			
		||||
    list_paired_controllers | while read paired_controller; do
 | 
			
		||||
        echo "Trying to connect to controller $paired_controller"
 | 
			
		||||
        bluetoothctl connect "$paired_controller"
 | 
			
		||||
    done
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
while true; do
 | 
			
		||||
    echo "looping"
 | 
			
		||||
    if test "$(count_connected_controllers)" -ne 0 ; then
 | 
			
		||||
        echo "there is a controller connected, not attempting to connect to any other"
 | 
			
		||||
        sleep 10s
 | 
			
		||||
        continue
 | 
			
		||||
    fi
 | 
			
		||||
    try_to_connect_to_all_controllers
 | 
			
		||||
done
 | 
			
		||||
| 
						 | 
				
			
			@ -125,6 +125,11 @@
 | 
			
		|||
      zbar
 | 
			
		||||
      wl-clipboard
 | 
			
		||||
    ];
 | 
			
		||||
    auto_connect_gamepad = [
 | 
			
		||||
      bluez
 | 
			
		||||
      coreutils
 | 
			
		||||
      gnugrep
 | 
			
		||||
    ];
 | 
			
		||||
  }
 | 
			
		||||
  // lib.mapAttrs import_script {
 | 
			
		||||
    wdmenu = ./wdmenu.nix;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,17 +1,22 @@
 | 
			
		|||
{ pkgs, lib, ... }:
 | 
			
		||||
{
 | 
			
		||||
  config,
 | 
			
		||||
  pkgs,
 | 
			
		||||
  lib,
 | 
			
		||||
  inputs,
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
{
 | 
			
		||||
  xdg.desktopEntries = {
 | 
			
		||||
    connect-controller = {
 | 
			
		||||
      name = "Connect Controller";
 | 
			
		||||
      exec = "bluetoothctl connect 84:30:95:97:1A:79";
 | 
			
		||||
      terminal = false;
 | 
			
		||||
  systemd.user.services = {
 | 
			
		||||
    autoconnect-gamepad = {
 | 
			
		||||
      Unit = {
 | 
			
		||||
        Description = "Attempt to connect to game controllers";
 | 
			
		||||
        PartOf = [ "graphical-session.target" ];
 | 
			
		||||
        After = [ "graphical-session.target" ];
 | 
			
		||||
      };
 | 
			
		||||
      Service = {
 | 
			
		||||
        ExecStart = lib.getExe pkgs.auto_connect_gamepad;
 | 
			
		||||
      };
 | 
			
		||||
      Install = {
 | 
			
		||||
        WantedBy = [ "sway-session.target" ];
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  xdg.desktopEntries = {
 | 
			
		||||
    disconnect-controller = {
 | 
			
		||||
      name = "Disconnect Controller";
 | 
			
		||||
      exec = "bluetoothctl disconnect 84:30:95:97:1A:79";
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue