aboutsummaryrefslogtreecommitdiffstats
path: root/crates/atuin-dotfiles/src/shell.rs (unfollow)
Commit message (Collapse)Author
5 dayschore: Remove some unused rust codeBenedikt Peetz
2025-10-23feat Add PowerShell support (#2543)Lucas Trzesniewski
This adds PowerShell support 🎉 I built this script around @lzybkr's [prototype](https://github.com/atuinsh/atuin/issues/84#issuecomment-1689168533), so I added him as co-author (I hope that's ok). I wouldn't know where to start without his contribution. I'm not a PowerShell expert, so this was a nice opportunity to learn some stuff. I think it's ok, but I would appreciate if someone more knowledgeable in the matter could review this though. It would be nice if other PowerShell users could test this with their configs and report any issues. I wouldn't be surprised if there are some remaining bugs or missing features. Fixes #84 ## Installation If you'd like to test this, you can install the `atuin` from this PR by running: ```powershell cargo install --git https://github.com/ltrzesniewski/atuin.git --branch powershell-pr ``` Then, add the following to your PowerShell profile file (whose path is in `$PROFILE`) and restart the shell: ```powershell atuin init powershell | Out-String | Invoke-Expression ``` This requires `atuin` to be in the path and the [PSReadLine](https://github.com/PowerShell/PSReadLine) module to be installed, which is the case by default. ## Tests I tested this on the following: - PowerShell 7.4.6 / PSReadLine 2.3.5 / Windows (the latest one) - PowerShell 7.5.1 / PSReadLine 2.3.6 / Windows (the latest one) - PowerShell 5.1.22621.4391 / PSReadLine 2.0.0 / Windows (the one shipped with Windows) - PowerShell 7.4.6 / PSReadLine 2.3.5 / Ubuntu WSL (strangely, it didn't behave exactly like the Windows version) - PowerShell 7.5.1 / PSReadLine 2.3.6 / Ubuntu WSL I also tested this with and without my custom [Oh My Posh](https://ohmyposh.dev/) prompt. It works fine in both cases, ~except that since my OMP config contains `"newline": true`, my prompt is multiline and shifts downwards by a single line on each `atuin search -i` invocation. This can be adjusted with the `$env:ATUIN_POWERSHELL_PROMPT_OFFSET` environment variable (e.g. I set mine to `-1` to account for the additional prompt line).~ (this variable is now auto-initialized). ## Checks - [x] I am happy for maintainers to push small adjustments to this PR, to speed up the review cycle - [x] I have checked that there are no existing pull requests for the same thing --------- Co-authored-by: Jason Shirk <jasonsh@microsoft.com>
2025-04-01fix: add redundant clones to clippy and cleanup instances of it (#2654)Frank Hamand
2025-03-19chore: migrate to rust 2024 (#2635)Ellie Huxtable
* chore: upgrade to 2024 edition * ugh unsafe * format * nixxxxxxxxxxx why
2024-05-02fix(dotfiles): allow clearing aliases, disable import (#1995)Ellie Huxtable
* fix(dotfiles): allow clearing aliases, disable import At the moment there are far too many edge cases to handle importing aliases. 1. We need an interactive shell to print aliases. Without it, most shells won't report much. 2. Many people have their shells print things on startup (graphics, fortunes, etc). This could be detected as an attempt to set an alias. Rather than spend the next year finding import edge cases, I'm disabling it for now. There's probably a better way we can do this? * clippy
2024-04-25feat(dotfiles): support syncing shell/env vars (#1977)Ellie Huxtable
There's a bunch of duplication here! I'd also like to support syncing shell "snippets", aka just bits of shell config that don't fit into the structure here. Potentially special handling for PATH too. Rather than come up with some abstraction in the beginning, which inevitably will not fit future uses, I'm duplicating code _for now_. Once all the functionality is there, I can tidy things up and sort a proper abstraction out. Something in atuin-client for map/list style synced structures would probably work best.
2024-04-22fix(dotfiles): more fish alias import (#1974)Ellie Huxtable
Serves me right for assuming fish mostly is POSIX.
2024-04-22fix(dotfiles): fish alias import (#1972)Ellie Huxtable
2024-04-22fix(dotfiles): alias import with init output (#1970)Ellie Huxtable
2024-04-18chore: move crates into crates/ dir (#1958)Ellie Huxtable
I'd like to tidy up the root a little, and it's nice to have all the rust crates in one place
2024-04-11feat(gui): add base structure (#1935)Ellie Huxtable
* initial * ui things * cargo * update, add history refresh button * history page a bit better, add initial dotfiles page * re-org layout * bye squigglies * add dotfiles ui, show aliases * add default shell detection * put stats in a little drawer, alias import changes * use new table for aliases, add alias deleting * support adding aliases * close drawer when added, no alias autocomplete * clippy, format * attempt to ensure gdk is installed ok * sudo * no linux things on mac ffs * I forgot we build for windows too... end of day * remove tauri backend from workspace
2024-04-10feat(dotfiles): add alias import (#1938)Ellie Huxtable
* feat(dotfiles): add alias import * things * clippy clappy
2024-03-04refactor: rename atuin-config to atuin-dotfiles (#1817)Ellie Huxtable
2024-02-15feat: support syncing aliases (#1721)Ellie Huxtable
* feat: support syncing aliases This is definitely not yet finished, but works for zsh right now. TODO: 1. Support other shells 2. Cache the alias generation, so we don't have to do a bunch of work at shell init time * correct imports * fix clippy errors * fix tests * add the other shells * support xonsh * add delete * update rust, then make clippy happy once more * omfg fmt too