diff -Nuar startdde-5.9.61/display/display.go startdde-5.9.61.new/display/display.go
--- startdde-5.9.61/display/display.go	2022-12-09 11:19:18.000000000 +0800
+++ startdde-5.9.61.new/display/display.go	2023-04-13 09:51:43.128038184 +0800
@@ -119,7 +119,7 @@
 	m.initTouchscreens()
 
 	if !_greeterMode {
-		controlRedshift("disable")
+		//controlRedshift("disable")
 		m.applyColorTempConfig(m.DisplayMode)
 	}
 
diff -Nuar startdde-5.9.61/.history/display/display_20221209111917.go startdde-5.9.61.new/.history/display/display_20221209111917.go
--- startdde-5.9.61/.history/display/display_20221209111917.go	1970-01-01 08:00:00.000000000 +0800
+++ startdde-5.9.61.new/.history/display/display_20221209111917.go	2023-04-13 09:51:43.124036951 +0800
@@ -0,0 +1,131 @@
+// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd.
+//
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+package display
+
+import (
+	"errors"
+	"reflect"
+
+	"github.com/godbus/dbus"
+	sysdisplay "github.com/linuxdeepin/go-dbus-factory/com.deepin.system.display"
+	"github.com/linuxdeepin/go-lib/dbusutil"
+	"github.com/linuxdeepin/go-lib/log"
+)
+
+var logger = log.NewLogger("daemon/display")
+
+const (
+	dbusServiceName = "com.deepin.daemon.Display"
+	dbusInterface   = "com.deepin.daemon.Display"
+	dbusPath        = "/com/deepin/daemon/Display"
+)
+
+var _dpy *Manager
+
+var _greeterMode bool
+
+func SetGreeterMode(val bool) {
+	_greeterMode = val
+}
+
+type scaleFactorsHelper struct {
+	changedCb func(factors map[string]float64) error
+}
+
+// ScaleFactorsHelper 全局的 scale factors 相关 helper，要传给 xsettings 模块。
+var ScaleFactorsHelper scaleFactorsHelper
+
+// 用于在 display.Start 还没被调用时，先由 xsettings.Start 调用了 ScaleFactorsHelper.SetScaleFactors, 缓存数据。
+var _scaleFactors map[string]float64
+
+func (h *scaleFactorsHelper) SetScaleFactors(factors map[string]float64) error {
+	if _dpy == nil {
+		_scaleFactors = factors
+		return nil
+	}
+	return _dpy.setScaleFactors(factors)
+}
+
+func (h *scaleFactorsHelper) GetScaleFactors() (map[string]float64, error) {
+	sysBus, err := dbus.SystemBus()
+	if err != nil {
+		return nil, err
+	}
+	sysDisplay := sysdisplay.NewDisplay(sysBus)
+	cfgJson, err := sysDisplay.GetConfig(0)
+	if err != nil {
+		return nil, err
+	}
+	var rootCfg struct {
+		Config struct {
+			ScaleFactors map[string]float64
+		}
+	}
+	err = jsonUnmarshal(cfgJson, &rootCfg)
+	if err != nil {
+		return nil, err
+	}
+	return rootCfg.Config.ScaleFactors, nil
+}
+
+func (h *scaleFactorsHelper) SetChangedCb(fn func(factors map[string]float64) error) {
+	h.changedCb = fn
+}
+
+func (m *Manager) setScaleFactors(factors map[string]float64) error {
+	logger.Debug("setScaleFactors", factors)
+	m.sysConfig.mu.Lock()
+	defer m.sysConfig.mu.Unlock()
+
+	if reflect.DeepEqual(m.sysConfig.Config.ScaleFactors, factors) {
+		return nil
+	}
+	m.sysConfig.Config.ScaleFactors = factors
+	err := m.saveSysConfigNoLock("scale factors changed")
+	if err != nil {
+		logger.Warning(err)
+	}
+	return err
+}
+
+func Start(service *dbusutil.Service) error {
+	m := newManager(service)
+	m.init()
+
+	if !_greeterMode {
+		// 正常 startdde
+		err := service.Export(dbusPath, m)
+		if err != nil {
+			return err
+		}
+
+		err = service.RequestName(dbusServiceName)
+		if err != nil {
+			return err
+		}
+	}
+	_dpy = m
+	return nil
+}
+
+func StartPart2() error {
+	if _dpy == nil {
+		return errors.New("_dpy is nil")
+	}
+	m := _dpy
+	m.initSysDisplay()
+	m.initTouchscreens()
+
+	if !_greeterMode {
+		controlRedshift("disable")
+		m.applyColorTempConfig(m.DisplayMode)
+	}
+
+	return nil
+}
+
+func SetLogLevel(level log.Priority) {
+	logger.SetLogLevel(level)
+}
diff -Nuar startdde-5.9.61/.history/display/display_20230413095143.go startdde-5.9.61.new/.history/display/display_20230413095143.go
--- startdde-5.9.61/.history/display/display_20230413095143.go	1970-01-01 08:00:00.000000000 +0800
+++ startdde-5.9.61.new/.history/display/display_20230413095143.go	2023-04-13 09:51:43.132039419 +0800
@@ -0,0 +1,131 @@
+// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd.
+//
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+package display
+
+import (
+	"errors"
+	"reflect"
+
+	"github.com/godbus/dbus"
+	sysdisplay "github.com/linuxdeepin/go-dbus-factory/com.deepin.system.display"
+	"github.com/linuxdeepin/go-lib/dbusutil"
+	"github.com/linuxdeepin/go-lib/log"
+)
+
+var logger = log.NewLogger("daemon/display")
+
+const (
+	dbusServiceName = "com.deepin.daemon.Display"
+	dbusInterface   = "com.deepin.daemon.Display"
+	dbusPath        = "/com/deepin/daemon/Display"
+)
+
+var _dpy *Manager
+
+var _greeterMode bool
+
+func SetGreeterMode(val bool) {
+	_greeterMode = val
+}
+
+type scaleFactorsHelper struct {
+	changedCb func(factors map[string]float64) error
+}
+
+// ScaleFactorsHelper 全局的 scale factors 相关 helper，要传给 xsettings 模块。
+var ScaleFactorsHelper scaleFactorsHelper
+
+// 用于在 display.Start 还没被调用时，先由 xsettings.Start 调用了 ScaleFactorsHelper.SetScaleFactors, 缓存数据。
+var _scaleFactors map[string]float64
+
+func (h *scaleFactorsHelper) SetScaleFactors(factors map[string]float64) error {
+	if _dpy == nil {
+		_scaleFactors = factors
+		return nil
+	}
+	return _dpy.setScaleFactors(factors)
+}
+
+func (h *scaleFactorsHelper) GetScaleFactors() (map[string]float64, error) {
+	sysBus, err := dbus.SystemBus()
+	if err != nil {
+		return nil, err
+	}
+	sysDisplay := sysdisplay.NewDisplay(sysBus)
+	cfgJson, err := sysDisplay.GetConfig(0)
+	if err != nil {
+		return nil, err
+	}
+	var rootCfg struct {
+		Config struct {
+			ScaleFactors map[string]float64
+		}
+	}
+	err = jsonUnmarshal(cfgJson, &rootCfg)
+	if err != nil {
+		return nil, err
+	}
+	return rootCfg.Config.ScaleFactors, nil
+}
+
+func (h *scaleFactorsHelper) SetChangedCb(fn func(factors map[string]float64) error) {
+	h.changedCb = fn
+}
+
+func (m *Manager) setScaleFactors(factors map[string]float64) error {
+	logger.Debug("setScaleFactors", factors)
+	m.sysConfig.mu.Lock()
+	defer m.sysConfig.mu.Unlock()
+
+	if reflect.DeepEqual(m.sysConfig.Config.ScaleFactors, factors) {
+		return nil
+	}
+	m.sysConfig.Config.ScaleFactors = factors
+	err := m.saveSysConfigNoLock("scale factors changed")
+	if err != nil {
+		logger.Warning(err)
+	}
+	return err
+}
+
+func Start(service *dbusutil.Service) error {
+	m := newManager(service)
+	m.init()
+
+	if !_greeterMode {
+		// 正常 startdde
+		err := service.Export(dbusPath, m)
+		if err != nil {
+			return err
+		}
+
+		err = service.RequestName(dbusServiceName)
+		if err != nil {
+			return err
+		}
+	}
+	_dpy = m
+	return nil
+}
+
+func StartPart2() error {
+	if _dpy == nil {
+		return errors.New("_dpy is nil")
+	}
+	m := _dpy
+	m.initSysDisplay()
+	m.initTouchscreens()
+
+	if !_greeterMode {
+		//controlRedshift("disable")
+		m.applyColorTempConfig(m.DisplayMode)
+	}
+
+	return nil
+}
+
+func SetLogLevel(level log.Priority) {
+	logger.SetLogLevel(level)
+}
