সুযোগে, আমি কনফিগার উইকিটি খুঁজে পেয়েছি mintty
। এটিতে প্রচুর দুর্দান্ত পরামর্শ রয়েছে যার মধ্যে একটি হল কীভাবে পালানো সিকোয়েন্সগুলি ব্যবহার করে বিভিন্ন বিকল্প সেট করা যায় xterm
। সুতরাং এটি আবার কনফিগারেশনটি না পড়ার পরিবর্তে বিদ্যমান রং নির্বাচনগুলি ওভাররাইড করার জন্য এস্কেপ সিকোয়েন্সকে ব্যাখ্যা করে কাজ করে।
আমরা এটি ইউআরএক্সভিটি থেকে লম্বা শৃঙ্খলে একটি কীকে আবদ্ধ করে ব্যবহার করতে পারি, যার প্রতিটিই ১। টি ডিফল্ট রঙের মধ্যে একটি পরিবর্তন করে।
উদাহরণস্বরূপ, এখানে আমি alt+ctrl+l
প্রতিটি রঙ C0C0C0 এ পরিবর্তন করতে সেট করেছি:
# This stupidly changes every color to grey.
URxvt.keysym.M-C-l: command:\033]11;#C0C0C0\007\033]10;#C0C0C0\007\033]4;0;#C0C0C0\007\033]4;1;#C0C0C0\007\033]4;2;#C0C0C0\007\033]4;3;#C0C0C0\007\033]4;4;#C0C0C0\007\033]4;5;#C0C0C0\007\033]4;6;#C0C0C0\007\033]4;7;#C0C0C0\007\033]4;8;#C0C0C0\007\033]4;9;#C0C0C0\007\033]4;10;#C0C0C0\007\033]4;11;#C0C0C0\007\033]4;12;#C0C0C0\007\033]4;13;#C0C0C0\007\033]4;14;#C0C0C0\007\033]4;15;#C0C0C0\007
পার্ল প্লাগইন
আমার এটি "কাজ করা" তবে সত্যিকার অর্থে নয়, কারণ মনে হয় সংজ্ঞায়িত সংস্থানগুলির মধ্যে একটি মৌলিক পার্থক্য রয়েছে
URxvt.keysym.M-1: command:\033].......
এবং এর সাথে একই করার যে কোনও প্রচেষ্টা $term->cmd_parse()
।
এই বিষয়ে কাজ করা যেতে পারে যে কিছু আছে? এখনও অবধি আমি পুরো হালকা এবং গা dark় রঙের সেটগুলি (খুব দীর্ঘ) অব্যাহতি সিকোয়েন্সগুলি ব্যবহার করে হার্ডকড করেছি:
URxvt.keysym.M-C-l: command:\033]4;12;#72729F9FCFCF\007\033]4;1;#CCCC00000000\007\033]4;15;#EEEEEEEEECEC\007\033]4;14;#3434E2E2E2E2\007\033]4;5;#757550507B7B\007\033]4;3;#C4C4A0A00000\007\033]4;7;#D3D3D7D7CFCF\007\033]4;4;#34346565A4A4\007\033]4;10;#8A8AE2E23434\007\033]4;13;#ADAD7F7FA8A8\007\033]4;8;#555557575353\007\033]11;#FFFFFFFFFFFF\007\033]4;9;#EFEF29292929\007\033]4;2;#4E4E9A9A0606\007\033]4;0;#2E2E34343636\007\033]4;11;#FCFCE9E94F4F\007\033]10;#000000000000\007\033]4;6;#060698209A9A\007
URxvt.keysym.M-C-d: command:\033]4;12;#9090FF\007\033]4;1;#AA0000\007\033]4;15;#FFFFFF\007\033]4;14;#55FFFF\007\033]4;5;#AA00AA\007\033]4;3;#AA5500\007\033]4;7;#AAAAAA\007\033]4;10;#55FF55\007\033]4;13;#FF55FF\007\033]4;4;#0000AD\007\033]4;8;#555555\007\033]11;#000000\007\033]4;9;#FF5555\007\033]4;2;#00AA00\007\033]\007\033]4;0;#000000\007\033]4;11;#FFFF55\007\033]10;#00FF00\007\033]5;0;#00FF00\007\033]4;6;#00AAAA\007
এটি ঠিক কীভাবে কাজ করে আমি আশা করেছিলাম যে এটি রানটাইমের সময় টগল করা যেতে পারে তাই আমি উত্তর হিসাবে এটি চিহ্নিত করছি, তবে কেন পার্ল থেকে গতিশীলভাবে এটি করা যায় না? আমার এখন অবধি যা আছে তা এখানে, আমি কোনও দুর্দান্ত পার্ল কোডার নই তাই দয়া করে নিঃসন্দেহে খারাপ স্টাইলটি ক্ষমা করুন।
আশা করি কেউ সমস্যাটি কী তা জানতে পারে। এটি একটি দুর্দান্ত প্লাগইন হবে। উজানের গিথুবে রয়েছে ।
#! /usr/bin/env perl -w
# Author: John Tyree
# Website: http://github.com/johntyree/urxvt-perls/blob/master/rotate-colors
# License: CCBYNC
# Use keyboard shortcuts to load colors of the form *.colorN:XXXXXX from a file
# This gives us "on demand" theme switching.
# Usage: put the following lines in your .Xdefaults/.Xresources:
# URxvt.perl-ext-common: ...,rotate-colors
# URxvt.colorFiles: ~/.Xresources,~/light.txt,~/dark.txt
# URxvt.keysym.M-C-n: perl:rotate-colors:forward
# URxvt.keysym.M-C-p: perl:rotate-colors:backward
use strict;
sub on_start {
my ($self) = @_;
$self->{current_index} = -1;
my @arr = split(/,/, $self->x_resource('colorFiles') || '');
$self->{color_files} = \@arr;
()
}
sub read_colors {
my $fn = shift;
open my $fin, $fn or print STDERR "Unable to open $fn for reading";
my %colors;
while (my $line = <$fin>) {
if ($line =~ /(\w+)\s*:\s*(#[0-9a-fA-F]+)/) {
$colors{$1} = $2;
}
}
return %colors
}
sub escape_seq {
my ($k, $v) = @_;
my $cmd = "";
if ($k =~ /^color(\d+)$/) {
$cmd = "4;$1;$v";
} elsif ($k =~ /^colorBD$/) {
$cmd = "5;0;$v";
} elsif ($k =~ /^colorUL$/) {
$cmd = "5;1;$v";
} elsif ($k =~ /^colorBL$/) {
$cmd = "5;2;$v";
} elsif ($k =~ /^colorRV$/) {
$cmd = "5;3;$v";
} elsif ($k =~ /^foreground$/) {
$cmd = "10;$v";
} elsif ($k =~ /^background$/) {
$cmd = "11;$v";
} elsif ($k =~ /^cursorColor$/) {
$cmd = "12;$v";
} elsif ($k =~ /^pointerColor$/) {
$cmd = "13;$v";
}
return "\033]".$cmd."\007"
}
sub build_cmd {
my $fn = shift;
my %colors = read_colors($fn);
my $s = join("", map {escape_seq($_, $colors{$_})} keys %colors);
return $s # was implicit anyway
}
sub on_user_command {
my ($self, $cmd) = @_;
my @fs = @{$self->{color_files}};
my $len = @fs;
if ($cmd eq "rotate-colors:forward") {
my $idx = $self->{current_index}++;
my $fn = $fs[$idx % scalar(@fs)];
$self->cmd_parse(build_cmd($fn));
} elsif ($cmd eq "rotate-colors:backward") {
my $idx = $self->{current_index}--;
my $fn = $fs[$idx % scalar(@fs)];
$self->cmd_parse(build_cmd($fn));
}
()
}