আমি কি ইউনিটিতে কাস্টম কমান্ড চালাতে হট কর্নার সেট করতে পারি?


13

আমি সত্যিই হট কর্নার পছন্দ করি। :-)

নীচের চিত্রের মতো কোনও গরম কোণে কাস্টম কমান্ড চালানো কি কোনওভাবে সম্ভব?

এখানে চিত্র বর্ণনা লিখুন


আমি মনে করি না এটি হটকর্নরগুলির সাথে নির্দিষ্টভাবে সম্ভব হয়েছে (কমপক্ষে ityক্য তাদের ব্যবহারের পদ্ধতিটির সাথে নয়) তবে স্ক্র্যাপগুলি নির্দিষ্ট করা সম্ভব যখন পর্দার নির্দিষ্ট ক্ষেত্রটিতে মাউস স্থাপন করা হয়। উদাহরণস্বরূপ, Askubuntu.com/a/758307/295286 , মাউস ওভার অ্যাকশন বিভাগ দেখুন। আমি হটকার্নারগুলিতে আরও নজর রাখব, তবে যদি সেগুলি কাজ করে না, কাস্টম স্ক্রিপ্টটি কি ঠিক আছে?
সের্গেই কলডিয়াজনি 16

একাধিক মনিটরের নাকি একক?
জ্যাকব Vlijm

হাই ওরশিরো, পোস্ট। সব পরিষ্কার কিনা (দয়া করে) উল্লেখ করুন।
জ্যাকব ভিলিজম

আরে, আমি দেখতে পাচ্ছি যে এখানে আমার উত্তরের চেয়ে আরও বেশি হটকারনার রয়েছে। আপনি কত পছন্দ করবেন?
জ্যাকব ভিলিজম

2
@ জ্যাকবভিজিম, সার্জ, আমার উত্তর দেখুন।
wjandrea

উত্তর:


10

CCSM

  1. CompizConfig সেটিংস পরিচালক (সিসিএসএম) ইনস্টল করুন। টার্মিনালে চালান:

    sudo apt-get install compizconfig-settings-manager
  2. সিসিএসএম খুলুন।

  3. "আদেশগুলি" এ যান
  4. স্লটগুলির একটিতে আপনার কাঙ্ক্ষিত কমান্ডটি প্রবেশ করান। উদাহরণ:

    সিসিএসএম স্ক্রিনশট - কমান্ড

  5. "এজ বাইন্ডিংস" ট্যাবে যান

  6. "কিছুই নয়" ক্লিক করুন এবং আপনার পছন্দসই গরম কোণার (বা প্রান্ত) সেট করুন, যা আপনি সুনির্দিষ্টভাবে নির্ধারিত আদেশটির সাথে মিল রেখেছেন

    সিসিএসএম স্ক্রিনশট - হট কর্নার

  7. আপনার মাউস কোণে সরান

  8. এখন আপনার কমান্ড চালানো হয়!

    সিসিএসএম স্ক্রিনশট - কমান্ড চলমান

14.04 এ কাজ করার বিষয়টি নিশ্চিত করেছেন।


প্রস্তাবিত সমাধানগুলির মধ্যে সবচেয়ে সহজ। কমান্ডটি যদি কোনও স্ক্রিপ্টের মাধ্যমে আরও ভালভাবে অনুধাবন করা যায় তবে than PATH-র একটি ফোল্ডারে যদি স্ক্রিপ্টটি কেবল স্ক্রিপ্টের দিকে কমপিজ কমান্ডকে নির্দেশ করে দেয় বা স্ক্রিপ্টের নাম দেওয়া হয় script কেবলমাত্র সম্ভাব্য অবক্ষয়ই হ'ল unityক্য / কম্পিজগুলি এলোমেলোভাবে 'হারাতে' ব্যবহারকারী সেট কমান্ডগুলি হিসাবে পরিচিত, অর্থাত্ যেগুলি সংহত নয়। কীভাবে একটি ইউজার কমান্ড একীভূত করা যায় এই প্রশ্নের ক্ষেত্রের বাইরে।
ফাগু

@wjandrea তাই এটি সর্বোপরি বাস্তবায়িত হয়। কমিজ আমাকে অবাক করে দিতে পারে না। উত্তম উত্তর, ওপি যা চায় তার জন্য সবচেয়ে উপযুক্ত। +1'ed
সের্গেই কলডায়াজনি

দুর্ভাগ্যক্রমে, আপনি ঠিক বলেছেন, হা। হ্যাঁ ওপি ঠিক যা চেয়েছিল তা চেয়েছিল।
জ্যাকব Vlijm

আপনি আপনার সম্পাদনা এবং উত্তরগুলি দিয়ে আমাকে বেশ কয়েকবার সাহায্য করেছেন। ওলে সার্গ বলতেন "কুকি" রাখুন ... সত্যিকার অর্ধ ডজন আছে :)
উইনউনুছুস ইউনিক্স

6

কাস্টম কমান্ড

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

নীচের স্ক্রিপ্টের সাহায্যে আপনি আপনার হটকর্নারের প্রত্যেকের জন্য নির্দিষ্ট কোনও কমান্ড সেট করতে পারেন ।

উদাহরণ হিসাবে, আমি নিম্নলিখিত সেটআপ করেছি:

  • শীর্ষ বাম কোনও পদক্ষেপ নেই
  • শীর্ষ রাইট রান গেডিট
  • নীচে বাম কোনও পদক্ষেপ নেই
  • নীচে রাইটরান জিনোম-টার্মিনাল

অবশ্যই আপনি কমান্ডগুলি বহিরাগত স্ক্রিপ্টগুলি চালাতে পারেন।

তদতিরিক্ত, আপনি লাইনে গরম কোণার আকার নির্ধারণ করতে পারেন :

cornersize = 10

কেবল মান (পিক্সেল) পরিবর্তন করুন। স্ক্রিপ্ট আপনার কমান্ডগুলি ট্রিগার করতে (বর্গক্ষেত্র) অঞ্চল সেট করে:

এখানে চিত্র বর্ণনা লিখুন

এই পান্ডুলিপি

#!/usr/bin/env python3
import subprocess
import time

cornersize = 20

commands = [
    None,
    "gedit",
    None,
    "gnome-terminal",
    ]

def get(cmd):
    return subprocess.check_output(cmd).decode("utf-8").strip()

def get_pos():
    return [int(s.split(":")[1]) for s in get(["xdotool", "getmouselocation"]).split()[:2]]

scrdata = get("xrandr").split(); resindex = scrdata.index("connected")+2
res = [int(n) for n in scrdata[resindex].split("+")[0].split("x")]

match1 = None

while True:
    time.sleep(1)
    xy = get_pos()
    x = xy[0]; y = xy[1]
    test = [
        [x < cornersize, y < cornersize],
        [x > res[0]-cornersize, y < cornersize],
        [x < cornersize, y > res[1]-cornersize],
        [x > res[0]-cornersize, y > res[1]-cornersize],
        ]
    match2 = [i for i, p in enumerate(test) if all(p)]
    if match2 != match1:
        if match2:
            cmd = commands[match2[0]]
            if cmd:
                subprocess.Popen(["/bin/bash", "-c", cmd])
    match1 = match2

সেট আপ করুন

  1. স্ক্রিপ্ট দরকার xdotool

    sudo apt install xdotool
  2. স্ক্রিপ্টটি খালি ফাইলে অনুলিপি করুন, যেমন সংরক্ষণ করুন hotcorners2.py
  3. স্ক্রিপ্টের শিরোনামে, আপনার আদেশগুলি সেট করুন (উদ্ধৃতিগুলি মনে রাখবেন)

    commands = [
        None,
        "gedit",
        None,
        "gnome-terminal",
    ]
    

    (পরবর্তীকালে উপরের বাম / রিগ, নীচে বাম / ডান)

  4. স্ক্রিপ্টটি পরীক্ষা করুন:

    python3 /path/to/hotcorners2.py
  5. যদি সমস্ত ঠিকঠাক কাজ করে তবে স্টার্টআপ অ্যাপ্লিকেশনগুলিতে যুক্ত করুন: ড্যাশ> স্টার্টআপ অ্যাপ্লিকেশন> অ্যাড করুন। কমান্ড যুক্ত করুন:

    /bin/bash -c "sleep 5 && python3 /path/to/hotcorners2.py"

মন্তব্য

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

সম্পাদনা

যদি আমরা কিছুটা আরও উন্নত কম্পিউটিং ব্যবহার করি, আমরা কমান্ডগুলি ট্রিগার করতে বর্গক্ষেত্রের পরিবর্তে ব্যাসার্ধ ব্যবহার করতে পারি (ভাল পুরানো @Pythgoras ধন্যবাদ):

এখানে চিত্র বর্ণনা লিখুন

ছোট পার্থক্য, তবে কেবল মজাদার জন্য:

এই পান্ডুলিপি

#!/usr/bin/env python3
import subprocess
import math
import time

# set distance (hotcorner sensitivity)
radius = 20

# top-left, top-right, bottom-left, bottom-right
commands = [
    None,
    "gedit",
    None,
    "gnome-terminal",
    ]

def get(cmd):
    return subprocess.check_output(cmd).decode("utf-8").strip()

def get_pos():
    return [int(s.split(":")[1]) for s in get(["xdotool", "getmouselocation"]).split()[:2]]

# get the resolution
scrdata = get("xrandr").split(); resindex = scrdata.index("connected")+2
res = [int(n) for n in scrdata[resindex].split("+")[0].split("x")]
# list the corners, could be more elegant no doubt
corners = [[0, 0], [res[0], 0], [0, res[1]], [res[0], res[1]]]

match1 = None

while True:
    time.sleep(1)
    pos = get_pos()
    # get the current difference from the mousepointer to each of the corner (radius)
    diff = [int(math.sqrt(sum([(c[i]-pos[i])**2 for i, n in enumerate(res)])))\
            for c in corners]
    # see if any of the corners is "approached" within the radius
    match2 = [diff.index(n) for n in diff if n < radius]
    # if so, and the corresponding command is not set to None, run it.
    if all([match2 != match1, match2]):
        cmd = commands[match2[0]]
        if cmd:
            subprocess.Popen(["/bin/bash", "-c", cmd])
    match1 = match2

ব্যবহার

বেশ প্রায় একই। স্ক্রিপ্টের প্রধান বিভাগে আপনার কমান্ড এবং ব্যাসার্ধটিকে ট্রিগার করতে সেট করুন।


5

বিঃদ্রঃ:

wjandrea এর উত্তর কে ডিফল্ট উবুন্টু বা উবুন্টু চীনে চীনামাটির ওপর আঁকা অদ্ভুদ চেহারার প্রাণী ব্যবহার (বা তাদের প্রদর্শন পরিচালক হিসেবে Compiz আছে) কারো জন্য সবচেয়ে উপযুক্ত উত্তর, এইভাবে এটা আমার ভোট দিন এবং সম্মান পায়। নীচে প্রদত্ত উত্তরটি ইউনিটিতেও ব্যবহার করা যেতে পারে তবে সম্ভবত কিছুটা অপ্রয়োজনীয় হবে। যাইহোক, ডেস্কটপ এনভায়রনমেন্টগুলিতে যেগুলি কমিজ করে না, নীচে উপস্থাপিত সূচকটি ব্যবহার করতে পারেন। আমি এটি লুবুন্টু 16.04 ভিএম-তে সংক্ষেপে পরীক্ষা করেছি, সুতরাং আমি জানি যে এটি সেখানে কাজ করে এবং কাইলিন 14.04 এর সাথেও এটি সামঞ্জস্যপূর্ণ করে তুলেছে। জিনোম এবং মেট ডেস্কটপগুলির জন্য, কোনও সূচক ব্যবহার করার জন্য আপনাকে প্রথমে সক্ষম অ্যাপ্লিকেশনিকদের সমর্থন প্রয়োজন।

ভূমিকা

আমি প্রয়োগ করেছি indicator-edgerযা স্ক্রিনের 4 প্রান্ত বরাবর যে কোনও জায়গায় মাউস অবস্থানের ভিত্তিতে ব্যবহারকারী-সংজ্ঞায়িত কমান্ডগুলি ট্রিগার করতে দেয় ing আসল সংস্করণটি এক দিনের মধ্যেই করা হয়েছিল, প্রায় 7 ঘন্টার মধ্যে, সুতরাং এটি মোটামুটি স্বল্প পরিমাণে তবে কাজটি করে।

এখানে চিত্র বর্ণনা লিখুন

সূচকটি ~/.edger-commands.jsonঅবশ্যই ফাইলের মাধ্যমে নিয়মিতভাবে jsonফর্ম্যাটে থাকে। এটি ব্যবহারকারীর দ্বারা ম্যানুয়ালি লেখা যেতে পারে, বা সূচকের DEFINE COMMANDSবিকল্পের মাধ্যমে সেট করা যেতে পারে । সক্ষম / অক্ষম ট্রিগার বিকল্পটি মনে রাখে এবং ব্যবহারকারীর সুবিধার্থে ফাইল করার জন্য স্বয়ংক্রিয়ভাবে লিখিত হয়। নমুনা কনফিগারেশন ফাইলটি এরকম হবে:

{
    "right": "gnome-terminal",
    "top": "firefox",
    "left": "",
    "bottom": "gnome-screenshot",
    "enabled": true
}

"left"ফাইলটি এন্ট্রি নোট করুন। এই প্রান্তটি সেট করা নেই, তবে jsonসিনট্যাক্সের কারণে এটিতে একটি খালি স্ট্রিং থাকা দরকার, অর্থাত ""

একবার সূচকটি সনাক্ত করে যে ব্যবহারকারীর যে কোনও প্রান্তে (~ 3 পিক্সেল মার্জিন সহ) মাউসটি স্থাপন করা হয়েছে, সূচকটি একটি বুদ্বুদ বিজ্ঞপ্তি প্রেরণ করবে এবং যথাযথ কমান্ড চালাবে (সংজ্ঞায়িত হলে)। ব্যবহারকারী মাউসটি প্রান্ত থেকে সরিয়ে না দিলে ট্রিগারটির সক্রিয়করণ পুনরাবৃত্তি হবে না।

এখানে চিত্র বর্ণনা লিখুন

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

বর্তমানে কোনাগুলি (কেবলমাত্র প্রান্ত) জন্য কোনও সমর্থন নেই এবং এটি ওয়ান-মনিটরের সেটআপের জন্য তৈরি করা হয়েছিল (স্পষ্টতই, কেউ তৈরির hours ঘন্টার মধ্যে সমস্ত ঘাঁটি আবরণ করতে পারে না), তবে এই বৈশিষ্ট্যগুলি ভবিষ্যতে অবশেষে উপলভ্য হতে পারে।

ইনস্টলেশন ও উত্স কোড

সোর্স কোডটি প্রকল্পগুলি গিটহাব পৃষ্ঠায় বা লঞ্চপ্যাডের মাধ্যমে উপলভ্য । টার্মিনালে নিম্নলিখিত কমান্ডগুলির মাধ্যমে ইনস্টলেশন সম্পন্ন করা হয়:

sudo add-apt-repository ppa:1047481448-2/sergkolo
sudo apt-get update
sudo apt-get install indicator-edger
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.