Merge branch 'dev' into fix/free_hwnd

This commit is contained in:
曾奥然
2025-10-28 13:09:06 +08:00
committed by GitHub
62 changed files with 231 additions and 129 deletions

View File

@@ -30,11 +30,10 @@
* 然的加入,逐渐成长为互相支持的伙伴。
* ------------------------------------------------------------*/
#define Chsrc_Version "0.2.3"
#define Chsrc_Release_Date "2025/10/06"
#define Chsrc_Maintain_URL "https://github.com/RubyMetric/chsrc"
#define Chsrc_Maintain_URL2 "https://gitee.com/RubyMetric/chsrc"
#include "framework/version.h"
#include "framework/core.c"
#include "framework/chef.c"

View File

@@ -5,7 +5,7 @@
* File Authors : 曾奥然 <ccmywish@qq.com>
* Contributors : BingChunMoLi <bingchunmoli@bingchunmoli.com>
* Created On : <2025-08-09>
* Last Modified : <2025-08-27>
* Last Modified : <2025-10-27>
*
* chef DSL: for chefs (recipe makers) to define a target
* ------------------------------------------------------------*/
@@ -186,7 +186,7 @@ chef_allow_english (Target_t *target)
}
void
chef_forbid_english (Target_t *target)
chef_deny_english (Target_t *target)
{
xy_cant_be_null (target);
target->can_english = false;
@@ -226,7 +226,7 @@ chef_allow_user_define (Target_t *target)
}
void
chef_forbid_user_define (Target_t *target)
chef_deny_user_define (Target_t *target)
{
xy_cant_be_null (target);

23
src/framework/version.h Normal file
View File

@@ -0,0 +1,23 @@
/** ------------------------------------------------------------
* SPDX-License-Identifier: GPL-3.0-or-later
* -------------------------------------------------------------
* File Name : version.h
* File Authors : 曾奥然 <ccmywish@qq.com>
* | Mikachu2333 <mikachu.23333@zohomail.com>
* Contributors : Nil Null <nil@null.org>
* |
* Created On : <2025-10-10>
* Last Modified : <See 'Chsrc_Release_Date'>
*
* 发布新版本前请修改此文件
* ------------------------------------------------------------*/
#define Chsrc_Version "0.2.3.1-dev1"
// 以下四个宏仅用于 resource/chsrc.rc
#define Chsrc_Version_Major 0
#define Chsrc_Version_Minor 2
#define Chsrc_Version_Patch 3
#define Chsrc_Version_Pre 1
#define Chsrc_Release_Date "2025/10/15"

View File

@@ -18,7 +18,7 @@ pl_clojure_prelude ()
chef_set_sauciers (this, 1, "@hezonglun");
chef_allow_local_mode (this, FullyCan, NULL, NULL);
chef_forbid_english(this);
chef_deny_english(this);
chef_allow_user_define(this);
def_sources_begin()

View File

@@ -32,7 +32,7 @@ pl_go_prelude ()
chef_set_sauciers (this, 2, "@czyt", "@techoc");
chef_allow_local_mode (this, CanNot, NULL, NULL);
chef_forbid_english(this);
chef_deny_english(this);
chef_allow_user_define(this);

View File

@@ -18,7 +18,7 @@ pl_haskell_prelude ()
chef_set_sauciers (this, 1, "@hezonglun");
chef_allow_local_mode (this, CanNot, NULL, NULL);
chef_forbid_english(this);
chef_deny_english(this);
chef_allow_user_define(this);
def_sources_begin()

View File

@@ -18,7 +18,7 @@ pl_java_prelude ()
chef_set_sauciers (this, 0);
chef_allow_local_mode (this, CanNot, NULL, NULL);
chef_forbid_english(this);
chef_deny_english(this);
chef_allow_user_define(this);
// 阿里巴巴开源镜像站需要修改为此才能测速

View File

@@ -25,7 +25,7 @@ pl_lua_prelude ()
chef_set_sauciers (this, 1, "@hezonglun");
chef_allow_local_mode (this, CanNot, NULL, NULL);
chef_forbid_english(this);
chef_deny_english(this);
chef_allow_user_define(this);
def_sources_begin()

View File

@@ -18,8 +18,8 @@ pl_nuget_prelude ()
chef_set_sauciers (this, 0);
chef_allow_local_mode (this, CanNot, NULL, NULL);
chef_forbid_english(this);
chef_forbid_user_define(this);
chef_deny_english(this);
chef_deny_user_define(this);
def_sources_begin()
{&UpstreamProvider, "https://www.nuget.org/api/v3/", DelegateToUpstream},

View File

@@ -18,7 +18,7 @@ pl_ocaml_prelude ()
chef_set_sauciers (this, 1, "@hezonglun");
chef_allow_local_mode (this, CanNot, NULL, NULL);
chef_forbid_english(this);
chef_deny_english(this);
chef_allow_user_define(this);
def_sources_begin()

View File

@@ -18,7 +18,7 @@ pl_php_prelude ()
chef_set_sauciers (this, 1, "@hezonglun");
chef_allow_local_mode (this, FullyCan, NULL, NULL);
chef_forbid_english(this);
chef_deny_english(this);
chef_allow_user_define(this);
def_sources_begin()

View File

@@ -18,7 +18,7 @@ pl_perl_prelude ()
chef_set_sauciers (this, 2, "@hezonglun", "@Mikachu2333");
chef_allow_local_mode (this, CanNot, NULL, NULL);
chef_forbid_english (this);
chef_deny_english (this);
chef_allow_user_define (this);
def_sources_begin()

View File

@@ -18,7 +18,7 @@ pl_r_prelude ()
chef_set_sauciers (this, 1, "@hezonglun");
chef_allow_local_mode (this, CanNot, NULL, NULL);
chef_forbid_english(this);
chef_deny_english(this);
chef_allow_user_define(this);
// 以下注释的是不含有bioconductor的镜像站我们在换cran的同时也直接帮助用户换bioconductor

View File

@@ -18,7 +18,7 @@ pl_rust_cargo_prelude (void)
chef_set_sauciers (this, 1, "@happy-game");
chef_allow_local_mode (this, FullyCan, NULL, NULL);
chef_forbid_english (this);
chef_deny_english (this);
chef_allow_user_define (this);
@@ -75,7 +75,6 @@ pl_rust_cargo_getsrc (char *option)
char *raw_content = xy_file_read (cargo_config_file);
char *formatted_content = xy_str_gsub (raw_content, " ", "");
formatted_content = xy_str_gsub (formatted_content, "'", "\"");
free (raw_content);
XyStrFindResult_t result_has_mirror = xy_str_find (formatted_content, "replace-with");
if (result_has_mirror.found)
@@ -112,7 +111,6 @@ pl_write_rust_config (const char *path, const char *url)
char *content = RAWSTR_pl_rust_cargo_config;
content = xy_str_gsub (content, "@url@", url);
chsrc_overwrite_file (content, path);
free (content);
}
/**
@@ -172,7 +170,6 @@ pl_rust_cargo_setsrc (char *option)
char *final_content = xy_str_gsub (raw_content, mirror_url, xy_2strcat ("sparse+", source.url));
chsrc_overwrite_file (final_content, cargo_config_file);
free (final_content);
goto finish;
}

View File

@@ -21,7 +21,7 @@ pl_rust_rustup_prelude (void)
chef_set_sauciers (this, 2, "@Yangmoooo", "@Mikachu2333");
chef_allow_local_mode (this, CanNot, NULL, NULL);
chef_forbid_english (this);
chef_deny_english (this);
chef_allow_user_define(this);
def_sources_begin()

View File

@@ -18,8 +18,8 @@ os_armbian_prelude ()
chef_set_sauciers (this, 2, "@ccmywish", "@Yangmoooo");
chef_allow_local_mode (this, CanNot, NULL, NULL);
chef_forbid_english(this);
chef_forbid_user_define(this);
chef_deny_english(this);
chef_deny_user_define(this);
chef_set_note(this, NULL, NULL);

View File

@@ -18,8 +18,8 @@ os_debian_prelude ()
chef_set_sauciers (this, 1, "@Yangmoooo");
chef_allow_local_mode (this, CanNot, NULL, NULL);
chef_forbid_english(this);
chef_forbid_user_define(this);
chef_deny_english(this);
chef_deny_user_define(this);
chef_set_note(this, NULL, NULL);

View File

@@ -18,8 +18,8 @@ os_kali_prelude ()
chef_set_sauciers (this, 2, "@Yangmoooo", "@happy-game");
chef_allow_local_mode (this, CanNot, NULL, NULL);
chef_forbid_english(this);
chef_forbid_user_define(this);
chef_deny_english(this);
chef_deny_user_define(this);
chef_set_note(this, NULL, NULL);

View File

@@ -18,8 +18,8 @@ os_linuxlite_prelude ()
chef_set_sauciers (this, 1, "@Yangmoooo");
chef_allow_local_mode (this, CanNot, NULL, NULL);
chef_forbid_english(this);
chef_forbid_user_define(this);
chef_deny_english(this);
chef_deny_user_define(this);
chef_set_note(this, NULL, NULL);

View File

@@ -18,8 +18,8 @@ os_linuxmint_prelude ()
chef_set_sauciers (this, 1, "@happy-game");
chef_allow_local_mode (this, CanNot, NULL, NULL);
chef_forbid_english(this);
chef_forbid_user_define(this);
chef_deny_english(this);
chef_deny_user_define(this);
/* @note 实际上镜像站里的内容和Ubuntu的不太一样 */

View File

@@ -18,8 +18,8 @@ os_ros_prelude ()
chef_set_sauciers (this, 2, "@ccmywish", "@zouri");
chef_allow_local_mode (this, CanNot, NULL, NULL);
chef_forbid_english(this);
chef_forbid_user_define(this);
chef_deny_english(this);
chef_deny_user_define(this);
chef_set_note(this, "该换源方案中URL存在拼凑因此不能手动使用某URL来换源", "In this switching method, URLs are constructed, so manual URL specification is not supported");

View File

@@ -20,8 +20,8 @@ os_raspberrypi_prelude ()
chef_set_sauciers (this, 1, "@Yangmoooo");
chef_allow_local_mode (this, CanNot, NULL, NULL);
chef_forbid_english(this);
chef_forbid_user_define(this);
chef_deny_english(this);
chef_deny_user_define(this);
chef_set_note(this, NULL, NULL);

View File

@@ -18,8 +18,8 @@ os_termux_prelude ()
chef_set_sauciers (this, 0);
chef_allow_local_mode (this, CanNot, NULL, NULL);
chef_forbid_english(this);
chef_forbid_user_define(this);
chef_deny_english(this);
chef_deny_user_define(this);
chef_set_note(this, "该 recipe 存在对应的 bootstrapper", "This recipe has a corresponding bootstrapper");

View File

@@ -20,8 +20,8 @@ os_trisquel_prelude ()
chef_set_sauciers (this, 0);
chef_allow_local_mode (this, CanNot, NULL, NULL);
chef_forbid_english(this);
chef_forbid_user_define(this);
chef_deny_english(this);
chef_deny_user_define(this);
chef_set_note(this, NULL, NULL);

View File

@@ -19,8 +19,8 @@ os_ubuntu_prelude ()
chef_set_sauciers (this, 1, "@XUANJI233");
chef_allow_local_mode (this, CanNot, NULL, NULL);
chef_forbid_english(this);
chef_forbid_user_define(this);
chef_deny_english(this);
chef_deny_user_define(this);
chef_set_note(this, NULL, NULL);

View File

@@ -18,8 +18,8 @@ os_deepin_prelude ()
chef_set_sauciers (this, 1, "@Yangmoooo");
chef_allow_local_mode (this, CanNot, NULL, NULL);
chef_forbid_english(this);
chef_forbid_user_define(this);
chef_deny_english(this);
chef_deny_user_define(this);
chef_set_note(this, NULL, NULL);

View File

@@ -21,8 +21,8 @@ os_openkylin_prelude ()
chef_set_sauciers (this, 1, "@ccmywish");
chef_allow_local_mode (this, CanNot, NULL, NULL);
chef_forbid_english(this);
chef_forbid_user_define(this);
chef_deny_english(this);
chef_deny_user_define(this);
chef_set_note(this, NULL, NULL);

View File

@@ -19,7 +19,7 @@ os_alpine_prelude ()
chef_allow_local_mode (this, CanNot, NULL, NULL);
chef_allow_english(this);
chef_forbid_user_define(this);
chef_deny_user_define(this);
chef_set_note(this, NULL, NULL);

View File

@@ -18,8 +18,8 @@ os_freebsd_prelude ()
chef_set_sauciers (this, 1, "@hezonglun");
chef_allow_local_mode (this, CanNot, NULL, NULL);
chef_forbid_english(this);
chef_forbid_user_define(this);
chef_deny_english(this);
chef_deny_user_define(this);
// 2023-09-24: 以下三个USTC, NJU, Netease 均维护了 freebsd-pkg freebsd-ports

View File

@@ -19,8 +19,8 @@ os_netbsd_prelude ()
chef_allow_local_mode (this, CanNot, NULL, NULL);
chef_forbid_english(this);
chef_forbid_user_define(this);
chef_deny_english(this);
chef_deny_user_define(this);
def_sources_begin()
{&UpstreamProvider, "http://ftp.netbsd.org/pub/pkgsrc/packages/NetBSD/", DelegateToUpstream},

View File

@@ -18,8 +18,8 @@ os_openbsd_prelude ()
chef_set_sauciers (this, 1, "@hezonglun");
chef_allow_local_mode (this, CanNot, NULL, NULL);
chef_forbid_english(this);
chef_forbid_user_define(this);
chef_deny_english(this);
chef_deny_user_define(this);
def_sources_begin()
{&UpstreamProvider, "https://cdn.openbsd.org/pub/OpenBSD/", DelegateToUpstream},

View File

@@ -19,7 +19,7 @@ os_gentoo_prelude ()
chef_allow_local_mode (this, CanNot, NULL, NULL);
chef_allow_english(this);
chef_forbid_user_define(this);
chef_deny_user_define(this);
chef_set_note(this, NULL, NULL);

View File

@@ -19,7 +19,7 @@ os_solus_prelude ()
chef_allow_local_mode (this, CanNot, NULL, NULL);
chef_forbid_english(this);
chef_deny_english(this);
chef_allow_user_define(this);
chef_set_note(this, NULL, NULL);

View File

@@ -18,7 +18,7 @@ os_voidlinux_prelude ()
chef_set_sauciers (this, 1, "@Yangmoooo");
chef_allow_local_mode (this, CanNot, NULL, NULL);
chef_forbid_english(this);
chef_deny_english(this);
chef_set_note(this, NULL, NULL);

View File

@@ -18,8 +18,8 @@ os_almalinux_prelude ()
chef_set_sauciers (this, 1, "@Yangmoooo");
chef_allow_local_mode (this, CanNot, NULL, NULL);
chef_forbid_english(this);
chef_forbid_user_define(this);
chef_deny_english(this);
chef_deny_user_define(this);
chef_set_note(this, NULL, NULL);

View File

@@ -18,8 +18,8 @@ os_anolis_prelude ()
chef_set_sauciers (this, 0);
chef_allow_local_mode (this, CanNot, NULL, NULL);
chef_forbid_english(this);
chef_forbid_user_define(this);
chef_deny_english(this);
chef_deny_user_define(this);
chef_set_note(this, NULL, NULL);

View File

@@ -18,8 +18,8 @@ os_fedora_prelude ()
chef_set_sauciers (this, 1, "@ccmywish");
chef_allow_local_mode (this, CanNot, NULL, NULL);
chef_forbid_english(this);
chef_forbid_user_define(this);
chef_deny_english(this);
chef_deny_user_define(this);
chef_set_note(this, NULL, NULL);

View File

@@ -18,8 +18,8 @@ os_rockylinux_prelude ()
chef_set_sauciers (this, 1, "@happy-game");
chef_allow_local_mode (this, CanNot, NULL, NULL);
chef_forbid_english(this);
chef_forbid_user_define(this);
chef_deny_english(this);
chef_deny_user_define(this);
def_sources_begin()
{&UpstreamProvider, "https://dl.rockylinux.org", DelegateToUpstream},

View File

@@ -18,8 +18,8 @@ os_openeuler_prelude ()
chef_set_sauciers (this, 3, "@ccmywish", "@Yangmoooo", "@happy-game");
chef_allow_local_mode (this, CanNot, NULL, NULL);
chef_forbid_english(this);
chef_forbid_user_define(this);
chef_deny_english(this);
chef_deny_user_define(this);
chef_set_note(this, NULL, NULL);

View File

@@ -18,8 +18,8 @@ os_opensuse_prelude ()
chef_set_sauciers (this, 0);
chef_allow_local_mode (this, CanNot, NULL, NULL);
chef_forbid_english(this);
chef_forbid_user_define(this);
chef_deny_english(this);
chef_deny_user_define(this);
chef_set_note(this, NULL, NULL);

View File

@@ -21,8 +21,8 @@ os_arch_prelude ()
chef_set_sauciers (this, 2, "@happy-game", "@Young-Lord");
chef_allow_local_mode (this, CanNot, NULL, NULL);
chef_forbid_english(this);
chef_forbid_user_define(this);
chef_deny_english(this);
chef_deny_user_define(this);
chef_set_note (this,
"可额外使用 chsrc set archlinuxcn 来更换 Arch Linux CN Repository 源",
@@ -124,8 +124,8 @@ os_archlinuxcn_prelude ()
chef_set_sauciers (this, 2, "@happy-game", "@Young-Lord");
chef_allow_local_mode (this, CanNot, NULL, NULL);
chef_forbid_english(this);
chef_forbid_user_define(this);
chef_deny_english(this);
chef_deny_user_define(this);
chef_set_note (this,
"可额外使用 chsrc set arch 来更换 Arch Linux 源",

View File

@@ -18,8 +18,8 @@ os_msys2_prelude ()
chef_set_sauciers (this, 2, "@ccmywish", "@hezonglun");
chef_allow_local_mode (this, CanNot, NULL, NULL);
chef_forbid_english(this);
chef_forbid_user_define(this);
chef_deny_english(this);
chef_deny_user_define(this);
def_sources_begin()
{&UpstreamProvider, "https://mirror.msys2.org/", DelegateToUpstream},

View File

@@ -17,8 +17,8 @@ os_manjaro_prelude ()
chef_set_sauciers (this, 0);
chef_allow_local_mode (this, CanNot, NULL, NULL);
chef_forbid_english(this);
chef_forbid_user_define(this);
chef_deny_english(this);
chef_deny_user_define(this);
def_sources_begin()
{&UpstreamProvider, NULL, DelegateToUpstream}

View File

@@ -73,10 +73,10 @@ void
chef_allow_local_mode (this, PartiallyCan, "具体说明是否支持项目级换源...", "Tell users the local mode support");
// chef_allow_english(this); // 项目是否支持英文
chef_forbid_english(this);
chef_deny_english(this);
// chef_allow_user_define(this); // 是否支持用户自定义镜像源
chef_forbid_user_define(this);
chef_deny_user_define(this);
chef_set_note ("中文备注说明...", "English note...");

View File

@@ -20,8 +20,8 @@ wr_anaconda_prelude ()
chef_set_sauciers (this, 2, "@Yangmoooo", "@xyx1926885268");
chef_allow_local_mode (this, CanNot, NULL, NULL);
chef_forbid_english(this);
chef_forbid_user_define(this);
chef_deny_english(this);
chef_deny_user_define(this);
def_sources_begin()
{&UpstreamProvider, "https://repo.anaconda.com", DelegateToUpstream},

View File

@@ -19,7 +19,7 @@ wr_cocoapods_prelude ()
chef_allow_local_mode (this, CanNot, NULL, NULL);
chef_forbid_english(this);
chef_deny_english(this);
chef_allow_user_define(this);
def_sources_begin()

View File

@@ -35,7 +35,7 @@ wr_docker_prelude ()
chef_set_sauciers (this, 0);
chef_allow_local_mode (this, CanNot, NULL, NULL);
chef_forbid_english(this);
chef_deny_english(this);
chef_allow_user_define(this);
def_sources_begin()

View File

@@ -25,8 +25,8 @@ wr_emacs_prelude ()
chef_set_sauciers (this, 0);
chef_allow_local_mode (this, CanNot, NULL, NULL);
chef_forbid_english(this);
chef_forbid_user_define(this);
chef_deny_english(this);
chef_deny_user_define(this);
chef_set_note (this, "Emacs用户往往只需要一次性换源只会极少次调用 chsrc我们只给用户提供文档",
"Emacs users typically only need to switch sources once and rarely call chsrc, so we only provide documentation to users");

View File

@@ -18,7 +18,7 @@ wr_flatpak_prelude ()
chef_set_sauciers (this, 1, "@jialinlvcn");
chef_allow_local_mode (this, CanNot, NULL, NULL);
chef_forbid_english(this);
chef_deny_english(this);
chef_allow_user_define(this);
chef_set_note (this, "对Flathub目标进行测速的文件非常小测速效果严重失真若你知道可供测速的URL欢迎参与贡献: chsrc issue",

View File

@@ -18,8 +18,8 @@ wr_guix_prelude ()
chef_set_sauciers (this, 0);
chef_allow_local_mode (this, CanNot, NULL, NULL);
chef_forbid_english(this);
chef_forbid_user_define(this);
chef_deny_english(this);
chef_deny_user_define(this);
chef_set_note (this, "目前只有一个源, guixcn 的源不知道是否可用",
"Currently only one source available, guixcn source availability unknown");

View File

@@ -21,7 +21,7 @@ wr_homebrew_prelude ()
chef_allow_local_mode (this, CanNot, NULL, NULL);
chef_allow_english(this);
chef_forbid_user_define(this);
chef_deny_user_define(this);
chef_set_note (this, "该换源通过写入环境变量实现若多次换源请手动清理profile文件",
"This source switching is implemented by writing environment variables. If switching sources multiple times, please manually clean the profile file");

View File

@@ -18,8 +18,8 @@ wr_nix_prelude ()
chef_set_sauciers (this, 0);
chef_allow_local_mode (this, CanNot, NULL, NULL);
chef_forbid_english(this);
chef_forbid_user_define(this);
chef_deny_english(this);
chef_deny_user_define(this);
def_sources_begin()
{&UpstreamProvider, "https://channels.nixos.org/", DelegateToUpstream},

View File

@@ -20,7 +20,7 @@ wr_tex_prelude ()
chef_set_sauciers (this, 1, "@Mikachu2333");
chef_allow_local_mode (this, CanNot, NULL, NULL);
chef_forbid_english(this);
chef_deny_english(this);
chef_allow_user_define(this);
def_sources_begin()

View File

@@ -17,7 +17,7 @@ wr_winget_prelude ()
chef_set_cooks (this, 1, "@ccmywish");
chef_set_sauciers (this, 1, "@Mikachu2333");
chef_forbid_english(this);
chef_deny_english(this);
chef_allow_user_define(this);
def_sources_begin()

48
src/resource/chsrc.rc Normal file
View File

@@ -0,0 +1,48 @@
// chsrc.rc - Windows Resource Script
// SPDX-License-Identifier: GPL-3.0-or-later
#include <windows.h>
#include "../framework/version.h"
// 图标资源
IDI_ICON1 ICON DISCARDABLE "logo.ico"
// 版本信息
VS_VERSION_INFO VERSIONINFO
FILEVERSION Chsrc_Version_Major,Chsrc_Version_Minor,Chsrc_Version_Patch,Chsrc_Version_Pre
// 经实验,该值会被下面的 ProductVersion 替换
// PRODUCTVERSION Chsrc_Version_Major,Chsrc_Version_Minor,Chsrc_Version_Patch,Chsrc_Version_Pre
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
#ifdef _DEBUG
FILEFLAGS VS_FF_DEBUG
#else
FILEFLAGS 0x0L
#endif
FILEOS VOS_NT_WINDOWS32
FILETYPE VFT_APP
FILESUBTYPE VFT2_UNKNOWN
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904b0"
BEGIN
VALUE "CompanyName", "RubyMetric"
VALUE "FileDescription", "Change Source everywhere for every software"
// 经实验,该值会被上面的 FILEVERSION 替换
// VALUE "FileVersion", Chsrc_Version
VALUE "InternalName", "chsrc"
VALUE "LegalCopyright", "Copyright (c) 2023-2025 RubyMetric"
VALUE "OriginalFilename", "chsrc.exe"
VALUE "ProductName", "chsrc"
VALUE "ProductVersion", Chsrc_Version
VALUE "Comments", "Released on " Chsrc_Release_Date " (GPLv3+)"
VALUE "LegalTrademarks", "RubyMetric"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x0804, 1200, 0x0409, 1200 // 简体中文和英语
END
END

BIN
src/resource/logo.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB