Add features to Wine configuration window (winecfg)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

185 lines
7.0 KiB

6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
  1. # winecfg_patch
  2. An unofficial patch for Wine configuration window (winecfg)
  3. # About
  4. This project adds the following features to the default Wine configuration dialog window (winecfg):
  5. ### Winecfg About tab
  6. - Shows Wine prefix architecture (either 32-bit or 64-bit)
  7. - Adds Wine prefix folder URL link: open the current prefix folder with your default file manager (Dolphin, Nautilus, Thunar etc.)
  8. ### Winecfg Staging tab
  9. - Adds checkbox: Disable GLSL support
  10. - Adds checkbox: Disable Multisampling Support
  11. - Adds checkbox: Check Float Constants in D3D shaders
  12. ![winecfg-links](https://raw.githubusercontent.com/Fincer/winecfg_patch/master/images/winecfg-links.png)
  13. NEW WINECFG FEATURES. The project adds prefix architecture information & prefix folder link to 'About' tab, and several new checkboxes to 'Staging' tab. These features have already been implemented.
  14. ## System Requirements
  15. - Wine or Wine Staging (Staging version is recommended for the provided patch file)
  16. - The following Unix/Linux binaries must be found in the PATH: patch, diff, make, git, ping, nproc, wine
  17. Tested on Arch Linux, 64-bit Wine Staging Git
  18. ----------------------------------
  19. # Roadmap
  20. There are several ideas how to improve usability of Wine configuration window. These ideas have not yet been implemented but are as follows.
  21. ## TODO list
  22. - meet quality requirements - get rid of compiler warnings
  23. - **Staging tab** - add the following sections:
  24. * **Combobox: DirectDrawRenderer (Direct3D)**
  25. * Values: [gdi, opengl]
  26. * **Combobox: MaxVersionGL (Direct3D)**
  27. * Values: [4.5, 3.2, 1.0]
  28. * **Combobox: OffscreenRenderingMode (Direct3D)**
  29. * Values: [fbo, backbuffer]
  30. * **Combobox: VideoMemorySize (Direct3D)**
  31. * Values: [8192, 4096, 3072, 2048, 1024, 768, 512, 384, 256, 128, 64, 32]
  32. * **Combobox: MouseWarpOverride (DirectInput)**
  33. * Values: [enable, disable, force]
  34. * **ShowCrashDialog (WineDbg)**
  35. * Checkbutton: [yes, no]
  36. * If set to yes, show default crash pop-up window when an application crashes
  37. * **Input value: ForceRefreshRate (DirectDraw)**
  38. * Value: User input (only integers allowed, max value is 120, min value is 1)
  39. - **Libraries tab**:
  40. * Expanded list of available DLL overrides for easier management
  41. * In current Wine it is only a single-line list which is troublesome to use
  42. ![winecfg-dlloverride-redesign](https://raw.githubusercontent.com/Fincer/winecfg_patch/master/images/winecfg-dlloverride-redesign.png)
  43. DLL OVERRIDE RE-DESIGN. This manipulated image is for demonstration purposes.
  44. * DLL override multiselection
  45. * with possibility to set all selected overrides to use any mixture of Native, Builtin DLLs
  46. ![winecfg-dlloverride-multiselection](https://raw.githubusercontent.com/Fincer/winecfg_patch/master/images/winecfg-dlloverride-multiselect.png)
  47. DLL MULTISELECTION. This manipulated image is for demonstration purposes.
  48. - **Debug tab** - add new this new tab to winecfg with the following contents:
  49. * **Button: Generate bug report**
  50. * Wine version
  51. * CPU model
  52. * GPU model
  53. * GPU Drivers
  54. * OpenGL version
  55. * DLL overrides
  56. * Windows version
  57. * etc. (Other Wine prefix-specific configuration...)
  58. - **Winetricks tab** - implement Winetricks management directly into winecfg
  59. * Improves usability of Winetricks on Wine
  60. * Features:
  61. * **1)** Find Winetricks script file
  62. * a) Find Winetricks script automatically
  63. * b) IF Winetricks script is not automatically found, THEN let user define its location in the system and print text "Winetricks not configured" to winecfg Winetricks tab
  64. * **2)** Available Winetricks packages
  65. * Parse all available packages listed in Winetricks script file
  66. * Create an item array list "Available runtime libraries" which consist of all these packages for winecfg
  67. * Make all items selectable in winecfg. Support for multiselection
  68. * **3)** Create back-end for installing and uninstalling Wineprefix runtime libraries
  69. * **Button: Install**
  70. * Available if single or multiple libraries with status "Not installed" is selected from the runtime library list in winecfg
  71. * If above conditions are not met, grey the button out
  72. * **Button: Uninstall**
  73. * Available if single or multiple libraries with status "Installed" is selected from runtime library list in winecfg
  74. * If above conditions are not met, grey the button out
  75. * Needs additional back-end support, reverting Winetricks changes not yet implemented in Wine
  76. ![winecfg-winetricks](https://raw.githubusercontent.com/Fincer/winecfg_patch/master/images/winecfg-winetricks.png)
  77. WINETRICKS TAB. This manipulated image is for demonstration purposes.
  78. ----------------------------------
  79. # Purpose & Motivation
  80. Purpose of this project is to improve usability of Wine Configuration dialog window for a casual Wine user
  81. ----------------------------------
  82. # Usage
  83. - **1) Set up the environment:** 1-preconf-winecfg.sh
  84. * Downloads Wine & Wine Staging sources, sets up development environment & applies the patched code provided by _wine-staging_winecfg.patch_
  85. * Run only once
  86. - **2) Test winecfg changes:** 2-run-winecfg.sh
  87. * Creates a new Wine prefix for winecfg test runs and runs Wine configuration window
  88. * Run after every code change
  89. - **3) Create a new patch file:** 3-create-patchfile.sh
  90. * Run whenever you patch the code in 'winecfg_edits' subfolder and want to create a new patch file. NOTE: Replaces the patch file _wine-staging_winecfg.patch_
  91. If you just want to apply the modifications for Wine configuration window but not to involve into development, grab _wine-staging_winecfg.patch_ and apply it to Wine source code after having applied Staging patchsets (Wine source <- Wine Staging patchsets <- wine-staging_winecfg.patch).
  92. ----------------------------------
  93. # FAQ
  94. - Q: Which users this project is targeted to?
  95. * A: Mainly to developers who want to improve Wine and to people who want to try new things.
  96. - Q: Can I use this patch on my default Wine installation?
  97. * A: Yes, but you probably need to compile Wine from source first.
  98. - Q: Which licence does this project use?
  99. * A: The code is licensed under the same license than the Wine main project. See 'License' section for details.
  100. - Q: I have an idea and want to implement it? Can I contribute the project?
  101. * A: Absolutely! Feel free to fork and improve the code as you wish. Just follow the terms of the project license.
  102. ----------------------------------
  103. # License
  104. This project is licensed under [LGPLv2.1](https://github.com/Fincer/winecfg_patch/blob/master/LICENSE) to stay compatible with the Wine main project. For Wine licensing, see the following links:
  105. - [WineHQ - License](https://www.winehq.org/license)
  106. - [Wine source - COPYING.LIB](https://source.winehq.org/source/COPYING.LIB)