รองรับ tmux, TERM และ 256 colors


48

บทนำ

คำถามของฉันเกิดขึ้นจากความจำเป็นของการทำความเข้าใจว่าทำไมฉันมีตอนนี้ (หลังจากการทดลองหลาย) เทอร์มิและtmuxสนับสนุน 256 สีและtput colorsบอกฉันมีเพียง 8 ของพวกเขา


พื้นหลัง

ให้เริ่มต้นจากจุดเริ่มต้น.

ฉันใช้กล่องUbuntu , Guake , tmux , Vimและฉันชอบธีมของโซลาริเซชั่น พวกเขาดูน่ากลัวมากดังนั้นฉันตัดสินใจเปิดใช้งานการสนับสนุน 256 สีและเล่นไปรอบ ๆ

ลองมาดูสิ่งที่เกิดขึ้นสำหรับฉันเทอร์มิ tput colorsบอกว่ามี 8 สี โดยส่วนตัวผมตั้งไว้ที่สีม่วงด้านซ้ายและแน่นอนทางด้านขวาเรามีสีฟ้า 2 เฉด กล่าวว่า$TERM xterm(มีสีlsฉันeval นี้ในของฉัน.bashrc.)

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

Vimยังดูดีแม้ว่าฉันจะเรียกมันด้วย256ค่าสถานะในสภาพแวดล้อมที่ไม่รองรับ256 สี

set t_Co=256
let g:solarized_termcolors=256
colorscheme solarized

ผู้ชายเพียงคนเดียวที่บ่นเกี่ยวกับพื้นที่สีลดลงเป็นtmux การโทรtmuxให้ผลลัพธ์ที่คาดหวังไว้ "ผิด"

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

แต่เรียกร้องtmuxกับ-2ธงทำให้ทุกอย่างทำงานได้ดีอย่างน่าอัศจรรย์

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

ตอนนี้สิ่งเดียวที่ฉันเข้าใจ-2คือเทียบเท่าexport TERM=screen-256color( แหล่งที่มา )

Guakeทำงาน analogously เพื่อเทอร์และทั้งสองของพวกเขาตอบคำถามที่xtermecho $TERM


คำถาม

โดยพื้นฐานแล้วไม่มีใครเข้าใจว่าทำไมทุกอย่างถึงทำงานไม่ได้

  • ฉันเป็นคนซาดิสต์ที่บ่นว่าทำไมสิ่งต่าง ๆ ถึงได้ผล อาจจะ.
  • มีเหตุผลที่ดีกว่านี้ไหม แน่นอน: ฉันต้องการแก้ไขลักษณะที่ปรากฏของกล่อง Ubuntu อื่น ๆ ในสำนักงานของฉันและฉันต้องการที่จะเข้าใจว่าทำไมสิ่งต่าง ๆ ทำงานหรือไม่ทำงาน

การทดลองเพิ่มเติม

การเรียกใช้สคริปต์นี้ (แก้ไขเล็กน้อย) ที่ฉันxtermให้ผลลัพธ์ต่อไปนี้: 256 สี แต่มีเพียง 16 เท่านั้นที่แสดงอย่างถูกต้อง

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

จากนั้นการเปลี่ยนโปรไฟล์ของเทอร์มินัล 16 สีเหล่านี้ก็เปลี่ยนไปด้วย

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

มีการทดสอบเพิ่มเติมดังนี้

จากซ้ายไปขวาบนลงล่างเรามีsolarizedชุดรูปแบบสี, dircolor ansi-darkและ256darkแล้ว (เริ่มต้นTango ) โทนสี, และdircolor ansi-dark256dark

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

สังเกต : ในทฤษฎีdircolor ansi-darkบนsolarizeddircolor 256darkโทนสีที่ควรจะมีการแข่งขันอย่างใกล้ชิด สิ่งนี้ไม่ได้เกิดขึ้นอย่างชัดเจนสำหรับไฟล์ที่ระบุในรายการ แต่นี้ค่อนข้างเกิดขึ้นเมื่ออยู่ในไดเรกทอรีการทำงานมีโฟลเดอร์ , ไฟล์ข้อความและการเชื่อมโยงสัญลักษณ์ สรุป : ไม่มีความสนใจเท่าที่จ่ายในขณะที่เข้ารหัส256darkสี


ข้อสรุปเบื้องต้น

xtermสนับสนุน 256 สีแม้สิ่งที่tput colorsกล่าวว่า โปรแกรมสามารถอ้างถึงansiจานสี (ปรับแต่งโดยผู้ใช้) หรือกำหนดสีของพวกเขาเลือกจากทั้งหมด 256 สี


1
อ่านคำตอบนี้และความคิดเห็นด้านล่าง มันตอบคำถามของคุณหรือไม่ ดูสคริปต์นี้เพื่อรับจำนวนสีที่รองรับจริง
terdon

ฮัม ... ฉันยังสับสนอยู่เล็กน้อย ... แต่ฉันเดาว่าอย่างน้อยฉันก็เข้าใจว่าtput colorsเป็นการทดสอบที่ไม่น่าเชื่อถือ คุณช่วยตรวจสอบข้อสรุปเบื้องต้นของฉันได้ไหม
Atcold

2
การอ่านคำตอบของGilleśของฉันคือtput colorsสามารถคืนค่าได้หนึ่งค่าและในเทอร์มินัลที่รองรับ 2,8,16,88 หรือ 256 สีใด ๆ จะส่งคืนเฉพาะค่าแรก (8 ในกรณีของคุณ) ในการรับค่าที่แท้จริงใช้สคริปต์จากความคิดเห็นล่าสุดของฉัน อะไรที่ส่งคืน?
terdon

ตรวจสอบการทดลองเพิ่มเติมของฉันด้านบน :)
Atcold

โอ้ขอโทษฉันไม่ดี
terdon

คำตอบ:


33

มีข้อมูลบางส่วนในการสนับสนุน 256 สีในเป็นtmux คำถามที่พบบ่อย

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

  • tmux ไม่สามารถระบุได้อย่างน่าเชื่อถือว่าเครื่องรองรับมากกว่า 8 สีหรือไม่
  • tmux ไม่สามารถสื่อสารกับแอพพลิเคชั่นได้อย่างน่าเชื่อถือซึ่งรองรับมากกว่า 8 สี

เมื่อคุณอยู่ใน tmux เทอร์มินัลที่คุณโต้ตอบด้วยคือ tmux ไม่สนับสนุนลำดับการควบคุมของ xterm ทั้งหมด โดยเฉพาะอย่างยิ่งมันไม่สนับสนุนOSC 4 ; …ลำดับการควบคุมเพื่อสอบถามหรือตั้งค่าสี คุณจำเป็นต้องใช้สิ่งนั้นในขณะที่ทำงานโดยตรงใน xterm นอก tmux

หากคุณเรียกใช้tmux -2tmux จะเริ่มด้วยการรองรับ 256 สีแม้ว่าจะไม่คิดว่าเทอร์มินัลของคุณรองรับ 256 สี (ซึ่งเป็นเรื่องธรรมดา)

โดยค่าเริ่มต้น tmux โฆษณาด้วยตัวเองscreenโดยไม่มีการสนับสนุน 256 สี คุณสามารถเปลี่ยนค่าของTERMใน.tmux.confเพื่อบ่งบอกถึงการสนับสนุน 256 สี:

set -g default-terminal "screen-256color"

คุณสามารถใช้TERM=xterm-256colorหรือTERM=screen-256colorบน Ubuntu ค่าเหล่านี้จะทำให้เกิดปัญหาถ้าคุณลงชื่อเข้าใช้เครื่องระยะไกลที่ไม่มีรายการ termcap / terminfo สำหรับชื่อเหล่านี้ คุณสามารถคัดลอกรายการไปยังไดเรกทอรีบ้านของคุณบนเครื่องระยะไกล ทำงานได้กับการใช้งาน terminfo ที่ทันสมัยที่สุด

# From the Ubuntu machine to a machine that doesn't have *-256color terminfo entries
ssh somewhere.example.com mkdir -p .terminfo/s .terminfo/x
scp -p /lib/terminfo/s/screen-256color somewhere.example.com:.terminfo/s/
scp -p /lib/terminfo/x/xterm-256color somewhere.example.com:.terminfo/x/

ฉันจะขอขอบคุณคำอธิบาย แต่ผมไม่แน่ใจว่ามันมีเป้าหมายคำถามของฉัน .. ดีผมเห็นว่าคำถามของผมก็ค่อนข้างกว้าง แต่ฉันไม่ได้มุ่งเน้นเฉพาะในtmux อันที่จริงtmuxเป็นคนเดียวที่ทำตามความคาดหวัง สิ่งที่ลึกลับกว่านั้นก็คือวิธีที่xtermจะแสดงให้ฉันเห็น 256 สีแม้ว่าจะtput colorsพูดว่า 8 ฉันเดาว่าคำตอบสำหรับคำถามเฉพาะนี้ได้รับการแก้ไขโดย@terdonในการแสดงความคิดเห็นของเขากับคำถามนั้น
Atcold

@tcold มันเป็นคำถามที่ยาว แต่เท่าที่ฉันสามารถบอกได้ว่าฉันตอบมัน ส่วนที่ไม่เกี่ยวข้องกับ tmux นั้นครอบคลุมด้วยคำตอบที่ terdon และฉันเชื่อมโยงกับ (และฉันเขียน) คำถามของคุณจะซ้ำซ้อนกับคำถามนั้นถ้าไม่ใช่ในแง่ของ tmux คุณคาดหวังอะไรอีกจากคำตอบ
Gilles 'หยุดความชั่วร้าย'

1
@Gillesฉันไม่ต้องการที่จะฟังหมายความว่า ฉันพยายามที่จะรับรอง@terdonสิ่ง "ตอบรับที่ยอมรับ" แม้ว่าเขาจะอ้างถึงคำตอบของคุณในคำถามอื่น อย่างไรก็ตามเรื่องนี้set -g default_terminal "screen-256color"คำสั่งไม่เพียงพอที่จะเปิดใช้งาน 256 สีในtmux คุณต้องalias tmux='export TERM=screen-256color; /usr/bin/tmux'( อ้างอิง )
Atcold

@Atcold ไม่จำเป็นต้องใช้นามแฝง (ฉันทดสอบ) นอกจากนี้นามแฝงนี้จะไม่สมเหตุสมผล: มันอ้างว่า tmux นั้นทำงานอยู่ภายในหน้าจอหรือ tmux อย่างไรก็ตามคุณจำเป็นต้องเรียกใช้tmux -2ตามย่อหน้าก่อนหน้าของฉันถ้า tmux ไม่คิดว่าเทอร์มินัลปัจจุบันของคุณรองรับ 256 สีดังนั้นalias tmux='tmux -2'จะสมเหตุสมผล
Gilles 'ดังนั้นหยุดความชั่วร้าย'

2
@Atcold ที่ U & L คำตอบมีซึ่งเป็นที่เหมาะสมซึ่งแตกต่างจากTERM=xterm-256color tmux ดีกว่าเพราะใช้งานได้แม้ว่าจะไม่ได้อยู่ในฐานข้อมูล terminfo ในเครื่อง TERM=screen-256color tmuxtmux -2screen-256color
Gilles 'หยุดความชั่วร้าย'

20

ฉันประทับใจในการจัดรูปแบบและรายละเอียดของคำตอบ (และคำถาม!) อย่างละเอียด ในขณะที่พวกเขาให้ข้อมูลที่มีค่าและวิธีแก้ปัญหาเกี่ยวกับเครื่องมือที่คุณกล่าวถึงพวกเขาให้ข้อมูลเชิงลึกเพียงเล็กน้อยเกี่ยวกับสิ่งที่เกิดขึ้นและที่สำคัญที่สุดคือเหตุใดสิ่งต่าง ๆ จึงทำงานกับเครื่องมือบางอย่างเมื่อพวกเขาไม่ควร

ดังนั้นนี่เป็นข้อมูลเชิงลึกเกี่ยวกับคำถามพื้นฐานของคุณ:

  • สิ่งที่เทอร์มินัลรองรับและรายงานสิ่งนั้นแตกต่างกัน ยกตัวอย่างเช่นเทอร์มินัล Gnome สามารถแสดงผลได้ 256 สี แต่มันประกาศตัวเองสู่สภาพแวดล้อม (ผ่าน$TERMตัวแปร) ในรูปของตัวxtermจำลอง (8 สี)

  • เครื่องมือเช่นtputติดตามสิ่งที่TERMถูกตั้งค่าเป็น: tput colorsอาจพิมพ์ 8 ในขณะที่env TERM=xterm-256color tput colorsพิมพ์ 256 ไม่ว่าเทอร์มินัลของคุณจะรองรับความสามารถดังกล่าวหรือไม่

  • vimตามTERMค่าเริ่มต้น แต่ตามที่คุณบอกให้ใช้ 256 สี (ผ่านทางธงหรือset t_Co=256) ก็จะใช้ 256 สี และการทำงานเพราะ terminal ของคุณจริงสนับสนุนว่า

  • tmuxเช่นเดียวกับเทอร์มินัล Gnome โดยค่าเริ่มต้นจะรายงานตัวเองว่าเป็นเทอร์มินัล 8 สี แต่แตกต่างจากเทอร์มินัล Gnome เพียงเปิดใช้ความสามารถ 256 สีถ้าคุณใช้การ-2ตั้งค่าสถานะซึ่งทำให้รายงานตัวเองเป็นxterm-256colorอีมูเลเตอร์ที่เข้ากันได้

  • xtermดังเช่นในซอฟต์แวร์เทอร์มินัลอีมูเลเตอร์สำหรับ X11รองรับ 256 สีอย่างแน่นอน แต่xtermในขณะที่TERM=xtermเป็น "มาตรฐาน" 8 สี มันหมายถึงความสามารถของเดิม xtermเมื่อมันได้รับการอัพเกรดเพื่อรองรับ 256 สีเมื่อนานมาแล้วมันเป็นคำประกาศเกียรติคุณxterm-256colorสำหรับสิ่งนั้น

ดังนั้นทุกอย่างจึงลงมาที่:

  • ความสามารถใดที่เทอร์มินัลของคุณรองรับจริง ๆ

  • รายงานถึงความสามารถดังกล่าวต่อสภาพแวดล้อมผ่านทาง TERM

  • เครื่องมือตีความTERMและปรับตัวเองอย่างไร

  • ในขณะที่คุณสามารถอนุมานจากด้านบน, หลีกเลี่ยงการตอกexport TERM=xterm-256colorในคุณ~/.bashrcคริปดังกล่าวและ เนื่องจากไฟล์เหล่านั้นถูกเรียกใช้งานโดยไม่คำนึงถึงเครื่องปลายทางที่คุณใช้งานจริงมันจะทำให้เครื่องปลายทางทั้งหมดของคุณรวมถึงการเชื่อมต่อระยะไกลจาก Windows ที่มี Putty, ขั้วคอนโซล Linux ฯลฯ รายงานตัวเองว่าเข้ากันได้กับ xterm-256color ซึ่งอาจเป็นจริงสำหรับบางคน แต่ไม่แน่นอนสำหรับทุกคน ตัวอย่างเช่นgettyคอนโซล linux ที่คุณเข้าถึงCTRL+ALT+1..6ไม่สามารถทำได้

  • เทอร์มินัลควรรายงานตนเองว่าเป็น "มาตรฐาน" ที่ใช้งานร่วมกันได้มากที่สุด หากคุณรู้ว่าสามารถจัดการได้ 256 สีให้กำหนดค่าให้โฆษณาดังกล่าว

สุดท้าย แต่ไม่ท้ายสุดการอ่านที่น่าอัศจรรย์TERMและ 256 สีคือ:

http://blog.sanctum.geek.nz/term-strings/

http://blog.sanctum.geek.nz/256-colour-terminals/


ตัวอย่างสถานการณ์หรือสองอย่างจะเป็นการเพิ่มเติมที่ดีให้กับคำตอบนี้
Elijah Lynn

5

ผมจะให้คำตอบที่สมบูรณ์ที่อยู่เพียงการทดลองเพิ่มเติมของคุณตราบเท่าที่พวกเขาเกี่ยวข้องกับสีไดเรกทอรี solarized

ติดตั้ง

เรามีเอาต์พุตสีเดียวกันจากสคริปต์ทดสอบ ข้อแตกต่างคือฉันใช้lxterminalกับOpenboxด้วยslim , xcompmgrและไม่มี DM ดังนั้นฉันไม่สามารถตั้งค่าพาเลตแบบกำหนดเองได้อย่างง่ายดายเหมือนที่คุณทำเพราะเทอร์มินัลอีมูเลเตอร์ไม่ได้เสนอการตั้งค่าเหล่านั้นใน GUI และไม่มีธีมเฉพาะสำหรับมัน ดังนั้นฉันแค่ใช้ความโปร่งแสงเทอร์มินัลที่ไม่ได้ตกแต่งและสีน้ำเงินนั้นเป็นสีพื้นหน้ากับพื้นหลังของGentooสีน้ำเงิน เนื่องจากฉันไม่สามารถใช้ไฟล์สีเวอร์ชันansiได้ฉันจึงมุ่งเน้นไปที่ผลลัพธ์ที่ได้รับdircolors.256darkเช่นเวอร์ชันง่าย ๆ "เสื่อมโทรม"

ฉันใช้การกำหนดค่าที่เกี่ยวข้องต่อไปนี้และแบบอักษรขนาดกลางของinconsolata :

echo $TERM
xterm

.bashrc:
eval `dircolors /path/to/dircolors.256dark`

.vimrc:
set t_Co=256
let g:solarized_termcolors=256
syntax enable
set background=dark
colorscheme solarized

.tmux.conf:
nothing at all related to colors!
start tmux with "tmux -2"

Dircolors

ภาพด้านล่างแสดงสิ่งที่เกิดขึ้นทั้งภายในและภายนอกtmuxด้วยการตั้งค่าเหล่านี้ หน้าต่างแรกที่สามทางด้านซ้ายแสดงหน้าต่างlxterminal ที่ไม่ได้ตกแต่งในแนวตั้ง (3) ทางด้านขวาคุณมีแอสเซมบลีtmuxแสดงโปรแกรมที่เหมือนกันเหมือนกัน (3) ฉันได้รวมSolarized xterm1แสดง nano โดยใช้ไฟล์. Xresources ที่รวมอยู่ในแพคเกจแบบเต็ม (และสุ่มตัวอย่างด้วยxrdb -load ~/.Xresources):

ป้อนคำอธิบายรูปภาพที่นี่ โปรดคลิกขวา / ดูภาพเพื่อตรวจสอบที่ความละเอียดเต็ม

เทอร์มินัลแรกที่มุมบนซ้ายแสดงสีของไดเรกทอรีเริ่มต้น ด้านล่างเป็นเวอร์ชันโซลาร์ที่ได้รับการลดระดับ ยกเว้นสีชมพูบนพื้นหลังสีน้ำเงินสำหรับ.cไฟล์ที่ฉันเพิ่มมันเหมือนกับสิ่งที่คาดหวังจากสิ่งนี้ (ดูภาพด้านล่างสำหรับการอ้างอิง) เมื่อเทียบกับค่าเริ่มต้นมันจะสร้างเพิ่มเติมเกี่ยวกับคุณสมบัติเพิ่มเติมเช่นตัวหนา / แสง / ย้อนกลับ ฯลฯ และสีที่แตกต่างอย่างชัดเจน การกำหนดสีเริ่มต้นสำหรับ.txtไฟล์ในการจัดจำหน่ายจำนวนมากเป็นสีเขียว แต่มันควรจะเป็นสีเทาแทนเมื่อsolarized ANSIไฟล์การแสดงผลไฟล์ .txt เป็นสีเขียวทั้งไม่ได้แสดงผลอย่างถูกต้องหรือไม่การแสดงผลที่ทุกคน ผลลัพธ์ทางด้านขวาที่คุณแสดงให้เห็นคือผลลัพธ์ที่ถูกต้อง (256dark) ที่เกี่ยวข้องกับการอ้างอิงต่อไปนี้:

ป้อนคำอธิบายรูปภาพที่นี่ แผนที่อ้างอิงdircolors "เสื่อมโทรม" solarized

ข้อสังเกต

ด้วยการกำหนดค่าที่ฉันใช้ผลลัพธ์ปรากฏเหมือนกันทั้งภายในและภายนอก tmux (ฉันกลับความคิดเห็น (#) ใน vi แต่อย่างอื่นปลั๊กอินทำงานตามที่ควรและมัลติเพล็กเซอร์ไม่มีผลกระทบกับเรื่องนี้) แบบอักษรมีบทบาทอย่างมากในการกำหนดคุณสมบัติของโซล่าร์และจำเป็นต้องใช้แบบอักษรที่ดีเพื่อเพิ่มประสบการณ์ solarizedสีไดเรกทอรีใช้256darkไฟล์ตรงอ้างอิงและไม่จำเป็นต้องมีการกำหนดค่าจำลอง terminal ที่เฉพาะเจาะจง


ข้อสรุป

ที่จริงแล้วการเรนเดอร์สีansiของไดเรคทอรีนั้นแตกต่างจากโซล่าร์ที่ถูกลดระดับลงอย่างสิ้นเชิง (256dark) มากดังนั้นภายใต้ไฟล์ansi .txtเป็นสีเขียว หนึ่งไม่สามารถใช้ในการตรวจสอบการแสดงผลของคนอื่น โซลูชันทั้งสองต้องการการกำหนดค่าที่แตกต่างกันและให้ผลลัพธ์ที่แตกต่างอย่างสิ้นเชิง


"ฉันไม่เข้าใจข้อสรุปของคุณเกี่ยวกับความสนใจไม่มากที่ถูกจ่ายให้กับการเข้ารหัส 256dark ซึ่งอันที่จริงแล้วมันเป็นไฟล์สีเพียงไฟล์เดียวที่ให้รายชื่อไดเรกทอรีโซลาริ ความสับสนของฉันเกิดขึ้นจากความจริงที่ว่าฉันกำลังพิจารณาansi-darkผลลัพธ์ที่ถูกต้อง (เนื่องจากมันใช้เวอร์ชันที่ไม่เสื่อมคุณภาพ) จากนั้นถ้าคุณใช้อ้างอิงผลลัพธ์ของ256darkคุณก็จะมีความคิดตรงกันข้าม
Atcold

"ด้วยการกำหนดค่าที่ฉันใช้ผลลัพธ์จะเหมือนกันทั้งภายในและภายนอก tmux" แน่นอนว่าถ้าคุณใช้ 256 สีแน่นอนว่าพวกมันจะแสดงผลเหมือนกันทุกที่ที่คุณรองรับ 256 สี "ยังไม่ชัดเจนว่าโซลูชัน ansi จะให้อะไรเพิ่มเติมในบริบทนี้ ... " ผลลัพธ์ที่ได้คือการทำให้เป็น สุริยคติที่แท้จริง (แทนที่จะเป็นการประมาณ)
Atcold

ฉันเข้าใจ. ฉันไม่ได้ค้นคว้าส่วน ansi จริงๆดังนั้นฉันจึงไม่สามารถเข้าใจได้ว่าคุณมาจากไหน ไม่ว่าในกรณีใดฉันพบว่าคิวของคุณเปิดใช้งานได้ดีขอบคุณ บางทีฉันอาจจะใช้ vi มากกว่านี้ในขณะที่ฉันพบว่ามันน่ารักมาก ๆ สำหรับผลการ ANSI จริงตอนนี้ผมเคยเห็นว่าจะดู ... พวกเขาเท่านั้นที่แสดงว่าผบสีที่นี่ ทำไมต้องเอช พวกเขามีการเข้ารหัสที่แตกต่างกันภายใต้ ... ฉันหมายถึงฉันเห็น. txt สีเขียว ... สีเทาใกล้กับสีเขียวอย่างไร ฉันไม่เข้าใจโครงการของพวกเขาอย่างจริงจัง

ใช่ฉันติดต่อผู้แต่งเป็นการส่วนตัวและคำตอบก็คือ "มันเป็นการปรับแต่งส่วนตัวของเขาเพราะเขาชอบแบบนั้น" ฉันพูดไม่ออก ... ฉันดีใจที่ Q ของฉันช่วยใครซักคน :)
Atcold
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.