간단한 웹 브라우저를 실행하기위한 사용자 지정 배포를 작성하려면 어떻게해야합니까?


18

대형 화면에 단일 웹 페이지를 표시 할 목적으로 일부 경량 시스템을 조립하고 있습니다. 기계는 기본적으로 최대한 가볍고 가능한 빨리 부팅해야하며 JavaScript로 동적으로 제어되는 한 페이지를로드하여 브라우저 (WebKit?)를 전체 화면으로 실행해야합니다. GPU가 통합 된 Intel D525 듀얼 코어 프로세서를 사용하므로 독점 그래픽 드라이버를 설정할 필요가 없습니다. 이 머신 중 하나를 올바르게 설정 dd하면 하드 드라이브를 내 컴퓨터에 넣은 다음 각 새 머신에 덤프 할 수 있습니다.

다음과 같은 질문이 있습니다.

  1. 필요한 것만 포함하는 "배포"를 어떻게 만들 수 있습니까? 나는 커널 (;]), X, 그리고 어떤 종류의 웹 브라우저가 필요하지만 실제로는 그렇게 많이 필요하지 않을 것이라고 생각합니다. 우분투 서버와 같은 것을 가지고 X 서버를 설치하고 컴퓨터가 자동으로 로그인하고 X를 시작하고 웹 브라우저를 시작할 수있는 방법을 찾을 수 있습니까? 읽을 수있는 책이나 기사가 있습니까?

  2. 본질적으로 "크롬리스 크롬"을 실행하는 멋지고 탈피 된 웹 브라우저에 무엇을 사용할 수 있습니까? 이 기계들은 사용자 입력을 전혀받지 않습니다. 관리해야 할 경우 SSH를 사용합니다.

답변:


12

많은 배포판에는 최소한의 설치 기능이 있습니다. 기본적으로 명시 적으로 설치하려는 패키지 만 수동으로 선택합니다. 데비안은이 능력을 가지고 있으며, 상황에 따라 다른 명백한 최소한의 경쟁자 인 아치 리눅스보다 더 나은 선택이 될 것입니다.

아치의 롤링 릴리즈 상태는 피하고자하는 수준의 지속적인 복잡성을 제공 할 수 있습니다. 데비안은 당신이 찾고있는 단순하고 최소한의 기반과 오퍼 안정성을 제공 할 것입니다. 유용한 팁을 제공 하는 데비안을 키오스크로 사용하는 방법에 대한 블로그 게시물 이 있습니다.

브라우저를 들어, 같은 beav_35이 제안, 유즈 블은 좋은 선택입니다. 필자 는 스크립트 가능하고 키보드 방식이며 SSH를 통해 효과적으로 제어 할 수있는 WebKit 브라우저 인 Vimprobable을 추천한다 .

창 관리자는 dwm 을 권장합니다 . SLOC는 2000 미만으로 매우 가볍고 키오스크 유형 설정을 위해 쉽게 구성 할 수 있습니다.


dwm은이 목적에 적합하게 보이고, 어쨌든 데비안 기반 시스템에 훨씬 익숙하므로 데비안을 사용할 것입니다. OS를 다운받을 수있는 규모는 얼마나 작습니까? 그리고 데비안 배포판을 어떻게 만들 수 있습니까?
Naftuli Kay

설치를 진행할 때 랩탑, 표준 등 대신 패키지 선택 단계에 도달하면 "수동"을 선택하고 베어 미니 뮴에 필요한 패키지 (X와 같은) 만 선택하십시오. 여기서 시작하십시오 debian.org/CD / netinst / # businesscard-stable
jasonwryan

5

우선, 바퀴를 재발 명하고 싶지 않을 수도 있습니다. 여러 키오스크 중심 배포판이 있습니다. 그 중 하나는 많은 작업을 절약 할 수 있습니다.

둘째, Fedora 및 RHEL (또는 CentOS 또는 Scientific Linux)에서 킥 스타트에 익숙한 경우 Fedora 도구를 사용하여 배포판을 직접 회전시킬 수 있습니다. 설명서가 약간 흩어져 있지만 여기서 시작하십시오 .


데비안 / 우분투 버전 : FAI (완전 자동 설치)
Gilles 'SO-Stop

4

Arch Linux 와 같은 최소한의 배포판으로 시작한 다음 필요한 패키지를 설치하십시오. 간단한 웹 브라우저를 사용하려면 Uzbl을 사용해보십시오 .


uzbl은 굉장합니다. +1
Naftuli Kay

3

이것은 매우 관련된 질문이며, 프로젝트가 명확하지 않기 때문에 이러한 제안 중 일부는 지적되지 않았지만 평가할 사항을 고려하십시오.

  • 디스플레이 배열의 일부인 컴퓨터에는 웹 브라우저가 필요하지 않을 수 있습니다. 여러 화면에 단일 페이지를 표시하려는 경우 일종의 대량 디스플레이 기술을 사용하려고 할 수 있습니다. 여러 컴퓨터에서 비디오 장치 중 하나의 대형 디스플레이를 생성하는 데 특화된 Xorg의 여러 변형이 있습니다.

  • 각 컴퓨터에서 별도의 X 서버를 사용하더라도 X 전달을 사용하여 하나 이상의 다른 컴퓨터에서 디스플레이 데이터를 보낼 수 있으므로 브라우저를 여전히 로컬에서 실행할 필요가 없습니다.

  • 창 관리자를 전혀 사용하지 않고 지오메트리 사양을 사용하여 앱을 전체 화면으로 시작하거나 구성 가능한 타일 또는 프레임 워크 창 관리자 (등 awesome)를 사용하여 각 X 디스플레이에서 창을 관리하려고합니다. 이를 통해 전체 화면 창을 쉽게 정렬하고 제어 할 수 있으며 스크립트가 가능합니다.

  • 브라우저의 uzbl경우 분명한 선택 이라고 생각 합니다.

  • 네트워크 부팅에 적합한 응용 프로그램 일 수 있습니다. TFTP를 통해 사용 가능한 넷북 커널과 nfs를 통해 사용 가능한 파일 시스템으로 서버를 설정할 수 있습니다. 클라이언트는 netboot 가능 NIC를 사용하여이 서버에 연결하고 커널을 다운로드하여 이동하기 만하면됩니다. 하드 드라이브가 필요 없습니다! 그리고 쉬운 정비. 모든 머신은 잠재적으로 동일한 이미지를 부팅 할 수 있습니다.

  • "디스트로"는 아마도 두 가지로 구성되어야합니다. 1) 패키지 세트 및 2) 구성 파일 세트. 패키지 세트는 설치해야하는 패키지 목록입니다. 이것은 일반적으로 텍스트 파일로 어셈블 될 수 있으며 대부분의 배포판의 패키지 관리자를 사용하여이 패키지 목록을 대상 (하드 드라이브 또는 nfs 마운트 지점이 될 디렉토리)에 설치할 수 있습니다. 구성 파일은 git다른 소스 제어 시스템이나 다른 소스 제어 시스템에 보관 해야하며 패키지 세트와 함께 설치된 기본 시스템에 구성 스크립트를 작성해야하는 스크립트와 몇 가지 스크립트가 포함되어 있습니다. 새로운 시스템을 구축하면 다음과 같이됩니다.

    • 드라이브 또는 대상 디렉토리 마운트
    • package_manager --install-distro --package-set=/path/packagelist.txt --target=/path
    • cd /target/path
    • git clone /path/to/repo (또는 그렇지 않으면 구성 코드를 시스템 루트에 체크 아웃하십시오)
    • 드라이브 인 경우 부트 로더 설치 또는 netboot 인 경우 PXE 구성 추가
    • 신병.

베이스로 사용하는 배포판은 가장 편한 것에 따라 달라집니다. 필자는 PLD-Linux 를 사용 하지만 초보자가 작업 할 수 있도록 유사하지만 더 나은 문서화 된 시스템으로 ArchLinux 를 권장 합니다. 데비안 , 페도라 또는 젠투 가이 기능을 사용할 수없는 이유는 없습니다 .


넷 부팅시 : 그것은 굉장하게 들리며 유지 관리가 훨씬 쉬워집니다. 그러나 각 시스템은 시스템에 고유 한 정보를 가져 오기 때문에 다른 URL을로드해야합니다. 인가 그게 가능 하죠? HTTP-Basic 인증에 약간의 보안 수단으로 다른 사용자 / 비밀번호를 사용하도록 각 시스템을 구성 할 수는 있지만 나머지는 모두 동일하게 유지됩니다.
Naftuli Kay

"디스플레이 배열의 일부인 모든 컴퓨터에 웹 브라우저가 필요하지 않을 수도 있습니다."라고 생각합니다. 각 머신은 서로 다른 위치에 있으며 VGA 또는 HDMI를 통해 하나의 디스플레이를 구동하여 해당 머신에 대한 고유 한 웹 페이지를 표시합니다. (사용자 / 암호에 따라 콘텐츠가 달라지는 단일 URL을 제공 할 수는 있지만)
Naftuli Kay

창 관리자에서 : 아마 dwm나 같은 정말 가벼운 것을 사용하고 싶을 것입니다 awesome. 전체 화면 모드에서 제목 표시 줄없이 응용 프로그램을 시작하도록 창 관리자에 지시하려면 어떻게해야합니까?
Naftuli Kay

배포판의 구성에 대해 : 그래서 실제로 필요한 것은 git repo를 만들고 패키지 목록과 구성 파일을 유지 한 다음 어떻게 든 ISO를 만드는 것입니다. 가장 작은 데비안 배포판을 구한 다음 어떻게 작업합니까? 이러한 구성 파일을 가져 와서 레코딩 가능한 ISO를 만들려면 어떻게해야합니까? 데비안을 사용 중이 apt-get거나 사용 중 aptitude입니다.
Naftuli Kay

X-forwarding : 머신 당 하나의 디스플레이를 구동하므로 실제로 필요하지는 않습니다. 내 컴퓨터가 연결할 수 있도록 컴퓨터에서 역방향 SSH 연결을 발행하는 방법을 찾아야하지만이를 자동화하는 방법이있을 수 있습니다. 컴퓨터 A가 컴퓨터 B에 대한 TCP 연결을 연 다음 컴퓨터 B가 해당 연결을 통해 SSH를 통해 컴퓨터 A에 연결하는 방법이 있습니까? 그렇지 않으면 각 라우터마다 동적 DNS 이름을 가져와야합니다.
Naftuli Kay

2

Buildroot 2016.05 + 미도리

Buildroot 는 최소한의 배포판을 구축 할 수있는 훌륭한 도구입니다.

  • 당신은 .config파일을 제공
  • 필요한 모든 소프트웨어와 종속성을 다운로드하여 컴파일하고 이미지를 생성합니다.

Midori 는 최소한의 WebKit 기반 브라우저이며 Buildroot에는 기본 제공 Midori 패키지가 있습니다.

.config사용 된 파일 : https://github.com/cirosantilli/buildroot-configs/blob/32d1174e0bf8d00b92323eebe8901af3f8c389d3/2016.05/qemu_x86_64_x11_midori_defconfig

해당 구성 파일을 생성하는 방법 :

  1. 따라 어떻게 내 자신의 리눅스 Buildroot 시스템에 X11을 설치하는? | X11로 이미지를 생성하는 Unix & Linux Stack Exchange
  2. make menuconfig
    1. 툴체인
      1. C 라이브러리
        1. glibc (미도리 용)
    2. 대상 패키지
      1. 그래픽 라이브러리 및 응용 프로그램
        1. mesa3d
          1. 어떤 드라이버가 필요한지 이해하지 못하므로 모든 Gallium 및 DRI 드라이버를 선택하십시오 (OpenGL EGL의 경우).
          2. OpenGL EGL (libgtk3 용)
      2. 라이브러리
        1. 그래픽 1. libgtk3 (미도리 용)

툴체인을 변경하고 다시 빌드하기 때문에 빌드를 정리하십시오.

rm -rf output
make BR2_JLEVEL=$(nproc)

기다리십시오. 그런 다음 평소 :

qemu-system-x86_64 \
    -enable-kvm \
    -M pc \
    -m 512 \
    -kernel output/images/bzImage \
    -drive file=output/images/rootfs.ext2,if=virtio,format=raw \
    -append root=/dev/vda \
    -net nic,model=virtio \
    -net user

그리고 QEMU 내부에서 :

root
startx

X11 GUI에서 xterm창을 클릭 하고 다음을 실행하십시오.

midori

결과:

여기에 이미지 설명을 입력하십시오

이미지 크기 : 220M! 베어 X11 시스템의 28M과 비교 내 Linux Buildroot 시스템에 X11을 설치하는 방법은 무엇입니까? -유닉스 및 리눅스 스택 교환 . WebKit + GTK3 종속성 때문일 수 있습니다.

Ubuntu 16.04 호스트, QEMU 2.5.0에서 테스트되었습니다.

넷 서프

fbdev를 지원하는 SDL로 작성 : http://www.netsurf-browser.org/about/screenshots/#framebuffer

fbdev는 X11을 거치지 않는 Linux 커널 모듈에서 제공하는 하위 인터페이스입니다 (X11은 선택적으로 백엔드로 사용할 수 있다고 생각합니다). 기본적으로 메모리에 쓰면 화면에 표시됩니다.

Ubuntu에서 fbdev를 사용하려면 TTY에 있어야합니다 (예 : Ctrl + Alt + F1).

따라서 미도리보다 작은 이미지 방식으로 벗어날 수 있습니다 .

Buildroot 2016.05에는 패키지 netsurf-buildsystem가 제공되지만 테스트하지는 않았습니다. 누군가가 그것을 실행할 수 있다면 .config, 스크린 샷 및 이미지 크기의 링크에서 편집하십시오.


1

아치 리눅스 ISO를 사용하고 완전히 자동화 된 설치를 수행하는 수정 된 루트 이미지로 새로운 ISO를 생성하는 작은 bash 스크립트를 한 번 작성했습니다. 여기에는 Xorg, FVWM 및 Chromium을 사용한 시스템 설정 및 구성뿐만 아니라 파티셔닝이 포함됩니다. 설치된 시스템이 자동으로 로그인하고 Chromium을 시작합니다. 새로운 ISO를 USB 플래시 드라이브에 넣고 뒤로 기대기만하면됩니다. ;-)

면책 조항 : 스크립트는있는 그대로 제공되며 보증은 제공되지 않습니다. 한동안 사용하지 않았으므로 여기 또는 거기에서 조정이 필요할 수 있습니다. 필요에 따라 수정하십시오.

#!/bin/bash
# Helpful pages:
#
#   * [ArchWiki topic][1] that explains the options of an AIF configuration
#     file.
#
#   * [Status of automated installation][2], a topic in the Arch Linux Forums
#     that contains the original basic install script by *mhertz*.
#
# [1]: https://wiki.archlinux.org/index.php/AIF_Configuration_File
# [2]: https://bbs.archlinux.org/viewtopic.php?id=111925

TMP_DIR=/tmp/arch-install

# Read command line parameters for input and output ISO files.
if [ -z "$1" ]; then
    echo 'No input file specified, aborting.'
    exit 1
elif [ ! -f "$1" ]; then
    echo 'Input file "'$INPUT_ISO'" not found, aborting.'
    exit 1
elif [ -z "$2" ]; then
    echo 'No output file specified, aborting.'
    exit 1
elif [ -f "$2" ]; then
    echo 'Output file "'$OUTPUT_ISO'" already exists, aborting.'
    exit 1
fi

# Determine full paths to input and output ISO files.
INPUT_ISO=$(readlink -f "$1")
OUTPUT_ISO=$(readlink -f "$2")

# Set some variables for convenience.
SOURCE_DIR=$TMP_DIR/source
DEST_DIR=$TMP_DIR/dest
ROOT_DIR=$TMP_DIR/squashfs-root
BOOT_CFG=$DEST_DIR/boot/isolinux/isolinux.cfg

# Extract ISO image and root image.
mkdir -p $SOURCE_DIR
mount -o loop "$INPUT_ISO" $SOURCE_DIR
cp -a $SOURCE_DIR $DEST_DIR
umount $SOURCE_DIR
rmdir $SOURCE_DIR
unsquashfs -d $ROOT_DIR $DEST_DIR/root-image.sqfs
rm $DEST_DIR/root-image.sqfs

# Modify the root image as needed.
cat >> $ROOT_DIR/etc/aif.conf <<EOF
SOURCE=cd
FILE_URL=file:///src/core/pkg
SYNC_URL=http://ftp.tu-chemnitz.de/pub/linux/archlinux/\$repo/os/\$arch
HARDWARECLOCK=UpTC
TIMEZONE=Europe/Vienna
RUNTIME_REPOSITORIES=
RUNTIME_PACKAGES=
TARGET_GROUPS=base
TARGET_PACKAGES_EXCLUDE=
TARGET_PACKAGES='openssh xorg xcursor-vanilla-dmz-aa'

worker_runtime_network () {
    dhcpcd eth0
}

worker_configure_system () {
    prefill_configs
    sed -i '/^HOSTNAME/ s/"myhost"/"arch"/' \$var_TARGET_DIR/etc/rc.conf
    sed -i '/^password/ s/pam_permit\.so/pam_unix.so md5 shadow/' \$var_TARGET_DIR/etc/pam.d/chpasswd
    sed -i '\|Server = http://ftp\.tu-chemnitz\.de/| s/^#//' \$var_TARGET_DIR/etc/pacman.d/mirrorlist
    sed -i '/id:3:initdefault:/ s/^/#/' \$var_TARGET_DIR/etc/inittab
    sed -i '/id:5:initdefault:/ s/^#//' \$var_TARGET_DIR/etc/inittab
    sed -i '\|x:5:respawn:/usr/bin/xdm| s/^/#/' \$var_TARGET_DIR/etc/inittab
    echo "x:5:respawn:/bin/su -l -c '/usr/bin/startx </dev/null >/dev/null 2>&1' myuser" >> \$var_TARGET_DIR/etc/inittab
    sed -i 's/^timeout .*$/timeout 0/' \$var_TARGET_DIR/boot/grub/menu.lst
    cp /etc/rc.local.firstboot \$var_TARGET_DIR/etc/rc.local
}

# Mandatory variables.
GRUB_DEVICE=/dev/sda
PARTITIONS='/dev/sda 20:ext2:+ 512:swap 2500:xfs *:xfs'
BLOCKDATA='/dev/sda1 raw no_label ext2;yes;/boot;target;no_opts;no_label;no_params
/dev/sda2 raw no_label swap;yes;no_mountpoint;target;no_opts;no_label;no_params
/dev/sda3 raw no_label xfs;yes;/;target;no_opts;no_label;no_params
/dev/sda4 raw no_label xfs;yes;/home;target;no_opts;no_label;no_params'
EOF

cat >> $ROOT_DIR/etc/rc.local <<EOF
aif -p automatic -c /etc/aif.conf
reboot
EOF

cat >> $ROOT_DIR/etc/rc.local.firstboot <<EOF
echo root:rootpassword | chpasswd
useradd -m myuser
echo myuser:myuser | chpasswd
cat >> /home/myuser/.xinitrc <<EOT
#!/bin/sh
exec fvwm2
EOT
cat >> /home/myuser/.Xdefaults <<EOT
Xcursor.theme: Vanilla-DMZ-AA
EOT
mkdir -p /home/myuser/.fvwm
cat >> /home/myuser/.fvwm/config <<EOT
DeskTopSize 1x1
DesktopName 0 Main
DestroyFunc StartFunction
AddToFunc StartFunction
 + I Test (Init) Exec exec xsetroot -solid '#303030'
 + I Test (Init) Exec exec chromium 'http://www.stackoverflow.com'
DestroyMenu RootMenu
AddToMenu RootMenu "Menu" Title
 + "Terminal" Exec exec xterm
 + "Browser" Exec exec chromium 'https://www.stackoverflow.com'
 + "" Nop
 + "Log off" Quit
 + "Reboot" Exec exec sudo /sbin/reboot
 + "Shutdown" Exec exec sudo /sbin/halt
OpaqueMoveSize unlimited
Style * ClickToFocus, ResizeOpaque
Style chromium !Title, !Border, !Handles
CursorStyle root top_left_arrow
CursorStyle stroke hand2
IgnoreModifiers L25
Key Help R A -
Key F1 R A -
Key Tab A M -
Key Escape A MC -
Mouse 1 R A -
Mouse 1 T A Move
Mouse 1 FS A Resize
Mouse 1 I A Iconify Off
Mouse 2 FST A -
Mouse 3 R A Menu RootMenu Nop
EOT
mkdir -p /home/myuser/.config/chromium/Default
touch /home/myuser/.config/chromium/First\ Run
cat >> /home/myuser/.config/chromium/Default/Preferences <<EOT
{
   "alternate_error_pages": {
      "enabled": false
   },
   "autofill": {
      "enabled": false
   },
   "browser": {
      "custom_chrome_frame": true,
      "enable_spellchecking": false
   },
   "default_search_provider": {
       "enabled": true,
       "encodings": "UTF-8",
       "icon_url": "about:blank",
       "id": "2",
       "instant_url": "",
       "keyword": "google.com",
       "name": "Google",
       "prepopulate_id": "1",
       "search_url": "{google:baseURL}search?ie={inputEncoding}&q={searchTerms}",
       "suggest_url": ""
   },
   "devtools": {
      "disabled": true
   },
   "dns_prefetching": {
      "enabled": false
   },
   "download": {
      "directory_upgrade": true
   },
   "extensions": {
      "chrome_url_overrides": {
         "bookmarks": [ "chrome-extension://eemcgdkfndhakfknompkggombfjjjeno/main.html" ]
      }
   },
   "geolocation": {
      "default_content_setting": 2
   },
   "google": {
      "services": {
         "username": ""
      }
   },
   "homepage": "https://www.stackoverflow.com",
   "homepage_is_newtabpage": false,
   "intl": {
      "accept_languages": "en",
      "charset_default": "ISO-8859-1"
   },
   "ntp": {
      "pref_version": 3
   },
   "profile": {
      "clear_site_data_on_exit": true,
      "content_settings": {
         "pref_version": 1
      },
      "default_content_settings": {
         "plugins": 1
      },
      "exited_cleanly": true,
      "notifications_default_content_setting": 2,
      "password_manager_enabled": false
   },
   "safebrowsing": {
      "enabled": false
   },
   "search": {
      "suggest_enabled": false
   },
   "tabs": {
      "use_vertical_tabs": false
   },
   "translate": {
      "enabled": false
   }
}
EOT
chown -R myuser:myuser /home/myuser
pacman -Sy
pacman -S --noconfirm pacman
pacman -S --noconfirm fvwm-devel chromium sudo
echo 'myuser arch=NOPASSWD: /sbin/halt,/sbin/reboot' > /etc/sudoers.d/start_stop
chmod 0440 /etc/sudoers.d/start_stop
rm /etc/rc.local
EOF

# Create the new root image.
mksquashfs $TMP_DIR/squashfs-root $TMP_DIR/dest/root-image.sqfs
rm -rf $TMP_DIR/squashfs-root

# Configure the boot loader.
sed -i 's/TIMEOUT 3000/TIMEOUT 100/' $BOOT_CFG
sed -i '/APPEND hd0 0/d' $BOOT_CFG
sed -i 's/archisolabel=[^ ]*/archisolabel=ARCH/' $BOOT_CFG

# Create the new ISO image.
genisoimage -l -R -b boot/isolinux/isolinux.bin -c boot/isolinux/boot.cat \
    -no-emul-boot -boot-load-size 4 -boot-info-table -V ARCH \
    -o "$OUTPUT_ISO" $DEST_DIR
rm -rf $TMP_DIR
isohybrid "$OUTPUT_ISO"

0

이와 같은 시스템의 경우 강아지를 추천 합니다.

Linux의 모든 버전을 사용하여 배포판을 구축 할 수 있지만 Puppy를 사용하면 부팅 가능한 사용자 지정 이미지 를 매우 쉽게 제작할 수 있으며 컴팩트하게 설계되었으며 뛰어난 오버레이 파일 시스템을 지원합니다.

난 그냥 하드 드라이브를 dd 수 있습니다

아니오-현명하게 유지 관리 할 수있는 부팅 가능한 이미지를 만드는 것이 좋습니다.


문제는 엄지 드라이브에서 운영 체제를 실행한다는 것입니다. OS를 설치하는 데 사용할 디스크 드라이브가 없을 수도 있습니다.
Naftuli Kay

0
  • 여러 사람들이 uzbl을 언급했으며 이것이 좋은 선택이라는 데 동의하지만 luakit 을 더 잘 찾을 수 있습니다 .

  • 갈렙은 이미 언급 한 바와 같이, 당신은 정말 필요하지 않은 모든 윈도우 매니저. 다음은 최대화 된 luakit 브라우저를 사용하여 WM-less Xorg 서버를 실행하기 위해 작성한 예제 스크립트입니다.

    #!/bin/sh
    XDCMD="xdotool search --class luakit windowsize %3 100% 100%"
    while [ 1 ]
    do
        ( sleep 0.5; $XDCMD || sleep 0.2 && $XDCMD || sleep 5 && $XDCMD ) &
        /usr/bin/luakit $@
    done
    

    그것은 사용 xdotool을 luakit가 시작된 직후 창을 최대화 할 수 있습니다. 어쩌면 그것에 대한 더 나은 해결책이있을 수 있습니다 ...

  • 그러한 시스템의 기본으로 Gentoo를 추천합니다. 그것은 내가 가장 잘 알고 있기 때문일뿐만 아니라 설치된 모든 소프트웨어의 빌드 옵션을 전역 적으로 관리하는 다소 독특한 접근 방식을 사용하기 때문입니다. 나는 USE 플래그를 의미한다 . 이를 사용하여 지원하는 모든 프로그램에서 사용하는 기능 / 라이브러리 / 표준 세트를 결정합니다. 예를 들어 프로그램에서 ALSA를 사용하고 esd, jack 또는 pulseaudio와 같은 추가 오디오 백엔드가 필요하지 않은 경우 alsa -jack -esd -pulseaudioUSE 플래그 사이에 넣으 십시오. 그 후, 당신이 구축 한 각 소프트웨어 ALSA 이외의 추가 오디오 백엔드를 사용하는 것은 ALSA를 지원하지 않고 구축됩니다. 이는 구성 / 빌드 수준에서 발생하므로 소프트웨어가 훨씬 얇아집니다. 따라서 이것은 제거하는 대신 (모든 의존성을 존중하면서) 쌓는 철학입니다 (결국 버그가 있고 유지하기가 매우 어려울 수 있음).


0

다른 사람이 아무도 없기 때문에 이것을 언급 할 것입니다.

Scratch 의 Linux는 고유 한 Linux 배포판 작성 과정을 안내하는 책 (pdf)입니다. 달성하려는 작업에 대해 지나치게 과도 할 수 있지만 (실제로 필요한 도구가 이미있는 것처럼 보임) 시스템 작동 방식을 이해하는 데 귀중한 도구가 될 수 있습니다. 실제로 그렇게 어렵지는 않으며 프로그래밍이 필요하지 않습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.