At least for GUI applications, there is currently no better IDE on Linux, or any other Unix platform available than Lazarus IDE, period. The only thing is, that IDE is for programming in Object Pascal language. But otherwise, it is superior to any other IDE in every way:
This is native Linux version of Lazarus IDE running on my Ubuntu desktop (I am using dark theme):
And this is native Windows version of Lazarus IDE running on my Ubuntu desktop on a separate workspace via wine (my dark theme isn't applied in wine):
So the EXACTLY same source code I can open in both versions of Lazarus IDE on the VERY SAME Ubuntu desktop and compile natively for Windows and Linux without any virtualization!
Then I can copy the source code onto my raspberry Pi running Ubuntu Mate, and load it into native Lazarus IDE there, to compile for ARM based Linux. Then do same on MacBook. Then on Solaris. Then on AmigaOS. You get the point.
This is an old video of me running Lazarus IDE on my raspberry pi board, and using it for controlling motor via programmable GPIO interface (desktop is Ubuntu Mate):
I even have Lazarus IDE installed inside my Ubuntu Phone (Meizu MX4) and I run it off the phone onto my desktop Ubuntu via SSH with X forwarding. So off the comfort of big screen and physicall keyboard+mouse I am using Lazarus IDE running on my phone to build GUI apps for that phone, and I have wrote blogs about it here: Lazarus development for Ubuntu Phone
This is Lazarus IDE running inside my Ubuntu Phone (Meizu MX4) in horizontal (aka Landscape) screen orientation and in the windowed mode (default mode is called staged, and each app takes up entire space of the screen, so you need to switch between them like on Android or iOS, also the Lazarus in this scenario is set for a single-window mode, which is not default, but you can do it on any platform, so also Windows, MacOS or desktop Linux):
(Above screenshots came directly from the Meizu MX4 phone)
Yes, it is a small screen, but you can still connect bluetooth keyboard/mouse over OTG and work on it. You can create apps for the phone ON THE PHONE ITSELFF! OR, if you prefer the comform of a big external screen, just SSH into the Linux device (I did that with my Meizu MX4 phone, you can do that with any other Linux device, a raspberry pi, a tablet, you name it, as long as it has Linux) with X forwarding (“ssh -X” or “ssh -Y” command) and start Lazarus IDE off the device onto your desktop screen. In such a scenario, the Linux device does not even need to have graphical interface installed, a server device can work as well, and then you can natively write, compile and run your apps:
(In the video above, the on-screen keyboard that you see is actually a soft OSK implemented directly inside of the application. Since I am executing Lazaruz IDE remotely via SSH with X forwarding, the phone’s OSK would not show up. Also, the hardware keyboard and mouse is used as input. The OSK is implemented within the app, because I was not fully happy with the phone’s native OSK at the time and I needed a customized one with some extra features, so that is why it also fires up when using Lazarus IDE on the external monitor)
Now, other than drivers and kernel modules, you can create ANYTHING with Object Pascal and Lazarus IDE. ANYTHING : apps, shared libraries (so your C-written programs can use them), CGI for web, Apache modules, webservers, middleware, backbone, daemons/services, client/server, robotics, IoT. And since installing Lazarus IDE also installs FreePascal compiler, so as a bonus you get a ObjectPascal shell interpreter, and you can write shell script like bash, just in Object Pascal (InstantFPC - Lazarus wiki)! Much faster and easier than with ANY other IDE on Linux. And as a total BONUS: you can then load your source on another OS in that OS’s native Lazarus IDE and also compile it natively for that OS. Cross-platform development without limits, and all that hassle known from other alternative approaches.
Also, debugger is great, by default GDB is used, but you can change to one of few other options, including remote debugging over ssh. And in project settings you can choose to save debugging information as a separate file, so you don’t need to switch between release and debugger mode compiling, and don’t need to strip executable before shipping either.
Note how ALL of the screenshots and even videos show Lazarus IDE on Linux, but across multiple devices and use scenarios. Even a native Windows version of Lazarus IDE is also shown running on Linux.
Bonus fact: Geany supports FPC compiler, so if you install Free Pascal, which gets installed along with Lazarus IDE (but can also be installed stand-alone) then from Geany you can open up/create source code file with .pas or .pp extension and Geany will compile/build/debug it with FPC compiler out of the box, as well as will highlight Object Pascal syntax correctly, and even will trigger contextual menus for code auto-completion and things like: jumping to declaration, jumping to declaration, auto indenting, etc. If I don’t need full blown RAD (Rapid Application Environment) experience, because I work on non-gui project, I sometimes simply use Geany with FPC compiler to code. But Lazarus IDE still allows you to create console mode applications with some extra features that Geany will not offer you.
Lazarus IDE homepage: https://www.lazarus-ide.org