diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index be6fb77..a1eb0df 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -90,17 +90,27 @@ jobs: - name: Run build_runner run: dart run build_runner build --delete-conflicting-outputs - - name: Build Windows app - run: flutter build windows --release + - name: Install fastforge + run: dart pub global activate fastforge - name: Create MSIX package - run: dart run msix:create + run: fastforge package --platform windows --targets msix - name: Upload MSIX artifact uses: actions/upload-artifact@v4 with: name: scrcpy_buddy_msix - path: build\windows\x64\runner\Release\scrcpy_buddy.msix + path: dist\**\*.msix + if-no-files-found: error + + - name: Create Inno Setup EXE + run: fastforge package --platform windows --targets exe + + - name: Upload Inno Setup EXE artifact + uses: actions/upload-artifact@v4 + with: + name: scrcpy_buddy_exe + path: dist\**\*.exe if-no-files-found: error build-macos: diff --git a/README.md b/README.md index bd3c22b..90d084b 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,4 @@ +![](/media/banner.png "banner")

Made with Windows Design @@ -9,46 +10,41 @@ alt="scrcpy v3.3.4"/>

-# scrcpy buddy 🤝 - -![](/media/banner.png "banner") - scrcpy buddy is a clean, minimalist Flutter-based desktop application that provides an intuitive graphical interface for [scrcpy](https://github.com/Genymobile/scrcpy), the popular Android screen mirroring and control tool. Built with Fluent UI design principles, it brings a polished, native desktop experience to managing your Android devices across Windows, Linux, and macOS. -* [scrcpy buddy 🤝](#scrcpy-buddy-) - * [Requirements](#requirements) - * [Features](#features) - * [Coming next](#coming-next) - * [Supported languages](#supported-languages) - * [Screenshots](#screenshots) - * [Download & Installation](#download--installation) - * [Supported and tested platforms](#supported-and-tested-platforms) - * [Installation](#installation) - * [MacOS](#macos) - * [Opening the app on MacOS](#opening-the-app-on-macos) - * [Linux](#linux) - * [Windows](#windows) - * [Usage instructions](#usage-instructions) - * [Running scrcpy](#running-scrcpy) - * [Customizing scrcpy options](#customizing-scrcpy-options) - * [Profile management](#profile-management) - * [Configuring a default profile](#configuring-a-default-profile) - * [Troubleshooting](#troubleshooting) - * [ADB / scrcpy not found](#adb--scrcpy-not-found) - * [Setting executable path manually in settings](#setting-executable-path-manually-in-settings) - * [How it works](#how-it-works) - * [List of commands used by the app](#list-of-commands-used-by-the-app) - * [ADB Commands](#adb-commands) - * [scrcpy Commands](#scrcpy-commands) - * [License](#license) - * [Artworks credits](#artworks-credits) +* [Requirements](#requirements) +* [Features](#features) + * [Coming next](#coming-next) +* [Supported languages](#supported-languages) +* [Screenshots](#screenshots) +* [Download & Installation](#download--installation) + * [Supported and tested platforms](#supported-and-tested-platforms) + * [Installation](#installation) + * [MacOS](#macos) + * [Opening the app on MacOS](#opening-the-app-on-macos) + * [Linux](#linux) + * [Windows](#windows) +* [Usage instructions](#usage-instructions) + * [Running scrcpy](#running-scrcpy) + * [Customizing scrcpy options](#customizing-scrcpy-options) + * [Profile management](#profile-management) + * [Configuring a default profile](#configuring-a-default-profile) +* [Troubleshooting](#troubleshooting) + * [ADB / scrcpy not found](#adb--scrcpy-not-found) + * [Setting executable path manually in settings](#setting-executable-path-manually-in-settings) +* [How it works](#how-it-works) + * [List of commands used by the app](#list-of-commands-used-by-the-app) + * [ADB Commands](#adb-commands) + * [scrcpy Commands](#scrcpy-commands) +* [License](#license) +* [Artworks credits](#artworks-credits) -## Requirements +# Requirements To use this app, you need the following: @@ -57,7 +53,7 @@ To use this app, you need the following: - Android device(s) with "Developer options" and USB / Network debugging enabled: https://developer.android.com/tools/adb#Enabling -## Features +# Features - Run scrcpy on multiple connected devices - ADB Device management (Switch USB Device to network / disconnect device) @@ -69,16 +65,17 @@ To use this app, you need the following: from a connected device - Close app to tray -### Coming next +## Coming next See [milestones](https://github.com/Codertainment/scrcpy_buddy/milestones) -## Supported languages +# Supported languages + - Only English for now But the app is built with i18n in mind. So, support for more languages can be added gradually. -## Screenshots +# Screenshots (may not be up-to-date) @@ -89,11 +86,11 @@ But the app is built with i18n in mind. So, support for more languages can be ad | ![](/media/screenshots/windows/video.png "video options") | ![](/media/screenshots/windows/virtual_display.png "virtual display options") | ![](/media/screenshots/windows/window.png "window options") | | ![](/media/screenshots/windows/profile_dropdown.png "profile dropdown") | ![](/media/screenshots/windows/profile_management.png "profile management") | ![](/media/screenshots/macos/settings.png "app settings") | -## Download & Installation +# Download & Installation All downloads can be found on the [latest release](https://github.com/Codertainment/scrcpy_buddy/releases/latest) page -### Supported and tested platforms +## Supported and tested platforms | OS | Minimum Supported | Tested ✅ | |---------|-----------------------------|---------------| @@ -101,9 +98,9 @@ All downloads can be found on the [latest release](https://github.com/Codertainm | Windows | 7 (?) | 11 | | Linux | Should work on all versions | KUbuntu 25.10 | -### Installation +## Installation -#### MacOS +### MacOS - Download and open the DMG File - Make sure you have administrator privileges @@ -111,7 +108,7 @@ All downloads can be found on the [latest release](https://github.com/Codertainm - Open the app by searching for it ( Space) - See [the next section](#opening-the-app-on-macos) to understand how to open the app -#### Opening the app on MacOS +### Opening the app on MacOS For macOS apps to be verified, a developer account is required, which has a membership fee of $99/year. As this is my personal project, I cannot afford this. @@ -121,7 +118,7 @@ Hence, the app is unverified, and it requires **manual intervention to open it f Follow the instructions from [Apple Support](https://support.apple.com/guide/mac-help/mchleab3a043) to manually override the signing and check and open the app. -#### Linux +### Linux Possible installation options: @@ -129,7 +126,7 @@ Possible installation options: - Download and install the snap manually (`$ sudo snap install .snap --classic --dangerous`) - Download and open the AppImage -#### Windows +### Windows

@@ -143,9 +140,9 @@ Possible installation options: updates) - Install via EXE Setup -## Usage instructions +# Usage instructions -### Running scrcpy +## Running scrcpy Once you have everything setup, connected Android devices (through ADB) should show up in the homepage (known as " Devices"). @@ -158,13 +155,13 @@ To run scrcpy on your device(s): - Configure scrcpy options as you wish by navigating to the categories - Click on "Start" at the top right corner -### Customizing scrcpy options +## Customizing scrcpy options - Simply navigate to the desired category from the navigation drawer - Change the options as you'd like - All changes are saved automatically to the currently selected profile (visible in the dropdown button at top right) -### Profile management +## Profile management A profile contains: @@ -178,7 +175,7 @@ The dropdown button at the top indicates the currently active profile. By clicking on the dropdown button, you can switch between profiles, create a new profile or navigate to the profile management page. -### Configuring a default profile +## Configuring a default profile You can choose a single profile to be the default one (everytime you open the app), or let the last used profile be the default one. @@ -192,9 +189,9 @@ To default to the last used profile: - Go to settings, under the "Default profile" section, select "Last used" from the dropdown menu -## Troubleshooting +# Troubleshooting -### ADB / scrcpy not found +## ADB / scrcpy not found If you have ADB and/or scrcpy setup and installed in your path: @@ -202,10 +199,10 @@ If you have ADB and/or scrcpy setup and installed in your path: can [set the executable in settings manually](#setting-executable-path-manually-in-settings). - To find out the installation path, run this command in the terminal: - e.g. - - For Windows: `where adb` - - For MacOS/Linux: `which adb` + - For Windows: `where adb` + - For MacOS/Linux: `which adb` -### Setting executable path manually in settings +## Setting executable path manually in settings ![](/media/screenshots/macos/settings.png "app settings") @@ -215,7 +212,7 @@ Verify that the app is able to access the executables by clicking on "Check". It should show the adb or scrcpy version. -## How it works +# How it works scrcpy buddy functions as a graphical user interface (GUI) wrapper for command-line tools. The application does not communicate directly with Android devices or access device data itself. Instead, it exclusively interacts with adb and @@ -223,9 +220,9 @@ scrcpy. All device communication and data processing occur through these external tools, which operate under their own respective privacy policies and security models. -### List of commands used by the app +## List of commands used by the app -#### ADB Commands +### ADB Commands - `adb --version` - Retrieves the installed adb version - `adb devices -l` - Lists connected Android devices @@ -235,19 +232,20 @@ respective privacy policies and security models. - `adb shell ip route show` - Retrieves network routing information from connected devices - `adb tcpip` - Switches device connection mode to TCP/IP -#### scrcpy Commands +### scrcpy Commands - `scrcpy` - Launches screen mirroring with user-configured options from the application UI - `scrcpy --version` - Retrieves the installed scrcpy version - `scrcpy --list-apps` - Lists applications installed on connected devices -## License +# License Apache-2.0: See [LICENSE](LICENSE) -## Artworks credits +# Artworks credits > The Android robot is reproduced or modified from work created and shared by Google and used according to terms > described in the Creative Commons 3.0 Attribution License (https://creativecommons.org/licenses/by/3.0/). -Thanks to my friend, [@SudipRajbanshi](https://github.com/SudipRajbanshi) for creating the beautiful logo, banner and tray icon ❤️ \ No newline at end of file +Thanks to my friend, [@SudipRajbanshi](https://github.com/SudipRajbanshi) for creating the beautiful logo, banner and +tray icon ❤️ \ No newline at end of file diff --git a/pubspec.yaml b/pubspec.yaml index f5f3018..2a3f3e1 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -132,12 +132,3 @@ flutter_launcher_icons: generate: true macos: generate: true - -msix_config: - display_name: scrcpy buddy - publisher_display_name: Codertainment - publisher: CN=5EFFC3AA-14FC-4D47-AABD-2F91F482F2F7 - identity_name: Codertainment.scrcpybuddy - store: true - logo_path: assets/icon_light_1024.png - capabilities: privateNetworkClientServer, usb \ No newline at end of file diff --git a/windows/packaging/exe/make_config.yaml b/windows/packaging/exe/make_config.yaml new file mode 100644 index 0000000..60be51a --- /dev/null +++ b/windows/packaging/exe/make_config.yaml @@ -0,0 +1,13 @@ +# The value of AppId uniquely identifies this application. +# Do not use the same AppId value in installers for other applications. +app_id: dev.codertainment.scrcpy_buddy +publisher: Codertainment +publisher_url: https://github.com/Codertainment/scrcpy_buddy +display_name: scrcpy buddy +create_desktop_icon: true +# See: https://jrsoftware.org/ishelp/index.php?topic=setup_defaultdirname +# install_dir_name: "D:\\HELLO-WORLD" +# This path is relative to the root directory of your project; The format of icon file must be ico, can not be png or others +setup_icon_file: windows\runner\resources\app_icon.ico +locales: + - en \ No newline at end of file diff --git a/windows/packaging/msix/make_config.yaml b/windows/packaging/msix/make_config.yaml new file mode 100644 index 0000000..ebd5d60 --- /dev/null +++ b/windows/packaging/msix/make_config.yaml @@ -0,0 +1,7 @@ +display_name: scrcpy buddy +publisher_display_name: Codertainment +publisher: CN=5EFFC3AA-14FC-4D47-AABD-2F91F482F2F7 +identity_name: Codertainment.scrcpybuddy +store: 'true' +logo_path: assets/icon_light_1024.png +capabilities: privateNetworkClientServer, usb \ No newline at end of file diff --git a/windows/runner/main.cpp b/windows/runner/main.cpp index 33af3b3..ad1275b 100644 --- a/windows/runner/main.cpp +++ b/windows/runner/main.cpp @@ -7,7 +7,7 @@ int APIENTRY wWinMain(_In_ HINSTANCE instance, _In_opt_ HINSTANCE prev, _In_ wchar_t *command_line, _In_ int show_command) { - HWND hwnd = ::FindWindow(L"FLUTTER_RUNNER_WIN32_WINDOW", L"scrcpy_buddy"); + HWND hwnd = ::FindWindow(L"FLUTTER_RUNNER_WIN32_WINDOW", L"scrcpy buddy"); if (hwnd != NULL) { ::ShowWindow(hwnd, SW_NORMAL); ::SetForegroundWindow(hwnd);