Làm cách nào để chạy tập lệnh bắt đầu trước màn hình đăng nhập?


17

Tôi đang hiệu chỉnh màn hình cảm ứng của mình và thấy rằng công cụ tốt nhất xung quanh là xinput_calibrator. Vì vậy, tôi đã sử dụng nó. Nó có hai tùy chọn (một trong số đó không hoạt động), vì vậy tôi ở đây lần thứ hai. Nó nói rằng tôi nên thực thi lệnh này "trong một kịch bản bắt đầu với phiên X của bạn":

xinput set-int-prop "3M 3M USB Touchscreen - EX II" "Evdev Axis Calibration" 32 14410 2146 14574 2115

Vì vậy, tôi đã cố gắng ~/.xinitrc, ~/.xsession~/.xsessionrc, tất cả những thứ đó không tồn tại. Vì vậy, tôi đã tạo ra chúng và nội dung chính xác là lệnh này. Hai tệp đầu tiên làm cho thông tin đăng nhập của tôi không thành công (sau khi tôi đăng nhập, tôi quay lại màn hình đăng nhập).

Với tệp cuối cùng, hiệu chuẩn là chức năng, nhưng chỉ sau khi đăng nhập ...

Tôi cần lệnh đó để chạy trước khi hộp thoại đăng nhập xuất hiện. Tôi nghĩ đến việc thêm lệnh này vào cuối /etc/X11/xinit/xinitrcmà không có kết quả (không có gì thay đổi). Ngoài ra, tôi đã cố gắng thêm nó vào cuối /etc/X11/Xsession.d/40x11-common_xsessionrc(sau khi kiểm tra một số tệp), nhưng kết quả hoàn toàn giống với việc thêm nó vào ~/.xsessionrc.

Làm cách nào tôi có thể thực hiện lệnh này trước khi màn hình đăng nhập hiển thị (đây là trước khi trình quản lý cửa sổ bắt đầu hoặc trước khi phiên X bắt đầu)?

(Tôi đang chạy Kubfox với trình quản lý cửa sổ mặc định, nếu vấn đề đó)

CẬP NHẬT Khi tôi đang sử dụng Kubfox, trình quản lý hiển thị của tôi là kdm. Như câu trả lời được chấp nhận cho thấy, tôi đã chỉnh sửa tệp /etc/kde4/kdm/Xsetupvà như đã đề cập ở đây, tôi đã thêm lệnh trước lệnh mặc định ở đó. Và nó hoạt động như một bùa mê :)


4
Bạn đang sử dụng trình quản lý đăng nhập nào? Đối với gdm3, bạn có thể có thể sử dụng /etc/gdm3/Init/displayhoặc /etc/gdm3/Init/Default- manpages.debian.net/cgi-bin/
mẹo

Này, thứ tốt. Tôi đã đăng một câu hỏi ở đây [ unix.stackexchange.com/questions/172007/ , được đánh dấu là một bản sao có thể có cho Q & A này. Tuy nhiên, mọi người, không tin đó là một bản sao. Xin hãy xem câu hỏi của tôi và giúp tôi hiểu :)
kaiwan

Câu trả lời:


13

Tất cả các tệp bạn đã cố gắng thay đổi được đọc sau khi bạn đăng nhập. Hơn nữa, ~/.xinitrc~/.xsessionlà tập hợp đầy đủ các lệnh chạy trong một phiên; ~/.xinitrcđược đọc nếu bạn chạy xinithoặc startxtừ một dấu nhắc chế độ văn bản và ~/.xsessionđược đọc nếu bạn chạy một phiên tùy chỉnh của nhà vua, tên (tên có thể thay đổi) từ lời nhắc đăng nhập đồ họa.

Bạn cần cấu hình trình quản lý hiển thị của mình , chương trình hiển thị lời nhắc đăng nhập. Đối với kdm, trình quản lý hiển thị KDE, thêm lệnh của bạn vào /etc/kde4/kdm/Xsetup(hoặc /etc/kde3/kdm/Xsetupcho các phiên bản cũ hơn) (đó là đường dẫn trên Debian, tôi chưa xác minh rằng Kubfox sử dụng cùng một đường dẫn).

Đối với gdm (trình quản lý hiển thị Gnome), hãy thêm lệnh của bạn vào /etc/gdm/Init/Default. Đối với xdm (trình quản lý hiển thị X truyền thống), hãy thêm lệnh của bạn vào /etc/X11/xdm/Xsetup.


Cảm ơn đã giải thích! Tôi đã thử những gì bạn đề nghị mà không thành công. Tôi định vị Xsetuptệp (trong cùng đường dẫn mà bạn đã đề cập) và thêm lệnh. Hiệu chuẩn không hoạt động, nhưng tôi chắc chắn rằng nó đã được thực thi, bằng cách thêm echo "w" > /test.logvà xác minh /test.logđã tồn tại sau khi khởi động lại. Có thể xinputyêu cầu "bối cảnh" đặc biệt hoặc một cái gì đó ...?
jadkik94

Trên thực tế, bỏ qua bình luận cuối cùng. Tôi đã chuyển hướng xinputlệnh đến tập tin đó và có vẻ như tôi đã thêm một khoảng trắng vào tên thiết bị khiến cho việc hiệu chuẩn không hoạt động. Bạn đã đúng 100% :) Cảm ơn một lần nữa.
jadkik94

5
Và chỉ cần hoàn thành câu trả lời - để tìm hiểu trình quản lý hiển thị của bạn là gì (không bị nhầm lẫn với môi trường máy tính để bàn) sử dụng : cat /etc/X11/default-display-manager.
Nux

Thế còn xserverrc? Và những cái đó là trong /etc/X11/xinit/xserverrc?
CMCDragonkai

1
@CMCDragonkai Nếu có trình quản lý hiển thị, startxsẽ không được sử dụng. Các tập lệnh khởi tạo trình quản lý hiển thị sẽ không có liên quan ở đây vì chúng chạy trước khi người dùng đăng nhập.
Gilles 'SO- ngừng trở nên xấu xa'

4

Tôi đề nghị bạn tạo tệp cấu hình của riêng bạn, một ví dụ đơn giản:

/usr/lib/X11/xorg.conf.d/20-calibration.conf

Hồ sơ:

Section "InputClass"
         Identifier "Calibration"
         MatchProduct "3M 3M USB Touchscreen - EX II"
         Option "Calibration" "14410 2146 14574 2115"
EndSection

Điều đó sẽ làm các trick.


-1

Bạn có thể thử /etc/rc.local?

.


4
Tôi đã lo ngại kịch bản sẽ chạy trước khi X bắt đầu (như tôi đã hiểu), điều này sẽ khiến kịch bản đó trở nên vô dụng ... Khi nào thì nó chạy?
jadkik94

3
@ jadkik94 bạn nói đúng, điều này sẽ không hoạt động vì RC.local không có quyền truy cập vào phiên x.
Ulrich Dangel

-1

Khi bạn có OpenSUSE, bạn có thể sao chép tập lệnh của mình sang /etc/init.d và chạy tên tập lệnh không phù hợp. insserv cho phép một tập lệnh: http://man-wiki.net/index.php/8:insserv .


2
Điều này có lẽ sẽ không hoạt động vì xinputnhu cầu có lẽ X không có sẵn / được khởi tạo trong các tập lệnh init
Ulrich Dangel
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.