You are not logged in.
I had this error as well. What I did was run:
pacman -Qq | grep 'hypr'
Then removed all *-git packages that had official packages available in the official pacman repo. I noted down everything I removed and then re-installed the official packages and was able to update my system and boot into Hyprland.
Below for commands I ran, I only ran one at a time.
pacman -Qq | grep 'hypr'
paru -Rdd hyprland-protocols-git hyprlang-git hyprutils-git hyprwayland-scanner-git
At this point you should probably run:
paru -Syu
Then:
sudo pacman -S hyprland-protocols hyprlang hyprwayland-scanner hyprutils
Last edited by kruggiero97 (2025-10-12 19:06:29)
Offline
Looks like I don't have any *-git packages any more. Apparently I didn't have `hyprland-protocols`, so I installed it. Here's the output of `pacman -Qq | grep 'hypr'` now:
hyprcursor
hyprgraphics
hypridle
hyprland
hyprland-protocols
hyprland-qt-support
hyprland-qtutils
hyprlang
hyprlock
hyprpaper
hyprpolkitagent
hyprshot
hyprsunset
hyprsysteminfo
hyprsysteminfo-debug
hyprutils
hyprwayland-scanner
xdg-desktop-portal-hyprland
I think we had discussed *-debug packages earlier, should I try removing `hyprsysteminfo-debug`?
I'll look into `eglinfo -B` next.
Offline
Output of `eglinfo -B`:
Offline
Update - I tried `paru -Syu`. I didn't have paru before, so I installed it. The update took quite a while! Then, I did `sudo pacman -Syu` and rebooted, and Hyprland is still crashing.
I'll look into testing Hyprland with a new user next.
Offline
I just created a test user "tytest" and ran `Hyprland`. It works! I don't necessarily know what this tells me, or how to proceed from here.
Offline
# See https://wiki.hypr.land/Configuring/Monitors/
monitor = eDP-1, preferred, auto, 1.2
monitor = HDMI-A-1, preferred, auto, auto
# Ty - Workspace organization
workspace = 1, monitor:eDP-1
workspace = 2, monitor:eDP-1
workspace = 3, monitor:eDP-1
workspace = 4, monitor:eDP-1
workspace = 5, monitor:eDP-1
workspace = 6, monitor:eDP-1
workspace = 7, monitor:HDMI-A-1
workspace = 8, monitor:HDMI-A-1
workspace = 9, monitor:HDMI-A-1
workspace = 10, monitor:HDMI-A-1
workspace = 11, monitor:HDMI-A-1
workspace = 12, monitor:HDMI-A-1
comment this and post the output of
ls -l /sys/class/drm/card*
If it's not some bogus output names my best guess would be to bisect the config, ie. add half your config to the test user and see whether it now crashes, if yes you know the (a) problem is in that half, so cut it into half again, otherwise add half of the remaining config etc.
Offline
I commented out the monitor setup in `hyprland.conf`. Here's the output of `ls -l /sys/class/drm/card*`:
lrwxrwxrwx 1 root root 0 Oct 12 15:25 /sys/class/drm/card1 -> ../../devices/pci0000:00/0000:00:02.0/drm/card1
lrwxrwxrwx 1 root root 0 Oct 12 15:25 /sys/class/drm/card1-DP-1 -> ../../devices/pci0000:00/0000:00:02.0/drm/card1/card1-DP-1
lrwxrwxrwx 1 root root 0 Oct 12 15:25 /sys/class/drm/card1-eDP-1 -> ../../devices/pci0000:00/0000:00:02.0/drm/card1/card1-eDP-1
lrwxrwxrwx 1 root root 0 Oct 12 15:25 /sys/class/drm/card1-HDMI-A-1 -> ../../devices/pci0000:00/0000:00:02.0/drm/card1/card1-HDMI-A-1
Offline
Update - I found out how to find a crash report - https://wiki.hypr.land/Crashes-and-Bugs
Here's my crash report - http://0x0.st/KSHy.txt
Offline
[ERR] [AQ] drm: getCurrentCRTC: No CRTC 0
[ERR] [AQ] drm: getCurrentCRTC: No CRTC 0
[ERR] [AQ] Wayland backend cannot start: wl_display_connect failed (is a wayland compositor running?)
[ERR] [AQ] Requested backend (wayland) could not start, enabling fallbacks
[ERR] [AQ] Implementation wayland failed, erasing.
[ERR] Hyprcursor failed loading theme "", falling back to Xcursor.
[ERR] X11 socket dir is not owned by root or current user
…
[ERR] X11 socket dir is not owned by root or current user
[ERR] Failed to find a suitable socket for XWayland
[ERR] XWayland failed to start: it will not work.
[ERR] [AQ] drm: Cannot commit when a page-flip is awaiting
[ERR] Couldn't commit output named eDP-1
[ERR] [AQ] drm: Cannot commit when a page-flip is awaiting
[ERR] [AQ] drm: Cannot commit when a page-flip is awaiting
[ERR] Failed to bind touch device atmel-atmel-maxtouch-digitizer to output '[[Auto]]': monitor not found
[ERR] Failed to bind touch device atmel-atmel-maxtouch-digitizer to output '[[Auto]]': monitor not found
[ERR] [AQ] drm: Cannot commit when a page-flip is awaiting
[ERR] Couldn't commit output named eDP-1
[ERR] X11 socket dir is not owned by root or current user
…
[ERR] X11 socket dir is not owned by root or current user
[ERR] Failed to find a suitable socket for XWayland
[ERR] XWayland failed to start: it will not work.
[ERR] Failed to bind touch device atmel-atmel-maxtouch-digitizer to output '[[Auto]]': monitor not found
[ERR] [AQ] drm: Cannot commit when a page-flip is awaiting
[ERR] Couldn't commit output named eDP-1
[ERR] X11 socket dir is not owned by root or current user
…
[ERR] X11 socket dir is not owned by root or current user
[ERR] Failed to find a suitable socket for XWayland
[ERR] XWayland failed to start: it will not work.
[ERR] CConfigWatcher: got an event for wd 1 which we don't have?!
[ERR] CConfigWatcher: got an event for wd 2 which we don't have?!
Doesn't indicate a SIGABRT, though - have you tried to isolate the offending part of the config?
Offline
I'm working on that now. I've just tested the first half, which seems to work so far.
Offline
The plugin at the end?
Offline
The plugin at the end?
Hmm, that could actually be it. I was going to use bisection on the config file, but I just realized I could start with the whole thing. It gave me a message saying that the plugin isn't recognized. I commented those lines out, rebooted just to make sure, and Hyprland seems to work for tytest. I'll try it for tyspicer now.
Offline
Welp, still crashes. :(
Offline
Update - I have the default config saved on tyspicer. I tried logging into tyspicer with the default config, and it loads! I'll do some more tests with my custom config from here.
Once again, I'll need to leave fairly soon. We'll see how much I can try in the next few minutes, but I may have to come back tomorrow.
Edit - So far, I've found that it crashes when I use lines 1-95 of my config, with the rest default. Here's my config again, although I think I commented out the monitor setup section - http://0x0.st/KSik.txt
I'm going to call it a day for now, I'll have to come back tomorrow. I appreciate all the help so far!
Last edited by TySpicer (2025-10-12 21:28:44)
Offline
Firs 95 lines that are not comments:
monitor = eDP-1, preferred, auto, 1.2
monitor = HDMI-A-1, preferred, auto, auto
workspace = 1, monitor:eDP-1
workspace = 2, monitor:eDP-1
workspace = 3, monitor:eDP-1
workspace = 4, monitor:eDP-1
workspace = 5, monitor:eDP-1
workspace = 6, monitor:eDP-1
workspace = 7, monitor:HDMI-A-1
workspace = 8, monitor:HDMI-A-1
workspace = 9, monitor:HDMI-A-1
workspace = 10, monitor:HDMI-A-1
workspace = 11, monitor:HDMI-A-1
workspace = 12, monitor:HDMI-A-1
$terminal = kitty
$menu = rofi -show drun
$browser = brave
$calculator = speedcrunch
$email = exec, thunderbird
exec-once = hypridle
exec-once = hyprpm reload
exec-once = waybar
exec-once = udiskie
exec-once = pcmanfm -d # File mananager daemon - For auto-mounting
exec-once = exec sh ~/.config/hypr/Scripts/animation-sounds.sh
env = XCURSOR_SIZE,22
env = HYPRCURSOR_SIZE,22
env = QT_QPA_PLATFORMTHEME=hyprqt6engine
If it's not the output config, one of the exec-once's ?
Offline
IT WORKS! I found the issue!
I decided to pick a few things to uncomment in `hyprland.conf`, and most of them didn't cause a crash. I narrowed it down to this line:
exec-once = hyprpm reload
I tried `hyprpm reload` in a terminal, which also crashed Hyprland. So that's the issue! I have no idea why this would cause a crash, but this is Hyprland's plugin manager. The only plugin I had was hyprexpo, which I didn't even like, and wasn't using anyway. So as far as I'm concerned, my computer is completely back to normal.
Well, except for one more small thing: If I move my browser (Brave) window between monitors, it disappears. Would anyone be able to help me with that here, or should I make a new topic?
Thanks again for all the help! It's great to be able to use Arch and Hyprland now, without having to boot back into Mint!
For reference, here's my current (working!) `hyprland.conf`:
# #######################################################################################
# AUTOGENERATED HYPRLAND CONFIG.
# EDIT THIS CONFIG ACCORDING TO THE WIKI INSTRUCTIONS.
# #######################################################################################
# This is an example Hyprland config file.
# Refer to the wiki for more information.
# https://wiki.hypr.land/Configuring/
# Please note not all available settings / options are set here.
# For a full list, see the wiki
# You can split this configuration into multiple files
# Create your files separately and then link them to this file like this:
# source = ~/.config/hypr/myColors.conf
################
### MONITORS ###
################
# See https://wiki.hypr.land/Configuring/Monitors/
monitor = eDP-1, preferred, auto, 1.2
monitor = HDMI-A-1, preferred, auto, auto
# Ty - Workspace organization
workspace = 1, monitor:eDP-1
workspace = 2, monitor:eDP-1
workspace = 3, monitor:eDP-1
workspace = 4, monitor:eDP-1
workspace = 5, monitor:eDP-1
workspace = 6, monitor:eDP-1
workspace = 7, monitor:HDMI-A-1
workspace = 8, monitor:HDMI-A-1
workspace = 9, monitor:HDMI-A-1
workspace = 10, monitor:HDMI-A-1
workspace = 11, monitor:HDMI-A-1
workspace = 12, monitor:HDMI-A-1
###################
### MY PROGRAMS ###
###################
# See https://wiki.hypr.land/Configuring/Keywords/
# Set programs that you use
$terminal = kitty
$menu = rofi -show drun
$browser = brave
$calculator = speedcrunch
$email = exec, thunderbird
#################
### AUTOSTART ###
#################
# Autostart necessary processes (like notifications daemons, status bars, etc.)
# Or execute your favorite apps at launch like this:
exec-once = hypridle
# exec-once = hyprpm reload # This is crashing Hyprland at the moment
exec-once = waybar
exec-once = udiskie
exec-once = pcmanfm -d # File mananager daemon - For auto-mounting
exec-once = exec sh ~/.config/hypr/Scripts/animation-sounds.sh
#############################
### ENVIRONMENT VARIABLES ###
#############################
# See https://wiki.hypr.land/Configuring/Environment-variables/
env = XCURSOR_SIZE,22
env = HYPRCURSOR_SIZE,22
env = QT_QPA_PLATFORMTHEME=hyprqt6engine
###################
### PERMISSIONS ###
###################
# See https://wiki.hypr.land/Configuring/Permissions/
# Please note permission changes here require a Hyprland restart and are not applied on-the-fly
# for security reasons
# ecosystem {
# enforce_permissions = 1
# }
# permission = /usr/(bin|local/bin)/grim, screencopy, allow
# permission = /usr/(lib|libexec|lib64)/xdg-desktop-portal-hyprland, screencopy, allow
# permission = /usr/(bin|local/bin)/hyprpm, plugin, allow
#####################
### LOOK AND FEEL ###
#####################
# Refer to https://wiki.hypr.land/Configuring/Variables/
# https://wiki.hypr.land/Configuring/Variables/#general
general {
gaps_in = 3
gaps_out = 6
# border_size = 2
border_size = 2
# https://wiki.hypr.land/Configuring/Variables/#variable-types for info about colors
col.active_border = rgba(3359ccee) rgba(5950a6ee) rgba(cc3232ee) 50deg
col.inactive_border = rgba(595959aa)
# Set to true enable resizing windows by clicking and dragging on borders and gaps
resize_on_border = false
# Please see https://wiki.hypr.land/Configuring/Tearing/ before you turn this on
allow_tearing = false
layout = dwindle
}
# https://wiki.hypr.land/Configuring/Variables/#decoration
decoration {
rounding = 7
rounding_power = 2
# Change transparency of focused and unfocused windows
active_opacity = 0.95
inactive_opacity = 0.85
shadow {
enabled = true
range = 4
render_power = 3
color = rgba(1a1a1aee)
}
# https://wiki.hypr.land/Configuring/Variables/#blur
blur {
enabled = true
size = 4
passes = 2
# vibrancy = 0.1696
vibrancy = 1
}
}
# https://wiki.hypr.land/Configuring/Variables/#animations
animations {
enabled = yes, please :)
# Default animations, see https://wiki.hypr.land/Configuring/Animations/ for more
bezier = easeOutQuint,0.23,1,0.32,1
bezier = easeInOutCubic,0.65,0.05,0.36,1
bezier = linear,0,0,1,1
bezier = almostLinear,0.5,0.5,0.75,1.0
bezier = quick,0.15,0,0.1,1
animation = global, 1, 10, default
animation = border, 1, 5.39, easeOutQuint
animation = windows, 1, 4.79, easeOutQuint
animation = windowsIn, 1, 4.1, easeOutQuint, popin 87%
animation = windowsOut, 1, 1.49, linear, popin 87%
animation = fadeIn, 1, 1.73, almostLinear
animation = fadeOut, 1, 1.46, almostLinear
animation = fade, 1, 3.03, quick
animation = layers, 1, 3.81, easeOutQuint
animation = layersIn, 1, 4, easeOutQuint, fade
animation = layersOut, 1, 1.5, linear, fade
animation = fadeLayersIn, 1, 1.79, almostLinear
animation = fadeLayersOut, 1, 1.39, almostLinear
animation = workspaces, 1, 1.94, almostLinear, fade
animation = workspacesIn, 1, 1.94, easeOutQuint, slide
animation = workspacesOut, 1, 1.94, easeOutQuint, slide
}
# Ref https://wiki.hypr.land/Configuring/Workspace-Rules/
# "Smart gaps" / "No gaps when only"
# uncomment all if you wish to use that.
# workspace = w[tv1], gapsout:0, gapsin:0
# workspace = f[1], gapsout:0, gapsin:0
# windowrule = bordersize 0, floating:0, onworkspace:w[tv1]
# windowrule = rounding 0, floating:0, onworkspace:w[tv1]
# windowrule = bordersize 0, floating:0, onworkspace:f[1]
# windowrule = rounding 0, floating:0, onworkspace:f[1]
# See https://wiki.hypr.land/Configuring/Dwindle-Layout/ for more
dwindle {
pseudotile = true # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
preserve_split = true # You probably want this
}
# See https://wiki.hypr.land/Configuring/Master-Layout/ for more
master {
new_status = master
}
# https://wiki.hypr.land/Configuring/Variables/#misc
misc {
force_default_wallpaper = 0 # Set to 0 or 1 to disable the anime mascot wallpapers
disable_hyprland_logo = true # If true disables the random hyprland logo / anime girl background. :(
focus_on_activate = true
}
#############
### INPUT ###
#############
# https://wiki.hypr.land/Configuring/Variables/#input
input {
kb_layout = us, ru
kb_variant =
kb_model =
kb_options = grp:win_space_toggle
kb_rules =
follow_mouse = 1
sensitivity = 0.6 # -1.0 - 1.0, 0 means no modification.
accel_profile = flat
repeat_rate = 35
repeat_delay = 180
touchpad {
natural_scroll = true
tap-to-click = false
scroll_factor = 0.45
}
}
# https://wiki.hypr.land/Configuring/Variables/#gestures
# gestures {
# workspace_swipe = false
# }
# Ty - Deprecated?
# Example per-device config
# See https://wiki.hypr.land/Configuring/Keywords/#per-device-input-configs for more
device {
name = epic-mouse-v1
sensitivity = -0.5
}
###################
### KEYBINDINGS ###
###################
# See https://wiki.hypr.land/Configuring/Keywords/
$mainMod = SUPER # Sets "Windows" key as main modifier
# Example binds, see https://wiki.hypr.land/Configuring/Binds/ for more
bind = $mainMod, W, exec, $terminal
bind = $mainMod, Q, killactive
bind = $mainMod, V, togglefloating
bind = $mainMod, R, exec, $menu
bind = $mainMod, P, pseudo, # dwindle
bind = $mainMod, J, togglesplit, # dwindle
bind = $mainMod, M, $email
bind = $mainMod, E, exec, kitty nnn
# Move focus with mainMod + arrow keys
bind = $mainMod, left, movefocus, l
bind = $mainMod, right, movefocus, r
bind = $mainMod, up, movefocus, u
bind = $mainMod, down, movefocus, d
# Switch workspaces with mainMod + [0-9]
bind = $mainMod, 1, exec, \
hyprctl dispatch workspace 7; \
hyprctl dispatch workspace 1
bind = $mainMod, 2, exec, \
hyprctl dispatch workspace 8; \
hyprctl dispatch workspace 2
bind = $mainMod, 3, exec, \
hyprctl dispatch workspace 9; \
hyprctl dispatch workspace 3
bind = $mainMod, 4, exec, \
hyprctl dispatch workspace 10; \
hyprctl dispatch workspace 4
bind = $mainMod, 5, exec, \
hyprctl dispatch workspace 11; \
hyprctl dispatch workspace 5
bind = $mainMod, 6, exec, \
hyprctl dispatch workspace 12; \
hyprctl dispatch workspace 6
# Move active window to a workspace with mainMod + SHIFT + [0-9]
bind = $mainMod SHIFT, 1, exec, \
hyprctl dispatch movetoworkspace 1; \
hyprctl dispatch workspace 7; \
hyprctl dispatch workspace 1
bind = $mainMod SHIFT, 2, exec, \
hyprctl dispatch movetoworkspace 2; \
hyprctl dispatch workspace 8; \
hyprctl dispatch workspace 2
bind = $mainMod SHIFT, 3, exec, \
hyprctl dispatch movetoworkspace 3; \
hyprctl dispatch workspace 9; \
hyprctl dispatch workspace 3
bind = $mainMod SHIFT, 4, exec, \
hyprctl dispatch movetoworkspace 4; \
hyprctl dispatch workspace 10; \
hyprctl dispatch workspace 4
bind = $mainMod SHIFT, 5, exec, \
hyprctl dispatch movetoworkspace 5; \
hyprctl dispatch workspace 11; \
hyprctl dispatch workspace 5
bind = $mainMod SHIFT, 6, exec, \
hyprctl dispatch movetoworkspace 6; \
hyprctl dispatch workspace 12; \
hyprctl dispatch workspace 6
# Example special workspace (scratchpad)
# bind = $mainMod, S, togglespecialworkspace, magic
# bind = $mainMod SHIFT, S, movetoworkspace, special:magic
# Scroll through existing workspaces with mainMod + scroll
# Ty - Delete these
# bind = $mainMod, mouse_down, workspace, e+1
# bind = $mainMod, mouse_up, workspace, e-1
# Move/resize windows with mainMod + LMB/RMB and dragging
bindm = $mainMod, mouse:272, movewindow
bindm = $mainMod, mouse:273, resizewindow
# Laptop multimedia keys for volume and LCD brightness
bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+
bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
bindel = ,XF86MonBrightnessUp, exec, brightnessctl -n5 set 5%+
bindel = ,XF86MonBrightnessDown, exec, brightnessctl -n5 set 5%-
# Requires playerctl
bindl = , XF86AudioNext, exec, playerctl next
bindl = , XF86AudioPause, exec, playerctl play-pause
bindl = , XF86AudioPlay, exec, playerctl play-pause
bindl = , XF86AudioPrev, exec, playerctl previous
#
# Ty - Custom binds
#
# Apps
bind = $mainMod, B, exec, $browser
bind = $mainMod, X, exec, xed --new-window
bind = $mainMod, C, exec, $calculator
# bind = $mainMod, F1, hyprexpo:expo, toggle
# bind = , escape, hyprexpo:expo, disable
# Lock and suspend (locking is handled by hypridle.conf)
# I don't think I need this any more
# bind = CTRL, Delete, exec, systemctl suspend
# Screenshot
bind = , Print, exec, hyprshot -m region -o ~/Pictures/Screenshots
bind = SHIFT, Print, exec, hyprshot -m output -o ~/Pictures/Screenshots
bind = CTRL, Print, exec, hyprshot -m window -o ~/Pictures/Screenshots
layerrule = noanim, hyprpicker
layerrule = noanim, selection
# Files
# Firelink Shrine
bind = $mainMod, S, exec, libreoffice --calc Documents/'1 - Work'/TCC/'2025 Fall - MATH-1473, 0472 - Quantitative Reasoning, Essentials'/'FS - QR - Fall 25.xlsx'
bind = $mainMod, D, exec, libreoffice --calc Documents/'1 - Work'/TCC/'2025 Fall - MATH-1483, 0482 - Math Functions, Essentials'/'FS - Func - Fall 25.xlsx'
# bind = $mainMod, S, exec, libreoffice --calc Documents/
# CherryTree - General notes
bind = $mainMod, N, exec, cherrytree --new_window Documents/'CherryTree - General notes'
# Flash drive
bind = CTRL SHIFT, U, exec, udisksctl unmount -b /dev/sdb && notify-send "Flash drive unmounted" || notify-send "Error: Flash drive not mounted"
##############################
### WINDOWS AND WORKSPACES ###
##############################
# See https://wiki.hypr.land/Configuring/Window-Rules/ for more
# See https://wiki.hypr.land/Configuring/Workspace-Rules/ for workspace rules
# Example windowrule
# windowrule = float,class:^(kitty)$,title:^(kitty)$
# Ignore maximize requests from apps. You'll probably like this.
windowrule = suppressevent maximize, class:.*
# Fix some dragging issues with XWayland
windowrule = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0
# gnome-calendar - Launch from Waybar
windowrule = float, class:org.gnome.Calendar
windowrule = size 360 600, class:org.gnome.Calendar
windowrule = move 1226 35, class:org.gnome.Calendar
windowrule = monitor 0, class:org.gnome.Calendar
# calcure - Launch from Waybar
windowrule = float, title:calcure
# windowrule = size 360 600, class:org.gnome.Calendar
# windowrule = move 1226 35, class:org.gnome.Calendar
# windowrule = monitor 0, class:org.gnome.Calendar
# nm-connection-editor - Launch from Waybar
windowrule = float, class:nm-connection-editor
windowrule = size 220 220, class:nm-connection-editor
windowrule = move 1152 35, class:nm-connection-editor
windowrule = monitor 0, class:nm-connection-editor
# Guitar Pro - Open tiled, like everyone else
windowrule = tile, initialTitle:Guitar Pro 8
###############################
### TY - OTHER CUSTOM STUFF ###
###############################
# Dark theme - https://github.com/hyprwm/Hyprland/discussions/5867
exec = gsettings set org.gnome.desktop.interface gtk-theme "Adwaita-dark" # for GTK3 apps
exec = gsettings set org.gnome.desktop.interface color-scheme "prefer-dark" # for GTK4 apps
env = QT_QPA_PLATFORMTHEME,qt6ct # for Qt apps
# Debugging - Hyprland is crashing, so I'm enabling logs
debug:disable_logs = false
###################################
### TY - HYPRLAND PLUGIN CONFIG ###
###################################
# plugin {
# hyprexpo {
# columns = 3
# gap_size = 20
# bg_col = rgb(111111)
# workspace_method = first 1 # [center/first] [workspace] e.g. first 1 or center m+1
# }
# }
Offline
Please make a new topic for new issues and mark this one as [SOLVED] by editing the title in your first post, you might have to shorten it a bit to make that fit.
Offline