mirror of
https://github.com/feschber/lan-mouse.git
synced 2026-04-09 13:01:28 +03:00
Compare commits
9 Commits
27225ed564
...
windows-ms
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ac96faabec | ||
|
|
7fa3d2fafd | ||
|
|
cd9fc43af4 | ||
|
|
64d5058544 | ||
|
|
61259445c0 | ||
|
|
b9a4497fa4 | ||
|
|
2f824d8bd3 | ||
|
|
4397ce9f1c | ||
|
|
acb067bfde |
12
flake.lock
generated
12
flake.lock
generated
@@ -2,11 +2,11 @@
|
||||
"nodes": {
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1752687322,
|
||||
"narHash": "sha256-RKwfXA4OZROjBTQAl9WOZQFm7L8Bo93FQwSJpAiSRvo=",
|
||||
"lastModified": 1772963539,
|
||||
"narHash": "sha256-9jVDGZnvCckTGdYT53d/EfznygLskyLQXYwJLKMPsZs=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "6e987485eb2c77e5dcc5af4e3c70843711ef9251",
|
||||
"rev": "9dcb002ca1690658be4a04645215baea8b95f31d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -29,11 +29,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1752806774,
|
||||
"narHash": "sha256-4cHeoR2roN7d/3J6gT+l6o7J2hTrBIUiCwVdDNMeXzE=",
|
||||
"lastModified": 1773025773,
|
||||
"narHash": "sha256-Wik8+xApNfldpUFjPmJkPdg0RrvUPSWGIZis+A/0N1w=",
|
||||
"owner": "oxalica",
|
||||
"repo": "rust-overlay",
|
||||
"rev": "3c90219b3ba1c9790c45a078eae121de48a39c55",
|
||||
"rev": "3c06fdbbd36ff60386a1e590ee0cd52dcd1892bf",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
||||
139
flake.nix
139
flake.nix
@@ -7,60 +7,87 @@
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
};
|
||||
outputs = {
|
||||
self,
|
||||
nixpkgs,
|
||||
rust-overlay,
|
||||
...
|
||||
}: let
|
||||
inherit (nixpkgs) lib;
|
||||
genSystems = lib.genAttrs [
|
||||
"aarch64-darwin"
|
||||
"aarch64-linux"
|
||||
"x86_64-darwin"
|
||||
"x86_64-linux"
|
||||
];
|
||||
pkgsFor = system:
|
||||
import nixpkgs {
|
||||
inherit system;
|
||||
|
||||
overlays = [
|
||||
rust-overlay.overlays.default
|
||||
];
|
||||
};
|
||||
mkRustToolchain = pkgs:
|
||||
pkgs.rust-bin.stable.latest.default.override {
|
||||
extensions = ["rust-src"];
|
||||
};
|
||||
pkgs = genSystems (system: import nixpkgs {inherit system;});
|
||||
in {
|
||||
packages = genSystems (system: rec {
|
||||
default = pkgs.${system}.callPackage ./nix {};
|
||||
lan-mouse = default;
|
||||
});
|
||||
homeManagerModules.default = import ./nix/hm-module.nix self;
|
||||
devShells = genSystems (system: let
|
||||
pkgs = pkgsFor system;
|
||||
rust = mkRustToolchain pkgs;
|
||||
in {
|
||||
default = pkgs.mkShell {
|
||||
packages = with pkgs; [
|
||||
rust
|
||||
rust-analyzer-unwrapped
|
||||
pkg-config
|
||||
xorg.libX11
|
||||
gtk4
|
||||
libadwaita
|
||||
librsvg
|
||||
xorg.libXtst
|
||||
] ++ lib.optionals stdenv.isDarwin
|
||||
(with darwin.apple_sdk_11_0.frameworks; [
|
||||
CoreGraphics
|
||||
ApplicationServices
|
||||
]);
|
||||
|
||||
RUST_SRC_PATH = "${rust}/lib/rustlib/src/rust/library";
|
||||
};
|
||||
});
|
||||
};
|
||||
outputs =
|
||||
{
|
||||
nixpkgs,
|
||||
rust-overlay,
|
||||
self,
|
||||
...
|
||||
}:
|
||||
let
|
||||
inherit (nixpkgs) lib;
|
||||
forEachPkgs =
|
||||
f:
|
||||
lib.genAttrs
|
||||
[
|
||||
"aarch64-darwin"
|
||||
"aarch64-linux"
|
||||
"x86_64-darwin"
|
||||
"x86_64-linux"
|
||||
]
|
||||
(
|
||||
system:
|
||||
let
|
||||
pkgs = import nixpkgs {
|
||||
inherit system;
|
||||
overlays = [ rust-overlay.overlays.default ];
|
||||
};
|
||||
# Default toolchain for devshell
|
||||
rustToolchain = pkgs.rust-bin.stable.latest.default.override {
|
||||
extensions = [
|
||||
# includes already:
|
||||
# rustc
|
||||
# cargo
|
||||
# rust-std
|
||||
# rust-docs
|
||||
# rustfmt-preview
|
||||
# clippy-preview
|
||||
"rust-analyzer"
|
||||
"rust-src"
|
||||
];
|
||||
};
|
||||
# Minimal toolchain for builds (rustc + cargo + rust-std only)
|
||||
rustToolchainForBuild = pkgs.rust-bin.stable.latest.minimal;
|
||||
in
|
||||
f { inherit pkgs rustToolchain rustToolchainForBuild; }
|
||||
);
|
||||
in
|
||||
{
|
||||
packages = forEachPkgs (
|
||||
{ pkgs, rustToolchainForBuild, ... }:
|
||||
let
|
||||
customRustPlatform = pkgs.makeRustPlatform {
|
||||
cargo = rustToolchainForBuild;
|
||||
rustc = rustToolchainForBuild;
|
||||
};
|
||||
lan-mouse = pkgs.callPackage ./nix { rustPlatform = customRustPlatform; };
|
||||
in
|
||||
{
|
||||
default = lan-mouse;
|
||||
inherit lan-mouse;
|
||||
}
|
||||
);
|
||||
devShells = forEachPkgs (
|
||||
{ pkgs, rustToolchain, ... }:
|
||||
{
|
||||
default = pkgs.mkShell {
|
||||
packages =
|
||||
with pkgs;
|
||||
[
|
||||
rustToolchain
|
||||
pkg-config
|
||||
gtk4
|
||||
libadwaita
|
||||
librsvg
|
||||
]
|
||||
++ lib.optionals pkgs.stdenv.isLinux [
|
||||
libX11
|
||||
libXtst
|
||||
];
|
||||
env.RUST_SRC_PATH = "${rustToolchain}/lib/rustlib/src/rust/library";
|
||||
};
|
||||
}
|
||||
);
|
||||
homeManagerModules.default = import ./nix/hm-module.nix self;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,34 +1,40 @@
|
||||
{
|
||||
stdenv,
|
||||
rustPlatform,
|
||||
lib,
|
||||
pkgs,
|
||||
}: let
|
||||
cargoToml = builtins.fromTOML (builtins.readFile ../Cargo.toml);
|
||||
pkg-config,
|
||||
libX11,
|
||||
gtk4,
|
||||
libadwaita,
|
||||
libXtst,
|
||||
wrapGAppsHook4,
|
||||
librsvg,
|
||||
git,
|
||||
}:
|
||||
let
|
||||
cargoToml = fromTOML (builtins.readFile ../Cargo.toml);
|
||||
pname = cargoToml.package.name;
|
||||
version = cargoToml.package.version;
|
||||
in
|
||||
rustPlatform.buildRustPackage {
|
||||
pname = pname;
|
||||
version = version;
|
||||
inherit pname;
|
||||
inherit version;
|
||||
|
||||
nativeBuildInputs = with pkgs; [
|
||||
git
|
||||
nativeBuildInputs = [
|
||||
pkg-config
|
||||
cmake
|
||||
makeWrapper
|
||||
buildPackages.gtk4
|
||||
wrapGAppsHook4
|
||||
git
|
||||
];
|
||||
|
||||
buildInputs = with pkgs; [
|
||||
xorg.libX11
|
||||
buildInputs = [
|
||||
gtk4
|
||||
libadwaita
|
||||
xorg.libXtst
|
||||
] ++ lib.optionals stdenv.isDarwin
|
||||
(with darwin.apple_sdk_11_0.frameworks; [
|
||||
CoreGraphics
|
||||
ApplicationServices
|
||||
]);
|
||||
librsvg
|
||||
]
|
||||
++ lib.optionals stdenv.isLinux [
|
||||
libX11
|
||||
libXtst
|
||||
];
|
||||
|
||||
src = builtins.path {
|
||||
name = pname;
|
||||
@@ -40,11 +46,7 @@ rustPlatform.buildRustPackage {
|
||||
# Set Environment Variables
|
||||
RUST_BACKTRACE = "full";
|
||||
|
||||
# Needed to enable support for SVG icons in GTK
|
||||
postInstall = ''
|
||||
wrapProgram "$out/bin/lan-mouse" \
|
||||
--set GDK_PIXBUF_MODULE_FILE ${pkgs.librsvg.out}/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache
|
||||
|
||||
install -Dm444 *.desktop -t $out/share/applications
|
||||
install -Dm444 lan-mouse-gtk/resources/*.svg -t $out/share/icons/hicolor/scalable/apps
|
||||
'';
|
||||
|
||||
@@ -29,13 +29,13 @@ iconset="${3:-./target/icon.iconset}"
|
||||
set -u
|
||||
|
||||
mkdir -p "$iconset"
|
||||
magick convert -background none -resize 1024x1024 "$svg" "$iconset"/icon_512x512@2x.png
|
||||
magick convert -background none -resize 512x512 "$svg" "$iconset"/icon_512x512.png
|
||||
magick convert -background none -resize 256x256 "$svg" "$iconset"/icon_256x256.png
|
||||
magick convert -background none -resize 128x128 "$svg" "$iconset"/icon_128x128.png
|
||||
magick convert -background none -resize 64x64 "$svg" "$iconset"/icon_32x32@2x.png
|
||||
magick convert -background none -resize 32x32 "$svg" "$iconset"/icon_32x32.png
|
||||
magick convert -background none -resize 16x16 "$svg" "$iconset"/icon_16x16.png
|
||||
magick "$svg" -background none -resize 1024x1024 "$iconset"/icon_512x512@2x.png
|
||||
magick "$svg" -background none -resize 512x512 "$iconset"/icon_512x512.png
|
||||
magick "$svg" -background none -resize 256x256 "$iconset"/icon_256x256.png
|
||||
magick "$svg" -background none -resize 128x128 "$iconset"/icon_128x128.png
|
||||
magick "$svg" -background none -resize 64x64 "$iconset"/icon_32x32@2x.png
|
||||
magick "$svg" -background none -resize 32x32 "$iconset"/icon_32x32.png
|
||||
magick "$svg" -background none -resize 16x16 "$iconset"/icon_16x16.png
|
||||
cp "$iconset"/icon_512x512.png "$iconset"/icon_256x256@2x.png
|
||||
cp "$iconset"/icon_256x256.png "$iconset"/icon_128x128@2x.png
|
||||
cp "$iconset"/icon_32x32.png "$iconset"/icon_16x16@2x.png
|
||||
|
||||
3
wix/bundle/.gitignore
vendored
Normal file
3
wix/bundle/.gitignore
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
/bin
|
||||
/obj
|
||||
icon.ico
|
||||
16
wix/bundle/Bundle.wixproj
Normal file
16
wix/bundle/Bundle.wixproj
Normal file
@@ -0,0 +1,16 @@
|
||||
<Project Sdk="WixToolset.Sdk/5.0.0">
|
||||
<PropertyGroup>
|
||||
<OutputType>Bundle</OutputType>
|
||||
<TargetExt>.exe</TargetExt>
|
||||
<Platforms>x64</Platforms>
|
||||
<InstallerPlatform>x64</InstallerPlatform>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="WixToolset.Heat">
|
||||
<Version>5.0.2</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="WixToolset.Bal.wixext">
|
||||
<Version>5.0.2</Version>
|
||||
</PackageReference>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
42
wix/bundle/Bundle.wxs
Normal file
42
wix/bundle/Bundle.wxs
Normal file
@@ -0,0 +1,42 @@
|
||||
<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"
|
||||
xmlns:bal="http://wixtoolset.org/schemas/v4/wxs/bal">
|
||||
|
||||
<Bundle
|
||||
Name="Lan Mouse"
|
||||
Version="0.10.0"
|
||||
UpgradeCode="{39A9744D-9D6E-4CD3-A84F-9E034786A7B1}"
|
||||
Compressed="no"
|
||||
SplashScreenSourceFile="icon.ico">
|
||||
|
||||
<BootstrapperApplication>
|
||||
<bal:WixStandardBootstrapperApplication
|
||||
LicenseUrl=""
|
||||
Theme="hyperlinkLicense" />
|
||||
</BootstrapperApplication>
|
||||
|
||||
<Chain>
|
||||
<!-- Visual C++ 2015-2022 Redistributable (x64) - 14.40.33810 -->
|
||||
<ExePackage
|
||||
Id="VC_REDIST_X64"
|
||||
DisplayName="Microsoft Visual C++ 2015-2022 Redistributable (x64) - 14.40.33810"
|
||||
PerMachine="yes"
|
||||
Permanent="yes"
|
||||
Protocol="burn"
|
||||
InstallCondition="VersionNT64 AND (ARCH_NAME = "AMD64")"
|
||||
DetectCondition="(VCRUNTIME_X64_VER >= VCRUNTIME_VER) AND VersionNT64 AND (ARCH_NAME = "AMD64")"
|
||||
InstallArguments="/install /quiet /norestart"
|
||||
RepairArguments="/repair /quiet /norestart"
|
||||
UninstallArguments="/uninstall /quiet /norestart">
|
||||
<ExePackagePayload
|
||||
Name="VC_redist.x64.exe"
|
||||
ProductName="Microsoft Visual C++ 2015-2022 Redistributable (x64) - 14.40.33810"
|
||||
Description="Microsoft Visual C++ 2015-2022 Redistributable (x64) - 14.40.33810"
|
||||
Hash="5935B69F5138AC3FBC33813C74DA853269BA079F910936AEFA95E230C6092B92F6225BFFB594E5DD35FF29BF260E4B35F91ADEDE90FDF5F062030D8666FD0104"
|
||||
Size="25397512"
|
||||
Version="14.40.33810.0"
|
||||
DownloadUrl="https://download.visualstudio.microsoft.com/download/pr/1754ea58-11a6-44ab-a262-696e194ce543/3642E3F95D50CC193E4B5A0B0FFBF7FE2C08801517758B4C8AEB7105A091208A/VC_redist.x64.exe" />
|
||||
</ExePackage>
|
||||
<MsiPackage SourceFile="..\lan-mouse\bin\Debug\en-US\LanMouse.msi" Compressed="yes"/>
|
||||
</Chain>
|
||||
</Bundle>
|
||||
</Wix>
|
||||
3
wix/lan-mouse/.gitignore
vendored
Normal file
3
wix/lan-mouse/.gitignore
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
/bin
|
||||
/obj
|
||||
icon.ico
|
||||
13
wix/lan-mouse/Folders.wxs
Normal file
13
wix/lan-mouse/Folders.wxs
Normal file
@@ -0,0 +1,13 @@
|
||||
<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
|
||||
<Fragment>
|
||||
<StandardDirectory Id="ProgramFiles64Folder">
|
||||
<Directory Id="INSTALLFOLDER" Name="!(bind.Property.Manufacturer) !(bind.Property.ProductName)">
|
||||
<Directory Id="SHARE" Name="share"/>
|
||||
<Directory Id="LIB" Name="lib"/>
|
||||
</Directory>
|
||||
</StandardDirectory>
|
||||
<StandardDirectory Id="ProgramMenuFolder">
|
||||
<Directory Id="ApplicationProgramsFolder" Name="!(bind.Property.ProductName)"/>
|
||||
</StandardDirectory>
|
||||
</Fragment>
|
||||
</Wix>
|
||||
34
wix/lan-mouse/LanMouse.wixproj
Normal file
34
wix/lan-mouse/LanMouse.wixproj
Normal file
@@ -0,0 +1,34 @@
|
||||
<Project Sdk="WixToolset.Sdk/5.0.2">
|
||||
<PropertyGroup>
|
||||
<InstallerPlatform>x64</InstallerPlatform>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="WixToolset.Heat">
|
||||
<Version>5.0.2</Version>
|
||||
</PackageReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<HarvestDirectory Include="C:\gtk-build\gtk\x64\release\bin">
|
||||
<ComponentGroupName>GTKBIN</ComponentGroupName>
|
||||
<DirectoryRefId>INSTALLFOLDER</DirectoryRefId>
|
||||
<SuppressRegistry>true</SuppressRegistry>
|
||||
</HarvestDirectory>
|
||||
<BindPath Include="C:\gtk-build\gtk\x64\release\bin" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<HarvestDirectory Include="C:\gtk-build\gtk\x64\release\share\icons">
|
||||
<ComponentGroupName>GTKICONS</ComponentGroupName>
|
||||
<DirectoryRefId>SHARE</DirectoryRefId>
|
||||
<SuppressRegistry>true</SuppressRegistry>
|
||||
</HarvestDirectory>
|
||||
<BindPath Include="C:\gtk-build\gtk\x64\release\share\icons" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<HarvestDirectory Include="C:\gtk-build\gtk\x64\release\lib\gdk-pixbuf-2.0">
|
||||
<ComponentGroupName>GTKLIBS</ComponentGroupName>
|
||||
<DirectoryRefId>LIB</DirectoryRefId>
|
||||
<SuppressRegistry>true</SuppressRegistry>
|
||||
</HarvestDirectory>
|
||||
<BindPath Include="C:\gtk-build\gtk\x64\release\lib\gdk-pixbuf-2.0" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
32
wix/lan-mouse/LanMouseComponents.wxs
Normal file
32
wix/lan-mouse/LanMouseComponents.wxs
Normal file
@@ -0,0 +1,32 @@
|
||||
<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
|
||||
<Fragment>
|
||||
<ComponentGroup Id="LanMouseComponents" Directory="INSTALLFOLDER" Subdirectory="bin">
|
||||
<Component Guid="{ECB52D3E-28AD-4BEC-B9DF-E01CCAB356BE}">
|
||||
<!-- the main binary -->
|
||||
<File Source="..\..\target\release\lan-mouse.exe"/>
|
||||
|
||||
<!-- visual c runtime dll -->
|
||||
<!--<File Source="C:\windows\system32\VCRUNTIME140.dll"/>-->
|
||||
<!--<File Source="C:\windows\system32\VCRUNTIME140_1.dll"/>-->
|
||||
</Component>
|
||||
<!-- start menu entry-->
|
||||
<Component Id="ApplicationShortcut" Directory="ApplicationProgramsFolder">
|
||||
<Shortcut Id="ApplicationStartMenuShortcut"
|
||||
Name="!(bind.Property.ProductName)"
|
||||
Description ="Mouse and Keyboard sharing Software"
|
||||
Target="[INSTALLFOLDER]bin\lan-mouse.exe"
|
||||
WorkingDirectory="INSTALLFOLDER">
|
||||
<Icon Id="LanMouse" SourceFile=".\icon.ico"/>
|
||||
</Shortcut>
|
||||
<RemoveFolder Id="ApplicationProgramsFolder" On="uninstall"/>
|
||||
<RegistryValue
|
||||
Root="HKCU"
|
||||
Key="Software\Feschber\LanMouse"
|
||||
Name="installed"
|
||||
Type="integer"
|
||||
Value="1"
|
||||
KeyPath="yes"/>
|
||||
</Component>
|
||||
</ComponentGroup>
|
||||
</Fragment>
|
||||
</Wix>
|
||||
8
wix/lan-mouse/Package.en-us.wxl
Normal file
8
wix/lan-mouse/Package.en-us.wxl
Normal file
@@ -0,0 +1,8 @@
|
||||
<!--
|
||||
This file contains the declaration of all the localizable strings.
|
||||
-->
|
||||
<WixLocalization xmlns="http://wixtoolset.org/schemas/v4/wxl" Culture="en-US">
|
||||
|
||||
<String Id="DowngradeError" Value="A newer version of [ProductName] is already installed." />
|
||||
|
||||
</WixLocalization>
|
||||
16
wix/lan-mouse/Package.wxs
Normal file
16
wix/lan-mouse/Package.wxs
Normal file
@@ -0,0 +1,16 @@
|
||||
<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
|
||||
<Package Name="Lan Mouse"
|
||||
Manufacturer="Ferdinand Schober"
|
||||
Version="0.10.0.0"
|
||||
UpgradeCode="{a330cd60-4c35-4a54-8bb6-75b3049b46c6}">
|
||||
<MajorUpgrade DowngradeErrorMessage="!(loc.DowngradeError)" />
|
||||
|
||||
<MediaTemplate EmbedCab="yes"/>
|
||||
<Feature Id="Main">
|
||||
<ComponentGroupRef Id="GTKBIN"/>
|
||||
<ComponentGroupRef Id="GTKICONS"/>
|
||||
<ComponentGroupRef Id="GTKLIBS"/>
|
||||
<ComponentGroupRef Id="LanMouseComponents"/>
|
||||
</Feature>
|
||||
</Package>
|
||||
</Wix>
|
||||
2
wix/lan-mouse/build.ps1
Normal file
2
wix/lan-mouse/build.ps1
Normal file
@@ -0,0 +1,2 @@
|
||||
magick -background none -density 384 ..\lan-mouse-gtk\resources\de.feschber.LanMouse.svg -trim -define icon:auto-resize icon.ico
|
||||
dotnet build
|
||||
Reference in New Issue
Block a user