From 211d4c65a0e1870dd467d8bab8ed624257dc282a Mon Sep 17 00:00:00 2001 From: GuitarBro <1351751-GuitarBro@users.noreply.gitlab.com> Date: Mon, 30 May 2022 21:00:40 -0400 Subject: [PATCH 01/13] Verified working with 3.1.x and support for switching themes in preferences. --- hub_patcher.py | 265 +++++++++++++++++++++++++++++++++---------------- readme.md | 6 +- 2 files changed, 185 insertions(+), 86 deletions(-) diff --git a/hub_patcher.py b/hub_patcher.py index 39f5d2b..016acef 100644 --- a/hub_patcher.py +++ b/hub_patcher.py @@ -3,27 +3,27 @@ import sys import fileinput -css = """ + """ if len(sys.argv) == 2: @@ -564,3 +661,5 @@ print(line, end="") print("Done! All patched. B)") +else: + print("Incorrect arguements. Did you specify the correct path to Unity Hub?") diff --git a/readme.md b/readme.md index dae104c..a4d5add 100644 --- a/readme.md +++ b/readme.md @@ -1,6 +1,6 @@ # Hub Patcher -Patches Unity Hub with a custom ~dark~ light theme. +Patches Unity Hub with a custom theme selector (which includes a custom light theme). Switch between themes by going to Preferences > Appearance. Fancy! ![Dark theme screenshot](/screenshot.png) @@ -12,7 +12,7 @@ Simply run hub_patcher.py with the path to your Unity Hub installation as the fi Ex: `python hub_patcher.py "D:/Program Files/Unity Hub"` -Note that Hub Patcher has only been tested on Windows 10 and Linux. OS X may or may not work. +Note that Hub Patcher has only been tested on Windows 10 and Linux. Windows 11 and OS X may or may not work. ### Troubleshooting @@ -22,7 +22,7 @@ If you get `PermissionError: [WinError 32] The process cannot access the file be * Node Package Manager (NPM) * Python 3.5+ -* Unity Hub 3.0.x +* Unity Hub 3.1.x (see branches for older versions) ## License From a9851381c85c5437a2755ec72101efef76261c61 Mon Sep 17 00:00:00 2001 From: GuitarBro <1351751-GuitarBro@users.noreply.gitlab.com> Date: Tue, 31 May 2022 22:52:51 -0400 Subject: [PATCH 02/13] Updated readme with macOS example and to hopefully be more clear. --- readme.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/readme.md b/readme.md index a4d5add..a08cba8 100644 --- a/readme.md +++ b/readme.md @@ -10,9 +10,12 @@ _Make sure that Unity Hub is not running in the background before running Hub Pa Simply run hub_patcher.py with the path to your Unity Hub installation as the first arguement. You may have to run as administrator depending on where it is installed. -Ex: `python hub_patcher.py "D:/Program Files/Unity Hub"` +### Examples -Note that Hub Patcher has only been tested on Windows 10 and Linux. Windows 11 and OS X may or may not work. +Windows: `python hub_patcher.py "C:/Program Files/Unity Hub"` +macOS: `python3 ./hub_patcher.py /Applications/Unity\ Hub.app/Contents` + +Note that Hub Patcher has only been tested on Windows 10, Linux, and macOS. While Windows 11 _should_ work in theory, your mileage may vary. ### Troubleshooting From a7122a7b17c806a35784ff43a34166219dfec72f Mon Sep 17 00:00:00 2001 From: GuitarBro <1351751-GuitarBro@users.noreply.gitlab.com> Date: Tue, 31 May 2022 22:53:49 -0400 Subject: [PATCH 03/13] Spacing --- readme.md | 1 + 1 file changed, 1 insertion(+) diff --git a/readme.md b/readme.md index a08cba8..f8bed00 100644 --- a/readme.md +++ b/readme.md @@ -13,6 +13,7 @@ Simply run hub_patcher.py with the path to your Unity Hub installation as the fi ### Examples Windows: `python hub_patcher.py "C:/Program Files/Unity Hub"` + macOS: `python3 ./hub_patcher.py /Applications/Unity\ Hub.app/Contents` Note that Hub Patcher has only been tested on Windows 10, Linux, and macOS. While Windows 11 _should_ work in theory, your mileage may vary. From 773fa198bcbf933648ac6d2b0f67638b25e8f1c7 Mon Sep 17 00:00:00 2001 From: mika Date: Sun, 29 Oct 2023 17:10:13 +0200 Subject: [PATCH 04/13] Update readme.md --- readme.md | 42 ++++++------------------------------------ 1 file changed, 6 insertions(+), 36 deletions(-) diff --git a/readme.md b/readme.md index f8bed00..55a0cf3 100644 --- a/readme.md +++ b/readme.md @@ -1,38 +1,8 @@ -# Hub Patcher +### Info +Patch Hub 3.6.0 to hide unwanted columns. -Patches Unity Hub with a custom theme selector (which includes a custom light theme). Switch between themes by going to Preferences > Appearance. Fancy! +### Usage +- TODO -![Dark theme screenshot](/screenshot.png) - -## Getting Started - -_Make sure that Unity Hub is not running in the background before running Hub Patcher!_ - -Simply run hub_patcher.py with the path to your Unity Hub installation as the first arguement. You may have to run as administrator depending on where it is installed. - -### Examples - -Windows: `python hub_patcher.py "C:/Program Files/Unity Hub"` - -macOS: `python3 ./hub_patcher.py /Applications/Unity\ Hub.app/Contents` - -Note that Hub Patcher has only been tested on Windows 10, Linux, and macOS. While Windows 11 _should_ work in theory, your mileage may vary. - -### Troubleshooting - -If you get `PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: 'app.asar' -> 'app.asar.bak'` you likely have Unity Hub running in the background. Ensure the process is terminated before retrying. - -### Prerequisites - -* Node Package Manager (NPM) -* Python 3.5+ -* Unity Hub 3.1.x (see branches for older versions) - -## License - -This project is licensed under the MIT License - see the [LICENSE.md](LICENSE.md) file for details - -## Acknowledgments - -* Unity for creating Unity Hub -* Electron team for making packaged Electron apps easy to reverse engineer +### Cloned from other site and modified here +https://gitlab.com/GuitarBro/hub-patcher From e4d91e082707ea76b052426a1986f735a05e0f99 Mon Sep 17 00:00:00 2001 From: mika Date: Sun, 29 Oct 2023 17:32:16 +0200 Subject: [PATCH 05/13] modify for 3.6.0 to remove unwanted columns, add default for in windows for hub --- hub_patcher.py | 695 +++---------------------------------------------- 1 file changed, 43 insertions(+), 652 deletions(-) diff --git a/hub_patcher.py b/hub_patcher.py index 016acef..0879925 100644 --- a/hub_patcher.py +++ b/hub_patcher.py @@ -3,663 +3,54 @@ import sys import fileinput -css = """ - """ -if len(sys.argv) == 2: +print(":::::[ HubPatcher ]:::::") +print("must run as an Administrator!") + +if len(sys.argv) == 1: + path = "C:/Program Files/Unity Hub/" +elif len(sys.argv) == 2: path = sys.argv[1] - os.chdir(os.path.join(path, "resources")) - print("Extracting app...") - subprocess.run("npx asar extract app.asar app", shell=True) - print("Backing up...") - os.rename("app.asar", "app.asar.bak") - os.chdir(os.path.join("app", "build", "renderer")) - - print("Patching...") - for line in fileinput.FileInput("index.html", inplace=1): - if "" in line: - line=line.replace(line,line + css) - print(line, end="") - - print("Done! All patched. B)") else: - print("Incorrect arguements. Did you specify the correct path to Unity Hub?") + print("Usage: python script.py [path]") + sys.exit(1) + +if not os.path.exists(path): + print(f"The specified path '{path}' does not exist.") + sys.exit(1) + +app_asar_path = os.path.join(path, "resources", "app.asar") +if not os.path.isfile(app_asar_path): + print(f"The 'app.asar' file does not exist in the specified path '{app_asar_path}'.") + print("This is because you have already patched the hub! You can find unpacked resources inside Unity Hub/resources/app/ folder, and you can modify them there") + sys.exit(1) + +print(path) +os.chdir(os.path.join(path, "resources")) +print("Extracting app..") +subprocess.run("npx asar extract app.asar app", shell=True) +print("Backing up...") +os.copy("app.asar", "app.asar.bak") +os.chdir(os.path.join("app", "build", "renderer")) + +print("Patching...") +for line in fileinput.FileInput("index.html", inplace=1): + if "" in line: + line=line.replace(line,line + css) + print(line, end="") + +print("Done! All patched!") From 5f2b674c2d5c626562aec7ef152435d88f8e69b5 Mon Sep 17 00:00:00 2001 From: mika Date: Sun, 29 Oct 2023 17:35:25 +0200 Subject: [PATCH 06/13] Update readme.md --- readme.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/readme.md b/readme.md index 55a0cf3..31d83df 100644 --- a/readme.md +++ b/readme.md @@ -2,7 +2,15 @@ Patch Hub 3.6.0 to hide unwanted columns. ### Usage -- TODO +- start commandprompt as admin +- type: python hub_patcher.py +- optionally you can give hub root folder: python hub_patcher.py c:\Program Files\Unity Hub\ + +### How it works +- it unpacks app.asar file into C:\Program Files\Unity Hub\resources\app\ +- app.asar is renamed as app.asar.bak +- next time hub runs, it uses the unpacked "app\" folder, instead of "app.asar" +- so you can modify anything inside app\ folder, this script modifies app\build\renderer\index.html template to add custom CSS styles (for hiding those columns) ### Cloned from other site and modified here https://gitlab.com/GuitarBro/hub-patcher From 68312b286b7be7a19952e4e4dddcff1d74e4ab5b Mon Sep 17 00:00:00 2001 From: mika Date: Sun, 29 Oct 2023 17:38:56 +0200 Subject: [PATCH 07/13] Update readme.md --- readme.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/readme.md b/readme.md index 31d83df..72cdf88 100644 --- a/readme.md +++ b/readme.md @@ -14,3 +14,14 @@ Patch Hub 3.6.0 to hide unwanted columns. ### Cloned from other site and modified here https://gitlab.com/GuitarBro/hub-patcher + +### Warning +- For educational use only! +- if you mess up the templates, reinstall hub (better if you take backup of original app.asar, so you can always deleted modified or unpacked files) + +### Images +before +![image](https://github.com/unitycoder/UnityHubPatcher/assets/5438317/9461925c-6513-4faa-b8f8-e61eeefa01f8) + +after +![hub2023-10-29 13-07-52](https://github.com/unitycoder/UnityHubPatcher/assets/5438317/03d08762-1e20-4b63-a5ba-a5aa4a8816a3) From d082f550675e110f90d93751421c958fccbbd47f Mon Sep 17 00:00:00 2001 From: mika Date: Sun, 29 Oct 2023 17:39:18 +0200 Subject: [PATCH 08/13] Update readme.md --- readme.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/readme.md b/readme.md index 72cdf88..1d1ed61 100644 --- a/readme.md +++ b/readme.md @@ -20,8 +20,8 @@ https://gitlab.com/GuitarBro/hub-patcher - if you mess up the templates, reinstall hub (better if you take backup of original app.asar, so you can always deleted modified or unpacked files) ### Images -before +before
![image](https://github.com/unitycoder/UnityHubPatcher/assets/5438317/9461925c-6513-4faa-b8f8-e61eeefa01f8) -after +after
![hub2023-10-29 13-07-52](https://github.com/unitycoder/UnityHubPatcher/assets/5438317/03d08762-1e20-4b63-a5ba-a5aa4a8816a3) From 462778b9041f66d80620dec40aaaf5226507d12a Mon Sep 17 00:00:00 2001 From: mika Date: Sun, 29 Oct 2023 17:53:44 +0200 Subject: [PATCH 09/13] Update readme.md --- readme.md | 1 + 1 file changed, 1 insertion(+) diff --git a/readme.md b/readme.md index 1d1ed61..ffbbb5e 100644 --- a/readme.md +++ b/readme.md @@ -1,5 +1,6 @@ ### Info Patch Hub 3.6.0 to hide unwanted columns. +https://unitycoder.com/blog/2023/10/29/unityhub-3-6-0-remove-version-control-cloud-dashboard-columns/ ### Usage - start commandprompt as admin From eeb7741c9fb5a75972e19c2f08a746c95b9e78f5 Mon Sep 17 00:00:00 2001 From: mika Date: Sun, 29 Oct 2023 17:55:04 +0200 Subject: [PATCH 10/13] cleanup --- icon.png | Bin 2879 -> 0 bytes screenshot.png | Bin 49494 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 icon.png delete mode 100644 screenshot.png diff --git a/icon.png b/icon.png deleted file mode 100644 index 98af767997afd306c11c25540e611060d85ef12b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2879 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 diff --git a/screenshot.png b/screenshot.png deleted file mode 100644 index 64279ca333a664cab52d0208863ffea3868e7dc1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49494 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 Qn3r@Vd3CuD*G;|u10m4JYybcN From 576e7e26161b405abf14f059f1579602690e084e Mon Sep 17 00:00:00 2001 From: mika Date: Sun, 10 Dec 2023 15:45:10 +0200 Subject: [PATCH 11/13] fix os.copy with shutil. --- hub_patcher.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/hub_patcher.py b/hub_patcher.py index 0879925..e93282c 100644 --- a/hub_patcher.py +++ b/hub_patcher.py @@ -2,6 +2,7 @@ import os import sys import fileinput +import shutil css = """