সিঙ্গল ক্লিক এক্সপোজ


11

ডক আইকনগুলি ডিফল্টরূপে এক্সপোজ করা সক্রিয় করতে ডাবল আইকনগুলিতে একক ক্লিক করা সম্ভব?

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

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


1
আপনার প্রশ্নের বহিঃপ্রকাশের একটি লিঙ্ক আপনি যুক্ত করতে পারেন?
ব্রুনি

সুতরাং, অন্য কথায়, আপনি যদি এই অ্যাপ্লিকেশনটির শুধুমাত্র একটি উইন্ডো খোলা থাকে তবে এমন দৃষ্টিভঙ্গি রাখতে চান?
সের্গেই কলডিয়াজনি

@ লিয়াম উইলিয়াম এটি উন্মোচিত বা স্কেল?
আনোয়ার

1
@ লিয়াম উইলিয়াম, না, দুর্ভাগ্যক্রমে আমি এখন পর্যন্ত কোনও প্রাসঙ্গিক কিছু খুঁজে পাইনি :(
সের্গি কলডিয়াজনি

1
@ লিয়াম উইলিয়াম আমি শর্টকাটের মাধ্যমে কেবল "স্প্রেড" বিকল্পটি পেয়েছি, তবে এটি করার জন্য আপনার উইন্ডোটিকে ফোকাস করতে হবে। আমি ক্লিকের মাধ্যমে কোনও উপায় খুঁজে পাইনি
সের্গি কলডিয়াজহনি

উত্তর:


6

সূচিপত্র:

  1. সংক্ষিপ্ত বিবরণ
  2. স্ক্রিপ্ট উত্স
  3. অতিরিক্ত নোট

1। সংক্ষিপ্ত বিবরণ

মন্তব্যে উল্লিখিত হিসাবে, এই কার্যকারিতাটি দৃশ্যত 12.04 সাল থেকে মুছে ফেলা হয়েছে এবং এখন লঞ্চ আইকনে ক্লিক করুন উইন্ডোটি ন্যূনতম করে তোলে (যা সম্ভবত আমার অনলাইন অনুসন্ধানগুলিতে আমি দেখতে পাচ্ছি যা থেকে এটি একটি উচ্চ-অনুরোধিত বৈশিষ্ট্য ছিল)। তবে, একক উইন্ডোর এক্সপো চালু করার জন্য একটি কীবোর্ড রয়েছে যা Super+ Ctrl+ W। জেনে রেখেই, উইন্ডোটি যখন উত্থাপিত হয় যখন আমরা কার্সারের প্রবর্তক বা অবস্থানের উপর ক্লিক করতে পারি, তবে আমরা সেই কীবোর্ড শর্টকাটের মাধ্যমে সেই একক উইন্ডো এক্সপো অনুকরণ করতে পারি। নীচের লিপিটি ঠিক তা করে।

এটি /usr/bin/single_click_expo.pyফাইল হিসাবে সংরক্ষণ এবং স্টার্টআপ অ্যাপ্লিকেশনগুলিতে যুক্ত হওয়ার অর্থ

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

2. স্ক্রিপ্ট উত্স

গিটহাবেও উপলব্ধ available

#!/usr/bin/env python3

# Author: Serg Kolo
# Date: Sept 28, 2016
# Purpose: activates
# Depends: python3-gi
#          xdotool
# Written for: http://askubuntu.com/q/651188/295286

# just in case user runs this with python 2
from __future__ import print_function
import gi
gi.require_version('Gdk', '3.0')
from gi.repository import Gdk,Gio
import sys
import dbus
import subprocess

def run_cmd(cmdlist):
    """ Reusable function for running shell commands"""
    try:
        stdout = subprocess.check_output(cmdlist)
    except subprocess.CalledProcessError:
        print(">>> subprocess:",cmdlist)
        sys.exit(1)
    else:
        if stdout:
            return stdout

def gsettings_get(schema,path,key):
    """Get value of gsettings schema"""
    if path is None:
        gsettings = Gio.Settings.new(schema)
    else:
        gsettings = Gio.Settings.new_with_path(schema,path)
    return gsettings.get_value(key)


def get_launcher_object(screen):

    # Unity allows launcher to be on multiple
    # monitors, so we need to account for all 
    # window objects of the launcher
    launchers = []

    for window in screen.get_window_stack():
        xid = window.get_xid()
        command = ['xprop','-notype',
                   'WM_NAME','-id',str(xid)
        ]
        xprop = run_cmd(command).decode()
        title = xprop.replace("WM_NAME =","")
        if title.strip()  == '"unity-launcher"':
           launchers.append(window)
           #return window
    return launchers

def get_dbus(bus_type,obj,path,interface,method,arg):
    # Reusable function for accessing dbus
    # This basically works the same as 
    # dbus-send or qdbus. Just give it
    # all the info, and it will spit out output
    if bus_type == "session":
        bus = dbus.SessionBus() 
    if bus_type == "system":
        bus = dbus.SystemBus()
    proxy = bus.get_object(obj,path)
    method = proxy.get_dbus_method(method,interface)
    if arg:
        return method(arg)
    else:
        return method() 


def main():


    previous_xid = int()
    screen = Gdk.Screen.get_default()

    while True:

        current_xid = screen.get_active_window().get_xid()
        if  int(current_xid) == previous_xid:
            continue
        previous_xid = int(current_xid)
        icon_size = gsettings_get(
                        'org.compiz.unityshell',
                        '/org/compiz/profiles/unity/plugins/unityshell/',
                        'icon-size')
        icon_size = int(str(icon_size))
        position = str(gsettings_get(
                       'com.canonical.Unity.Launcher',
                       None,
                       'launcher-position'))
        screen = Gdk.Screen.get_default()
        launcher_objs = get_launcher_object(screen)

        # for faster processing,figure out which launcher is used
        # first before running xdotool command. We also need
        # to account for different launcher positions (available since 16.04)
        pointer_on_launcher = None
        for launcher in launcher_objs:
            if 'Left' in position and  \
               abs(launcher.get_pointer().x) <= icon_size:
                  pointer_on_launcher = True
            elif 'Bottom' in position and \
               abs(launcher.get_pointer().y) <= icon_size:
                  pointer_on_launcher = True
            else:
               continue


        active_xid = int(screen.get_active_window().get_xid())

        application = get_dbus('session',
                               'org.ayatana.bamf',
                               '/org/ayatana/bamf/matcher',
                               'org.ayatana.bamf.matcher',
                               'ApplicationForXid',
                               active_xid)

        # Apparently desktop window returns empty application
        # we need to account for that as well
        if application:
            xids = list(get_dbus('session',
                            'org.ayatana.bamf',
                            application,
                            'org.ayatana.bamf.application',
                            'Xids',None))

        if pointer_on_launcher and\
           len(xids) == 1:
               run_cmd(['xdotool','key','Ctrl+Super+W'])


if __name__ == '__main__':
    main()

৩. অতিরিক্ত নোট

  • এটি অন্যান্য কিছু শর্টকাট remap যুক্তিযুক্ত হতে পারে Super+ + Ctrl+ + Wকারণ উত্পন্ন দ্রব্যাদির আন্তর্জাতিক প্রদর্শনী এ, Ctrl+ + W"উইন্ডো বন্ধ করুন" কমান্ড থেকে এক্সপো অনুরূপ হবে। এখানে সম্ভাব্য সমস্যা হ'ল ঘন ঘন স্যুইচিংয়ের ফলে উইন্ডো বন্ধ হওয়ার কারণ হতে পারে। স্ক্রিপ্টটি সেই সাথে সামঞ্জস্য করতে হবে।

বিঃদ্রঃ:

স্ক্রিপ্টটি xdotoolইউটিলিটির উপর নির্ভর করে । আপনার অবশ্যই এটি ইনস্টল করা উচিত। xdotoolএটি ছাড়া এটি কাজ করবে না, যেহেতু xdotoolকীপ্রেসগুলি অনুকরণ করতে ব্যবহৃত হয়। এর মাধ্যমে ইনস্টল করুনsudo apt-get install xdotool


আমি পেয়েছিNo module named gi
উইলিয়াম

@ লিয়াম উইলিয়াম আপনার সম্ভবত python3-giপ্যাকেজ ইনস্টল করা দরকার । অদ্ভুত, যেহেতু এটি একটি স্ট্যান্ডার্ড মডিউলটির মতো এবং ডিফল্টরূপে উবুন্টুর সাথে আসে।
সের্গেই কলডিয়াজনি


আপনি উবুন্টুর কোন সংস্করণে আছেন?
উইলিয়াম

@ লিয়াম উইলিয়াম 16.04 এলটিএস, তবে python3-gi14.04 এলটিএসেও ডিফল্টরূপে আসে। আমি পূর্ববর্তী সংস্করণগুলি সম্পর্কে জানি না
সের্গি কলডিয়াজহনি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.