ဝီႇၶီႇၽီးတီးယႃး
shnwiki
https://shn.wikipedia.org/wiki/%E1%81%BC%E1%82%83%E1%82%88%E1%82%81%E1%80%B0%E1%80%9D%E1%80%BA%E1%82%81%E1%82%85%E1%81%B5%E1%80%BA%E1%82%88
MediaWiki 1.47.0-wmf.6
first-letter
သိုဝ်ႇၶၢဝ်ႇ
ၶိုၵ်ႉတွၼ်း
ဢုပ်ႇၵုမ်
ၽူႈၸႂ်ႉတိုဝ်း
ဢုပ်ႇၵုမ် ၽူႈၸႂ်ႉတိုဝ်း
ဝီႇၶီႇၽီးတီးယႃး
ဢုပ်ႇၵုမ် ဝီႇၶီႇၽီးတီးယႃး
ၾၢႆႇ
ဢုပ်ႇၵုမ် ၾၢႆႇ
မီႇတီႇယႃႇဝီႇၶီႇ
ဢုပ်ႇၵုမ် မီႇတီႇယႃႇဝီႇၶီႇ
ထႅမ်းပလဵတ်ႉ
ဢုပ်ႇၵုမ် ထႅမ်းပလဵတ်ႉ
လွင်ႈၸွႆႈထႅမ်
ဢုပ်ႇၵုမ် လွင်ႈၸွႆႈထႅမ်
ပိူင်ထၢၼ်ႈ
ဢုပ်ႇၵုမ် ပိူင်ထၢၼ်ႈ
ၵိူၼ်ႇတူ
တွၼ်ႈဢုပ်ႇ ၵိူၼ်ႇတူ
ပိူင်လိူင်း
ဢုပ်ႇၵုမ် ပိူင်လိူင်း
TimedText
TimedText talk
မေႃႇၵျူး
ဢုပ်ႇၵုမ် မေႃႇၵျူး
Event
Event talk
ဢူးပုၼ်းတု
0
1699
126514
124620
2026-06-17T00:52:37Z
InternetArchiveBot
2342
Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.5
126514
wikitext
text/x-wiki
{{Infobox OS
| name = Ubuntu
| logo = Ubuntu-logo-2022.svg
| screenshot = VirtualBox Ubuntu 21.10 15 10 2021 13 19 12 ENG.png
| caption = Ubuntu 21.10 "Impish Indri"
| developer = [[Canonical (company)|Canonical Ltd.]]
| family = [[Linux]]
| working_state = Current
| source_model = [[Open-source software|Open-source]]<ref name="Ubuntu kernel sources">{{cite web |title=kernel.ubuntu.com |url=http://kernel.ubuntu.com/git/ |website=kernel.ubuntu.com |access-date=2020-12-31 |archive-date=2018-08-21 |archive-url=https://web.archive.org/web/20180821121416/http://kernel.ubuntu.com/git/ }}</ref><ref name="Ubuntu archive">{{cite web |title=Index of /ubuntu |url=http://archive.ubuntu.com/ubuntu/ |website=archive.ubuntu.com}}</ref>
| released = {{Start date and age|2004|10|20|df=yes|paren=yes}}
| latest_release_version = [[Ubuntu version history#2010|Ubuntu 20.10]] <!-- If you update this, remember to also update [[Comparison of Linux distributions]]. -->
| latest_release_date = {{Start date and age|2020|10|22|df=yes|paren=yes}}<ref>{{cite web |url=https://lists.ubuntu.com/archives/ubuntu-announce/2020-October/000263.html |title=Ubuntu 20.10 (Groovy Gorilla) released |date=22 October 2020}}</ref>
| latest_preview_version = Ubuntu 21.04 (Hirsute Hippo) Daily Build<ref>{{Cite web |url=http://cdimage.ubuntu.com/daily-live/current/ |title=Ubuntu 21.04 (Hirsute Hippo) Daily Build |website=cdimage.ubuntu.com |access-date=2020-11-07}}</ref>
<!--| latest_preview_date = {{Start date and age|2020|11|07|df=yes|paren=yes}} and daily builds-->| marketing target = [[Cloud computing]], [[personal computer]]s, [[Server (computing)|servers]], [[supercomputer]]s, [[Internet of things|IoT]]
| language = More than 55 languages <small>by [[#Local communities (LoCos)|LoCos]]</small>
| updatemodel = [[Software Updater]]
| package_manager = [[GNOME Software]], [[APT (Debian)|APT]], [[dpkg]], [[Snappy (package manager)|Snappy]], [[flatpak]]
| supported_platforms = {{bulleted list |[[IA-32]], [[x86-64]] |[[ARM64]], [[ARMhf]] ([[ARMv7]] + [[VFPv3-D16]]) |[[ppc64le]] ([[POWER8]] and later) |[[s390x]]<ref name="supported_hardware">{{cite web |url=https://help.ubuntu.com/18.04/serverguide/preparing-to-install.html |quote=Ubuntu 18.04 LTS Server Edition supports four (4) major architectures: AMD64, ARM, POWER8, LinuxONE and z Systems |title=Preparing to Install |work=Ubuntu Official Documentation |year=2018 |publisher=Canonical Ltd. |access-date=16 November 2018 |archive-date=2 June 2019 |archive-url=https://web.archive.org/web/20190602173029/https://help.ubuntu.com/18.04/serverguide/preparing-to-install.html }}</ref>}}
| kernel_type = [[Linux kernel]]
| userland = [[GNU Core Utilities|GNU]]
| ui = [[GNOME]]
| license = [[Free software]] + some [[proprietary software|proprietary]] [[device driver]]s<ref name="kernelblobs">{{cite web |url= https://www.gnu.org/distros/common-distros.html#Ubuntu |title= Explaining Why We Don't Endorse Other Systems |publisher= [[Free Software Foundation]] |access-date= 14 July 2015 |archive-date= 24 April 2011 |archive-url= https://web.archive.org/web/20110424061731/http://www.gnu.org/distros/common-distros.html#Ubuntu |url-status= dead }}</ref>
| website = {{Official URL}}
}}
'''ဢူးပုၼ်ႈတု''' ({{Langx|en|Ubuntu}}) ({{IPA-en| /ʊˈbuːntʊ/ uu-BOON-tuu|pron}}) ၼႆႉ ပဵၼ် [[ပိူင်သၢင်ႈ ႁဵတ်းၵၢၼ် ၶွမ်းပျူတႃႇ]] ဢၼ်ၼိုင်ႈ ဢၼ်လုၵ်ႉတီႈ [[တႅတ်ႉပီးယႅၼ်း]] ဢၼ်ဢဝ် [[လိၼ်းၼိတ်ႉ]] ပဵၼ်ပိုၼ်ႉဝႆႉၼၼ်ႉယဝ်ႉ။ ဢူးပုၼ်းတုၼႆႉ မၼ်းပဵၼ်တွၼ်ႈတႃႇပၼ် ပိူင်ၸတ်းၵၢၼ်ဢၼ်ၼိမ်မၼ်ႈ ဢၼ်ၶိုတ်းၵၢပ်ႈသေ ဢၼ်ၸၢင်ႈႁႂ်ႈ ၽူႈၸႂ်ႉတိုဝ်း ၶွမ်းပျူတႃႇၶဝ် ဢူၼ်းသႂ်ႇလႆႈငၢႆႈငၢႆႈၼၼ်ႉယဝ်ႉ။ ၸႂ်ႉဝႆႉ Gnome desktop environment ဢၼ်ဢဝ် ၵရၢပ်ႉၽိတ်ႉပဵၼ်ပိူင်လူင်မၼ်းၼၼ်ႉယဝ်ႉ။ မၼ်းယိူင်းဢၢၼ်းႁၢင်ႈႁႅၼ်းဝႆႉ တွၼ်ႈတႃႇ ၽူႈတႄႇၸႂ်ႉတိုဝ်းၶဝ် ႁႂ်ႈပေႃးၸႂ်ႉလႆႈငၢႆႈငႅမ်ႈၼၼ်ႉယဝ်ႉ။ တီႈပွင်ႇ Ubuntu ဢၼ်ဝႃႈၼႆႉ မၼ်းပဵၼ်ၽႃႇသႃႇဢႃႇၽရိၵသေ မီးတီႈပွင်ႇဝႃႈ "ၵေႃႉၼိုင်ႈလႄႈ ၵေႃႉၼိုင်ႈ တူၺ်းထိုင်ႁၼ်လီၼိူဝ်ၵၼ်" ဝႃႈၼႆႉယဝ်ႉ။ ပေႃးလၢတ်ႈဝႃႈ မၼ်းပဵၼ် ပိူင်ႈသၢင်ႈၶွမ်းပျူတႃႇ ဢၼ်ယိူင်းဢၢၼ်း တွၼ်ႈတႃႇ တူင်ႇဝိူင်းၵူၼ်းၼႆႉၵေႃႈ ဢမ်ႇၽိတ်းၼင်ႇၵဝ်ႇ။ ဢၼ်ပဵၼ်ပိူင်သၢင်ႈဢၼ်ၼႆႉ မၼ်းၸၢင်ႈၸႂ်ႉလႆႈ တႄႇဢဝ် ၶွမ်းပျူတႃႇ တၢင်ႇတၵ်း တေႃႇပေႃးထိုင် ၶွမ်းပျူတႃႇတၢင်ႇၽိူၼ်ယဝ်ႉ။ ၸိူဝ်းပဵၼ် မဵဝ်းမိူၼ်ဢူးပုၼ်းတု ဢၼ်ပဵၼ် ၵုပုၼ်းတုၼ်း၊ သုပုၼ်းတုၼ်း လႄႈ ဢႅတ်ႉၵျုပုၼ်းတု ၸိူဝ်းၼႆႉၵေႃႈ မီးဝႆႉယူႇယဝ်ႉ။
== ဢူးပုၼ်းတု လႄႈ ၶဝ်ၼင်ႇၵၼ်ပႅၵ်ႇပိူင်ႈသင်ၵၼ်? ==
[[ၾၢႆႇ:Kubuntu 18.04 Desktop.jpg|thumb|left|150px|Kubuntu 18.04 LTS "Bionic Beaver"]]
တီႈပိူင်သၢင်ႈ '''ၶုပုၼ်းတုၼ်း (Kubuntu)''' ၼႆႉ ၸႂ်ႉဝႆႉ KDE enviroment ယဝ်ႉ။ ၵမ်ႉၼမ် ဢွၼ်ၵၼ်ႁွင်ႉဝႃႈ K Desktop ဝႃႈၼႆယဝ်ႉ။ ပိူင်သၢင်ႈဢၼ်ၼၼ်ႉၼႆႉ ယွၼ်ႉပိူဝ်ႈဝႃႈ ၸၼ်ႉသုင်ဝႆႉ တၢင်ႇတၢၼ်ႇလႄႈ ပေႃးဝႃႈပဵၼ် ၵေႃႉၸႂ်ႉလႆႈလိၼ်းၼိတ်ႉလီလီတႄႉၵေႃႈ ပဵၼ်ဢၼ်သၢင်ႇထုၵ်ႇယူႇ။ Configuration options မၼ်းၼႆႉ ဢမ်ႇပေႃးငၢႆႈငႅမ်ႈမိူၼ်ၼင်ႇ ဢူးပုၼ်းတုသေ ၸၢင်ႈမၵ်းမၼ်ႈလႆႈဝႃႈ ၸၢၼ်ႉသုင်ဝႆႉၼၼ်ႉယဝ်ႉ။ တီႈမၼ်းၼၼ်ႉၵေႃႈပႃး Web browser ၼင်ႇ Kongueror လႄႈ File manager၊ Instant messenger ၼင်ႇ Kopete၊ ၶိူင်ႈလူၶိူင်ႈၽတ်းၸီႇတီႇ ၼင်ႇ K3B ၸိူဝ်းၼႆႉၵေႃႈ သႂ်ႇဝႆႉပၼ်ၵမ်းသိုဝ်ႈယူႇယဝ်ႉ။
'''သုပုၼ်းတု (Xubuntu)''' ဢၼ်ဝႃႈၼႆႉ မၼ်းၸႂ်ႉဝႆႉ Xfce environment ဢၼ်တိူဝ်းမဝ်လိူဝ်သေ KDE လႄႈ Gnome ၼၼ်ႉယဝ်ႉ။ သုပုၼ်းတုၼႆႉ ဢၼ်ဢမ်ႇပေႃးပၼ်လွင်ႈၽၢင်ႈၼင်ု ဢူးပုၼ်းတု၊ ၶုပုၼ်းတု ၼၼ်ႉ။ ယွၼ်ႉပိူဝ်ႈၼၼ်လႄႈ လႆႈထၢင်ႇဝႃႈ မၼ်းတိူဝ်းၸႂ်ႉမဝ်လီၼၼ်ႉယဝ်ႉ။ မၼ်းၼႆႉ တေႃႈမီးၶိူင်ႈမၢႆတွင်း 129 လႄႈ 256 မႅၵ်ႇၵႃႇပၢႆႉၵူၺ်းၵေႃႈ ၸႂ်ႉလႆႈမဝ်မဝ်ယူႇယဝ်ႉ။ ၵူၺ်းၵႃႈဝႃႈ Point & click configuration options မၼ်းတႄႉ ႁဵတ်းဝႆႉဢမ်ႇယွမ်းလိူဝ် ဢူးပုၼ်းတု၊ ၶုပုၼ်းတုၼၼ်ႉၼင်ႇၵဝ်ႇ။
ဢၼ်ပဵၼ် '''ဢႅတ်ႉၵျုပုၼ်းတု (Edubuntu)''' ၼႆႉ တိုၼ်းႁဵတ်းဢွၵ်ႇဝႆႉတႃႇ ၵၢၼ်ၸွႆႈသၢင်ႈၽၢႆႇပၢႆးပႆႇၺႃႇယဝ်ႉ။ တီႈမၼ်းၵေႃႈ ႁူမ်ႈဝႃႈသႂ်ႇဝႆပပၼ် Gnome သေတႃႉၵေႃႈ Default applications မၼ်းတႄႉ ဢမ်ႇမိူၼ်ၼင်, ဢူးပုၼ်းတု ၼင်ႇၵဝ်ႇ။ ဢဝ် app ဢၼ်ၸႂ်ႉတွၼ်ႈတႃႇ ပိူင်ထၢၼ်ႈပၢႆးပႆႇၺႃႇသေ ဢမ်ႇၵႃး မိူၼ်ၼင်ႇ Gpaint, Atomix လႄႈ Xaos ၸိူဝ်းပဵၼ် App ၸိူဝ်းၼႆႉၵေႃႈ ၶဝ်ႈပႃးယူႇယဝ်ႉ။
ၸွမ်းၼင်ႇၼႄမႃးပႃႈၼိူဝ်ၼၼ်ႉ တီႈၼႂ်း ၽၼ်းၽႄ Ubuntu ၼၼ်ႉ ၸွမ်းလူၺ်ႈ ၽူႈၸႂ်ႉတိုဝ်းမၼ်းသေ ၶိုၼ်းၸႅၵ်ႇလႆႈထႅင်ႈ (4) မဵဝ်းယူႇယဝ်ႉ။ သင်ၸိူဝ်ႉဝႃႈ ၸဝ်ႈၵဝ်ႇ ပဵၼ်ၵူၼ်းတႅမ်ႈ Program၊ Web applications ၼႆၸိုင် ၸဝ်ႈၵဝ်ႇ ၸၢင်ႈၸႂ်ႉ Kubuntu ဢၼ်တိူဝ်းၸၼ်ႉသုင်ဢိတ်းၼိုင်ႈၼၼ်ႉသေ? သင်ၸိူဝ်ႉဝႃႈ ၸဝ်ႈၵဝ်ႇလႆႈၸႂ်ႉ ႁၢင်ႈၽၢင်ၵရၢပ်ႉၽိတ်ႉ Gnome ၼႆတႄႉ ၸၢင်ႈၸႂ်ႉလႆႈ Ubuntu ယူႇယဝ်ႉ။ ၸဝ်ႈၵဝ်ႇၸၢင်ႈဢဝ် Kubuntu-Desktop သေၵေႃႈ တၢင်ႇၸႂ်ႉတီႈၼိူဝ် Ubuntu ၵေႃႈလႆႈယဝ်ႉ။ ပေႃးၶႂ်းၶဝ် Gnome လႄႈ KDE native applications ၸိူဝ်းၼႆႉ ၵႂႃႇၸႂ်ႉတီႈၼိူဝ် Xfce ၼႆၵေႃႈ လႆႈယူႇယဝ်ႉ။ ၶဝ်မီးလွင်ႈငမ်ႇမႅၼ်ႈၵၼ်လီငၢမ်းယူႇ ၼႆၵေႃႈ ဝႃႈဢမ်ႇၽိတ်းယဝ်ႉ။ ယွၼ်ႉပိူဝ်ႈသင်ၼႆ ၸိူဝ်းပဵၼ် Applications တီႈ Ubuntu, Kubuntu, Xubuntu, Edubuntu ၸိူဝ်းၼႆႉ ၶဝ်ၵႆႉမီး လွင်ႈၸႅၵ်ႇၽႄၸႂ်ႉၸွမ်းၵၼ် ၼႂ်းၵႄႈၶဝ်ၼၼ်ႉယဝ်ႉ။
ယွၼ်ႉပိူဝ်ႈၼၼ် သင်ၸိူဝ်ႉဝႃႈ ပဵၼ်တႃႇသုၼ်ႇတူဝ်ၼႆတႄႉ ထုၵ်ႇလီတႅမ်းတတ်း တႃႇၸႂ်ႉUbuntu ဢၼ်ငၢႆႈငႅမ်ႈ ဢၼ်မီး လွင်ႈၽၢင်ႁၢင်ႈ Graphical Interface ၼင်ႇဝိၼ်းတူဝ်းၼၼ်ႉယူႇ။
[[ၾၢႆႇ:Ubuntu Desktop 11.04 Live CD - Welcome screen.png|thumb|left|150px|ႁၢင်ႈၼႃႈႁပ်ႉတွၼ်ႈ ၽွင်းတႄႇဢူၼ်းသႂ်ႇ Ubuntu ]]
== ပိုၼ်းလႄႈ မဵဝ်းၸိူဝ်းဢၼ်ႁဵတ်းဢွၵ်ႇမႃး ==
ဢူးပုၼ်းတုၼႆႉ ပဵၼ်မဵဝ်းဢၼ်ၵူၼ်းလႆႈၸႂ်ၼမ်သေ လႆႈတႄႇပိုၼ်ဢွၵ်ႇ မိူဝ်ႈပီ 2004 လိူၼ်ဢွၵ်ႇထူဝ်ႇပႃႇ 20 ဝၼ်းၼၼ်ႉ ပဵၼ်ပွၵ်ႈဢွၼ်တၢင်းသုတ်းယဝ်ႉ။ တေႃႇထိုင် ပီ 2018 လိူၼ်ဢွၵ်ႇထူဝ်ႇပႃႇ ၼႆႉ ႁဵတ်းဢွၵ်ႇမႃး Ubuntu 18.10 Cosmic Cuttlefish ၼၼ်ႉယဝ်ႉ။ ဢူးပုၼ်းတု ဢၼ်ဝႃႈၼႆႉ ပေႃးဢဝ် ၽႃႇသႃႇၵႂၢမ်းဢႃႇၽရိၵဝႃႈ "ၵေႃႉၼိုင်ႈတင်းၵေႃႉၼိုင်ႈ ဝႆႉၼမ်ႉၸႂ်လီတေႃႇၵၼ်" ဝႃႈၼႆသေ ပဵၼ် ပိူင်သၢင်ႈ Operating System ဢၼ်ယိူင်းဢၢၼ်းႁဵတ်းဢွၵ်ႇ တွၼ်ႈတႃႇ တူင်ႇဝိူင်းၵူၼ်း ၸၼ်ႉငဝ်ႈၼၼ်ႉယဝ်ႉ။ တႃႇ Laptop, Desktop သေဢမ်ႇၵႃးၸၢင်ႈဢဝ်ၸႂ့်ပႃးလႆႈတႃႇ Server ၸိူဝ်းၼႆႉယဝ်ႉ။ ဢူးပုၼ်းတုၼႆႉ မၼ်းၸႂ်ႉဝႆႉ Gnome desktop environment ဢၼ်ဢဝ်လွင်ႈၵရၢပ်ႉၽိတ်ႉဝႆႉပိူင်ယႂ်ႇတႄႇသေ ႁဵတ်းဢွၵ်ႇဝႆႉလႄႈ ပေႃးဝႃႈ တွၼ်ႈတႃႇ ၵူၼ်းတႄႇၸႂ်ႉ လုၵ်ႉတီႈ (MS လႅၵ်ႈလၢႆႈၸႂ်ႉၸၢမ်းတူၺ်း) ၼႆတႄႉ ပဵၼ် မဵဝ်းဢၼ်သၢင်ႇထုၵ်ႇဢၼ်ၼိုင်ႈယဝ်ႉ။
Ubuntu ၼႆႉ လုၵ်ႉတီႈ Code project ဢၼ်ပဵၼ် Linux distro ဢၼ်မီးၸိုဝ်ႈဝႃႈ Debian ၼၼ်ႉသေ လူင်းပဵၼ်မႃးယဝ်ႉ။ လွင်ႈယိူင်းဢၢၼ်းငဝ်ႈငႃႇ Ubuntu ၼႆႉ တႃႇပဵၼ် Linux distro ဢၼ်ၼိုင်ႈ တွၼ်ႈတႃႇ ႁႂ်ႈၸႂ်ႉလႆႈ လွတ်ႈလွတ်ႈလႅင်းလႅဝ်း (တိူဝ်းလိူဝ်သေ ၸႂ်ႉလႆႈလၢႆလၢႆၼၼ်ႉယဝ်ႉ)။ ၶေႃႈၶၼ်ပၢၵ်ႇ Ubuntu တႄႉၵေႃႈ "Linux တွၼ်ႈတႃႇၵူၼ်းၵူႈၵေႃႉ" (Linux for human being) ဝႃႈၼႆယဝ်ႉ။ Ubuntu distro ၼႆႉ ႁူၵ်းလိူၼ် ႁဵတ်းဢွၵ်ႇၼိုင်ႈပွၵ်ႈသေ ပေႃး သီႇပွၵ်ႈ (ႁိုင် 24 လိူၼ်) ၼိုင်ႈပွၵ်ႈၼႆ ႁဵတ်းဢွၵ်ႇ LTS (Long Term Support) ၼၼ်ႉယဝ်ႉ။ ၸိူဝ်းပဵၼ် LTS distro ၼႆႉပေႃးဝႃႈ တွၼ်ႈတႃႇ Desktop version ၼႆ ၸွႆႈထႅမ်ၵႄႈလိတ်ႈပၼ်တင်းယၢပ်ႇၽိုတ်ႇ တႃႇၶၢဝ်းတၢင်းသၢမ်ပီသေ ပေႃးတွၼ်ႈတႃႇ Server version တႄႉ ၸွႆႈထႅမ်ပၼ် တႃႇႁႃႈပီ ယဝ်ႉ။ တႄႇဢဝ် 11.04 (Natty Narwhal) မႃး တႄႇၸႂ်ႉ QT သေ တႅၼ်းတၢင် GNOME Desktop Enviroment ဢၼ်ပဵၼ်ငဝ်ႈငႃႇမၼ်းၼၼ်ႉယဝ်ႉ။ လွင်ႈယိူင်းဢၢၼ်းတႄႉ ပဵၼ်တွၼ်ႈတႃႇ တိူဝ်းၵမ်ႉထႅမ်ပၼ်လႆႈၼိူဝ် ၶိူင်ႈၸၢၵ်ႈမူဝ်ႇပၢႆးၼၼ်ႉ ယဝ်ႉ။ ဢူးပုၼ်းတုၼႆႉ ယွၼ်ႉပိူဝ်ႈလုၵ်ႉတီႈ ငဝ်ႈငႃႇ Debian သေ လူင်းမႃးလႄႈ Software ၵမ်ႉပႃႈၼမ်ၼႆႉၵေႃႈ ပဵၼ် Software ၸိူဝ်းဢၼ် Debian ၸႂ်ႉတိုဝ်းၼၼ်ႉယဝ်ႉ။
[[ၾၢႆႇ:ServerScreenshot.jpg|thumb|left|150px|Sever Screen]]
ယွၼ်ႉပိူဝ်ႈၼၼ်လႄႈ တီႈ Ubuntu ၼႆႉ ၸၢင်ႈၸႂ်ႉလႆႈ .deb package ဢၼ်ၸႂ်ႉတီႈ Debian ၼၼ်ႉယဝ်ႉ။ .deb package ဢၼ်ဝႃႈၼႆႉ မၼ်းၶႂ်ႈဝႃႈ debian binary သေ ပေႃးဢဝ်ပိူင်သၢင်ႈ Windows Operating System ဝႃႈၼႆ မၼ်းၵႂႃႇမိူၼ် .exe ၼၼ်ႉယဝ်ႉ။ Ubuntu ၼႆႉ လုၵ်ႉတီႈ ၶွမ်ႇပၼီႇလိမိတႅတ်ႉ Canonical သေ တႄႇတင်ႈမႃး မိူဝ်ႈ ပီ 2005 လိူၼ်ၵျူႇလၢႆႇ 8 ဝၼ်းၼၼ်ႉသေ ၽူႈတႄႇတင်ႈမႃးၼၼ်ႉ ၸိုဝ်ႈမၼ်းႁွင်ႉ မၢၵ်ႉ သျႅတ်ႇတႄႇဝတ်ႉ ({{Langx|en|Mark Shuttleworth}}) ၼႆယဝ်ႉ။ ၽွင်းတႄႇတင်ႈ Ubuntu ၼႆႉ ဢဝ်ငိုၼ်းတေႃႇလႃႇ 10 လၢၼ်ႉသေၵေႃႈ တႄႇတင်ႈမႃးယဝ်ႉ။ ၶေႃႈယိူင်းဢၢၼ်းပဝ်ႉမၢႆၸုမ်းၼၼ်ႉတႄႉ တွၼ်ႈတႃႇ ၵမ်ႉထႅမ်ၸွႆႈသၢင်ႈ Version Ubuntu ၸိူဝ်းဢၼ်ဢွၵ်ႇမႃးဢၼ်မႂ်ႇဝႃႈၼႆႉယဝ်ႉ Mark Shuttleworth ၼႆႉ ပဵၼ်ၵူၼ်းၶိူဝ်းဢႃႇၽရိၵ ၽူႈႁၢပ်ႇၵၢၼ်လၢဝ်ထိမ်းၵေႃႉၵဝ်ႇၵေႃႉၼိုင်ႈယဝ်ႉ။ ထိုင်ပီ 2009 လိူၼ်မၢတ်ႉ 12 မႃး Ubuntu လႆႈပိုၼ်ၽၢဝ်ႇဝႃႈ တေတႄႇၵမ်ႉထႅမ်ပၼ် Cloud computer ၼင်ႇ Amazon EC2 ၼၼ်ႉ ဝႃႈၼႆႉယဝ်ႉ။ တႄႇဢဝ် ပီ 2004 တေႃႇထိုင်ဝၼ်းမိူဝ်ႈၼႆႉ ဢၼ်ပဵၼ် ဢူးပုၼ်းတု ၸိူဝ်းဢွၵ်ႇမႃးၼႆႉ မီးၼင်ႇၽၢႆႇတႂ်ႈၼႆႉယဝ်ႉ။
{{Timeline Ubuntu Linux}}
== လွင်ႈဢူၼ်းသႂ်ႇ တီႈၼႂ်းၸၢၵ်ႈ ==
လွၵ်းလၢႆး ဢူၼ်းသႂ်ႇ Ubuntu ၼႆႉ မီးယူႇ လွၵ်းလၢႆးသွင်လၢႆးယဝ်ႉ။ လွၵ်းလၢႆးတႅပ်း Partition သေ ဢူၼ်းသႂ်ႇ ၼင်ႇလၢႆးဢူၼ်းသႂ်ႇ Operating System တၢင်ႇၸိူဝ်း လႄႈ လွၵ်းလၢႆးဢူၼ်းသႂ်ႇ Wubi (Windows Ubuntu Binary Installer) ၼႆသေ မီးယူႇသွင်လၢႆးယဝ်ႉ။ ဢၼ်ပဵၼ် လွၵ်းလၢႆး Wubi ၼႆႉ ယွၼ်ႉပိူဝ်ႈ ဢမ်ႇလူဝ်ႇတႅပ်း partition သေဢမ်ႇၵႃး ၶၢဝ်းယၢမ်း ဢူၼ်းသႂ်ႇမၼ်းၼႆႉ ႁိုင်မွၵ်ႈ 15 မိတ်ႉၼိတ်ႉၵူၺ်းလႄႈ ပဵၼ်လွၵ်းလၢႆး ဢၼ်ၵူၼ်းလႆႈၸႂ်မႃးၼမ်ယူႇၼၼ်ႉယဝ်ႉ။
== မိူဝ်းၼႃႈ ==
လွင်ႈလၢၵ်ႇလၢႆးဢူးပုၼ်းတုၼႆႉ မၼ်းလႆႈလၢႆၼၼ်ႉယဝ်ႉ။ ၸိူဝ်းပဵၼ်ၽူႈဢွၼ်ႁူဝ် ဢူးပုၼ်းတုၶဝ် မွၵ်ႇလၢတ်ႈဝႆႉတီႈ ဝႅပ်ႉသၢႆႉဢူးပုၼ်းတုၼၼ်ႉဝႃႈဝႆႉ တိုၼ်းတေလႆႈလၢႆတႃႇသေႇ ဝႃႈၼႆယဝ်ႉ။ ယွၼ်ႉပိူဝ်ႈၼၼ်လႄႈ တီႈမိူင်းဢၼ်တူင်ႇဝိူင်းဢၢႆႇထီႇတိုၵ်ႉပဵၼ်ၽွင်းၶိုၼ်ႈယႂ်ႇၼၼ်ႉတႄႉ တေလႆႈဝႃႈ ၶပ်ႉမၢႆဢၼ်ယႃႇႁႂ်ႈ ငိုၼ်းမူတ်းသဵင်ႈၼမ်ၼၼ်ႉယဝ်ႉ။ ၸိူဝ်းပဵၼ် Installations CD/DVD ၼၼ်ႉၵေႃႈ ၸၢင်ႈသင်ႇဢဝ်လႆႈ လၢႆလၢႆယူႇ။ တွၼ်ႈတႃႇ သူင်ႇမႃး Shipping မၼ်းတႄႉ ၵႆႉႁိုင်ႁူဝ်လိူၼ်မၼ်းယဝ်ႉ။ ႁဵင်းလိၵ်ႈဝႅပ်ႉသၢႆႉတႄႉ ပဵၼ် https://shipit.ubuntu.com/ {{Webarchive|url=https://web.archive.org/web/20060824154750/https://shipit.ubuntu.com/ |date=2006-08-24 }} ၼႆႉယဝ်ႉ။ ၵူၺ်းၵႃႈ ဝၢႆးလင် 2010 မႃး ယွၼ်ႉပိူဝ်ႈလၢႆလွင်ႈလၢႆတၢင်းသေ ဢၼ်ပဵၼ်ၶပ်ႉမၢႆ Shipit ၼၼ်ႉ လႆႈယင်ႉၵိုတ်းဝႆႉယဝ်ႉ။ လုၵ်ႉတီႈ Ubuntu LoCo Team သေၵေႃႈ သင်ဢဝ်လႆႈယူႇ။ တီႈၼႂ်းမိူင်းမၢၼ်ႈၼႆႉၵေႃႈ မီးဝႆႉ '''Ubuntu Myanmar LoCo Team''' လႄႈ တင်း '''Ubuntu Shan LoCo Team''' ယူႇယဝ်ႉ။ ပေႃးၵပ်းၵၢႆႇလူၺ်ႈ ဢူးပုၼ်းတုလႄႈ ၶႂ်ႈႁူႉ ၶႂ်ႈထၢမ် သင်ၼႆၵေႃႈ ၵႂႃႇတူၺ်း ၵႂႃႇတွင်ႈထၢမ်လႆႈတီႈ ၼႃႈလိၵ်ႈဝႅပ်ႉသၢႆႉ https://ubuntu-mm.net/ {{Webarchive|url=https://web.archive.org/web/20190122085744/https://ubuntu-mm.net/ |date=2019-01-22 }} ၼၼ်ႉၵေႃႈလႆႈယူႇ။ တီႈၼႂ်း Facebook ၵေႃႈ ၸိူဝ်းပဵၼ် LoCo Team တႆးတင်း မၢၼ်ႈ မီးဝႆႉယူႇသေ သင်မီးလွင်ႈၶႂ်ႈတွင်ႈထၢမ်သင်၊ မီးလွင်ႈၶႂ်ႈႁႂ်ႈၸွႆႈၵႄႈလိတ်ႈပၼ်သင်ၼႆၵေႃႈ တွင်ႈထၢမ်လႆႈယူႇယဝ်ႉ။
ၸိူဝ်းဢၼ်ၼႄမႃး ၽၢႆႇၼိူဝ်ၼၼ်ႉ မၼ်းပဵၼ် လွင်ႈ Ubuntu လႄႈ ၸၢဝ်းၶိူဝ်းမၼ်းၼၼ်ႉယဝ်ႉ။ ၵၢပ်ႈပၢၼ်ယၢမ်းလဵဝ် ၼႂ်းၵႄႈၽူႈၸႂ်ႉတိုဝ်း ၶွမ်းပျူတႃႇၶဝ်ၼၼ်ႉ ၶဝ်ႈႁပ်ႉႁၼ် တီႈပွင်ႇလိၼ်းၼိတ်ႉမႃးသေ ဢွၼ်ၵၼ်ၸႂ်ႉတိုဝ်းမႃးယူႇယဝ်ႉ။ ယွၼ်ႉပိူဝ်ႈၸႂ့်တိုဝ်း လိၼ်းၼိတ်ႉသေ ၸၢင်ႈၸႂ်ႉတိုဝ်း ၶွမ်းပျူတႃႇလႆႈ ႁူမ်ႇႁူမ်ႇလူမ်ႈလူမ်ႈလႄႈ မီးသုၼ်ႇမႄးလႆႈ ပွတ်းတွၼ်ႈၵူႈဢၼ် ဢၼ်ပႃးဝႆႉတီႈမၼ်းၼၼ်ႉယူႇယဝ်ႉ။ ယၢမ်းလဵဝ်ၵေႃႈ လုၵ်ႉတီႈ ၸုမ်း '''Ubuntu Shan LoCo Team''' သေၵေႃႈ တိုၵ်ႉပိၼ်ႇၽႃႇသႃႇ Ubuntu ၼင်ႇႁိုဝ်ပေႃးတေၸႂ်ႉလႆႈ ၼင်ႇ ၽႃႇသႃႇတႆးၼၼ်ႉ ၼႆယဝ်ႉ။
[[ၾၢႆႇ:Maverick UDS Group Photo.jpg|thumb|center|750px|ၶႅပ်းႁၢင်ႈ ၶွၼ်းၾရႅၼ်ႉ ၸုမ်းႁႂ်ႈဢူးပုၼ်းတု ႁုၼ်ႈမုၼ်းၶိုၼ်ႈယႂ်ႇ]]
== လူတ်ႇလူင်း ==
ၸိူဝ်းၽၢႆႇတႂ်ႈၼႆႉ ပဵၼ်တွၼ်ႈတႃႇ လူတ်ႇလူင်းဢဝ် ပိူင်သၢင်ႈ ႁဵတ်းၵၢၼ် ၶွမ်းပျူတႃႇ ဢူးပုၼ်းတုၼၼ်ႉယဝ်ႉ။
* [http://www.ubuntu.com/getubuntu/download Ubuntu] {{Webarchive|url=https://web.archive.org/web/20091009115011/http://www.ubuntu.com//getubuntu//download |date=2009-10-09 }}
* [http://www.kubuntu.org/download Kubuntu]{{Dead link|date=August 2021 |bot=InternetArchiveBot |fix-attempted=yes }}
* [http://www.xubuntu.org/get Xubuntu] {{Webarchive|url=https://web.archive.org/web/20100622083826/http://www.xubuntu.org/get |date=2010-06-22 }}
* [http://www.edubuntu.org/Download Edubuntu] {{Webarchive|url=https://web.archive.org/web/20150206002250/http://edubuntu.org/download |date=2015-02-06 }}
== တၢင်ႇၸိူဝ်း ==
* [http://ubuntuforums.org/ Ubuntu Forum] {{Webarchive|url=https://web.archive.org/web/20220503233544/https://ubuntuforums.org/ |date=2022-05-03 }}
# [http://en.wikipedia.org/wiki/Ubuntu en.wikipedia.org wikipedia]
* [[https://ubuntu-mm.net/category/tutorials/ Ubuntu Myanmar LoCo Team]]
==ၽိုၼ်ဢိင်==
{{Reflist|30em}}
[[Category:ပိူင်သၢင်ႈ ၶွမ်းပျူတႃႇ]]
05hxt0a0w1120e1n1fuuhtadygtjuzv
မိူင်းပႃႇႁႃးမႃး
0
17798
126513
66180
2026-06-17T00:10:47Z
InternetArchiveBot
2342
Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.5
126513
wikitext
text/x-wiki
{{Short description|မိူင်းၼႂ်းဢမႄႇရိၵႃးပွတ်းႁွင်ႇ}}
{{pp-move}}
{{Use dmy dates|date=October 2024}}
{{Infobox country
| conventional_long_name = ၶိူဝ်းမိူင်းႁူမ်ႈပူၺ်ႈ ပႃႇႁႃးမႃး
| native_name =
| common_name = The Bahamas
| image_flag = Flag of the Bahamas.svg
| flag_type = [[Flag of the Bahamas|Flag]]
| image_coat = Coat of arms of the Bahamas.svg
| coa_size = 75
| symbol_type = [[Coat of arms of the Bahamas|Coat of arms]]
| national_motto = "Forward, Upward, Onward, Together"
| national_anthem = "[[March On, Bahamaland]]"<div style="display:inline-block;margin-top:0.4em;">{{center|[[File:National anthem of the Bahamas.oga]]}}</div>
| royal_anthem = "[[God Save the King]]"<ref>{{Cite CIA World Factbook|country=Bahamas, The|section=Government|access-date=10 July 2022}}</ref><div style="display:inline-block;margin-top:0.4em;">[[File:U.S. Navy Band - God Save the King.oga]]</div>
| image_map = {{switcher | [[File:The Bahamas on the globe (Americas centered).svg|frameless]] | Location in the Western Hemisphere | [[File:Bahamas, The-CIA WFB Map.png|frameless]] | The Bahamas in its region }}
| image_map2 =
| capital = [[Nassau, Bahamas|Nassau]]
| coordinates = {{Coord|25|04|41|N|77|20|19|W|type:city}}
| largest_city = capital
| official_languages = [[Bahamian English|English]]
| languages_type = [[Vernacular language]]
| languages = [[Bahamian Creole]]
| ethnic_groups = {{ublist |item_style=white-space:nowrap;
|90.6% [[Afro-Bahamians|Black]]
|4.7% [[White Bahamian|White]]
|2.1% [[Mixed Race|mixed]]
|1.9% [[Demographics of the Bahamas#Ethnic groups|other]]
|0.7% unspecified<ref name="cia.gov"/><ref name="statistics">[http://statistics.bahamas.gov.bs/download/095261300.pdf Bahamas Department of Statistics] {{Webarchive|url=https://web.archive.org/web/20151209035543/http://statistics.bahamas.gov.bs/download/095261300.pdf |date=9 December 2015 }}, PDF document retrieved 20 April 2014.</ref>
}}
| ethnic_groups_year = 2020
| religion = {{ublist |item_style=white-space:nowrap;
|{{Tree list}}
* 93.0% [[Christianity]]
** 75.1% [[Protestantism]]
** 17.9% other [[List of Christian denominations|Christian]]
{{Tree list/end}}
|4.5% [[Irreligion|no religion]]
|1.9% [[folk religion]]s
|0.6% other
}}
| religion_year = 2020
| religion_ref = <ref>{{cite web|url=https://www.thearda.com/world-religion/national-profiles?u=17c|title=National Profiles|access-date=8 June 2023|archive-date=3 June 2023|archive-url=https://web.archive.org/web/20230603103217/https://www.thearda.com/world-religion/national-profiles?u=17c|url-status=live}}</ref>
| demonym = [[Bahamians|Bahamian]]
| government_type = Unitary parliamentary [[constitutional monarchy]]<ref name="A12">{{cite web|title=•General situation and trends|work=[[Pan American Health Organization]]|url=http://www.paho.org/english/dd/ais/cp_044.htm|access-date=1 August 2011|archive-date=27 April 2014|archive-url=https://web.archive.org/web/20140427030536/http://www1.paho.org/english/dd/ais/cp_044.htm|url-status=live}}</ref><ref name="A13">{{cite news|title=Mission to Long Island in the Bahamas|work=Evangelical Association of the Caribbean|url=http://www.caribbeanevangelical.org/newsevents/oldarticles.htm|access-date=1 August 2011|archive-date=4 March 2016|archive-url=https://web.archive.org/web/20160304083539/http://www.caribbeanevangelical.org/newsevents/oldarticles.htm?id=82|url-status=live}}</ref>
| leader_title1 = [[Monarchy of the Bahamas|Monarch]]
| leader_name1 = [[Charles III]]
| leader_title2 = {{nowrap|[[Governor-General of the Bahamas|Governor-General]]}}
| leader_name2 = [[Cynthia A. Pratt]]
| leader_title3 = [[Prime Minister of the Bahamas|Prime Minister]]
| leader_name3 = [[Philip Davis (Bahamian politician)|Philip Davis]]
| legislature = [[Parliament of the Bahamas|Parliament]]
| upper_house = [[Senate of the Bahamas|Senate]]
| lower_house = [[House of Assembly of the Bahamas|House of Assembly]]
| sovereignty_type = [[Independence]]
| sovereignty_note = from the [[United Kingdom]]
| established_event1 = [[Commonwealth realm|Realm]]
| established_date1 = 10 July 1973<ref name="bbc_Bahamas">{{cite news|date=9 July 1973|url=http://news.bbc.co.uk/onthisday/hi/dates/stories/july/9/newsid_2498000/2498835.stm|title=1973: Bahamas' sun sets on British Empire|publisher=BBC News|access-date=1 May 2009|archive-date=18 September 2019|archive-url=https://web.archive.org/web/20190918050850/http://news.bbc.co.uk/onthisday/hi/dates/stories/july/9/newsid_2498000/2498835.stm|url-status=live}}</ref>
| area_km2 = 13,943
| area_rank = 155th <!-- Should match the list it links to-->
| area_sq_mi = 5358 <!-- Do not remove [[WP:MOSNUM]]-->
| percent_water = 28%
| population_estimate =
| population_census = 412,628<ref>{{Cite web|url=https://ourworldindata.org/grapher/population-with-un-projections?tab=table&time=2023|title=Our World in Data}}</ref>
| population_estimate_year = 2023
| population_estimate_rank = 170th
| population_census_year = 2023
| population_density_km2 = 25.21
| population_density_sq_mi = 63.5 <!-- Do not remove [[WP:MOSNUM]]-->
| population_density_rank = 181st
| GDP_PPP = {{increase}} $18.989 billion<ref name="IMFWEO.BS">{{cite web|url=https://www.imf.org/en/Publications/WEO/weo-database/2024/April/weo-report?c=313,&s=NGDPD,PPPGDP,NGDPDPC,PPPPC,&sy=2023&ey=2025&ssm=0&scsm=1&scc=0&ssd=1&ssc=0&sic=0&sort=country&ds=.&br=1|title=World Economic Outlook Database, April 2024 Edition. (The Bahamas)|publisher=[[International Monetary Fund]]|date=10 April 2024|access-date=15 July 2024}}</ref>
| GDP_PPP_year = 2024
| GDP_PPP_rank = 153rd
| GDP_PPP_per_capita = {{increase}} $46,524<ref name="IMFWEO.BS" />
| GDP_PPP_per_capita_rank = 46th
| GDP_nominal = {{increase}} $14.390 billion<ref name="IMFWEO.BS" />
| GDP_nominal_year = 2024
| GDP_nominal_rank = 146th
| GDP_nominal_per_capita = {{increase}} $35,257<ref name="IMFWEO.BS" />
| GDP_nominal_per_capita_rank = 29th
| Gini =
| Gini_year =
| Gini_change = <!--increase/decrease/steady-->
| Gini_ref = <ref>{{Cite web|url=https://data.worldbank.org/indicator/SI.POV.GINI?locations=BS|access-date=27 July 2024|title=World Bank Open Data|archive-date=16 January 2026|archive-url=https://web.archive.org/web/20260116200550/https://data.worldbank.org/indicator/SI.POV.GINI?locations=BS|url-status=dead}}</ref>
| Gini_rank =
| HDI_year = 2022<!-- Please use the year to which the data refers, not the publication year-->
| HDI = 0.820
| HDI_change = increase<!--increase/decrease/steady-->
| HDI_rank = 57th
| HDI_ref = <ref>{{Cite report|url=https://hdr.undp.org/content/human-development-report-2023-24|title=Human Development Report 2023-24|last=Nations|first=United|date=2024-03-13|publisher=United Nations}}</ref>
| currency = [[Bahamian dollar]] (BSD) <br /> [[United States dollar]] (USD)
| time_zone = [[Eastern Time Zone|EST]]
| utc_offset = −5
| time_zone_DST = [[Eastern Time Zone|EDT]]
| utc_offset_DST = −4
| date_format = dd.mm.yyyy ([[Common Era|CE]])
| drives_on = left
| calling_code = [[+1 242]]
| cctld = [[.bs]]
| footnote_a = {{note|bahoffbox}}Also referred to as ''Bahamian''<ref>{{Cite web|url=https://www.ethnologue.com/country/BS/languages|title=Bahamas|website=Ethnologue|access-date=7 February 2017|archive-date=1 June 2018|archive-url=https://web.archive.org/web/20180601014227/https://www.ethnologue.com/country/BS/languages|url-status=live}}</ref>
}}
==ၽိုၼ်ဢိင်==
{{Reflist}}
54b7mlr4est00d3dvmktj5e95xftgw4
မီႇတီႇယႃႇဝီႇၶီႇ:Gadget-ReferenceTooltips.js
8
27719
126512
55543
2026-06-16T20:10:33Z
Johannnes89
2960
updated per enwiki
126512
javascript
text/javascript
// See [[mw:Reference Tooltips]]
// Source https://en.wikipedia.org/wiki/MediaWiki:Gadget-ReferenceTooltips.js
/*eslint space-in-parens: ["error", "always"], array-bracket-spacing: ["error", "always"]*/
( function () {
// If you're loading the script from another wiki and want to set your settings, do that in `window`
// properties with `rt_` prefix, e.g.
// window.rt_REF_LINK_SELECTOR = '...';
// They will be used instead of enwiki detaults.
var REF_LINK_SELECTOR = window.rt_REF_LINK_SELECTOR || '.reference, a[href^="#CITEREF"]',
COMMENTED_TEXT_CLASS = window.rt_COMMENTED_TEXT_CLASS || 'rt-commentedText',
COMMENTED_TEXT_SELECTOR = (
window.rt_COMMENTED_TEXT_SELECTOR ||
( COMMENTED_TEXT_CLASS ? '.' + COMMENTED_TEXT_CLASS + ', ' : '' ) +
'abbr[title]'
);
if ( mw.messages.get( 'rt-settings' ) === null ) {
mw.messages.set( {
'rt-settings': 'Reference Tooltips settings',
'rt-enable-footer': 'Enable Reference Tooltips',
'rt-settings-title': 'Reference Tooltips',
'rt-save': 'Save',
'rt-enable': 'Enable Reference Tooltips',
'rt-activationMethod': 'Show a tooltip when I\'m',
'rt-hovering': 'hovering a reference',
'rt-clicking': 'clicking a reference',
'rt-delay': 'Delay before the tooltip appears (in milliseconds)',
'rt-tooltipsForComments': 'Show the tooltip over <span title="Tooltip example" class="' + ( COMMENTED_TEXT_CLASS || 'rt-commentedText' ) + '" style="border-bottom: 1px dotted; cursor: help;">text with a dotted underline</span> in Reference Tooltips style (allows to see such tooltips on devices with no mouse support)',
'rt-disabledNote': 'You can re-enable Reference Tooltips using a link in the footer of the page.',
'rt-done': 'Done',
'rt-enabled': 'Reference Tooltips are enabled'
} );
}
// "Global" variables
var SECONDS_IN_A_DAY = 60 * 60 * 24,
CLASSES = {
FADE_IN_DOWN: 'rt-fade-in-down',
FADE_IN_UP: 'rt-fade-in-up',
FADE_OUT_DOWN: 'rt-fade-out-down',
FADE_OUT_UP: 'rt-fade-out-up'
},
IS_TOUCHSCREEN = 'ontouchstart' in document.documentElement,
// Quite a rough check for mobile browsers, a mix of what is advised at
// https://stackoverflow.com/a/24600597 (sends to
// https://developer.mozilla.org/en-US/docs/Browser_detection_using_the_user_agent)
// and https://stackoverflow.com/a/14301832
IS_MOBILE = /Mobi|Android/i.test( navigator.userAgent ) ||
typeof window.orientation !== 'undefined',
CLIENT_NAME = $.client.profile().name,
settingsString, settings, enabled, delay, activatedByClick, tooltipsForComments, cursorWaitCss,
windowManager, $teleportTarget,
$body = $( document.body ),
$window = $( window ),
$overlay = $( '<div>' )
.addClass( 'rt-overlay' )
.appendTo( $body );
// Can't use before https://phabricator.wikimedia.org/T369880 is resolved
// mw.loader.using( 'mediawiki.page.ready' ).then( function ( require ) {
// $teleportTarget = $( require( 'mediawiki.page.ready' ).teleportTarget );
// $overlay.appendTo( $teleportTarget );
// } );
function rt( $content ) {
// Popups gadget
if ( window.pg ) {
return;
}
var teSelector,
settingsDialogOpening = false;
function setSettingsCookie() {
mw.cookie.set(
'RTsettings',
(
Number( enabled ) +
'|' +
delay +
'|' +
Number( activatedByClick ) +
'|' +
Number( tooltipsForComments )
),
{ path: '/', expires: 90 * SECONDS_IN_A_DAY, prefix: '' }
);
}
function enableRt() {
enabled = true;
setSettingsCookie();
$( '.rt-enableItem' ).remove();
rt( $content );
mw.notify( mw.msg( 'rt-enabled' ) );
}
function disableRt() {
$content.find( teSelector ).removeClass( 'rt-commentedText' ).off( '.rt' );
$body.off( '.rt' );
$window.off( '.rt' );
}
function addEnableLink() {
// #footer-places – Vector
// #f-list – Timeless, Monobook, Modern
// parent of #footer li – Cologne Blue
var $footer = $( '#footer-places, #f-list' );
if ( !$footer.length ) {
$footer = $( '#footer li' ).parent();
}
if ( !$footer.find( '.rt-enableItem' ).length ) {
$footer.append(
$( '<li>' )
.addClass( 'rt-enableItem' )
.append(
$( '<a>' )
.text( mw.msg( 'rt-enable-footer' ) )
.attr( 'href', '#' )
.click( function ( e ) {
e.preventDefault();
enableRt();
} )
)
);
}
}
function TooltippedElement( $element ) {
var events,
te = this;
function onStartEvent( e ) {
var showRefArgs;
if ( activatedByClick && te.type !== 'commentedText' && e.type !== 'contextmenu' ) {
e.preventDefault();
}
if ( !te.noRef ) {
showRefArgs = [ $( this ) ];
if ( te.type !== 'supRef' ) {
showRefArgs.push( e.pageX, e.pageY );
}
te.showRef.apply( te, showRefArgs );
}
}
function onEndEvent() {
if ( !te.noRef ) {
te.hideRef();
}
}
if ( !$element ) {
return;
}
// TooltippedElement.$element and TooltippedElement.$originalElement will be different when
// the first is changed after its cloned version is hovered in a tooltip
this.$element = $element;
this.$originalElement = $element;
if ( this.$element.is( REF_LINK_SELECTOR ) ) {
if ( this.$element.prop( 'tagName' ) === 'SUP' ) {
this.type = 'supRef';
} else {
this.type = 'harvardRef';
}
} else {
this.type = 'commentedText';
this.comment = this.$element.attr( 'title' );
if ( !this.comment ) {
return;
}
this.$element.addClass( 'rt-commentedText' );
}
if ( activatedByClick ) {
events = {
'click.rt': onStartEvent
};
// Adds an ability to see tooltips for links
if (
this.type === 'commentedText' &&
( this.$element.closest( 'a' ).length || this.$element.has( 'a' ).length )
) {
events[ 'contextmenu.rt' ] = onStartEvent;
}
} else {
events = {
'mouseenter.rt': onStartEvent,
'mouseleave.rt': onEndEvent
};
}
this.$element.on( events );
this.hideRef = function ( immediately ) {
clearTimeout( te.showTimer );
if ( this.type === 'commentedText' ) {
this.$element.attr( 'title', this.comment );
}
if ( this.tooltip && this.tooltip.isPresent ) {
if ( activatedByClick || immediately ) {
this.tooltip.hide();
} else {
this.hideTimer = setTimeout( function () {
te.tooltip.hide();
}, 200 );
}
} else if ( this.$ref && this.$ref.hasClass( 'rt-target' ) ) {
this.$ref.removeClass( 'rt-target' );
if ( activatedByClick ) {
$body.off( 'click.rt touchstart.rt', this.onBodyClick );
}
}
};
this.showRef = function ( $element, ePageX, ePageY ) {
// Popups gadget
if ( window.pg ) {
disableRt();
return;
}
if ( this.tooltip && !this.tooltip.$content.length ) {
return;
}
var tooltipInitiallyPresent = this.tooltip && this.tooltip.isPresent;
function reallyShow() {
var viewportTop, refOffsetTop, teHref;
if ( !te.$ref && !te.comment ) {
teHref = te.type === 'supRef' ?
te.$element.find( 'a' ).attr( 'href' ) :
te.$element.attr( 'href' ); // harvardRef
te.$ref = teHref &&
$( '#' + $.escapeSelector( teHref.slice( 1 ) ) );
if ( !te.$ref || !te.$ref.length || !te.$ref.text() ) {
te.noRef = true;
return;
}
}
if ( !tooltipInitiallyPresent && !te.comment ) {
viewportTop = $window.scrollTop();
refOffsetTop = te.$ref.offset().top;
if (
!activatedByClick &&
viewportTop < refOffsetTop &&
viewportTop + $window.height() > refOffsetTop + te.$ref.height() &&
// There can be gadgets/scripts that make references horizontally scrollable.
$window.width() > te.$ref.offset().left + te.$ref.width()
) {
// Highlight the reference itself
te.$ref.addClass( 'rt-target' );
return;
}
}
if ( !te.tooltip ) {
te.tooltip = new Tooltip( te );
if ( !te.tooltip.$content.length ) {
return;
}
}
// If this tooltip is called from inside another tooltip. We can't define it
// in the constructor since a ref can be cloned but have the same Tooltip object;
// so, Tooltip.parent is a floating value.
te.tooltip.parent = te.$element.closest( '.rt-tooltip' ).data( 'tooltip' );
if ( te.tooltip.parent && te.tooltip.parent.disappearing ) {
return;
}
te.tooltip.show();
if ( tooltipInitiallyPresent ) {
if ( te.tooltip.$element.hasClass( 'rt-tooltip-above' ) ) {
te.tooltip.$element.addClass( CLASSES.FADE_IN_DOWN );
} else {
te.tooltip.$element.addClass( CLASSES.FADE_IN_UP );
}
return;
}
te.tooltip.calculatePosition( ePageX, ePageY );
$window.on( 'resize.rt', te.onWindowResize );
}
// We redefine this.$element here because e.target can be a reference link inside
// a reference tooltip, not a link that was initially assigned to this.$element
this.$element = $element;
if ( this.type === 'commentedText' ) {
this.$element.attr( 'title', '' );
}
if ( activatedByClick ) {
if (
tooltipInitiallyPresent ||
( this.$ref && this.$ref.hasClass( 'rt-target' ) )
) {
return;
} else {
setTimeout( function () {
$body.on( 'click.rt touchstart.rt', te.onBodyClick );
}, 0 );
}
}
if ( activatedByClick || tooltipInitiallyPresent ) {
reallyShow();
} else {
this.showTimer = setTimeout( reallyShow, delay );
}
};
this.onBodyClick = function ( e ) {
if ( !te.tooltip && !( te.$ref && te.$ref.hasClass( 'rt-target' ) ) ) {
return;
}
var $current = $( e.target );
function contextMatchesParameter( parameter ) {
return this === parameter;
}
// The last condition is used to determine cases when a clicked tooltip is the current
// element's tooltip or one of its descendants
while (
$current.length &&
(
!$current.hasClass( 'rt-tooltip' ) ||
!$current.data( 'tooltip' ) ||
!$current.data( 'tooltip' ).upToTopParent(
contextMatchesParameter, [ te.tooltip ],
true
)
)
) {
$current = $current.parent();
}
if ( !$current.length ) {
te.hideRef();
}
};
this.onWindowResize = function () {
te.tooltip.calculatePosition();
};
}
function Tooltip( te ) {
function openSettingsDialog() {
var settingsDialog, settingsWindow;
if ( cursorWaitCss ) {
cursorWaitCss.disabled = true;
}
function SettingsDialog() {
SettingsDialog.parent.call( this );
}
OO.inheritClass( SettingsDialog, OO.ui.ProcessDialog );
SettingsDialog.static.name = 'settingsDialog';
SettingsDialog.static.title = mw.msg( 'rt-settings-title' );
SettingsDialog.static.actions = [
{
modes: 'main',
action: 'save',
label: mw.msg( 'rt-save' ),
flags: [ 'primary', 'progressive' ]
},
{
modes: 'main',
flags: [ 'safe', 'close' ]
},
{
modes: 'disabled',
action: 'deactivated',
label: mw.msg( 'rt-done' ),
flags: [ 'primary', 'progressive' ]
}
];
SettingsDialog.prototype.initialize = function () {
var dialog = this;
SettingsDialog.parent.prototype.initialize.apply( this, arguments );
this.enableCheckbox = new OO.ui.CheckboxInputWidget( {
selected: true
} );
this.enableCheckbox.on( 'change', function ( selected ) {
dialog.activationMethodSelect.setDisabled( !selected );
dialog.delayInput.setDisabled( !selected || dialog.clickOption.isSelected() );
dialog.tooltipsForCommentsCheckbox.setDisabled( !selected );
} );
this.enableField = new OO.ui.FieldLayout( this.enableCheckbox, {
label: mw.msg( 'rt-enable' ),
align: 'inline',
classes: [ 'rt-enableField' ]
} );
this.hoverOption = new OO.ui.RadioOptionWidget( {
label: mw.msg( 'rt-hovering' )
} );
this.clickOption = new OO.ui.RadioOptionWidget( {
label: mw.msg( 'rt-clicking' )
} );
this.activationMethodSelect = new OO.ui.RadioSelectWidget( {
items: [ this.hoverOption, this.clickOption ]
} );
this.activationMethodSelect.selectItem(
activatedByClick ? this.clickOption : this.hoverOption
);
this.activationMethodSelect.on( 'choose', function ( item ) {
dialog.delayInput.setDisabled( item === dialog.clickOption );
} );
this.activationMethodField = new OO.ui.FieldLayout( this.activationMethodSelect, {
label: mw.msg( 'rt-activationMethod' ),
align: 'top'
} );
this.delayInput = new OO.ui.NumberInputWidget( {
input: { value: delay },
step: 50,
min: 0,
max: 5000,
disabled: activatedByClick,
classes: [ 'rt-numberInput' ]
} );
this.delayField = new OO.ui.FieldLayout( this.delayInput, {
label: mw.msg( 'rt-delay' ),
align: 'top'
} );
this.tooltipsForCommentsCheckbox = new OO.ui.CheckboxInputWidget( {
selected: tooltipsForComments
} );
this.tooltipsForCommentsField = new OO.ui.FieldLayout(
this.tooltipsForCommentsCheckbox,
{
label: new OO.ui.HtmlSnippet( mw.msg( 'rt-tooltipsForComments' ) ),
align: 'inline',
classes: [ 'rt-tooltipsForCommentsField' ]
}
);
new TooltippedElement(
this.tooltipsForCommentsField.$element.find(
'.' + ( COMMENTED_TEXT_CLASS || 'rt-commentedText' )
)
);
this.fieldset = new OO.ui.FieldsetLayout();
this.fieldset.addItems( [
this.enableField,
this.activationMethodField,
this.delayField,
this.tooltipsForCommentsField
] );
this.panelSettings = new OO.ui.PanelLayout( {
padded: true,
expanded: false
} );
this.panelSettings.$element.append( this.fieldset.$element );
this.panelDisabled = new OO.ui.PanelLayout( {
padded: true,
expanded: false
} );
this.panelDisabled.$element.append(
$( '<table>' )
.addClass( 'rt-disabledHelp' )
.append(
$( '<tr>' ).append(
$( '<td>' ).append(
$( '<img>' ).attr( 'src', 'https://upload.wikimedia.org/wikipedia/commons/c/c0/MediaWiki_footer_link_ltr.svg' )
),
$( '<td>' )
.addClass( 'rt-disabledNote' )
.text( mw.msg( 'rt-disabledNote' ) )
)
)
);
this.stackLayout = new OO.ui.StackLayout( {
items: [ this.panelSettings, this.panelDisabled ]
} );
this.$body.append( this.stackLayout.$element );
};
SettingsDialog.prototype.getSetupProcess = function ( data ) {
return SettingsDialog.parent.prototype.getSetupProcess.call( this, data )
.next( function () {
this.stackLayout.setItem( this.panelSettings );
this.actions.setMode( 'main' );
}, this );
};
SettingsDialog.prototype.getActionProcess = function ( action ) {
var dialog = this;
if ( action === 'save' ) {
return new OO.ui.Process( function () {
var newDelay = Number( dialog.delayInput.getValue() );
enabled = dialog.enableCheckbox.isSelected();
if ( newDelay >= 0 && newDelay <= 5000 ) {
delay = newDelay;
}
activatedByClick = dialog.clickOption.isSelected();
tooltipsForComments = dialog.tooltipsForCommentsCheckbox.isSelected();
setSettingsCookie();
if ( enabled ) {
dialog.close();
disableRt();
rt( $content );
} else {
dialog.actions.setMode( 'disabled' );
dialog.stackLayout.setItem( dialog.panelDisabled );
disableRt();
addEnableLink();
}
} );
} else if ( action === 'deactivated' ) {
dialog.close();
}
return SettingsDialog.parent.prototype.getActionProcess.call( this, action );
};
SettingsDialog.prototype.getBodyHeight = function () {
return this.stackLayout.getCurrentItem().$element.outerHeight( true );
};
tooltip.upToTopParent( function adjustRightAndHide() {
if ( this.isPresent ) {
if ( this.$element[ 0 ].style.right ) {
this.$element.css(
'right',
'+=' + ( window.innerWidth - $window.width() )
);
}
this.te.hideRef( true );
}
} );
if ( !windowManager ) {
windowManager = new OO.ui.WindowManager();
$body.append( windowManager.$element );
}
settingsDialog = new SettingsDialog();
windowManager.addWindows( [ settingsDialog ] );
settingsWindow = windowManager.openWindow( settingsDialog );
settingsWindow.opened.then( function () {
settingsDialogOpening = false;
} );
settingsWindow.closed.then( function () {
windowManager.clearWindows();
} );
}
var tooltip = this;
// This variable can change: one tooltip can be called from a harvard-style reference link
// that is put into different tooltips
this.te = te;
switch ( this.te.type ) {
case 'supRef':
this.id = 'rt-' + this.te.$originalElement.attr( 'id' );
this.$content = this.te.$ref
.contents()
.filter( function ( i ) {
var $this = $( this );
if ( $this.hasClass( 'mw-subreference-list' ) ) {
return false;
}
return (
this.nodeType === Node.TEXT_NODE ||
!(
// `a[href^="#cite_ref-"]` is for Wiktionary and possibly other
// sites (not English Wikipedia) where the output of the Cite
// extension is slightly different
$this.is( '.mw-cite-backlink, a[href^="#cite_ref-"]' ) ||
(
i === 0 &&
// Template:Cnote, Template:Note
( $this.is( 'b' ) ||
// Template:Note_label
$this.is( 'a' ) &&
$this.attr( 'href' ).indexOf( '#ref' ) === 0
)
)
)
);
} )
.clone( true );
const $ol = this.te.$ref.closest( 'ol' );
if ( $ol.hasClass( 'mw-subreference-list' ) ) {
this.$content = $( '<div>' ).append(
$ol.siblings( '.reference-text' ).clone( true )
.css( { display: 'block', 'margin-bottom': '0.7em' } ),
this.$content
);
}
break;
case 'harvardRef':
this.id = 'rt-' + this.te.$originalElement.closest( 'li' ).attr( 'id' );
this.$content = this.te.$ref
.clone( true )
.removeAttr( 'id' );
break;
case 'commentedText':
this.id = 'rt-' + String( Math.random() ).slice( 2 );
this.$content = $( document.createTextNode( this.te.comment ) );
break;
}
if ( !this.$content.length ) {
return;
}
this.isInsideWindow = Boolean( this.te.$element.closest( '.oo-ui-window' ).length );
this.$element = $( '<div>' )
.addClass( 'rt-tooltip' )
.attr( 'id', this.id )
.attr( 'role', 'tooltip' )
.data( 'tooltip', this );
var $hoverArea = $( '<div>' )
.addClass( 'rt-hoverArea' )
.appendTo( this.$element );
var $scroll = $( '<div>' )
.addClass( 'rt-scroll' )
.appendTo( $hoverArea );
this.$content = this.$content
.wrapAll( '<div>' )
.parent()
.addClass( 'rt-content' )
.addClass( 'mw-parser-output' )
.appendTo( $scroll );
if ( !activatedByClick ) {
this.$element
.on( 'mouseenter linkPopupHover', function ( e ) {
if ( !tooltip.disappearing || e.type === 'linkPopupHover' ) {
tooltip.upToTopParent( function () {
this.show();
} );
}
} )
.on( 'mouseleave', function ( e ) {
// https://stackoverflow.com/q/47649442 workaround. Relying on relatedTarget
// alone has pitfalls: when alt-tabbing, relatedTarget is empty too
if (
CLIENT_NAME !== 'chrome' ||
(
!e.originalEvent ||
e.originalEvent.relatedTarget !== null ||
!tooltip.clickedTime ||
$.now() - tooltip.clickedTime > 50
)
) {
tooltip.upToTopParent( function () {
this.te.hideRef();
} );
}
} )
.click( function () {
tooltip.clickedTime = $.now();
} );
}
if ( !this.isInsideWindow ) {
$( '<a>' )
.addClass( 'rt-settingsLink' )
.attr( 'role', 'button' )
.attr( 'href', '#' )
.attr( 'title', mw.msg( 'rt-settings' ) )
.click( function ( e ) {
e.preventDefault();
if ( settingsDialogOpening ) {
return;
}
settingsDialogOpening = true;
if ( mw.loader.getState( 'oojs-ui' ) !== 'ready' ) {
if ( cursorWaitCss ) {
cursorWaitCss.disabled = false;
} else {
cursorWaitCss = mw.util.addCSS( 'body { cursor: wait; }' );
}
}
mw.loader.using( [ 'oojs', 'oojs-ui' ], openSettingsDialog );
} )
.prependTo( this.$content );
}
// Tooltip tail element is inside tooltip content element in order for the tooltip
// not to disappear when the mouse is above the tail
this.$tail = $( '<div>' )
.addClass( 'rt-tail' )
.prependTo( this.$element );
this.disappearing = false;
this.show = function () {
this.disappearing = false;
clearTimeout( this.te.hideTimer );
clearTimeout( this.te.removeTimer );
this.$element
.removeClass( CLASSES.FADE_OUT_DOWN )
.removeClass( CLASSES.FADE_OUT_UP );
if ( !this.isPresent ) {
$overlay.append( this.$element );
}
this.isPresent = true;
};
this.hide = function () {
var tooltip = this;
tooltip.disappearing = true;
if ( tooltip.$element.hasClass( 'rt-tooltip-above' ) ) {
tooltip.$element
.removeClass( CLASSES.FADE_IN_DOWN )
.addClass( CLASSES.FADE_OUT_UP );
} else {
tooltip.$element
.removeClass( CLASSES.FADE_IN_UP )
.addClass( CLASSES.FADE_OUT_DOWN );
}
tooltip.te.removeTimer = setTimeout( function () {
if ( tooltip.isPresent ) {
tooltip.$element.detach();
tooltip.$tail.css( 'left', '' );
if ( activatedByClick ) {
$body.off( 'click.rt touchstart.rt', tooltip.te.onBodyClick );
}
$window.off( 'resize.rt', tooltip.te.onWindowResize );
tooltip.isPresent = false;
}
}, 200 );
};
this.calculatePosition = function ( ePageX, ePageY ) {
var teElement, teOffsets, teOffset, targetTailOffsetX, tailLeft;
this.$tail.css( 'left', '' );
teElement = this.te.$element.get( 0 );
if ( ePageX !== undefined ) {
targetTailOffsetX = ePageX;
teOffsets = ( teElement.getClientRects && teElement.getClientRects() ) ||
teElement.getBoundingClientRect();
if ( teOffsets.length > 1 ) {
for ( var i = teOffsets.length - 1; i >= 0; i-- ) {
if (
ePageY >= Math.round( $window.scrollTop() + teOffsets[ i ].top ) &&
ePageY <= Math.round(
$window.scrollTop() + teOffsets[i].top + teOffsets[ i ].height
)
) {
teOffset = teOffsets[ i ];
}
}
}
}
if ( !teOffset ) {
teOffset = ( teElement.getClientRects && teElement.getClientRects()[ 0 ] ) ||
teElement.getBoundingClientRect();
}
teOffset = {
top: $window.scrollTop() + teOffset.top,
left: $window.scrollLeft() + teOffset.left,
width: teOffset.width,
height: teOffset.height
};
if ( !targetTailOffsetX ) {
targetTailOffsetX = teOffset.left + ( teOffset.width / 2 );
}
// Value of `left` in `.rt-tooltip-above .rt-tail`
var defaultTailLeft = 19;
// Value of `width` in `.rt-tail`
var tailSideWidth = 13;
// We tilt the square 45 degrees, so we need square root to calculate the distance.
var tailWidth = tailSideWidth * Math.SQRT2;
var tailHeight = tailWidth / 2;
var tailCenterDelta = tailSideWidth + 1 - ( tailWidth / 2 );
var tooltip = this;
var getTop = function ( isBelow ) {
var delta = isBelow ?
teOffset.height + tailHeight :
-tooltip.$element.outerHeight() - tailHeight + 1;
return teOffset.top + delta;
};
this.$element.css( {
top: getTop(),
left: targetTailOffsetX - defaultTailLeft - tailCenterDelta,
right: ''
} );
// Is it squished against the right side of the page?
if ( this.$element.offset().left + this.$element.outerWidth() > $window.width() - 1 ) {
this.$element.css( {
left: '',
right: 0
} );
tailLeft = targetTailOffsetX - this.$element.offset().left - tailCenterDelta;
}
// Is a part of it above the top of the screen?
if ( teOffset.top < this.$element.outerHeight() + $window.scrollTop() + tailHeight ) {
this.$element
.removeClass( 'rt-tooltip-above' )
.addClass( 'rt-tooltip-below' )
.addClass( CLASSES.FADE_IN_UP )
.css( {
top: getTop( true )
} );
if ( tailLeft ) {
this.$tail.css( 'left', ( tailLeft + tailSideWidth ) + 'px' );
}
} else {
this.$element
.removeClass( 'rt-tooltip-below' )
.addClass( 'rt-tooltip-above' )
.addClass( CLASSES.FADE_IN_DOWN )
// A fix for cases when a tooltip shown once is then wrongly positioned when it
// is shown again after a window resize.
.css( {
top: getTop()
} );
if ( tailLeft ) {
this.$tail.css( 'left', tailLeft + 'px' );
}
}
};
// Run some function for all the tooltips up to the top one in a tree. Its context will be
// the tooltip, while its parameters may be passed to Tooltip.upToTopParent as an array
// in the second parameter. If the third parameter passed to ToolTip.upToTopParent is true,
// the execution stops when the function in question returns true for the first time,
// and ToolTip.upToTopParent returns true as well.
this.upToTopParent = function ( func, parameters, stopAtTrue ) {
var returnValue,
currentTooltip = this;
do {
returnValue = func.apply( currentTooltip, parameters );
if ( stopAtTrue && returnValue ) {
break;
}
} while ( ( currentTooltip = currentTooltip.parent ) );
if ( stopAtTrue ) {
return returnValue;
}
};
}
if ( !enabled ) {
addEnableLink();
return;
}
teSelector = REF_LINK_SELECTOR;
if ( tooltipsForComments ) {
teSelector += ', ' + COMMENTED_TEXT_SELECTOR;
}
$content.find( teSelector ).each( function () {
new TooltippedElement( $( this ) );
} );
}
settingsString = mw.cookie.get( 'RTsettings', '' );
if ( settingsString ) {
settings = settingsString.split( '|' );
enabled = Boolean( Number( settings[ 0 ] ) );
delay = Number( settings[ 1 ] );
activatedByClick = Boolean( Number( settings[ 2 ] ) );
// The forth value was added later, so we provide for a default value. See comments below
// for why we use "IS_TOUCHSCREEN && IS_MOBILE".
tooltipsForComments = settings[ 3 ] === undefined ?
IS_TOUCHSCREEN && IS_MOBILE :
Boolean( Number( settings[ 3 ] ) );
} else {
enabled = true;
delay = 200;
// Since the mobile browser check is error-prone, adding IS_MOBILE condition here would probably
// leave cases where a user interacting with the browser using touches doesn't know how to call
// a tooltip in order to switch to activation by click. Some touch-supporting laptop users
// interacting by touch (though probably not the most popular use case) would not be happy too.
activatedByClick = IS_TOUCHSCREEN;
// Arguably we shouldn't convert native tooltips into gadget tooltips for devices that have
// mouse support, even if they have touchscreens (there are laptops with touchscreens).
// IS_TOUCHSCREEN check here is for reliability, since the mobile check is prone to false
// positives.
tooltipsForComments = IS_TOUCHSCREEN && IS_MOBILE;
}
mw.hook( 'wikipage.content' ).add( rt );
}() );
a43nofchz87jsl0z00dy2djz6ctocgi