urxvt सेटिंग्स - टर्मिनल को पुनः आरंभ किए बिना पुनः लोड करें?


19

मेरे पास दो urxvtरंग थीम हैं जिनका मैं उपयोग करता हूं, एक प्रकाश की पृष्ठभूमि के लिए और एक अंधेरे के लिए, यह इस बात पर निर्भर करता है कि वातावरण कितना धूपदार है।

उन्हें संशोधित करके ~/.Xresourcesऔर xrdb ~/.Xresourcesफिर से चालू करके स्विच करना काफी आसान है , लेकिन यह उन टर्मिनलों को प्रभावित नहीं करता है जो पहले से चल रहे हैं।

मैं tmux का उपयोग करता हूं इसलिए मैं टर्मिनल को अलग कर सकता हूं, और रीटचैट कर सकता हूं, लेकिन यह बहुत जल्दी परेशान हो जाता है जब उनमें से 8 पहले से ही निर्धारित होते हैं कि मैं विभिन्न कार्य स्थलों पर कैसे चाहता हूं।

ऐसा लगता है कि समाधान, urxvt के लिए किसी भी तरह अपनी सेटिंग्स को फिर से लोड करने के लिए है, लेकिन मुझे यह कैसे करना है या यदि संभव हो तो इस बारे में कोई जानकारी नहीं मिल सकती है। क्या किसी को पता है कैसे?

नोट: मैं किसी भी प्रमुख DE को नहीं चलाता हूं और मैं केवल एक टर्मिनल के लिए सभी kde या gnome libs स्थापित करने के बारे में नहीं हूं।

संपादित करें: man 7 urxvtकुछ बेहतर करने के लिए कुछ बेहतर दिखने वाले कोड दिखाता है ... कुछ । मैं यह नहीं देखता कि यह पूरे रंग सेट में कैसे लागू होता है। कोई सुझाव?

जवाबों:


12

संयोग से, मैं के लिए विन्यास विकि खोजने के लिए हुआ mintty। इसमें बहुत सारे शानदार सुझाव हैं, जिनमें से एक यह है कि किस तरह से भागने के दृश्यों का उपयोग करके विभिन्न विकल्पों को सेट किया जाए xterm। तो यह विन्यास को फिर से न पढ़कर, बल्कि मौजूदा रंग चयन को ओवरराइड करने के लिए एस्केप सीक्वेंस की व्याख्या करके काम करता है।

हम URxvt से कमांड की लंबी श्रृंखला की कुंजी बांधकर इसका उपयोग कर सकते हैं, जिनमें से प्रत्येक 16 डिफ़ॉल्ट रंगों में से एक को बदलता है।

उदाहरण के लिए, यहां मैंने alt+ctrl+lC0C0C0 में हर रंग बदलने के लिए सेट किया है:

# 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()

क्या इस बारे में कुछ किया जा सकता है? अब तक मैंने पूरे हल्के और गहरे रंग के सेट का उपयोग करके हार्डकोड किया है (बहुत लंबे समय तक) सीक्वेंस से बचना:

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));
    }
    ()
}

build_cmd रंग स्ट्रिंग और cmd_parse () को मापदंडों के बिना निष्पादित नहीं करता है?
урослав Рахматуллин

टाइपो। मुझे ध्यान नहीं आया क्योंकि पर्ल की असीम बुद्धिमत्ता में, वापसी मूल्य $sवहाँ स्पष्ट रूप से है।
जॉन टायरी

1
कृपया हमें बताएं कि आपका प्लगइन कब काम करता है।
एरिक

4

मैंने एक पर्ल एक्सटेंशन बनाया है जो SIGUSR1 को पुनः प्राप्त करने पर urxvt कॉन्फ़िगरेशन को पुनः लोड करता है: https://github.com/regnarg/urxvt-config-reload

वर्तमान में यह केवल रंग विन्यास को पुनः लोड करने का समर्थन करता है लेकिन अन्य चीजों (जैसे फोंट) को आसानी से जोड़ा जा सकता है। बग्स को गितुब मुद्दों के रूप में रिपोर्ट करें।


यह अब फॉन्ट और ज्योमेट्री कॉन्फ़िगरेशन को भी सपोर्ट करता है! :)
पावरमैन

अच्छा! पूरे कॉन्फिग को फिर से पढ़ना वास्तव में वह नहीं है जो मैं चाहता हूं, लेकिन शायद आपने कुछ ऐसी चीजों का पता लगाया है जो मैंने नहीं की हैं। हमारी शक्तियों के साथ संयुक्त ...?
जॉन टाइरी

3

मक्खी पर रंग योजना को बदलने के लिए निम्न स्क्रिप्ट का उपयोग URxvt (या XTerm OSC से बचने के दृश्यों के साथ कोई अन्य टर्मिनल) के साथ किया जा सकता है। यह इनपुट के रूप में .Xresource- शैली की परिभाषाओं को स्वीकार करता है और पलायन अनुक्रमों को आउटपुट करता है। बस टर्मिनल में स्क्रिप्ट को चलाने और इसमें एक colorcheme चिपकाने से रंग पैलेट बदल जाएगा - जल्दी से विभिन्न योजनाओं की कोशिश करने के लिए उपयोगी।

#!/bin/sh
tr -d ' \t' | sed -n '
s/.*background:/\x1b]11;/p
s/.*foreground:/\x1b]10;/p
s/.*color\([0-9][^:]*\):/\x1b]4;\1;/p
' | tr \\n \\a

शेल पुनर्निर्देशन का भी उपयोग किया जा सकता है ~/bin/term-recolor < .Xdefaults.solarized.dark:।


0

एक बार urxvtd प्रक्रिया या एक स्टैंडअलोन urxvt के कॉन्फ़िगरेशन को एक बार पढ़ा जाता है। कॉन्फ़िगरेशन को फिर से लोड करना संभव नहीं है और कार्यक्रम के पहले से चल रहे उदाहरण में प्रभाव पड़ता है। इस नियम के अपवाद हैं, जब यह कुछ फ़ॉन्ट और स्थानीय सेटिंग्स की बात आती है।

आप अपने टर्मिनल में उपयुक्त अनुभाग तक स्क्रॉल कर सकते हैं। यहां प्रासंगिक एफएक्यू के एक जोड़े हैं

क्यू क्यों rxvt-unicode मेरे संसाधनों को नहीं पढ़ता है?

ए (छोटा) यह करता है, xrdb का उपयोग करें। आपको हर परिवर्तन के बाद फिर से लॉगिन करना होगा (या xrdb -merge $ HOME / .Xresources चलाना होगा)।

इसका मतलब है कि मेरे लिए टर्मिनल बाइनरी को फिर से लोड करना।

क्यूआई स्क्रीन रंग पसंद नहीं है। मैं उन्हें कैसे बदलूं?

A आप ~ / .Xdefaults संसाधनों (या लंबे समय के विकल्प) का उपयोग करके रन-टाइम पर स्क्रीन के रंग बदल सकते हैं।

मुझे लगता है कि इसका मतलब है "जब आप आवेदन शुरू करते हैं"।


आप एक निश्चित रंग में कुछ पाठ प्रकट कर सकते हैं, लेकिन रंगों को एक्स-रिसोर्स फ़ाइलों में परिभाषित किया जाता है और उन्हें हर बार बदलने के बाद (पुनः आरंभ करके) पढ़ना पड़ता है। मैं गलत हो सकता हूं, लेकिन मुझे नहीं लगता कि इसके शुरू होने के बाद urxvt बदलते रंग परिभाषाओं का समर्थन करता है। शायद उसके लिए एक नियंत्रण अनुक्रम है, मुझे यकीन नहीं है।

ईजी

$ cat colors-in-bash
#!/bin/bash
for code in {0..255}; do
        if [[ code%8 -eq 0 ]];then echo ;fi
        printf "%5s" `echo -n -e "\e[38;05;${code}m $code: Test"`
done

अधिक प्रासंगिक जानकारी:

http://pod.tst.eu/http://cvs.schmorp.de/rxvt-unicode/doc/rxvt.7.pod#XTerm_Operating_System_Commands

http://www.xfree86.org/current/xterm.1.html#toc19

http://en.wikipedia.org/wiki/Control_Sequence_Introducer#Sequence_elements

http://invisible-island.net/xterm/ctlseqs/ctlseqs.html


सही। और फ़ॉन्ट और रंगों के संबंध में विशेष अपवाद वह man 7 urxvtहैं जो मुझे दिलचस्पी है। मैं सिर्फ यह नहीं बता सकता कि यह कैसे काम करता है।
जॉन टायर्री

AFAIK, कलर एस्केप सीक्वेंस का उपयोग "यहां लाल आने के बाद" --red text-- "यहां सामान्य पाठ के बाद" - सफेद पर काला - इत्यादि कहने के लिए किया जाता है। लेकिन लाल और सफेद और काले रंग की परिभाषा उपलब्ध एक्स संसाधनों से ही पढ़ी जाती है जब बाइनरी शुरू होती है।
урослав Рахматуллин

मैंने इसे मिनिटेट के लिए विकी को देखते हुए पाया लेकिन एसयू ने 8 घंटे के भीतर नए लोगों को अपने सवालों के जवाब नहीं दिए। मैं वर्तमान में यह करने के लिए एक urxvt पर्ल प्लगइन लिख रहा हूँ।
जॉन टायर्री

अपने परिणामों को देखना दिलचस्प होगा।
урослав Рахматуллин

मैंने असंतोषजनक तरीके से समस्या को हल किया। गतिशील रूप से रंग फ़ाइलों को लोड करने के लिए एक अच्छा प्लगइन की शुरुआत शामिल है। मदद की सराहना की।
जॉन टायरी

0

मुझे पता है कि यह एक समय हो गया है, लेकिन मैं डिफ़ॉल्ट urxvt रंगों को सेट करने की दिशा में एक नज़र के साथ आपके पर्ल कोड को देख रहा था, जिसके आधार पर मैं जिस ssh होस्ट से जुड़ा था।

तब मैंने http:// inv अदृश्य-island.net/xterm/ctlseqs/ctlseqs.html#h2-Operating-System-Control पर OSC एस्केप सीक्वेंस परिभाषाओं को पार किया , और निम्नलिखित के साथ आया:

printf '\x1b]10;%s\a\x1b]11;%s\a' yellow blue

जहां इस मामले में "पीला" अग्रभूमि है और "नीला" पृष्ठभूमि का रंग है। रंग परिभाषाएँ XParseColor जैसे LemonChiffon या # FF4455 के लिए कोई भी स्ट्रिंग स्वीकार्य हो सकती हैं।

यह स्थायी रूप से टर्मिनल के डिफ़ॉल्ट रंगों को ओवरराइड करता है, जैसे कि टर्मिनल रीसेट नए रंगों का उपयोग करेगा। इसलिए यह सामान्य एएनएसआई से बचने के क्रम के संबंध में चिपचिपा है, जो कि वास्तव में मेरी जरूरत है। Rxvt और urxvt पर काम करता है, शायद अन्य कंसोल के साथ-साथ (OSC का उल्लेख मैन कंसोल_कोड्स में भी किया गया है)।

व्यक्तिगत ANSI रंगों को ओवरराइड करने के लिए कोड भी प्रतीत होते हैं, मैंने उन लोगों की कोशिश नहीं की है, लेकिन अगर वे काम करते हैं तो मुझे लगता है कि यह आपके कंसोल को गतिशील रूप से थीम करने का सबसे अच्छा तरीका है, आप सचमुच "कैट डार्क" या "कैट लाइट" कर सकते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.