Compare commits
6 commits
3f1840b42c
...
8987085494
| Author | SHA1 | Date | |
|---|---|---|---|
| 8987085494 | |||
| 29ae755d41 | |||
| ecd65c5e86 | |||
| 7c52c6a6d4 | |||
| 19ba9e9442 | |||
| ea5d240d83 |
3 changed files with 36 additions and 8 deletions
|
|
@ -13,8 +13,10 @@
|
||||||
enablePassthrough = true;
|
enablePassthrough = true;
|
||||||
|
|
||||||
terminalFeatures = {
|
terminalFeatures = {
|
||||||
# HTerm uses `xterm-256color` as its `$TERM`, so use that here
|
# HTerm configured to use a more accurate terminfo entry than `xterm-256color`
|
||||||
xterm-256color = { };
|
hterm-256color = { };
|
||||||
|
# Terminal app uses `xterm.js`, not HTerm
|
||||||
|
"xterm.js" = { };
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -19,8 +19,10 @@
|
||||||
enableResurrect = true;
|
enableResurrect = true;
|
||||||
|
|
||||||
terminalFeatures = {
|
terminalFeatures = {
|
||||||
# HTerm uses `xterm-256color` as its `$TERM`, so use that here
|
# HTerm configured to use a more accurate terminfo entry than `xterm-256color`
|
||||||
xterm-256color = { };
|
hterm-256color = { };
|
||||||
|
# Terminal app uses `xterm.js`, not HTerm
|
||||||
|
"xterm.js" = { };
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -6,13 +6,16 @@ let
|
||||||
(config.my.home.wm.windowManager != null)
|
(config.my.home.wm.windowManager != null)
|
||||||
];
|
];
|
||||||
|
|
||||||
mkTerminalFlags = opt: flag:
|
mkTerminalFlags = tmuxVar: opt: flag:
|
||||||
let
|
let
|
||||||
mkFlag = term: ''set -as terminal-features ",${term}:${flag}"'';
|
mkFlag = term: ''set -as ${tmuxVar} ",${term}:${flag}"'';
|
||||||
enabledTerminals = lib.filterAttrs (_: v: v.${opt}) cfg.terminalFeatures;
|
enabledTerminals = lib.filterAttrs (_: v: v.${opt}) cfg.terminalFeatures;
|
||||||
terminals = lib.attrNames enabledTerminals;
|
terminals = lib.attrNames enabledTerminals;
|
||||||
in
|
in
|
||||||
lib.concatMapStringsSep "\n" mkFlag terminals;
|
lib.concatMapStringsSep "\n" mkFlag terminals;
|
||||||
|
|
||||||
|
mkTerminalFeatures = mkTerminalFlags "terminal-features";
|
||||||
|
mkTerminalOverrides = mkTerminalFlags "terminal-overrides";
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.my.home.tmux = with lib; {
|
options.my.home.tmux = with lib; {
|
||||||
|
|
@ -28,6 +31,8 @@ in
|
||||||
hyperlinks = my.mkDisableOption "hyperlinks through OSC8";
|
hyperlinks = my.mkDisableOption "hyperlinks through OSC8";
|
||||||
|
|
||||||
trueColor = my.mkDisableOption "24-bit (RGB) color support";
|
trueColor = my.mkDisableOption "24-bit (RGB) color support";
|
||||||
|
|
||||||
|
underscoreStyle = my.mkDisableOption "underscore style/color support";
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -54,6 +59,20 @@ in
|
||||||
terminal = "tmux-256color"; # I want accurate termcap info
|
terminal = "tmux-256color"; # I want accurate termcap info
|
||||||
aggressiveResize = true; # Automatic resize when switching client size
|
aggressiveResize = true; # Automatic resize when switching client size
|
||||||
|
|
||||||
|
# FIXME
|
||||||
|
# * Sixel support
|
||||||
|
# * OSC 133 prompt integration
|
||||||
|
# FIXME: when sensible-on-top is disabled: check if any of those are unset
|
||||||
|
# * tmux bind-key $prefix_without_ctrl last-window
|
||||||
|
# *
|
||||||
|
# * tmux bind-key C-b send-prefix: included
|
||||||
|
# * aggressive resize? done
|
||||||
|
# * tmux bind-key C-p previous-window: done
|
||||||
|
# * tmux bind-key C-n next-window: done
|
||||||
|
# * C-r to refresh my config: done
|
||||||
|
# * tmux set-option -g focus-events on: done
|
||||||
|
|
||||||
|
# FIXME: make PRs for `bind-key` description
|
||||||
plugins = with pkgs.tmuxPlugins; builtins.filter (attr: attr != { }) [
|
plugins = with pkgs.tmuxPlugins; builtins.filter (attr: attr != { }) [
|
||||||
# Open high-lighted files in copy mode
|
# Open high-lighted files in copy mode
|
||||||
open
|
open
|
||||||
|
|
@ -123,9 +142,14 @@ in
|
||||||
}
|
}
|
||||||
|
|
||||||
# Force OSC8 hyperlinks for each relevant $TERM
|
# Force OSC8 hyperlinks for each relevant $TERM
|
||||||
${mkTerminalFlags "hyperlinks" "hyperlinks"}
|
${mkTerminalFeatures "hyperlinks" "hyperlinks"}
|
||||||
# Force 24-bit color for each relevant $TERM
|
# Force 24-bit color for each relevant $TERM
|
||||||
${mkTerminalFlags "trueColor" "RGB"}
|
${mkTerminalFeatures "trueColor" "RGB"}
|
||||||
|
# Force underscore style/color for each relevant $TERM
|
||||||
|
${mkTerminalFeatures "underscoreStyle" "usstyle"}
|
||||||
|
# FIXME: see https://github.com/folke/tokyonight.nvim#fix-undercurls-in-tmux for additional overrides
|
||||||
|
# ${mkTerminalOverrides "underscoreStyle" "Smulx=\\E[4::%p1%dm"}
|
||||||
|
# ${mkTerminalOverrides "underscoreStyle" "Setulc=\\E[58::2::::%p1%{65536}%/%d::%p1%{256}%/%{255}%&%d::%p1%{255}%&%d%;m"}
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue