mirror of
				https://github.com/kevinveenbirkenbach/computer-playbook.git
				synced 2025-11-04 12:18:17 +00:00 
			
		
		
		
	Activated lid switch, optimized zsh and more
This commit is contained in:
		@@ -4,3 +4,9 @@
 | 
			
		||||
    name:
 | 
			
		||||
      - gnome-terminal
 | 
			
		||||
    state: present
 | 
			
		||||
 | 
			
		||||
- name: "Set zsh as default shell for {{users.client.username}}"
 | 
			
		||||
  user:
 | 
			
		||||
    name: "{{users.client.username}}"
 | 
			
		||||
    shell: /usr/bin/zsh
 | 
			
		||||
  become: true
 | 
			
		||||
@@ -1,3 +1,38 @@
 | 
			
		||||
https://chatgpt.com/share/67ed14d0-4220-800f-a592-82513553fb97
 | 
			
		||||
https://chatgpt.com/share/67ed1520-8a54-800f-98a5-12372413994a
 | 
			
		||||
https://chatgpt.com/share/67ed158b-66d4-800f-b418-e52460c225ce
 | 
			
		||||
# Driver Lid Switch 🛑💻
 | 
			
		||||
 | 
			
		||||
## Description
 | 
			
		||||
 | 
			
		||||
This Ansible role configures lid switch behavior on Linux systems where the default behavior does not work correctly—particularly on laptops like the HP Spectre x360 14-ef2777ng running Manjaro Linux, Wayland, and GNOME. By default, closing the lid can trigger hibernation or suspend incorrectly, even while docked or on external power.
 | 
			
		||||
 | 
			
		||||
This role integrates [`setup-hibernate`](https://github.com/kevinveenbirkenbach/setup-hibernate) to configure hibernation support and sets systemd rules to define proper lid switch behavior based on power state.
 | 
			
		||||
 | 
			
		||||
## Overview
 | 
			
		||||
 | 
			
		||||
This role addresses a common issue on Linux laptops: closing the lid while docked or plugged in leads to unintended sleep or hibernation. It installs the necessary hibernation tools and updates `/etc/systemd/logind.conf` to:
 | 
			
		||||
 | 
			
		||||
- Hibernate on lid close when on battery
 | 
			
		||||
- Lock the session when on AC power or docked
 | 
			
		||||
 | 
			
		||||
## Purpose
 | 
			
		||||
 | 
			
		||||
The purpose of this role is to enforce a consistent and predictable lid switch behavior across power states, improving usability on laptops that otherwise behave unpredictably when the lid is closed.
 | 
			
		||||
 | 
			
		||||
## Features
 | 
			
		||||
 | 
			
		||||
- **Installs `setup-hibernate`:** Uses `pkgmgr` to install and initialize hibernation support.
 | 
			
		||||
- **Systemd Integration:** Applies proper `logind.conf` settings for lid switch handling.
 | 
			
		||||
- **Power-aware Configuration:** Differentiates between battery, AC power, and docked state.
 | 
			
		||||
- **Idempotent Design:** Ensures safe re-runs and minimal unnecessary restarts.
 | 
			
		||||
 | 
			
		||||
## More Ressources
 | 
			
		||||
- https://chatgpt.com/share/67ed14d0-4220-800f-a592-82513553fb97
 | 
			
		||||
- https://chatgpt.com/share/67ed1520-8a54-800f-98a5-12372413994a
 | 
			
		||||
- https://chatgpt.com/share/67ed158b-66d4-800f-b418-e52460c225ce
 | 
			
		||||
 | 
			
		||||
## Credits 📝
 | 
			
		||||
 | 
			
		||||
Developed and maintained by **Kevin Veen-Birkenbach**.  
 | 
			
		||||
Learn more at [www.veen.world](https://www.veen.world)
 | 
			
		||||
 | 
			
		||||
Part of the [CyMaIS Project](https://github.com/kevinveenbirkenbach/cymais)  
 | 
			
		||||
License: [CyMaIS NonCommercial License (CNCL)](https://s.veen.world/cncl)
 | 
			
		||||
							
								
								
									
										27
									
								
								roles/driver-lid-switch/meta/main.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								roles/driver-lid-switch/meta/main.yml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,27 @@
 | 
			
		||||
---
 | 
			
		||||
galaxy_info:
 | 
			
		||||
  author: "Kevin Veen-Birkenbach"
 | 
			
		||||
  description: "Fixes incorrect lid switch behavior on Linux laptops by setting up hibernation and configuring systemd."
 | 
			
		||||
  license: "CyMaIS NonCommercial License (CNCL)"
 | 
			
		||||
  license_url: "https://s.veen.world/cncl"
 | 
			
		||||
  company: |
 | 
			
		||||
    Kevin Veen-Birkenbach
 | 
			
		||||
    Consulting & Coaching Solutions
 | 
			
		||||
    https://www.veen.world
 | 
			
		||||
  min_ansible_version: "2.9"
 | 
			
		||||
  platforms:
 | 
			
		||||
    - name: Archlinux
 | 
			
		||||
      versions:
 | 
			
		||||
        - rolling
 | 
			
		||||
  galaxy_tags:
 | 
			
		||||
    - lid
 | 
			
		||||
    - laptop
 | 
			
		||||
    - power
 | 
			
		||||
    - hibernate
 | 
			
		||||
    - systemd
 | 
			
		||||
    - archlinux
 | 
			
		||||
  repository: https://s.veen.world/cymais
 | 
			
		||||
  issue_tracker_url: https://s.veen.world/cymaisissues
 | 
			
		||||
  documentation: https://s.veen.world/cymais
 | 
			
		||||
dependencies:
 | 
			
		||||
  - role: package-manager
 | 
			
		||||
@@ -1,5 +1,14 @@
 | 
			
		||||
---
 | 
			
		||||
- name: Set HandleLidSwitch to hibernate in /etc/systemd/logind.conf
 | 
			
		||||
- name: install setup-hibernate
 | 
			
		||||
  command:
 | 
			
		||||
    cmd: "pkgmgr install setup-hibernate --clone-mode https"
 | 
			
		||||
  become: true
 | 
			
		||||
 | 
			
		||||
- name: Setup hibernate
 | 
			
		||||
  command: setup-hibernate --non-interactive
 | 
			
		||||
  become: true
 | 
			
		||||
 | 
			
		||||
- name: Configure systemd lid switch behavior to hibernate on lid close (battery), lock on AC and docked
 | 
			
		||||
  become: yes
 | 
			
		||||
  lineinfile:
 | 
			
		||||
    path: /etc/systemd/logind.conf
 | 
			
		||||
@@ -7,3 +16,24 @@
 | 
			
		||||
    line: 'HandleLidSwitch=hibernate'
 | 
			
		||||
    backup: yes
 | 
			
		||||
  notify: Restart systemd-logind
 | 
			
		||||
  become: true
 | 
			
		||||
 | 
			
		||||
- name: Configure systemd to lock session when lid is closed on external power
 | 
			
		||||
  become: yes
 | 
			
		||||
  lineinfile:
 | 
			
		||||
    path: /etc/systemd/logind.conf
 | 
			
		||||
    regexp: '^#?HandleLidSwitchExternalPower='
 | 
			
		||||
    line: 'HandleLidSwitchExternalPower=lock'
 | 
			
		||||
    backup: yes
 | 
			
		||||
  notify: Restart systemd-logind
 | 
			
		||||
  become: true
 | 
			
		||||
 | 
			
		||||
- name: Configure systemd to lock session when lid is closed while docked
 | 
			
		||||
  become: yes
 | 
			
		||||
  lineinfile:
 | 
			
		||||
    path: /etc/systemd/logind.conf
 | 
			
		||||
    regexp: '^#?HandleLidSwitchDocked='
 | 
			
		||||
    line: 'HandleLidSwitchDocked=lock'
 | 
			
		||||
    backup: yes
 | 
			
		||||
  notify: Restart systemd-logind
 | 
			
		||||
  become: true
 | 
			
		||||
@@ -10,6 +10,5 @@
 | 
			
		||||
      - wine-gecko
 | 
			
		||||
      - wine-mono
 | 
			
		||||
      - winetricks
 | 
			
		||||
      - lib32-wine
 | 
			
		||||
    state: present
 | 
			
		||||
    update_cache: yes
 | 
			
		||||
 
 | 
			
		||||
@@ -84,6 +84,8 @@
 | 
			
		||||
  include_role:
 | 
			
		||||
    name: client-wireguard
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
## backup setup
 | 
			
		||||
- name: setup replica backup hosts
 | 
			
		||||
  when: ("backup_remote_to_local" in group_names)
 | 
			
		||||
@@ -106,6 +108,12 @@
 | 
			
		||||
  include_role:
 | 
			
		||||
    name: driver-epson-multiprinter
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
- name: setup hibernate lid switch
 | 
			
		||||
  when: ("driver-lid-switch" in group_names)
 | 
			
		||||
  include_role:
 | 
			
		||||
    name: driver-lid-switch
 | 
			
		||||
 | 
			
		||||
## system setup 
 | 
			
		||||
- name: setup swapfile hosts
 | 
			
		||||
  when: ("swapfile" in group_names)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user