選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

tmux.conf.pl 2.2 KiB

12年前
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. #!/usr/bin/env perl
  2. use strict;
  3. use warnings;
  4. my $tmux_command = "tmux";
  5. my @tmux_set_command = ("set", "-g");
  6. my @tmux_setw_command = ("setw", "-g");
  7. my %color_prefs = (
  8. "arch-aspireone" => "blue,white",
  9. "darwin-mba.local" => "red,white",
  10. "newkiwi" => "magenta,white"
  11. );
  12. my $color_def = "green,black";
  13. sub tmux {
  14. my @command = ($tmux_command, );
  15. push(@command, @_);
  16. # print "@command, \n";
  17. system(@command) == 0
  18. or warn "system @command failed: $?";
  19. }
  20. sub set {
  21. my @command = @tmux_set_command;
  22. push(@command, @_);
  23. tmux(@command);
  24. }
  25. sub setw {
  26. my @command = @tmux_setw_command;
  27. push(@command, @_);
  28. tmux(@command);
  29. }
  30. sub set_key {
  31. tmux("unbind", "C-b");
  32. set("prefix", "C-z");
  33. tmux("bind-key", "C-z", "send-prefix");
  34. tmux("bind-key", "c", "command-prompt", "new-window '%%'");
  35. }
  36. sub set_prefs {
  37. # this does not workd because `run' do script asyncly
  38. set("base-index", "1");
  39. set("pane-base-index", "1");
  40. set("renumber-windows", "on");
  41. setw("mode-keys", "vi");
  42. set("default-command", "/bin/bash");
  43. set("default-path", $ENV{"HOME"});
  44. set("set-titles", "on");
  45. set("display-panes-time", "5000");
  46. }
  47. sub get_hostname {
  48. my $hostname = $ENV{"HOSTNAME"};
  49. if (! $hostname) {
  50. $hostname = `hostname`;
  51. chomp($hostname)
  52. }
  53. return $hostname;
  54. }
  55. sub set_status_line {
  56. my $user = $ENV{"USER"};
  57. my $hostname = get_hostname();
  58. my $tmux_v = `tmux -V`;
  59. $tmux_v =~ s/\n//;
  60. set("status-right", "${user}\@${hostname} | ${tmux_v} ");
  61. }
  62. sub set_colors {
  63. my $hostname = get_hostname();
  64. my $color = $color_prefs{$hostname};
  65. if (! $color) {
  66. $color = $color_def;
  67. }
  68. my ($bg, $fg) = split(/,/, $color);
  69. set("status-bg", $bg);
  70. set("status-fg", $fg);
  71. set("mode-bg", $bg);
  72. set("mode-fg", $fg);
  73. set("pane-active-border-fg", $bg);
  74. set("message-bg", "white");
  75. set("message-fg", "black");
  76. setw("window-status-current-bg", "white");
  77. setw("window-status-current-fg", "black");
  78. #setw("window-status-current-attr", "bold");
  79. }
  80. sub main {
  81. set_key();
  82. set_prefs();
  83. set_status_line();
  84. set_colors();
  85. }
  86. main();