You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ublinux-init/ublinux/rc.xorg/20-video-xorg-dpi

113 lines
3.7 KiB

#!/usr/bin/env bash
#
# Author: Dmitry Razumov <asmeron@ublinux.com>
# Copyright (c) 2021-2025 UBLinux <support@ublinux.com>
#
ENABLED=yes
[[ ${ENABLED} == yes ]] || exit 0
unset ROOTFS; [[ -d /usr/lib/ublinux ]] || ROOTFS=.
SOURCE=${ROOTFS}/usr/lib/ublinux/functions; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0
SOURCE=${ROOTFS}/usr/lib/ublinux/default; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0
SYSCONF="${ROOTFS}${SYSCONF}"
SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null
SOURCE=${SYSCONF}/video; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null
xfce4_hidpi(){
[[ -x /usr/bin/startxfce4 ]] || return 0
if [[ $1 == @(enable|on) ]]; then
xfconf-query --channel xsettings --property /Gdk/WindowScalingFactor --create --type int --set "${SCALE}"
xfconf-query --channel xsettings --property /Gtk/CursorThemeSize --create --type int --set "${MOUSE_CURSOR}"
xfconf-query --channel xsettings --property /Xft/DPI --create --type int --set "${XORG_DPI}"
xfconf-query --channel xfwm4 --property /general/theme --create --type string --set "Default-xhdpi"
elif [[ $1 == @(disable|off) ]]; then
xfconf-query --channel xsettings --property /Gdk/WindowScalingFactor --reset
xfconf-query --channel xfwm4 --property /general/theme --reset
xfconf-query --channel xsettings --property /Gtk/CursorThemeSize --reset
xfconf-query --channel xsettings --property /Xft/DPI --reset
fi
}
plasma_hidpi(){
[[ -x /usr/bin/plasmashell ]] || return 0
if [[ $1 == @(enable|on) ]]; then
kwriteconfig5 --file kcmfonts --group General --key forceFontDPI "${XORG_DPI}"
kwriteconfig5 --file kcminputrc --group Mouse --key cursorSize "${MOUSE_CURSOR}"
kwriteconfig5 --file kdeglobals --group KScreen --key ScaleFactor "${SCALE}"
kwriteconfig5 --file kdeglobals --group KScreen --key ScreenScaleFactors "${SCALE};${SCALE};${SCALE};${SCALE};"
# ScreenScaleFactors "DP1=2;HDMI1=2;HDMI2=2;VIRTUAL1=2;"
elif [[ $1 == @(disable|off) ]]; then
kwriteconfig5 --file kcmfonts --group General --key forceFontDPI --delete
kwriteconfig5 --file kcminputrc --group Mouse --key cursorSize --delete
kwriteconfig5 --file kdeglobals --group KScreen --key ScaleFactor --delete
kwriteconfig5 --file kdeglobals --group KScreen --key ScreenScaleFactors --delete
fi
}
gnome_hidpi(){
[[ -x /usr/bin/startgnome ]] || return 0
if [[ $1 == @(enable|on) ]]; then
true
elif [[ $1 == @(disable|off) ]]; then
true
fi
}
lxde_hidpi(){
[[ -x /usr/bin/startlxde ]] || return 0
if [[ $1 == @(enable|on) ]]; then
true
elif [[ $1 == @(disable|off) ]]; then
true
fi
}
lxqt_hidpi(){
[[ -x /usr/bin/startlxqt ]] || return 0
if [[ $1 == @(enable|on) ]]; then
true
elif [[ $1 == @(disable|off) ]]; then
true
fi
}
mate_hidpi(){
[[ -x /usr/bin/startmate ]] || return 0
if [[ $1 == @(enable|on) ]]; then
true
elif [[ $1 == @(disable|off) ]]; then
true
fi
}
if [[ -n ${XORG_DPI} ]]; then
if [[ ${XORG_DPI} == @(no|disable) ]]; then
xfce4_hidpi disable
plasma_hidpi disable
gnome_hidpi disable
lxde_hidpi disable
lxqt_hidpi disable
mate_hidpi disable
return 0
elif [[ ${XORG_DPI} == auto ]]; then
XORG_DPI=192
MOUSE_CURSOR=48
SCALE=2
elif [[ ${XORG_DPI} == @(192|4K) ]]; then
XORG_DPI=192
MOUSE_CURSOR=48
SCALE=2
elif [[ ${XORG_DPI} == @(144|2K) ]]; then
XORG_DPI=144
MOUSE_CURSOR=32
SCALE=1.5
else
# Пользовательское значение XORG_DPI, остальные велечины высчитываются
MOUSE_CURSOR=28
SCALE=1
fi
xfce4_hidpi enable
plasma_hidpi enable
gnome_hidpi enable
lxde_hidpi enable
lxqt_hidpi enable
mate_hidpi enable
fi