gpakosz / .tmux

🇫🇷 Oh my tmux! My self-contained, pretty & versatile tmux configuration made with ❤️
MIT License
21.54k stars 3.33k forks source link

Plugin setup and configuration is entirely skipped #739

Closed redbeardymcgee closed 2 months ago

redbeardymcgee commented 2 months ago

From a blank slate with this repo's configuration in ~/.config/tmux/tmux.conf{,.local}, uncomment the following lines in .tmux.conf.local.

set -g @plugin 'tmux-plugins/tmux-resurrect'
set -g @plugin 'tmux-plugins/tmux-continuum'
set -g @continuum-restore 'on'

<prefix> r <prefix> I displays only

TMUX environment reloaded.

Done, press ESCAPE to continue.

The plugins are never acknowledged. Other configurations still work, such as set -g status-position top.

~/.config/tmux/plugins/tpm_log.txt does get written to, but the log is frustratingly empty.

redbeardymcgee commented 2 months ago

An excerpt from the tmux server log

1714274640.536068 free client 0x61b0ecf61a80 (0 references)
1714274640.536070 cmdq_next <global>: empty
1714274640.536072 cmdq_next </dev/pts/1>: empty
1714274640.536074 server_client_reset_state: client /dev/pts/1 mode CURSOR,WRAP
1714274640.536076 server_client_reset_state: cursor to 0,0
1714274640.536078 server_client_check_pane_buffer: pane %0 is on
1714274640.536080 @0 active pane not changed
1714274640.536513 job error 0x61b0ecf17a30: cut -c3- '/home/josh/.config/tmux/tmux.conf' | sh -s __apply_plugins '/home/josh/.config/tmux/plugins' '1' 'true' 'true' 'true', pid 488661
1714274640.536518 cmdq_next <global>: empty
1714274640.536520 cmdq_next </dev/pts/1>: empty

Looks like it's making the effort, just nothing happens.

gpakosz commented 2 months ago

Hello @redbeardymcgee 👋

What OS are you using and what's the tmux version please?

redbeardymcgee commented 2 months ago

It's under a distrobox with Fedora 40. It was midnight so I neglected to mention.

🐧 josh 09:03:02 AM 04/28/24  🏠  ✅  cat /etc/fedora-release 
Fedora release 40 (Forty)
 🐧 josh 09:03:32 AM 04/28/24  🏠  ✅  uname -a
Linux dev.rbmpc 6.8.0-76060800daily20240311-generic #202403110203~1713206908~22.04~3a62479 SMP PREEMPT_DYNAMIC Mon A x86_64 GNU/Linux
 🐧 josh 09:03:46 AM 04/28/24  🏠  ✅  tmux -V
tmux 3.4
gpakosz commented 2 months ago

Hard to say what's going on.

Can you please start the setup over? And make sure you kill all tmux processes then relaunch?

redbeardymcgee commented 2 months ago

I have restarted from scratch multiple times, it's always the same problem.

I just checked a config with nothing, and '~/.tmux/plugins/tpm/tpm' returned 127 is all I get from that now.

# List of plugins
set -g @plugin 'tmux-plugins/tpm'
# set -g @plugin 'tmux-plugins/tmux-sensible'

# Other examples:
# set -g @plugin 'github_username/plugin_name'
# set -g @plugin 'github_username/plugin_name#branch'
# set -g @plugin 'git@github.com:user/plugin'
# set -g @plugin 'git@bitbucket.com:user/plugin'

# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
run '~/.tmux/plugins/tpm/tpm'

I don't remember that being broken before so I have to investigate that I guess.

gpakosz commented 2 months ago
# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
run '~/.tmux/plugins/tpm/tpm'

This is not from Oh my tmux! though 🤷‍♂️

Please do not change the .conf file and see the .conf.local file for how to enable plugins.

Everything else is not supported.

redbeardymcgee commented 2 months ago
# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
run '~/.tmux/plugins/tpm/tpm'

This is not from Oh my tmux! though 🤷‍♂️

Please do not change the .conf file and see the .conf.local file for how to enable plugins.

Everything else is not supported.

Of course. What I was doing is checking if anything works with a base tmux to rule out any complications from OMT. I think I'm finding a problem with using ~/.config/tmux/ as the tmux config home for tpm.

redbeardymcgee commented 2 months ago
# List of plugins
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'

# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
run '~/.config/tmux/plugins/tpm/tpm'

This baseline config for tmux (removing ALL of OMT completely and using JUST this config file) at ~/.config/tmux/tmux.conf allows ~/.config/tmux/plugins/tpm/bin/install_plugins to work. Identical success from ~/.tmux.conf with ~/.tmux/plugins as the tpm home.

 🐧 josh 09:49:10 AM 04/28/24  🏠  ✅  ~/.config/tmux/plugins/tpm/bin/clean_plugins 
Removing "tmux-sensible"
  "tmux-sensible" clean success

Switching in the default config from OMT results in total failure. Uncomment these lines in ~/.tmux.conf.local:

set -g @plugin 'tmux-plugins/tmux-resurrect'
set -g @plugin 'tmux-plugins/tmux-continuum'
set -g @continuum-restore 'on'

Launching tmux shows that OMT is trying to use tpm on startup, and it reports "Done updating tpm and plugins" pretty quick.

No plugins were installed or updated. TPM just fails or exits.

 🐧 josh 10:05:07 AM 04/28/24  🏠  ✅  .tmux/plugins/tpm/bin/install_plugins 
unknown variable: TMUX_PLUGIN_MANAGER_PATH
FATAL: Tmux Plugin Manager not configured in tmux.conf
Aborting.

From within a tmux instance:

 🐧 josh 10:06:14 AM 04/28/24  🏠  ✅  .tmux/plugins/tpm/bin/install_plugins 
 🐧 josh 10:06:22 AM 04/28/24  🏠  ✅  .tmux/plugins/tpm/bin/update_plugins all
Updating all plugins!

<prefix> I just results in the original post.

gpakosz commented 2 months ago

Works for me on macOS,

Before launching tmux.

$ pwd
/Users/gpakosz/.config/tmux
$ ls
tmux.conf  tmux.conf.local
$ sha256sum tmux.conf
9658b606baacda88bae3067f59034b17bcb8bc8187b610f078cd1aa738b67464  tmux.conf
$ grep -A 1 '^set -g @plugin' -- tmux.conf.local
set -g @plugin 'tmux-plugins/tmux-resurrect'
set -g @plugin 'tmux-plugins/tmux-continuum'
set -g @continuum-restore 'on'

After launching tmux.

$ ls plugins
tmux-continuum  tmux-resurrect  tpm  tpm_log.txt
$ cat plugins/tpm_log.txt
[2024-04-28 19:58:59.780]        List of discovered tpm plugins: tmux-plugins/tmux-resurrect tmux-plugins/tmux-continuum
[2024-04-28 19:58:59.805]        Invoking /Users/gpakosz/.config/tmux/plugins/tpm/bin/install_plugins
[2024-04-28 19:59:00.155]        Installing "tmux-resurrect"
[2024-04-28 19:59:00.156]        Installing "tmux-continuum"
[2024-04-28 19:59:01.104]          "tmux-continuum" download success
[2024-04-28 19:59:01.930]          "tmux-resurrect" download success
[2024-04-28 19:59:01.957]        Done.
gpakosz commented 2 months ago

I used Vagrant to install this fedora-40 box: https://app.vagrantup.com/bento/boxes/fedora-40

After installing tmux and git, I used the same steps and I discovered that you need to install the perl-Time-HiRes package.

Can you please confirm this works for you while I figure out what to do?

redbeardymcgee commented 2 months ago

That does indeed solve the issue, allowing tpm to run successfully.

 🐧 josh 01:33:40 PM 04/28/24  🏠/.config/tmux  ✅  cat plugins/tpm_log.txt 
[2024-04-28 13:33:41.501]        List of discovered tpm plugins: tmux-plugins/tmux-resurrect tmux-plugins/tmux-continuum
[2024-04-28 13:33:41.525]        Invoking /home/josh/.config/tmux/plugins/tpm/bin/install_plugins
[2024-04-28 13:33:41.569]        Installing "tmux-resurrect"
[2024-04-28 13:33:41.570]        Installing "tmux-continuum"
[2024-04-28 13:33:42.601]          "tmux-continuum" download success
[2024-04-28 13:33:44.094]          "tmux-resurrect" download success
[2024-04-28 13:33:44.106]        Invoking /home/josh/.config/tmux/plugins/tpm/bin/update_plugins all
[2024-04-28 13:33:44.117]        Updating all plugins!
[2024-04-28 13:33:44.117]        
[2024-04-28 13:33:44.817]          "tmux-continuum" update success
[2024-04-28 13:33:44.820]            | Already up to date.
[2024-04-28 13:33:44.830]          "tmux-resurrect" update success
[2024-04-28 13:33:44.832]            | Already up to date.
[2024-04-28 13:33:44.850]        Invoking /home/josh/.config/tmux/plugins/tpm/bin/clean_plugins all
[2024-04-28 13:33:44.897]        Done.

I knew there was perl in .tmux.conf but I never suspected a dependency issue.

gpakosz commented 2 months ago

It's apparently not supposed to happen. How do you install Fedora 40?

redbeardymcgee commented 2 months ago

distrobox

I'm using the podman backend.

dev.ini

[dev]
image="registry.fedoraproject.org/fedora-toolbox:latest"
pull=true

additional_packages="emacs neovim"
additional_packages="ripgrep fd-find"
additional_packages="git libvterm libtool"
additional_packages="coreutils cmake clang-tools-extra"
additional_packages="xwininfo xdotool xclip xsel"
additional_packages="freetype-devel fontconfig-devel"
additional_packages="tmux"

Create the container: distrobox assemble create --replace --file ./dev.ini

I don't expose tmux, so it's only available within the container: distrobox enter dev -- tmux

gpakosz commented 2 months ago

The strange thing is that according to https://packages.fedoraproject.org/pkgs/perl/perl/fedora-40.html#dependencies, the perl package does depend on the perl-Time-HiRes package.

So whoever created the fedora-toolbox:latest image tried to slim it down and broke perl.

redbeardymcgee commented 2 months ago

None of the packages I installed include perl as a dependency, so perl-Time-HiRes wouldn't get installed anyway. I can add the package to the container no sweat.

What I have discovered is that /usr/bin/perl is provided by perl-interpreter package instead of the perl package. This means that on Fedora 40 (and what other versions? idk yet, do we need to know?), Oh My Tmux! has a hard dependency on perl-Time-HiRes and cannot rely on it being provided by default.

dnf install perl pulls in the perl-Time-HiRes package as expected. dnf install perl-Time-HiRes installs the necessary package without pulling 185 deps.

gpakosz commented 2 months ago

I pushed the gh-739 branch in which a message is displayed when Time::HighRes is not available.

I guess I'll just do that, because strangely enough having timestamps to the milliseconds that works in POSIX scripts and without having to install too much is not straightforward 🙃

redbeardymcgee commented 2 months ago

would date +"%T.%3N" suffice?

gpakosz commented 2 months ago

would date +"%T.%3N" suffice?

Not supported on macOS

redbeardymcgee commented 2 months ago

Yeah, that's a problem which people much smarter than me have been trying to solve for a very long time. I suppose a warning is enough. Perhaps a note in the readme would be in order.

Thanks for helping find the culprit!

redbeardymcgee commented 2 months ago

After further poking around, I have found that the package group Development Libraries will provide this package as a "weak dependency".

dnf groupinstall "Development Libraries"

Anyone reading this may also want dnf groupinstall "Development Tools".

Thanks again for your help gpakosz.