কোনও স্ক্রিন সংযুক্ত বা সংযোগ বিচ্ছিন্ন থাকলে কমান্ড চালানোর বিকল্প উপায়
একটি বিকল্প সমাধান হ'ল একটি ক্ষুদ্র পটভূমি স্ক্রিপ্ট চালানো। ব্যাকগ্রাউন্ডে নীচে স্ক্রিপ্টটি চালানো, আমি প্রসেসরের লোডের কোনও বৃদ্ধি যা পরিমাপ করতে পারিনি।
স্ক্রিপ্ট বা অন্য কোনও কমান্ড চালানো সহজ সুবিধাজনক উপায়, যখনই দ্বিতীয় স্ক্রিনটি সংযুক্ত বা সংযোগ বিচ্ছিন্ন হয়।
উদাহরণ লিপি
- কমান্ডের আউটপুটে "সংযুক্ত" স্ট্রিংটি কতবার ঘটে তা প্রতি পাঁচ সেকেন্ডে কেবল পরীক্ষা করে
xrandr
("সংযোগ বিচ্ছিন্ন" এর সাথে মিথ্যা ম্যাচগুলি প্রতিরোধ করতে "সংযুক্ত" পরে স্থানটি মনে করুন)। প্রতিটি ঘটনা একটি সংযুক্ত স্ক্রিন উপস্থাপন করে।
- ঘটনার সংখ্যা যদি পরিবর্তিত হয়, হয় একটি স্ক্রিন সংযুক্ত বা সংযোগ বিচ্ছিন্ন ছিল। পরিবর্তনটি স্ক্রিপ্ট দ্বারা "লক্ষ্য করা" এবং একটি কমান্ডের সাথে সংযুক্ত করা যেতে পারে, আপনি স্ক্রিপ্টের প্রধান অংশে সেট করতে পারেন।
এই পান্ডুলিপি
#!/usr/bin/env python3
import subprocess
import time
#--- set both commands (connect / disconnect) below
connect_command = "gedit"
disconnect_command = ""
#---
def get(cmd): return subprocess.check_output(cmd).decode("utf-8")
# - to count the occurrenc of " connected "
def count_screens(xr): return xr.count(" connected ")
# - to run the connect / disconnect command(s)
def run_command(cmd): subprocess.Popen(["/bin/bash", "-c", cmd])
# first count
xr1 = None
while True:
time.sleep(5)
# second count
xr2 = count_screens(get(["xrandr"]))
# check if there is a change in the screen state
if xr2 != xr1:
print("change")
if xr2 == 2:
# command to run if connected (two screens)
run_command(connect_command)
elif xr2 == 1:
# command to run if disconnected (one screen)
# uncomment run_command(disconnect_command) to enable, then also comment out pass
pass
# run_command(disconnect_command)
# set the second count as initial state for the next loop
xr1 = xr2
কিভাবে ব্যবহার করে
- একটি ফাঁকা ফাইলে স্ক্রিপ্টটি অনুলিপি করুন, এটি সংরক্ষণ করুন
connect_screen.py
প্রধান বিভাগে, সংযোগ চালানোর জন্য কমান্ডটি সেট করুন (আমি উদাহরণস্বরূপ "gedit" সেট করি, উদ্ধৃতিগুলি মনে রাখবেন)। এছাড়াও একইভাবে সংযোগ বিচ্ছিন্ন করার জন্য একটি কমান্ড সেট করা সম্ভব। অন্যথায় disconnect_command = ""
যেমন আছে তেমনি ছেড়ে দিন ।
আপনি যদি সংযোগ বিচ্ছিন্ন-আদেশ ব্যবহার করেন তবে লাইনটিও সংঘাতবদ্ধ করুন:
run_command(disconnect_command)
এবং লাইনটি মন্তব্য:
pass
লিপি হিসাবে ইঙ্গিত
- টার্মিনাল থেকে স্ক্রিপ্টটি পরীক্ষা করুন, আপনার স্ক্রিনটি সংযুক্ত করুন এবং দেখুন যে সমস্ত ঠিক আছে কিনা।
যদি সমস্ত ঠিকঠাক কাজ করে তবে এটিকে আপনার প্রারম্ভিক অ্যাপ্লিকেশনগুলিতে যুক্ত করুন: ড্যাশ> স্টার্টআপ অ্যাপ্লিকেশন> কমান্ডটি যুক্ত করুন:
/bin/bash -c "sleep 15&&python3 /path/to/connect_screen.py"
sleep 15
ডেস্কটপ সম্পূর্ণরূপে আরম্ভ করার আগে আপনার স্ক্রিপ্ট চালানোর জন্য শুরু হয় করা হয়। ঠিক নিশ্চিত করার জন্য.
সম্পাদনা
স্ক্রিপ্টটি কীভাবে "স্মার্ট" উপায়ে শুরু করবেন।
বিরতি sleep 15
সাধারণভাবে কাজ করা উচিত, তবে যেহেতু শুরুর সময় প্রতি সিস্টেমের সময় পৃথক হয় তাই সঠিক বিরতির সময়টি খুঁজে পেতে কিছুটা পরীক্ষা নেওয়া লাগতে পারে take কিছুটা সংযোজন করার সাথে সাথে স্ক্রিপ্টটি "স্মার্ট" হয়ে যায় এবং xrandr
প্রকৃত স্ক্রিপ্টটি শুরু হওয়ার আগেই কমান্ডটি সফল হওয়ার জন্য অপেক্ষা করে । আপনি যদি নীচের সংস্করণটি ব্যবহার করেন তবে আপনাকে কেবল কমান্ডটি যুক্ত করতে হবে:
python3 /path/to/connect_screen.py
আপনার স্টার্টআপ অ্যাপ্লিকেশনগুলিতে। পরবর্তী ব্যবহারগুলি উপরের সংস্করণটির মতোই।
এই পান্ডুলিপি
#!/usr/bin/env python3
import subprocess
import time
#--- set both commands (connect / disconnect) below
connect_command = "gedit"
disconnect_command = ""
#---
while True:
time.sleep(5)
try:
subprocess.Popen(["xrandr"])
except:
pass
else:
break
# function to get the output of xrandr
def get(cmd): return subprocess.check_output(cmd).decode("utf-8")
# - to count the occurrenc of " connected "
def count_screens(xr): return xr.count(" connected ")
# - to run the connect / disconnect command(s)
def run_command(cmd): subprocess.Popen(["/bin/bash", "-c", cmd])
# first count
xr1 = None
while True:
time.sleep(5)
# second count
xr2 = count_screens(get(["xrandr"]))
# check if there is a change in the screen state
if xr2 != xr1:
if xr2 == 2:
# command to run if connected (two screens)
run_command(connect_command)
elif xr2 == 1:
# command to run if disconnected (one screen)
# uncomment run_command(disconnect_command) to enable, then also comment out pass
pass
# run_command(disconnect_command)
# set the second count as initial state for the next loop
xr1 = xr2