Add command line options
This commit is contained in:
parent
cca7f91303
commit
f93a3cef4d
2 changed files with 130 additions and 107 deletions
|
@ -12,6 +12,7 @@
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="GirCore.Gtk-4.0" Version="0.6.3" />
|
<PackageReference Include="GirCore.Gtk-4.0" Version="0.6.3" />
|
||||||
|
<PackageReference Include="System.CommandLine" Version="2.0.0-beta7.25380.108" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|
|
@ -1,17 +1,35 @@
|
||||||
using Gdk;
|
using System.CommandLine;
|
||||||
|
using Gdk;
|
||||||
using Gio;
|
using Gio;
|
||||||
using GLib;
|
using GLib;
|
||||||
using Gtk;
|
using Gtk;
|
||||||
using Pango;
|
using Pango;
|
||||||
using ZwlrLayerShell;
|
using ZwlrLayerShell;
|
||||||
using Application = Gtk.Application;
|
using Application = Gtk.Application;
|
||||||
using TimeSpan = System.TimeSpan;
|
|
||||||
using Variant = GLib.Variant;
|
using Variant = GLib.Variant;
|
||||||
|
|
||||||
|
var overlayLayer = new Option<bool>("--overlay", "-o")
|
||||||
|
{ Description = "Use the overlay layer instead of the top layer." };
|
||||||
|
var horizontalMargin = new Option<uint>("--hmargin", "-H")
|
||||||
|
{ Description = "Horizontal margin from screen edge in pixels.", DefaultValueFactory = parseResult => 55 };
|
||||||
|
var verticalMargin = new Option<uint>("--vmargin", "-V")
|
||||||
|
{ Description = "Vertical margin from screen edge in pixels.", DefaultValueFactory = parseResult => 15 };
|
||||||
|
|
||||||
|
var root = new RootCommand("Displays your current song like in Deltarune Chapter 1.")
|
||||||
|
{ Options = { overlayLayer, horizontalMargin, verticalMargin } };
|
||||||
|
|
||||||
|
root.SetAction(RunApplication);
|
||||||
|
|
||||||
|
var rootParsed = root.Parse(args);
|
||||||
|
|
||||||
|
return rootParsed.Invoke();
|
||||||
|
|
||||||
|
void RunApplication(ParseResult parseResult)
|
||||||
|
{
|
||||||
if (!LayerShell.IsSupported())
|
if (!LayerShell.IsSupported())
|
||||||
{
|
{
|
||||||
Console.WriteLine("You must be running on a Wayland compositor that supports zwlr_layer_shell_v1");
|
Console.WriteLine("You must be running on a Wayland compositor that supports zwlr_layer_shell_v1");
|
||||||
return 255;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
ApplicationWindow? window = null;
|
ApplicationWindow? window = null;
|
||||||
|
@ -42,12 +60,14 @@ application.OnActivate += (sender, eventArgs) =>
|
||||||
|
|
||||||
LayerShell.InitForWindow(window);
|
LayerShell.InitForWindow(window);
|
||||||
LayerShell.SetNamespace(window, "deltatune-wls");
|
LayerShell.SetNamespace(window, "deltatune-wls");
|
||||||
LayerShell.SetLayer(window, Layer.Top);
|
LayerShell.SetLayer(window, parseResult.GetValue(overlayLayer) ? Layer.Overlay : Layer.Top);
|
||||||
LayerShell.SetAnchor(window, Edge.Left, true);
|
LayerShell.SetAnchor(window, Edge.Left, true);
|
||||||
LayerShell.SetAnchor(window, Edge.Right, true);
|
LayerShell.SetAnchor(window, Edge.Right, true);
|
||||||
LayerShell.SetAnchor(window, Edge.Top, true);
|
LayerShell.SetAnchor(window, Edge.Top, true);
|
||||||
LayerShell.SetMargin(window, 15);
|
LayerShell.SetMargin(window, Edge.Left, (int)parseResult.GetValue(horizontalMargin));
|
||||||
LayerShell.SetMargin(window, Edge.Left, 55);
|
LayerShell.SetMargin(window, Edge.Right, (int)parseResult.GetValue(horizontalMargin));
|
||||||
|
LayerShell.SetMargin(window, Edge.Top, (int)parseResult.GetValue(verticalMargin));
|
||||||
|
LayerShell.SetMargin(window, Edge.Bottom, (int)parseResult.GetValue(verticalMargin));
|
||||||
|
|
||||||
var label = Label.New(null);
|
var label = Label.New(null);
|
||||||
label.Halign = Align.Start;
|
label.Halign = Align.Start;
|
||||||
|
@ -70,7 +90,8 @@ application.OnActivate += (sender, eventArgs) =>
|
||||||
if (!label.HasCssClass("fade-in"))
|
if (!label.HasCssClass("fade-in"))
|
||||||
{
|
{
|
||||||
label.AddCssClass("fade-in");
|
label.AddCssClass("fade-in");
|
||||||
GLib.Functions.TimeoutAddSeconds(GLib.Constants.PRIORITY_DEFAULT, 9, () => {
|
GLib.Functions.TimeoutAddSeconds(GLib.Constants.PRIORITY_DEFAULT, 9, () =>
|
||||||
|
{
|
||||||
label.RemoveCssClass("fade-in");
|
label.RemoveCssClass("fade-in");
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
|
@ -127,4 +148,5 @@ window label {
|
||||||
StyleContext.AddProviderForDisplay(Display.GetDefault()!, css,
|
StyleContext.AddProviderForDisplay(Display.GetDefault()!, css,
|
||||||
Gtk.Constants.STYLE_PROVIDER_PRIORITY_APPLICATION);
|
Gtk.Constants.STYLE_PROVIDER_PRIORITY_APPLICATION);
|
||||||
|
|
||||||
return application.RunWithSynchronizationContext(null);
|
application.RunWithSynchronizationContext(null);
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue