एक खिड़की के लिए एक रंग उलटा प्रभाव को कैसे ट्रिगर किया जाए?


21

मैं एक उलटा रंग प्रभाव (प्रकाश से अंधेरा) करना चाहता हूं जैसे कि 'कंपोज़' में 'नेगेटिव' है, लेकिन बिना कंपाइज़ के, और केवल एक विंडो के लिए (जैसे कंपिज़ Super+ N)।

वहाँ एक समान प्रभाव प्राप्त करने के लिए एक तरीका है (एक कुंजी कॉम्बो द्वारा अधिमानतः) बिना compiz? मैं पूरे डेस्कटॉप के लिए रंगों को उल्टा कर सकता हूं xcalib -I -a, लेकिन मैं इसे एक सिंगल विंडो तक सीमित नहीं रख सकता।


हो सकता है कि इस पोस्ट से संबंधित हों: unix.stackexchange.com/questions/20565/…
Sheljohn

मैं compiz खिड़की प्रबंधक से नकारात्मक खिड़की विकल्प का उपयोग किया गया है और यह बहुत अच्छी तरह से भी काम करता है।
आँकड़े-एचबी

जवाबों:


21

जहाँ तक मुझे पता है ... उस लक्ष्य को हासिल करने के लिए, आपको एक विंडो कम्पोज़िटर की मदद की आवश्यकता होगी ।
आप कॉम्पटन की तरह हल्के स्टैंडअलोन कंपोजिटर को स्थापित करने का प्रयास कर सकते हैं ।

कॉम्पटन

कॉम्पटन एक्स के लिए एक हल्का संयोजक है, और xcompmgr-dana का कांटा है।

मैन पेज के अनुसार, कॉम्पटन में एक विंडो में रंगों को पलटने का एक विकल्प है।

उदाहरण के लिए:

compton --invert-color-include <CONDITION>

स्थिति एक विंडो के WM_CLASS हो सकती है , "WM_CLASS" को खोजने के लिए एक विंडो में आप कमांड xrrop चला सकते हैं

  • xprop | grep WM_CLASS

तब कर्सर एक "क्रॉस" होगा और आप WM_CLASS को खोजने के लिए अपनी इच्छित विंडो में क्लिक कर सकते हैं।

अब आपके पास कुछ ऐसा होना चाहिए:

WM_CLASS (STRING) = "लीफपैड", "लीफपैड"

यहां छवि विवरण दर्ज करें

दूसरी स्ट्रिंग WM_CLASS "लीफपैड" होनी चाहिए ।
इसलिए, लीफपैड संपादक के रंगों को पलटने के लिए आपको चलना चाहिए:

  • compton --invert-color-include 'class_g="Leafpad"'

कुछ मामलों में, आप किसी प्रोग्राम की केवल कुछ विंडो को उलटना चाह सकते हैं (जैसे कि संपादक विंडो को पलटना, लेकिन "फाइल को सेव करना" नहीं)।
उसके लिए आप पहले दो WM_CLASSतार (जिसे "उदाहरण" भी कहा जाता है) का उपयोग कर सकते हैं :

  • compton --invert-color-include '(class_g="Leafpad" && class_i="leafpad")'

आपको हर समय कॉम्पटन को चलाने की आवश्यकता नहीं है, आप इसे तब चला सकते हैं जब आपको किसी विंडो के रंगों को पलटने की आवश्यकता होती है।


नोट: इस उदाहरण में मैं ल्यूबंटू 13.04 को विंडो मैनेजर के रूप में ओपनबॉक्स के साथ चला रहा हूं लेकिन डिफ़ॉल्ट रूप से कंपोजिटर के बिना।


कॉम्पटन को स्थापित करने के लिए

इस कंपोजिटर के पास खुद का PPA है

1) कॉम्पटन स्थापित करने के लिए एक टर्मिनल खोलें और टाइप करें:

  • sudo add-apt-repository ppa:richardgv/compton
  • sudo apt-get update && sudo apt-get install compton

इस उदाहरण में मैं सक्रिय विंडो का पता लगाने और उसके रंगों को उलटने के लिए एक बुनियादी बैश स्क्रिप्ट (मैं स्क्रिप्ट का विशेषज्ञ नहीं हूं) बनाऊंगा।

2) स्क्रिप्ट बनाएं।

  • sudo apt-get install xdotool
  • mkdir ~/Scripts
  • nano ~/Scripts/invert.sh

स्क्रिप्ट की सामग्री:

#! /bin/bash

if [ "$(pidof compton)" ];
    then
            pkill compton
    else

        ID=$(xdotool getactivewindow)
        CLASS=$(xprop -id "$ID"  | grep "WM_CLASS" | awk '{print $4}')
        COND="class_g=${CLASS}"
        compton --invert-color-include "$COND" &
fi
exit

मूल रूप से स्क्रिप्ट की जांच होगी यदि कॉम्पटन चल रहा है, अगर यह नहीं चल रहा है तो xdotool सक्रिय विंडो की विंडो आईडी ढूंढेगा, आईडी xprop के साथ WM_CLASS मिलेगा, फिर WM_CLASS के साथ यह स्थिति पैदा करेगा और अंत में कॉम्पटन के साथ चलेगा तर्क के रूप में शर्त।

स्क्रिप्ट को निष्पादन योग्य बनाएं।

  • chmod +x ~/Scripts/invert.sh

मेरे मामले में मैं "उल्टे रंग" नाम के साथ / usr / bin / निर्देशिका के लिए एक नरम लिंक बनाऊंगा

  • sudo ln -s ~/Scripts/invert.sh /usr/bin/invert-color

3) एक कीबोर्ड शॉर्टकट बनाएं
जैसे: Ctrl+ Alt+ U (लुबंटू में आपको lubuntu-rc.xml फ़ाइल को संपादित करना चाहिए)

  • leafpad ~/.config/openbox/lubuntu-rc.xml

निम्नलिखित पंक्तियाँ जोड़ें:

<!-- Launch invert-color activewindow on Ctrl + Alt + U-->
<keybind key="C-A-U">
  <action name="Execute">
    <command>invert-color</command>
  </action>
</keybind>

अंत में आप कीबोर्ड शॉर्टकट में बदलाव देखने के लिए लॉगआउट और लॉगिन कर सकते हैं।


मेरा इरादा तब है जब मुझे सक्रिय विंडो में रंगों को उलटने की ज़रूरत है मैं इसे शॉर्टकट Ctrl+ के साथ कर सकता हूंAlt + केU । अगर मैं सामान्य रंगों में वापस जाना चाहता हूं तो मैं फिर से शॉर्टकट दबाऊंगा और स्क्रिप्ट का पता चलेगा कि कॉम्पटन चल रहा है इसलिए pkill कमांड प्रक्रिया कॉम्पटन को मार देगा।
तो इस तरह से मैं केवल कंपोजिटर को चलाऊंगा जब मुझे इसकी आवश्यकता होगी।

यहाँ आपके पास कुछ स्क्रीनशॉट हैं:

यहां छवि विवरण दर्ज करें

यहां छवि विवरण दर्ज करें

यहां छवि विवरण दर्ज करें

यहां छवि विवरण दर्ज करें

आशा करता हूँ की ये काम करेगा।


इस काम को करने का कोई तरीका अगर कोई विंडो फुल स्क्रीन है? विभिन्न कार्यस्थानों के बीच स्विच करते समय यह वांछनीय हो सकता है।
टूथरोट

@Toothrot पहले से ही मेरे सिस्टम पर विज्ञापन के रूप में काम करता है (i3wm का उपयोग करता है और उत्तर से सटीक स्क्रिप्ट)
se

2

एक गनोम शेल एक्सटेंशन "इनवर्ट विंडो कलर" बिना किसी परेशानी के ऐसा करता है। यहाँ लिंक है

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