From 077b740afd82c18ef91c86cceaa7913de48023bd Mon Sep 17 00:00:00 2001 From: tiopex Date: Tue, 4 Nov 2025 22:34:37 +0100 Subject: [PATCH] Dual-screen mode across all devices --- .../standalone/azahar-sa/scripts/start_azahar.sh | 9 --------- .../standalone/melonds-sa/config/RK3399/melonDS.ini | 3 +++ .../standalone/melonds-sa/config/RK3566/melonDS.ini | 3 +++ .../standalone/melonds-sa/config/RK3588/melonDS.ini | 3 +++ .../standalone/melonds-sa/config/S922X/melonDS.ini | 3 +++ .../standalone/melonds-sa/config/SDM845/melonDS.ini | 3 +++ .../standalone/melonds-sa/config/SM8250/melonDS.ini | 3 +++ .../standalone/melonds-sa/scripts/start_melonds.sh | 9 --------- .../{platforms/SM8550 => autostart}/080-dual_screen_mode | 2 +- .../wayland/compositor/sway/autostart/111-sway-init | 7 +++++++ 10 files changed, 26 insertions(+), 19 deletions(-) rename projects/ROCKNIX/packages/hardware/quirks/{platforms/SM8550 => autostart}/080-dual_screen_mode (79%) diff --git a/projects/ROCKNIX/packages/emulators/standalone/azahar-sa/scripts/start_azahar.sh b/projects/ROCKNIX/packages/emulators/standalone/azahar-sa/scripts/start_azahar.sh index fde4d6cd14..c7c8cec7aa 100755 --- a/projects/ROCKNIX/packages/emulators/standalone/azahar-sa/scripts/start_azahar.sh +++ b/projects/ROCKNIX/packages/emulators/standalone/azahar-sa/scripts/start_azahar.sh @@ -40,15 +40,6 @@ if [ "${HW_DEVICE}" = "RK3588" ] && [ ! -f "${CONF_FILE}" ]; then fi fi -# Move the secondary window to the second output -if [ "${DEVICE_HAS_DUAL_SCREEN}" = "true" ]; then - # Ensure separate windows rule exists - if ! grep -qE '^for_window \[app_id="org.azahar_emu.Azahar" title=".*Secondary Window.*"\] move window to output DSI-1$' "${SWAY_CONFIG}"; then - echo 'for_window [app_id="org.azahar_emu.Azahar" title=".*Secondary Window.*"] move window to output DSI-1' >> "${SWAY_CONFIG}" - swaymsg reload - fi -fi - # Make sure QT config file exists [ ! -f "${CONF_FILE}" ] && cp ${IMMUTABLE_CONF_DIR}/qt-config.ini ${CONF_DIR} diff --git a/projects/ROCKNIX/packages/emulators/standalone/melonds-sa/config/RK3399/melonDS.ini b/projects/ROCKNIX/packages/emulators/standalone/melonds-sa/config/RK3399/melonDS.ini index 2dbc9ffcbd..ee9f050ea2 100644 --- a/projects/ROCKNIX/packages/emulators/standalone/melonds-sa/config/RK3399/melonDS.ini +++ b/projects/ROCKNIX/packages/emulators/standalone/melonds-sa/config/RK3399/melonDS.ini @@ -65,6 +65,9 @@ ScreenGap=0 ScreenLayout=2 ScreenSwap=1 ScreenSizing=0 +Screen1Layout=2 +Screen1Enabled=false +Screen1Sizing=5 IntegerScaling=0 ScreenAspectTop=0 ScreenAspectBot=0 diff --git a/projects/ROCKNIX/packages/emulators/standalone/melonds-sa/config/RK3566/melonDS.ini b/projects/ROCKNIX/packages/emulators/standalone/melonds-sa/config/RK3566/melonDS.ini index 11f8c35646..97f425d84b 100644 --- a/projects/ROCKNIX/packages/emulators/standalone/melonds-sa/config/RK3566/melonDS.ini +++ b/projects/ROCKNIX/packages/emulators/standalone/melonds-sa/config/RK3566/melonDS.ini @@ -65,6 +65,9 @@ ScreenGap=0 ScreenLayout=2 ScreenSwap=1 ScreenSizing=0 +Screen1Layout=2 +Screen1Enabled=false +Screen1Sizing=5 IntegerScaling=0 ScreenAspectTop=0 ScreenAspectBot=0 diff --git a/projects/ROCKNIX/packages/emulators/standalone/melonds-sa/config/RK3588/melonDS.ini b/projects/ROCKNIX/packages/emulators/standalone/melonds-sa/config/RK3588/melonDS.ini index 8ebf639a17..a084d0986b 100644 --- a/projects/ROCKNIX/packages/emulators/standalone/melonds-sa/config/RK3588/melonDS.ini +++ b/projects/ROCKNIX/packages/emulators/standalone/melonds-sa/config/RK3588/melonDS.ini @@ -65,6 +65,9 @@ ScreenGap=0 ScreenLayout=2 ScreenSwap=0 ScreenSizing=3 +Screen1Layout=2 +Screen1Enabled=false +Screen1Sizing=5 IntegerScaling=0 ScreenAspectTop=0 ScreenAspectBot=0 diff --git a/projects/ROCKNIX/packages/emulators/standalone/melonds-sa/config/S922X/melonDS.ini b/projects/ROCKNIX/packages/emulators/standalone/melonds-sa/config/S922X/melonDS.ini index b3b9e5663d..a38e4e9032 100644 --- a/projects/ROCKNIX/packages/emulators/standalone/melonds-sa/config/S922X/melonDS.ini +++ b/projects/ROCKNIX/packages/emulators/standalone/melonds-sa/config/S922X/melonDS.ini @@ -65,6 +65,9 @@ ScreenGap=0 ScreenLayout=2 ScreenSwap=0 ScreenSizing=1 +Screen1Layout=2 +Screen1Enabled=false +Screen1Sizing=5 IntegerScaling=0 ScreenAspectTop=0 ScreenAspectBot=0 diff --git a/projects/ROCKNIX/packages/emulators/standalone/melonds-sa/config/SDM845/melonDS.ini b/projects/ROCKNIX/packages/emulators/standalone/melonds-sa/config/SDM845/melonDS.ini index 7ddf471faf..0e6240e424 100644 --- a/projects/ROCKNIX/packages/emulators/standalone/melonds-sa/config/SDM845/melonDS.ini +++ b/projects/ROCKNIX/packages/emulators/standalone/melonds-sa/config/SDM845/melonDS.ini @@ -65,6 +65,9 @@ ScreenGap=0 ScreenLayout=2 ScreenSwap=0 ScreenSizing=0 +Screen1Layout=2 +Screen1Enabled=false +Screen1Sizing=5 IntegerScaling=0 ScreenAspectTop=0 ScreenAspectBot=0 diff --git a/projects/ROCKNIX/packages/emulators/standalone/melonds-sa/config/SM8250/melonDS.ini b/projects/ROCKNIX/packages/emulators/standalone/melonds-sa/config/SM8250/melonDS.ini index 1e522db636..dfe301a421 100644 --- a/projects/ROCKNIX/packages/emulators/standalone/melonds-sa/config/SM8250/melonDS.ini +++ b/projects/ROCKNIX/packages/emulators/standalone/melonds-sa/config/SM8250/melonDS.ini @@ -65,6 +65,9 @@ ScreenGap=0 ScreenLayout=2 ScreenSwap=1 ScreenSizing=0 +Screen1Layout=2 +Screen1Enabled=false +Screen1Sizing=5 IntegerScaling=0 ScreenAspectTop=0 ScreenAspectBot=0 diff --git a/projects/ROCKNIX/packages/emulators/standalone/melonds-sa/scripts/start_melonds.sh b/projects/ROCKNIX/packages/emulators/standalone/melonds-sa/scripts/start_melonds.sh index 1b7c71fb37..4c377462ec 100644 --- a/projects/ROCKNIX/packages/emulators/standalone/melonds-sa/scripts/start_melonds.sh +++ b/projects/ROCKNIX/packages/emulators/standalone/melonds-sa/scripts/start_melonds.sh @@ -29,15 +29,6 @@ if [ ! -f "${CONF_DIR}/melonDS.gptk" ]; then cp -r "/usr/config/melonDS/melonDS.gptk" "${CONF_DIR}/melonDS.gptk" fi -# Move the secondary window to the second output -if [ "${DEVICE_HAS_DUAL_SCREEN}" = "true" ]; then - # Ensure separate windows rule exists - if ! grep -qE '^for_window [class="melonDS" title=".*\[w2\]*"] move window to output DSI-1$' "${SWAY_CONFIG}"; then - echo 'for_window [class="melonDS" title=".*\[w2\]*"] move window to output DSI-1' >> "${SWAY_CONFIG}" - swaymsg reload - fi -fi - #Emulation Station Features GAME=$(echo "${1}" | sed "s#^/.*/##") PLATFORM=$(echo "${2}"| sed "s#^/.*/##") diff --git a/projects/ROCKNIX/packages/hardware/quirks/platforms/SM8550/080-dual_screen_mode b/projects/ROCKNIX/packages/hardware/quirks/autostart/080-dual_screen_mode similarity index 79% rename from projects/ROCKNIX/packages/hardware/quirks/platforms/SM8550/080-dual_screen_mode rename to projects/ROCKNIX/packages/hardware/quirks/autostart/080-dual_screen_mode index 41d7badfa6..972bb1568f 100644 --- a/projects/ROCKNIX/packages/hardware/quirks/platforms/SM8550/080-dual_screen_mode +++ b/projects/ROCKNIX/packages/hardware/quirks/autostart/080-dual_screen_mode @@ -2,7 +2,7 @@ # SPDX-License-Identifier: GPL-2.0 # Copyright (C) 2024 ROCKNIX (https://github.com/ROCKNIX) -count=$(modetest | awk '$3=="connected" && $4 ~ /^DSI/ {print $0}' | wc -l) +count=$(modetest | awk '$3 == "connected" {print $0}' | wc -l) if [ "$count" -eq 2 ]; then dual_screen=true diff --git a/projects/ROCKNIX/packages/wayland/compositor/sway/autostart/111-sway-init b/projects/ROCKNIX/packages/wayland/compositor/sway/autostart/111-sway-init index 2ab8a91ea4..befb4c1314 100755 --- a/projects/ROCKNIX/packages/wayland/compositor/sway/autostart/111-sway-init +++ b/projects/ROCKNIX/packages/wayland/compositor/sway/autostart/111-sway-init @@ -37,6 +37,7 @@ echo "WLR_BACKENDS=drm,libinput" >> ${env_file} # Scan connectors card=/sys/class/drm/card${card_no} +connected_cons=() for connector in ${card}/card${card_no}*/ do status=$(cat ${connector}/status) @@ -49,6 +50,7 @@ do # Simply prioritize later connectors, meaning HDMI/DP priority con=$(basename $connector) con=${con: +6} + connected_cons+=("$con") fi done @@ -102,3 +104,8 @@ if hexdump -C /sys/class/drm/card0-DP-1/edid | grep -q "Lontium"; then echo "input \"8746:1:RetroidPocket_RDS_Touchscreen\" map_to_output DP-1" >> $SWAY_HOME/config echo "input \"8746:1:RetroidPocket_RDS_Touchscreen\" calibration_matrix 0 1 0 -1 0 1" >> $SWAY_HOME/config fi + +# Move the secondary window to the second output +if [ "${DEVICE_HAS_DUAL_SCREEN}" = "true" ]; then + echo 'for_window [title=".*(Secondary|\[w2\]|Sub|Bottom|Screen 2|GamePad).*"] move window to output '"${connected_cons[0]}" >> $SWAY_HOME/config +fi