ওয়ার্কস্পেসে আলাদা ইউনিটি লঞ্চার সেট করা:
1. 2. 3. 4।
নীচের সমাধানটি ওয়ার্কস্পেসে লঞ্চ আইকনগুলির একটি আলাদা সেট থাকা সহজেই সম্ভব করে তোলে, আপনার যত ওয়ার্কস্পেস রয়েছে তা বিবেচনা করেই।
সেটআপের দুটি অংশ রয়েছে:
একটি (এক) শর্টকাট কী সমন্বয় বর্তমান ওয়ার্কস্পেসের জন্য লঞ্চার আইকনগুলির সেট "মনে রাখার" জন্য "
ব্যাকগ্রাউন্ডে চলার জন্য একটি স্ক্রিপ্ট, বর্তমান কর্মক্ষেত্রটি কী তা ট্র্যাক করে এবং সংশ্লিষ্ট ইউনিটি লঞ্চার সেট করে। ব্যবহারকারী যখনই কর্মক্ষেত্র পরিবর্তন করে এটি কার্যকর করে।
কিভাবে এটা কাজ করে
দুটি ছোট স্ক্রিপ্ট জড়িত:
প্রথম (সংখ্যাযুক্ত) এটা আপনার বাড়িতে ডিরেক্টরি নাম একটি (লুকানো) ফাইলে বর্তমান লঞ্চার বিষয়বস্তু লিখেছেন আপনার বর্তমান কর্মক্ষেত্র পরে: স্ক্রিপ্ট এক সহজ জিনিস আছে।
দ্বিতীয় স্ক্রিপ্ট কি বর্তমান কর্মক্ষেত্র হল উপর নজর রাখে। যদি কোনও কর্মক্ষেত্রের পরিবর্তন হয় তবে স্ক্রিপ্টটি কোনও সম্পর্কিত (লঞ্চার-) ডেটা ফাইল উপস্থিত রয়েছে কিনা তা দেখায় (প্রথম স্ক্রিপ্ট দ্বারা নির্মিত)। যদি তা হয় তবে ফাইলটি পড়ে এবং ইউনিটির লঞ্চারটি পরিবর্তিত করে, যেমন ফাইলটিতে মনে আছে।
এটাই.
কিভাবে বসাব
স্ক্রিপ্টটি wmctrl
ইনস্টল করা দরকার:
sudo apt-get install wmctrl
একটি ডিরেক্টরি তৈরি করুন যেখানে উভয় স্ক্রিপ্ট সংরক্ষণ করা হবে। এটি আমদানিকারক যে উভয় স্ক্রিপ্টগুলি একটি ডিরেক্টরিতে এক সাথে রাখা হয়, যেহেতু তারা কার্যকারিতা এবং অন্যটি থেকে একটি আমদানি ভাগ করে। একই কারণে, আপনি নীচে উল্লিখিত হিসাবে ঠিক তাদের নাম রাখা গুরুত্বপূর্ণ।
নীচের প্রতিটি স্ক্রিপ্ট একটি আলাদা (খালি) ফাইলে অনুলিপি করুন, তাদের ডিরেক্টরিতে সংরক্ষণ করুন (এতে তৈরি করা হয়েছে 2.
), ঠিক নাম হিসাবে দেওয়া হয়েছে:
set_workspace.py
#!/usr/bin/env python3
import subprocess
import os
workspace_data = os.environ["HOME"]+"/.launcher_data_"
key = ["gsettings get ", "gsettings set ", "com.canonical.Unity.Launcher favorites"]
def get_res():
# get resolution
xr = subprocess.check_output(["xrandr"]).decode("utf-8").split()
pos = xr.index("current")
return [int(xr[pos+1]), int(xr[pos+3].replace(",", "") )]
def current():
# get the current viewport
res = get_res()
vp_data = subprocess.check_output(["wmctrl", "-d"]).decode("utf-8").split()
dt = [int(n) for n in vp_data[3].split("x")]
cols = int(dt[0]/res[0])
curr_vpdata = [int(n) for n in vp_data[5].split(",")]
curr_col = int(curr_vpdata[0]/res[0])+1; curr_row = int(curr_vpdata[1]/res[1])
return str(curr_col+curr_row*cols)
def remember_current():
currlauncher = subprocess.check_output(["/bin/bash", "-c", key[0]+key[2]]).decode("utf-8").strip()
f = workspace_data+current()
open(f, "w").write(currlauncher)
if __name__ == "__main__":
remember_current()
launcher_perworkspace.py
#!/usr/bin/env python3
import subprocess
import set_workspace
import time
workspace_data = set_workspace.workspace_data
key = set_workspace.key
def check_datafile(desktop):
f = workspace_data+str(desktop)
try:
new_launcher = open(f).read()
command = key[1]+key[2]+' "'+str(new_launcher)+'"'
subprocess.Popen(["/bin/bash", "-c", command])
except FileNotFoundError:
pass
curr_dt1 = set_workspace.current()
check_datafile(curr_dt1)
while True:
time.sleep(1)
curr_dt2 = set_workspace.current()
if curr_dt2 != curr_dt1:
check_datafile(curr_dt2)
curr_dt1 = curr_dt2
set_workspace.py
আপনার পছন্দের শর্টকাট কী সংমিশ্রনে প্রথম স্ক্রিপ্ট ( ) যুক্ত করুন: সিস্টেম সেটিংস> "কীবোর্ড"> "শর্টকাটস"> "কাস্টম শর্টকাট"। "+" ক্লিক করুন এবং কমান্ডটি যুক্ত করুন:
python3 /path/to/set_workspace.py
কী সংমিশ্রণটি চালান এবং দেখুন যে কোনও ফাইল যেমন: .launcher_data_3
আপনার হোম ডিরেক্টরিতে তৈরি করা হয়েছে। আপনি সম্ভবত প্রেস করতে হবে Ctrl+ + Hফাইল দৃশ্যমান করতে (ফাইল, একটি দিয়ে শুরু .
ডিফল্টরূপে অদৃশ্য)।
আপনার কর্মক্ষেত্রগুলিতে নেভিগেট করুন এবং পদ্ধতিটি পুনরাবৃত্তি করুন: লঞ্চার আইকনগুলির সংমিশ্রণটি সেট করুন এবং সেই নির্দিষ্ট কর্মক্ষেত্রের জন্য সেটটি "মনে রাখার" জন্য আপনার কী সংমিশ্রণটি টিপুন।
আপনি এখন কার্যত সম্পন্ন করেছেন। কমান্ড দিয়ে পটভূমি স্ক্রিপ্টটি পরীক্ষা করুন (টার্মিনাল উইন্ডো থেকে এটি চালিয়ে যান):
python3 /path/to/launcher_perworkspace.py
যদি সমস্ত ঠিকঠাক কাজ করে এবং আপনার প্রবর্তকটি ওয়ার্কস্পেস প্রতি স্যুইচ করে, আপনার স্টার্টআপ অ্যাপ্লিকেশনগুলিতে নিম্নলিখিত কমান্ডটি যুক্ত করুন: ড্যাশ> স্টার্টআপ অ্যাপ্লিকেশন> যুক্ত করুন:
/bin/bash -c "sleep 15&&python3 /path/to/launcher_perworkspace.py"
মন্তব্য
- আপনি যদি কোনও নির্দিষ্ট কর্মক্ষেত্রের জন্য লঞ্চার আইকনগুলির সেটটি পরিবর্তন করতে চান তবে কেবল ওয়ার্কস্পেসে নেভিগেট করুন, আপনার পছন্দমতো আইকনগুলি যুক্ত / সরান এবং আপনার কী সংমিশ্রণটি টিপুন (পটভূমি স্ক্রিপ্টটি পুনরায় আরম্ভ করার দরকার নেই)।
- মন্তব্য (গুলি) থেকে আমার অনুভূতিটি পাওয়া যায় যে বর্তমান কর্মক্ষেত্রের জন্য বর্তমান লঞ্চারটি মনে রাখার জন্য শর্টকাটে কিছু ভুল ধারণা রয়েছে। আপনার বর্তমান ওয়ার্কস্পেসের জন্য বর্তমান লঞ্চারটি "সংরক্ষণ" করতে কেবল একটি কীবোর্ড শর্টকাট দরকার । এটি ঠিক একই রকম কাজ করবে, আপনি যে ওয়ার্কস্পেসে রয়েছেন তা নির্বিশেষে। স্ক্রিপ্ট নিজেই নির্ধারণ করবে কি হল বর্তমান কর্মক্ষেত্র।
সম্পাদন করা
আপনার মন্তব্য থেকে, আমি বুঝতে পারি যে আপনি স্ক্রিপ্ট (গুলি) চালানোর বিষয়ে অনিশ্চিত এবং আপনি ভয় পান যে আপনি আপনার বর্তমান লঞ্চারটিকে বিশৃঙ্খলা করবেন।
আমি নিশ্চিত যে স্ক্রিপ্ট যা করছে তার জন্য এটি অনেক বেশি (বা খুব কম :)) শ্রদ্ধা। তবে, আপনি কমান্ডটি সহ কেবল বর্তমান ইউনিটি লঞ্চারটিকে ব্যাকআপ করতে পারেন:
printf 'gsettings set com.canonical.Unity.Launcher favorites "' > ~/launcher_output&&printf "$(gsettings get com.canonical.Unity.Launcher favorites)">>~/launcher_output&&printf '"'>>~/launcher_output
এটি ~/launcher_output
আপনার ইউনিটি লঞ্চারটিকে প্রাথমিক পরিস্থিতিতে পুনরুদ্ধার করার জন্য সম্পূর্ণ কমান্ড সমেত একটি ফাইল তৈরি করবে । জরুরী পরিস্থিতিতে কেবল ফাইলটির সামগ্রী অনুলিপি করুন এবং টার্মিনালে এটি আটকান।
তবে আবার, আপনি স্ক্রিপ্টটি ম্যানুয়ালি পরিবর্তন না করে আপনি নিজের প্রবর্তককে গোলযোগ করবেন এমনটা সত্যিই কম is
গুরুত্বপূর্ণ সম্পাদনা (2)
একটি মন্তব্যে অনুরোধ করা হয়েছে, এর মাধ্যমে এমন একটি সংস্করণ যা কোনও ব্যবহার ছাড়াই চলে runs শর্টকাট সংমিশ্রণ করে চলে; কেবল স্ক্রিপ্টটি চালান এবং নির্দিষ্ট কর্মক্ষেত্রে আপনার লঞ্চারগুলি সেটআপ শুরু করুন। স্ক্রিপ্টটি আপনার হোম ডিরেক্টরিতে (অদৃশ্য) ফাইল তৈরি করবে, যাতে বিভিন্ন ওয়ার্কস্পেসগুলিতে আপনার (ইউনিটি-) প্রবর্তকগুলির সেট মনে রাখতে পারে।
আমি স্ক্রিপ্টটির "সংস্করণ 1" এ চেষ্টা করেছি, তবে ওয়ার্কস্পেসের মাধ্যমে দ্রুত এগিয়ে যাওয়ার সময় অযাচিত আচরণ (ভুল ডেটা সংরক্ষণ করা) রোধ করার কৌশল হিসাবে দুটি ওয়ার্কস্পেস-চেকের মধ্যে দুটি লঞ্চার-চেক সবসময় "এম্বেড" করে।
কিভাবে ব্যবহার করে
প্রথম সংস্করণের মতো, এই স্ক্রিপ্টটি ব্যবহার করে wmctrl
:
sudo অ্যাপ্লিকেশন wmctrl ইনস্টল করুন
স্ক্রিপ্টটি খালি ফাইলে অনুলিপি করুন, এটি সংরক্ষণ করুন launcher_toworkspace.py
কমান্ড দিয়ে এটি চালান:
python3 /path/to/launcher_toworkspace.py
যদি এটি প্রত্যাশা মতো কাজ করে তবে আপনার স্টার্টআপ অ্যাপ্লিকেশনগুলিতে নিম্নলিখিত কমান্ডটি যুক্ত করুন:
/bin/bash -c "sleep 15&&python3 /path/to/launcher_toworkspace.py"
এই পান্ডুলিপি
#!/usr/bin/env python3
import subprocess
import os
import time
datadir = os.environ["HOME"]+"/.config/lswitcher"
if not os.path.exists(datadir):
os.makedirs(datadir)
workspace_data = datadir+"/launcher_data_"
key = [
"gsettings get ",
"gsettings set ",
"com.canonical.Unity.Launcher favorites",
]
def get_launcher():
return subprocess.check_output(
["/bin/bash", "-c", key[0]+key[2]]
).decode("utf-8").strip()
def get_res():
# get resolution
xr = subprocess.check_output(["xrandr"]).decode("utf-8").split()
pos = xr.index("current")
return [int(xr[pos+1]), int(xr[pos+3].replace(",", "") )]
def current():
# get the current viewport
res = get_res()
vp_data = subprocess.check_output(
["wmctrl", "-d"]
).decode("utf-8").split()
dt = [int(n) for n in vp_data[3].split("x")]
cols = int(dt[0]/res[0])
curr_vpdata = [int(n) for n in vp_data[5].split(",")]
curr_col = int(curr_vpdata[0]/res[0])+1
curr_row = int(curr_vpdata[1]/res[1])
return str(curr_col+curr_row*cols)
curr_ws1 = current()
currlauncher1 = get_launcher()
while True:
time.sleep(1)
currlauncher2 = get_launcher()
curr_ws2 = current()
datafile = workspace_data+curr_ws2
if curr_ws2 == curr_ws1:
if currlauncher2 != currlauncher1:
open(datafile, "wt").write(currlauncher2)
else:
if not os.path.exists(datafile):
open(datafile, "wt").write(currlauncher2)
else:
curr_set = open(datafile).read()
command = key[1]+key[2]+' "'+str(curr_set)+'"'
subprocess.Popen(["/bin/bash", "-c", command])
curr_ws1 = curr_ws2
currlauncher1 = get_launcher()
বিঃদ্রঃ
আপনি যদি স্ক্রিপ্টের পূর্ববর্তী সংস্করণটি সহ আপনার ওয়ার্কস্পেসগুলি সেট আপ করেন তবে তাদেরও এই সংস্করণটির জন্য কাজ করা উচিত।
পিপিএ
2015-04-23 অনুসারে, ডেনিস জে এর দুর্দান্ত প্রশ্ন এবং পার্টোর উত্সাহ, এটি পরিচালনা করার জন্য একটি জিইউআই সহ ওয়েবআপড 8ppa
এ লিখিত স্ক্রিপ্টটির জন্য একটি তৈরির নেতৃত্ব দিয়েছে ।
ppa:vlijm/lswitcher
এটি ইনস্টল করতে, চালান:
sudo add-apt-repository ppa:vlijm/lswitcher
sudo apt-get update
sudo apt-get install lswitcher
এখন থেকে এটি নির্ভরযোগ্য এবং ইউটোপিকের জন্য প্যাকেজড। আমি অন্যদের পরীক্ষার পরে যুক্ত করব। আমি একটি .deb
ইনস্টলারও যুক্ত করব, তবে আমি এটি ব্যবহার করার পরামর্শ দেব ppa
, যেহেতু সাধারণত এই ধরণের জিনিসগুলি এখন এবং পরে আপডেট করা হয়।
ভিউপোর্টের ডেটার অবস্থান থেকে যেহেতু পরিবর্তিত ~/
হয়েছে ~/.config/lswitcher
, তাই আপনি পূর্ববর্তী স্ক্রিপ্টটি ব্যবহার করলে আপনাকে আবার আপনার ইউনিটি লঞ্চার সেট আপ করতে হবে।