Как масштаб дисплея изменения из командной строки в Ubuntu 18.04 (Xorg)

Я пытаюсь войти в командную строку тот же эффект как изменение масштабного коэффициента дисплея от Центра управления Gnome.

Я попробовал следующую команду, но она не имеет никакого эффекта:

gsettings устанавливают org.gnome.desktop.interface масштабный коэффициент 2

Мне нужна эта команда для создания своего рода дробного масштабного коэффициента с комбинацией xrandx и масштабного коэффициента в Центре управления Gnome. С тех пор выполнение xrandr сбрасывает масштабный коэффициент в Центре управления Gnome, мне была бы нужна команда для восстановления значения в Центре управления Gnome.

Любое предложение приветствуется.Заранее спасибо.

1
задан 13 May 2018 в 17:19

2 ответа

Определите свое устройство вывода (мое - DP-1) путем выполнения xrandr самостоятельно, затем используйте это:

gsettings set org.gnome.desktop.interface scaling-factor 2
gsettings set org.gnome.settings-daemon.plugins.xsettings overrides "{'Gdk/WindowScalingFactor': <2>}"
xrandr --output DP-1 --scale 1.5x1.5
xrandr --output DP-1 --panning 3840x2160
1
ответ дан 7 December 2019 в 15:19

Глядя на исходный код gnome-control-center, это оказывается настроиться через dbus. Вот скрипт для переключения между 100% и 200% в конфигурации с одним монитором.

#!/usr/bin/python3
# Note: use system python3, not /usr/bin/env, because whichever python3 is on
# $PATH may not have dbus, but the system python3 does.

"""Toggle display scaling between 100% and 200%.

Based on https://gist.github.com/strycore/ca11203fd63cafcac76d4b04235d8759

For data structure definitions, see
https://gitlab.gnome.org/GNOME/mutter/blob/master/src/org.gnome.Mutter.DisplayConfig.xml
"""

import dbus

namespace = "org.gnome.Mutter.DisplayConfig"
dbus_path = "/org/gnome/Mutter/DisplayConfig"

session_bus = dbus.SessionBus()
obj = session_bus.get_object(namespace, dbus_path)
interface = dbus.Interface(obj, dbus_interface=namespace)

current_state = interface.GetCurrentState()
serial = current_state[0]
connected_monitors = current_state[1]
logical_monitors = current_state[2]

# Multiple monitors are more complicated. For now, since I only use one monitor
# in Ubuntu, everything is hard-coded so that only info about the first monitor
# is used, and only it will be connected after running the script.
#
# If someday updating this script: a logical monitor may appear on mutiple
# connected monitors due to mirroring.
connector = connected_monitors[0][0][0]
current_mode = None
# ApplyMonitorsConfig() needs (connector name, mode ID) for each connected
# monitor of a logical monitor, but GetCurrentState() only returns the
# connector name for each connected monitor of a logical monitor. So iterate
# through the globally connected monitors to find the mode ID.
for mode in connected_monitors[0][1]:
    if mode[6].get("is-current", False):
        current_mode = mode[0]
updated_connected_monitors = [[connector, current_mode, {}]]

x, y, scale, transform, primary, monitors, props = logical_monitors[0]
scale = 2.0 if scale == 1.0 else 1.0

monitor_config = [[x, y, scale, transform, primary, updated_connected_monitors]]

# Change the 1 to a 2 if you want a "Revert Settings / Keep Changes" dialog
interface.ApplyMonitorsConfig(serial, 1, monitor_config, {})
2
ответ дан 15 August 2020 в 01:46

Другие вопросы по тегам:

Похожие вопросы: