Survival LLM
A free AI assistant and survival library (1.5 million offline articles) that runs on your own computer, with no internet. Shows the source of every answer. Mac and Windows.
美观、轻量、开箱即用的 Linux 发行
Translation pending
OtherC++ · QMLGitHub @GXDE-OSOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
An out-of-box display manager, built specifically for GXDE OS.
Taken from the repository README
Loading the full README.
Read the full README ↗
GXDE Display Manager (GXDM) is a fork of SDDM and is build specifically for GXDE OS. It aims to bring an out-of-box experience of logining and greeter.
Currently, GXDM uses a Wayland greeter by default. It prefers gxde-wlcom and falls back to LabWC, Sway or Weston when it is unavailable. The greeter itself is from Deepin session-ui from the DDE 15 era, and it is fully adapted to Wayland and Qt6.
NOTE: You may refer to debian/control for full Debian dependencies.
ext-session-lock-v1 when the compositor supports it;
LayerShellQt/zwlr_layer_shell_v1 remains the compatibility fallbackPlease install all the depencies above before getting started.
GXDM supports both Bazel and CMake. You should ensure Bazel is installed if you really want to build it with Bazel. The guide for installing Bazel could be found here.
$ bazel build --spawn_strategy=local //:gxdm-dist
The generated deployment archive is located at bazel-bin/gxdm-dist.tar.
$ cmake -S . -B build-cmake -DBUILD_WITH_QT6=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr
$ cmake --build build-cmake --parallel
You won't have to worry about CMake things for it is handled throughdebian/rules.
$ chmod a+x ./build-deb
$ ./build-deb -d
The .deb package generated could be found on the parent of project root directory.
If you need a cleanup after you're done, please run:
./build-deb -c
Please note that this also clears the artifacts (those .deb files) generated.
GXDM's .deb package should allow you to choose your preferred display manager after GXDM is being installed.
GXDM's usage is almost the same as SDDM, and here are some handy commands:
$ sudo systemctl stop <其他正在使用的display manager服务名>.service
$ sudo systemctl disable <其他正在使用的display manager服务名>.service
$ sudo systemctl enable gxdm.service
$ sudo systemctl start gxdm.service
$ sudo systemctl stop gxdm.service
$ sudo systemctl disable gxdm.service
$ sudo systemctl enable <其他欲使用的display manager服务名>.service
$ sudo systemctl start <其他欲使用的display manager服务名>.service
$ sudo systemctl restart gxdm.service
$ systemctl status gxdm.service --no-pager
$ sudo journalctl -u gxdm.service -b --no-pager
GXDM exposes lock-shortcut and global greeter appearance controls on the session bus. Applications should use this public endpoint:
| Item | Value |
|---|---|
| Bus | Session bus |
| Service | top.gxde.DisplayManager |
| Object path | /top/gxde/DisplayManager |
| Interface | top.gxde.DisplayManager |
| Method | Description |
|---|---|
TryEnrollLkScr(bool enabled) -> bool | Registers or withdraws the Super+L GXDM lock shortcut. An existing Super+L binding is never stolen. |
UnregisterLkScr() | Withdraws Super+L and stops automatic re-enrollment for the current locker process. |
LkScrStat() -> bool | Returns whether GXDM successfully owns the Super+L shortcut. |
Show() | Shows the GXDM lock screen. |
SetCursor(string theme) -> bool | Sets the global greeter cursor theme. The theme must already be installed. |
SetWallpaperGXDEDefault() -> bool | Restores the current GXDE default as the global greeter wallpaper. |
SetWallpaperDDELockDefault() -> bool | Uses the bundled DDE lock default background as the global greeter wallpaper. |
SetWallpaper(string path) -> bool | Sets a custom global greeter wallpaper from a local path or file:// URL. |
SetLockWallpaperOverride(string path) -> bool | Sets the current user's lock-screen wallpaper override from a local path or file:// URL. |
ClearLockWallpaperOverride() -> bool | Clears the current user's lock-screen wallpaper override. |
LockWallpaperOverride() -> string | Returns the current user's persisted lock-screen wallpaper override. |
SetGreeterDisplayServer(string displayServer) -> bool | Persists the greeter display server. Valid values are wayland, x11, and x11-user. |
GreeterDisplayServer() -> string | Returns the persisted greeter display server. |
SetNeoGreeterEnabled(bool enabled) -> bool | Enables the new QML greeter (default: true); false selects the classic greeter. |
NeoGreeterEnabled() -> bool | Returns the persisted greeter selection. |
The lock service attempts to register Super+L on all systems by default, and will abort when attempt fails.
New greeter switch on the system bus:
busctl call top.gxde.DisplayManager /top/gxde/DisplayManager \
top.gxde.DisplayManager.System SetNeoGreeterEnabled b false
busctl call top.gxde.DisplayManager /top/gxde/DisplayManager \
top.gxde.DisplayManager.System NeoGreeterEnabled
The switch is stored as [General] EnableNeoGreeter in gxdm.conf and takes effect on the next greeter start. Pass true to re-enable it. The daemon emits NeoGreeterEnabledChanged(bool) after saving successfully. Missing new greeter binaries fall back to the classic greeter. Preview with gxdm-greeter-neo --test-mode. Qt Virtual Keyboard requires both its QML module and input context plugin.
Note: the greeter uses the global wallpaper only when one is explicitly configured (a non-empty [Greeter] Wallpaper in state.conf). When unset, the new greeter follows the current user's wallpaper chain so it matches the lock screen. The lock/user wallpaper priority is: the current user's LockWallpaperOverride, the current user's Deepin GreeterBackground/BackgroundFile, Deepin DesktopBackgrounds (the same source as the GSettings desktop wallpaper), AccountsService, GSettings desktop backgrounds, then the global greeter wallpaper/default. Every wallpaper setting refreshes the active greeter or lock screen immediately after it is persisted. Custom wallpapers and overrides must be recognized images no larger than 128 MiB. The global greeter wallpaper is copied under ~gxdm. The user lock override is copied twice: ~/.local/share/gxdm/lock-wallpaper-override for the in-session locker and ~gxdm/lock-wallpaper-override-<uid> for the greeter (which can still read it when the user's home directory is not traversable, e.g. mode 0700); neither depends on the original image remaining available. SetGreeterDisplayServer takes effect the next time the greeter display is created.
Examples:
# Register Super+L
busctl --user call top.gxde.DisplayManager \
/top/gxde/DisplayManager top.gxde.DisplayManager \
TryEnrollLkScr b true
# Unregister Super+L
busctl --user call top.gxde.DisplayManager \
/top/gxde/DisplayManager top.gxde.DisplayManager \
UnregisterLkScr
# Query the Super+L state
busctl --user call top.gxde.DisplayManager \
/top/gxde/DisplayManager top.gxde.DisplayManager \
LkScrStat
# Set the greeter cursor theme
busctl --user call top.gxde.DisplayManager \
/top/gxde/DisplayManager top.gxde.DisplayManager \
SetCursor s gxde
# Set a custom greeter wallpaper
busctl --user call top.gxde.DisplayManager \
/top/gxde/DisplayManager top.gxde.DisplayManager \
SetWallpaper s /absolute/path/to/wallpaper.jpg
# Restore the GXDE default greeter wallpaper
busctl --user call top.gxde.DisplayManager \
/top/gxde/DisplayManager top.gxde.DisplayManager \
SetWallpaperGXDEDefault
# Override the lock-screen wallpaper
busctl --user call top.gxde.DisplayManager \
/top/gxde/DisplayManager top.gxde.DisplayManager \
SetLockWallpaperOverride s /absolute/path/to/lock-wallpaper.jpg
# Clear the lock-screen wallpaper override
busctl --user call top.gxde.DisplayManager \
/top/gxde/DisplayManager top.gxde.DisplayManager \
ClearLockWallpaperOverride
# Use the X11 greeter display server
busctl --user call top.gxde.DisplayManager \
/top/gxde/DisplayManager top.gxde.DisplayManager \
SetGreeterDisplayServer s x11
# Query the greeter display server
busctl --user call top.gxde.DisplayManager \
/top/gxde/DisplayManager top.gxde.DisplayManager \
GreeterDisplayServer
The GXDM daemon also owns the same service name on the system bus and exposes the internal top.gxde.DisplayManager.System interface. It persists global appearance values in ~gxdm/state.conf and writes the greeter display server to /etc/gxdm.conf; global custom wallpapers are accepted as Unix file descriptors rather than caller-supplied paths. The session-bus interface stores user lock-screen overrides in the user's data directory and additionally forwards them to the system-bus interface so the greeter can read a copy from ~gxdm. The system-bus interface is an implementation detail and should not be called directly by regular applications.
Please refer to opened issues to see those feature requested.
We are grateful to all contributors. If you have any suggestions for making GXDM better or feature requests, feel free to open a new Issue. You can also fork this repo and submit a pull request.
If you want to add packaging for other distros, please make sure that your package installs ./data/configs/OMG.conf to /etc/gxdm/.
NOTE: GXDM is based on SDDM, and the contribution information of SDDM could be found here.
This project is licensed under GNU GENERAL PUBLIC LICENSE Version 3.
This project contains source code from GXDE session-ui, which could be located under src/greeter-classic and upstream GXDE-OS/gxde-session-ui. They are licensed under GNU GENERAL PUBLIC LICENSE Version 3 unless specified in file header.
This project contains source code from CharOfString/samoyed-greeter. They are licensed under GNU GENERAL PUBLIC LICENSE Version 3 unless specified in file header.
This project uses Maven Pro as lockscreen font, which is licensed under SIL Open Font License 1.1.
The development of GXDM draws heavily on the reference and inspiration from the following projects: