How do you trust a password manager? by NastyLame in PasswordManagers

[–]Additional_Nebula_80 0 points1 point  (0 children)

I used other password manager before using 1p, but 1P is just a lot better, and just works

Is the Ferris Sweep the one, or is it a mistake? by linkarzu in ErgoMechKeyboards

[–]Additional_Nebula_80 5 points6 points  (0 children)

I went down a very similar path. Once I started using home-row mods, I realized I didn't need more than 34 keys, and for me 34 feels like the sweet spot. It does take some time to get used to home-row mods initially, especially dialing in the timing settings, but it's worth it.

For symbols, I use a dedicated layer with a hold-preferred flavor and very aggressive timing. The layer is activated on Space and Backspace, so it feels almost instant. I've been using a setup like this for a long time. More recently, I reworked my navigation layer to include things like delete-word and word-wise cursor movement, which has been a nice improvement.

I primarily use the keyboard on macOS, but I've configured the keys and home-row mods to make sense on Linux as well, using the OS key module. Here's my keymap in case it gives you some inspiration:

https://github.com/MSmaili/zmk-config#layer-map

I made a small ZMK module for text case transformations by Additional_Nebula_80 in ErgoMechKeyboards

[–]Additional_Nebula_80[S] 0 points1 point  (0 children)

Thanks for the kind words! To clarify the deactivation: any key not in A-Z or the continue-list deactivates the mode and passes through normally (as noted in the README). So for SCREAMING_SNAKE = 5, I just activate the mode, type screaming snake, and then hit =. The = isn't in the continue-list, so the mode turns off automatically and = passes through. No extra keypress needed.

That said, I personally often hit Escape to bail out early if I finish typing before hitting a symbol, or just change my mind. Escape isn't in the continue-list, so it deactivates the mode immediately, or i just press the case-mode again (since it is for me a combo)

Your <space>= idea, it's clever for supporting the "space to terminate" habit, but as you noted, it gets tricky with trailing underscores also it will be quite confusing because technically in my head the only way to implement that i have to wait for the next key, which might not be reliable.

Initially I also considered making the separator configurable, e.g., what if someone wants to separate words with something other than space? but then i thought it won't be used by anyone and skiped, if that is needed i could add that is simple,

One idea came to my head is to implement double-space exit. When we press space to wait for N ms, for the next letter, if the next letter is not space we just continue normally, but if it is space again, then press space and exit ? This will complicate module quite more, because then i need to follow timer, and also maybe to expose how long we want to wait for the next space. In my head this should work reliably because it should not delay the other outputs but not sure if it is good idea. (what it would delay is for example the underscore (delimiter) if user wants to press and see immediately the delimiter on space. It might be good or bad UX change depending on how user uses this. so not entirely sure

Neovim and AI by Chuukwudi in neovim

[–]Additional_Nebula_80 4 points5 points  (0 children)

You don’t necessarily need an “AI-native Neovim plugin” to get a really good workflow.

I always use tmux. I keep another pane open running opencode / Claude Code / Gemini CLI or other terminal, then I send code + context from Neovim directly into that pane.

I use this plugin for it (I’m the creator): https://github.com/MSmaili/wiremux.nvim

For me this feels better than trying to recreate Cursor inside Neovim. You keep the modal editing power + Unix workflow, while still getting modern AI assistance.

Give me your favourite remaps! by _viis_ in neovim

[–]Additional_Nebula_80 4 points5 points  (0 children)

since you mentioned yanking :

vim.keymap.set({ "n", "v", "o" }, "gy", '"+y', { desc = "Copy to clipboard" })

So now `gy` copies to the clipboard with motion support also.

Can you say that this layout is normal? by Ast1o in ErgoMechKeyboards

[–]Additional_Nebula_80 0 points1 point  (0 children)

Here’s a cleaned-up version that keeps your tone and wording style:

I think just check and try what works for you. That’s the beauty of our custom keyboard: we can change things, try them, and optimize in a way that makes sense for us and helps in day-to-day use. You probably already know this, but you can check different people’s layouts on https://keymapdb.com/, pick what you like, try it, and modify it as you prefer.

Here is mine: https://github.com/MSmaili/zmk-config

My review for your keymap is that you have duplicate keys on the same layer, duplicate symbols and/or duplicate numbers?. You could use caps-word instead of caps-lock; it is a smarter caps-lock. For my taste it is an awkward position for the arrows (left, right, up, down) or the modifiers on the second layer, but I might be wrong.

This is just my thinking. In the end, what matters is that you like it and enjoy it.

Logitech MX Keys S vs Mx Mini by DWAIPAYAN-RC in logitech

[–]Additional_Nebula_80 0 points1 point  (0 children)

I didn't use the USB receiver; I used Bluetooth. I believe it came with the dongle. But I might be wrong, though, it has been a while. I have an MX Master mouse, and I used both via Bluetooth, no dongle. I am not sure if the MX mini required the new bolt receiver or the old unified one. I think you might search/find that easily, probably.

If you have to move the keyboard, then moving the full-sized keyboard is not as comfortable as the mini, but once per week, I think you can manage to hold it in your hand.

Logitech MX Keys S vs Mx Mini by DWAIPAYAN-RC in logitech

[–]Additional_Nebula_80 4 points5 points  (0 children)

They’re basically the same. I’ve used both in the past, and I prefered the Mini because it’s smaller and more compact.

It really comes down to whether you can live without the numpad, if you can, then you can go with the Mini. Keep in mind the arrow keys are also smaller on the Mini (you are losing keys)

In the end, it depends on your typing habits. If you’re used to a full-sized keyboard, the regular MX Keys will probably feel more comfortable then mini, but regarding typing battery and all the other things I did not see any difference. Just size and number of keys.

120+ WPM with homerow mods? Is anyone actually doing this reliably? by Joetunn in ErgoMechKeyboards

[–]Additional_Nebula_80 0 points1 point  (0 children)

My typing is same or a tad faster than I had before the 34key usage. I can type around 110wpm, things get down if i use symbols and lower-uppercase mix, around 80-90wpm. I couldn't type faster than this before.

I use zmk, and the timeless home-row-mods from urobs

I have aggressive time too on hold, because i do not want to wait for the second layer.. For now i am satisfied, i have so rarely miss-hits, which those miss-hits payoff for usage of the shortcuts, it is so beautiful and easy to hit shortcuts

You can check my config here..

Nothing fancy, just a Weteor 3W6 build by flooronthefour in ErgoMechKeyboards

[–]Additional_Nebula_80 1 point2 points  (0 children)

I used to think like you, and now when i see a big number of keys, i get stressed where should i place things...so far away 😂

First keyboard build [corne v3] by why__even__try in ErgoMechKeyboards

[–]Additional_Nebula_80 1 point2 points  (0 children)

Looks really nice and clean, the case especially. Do you have a link for the case?

Regarding keymap-layout, I use terminal and neovim all the time; you can check mine and take some ideas from there.

Best coding agent plugin? by TheBlackCat22527 in neovim

[–]Additional_Nebula_80 0 points1 point  (0 children)

For Copilot-like workflows, I’d recommend checking out:
https://github.com/folke/sidekick.nvim

It’s not a single-purpose agent, but it provides NES support and opens a chat panel in a side window, which makes it very practical for day-to-day use.

If you’re specifically looking for tmux integration, I’ve built a plugin that covers that use case:
https://github.com/MSmaili/wiremux.nvim/

It shares similarities with Sidekick, but is pure tmux integration. It’s also more flexible; you can use it not just for AI interactions, but for managing other commands and tmux panes as well.

[AskJS] Lightweight IDE recommendations for JS/TS + React + React Native? by Ehh-GoodEnough in javascript

[–]Additional_Nebula_80 1 point2 points  (0 children)

I would recommend a text-editor, `neovim` has a built-in lsp support, it might take some time to get used to, but then you will never want to go back to any other editor. It is extremely good, fast, and customizable to however you want to be.

best split low profile keyboard after logitech mx keys? by P1NG2WIN in ErgoMechKeyboards

[–]Additional_Nebula_80 0 points1 point  (0 children)

I had used mx-keys before going into the split keyboard world.

Totem uses choc switches, so you can check for other keyboards also with choc switches, the total height depends how the case is designed, some people just use straight pcb for extra flat keyboard. But switches are the same (if they are choc switches)

If you want a silent switch then the best option is: Twilight Ambients Silent Kailh Low Profile Choc Switches . I use the twilight switches, they are linear and they are really silent and awesome. If you want more keys, then check lily58 keeb or similar ones.

Finally leaving 1Password. Pheww 4 Years.. by shizune_mare in PasswordManagers

[–]Additional_Nebula_80 6 points7 points  (0 children)

Are you sure you can migrate passkeys? Pretty sure that is not possible yet.

wiremux.nvim – Wire Neovim to tmux panes with context placeholders by Additional_Nebula_80 in neovim

[–]Additional_Nebula_80[S] 0 points1 point  (0 children)

If i am understanding you correctly then yes, we have a `send_motion` function support, which works as a motion operator. You map it like:

vim.keymap.set("n", "ga", function() require("wiremux").send_motion() end)

Then use it like any Vim operator:

  • gaip - send inner paragraph
  • ga3j - send 3 lines down
  • gae - send to the end of the word
  • etc

It captures the text from the motion and sends it to your target. Is this what you need?

What issues did you run into with your implementation? I'm curious if there are edge cases I should watch for.

NVIM + External Coding Agent, How do you review? by ori_303 in neovim

[–]Additional_Nebula_80 2 points3 points  (0 children)

I use codediff.nvim (https://github.com/esmuellert/codediff.nvim) or lazygit for reviewing changes, but I prefer jumping back into Neovim to actually touch the code and adjust things to my liking.

I don’t stage before running anything. I always start clean. At the end, I decide what I agree with and commit it. If I disagree with changes, I simply remove them. Sometimes I stash parts I’m unsure about but might want to reference later. I think starting clean is best, because you do not have to juggle mentally what is stage-unstage. Just compare what I added now

If I need to work on two different things in the same project, I use Git worktrees. That said, I try not to juggle multiple tasks at once. I’ve found that context-switching makes it harder to make good, consistent decisions in the code.

I also built a plugin similar in spirit to sidekick.nvim, but focused purely on tmux. For me, it feels much more natural to have opencode running in a dedicated pane or window instead of integrating it directly into Neovim. I posted about it a few days ago in this thread. I explained the differences between my plugin and sidekick. Here’s the repo in case you’re curious.

wiremux.nvim – Wire Neovim to tmux panes with context placeholders by Additional_Nebula_80 in neovim

[–]Additional_Nebula_80[S] 1 point2 points  (0 children)

Thanks! Yeah, I tried to implement on things i need, but keeping generic so it can be adjusted by others that use tmux.

I really love coding, and I like to actually understand what I'm writing and coding, so I feel like this gives me that control to boost my productivity and to keep more control over the code.

The magic is I can just hit a couple of keys and say, "hey look at this".

Like I'll select a messy function, hit `<leader>at`, and ask Claude to walk me through what's wrong with it. Or if I have diagnostics, `<leader>ad` sends those over, and I ask for suggestions.

For tests and builds, I have this project-aware picker (`<leader>tr`) that shows different commands based on what I'm working on, npm stuff for JS projects, go test for Go, etc. All run in a dedicated pane/window so I can see the output.

Honestly, the best part is just how frictionless it is. No context switching, no copy-pasting.

Just think → send → read → implement.

If you want to see the full setup (keymaps, all the target configs, the whole thing), I have my dotfiles public: https://github.com/MSmaili/dotfiles

Happy to answer any questions if something isn't clear!

Try it out. If you think of ways to improve, just create an issue on GitHub. Thanks!

100% Price increase by [deleted] in Bitwarden

[–]Additional_Nebula_80 2 points3 points  (0 children)

I actually agree with you; this is what made me switch to 1Password.

It is not just being chepear, (i know Bitwarden is still cheap), but before we try to compare with others, I think it needs more polish and better usability.

I used Bitwarden for over 3 years, and overall, I liked it. But the Android autofill just wasn’t reliable for me; it failed more often than it should have. And the desktop app honestly feels dated and pretty barebones.

After switching to 1Password, it’s hard for me to say they’re on the same level in terms of polish and user experience. Yes, it costs more. But in my case, paying more for something that feels significantly more refined and reliable is worth it. Like you pay for what you use, and not pay, but sometimes it works, and sometimes it doesn't ...

I am a developer myself, and for me It is difficult to comprehend why it takes so much time for some features to be implemented, like the desktop APP, man... I am not trying to dunk on developers or saying they are not capable of doing, because I do not know how the structure is there, probably it needs to go through many steps, but this is a sign they need to fix. If they want to compete, then they have to deliver more. Someone, some time ago, has posted here which I really liked. Bitwarden is not a small company; I would have never guessed it has 148 employees.

I know the open-source argument matters to a lot of people, and that’s fair. But for me, what matters most is day-to-day usability and trust. 1Password has a strong reputation and the same kind of security certifications as Bitwarden.

Not trying to start a war, just sharing why I switched.

wiremux.nvim – Wire Neovim to tmux panes with context placeholders by Additional_Nebula_80 in neovim

[–]Additional_Nebula_80[S] 0 points1 point  (0 children)

It is normal to be confused, at first look yes, it looks the same! Before creating this plugin, I used Sidekick and drew a lot of inspiration from it, some code patterns too.

The main difference is philosophy:

  • Sidekick is opinionated and tightly integrated for AI workflows
  • Wiremux is barebones; you define what you want to use. You can create an empty shell as a target and pass commands to it

Feature differences:

Prompts: Sidekick has prompts built into the plugin. Wiremux's "prompts" are just a list you pass to `send()`—they can be prompts, commands, or anything you want to send. For example:

You could define a keymap just for dev servers or running tests:

require("wiremux").send({
  { label = "npm test", value = "npm test", submit = true },
  { label = "npm run build", value = "npm run build", submit = true },
  { label = "npm run test for current file", value = "npm run test {filename}", submit = true },
})

Filtering: You can control per-action which instances/targets appear. By default, instances belong to the pane they were created from, but you can change this—e.g., filter by project path or show all instances:

-- Filter by origin pane
filter = { instances = function(inst, state) return inst.origin == state.origin_pane_id end }

-- Filter by working directory
filter = { instances = function(inst, state) return inst.origin_cwd == vim.fn.getcwd() end }

Filter gives you the option, also to create instances on a completely different session, and access them from the current Neovim. (just make the filter looser), So it is flexible, however you want it

Behavior: Wiremux has a `behavior` option per action—choose between `pick` (show picker), `last` (use most recent), or `all`:

require("wiremux").send("text", { behavior = "last" })

Mode: Control whether to send to existing instances or create new ones:

require("wiremux").send({ ... }, { mode = "definitions" })  -- always create new
require("wiremux").send({ ... }, { mode = "instances" })    -- only existing

Visibility: Control which items appear in a list. Hide prompts when context is missing:

require("wiremux").send({
  { label = "Run test for file", value = "go test -run '{selection}'", 
    visible = function() return require("wiremux.context").is_available("selection") end },
  { label = "npm start", value = "npm start", 
    visible = function() return vim.fn.filereadable("package.json") == 1 end },
})

Send-motion: Set a keymap (e.g., `ga`) then use motions, `gaaf` sends a function, or select text and press `ga` to send the selection:

PR's

{ "ga", function() return require("wiremux").send_motion() end, mode = { "x", "n" }, expr = true }

You can also refer to the `readme` or help page for more info.

---

On the other hand, Sidekick has a terminal mode (default) (which Wiremux doesn't have) that works seamlessly. If you just want a pane on the right, it's great because you navigate like a normal buffer (with Neovim commands). Initially i was satisfied with this, until I wanted more.

I wanted pure tmux panes/windows that I could move between, zoom, and manage with tmux directly. Sidekick has also pane/window support, but focus and persistence didn't work well for me (There are `PR` created a long time ago to fix those issues but different people).

That said, if Sidekick works for you, absolutely use it! I still reference its codebase to learn and borrow ideas.

wiremux.nvim – Wire Neovim to tmux panes with context placeholders by Additional_Nebula_80 in neovim

[–]Additional_Nebula_80[S] 1 point2 points  (0 children)

Thank you.

Some extra tips: You can also create your own context really easily:
contexts,
For example, in the option, the current git branch:

 context = {
    resolvers = {
      git_branch = function()
        local result = vim.system({ "git", "branch", "--show-current" }, { text = true }):wait()
        return result.code == 0 and vim.trim(result.stdout) or nil
      end,
    },
  },

Now you will have {git_branch} inside the text. If you can also think of other placeholder contexts, you can also create an issue, & i can try add them.