DEV Community


Posted on

101 touches of coding Linux tool with C# for fun

It is hard to start such a blog, but at least it can serve me as feedback during developing a Linux application with C#.

You can ask if I am crazy, C# and Linux it is not a good idea but you know what, I do not care, I know, or at least I think I know how to code within C#. So why not use my existing experience and create something that will help. At least for me. I like UI applications, and Linux has plenty of space where such applications exist only in the form of terminals. For me, I see a space in managing installed software, especially this is a problem in Arch Linux distributions.

So I will try to create a UI tool for installing, uninstalling, updating applications installed on Arch-based distributions of Linux.

You can still ask, why 101 and what touch means.
Actually, 101 is a cool number, like 101 dalmatians. So it means I do not know how many specific articles for this topic I will write. Problems will show if it is relevant to share it as an article in my blog.

But still, touches? What do you mean by that you can ask? Basically, it will be one touch for one article I would like to share with others. It can refer to some specific problem or solution I will face.

What tools do I plan to use during such a journey?

As the title says I will use C# and Linux, but more specifically I have an idea of what I want to use so in the list below it is written, but by the time I will update it when I use something else, so I can then check backwards as a retrospective my chosen paths. Also next to that, I will use the yay tool, which has plenty of possibilities for what I need to execute behind the UI for the user.

  • Arch Linux - I will use Endeavour distribution, currently, the latest is the Atlantis Neo release
  • C#
  • for UI with C#, I will use the Avalonia framework, together with its Avalonia.Diagnostics and Avalonia.ReativeUI
  • ReactiveUI.Fody, for simplifying and removing the need of implementing INotifyPropertyChanged interface for each View Model
  • for logs, I will use Serilog together with Serilog.Sinks.Constole and Serilog.Sinks.File
  • Splat for Service Location together with Spat.Serilog to simplify logging
  • CliWrap for executing yay commands
  • NUnit for unit tests
  • Currently not sure but maybe also FluentAssertions
  • Specflow with NUnit for BDD tests
  • Own tasks and targets for MSBuild as a building mechanism
  • for CI/CD maybe Azure Dev Ops
  • GitHub and maybe GitHub free actions

I decided that my project will be called *yay_see_sharp.* Because in base it will be UI for yay in C#.

If you liked this, you can follow my next progress and give me feedback during articles.

Also from this article, you will be able to navigate to my next “touches”.

The list is here:

Top comments (0)