FvwmPerl - 클라우드 온라인

Ubuntu Online, Fedora Online, Windows 온라인 에뮬레이터 또는 MAC OS 온라인 에뮬레이터와 같은 여러 무료 온라인 워크스테이션 중 하나를 사용하여 OnWorks 무료 호스팅 공급자에서 실행할 수 있는 FvwmPerl 명령입니다.

프로그램:

이름


FvwmPerl - fvwm perl 조작자 및 전처리기

개요


FvwmPerl은 다음에 의해 생성되어야 합니다. fvwm(1) 정상적인 기능을 위해.

이 모듈을 실행하려면 다음 명령을 구성에 배치하십시오.

모듈 FvwmPerl [매개 변수]

또는 :

ModuleSynchronize FvwmPerl [매개 변수]

즉시 FvwmPerl에 명령 보내기를 시작하려는 경우.

기술


이 모듈은 perl 스크립팅 기능으로 fvwm 명령을 확장하기 위한 것입니다. 가능하게 합니다
fvwm 구성 파일에 perl 표현식을 포함하고 fvwm 명령을 구성합니다.

기도


FvwmPerl의 고유하고 지속적인 인스턴스를 호출하려면 다음을 수행하는 것이 좋습니다.
에서 이것을 하십시오 시작 기능. 위에서 호출하는 것도 가능하지만 다음과 관련됩니다.
여기서 논의되지 않은 몇 가지 문제.

AddToFunc StartFunction I 모듈 FvwmPerl

몇 가지 명령줄 스위치가 있습니다.

FvwmPerl [ --평가 선 ] [ --짐 파일 ] [ --전처리 [ --인용하다 문자 ] [ --winid 와이드 ] [
--cmd ] [ --nosend ] [ --noremove ] [ 라인 | 파일 ] ] [ --내 보내다 [이름] ] [ --머무르다 ] [
--nolock ] [ 별칭 ]

긴 스위치는 짧은 한 글자 스위치로 축약될 수 있습니다.

-e|--평가 line - 주어진 perl 코드를 평가합니다.

-l|--짐 file - 주어진 파일에서 Perl 코드를 평가합니다.

-p|--전처리 [ file ] - 주어진 fvwm 구성 파일을 사전 처리합니다.

다음 5가지 옵션은 다음과 함께만 유효합니다. --전처리 옵션을 선택합니다.

-c|--cmd line - 파일 대신 전처리할 fvwm 명령

-q|--인용하다 char - 기본 '%' 따옴표 변경

-w|--winid wid - 명시적 창 컨텍스트 설정(숫자로 시작해야 함, XNUMX월 또는
XNUMX진수 형식; 이 창 ID는 암시적 창 컨텍스트를 덮어씁니다.)

--nosend - 전처리된 파일을 보내지 않음 fvwm for 읽기ing, 기본값은 보내기입니다.
비 fvwm 구성 파일을 사전 처리하는 데 유용합니다.

--noremove - 전처리된 파일을 보낸 후 제거하지 마십시오. fvwm for 읽기잉,
기본값은 제거입니다. 디버깅에 유용합니다.

-x|--내 보내다 [names] - fvwm 바로 가기 기능을 정의합니다(기본적으로
"평가" 및 "."). 이 옵션은 다음을 의미합니다. --머무르다.

-s|--머무르다 - 다음에 실행을 계속합니다. --평가, --짐 or --전처리 처리됩니다. 에 의해
기본적으로 이 경우 모듈은 영구적이지 않습니다. --nostay 가정합니다.

--nolock - 3가지 동작 옵션 중 하나가 주어졌을 때 이 옵션은 잠금 해제를 유발합니다. fvwm
즉시. 기본적으로 요청된 작업은 동기식으로 실행됩니다. 이것은 단지 만든다
다음과 같이 호출될 때의 차이점:

ModuleSynchronous FvwmPerl --someconfig.ppp 전처리

If --nolock 여기에 추가되고, 모듈동기 즉시 반환합니다. 참고 모듈 반품
이 옵션에 관계없이 즉시.

사용 ALIAS


별칭은 여러 모듈 호출을 허용하고 모든 호출과 별도로 작동합니다.
다음은 예입니다.

모듈동기식 FvwmPerl FvwmPerl-JustTest
SendToModule FvwmPerl-JustTest 평가 $a = 2 + 2; $b = $a
SendToModule FvwmPerl-JustTest 평가 cmd("Echo 2 + 2 = $b")
KillModule FvwmPerl FvwmPerl-JustTest

전처리


효과적인 처리 솔루션 중 하나는 다음을 사용하여 전체 fvwm 구성을 전달하는 것입니다.
"FvwmPerl --preprocess"에 펄 코드를 포함했습니다. 다른 방법은 perl을 작성하는 것입니다.
fvwm 명령을 생성하고 실행을 위해 전송하는 스크립트, 이 스크립트는 로드될 수 있습니다.
"FvwmPerl --load"를 사용합니다. 그러나 전처리만 하는 중간 솔루션이 있습니다.
별도의 구성 라인(또는 대안으로 별도의 perl 명령을 실행하여
fvwm 명령 생성).

다음 코드 스니펫은 특정에 산술 및 문자열 스크립팅 기능을 추가합니다.
이것이 필요한 라인. 이것을 사용하려면 첫 번째 명령으로 FvwmPerl을 시작하고 싶습니다.
다른 명령을 미리 처리하도록 요청할 수 있습니다.

모듈동기화 FvwmPerl

AddToFunc .
+ I SendToModule FvwmPerl 전처리 -c -- $*

. Exec exec xterm -name xterm-%{++$i}% # 고유한 이름 사용

. GotoDesk 0 %{ $[desk.n] + 1 }% # 다음 데스크로 이동

. 실행 간부 %{ -x "/usr/bin/X11/aterm" ? "aterm": "xterm" }% -sb

# 창 중앙에
다음(MyWindow) . 이동하다
%{($WIDTH - $[w.width]) / 2}%p %{($HEIGHT - $[w.height]) / 2}%p

. Exec exec xmessage %{2 + 2}% # 간단한 계산기

. %{main::show_message(2 + 2, "또 다른 계산기"); ""}%

ACTIONS


FvwmPerl이 수행할 수 있는 몇 가지 작업이 있습니다.

평가 펄 코드
펄 코드 한 줄을 평가합니다.

특별한 기능 cmd("명령") 펄 코드에서 명령을 다시 보내는 데 사용할 수 있습니다.
fvwm.

펄 코드에 오류가 있으면 다음과 함께 표준 오류 스트림에 인쇄됩니다.
[FvwmPerl][평가]: 헤더가 추가되었습니다.

하중 파일 이름
perl 코드 파일을 로드합니다. 파일이 정규화되지 않은 경우 다음에서 검색됩니다.
사용자 디렉토리 $FVWM_USERDIR(보통 ~/.fvwm) 및 시스템 전체 데이터 디렉토리
$FVWM_DATADIR.

특별한 기능 cmd("명령") 펄 코드에서 명령을 다시 보내는 데 사용할 수 있습니다.
fvwm.

펄 코드에 오류가 있으면 다음과 함께 표준 오류 스트림에 인쇄됩니다.
[FvwmPerl][로드]: 헤더가 추가되었습니다.

전처리 [-q|--따옴표 문자] [-c|--cmd] [ | 파일]
fvwm 구성 전처리 파일 또는 (--cmd가 주어진 경우) . 이 파일에는
건드리지 않고(일반적으로 fvwm 명령) 특별히 사전 형식화된 perl 코드는
처리하고 교체합니다. 안에 포함된 텍스트 %{ ... }% 어디에서나 시작할 수 있는 구분 기호
줄에서 같은 줄이나 다른 줄의 끝은 펄 코드입니다.

XNUMXD덴탈의 견적을 원하시면, 오늘 Kevin Lee Company 에 연락주세요. 매개 변수는 perl 코드 구분 기호를 변경합니다. 다음과 같이 단일 문자가 주어지면
'@' 구분 기호는 다음과 같습니다. @{ ... }@. 주어진 인용문이 2자이면 다음과 같습니다. <>, 따옴표
are <{ ... }>

평가 결과는 perl 코드로 대체됩니다. 즉 %{$a = "c"; ++$a}%
"d"로 대체됩니다.

평가가 다름 평가하중 패키지 PreprocessNamespace에서 수행됩니다.
그리고없이 사용 엄격한, 그래서 당신은 두려움없이 변수 이름을 자유롭게 사용할 수 있습니다
갈등. 초기화되지 않은 변수를 사용하여 정의되지 않았거나 빈 목록을 의미하지 마십시오(그들은
실제로 이전 전처리 작업에 의해 초기화될 수 있음) 다음과 같은 경우 정리를 수행합니다.
필요합니다. 변수와 함수 본관 패키지는 여전히 사용 가능합니다.
::cmd() 또는 ::건너뛰다(), 하지만 그 동안 액세스하는 것은 좋은 생각이 아닙니다.
전처리.

특별한 기능이 있습니다 포함(파일) 파일을 로드하고 전처리하고
전처리 결과를 반환합니다. 재귀를 피하십시오.

포함된 perl 코드에 오류가 있으면 표준 오류로 인쇄됩니다.
스트림 앞에 [FvwmPerl][전처리]: 머리글. 의 결과
이 경우 대체는 비어 있습니다.

Perl 코드에서 다음 변수를 사용할 수 있습니다.

$USER, $DISPLAY, $WIDTH, $HEIGHT, $FVWM_VERSION, $FVWM_MODULEDIR, $FVWM_DATADIR,
$FVWM_USERDIR

전처리 시 다음 줄 기반 지시문이 인식됩니다. 그들은
perl 코드(있는 경우)가 대체된 후 처리됩니다.

%반복 계산
다음 줄이 반복되도록 합니다. 계산 시간.

%모듈 구성 모듈 이름 [ 파괴하다 ]
다음 줄은 주어진 모듈 구성으로 해석됩니다. 만약에
"destroy"는 이전 모듈 구성이 먼저 제거되도록 지정됩니다.

%접두사 접두사
다음 줄에 인용된 접두사를 붙입니다. 접두사.

%종료 선택적 주석
위에서 설명한 지시문을 종료하며 중첩될 수 있습니다.

예 :

%Prefix "AddToFunc SwitchToWindow I"
아이콘화 끄기
창가림 꺼짐
증가
WarpToWindow 50 50
%끝

%ModuleConfig FvwmPager 파괴
색상 세트 0
글꼴 lucidasans-10
데스크탑스케일 28
미니 아이콘
%End ModuleConfig FvwmPager

%Prefix "모두(MyWindowToAnimate) ResizeMove "
100 100 %{($WIDTH - 100) / 2}% %{($HEIGHT - 100) / 2}%
%반복 %{$count}%
br w+2c w+2c w-1c w-1c
%끝
%반복 %{$count}%
br w-2c w-2c w+1c w+1c
%끝
%종료 접두사

추가 전처리 매개변수 --nosend 및 --noremove도 제공될 수 있습니다. 참조
상단에 설명.

수출 [기능 이름]
보내기 fvwm 다양한 활성화에 도움이 되는 바로 가기 기능의 정의
모듈의 동작(예: 평가, 하중전처리).

함수 이름(기능 이름)는 쉼표 및/또는 공백으로 구분할 수 있습니다. 기본적으로,
두 개의 함수 "Eval" 및 "." 가정됩니다.

함수에 정의된 실제 동작은 가능한 경우 함수 이름에서 추측되며,
여기서 함수 이름 "." 예약되어 있습니다 전처리 액션.

예를 들어, 다음 두 fvwm 명령 중 하나는

SendToModule MyPerl 내보내기 PerlEval,PP
FvwmPerl --PerlEval, PP MyPerl 내보내기

다음 두 가지 단축키 기능을 정의합니다.

DestroyFunc PerlEval 평가
AddToFunc I SendToModule MyPerl 평가 $*
DestroyFunc PP
AddToFunc I SendToModule MyPerl 전처리 -c -- $*

이 4가지 작업은 다음 3가지 방법 중 하나로 요청할 수 있습니다. 1) FvwmPerl이 있을 때 명령줄에서
호출됨(이 경우 FvwmPerl은 수명이 짧습니다. --머무르다 or --내 보내다 또한 주어진다), 2)
SendToModule을 사용하여 fvwm 구성에서 해당 메시지를 전송하여 3)
perl 코드의 해당 perl 함수.

기능


perl 코드가 호출할 수 있는 몇 가지 함수가 있습니다.

cmd($fvwm_명령)
의 경우 평가 or 하중 - 문자열을 fvwm으로 되돌려 보냅니다. $fvwm_명령. 의 경우
전처리 - 문자열 추가 $fvwm_명령 포함된 perl 코드의 출력에.

do_eval($perl_code)
이 기능은 평가 문자열에 대한 기능 $perl_code,
전술 한 바와.

짐($파일명)
이 기능은 하중 설명된 $filename 파일의 기능
위.

전처리(@params, ["-씨 명령"] [$파일 이름])
이 기능은 전처리 주어진 매개변수가 있는 기능
및 위에서 설명한 파일 $filename.

내보내다($func_names, [$do_unexport])
이 기능은 수출 주어진 $func_names의 기능,
전술 한 바와. 또한 반출 두 번째 매개변수가 참이면 함수 이름입니다.

함수 이름은 쉼표 또는/및 공백으로 구분해야 합니다. 만약에 $func_names is
비어 있으면 "Eval" 및 "." 가정됩니다.

중지()
모듈을 종료합니다.

건너뛰다()
이벤트 콜백 코드의 나머지 부분을 건너뜁니다.
모듈 이벤트.

터놓다()
fvwm에서 이벤트 콜백을 비동기화합니다. 이는 교착 상태를 방지하는 데 유용할 수 있습니다.
즉, 일반적으로 fvwm은 이벤트 콜백이 응답하지 않는 경우 응답하지 않는 모듈을 죽입니다.
완료 모듈시간 초과 초. 이것은 그것을 방지합니다.

이 예에서는 FvwmPerl이 XNUMX분 동안 실행을 일시 중단합니다.

SendModule FvwmPerl eval 잠금 해제(); (60);

그러나 모듈이 있는 동안 fvwm에서 새 메시지를 보낼 방법이 없는지 확인하십시오.
바쁘고 fvwm이 이 새 메시지에 너무 오랫동안 잠겨 있습니다. 또한 참조 분리하다
오래 지속되는 작업이 필요한 경우 솔루션입니다.

떼다()
기본 프로세스에서 이벤트 콜백 코드의 나머지 부분을 포크하고 분리합니다. 이건 아마
이벤트 콜백에 오랜 시간이 걸리는 경우 모듈이 종료되는 것을 방지하는 데 유용합니다.
완료하고 분리된 자식에서 수행할 수 있습니다. 분리된 아이는 여전히
fvwm에 명령을 보내지만(이것에 의존하지 마십시오) 물론 이벤트를 받지는 않습니다.
콜백 실행이 완료되면 즉시 종료됩니다.

당신이 사용하는 경우 떼다(), 하나의 프로세스(기본 프로세스 또는
분리된 것), 그렇지 않으면 종종 충돌이 발생할 수 있습니다.

show_message($msg, $title[, $use_stderr_too=1])
주어진 메시지가 있는 대화창을 보여줍니다.
시스템.

만나다 FVWM::모듈::툴킷::show_message

변수


에는 여러 전역 변수가 있습니다. 본관 perl에서 사용할 수 있는 네임스페이스
암호:

$a, $b, ... $h
@a, @b, ... @h
%a, %b, ... %h

그것들은 모두 빈 값으로 초기화되며 사이에 상태를 저장하는 데 사용될 수 있습니다.
FvwmPerl 작업에 대한 다른 호출(평가하중).

더 읽기 쉬운 변수 이름이 필요하면 "no strict 'vars';"라고 쓰십시오. 의 시작에
모든 펄 코드를 사용하거나 다음과 같이 해시를 사용하십시오.

$h{id} = $h{first_name} . " " . $h{초_이름}

또는 다음과 같은 패키지 이름을 사용하십시오.

@MyMenu::terminals = qw( xterm rxvt );
$MyMenu::item_num = @MyMenu::terminals;

엄격성을 켜고 끄는 구성 옵션이 있을 수 있습니다.

메시지


FvwmPerl은 fvwm 명령 SendToModule을 사용하여 메시지를 받을 수 있습니다. 이름, 의미 및
메시지의 매개변수는 위에서 설명한 해당 작업과 동일합니다.

추가로 메시지 중지 모듈이 종료되도록 합니다.

메세지 반출 [기능 이름]의 효과를 취소합니다. 수출, 작업에 설명됨
안내

메세지 덤프 변경된 변수의 내용을 덤프합니다(아직 아님).

사용 예


간단한 테스트 :

SendToModule FvwmPerl 평가 $h{dir} = $ENV{HOME}
SendToModule FvwmPerl 평가 로드($h{dir} . "/test.fpl")
SendToModule FvwmPerl 로드 $[HOME]/test.fpl
SendToModule FvwmPerl 전처리 config.ppp
SendToModule FvwmPerl 내보내기 평가, PerlEval, PerlLoad, PerlPP
SendToModule FvwmPerl 내보내기 PerlEval,PerlLoad,PerlPP
SendToModule FvwmPerl 중지

다음 예제는 fvwmrc에서 루트 배경을 처리합니다. 이 모든 명령을 추가할 수 있습니다.
StartFunction에.

모듈 FvwmPerl --PerlEval 내보내기

# 나중에 사용하기 위해 모든 배경 픽스맵을 찾습니다.
PerlEval $a = $ENV{HOME} . "/bg";
opendir 디렉터리, $a; @b = grep { /xpm$/ } readdir(DIR); closedir DIR

# 배경 픽스맵 메뉴를 만듭니다.
AddToMenu MyBackgrounds "내 배경" 제목
$b(@b)에 대한 PerlEval
{ cmd("AddToMenu MyBackgrounds '$b' Exec fvwm-root $a/$b") }

# 시작할 때 로드할 임의의 배경을 선택합니다.
PerlEval cmd("AddToFunc
InitFunction + I Exec exec fvwm-root $a/" . $b[int(random(@b))])

탈출


모듈로 보내기 다른 fvwm 명령과 마찬가지로 여러 달러 접두사 변수를 확장합니다.
이것은 달러 펄이 사용하는 것과 충돌할 수 있습니다. SendToModule 접두사를 붙여 이를 피할 수 있습니다.
선행 대시로. 각 쌍의 다음 두 줄은 동일합니다.

SendToModule FvwmPerl 평가 $$d = "$[DISPLAY]"
-SendToModule FvwmPerl 평가 $d = "$ENV{DISPLAY}"

SendToModule FvwmPerl 평가
cmd("에코 데스크=$d, 디스플레이=$$d")
SendToModule FvwmPerl 전처리 -c
에코 데스크=%("$d")%, 디스플레이=%{$$d}%

달러 및 백슬래시와 같은 특수 기호의 이스케이프를 방지하는 또 다른 솔루션은
에 펄 파일을 생성 ~/.fvwm 그런 다음 로드합니다.

SendToModule FvwmPerl 로드 build-menus.fpl

대시로 시작하는 하나의 명령을 사전 처리해야 하는 경우 앞에 다음을 사용해야 합니다.
"--".

# 이것은 현재 데스크, 즉 "0"을 인쇄합니다.
SendToModule FvwmPerl 전처리 -c Echo "$%{$a = "c"; ++$a}%"
# "$d"를 출력합니다.
SendToModule FvwmPerl 전처리 -c -- -Echo "$%{"d"}%"
# 이렇게 하면 "$d"가 인쇄됩니다(SendToModule은 $$를 $로 확장함).
SendToModule FvwmPerl 전처리 -c -- -Echo "$$%{"d"}%"
# "$$d"를 출력합니다.
-SendToModule FvwmPerl 전처리 -c -- -Echo "$$%{"d"}%"

다시 말하지만 명령을 파일에 넣고 대신 파일을 전처리하는 것이 좋습니다.

경고


Perl로 작성되고 Perl을 다루는 FvwmPerl은 유명한 Perl 모토를 따릅니다.
"하나 이상의 방법이 있습니다." 따라서 선택은 귀하의 것입니다.

다음은 더 많은 등가선 쌍입니다.

모듈 FvwmPerl --load "my.fpl" --stay
모듈 FvwmPerl -e 'load("my.fpl")' -s

SendToModule FvwmPerl 전처리 --quote '@' my.ppp
SendToModule FvwmPerl 평가 전처리({quote => '@'}, "my.ppp");

경고, 적절한 Perl 코드를 평가하여 FvwmPerl이 작동하는 방식에 영향을 미칠 수 있습니다.
버그가 아닌 기능으로 간주됩니다. 하지만 제발 이러지 마세요. 자신만의 fvwm 모듈을 작성하세요.
대신 펄에서.

onworks.net 서비스를 사용하여 온라인으로 FvwmPerl 사용



최신 Linux 및 Windows 온라인 프로그램