เปิดแอปเฉพาะในกรณีที่ยังไม่เปิด


16

ฉันต้องการเลียนแบบการใช้งานของ Alfred บน Mac OS X ซึ่งหากคุณพยายามเปิดแอพหลังจากค้นหามันจะเปิดเฉพาะหน้าต่างใหม่หากโปรแกรมไม่ได้ทำงานอยู่มิฉะนั้นจะเป็นการตั้งค่าโฟกัสที่ อินสแตนซ์ที่ทำงานอยู่ในปัจจุบันของแอปพลิเคชันนั้น จะมีการเปลี่ยนแปลงพฤติกรรมเริ่มต้นของตัวเรียกใช้เพื่อตรวจสอบเรื่องนี้ก่อนที่จะเปิดหน้าต่างใหม่หรือไม่?


นอกจากนี้ @pidge การทำเช่นนี้จะไม่ยาก แต่ก็จะมีผลกับพฤติกรรมการคลิกขวาที่ "เปิดด้วย" ฉันเดาว่าเป็นผลข้างเคียงที่ยอมรับไม่ได้
Jacob Vlijm

1
ฉันคิดว่าคุณควรจะสามารถสร้างสคริปต์ที่สามารถตรวจสอบว่ากระบวนการเฉพาะกำลังทำงานอยู่และตัดสินใจว่าจะเปิดตัวกระบวนการใหม่หรือให้ความสำคัญกับหน้าต่างที่มีอยู่ น่าเสียดายที่ฉันยังไม่ค่อยเก่งในการเขียนสคริปต์ ... แต่ @JacobVlijm เป็นที่รู้จักในฐานะผู้ชายที่มีสคริปต์สำหรับทุกวัตถุประสงค์;) คุณจะต้องแทนที่ตัวเรียกใช้ต้นฉบับทั้งหมดด้วยสคริปต์ตามลำดับ ไม่แน่ใจว่าคุณต้องการ / สามารถทำได้ - ฉันจะไม่ ...
ผู้บัญชาการ Byte

2
หากคุณไปกับเส้นทางสคริปต์คุณสามารถใช้สคริปต์นี้เป็นจุดเริ่มต้น ฉันเขียนมันสำหรับ LXDE / Openbox ในตอนแรก แต่มันควรจะทำงานใน Unity ด้วย ข้อมูลเพิ่มเติมเกี่ยวกับสคริปต์และการใช้งานที่นี่
Glutanimate

1
@ ByteCommander ว่านั่นคือสิ่งที่ฉันมีอยู่ในใจ คุณสามารถแม้กระทั่งสคริปต์ - แทนที่คำสั่งใน.desktopไฟล์ หากคุณแทนที่คำสั่งใน.desktopไฟล์อย่างไรก็ตามการคลิกขวาที่เปิดด้วยตัวเลือกจะใช้งานไม่ได้
Jacob Vlijm

1
สภาพแวดล้อมของเดสก์ท็อปตัวใด
j0h

คำตอบ:


6

อัปเดต 7 เมษายน: มีการเพิ่มและค้นพบเวอร์ชั่นอัลเบิร์ตที่แตกต่างกันไปดูการอัปเดตและการร้องโบนัส !!!

เกี่ยวกับการทำงานของเส้นประ : คุณได้ถามว่า " มีการเปลี่ยนแปลงพฤติกรรมเริ่มต้นของตัวเรียกใช้เพื่อตรวจสอบเรื่องนี้ก่อนที่จะเปิดหน้าต่างใหม่หรือไม่ " คำตอบพื้นฐานคือไม่เป็นผู้ใช้ทั่วไปที่คุณไม่มีวิธีเพิ่มพฤติกรรมดังกล่าวเพื่อขีด อย่างไรก็ตามหากมีผู้พัฒนาขอบเขตความสามัคคีที่ยินดีที่จะนำไปใช้คุณอาจเข้าหาพวกเขาหรือพัฒนาด้วยตัวคุณเองถ้าคุณมีความตั้งใจและเต็มใจที่จะเรียนรู้ ทักษะการเขียนโค้ดของฉันค่อนข้างเรียบง่ายดังนั้นฉันจึงใช้การเขียนสคริปต์เปลือกและส่วนหน้าแบบกราฟิกที่มีอยู่สำหรับสคริปต์เป็นวิธีแก้ปัญหา

ข้อมูลที่เกี่ยวข้อง

โพสต์ต้นฉบับ:

ฉันได้เขียนสคริปต์ที่ใช้บทสนทนา zenity และ wmctrl เพื่อให้ได้สิ่งที่คุณต้องการ โปรดสังเกตว่านี่เป็นสคริปต์กราฟิกซึ่งหมายความว่ามันจะทำงานได้เฉพาะกับ Windows ใน GUI และจะไม่ทำงานหากคุณพยายามเปิดบางสิ่งด้วย tty นอกจากนี้จากสิ่งที่ฉันเข้าใจอัลเฟรดทำสิ่งเดียวกัน คุณสามารถสร้างทางลัดบนเดสก์ท็อปให้กับมันหรือทางลัดของตัวเรียกใช้งานตามที่อธิบายไว้ที่นี่และที่นี่ที่นี่

บท:

#!/bin/bash
# Author: Serg Kolo
# Description: A launcher script that checks whether
#       or not a window of a particular program already exists
#       If a window of such program is open, bring it to focus
#       Otherwise - launch a new window
#       Written for /ubuntu//q/440142/295286
# Date: April 6 , 2015
#


MYPROG=$( zenity --entry --title='MY LAUNCHER' --text='Type the name of application to run' )
sleep 0.5
wmctrl -lx | awk '{print $3}' | grep -i "$MYPROG"

if [ $? -eq 0 ]; then
    sleep 1         
    wmctrl -xa $MYPROG
   #as an alternative try the line bellow
   #wmctrl -a $MYPROG
    exit 1
else 
    $MYPROG &
    exit 0
fi

หมายเหตุด้านข้าง:ในเวอร์ชันก่อนหน้าสคริปต์ใช้ echo $ เพื่อทดสอบว่านิพจน์ก่อนหน้านี้ออกมาสำเร็จหรือไม่ ตามคำแนะนำของ muru (จากการแก้ไข) ฉันเปลี่ยนรหัสเป็นรุ่นที่กะทัดรัดกว่าดังนั้นฉันขอแนะนำให้คุณดูที่เวอร์ชันก่อนหน้าและปัจจุบัน

ก่อนหน้านี้wmctrl -a $MYPROGไม่ทำงานกับการทดสอบ google-chrome หรือโครเมียมเบราว์เซอร์ ด้วยเหตุผลโง่ ๆ บางโปรแกรมมีคุณสมบัติ WM_CLASS ของหน้าต่างที่เป็นตัวพิมพ์ใหญ่ในขณะที่โปรแกรมตามที่ระบุไว้dpkg --get-selectionsเป็นตัวพิมพ์เล็ก (เพียงแค่อ่านman wmctrlและเรียกใช้wmctrl -lxคุณจะรู้) การเพิ่ม -ax นั้นควรดูแลสิ่งนี้ สคริปต์แสดงหน้าต่างโครเมียมที่เปิดอยู่แล้วตามที่ควรจะเป็น

สิ่งอื่น - wmctlr ค่อนข้างแปลกที่มันต้องการความล่าช้าบางครั้ง (มีประสบการณ์กับมันในสคริปต์อื่น) ดังนั้นฉันต้องเพิ่มsleep 1บรรทัด ก่อนหน้านี้จะเป็นการเปิดและปิดด้วย firefox แต่ตอนนี้ทำงานได้ว่ายน้ำ

สคริปต์ที่ใช้งานจริง

ในแอนิเมชั่นเบลล์คุณจะเห็นว่าในการเรียกใช้ครั้งแรกของสคริปต์มีอินสแตนซ์หนึ่งของ firefox ที่เปิดอยู่และสคริปต์จะสลับโฟกัสไปที่หน้าต่างนั้น ในการทดสอบครั้งที่สองฉันเปิดอินสแตนซ์ใหม่ของ google-chrome ซึ่งไม่ได้เปิดไว้ก่อนหน้านี้ (หมายเหตุด้านข้าง: หากคุณมีความรู้เกี่ยวกับเดสก์ท็อปอยู่แล้วนั่นคือ openbox พร้อมท่า cairo)

ตามคำแนะนำในความคิดเห็นการลบภาพเคลื่อนไหวที่ฝังจะถูกลิงค์เท่านั้น รายงานว่ามันเสียโปรด! http://i.stack.imgur.com/puuPZ.gif

อัปเดต 7 เมษายน

ฉันปรับปรุงสคริปต์บ้างเพื่อให้โปรแกรมทั้งหมดที่แสดงอยู่ในกล่องรายการแบบหล่นลงของ zenity ตอนนี้ผู้ใช้ไม่ต้องจดจำแต่ละโปรแกรม แต่สามารถเลื่อนดูรายการโดยใช้ปุ่มลูกศรหรือเพียงแค่เปิดเมนูแบบเลื่อนลง นอกจากนี้เวอร์ชันที่ได้รับการปรับปรุงนี้จะเพิ่มหน้าต่างไม่ใช่ชื่อ แต่ตามรหัสหน้าต่างซึ่งให้ประสิทธิภาพที่ดีกว่ามาก โปรดทราบว่าวิธีที่ฉันใช้งานไฟล์. เดสก์ท็อปนั้นซ้ำซ้อนใช้คำสั่ง cut สองครั้ง แต่เนื่องจากสคริปต์ของฉันไม่ดีเท่านี้ทั้งหมดนี้เป็นสิ่งที่ฉันทำได้ ข้อเสนอแนะสำหรับการปรับปรุงยินดีต้อนรับ!

#!/bin/bash
# Author: Serg Kolo
# Description: Second version of a launcher script that checks whether
#       or not a window of a particular program already exists
#       If a window of such program is open, bring it to focus
#       Otherwise - launch a new window
#       Written for /ubuntu//q/440142/295286
# Date: April 7 , 2015
#

set -x

MYPROG=$(zenity --entry --text 'Select program from list' --entry-text $(ls /usr/share/applications/*.desktop | cut -d'/' -f5 | cut -d'.' -f1 | xargs echo))
sleep 0.5
# Do we have a window of such program ?
wmctrl -lx| awk '{print $3}'  | grep -i $MYPROG

if [ $? -eq 0 ]; then
    sleep 0.5 # if yes, find that window id, and raise it
    WINID=$(wmctrl -lx | grep -i $MYPROG | awk 'NR==1{print $1}')
    wmctrl -ia $WINID &
 #  exit 0  
else
    echo $MYPROG | grep -i libreoffice
    if [ $? -eq 0  ]
    then
        MYPROG=$(echo $MYPROG | sed 's/-/ --/g')
    fi
    $MYPROG &

#  exit 0 
fi

ป้อนคำอธิบายรูปภาพที่นี่

โบนัส:

ฉันได้พบอัลเบิร์ตซึ่งเป็นอัลเฟรดเวอร์ชันลีนุกซ์ แต่ไม่ได้ลองด้วยตัวเอง มูลค่าการตรวจสอบว่า อย่างไรก็ตามอย่างที่ยาโคบจดไว้แล้วมันก็ยังบั๊ก

มีแอปที่เรียกว่า Gnome-Do ซึ่งมีลักษณะกราฟิกที่คล้ายกับอัลเฟรดอย่างไรก็ตามมันไม่มีฟังก์ชันการทำงานเช่นเดียวกับสคริปต์นี้

ป้อนคำอธิบายรูปภาพที่นี่

แจ้งให้เราทราบหากคุณชอบสคริปต์นี้หากมีสิ่งใดที่ต้องแก้ไขและอย่าลืมโหวตคำตอบถ้าคุณเห็นว่ามีประโยชน์


โดยวิธีการแจ้งให้ทราบล่วงหน้าว่าฉันพิมพ์ชื่อของโปรแกรมที่ - dpkg --get-selectonsตรงตามที่ระบุไว้ใน การเรียกใช้ตัวเขียน libreoffice โดยการพิมพ์ "writer" จะไม่ทำงาน แต่คุณสามารถสร้าง symlink ได้ในโฟลเดอร์ ~ / bin, / bin หรือ / usr / bin หรือใช้นามแฝงใน. bashrc หรือ. profile
Sergiy Kolodyazhnyy

โปรดสังเกตว่าคุณจะต้องติดตั้ง wmctl ไม่ได้มาโดยค่าเริ่มต้น แต่ก็สะดวกดี ฉันเคยใช้มันเพื่อทำสิ่งนี้
Sergiy Kolodyazhnyy

คุณสามารถแทนที่คำอธิบายประกอบด้วยรูปภาพเชื่อมโยงไปยังคำอธิบายประกอบได้หรือไม่ เบราว์เซอร์ของฉันยังคง "โหลด" หน้าดังนั้นฉันไม่สามารถรีเฟรชได้ (และคำอธิบายประกอบไม่ได้ทำงาน :))
Jacob Vlijm

ขอบคุณ! ลิงก์ใช้งานได้ดีใน Chrome ไม่ใช่ใน Firefox
Jacob Vlijm

@JacobVlijm ฮึงงั้น ไม่แน่ใจว่าทำไม firefox ปฏิเสธที่จะเล่น มันเป็นเพียงลิงค์ของเรากับสิ่งที่ฉันอัพโหลดไว้ตอนแรก
Sergiy Kolodyazhnyy

5

1. Dash the Second

ด้านล่างสคริปต์ที่สามารถใช้เป็นทางเลือก Dash เมื่อมาถึงการใช้งานแอปพลิเคชันตามที่อธิบายไว้ในคำถามของคุณ

มันมีอยู่ของหน้าต่างที่มีฟังก์ชั่นเช่นเดียวกับ Dash; หากพิมพ์แอปพลิเคชั่นหนึ่งตัวหรือมากกว่าแอปพลิเคชันจะปรากฏในรายการ กดEnterเพื่อเริ่มหรือเพิ่มแอพพลิเคชั่นขึ้นอยู่กับว่ากำลังใช้งานอยู่หรือไม่

คุณสามารถโทรจากชุดคีย์ลัดหรือตั้งไอคอนในตัวเรียกใช้เพื่อใช้ในลักษณะเดียวกับ Dash (ดูเพิ่มเติมด้านล่าง) หรือทั้งสองอย่าง

ป้อนคำอธิบายรูปภาพที่นี่

บท

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

user = getpass.getuser()
get = lambda x: subprocess.check_output(["/bin/bash", "-c", x]).decode("utf-8")
skip = ["%F", "%U", "%f", "%u"]; trim = ["chrome", "chromium", "nautilus"]

def apply(command):
    if "libreoffice" in command:
        proc = [l.split()[0] for l in get("ps -u "+user).splitlines() if "soffice.bin" in l]
        module = command.split("--")[-1]
        time.sleep(0.1)
        try:
            ws = sum([[w.split()[0] for w in get("wmctrl -lp").splitlines() if process in w and module in w.lower()] for process in proc], [])[0]
            subprocess.call(["wmctrl", "-ia", ws])
        except IndexError:
            subprocess.Popen(["/bin/bash", "-c", command+"&"])
    else:
        check = command.split("/")[-1][:14]
        proc = [p.split()[0] for p in get("ps -u "+user).splitlines() if check in p]
        time.sleep(0.5)
        try:
            ws = sum([[w.split()[0] for w in get("wmctrl -lp").splitlines() if process in w] for process in proc], [])
            if command == "nautilus":
                real_window = [w for w in ws if "_NET_WM_WINDOW_TYPE_NORMAL" in get("xprop -id "+w)][0]
            else:
                real_window = ws[0]
            subprocess.call(["wmctrl", "-ia", real_window])
        except IndexError:
            subprocess.Popen(["/bin/bash", "-c", command+"&"])
# default directories of .desktop files; globally, locally, LibreOffice- specific when separately installed
globally = "/usr/share/applications"; locally = os.environ["HOME"]+"/.local/share/applications"; lo_dir = "/opt/libreoffice4.4/share/xdg"
# create list of .desktop files; local ones have preference
local_files = [it for it in os.listdir(locally) if it.endswith(".desktop")]
global_files = [it for it in os.listdir(globally) if it.endswith(".desktop")]
lo_spec = [it for it in os.listdir(lo_dir) if it.endswith(".desktop")] if os.path.exists(lo_dir) else []
for f in [f for f in local_files if f in global_files]:
    global_files.remove(f)
for f in [f for f in local_files if f in lo_spec]:
    lo_spec.remove(f)
dtfiles = [globally+"/"+f for f in global_files]+[locally+"/"+f for f in local_files]+[lo_dir+"/"+f for f in lo_spec]
# create list of application names / commands
valid = []
for f in dtfiles:
    content = open(f).read()
    if all(["NoDisplay=true" not in content,"Exec=" in content]):
        lines = content.splitlines()
        name = [l.replace("Name=", "") for l in lines if "Name=" in l][0]
        command = [l.replace("Exec=", "") for l in lines if all(["Exec=" in l, not "TryExec=" in l])][0]
        valid.append((name, command))
valid.sort(key=lambda x: x[0])
# create zenity list + window
list_items = '"'+'" "'.join([f[0] for f in valid])+'"'
proposed = 'zenity --list --text "Type one or more characters... " --column="Application List" '+\
           '--title="Dash the Second" --height 450 --width 300 '+list_items
try:
    choice = subprocess.check_output(["/bin/bash", "-c", proposed]).decode("utf-8").strip().split("|")[0]
    command = [r[1] for r in valid if r[0] == choice][0]
    # command fixes:
    for s in skip:
        command = command.replace(" "+s, "")
    for t in trim:
        if t in command:
            command = t
    apply(command)
except subprocess.CalledProcessError:
    pass

วิธีใช้

สคริปต์ต้องการwmctrlติดตั้ง:

sudo apt-get install wmctrl

แล้ว:

  1. วางสคริปต์ด้านบนลงในไฟล์เปล่าแล้วบันทึกเป็น dash_alternative.py
  2. เพิ่มลงในชุดคีย์ลัด: เลือก: การตั้งค่าระบบ> "คีย์บอร์ด"> "ทางลัด"> "ทางลัดที่กำหนดเอง" คลิกที่ "+" และเพิ่มคำสั่ง:

    python3 /path/to/dash_alternative.py
    

คำอธิบาย

เมื่อสคริปต์ที่มีการเรียกใช้โดยจะแสดงการใช้งานทั้งหมด, /usr/share/applicationsตัวแทนใน ค้นหา.dektopไฟล์สร้างรายการชื่อแอปพลิเคชันทั้งหมด (จากบรรทัด "ชื่อ =" แรก) และคำสั่งเพื่อเรียกใช้แอปพลิเคชัน (จากบรรทัด "Exec =" บรรทัดแรก)

จากนั้นรายการ Zenity จะถูกสร้างขึ้นนำเสนอแอปพลิเคชันทั้งหมดในลักษณะที่เรียงลำดับ

เมื่อใดก็ตามที่เลือกแอปพลิเคชันสคริปต์จะดูในรายการกระบวนการที่กำลังดำเนินการหากแอปพลิเคชันทำงานอยู่ ถ้าเป็นเช่นนั้นหน้าต่างที่เกี่ยวข้องจะเพิ่มขึ้น หากไม่มีอินสแตนซ์ใหม่จะเปิดขึ้น

หมายเหตุ

  1. ในการเรียกใช้สคริปต์ใน12.04 (เนื่องจากคำถามเดิมถูกติดแท็ก12.04เพียงแค่เปลี่ยน shebang เป็น#!/usr/bin/env pythonและเรียกใช้โดยคำสั่ง

    python /path/to/dash_alternative.py
    
  2. เท่าที่ฉันทดสอบสคริปต์ทำงานได้ดี คำสั่งและ (ไม่ใช่ -) ชื่อกระบวนการที่สอดคล้องกัน (เช่นLibreOffice<> soffice.bin), ประเภทหน้าต่างที่แตกต่างกัน ( nautilusมีหลายประเภทหน้าต่างที่แตกต่างกันนอกเหนือจากหน้าต่าง "ของจริง"), หลาย pids ต่อแอปพลิเคชัน ( Chromium, Google-chrome) อาจทำให้เกิดข้อยกเว้น ข้างบน. หากใครพบปัญหากรุณาพูดถึงมัน

2. เพิ่มเติม: การตั้งค่าเป็นทางเลือกแทน Dash "ของจริง" สำหรับการเรียกใช้แอปพลิเคชัน

  1. คัดลอกและรักษาความปลอดภัยสคริปต์ดังกล่าวข้างต้น
  2. บันทึกไอคอนด้านล่าง (คลิกขวา> ปลอดภัยตาม) เป็น dash_alternative.png

    ป้อนคำอธิบายรูปภาพที่นี่

  3. คัดลอกโค้ดด้านล่างลงในไฟล์ที่ว่างเปล่า, บันทึกไว้ในฐานะ~/.local/share/applications dash_thesecond.desktopตั้งค่าเส้นทางที่ถูกต้องสำหรับ/path/to/dash_alternative.py(สคริปต์) และ/path/to/dash_alternative.png(ไอคอน)

    [Desktop Entry]
    Name=Dash the Second
    Exec=python3 /path/to/dash_alternative.py
    Icon=/path/to/dash_alternative.png
    Type=Application
    Hidden=false
    
  4. ลาก.desktopไฟล์ไปที่ตัวเรียกใช้:


1
ดีใจที่ได้ทราบว่ามีโฟลเดอร์ทั้งหมดของไฟล์. ktop! ฉันสงสัยว่าแอปพลิเคชันแบบเนทีฟและแอพที่ติดตั้งไว้จะแสดงรายการตามชื่อแทนที่จะเป็นคำสั่งได้อย่างไร ทำได้ดีมาก!
Sergiy Kolodyazhnyy

@Serg ขอบคุณ! และเช่นเดียวกันกับคุณ :) นอกจากนี้ยังมีไดเรกทอรีท้องถิ่นสำหรับไฟล์:.desktop ~/.local/share/applicationsฉันคิดว่าฉัน จำกัด การค้นหาเฉพาะแอปพลิเคชันที่ติดตั้งทั่วโลก
Jacob Vlijm

จาค็อบผมไม่ทราบว่าหลาม แต่บางทีนี้จะเป็นประโยชน์กับคุณในการปรับปรุงสคริปต์ของคุณโดยการเปลี่ยนมันเป็นขอบเขตความสามัคคี ความเข้าใจของฉันคือว่านี่เป็นวิธีเดียวที่จะเปลี่ยนการทำงานของเส้นประอย่างที่ OP ต้องการ
Sergiy Kolodyazhnyy

@Serg ขอบคุณ! นั่นคือโพสต์ที่น่าสนใจแน่นอนจะดูดี!
Jacob Vlijm

0

สำหรับตัวเรียกใช้งาน (พาเนลแนวตั้งทางด้านซ้ายของหน้าจอ) นี่เป็นลักษณะการทำงานเริ่มต้นอยู่แล้วเนื่องจากเป็นอินเตอร์เฟสการสลับงาน

สำหรับเส้นประ (ขนาดใหญ่ที่เปิดเมื่อคุณคลิกโลโก้อูบุนตู) ไม่มีวิธีใดที่จะเปลี่ยนพฤติกรรมในลักษณะนี้ได้

อย่างไรก็ตามแอพบางตัวอาจทำสิ่งนี้อยู่แล้วเนื่องจากถูกออกแบบมาเพื่อทำงานในลักษณะนั้น แอพทั้งหมดไม่ได้มีการใช้งานและไม่ควรจะเป็นในลักษณะดังกล่าว

แม้ว่าจะเป็นคุณลักษณะอื่นหากคุณเปิดหน้าต่างแบบกระจายด้วยSuper+ Wและเริ่มพิมพ์ชื่อแอปพลิเคชันหน้าต่างสำหรับแอปพลิเคชันนั้นจะเป็นชื่อเดียวที่แสดง


ฉันได้พบสิ่งที่ OP ต้องการเวอร์ชัน Linux ดูโพสต์ของฉันส่วนโบนัส เห็นได้ชัดว่ามีคนอื่นคิดที่จะนำอัลเฟรดมาสู่ Linux
Sergiy Kolodyazhnyy

1
@Serg กรุณาลองใช้ Albert; Albert ยังคงมี "ข้อผิดพลาด LibreOffice", "Chromium bug" และ "Chrome bug" แม้แต่ "ไฟล์บั๊ก" ... อัลเบิร์ตก็เปิดอินสแตนซ์ใหม่ของแอปพลิเคชันเหล่านั้นอยู่เสมอ LibreOffice ไม่ทำงานเลย นอกจากนี้ในความคิดเห็นด้านล่างลิงก์ของคุณคุณสามารถค้นหาจำนวนของปัญหา
Jacob Vlijm

@Serg ไม่คุณพบวิธีแก้ปัญหาด้วยการเพิ่มซอฟต์แวร์เพิ่มเติมที่ทำงานในพื้นหลังซึ่งให้ประสบการณ์ผู้ใช้ที่แตกต่างกันอย่างสิ้นเชิงและต้องการการฝึกอบรมวิธีค้นหาแอปพลิเคชันอีกครั้ง คำถามที่ถามคือทำอย่างไรจึงจะทำงานนี้ได้ใน Unity dash คุณอาจได้รับคุณลักษณะที่คล้ายกันนอก Unity เอง แต่วิธีเดียวที่จะเปลี่ยน Unity เพื่อทำสิ่งนี้คือการเปลี่ยนซอร์สโค้ด
dobey

@dobey นั่นเป็นเรื่องจริง การเปลี่ยนฟังก์ชั่นเส้นประอยู่เหนือการเข้าถึงของเราดังนั้น . . ต้องทำอย่างไรกับสิ่งที่เรามีอยู่ใช่ไหม? นอกเสียจากว่าจะมีนักพัฒนาที่ยินดีที่จะโค้ดขอบเขตความเป็นเอกภาพด้วยฟังก์ชั่นดังกล่าว . .
Sergiy Kolodyazhnyy
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.