MqBlox — нативный C++20 / Qt6 / OpenGL 3.3 лаунчер в стиле HyperOS 4 Liquid Glass (с шейдерным фоном чёрной дыры TON 618 и единым буфером размытия), подключённый к бэкенду MacOBlox для запуска официального macOS-клиента RobloxPlayer.app на Linux через Darling.
English summary below: Jump to English Documentation
- Только официальные источники (никаких вшитых бинарников): репозиторий не содержит бинарных файлов
RobloxPlayer.app,Darlingили скомпилированных.dylib. Мастер первой установки и обновления скачивает клиент напрямую с официального CDN Roblox (clientsettingscdn.roblox.com/setup.rbxcdn.com) и собирает шимы локально из исходного кода (shims/). - Честная работа без обхода античита: бинарник
RobloxPlayerне модифицируется и не патчится. Все исправления совместимости со средой Darling (OpenGL Core Profile, IOKit VRAM,host_statistics64,connectx, DNS-over-TLS,CoreAudio,WM_CLASS) загружаются через стандартный механизмDYLD_INSERT_LIBRARIES(libMacOBloxShims.dylib). - Приватность пароля и сессии: лаунчер не запрашивает пароль, не использует встроенный браузер для перехвата cookie, не читает, не логирует и не отправляет
.ROBLOSECURITY. Авторизация выполняется штатно внутри самого клиента Roblox (через функцию Быстрый вход / Quick Login), а сессия хранится локально внутри префикса Darling (~/.darling/Users/$USER/Library/MacOBlox/). - Чистый тракт звука и микрофона (
shims/audio_hal.c): Qt6-интерфейс лаунчера не вмешивается в PipeWire/PulseAudio/ALSA. Весь ввод и вывод звука работает внутриshims/audio_hal.c(CoreAudio HAL + AUHAL Output/Input Bus +AudioUnitRender). - Оптимизация под Wayland / Hyprland / AMD (
amdgpu):- Нативный Wayland-клиент (
app_id = "mqblox"), сопоставляющий как окно лаунчера, так и XWayland-окноRobloxPlayerс единой записьюmqblox.desktopв доке Serpantinum. - Ни одного
QGraphicsBlurEffectна дочерних виджетах (защита от сброса видеодрайвераamdgpu -12 ENOMEM): используется единый буфер размытия (Ton618GlWidget::scaledFrostedBackdrop). - Реальные замеры в простое на Hyprland/Wayland (Arch Linux, ядро
linux-zen,amdgpu):- CPU в простое:
0.0%(0 тиков планировщика за 3 секунды при статическом фоне или свёрнутом окне). - Память (RSS):
VmRSS = 107 812 КБ(~105.3 МиБ) с учётом разделяемых библиотек Qt6/Mesa, из них приватная анонимная куча процессаRssAnon = 44 196 КБ(~43.2 МиБ).
- CPU в простое:
- Нативный Wayland-клиент (
Устанавливает бинарник mqblox, собирает libMacOBloxShims.dylib и стаб-фреймворки (CoreML, CoreHaptics, DeviceCheck), устанавливает иконки (hicolor SVG + PNG 16x16..512x512) и .desktop-файл в ~/.local без прав root:
curl -fsSL https://raw.githubusercontent.com/MrQuster/mqblox/main/install.sh | bashЛокальная установка, обновление или удаление из клонированного репозитория:
./install.sh install # Сборка + установка в ~/.local + сборка шимов
./install.sh update # git pull --ff-only + пересборка и обновление
./install.sh uninstall # Чистое удаление бинарника, иконок и .desktop (конфиг сохраняется)В корне репозитория и в packaging/arch/PKGBUILD доступен готовый сценарий сборки пакета для Arch Linux:
makepkg -siЗависимости на Arch Linux:
sudo pacman -S --needed base-devel cmake ninja qt6-base qt6-svg qt6-wayland clang lld unzip hicolor-icon-themeСборка и запуск тестов:
cmake -B build -GNinja -DCMAKE_BUILD_TYPE=Release
cmake --build build --parallel
QT_QPA_PLATFORM=offscreen ctest --test-dir build --output-on-failure
./shims/build_debug_shim.shТребование для запуска игры: установленный Darling (
darling-binилиdarling-gitиз AUR). При первом запуске откройте вкладку «Главная и Мастер» и нажмите «Установить / Обновить (Шимы + Roblox)» — лаунчер скачает свежийRobloxPlayer.appс официального CDN Roblox в префикс Darling.
Лаунчер спроектирован с учётом алгоритма сопоставления окон в шелле Serpantinum (WindowTracker.qml + AppMatcher.qml):
- Вызов
QGuiApplication::setDesktopFileName(QStringLiteral("mqblox"))задаёт нативный Waylandapp_id = "mqblox". - Файл
mqblox.desktopустанавливается безNoDisplay=trueи содержитStartupWMClass=RobloxPlayer,Icon=mqblox,Categories=Game;. - Шим
shims/libMacOBloxShims.mавтоматически выставляет X11WM_CLASSокнаRobloxPlayerвmqblox(MACOBLOX_WM_CLASS=mqblox), благодаря чему и нативное Wayland-окно лаунчера, и XWayland-окно игры группируются под одной иконкой MqBlox в доке.
Все настройки хранятся в едином реестре SettingsRegistry (~/.config/mqblox/settings_v36.json, schemaVersion = 36) с атомарной записью через QSaveFile и автоматической миграцией со старых схем (settings_v35.json, settings_v34.json, settings_v13.json).
Перед запуском игры DarlingController и SettingsManager генерируют:
- Переменные окружения процесса Darling (
MACOBLOX_*,__GL_*,vblank_mode); ClientAppSettings.jsonвнутри бандлаRobloxPlayer.app/Contents/MacOS/ClientSettings/ClientAppSettings.jsonи в профиле слота.
Ключ в SettingsRegistry |
Куда записывается | Статус работы в macOS-клиенте |
|---|---|---|
vramLimitGib |
export MACOBLOX_VRAM_MB=<GiB*1024> (shims/gpu_info.c) |
Подтверждено — напрямую перехватывается в shims/gpu_info.c (IOKit VRAM,totalsize). |
glCore33 |
export MACOBLOX_GL_CORE33=0|1 (shims/gl_profile.c) |
Подтверждено — переключает профиль CGL между OpenGL 3.3 Core и OpenGL 4.1 Core в shims/gl_profile.c. |
dnsCustomResolver |
export MACOBLOX_DNS_UPSTREAM=host:port (shims/dns_override.c) |
Подтверждено — задаёт адрес локального DNS-прокси для shims/dns_override.c. |
vsync |
export vblank_mode=0|1, __GL_SYNC_TO_VBLANK=0|1 |
Подтверждено на уровне драйвера Mesa/NVIDIA для XWayland-окна. |
lightingTechnology |
FFlagDebugForceFutureIsBrightPhase3 / Phase2 (ClientAppSettings.json) |
Подтверждено в MacOBlox (launcher/config.py: lighting_technology). |
msaa |
FIntDebugForceMSAASamples (ClientAppSettings.json) |
Подтверждено в MacOBlox (launcher/config.py: msaa_samples). |
textureQuality |
DFIntTextureQualityOverride (ClientAppSettings.json) |
Подтверждено в MacOBlox (launcher/config.py: texture_quality). |
disablePostFx |
FFlagDisablePostFx (ClientAppSettings.json) |
Подтверждено в MacOBlox (launcher/config.py: disable_postfx). |
debugSkyGray |
FFlagDebugSkyGray (ClientAppSettings.json) |
Подтверждено в MacOBlox (launcher/config.py: gray_sky). |
fpsLimit |
DFIntTaskSchedulerTargetFps (ClientAppSettings.json) |
Подтверждено в MacOBlox (launcher/config.py: fps_limit). На новых релизах Roblox может требовать выбора лимита в меню самой игры. |
graphicsQuality |
FIntRomarkStartWithGraphicQualityLevel (ClientAppSettings.json) |
Предположительно (зависит от белого списка FFlag клиента Roblox) — может игнорироваться современным клиентом. |
disableShadows |
FIntRenderShadowIntensity (ClientAppSettings.json) |
Предположительно (зависит от белого списка FFlag клиента Roblox) — может игнорироваться клиентом. |
renderDistance |
DFIntDebugFRMQualityLevelOverride (ClientAppSettings.json) |
Предположительно (зависит от белого списка FFlag клиента Roblox) — может игнорироваться клиентом. |
grassMovement |
FIntFRMMinGrassDistance / FIntFRMMaxGrassDistance |
Предположительно (зависит от белого списка FFlag клиента Roblox) — может игнорироваться клиентом. |
customFastFlags |
Произвольный JSON-объект в ClientAppSettings.json |
Зависит от белого списка клиента Roblox — применяются только разрешённые клиентом ключи. |
(Настройки старого Android/Sober-бэкенда — touchMode, bringBackOof, useOpengl, enableGamemode, discordRpc — удалены из активной конфигурации как неприменимые к macOS-клиенту).
Весь звуковой тракт работает исключительно внутри shims/audio_hal.c. В этом форке в audio_hal.c внесены 4 ключевых исправления захвата микрофона (AUHAL Input Bus 1):
- Устранён возврат ошибки
-50(paramErr) приkAudioUnitProperty_StreamFormat(SetProperty) на шине захватаscope == kAudioUnitScope_Input && element == 1. - При создании
AudioUnitформатin_stream_formatинициализируется в стандартный для macOS Voice Chat Float32 48000 Hz Mono, а неS16_LE. - В
MacOBloxAudio_Renderисправлено вычисление адреса буфераAudioBufferListприmNumberBuffers > 1(неперемежающиеся каналы) и добавлена конвертацияS16_LE -> Float32при различии форматов ALSA и клиента. - Исправлена формула порога гистерезиса кольцевого буфера микрофона (
cap_prebuffered), из-за которой захват на части гарнитур никогда не стартовал при буфере ALSA<= 60 мс.
В shims/audio_hal.c встроено опциональное потокобезопасное журналирование через переменную окружения MACOBLOX_AUDIO_LOG (1/stderr для вывода в консоль или путь к файлу):
MACOBLOX_AUDIO_LOG=/tmp/macoblox_audio.log mqblox- Запустите
mqbloxс переменнойMACOBLOX_AUDIO_LOG=/tmp/macoblox_audio.log. - Войдите в плейс с поддержкой Roblox Voice Chat и включите иконку микрофона над персонажем.
- Проверьте лог:
Вы должны увидеть строки инициализации
tail -f /tmp/macoblox_audio.log
AudioUnitInitialize, установкуSetProperty StreamFormatнаelement=1, запуск потокаcapture_thread_fn: ALSA capture startedи периодическую статистикуRender(Input): calls=... frames=... ring_avail=....
MqBlox v36.0 is a native C++20 / Qt6 / OpenGL 3.3 launcher featuring a HyperOS 4 Liquid Glass UI (with a real-time TON 618 black hole GLSL backdrop and a single shared frosted-glass blur buffer), powered by the MacOBlox backend to run the official macOS RobloxPlayer.app client on Linux through Darling.
- Official Sources Only: No bundled
RobloxPlayer.app,Darling, or prebuilt.dylibbinaries in the repository. The built-in Setup Wizard downloadsRobloxPlayer.appdirectly from Roblox's official CDN (clientsettingscdn.roblox.com/setup.rbxcdn.com) and compileslibMacOBloxShims.dyliblocally. - Zero Anti-Cheat Tampering:
RobloxPlayeris never patched or modified. Compatibility fixes (OpenGL Core Profile, IOKit VRAM reporting,host_statistics64,connectx, DNS-over-TLS,CoreAudio, X11WM_CLASS) are injected cleanly viaDYLD_INSERT_LIBRARIES. - Session & Password Privacy: MqBlox never asks for your password, has no embedded browser, and never reads, logs, or transmits
.ROBLOSECURITY. Sign in directly inside the Roblox client using Quick Login. - Idle Efficiency on Wayland / Hyprland: Measured
0.0%CPU at idle and105.3 MiBtotalVmRSS(43.2 MiBprivateRssAnon) on Arch Linux (Hyprland,amdgpu).
curl -fsSL https://raw.githubusercontent.com/MrQuster/mqblox/main/install.sh | bashOr on Arch Linux via makepkg:
makepkg -siLicensed under the MIT License (see LICENSE):
- Narezany (
narezy) — MacOBlox (Copyright (c) 2026 Narezany, MIT License) — original creator of MacOBlox, the Darling runtime architecture for macOS Roblox on Linux, all C/Objective-C Darwin shims (libMacOBloxShims.m,audio_hal.c,gl_profile.c,gpu_info.c,memory_stats.c,dns_override.c,darling_fixes.c,xfixes_raw.c,net_trace.c,fast_libc.c,xattr_compat.c,exit_compat.c,connectx_compat.c,missing_symbols.c), stub frameworks (CoreML,CoreHaptics,DeviceCheck), and the DNS-over-TLS proxy. - Darling Project — macOS / Darwin translation layer for Linux.
- MrQuster — MqBlox (
Copyright (c) 2026 MrQuster, MIT License) — C++20/Qt6 HyperOS 4 Liquid Glass interface,Ton618GlWidgetOpenGL shader engine, unifiedSettingsRegistry, setup wizard, system diagnostics, Serpantinum dock integration, and microphone capture fixes inshims/audio_hal.c.
