├── .github ├── FUNDING.yml └── ISSUE_TEMPLATE │ ├── bug_report.en.md │ └── bug_report_zh.md ├── .gitignore ├── .gitmodules ├── LICENSE ├── README.md ├── android_alsa ├── CMakeLists.txt ├── README.md ├── alsa.conf ├── android_aserver.conf ├── build.sh ├── cross-arm64.cmake ├── cross-armhf.cmake └── module_pcm_android_aserver.c ├── android_sysvshm ├── CMakeLists.txt ├── README.md ├── android_sysvshm.c ├── build.sh ├── cross-arm64.cmake ├── cross-armhf.cmake └── sys │ └── shm.h ├── app ├── .gitignore ├── build.gradle ├── libs │ └── MidiSynth │ │ ├── LICENSE.txt │ │ └── MidiSynth.jar ├── proguard-rules.pro └── src │ └── main │ ├── AndroidManifest.xml │ ├── assets │ ├── .gitattributes │ ├── box64_env_vars.json │ ├── box86_64 │ │ ├── box64-0.3.1-4f6a66f.tzst │ │ ├── box64-0.3.5-11563f3.tzst │ │ └── rcfiles │ │ │ └── box86_64rc-1.rcp │ ├── box86_env_vars.json │ ├── common_dlls.json │ ├── container_pattern.tzst │ ├── dxwrapper │ │ ├── cnc-ddraw-6.6 │ │ │ ├── Shaders │ │ │ │ ├── interpolation │ │ │ │ │ ├── bilinear.glsl │ │ │ │ │ ├── catmull-rom-bilinear.glsl │ │ │ │ │ ├── fsr.glsl │ │ │ │ │ ├── fsr.glsl.pass1 │ │ │ │ │ ├── jinc2-dedither.glsl │ │ │ │ │ └── lanczos2-sharp.glsl │ │ │ │ └── nearest-neighbor.glsl │ │ │ ├── ddraw.ini │ │ │ └── ddraw.tzst │ │ ├── d8vk-1.0.tzst │ │ ├── dxvk-0.96.tzst │ │ ├── dxvk-1.10.3-async.tzst │ │ ├── dxvk-1.10.6-sarek-async.tzst │ │ ├── dxvk-1.5.5.tzst │ │ ├── dxvk-1.7.3-stripped.tzst │ │ ├── dxvk-2.0-async.tzst │ │ ├── dxvk-2.4-gplasync.tzst │ │ ├── vkd3d-2.12.tzst │ │ └── vkd3d-2.13.tzst │ ├── gpu_cards.json │ ├── graphics_driver │ │ ├── llvmpipe-25.0.0.tzst │ │ ├── turnip-24.1.0.tzst │ │ ├── virgl-23.1.9.tzst │ │ ├── vortek-1.0.tzst │ │ └── zink-22.2.0.tzst │ ├── imagefs.txz │ ├── imagefs_patches.tzst │ ├── inputcontrols │ │ ├── icons │ │ │ ├── 0.png │ │ │ ├── 1.png │ │ │ ├── 10.png │ │ │ ├── 11.png │ │ │ ├── 12.png │ │ │ ├── 13.png │ │ │ ├── 14.png │ │ │ ├── 15.png │ │ │ ├── 16.png │ │ │ ├── 2.png │ │ │ ├── 3.png │ │ │ ├── 4.png │ │ │ ├── 5.png │ │ │ ├── 6.png │ │ │ ├── 7.png │ │ │ ├── 8.png │ │ │ └── 9.png │ │ └── profiles │ │ │ ├── controls-1.icp │ │ │ ├── controls-2.icp │ │ │ └── controls-3.icp │ ├── pulseaudio.tzst │ ├── soundfonts │ │ ├── wt_210k_G.sf2 │ │ └── wt_210k_G_LICENSE.txt │ ├── wincomponents │ │ ├── ddraw.tzst │ │ ├── direct3d.tzst │ │ ├── directmusic.tzst │ │ ├── directplay.tzst │ │ ├── directshow.tzst │ │ ├── directsound.tzst │ │ ├── vcrun2005.tzst │ │ ├── vcrun2010.tzst │ │ ├── wincomponents.json │ │ ├── wmdecoder.tzst │ │ └── xaudio.tzst │ ├── wine_debug_channels.json │ └── wine_startmenu.json │ ├── cpp │ ├── CMakeLists.txt │ ├── patchelf │ │ ├── CMakeLists.txt │ │ └── src │ │ │ ├── elf.h │ │ │ ├── patchelf.cc │ │ │ └── patchelf.h │ ├── proot │ │ ├── CMakeLists.txt │ │ ├── src │ │ │ ├── COPYING │ │ │ ├── arch.h │ │ │ ├── attribute.h │ │ │ ├── cli │ │ │ │ ├── cli.c │ │ │ │ ├── cli.h │ │ │ │ ├── note.c │ │ │ │ ├── note.h │ │ │ │ ├── proot.c │ │ │ │ └── proot.h │ │ │ ├── compat.h │ │ │ ├── execve │ │ │ │ ├── auxv.c │ │ │ │ ├── auxv.h │ │ │ │ ├── elf.c │ │ │ │ ├── elf.h │ │ │ │ ├── enter.c │ │ │ │ ├── execve.h │ │ │ │ └── exit.c │ │ │ ├── loader │ │ │ │ ├── assembly-arm.h │ │ │ │ ├── assembly-arm64.h │ │ │ │ ├── loader.c │ │ │ │ └── script.h │ │ │ ├── path │ │ │ │ ├── binding.c │ │ │ │ ├── binding.h │ │ │ │ ├── canon.c │ │ │ │ ├── canon.h │ │ │ │ ├── glue.c │ │ │ │ ├── glue.h │ │ │ │ ├── path.c │ │ │ │ ├── path.h │ │ │ │ ├── proc.c │ │ │ │ ├── proc.h │ │ │ │ ├── temp.c │ │ │ │ └── temp.h │ │ │ ├── ptrace │ │ │ │ ├── ptrace.c │ │ │ │ ├── ptrace.h │ │ │ │ ├── wait.c │ │ │ │ └── wait.h │ │ │ ├── syscall │ │ │ │ ├── chain.c │ │ │ │ ├── chain.h │ │ │ │ ├── enter.c │ │ │ │ ├── exit.c │ │ │ │ ├── heap.c │ │ │ │ ├── heap.h │ │ │ │ ├── rlimit.c │ │ │ │ ├── rlimit.h │ │ │ │ ├── seccomp.c │ │ │ │ ├── seccomp.h │ │ │ │ ├── socket.c │ │ │ │ ├── socket.h │ │ │ │ ├── syscall.c │ │ │ │ ├── syscall.h │ │ │ │ ├── sysnum.c │ │ │ │ ├── sysnum.h │ │ │ │ ├── sysnums-arm.h │ │ │ │ ├── sysnums-arm64.h │ │ │ │ └── sysnums.list │ │ │ └── tracee │ │ │ │ ├── abi.h │ │ │ │ ├── event.c │ │ │ │ ├── event.h │ │ │ │ ├── mem.c │ │ │ │ ├── mem.h │ │ │ │ ├── reg.c │ │ │ │ ├── reg.h │ │ │ │ ├── seccomp.c │ │ │ │ ├── seccomp.h │ │ │ │ ├── tracee.c │ │ │ │ └── tracee.h │ │ └── talloc │ │ │ ├── talloc.c │ │ │ └── talloc.h │ ├── virglrenderer │ │ ├── CMakeLists.txt │ │ ├── server │ │ │ ├── virgl_server.c │ │ │ ├── virgl_server.h │ │ │ ├── virgl_server_protocol.h │ │ │ ├── virgl_server_renderer.c │ │ │ ├── virgl_server_shm.c │ │ │ └── virgl_server_shm.h │ │ └── src │ │ │ ├── gallium │ │ │ ├── auxiliary │ │ │ │ ├── cso_cache │ │ │ │ │ ├── cso_cache.c │ │ │ │ │ ├── cso_cache.h │ │ │ │ │ ├── cso_hash.c │ │ │ │ │ └── cso_hash.h │ │ │ │ ├── os │ │ │ │ │ ├── os_memory.h │ │ │ │ │ ├── os_memory_aligned.h │ │ │ │ │ ├── os_memory_debug.h │ │ │ │ │ ├── os_memory_stdc.h │ │ │ │ │ ├── os_misc.c │ │ │ │ │ ├── os_misc.h │ │ │ │ │ ├── os_mman.h │ │ │ │ │ └── os_thread.h │ │ │ │ ├── tgsi │ │ │ │ │ ├── tgsi_build.c │ │ │ │ │ ├── tgsi_build.h │ │ │ │ │ ├── tgsi_dump.c │ │ │ │ │ ├── tgsi_dump.h │ │ │ │ │ ├── tgsi_info.c │ │ │ │ │ ├── tgsi_info.h │ │ │ │ │ ├── tgsi_iterate.c │ │ │ │ │ ├── tgsi_iterate.h │ │ │ │ │ ├── tgsi_opcode_tmp.h │ │ │ │ │ ├── tgsi_parse.c │ │ │ │ │ ├── tgsi_parse.h │ │ │ │ │ ├── tgsi_sanity.c │ │ │ │ │ ├── tgsi_sanity.h │ │ │ │ │ ├── tgsi_scan.c │ │ │ │ │ ├── tgsi_scan.h │ │ │ │ │ ├── tgsi_strings.c │ │ │ │ │ ├── tgsi_strings.h │ │ │ │ │ ├── tgsi_text.c │ │ │ │ │ ├── tgsi_text.h │ │ │ │ │ ├── tgsi_transform.c │ │ │ │ │ ├── tgsi_transform.h │ │ │ │ │ ├── tgsi_ureg.c │ │ │ │ │ ├── tgsi_ureg.h │ │ │ │ │ ├── tgsi_util.c │ │ │ │ │ └── tgsi_util.h │ │ │ │ └── util │ │ │ │ │ ├── __pycache__ │ │ │ │ │ ├── u_format_parse.cpython-310.pyc │ │ │ │ │ └── u_format_parse.cpython-36.pyc │ │ │ │ │ ├── rgtc.c │ │ │ │ │ ├── rgtc.h │ │ │ │ │ ├── u_atomic.h │ │ │ │ │ ├── u_bitmask.c │ │ │ │ │ ├── u_bitmask.h │ │ │ │ │ ├── u_box.h │ │ │ │ │ ├── u_cpu_detect.c │ │ │ │ │ ├── u_cpu_detect.h │ │ │ │ │ ├── u_debug.c │ │ │ │ │ ├── u_debug.h │ │ │ │ │ ├── u_debug_describe.c │ │ │ │ │ ├── u_debug_describe.h │ │ │ │ │ ├── u_debug_refcnt.h │ │ │ │ │ ├── u_double_list.h │ │ │ │ │ ├── u_dual_blend.h │ │ │ │ │ ├── u_format.c │ │ │ │ │ ├── u_format.csv │ │ │ │ │ ├── u_format.h │ │ │ │ │ ├── u_format_parse.py │ │ │ │ │ ├── u_format_s3tc.h │ │ │ │ │ ├── u_format_table.c │ │ │ │ │ ├── u_format_table.py │ │ │ │ │ ├── u_half.h │ │ │ │ │ ├── u_hash_table.c │ │ │ │ │ ├── u_hash_table.h │ │ │ │ │ ├── u_inlines.h │ │ │ │ │ ├── u_math.c │ │ │ │ │ ├── u_math.h │ │ │ │ │ ├── u_memory.h │ │ │ │ │ ├── u_pack_color.h │ │ │ │ │ ├── u_pointer.h │ │ │ │ │ ├── u_prim.h │ │ │ │ │ ├── u_rect.h │ │ │ │ │ ├── u_string.h │ │ │ │ │ ├── u_surface.c │ │ │ │ │ ├── u_surface.h │ │ │ │ │ ├── u_texture.c │ │ │ │ │ └── u_texture.h │ │ │ └── include │ │ │ │ ├── c11 │ │ │ │ ├── threads.h │ │ │ │ ├── threads_posix.h │ │ │ │ └── threads_win32.h │ │ │ │ ├── c99_compat.h │ │ │ │ ├── no_extern_c.h │ │ │ │ └── pipe │ │ │ │ ├── p_compiler.h │ │ │ │ ├── p_config.h │ │ │ │ ├── p_context.h │ │ │ │ ├── p_defines.h │ │ │ │ ├── p_format.h │ │ │ │ ├── p_screen.h │ │ │ │ ├── p_shader_tokens.h │ │ │ │ ├── p_state.h │ │ │ │ └── p_video_enums.h │ │ │ ├── iov.c │ │ │ ├── virgl_hw.h │ │ │ ├── virgl_protocol.h │ │ │ ├── vrend_blitter.c │ │ │ ├── vrend_blitter.h │ │ │ ├── vrend_decode.c │ │ │ ├── vrend_formats.c │ │ │ ├── vrend_iov.h │ │ │ ├── vrend_object.c │ │ │ ├── vrend_object.h │ │ │ ├── vrend_renderer.c │ │ │ ├── vrend_renderer.h │ │ │ ├── vrend_shader.c │ │ │ ├── vrend_shader.h │ │ │ ├── vrend_strbuf.h │ │ │ └── vrend_util.h │ ├── winlator │ │ ├── alsa_client.c │ │ ├── drawable.c │ │ ├── gpu_image.c │ │ ├── patchelf_wrapper.cpp │ │ ├── sysvshared_memory.c │ │ └── xconnector_epoll.c │ └── xr │ │ ├── engine.c │ │ ├── engine.h │ │ ├── framebuffer.c │ │ ├── framebuffer.h │ │ ├── input.c │ │ ├── input.h │ │ ├── main.c │ │ ├── math.c │ │ ├── math.h │ │ ├── renderer.c │ │ └── renderer.h │ ├── java │ └── com │ │ └── winlator │ │ ├── Box86_64RCFragment.java │ │ ├── ContainerDetailFragment.java │ │ ├── ContainersFragment.java │ │ ├── ContentsFragment.java │ │ ├── ControlsEditorActivity.java │ │ ├── ExternalControllerBindingsActivity.java │ │ ├── InputControlsFragment.java │ │ ├── MainActivity.java │ │ ├── SettingsFragment.java │ │ ├── ShortcutsFragment.java │ │ ├── XServerDisplayActivity.java │ │ ├── XrActivity.java │ │ ├── alsaserver │ │ ├── ALSAClient.java │ │ ├── ALSAClientConnectionHandler.java │ │ ├── ALSARequestHandler.java │ │ └── RequestCodes.java │ │ ├── box86_64 │ │ ├── Box86_64EditPresetDialog.java │ │ ├── Box86_64Preset.java │ │ ├── Box86_64PresetManager.java │ │ └── rc │ │ │ ├── RCField.java │ │ │ ├── RCFile.java │ │ │ ├── RCGroup.java │ │ │ ├── RCItem.java │ │ │ └── RCManager.java │ │ ├── container │ │ ├── Container.java │ │ ├── ContainerManager.java │ │ └── Shortcut.java │ │ ├── contentdialog │ │ ├── AddEnvVarDialog.java │ │ ├── ContentDialog.java │ │ ├── ContentInfoDialog.java │ │ ├── ContentUntrustedDialog.java │ │ ├── DXVKConfigDialog.java │ │ ├── DebugDialog.java │ │ ├── ImportGroupDialog.java │ │ ├── NavigationDialog.java │ │ ├── ShortcutSettingsDialog.java │ │ ├── StorageInfoDialog.java │ │ ├── VKD3DConfigDialog.java │ │ ├── VirGLConfigDialog.java │ │ └── VortekConfigDialog.java │ │ ├── contents │ │ ├── ContentProfile.java │ │ ├── ContentsManager.java │ │ └── Downloader.java │ │ ├── core │ │ ├── AppUtils.java │ │ ├── ArrayUtils.java │ │ ├── CPUStatus.java │ │ ├── Callback.java │ │ ├── CubicBezierInterpolator.java │ │ ├── CursorLocker.java │ │ ├── DefaultVersion.java │ │ ├── DownloadProgressDialog.java │ │ ├── ElfHelper.java │ │ ├── EnvVars.java │ │ ├── FileUtils.java │ │ ├── GPUHelper.java │ │ ├── GPUInformation.java │ │ ├── HttpUtils.java │ │ ├── ImageUtils.java │ │ ├── KeyValueSet.java │ │ ├── MSBitmap.java │ │ ├── MSLink.java │ │ ├── MSLogFont.java │ │ ├── NetworkHelper.java │ │ ├── OnExtractFileListener.java │ │ ├── PatchElf.java │ │ ├── PreloaderDialog.java │ │ ├── ProcessHelper.java │ │ ├── StreamUtils.java │ │ ├── StringUtils.java │ │ ├── TarCompressorUtils.java │ │ ├── UnitUtils.java │ │ ├── WineInfo.java │ │ ├── WineRegistryEditor.java │ │ ├── WineStartMenuCreator.java │ │ ├── WineThemeManager.java │ │ ├── WineUtils.java │ │ └── WinlatorFilesProvider.java │ │ ├── inputcontrols │ │ ├── Binding.java │ │ ├── ControlElement.java │ │ ├── ControlsProfile.java │ │ ├── ExternalController.java │ │ ├── ExternalControllerBinding.java │ │ ├── GamepadState.java │ │ ├── InputControlsManager.java │ │ └── RangeScroller.java │ │ ├── math │ │ ├── Mathf.java │ │ └── XForm.java │ │ ├── midi │ │ ├── MidiHandler.java │ │ ├── MidiManager.java │ │ └── RequestCodes.java │ │ ├── renderer │ │ ├── GLRenderer.java │ │ ├── GPUImage.java │ │ ├── RenderableWindow.java │ │ ├── Texture.java │ │ ├── VertexAttribute.java │ │ ├── ViewTransformation.java │ │ └── material │ │ │ ├── CursorMaterial.java │ │ │ ├── ShaderMaterial.java │ │ │ └── WindowMaterial.java │ │ ├── sysvshm │ │ ├── RequestCodes.java │ │ ├── SysVSHMConnectionHandler.java │ │ ├── SysVSHMRequestHandler.java │ │ └── SysVSharedMemory.java │ │ ├── widget │ │ ├── CPUListView.java │ │ ├── ColorPickerView.java │ │ ├── EnvVarsView.java │ │ ├── FrameRating.java │ │ ├── ImagePickerView.java │ │ ├── InputControlsView.java │ │ ├── LogView.java │ │ ├── MagnifierView.java │ │ ├── MultiSelectionComboBox.java │ │ ├── NumberPicker.java │ │ ├── TouchpadView.java │ │ └── XServerView.java │ │ ├── winhandler │ │ ├── MouseEventFlags.java │ │ ├── OnGetProcessInfoListener.java │ │ ├── ProcessInfo.java │ │ ├── RequestCodes.java │ │ ├── TaskManagerDialog.java │ │ └── WinHandler.java │ │ ├── xconnector │ │ ├── Client.java │ │ ├── ClientSocket.java │ │ ├── ConnectionHandler.java │ │ ├── RequestHandler.java │ │ ├── UnixSocketConfig.java │ │ ├── XConnectorEpoll.java │ │ ├── XInputStream.java │ │ ├── XOutputStream.java │ │ └── XStreamLock.java │ │ ├── xenvironment │ │ ├── EnvironmentComponent.java │ │ ├── ImageFs.java │ │ ├── ImageFsInstaller.java │ │ ├── XEnvironment.java │ │ └── components │ │ │ ├── ALSAServerComponent.java │ │ │ ├── GlibcProgramLauncherComponent.java │ │ │ ├── GuestProgramLauncherComponent.java │ │ │ ├── NetworkInfoUpdateComponent.java │ │ │ ├── PulseAudioComponent.java │ │ │ ├── SysVSharedMemoryComponent.java │ │ │ ├── VirGLRendererComponent.java │ │ │ ├── VortekRendererComponent.java │ │ │ └── XServerComponent.java │ │ └── xserver │ │ ├── Atom.java │ │ ├── Bitmask.java │ │ ├── ClientOpcodes.java │ │ ├── Cursor.java │ │ ├── CursorManager.java │ │ ├── DesktopHelper.java │ │ ├── Drawable.java │ │ ├── DrawableManager.java │ │ ├── EventListener.java │ │ ├── GrabManager.java │ │ ├── GraphicsContext.java │ │ ├── GraphicsContextManager.java │ │ ├── IDGenerator.java │ │ ├── InputDeviceManager.java │ │ ├── Keyboard.java │ │ ├── Pixmap.java │ │ ├── PixmapFormat.java │ │ ├── PixmapManager.java │ │ ├── Pointer.java │ │ ├── Property.java │ │ ├── ResourceIDs.java │ │ ├── SHMSegmentManager.java │ │ ├── ScreenInfo.java │ │ ├── SelectionManager.java │ │ ├── Visual.java │ │ ├── Window.java │ │ ├── WindowAttributes.java │ │ ├── WindowManager.java │ │ ├── XClient.java │ │ ├── XClientConnectionHandler.java │ │ ├── XClientRequestHandler.java │ │ ├── XKeycode.java │ │ ├── XLock.java │ │ ├── XResource.java │ │ ├── XResourceManager.java │ │ ├── XServer.java │ │ ├── errors │ │ ├── BadAccess.java │ │ ├── BadAlloc.java │ │ ├── BadAtom.java │ │ ├── BadCursor.java │ │ ├── BadDrawable.java │ │ ├── BadFence.java │ │ ├── BadGraphicsContext.java │ │ ├── BadIdChoice.java │ │ ├── BadImplementation.java │ │ ├── BadMatch.java │ │ ├── BadPixmap.java │ │ ├── BadSHMSegment.java │ │ ├── BadValue.java │ │ ├── BadWindow.java │ │ └── XRequestError.java │ │ ├── events │ │ ├── ButtonPress.java │ │ ├── ButtonRelease.java │ │ ├── ConfigureNotify.java │ │ ├── ConfigureRequest.java │ │ ├── CreateNotify.java │ │ ├── DestroyNotify.java │ │ ├── EnterNotify.java │ │ ├── Event.java │ │ ├── Expose.java │ │ ├── InputDeviceEvent.java │ │ ├── KeyPress.java │ │ ├── KeyRelease.java │ │ ├── LeaveNotify.java │ │ ├── MapNotify.java │ │ ├── MapRequest.java │ │ ├── MappingNotify.java │ │ ├── MotionNotify.java │ │ ├── PointerWindowEvent.java │ │ ├── PresentCompleteNotify.java │ │ ├── PresentIdleNotify.java │ │ ├── PropertyNotify.java │ │ ├── RawEvent.java │ │ ├── ResizeRequest.java │ │ ├── SelectionClear.java │ │ └── UnmapNotify.java │ │ ├── extensions │ │ ├── BigReqExtension.java │ │ ├── DRI3Extension.java │ │ ├── Extension.java │ │ ├── MITSHMExtension.java │ │ ├── PresentExtension.java │ │ └── SyncExtension.java │ │ └── requests │ │ ├── AtomRequests.java │ │ ├── CursorRequests.java │ │ ├── DrawRequests.java │ │ ├── ExtensionRequests.java │ │ ├── FontRequests.java │ │ ├── GrabRequests.java │ │ ├── GraphicsContextRequests.java │ │ ├── KeyboardRequests.java │ │ ├── PixmapRequests.java │ │ ├── SelectionRequests.java │ │ └── WindowRequests.java │ ├── jniLibs │ └── arm64-v8a │ │ ├── libltdl.so │ │ ├── libpulse.so │ │ ├── libpulseaudio.so │ │ ├── libpulsecommon-13.0.so │ │ ├── libpulsecore-13.0.so │ │ ├── libsndfile.so │ │ ├── libvortekrenderer.so │ │ └── libwinlator.so │ └── res │ ├── drawable-hdpi │ ├── button_neutral_normal.9.png │ ├── button_neutral_pressed.9.png │ ├── button_positive_normal.9.png │ ├── button_positive_pressed.9.png │ ├── color_frame.png │ ├── color_frame_selected.png │ ├── combo_box_normal.9.png │ ├── combo_box_pressed.9.png │ ├── content_dialog_background.9.png │ ├── cursor.png │ ├── edit_text_focused.9.png │ ├── edit_text_normal.9.png │ ├── edit_text_pressed.9.png │ ├── icon_about.png │ ├── icon_add.png │ ├── icon_confirm.png │ ├── icon_container.png │ ├── icon_cpu.png │ ├── icon_debug.png │ ├── icon_duplicate.png │ ├── icon_edit.png │ ├── icon_env_var.png │ ├── icon_exit.png │ ├── icon_export.png │ ├── icon_fullscreen.png │ ├── icon_gamepad.png │ ├── icon_help.png │ ├── icon_hide.png │ ├── icon_image_picker.png │ ├── icon_info.png │ ├── icon_input_controls.png │ ├── icon_keyboard.png │ ├── icon_list_item_expanded.png │ ├── icon_list_item_folded.png │ ├── icon_list_item_menu.png │ ├── icon_magnifier.png │ ├── icon_menu.png │ ├── icon_move.png │ ├── icon_open.png │ ├── icon_pause.png │ ├── icon_play.png │ ├── icon_remove.png │ ├── icon_remove2.png │ ├── icon_reset.png │ ├── icon_settings.png │ ├── icon_shortcut.png │ ├── icon_task_manager.png │ ├── icon_wine.png │ ├── icon_zoom_minus.png │ ├── icon_zoom_plus.png │ ├── logo.png │ ├── number_picker_decrement.png │ ├── number_picker_increment.png │ ├── preloader_background.9.png │ ├── preloader_spinner.png │ ├── remove_button.png │ ├── table_head_background.9.png │ ├── taskmgr_process.png │ ├── toggle_button_off.png │ ├── toggle_button_on.png │ ├── touchpad_help_main_menu.png │ ├── touchpad_help_mouse_left_click.png │ ├── touchpad_help_mouse_right_click.png │ ├── touchpad_help_mouse_scroll_wheel.png │ └── wallpaper.png │ ├── drawable-xxhdpi │ ├── icon_action_bar_add.png │ ├── icon_action_bar_back.png │ ├── icon_action_bar_menu.png │ ├── icon_popup_menu_bring_to_front.png │ ├── icon_popup_menu_cpu.png │ ├── icon_popup_menu_download.png │ ├── icon_popup_menu_duplicate.png │ ├── icon_popup_menu_edit.png │ ├── icon_popup_menu_info.png │ ├── icon_popup_menu_open.png │ ├── icon_popup_menu_remove.png │ ├── icon_popup_menu_run.png │ ├── icon_popup_menu_settings.png │ └── icon_shortcut.png │ ├── drawable │ ├── bordered_panel.xml │ ├── button_neutral.xml │ ├── button_positive.xml │ ├── combo_box.xml │ ├── custom_toast_background.xml │ ├── edit_text.xml │ ├── element_left_box.xml │ ├── element_right_box.xml │ ├── folded_expended_selector.xml │ ├── hidden_pointer_arrow.xml │ ├── icon_background.xml │ ├── input_controls_toolbar.xml │ ├── null_bitmap.png │ ├── number_picker_background.xml │ ├── progress_bar_indeterminate.xml │ ├── tab_layout_background.xml │ └── toggle_button_selector.xml │ ├── layout │ ├── about_dialog.xml │ ├── add_env_var_dialog.xml │ ├── binding_field.xml │ ├── box86_64_edit_preset_dialog.xml │ ├── box86_64_env_var_list_item.xml │ ├── box86_64_rc_fragment.xml │ ├── box86_64_rc_group_fragment.xml │ ├── box86_64_rc_group_list_item.xml │ ├── box86_64_rc_groups_dialog.xml │ ├── box86_64_rc_list_item.xml │ ├── box86_64_rc_var.xml │ ├── container_detail_fragment.xml │ ├── container_list_item.xml │ ├── container_storage_info_dialog.xml │ ├── containers_fragment.xml │ ├── content_dialog.xml │ ├── content_file_list_item.xml │ ├── content_info_dialog.xml │ ├── content_list_item.xml │ ├── content_untrusted_dialog.xml │ ├── contents_fragment.xml │ ├── control_element_settings.xml │ ├── controls_editor_activity.xml │ ├── cpu_list_dialog.xml │ ├── cpu_list_item.xml │ ├── custom_toast.xml │ ├── debug_dialog.xml │ ├── debug_toolbar.xml │ ├── download_progress_dialog.xml │ ├── drive_list_item.xml │ ├── dxvk_config_dialog.xml │ ├── env_vars_list_item.xml │ ├── external_controller_binding_list_item.xml │ ├── external_controller_bindings_activity.xml │ ├── external_controller_list_item.xml │ ├── frame_rating.xml │ ├── image_picker_view.xml │ ├── input_controls_dialog.xml │ ├── input_controls_fragment.xml │ ├── installed_wine_list_item.xml │ ├── magnifier_view.xml │ ├── main_activity.xml │ ├── main_menu_header.xml │ ├── navigation_dialog.xml │ ├── number_picker.xml │ ├── preloader_dialog.xml │ ├── process_info_list_item.xml │ ├── settings_fragment.xml │ ├── shortcut_list_item.xml │ ├── shortcut_settings_dialog.xml │ ├── shortcuts_fragment.xml │ ├── task_manager_dialog.xml │ ├── touchpad_help_dialog.xml │ ├── virgl_config_dialog.xml │ ├── vkd3d_config_dialog.xml │ ├── vortek_config_dialog.xml │ ├── wincomponent_list_item.xml │ ├── wine_debug_channel_list_item.xml │ ├── wine_install_options_dialog.xml │ └── xserver_display_activity.xml │ ├── menu │ ├── container_popup_menu.xml │ ├── containers_menu.xml │ ├── content_popup_menu.xml │ ├── extra_args_popup_menu.xml │ ├── main_menu.xml │ ├── open_file_popup_menu.xml │ ├── process_popup_menu.xml │ ├── rc_group_menu.xml │ ├── rc_new_menu.xml │ ├── shortcut_popup_menu.xml │ └── xserver_menu.xml │ ├── mipmap-anydpi-v26 │ ├── ic_launcher.xml │ └── ic_launcher_round.xml │ ├── mipmap-hdpi │ ├── ic_launcher.png │ ├── ic_launcher_foreground.png │ └── ic_launcher_round.png │ ├── mipmap-mdpi │ ├── ic_launcher.png │ ├── ic_launcher_foreground.png │ └── ic_launcher_round.png │ ├── mipmap-xhdpi │ ├── ic_launcher.png │ ├── ic_launcher_foreground.png │ └── ic_launcher_round.png │ ├── mipmap-xxhdpi │ ├── ic_launcher.png │ ├── ic_launcher_foreground.png │ └── ic_launcher_round.png │ ├── mipmap-xxxhdpi │ ├── ic_launcher.png │ ├── ic_launcher_foreground.png │ └── ic_launcher_round.png │ ├── values-ru │ └── strings.xml │ ├── values-v27 │ └── styles.xml │ ├── values-zh-rCN │ └── strings.xml │ └── values │ ├── arrays.xml │ ├── attrs.xml │ ├── colors.xml │ ├── ic_launcher_background.xml │ ├── strings.xml │ └── styles.xml ├── build.gradle ├── content └── metadata.json ├── gradle.properties ├── gradle ├── libs.versions.toml └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── input_controls ├── Alien Versus Predator.icp ├── Alpha Protocol.icp ├── Bioshock.icp ├── Call of Juarez Gunslinger.icp ├── Cyber Shadow.icp ├── Dark Souls 2.icp ├── Deus Ex Human Revolution.icp ├── Divinity 2 DC.icp ├── Drakensang.icp ├── Driver Parallel Lines.icp ├── Fallout 3.icp ├── Far Cry 4.icp ├── Final Fantasy 8.icp ├── Final Fantasy Type-0.icp ├── FlatOut 2.icp ├── Front Mission Evolved.icp ├── GTA 5.icp ├── Gravity Circuit.icp ├── Hitman 2.icp ├── IGI 2.icp ├── Infernal.icp ├── La Mulana.icp ├── Marvel Ultimate Alliance.icp ├── Mass Effect 2.icp ├── Metro 2033.icp ├── Oblivion.icp ├── Prey.icp ├── Psychonauts.icp ├── Quake 4.icp ├── RAGE.icp ├── Rayman 3.icp ├── Risen 2.icp ├── Second Sight.icp ├── Shovel Knight.icp ├── Singularity.icp ├── Skyrim.icp ├── Sonic Generations.icp ├── Sonic Mania.icp ├── Spiderman Shattered Dimensions.icp ├── Stalker CS.icp ├── Star Wars Jedi Knight 2.icp ├── SteamWorld Dig 2.icp ├── Sunset Overdrive.icp ├── The Alliance Alive.icp ├── The Forest.icp ├── The Saboteur.icp ├── Turok 2.icp ├── Turok Evolution.icp ├── Ultima Underworld.icp ├── Unepic.icp ├── Wolfenstein.icp ├── Xanadu Next.icp ├── Ys Origin.icp └── index.txt ├── installable_components ├── box64 │ ├── box64-0.2.8.tzst │ ├── box64-0.2.9.tzst │ ├── box64-0.3.1.tzst │ ├── box64-0.3.3.tzst │ └── index.txt ├── dxvk │ ├── dxvk-1.4.2.tzst │ ├── dxvk-2.3.1.tzst │ ├── dxvk-2.5.2.tzst │ └── index.txt └── turnip │ ├── index.txt │ ├── turnip-23.3.0.tzst │ └── turnip-24.2.0.tzst ├── logo.png └── settings.gradle /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] 4 | patreon: # Replace with a single Patreon username 5 | open_collective: # Replace with a single Open Collective username 6 | ko_fi: # Replace with a single Ko-fi username 7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 9 | liberapay: # Replace with a single Liberapay username 10 | issuehunt: # Replace with a single IssueHunt username 11 | otechie: # Replace with a single Otechie username 12 | lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry 13 | custom: buymeacoffee.com/brunosx 14 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.en.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug Report 3 | about: Report a bug to help us improve 4 | title: "[BUG]" 5 | labels: bug 6 | assignees: '' 7 | --- 8 | 9 | **Device Information** 10 | - Device Model: [e.g., Samsung Galaxy S21] 11 | - Device Processor Model: [e.g., Exynos 2100] 12 | - Android Version: [e.g., 11] 13 | - Kernel Version: [e.g., 4.19.112] 14 | 15 | **Application Configuration Information** 16 | - App Version: [e.g., 7.1.1] 17 | - Display Driver: [e.g., Turnip-24.1.0] 18 | - dxwrapper: [e.g., DXVK-2.3.1] 19 | - box64 Version: [e.g., 0.3.0] 20 | - box64 Preset: [e.g., Compatibility] 21 | 22 | **Description of the Issue** 23 | Please provide a clear and concise description of the problem. For example, "The app crashes when I try to open the settings menu." 24 | 25 | **Steps to Reproduce** 26 | Please describe the steps to reproduce the issue: 27 | 1. step 1 28 | 2. step 2 29 | 3. step 3 30 | 31 | **Expected Behavior** 32 | Please describe what you expected to happen. For example, "I expected to see the advanced settings without the app crashing." 33 | 34 | **Screenshots** 35 | If applicable, add screenshots to help explain your problem. You can attach screenshots here. 36 | 37 | **Additional Information** 38 | Please provide any other relevant information or context. For example, "This issue started happening after updating to version 1.2.3." 39 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report_zh.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug反馈 3 | about: 反馈Bug以帮助我们改进 4 | title: "[BUG]" 5 | labels: bug 6 | assignees: '' 7 | --- 8 | 9 | **设备信息** 10 | - 设备型号: [例如, 三星 Galaxy S21] 11 | - 设备处理器型号: [例如, Exynos 2100] 12 | - 安卓版本: [例如, 11] 13 | - 内核版本: [例如, 4.9.112] 14 | 15 | **应用程序配置信息** 16 | - Winlator 版本: [例如, 7.1.1] 17 | - 显示驱动: [例如, Turnip-24.1.0] 18 | - Dx Wrapper: [例如, DXVK-2.3.1] 19 | - box64 版本: [例如, 0.3.0] 20 | - box64 预设: [例如, Compatibility] 21 | 22 | **描述错误** 23 | 请详细描述你遇到的问题。 24 | 25 | **重现步骤** 26 | 请描述重现问题的步骤: 27 | 1. 步骤 1 28 | 2. 步骤 2 29 | 3. 步骤 3 30 | 31 | **预期行为** 32 | 请描述你期望发生的情况。 33 | 34 | **截图** 35 | 如果有相关截图,请附上。 36 | 37 | **附加信息** 38 | 如果有其他任何相关信息,请提供。 39 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/ 5 | .DS_Store 6 | /build 7 | /captures 8 | .externalNativeBuild 9 | .cxx 10 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "app/src/main/cpp/OpenXR-SDK"] 2 | path = app/src/main/cpp/OpenXR-SDK 3 | url = https://github.com/KhronosGroup/OpenXR-SDK.git 4 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 BrunoSX 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /android_alsa/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 2.8) 2 | 3 | project(AndroidAlsa C) 4 | message("Building ${PROJECT_NAME}") 5 | 6 | set(CMAKE_VERBOSE_MAKEFILE on) 7 | set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -lasound -O2 -fPIC -DPIC") 8 | 9 | MESSAGE(STATUS "Compiler options: ${CMAKE_C_FLAGS}") 10 | 11 | add_library(asound_module_pcm_android_aserver SHARED module_pcm_android_aserver.c) 12 | 13 | target_link_libraries(asound_module_pcm_android_aserver "${CROSS_PATH}/libasound.so.2") -------------------------------------------------------------------------------- /android_alsa/README.md: -------------------------------------------------------------------------------- 1 | This is the ALSA audio plugin used in Winlator 2 | 3 | ## Build dependencies 4 | 5 | $ dpkg --add-architecture armhf 6 | $ apt install build-essential make cmake g++-arm-linux-gnueabihf 7 | $ apt install libasound2-dev:arm64 libasound2-dev:armhf -------------------------------------------------------------------------------- /android_alsa/alsa.conf: -------------------------------------------------------------------------------- 1 | @hooks [ 2 | { 3 | func load 4 | files [ 5 | "/etc/alsa/conf.d/android_aserver.conf" 6 | ] 7 | errors false 8 | } 9 | ] -------------------------------------------------------------------------------- /android_alsa/android_aserver.conf: -------------------------------------------------------------------------------- 1 | pcm.android_aserver { 2 | type android_aserver 3 | hint { 4 | description "Android ALSA Server" 5 | } 6 | } 7 | 8 | ctl.android_aserver { 9 | type android_aserver 10 | hint { 11 | description "Android ALSA Server" 12 | } 13 | } 14 | 15 | pcm.!default { 16 | type android_aserver 17 | hint { 18 | description "Default" 19 | } 20 | } 21 | 22 | ctl.!default { 23 | type android_aserver 24 | hint { 25 | description "Default" 26 | } 27 | } -------------------------------------------------------------------------------- /android_alsa/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | clear 3 | 4 | rm -r build64 5 | mkdir build64 6 | cd build64 7 | cmake .. -DCMAKE_TOOLCHAIN_FILE=../cross-arm64.cmake 8 | make -j8 9 | 10 | cd .. 11 | 12 | rm -r build 13 | mkdir build 14 | cd build 15 | cmake .. -DCMAKE_TOOLCHAIN_FILE=../cross-armhf.cmake 16 | make -j8 -------------------------------------------------------------------------------- /android_alsa/cross-arm64.cmake: -------------------------------------------------------------------------------- 1 | set(CMAKE_SYSTEM_NAME Linux) 2 | set(CROSS_PATH "/usr/lib/aarch64-linux-gnu") 3 | set(CMAKE_C_COMPILER "aarch64-linux-gnu-gcc") -------------------------------------------------------------------------------- /android_alsa/cross-armhf.cmake: -------------------------------------------------------------------------------- 1 | set(CMAKE_SYSTEM_NAME Linux) 2 | set(CROSS_PATH "/usr/lib/arm-linux-gnueabihf") 3 | set(CMAKE_C_COMPILER "arm-linux-gnueabihf-gcc") -------------------------------------------------------------------------------- /android_sysvshm/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 2.8) 2 | 3 | project(AndroidSysVSHM C) 4 | message("Building ${PROJECT_NAME}") 5 | 6 | set(CMAKE_VERBOSE_MAKEFILE on) 7 | set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -std=gnu99 -shared -fPIC") 8 | 9 | MESSAGE(STATUS "Compiler options: ${CMAKE_C_FLAGS}") 10 | 11 | add_library(android-sysvshm SHARED android_sysvshm.c) -------------------------------------------------------------------------------- /android_sysvshm/README.md: -------------------------------------------------------------------------------- 1 | This is the Android SysVSHM used in Winlator based on https://github.com/pelya/android-shmem 2 | 3 | ## Build dependencies 4 | 5 | $ dpkg --add-architecture armhf 6 | $ apt install build-essential make cmake g++-arm-linux-gnueabihf -------------------------------------------------------------------------------- /android_sysvshm/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | rm -r build64 4 | mkdir build64 5 | cd build64 6 | cmake .. -DCMAKE_TOOLCHAIN_FILE=../cross-arm64.cmake 7 | make -j8 8 | 9 | cd .. 10 | 11 | rm -r build 12 | mkdir build 13 | cd build 14 | cmake .. -DCMAKE_TOOLCHAIN_FILE=../cross-armhf.cmake 15 | make -j8 -------------------------------------------------------------------------------- /android_sysvshm/cross-arm64.cmake: -------------------------------------------------------------------------------- 1 | set(CMAKE_SYSTEM_NAME Linux) 2 | set(CROSS_PATH "/usr/lib/aarch64-linux-gnu") 3 | set(CMAKE_C_COMPILER "aarch64-linux-gnu-gcc") -------------------------------------------------------------------------------- /android_sysvshm/cross-armhf.cmake: -------------------------------------------------------------------------------- 1 | set(CMAKE_SYSTEM_NAME Linux) 2 | set(CROSS_PATH "/usr/lib/arm-linux-gnueabihf") 3 | set(CMAKE_C_COMPILER "arm-linux-gnueabihf-gcc") -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /.cxx 2 | /build 3 | /release 4 | -------------------------------------------------------------------------------- /app/libs/MidiSynth/LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright 2015, KyoSherlock 2 | 3 | Licensed under the Apache License, Version 2.0 (the "License"); 4 | you may not use this file except in compliance with the License. 5 | You may obtain a copy of the License at 6 | 7 | http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | Unless required by applicable law or agreed to in writing, software 10 | distributed under the License is distributed on an "AS IS" BASIS, 11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | See the License for the specific language governing permissions and 13 | limitations under the License. -------------------------------------------------------------------------------- /app/libs/MidiSynth/MidiSynth.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/libs/MidiSynth/MidiSynth.jar -------------------------------------------------------------------------------- /app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile -------------------------------------------------------------------------------- /app/src/main/assets/.gitattributes: -------------------------------------------------------------------------------- 1 | *.txz filter=lfs diff=lfs merge=lfs -text 2 | *.tzst filter=lfs diff=lfs merge=lfs -text 3 | *.sf2 filter=lfs diff=lfs merge=lfs -text 4 | -------------------------------------------------------------------------------- /app/src/main/assets/box64_env_vars.json: -------------------------------------------------------------------------------- 1 | [ 2 | {"name" : "BOX64_DYNAREC_SAFEFLAGS", "values" : ["0", "1", "2"], "defaultValue" : "1"}, 3 | {"name" : "BOX64_DYNAREC_FASTNAN", "values" : ["0", "1"], "toggleSwitch" : true, "defaultValue" : "1"}, 4 | {"name" : "BOX64_DYNAREC_FASTROUND", "values" : ["0", "1"], "toggleSwitch" : true, "defaultValue" : "1"}, 5 | {"name" : "BOX64_DYNAREC_X87DOUBLE", "values" : ["0", "1"], "toggleSwitch" : true, "defaultValue" : "0"}, 6 | {"name" : "BOX64_DYNAREC_BIGBLOCK", "values" : ["0", "1", "2", "3"], "defaultValue" : "2"}, 7 | {"name" : "BOX64_DYNAREC_STRONGMEM", "values" : ["0", "1", "2", "3"], "defaultValue" : "0"}, 8 | {"name" : "BOX64_DYNAREC_FORWARD", "values" : ["0", "128", "256", "512", "1024"], "defaultValue" : "512"}, 9 | {"name" : "BOX64_DYNAREC_CALLRET", "values" : ["0", "1"], "toggleSwitch" : true, "defaultValue" : "1"}, 10 | {"name" : "BOX64_DYNAREC_WAIT", "values" : ["0", "1"], "toggleSwitch" : true, "defaultValue" : "1"}, 11 | {"name" : "BOX64_AVX", "values" : ["0", "1", "2"], "defaultValue" : "0"}, 12 | {"name" : "BOX64_MAXCPU", "values" : ["0", "4", "8", "16", "32", "64"], "defaultValue" : "8"}, 13 | {"name" : "BOX64_UNITYPLAYER", "values" : ["0", "1"], "toggleSwitch" : true, "defaultValue" : "1"} 14 | ] -------------------------------------------------------------------------------- /app/src/main/assets/box86_64/box64-0.3.1-4f6a66f.tzst: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:dc81cd5f3aae7d8f194f0ffb59fedbe08e6dc5ab869fe3bca2745bf4c6ae1876 3 | size 4553651 4 | -------------------------------------------------------------------------------- /app/src/main/assets/box86_64/box64-0.3.5-11563f3.tzst: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:493f3a11a5744448d7689cc134cc6ae2a90677fa7927bd7a8d2edb09ebf994bb 3 | size 5255093 4 | -------------------------------------------------------------------------------- /app/src/main/assets/box86_64/rcfiles/box86_64rc-1.rcp: -------------------------------------------------------------------------------- 1 | {"id":1,"name":"Default","groups":[{"name":"Steam","desc":"","enabled":true,"items":[{"processName":"steam.exe","desc":"","vars":{"BOX64_ARGS":"-cef-disable-breakpad -cef-disable-d3d11 -cef-disable-delaypageload -cef-force-occlusion -cef-disable-sandbox -cef-disable--seccomp-sandbox -no-cef-sandbox -disable-winh264 -cef-disable-gpu -vgui -oldtraymenu -cef-single-process","BOX64_DYNAREC_BIGBLOCK":"3","BOX64_DYNAREC_CALLRET":"1","BOX64_DYNAREC_SAFEFLAGS":"0"}},{"processName":"steamwebhelper.exe","desc":"","vars":{"BOX64_DYNAREC_STRONGMEM":"1"}}]},{"name":"Flatout","desc":"","enabled":true,"items":[{"processName":"flatout.exe","desc":"","vars":{"BOX64_DYNAREC_BIGBLOCK":"3","BOX64_DYNAREC_CALLRET":"1"}}]}]} -------------------------------------------------------------------------------- /app/src/main/assets/box86_env_vars.json: -------------------------------------------------------------------------------- 1 | [ 2 | {"name" : "BOX86_DYNAREC_SAFEFLAGS", "values" : ["0", "1", "2"], "defaultValue" : "2"}, 3 | {"name" : "BOX86_DYNAREC_FASTNAN", "values" : ["0", "1"], "toggleSwitch" : true, "defaultValue" : "1"}, 4 | {"name" : "BOX86_DYNAREC_FASTROUND", "values" : ["0", "1"], "toggleSwitch" : true, "defaultValue" : "1"}, 5 | {"name" : "BOX86_DYNAREC_X87DOUBLE", "values" : ["0", "1"], "toggleSwitch" : true, "defaultValue" : "0"}, 6 | {"name" : "BOX86_DYNAREC_BIGBLOCK", "values" : ["0", "1", "2", "3"], "defaultValue" : "1"}, 7 | {"name" : "BOX86_DYNAREC_STRONGMEM", "values" : ["0", "1", "2", "3"], "defaultValue" : "0"}, 8 | {"name" : "BOX86_DYNAREC_FORWARD", "values" : ["0", "128", "256", "512", "1024"], "defaultValue" : "128"}, 9 | {"name" : "BOX86_DYNAREC_CALLRET", "values" : ["0", "1"], "toggleSwitch" : true, "defaultValue" : "1"}, 10 | {"name" : "BOX86_DYNAREC_WAIT", "values" : ["0", "1"], "toggleSwitch" : true, "defaultValue" : "1"} 11 | ] -------------------------------------------------------------------------------- /app/src/main/assets/container_pattern.tzst: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:42c6a520458a353118a3eaaa88774e6f36dba7f40897e3bd9b0eb4cb23b28a83 3 | size 11173796 4 | -------------------------------------------------------------------------------- /app/src/main/assets/dxwrapper/cnc-ddraw-6.6/ddraw.tzst: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:eabb2d59ce7060767996d0c9597ee8772059126a3af01698e59a5e7905e49867 3 | size 166133 4 | -------------------------------------------------------------------------------- /app/src/main/assets/dxwrapper/d8vk-1.0.tzst: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:aab0ad5a8d54c7f4c2e8e6ab78bb8c9c44fc3d6fc352dfb61e38dd4df09d4fb2 3 | size 1007825 4 | -------------------------------------------------------------------------------- /app/src/main/assets/dxwrapper/dxvk-0.96.tzst: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:d9131ce35b39d775fcac627c0a8093896091e99247be5354cf351e449fd7cbce 3 | size 1918701 4 | -------------------------------------------------------------------------------- /app/src/main/assets/dxwrapper/dxvk-1.10.3-async.tzst: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:5fe474981b9f6f66a0ab7bdfef0a6b60c0424235a4456d23a4264e0648c3a20b 3 | size 9322491 4 | -------------------------------------------------------------------------------- /app/src/main/assets/dxwrapper/dxvk-1.10.6-sarek-async.tzst: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:c52db91f5a920656133bc1a8c37b587beb6af0edabd09617eb554e2e641fb005 3 | size 7712748 4 | -------------------------------------------------------------------------------- /app/src/main/assets/dxwrapper/dxvk-1.5.5.tzst: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:ea06e30ddaca916c25d728dd888475979e8ee537466a29e8391154d1db6c9602 3 | size 6311097 4 | -------------------------------------------------------------------------------- /app/src/main/assets/dxwrapper/dxvk-1.7.3-stripped.tzst: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:ddda96962c480946151bdcd8199ab3ba41153195c2a534eb45a29c4bf057cc65 3 | size 7001309 4 | -------------------------------------------------------------------------------- /app/src/main/assets/dxwrapper/dxvk-2.0-async.tzst: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:042f69b9345df5e6b9cf1bb7f6fd62c7bdbc3fb27797ac6e73bdff0a500d1511 3 | size 7542860 4 | -------------------------------------------------------------------------------- /app/src/main/assets/dxwrapper/dxvk-2.4-gplasync.tzst: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:d62ffaf3fcd4f01b160ded0cbee254fd7304da83940981643d73dc64513a9b35 3 | size 4293441 4 | -------------------------------------------------------------------------------- /app/src/main/assets/dxwrapper/vkd3d-2.12.tzst: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:9929ee5a3347c927b6becf635761bf3c47227ad96c3e4048b0ad1573d054bf09 3 | size 3649467 4 | -------------------------------------------------------------------------------- /app/src/main/assets/dxwrapper/vkd3d-2.13.tzst: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:0777fba6690771c45c77946f724e655a16fe970ba08e59b0b8ed31eebf07b721 3 | size 2144567 4 | -------------------------------------------------------------------------------- /app/src/main/assets/graphics_driver/llvmpipe-25.0.0.tzst: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:f7603885f86e99956733f485031cdf634da60828ad6f2bdf3ba068e556adbe27 3 | size 35202161 4 | -------------------------------------------------------------------------------- /app/src/main/assets/graphics_driver/turnip-24.1.0.tzst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/assets/graphics_driver/turnip-24.1.0.tzst -------------------------------------------------------------------------------- /app/src/main/assets/graphics_driver/virgl-23.1.9.tzst: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:6ed76575a24894432fa43e03e98ca1273bd1d1e393587bc53f7d8ca5bf36311f 3 | size 3324475 4 | -------------------------------------------------------------------------------- /app/src/main/assets/graphics_driver/vortek-1.0.tzst: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:a56fe2736db9ace177d057d9dfab44fec69dbdd0a5d7d134738c5cc27576fdcd 3 | size 129987 4 | -------------------------------------------------------------------------------- /app/src/main/assets/graphics_driver/zink-22.2.0.tzst: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:33e8d1d6c6da1a0b955fe10131c383cf657a9941654090109c439b132d33f43f 3 | size 4876547 4 | -------------------------------------------------------------------------------- /app/src/main/assets/imagefs.txz: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:2ba34fac6ff100a526a91624c15b2926b88f8879359a5d830c083eef271d7399 3 | size 151954660 4 | -------------------------------------------------------------------------------- /app/src/main/assets/imagefs_patches.tzst: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:42da2e157cc1589d96e98aa68dd11b5e9d4fe5ccc319944fa70bb50b57188690 3 | size 6765370 4 | -------------------------------------------------------------------------------- /app/src/main/assets/inputcontrols/icons/0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/assets/inputcontrols/icons/0.png -------------------------------------------------------------------------------- /app/src/main/assets/inputcontrols/icons/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/assets/inputcontrols/icons/1.png -------------------------------------------------------------------------------- /app/src/main/assets/inputcontrols/icons/10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/assets/inputcontrols/icons/10.png -------------------------------------------------------------------------------- /app/src/main/assets/inputcontrols/icons/11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/assets/inputcontrols/icons/11.png -------------------------------------------------------------------------------- /app/src/main/assets/inputcontrols/icons/12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/assets/inputcontrols/icons/12.png -------------------------------------------------------------------------------- /app/src/main/assets/inputcontrols/icons/13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/assets/inputcontrols/icons/13.png -------------------------------------------------------------------------------- /app/src/main/assets/inputcontrols/icons/14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/assets/inputcontrols/icons/14.png -------------------------------------------------------------------------------- /app/src/main/assets/inputcontrols/icons/15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/assets/inputcontrols/icons/15.png -------------------------------------------------------------------------------- /app/src/main/assets/inputcontrols/icons/16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/assets/inputcontrols/icons/16.png -------------------------------------------------------------------------------- /app/src/main/assets/inputcontrols/icons/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/assets/inputcontrols/icons/2.png -------------------------------------------------------------------------------- /app/src/main/assets/inputcontrols/icons/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/assets/inputcontrols/icons/3.png -------------------------------------------------------------------------------- /app/src/main/assets/inputcontrols/icons/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/assets/inputcontrols/icons/4.png -------------------------------------------------------------------------------- /app/src/main/assets/inputcontrols/icons/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/assets/inputcontrols/icons/5.png -------------------------------------------------------------------------------- /app/src/main/assets/inputcontrols/icons/6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/assets/inputcontrols/icons/6.png -------------------------------------------------------------------------------- /app/src/main/assets/inputcontrols/icons/7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/assets/inputcontrols/icons/7.png -------------------------------------------------------------------------------- /app/src/main/assets/inputcontrols/icons/8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/assets/inputcontrols/icons/8.png -------------------------------------------------------------------------------- /app/src/main/assets/inputcontrols/icons/9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/assets/inputcontrols/icons/9.png -------------------------------------------------------------------------------- /app/src/main/assets/pulseaudio.tzst: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:a6f4c2aae090866a3e1ad9aca715580cead95fbd558a98874c6f5c9efd9efe3b 3 | size 122528 4 | -------------------------------------------------------------------------------- /app/src/main/assets/soundfonts/wt_210k_G.sf2: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:4978cf37e7164206f2d22dc4fdf4020ffe040787210bf781e31bdc79961f59ef 3 | size 1351896 4 | -------------------------------------------------------------------------------- /app/src/main/assets/wincomponents/ddraw.tzst: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:eabb2d59ce7060767996d0c9597ee8772059126a3af01698e59a5e7905e49867 3 | size 166133 4 | -------------------------------------------------------------------------------- /app/src/main/assets/wincomponents/direct3d.tzst: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:149d55436e050bfa3fe8caf650cb97ddb2bc9fa99cd96869bd2bc4977b708fb5 3 | size 31207067 4 | -------------------------------------------------------------------------------- /app/src/main/assets/wincomponents/directmusic.tzst: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:eb906732d14766641edfae0b2d722c36f4632de7fa321a5844037115b513b77e 3 | size 337109 4 | -------------------------------------------------------------------------------- /app/src/main/assets/wincomponents/directplay.tzst: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:70eb81449230af66286f5b4d5922dca13057600c35d4cdfe91930e966c2386d9 3 | size 429728 4 | -------------------------------------------------------------------------------- /app/src/main/assets/wincomponents/directshow.tzst: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:aa682b7ee6e5903e4571bfe5a8dc9b05d0a9f05cd860cfdc810f2ddd3745e9b4 3 | size 2209278 4 | -------------------------------------------------------------------------------- /app/src/main/assets/wincomponents/directsound.tzst: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:72f0e880eef1387a55602ac02b07ef26778d23c2f70d931bd2d13e92f8dc99d4 3 | size 434853 4 | -------------------------------------------------------------------------------- /app/src/main/assets/wincomponents/vcrun2005.tzst: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:6ae9f3c22fecbc5dc2cee99354ff52587523663275f02bdfbf4ed36b91d2d90a 3 | size 1190943 4 | -------------------------------------------------------------------------------- /app/src/main/assets/wincomponents/vcrun2010.tzst: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:9def7b4b5c31c839d155f05e372e0e9ce4968b57f815c1abf93b7735e7d0ceb7 3 | size 1038731 4 | -------------------------------------------------------------------------------- /app/src/main/assets/wincomponents/wmdecoder.tzst: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:a2ca365cc43265680ee71a7b13a4626ed02368feec135571fb841c7b4abf62d1 3 | size 1717472 4 | -------------------------------------------------------------------------------- /app/src/main/assets/wincomponents/xaudio.tzst: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:2f80fd6242136b543ee2e1c8fb7daa9c0bcd0c318886ca502f84f456c83bbc43 3 | size 2329991 4 | -------------------------------------------------------------------------------- /app/src/main/cpp/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.22.1) 2 | 3 | Project(Winlator) 4 | 5 | set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O2 -Wno-unused-function -Wimplicit-function-declaration") 6 | 7 | #add_subdirectory(proot) 8 | add_subdirectory(virglrenderer) 9 | add_subdirectory(OpenXR-SDK) 10 | add_subdirectory(patchelf) 11 | 12 | add_library(winlator7 SHARED 13 | xr/engine.c 14 | xr/framebuffer.c 15 | xr/input.c 16 | xr/main.c 17 | xr/math.c 18 | xr/renderer.c 19 | winlator/drawable.c 20 | winlator/gpu_image.c 21 | winlator/sysvshared_memory.c 22 | winlator/xconnector_epoll.c 23 | winlator/alsa_client.c 24 | winlator/patchelf_wrapper.cpp) 25 | 26 | target_link_libraries(winlator7 27 | log 28 | android 29 | jnigraphics 30 | openxr_loader 31 | aaudio 32 | EGL 33 | GLESv2 34 | GLESv3) -------------------------------------------------------------------------------- /app/src/main/cpp/patchelf/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.22.1) 2 | 3 | project(PatchElf) 4 | 5 | set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O2") 6 | 7 | include_directories(src) 8 | 9 | add_library(patchelf SHARED 10 | src/patchelf.cc) 11 | 12 | target_link_libraries(patchelf) 13 | -------------------------------------------------------------------------------- /app/src/main/cpp/proot/src/attribute.h: -------------------------------------------------------------------------------- 1 | /* -*- c-set-style: "K&R"; c-basic-offset: 8 -*- 2 | * 3 | * This file is part of PRoot. 4 | * 5 | * Copyright (C) 2015 STMicroelectronics 6 | * 7 | * This program is free software; you can redistribute it and/or 8 | * modify it under the terms of the GNU General Public License as 9 | * published by the Free Software Foundation; either version 2 of the 10 | * License, or (at your option) any later version. 11 | * 12 | * This program is distributed in the hope that it will be useful, but 13 | * WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 | * General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with this program; if not, write to the Free Software 19 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 20 | * 02110-1301 USA. 21 | */ 22 | 23 | #ifndef ATTRIBUTE_H 24 | #define ATTRIBUTE_H 25 | 26 | #define UNUSED __attribute__((unused)) 27 | #define FORMAT(a, b, c) __attribute__ ((format (a, b, c))) 28 | #define DONT_INSTRUMENT __attribute__((no_instrument_function)) 29 | #define PACKED __attribute__((packed)) 30 | #define WEAK __attribute__((weak)) 31 | 32 | #endif /* ATTRIBUTE_H */ 33 | -------------------------------------------------------------------------------- /app/src/main/cpp/proot/src/execve/auxv.h: -------------------------------------------------------------------------------- 1 | /* -*- c-set-style: "K&R"; c-basic-offset: 8 -*- 2 | * 3 | * This file is part of PRoot. 4 | * 5 | * Copyright (C) 2015 STMicroelectronics 6 | * 7 | * This program is free software; you can redistribute it and/or 8 | * modify it under the terms of the GNU General Public License as 9 | * published by the Free Software Foundation; either version 2 of the 10 | * License, or (at your option) any later version. 11 | * 12 | * This program is distributed in the hope that it will be useful, but 13 | * WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 | * General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with this program; if not, write to the Free Software 19 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 20 | * 02110-1301 USA. 21 | */ 22 | 23 | #ifndef AUXV 24 | #define AUXV 25 | 26 | #include "tracee/tracee.h" 27 | #include "arch.h" 28 | 29 | typedef struct elf_aux_vector { 30 | word_t type; 31 | word_t value; 32 | } ElfAuxVector; 33 | 34 | extern word_t get_elf_aux_vectors_address(const Tracee *tracee); 35 | extern ElfAuxVector *fetch_elf_aux_vectors(const Tracee *tracee, word_t address); 36 | extern int add_elf_aux_vector(ElfAuxVector **vectors, word_t type, word_t value); 37 | 38 | #endif /* AUXV */ 39 | -------------------------------------------------------------------------------- /app/src/main/cpp/proot/src/path/canon.h: -------------------------------------------------------------------------------- 1 | /* -*- c-set-style: "K&R"; c-basic-offset: 8 -*- 2 | * 3 | * This file is part of PRoot. 4 | * 5 | * Copyright (C) 2015 STMicroelectronics 6 | * 7 | * This program is free software; you can redistribute it and/or 8 | * modify it under the terms of the GNU General Public License as 9 | * published by the Free Software Foundation; either version 2 of the 10 | * License, or (at your option) any later version. 11 | * 12 | * This program is distributed in the hope that it will be useful, but 13 | * WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 | * General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with this program; if not, write to the Free Software 19 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 20 | * 02110-1301 USA. 21 | */ 22 | 23 | #ifndef CANON_H 24 | #define CANON_H 25 | 26 | #include 27 | #include 28 | 29 | #include "tracee/tracee.h" 30 | 31 | extern int canonicalize(Tracee *tracee, const char *user_path, bool deref_final, 32 | char guest_path[PATH_MAX], unsigned int nb_recursion); 33 | 34 | #endif /* CANON_H */ 35 | -------------------------------------------------------------------------------- /app/src/main/cpp/proot/src/path/glue.h: -------------------------------------------------------------------------------- 1 | /* -*- c-set-style: "K&R"; c-basic-offset: 8 -*- 2 | * 3 | * This file is part of PRoot. 4 | * 5 | * Copyright (C) 2015 STMicroelectronics 6 | * 7 | * This program is free software; you can redistribute it and/or 8 | * modify it under the terms of the GNU General Public License as 9 | * published by the Free Software Foundation; either version 2 of the 10 | * License, or (at your option) any later version. 11 | * 12 | * This program is distributed in the hope that it will be useful, but 13 | * WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 | * General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with this program; if not, write to the Free Software 19 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 20 | * 02110-1301 USA. 21 | */ 22 | 23 | #ifndef GLUE_H 24 | #define GLUE_H 25 | 26 | #include /* PATH_MAX, */ 27 | 28 | #include "tracee/tracee.h" 29 | #include "path.h" 30 | 31 | extern mode_t build_glue(Tracee *tracee, const char *guest_path, char host_path[PATH_MAX], 32 | Finality finality); 33 | 34 | #endif /* GLUE_H */ 35 | -------------------------------------------------------------------------------- /app/src/main/cpp/proot/src/path/temp.h: -------------------------------------------------------------------------------- 1 | /* -*- c-set-style: "K&R"; c-basic-offset: 8 -*- 2 | * 3 | * This file is part of PRoot. 4 | * 5 | * Copyright (C) 2015 STMicroelectronics 6 | * 7 | * This program is free software; you can redistribute it and/or 8 | * modify it under the terms of the GNU General Public License as 9 | * published by the Free Software Foundation; either version 2 of the 10 | * License, or (at your option) any later version. 11 | * 12 | * This program is distributed in the hope that it will be useful, but 13 | * WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 | * General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with this program; if not, write to the Free Software 19 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 20 | * 02110-1301 USA. 21 | */ 22 | 23 | #ifndef TEMP_H 24 | #define TEMP_H 25 | 26 | #include 27 | 28 | extern char *create_temp_name(TALLOC_CTX *context, const char *prefix); 29 | extern const char *create_temp_directory(TALLOC_CTX *context, const char *prefix); 30 | extern const char *create_temp_file(TALLOC_CTX *context, const char *prefix); 31 | extern const char *get_temp_directory(); 32 | 33 | #endif /* TEMP_H */ 34 | -------------------------------------------------------------------------------- /app/src/main/cpp/proot/src/ptrace/ptrace.h: -------------------------------------------------------------------------------- 1 | /* -*- c-set-style: "K&R"; c-basic-offset: 8 -*- 2 | * 3 | * This file is part of PRoot. 4 | * 5 | * Copyright (C) 2015 STMicroelectronics 6 | * 7 | * This program is free software; you can redistribute it and/or 8 | * modify it under the terms of the GNU General Public License as 9 | * published by the Free Software Foundation; either version 2 of the 10 | * License, or (at your option) any later version. 11 | * 12 | * This program is distributed in the hope that it will be useful, but 13 | * WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 | * General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with this program; if not, write to the Free Software 19 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 20 | * 02110-1301 USA. 21 | */ 22 | 23 | #ifndef PTRACE_H 24 | #define PTRACE_H 25 | 26 | #include "tracee/tracee.h" 27 | 28 | extern int translate_ptrace_enter(Tracee *tracee); 29 | extern int translate_ptrace_exit(Tracee *tracee); 30 | extern void attach_to_ptracer(Tracee *ptracee, Tracee *ptracer); 31 | extern void detach_from_ptracer(Tracee *ptracee); 32 | 33 | #define PTRACEE (ptracee->as_ptracee) 34 | #define PTRACER (ptracer->as_ptracer) 35 | 36 | #endif /* PTRACE_H */ 37 | -------------------------------------------------------------------------------- /app/src/main/cpp/proot/src/syscall/chain.h: -------------------------------------------------------------------------------- 1 | /* -*- c-set-style: "K&R"; c-basic-offset: 8 -*- 2 | * 3 | * This file is part of PRoot. 4 | * 5 | * Copyright (C) 2015 STMicroelectronics 6 | * 7 | * This program is free software; you can redistribute it and/or 8 | * modify it under the terms of the GNU General Public License as 9 | * published by the Free Software Foundation; either version 2 of the 10 | * License, or (at your option) any later version. 11 | * 12 | * This program is distributed in the hope that it will be useful, but 13 | * WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 | * General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with this program; if not, write to the Free Software 19 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 20 | * 02110-1301 USA. 21 | */ 22 | 23 | #ifndef CHAIN_H 24 | #define CHAIN_H 25 | 26 | #include "tracee/tracee.h" 27 | #include "syscall/sysnum.h" 28 | #include "arch.h" 29 | 30 | extern int register_chained_syscall(Tracee *tracee, Sysnum sysnum, 31 | word_t sysarg_1, word_t sysarg_2, word_t sysarg_3, 32 | word_t sysarg_4, word_t sysarg_5, word_t sysarg_6); 33 | 34 | extern int restart_original_syscall(Tracee *tracee); 35 | 36 | extern void chain_next_syscall(Tracee *tracee); 37 | 38 | extern int restart_current_syscall_as_chained(Tracee *tracee); 39 | 40 | 41 | #endif /* CHAIN_H */ 42 | -------------------------------------------------------------------------------- /app/src/main/cpp/proot/src/syscall/heap.h: -------------------------------------------------------------------------------- 1 | /* -*- c-set-style: "K&R"; c-basic-offset: 8 -*- 2 | * 3 | * This file is part of PRoot. 4 | * 5 | * Copyright (C) 2015 STMicroelectronics 6 | * 7 | * This program is free software; you can redistribute it and/or 8 | * modify it under the terms of the GNU General Public License as 9 | * published by the Free Software Foundation; either version 2 of the 10 | * License, or (at your option) any later version. 11 | * 12 | * This program is distributed in the hope that it will be useful, but 13 | * WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 | * General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with this program; if not, write to the Free Software 19 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 20 | * 02110-1301 USA. 21 | */ 22 | 23 | #ifndef HEAP_H 24 | #define HEAP_H 25 | 26 | #include "tracee/tracee.h" 27 | 28 | extern void translate_brk_enter(Tracee *tracee); 29 | extern void translate_brk_exit(Tracee *tracee); 30 | 31 | #endif /* HEAP_H */ 32 | -------------------------------------------------------------------------------- /app/src/main/cpp/proot/src/syscall/rlimit.h: -------------------------------------------------------------------------------- 1 | /* -*- c-set-style: "K&R"; c-basic-offset: 8 -*- 2 | * 3 | * This file is part of PRoot. 4 | * 5 | * Copyright (C) 2015 STMicroelectronics 6 | * 7 | * This program is free software; you can redistribute it and/or 8 | * modify it under the terms of the GNU General Public License as 9 | * published by the Free Software Foundation; either version 2 of the 10 | * License, or (at your option) any later version. 11 | * 12 | * This program is distributed in the hope that it will be useful, but 13 | * WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 | * General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with this program; if not, write to the Free Software 19 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 20 | * 02110-1301 USA. 21 | */ 22 | 23 | #ifndef RLIMIT_H 24 | #define RLIMIT_H 25 | 26 | #include 27 | #include "tracee/tracee.h" 28 | 29 | extern int translate_setrlimit_exit(const Tracee *tracee, bool is_prlimit); 30 | 31 | #endif /* RLIMIT_H */ 32 | -------------------------------------------------------------------------------- /app/src/main/cpp/proot/src/syscall/seccomp.h: -------------------------------------------------------------------------------- 1 | /* -*- c-set-style: "K&R"; c-basic-offset: 8 -*- 2 | * 3 | * This file is part of PRoot. 4 | * 5 | * Copyright (C) 2015 STMicroelectronics 6 | * 7 | * This program is free software; you can redistribute it and/or 8 | * modify it under the terms of the GNU General Public License as 9 | * published by the Free Software Foundation; either version 2 of the 10 | * License, or (at your option) any later version. 11 | * 12 | * This program is distributed in the hope that it will be useful, but 13 | * WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 | * General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with this program; if not, write to the Free Software 19 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 20 | * 02110-1301 USA. 21 | */ 22 | 23 | #ifndef SECCOMP_H 24 | #define SECCOMP_H 25 | 26 | #include "syscall/sysnum.h" 27 | #include "tracee/tracee.h" 28 | #include "attribute.h" 29 | #include "arch.h" 30 | 31 | typedef struct { 32 | Sysnum value; 33 | word_t flags; 34 | } FilteredSysnum; 35 | 36 | typedef struct { 37 | unsigned int value; 38 | size_t nb_abis; 39 | Abi abis[NB_MAX_ABIS]; 40 | } SeccompArch; 41 | 42 | #define FILTERED_SYSNUM_END { PR_void, 0 } 43 | 44 | #define FILTER_SYSEXIT 0x1 45 | 46 | extern int enable_syscall_filtering(const Tracee *tracee); 47 | 48 | #endif /* SECCOMP_H */ 49 | -------------------------------------------------------------------------------- /app/src/main/cpp/proot/src/syscall/socket.h: -------------------------------------------------------------------------------- 1 | /* -*- c-set-style: "K&R"; c-basic-offset: 8 -*- 2 | * 3 | * This file is part of PRoot. 4 | * 5 | * Copyright (C) 2015 STMicroelectronics 6 | * 7 | * This program is free software; you can redistribute it and/or 8 | * modify it under the terms of the GNU General Public License as 9 | * published by the Free Software Foundation; either version 2 of the 10 | * License, or (at your option) any later version. 11 | * 12 | * This program is distributed in the hope that it will be useful, but 13 | * WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 | * General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with this program; if not, write to the Free Software 19 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 20 | * 02110-1301 USA. 21 | */ 22 | 23 | #ifndef SOCKET_H 24 | #define SOCKET_H 25 | 26 | #include "arch.h" /* word_t */ 27 | #include "tracee/tracee.h" 28 | 29 | int translate_socketcall_enter(Tracee *tracee, word_t *sock_addr, int size); 30 | int translate_socketcall_exit(Tracee *tracee, word_t sock_addr, word_t size_addr, word_t max_size); 31 | 32 | #endif /* SOCKET_H */ 33 | -------------------------------------------------------------------------------- /app/src/main/cpp/proot/src/tracee/event.h: -------------------------------------------------------------------------------- 1 | /* -*- c-set-style: "K&R"; c-basic-offset: 8 -*- 2 | * 3 | * This file is part of PRoot. 4 | * 5 | * Copyright (C) 2015 STMicroelectronics 6 | * 7 | * This program is free software; you can redistribute it and/or 8 | * modify it under the terms of the GNU General Public License as 9 | * published by the Free Software Foundation; either version 2 of the 10 | * License, or (at your option) any later version. 11 | * 12 | * This program is distributed in the hope that it will be useful, but 13 | * WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 | * General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with this program; if not, write to the Free Software 19 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 20 | * 02110-1301 USA. 21 | */ 22 | 23 | #ifndef TRACEE_EVENT_H 24 | #define TRACEE_EVENT_H 25 | 26 | #include 27 | 28 | #include "tracee/tracee.h" 29 | 30 | extern int launch_process(Tracee *tracee, char *const argv[]); 31 | extern int event_loop(); 32 | extern int handle_tracee_event(Tracee *tracee, int tracee_status); 33 | extern bool restart_tracee(Tracee *tracee, int signal); 34 | extern bool seccomp_event_happens_after_enter_sigtrap(); 35 | 36 | #endif /* TRACEE_EVENT_H */ 37 | -------------------------------------------------------------------------------- /app/src/main/cpp/proot/src/tracee/seccomp.h: -------------------------------------------------------------------------------- 1 | #include "tracee/tracee.h" 2 | #include "sys/vfs.h" 3 | 4 | struct compat_statfs { 5 | int f_type; 6 | int f_bsize; 7 | int f_blocks; 8 | int f_bfree; 9 | int f_bavail; 10 | int f_files; 11 | int f_ffree; 12 | fsid_t f_fsid; 13 | int f_namelen; 14 | int f_frsize; 15 | int f_flags; 16 | int f_spare[4]; 17 | }; 18 | 19 | void restart_syscall_after_seccomp(Tracee* tracee); 20 | void set_result_after_seccomp(Tracee *tracee, word_t result); 21 | int handle_seccomp_event(Tracee* tracee); 22 | void fix_and_restart_enosys_syscall(Tracee* tracee); 23 | -------------------------------------------------------------------------------- /app/src/main/cpp/virglrenderer/server/virgl_server_shm.h: -------------------------------------------------------------------------------- 1 | #ifndef VIRGL_SERVER_SHM_H 2 | #define VIRGL_SERVER_SHM_H 3 | 4 | #ifndef F_LINUX_SPECIFIC_BASE 5 | #define F_LINUX_SPECIFIC_BASE 1024 6 | #endif 7 | 8 | #ifndef F_ADD_SEALS 9 | #define F_ADD_SEALS (F_LINUX_SPECIFIC_BASE + 9) 10 | #define F_GET_SEALS (F_LINUX_SPECIFIC_BASE + 10) 11 | 12 | #define F_SEAL_SEAL 0x0001 /* prevent further seals from being set */ 13 | #define F_SEAL_SHRINK 0x0002 /* prevent file from shrinking */ 14 | #define F_SEAL_GROW 0x0004 /* prevent file from growing */ 15 | #define F_SEAL_WRITE 0x0008 /* prevent writes */ 16 | #endif 17 | 18 | #ifndef MFD_CLOEXEC 19 | #define MFD_CLOEXEC 0x0001U 20 | #endif 21 | 22 | #ifndef MFD_ALLOW_SEALING 23 | #define MFD_ALLOW_SEALING 0x0002U 24 | #endif 25 | 26 | #ifndef MFD_HUGETLB 27 | #define MFD_HUGETLB 0x0004U 28 | #endif 29 | 30 | #ifndef MFD_HUGE_SHIFT 31 | #define MFD_HUGE_SHIFT 26 32 | #endif 33 | 34 | #include 35 | #include 36 | 37 | int virgl_server_new_shm(uint32_t handle, size_t size); 38 | 39 | #endif 40 | -------------------------------------------------------------------------------- /app/src/main/cpp/virglrenderer/src/gallium/auxiliary/util/__pycache__/u_format_parse.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/cpp/virglrenderer/src/gallium/auxiliary/util/__pycache__/u_format_parse.cpython-310.pyc -------------------------------------------------------------------------------- /app/src/main/cpp/virglrenderer/src/gallium/auxiliary/util/__pycache__/u_format_parse.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/cpp/virglrenderer/src/gallium/auxiliary/util/__pycache__/u_format_parse.cpython-36.pyc -------------------------------------------------------------------------------- /app/src/main/cpp/virglrenderer/src/gallium/auxiliary/util/u_dual_blend.h: -------------------------------------------------------------------------------- 1 | #ifndef U_DUAL_BLEND_H 2 | #define U_DUAL_BLEND_H 3 | 4 | #include "pipe/p_state.h" 5 | 6 | static inline boolean util_blend_factor_is_dual_src(int factor) 7 | { 8 | return (factor == PIPE_BLENDFACTOR_SRC1_COLOR) || 9 | (factor == PIPE_BLENDFACTOR_SRC1_ALPHA) || 10 | (factor == PIPE_BLENDFACTOR_INV_SRC1_COLOR) || 11 | (factor == PIPE_BLENDFACTOR_INV_SRC1_ALPHA); 12 | } 13 | 14 | static inline boolean util_blend_state_is_dual(const struct pipe_blend_state *blend, 15 | int index) 16 | { 17 | if (util_blend_factor_is_dual_src(blend->rt[index].rgb_src_factor) || 18 | util_blend_factor_is_dual_src(blend->rt[index].alpha_src_factor) || 19 | util_blend_factor_is_dual_src(blend->rt[index].rgb_dst_factor) || 20 | util_blend_factor_is_dual_src(blend->rt[index].alpha_dst_factor)) 21 | return true; 22 | return false; 23 | } 24 | 25 | 26 | #endif 27 | -------------------------------------------------------------------------------- /app/src/main/cpp/xr/framebuffer.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "engine.h" 4 | 5 | struct XrFramebuffer { 6 | int Width; 7 | int Height; 8 | bool Acquired; 9 | XrSwapchain Handle; 10 | 11 | uint32_t SwapchainIndex; 12 | uint32_t SwapchainLength; 13 | void* SwapchainImage; 14 | 15 | unsigned int* GLFrameBuffers; 16 | }; 17 | 18 | bool XrFramebufferCreate(struct XrFramebuffer *framebuffer, XrSession session, int width, int height); 19 | void XrFramebufferDestroy(struct XrFramebuffer *framebuffer); 20 | 21 | void XrFramebufferAcquire(struct XrFramebuffer *framebuffer); 22 | void XrFramebufferRelease(struct XrFramebuffer *framebuffer); 23 | void XrFramebufferSetCurrent(struct XrFramebuffer *framebuffer); 24 | 25 | #if XR_USE_GRAPHICS_API_OPENGL_ES 26 | bool XrFramebufferCreateGL(struct XrFramebuffer *framebuffer, XrSession session, int width, int height); 27 | #endif 28 | -------------------------------------------------------------------------------- /app/src/main/cpp/xr/math.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | #ifndef EPSILON 6 | #define EPSILON 0.001f 7 | #endif 8 | 9 | double FromXrTime(const XrTime time); 10 | XrTime ToXrTime(const double time_in_seconds); 11 | float ToDegrees(float rad); 12 | float ToRadians(float deg); 13 | 14 | // XrQuaternionf 15 | XrQuaternionf XrQuaternionfCreateFromVectorAngle(const XrVector3f axis, const float angle); 16 | XrQuaternionf XrQuaternionfMultiply(const XrQuaternionf a, const XrQuaternionf b); 17 | XrVector3f XrQuaternionfEulerAngles(const XrQuaternionf q); 18 | void XrQuaternionfToMatrix4f(const XrQuaternionf* q, float* m); 19 | 20 | // XrVector3f, XrVector4f 21 | float XrVector3fDistance(const XrVector3f a, const XrVector3f b); 22 | float XrVector3fLengthSquared(const XrVector3f v); 23 | XrVector3f XrVector3fGetAnglesFromVectors(XrVector3f forward, XrVector3f right, XrVector3f up); 24 | XrVector3f XrVector3fNormalized(const XrVector3f v); 25 | XrVector3f XrVector3fScalarMultiply(const XrVector3f v, float scale); 26 | XrVector4f XrVector4fMultiplyMatrix4f(const float* m, const XrVector4f* v); 27 | -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/alsaserver/ALSAClientConnectionHandler.java: -------------------------------------------------------------------------------- 1 | package com.winlator.alsaserver; 2 | 3 | import com.winlator.xconnector.Client; 4 | import com.winlator.xconnector.ConnectionHandler; 5 | 6 | public class ALSAClientConnectionHandler implements ConnectionHandler { 7 | @Override 8 | public void handleNewConnection(Client client) { 9 | client.createIOStreams(); 10 | client.setTag(new ALSAClient()); 11 | } 12 | 13 | @Override 14 | public void handleConnectionShutdown(Client client) { 15 | ((ALSAClient)client.getTag()).release(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/alsaserver/RequestCodes.java: -------------------------------------------------------------------------------- 1 | package com.winlator.alsaserver; 2 | 3 | public abstract class RequestCodes { 4 | public static final byte CLOSE = 0; 5 | public static final byte START = 1; 6 | public static final byte STOP = 2; 7 | public static final byte PAUSE = 3; 8 | public static final byte PREPARE = 4; 9 | public static final byte WRITE = 5; 10 | public static final byte DRAIN = 6; 11 | public static final byte POINTER = 7; 12 | } -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/box86_64/Box86_64Preset.java: -------------------------------------------------------------------------------- 1 | package com.winlator.box86_64; 2 | 3 | import androidx.annotation.NonNull; 4 | 5 | public class Box86_64Preset { 6 | public static final String STABILITY = "STABILITY"; 7 | public static final String COMPATIBILITY = "COMPATIBILITY"; 8 | public static final String INTERMEDIATE = "INTERMEDIATE"; 9 | public static final String PERFORMANCE = "PERFORMANCE"; 10 | public static final String CUSTOM = "CUSTOM"; 11 | public final String id; 12 | public final String name; 13 | 14 | public Box86_64Preset(String id, String name) { 15 | this.id = id; 16 | this.name = name; 17 | } 18 | 19 | public boolean isCustom() { 20 | return id.startsWith(CUSTOM); 21 | } 22 | 23 | @NonNull 24 | @Override 25 | public String toString() { 26 | return name; 27 | } 28 | } -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/box86_64/rc/RCItem.java: -------------------------------------------------------------------------------- 1 | package com.winlator.box86_64.rc; 2 | 3 | import java.util.Map; 4 | import java.util.TreeMap; 5 | 6 | public class RCItem implements Comparable { 7 | private String processName; 8 | private String itemDesc; 9 | private Map varMap; 10 | 11 | public RCItem() { 12 | this("", "", null); 13 | } 14 | 15 | public RCItem(String name, String desc, Map vars) { 16 | processName = name; 17 | itemDesc = desc; 18 | varMap = vars == null ? new TreeMap<>() : vars; 19 | } 20 | 21 | public static RCItem copy(RCItem item) { 22 | return new RCItem(item.processName, item.getItemDesc(), new TreeMap<>(item.varMap)); 23 | } 24 | 25 | public Map getVarMap() { 26 | return varMap; 27 | } 28 | 29 | public String getProcessName() { 30 | return processName; 31 | } 32 | 33 | public void setProcessName(String name) { 34 | processName = name; 35 | } 36 | 37 | public String getItemDesc() { 38 | return itemDesc; 39 | } 40 | 41 | public void setItemDesc(String desc) { 42 | itemDesc = desc; 43 | } 44 | 45 | @Override 46 | public int compareTo(RCItem o) { 47 | return getProcessName().compareTo(o.getProcessName()); 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/contentdialog/ContentUntrustedDialog.java: -------------------------------------------------------------------------------- 1 | package com.winlator.contentdialog; 2 | 3 | import android.content.Context; 4 | import android.widget.TextView; 5 | 6 | import androidx.recyclerview.widget.DividerItemDecoration; 7 | import androidx.recyclerview.widget.LinearLayoutManager; 8 | import androidx.recyclerview.widget.RecyclerView; 9 | 10 | import com.winlator.R; 11 | import com.winlator.contents.ContentProfile; 12 | 13 | import java.util.List; 14 | 15 | public class ContentUntrustedDialog extends ContentDialog { 16 | public ContentUntrustedDialog(Context context, List contentFiles) { 17 | super(context, R.layout.content_untrusted_dialog); 18 | setIcon(R.drawable.icon_info); 19 | setTitle(R.string.warning); 20 | 21 | RecyclerView recyclerView = findViewById(R.id.recyclerView); 22 | recyclerView.setAdapter(new ContentInfoDialog.ContentInfoFileAdapter(contentFiles)); 23 | recyclerView.setLayoutManager(new LinearLayoutManager(recyclerView.getContext())); 24 | recyclerView.addItemDecoration(new DividerItemDecoration(recyclerView.getContext(), DividerItemDecoration.VERTICAL)); 25 | ((TextView) (findViewById(R.id.BTConfirm))).setText(R.string._continue); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/core/ArrayUtils.java: -------------------------------------------------------------------------------- 1 | package com.winlator.core; 2 | 3 | import org.json.JSONArray; 4 | import org.json.JSONException; 5 | 6 | import java.util.Arrays; 7 | 8 | public abstract class ArrayUtils { 9 | public static byte[] concat(byte[]... elements) { 10 | byte[] result = Arrays.copyOf(elements[0], elements[0].length); 11 | for (int i = 1; i < elements.length; i++) { 12 | byte[] newArray = Arrays.copyOf(result, result.length + elements[i].length); 13 | System.arraycopy(elements[i], 0, newArray, result.length, elements[i].length); 14 | result = newArray; 15 | } 16 | return result; 17 | } 18 | 19 | @SafeVarargs 20 | public static T[] concat(T[]... elements) { 21 | T[] result = Arrays.copyOf(elements[0], elements[0].length); 22 | for (int i = 1; i < elements.length; i++) { 23 | T[] newArray = Arrays.copyOf(result, result.length + elements[i].length); 24 | System.arraycopy(elements[i], 0, newArray, result.length, elements[i].length); 25 | result = newArray; 26 | } 27 | return result; 28 | } 29 | 30 | public static String[] toStringArray(JSONArray data) { 31 | String[] stringArray = new String[data.length()]; 32 | for (int i = 0; i < data.length(); i++) { 33 | try { 34 | stringArray[i] = data.getString(i); 35 | } 36 | catch (JSONException e) {} 37 | } 38 | return stringArray; 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/core/CPUStatus.java: -------------------------------------------------------------------------------- 1 | package com.winlator.core; 2 | 3 | public abstract class CPUStatus { 4 | public static short[] getCurrentClockSpeeds() { 5 | int numProcessors = Runtime.getRuntime().availableProcessors(); 6 | short[] clockSpeeds = new short[numProcessors]; 7 | for (int i = 0; i < numProcessors; i++) { 8 | int currFreq = FileUtils.readInt("/sys/devices/system/cpu/cpu"+i+"/cpufreq/scaling_cur_freq"); 9 | clockSpeeds[i] = (short)(currFreq / 1000); 10 | } 11 | return clockSpeeds; 12 | } 13 | 14 | public static short getMaxClockSpeed(int cpuIndex) { 15 | int maxFreq = FileUtils.readInt("/sys/devices/system/cpu/cpu"+cpuIndex+"/cpufreq/cpuinfo_max_freq"); 16 | return (short)(maxFreq / 1000); 17 | } 18 | } -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/core/Callback.java: -------------------------------------------------------------------------------- 1 | package com.winlator.core; 2 | 3 | public interface Callback { 4 | void call(T object); 5 | } 6 | -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/core/DefaultVersion.java: -------------------------------------------------------------------------------- 1 | package com.winlator.core; 2 | 3 | public abstract class DefaultVersion { 4 | public static final String BOX86 = "0.3.2"; 5 | public static final String BOX64 = "0.3.5-11563f3"; 6 | public static final String TURNIP = "24.1.0"; 7 | public static final String ZINK = "22.2.0"; 8 | public static final String VIRGL = "23.1.9"; 9 | public static final String VORTEK = "1.0"; 10 | public static final String LLVMPIPE = "25.0.0"; 11 | public static final String DXVK = "1.10.3-async"; 12 | public static final String D8VK = "1.0"; 13 | public static final String VKD3D = "2.12"; 14 | public static final String CNC_DDRAW = "6.6"; 15 | } -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/core/ElfHelper.java: -------------------------------------------------------------------------------- 1 | package com.winlator.core; 2 | 3 | import java.io.File; 4 | import java.io.FileInputStream; 5 | import java.io.IOException; 6 | import java.io.InputStream; 7 | 8 | public abstract class ElfHelper { 9 | private static final byte ELF_CLASS_32 = 1; 10 | private static final byte ELF_CLASS_64 = 2; 11 | 12 | private static int getEIClass(File binFile) { 13 | try (InputStream inStream = new FileInputStream(binFile)) { 14 | byte[] header = new byte[52]; 15 | inStream.read(header); 16 | if (header[0] == 0x7F && header[1] == 'E' && header[2] == 'L' && header[3] == 'F') { 17 | return header[4]; 18 | } 19 | } 20 | catch (IOException e) {} 21 | return 0; 22 | } 23 | 24 | public static boolean is32Bit(File binFile) { 25 | return getEIClass(binFile) == ELF_CLASS_32; 26 | } 27 | 28 | public static boolean is64Bit(File binFile) { 29 | return getEIClass(binFile) == ELF_CLASS_64; 30 | } 31 | } -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/core/OnExtractFileListener.java: -------------------------------------------------------------------------------- 1 | package com.winlator.core; 2 | 3 | import java.io.File; 4 | 5 | public interface OnExtractFileListener { 6 | File onExtractFile(File destination, long size); 7 | } 8 | -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/core/StreamUtils.java: -------------------------------------------------------------------------------- 1 | package com.winlator.core; 2 | 3 | import java.io.ByteArrayOutputStream; 4 | import java.io.IOException; 5 | import java.io.InputStream; 6 | import java.io.OutputStream; 7 | 8 | public class StreamUtils { 9 | public static final int BUFFER_SIZE = 64 * 1024; 10 | 11 | public static byte[] copyToByteArray(InputStream inStream) { 12 | if (inStream == null) return new byte[0]; 13 | 14 | ByteArrayOutputStream outStream = new ByteArrayOutputStream(BUFFER_SIZE); 15 | copy(inStream, outStream); 16 | return outStream.toByteArray(); 17 | } 18 | 19 | public static boolean copy(InputStream inStream, OutputStream outStream) { 20 | try { 21 | byte[] buffer = new byte[BUFFER_SIZE]; 22 | int amountRead; 23 | while ((amountRead = inStream.read(buffer)) != -1) { 24 | outStream.write(buffer, 0, amountRead); 25 | } 26 | outStream.flush(); 27 | return true; 28 | } 29 | catch (IOException e) { 30 | return false; 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/core/UnitUtils.java: -------------------------------------------------------------------------------- 1 | package com.winlator.core; 2 | 3 | import android.content.res.Resources; 4 | 5 | public class UnitUtils { 6 | public static float dpToPx(float dp) { 7 | return dp * Resources.getSystem().getDisplayMetrics().density; 8 | } 9 | 10 | public static float pxToDp(float px) { 11 | return px / Resources.getSystem().getDisplayMetrics().density; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/math/Mathf.java: -------------------------------------------------------------------------------- 1 | package com.winlator.math; 2 | 3 | public abstract class Mathf { 4 | public static float clamp(float x, float min, float max) { 5 | return (x < min) ? min : ((x > max) ? max : x); 6 | } 7 | 8 | public static int clamp(int x, int min, int max) { 9 | return (x < min) ? min : (x > max ? max : x); 10 | } 11 | 12 | public static float roundTo(float x, float step) { 13 | return (float)(Math.floor(x / step) * step); 14 | } 15 | 16 | public static int roundPoint(float x) { 17 | return (int)(x <= 0 ? Math.floor(x) : Math.ceil(x)); 18 | } 19 | 20 | public static byte sign(float x) { 21 | return (byte)(x < 0 ? -1 : (x > 0 ? 1 : 0)); 22 | } 23 | 24 | public static float lengthSq(float x, float y) { 25 | return x * x + y * y; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/midi/RequestCodes.java: -------------------------------------------------------------------------------- 1 | package com.winlator.midi; 2 | 3 | public class RequestCodes { 4 | public static final byte MIDI_SHORT = 1; 5 | public static final byte MIDI_LONG = 2; 6 | public static final byte MIDI_PREPARE = 3; 7 | public static final byte MIDI_UNPREPARE = 4; 8 | public static final byte MIDI_OPEN = 5; 9 | public static final byte MIDI_CLOSE = 6; 10 | public static final byte MIDI_RESET = 7; 11 | } 12 | -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/renderer/RenderableWindow.java: -------------------------------------------------------------------------------- 1 | package com.winlator.renderer; 2 | 3 | import com.winlator.xserver.Drawable; 4 | 5 | class RenderableWindow { 6 | final Drawable content; 7 | short rootX; 8 | short rootY; 9 | final boolean forceFullscreen; 10 | 11 | public RenderableWindow(Drawable content, int rootX, int rootY) { 12 | this(content, rootX, rootY, false); 13 | } 14 | 15 | public RenderableWindow(Drawable content, int rootX, int rootY, boolean forceFullscreen) { 16 | this.content = content; 17 | this.rootX = (short)rootX; 18 | this.rootY = (short)rootY; 19 | this.forceFullscreen = forceFullscreen; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/renderer/ViewTransformation.java: -------------------------------------------------------------------------------- 1 | package com.winlator.renderer; 2 | 3 | public class ViewTransformation { 4 | public int viewOffsetX; 5 | public int viewOffsetY; 6 | public int viewWidth; 7 | public int viewHeight; 8 | public float aspect; 9 | public float sceneScaleX; 10 | public float sceneScaleY; 11 | public float sceneOffsetX; 12 | public float sceneOffsetY; 13 | 14 | public void update(int outerWidth, int outerHeight, int innerWidth, int innerHeight) { 15 | aspect = Math.min((float)outerWidth / innerWidth, (float)outerHeight / innerHeight); 16 | viewWidth = (int)Math.ceil(innerWidth * aspect); 17 | viewHeight = (int)Math.ceil(innerHeight * aspect); 18 | viewOffsetX = (int)((outerWidth - innerWidth * aspect) * 0.5f); 19 | viewOffsetY = (int)((outerHeight - innerHeight * aspect) * 0.5f); 20 | 21 | sceneScaleX = (innerWidth * aspect) / outerWidth; 22 | sceneScaleY = (innerHeight * aspect) / outerHeight; 23 | sceneOffsetX = (innerWidth - innerWidth * sceneScaleX) * 0.5f; 24 | sceneOffsetY = (innerHeight - innerHeight * sceneScaleY) * 0.5f; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/renderer/material/CursorMaterial.java: -------------------------------------------------------------------------------- 1 | package com.winlator.renderer.material; 2 | 3 | public class CursorMaterial extends ShaderMaterial { 4 | public CursorMaterial() { 5 | setUniformNames("xform", "viewSize", "texture"); 6 | } 7 | 8 | @Override 9 | protected String getVertexShader() { 10 | return 11 | "uniform float xform[6];\n" + 12 | "uniform vec2 viewSize;\n" + 13 | "attribute vec2 position;\n" + 14 | "varying vec2 vUV;\n" + 15 | 16 | "void main() {\n" + 17 | "vUV = position;\n" + 18 | "vec2 transformedPos = applyXForm(position, xform);\n" + 19 | "gl_Position = vec4(2.0 * transformedPos.x / viewSize.x - 1.0, 1.0 - 2.0 * transformedPos.y / viewSize.y, 0.0, 1.0);\n" + 20 | "}" 21 | ; 22 | } 23 | 24 | @Override 25 | protected String getFragmentShader() { 26 | return 27 | "precision mediump float;\n" + 28 | 29 | "uniform sampler2D texture;\n" + 30 | "varying vec2 vUV;\n" + 31 | 32 | "void main() {\n" + 33 | "gl_FragColor = texture2D(texture, vUV);\n" + 34 | "}" 35 | ; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/renderer/material/WindowMaterial.java: -------------------------------------------------------------------------------- 1 | package com.winlator.renderer.material; 2 | 3 | public class WindowMaterial extends ShaderMaterial { 4 | public WindowMaterial() { 5 | setUniformNames("xform", "viewSize", "texture"); 6 | } 7 | 8 | @Override 9 | protected String getVertexShader() { 10 | return 11 | "uniform float xform[6];\n" + 12 | "uniform vec2 viewSize;\n" + 13 | "attribute vec2 position;\n" + 14 | "varying vec2 vUV;\n" + 15 | 16 | "void main() {\n" + 17 | "vUV = position;\n" + 18 | "vec2 transformedPos = applyXForm(position, xform);\n" + 19 | "gl_Position = vec4(2.0 * transformedPos.x / viewSize.x - 1.0, 1.0 - 2.0 * transformedPos.y / viewSize.y, 0.0, 1.0);\n" + 20 | "}" 21 | ; 22 | } 23 | 24 | @Override 25 | protected String getFragmentShader() { 26 | return 27 | "precision mediump float;\n" + 28 | 29 | "uniform sampler2D texture;\n" + 30 | "varying vec2 vUV;\n" + 31 | 32 | "void main() {\n" + 33 | "gl_FragColor = vec4(texture2D(texture, vUV).rgb, 1.0);\n" + 34 | "}" 35 | ; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/sysvshm/RequestCodes.java: -------------------------------------------------------------------------------- 1 | package com.winlator.sysvshm; 2 | 3 | public abstract class RequestCodes { 4 | public static final byte SHMGET = 0; 5 | public static final byte GET_FD = 1; 6 | public static final byte DELETE = 2; 7 | } 8 | -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/sysvshm/SysVSHMConnectionHandler.java: -------------------------------------------------------------------------------- 1 | package com.winlator.sysvshm; 2 | 3 | import com.winlator.xconnector.Client; 4 | import com.winlator.xconnector.ConnectionHandler; 5 | 6 | public class SysVSHMConnectionHandler implements ConnectionHandler { 7 | private final SysVSharedMemory sysVSharedMemory; 8 | 9 | public SysVSHMConnectionHandler(SysVSharedMemory sysVSharedMemory) { 10 | this.sysVSharedMemory = sysVSharedMemory; 11 | } 12 | 13 | @Override 14 | public void handleNewConnection(Client client) { 15 | client.createIOStreams(); 16 | client.setTag(sysVSharedMemory); 17 | } 18 | 19 | @Override 20 | public void handleConnectionShutdown(Client client) {} 21 | } 22 | -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/widget/XServerView.java: -------------------------------------------------------------------------------- 1 | package com.winlator.widget; 2 | 3 | import android.annotation.SuppressLint; 4 | import android.content.Context; 5 | import android.opengl.GLSurfaceView; 6 | import android.view.ViewGroup; 7 | import android.widget.FrameLayout; 8 | 9 | import com.winlator.renderer.GLRenderer; 10 | import com.winlator.xserver.XServer; 11 | 12 | @SuppressLint("ViewConstructor") 13 | public class XServerView extends GLSurfaceView { 14 | private final GLRenderer renderer; 15 | 16 | public XServerView(Context context, XServer xServer) { 17 | super(context); 18 | setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); 19 | setEGLContextClientVersion(3); 20 | setEGLConfigChooser(8, 8, 8, 8, 0, 0); 21 | setPreserveEGLContextOnPause(true); 22 | renderer = new GLRenderer(this, xServer); 23 | setRenderer(renderer); 24 | setRenderMode(RENDERMODE_WHEN_DIRTY); 25 | } 26 | 27 | public GLRenderer getRenderer() { 28 | return renderer; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/winhandler/MouseEventFlags.java: -------------------------------------------------------------------------------- 1 | package com.winlator.winhandler; 2 | 3 | import com.winlator.xserver.Pointer; 4 | 5 | public abstract class MouseEventFlags { 6 | public static final int MOVE = 0x0001; 7 | public static final int LEFTDOWN = 0x0002; 8 | public static final int LEFTUP = 0x0004; 9 | public static final int RIGHTDOWN = 0x0008; 10 | public static final int RIGHTUP = 0x0010; 11 | public static final int MIDDLEDOWN = 0x0020; 12 | public static final int MIDDLEUP = 0x0040; 13 | public static final int XDOWN = 0x0080; 14 | public static final int XUP = 0x0100; 15 | public static final int WHEEL = 0x0800; 16 | public static final int VIRTUALDESK = 0x4000; 17 | public static final int ABSOLUTE = 0x8000; 18 | 19 | public static int getFlagFor(Pointer.Button button, boolean isActionDown) { 20 | switch (button) { 21 | case BUTTON_LEFT: 22 | return isActionDown ? MouseEventFlags.LEFTDOWN : MouseEventFlags.LEFTUP; 23 | case BUTTON_MIDDLE: 24 | return isActionDown ? MouseEventFlags.MIDDLEDOWN : MouseEventFlags.MIDDLEUP; 25 | case BUTTON_RIGHT: 26 | return isActionDown ? MouseEventFlags.RIGHTDOWN : MouseEventFlags.RIGHTUP; 27 | case BUTTON_SCROLL_DOWN: 28 | case BUTTON_SCROLL_UP: 29 | return MouseEventFlags.WHEEL; 30 | default: 31 | return 0; 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/winhandler/OnGetProcessInfoListener.java: -------------------------------------------------------------------------------- 1 | package com.winlator.winhandler; 2 | 3 | public interface OnGetProcessInfoListener { 4 | void onGetProcessInfo(int index, int count, ProcessInfo processInfo); 5 | } 6 | -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/winhandler/ProcessInfo.java: -------------------------------------------------------------------------------- 1 | package com.winlator.winhandler; 2 | 3 | import com.winlator.core.StringUtils; 4 | 5 | import java.util.ArrayList; 6 | 7 | public class ProcessInfo { 8 | public final int pid; 9 | public final String name; 10 | public final long memoryUsage; 11 | public final int affinityMask; 12 | public final boolean wow64Process; 13 | 14 | public ProcessInfo(int pid, String name, long memoryUsage, int affinityMask, boolean wow64Process) { 15 | this.pid = pid; 16 | this.name = name; 17 | this.memoryUsage = memoryUsage; 18 | this.affinityMask = affinityMask; 19 | this.wow64Process = wow64Process; 20 | } 21 | 22 | public String getFormattedMemoryUsage() { 23 | return StringUtils.formatBytes(memoryUsage); 24 | } 25 | 26 | public String getCPUList() { 27 | int numProcessors = Runtime.getRuntime().availableProcessors(); 28 | ArrayList cpuList = new ArrayList<>(); 29 | for (byte i = 0; i < numProcessors; i++) { 30 | if ((affinityMask & (1 << i)) != 0) cpuList.add(String.valueOf(i)); 31 | } 32 | return String.join(",", cpuList.toArray(new String[0])); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/winhandler/RequestCodes.java: -------------------------------------------------------------------------------- 1 | package com.winlator.winhandler; 2 | 3 | abstract class RequestCodes { 4 | public static final byte EXIT = 0; 5 | public static final byte INIT = 1; 6 | public static final byte EXEC = 2; 7 | public static final byte KILL_PROCESS = 3; 8 | public static final byte LIST_PROCESSES = 4; 9 | public static final byte GET_PROCESS = 5; 10 | public static final byte SET_PROCESS_AFFINITY = 6; 11 | public static final byte MOUSE_EVENT = 7; 12 | public static final byte GET_GAMEPAD = 8; 13 | public static final byte GET_GAMEPAD_STATE = 9; 14 | public static final byte RELEASE_GAMEPAD = 10; 15 | public static final byte KEYBOARD_EVENT = 11; 16 | public static final byte BRING_TO_FRONT = 12; 17 | public static final byte CURSOR_POS_FEEDBACK = 13; 18 | } -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/xconnector/ConnectionHandler.java: -------------------------------------------------------------------------------- 1 | package com.winlator.xconnector; 2 | 3 | public interface ConnectionHandler { 4 | void handleConnectionShutdown(Client client); 5 | 6 | void handleNewConnection(Client client); 7 | } -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/xconnector/RequestHandler.java: -------------------------------------------------------------------------------- 1 | package com.winlator.xconnector; 2 | 3 | import java.io.IOException; 4 | 5 | public interface RequestHandler { 6 | boolean handleRequest(Client client) throws IOException; 7 | } 8 | -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/xconnector/UnixSocketConfig.java: -------------------------------------------------------------------------------- 1 | package com.winlator.xconnector; 2 | 3 | import com.winlator.core.FileUtils; 4 | 5 | import java.io.File; 6 | 7 | public class UnixSocketConfig { 8 | public static final String SYSVSHM_SERVER_PATH = "/tmp/.sysvshm/SM0"; 9 | public static final String ALSA_SERVER_PATH = "/tmp/.sound/AS0"; 10 | public static final String PULSE_SERVER_PATH = "/tmp/.sound/PS0"; 11 | public static final String XSERVER_PATH = "/tmp/.X11-unix/X0"; 12 | public static final String VIRGL_SERVER_PATH = "/tmp/.virgl/V0"; 13 | public static final String VORTEK_SERVER_PATH = "/tmp/.vortek/V0"; /// 14 | public final String path; 15 | 16 | private UnixSocketConfig(String path) { 17 | this.path = path; 18 | } 19 | 20 | public static UnixSocketConfig createSocket(String rootPath, String relativePath) { 21 | File socketFile = new File(rootPath, relativePath); 22 | 23 | String dirname = FileUtils.getDirname(relativePath); 24 | if (dirname.lastIndexOf("/") > 0) { 25 | File socketDir = new File(rootPath, FileUtils.getDirname(relativePath)); 26 | FileUtils.delete(socketDir); 27 | socketDir.mkdirs(); 28 | } 29 | else socketFile.delete(); 30 | 31 | return new UnixSocketConfig(socketFile.getPath()); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/xconnector/XStreamLock.java: -------------------------------------------------------------------------------- 1 | package com.winlator.xconnector; 2 | 3 | import java.io.IOException; 4 | 5 | public interface XStreamLock extends AutoCloseable { 6 | void close() throws IOException; 7 | } 8 | -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/xenvironment/EnvironmentComponent.java: -------------------------------------------------------------------------------- 1 | package com.winlator.xenvironment; 2 | 3 | public abstract class EnvironmentComponent { 4 | protected XEnvironment environment; 5 | 6 | public abstract void start(); 7 | 8 | public abstract void stop(); 9 | } -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/xenvironment/components/ALSAServerComponent.java: -------------------------------------------------------------------------------- 1 | package com.winlator.xenvironment.components; 2 | 3 | import com.winlator.alsaserver.ALSAClientConnectionHandler; 4 | import com.winlator.alsaserver.ALSARequestHandler; 5 | import com.winlator.xconnector.UnixSocketConfig; 6 | import com.winlator.xconnector.XConnectorEpoll; 7 | import com.winlator.xenvironment.EnvironmentComponent; 8 | 9 | public class ALSAServerComponent extends EnvironmentComponent { 10 | private XConnectorEpoll connector; 11 | private final UnixSocketConfig socketConfig; 12 | 13 | public ALSAServerComponent(UnixSocketConfig socketConfig) { 14 | this.socketConfig = socketConfig; 15 | } 16 | 17 | @Override 18 | public void start() { 19 | if (connector != null) return; 20 | connector = new XConnectorEpoll(socketConfig, new ALSAClientConnectionHandler(), new ALSARequestHandler()); 21 | connector.setMultithreadedClients(true); 22 | connector.start(); 23 | } 24 | 25 | @Override 26 | public void stop() { 27 | if (connector != null) { 28 | connector.stop(); 29 | connector = null; 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/xenvironment/components/XServerComponent.java: -------------------------------------------------------------------------------- 1 | package com.winlator.xenvironment.components; 2 | 3 | import com.winlator.xenvironment.EnvironmentComponent; 4 | import com.winlator.xconnector.XConnectorEpoll; 5 | import com.winlator.xconnector.UnixSocketConfig; 6 | import com.winlator.xserver.XClientConnectionHandler; 7 | import com.winlator.xserver.XClientRequestHandler; 8 | import com.winlator.xserver.XServer; 9 | 10 | public class XServerComponent extends EnvironmentComponent { 11 | private XConnectorEpoll connector; 12 | private final XServer xServer; 13 | private final UnixSocketConfig socketConfig; 14 | 15 | public XServerComponent(XServer xServer, UnixSocketConfig socketConfig) { 16 | this.xServer = xServer; 17 | this.socketConfig = socketConfig; 18 | } 19 | 20 | @Override 21 | public void start() { 22 | if (connector != null) return; 23 | connector = new XConnectorEpoll(socketConfig, new XClientConnectionHandler(xServer), new XClientRequestHandler()); 24 | connector.setInitialInputBufferCapacity(262144); 25 | connector.setCanReceiveAncillaryMessages(true); 26 | connector.start(); 27 | } 28 | 29 | @Override 30 | public void stop() { 31 | if (connector != null) { 32 | connector.stop(); 33 | connector = null; 34 | } 35 | } 36 | 37 | public XServer getXServer() { 38 | return xServer; 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/xserver/Cursor.java: -------------------------------------------------------------------------------- 1 | package com.winlator.xserver; 2 | 3 | public class Cursor extends XResource { 4 | public final int hotSpotX; 5 | public final int hotSpotY; 6 | public final Drawable cursorImage; 7 | public final Drawable sourceImage; 8 | public final Drawable maskImage; 9 | private boolean visible = true; 10 | 11 | public Cursor(int id, int hotSpotX, int hotSpotY, Drawable cursorImage, Drawable sourceImage, Drawable maskImage) { 12 | super(id); 13 | this.hotSpotX = hotSpotX; 14 | this.hotSpotY = hotSpotY; 15 | this.cursorImage = cursorImage; 16 | this.sourceImage = sourceImage; 17 | this.maskImage = maskImage; 18 | } 19 | 20 | public boolean isVisible() { 21 | return visible; 22 | } 23 | 24 | public void setVisible(boolean visible) { 25 | this.visible = visible; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/xserver/EventListener.java: -------------------------------------------------------------------------------- 1 | package com.winlator.xserver; 2 | 3 | import com.winlator.xserver.events.Event; 4 | 5 | import java.io.IOException; 6 | 7 | public class EventListener { 8 | public final XClient client; 9 | public final Bitmask eventMask; 10 | 11 | public EventListener(XClient client, Bitmask eventMask) { 12 | this.client = client; 13 | this.eventMask = eventMask; 14 | } 15 | 16 | public boolean isInterestedIn(int eventId) { 17 | return eventMask.isSet(eventId); 18 | } 19 | 20 | public boolean isInterestedIn(Bitmask mask) { 21 | return this.eventMask.intersects(mask); 22 | } 23 | 24 | public void sendEvent(Event event) { 25 | try { 26 | event.send(client.getSequenceNumber(), client.getOutputStream()); 27 | } 28 | catch (IOException e) { 29 | e.printStackTrace(); 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/xserver/IDGenerator.java: -------------------------------------------------------------------------------- 1 | package com.winlator.xserver; 2 | 3 | public abstract class IDGenerator { 4 | private static int id = 0; 5 | 6 | public static int generate() { 7 | return ++id; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/xserver/Pixmap.java: -------------------------------------------------------------------------------- 1 | package com.winlator.xserver; 2 | 3 | import android.graphics.Bitmap; 4 | 5 | import java.nio.ByteBuffer; 6 | 7 | public class Pixmap extends XResource { 8 | public final Drawable drawable; 9 | 10 | public Pixmap(Drawable drawable) { 11 | super(drawable.id); 12 | this.drawable = drawable; 13 | } 14 | 15 | public Bitmap toBitmap(Pixmap maskPixmap) { 16 | ByteBuffer maskData = maskPixmap != null ? maskPixmap.drawable.getData() : null; 17 | Bitmap bitmap = Bitmap.createBitmap(drawable.width, drawable.height, Bitmap.Config.ARGB_8888); 18 | toBitmap(drawable.getData(), maskData, bitmap); 19 | return bitmap; 20 | } 21 | 22 | private static native void toBitmap(ByteBuffer colorData, ByteBuffer maskData, Bitmap bitmap); 23 | } 24 | -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/xserver/PixmapFormat.java: -------------------------------------------------------------------------------- 1 | package com.winlator.xserver; 2 | 3 | public class PixmapFormat { 4 | public final byte depth; 5 | public final byte bitsPerPixel; 6 | public final byte scanlinePad; 7 | 8 | public PixmapFormat(int depth, int bitsPerPixel, int scanlinePad) { 9 | this.depth = (byte)depth; 10 | this.bitsPerPixel = (byte)bitsPerPixel; 11 | this.scanlinePad = (byte)scanlinePad; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/xserver/ResourceIDs.java: -------------------------------------------------------------------------------- 1 | package com.winlator.xserver; 2 | 3 | import androidx.collection.ArraySet; 4 | 5 | import java.util.Iterator; 6 | 7 | public class ResourceIDs { 8 | private final ArraySet idBases = new ArraySet<>(); 9 | public final int idMask; 10 | 11 | public ResourceIDs(int maxClients) { 12 | int clientsBits = 32 - Integer.numberOfLeadingZeros(maxClients); 13 | clientsBits = Integer.bitCount(maxClients) == 1 ? clientsBits - 1 : clientsBits; 14 | int base = 29 - clientsBits; 15 | idMask = (1 << base) - 1; 16 | for (int i = 1; i < maxClients; i++) idBases.add(i << base); 17 | } 18 | 19 | public synchronized Integer get() { 20 | if (idBases.isEmpty()) return -1; 21 | Iterator iter = idBases.iterator(); 22 | int idBase = iter.next(); 23 | iter.remove(); 24 | return idBase; 25 | } 26 | 27 | public boolean isInInterval(int value, int idBase) { 28 | return (value | idMask) == (idBase | idMask); 29 | } 30 | 31 | public synchronized void free(Integer idBase) { 32 | idBases.add(idBase); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/xserver/SHMSegmentManager.java: -------------------------------------------------------------------------------- 1 | package com.winlator.xserver; 2 | 3 | import android.util.SparseArray; 4 | 5 | import com.winlator.sysvshm.SysVSharedMemory; 6 | 7 | import java.nio.ByteBuffer; 8 | 9 | public class SHMSegmentManager { 10 | private final SysVSharedMemory sysVSharedMemory; 11 | private final SparseArray shmSegments = new SparseArray<>(); 12 | 13 | public SHMSegmentManager(SysVSharedMemory sysVSharedMemory) { 14 | this.sysVSharedMemory = sysVSharedMemory; 15 | } 16 | 17 | public void attach(int xid, int shmid) { 18 | if (shmSegments.indexOfKey(xid) >= 0) detach(xid); 19 | ByteBuffer data = sysVSharedMemory.attach(shmid); 20 | if (data != null) shmSegments.put(xid, data); 21 | } 22 | 23 | public void detach(int xid) { 24 | ByteBuffer data = shmSegments.get(xid); 25 | if (data != null) { 26 | sysVSharedMemory.detach(data); 27 | shmSegments.remove(xid); 28 | } 29 | } 30 | 31 | public ByteBuffer getData(int xid) { 32 | return shmSegments.get(xid); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/xserver/ScreenInfo.java: -------------------------------------------------------------------------------- 1 | package com.winlator.xserver; 2 | 3 | public class ScreenInfo { 4 | public final short width; 5 | public final short height; 6 | 7 | public ScreenInfo(String value) { 8 | String[] parts = value.split("x"); 9 | width = Short.parseShort(parts[0]); 10 | height = Short.parseShort(parts[1]); 11 | } 12 | 13 | public ScreenInfo(int width, int height) { 14 | this.width = (short)width; 15 | this.height = (short)height; 16 | } 17 | 18 | public short getWidthInMillimeters() { 19 | return (short)(width / 10); 20 | } 21 | 22 | public short getHeightInMillimeters() { 23 | return (short)(height / 10); 24 | } 25 | 26 | @Override 27 | public String toString() { 28 | return width+"x"+height; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/xserver/Visual.java: -------------------------------------------------------------------------------- 1 | package com.winlator.xserver; 2 | 3 | public class Visual { 4 | public final int id; 5 | public final byte visualClass = 4; 6 | public final boolean displayable; 7 | public final byte depth; 8 | public final byte bitsPerRGBValue; 9 | public final short colormapEntries = 256; 10 | public final int blueMask; 11 | public final int greenMask; 12 | public final int redMask; 13 | 14 | public Visual(int id, boolean displayable, int depth, int bitsPerRGBValue, int redMask, int greenMask, int blueMask) { 15 | this.id = id; 16 | this.displayable = displayable; 17 | this.depth = (byte)depth; 18 | this.bitsPerRGBValue = (byte)bitsPerRGBValue; 19 | this.redMask = redMask; 20 | this.greenMask = greenMask; 21 | this.blueMask = blueMask; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/xserver/XClientConnectionHandler.java: -------------------------------------------------------------------------------- 1 | package com.winlator.xserver; 2 | 3 | import com.winlator.xconnector.Client; 4 | import com.winlator.xconnector.ConnectionHandler; 5 | 6 | public class XClientConnectionHandler implements ConnectionHandler { 7 | private final XServer xServer; 8 | 9 | public XClientConnectionHandler(XServer xServer) { 10 | this.xServer = xServer; 11 | } 12 | 13 | @Override 14 | public void handleNewConnection(Client client) { 15 | client.createIOStreams(); 16 | client.setTag(new XClient(xServer, client.getInputStream(), client.getOutputStream())); 17 | } 18 | 19 | @Override 20 | public void handleConnectionShutdown(Client client) { 21 | ((XClient)client.getTag()).freeResources(); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/xserver/XLock.java: -------------------------------------------------------------------------------- 1 | package com.winlator.xserver; 2 | 3 | public interface XLock extends AutoCloseable { 4 | @Override 5 | void close(); 6 | } 7 | -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/xserver/XResource.java: -------------------------------------------------------------------------------- 1 | package com.winlator.xserver; 2 | 3 | public abstract class XResource { 4 | public final int id; 5 | 6 | public XResource(int id) { 7 | this.id = id; 8 | } 9 | 10 | @Override 11 | public int hashCode() { 12 | return id; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/xserver/XResourceManager.java: -------------------------------------------------------------------------------- 1 | package com.winlator.xserver; 2 | 3 | import java.util.ArrayList; 4 | 5 | public abstract class XResourceManager { 6 | private final ArrayList onResourceLifecycleListeners = new ArrayList<>(); 7 | 8 | public interface OnResourceLifecycleListener { 9 | default void onCreateResource(XResource resource) {} 10 | 11 | default void onFreeResource(XResource resource) {} 12 | } 13 | 14 | public void addOnResourceLifecycleListener(OnResourceLifecycleListener OnResourceLifecycleListener) { 15 | onResourceLifecycleListeners.add(OnResourceLifecycleListener); 16 | } 17 | 18 | public void removeOnResourceLifecycleListener(OnResourceLifecycleListener OnResourceLifecycleListener) { 19 | onResourceLifecycleListeners.remove(OnResourceLifecycleListener); 20 | } 21 | 22 | public void triggerOnCreateResourceListener(XResource resource) { 23 | for (int i = onResourceLifecycleListeners.size()-1; i >= 0; i--) { 24 | onResourceLifecycleListeners.get(i).onCreateResource(resource); 25 | } 26 | } 27 | 28 | public void triggerOnFreeResourceListener(XResource resource) { 29 | for (int i = onResourceLifecycleListeners.size()-1; i >= 0; i--) { 30 | onResourceLifecycleListeners.get(i).onFreeResource(resource); 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/xserver/errors/BadAccess.java: -------------------------------------------------------------------------------- 1 | package com.winlator.xserver.errors; 2 | 3 | public class BadAccess extends XRequestError { 4 | public BadAccess() { 5 | super(10, 0); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/xserver/errors/BadAlloc.java: -------------------------------------------------------------------------------- 1 | package com.winlator.xserver.errors; 2 | 3 | public class BadAlloc extends XRequestError { 4 | public BadAlloc() { 5 | super(11, 0); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/xserver/errors/BadAtom.java: -------------------------------------------------------------------------------- 1 | package com.winlator.xserver.errors; 2 | 3 | public class BadAtom extends XRequestError { 4 | public BadAtom(int id) { 5 | super(5, id); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/xserver/errors/BadCursor.java: -------------------------------------------------------------------------------- 1 | package com.winlator.xserver.errors; 2 | 3 | public class BadCursor extends XRequestError { 4 | public BadCursor(int data) { 5 | super(6, data); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/xserver/errors/BadDrawable.java: -------------------------------------------------------------------------------- 1 | package com.winlator.xserver.errors; 2 | 3 | public class BadDrawable extends XRequestError { 4 | public BadDrawable(int id) { 5 | super(9, id); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/xserver/errors/BadFence.java: -------------------------------------------------------------------------------- 1 | package com.winlator.xserver.errors; 2 | 3 | public class BadFence extends XRequestError { 4 | public BadFence(int id) { 5 | super(Byte.MIN_VALUE + 2, id); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/xserver/errors/BadGraphicsContext.java: -------------------------------------------------------------------------------- 1 | package com.winlator.xserver.errors; 2 | 3 | public class BadGraphicsContext extends XRequestError { 4 | public BadGraphicsContext(int id) { 5 | super(13, id); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/xserver/errors/BadIdChoice.java: -------------------------------------------------------------------------------- 1 | package com.winlator.xserver.errors; 2 | 3 | public class BadIdChoice extends XRequestError { 4 | public BadIdChoice(int id) { 5 | super(14, id); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/xserver/errors/BadImplementation.java: -------------------------------------------------------------------------------- 1 | package com.winlator.xserver.errors; 2 | 3 | public class BadImplementation extends XRequestError { 4 | public BadImplementation() { 5 | super(17, 0); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/xserver/errors/BadMatch.java: -------------------------------------------------------------------------------- 1 | package com.winlator.xserver.errors; 2 | 3 | public class BadMatch extends XRequestError { 4 | public BadMatch() { 5 | super(8, 0); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/xserver/errors/BadPixmap.java: -------------------------------------------------------------------------------- 1 | package com.winlator.xserver.errors; 2 | 3 | public class BadPixmap extends XRequestError { 4 | public BadPixmap(int id) { 5 | super(4, id); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/xserver/errors/BadSHMSegment.java: -------------------------------------------------------------------------------- 1 | package com.winlator.xserver.errors; 2 | 3 | public class BadSHMSegment extends XRequestError { 4 | public BadSHMSegment(int id) { 5 | super(-128, id); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/xserver/errors/BadValue.java: -------------------------------------------------------------------------------- 1 | package com.winlator.xserver.errors; 2 | 3 | public class BadValue extends XRequestError { 4 | public BadValue(int data) { 5 | super(2, data); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/xserver/errors/BadWindow.java: -------------------------------------------------------------------------------- 1 | package com.winlator.xserver.errors; 2 | 3 | public class BadWindow extends XRequestError { 4 | public BadWindow(int id) { 5 | super(3, id); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/xserver/errors/XRequestError.java: -------------------------------------------------------------------------------- 1 | package com.winlator.xserver.errors; 2 | 3 | import static com.winlator.xserver.XClientRequestHandler.RESPONSE_CODE_ERROR; 4 | 5 | import com.winlator.xconnector.XOutputStream; 6 | import com.winlator.xconnector.XStreamLock; 7 | import com.winlator.xserver.XClient; 8 | 9 | import java.io.IOException; 10 | 11 | public class XRequestError extends Exception { 12 | private final byte code; 13 | private final int data; 14 | 15 | public XRequestError(int code, int data) { 16 | this.code = (byte)code; 17 | this.data = data; 18 | } 19 | 20 | public byte getCode() { 21 | return code; 22 | } 23 | 24 | public int getData() { 25 | return data; 26 | } 27 | 28 | public void sendError(XClient client, byte opcode) throws IOException { 29 | XOutputStream outputStream = client.getOutputStream(); 30 | try (XStreamLock lock = outputStream.lock()) { 31 | outputStream.writeByte(RESPONSE_CODE_ERROR); 32 | outputStream.writeByte(code); 33 | outputStream.writeShort(client.getSequenceNumber()); 34 | outputStream.writeInt(data); 35 | outputStream.writeShort(client.getRequestData()); 36 | outputStream.writeByte(opcode); 37 | outputStream.writePad(21); 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/xserver/events/ButtonPress.java: -------------------------------------------------------------------------------- 1 | package com.winlator.xserver.events; 2 | 3 | import com.winlator.xserver.Bitmask; 4 | import com.winlator.xserver.Window; 5 | 6 | public class ButtonPress extends InputDeviceEvent { 7 | public ButtonPress(byte detail, Window root, Window event, Window child, short rootX, short rootY, short eventX, short eventY, Bitmask state) { 8 | super(4, detail, root, event, child, rootX, rootY, eventX, eventY, state); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/xserver/events/ButtonRelease.java: -------------------------------------------------------------------------------- 1 | package com.winlator.xserver.events; 2 | 3 | import com.winlator.xserver.Bitmask; 4 | import com.winlator.xserver.Window; 5 | 6 | public class ButtonRelease extends InputDeviceEvent { 7 | public ButtonRelease(byte detail, Window root, Window event, Window child, short rootX, short rootY, short eventX, short eventY, Bitmask state) { 8 | super(5, detail, root, event, child, rootX, rootY, eventX, eventY, state); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/xserver/events/CreateNotify.java: -------------------------------------------------------------------------------- 1 | package com.winlator.xserver.events; 2 | 3 | import com.winlator.xconnector.XOutputStream; 4 | import com.winlator.xconnector.XStreamLock; 5 | import com.winlator.xserver.Window; 6 | 7 | import java.io.IOException; 8 | 9 | public class CreateNotify extends Event { 10 | private final Window parent; 11 | private final Window window; 12 | 13 | public CreateNotify(Window parent, Window window) { 14 | super(16); 15 | this.parent = parent; 16 | this.window = window; 17 | } 18 | 19 | @Override 20 | public void send(short sequenceNumber, XOutputStream outputStream) throws IOException { 21 | try (XStreamLock lock = outputStream.lock()) { 22 | outputStream.writeByte(code); 23 | outputStream.writeByte((byte)0); 24 | outputStream.writeShort(sequenceNumber); 25 | outputStream.writeInt(parent.id); 26 | outputStream.writeInt(window.id); 27 | outputStream.writeShort(window.getX()); 28 | outputStream.writeShort(window.getY()); 29 | outputStream.writeShort(window.getWidth()); 30 | outputStream.writeShort(window.getHeight()); 31 | outputStream.writeShort(window.getBorderWidth()); 32 | outputStream.writeByte((byte)(window.attributes.isOverrideRedirect() ? 1 : 0)); 33 | outputStream.writePad(9); 34 | } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/xserver/events/DestroyNotify.java: -------------------------------------------------------------------------------- 1 | package com.winlator.xserver.events; 2 | 3 | import com.winlator.xconnector.XOutputStream; 4 | import com.winlator.xconnector.XStreamLock; 5 | import com.winlator.xserver.Window; 6 | 7 | import java.io.IOException; 8 | 9 | public class DestroyNotify extends Event { 10 | private final Window event; 11 | private final Window window; 12 | 13 | public DestroyNotify(Window event, Window window) { 14 | super(17); 15 | this.event = event; 16 | this.window = window; 17 | } 18 | 19 | @Override 20 | public void send(short sequenceNumber, XOutputStream outputStream) throws IOException { 21 | try (XStreamLock lock = outputStream.lock()) { 22 | outputStream.writeByte(code); 23 | outputStream.writeByte((byte)0); 24 | outputStream.writeShort(sequenceNumber); 25 | outputStream.writeInt(event.id); 26 | outputStream.writeInt(window.id); 27 | outputStream.writePad(20); 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/xserver/events/EnterNotify.java: -------------------------------------------------------------------------------- 1 | package com.winlator.xserver.events; 2 | 3 | import com.winlator.xserver.Bitmask; 4 | import com.winlator.xserver.Window; 5 | 6 | public class EnterNotify extends PointerWindowEvent { 7 | public EnterNotify(Detail detail, Window root, Window event, Window child, short rootX, short rootY, short eventX, short eventY, Bitmask state, Mode mode, boolean sameScreenAndFocus) { 8 | super(7, detail, root, event, child, rootX, rootY, eventX, eventY, state, mode, sameScreenAndFocus); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/xserver/events/Expose.java: -------------------------------------------------------------------------------- 1 | package com.winlator.xserver.events; 2 | 3 | import com.winlator.xconnector.XOutputStream; 4 | import com.winlator.xconnector.XStreamLock; 5 | import com.winlator.xserver.Window; 6 | 7 | import java.io.IOException; 8 | 9 | public class Expose extends Event { 10 | private final Window window; 11 | private final short width; 12 | private final short height; 13 | private final short x; 14 | private final short y; 15 | 16 | public Expose(Window window) { 17 | super(12); 18 | this.window = window; 19 | this.y = 0; 20 | this.x = 0; 21 | this.width = window.getWidth(); 22 | this.height = window.getHeight(); 23 | } 24 | 25 | @Override 26 | public void send(short sequenceNumber, XOutputStream outputStream) throws IOException { 27 | try (XStreamLock lock = outputStream.lock()) { 28 | outputStream.writeByte(code); 29 | outputStream.writeByte((byte)0); 30 | outputStream.writeShort(sequenceNumber); 31 | outputStream.writeInt(window.id); 32 | outputStream.writeShort(x); 33 | outputStream.writeShort(y); 34 | outputStream.writeShort(width); 35 | outputStream.writeShort(height); 36 | outputStream.writeShort((short)0); 37 | outputStream.writePad(14); 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/xserver/events/KeyPress.java: -------------------------------------------------------------------------------- 1 | package com.winlator.xserver.events; 2 | 3 | import com.winlator.xserver.Bitmask; 4 | import com.winlator.xserver.Window; 5 | 6 | public class KeyPress extends InputDeviceEvent { 7 | public KeyPress(byte keycode, Window root, Window event, Window child, short rootX, short rootY, short eventX, short eventY, Bitmask state) { 8 | super(2, keycode, root, event, child, rootX, rootY, eventX, eventY, state); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/xserver/events/KeyRelease.java: -------------------------------------------------------------------------------- 1 | package com.winlator.xserver.events; 2 | 3 | import com.winlator.xserver.Bitmask; 4 | import com.winlator.xserver.Window; 5 | 6 | public class KeyRelease extends InputDeviceEvent { 7 | public KeyRelease(byte keycode, Window root, Window event, Window child, short rootX, short rootY, short eventX, short eventY, Bitmask state) { 8 | super(3, keycode, root, event, child, rootX, rootY, eventX, eventY, state); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/xserver/events/LeaveNotify.java: -------------------------------------------------------------------------------- 1 | package com.winlator.xserver.events; 2 | 3 | import com.winlator.xserver.Bitmask; 4 | import com.winlator.xserver.Window; 5 | 6 | public class LeaveNotify extends PointerWindowEvent { 7 | public LeaveNotify(Detail detail, Window root, Window event, Window child, short rootX, short rootY, short eventX, short eventY, Bitmask state, Mode mode, boolean sameScreenAndFocus) { 8 | super(8, detail, root, event, child, rootX, rootY, eventX, eventY, state, mode, sameScreenAndFocus); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/xserver/events/MapNotify.java: -------------------------------------------------------------------------------- 1 | package com.winlator.xserver.events; 2 | 3 | import com.winlator.xconnector.XOutputStream; 4 | import com.winlator.xconnector.XStreamLock; 5 | import com.winlator.xserver.Window; 6 | 7 | import java.io.IOException; 8 | 9 | public class MapNotify extends Event { 10 | private final Window event; 11 | private final Window window; 12 | 13 | public MapNotify(Window event, Window window) { 14 | super(19); 15 | this.event = event; 16 | this.window = window; 17 | } 18 | 19 | @Override 20 | public void send(short sequenceNumber, XOutputStream outputStream) throws IOException { 21 | try (XStreamLock lock = outputStream.lock()) { 22 | outputStream.writeByte(code); 23 | outputStream.writeByte((byte)0); 24 | outputStream.writeShort(sequenceNumber); 25 | outputStream.writeInt(event.id); 26 | outputStream.writeInt(window.id); 27 | outputStream.writeByte((byte)(window.attributes.isOverrideRedirect() ? 1 : 0)); 28 | outputStream.writePad(19); 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/xserver/events/MapRequest.java: -------------------------------------------------------------------------------- 1 | package com.winlator.xserver.events; 2 | 3 | import com.winlator.xconnector.XOutputStream; 4 | import com.winlator.xconnector.XStreamLock; 5 | import com.winlator.xserver.Window; 6 | 7 | import java.io.IOException; 8 | 9 | public class MapRequest extends Event { 10 | private final Window parent; 11 | private final Window window; 12 | 13 | public MapRequest(Window parent, Window window) { 14 | super(20); 15 | this.parent = parent; 16 | this.window = window; 17 | } 18 | 19 | @Override 20 | public void send(short sequenceNumber, XOutputStream outputStream) throws IOException { 21 | try (XStreamLock lock = outputStream.lock()) { 22 | outputStream.writeByte(code); 23 | outputStream.writeByte((byte)0); 24 | outputStream.writeShort(sequenceNumber); 25 | outputStream.writeInt(parent.id); 26 | outputStream.writeInt(window.id); 27 | outputStream.writePad(20); 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/xserver/events/MappingNotify.java: -------------------------------------------------------------------------------- 1 | package com.winlator.xserver.events; 2 | 3 | import com.winlator.xconnector.XOutputStream; 4 | import com.winlator.xconnector.XStreamLock; 5 | 6 | import java.io.IOException; 7 | 8 | public class MappingNotify extends Event { 9 | public enum Request {MODIFIER, KEYBOARD, POINTER} 10 | private final Request request; 11 | private final byte firstKeycode; 12 | private final byte count; 13 | 14 | public MappingNotify(Request request, byte firstKeycode, int count) { 15 | super(34); 16 | this.request = request; 17 | this.firstKeycode = firstKeycode; 18 | this.count = (byte)count; 19 | } 20 | 21 | @Override 22 | public void send(short sequenceNumber, XOutputStream outputStream) throws IOException { 23 | try (XStreamLock lock = outputStream.lock()) { 24 | outputStream.writeByte(code); 25 | outputStream.writeByte((byte)0); 26 | outputStream.writeShort(sequenceNumber); 27 | outputStream.writeByte((byte)request.ordinal()); 28 | outputStream.writeByte(firstKeycode); 29 | outputStream.writeByte(count); 30 | outputStream.writePad(25); 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/xserver/events/MotionNotify.java: -------------------------------------------------------------------------------- 1 | package com.winlator.xserver.events; 2 | 3 | import com.winlator.xserver.Bitmask; 4 | import com.winlator.xserver.Window; 5 | 6 | public class MotionNotify extends InputDeviceEvent { 7 | public MotionNotify(boolean detail, Window root, Window event, Window child, short rootX, short rootY, short eventX, short eventY, Bitmask state) { 8 | super(6, (byte)(detail ? 1 : 0), root, event, child, rootX, rootY, eventX, eventY, state); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/xserver/events/PropertyNotify.java: -------------------------------------------------------------------------------- 1 | package com.winlator.xserver.events; 2 | 3 | import com.winlator.xconnector.XOutputStream; 4 | import com.winlator.xconnector.XStreamLock; 5 | import com.winlator.xserver.Window; 6 | 7 | import java.io.IOException; 8 | 9 | public class PropertyNotify extends Event { 10 | private final Window window; 11 | private final int atom; 12 | private final int timestamp; 13 | private final boolean deleted; 14 | 15 | public PropertyNotify(Window window, int atom, boolean deleted) { 16 | super(28); 17 | this.window = window; 18 | this.atom = atom; 19 | this.timestamp = (int)System.currentTimeMillis(); 20 | this.deleted = deleted; 21 | } 22 | 23 | @Override 24 | public void send(short sequenceNumber, XOutputStream outputStream) throws IOException { 25 | try (XStreamLock lock = outputStream.lock()) { 26 | outputStream.writeByte(code); 27 | outputStream.writeByte((byte)0); 28 | outputStream.writeShort(sequenceNumber); 29 | outputStream.writeInt(window.id); 30 | outputStream.writeInt(atom); 31 | outputStream.writeInt(timestamp); 32 | outputStream.writeByte((byte)(deleted ? 1 : 0)); 33 | outputStream.writePad(15); 34 | } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/xserver/events/RawEvent.java: -------------------------------------------------------------------------------- 1 | package com.winlator.xserver.events; 2 | 3 | import com.winlator.xconnector.XOutputStream; 4 | import com.winlator.xconnector.XStreamLock; 5 | 6 | import java.io.IOException; 7 | 8 | public class RawEvent extends Event { 9 | private final byte[] data; 10 | 11 | public RawEvent(byte[] data) { 12 | super(data[0]); 13 | this.data = data; 14 | } 15 | 16 | @Override 17 | public void send(short sequenceNumber, XOutputStream outputStream) throws IOException { 18 | try (XStreamLock lock = outputStream.lock()) { 19 | outputStream.write(data); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/xserver/events/ResizeRequest.java: -------------------------------------------------------------------------------- 1 | package com.winlator.xserver.events; 2 | 3 | import com.winlator.xconnector.XOutputStream; 4 | import com.winlator.xconnector.XStreamLock; 5 | import com.winlator.xserver.Window; 6 | 7 | import java.io.IOException; 8 | 9 | public class ResizeRequest extends Event { 10 | private final Window window; 11 | private final short width; 12 | private final short height; 13 | 14 | public ResizeRequest(Window window, short width, short height) { 15 | super(25); 16 | this.window = window; 17 | this.width = width; 18 | this.height = height; 19 | } 20 | 21 | @Override 22 | public void send(short sequenceNumber, XOutputStream outputStream) throws IOException { 23 | try (XStreamLock lock = outputStream.lock()) { 24 | outputStream.writeByte(code); 25 | outputStream.writeByte((byte)0); 26 | outputStream.writeShort(sequenceNumber); 27 | outputStream.writeInt(window.id); 28 | outputStream.writeShort(width); 29 | outputStream.writeShort(height); 30 | outputStream.writePad(20); 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/xserver/events/SelectionClear.java: -------------------------------------------------------------------------------- 1 | package com.winlator.xserver.events; 2 | 3 | import com.winlator.xconnector.XOutputStream; 4 | import com.winlator.xconnector.XStreamLock; 5 | import com.winlator.xserver.Window; 6 | 7 | import java.io.IOException; 8 | 9 | public class SelectionClear extends Event { 10 | private final int timestamp; 11 | private final Window owner; 12 | private final int selection; 13 | 14 | public SelectionClear(int timestamp, Window owner, int selection) { 15 | super(29); 16 | this.timestamp = timestamp; 17 | this.owner = owner; 18 | this.selection = selection; 19 | } 20 | 21 | @Override 22 | public void send(short sequenceNumber, XOutputStream outputStream) throws IOException { 23 | try (XStreamLock lock = outputStream.lock()) { 24 | outputStream.writeByte(code); 25 | outputStream.writeByte((byte)0); 26 | outputStream.writeShort(sequenceNumber); 27 | outputStream.writeInt(timestamp); 28 | outputStream.writeInt(owner.id); 29 | outputStream.writeInt(selection); 30 | outputStream.writePad(16); 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/xserver/events/UnmapNotify.java: -------------------------------------------------------------------------------- 1 | package com.winlator.xserver.events; 2 | 3 | import com.winlator.xconnector.XOutputStream; 4 | import com.winlator.xconnector.XStreamLock; 5 | import com.winlator.xserver.Window; 6 | 7 | import java.io.IOException; 8 | 9 | public class UnmapNotify extends Event { 10 | private final Window event; 11 | private final Window window; 12 | 13 | public UnmapNotify(Window event, Window window) { 14 | super(18); 15 | this.event = event; 16 | this.window = window; 17 | } 18 | 19 | @Override 20 | public void send(short sequenceNumber, XOutputStream outputStream) throws IOException { 21 | try (XStreamLock lock = outputStream.lock()) { 22 | outputStream.writeByte(code); 23 | outputStream.writeByte((byte)0); 24 | outputStream.writeShort(sequenceNumber); 25 | outputStream.writeInt(event.id); 26 | outputStream.writeInt(window.id); 27 | outputStream.writeByte((byte)0); 28 | outputStream.writePad(19); 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /app/src/main/java/com/winlator/xserver/extensions/Extension.java: -------------------------------------------------------------------------------- 1 | package com.winlator.xserver.extensions; 2 | 3 | import com.winlator.xconnector.XInputStream; 4 | import com.winlator.xconnector.XOutputStream; 5 | import com.winlator.xserver.XClient; 6 | import com.winlator.xserver.errors.XRequestError; 7 | 8 | import java.io.IOException; 9 | 10 | public interface Extension { 11 | String getName(); 12 | 13 | byte getMajorOpcode(); 14 | 15 | byte getFirstErrorId(); 16 | 17 | byte getFirstEventId(); 18 | 19 | void handleRequest(XClient client, XInputStream inputStream, XOutputStream outputStream) throws IOException, XRequestError; 20 | } 21 | -------------------------------------------------------------------------------- /app/src/main/jniLibs/arm64-v8a/libltdl.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/jniLibs/arm64-v8a/libltdl.so -------------------------------------------------------------------------------- /app/src/main/jniLibs/arm64-v8a/libpulse.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/jniLibs/arm64-v8a/libpulse.so -------------------------------------------------------------------------------- /app/src/main/jniLibs/arm64-v8a/libpulseaudio.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/jniLibs/arm64-v8a/libpulseaudio.so -------------------------------------------------------------------------------- /app/src/main/jniLibs/arm64-v8a/libpulsecommon-13.0.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/jniLibs/arm64-v8a/libpulsecommon-13.0.so -------------------------------------------------------------------------------- /app/src/main/jniLibs/arm64-v8a/libpulsecore-13.0.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/jniLibs/arm64-v8a/libpulsecore-13.0.so -------------------------------------------------------------------------------- /app/src/main/jniLibs/arm64-v8a/libsndfile.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/jniLibs/arm64-v8a/libsndfile.so -------------------------------------------------------------------------------- /app/src/main/jniLibs/arm64-v8a/libvortekrenderer.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/jniLibs/arm64-v8a/libvortekrenderer.so -------------------------------------------------------------------------------- /app/src/main/jniLibs/arm64-v8a/libwinlator.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/jniLibs/arm64-v8a/libwinlator.so -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/button_neutral_normal.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-hdpi/button_neutral_normal.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/button_neutral_pressed.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-hdpi/button_neutral_pressed.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/button_positive_normal.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-hdpi/button_positive_normal.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/button_positive_pressed.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-hdpi/button_positive_pressed.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/color_frame.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-hdpi/color_frame.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/color_frame_selected.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-hdpi/color_frame_selected.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/combo_box_normal.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-hdpi/combo_box_normal.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/combo_box_pressed.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-hdpi/combo_box_pressed.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/content_dialog_background.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-hdpi/content_dialog_background.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/cursor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-hdpi/cursor.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/edit_text_focused.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-hdpi/edit_text_focused.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/edit_text_normal.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-hdpi/edit_text_normal.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/edit_text_pressed.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-hdpi/edit_text_pressed.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/icon_about.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-hdpi/icon_about.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/icon_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-hdpi/icon_add.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/icon_confirm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-hdpi/icon_confirm.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/icon_container.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-hdpi/icon_container.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/icon_cpu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-hdpi/icon_cpu.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/icon_debug.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-hdpi/icon_debug.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/icon_duplicate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-hdpi/icon_duplicate.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/icon_edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-hdpi/icon_edit.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/icon_env_var.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-hdpi/icon_env_var.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/icon_exit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-hdpi/icon_exit.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/icon_export.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-hdpi/icon_export.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/icon_fullscreen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-hdpi/icon_fullscreen.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/icon_gamepad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-hdpi/icon_gamepad.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/icon_help.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-hdpi/icon_help.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/icon_hide.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-hdpi/icon_hide.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/icon_image_picker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-hdpi/icon_image_picker.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/icon_info.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-hdpi/icon_info.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/icon_input_controls.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-hdpi/icon_input_controls.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/icon_keyboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-hdpi/icon_keyboard.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/icon_list_item_expanded.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-hdpi/icon_list_item_expanded.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/icon_list_item_folded.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-hdpi/icon_list_item_folded.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/icon_list_item_menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-hdpi/icon_list_item_menu.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/icon_magnifier.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-hdpi/icon_magnifier.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/icon_menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-hdpi/icon_menu.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/icon_move.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-hdpi/icon_move.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/icon_open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-hdpi/icon_open.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/icon_pause.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-hdpi/icon_pause.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/icon_play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-hdpi/icon_play.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/icon_remove.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-hdpi/icon_remove.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/icon_remove2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-hdpi/icon_remove2.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/icon_reset.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-hdpi/icon_reset.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/icon_settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-hdpi/icon_settings.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/icon_shortcut.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-hdpi/icon_shortcut.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/icon_task_manager.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-hdpi/icon_task_manager.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/icon_wine.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-hdpi/icon_wine.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/icon_zoom_minus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-hdpi/icon_zoom_minus.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/icon_zoom_plus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-hdpi/icon_zoom_plus.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-hdpi/logo.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/number_picker_decrement.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-hdpi/number_picker_decrement.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/number_picker_increment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-hdpi/number_picker_increment.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/preloader_background.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-hdpi/preloader_background.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/preloader_spinner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-hdpi/preloader_spinner.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/remove_button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-hdpi/remove_button.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/table_head_background.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-hdpi/table_head_background.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/taskmgr_process.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-hdpi/taskmgr_process.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/toggle_button_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-hdpi/toggle_button_off.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/toggle_button_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-hdpi/toggle_button_on.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/touchpad_help_main_menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-hdpi/touchpad_help_main_menu.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/touchpad_help_mouse_left_click.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-hdpi/touchpad_help_mouse_left_click.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/touchpad_help_mouse_right_click.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-hdpi/touchpad_help_mouse_right_click.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/touchpad_help_mouse_scroll_wheel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-hdpi/touchpad_help_mouse_scroll_wheel.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/wallpaper.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-hdpi/wallpaper.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/icon_action_bar_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-xxhdpi/icon_action_bar_add.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/icon_action_bar_back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-xxhdpi/icon_action_bar_back.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/icon_action_bar_menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-xxhdpi/icon_action_bar_menu.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/icon_popup_menu_bring_to_front.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-xxhdpi/icon_popup_menu_bring_to_front.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/icon_popup_menu_cpu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-xxhdpi/icon_popup_menu_cpu.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/icon_popup_menu_download.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-xxhdpi/icon_popup_menu_download.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/icon_popup_menu_duplicate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-xxhdpi/icon_popup_menu_duplicate.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/icon_popup_menu_edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-xxhdpi/icon_popup_menu_edit.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/icon_popup_menu_info.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-xxhdpi/icon_popup_menu_info.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/icon_popup_menu_open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-xxhdpi/icon_popup_menu_open.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/icon_popup_menu_remove.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-xxhdpi/icon_popup_menu_remove.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/icon_popup_menu_run.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-xxhdpi/icon_popup_menu_run.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/icon_popup_menu_settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-xxhdpi/icon_popup_menu_settings.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/icon_shortcut.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable-xxhdpi/icon_shortcut.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/bordered_panel.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/button_neutral.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/button_positive.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/combo_box.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/custom_toast_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/edit_text.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/element_left_box.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/element_right_box.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/folded_expended_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/hidden_pointer_arrow.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/icon_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/input_controls_toolbar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/null_bitmap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexvorxx/winlator/104bf9e18c6deca5ccfba572fac1bfbb72488eb1/app/src/main/res/drawable/null_bitmap.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/number_picker_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/tab_layout_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/toggle_button_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/layout/add_env_var_dialog.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 11 | 12 | 17 | 18 | 23 | 24 | 28 | 29 | 30 | 35 | 36 | 40 | -------------------------------------------------------------------------------- /app/src/main/res/layout/binding_field.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 12 | 13 | 17 | 18 | 23 | 24 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/layout/box86_64_edit_preset_dialog.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 12 | 13 | 16 | 17 | 18 | 21 | 22 | 27 | 28 | 29 | 30 | 34 | 35 | -------------------------------------------------------------------------------- /app/src/main/res/layout/box86_64_rc_groups_dialog.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 11 | 12 | 16 | 17 | 22 | -------------------------------------------------------------------------------- /app/src/main/res/layout/container_list_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 10 | 11 | 19 | 20 | 28 | 29 | 34 | 35 | 39 | 40 | -------------------------------------------------------------------------------- /app/src/main/res/layout/containers_fragment.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 13 | 14 | 22 | 23 | -------------------------------------------------------------------------------- /app/src/main/res/layout/content_file_list_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 13 | 14 | 18 | 19 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /app/src/main/res/layout/content_untrusted_dialog.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 11 | 12 | 19 | 20 | 26 | 27 | -------------------------------------------------------------------------------- /app/src/main/res/layout/cpu_list_dialog.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/layout/cpu_list_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 10 | 11 | 18 | 19 | 23 | 24 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/layout/custom_toast.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 16 | 17 | 23 | 24 | -------------------------------------------------------------------------------- /app/src/main/res/layout/debug_dialog.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 11 | 12 | 17 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/layout/debug_toolbar.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 12 | 13 | 18 | 19 | 23 | -------------------------------------------------------------------------------- /app/src/main/res/layout/drive_list_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 13 | 14 | 20 | 21 | 25 | 26 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/layout/image_picker_view.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 13 | 14 | 20 | 21 | 29 | 30 | 31 | 32 | 33 |