{"id":15059981,"url":"https://github.com/ho-cooh/fastcopy","last_synced_at":"2025-04-09T14:10:22.734Z","repository":{"id":112727577,"uuid":"589244984","full_name":"HO-COOH/FastCopy","owner":"HO-COOH","description":"A GUI wrappers for Windows' built-in robocopy. QQ讨论群：479734355 ","archived":false,"fork":false,"pushed_at":"2024-05-30T20:51:51.000Z","size":7406,"stargazers_count":211,"open_issues_count":12,"forks_count":26,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-02T12:13:22.421Z","etag":null,"topics":["cpp20","explorer","system-utility","windows","windowsappsdk","winui3"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/HO-COOH.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-01-15T15:00:48.000Z","updated_at":"2025-03-30T02:04:04.000Z","dependencies_parsed_at":"2024-10-30T06:34:30.842Z","dependency_job_id":null,"html_url":"https://github.com/HO-COOH/FastCopy","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HO-COOH%2FFastCopy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HO-COOH%2FFastCopy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HO-COOH%2FFastCopy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HO-COOH%2FFastCopy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/HO-COOH","download_url":"https://codeload.github.com/HO-COOH/FastCopy/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248054195,"owners_count":21039952,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cpp20","explorer","system-utility","windows","windowsappsdk","winui3"],"created_at":"2024-09-24T22:50:46.837Z","updated_at":"2025-04-09T14:10:22.707Z","avatar_url":"https://github.com/HO-COOH.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"#  ![Frame 8](https://user-images.githubusercontent.com/6630660/212826788-9eeab669-783c-472b-98ed-ee049984cc19.png) FastCopy\n\nA GUI wrapper for Windows' built-in `robocopy` ~~and `xcopy`~~.\n\n## Features\n- Easy to use copy/paste/move/delete dialog, just like your good old explorer, but much faster🚀\n\n- Support the new Windows 11 context menu, and the old windows context menu, with the fluent design icon adapted to Light/Dark theme\n\n\u003cp align=\"center\"\u003e\n    \u003cimage src=\"Screenshots/NewMenuCopy_Dark.png\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003cimage src=\"Screenshots/NewMenuCopy_Light.png\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003cimage src=\"Screenshots/NewMenuPaste_Dark.png\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003cimage src=\"Screenshots/OldMenuCopy_Dark.png\"\u003e\n\u003c/p\u003e\n\n\n- Integration with Windows Notification Center: a notification toast will pop up when the copy is finished\n\n\u003cp align=\"center\"\u003e\n    \u003cimage src=\"Screenshots/notification.png\"\u003e\n\u003c/p\u003e\n\n- Speed graph\n\n\u003cp align=\"center\"\u003e\n    \u003cimage src=\"Screenshots/speed-graph.png\"\u003e\n\u003c/p\u003e\n\n- Confirmation Dialog\n\u003cp align=\"center\"\u003e\n    \u003cimage src=\"Screenshots/confirmation-dialog.png\"\u003e\n\u003c/p\u003e\n\n- Integration with taskbar: a progress bar sync with the one inside the window\n\n\u003cp align=\"center\"\u003e\n    \u003cimage src=\"Screenshots/taskbar-icon.png\"\u003e\n\u003c/p\u003e\n\n- Settings\n\n\u003cp align=\"center\"\u003e\n    \u003cimage src=\"Screenshots/settings.png\"\u003e\n\u003c/p\u003e\n\n- Multi-language support\n  + English\n  + 中文\n\n## Installation (before publish to Microsoft Store)\n1. Go to the [Release Page](https://github.com/HO-COOH/FastCopy/releases), download the zip file in the **Asset** section of the latest version\n2. Unzip, double-click to open the certificate file ended in `.cert`, click `Install Certificate`. Choose `Local Machine` in the dialog, click `Next`\n  ![](Screenshots/open_cert.png)\n3. Choose `Place all certificates in the following store`, click `Browser`, and in the dialog choose `Trusted root certification authorities`\n![](Screenshots/install-cert.png)\n4. Then click `Next` and finally `Finish` to install the certificate.\n5. Now you can double-click the `msix` to install the app.\n6*. **In rare situations, you might need to restart `explorer.exe` to see `FastCopy` in the right-click context menu**\n\n## Usage\n1. Using file explorer, select some files/folders, as many as you want \u003e\u003e right click \u003e\u003e move to **FastCopy** \u003e\u003e select **Copy** or **Move**\n2. Go to destination folder, right click at empty space \u003e\u003e move to **FastCopy** \u003e\u003e select **Paste**\n\n\n\n## Development\n### Project structure\n```\nFastCopy\n    FastCopy\\               --- Main project\n    FastCopyShellExtension\\ --- A dll project for registering the new Windows context menu\n    SpeedTest\\              --- A speed test project for measuring various copying method under Windows\n    UnitTest\\               --- Unit test for above projects\n    FastCopy.sln            --- The solution file for all the projects\n```\n### Build pre-requisites\n- Visual Studio 2019+, with C++20 support \u0026 Universal Windows development workload\n- Windows App Sdk, with C++ template\n- Additional dependencies per project:\n  + FastCopy:\n    - spdlog\n    - boost-algorithm\n  + SpeedTest:\n    - abseil\n    - ftxui\n    - cereal\n\n[vcpkg](https://vcpkg.io/en/) is the recommended package manager to handle these dependencies. \nYou can install them with one command, and do no more.\n```\nvcpkg install boost-algorithm:x64-windows\nvcpkg install spdlog:x64-windows\nvcpkg install abseil:x64-windows\nvcpkg install ftxui:x64-windows\nvcpkg install cereal:x64-windows\n``` \n\nOther component comes from my very own [WinUIEssentials](https://github.com/HO-COOH/WinUIEssentials), which will be installed automatically by Visual Studio nuget.\n\n### Known issue\n- App crash after the window closed (does not affect users, low priority)\n\n### Recommendation\nPlease install the [Child Process Debugger](https://marketplace.visualstudio.com/items?itemName=vsdbgplat.MicrosoftChildProcessDebuggingPowerTool2022), so that the debugger would break at the copying process (after you launch the settings process). \nThat is, you run the program first (so it goes into settings), then copy-paste a file, then the debugger will break automatically. \nStrongly recommended! \n\n## Translation\nFor contribution to translation, there are 2 places to be translated:\n- The main project, in `FastCopy/Strings/\u003clanguage\u003e/Resources.resw`\n- The shell extension project, in `FastCopyShellExtension/CopyOperationNames.cpp CopyOperationNames::GetInstance()`\n\n\n### Prototype\n[Figma link, you may need to ask for permission.](https://www.figma.com/file/e5hUvDWKO8gZiKXruuNSvL/Xcopy?type=design\u0026node-id=217-31199\u0026t=cKY9TdBJXXi7QdFL-0)\n\n![](Screenshots/figma.png)\n\n![image](https://user-images.githubusercontent.com/6630660/212826364-28155c87-c809-4ab8-b203-c8438fa64749.png)\n\n![image](https://user-images.githubusercontent.com/6630660/212826583-75744773-2f10-45a7-8e5d-281ab1f9eee3.png)\n\n\n### Behind the scene\n#### Parsing `robocopy` output\n1. New file line has the form of this\n```\nNew File  \t\t     485\tCMakeLists.txt\t20:58 -\u003e 20:58\n```\nThis can be matched with **staring with `New File` and containing 4 segments after split with `\\t`**\n```cpp\nstd::string_view{line}.starts_with(\"New File\");\nstd::vector\u003cabsl::string_view\u003e v = absl::StrSplit(s.data(), \"\\t\", absl::SkipEmpty()); \n/*\n    New File\n    485\n    CMakeLists.txt\n    xx:xx -\u003e xx:xx\n*/\n```\n2. New folder line has the form of this\n```\nNew Dir       2000\tD:\\computecpp-sdk\\.git\\refs\\\n```\nThis can be matched with **starting with `New Dir` and containing 2 segments after split with `\\t`** (the spacing between `New Dir` and number are spaces, not `\\t`)\n```cpp\nstd::string_view{line}.starts_with(\"New Dir\");\nstd::vector\u003cstd::string\u003e splitted = absl::StrSplit(absl::string_view{ line.data(), line.length() }, \"\\t\", absl::SkipEmpty());\n/*\n    New Dir       2000\n    D:\\computecpp-sdk\\.git\\refs\\\n*/\nstd::pair\u003cstd::string, std::string\u003e count = absl::StrSplit(splitted[0], \"  \", absl::SkipEmpty());\n/*\n    New Dir\n    2000\n*/\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fho-cooh%2Ffastcopy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fho-cooh%2Ffastcopy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fho-cooh%2Ffastcopy/lists"}