Stuck at a TTY, or cannot switch to a TTY on Omarchy
Stuck at a text console on Omarchy 4, or Ctrl+Alt+F keys do nothing: which VT to use, how to read the uwsm session log, and how to start Hyprland by hand.
Press Ctrl+Alt+F2 through F6, log in with your user password, and read journalctl --user -b -u wayland-wm-env@hyprland.desktop.service. A shell error in ~/.profile or ~/.config/uwsm/env.d aborts the session silently. Start it by hand with uwsm start -g -1 -e -D Hyprland hyprland.desktop. If no F-key reaches a TTY, the compositor is wedged and only a reboot or SSH gets you back.
A TTY is the plain text console behind the desktop. On Omarchy it is both a symptom (you booted and landed there instead of on the desktop) and the main repair tool (the desktop is broken and you need a shell). This page covers both, on 4.0.0 through 4.0.4, with the 3.x differences noted.
The fix
1. Get to a console. Press Ctrl+Alt+F2 or Ctrl+Alt+F3; any of F2 through F6 will do. VT1 is not free: SDDM’s greeter and your Hyprland session both sit there. You can see it in SDDM’s own log, which prints Jumping to VT 1 when it restarts a greeter, and in omarchy-debug output, which reports vt 1 for the desktop. Omarchy ships no logind override for the auto-spawned consoles, so Arch’s default login prompts on VT2 through VT6 are what you get. Ctrl+Alt+F1 returns you to the session.
At the login: prompt use your Linux username and its password. Not the LUKS passphrase, which the initramfs asks for once during early boot.
2. Find out what is missing. From the console:
systemctl status sddm
journalctl -b -u sddm
journalctl --user -b -u wayland-wm-env@hyprland.desktop.service
journalctl --user -b -u wayland-wm@hyprland.desktop.service
journalctl -b -t omarchy-shell
Omarchy starts Hyprland through uwsm on both 3.x and 4.x. The session entry is identical in v3.8.4 and v4.0.4: Exec=uwsm start -g -1 -e -D Hyprland hyprland.desktop. That produces two user units, the environment preloader and the compositor itself, and that first unit is where most silent failures live.
3. Check the uwsm environment first. If the greeter takes your password, flashes, and returns to the greeter while the TTY works fine, this is almost always it. uwsm sources ~/.profile and everything in ~/.config/uwsm/env.d/ before starting Hyprland, and any shell error aborts the session with nothing on screen.
Two confirmed shapes. In issue #8669 a Mac user on 4.0.1 had rustup’s unguarded . "$HOME/.cargo/env" as line 1 of ~/.profile with the file gone, and the journal showed wayland-wm-env@hyprland.desktop.service: Failed with result 'exit-code'. In issue #10700 on 4.0.2 a typo in an env.d fragment produced Env output mark ... not found in shell output and an endless return to the lock screen. Guard the profile line or delete it:
sed -i 's|^\. "\$HOME/.cargo/env"|[[ -r "$HOME/.cargo/env" ]] \&\& . "$HOME/.cargo/env"|' ~/.profile
For env.d, move the file out of the directory. Renaming it to .bak or .broken does not help, because uwsm loads every entry it finds there:
mkdir -p ~/broken-env && mv ~/.config/uwsm/env.d/99-bad ~/broken-env/
Note that a Snapper rollback will not fix either one. Both files live under /home, which snapshots of the root subvolume do not carry.
4. Start the session by hand. Still on the TTY:
uwsm start -g -1 -e -D Hyprland hyprland.desktop
If that fails or exits instantly, run the compositor bare so the crash lands on your screen instead of in a log:
Hyprland
That is how the VirtualBox diagnosis in discussion #7758 was done: Hyprland aborted with signal 6 right after Creating the AsyncResourceGatherer!, which put the fault at GPU and EGL init rather than anywhere in Omarchy.
If you use the start-hyprland wrapper, call it by absolute path as /usr/bin/start-hyprland, and check /usr/local/bin for leftovers. Issue #8319 reported failed to obtain hyprland version string (bad json) from a TTY on 4.0.0 with a stale /usr/local/bin/start-hyprland sitting ahead of the packaged one in PATH. Triage on that issue reproduced the message and pinned it down: start-hyprland runs Hyprland --version-json as a preflight, and the message means the Hyprland it found on PATH could not answer, typically a source-built copy under /usr/local whose libraries pacman has since upgraded underneath it. Neither hyprpm nor Omarchy writes there. Omarchy’s own session entry runs uwsm and never touches start-hyprland, but the SDDM greeter does: etc/sddm.conf.d/10-wayland.conf launches it as a bare start-hyprland, so the same shadow can take out the login screen as well as your typed command.
5. Check the config, then the shell. hyprctl configerrors reports a bad config. On 4.x that config is ~/.config/hypr/hyprland.lua and edits to a leftover hyprland.conf are ignored; on 3.x it is the .conf file. If Hyprland is up but there is no bar, omarchy-restart-shell works from a TTY, because it derives the Hyprland instance signature from the runtime directory and respawns the shell through the compositor.
6. Collect a log. Run omarchy-debug --no-sudo, which writes /tmp/omarchy-debug.log. From a TTY the router form omarchy debug works too. Inside a Hyprland terminal on 4.0.2 through 4.0.4 it answers Unknown Omarchy command: omarchy debug (issue #10258, open at the time of writing): the session puts /usr/share/omarchy/bin first on PATH and that directory carries no link to omarchy-debug, which the omarchy-settings package installs under /usr/bin only. The hyphenated script works from anywhere.
Verify it worked
systemctl --user status wayland-wm@hyprland.desktop.service
hyprctl monitors
hyprctl layers | grep omarchy-bar
The unit should be active, hyprctl monitors should list a real output rather than error out, and the omarchy-bar layer should be present. Then press Ctrl+Alt+F2 and Ctrl+Alt+F1 once each: a session that survives a round trip through a console is a session whose compositor is answering.
Why it happens
The greeter and the session share VT1, and everything else is queued behind that. When SDDM is asked to put a second greeter on the same VT, its helper cannot take the tty and the display dies with Greeter stopped. SDDM::Auth::HELPER_TTY_ERROR, which is what issue #11700 reports from a SwitchToGreeter D-Bus call on 4.0.3. Do not call it; start a second session from a spare TTY instead.
Landing on a console instead of the desktop means something in the chain exited: SDDM, the uwsm preloader, or Hyprland. The preloader case is silent by design, which is why it accounts for so many “wrong password” reports that turn out to be nothing of the sort. The Hyprland case is usually GPU init, as in the VirtualBox report, or a Hyprland binary on PATH that no longer matches its libraries, as in issue #8319.
The reverse problem, no console at all, has a different root. Under Wayland the compositor owns the keyboard on its VT and carries out the switch itself through the seat it holds from logind, so Ctrl+Alt+F<n> is a request to Hyprland rather than to the kernel console. A compositor that is wedged in a GPU or output operation never processes it. This also explains why a VT switch is such a reliable unsticker when the compositor is alive but confused: issue #11208 on 4.0.3 describes a lock screen that ignores the keyboard after resume until Ctrl+Alt+F3 and back forces a DRM and VT transition, after which typing works again.
If that did not work
If no function key reaches a console, you have three options left. SSH in from another machine, if you turned sshd on beforehand. Power cycle and pick an older snapshot in the Limine menu, covered in rollback with Snapper and Limine. Or boot the install media and chroot in.
If the console works but the desktop still will not start, the fault is downstream of this page. Go to black screen after login when Hyprland starts and nothing draws, Quickshell crashes or bar missing when Hyprland is running without a bar, and login loop or password not accepted when the greeter keeps coming back. NVIDIA machines that stopped booting after an update belong on the NVIDIA hardware page, and virtual machines on what breaks in a VM.
One honest gap: the issue tracker has plenty of reports of the console being used as a rescue shell, and several of sessions frozen hard enough that nothing responds, but very few that isolate why a specific machine refuses the VT switch. If yours does, the journal from the next boot is the only evidence worth filing.
Related
Upstream threads about this error
190 issues on the Omarchy tracker match this error cluster. Newest fixes often appear as comments on the most-discussed threads.
| Issue | State | Comments | Opened |
|---|---|---|---|
| #688 After upgrade to 1.13 and reboot, I am asked for LUKS password, then Hyprland doesn't start | closed | 73 | 2025-08-11 |
| #26 System Freeze on Wake-up | closed | 56 | 2025-07-02 |
| #1150 Blank black screen using new 2.0 ISO - blinking cursor - `libabsl_log_internal_check_op.so.2565.0.0: cannot open shared file` | closed | 32 | 2025-08-26 |
| #4 Nvidia Support | closed | 34 | 2025-06-27 |
| #1571 Can't become sudo sometimes, password not accepted | closed | 29 | 2025-09-10 |
| #1776 Laptop / Hybrid GPU Power Management Issue (NVIDIA, iGPU + dGPU) | closed | 15 | 2025-09-18 |
| #1151 Black screen right after login instead of Hyprland | Omarchy ISO 2.0 | closed | 25 | 2025-08-26 |
| #716 Omarchy conflicts with SDDM by ocupying tty1 first | closed | 37 | 2025-08-12 |
| #1485 The system doesn't boot after install | closed | 33 | 2025-09-06 |
| #2307 Complete System Brick after Omarchy Update | closed | 23 | 2025-10-08 |
Accepted answers upstream
- How do I logout and start omarchy from the TTY properly? · answered by shrralis
- Issues with Gosthy and opengl · answered by rajaryan2007
- Omarchy on VirtualBox · answered by rodolfoghi
- Getting Omarchy humming on Intel Macs with older NVIDIA cards · answered by skyfallsin
Questions people ask
- Which function key gets me a TTY on Omarchy?
- Ctrl+Alt+F2 through Ctrl+Alt+F6. VT1 is taken by the SDDM greeter and by your Hyprland session, so F1 takes you back to the desktop rather than to a console.
- Do I type my LUKS passphrase at the TTY login prompt?
- No. The console login wants your Linux username and its password. The LUKS passphrase is asked for once, by the initramfs during early boot, before any login screen appears.
- How do I start the desktop from a TTY?
- Run uwsm start -g -1 -e -D Hyprland hyprland.desktop, which is exactly what Omarchy's session entry runs. Run plain Hyprland instead if you want the crash output on screen.
- Why does Ctrl+Alt+F2 do nothing when the screen is frozen?
- Hyprland owns the keyboard on that VT and performs the switch itself. A compositor stuck in a GPU or output operation never processes the key combination, so nothing happens and only a reboot or an SSH session gets you back.
Sources and credit
Fixes on this page were worked out by pkayokay (Traced a bounced login to an unguarded cargo line in ~/.profile that kills the uwsm env preloader), austrasien (Showed that a bad file in ~/.config/uwsm/env.d fails the session silently, and that renaming it in place does not disable it), MAXIDEA (Found that SwitchToGreeter relaunches the greeter onto the occupied VT and freezes the display), mayounderrated (Reported a stale /usr/local/bin/start-hyprland shadowing the packaged one in PATH), OP017 (Documented a VT switch restoring keyboard input to a frozen lock screen after resume), rodolfoghi (Diagnosed a VM black screen from a TTY by running Hyprland by hand and checking the runtime dirs). Text here is our own paraphrase; follow the links for the original threads.
- issueIssue #8669: Rust install leaves unguarded ~/.profile cargo source that can login-loop UWSM · pkayokay · 2026-08-27
- issueIssue #10700: Silent lock-screen login loop when ~/.config/uwsm/env.d has a shell error (UWSM preloader fails with no UI) · austrasien · 2026-09-07
- issueIssue #11700: SwitchToGreeter freezes the session: greeter relaunch targets the occupied VT (HELPER_TTY_ERROR) · MAXIDEA · 2026-09-13
- issueIssue #8319: After omarchy update + reboot: 'failed to get hyprland version string (bad json)', NVIDIA initramfs migration may break boot · mayounderrated · 2026-08-26
- issueIssue #11208: Lock screen freezes / keyboard input unresponsive after suspend-resume until DRM/VT switch · OP017 · 2026-09-10
- issueIssue #10258: omarchy debug command is unreachable via the CLI router despite being advertised in --help · ajgorrell · 2026-09-04
- discussionDiscussion #7758: Omarchy on VirtualBox · nightdevil00 · 2026-08-22
- manualOmarchy manual: Troubleshooting