WeChromium,微信网页版,网页版微信,Linux微信

微信网页版增强 Monkey 脚本,UOS密钥强登,界面优化贴合应用模式

// ==UserScript==
// @name         WeChromium,微信网页版,网页版微信,Linux微信
// @namespace    sooo.site/wechromium
// @version      1.1.2
// @author       So
// @description  微信网页版增强 Monkey 脚本,UOS密钥强登,界面优化贴合应用模式
// @icon         https://res.wx.qq.com/a/wx_fed/assets/res/OTE0YTAw.png
// @homepage     https://github.com/Git-So/WeChromium
// @supportURL   https://github.com/Git-So/WeChromium/issues
// @match        https://wx.qq.com/*
// @match        https://wx1.qq.com/*
// @match        https://wx2.qq.com/*
// @match        https://wx8.qq.com/*
// @match        https://web.wechat.com/*
// @grant        unsafeWindow
// @noframes    
// ==/UserScript==

(e=>{const n=document.createElement("style");n.dataset.source="vite-plugin-monkey",n.innerText=e,document.head.appendChild(n)})('#tool_bar .web_wechat_screencut,.panel .download_entry{display:none}.login>*{display:none}.login .login_box{display:block}body{background:#fff}body .login{min-width:unset;min-height:unset}body .login .login_box{box-shadow:unset}.main_inner{display:flex}.main_inner:after{content:""}.main_inner .header{width:2.8rem;background-color:#ebebeb;display:flex;flex-direction:column;align-items:center;padding:.5rem}.main_inner .header .avatar{padding:0}.main_inner .header .info{width:100%}.main_inner .header .info .nickname .display_name{display:none}.main_inner .header .tab{display:flex;flex-direction:column;flex-grow:1;padding:1rem 0}.main_inner .header .tab:after{display:none}.main_inner .header .tab .tab_item{margin:.8rem 0}.main_inner .header .tab .tab_item:after{display:none}.main_inner .header .tab .tab_item a.chat i.web_wechat_tab_friends,.main_inner .header .tab .tab_item a.chat i.web_wechat_tab_chat{filter:invert(1)}.main_inner .header .tab .tab_item a.chat i.web_wechat_tab_friends_hl,.main_inner .header .tab .tab_item a.chat i.web_wechat_tab_chat_hl{filter:unset}.main_inner .panel{background-color:#fff}.main_inner .panel #mmpop_system_menu{top:unset!important;left:-.5rem!important;bottom:1rem!important}.main_inner .panel #mmpop_system_menu .dropdown_menu{border:none}.main_inner .panel #search_bar.search_bar{width:100%}.main_inner .panel #search_bar.search_bar i.web_wechat_search{top:1rem;left:1rem;filter:invert(1)}.main_inner .panel #search_bar.search_bar .frm_search{margin:1rem;background-color:#f5f5f5;color:#000}.main_inner .panel #search_bar.search_bar .recommendation{width:100%;height:calc(100vh - 4rem);background:#ffffff;top:4rem;box-shadow:unset}.main_inner .panel #search_bar.search_bar .recommendation .contacts{height:100%!important;max-height:unset}.main_inner .panel #search_bar.search_bar .recommendation .contact_title,.main_inner .panel #search_bar.search_bar .recommendation .contact_item{background:transparent;border:none;color:#000}.main_inner .panel #search_bar.search_bar .recommendation .contact_title .info .nickname,.main_inner .panel #search_bar.search_bar .recommendation .contact_item .info .nickname{color:unset}.main_inner .panel .nav_view{top:4rem}.main_inner .panel .nav_view .chat_list .ico_loading{color:#07c160}.main_inner .panel .nav_view .chat_list .chat_item{background-color:transparent;border-bottom:none}.main_inner .panel .nav_view .chat_list .chat_item.active{background-color:#07c160}.main_inner .panel .nav_view .chat_list .chat_item.active .info .nickname{color:#fff}.main_inner .panel .nav_view .chat_list .chat_item .info .nickname{color:#000}.main_inner .panel .nav_view .chat_list .chat_item .ext .attr{font-size:.5rem}.main_inner .panel .nav_view .contact_list .contact_title{background-color:#fff;color:#000}.main_inner .panel .nav_view .contact_list .contact_item{border:none}.main_inner .panel .nav_view .contact_list .contact_item .info .nickname{color:#000}.main_inner .panel .nav_view .contact_list .active{background-color:#07c160}.main_inner .panel .nav_view .contact_list .active .contact_item .info .nickname{color:#fff}.main_inner div[ui-view=contentView]{flex-grow:1}.main_inner div[ui-view=contentView] #chatArea{background-color:#f5f5f5}.main_inner div[ui-view=contentView] #chatArea .box_hd .title_wrap{margin:0;background-color:transparent}.main_inner div[ui-view=contentView] #chatArea .box_hd .title_wrap,.main_inner div[ui-view=contentView] #chatArea .box_ft{border:none}.main_inner div[ui-view=contentView] #chatArea .box_bd.chat_bd{border:1px solid #e5e5e5;border-width:1px 0}.main_inner div[ui-view=contentView] #chatArea .content .bubble.bubble_primary{background-color:#07c160;color:#fff}.main_inner div[ui-view=contentView] #chatArea .content .bubble.bubble_primary:before,.main_inner div[ui-view=contentView] #chatArea .content .bubble.bubble_primary.right:after{border-left-color:#07c160}.main_inner div[ui-view=contentView] #chatArea .action .btn_send{background-color:#07c160;color:#fff;border:none}.main,.main_inner{height:100%;width:100%;max-height:100%;max-width:100%;margin:0;padding:0}');

(function() {
  var _a, _b, _c;
  "use strict";
  const $ = document.querySelector.bind(document);
  const mutationObserverInit = { attributes: true, childList: true, subtree: true };
  function useDomWatch(selectors, callback, autoStart = true, config) {
    const observer = new MutationObserver(callback);
    const onStart = () => dom && observer.observe(dom, config || mutationObserverInit);
    const onStop = () => observer.disconnect();
    const dom = $(selectors);
    if (autoStart && dom) {
      observer.observe(dom, config || mutationObserverInit);
    }
    return {
      onStart,
      onStop
    };
  }
  function ref(value) {
    return { value };
  }
  function resizeAndCenter(x, y) {
    window.resizeTo(x, y);
    window.moveTo((screen.width - x) / 2, (screen.height - y) / 2);
  }
  function useWindowWatch(func, init2 = false) {
    init2 && func([], true);
    useDomWatch("body", (mutations) => {
      if (mutations.length < 1)
        return;
      func(mutations, false);
    });
  }
  var ReadyState = /* @__PURE__ */ ((ReadyState2) => {
    ReadyState2[ReadyState2["UNSENT"] = 0] = "UNSENT";
    ReadyState2[ReadyState2["OPENED"] = 1] = "OPENED";
    ReadyState2[ReadyState2["HEADERS_RECEIVED"] = 2] = "HEADERS_RECEIVED";
    ReadyState2[ReadyState2["LOADING"] = 3] = "LOADING";
    ReadyState2[ReadyState2["DONE"] = 4] = "DONE";
    return ReadyState2;
  })(ReadyState || {});
  const eventList = ref(/* @__PURE__ */ new Map([]));
  const initState = ref(false);
  function init() {
    if (initState.value)
      return;
    initState.value = true;
    const originXMLHttpRequestOpen = XMLHttpRequest.prototype.open;
    XMLHttpRequest.prototype.open = function(method, url, async = true, username, password) {
      const uri = url instanceof URL ? url : new URL((url.indexOf("/") == 0 ? location.origin : "") + url);
      this.addEventListener("readystatechange", function() {
        var _a2;
        (_a2 = eventList.value.get(this.readyState)) == null ? void 0 : _a2.forEach((fn) => fn(this, uri));
      });
      originXMLHttpRequestOpen.apply(this, [method, url, async, username, password]);
    };
  }
  function addListener(readyState, func) {
    var _a2;
    if (!eventList.value.get(readyState)) {
      eventList.value.set(readyState, []);
    }
    (_a2 = eventList.value.get(readyState)) == null ? void 0 : _a2.push(func);
  }
  function removeListener(readyState, func) {
    var _a2, _b2, _c2;
    const index = (_a2 = eventList.value.get(readyState)) == null ? void 0 : _a2.findIndex((fn) => fn === func);
    if (index === void 0 || index < 0)
      return;
    (_c2 = (_b2 = eventList.value) == null ? void 0 : _b2.get(readyState)) == null ? void 0 : _c2.splice(index, 1);
  }
  init();
  const XHR = {
    ReadyState,
    init,
    addListener,
    removeListener
  };
  const style = "";
  const loginState = ref(false);
  useWindowWatch((_, force = true) => {
    const currLoginState = !document.body.classList.contains("unlogin");
    if (force || currLoginState != loginState.value) {
      loginState.value = currLoginState;
      currLoginState ? resizeAndCenter(800, 600) : resizeAndCenter(380, 540);
    }
  }, true);
  if (location.pathname == "/" && location.search.indexOf("target=t") == -1) {
    location.search = location.search == "" ? "?target=t" : "&target=t";
  }
  const extspam = "Go8FCIkFEokFCggwMDAwMDAwMRAGGvAESySibk50w5Wb3uTl2c2h64jVVrV7gNs06GFlWplHQbY/5FfiO++1yH4ykCyNPWKXmco+wfQzK5R98D3so7rJ5LmGFvBLjGceleySrc3SOf2Pc1gVehzJgODeS0lDL3/I/0S2SSE98YgKleq6Uqx6ndTy9yaL9qFxJL7eiA/R3SEfTaW1SBoSITIu+EEkXff+Pv8NHOk7N57rcGk1w0ZzRrQDkXTOXFN2iHYIzAAZPIOY45Lsh+A4slpgnDiaOvRtlQYCt97nmPLuTipOJ8Qc5pM7ZsOsAPPrCQL7nK0I7aPrFDF0q4ziUUKettzW8MrAaiVfmbD1/VkmLNVqqZVvBCtRblXb5FHmtS8FxnqCzYP4WFvz3T0TcrOqwLX1M/DQvcHaGGw0B0y4bZMs7lVScGBFxMj3vbFi2SRKbKhaitxHfYHAOAa0X7/MSS0RNAjdwoyGHeOepXOKY+h3iHeqCvgOH6LOifdHf/1aaZNwSkGotYnYScW8Yx63LnSwba7+hESrtPa/huRmB9KWvMCKbDThL/nne14hnL277EDCSocPu3rOSYjuB9gKSOdVmWsj9Dxb/iZIe+S6AiG29Esm+/eUacSba0k8wn5HhHg9d4tIcixrxveflc8vi2/wNQGVFNsGO6tB5WF0xf/plngOvQ1/ivGV/C1Qpdhzznh0ExAVJ6dwzNg7qIEBaw+BzTJTUuRcPk92Sn6QDn2Pu3mpONaEumacjW4w6ipPnPw+g2TfywJjeEcpSZaP4Q3YV5HG8D6UjWA4GSkBKculWpdCMadx0usMomsSS/74QgpYqcPkmamB4nVv1JxczYITIqItIKjD35IGKAUwAA==";
  XHR.addListener(XHR.ReadyState.OPENED, (xhr, uri) => {
    if (uri.pathname == "/cgi-bin/mmwebwx-bin/webwxnewloginpage") {
      xhr.setRequestHeader("extspam", extspam);
      xhr.setRequestHeader("client-version", "2.0.0");
    }
  });
  const contextMenu = $("#contextMenu");
  if (contextMenu) {
    (_a = $(".main_inner")) == null ? void 0 : _a.insertAdjacentElement("beforebegin", contextMenu);
  }
  const tab = $(".panel .tab");
  if (tab) {
    (_b = $(".panel .header .info")) == null ? void 0 : _b.insertAdjacentElement("beforebegin", tab);
  }
  const header = $(".panel .header");
  if (header) {
    (_c = $(".main_inner")) == null ? void 0 : _c.insertAdjacentElement("afterbegin", header);
  }
})();