• 0 Posts
  • 174 Comments
Joined 2 years ago
cake
Cake day: June 10th, 2023

help-circle
  • Absolutely, but you need to set plugins for that and it’s not easy to get to the same state, but once you’re there it’s easy to surpass it. Vim has a very steep learning curve, this applies to everything from moving around the text to plugin specific stuff, but once you learn it it’s much better than any alternative I’ve ever come across (and I’ve been programming for 20 years, only switched to Nvim recently, although I’ve known basic vim since forever).

    First let me tell you that I don’t know how to do all that you asked, some of it I’ve never needed, but I’m 100% sure it’s possible due to all of the other much more difficult stuff I have on my setup. The stuff that I do have, is much more convenient, e.g. with the cursor on a function/variable I can type gd (Go-to Declaration) to go to the declaration of it, or gr (Go-to References) to go to a list of references for that function/variable, that’s much more efficient than using a mouse, especially when it takes me at most 4 key presses to go to anywhere on the visible screen using jumps. So at the worst case scenario it takes me 6 keystrokes to go to the declaration of something I have on my screen, which even at 70WPM it means a bit over a second, whereas moving your hand to your mouse, mouse to the thingand Ctrl+click probably takes longer and is worse for the wrist.

    But it’s the things that you can only do on vim that make it worth it, really you might gain a few seconds here and there, which do accumulate but it’s the stuff that seems like magic, e.g. have you ever had to replace ' with " on a string because you wanted to write can't? <space>srq" that’s my shortcut for that, i.e. space to enter a “special mode” Surround Replace Quotes with " (srq"), and if I wanted to change from " to ' it would be <space>srq' so only the character I want to use change. Similarly I can do <leader>srb( to replace parantesis/brace/brackets with a parenthesis, heck I can even do <space>srq) to replace a quote with a parenthesis (notice I used open in the other and closed here? Open parenthesis means to add a space, closing one no space, same thing for brackets or braces). Another cool thing this plugin lets me do is ciq (Change Inside Quotes) to change all of the text inside the current/next quotes or dab (Delete Around Brackets) to delete everything inside the brackets and the brackets themselves. And all of that is just ONE plugin that extends the basic around/inside keywords in vim. There are dozens of plugins that completely revolutionize the way you move around and edit stuff. It’s hard to learn, but it’s incredibly rewarding.


  • sigh can’t believe that no one mentioned that there is a default set of shortcuts that are used across all GNU programs, and it’s been the default since way before Ctrl+C/Ctrl+V existed. You can easily copy/paste stuff in any terminal using the same keypresses you would on Emacs, I.e. Ctrl+space to start selection, Alt+W to copy and Ctrl+Y to paste. In fact you can navigate the entire line the same way, not just copy/pasting but moving back and forward, selecting and deleting stuff, e.g. Ctrl+A Ctrl+K cuts the entire line.

    Unless you activate Vi mode (which most terminals support) and then you can use the same keypresses you would on Vi, including ci" and other cool stuff that’s much more powerful that simple copy/paste.

    There is a default, it’s just not the same as word uses.




  • A single app is not necessarily a good thing, I would argue that you’re already using multiple apps on your day-to-day work, and it would be better if remote connectivity were integrated into those. For example, you mentioned a side-by-side view of two locations, this is a normal workflow on day-to-day even without remote access, sometimes you want to have your file explorer split the view in two and look at two folders simultaneously to perform operations, ideally this exact same flow should be able to connect to any remote host and show it to you seamlessly, so you can use the same flow for copying stuff from folder A to folder B regardless of the folders being in different machines.

    Unified hierarchy doesn’t make much sense for remote connections. I see why you would want to have some organization as in groups of machines, but I don’t understand what you mean by hierarchy. In any case ssh/config is a unified source of truth for this that all of the commands you mentioned (and many more) use when trying to connect remotely via ssh.

    You know the name of the tool, what’s the problem with using the tool directly? For ssh you’re going to be dropped in a terminal, so starting in a terminal should be acceptable, for VNC or RDP whatever client you use should be able to parse the ssh/config files so you’re not duplicating information, for SFTP or SCP you should be using your default file explorer as of the other machine were a different folder, there’s no need to have a separate app for it (also you should consider looking at rsync since it’s much better than naively copying files over).

    I know it’s not the same as you’re used to, but it’s one of the core differences in philosophy from Windows to Linux. The philosophy on Unix in general os for an app to do one thing, but do it well, so it’s much more common to use different apps for different stuff than having a monolithic app that does everything but nothing perfectly. That being said, the closest I know of for what you’re asking is Remmina, although I use it only for RDP since for ssh and rsync I prefer a terminal (and since I have the hosts configured I get tab completion as if they were local folders). That being said I only have a handful of machines to connect to, so I don’t need any sort of organization on them, and when I had dozens of machines to attend to I used Ansible and other stuff to perform bulk actions per group and other maintenance stuff.

    I hope Remmina works for you, or that you find something that does, unfortunately I think that might be very hard because of the philosophical differences from Linux to Windows, in general Linux users prefer that their default file manager be able to connect via ssh using the default ssh configs than a secondary ssh manager that can browse files but is neither the source of truth for ssh nor the default file manager. I know I keep using the same example, but it is very telling of the difference in philosophies (and yes, most if not all of the file explorers in Linux can in fact connect via ssh using your default configs).




  • Will my ability to play games be significantly affected compared to Windows?

    Depends on what you play. As a general rule I would say that unless you like competitive multiplayer games you’re probably going to be fine. That being said the vast majority of games don’t support Linux natively so you need to use workarounds. Steam has a workaround built-in, so if most of your gaming is through Steam it should be an almost seamless transition (all you need to do is enable a checkbook in the settings). But like I said, it depends on what you play, I recommend you check out https://www.protondb.com/ and look for the games you play to see how they run on Linux.

    Can I mod games as freely and as easily as I do on Windows?

    Same answer as before, if the game runs okay then modding it would also work okay, but if not it might worsen an already bad situation. Also be very careful here, because when you run Windows games on Steam they’re sort of sandboxed, i.e. they’re running isolated from other stuff, so installing mods is not as straightforward as it would be on windows where binaries are installed globally. It’s not a big deal, but just the other day someone was complaining that they installed a launcher needed for a game and the game wasn’t finding it and this was the reason.

    If a program has no Linux version, is it unusable, or are there workarounds?

    As a general rune there’s a workaround, it’s called WINE (which is an acronym for WINE Is Not an Emulator) which is an “emulator” for Windows (except it’s not really an Emulator as the name implies). Then there are some apps built on top of that like Proton (which is what Steam has embebed) that include other libraries and fixes to help. It’s not perfect, but unless the program is actively trying to detect it or uses very obscure features on Windows it should work.

    Can Linux run programs that rely on frameworks like .NET or other Windows-specific libraries?

    Yes, you can use WINE like mentioned above to run Windows binaries that use .NET, but also .NET core is available for Linux.

    How do OS updates work in Linux? Is there a “Linux Update” program like what Windows has?

    Oh boy, this is the big one, this is the Major difference for m Windows to Linux. Linux has a thing called a package manager, ideally everything you install gets installed via that package manager. This means that everything gets updated together. And here’s the thing, we’re not talking OS only stuff, new version of the kernel (Linux)? New version of the drivers? New version of Firefox? New version of Spotify? All gets updated together when you update your system. This is crucial to the way Linux works, since it allows Linux to have only one copy of each library. For example, if you have 5 different programs that use the same library, in Windows you’ll have 5 copies of that same library, because each program needs their own in the specific version, but in Linux since they will all update together it’s easier to have just one library that gets updated together with the programs. This makes maintaining Linux a piece of pie in comparison, just one command or one click of a button and you’re all up to date with everything you have installed.

    How does digital security work on Linux? Is it more vulnerable due to being open source? Is there integrated antivirus software, or will I have to source that myself?

    As a general rule open source programs are more secure than their counterparts. Closed source programs always remind me of Burns going through several security measures, that sort of thing is imposible in open source because if everyone can see all of the security measures, so someone would notice the gaping hole in the back, whereas in closed source only attackers might have found it. Like cyber security experts say: Security by obscurity is not security. As for Antivirus you don’t need to worry, Linux is inherently more secure than Windows, and also has a small enough user base (most of whom are security experts) so the number of virus written for Linux is extremely small. Also because you should install stuff through a package manager it’s very difficult to get someone to download a bad binary since there’s lots of security in the package manager to prevent this sort of thing. In short almost every antivirus program for Linux checks your computer for Windows viruses to avoid being used to store or transmit viruses to Windows computers, so it’s completely pointless in your home machine (it’s used for example in email servers).

    Are GPU drivers reliable on Linux?

    Yes… But actually no. It depends, if you have a relatively modern AMD GPU (as in last 10 years) the answer is a resounding YES, AMD currently has wonderful Linux support and their cards work excellently with drivers being fully open source and integrated into the Linux Kernel. For Nvidia the story is unfortunately not as nice. Essentially there are 2 drivers available, nouveau (open source driver written by the community and purposefully hampered by Nvidia) and nvidia (closed source driver written by Nvidia that has gaping incompatibilities with Linux). Since you game your only option is nvidia, while nouveau is great for several reasons it can’t match the performance of the nvidia driver. For 99% of stuff the nvidia driver should work fine, but I haven’t had good luck with getting Wayland to run on it, which means you’re probably stuck in X11 (I know this doesn’t mean much to you, but in short it means that you’re somewhat limited in your choice for graphical interface and have to use stuff that people are trying to deprecate but can’t because of Nvidia)

    Can Linux (in the case of a misconfiguration or serious failure) potentially damage hardware?

    Technically yes, so can Windows by that matter. But realistically no, unless you’re writing your own kernel drivers you won’t be in any position to cause hardware damage.

    And also, what distro might be best for me?

    I would probably go with Mint, it’s beginner friendly and I’ve been recommending it for decades. One thing to bear in mind is that in your knowledge level the distro you choose won’t make that big of a difference, try to pick something beginner friendly and you should be fine, no need to overthink this.

    PS: some extra notes that you didn’t asked but I think are good to know:

    • Any Linux can look like any other, it’s just a matter of installing the right packages
    • You should keep your / and /home in separate partitions, this makes it possible for you to reinstall (or even change distros entirely) without losing your files and configuration. This is due to how Linux manages partitions, which in short is not like on Windows where you have a C and D drives but instead any folder can be a different partition or disk.
    • You can dual boot, i.e. have 2 OS and choose which one to use every time you turn on your computer.
    • You should probably install Linux on a virtual machine first to check it out safely. And do a backup before installing it on your computer just in case you make a mistake.




  • I’ve worked with GUIs on python for a couple of years, we used PyQt, which is a python wrapper for Qt which is a C++ library for GUIs. It’s fairly straightforward and easy to get something up on the screen in no time.

    However from parts of your comment it seems you want to implement your own graphics library, and that is a lot harder to do.

    Also you mentioned legacy hardware, not sure how legacy it would be. Python should run on most things people would call legacy nowadays, but there’s definitely an overhead that could be felt if you’re trying to run this on an embebed system or a REALLY old (as in 90s/00s era) computer.

    You also mentioned mobile, I don’t think PyQt can be compiled to mobile easily, nor do I think you should even if you manage to (been there, done that, not a happy time). Desktop and Mobile GUIs are very different, realistically if you want something that works well on both mobile and desktop with the same codebase the easiest approach is web UI.


  • For backups I don’t think full disk backups are ever needed or useful. Because if the system is running there’s always a chance of corruption. Besides 90% of what’s on your system is recoverable, so you should automate that part and backup what is not recoverable, i.e. personal documents. I use Borg, check out Pika or Vorta for some GUIs for it, and I use Borgbase for my remote, but you can also backup to some folder.

    For the other two you need windows. Even if you managed to get vscode to compile and tested with wine, that’s not a guarantee that it will work on Windows. Same thing for excel, even if libre office had those features it’s not guaranteed that stuff that works there would work on excel.

    If you need windows for work you need to find a way to have windows available, trying to circumvent this would be a source of pain.




  • AMD Drivers: if your GPU is new enough (which it probably is since you’re playing Star citizen) it should be just magic here since they come together with the kernel.

    Chrome: it’s available for Linux, no need to switch. Although Firefox is very nice too.

    Gmail: not sure what you mean, Gmail is a website, those are available on any platform. If you meant a desktop email client (which honestly I have never in my life used) there’s Thunderbird.

    Office 360: Are you talking about Microsoft 365? Is that not a website too? In any case Libre office is a nice alternative to the classical Office desktop app too in case you want that.

    I-Tunes: A quick search online reveals people use wine to run the Windows version of iTunes, although I would probably consider migrating. Spotify has a native client and there are some places where you can buy music and have it locally for playback.

    JBL: not sure what this is other than a brand for speakers.

    Anti-virus: You almost assuredly don’t need an anti-virus on Linux, as long as you install software through the proper channels (i.e. using the package manager) chances of virus are so small it’s not something to worry about. Most Linux anti-virus serve to check windows binaries in the system to avoid someone using the Linux machine to send virus to Windows users.

    PyCharm: it’s available for Linux

    Remote desktop to iOS: Not sure this is possible even on Windows, I use remmina for remote desktop, it supports several ways of connecting to the other device so maybe see if it works for you.

    Star citizen: Never played it but it seems to be playable with Wine.

    Steam: While steam is available not all games are compatible, check out https://www.protondb.com/ to see the status of any specific Steam game.

    VPN: should be native on Linux, there’s a protocol caller OpenVPN which most VPN providers will give you a Config file for that you can use directly on the network applet on Linux.

    PS: Next time share the list in text, it makes it easier to reply


  • What’s your GPU? Nvidia’s you will need to use the proprietary drivers, AMD it depends on how old it is but newer ones should be good with the default driver.

    From the issues you mentioned on Ubuntu I think it’s likely you have an Nvidia since it doesn’t play completely nice with Wayland all of the time, which sucks because X11 is halfway out of the window.

    Another thing I think you probably know but just in case, you can install different Desktop Environments on the same distro, no need to change distros for that. So you could install Plasma (and yes, Plasma is KDE) or Gnome on your existing mint installation.

    Honestly I think Mint is great for beginners and if you’re happy with it there’s no reason to switch. One thing I always recommend though is keeping /home in a separate partition so you can reinstall or switch distros without deleting your data.



  • First to answer your main question if I were you I would try NixOS, because it’s declarative so it’s essentially impossible to break, i.e. if it breaks for whatever reason a fresh reinstall will get you back to exactly where you were.

    That being said, I know it’s anecdotal but I have been using Arch for (holy crap) 15 years, and I’ve never experienced an update breaking my system. I find that most of the time people complain about Arch breaking with an update they’re either not using Arch (but Manjaro, Endeavor, etc) and rely heavily on AUR which one should specifically not do, much less on Arch derivatives. The AUR is great, but there’s a reason those packages are not on the main repos, don’t use any system critical stuff from them and you should be golden. Also try to figure out why stuff broke when it did, you’ll learn a lot about what you’re doing wrong on your setup because most people would have just updated without any issues. Otherwise it really doesn’t matter which distro you choose, mangling a distro with manual installations to the point where an upgrade breaks them can be done on most of them, and going for a fully immutable one will be very annoying if you’re so interested in poking at the system.