Last active
June 7, 2026 08:02
-
-
Save PhrozenByte/0304ebf47e2f2cdce68e09f69bc2c75c to your computer and use it in GitHub Desktop.
Toggles external monitors on/off.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/bin/bash | |
| # multihead.sh - Toggles external monitors on/off. | |
| # | |
| # Copyright (C) 2021 Daniel Rudolf (<https://www.daniel-rudolf.de>) | |
| # License: The MIT License <http://opensource.org/licenses/MIT> | |
| # | |
| # SPDX-License-Identifier: MIT | |
| APP_NAME="$(basename "${BASH_SOURCE[0]}")" | |
| ACTION="toggle" | |
| while [ $# -gt 0 ]; do | |
| case "$1" in | |
| "--on") | |
| ACTION="on" | |
| ;; | |
| "--off") | |
| ACTION="off" | |
| ;; | |
| "--toggle") | |
| ACTION="toggle" | |
| ;; | |
| "--help") | |
| echo "Usage:" | |
| echo " $APP_NAME [--toggle|--on|--off]" | |
| exit 0 | |
| ;; | |
| *) | |
| echo "$APP_NAME: Invalid option: $1" >&2 | |
| exit 1 | |
| ;; | |
| esac | |
| shift | |
| done | |
| CARD="card1" | |
| INTERNAL="eDP-1" | |
| EXTERNALS=() | |
| EXTERNALS_ACTIVE=() | |
| for DIR in /sys/class/drm/"$CARD"-*; do | |
| SOURCE="$(basename "$DIR")" | |
| SOURCE="${SOURCE:${#CARD}+1}" | |
| if [ "$SOURCE" == "$INTERNAL" ]; then | |
| continue | |
| fi | |
| EXTERNALS+=( "$SOURCE" ) | |
| if [ "$(cat "$DIR/status")" == "connected" ]; then | |
| EXTERNALS_ACTIVE+=( "$SOURCE" ) | |
| fi | |
| done | |
| if [ "$ACTION" == "toggle" ]; then | |
| if [ ${#EXTERNALS_ACTIVE[@]} -gt 0 ]; then | |
| ACTION="off" | |
| else | |
| ACTION="on" | |
| fi | |
| fi | |
| if [ "$ACTION" == "off" ]; then | |
| for SOURCE in "${EXTERNALS_ACTIVE[@]}"; do | |
| echo "Turning off $SOURCE..." | |
| echo off > "/sys/class/drm/$CARD-$SOURCE/status" | |
| done | |
| else | |
| for SOURCE in "${EXTERNALS[@]}"; do | |
| echo -n "Probing $SOURCE... " | |
| echo detect > "/sys/class/drm/$CARD-$SOURCE/status" | |
| cat "/sys/class/drm/$CARD-$SOURCE/status" | |
| done | |
| fi |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| [Desktop Entry] | |
| Version=1.0 | |
| Terminal=false | |
| Icon=multihead | |
| Type=Application | |
| Categories=System;Settings;HardwareSettings; | |
| Exec=sudo multihead | |
| Name=Toggle External Monitors | |
| Name[de]=Externe Bildschirme umschalten | |
| Comment=Toggle external monitors on/off | |
| Comment[de]=Schalte externe Bildschirme an/aus | |
| Keywords=Panel;Projector;xrandr;Screen; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment




