Great stuff! I had watched it before and it served as valuable inspiration to implement my own system. I watched it again and it inspired me again to simplify and streamline things. Thanks Josh!
I watched this video many time and still haven't implemented everything just yet (but working on it). Its so good!!!! ... All your videos are packed of good info. Keep up the awesome amazing 'jaw dropping' 😁work!
I have a simple pair of scripts, tm and tmx, for creating and reattaching (tmx is separate so I can have command completion via querying tmux list-sessions). By doing this I can add various shorthands as I desire them.
If you don't want to use zoxide, you can set the CDPATH variable, it's like PATH but the cd command looks at the CDPATH list to determine what to CD into and the default is your current directory. available on POSIX computers
always great stuff Josh, cheers. I likely wont need that level of session management in tmux for what I do, but the idea of combining fzf with the results list from zoxide is great and gives me some ideas.
@@JoshMedeski My problem is sometimes remembering the foldername in which case zoxide cant really help me (although to be fair zoxide can also tab completed suggestions) with a fzf or broot over folder structures I atleast get a view of names to remind me. but on mac I find that because there are SO many system directories fzf can be slow as it struggles with all those. Whats great about this idea for me is to have a fzf over an already curated list of folder names that zoxide knows I use and so it can be super fast :) I used to alias broot and zoxide to start in a specific folder to help it not having to index the entire tree each time, but this way I wont have to ;)
Great video, this is something I've been fighting with for so long! I ended up creating a custom Raycast extensions with the same functionality of the popup window since I didn't know the tmux pop-up fzf existed. This is going to be so much better. Thank you
I really like the format of the video and the way you present things. Would love to see deep dive into you neovim setup! As for the tmux I didn't quite get why would you want to have new tmux sessions created for every folder you jump in? p.s. lazygit is really cool, thanks for the tip!
My keyboard shortcuts, scripts, and some other tools typically expect the session root to be a git repository. So it allows me to be focused on a single project at a time. I can share more in a future video!
@@JoshMedeski Looks like I fixed it by adding `set -Ux FZF_DEFAULT_OPTS "--color=..."`. Anyway, I am still looking forward to see your videos, love them. Thanks
Loving the content, have implemented a bunch of your ideas into my workflow. Can I ask how you set up gitmux with tmux to show git info in the status bar? I am also using fish & alacritty.
This seems pretty damn cool! I just started using tmux recently and I keep using the tab left and right techniques which seem very inefficient (I'm too used to web browsers). But creating a session per project sounds a lot better and faster
Absolutely amazing and helpful video. Would like to know how to get t into PATH tho 😬 What font were you using in this video by the way? It's not JetBrainsMono right?
I found your tmux plugin (in a video from another user) - it works great! You should probably mention it in this video somehow, either in the description or pinned comment. I know it's the first link in your notes document, but still. Thanks for make a great tool.
I tried this but it seems to not work if there are multiple folders with the same name (in different parent folders). I have the following structure: projects > project1 > sql projects > project2 > sql projects > project3 > sql It does not allow me to create three sessions (for each of the above folders) because even though the sql folders have different parents, it always just refers to the first sql folder. Is there a way i can get it to consider the last folder as well as the folder before it to make the name unique?
@@diniomar3965 yeah, in sesh I'm hoping to offer more customizable solutions to this problem. I find that sessions with the same name are hard to tell apart.
I know I'm a bit late to the party, but I tend to just use multiple windows on the same tmux session (appearing as tabs, and then each with multiple panes as needed). Do you think it would be difficult to modify your plugin to suit that need?
So my script is specifically for session management. Feel free to borrow my ideas for creating a window or pane manager if you think it’s a good idea for your workflow!
It's built into the `tt` script github.com/joshmedeski/dotfiles/blob/main/mackup/.config/bin/tt and I have it commented to a macOS keyboard shortcut (cmd+j) using Alacritty (see th-cam.com/video/BLp61-Lq0kQ/w-d-xo.html). Hope that helps.
you have several paths that end with lazygit. what happens if you select one and then another, would you now have two tmux sessions with the same name (if that is even possible)?
Thanks! Zoxide ranks directories based off recent usage and how much a directory is used. You’ll get used to the ranking system after using it for awhile
@@JoshMedeski ok, if you use a directory name multiple times z changes to that with the most search requests. in this case you only can z to a unique upper level directory.
I notice this doesn't work for paths stored in the zoxide database that include a space. Example: PATH = "~/Documents/Cool Stuff/project" Will create a tmux session named "Cool" and won't zoxide to the folder "project". This is probably trivial enough to fix for someone who writes shell scripts on the regular, but that ain't me at the moment haha. Anyone got ideas?
@@JoshMedeski That would be great, thanks! I don't really use spaces either, only realised once I was in some iCloud folder that had "Mobile Documents" as part of the path.
Really nice video. I like the concept, been using the "tmux sessionizr" ThePrimeagen built sometime ago, which works kinda the same. Haven't heard of Zoxide yet. Just installed it and will give it a go today.
Great stuff, but I see you are using fish. It's really a small detail, but is there any reason you didn't choose to make a function for t instead of a script ?
A bash script is easily transferable to other shell environments, I’ve already had some good contributions thanks to the format and people using zsh use the script as well.
Instead of using sed to get the name of the current directory, you can just use the basename command. For example (in Bash, but it is not a bash-builtin), if I'm in my home directory: > basename $PWD travisbhartwell
@@JoshMedeski No problem! I actually have a similar set up that I use that includes integration with Alfred, iTerm integration, and opening my session picker whenever a new terminal is opened that isn't already part of a session. I think I'll try to get my stuff cleaned up and at least blog about it.
You could use `tmux new -As mysession` to either attach or create the session.
Good to know, I might use that
Guys like you is why I read comments, Thank you!
Great stuff! I had watched it before and it served as valuable inspiration to implement my own system. I watched it again and it inspired me again to simplify and streamline things. Thanks Josh!
I wanted to do something like this for a long time but didn't figure out a good way to do it, great stuff man ty.
I watched this video many time and still haven't implemented everything just yet (but working on it). Its so good!!!! ... All your videos are packed of good info. Keep up the awesome amazing 'jaw dropping' 😁work!
Just got this up and running..... life changing dude you're best
Didn't know about zoxide before. such a good tool to use. Thanks!
I have a simple pair of scripts, tm and tmx, for creating and reattaching (tmx is separate so I can have command completion via querying tmux list-sessions). By doing this I can add various shorthands as I desire them.
If you don't want to use zoxide, you can set the CDPATH variable, it's like PATH but the cd command looks at the CDPATH list to determine what to CD into and the default is your current directory. available on POSIX computers
Thanks for the tip. I really like zoxide’s algorithm for detecting directories based on frequency and recency, that’s why I use it
very good and useful video, thank you
You can simplify that sed command with using the basename command
Thanks for the tip!
Or even ${PWD##*/}
@@JoshMedeskiand you can avoid issuing a command by using (basename $PWD)
If you're using zsh, you can just do: ${PWD:t} which would grab only the tail of the path (meaning the basename)
Love your t-smart-tmux-session-manager plugin. Good stuff!!!
Always bringing us such amazing content! Thank you! Looking forward to more of your videos on Vim!
Thank you for this amazing workflow. I will definitely try this on my workflow.
You’re welcome! It makes me so productive in the terminal.
always great stuff Josh, cheers.
I likely wont need that level of session management in tmux for what I do, but the idea of combining fzf with the results list from zoxide is great and gives me some ideas.
Sweet, please share your ideas! Fzf and zoxide are both great tools on their own.
@@JoshMedeski My problem is sometimes remembering the foldername in which case zoxide cant really help me (although to be fair zoxide can also tab completed suggestions) with a fzf or broot over folder structures I atleast get a view of names to remind me. but on mac I find that because there are SO many system directories fzf can be slow as it struggles with all those. Whats great about this idea for me is to have a fzf over an already curated list of folder names that zoxide knows I use and so it can be super fast :) I used to alias broot and zoxide to start in a specific folder to help it not having to index the entire tree each time, but this way I wont have to ;)
haha now I just need to figure out how to make fzf always use the zoxide results list. haha
@@zestynotions Feel free to use my t script as inspiration.
@@JoshMedeski Yes was definitely gonna have a look there first. Thanks for sharing.
Great video, this is something I've been fighting with for so long! I ended up creating a custom Raycast extensions with the same functionality of the popup window since I didn't know the tmux pop-up fzf existed. This is going to be so much better. Thank you
I made it into a tmux plugin to make it even easier to use, check out the blog post in the description!
This is awesome, thank you so much
I really like the format of the video and the way you present things. Would love to see deep dive into you neovim setup!
As for the tmux I didn't quite get why would you want to have new tmux sessions created for every folder you jump in?
p.s. lazygit is really cool, thanks for the tip!
My keyboard shortcuts, scripts, and some other tools typically expect the session root to be a git repository. So it allows me to be focused on a single project at a time. I can share more in a future video!
Thanks for this amazing video. which theme of fish are you using?
It’s amazing how I made the same solutions as you but using a script called “Z jump around”
Cool, there are lots of smart directory jumping CLIs out there!
Really nice workflow. Will implement something similar. Perhaps instead of named sessions will use named windows. Thanks for this!
I’ve thought about applying some of the same principles to window names, maybe I’ll share some of what I’ve been doing in an upcoming video!
@@JoshMedeski That would be great!
Nice!!! Love it. What colorscheme is that?
Thank, here is what I use github.com/catppuccin/catppuccin
hi, thank you for the great plugin and great tutor. I would like fix the theme issue at 10:54 in fzf popup. Could you guide me how to fix that?
It will be an upcoming blog post and video, stay tuned in! I recommend reading the fzf documentation in the meantime.
@@JoshMedeski Looks like I fixed it by adding `set -Ux FZF_DEFAULT_OPTS "--color=..."`. Anyway, I am still looking forward to see your videos, love them. Thanks
This is definitely magnificent, well done mate!
Loving the content, have implemented a bunch of your ideas into my workflow. Can I ask how you set up gitmux with tmux to show git info in the status bar? I am also using fish & alacritty.
Thanks, here is the repo with instructions github.com/arl/gitmux
what is that popup that thows up at 11:00 -- seems to be some fuzzy file finder to open files in vim?
It’s called Telescope it’s a Neovim plugin
@@JoshMedeski and you have shell alias to open it like “nvim +GitFiles”?
This seems pretty damn cool! I just started using tmux recently and I keep using the tab left and right techniques which seem very inefficient (I'm too used to web browsers). But creating a session per project sounds a lot better and faster
Thanks, check out the plugin. It's got lots of cool new features since this video came out: github.com/joshmedeski/t-smart-tmux-session-manager
How did you manage to get rid of your window frame in MacOs?
It’s a terminal emulator called Alacritty, I’ve got a video how to set it up! th-cam.com/video/Mu4frtvHPOY/w-d-xo.html
Absolutely amazing and helpful video. Would like to know how to get t into PATH tho 😬 What font were you using in this video by the way? It's not JetBrainsMono right?
Thanks! Check out the official tmux plugin for more features and how to set it up github.com/joshmedeski/t-smart-tmux-session-manager
I found your tmux plugin (in a video from another user) - it works great! You should probably mention it in this video somehow, either in the description or pinned comment. I know it's the first link in your notes document, but still. Thanks for make a great tool.
Good idea! I mention it on the blog post but it would be good to mention it here too 🙂
What file explorer is this at 6:07? I think i should start using one
It's call "lf", check it out github.com/gokcehan/lf
I tried this but it seems to not work if there are multiple folders with the same name (in different parent folders). I have the following structure:
projects > project1 > sql
projects > project2 > sql
projects > project3 > sql
It does not allow me to create three sessions (for each of the above folders) because even though the sql folders have different parents, it always just refers to the first sql folder. Is there a way i can get it to consider the last folder as well as the folder before it to make the name unique?
Never mind - i found this in the README and it seems to solve it :)
export T_SESSION_NAME_INCLUDE_PARENT="true"
@@diniomar3965 yeah, in sesh I'm hoping to offer more customizable solutions to this problem. I find that sessions with the same name are hard to tell apart.
well done due. 👍
have you dabbled into nested tmux sessions at all?
I know I'm a bit late to the party, but I tend to just use multiple windows on the same tmux session (appearing as tabs, and then each with multiple panes as needed).
Do you think it would be difficult to modify your plugin to suit that need?
So my script is specifically for session management. Feel free to borrow my ideas for creating a window or pane manager if you think it’s a good idea for your workflow!
How did you make fzf popup like that on 13:01?
It's built into the `tt` script github.com/joshmedeski/dotfiles/blob/main/mackup/.config/bin/tt and I have it commented to a macOS keyboard shortcut (cmd+j) using Alacritty (see th-cam.com/video/BLp61-Lq0kQ/w-d-xo.html). Hope that helps.
This is amazing
you have several paths that end with lazygit. what happens if you select one and then another, would you now have two tmux sessions with the same name (if that is even possible)?
As of right now it would switch back to the existing one.
You could rename the session manually if you ever needed to open similarly named folders at the same time. But it doesn’t happen to me.
how did you open that folders browser at 6m05s ?
I use command+f to launch a file explorer called LF
great content! how does zoxide work with repeating directory structures when directory names occur multiple times?
Thanks! Zoxide ranks directories based off recent usage and how much a directory is used. You’ll get used to the ranking system after using it for awhile
@@JoshMedeski ok, if you use a directory name multiple times z changes to that with the most search requests. in this case you only can z to a unique upper level directory.
Interesting setup. Alot to chew on.
random question : is this your normal typeface or something you use specifically for presentations? Very readable.
It’s Apple’s SF font patched with Nerd icons github.com/epk/SF-Mono-Nerd-Font
Amazing config ❤
What is this file manager at 6:06?
It's called LF github.com/gokcehan/lf
@@JoshMedeski thanks a lot
Brilliant!
I notice this doesn't work for paths stored in the zoxide database that include a space.
Example:
PATH = "~/Documents/Cool Stuff/project"
Will create a tmux session named "Cool" and won't zoxide to the folder "project".
This is probably trivial enough to fix for someone who writes shell scripts on the regular, but that ain't me at the moment haha. Anyone got ideas?
I can make a fix. I don’t ever use spaces in my folder names but I realize some people do.
@@JoshMedeski That would be great, thanks!
I don't really use spaces either, only realised once I was in some iCloud folder that had "Mobile Documents" as part of the path.
Really nice video. I like the concept, been using the "tmux sessionizr" ThePrimeagen built sometime ago, which works kinda the same.
Haven't heard of Zoxide yet. Just installed it and will give it a go today.
Thank you!!! 6:07 How did you do that?
I have my file manager bound to a keyboard shortcut, see th-cam.com/video/BLp61-Lq0kQ/w-d-xo.html
I’ll be making a video on my file manager soon!
That chair looks nice. Do you recommend it?
Yeah. It’s a gamer chair from IKEA. It inexpensive and gets the job done.
@@JoshMedeski looked a lot like one of those ergonomic office chairs
tmux new-session -A -t name will automatically create the session it doesn't exist or it will attach to it.
Yes! Lots of others have shared that tip with me since making this video, thanks :)
Great stuff, but I see you are using fish. It's really a small detail, but is there any reason you didn't choose to make a function for t instead of a script ?
A bash script is easily transferable to other shell environments, I’ve already had some good contributions thanks to the format and people using zsh use the script as well.
Which snippet expansion do you use?
What you’re seeing in this video is the fish shell’s built in abbreviation feature
@@JoshMedeski oh ok thanks for clarifying. I thought of some kind of snippet plugin you use.
By the way the video is very good. I forgot to appreciate.
How did u made your terminal like that?
I've got a free online guide for how to set up the terminal like mine, check it out!
www.joshmedeski.com/guides/dev-workflow-intro
I will check it out, thank u so much!!@@JoshMedeski
Why your window look like that ?
I’m using Alacritty with the borderless configuration
Do you have the source code ?
Yes, check the video description. It’s since been turned into an official tmux plugin with more features!
lol "final solution" @ 0:29 but good video bro
nice scripts,
the scripts are no longer avaliable in your dotfiles repo,
can you please share the new location in the video description?
I’ve turned it into an official tmux plugin! github.com/joshmedeski/t-smart-tmux-session-manager
Can't make it work on ubuntu
Bummer, can you be more specific? Is it my custom script? I'm happy to take a look at it.
@@JoshMedeski I'm sorry, seems that it started working after reloading my machine 😅
great stuff btw
fish shell
alacrity? but it cant ssh
What do you mean? This workflow isn’t related to ssh but the ssh command works fine in Alacritty when I need it
great idea, that tmux session handling automation script! copying..
linux users try getting audio right: impossible difficulty
Instead of using sed to get the name of the current directory, you can just use the basename command. For example (in Bash, but it is not a bash-builtin), if I'm in my home directory:
> basename $PWD
travisbhartwell
I see that in your tt script you share later in the video you do use basename, so ignore me. :)
Thanks for the tip. I learned about basename after publishing the video 😄
@@JoshMedeski No problem! I actually have a similar set up that I use that includes integration with Alfred, iTerm integration, and opening my session picker whenever a new terminal is opened that isn't already part of a session. I think I'll try to get my stuff cleaned up and at least blog about it.
@@TravisBHartwell awesome, feel free to share it!
Alternative alias for new session:
tn='tmux new -s ${PWD##*/}'
Thanks for this amazing video. which theme of fish are you using?