여러 Okular 인스턴스에서 동일한 파일을 열지 마십시오.

ysalmon

이미 열린 파일에서 호출되면 okular는 단순히 다른 인스턴스를 시작합니다. 예를 들어 LaTeX 문서를 컴파일하고 뷰어를 반복적으로 시작할 때 또는 단순히 파일을 여는 것을 잊었다가 파일 관리자에서 다시 열 때 복잡해집니다.

반대로 Evince는 이것을 감지하고 대신 기존 창을 올립니다.

okular로 이것을 달성하는 방법은 무엇입니까?

ysalmon

여기에 빠르고 더러운 트릭이 있습니다. 기존 인스턴스 만 확인하는 Python 스크립트입니다.

사용하려면 이 스크립트의 이름 /usr/bin/okular./usr/bin/okular.real/usr/bin/okular

#! /usr/bin/env python3

import subprocess
import sys
import os
import getpass

OKULAR_FN = "okular.real"

def get_okular_instance(filename) :
    try :
        lproc = subprocess.check_output(["ps", "-C", OKULAR_FN, "-o", "pid,user,args", "--no-headers"], universal_newlines=True).splitlines()
    except subprocess.CalledProcessError :
        return []
    result = []
    me = getpass.getuser()
    for proc in lproc :
        pid, user, _, args = proc.split(maxsplit=3)
        if user == me and args == filename :
            result.append(pid)
    return result

def get_window_id(pid) :
    fenetres = subprocess.check_output(["wmctrl", "-ulp"], universal_newlines=True)
    for f in fenetres.splitlines() :
        donnees = f.split()
        if len(donnees) < 3 :
            continue
        if donnees[2] == pid :
            return donnees[0]
    return None

def raise_window(wid) :
    subprocess.call(["wmctrl", "-i", "-a", wid])

def runcmd(cmdl) :
    subprocess.Popen(cmdl, stdin=None, stdout=None, stderr=None, close_fds=True)

def main() :
    if len(sys.argv) < 2 :
        runcmd([OKULAR_FN])
    else :
        filename = os.path.abspath(sys.argv[1])
        pidl = get_okular_instance(filename)
        if len(pidl) != 1 :
            runcmd([OKULAR_FN, filename])
        else :
            wid = get_window_id(pidl[0])
            if wid is None :
                runcmd([OKULAR_FN, filename])
            else :
                raise_window(wid)

if __name__ == "__main__" :
    main()

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

pandas에서 동일한 .loc을 여러 번 작성하지 마십시오.

분류에서Dev

여러 인스턴스에서 일부 속성 값을 확인하고 Python의 동일한 인스턴스에서 다른 속성을 인쇄하십시오.

분류에서Dev

Word 2007에서 동일한 파일의 여러 인스턴스 열기

분류에서Dev

파이썬을 사용하여 한 번에 여러 텍스트 파일의 마지막 줄을 목록으로 인쇄하십시오.

분류에서Dev

여러 임시 인스턴스를 동일한 데이터베이스에서 지원할 수 있습니까?

분류에서Dev

Spring Batch에서 동일한 파일을 두 번 처리하지 마십시오.

분류에서Dev

ggplot2의 여러 테마 요소에 동일한 값을 지정하십시오.

분류에서Dev

동일한 파일을 열지 마십시오.

분류에서Dev

파일과 목록을 비교하여 동일한 지 확인하십시오.

분류에서Dev

mysql json 열에서 검색하여 동일한 배열 인덱스에서 여러 기준을 확인하십시오.

분류에서Dev

기존 SQL Server 인스턴스에서 여러 파일 열기

분류에서Dev

foreach에서 여러 날짜가 동일한 지 확인하십시오.

분류에서Dev

배열에서 동일한 항목을 출력하지 마십시오.

분류에서Dev

동일한 페이지에서이 Accordion의 여러 인스턴스

분류에서Dev

Okular를 사용하여 마운트 된 USB 드라이브에서 PDF 파일을 열 수 없습니다.

분류에서Dev

파이썬에서 동시에 동일한 객체의 여러 인스턴스 생성

분류에서Dev

주말을 재 배열 한 후 열을 이동하여 동일한 숫자 i를 가지며 숫자 시퀀스 파이썬을 따르십시오.

분류에서Dev

동일한 파일 오류에서 여러 번 스트림 닫기 및 열기

분류에서Dev

1-6 행에서 6-12 등의 파일을 읽고 한 열을 비교하여 동일한 버전이 있는지 확인하십시오.

분류에서Dev

mySQL-특정 행에 동일한 값이있는 경우 게시물을 여러 번 가져 오지 마십시오.

분류에서Dev

패키지에서 오류가 발생하면 패키지 소스 파일을 열지 마십시오.

분류에서Dev

Spring Boot를 사용하여 Excel 파일을 읽는 동안 MySQL에 중복을 삽입하지 마십시오.

분류에서Dev

Powershell에서 단일 SSMS 인스턴스에서 여러 SQL 파일 열기

분류에서Dev

argparse에서 동일한 유형의 부모 파서의 여러 인스턴스를 지정하는 방법

분류에서Dev

여러 서비스에 대한 동일한 메시지

분류에서Dev

두 파일 사이에서 발견 된 경우 동일한 문자열을 다시 인쇄하지 마십시오.

분류에서Dev

==를 사용하여 두 객체가 파이썬에서 동일한 값을 갖는지 확인하십시오.

분류에서Dev

객체 지향 메서드를 사용하여 동일한 클래스의 인스턴스에 대한 파이썬 동시성

분류에서Dev

chrome.tabs.executeScript (...)를 사용할 때 동일한 스크립트를 여러 번 동적으로 삽입하지 마십시오.

Related 관련 기사

  1. 1

    pandas에서 동일한 .loc을 여러 번 작성하지 마십시오.

  2. 2

    여러 인스턴스에서 일부 속성 값을 확인하고 Python의 동일한 인스턴스에서 다른 속성을 인쇄하십시오.

  3. 3

    Word 2007에서 동일한 파일의 여러 인스턴스 열기

  4. 4

    파이썬을 사용하여 한 번에 여러 텍스트 파일의 마지막 줄을 목록으로 인쇄하십시오.

  5. 5

    여러 임시 인스턴스를 동일한 데이터베이스에서 지원할 수 있습니까?

  6. 6

    Spring Batch에서 동일한 파일을 두 번 처리하지 마십시오.

  7. 7

    ggplot2의 여러 테마 요소에 동일한 값을 지정하십시오.

  8. 8

    동일한 파일을 열지 마십시오.

  9. 9

    파일과 목록을 비교하여 동일한 지 확인하십시오.

  10. 10

    mysql json 열에서 검색하여 동일한 배열 인덱스에서 여러 기준을 확인하십시오.

  11. 11

    기존 SQL Server 인스턴스에서 여러 파일 열기

  12. 12

    foreach에서 여러 날짜가 동일한 지 확인하십시오.

  13. 13

    배열에서 동일한 항목을 출력하지 마십시오.

  14. 14

    동일한 페이지에서이 Accordion의 여러 인스턴스

  15. 15

    Okular를 사용하여 마운트 된 USB 드라이브에서 PDF 파일을 열 수 없습니다.

  16. 16

    파이썬에서 동시에 동일한 객체의 여러 인스턴스 생성

  17. 17

    주말을 재 배열 한 후 열을 이동하여 동일한 숫자 i를 가지며 숫자 시퀀스 파이썬을 따르십시오.

  18. 18

    동일한 파일 오류에서 여러 번 스트림 닫기 및 열기

  19. 19

    1-6 행에서 6-12 등의 파일을 읽고 한 열을 비교하여 동일한 버전이 있는지 확인하십시오.

  20. 20

    mySQL-특정 행에 동일한 값이있는 경우 게시물을 여러 번 가져 오지 마십시오.

  21. 21

    패키지에서 오류가 발생하면 패키지 소스 파일을 열지 마십시오.

  22. 22

    Spring Boot를 사용하여 Excel 파일을 읽는 동안 MySQL에 중복을 삽입하지 마십시오.

  23. 23

    Powershell에서 단일 SSMS 인스턴스에서 여러 SQL 파일 열기

  24. 24

    argparse에서 동일한 유형의 부모 파서의 여러 인스턴스를 지정하는 방법

  25. 25

    여러 서비스에 대한 동일한 메시지

  26. 26

    두 파일 사이에서 발견 된 경우 동일한 문자열을 다시 인쇄하지 마십시오.

  27. 27

    ==를 사용하여 두 객체가 파이썬에서 동일한 값을 갖는지 확인하십시오.

  28. 28

    객체 지향 메서드를 사용하여 동일한 클래스의 인스턴스에 대한 파이썬 동시성

  29. 29

    chrome.tabs.executeScript (...)를 사용할 때 동일한 스크립트를 여러 번 동적으로 삽입하지 마십시오.

뜨겁다태그

보관