কীভাবে উইন্ডোটিকে পয়েন্টার-ফোবিচ করা যায়?


15

আমি বোঝাতে চাইছি যখনই আমি উইন্ডোটির উপরে পয়েন্টারটি সরানোর চেষ্টা করব তখন উইন্ডোটি প্রায় চলতে হবে। আমার কাছে একটি "অ্যানালগ ক্লক স্ক্রিনলেট" এবং "ফাইল অগ্রগতি ডায়ালগ বাক্স" রয়েছে যা আমি সিসিএসএম সহ অন্যান্য উইন্ডোজের "সর্বদা উপরে" থাকার জন্য টুইট করেছি তবে কখনও কখনও তারা জিনিসগুলি করার পথে চলে যায়।

যদি এটি সম্ভব না হয় তবে এমন কোনও পদ্ধতি আছে যাতে আমি যখন তাদের উপর পয়েন্টার সরিয়ে রাখি তখন তারা লুকিয়ে রাখে যাতে আমি সরাসরি নীচে অ্যাপ্লিকেশনটিতে ক্লিক করতে পারি?

আরও যদি তা সম্ভব না হয় তবে আমরা কী উইন্ডোগুলিকে সেগুলি না করে এমন আচরণ করতে পারি? মানে আমি উইন্ডোটি দেখতে পাব তবে পয়েন্টারটিকে এটি স্বীকৃতি দেওয়া উচিত নয় এবং নীচের অ্যাপ্লিকেশনটিতে স্বাভাবিকভাবে কাজ করা উচিত। আমি অ্যাপ্লিকেশনগুলির স্বচ্ছতা পরিবর্তন করব এবং এটি সম্ভব হলে এটি কাজ করব?


2
আপনি চান যে কিছু উইন্ডো সর্বদা প্রদর্শিত হয় তবে তাদের নীচে থাকা অন্যান্য উইন্ডোগুলির সাথেও কথোপকথনের অনুমতি দেওয়া উচিত?
আনোয়ার

হ্যাঁ ঠিক, আমি যখন সেই উইন্ডোটিতে পয়েন্টারটি সরিয়ে রাখি তখন আমি সেই সাথে (যেমন, "সর্বদা উপরে" সক্ষম ") উইন্ডোটির সাথে" ডায়ালগ বক্স কপি করুন "উইন্ডোটির (এমনকি সেই উইন্ডোতে ফোকাসও করি না) সাথে যোগাযোগ করতে চাই না I আমি কেবল ইন্টারেক্ট করতে চাই এর নীচে উইন্ডোটি রেখে দিন। মূল উইন্ডোটি (যা উপরে রয়েছে) ওয়াটারমার্কের মতো কাজ করা উচিত (আপনি ধারণাটি পেয়েছেন?) বা আমি যখন পয়েন্টারটি সরিয়ে নিই তখন সরে যেতে হবে।
হেমন্ত যাদব

1
এটি একটি অস্বাভাবিক অনুরোধ হিসাবে, আমি মনে করি না যে কেউ এটি করেছে। তবে এটি অবশ্যই সম্ভব, আপনি যে উইন্ডো ম্যানেজারটি ব্যবহার করেন তার জন্য আপনাকে একটি এক্সটেনশন লিখতে হবে (কমিজ, আমার ধারণা) । বিকল্পভাবে, আপনি কি এই উইন্ডোগুলিকে একটি পৃথক ডেস্কটপে রেখেছেন এবং সেটআপ কীগুলি যাতে "সুপার + কিছু_সংখ্যক" দিয়ে আপনি ডেস্কটপগুলির মধ্যে স্যুইচ করতে পারেন তা বিবেচনা করেছেন। একসাথে একগুচ্ছ উইন্ডো খোলা রাখার জন্য এটি খুব আরামদায়ক।
হাই-এঞ্জেল

1
জিনোম শেল এক্সটেনশান "ওয়ার্কস্পেস টু ডক" এর ডকগুলির জন্য উইন্ডোজ ডজ করার বিকল্প রয়েছে। এটি ঠিক যা বলা হয়েছিল তা নয়, তবে কীভাবে এটি অর্জন করবেন সে সম্পর্কে ধারণা পেতে আপনি সেখানে তাকিয়ে থাকতে পারেন: github.com/passingthru67/workspaces-to- ডক
স্যামুয়েল

সুপারভাইজারের অনুরূপ প্রশ্নটি একবার দেখুন । কেউ সুপারিশ করেছেন যে কম্পিজ প্লাগইনটির একটি বৈশিষ্ট্য রয়েছে "अस्पष्टতা, উজ্জ্বলতা এবং স্যাচুরেশন" যা 50% এরও কম অপেক্ষাকৃত ক্লিক-থ্রোব্যাবলযুক্ত অবজেক্টগুলিকে তৈরি করে ...
জান স্টাভল

উত্তর:


2

বাশ স্ক্রিপ্ট এবং এক্সডটুল == ক্রেসোফোবিয়া.শ

ওভারভিউ
আমার মনে হয় আমার কাছে একটি সমাধান রয়েছে যা আপনার পক্ষে কার্যকর হবে। এটি বাশ স্ক্রিপ্ট যা আপনাকে উইন্ডো নির্বাচন করতে দেয়। একবার একটি উইন্ডো নির্বাচন করা গেলে, স্ক্রিপ্টটি ধারাবাহিকভাবে পূর্বনির্ধারিত বিরতিগুলিতে উইন্ডো এবং কার্সার অবস্থানের পোল করে। যদি কার্সারটি খুব কাছাকাছি হয়ে যায়, উইন্ডোটি পথ থেকে সরে যায়।

নির্ভরতা
এই স্ক্রিপ্টটি উপর নির্ভর করে xdotool। ইনস্টল করতে, চালানsudo apt-get install xdotool

স্ক্রিপ্ট: ক্রেসোফোবিয়া.শ
নীচের বিষয়বস্তুগুলির সাথে একটি নতুন ব্যাশ স্ক্রিপ্ট তৈরি করুন এবং এটি সম্পাদনযোগ্য করুন।

#!/bin/bash

windowSelectionDelay=5  # How long to wait for user to select a window?
buffer=10               # How close do we need to be to border to get scared?
jump=20                 # How far do we jump away from pointer when scared?
poll=.25                # How often in seconds should we poll window and mouse?
                        # locations. Increasing poll should lighten CPU load.

# ask user which window to make phobic
for s in $(seq 0 $((windowSelectionDelay - 1)))
do
    clear
    echo "Activate the window that you want to be cursophobic: $((windowSelectionDelay - s))"  
    sleep 1
done
wID=$(xdotool getactivewindow)

# find some boundary info and adjustments
# determine where the window is now
info=$(xdotool getwindowgeometry $wID)
base=$(grep -oP "[\d]+,[\d]+" <<< "$info")

# move the window to 0 0 and get real location
xdotool windowmove $wID 0 0
info=$(xdotool getwindowgeometry $wID)
realMins=$(grep -oP "[\d]+,[\d]+" <<< "$info")
xMin=$(cut -f1 -d, <<< "$realMins")
yMin=$(cut -f2 -d, <<< "$realMins")

# find offset values for no movement. This is necessary because moving 0,0
# relative to the current position sometimes actually moves the window
xdotool windowmove --relative $wID 0 0
info=$(xdotool getwindowgeometry $wID)
diff=$(grep -oP "[\d]+,[\d]+" <<< "$info")
xOffset=$[xMin - $(cut -f1 -d, <<< "$diff")]
yOffset=$[yMin- $(cut -f2 -d, <<< "$diff")]

# move window back to original location
x=$(cut -f1 -d, <<< "$base")
y=$(cut -f2 -d, <<< "$base")
xdotool windowmove $wID $[x + xOffset] $[y + yOffset]

dispSize=$(xdotool getdisplaygeometry)
xMax=$(cut -f1 -d ' ' <<< "$dispSize")
yMax=$(cut -f2 -d ' ' <<< "$dispSize")

clear
echo "You can minimize this window, but don't close it, or your window will overcome its cursophobia"
# start an infinite loop polling to see if we need to move the window.
while :
do
    # get information about where the window is
    info=$(xdotool getwindowgeometry $wID)
    position=$(grep -oP "[\d]+,[\d]+" <<< "$info")
    geometry=$(grep -oP "[\d]+x[\d]+" <<< "$info")
    height=$(cut -f2 -dx <<< "$geometry")
    width=$(cut -f1 -dx <<< "$geometry")
    top=$(cut -f2 -d, <<< "$position")
    left=$(cut -f1 -d, <<< "$position")
    bottom=$((top + height))
    right=$((left + width))

    # save mouse coordinates to x & y
    eval "$(xdotool getmouselocation | cut -f 1-2 -d ' ' | tr ' :' '\n=')"

    # If the mouse is too close to the window, move the window
    if [ $x -gt $((left - buffer)) ] && [ $x -lt $((right + buffer)) ] && [ $y -gt $((top - buffer)) ] && [ $y -lt $((bottom + buffer)) ]; then
        #figure out what side we're closest to so we know which direction to move the window
        t="$((y - top)):0 $((jump + (y - top)))"
        l="$((x - left)):$((jump + (x - left))) 0"
        b="$((bottom - y)):0 -$((jump + (bottom - y)))"
        r="$((right - x)):-$((jump + (right - x))) 0"
        coord="$(echo -e "$t\n$l\n$b\n$r" | sort -n | head -n 1 | cut -f2 -d:)"

        # set the offset values for x and y
        newX=$(cut -f1 -d ' ' <<< "$coord")
        newY=$(cut -f2 -d ' ' <<< "$coord")

        #check to make sure we're not out of bounds
        if [ $((right + newX)) -gt $xMax ]; then
            newX=$((-1 * left + xOffset))
        elif [ $((left + newX)) -lt $xMin ]; then
            newX=$((xMax - width))
        fi
        if [ $((bottom + newY)) -gt $yMax ]; then
            newY=$((-1 * top + yOffset))
        elif [ $((top + newY)) -lt $yMin ]; then
            newY=$((yMax - height))
        fi

        # move the window if it has focus
        [ $(xdotool getactivewindow) -eq $wID ] && xdotool windowmove --relative $wID $((newX + xOffset)) $((newY + yOffset))
    fi
    sleep $poll
done

আপনার পছন্দ অনুযায়ী একেবারে শীর্ষে চারটি ভেরিয়েবল সম্পাদনা করতে ভুলবেন না। যদি এই স্ক্রিপ্টটি আপনার সিপিইউটিকে সজ্জিত করে চলেছে তবে pollভেরিয়েবলটিকে আরও বড় মান বাড়ানোর চেষ্টা করুন ।

ক্রেসোফোবিয়া.এশ ক্রিয়ায় আপনি
একবার আপনার স্ক্রিপ্টটি তৈরি করে এবং এটি সম্পাদনযোগ্য করে তোলেন , এটি চালান। এটি আপনাকে উইন্ডো নির্বাচন করতে বলবে। আপনি ক্রেসোফোবিক হতে চান এমন উইন্ডোটিতে ক্লিক করুন এবং কাউন্টডাউন শেষ না হওয়া পর্যন্ত অপেক্ষা করুন। কাউন্টডাউন শেষ হয়ে গেলে, আপনি যে উইন্ডোটি নির্বাচন করেছেন সেটি ক্রেসোফোবিক হবে। আপনি যখন উইন্ডোটিকে কার্সারের ভয় দেখাতে সাহায্য করতে প্রস্তুত হন, টার্মিনাল উইন্ডোটি বন্ধ করুন বা টার্মিনাল উইন্ডো থেকে স্ক্রিপ্টটি Ctrl+ সহ মেরুনc

একাধিক ডিসপ্লে
দয়া করে মনে রাখবেন যে এটি কারসোফোবিক উইন্ডোটিকে একটি একক ডিসপ্লেতে সীমাবদ্ধ করে। আমি সম্পাদনাগুলির জন্য উন্মুক্ত যা এটি একাধিক ডিসপ্লে জুড়ে কাজ করে।


মজার অংশ ঠিক আছে; এটা কাজ করে। দুর্ভাগ্যক্রমে, এটি আমার প্রসেসরের পেশাকে পুরোপুরি খায় (প্রায় 60%)। সুতরাং এটি বাস্তব হিসাবে ব্যবহারযোগ্য সমাধান নয়।
জ্যাকব Vlijm

@ জ্যাকবভিলিজম, প্রসেসরটি সহজ করার জন্য আমি কিছু পরিবর্তন করেছি। চেষ্টা কর.
বি_লাওশি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.