Programming Setup what Tools do you use daily?

Moved answers from a spam topic:

I’m not sure what you’d qualify in this category, so I’ll just list what comes to mind.

OS: Linux, artix with dinit if you care
Window manager: Niri, a tiling wm with infinite horizontal space.
Terminal: wezterm, (built in multiplexing, and very customisable)
Shell: fish, nothing special, the syntax is less arcane than bash/zsh
Editor: helix, with a kakoune key map. Sometimes I use kakoune.

Helix comes preconfigures for a lot of languages, so you usually only need to install the tooling, and it works immediately.

Something I have yet to do is set up nix or guile or something so I can keep projects with system dependencies self-contained, currently I lazily just install things system-wide.

5 Likes

Personnaly, I used to be on Zed, then recently switched to nvim. My config is really lightweight, only lsp and stuff but I need no more for my projects.

I’m on hyprland as well for the tiling side. Used to be on dwm but I wanted to try wayland. Of course, I use ghostty :wink:

1 Like

When I hop around projects, that have different dependencies, that I don’t want installed on my system or need different versions for stuff I have already installed, I really like to use Spack.

You just clone the repo, source the environment and are ready to go. It compiles everything from scratch, which can of course be a burden, but you can also define it to use your installed system libraries. I find this a much better solution than doing things inside of containers. You can also easily switch between compilers or different MPI versions or whatever.

The workflow for me is then just cd project_dir and . env.sh. Inside env.sh I then just have a line like this . spack/share/spack/setup-env.sh. A nice thing is that you can also do project specific configurations inside the env.sh file, like adding things to PATH or setting other environment variables.

Bonus tip: add env.sh or whatever you call it to your global ~/.config/git/ignore if you have teammates that don’t do this. Or push it into the repo for easy reproducability.

I do most of my programming on a work laptop unfortunately, so I’m on Windows more often than not, although I have openSUSE Tumbleweed on WSL for some stuff. I also used Zed, mainly because it does some things a bit quicker than VSCode, but also because it doesn’t need a whole lot of configuration from my experience (except for some LaTeX stuff for school, that was sorta annoying, but LaTeX on Windows is just annoying. I really should just use WSL for that :thinking:) I don’t really want any of the AI integration that Zed has though, so I’ve been passively looking for alternatives - configuring nvim for long enough just made me think I should just use a dedicated code editor rather than slapping a bunch of stuff on top of it. And I kinda like having a gui program for text editing. All said though, I’ve been happy with Zed, and also use it on my desktop (Arch, riverwm, ghostty) when I have the chance to do programming from home.

2 Likes

A basic kakoune setup (auto format on save, no lsp) and dwm. Using this setup for years and worked wonders for me.

Void Linux with niri wm. Helix as editor, because it dont need much config and has lsp support ootb. Only supported by some custom bash scripts for recurring tasks and some TUIs (self-written and 3rd party) since I like a terminal first approach. Zsh as shell. And thats it. I tried many GUI editors, as well as nvim and emacs. But all too much config setup. For me, keep it simple is a great way (though, lsp support is really helpful).

1 Like
                  -`                     ****@arch
                 .o+`                    ---------
                `ooo/                    OS: Arch Linux x86_64
               `+oooo:                   Host: Victus by HP Gaming Laptop 15-fb2xxx
              `+oooooo:                  Kernel: Linux 6.19.11-zen1-1-zen
              -+oooooo+:                 Uptime: 3 days, 18 hours, 12 mins
            `/:-:++oooo+:
           `/++++/+++++++:               WM: Hyprland 0.54.3 (Wayland)
          `/++++++++++++++:              Terminal: ghostty 1.3.1-arch1
         `/+++ooooooooooooo/`            Shell: zsh 5.9
        ./ooosssso++osssssso+`           Packages: 1288 (pacman)
       .oossssso-````/ossssss+`
      -osssssso.      :ssssssso.         CPU: AMD Ryzen 5 8645HS (12) @ 5.02 GHz
     :osssssss/        osssso+++.        GPU: NVIDIA GeForce RTX 4050 Max-Q / Mobile [Discrete]
    /ossssssss/        +ssssooo/-        GPU: AMD Radeon 760M Graphics [Integrated]
  `/ossssso+/:-        -:/+osssso+-      Memory: 7.86 GiB / 30.60 GiB (26%)
 `+sso+:-`                 `.-/+oso:     Disk (/): 669.94 GiB / 952.87 GiB (70%) - btrfs
`++:.                           `-/+/    Display (AUOF7AD): 1920x1080 in 15", 144 Hz [Built-in]
.`                                 `/

I use Neovim for all of my programming needs, with a configuration based on LazyVim. As others have noted and I assume is fairly common nowadays, most all of my applications and workflow are terminal-based, so I use rmpc for music, yazi for file manager, etc. My browser (Brave) is the only GUI application that I use on a regular basis.

1 Like

OS: Linux, EndeavourOS
Window manager: xfce4
Terminal: xfce-terminal
Shell: bash
Editor: vim or neovim+lazyvim

1 Like

OS: debian linux + wayland + gnome + flathub (moved from macOS and Windows)
Browser: firefox
Terminal: ghostty (moved from kitty)
Shell: fish
Editor: helix (moved from vscode)

2 Likes

OS: Asahi Linux - FC42
IDE: Kate - LSP disabled (it got annoying)
Editor: KWrite
SCM: Fossil
Terminal: Konsole with bash
Dolphin file manager (wow, how did I ever manage with Finder)
IceCat browser, Claws email

Not sure how to check wm, I’m new to GUI linux, but this feels like my best dev. machine since Amiga with a hard disc and DevPac :slight_smile:

Zed+zsh on macos. I use mise+just for all my projects, including zig stuff. I use a dedicated mini pc w/ ubuntu for llms, mostly codex.

OS: Arch linux, though considering removing systemD, os potentially moving to Artix.
Window Manager: SwayFX
Terminal: Ghostty + tmux
Shell: fish
Editor: nvim
Debugging: LLDB
Note taking: Obsidian

CLI Tools! (didn't want to crowd the topic)
Tool Description
Zoxide Navigating directories has never been so easy
FuzzyFinder (fzf) an absolute must have for finding files
entr Runs a command when a file changes. Great for automatically building and testing files on save
tail Using the -f flag allows me to print error and debug logs to a separate terminal window using a pipe and a separate file
bat cat with more formatting and colour options
trash Safer than rm
Nvim Plugins!

I’m leaving out asthetic plugins and including only practical ones.

Plugin Description
tree-sitter Better highlighting, folds, indentations and so much more
telescope + fzf Search for files with fzf, grep files, navigate your project at the touch of a button.
Mason + lsp-setup Easily install and set up LSPs
blink.cmp LSP, snippet, and in-document autocomplete
LuaSnip Powerful lua based snippets
vim-obsession Session managment
oil Edit directories as if they were text files in nvim
cheatsheet.nvim Searchable cheat sheet from within nvim. You can also add a file where you can add your own cheat sheet commands for plugins, or your own bespoke key bindings.

OS: Arch Linux
Window manager: Hyprland
Terminal: Kitty (considering Ghostty)
Shell: Fish
Editor: Neovim (currently using LazyVim, but it’s too heavy. I want to finallly create my own config)
Note taking: Obsidian
Misc: Yazi, Tmux
I like my setup a lot :slight_smile:

1 Like

I use omarchy.
The best way to describe it is ā€œdone for youā€ arch with hyprland.
It comes in with ghostty, neovim with lazyvim config. The OS even has a built-in way to install zig.
My only ā€œnon stockā€ change from that is I use zen browser instead of chromium and some many minor key binding changes. I also have zig fmt disabled (I really hate that thing).
Other than that, you get pretty much a great setup out of the box without having to do any configuration yourself (Which is something I didn’t want to invest time in doing), I highly recommend it.

I use ubuntu latest always, because I only care about having something that works reliably, and ubuntu is sort of the de facto, not the greatest, but simple, reliable, always gets the most support.

For the editor I use Helix, I don’t recommend it, it’s too good, and you get stuck in it (at least the motions are the best, and the multi-cursor is just worse than crack)

For the terminal I use Ghostty, because it’s easy to compile, and the split plus font-size per split is just godsend, so useful and versatile, on top of being fast enough, and reliable.

For the cli tools, I use btop, yazi, fzf, ripgrep, topgrade, jq, stow, sshfs, croc, ffmpeg, brew, uv, zigup, cloc, lldb, curl, dust, nvtop, vllm, lms, opencode + nemotron-3-super (because I have an RTX A6000 at work :)) or codex at home, python pretty regularly

For the shell i use fish, for the web browser i use firefox.

Overall my setup is pretty terminal centric, I’m trying to switch to Zed because they have the best Helix mode that I have seen, but It’s taking me time, because I feel handicaped when the muscle memory try to kicks in, and their documentation for keyboard configuration is not great, and I always hate json to configure shit, I prefer toml.

2 Likes

Os: NixOs
Terminal: Ghostty
Shell: Fish
Editor: Neovim with custom config
Window manager: MangoWM ← Check it out it’s awesome
Windows ā€œenvironementā€ bars menu etc: QuickShell custom config
Note taking: Vim wiki
File explorer: Yazi
I also enjoy a Kinesys 360 :smile:

2 Likes

I must admit, based on your profile-picture, NixOs was not what I expected. :laughing:

4 Likes

OS: Arch and Windows. I have to use Windows every so often because I’m currently building an data editor for a close source sound engine (Wwise, similar to FMOD, used by good amount of games) whose authoring tool is only available in Windows (no luck of emulating through Wine). I’m using it to reverse engineer the custom binary output generated from the authoring tool and verify my implementation.

Window manager: patched dwm on Arch, komorebi on Windows.

Terminal: kitty on Arch, wezterm on Windows.

Shell: zsh

Editor: nvim with custom config

1 Like
  • OS: Alpine linux on laptop(it is awesome)
    • on PC OpenBSD
  • Terminal: st
  • Shell: ash
    • on PC ksh
  • Editor: * lite–xl (without lsp and with ripgrep to navigate zig std)
    • for editing single files: micro
  • WM: dwm, dwmblocks, dmenu
  • file navigating: * zoxide
  • vc: git/darcs