Just a stern but friendly rabbit furry working as a technical writer, learning germanic languages, gaming on Linux, interested in social psychology, fandom studies, locked-room mysteries and programming. Cis, gay, kinky, pm-friendly, single.

  • 11 Posts
  • 36 Comments
Joined 1 year ago
cake
Cake day: June 14th, 2023

help-circle










  • My understanding of Linux programming is that it’s mostly done in a code editor, then compiled on the command line.

    That’s not really true. You can do that, but with most IDEs (and some text editors) you really don’t need to do that. You can do everything from the IDE.

    I’m aware that cmake exists, and I’ve used it a bit, but I don’t like it. VS lets me just drop a .h and .cpp file into the solution explorer and I’m good-to-go. Is there really no graphical alternative for Linux?

    It depends on the IDE and how it handles project files. Nowadays Qt Creator for example can just create your source code files and automatically add them to the generated project CMake. I’m pretty sure other IDEs or text editors have this functionality when paired with CMake or Meson too.

    It must be noted that if the IDE has some custom project file manager (like Visual Studio does with sln and vcproj files) and you use it exclusively, you’ll likely restrict your project to one platform and one IDE. Using something like CMake or Meson will make it easier to do crossplatform development and will let your users build the project without needing that specific IDE.

    Personally I like modern CMake, the problem is that you’ll see a lot of projects in the wild doing old CMake style, which is awful. Meson is okay, although it feels very Pythonic to me and lacks some features I use for Qt stuff.


  • I think I started with C#, went to C, then (pre-ES6) JS, Python, then Perl, then C++.

    I didn’t get much interest or progress in most of them. C# was somewhat interesting because I could make actual windows, and Perl just has a lot of interesting text-geared concepts and was created by a linguist (my background is in language and literature, not in any IT field). Perl is still delightful to learn, though I’d go with Raku (Perl 6) now.

    The only language I really learned properly and use the most is C++, especially with Qt, as my true interest is GUI programming. I was never into raw algorithms and CLI programs.






  • can I write modern C++ code using the newer standards and still compile with libraries from older standards?

    Yes, but then your project ends up requiring that newer standard as minimum too (which can be fine if that’s what you want).

    how do I even organize a C++ project?

    Well, one way that should be simple and scalable for beginners is leaving the root folder for project configuration/metadata/contribution guidelines/clang-format etc. and putting all source code inside src/.

    If it’s just an app, you can make smaller library targets in src/ in separate folders with meaningful names, like src/models/, src/settings/ etc. If it’s a library, you typically put headers you intend to expose to your users in a src/include/ folder and use target_include_directories() to point to it, otherwise the same principle as apps applies.

    It requires writing a few more, smaller CMakeLists, but it does mean you’re never lost in your own code.

    how do I install dependencies?

    We added this recently to KDE’s developer documentation, so at least for Linux it’s a start: Installing build dependencies: Using build errors to find missing dependencies.




  • FYI for whoever is reading this: it wasn’t just a theme, but a Global Theme: it can include a Plasma Style, a color scheme, an icon theme, a panel layout template, an SDDM theme, wallpapers and widgets. Widgets are capable of running arbitrary code, just like GNOME extensions.

    Here’s the response article from one of our main developers: http://blog.davidedmundson.co.uk/blog/kde-store-content/

    In the short term we need to communicate clearly what security expectations Plasma users should have for extensions they download into their desktops.

    We need to improve the balance of accessing third party content that allows creators to share and have users to get this content easily, with enough speed-bumps and checks that everyone knows what risks are involved.

    Longer term we need to progress on two avenues. We need to make sure we separate the “safe” content, where it is just metadata and content, from the “unsafe” content with scriptable content.

    Then we can look at providing curation and auditing as part of the store process in combination with slowly improving sandbox support.