Winlator is an Android application that enables the execution of Windows (x86_64) applications using Wine and Box86/Box64. The project is maintained by BrunoSX (brunodev85) and has a significant following on GitHub, indicating strong community interest. The project is actively developed with regular updates, though there are some alignment issues between contributions and project needs.
BrunoSX (brunodev85)
Kashinath Patkar (Kashinathpat)
Charles Vaughn (hackcasual)
AboutFragment
, replacing the old dialog.TouchpadView
, highlighting a need for improved CI/CD practices.Winlator is an actively developed project with a strong community following. The primary maintainer, BrunoSX, drives most of the development efforts, with occasional contributions from others. While the codebase quality is high, there are challenges with aligning contributions and ensuring build stability. Active community feedback is a positive sign but requires effective integration into the development cycle to maintain momentum and quality.
There has been no recent GitHub issue activity for the project.
Given that there are no open or closed issues, it is notable that the project may either be in an early stage of development, or it has not yet encountered any reported problems or feature requests. This absence of issues can also imply a lack of community engagement or usage at this point.
There are no issues to list as there are currently no open or closed issues in the repository.
AboutFragment
and removes the old about dialog.AboutFragment.java
file added.about_dialog.xml
.MainActivity.java
to accommodate the new fragment.TouchpadView
.xserver_display_activity.xml
to use the hidden pointer icon.TouchpadView
gaining focus.PRs Closed Without Merging:
Build Issues in Open PRs:
TouchpadView
, which suggests a need for better CI/CD practices to catch such issues early.User Feedback Integration:
Feature Completeness and Testing:
The project shows active development with several open pull requests addressing new features and improvements. However, there are notable challenges with build stability and alignment of contributions with project needs. Recent closures without merging suggest a need for better communication or clearer contribution guidelines. Active community feedback is a positive sign but requires effective integration into development cycles.
This pull request introduces a new AboutFragment
to replace the existing about dialog in the winlator
application. The changes include:
AboutFragment.java
which contains the logic for displaying the about information.MainActivity.java
to use the new fragment instead of the old dialog.about_dialog.xml
.fragment_about.xml
.strings.xml
.package com.winlator;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.text.Html;
import android.text.method.LinkMovementMethod;
import android.widget.LinearLayout;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class AboutFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_about, container, false);
((AppCompatActivity)getActivity()).getSupportActionBar().setTitle("About");
String[] credits = {
"Ubuntu RootFs (<a href=\"https://releases.ubuntu.com/focal\">Focal Fossa</a>)",
"Wine (<a href=\"https://www.winehq.org\">winehq.org</a>)",
"Box86/Box64 (<a href=\"https://github.com/ptitSeb\">ptitseb</a>)",
"PRoot (<a href=\"https://proot-me.github.io\">proot-me.github.io</a>)",
"Mesa (Turnip/Zink/VirGL) (<a href=\"https://www.mesa3d.org\">mesa3d.org</a>)",
"DXVK (<a href=\"https://github.com/doitsujin/dxvk\">github.com/doitsujin/dxvk</a>)",
"VKD3D (<a href=\"https://gitlab.winehq.org/wine/vkd3d\">gitlab.winehq.org/wine/vkd3d</a>)",
"D8VK (<a href=\"https://github.com/AlpyneDreams/d8vk\">github.com/AlpyneDreams/d8vk</a>)",
"CNC DDraw (<a href=\"https://github.com/FunkyFr3sh/cnc-ddraw\">github.com/FunkyFr3sh/cnc-ddraw</a>)"
};
LinearLayout creditsContainer = view.findViewById(R.id.credits);
for (String credit : credits) {
TextView tvCredit = new TextView(getContext());
tvCredit.setText(Html.fromHtml(credit, Html.FROM_HTML_MODE_LEGACY));
tvCredit.setMovementMethod(LinkMovementMethod.getInstance());
creditsContainer.addView(tvCredit);
}
view.findViewById(R.id.button_website).setOnClickListener(v -> openWebURL("https://www.winlator.org"));
view.findViewById(R.id.button_github).setOnClickListener(v -> openWebURL("https://github.com/brunodev85/winlator"));
return view;
}
public void openWebURL( String inURL ) {
Intent browse = new Intent( Intent.ACTION_VIEW , Uri.parse( inURL ) );
startActivity( browse );
}
}
Assessment:
Html.fromHtml()
with Html.FROM_HTML_MODE_LEGACY
ensures compatibility with modern HTML rendering.openWebURL()
is a good encapsulation for opening URLs.public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.main_menu_about:
show(new AboutFragment());
break;
}
return true;
}
private void show(Fragment fragment) {
getSupportFragmentManager().beginTransaction()
.replace(R.id.fragment_container, fragment)
.commit();
drawerLayout.closeDrawer(GravityCompat.START);
}
Assessment:
show(Fragment fragment)
is a clean way to handle fragment transactions.<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginHorizontal="16dp"
tools:context=".AboutFragment">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical"
android:defaultFocusHighlightEnabled="false">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<!-- Content here -->
</LinearLayout>
</ScrollView>
</FrameLayout>
Assessment:
ScrollView
, which is appropriate for potentially long content.LinearLayout
elements is clear and maintains readability.<string name="about_app">Winlator is an Android application that lets you run Windows (x86_64) applications with Wine and Box86/Box64.</string>
<string name="github">Github</string>
<string name="website">Website</string>
Assessment:
The code quality in this pull request is high. It follows standard Android development practices, ensures readability, and maintains modularity by encapsulating the about page logic within a fragment. This change not only improves maintainability but also aligns with modern Android UI practices by using fragments instead of dialogs.
Overall, this PR is well-executed and ready for merging after successful testing.
app/src/main/assets/box86_64/box64-0.2.8.tzst
.tzst
extension, which is a combination of tar and zstd compression.app/src/main/assets/dxwrapper/cnc-ddraw-6.6/Shaders/interpolation/fsr.glsl
app/src/main/java/com/winlator/MainActivity.java
FragmentManager
, DrawerLayout
, and NavigationView
.app/src/main/res/layout/container_detail_fragment.xml
FrameLayout
, ScrollView
, LinearLayout
, and various UI components like TextView
, EditText
, Spinner
, etc.app/build.gradle
Overall, the provided files demonstrate good coding practices with attention to detail in both functionality and readability. Some areas for improvement include optimizing complex layouts for performance and ensuring comprehensive error handling in Java code.
Winlator is an Android application designed to run Windows (x86_64) applications using Wine and Box86/Box64. This project, hosted on GitHub under the repository brunodev85/winlator, is developed by BrunoSX (brunodev85). The project has garnered significant attention, with 6709 stars and 195 watchers. It is actively maintained, with the last push made on July 5, 2024. The project is licensed under the MIT License and primarily written in C. The overall state of the project appears to be healthy and active, with regular updates and a manageable number of open issues (32). The trajectory suggests ongoing development and enhancements, as evidenced by recent commits and updates.
11 days ago - Remove unnecessary obb_image_generator
obb_image_generator/.gitattributes
(+0, -2)obb_image_generator/README.md
(+0, -1)obb_image_generator/generate.sh
(+0, -34)obb_image_generator/patches.txz
(+0, -3)obb_image_generator/prepare-ubuntu.sh
(+0, -40)obb_image_generator/ubuntu-prepared.txz
(+0, -3)obb_image_generator/wine.txz
(+0, -3)11 days ago - Move wine_patches to another repository
wine_patches/dlls/dinput/dinput_main.c
(+0, -1457)wine_patches/dlls/dinput/gamepad.c
(+0, -747)wine_patches/dlls/user32/desktop.c
(+0, -195)wine_patches/dlls/xinput/main.c
(+0, -533)11 days ago - Update app
app/src/main/res/layout/wincomponent_list_item.xml
(+0, -0)11 days ago - Update app
app/build.gradle
, various assets such as box64-0.2.8.tzst
, shaders like fsr.glsl
, and configuration files.17 days ago - Update input_controls
Overall, the development team is actively working on enhancing the functionality of Winlator while also addressing bugs and improving user experience through regular updates and community contributions.