ukui-panel-4.0.0.4/0000755000175000017500000000000014564524526012364 5ustar fengfengukui-panel-4.0.0.4/AUTHORS0000644000175000017500000000056314560306203013422 0ustar fengfengUpstream Authors: LXQT team: https://lxqt.org Razor team: http://razor-qt.org kylin team: https://www.ukui.com Copyright: Copyright (c) 2010-2012 Razor team Copyright (c) 2012-2017 iLXQT team Copyright (c) 2019 Tianjin KYLIN Information Technology Co., Ltd. * License: LGPL-2.1+ The full text of the licenses can be found in the 'COPYING' file. ukui-panel-4.0.0.4/plugin-statusnotifier/0000755000175000017500000000000014560306221016725 5ustar fengfengukui-panel-4.0.0.4/plugin-statusnotifier/dbustypes.h0000644000175000017500000000333514560306203021124 0ustar fengfeng/* BEGIN_COMMON_COPYRIGHT_HEADER * (c)LGPL2+ * * LXQt - a lightweight, Qt based, desktop toolset * https://lxqt.org * * Copyright: 2015 LXQt team * Authors: * Balázs Béla * Paulo Lieuthier * * This program or library is free software; you can redistribute it * and/or modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General * Public License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA * * END_COMMON_COPYRIGHT_HEADER */ #include #ifndef DBUSTYPES_H #define DBUSTYPES_H struct IconPixmap { int width; int height; QByteArray bytes; }; typedef QList IconPixmapList; struct ToolTip { QString iconName; QList iconPixmap; QString title; QString description; }; QDBusArgument &operator<<(QDBusArgument &argument, const IconPixmap &icon); const QDBusArgument &operator>>(const QDBusArgument &argument, IconPixmap &icon); QDBusArgument &operator<<(QDBusArgument &argument, const ToolTip &toolTip); const QDBusArgument &operator>>(const QDBusArgument &argument, ToolTip &toolTip); Q_DECLARE_METATYPE(IconPixmap) Q_DECLARE_METATYPE(ToolTip) #endif // DBUSTYPES_H ukui-panel-4.0.0.4/plugin-statusnotifier/statusnotifierwatcher.cpp0000644000175000017500000001321514560306203024074 0ustar fengfeng/* BEGIN_COMMON_COPYRIGHT_HEADER * (c)LGPL2+ * * LXQt - a lightweight, Qt based, desktop toolset * https://lxqt.org * * Copyright: 2015 LXQt team * Authors: * Balázs Béla * Paulo Lieuthier * * This program or library is free software; you can redistribute it * and/or modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General * Public License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA * * END_COMMON_COPYRIGHT_HEADER */ #include "statusnotifierwatcher.h" #include #include #include "dbusproperties.h" static const QString s_watcherServiceName(QStringLiteral("org.kde.StatusNotifierWatcher")); StatusNotifierWatcher::StatusNotifierWatcher(QObject *parent) : QObject(parent) { qRegisterMetaType("IconPixmap"); qDBusRegisterMetaType(); qRegisterMetaType("IconPixmapList"); qDBusRegisterMetaType(); qRegisterMetaType("ToolTip"); qDBusRegisterMetaType(); m_statusNotifierWatcher=NULL; init(); } StatusNotifierWatcher::~StatusNotifierWatcher() { QDBusConnection::sessionBus().unregisterService("org.kde.StatusNotifierWatcher"); } void StatusNotifierWatcher::init(){ if (QDBusConnection::sessionBus().isConnected()) { m_serviceName = "org.kde.StatusNotifierHost-" + QString::number(QCoreApplication::applicationPid()); QDBusConnection::sessionBus().registerService(m_serviceName); QDBusServiceWatcher *watcher = new QDBusServiceWatcher(s_watcherServiceName, QDBusConnection::sessionBus(), QDBusServiceWatcher::WatchForOwnerChange, this); connect(watcher, &QDBusServiceWatcher::serviceOwnerChanged, this, &StatusNotifierWatcher::serviceChange); registerWatcher(s_watcherServiceName); } } void StatusNotifierWatcher::registerWatcher(const QString& service) { //qCDebug(DATAENGINE_SNI)<<"service appeared"<isValid()) { m_statusNotifierWatcher->call(QDBus::NoBlock, QStringLiteral("RegisterStatusNotifierHost"), m_serviceName); OrgFreedesktopDBusPropertiesInterface propetriesIface(m_statusNotifierWatcher->service(), m_statusNotifierWatcher->path(), m_statusNotifierWatcher->connection()); QDBusPendingReply pendingItems = propetriesIface.Get(m_statusNotifierWatcher->interface(), "RegisteredStatusNotifierItems"); QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pendingItems, this); connect(watcher, &QDBusPendingCallWatcher::finished, this, [=]() { watcher->deleteLater(); QDBusReply reply = *watcher; QStringList registeredItems = reply.value().variant().toStringList(); foreach (const QString &service, registeredItems) { newItem(service); } }); connect(m_statusNotifierWatcher, &OrgKdeStatusNotifierWatcherInterface::StatusNotifierItemRegistered, this, &StatusNotifierWatcher::serviceRegistered); connect(m_statusNotifierWatcher, &OrgKdeStatusNotifierWatcherInterface::StatusNotifierItemUnregistered, this, &StatusNotifierWatcher::serviceUnregistered); } else { delete m_statusNotifierWatcher; m_statusNotifierWatcher = nullptr; } } } void StatusNotifierWatcher::serviceChange(const QString& name, const QString& oldOwner, const QString& newOwner) { qDebug()<< "Service" << name << "status change, old owner:" << oldOwner << "new:" << newOwner; if (newOwner.isEmpty()) { //unregistered unregisterWatcher(name); } else if (oldOwner.isEmpty()) { //registered registerWatcher(name); } } void StatusNotifierWatcher::unregisterWatcher(const QString& service) { if (service == s_watcherServiceName) { qDebug()<< s_watcherServiceName << "disappeared"; disconnect(m_statusNotifierWatcher, &OrgKdeStatusNotifierWatcherInterface::StatusNotifierItemRegistered, this, &StatusNotifierWatcher::serviceRegistered); disconnect(m_statusNotifierWatcher, &OrgKdeStatusNotifierWatcherInterface::StatusNotifierItemUnregistered, this, &StatusNotifierWatcher::serviceUnregistered); delete m_statusNotifierWatcher; m_statusNotifierWatcher = nullptr; } } void StatusNotifierWatcher::serviceRegistered(const QString &service) { qDebug() << "Registering"< * Paulo Lieuthier * * This program or library is free software; you can redistribute it * and/or modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General * Public License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA * * END_COMMON_COPYRIGHT_HEADER */ #ifndef STATUSNOTIFIERBUTTON_H #define STATUSNOTIFIERBUTTON_H #include "../panel/iukuipanelplugin.h" #include #include #include #include #include #include #include #include #include #include #include #include #include "statusnotifierbuttonabstract.h" #define ORG_UKUI_STYLE "org.ukui.style" #define ICON_THEME_NAME "iconThemeName" #define STYLE_NAME "styleName" #define STYLE_NAME_KEY_DARK "ukui-dark" #define STYLE_NAME_KEY_BLACK "ukui-black" #define STYLE_NAME_KEY_LIGHT "ukui-light" #define STYLE_NAME_KEY_WHITE "ukui-white" #define STYLE_NAME_KEY_DEFAULT "ukui-default" #if QT_VERSION < QT_VERSION_CHECK(5, 5, 0) template inline T qFromUnaligned(const uchar *src) { T dest; const size_t size = sizeof(T); memcpy(&dest, src, size); return dest; } #endif /*! \brief specialized DBusMenuImporter to correctly create actions' icons based * on name */ class MenuImporter : public DBusMenuImporter { public: using DBusMenuImporter::DBusMenuImporter; protected: virtual QIcon iconForName(const QString & name) override { return QIcon::fromTheme(name); } }; class IUKUIPanelPlugin; class SniAsync; class MenuImporter; class StatusNotifierButton : public StatusNotifierButtonAbstract { Q_OBJECT public: StatusNotifierButton(QString service, QString objectPath, IUKUIPanelPlugin* plugin, QWidget *parent = 0); ~StatusNotifierButton(); QString getTypeName() override {return QString("Item");} enum Status{PASSIVE=0, ACTIVE, NEEDSATTENTION}; enum ActionArea{UNDEFINED=0,STORAGE,SHOW,FIXED}; QString hideAbleStatusNotifierButton(); int getStatus(); bool getFoldState(); void setFoldState(bool status); int getActionArea(); void setActionArea(int actionArea); static QString mimeDataFormat() { return QLatin1String("x-ukui/statusnotifier-button"); } public slots: void newIcon(); void newAttentionIcon(); void newOverlayIcon(); void newToolTip(); void newStatus(QString status); public: QString m_id; bool m_idStatus=false; bool m_iconStatus=false; QString m_toolTipTitle; private: SniAsync *m_interface; MenuImporter *m_menuImporter; QMenu *m_menu; Status m_status; QString m_themePath; QIcon m_icon, m_overlayIcon, m_attentionIcon, m_fallbackIcon; QPixmap m_iconPixmap; bool m_foldState; int m_actionArea = UNDEFINED; QPoint m_dragStart; IUKUIPanelPlugin* m_plugin; uint m_count = 0; //使用静态变量,节省内存空间 bool m_paramInit=false; QGSettings *m_themeSettings = nullptr; QPoint m_cursorLeftPos; const qreal m_blackHoverBtnAlphaF = 0.1; //深色主题下按钮悬停和按下透明度 const qreal m_blackPressBtnAlphaF = 0.05; const qreal m_lightHoverBtnAlphaF = 0.05; //浅色主题下按钮悬停和按下透明度 const qreal m_lightPressBtnAlphaF = 0.1; signals: void switchButtons(StatusNotifierButtonAbstract *from, StatusNotifierButtonAbstract *to); void sendTitle(QString arg); void sendstatus(QString arg); void cleanSignal(); void iconReady(); void layoutReady(); void layoutUpdate(); void paramReady(); protected: void contextMenuEvent(QContextMenuEvent * event); void mouseReleaseEvent(QMouseEvent *event); void wheelEvent(QWheelEvent *event); void dragEnterEvent(QDragEnterEvent *e); void dragLeaveEvent(QDragLeaveEvent *e); void dragMoveEvent(QDragMoveEvent * e); void mouseMoveEvent(QMouseEvent *e); void mousePressEvent(QMouseEvent *e); bool event(QEvent *e); virtual QMimeData * mimeData(); void resizeEvent(QResizeEvent *event); void enterEvent(QEvent *event); void leaveEvent(QEvent *event); void paintEvent(QPaintEvent *event); void refetchIcon(Status status); void resetIcon(); private: void systemThemeChanges(); void updataItemMenu(); void setHoverBtnProperty(); void setPressBtnProperty(); QImage getBlackThemeIcon(QImage image); }; class StatusNotifierButtonMimeData: public QMimeData { Q_OBJECT public: StatusNotifierButtonMimeData(): QMimeData(), m_button(0) { } StatusNotifierButton *button() const { return m_button; } void setButton(StatusNotifierButton *button) { m_button = button; } private: StatusNotifierButton *m_button; }; #endif // STATUSNOTIFIERBUTTON_H ukui-panel-4.0.0.4/plugin-statusnotifier/statusnotifierwatcher.h0000644000175000017500000000611314560306203023540 0ustar fengfeng/* BEGIN_COMMON_COPYRIGHT_HEADER * (c)LGPL2+ * * LXQt - a lightweight, Qt based, desktop toolset * https://lxqt.org * * Copyright: 2015 LXQt team * Authors: * Balázs Béla * Paulo Lieuthier * * This program or library is free software; you can redistribute it * and/or modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General * Public License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA * * END_COMMON_COPYRIGHT_HEADER */ #ifndef STATUSNOTIFIERWATCHER_H #define STATUSNOTIFIERWATCHER_H #include #include #include #include #include #include "dbustypes.h" #include "statusnotifierwatcher_interface.h" class StatusNotifierWatcher : public QObject, protected QDBusContext { Q_OBJECT Q_CLASSINFO("D-Bus Interface", "org.kde.StatusNotifierWatcher") Q_SCRIPTABLE Q_PROPERTY(bool IsStatusNotifierHostRegistered READ isStatusNotifierHostRegistered) Q_SCRIPTABLE Q_PROPERTY(int ProtocolVersion READ protocolVersion) Q_SCRIPTABLE Q_PROPERTY(QStringList RegisteredStatusNotifierItems READ RegisteredStatusNotifierItems) public: explicit StatusNotifierWatcher(QObject *parent = 0); ~StatusNotifierWatcher(); bool isStatusNotifierHostRegistered() { return mHosts.count() > 0; } int protocolVersion() const { return 0; } QStringList RegisteredStatusNotifierItems() const { return mServices; } void newItem(const QString &service); signals: Q_SCRIPTABLE void StatusNotifierItemRegistered(const QString &service); Q_SCRIPTABLE void StatusNotifierItemUnregistered(const QString &service); Q_SCRIPTABLE void StatusNotifierHostRegistered(); public slots: // Q_SCRIPTABLE void RegisterStatusNotifierItem(const QString &serviceOrPath); // Q_SCRIPTABLE void RegisterStatusNotifierHost(const QString &service); void serviceUnregistered(const QString &service); private: void init(); private: QStringList mServices; QStringList mHosts; QDBusServiceWatcher *mWatcher; QString m_serviceName; org::kde::StatusNotifierWatcher *m_statusNotifierWatcher; protected Q_SLOTS: void serviceChange(const QString& name, const QString& oldOwner, const QString& newOwner); void registerWatcher(const QString& service); void unregisterWatcher(const QString& service); void serviceRegistered(const QString &service); // void serviceUnregistered(const QString &service); }; #endif // STATUSNOTIFIERWATCHER_H ukui-panel-4.0.0.4/plugin-statusnotifier/statusnotifier_storagearrow.cpp0000644000175000017500000001672014560306203025321 0ustar fengfeng/* * Copyright (C) 2019 Tianjin KYLIN Information Technology Co., Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see StatusNotifierStorageArrow::StatusNotifierStorageArrow(IUKUIPanelPlugin* plugin, QWidget *parent): StatusNotifierButtonAbstract(parent), m_plugin(plugin) { m_parent=parent; this->setParent(parent); this->setAcceptDrops(true); systemThemeChanges(); //设置按钮属性 this->setProperty("useButtonPalette",true); this->setAutoRaise(true); this->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); setHoverBtnProperty(); const QByteArray id(UKUI_PANEL_SETTINGS); if(QGSettings::isSchemaInstalled(id)) { m_gsettings = new QGSettings(id); connect(m_gsettings, &QGSettings::changed, this, [=] (const QString &key) { if(key == PANEL_POSITION_KEY) { m_panelPosition=m_gsettings->get(PANEL_POSITION_KEY).toInt(); setArrowIcon(); } }); } QTimer::singleShot(10,this,[=](){ setArrowIcon(); }); this->setProperty("useIconHighlightEffect", 0x2); this->setContextMenuPolicy(Qt::PreventContextMenu); //不显示右键菜单并且不将事件往基类传递 } StatusNotifierStorageArrow::~StatusNotifierStorageArrow() { if(m_themeSettings) { delete(m_themeSettings); m_themeSettings = NULL; } } void StatusNotifierStorageArrow::dropEvent(QDropEvent *event) { } void StatusNotifierStorageArrow::dragEnterEvent(QDragEnterEvent *event) { const StatusNotifierButtonMimeData *mimeData = qobject_cast(event->mimeData()); if (mimeData && mimeData->button()){ if(m_gsettings && m_gsettings->get(SHOW_STATUSNOTIFIER_BUTTON).toBool()==false) { m_gsettings->set(SHOW_STATUSNOTIFIER_BUTTON,true); setArrowIcon(); } emit addButton(mimeData->button(), this); } event->accept(); QToolButton::dragEnterEvent(event); } void StatusNotifierStorageArrow::dragLeaveEvent(QDragLeaveEvent *event) { update(); event->accept(); } void StatusNotifierStorageArrow::mousePressEvent(QMouseEvent *event) { setPressBtnProperty(); } void StatusNotifierStorageArrow::mouseReleaseEvent(QMouseEvent *event) { setHoverBtnProperty(); if(event->button() == Qt::LeftButton) { if(m_gsettings) { if(m_plugin->panel()->isHorizontal()) { if(m_gsettings->get(SHOW_STATUSNOTIFIER_BUTTON).toBool()) { setIcon(QIcon::fromTheme("ukui-start-symbolic")); m_gsettings->set(SHOW_STATUSNOTIFIER_BUTTON,false); } else { setIcon(QIcon::fromTheme("ukui-end-symbolic")); m_gsettings->set(SHOW_STATUSNOTIFIER_BUTTON,true); } } else { if(m_gsettings->get(SHOW_STATUSNOTIFIER_BUTTON).toBool()) { setIcon(QIcon::fromTheme("ukui-up-symbolic")); m_gsettings->set(SHOW_STATUSNOTIFIER_BUTTON,false); } else { setIcon(QIcon::fromTheme("ukui-down-symbolic")); m_gsettings->set(SHOW_STATUSNOTIFIER_BUTTON,true); } } } } QToolButton::mouseReleaseEvent(event); } void StatusNotifierStorageArrow::setArrowIcon() { if(m_gsettings) { if(m_plugin->panel()->isHorizontal()) { if(m_gsettings->get(SHOW_STATUSNOTIFIER_BUTTON).toBool()) { setIcon(QIcon::fromTheme("ukui-end-symbolic")); } else { setIcon(QIcon::fromTheme("ukui-start-symbolic")); } } else { if(m_gsettings->get(SHOW_STATUSNOTIFIER_BUTTON).toBool()) { setIcon(QIcon::fromTheme("ukui-down-symbolic")); } else { setIcon(QIcon::fromTheme("ukui-up-symbolic")); } } } } void StatusNotifierStorageArrow::systemThemeChanges() { //主题变化 重新设置按钮背景颜色属性 const QByteArray styleId(ORG_UKUI_STYLE); if(QGSettings::isSchemaInstalled(styleId)) { m_themeSettings = new QGSettings(styleId); connect(m_themeSettings, &QGSettings::changed, this, [=] (const QString &key) { if(key == STYLE_NAME) { setHoverBtnProperty(); } }); } } void StatusNotifierStorageArrow::resizeEvent(QResizeEvent *event) { if (m_plugin->panel()->isHorizontal()) { this->setIconSize(QSize(this->width()*0.5,this->width()*0.5)); } else { this->setIconSize(QSize(this->height()*0.5,this->height()*0.5)); } QToolButton::resizeEvent(event); } void StatusNotifierStorageArrow::paintEvent(QPaintEvent *event) { if (m_plugin->panel()->isHorizontal()) { this->setFixedSize(m_plugin->panel()->panelSize()*0.7, m_plugin->panel()->panelSize()*0.7); } else { this->setFixedSize(m_plugin->panel()->panelSize()*0.7, m_plugin->panel()->panelSize()*0.7); } QToolButton::paintEvent(event); } void StatusNotifierStorageArrow::mouseMoveEvent(QMouseEvent *event) { QDrag *drag = new QDrag(this); drag->exec(); drag->deleteLater(); } void StatusNotifierStorageArrow::setHoverBtnProperty() { if(m_themeSettings) { QStringList allKeys = m_themeSettings->keys(); if(allKeys.contains(STYLE_NAME)) { QPalette pal = qApp->palette(); QColor col = pal.color(QPalette::Active, QPalette::ButtonText); QString styleName = m_themeSettings->get(STYLE_NAME).toString(); if(styleName==STYLE_NAME_KEY_DARK || styleName==STYLE_NAME_KEY_BLACK) { col.setAlphaF(m_blackHoverBtnAlphaF); } else if(styleName==STYLE_NAME_KEY_LIGHT || styleName==STYLE_NAME_KEY_WHITE || styleName==STYLE_NAME_KEY_DEFAULT) { col.setAlphaF(m_lightHoverBtnAlphaF); } pal.setColor(QPalette::Button, col); this->setPalette(pal); } } } void StatusNotifierStorageArrow::setPressBtnProperty() { if(m_themeSettings) { QStringList allKeys = m_themeSettings->keys(); if(allKeys.contains(STYLE_NAME)) { QPalette pal = qApp->palette(); QColor col = pal.color(QPalette::Active, QPalette::ButtonText); QString styleName = m_themeSettings->get(STYLE_NAME).toString(); if(styleName==STYLE_NAME_KEY_DARK || styleName==STYLE_NAME_KEY_BLACK) { col.setAlphaF(m_blackPressBtnAlphaF); } else if(styleName==STYLE_NAME_KEY_LIGHT || styleName==STYLE_NAME_KEY_WHITE || styleName==STYLE_NAME_KEY_DEFAULT) { col.setAlphaF(m_lightPressBtnAlphaF); } pal.setColor(QPalette::Button, col); this->setPalette(pal); } } } ukui-panel-4.0.0.4/plugin-statusnotifier/dbustypes.cpp0000644000175000017500000000454714560306203021465 0ustar fengfeng/* BEGIN_COMMON_COPYRIGHT_HEADER * (c)LGPL2+ * * LXQt - a lightweight, Qt based, desktop toolset * https://lxqt.org * * Copyright: 2015 LXQt team * Authors: * Balázs Béla * Paulo Lieuthier * * This program or library is free software; you can redistribute it * and/or modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General * Public License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA * * END_COMMON_COPYRIGHT_HEADER */ #include "dbustypes.h" #include // Marshall the IconPixmap data into a D-Bus argument QDBusArgument &operator<<(QDBusArgument &argument, const IconPixmap &icon) { argument.beginStructure(); argument << icon.width; argument << icon.height; argument << icon.bytes; argument.endStructure(); return argument; } // Retrieve the ImageStruct data from the D-Bus argument const QDBusArgument &operator>>(const QDBusArgument &argument, IconPixmap &icon) { argument.beginStructure(); argument >> icon.width; argument >> icon.height; argument >> icon.bytes; argument.endStructure(); return argument; } // Marshall the ToolTip data into a D-Bus argument QDBusArgument &operator<<(QDBusArgument &argument, const ToolTip &toolTip) { argument.beginStructure(); argument << toolTip.iconName; argument << toolTip.iconPixmap; argument << toolTip.title; argument << toolTip.description; argument.endStructure(); return argument; } // Retrieve the ToolTip data from the D-Bus argument const QDBusArgument &operator>>(const QDBusArgument &argument, ToolTip &toolTip) { argument.beginStructure(); argument >> toolTip.iconName; argument >> toolTip.iconPixmap; argument >> toolTip.title; argument >> toolTip.description; argument.endStructure(); return argument; } ukui-panel-4.0.0.4/plugin-statusnotifier/CMakeLists.txt0000644000175000017500000000317414560306203021472 0ustar fengfengset(PLUGIN "statusnotifier") find_package(dbusmenu-qt5 REQUIRED) set(HEADERS statusnotifier.h dbustypes.h statusnotifierbutton.h statusnotifieriteminterface.h statusnotifierwatcher.h # statusnotifierwidget.h sniasync.h statusnotifier_storagearrow.h statusnotifierwatcher_interface.h systemtraytypedefs.h dbusproperties.h statusnotiferscrollarea.h statusnotifierbuttonabstract.h ) set(SOURCES statusnotifier.cpp dbustypes.cpp statusnotifierbutton.cpp statusnotifieriteminterface.cpp statusnotifierwatcher.cpp # statusnotifierwidget.cpp sniasync.cpp statusnotifier_storagearrow.cpp statusnotifierwatcher_interface.cpp dbusproperties.cpp statusnotiferscrollarea.cpp statusnotifierbuttonabstract.cpp ) qt5_add_dbus_adaptor(DBUS_SOURCES org.kde.StatusNotifierItem.xml statusnotifieriteminterface.h StatusNotifierItemInterface ) set_source_files_properties(${DBUS_SOURCES} PROPERTIES SKIP_AUTOGEN ON) list(APPEND SOURCES "${DBUS_SOURCES}") set(LIBRARIES dbusmenu-qt5 ) #加载翻译文件 file(GLOB TS_FILES "${PROJECT_SOURCE_DIR}/plugin-statusnotifier/translation/*.ts" ) #更新翻译文件并创建.qm文件 qt5_create_translation(QM_FILES ${PROJECT_SOURCE_DIR}/plugin-statusnotifier ${TS_FILES}) set(${PLUGIN}_QM_FILES ${QM_FILES}) BUILD_UKUI_PLUGIN(${PLUGIN}) #安装翻译文件 set(STATUSNOTIFIER_TRANSLATION_DIR "${PACKAGE_DATA_DIR}/plugin-statusnotifier/translation") add_compile_definitions(STATUSNOTIFIER_TRANSLATION_DIR="${STATUSNOTIFIER_TRANSLATION_DIR}") install(FILES ${QM_FILES} DESTINATION ${STATUSNOTIFIER_TRANSLATION_DIR}) ukui-panel-4.0.0.4/plugin-statusnotifier/statusnotiferscrollarea.h0000644000175000017500000001020514560306203024056 0ustar fengfeng/* BEGIN_COMMON_COPYRIGHT_HEADER * (c)LGPL2+ * * LXQt - a lightweight, Qt based, desktop toolset * https://lxqt.org * * Copyright: 2015 LXQt team * Authors: * Balázs Béla * Paulo Lieuthier * * This program or library is free software; you can redistribute it * and/or modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General * Public License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA * * END_COMMON_COPYRIGHT_HEADER */ #ifndef STATUSNOTIFERSCROLLAREA_H #define STATUSNOTIFERSCROLLAREA_H #include #include #include #include "../panel/iukuipanelplugin.h" #include "../panel/common/ukuigridlayout.h" #include "../panel/pluginsettings.h" #include "statusnotifierwidget.h" #include "statusnotifierbutton.h" #include "statusnotifierwatcher.h" #include "statusnotifier_storagearrow.h" #include "statusnotifierbuttonabstract.h" /***************************************************** **托盘滚动区域布局 ----------------------------------------------- | Active Area | Fixed Area | | | | | Storage | Storage | Show | | Area | Arrow | Area | ----------------------------------------------- Active Area: Storage Area:图标可收纳、可拖拽 Show Area:图标不可收纳、可拖拽 Storage Arrow:切换收纳区图标的显示和隐藏状态 Fixed Area:固定区内图标不可拖拽、不可收纳 *****************************************************/ class StatusNotiferScrollArea : public QScrollArea { Q_OBJECT public: StatusNotiferScrollArea(IUKUIPanelPlugin *plugin, QWidget *parent = 0); ~StatusNotiferScrollArea(); enum Status{PASSIVE=0, ACTIVE, NEEDSATTENTION}; enum ActionArea{UNDEFINED=0,STORAGE,SHOW,FIXED}; protected: void wheelEvent(QWheelEvent* event); public Q_SLOTS: void realign(); void itemAdded(QString serviceAndPath); void itemRemoved(const QString &serviceAndPath); private Q_SLOTS: void switchButtons(StatusNotifierButtonAbstract *srcButton, StatusNotifierButtonAbstract *dstButton); void arrowbtnAddButton(StatusNotifierButtonAbstract *srcButton, StatusNotifierButtonAbstract *dstButton); void tabletPcSwitch(bool state); private: void saveSettings(QString button1,QString button2); QList readSettings(); QStringList readFixedAppSettings(); void resetLayout(); void exchangeHideAndShow(); QString getDisplayId(QString pid); private: IUKUIPanelPlugin *m_plugin; QWidget *m_parent; QWidget *m_outWidget; //最外层大窗口,是托盘活动区和托盘固定区的父窗口 QWidget *m_statusNotifierWidget; //托盘活动区窗口 QWidget *m_statusNotifierFixedWidget; //托盘固定区窗口(不允许图标拖动) QGSettings *m_btnIsShowgsettings = nullptr; UKUi::GridLayout *m_layout; UKUi::GridLayout *m_layoutFix; QGridLayout *m_outLayout; StatusNotifierWatcher *m_watcher; QHash m_services; QMap m_showButtons; QMap m_hideButtons; QMap m_allButtons; QMap m_activeButtons; QMap m_layoutButtons; QMap m_fixedButtons; QList m_statusNotifierButtons; QList m_statusNotifierFixedButtons; StatusNotifierStorageArrow *m_arrowBtn; QGSettings *m_gsettings = nullptr; }; #endif // STATUSNOTIFERSCROLLAREA_H ukui-panel-4.0.0.4/plugin-statusnotifier/statusnotifierbutton.cpp0000644000175000017500000005305014560306221023753 0ustar fengfeng/* BEGIN_COMMON_COPYRIGHT_HEADER * (c)LGPL2+ * * LXQt - a lightweight, Qt based, desktop toolset * https://lxqt.org * * Copyright: 2015 LXQt team * Authors: * Balázs Béla * Paulo Lieuthier * * This program or library is free software; you can redistribute it * and/or modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General * Public License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA * * END_COMMON_COPYRIGHT_HEADER */ #include "statusnotifierbutton.h" #include #include #include #include #include "../panel/iukuipanelplugin.h" #include "sniasync.h" #include "../panel/customstyle.h" #include #include //#include #define MIMETYPE "ukui/UkuiTaskBar" #define ICON_ZOOM 0.348 StatusNotifierButton::StatusNotifierButton(QString service, QString objectPath, IUKUIPanelPlugin* plugin, QWidget *parent) : StatusNotifierButtonAbstract(parent), m_menu(nullptr), m_menuImporter(nullptr), m_status(PASSIVE), m_fallbackIcon(QIcon::fromTheme("application-x-executable")), m_plugin(plugin) { this->setAcceptDrops(true); this->setFixedSize(m_plugin->panel()->panelSize()*0.7, m_plugin->panel()->panelSize()*0.7); m_interface = new SniAsync(service, objectPath, QDBusConnection::sessionBus(), this); connect(m_interface, &SniAsync::NewIcon, this, &StatusNotifierButton::newIcon); connect(m_interface, &SniAsync::NewOverlayIcon, this, &StatusNotifierButton::newOverlayIcon); connect(m_interface, &SniAsync::NewAttentionIcon, this, &StatusNotifierButton::newAttentionIcon); connect(m_interface, &SniAsync::NewToolTip, this, &StatusNotifierButton::newToolTip); connect(m_interface, &SniAsync::NewStatus, this, &StatusNotifierButton::newStatus); hideAbleStatusNotifierButton(); connect(this,&StatusNotifierButton::paramReady,this,[=]() { // qInfo()<<" Itme paramReady:" << "m_id:" << m_id << this->m_iconStatus << !m_paramInit; if(!this->m_id.isEmpty() && this->m_iconStatus && !m_paramInit) { emit layoutReady(); m_paramInit = true; } else { if(this->m_id.isEmpty()) { if(m_count < 10) { //超过10次将不再获取 QTimer *tmpTimer = new QTimer(this); connect(tmpTimer, &QTimer::timeout, this, [=] () { tmpTimer->stop(); hideAbleStatusNotifierButton(); tmpTimer->deleteLater(); }); tmpTimer->start(500); qWarning()<<"Get item id for the"<propertyGetAsync(QLatin1String("Menu"), [this] (QDBusObjectPath path) { if(path.path() != "/NO_DBUSMENU" && !path.path().isEmpty()) { m_menuImporter = new MenuImporter(m_interface->service(), path.path(), this); if(m_menuImporter) { connect(m_menuImporter, &MenuImporter::menuUpdated, this, &StatusNotifierButton::updataItemMenu); } } }); m_interface->propertyGetAsync(QLatin1String("Status"), [this] (QString status) { newStatus(status); }); m_interface->propertyGetAsync(QLatin1String("IconThemePath"), [this] (QString value) { m_themePath = value; //do the logic of icons after we've got the theme path refetchIcon(ACTIVE); refetchIcon(PASSIVE); refetchIcon(NEEDSATTENTION); }); this->setProperty("useIconHighlightEffect", 0x10); newToolTip(); systemThemeChanges(); //设置按钮属性 this->setProperty("useButtonPalette",true); this->setAutoRaise(true); this->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); setHoverBtnProperty(); } StatusNotifierButton::~StatusNotifierButton() { if (m_interface) { delete m_interface; m_interface = nullptr; } if(m_themeSettings) { delete(m_themeSettings); m_themeSettings = NULL; } } void StatusNotifierButton::newIcon() { refetchIcon(ACTIVE); } void StatusNotifierButton::newOverlayIcon() { refetchIcon(ACTIVE); } void StatusNotifierButton::newAttentionIcon() { refetchIcon(NEEDSATTENTION); } void StatusNotifierButton::refetchIcon(Status status) { m_interface->propertyGetAsync(QLatin1String("IconThemePath"), [this] (QString value) { m_themePath = value; }); QString nameProperty, pixmapProperty; if (status == ACTIVE) { nameProperty = QLatin1String("IconName"); pixmapProperty = QLatin1String("IconPixmap"); } else if (status == NEEDSATTENTION) { nameProperty = QLatin1String("AttentionIconName"); pixmapProperty = QLatin1String("AttentionIconPixmap"); } else { resetIcon(); return; } m_interface->propertyGetAsync(nameProperty, [this, status, pixmapProperty] (QString iconName) { QIcon nextIcon; if (!iconName.isEmpty()) { if (QIcon::hasThemeIcon(iconName)) { nextIcon = QIcon::fromTheme(iconName); } else if (QFile(iconName).exists()) { nextIcon.addFile(iconName); } else { if(m_themePath.isEmpty()) { m_themePath = "/usr/share/icons/"; } QDir themeDir(m_themePath); if (themeDir.exists()) { if (themeDir.exists(iconName + ".png")) { nextIcon.addFile(themeDir.filePath(iconName + ".png")); } if (themeDir.cd("hicolor") || (themeDir.cd("icons") && themeDir.cd("hicolor"))) { const QStringList sizes = themeDir.entryList(QDir::AllDirs | QDir::NoDotAndDotDot); for (const QString &dir : sizes) { const QStringList dirs = QDir(themeDir.filePath(dir)).entryList(QDir::AllDirs | QDir::NoDotAndDotDot); for (const QString &innerDir : dirs) { QString file = themeDir.absolutePath() + "/" + dir + "/" + innerDir + "/" + iconName + ".png"; if (QFile::exists(file)) { nextIcon.addFile(file); } } } } } } switch (status) { case ACTIVE: m_icon = nextIcon; break; case NEEDSATTENTION: m_attentionIcon = nextIcon; break; } resetIcon(); } else { m_interface->propertyGetAsync(pixmapProperty, [this, status, pixmapProperty] (IconPixmapList iconPixmaps) { if (iconPixmaps.empty()) return; QIcon nextIcon; for (IconPixmap iconPixmap: iconPixmaps) { if (!iconPixmap.bytes.isNull()) { QImage image((uchar*) iconPixmap.bytes.data(), iconPixmap.width, iconPixmap.height, QImage::Format_ARGB32); const uchar *end = image.constBits() + image.byteCount(); uchar *dest = reinterpret_cast(iconPixmap.bytes.data()); for (const uchar *src = image.constBits(); src < end; src += 4, dest += 4) qToUnaligned(qToBigEndian(qFromUnaligned(src)), dest); QString style; if(m_themeSettings) style = m_themeSettings->get(STYLE_NAME).toString(); if(style == STYLE_NAME_KEY_DARK || style == STYLE_NAME_KEY_DEFAULT) { image = getBlackThemeIcon(image); } nextIcon.addPixmap(QPixmap::fromImage(image)); } } switch (status) { case ACTIVE: m_icon = nextIcon; break; case NEEDSATTENTION: m_attentionIcon = nextIcon; break; } resetIcon(); QSize size = this->iconSize(); m_iconPixmap = this->icon().pixmap(this->icon().actualSize(size)); }); } }); } void StatusNotifierButton::newToolTip() { m_interface->propertyGetAsync(QLatin1String("ToolTip"), [this] (ToolTip tooltip) { QString toolTipTitle = tooltip.title; if (!toolTipTitle.isEmpty()) { m_toolTipTitle = toolTipTitle; setToolTip(toolTipTitle); } else { m_interface->propertyGetAsync(QLatin1String("Title"), [this] (QString title) { // we should get here only in case the ToolTip.title was empty if (!title.isEmpty()) { m_toolTipTitle = title; setToolTip(title); } }); } }); } void StatusNotifierButton::newStatus(QString status) { Status newStatus; if (status == QLatin1String("Passive")) newStatus = PASSIVE; else if (status == QLatin1String("Active")) newStatus = ACTIVE; else if(status == QLatin1String("NeedsAttention")) newStatus = NEEDSATTENTION; else newStatus = ACTIVE; if (m_status == newStatus) return; m_status = newStatus; resetIcon(); emit layoutUpdate(); } void StatusNotifierButton::contextMenuEvent(QContextMenuEvent* event) { //XXX: avoid showing of parent's context menu, we are (optionaly) providing context menu on mouseReleaseEvent //QWidget::contextMenuEvent(event); } void StatusNotifierButton::mouseMoveEvent(QMouseEvent *e) { if (e->button() == Qt::RightButton) return; if (!(e->buttons() & Qt::LeftButton)) return; if ((e->pos() - m_dragStart).manhattanLength() < QApplication::startDragDistance()) return; if (e->modifiers() == Qt::ControlModifier) { return; } if(this->acceptDrops()) { QDrag *drag = new QDrag(this); QPixmap iconPixmap; QIcon ico = icon(); QString iconName = this->icon().name(); if(!iconName.isEmpty()) { QSize size = this->iconSize(); iconPixmap = ico.pixmap(ico.actualSize(size)); QImage image = iconPixmap.toImage(); if(m_themeSettings) { //深色模式下,拖拽提示图标反白 QString style = m_themeSettings->get(STYLE_NAME).toString(); if(style == STYLE_NAME_KEY_DARK || style == STYLE_NAME_KEY_DEFAULT) { image = getBlackThemeIcon(image); iconPixmap = QPixmap::fromImage(image); } } } else { iconPixmap = m_iconPixmap; QImage image = m_iconPixmap.toImage(); if(m_themeSettings) { //深色模式下,拖拽提示图标反白 QString style = m_themeSettings->get(STYLE_NAME).toString(); if(style == STYLE_NAME_KEY_DARK || style == STYLE_NAME_KEY_DEFAULT) { image = getBlackThemeIcon(image); iconPixmap = QPixmap::fromImage(image); } } } drag->setMimeData(mimeData()); drag->setPixmap(iconPixmap); switch (m_plugin->panel()->position()) { case IUKUIPanel::PositionLeft: case IUKUIPanel::PositionTop: drag->setHotSpot(iconPixmap.rect().bottomLeft()); break; case IUKUIPanel::PositionRight: case IUKUIPanel::PositionBottom: drag->setHotSpot(iconPixmap.rect().bottomRight()); break; } //原按钮透明,取消文字和icon this->setIcon(QIcon()); drag->exec(); drag->deleteLater(); refetchIcon(ACTIVE); } } void StatusNotifierButton::mouseReleaseEvent(QMouseEvent *event) { setHoverBtnProperty(); if (event->button() == Qt::LeftButton) m_interface->Activate(QCursor::pos().x(), QCursor::pos().y()); else if (event->button() == Qt::MidButton) m_interface->SecondaryActivate(QCursor::pos().x(), QCursor::pos().y()); else if (Qt::RightButton == event->button()) { m_cursorLeftPos = QCursor::pos(); if(m_menuImporter) { m_menuImporter->updateMenu(); } else { m_interface->ContextMenu(m_cursorLeftPos.x(), m_cursorLeftPos.y()); qDebug()<<"Tray proxy "<Scroll(event->delta(), "vertical"); } void StatusNotifierButton::resetIcon() { if(m_status == PASSIVE) { this->setVisible(false); emit layoutUpdate(); return; } else if(m_status == ACTIVE) { if(!m_icon.isNull()) setIcon(m_icon); else if(!m_overlayIcon.isNull()) setIcon(m_overlayIcon); else { qInfo()<<"Failed to get icon! Id:"<setVisible(false) : this->setVisible(true); } else { this->setVisible(true); } m_iconStatus=true; emit paramReady(); } void StatusNotifierButton::systemThemeChanges() { //主题变化 const QByteArray styleId(ORG_UKUI_STYLE); if(QGSettings::isSchemaInstalled(styleId)) { m_themeSettings = new QGSettings(styleId); connect(m_themeSettings, &QGSettings::changed, this, [=] (const QString &key) { if(key == ICON_THEME_NAME) { //主题变化任务栏主动更新图标 refetchIcon(ACTIVE); } if(key == STYLE_NAME) { //主题变化重新设置按钮背景颜色属性 setHoverBtnProperty(); refetchIcon(ACTIVE); } }); } } void StatusNotifierButton::updataItemMenu() { m_menu = m_menuImporter->menu(); if (m_menu && !m_menu->isEmpty()) { m_plugin->willShowWindow(m_menu); m_menu->exec(m_menuImporter->menu()->actions(), m_plugin->panel()->calculatePopupWindowPos(m_cursorLeftPos, m_menu->sizeHint()).topLeft(), nullptr, this); //任务栏显示右键菜单 qDebug()<<"Tray display "<ContextMenu(m_cursorLeftPos.x(), m_cursorLeftPos.y()); //应用显示右键菜单 qDebug()<<"Tray proxy "<mimeData()->hasFormat(MIMETYPE)) // e->acceptProposedAction(); // else // e->ignore(); } void StatusNotifierButton::dragEnterEvent(QDragEnterEvent *e) { e->acceptProposedAction(); const StatusNotifierButtonMimeData *mimeData = qobject_cast(e->mimeData()); if (mimeData && mimeData->button()) { emit switchButtons(mimeData->button(), this); emit sendTitle(mimeData->button()->hideAbleStatusNotifierButton()); } QToolButton::dragEnterEvent(e); } void StatusNotifierButton::dragLeaveEvent(QDragLeaveEvent *e) { update(); //拖拽离开wigget时,需要updata e->accept(); } QMimeData * StatusNotifierButton::mimeData() { StatusNotifierButtonMimeData *mimeData = new StatusNotifierButtonMimeData(); // QByteArray ba; // mimeData->setData(mimeDataFormat(), ba); mimeData->setButton(this); return mimeData; } void StatusNotifierButton::mousePressEvent(QMouseEvent *e) { setPressBtnProperty(); if (e->button() == Qt::LeftButton ) { m_dragStart = e->pos(); return; } QToolButton::mousePressEvent(e); } bool StatusNotifierButton::event(QEvent *e) { // if(e->type() != QEvent::ToolTipChange && e->type()!=QEvent::HoverMove && e->type()!=QEvent::Paint && // e->type() != QEvent::HoverLeave && e->type()!=QEvent::Paint &&e->type() != QEvent::DragMove && // e->type() != QEvent::Leave && e->type()!=QEvent::Enter &&e->type() != QEvent::DragMove && // e->type() != QEvent::Gesture && e->type() != QEvent::MouseButtonPress && e->type() != QEvent::MouseButtonRelease && // e->type() != QEvent::GestureOverride && e->type() !=QEvent::HoverEnter && e->type() != QEvent::MouseMove && // e->type() !=QEvent::ChildAdded && e->type() != QEvent::DragEnter ) // qDebug()<type(); if(e->type() == QEvent::ChildRemoved) { emit cleanSignal(); } return QToolButton::event(e); } void StatusNotifierButton::resizeEvent(QResizeEvent *event) { IUKUIPanel *panel = m_plugin->panel(); this->setIconSize(QSize(panel->panelSize()*ICON_ZOOM,panel->panelSize()*ICON_ZOOM)); QToolButton::resizeEvent(event); } void StatusNotifierButton::enterEvent(QEvent *event) { update(); } void StatusNotifierButton::leaveEvent(QEvent *event) { update(); } void StatusNotifierButton::paintEvent(QPaintEvent *event) { this->setFixedSize(m_plugin->panel()->panelSize()*0.7, m_plugin->panel()->panelSize()*0.7); QToolButton::paintEvent(event); } QString StatusNotifierButton::hideAbleStatusNotifierButton() { if (m_interface) { m_interface->propertyGetAsync(QLatin1String("Id"), [this] (QString title) { m_id = ""; m_id = title; emit paramReady(); }); return m_id; } return QString(); } int StatusNotifierButton::getStatus() { return m_status; } bool StatusNotifierButton::getFoldState() { return m_foldState; } void StatusNotifierButton::setFoldState(bool status) { m_foldState = status; } int StatusNotifierButton::getActionArea() { return m_actionArea; } void StatusNotifierButton::setActionArea(int actionArea) { m_actionArea = actionArea; } void StatusNotifierButton::setHoverBtnProperty() { if(m_themeSettings) { QStringList allKeys = m_themeSettings->keys(); if(allKeys.contains(STYLE_NAME)) { QPalette pal = qApp->palette(); QColor col = pal.color(QPalette::Active, QPalette::ButtonText); QString styleName = m_themeSettings->get(STYLE_NAME).toString(); if(styleName==STYLE_NAME_KEY_DARK || styleName==STYLE_NAME_KEY_BLACK) { col.setAlphaF(m_blackHoverBtnAlphaF); } else if(styleName==STYLE_NAME_KEY_LIGHT || styleName==STYLE_NAME_KEY_WHITE || styleName==STYLE_NAME_KEY_DEFAULT) { col.setAlphaF(m_lightHoverBtnAlphaF); } pal.setColor(QPalette::Button, col); this->setPalette(pal); } } } void StatusNotifierButton::setPressBtnProperty() { if(m_themeSettings) { QStringList allKeys = m_themeSettings->keys(); if(allKeys.contains(STYLE_NAME)) { QPalette pal = qApp->palette(); QColor col = pal.color(QPalette::Active, QPalette::ButtonText); QString styleName = m_themeSettings->get(STYLE_NAME).toString(); if(styleName==STYLE_NAME_KEY_DARK || styleName==STYLE_NAME_KEY_BLACK) { col.setAlphaF(m_blackPressBtnAlphaF); } else if(styleName==STYLE_NAME_KEY_LIGHT || styleName==STYLE_NAME_KEY_WHITE || styleName==STYLE_NAME_KEY_DEFAULT) { col.setAlphaF(m_lightPressBtnAlphaF); } pal.setColor(QPalette::Button, col); this->setPalette(pal); } } } QImage StatusNotifierButton::getBlackThemeIcon(QImage image) { QColor(255,255,255); QColor standard (31,32,34); for (int x = 0; x < image.width(); x++) { for (int y = 0; y < image.height(); y++) { auto color = image.pixelColor(x, y); if (color.alpha() > 0) { if(qAbs(color.red()-standard.red())<20 && qAbs(color.green()-standard.green())<20 && qAbs(color.blue()-standard.blue())<20) { color.setRed(255); color.setGreen(255); color.setBlue(255); image.setPixelColor(x, y, color); } else { image.setPixelColor(x, y, color); } } } } return image; } ukui-panel-4.0.0.4/plugin-statusnotifier/dbusproperties.h0000644000175000017500000000451214560306203022152 0ustar fengfeng/* * This file was generated by qdbusxml2cpp version 0.8 * Command line was: qdbusxml2cpp -m -p dbusproperties org.freedesktop.DBus.Properties.xml * * qdbusxml2cpp is Copyright (C) 2020 The Qt Company Ltd. * * This is an auto-generated file. * Do not edit! All changes made to it will be lost. */ #ifndef DBUSPROPERTIES_H #define DBUSPROPERTIES_H #include #include #include #include #include #include #include #include /* * Proxy class for interface org.freedesktop.DBus.Properties */ class OrgFreedesktopDBusPropertiesInterface: public QDBusAbstractInterface { Q_OBJECT public: static inline const char *staticInterfaceName() { return "org.freedesktop.DBus.Properties"; } public: OrgFreedesktopDBusPropertiesInterface(const QString &service, const QString &path, const QDBusConnection &connection, QObject *parent = nullptr); ~OrgFreedesktopDBusPropertiesInterface(); public Q_SLOTS: // METHODS inline QDBusPendingReply Get(const QString &interface_name, const QString &property_name) { QList argumentList; argumentList << QVariant::fromValue(interface_name) << QVariant::fromValue(property_name); return asyncCallWithArgumentList(QStringLiteral("Get"), argumentList); } inline QDBusPendingReply GetAll(const QString &interface_name) { QList argumentList; argumentList << QVariant::fromValue(interface_name); return asyncCallWithArgumentList(QStringLiteral("GetAll"), argumentList); } inline QDBusPendingReply<> Set(const QString &interface_name, const QString &property_name, const QDBusVariant &value) { QList argumentList; argumentList << QVariant::fromValue(interface_name) << QVariant::fromValue(property_name) << QVariant::fromValue(value); return asyncCallWithArgumentList(QStringLiteral("Set"), argumentList); } Q_SIGNALS: // SIGNALS void PropertiesChanged(const QString &interface_name, const QVariantMap &changed_properties, const QStringList &invalidated_properties); }; namespace org { namespace freedesktop { namespace DBus { typedef ::OrgFreedesktopDBusPropertiesInterface Properties; } } } #endif ukui-panel-4.0.0.4/plugin-statusnotifier/statusnotiferscrollarea.cpp0000644000175000017500000005540014560306221024417 0ustar fengfeng/* BEGIN_COMMON_COPYRIGHT_HEADER * (c)LGPL2+ * * LXQt - a lightweight, Qt based, desktop toolset * https://lxqt.org * * Copyright: 2015 LXQt team * Authors: * Balázs Béla * Paulo Lieuthier * * This program or library is free software; you can redistribute it * and/or modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General * Public License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA * * END_COMMON_COPYRIGHT_HEADER */ #include "statusnotiferscrollarea.h" #include #include #define CONFIG_FILE_BACKUP "/usr/share/ukui/panel.conf" StatusNotiferScrollArea::StatusNotiferScrollArea(IUKUIPanelPlugin *plugin, QWidget *parent) :m_plugin(plugin), m_parent(parent) { //检查配置文件是否完整 QSettings backup_qsettings(CONFIG_FILE_BACKUP,QSettings::IniFormat); QStringList showAppBackup = backup_qsettings.value("statusnotifier/showApp").toStringList(); QStringList hideAppBackup = backup_qsettings.value("statusnotifier/hideApp").toStringList(); QStringList fixedAppBackup = backup_qsettings.value("statusnotifier/fixedApp").toStringList(); QString alignmentBackup = backup_qsettings.value("statusnotifier/alignment").toString(); PluginSettings *settings = m_plugin->settings(); // ~/.config/ukui/panel.conf QStringList allkeys = settings->allKeys(); if(!allkeys.contains("showApp")) { settings->setValue("showApp",showAppBackup); } if(!allkeys.contains("hideApp")) { settings->setValue("hideApp",hideAppBackup); } if(!allkeys.contains("fixedApp")) { settings->setValue("fixedApp",fixedAppBackup); } QStringList showApp = settings->value("showApp").toStringList(); QStringList hideApp = settings->value("hideApp").toStringList(); for(int i=0; isetValue("showApp",showApp); settings->setValue("hideApp",hideApp); if(!allkeys.contains("alignment")) { settings->setValue("alignment",alignmentBackup); } //监听平板和PC模式切换 QDBusConnection::sessionBus().connect("com.kylin.statusmanager.interface", "/", "com.kylin.statusmanager.interface", "mode_change_signal", this, SLOT(tabletPcSwitch(bool))); //监听托盘应用注册 m_watcher = new StatusNotifierWatcher; connect(m_watcher, &StatusNotifierWatcher::StatusNotifierItemRegistered, this, &StatusNotiferScrollArea::itemAdded); connect(m_watcher, &StatusNotifierWatcher::StatusNotifierItemUnregistered, this, &StatusNotiferScrollArea::itemRemoved); //设置滚动区域属性 this->setWidgetResizable(true); this->setAttribute(Qt::WA_TranslucentBackground); this->setProperty("drawScrollBarGroove",false); this->verticalScrollBar()->setProperty("drawScrollBarGroove",false); this->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); this->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); this->verticalScrollBar()->setVisible(false); this->setFrameShape(QFrame::NoFrame); this->setAlignment(Qt::AlignRight); this->setContentsMargins(0,0,0,0); //滚动区域背景透明 QPalette pal = this->palette(); pal.setBrush(QPalette::Window, QColor(Qt::transparent)); this->setPalette(pal); //最外层窗口布局 m_outWidget = new QWidget(this); m_outWidget->setContentsMargins(0,0,0,0); m_outLayout = new QGridLayout(m_outWidget); m_outLayout->setContentsMargins(0,0,0,0); m_outLayout->setSpacing(0); m_outWidget->setLayout(m_outLayout); this->setWidget(m_outWidget); //托盘窗口和布局 m_statusNotifierWidget = new QWidget(this); m_arrowBtn = new StatusNotifierStorageArrow(m_plugin, m_statusNotifierWidget); connect(m_arrowBtn,SIGNAL(addButton(StatusNotifierButtonAbstract*,StatusNotifierButtonAbstract*)), this,SLOT(arrowbtnAddButton(StatusNotifierButtonAbstract*,StatusNotifierButtonAbstract*))); m_layout = new UKUi::GridLayout(m_statusNotifierWidget); m_layout->setDirection(UKUi::GridLayout::LeftToRight); m_layout->setContentsMargins(0, 0, 0, 0); m_statusNotifierWidget->setLayout(m_layout); m_layout->addWidget(m_arrowBtn); //托盘区固定应用窗口和布局 m_statusNotifierFixedWidget = new QWidget(this); m_statusNotifierFixedWidget->setAcceptDrops(false); m_layoutFix = new UKUi::GridLayout(m_statusNotifierFixedWidget); m_layoutFix->setDirection(UKUi::GridLayout::LeftToRight); m_layoutFix->setContentsMargins(0, 0, 0, 0); m_statusNotifierFixedWidget->setLayout(m_layoutFix); //监听托盘图标隐藏 const QByteArray id(UKUI_PANEL_SETTINGS); if(QGSettings::isSchemaInstalled(id)) { m_gsettings = new QGSettings(id); connect(m_gsettings, &QGSettings::changed, this, [=] (const QString &key) { if(key==SHOW_STATUSNOTIFIER_BUTTON) { exchangeHideAndShow(); } }); } } StatusNotiferScrollArea::~StatusNotiferScrollArea() { if(m_watcher) { delete(m_watcher); m_watcher = NULL; } if(m_gsettings) { delete(m_gsettings); m_gsettings = NULL; } } void StatusNotiferScrollArea::realign() { m_layout->setEnabled(false); m_layoutFix->setEnabled(false); m_outLayout->setEnabled(false); IUKUIPanel *panel = m_plugin->panel(); if (panel->isHorizontal()) { //更新托盘活动区大小 m_layout->setRowCount(panel->lineCount()); m_layout->setColumnCount(0); m_layout->setEnabled(true); int widgetWidth; if(m_gsettings && m_gsettings->get(SHOW_STATUSNOTIFIER_BUTTON).toBool()) { widgetWidth = (m_activeButtons.size()+1)*uint(panel->panelSize()*0.7); } else { widgetWidth = (m_activeButtons.size()-m_hideButtons.size()+1)*uint(panel->panelSize()*0.7); } m_statusNotifierWidget->setFixedSize(widgetWidth, panel->panelSize()); int margins = panel->panelSize()*0.15; m_statusNotifierWidget->setContentsMargins(0,margins,0,margins); //更新托盘固定区大小 m_layoutFix->setRowCount(panel->lineCount()); m_layoutFix->setColumnCount(0); m_layoutFix->setEnabled(true); int fixedWidgetWidth; fixedWidgetWidth = (m_fixedButtons.size())*uint(panel->panelSize()*0.7); m_statusNotifierFixedWidget->setFixedSize(fixedWidgetWidth, panel->panelSize()); m_statusNotifierFixedWidget->setContentsMargins(0,margins,0,margins); //更新外层大窗口大小和布局 m_outLayout->setAlignment(Qt::AlignRight); m_outLayout->addWidget(m_statusNotifierWidget,0,0); m_outLayout->addWidget(m_statusNotifierFixedWidget,0,1); m_outLayout->setEnabled(true); m_outWidget->setFixedSize(widgetWidth+fixedWidgetWidth, panel->panelSize()); if((widgetWidth+fixedWidgetWidth) > QGuiApplication::primaryScreen()->geometry().width()/3) { //托盘区超过屏幕宽度1/3,超出量不到一个图标宽度的,正常显示,否则托盘显示区为屏幕宽度1/3 if(widgetWidth+fixedWidgetWidth-QGuiApplication::primaryScreen()->geometry().width()/3 < uint(panel->panelSize()*0.7)) { this->setFixedSize(widgetWidth+fixedWidgetWidth, panel->panelSize()); } else { this->setFixedSize(QGuiApplication::primaryScreen()->geometry().width()/3, panel->panelSize()); } } else { this->setFixedSize(widgetWidth+fixedWidgetWidth, panel->panelSize()); } } else { //更新托盘活动区大小 m_layout->setColumnCount(panel->lineCount()); m_layout->setRowCount(0); m_layout->setEnabled(true); int heightWidth; if(m_gsettings && m_gsettings->get(SHOW_STATUSNOTIFIER_BUTTON).toBool()) { heightWidth = (m_activeButtons.size()+1)*uint(panel->panelSize()*0.7); } else { heightWidth = (m_activeButtons.size()-m_hideButtons.size()+1)*uint(panel->panelSize()*0.7); } m_statusNotifierWidget->setFixedSize(panel->panelSize(), heightWidth); int margins = panel->panelSize()*0.15; m_statusNotifierWidget->setContentsMargins(margins,0,margins,0); //更新托盘固定区大小 m_layoutFix->setColumnCount(panel->lineCount()); m_layoutFix->setRowCount(0); m_layoutFix->setEnabled(true); int fixedWidgetHeight; fixedWidgetHeight = (m_fixedButtons.size())*uint(panel->panelSize()*0.7); m_statusNotifierFixedWidget->setFixedSize(panel->panelSize(), fixedWidgetHeight); m_statusNotifierFixedWidget->setContentsMargins(margins,0,margins,0); //更新外层大窗口大小和布局 m_outLayout->setAlignment(Qt::AlignBottom); m_outLayout->addWidget(m_statusNotifierWidget,0,0); m_outLayout->addWidget(m_statusNotifierFixedWidget,1,0); m_outLayout->setEnabled(true); m_outWidget->setFixedSize(panel->panelSize(), heightWidth+fixedWidgetHeight); if((heightWidth+fixedWidgetHeight) > QGuiApplication::primaryScreen()->geometry().height()/3) { this->setFixedSize(panel->panelSize(), QGuiApplication::primaryScreen()->geometry().height()/3); } else { this->setFixedSize(panel->panelSize(), heightWidth+fixedWidgetHeight); } } } void StatusNotiferScrollArea::wheelEvent(QWheelEvent *event) { if(this->horizontalScrollBarPolicy() == Qt::ScrollBarAlwaysOff) { if(event->delta() >= 0) { this->horizontalScrollBar()->setValue(horizontalScrollBar()->value()-40); } else { this->horizontalScrollBar()->setValue(horizontalScrollBar()->value()+40); } } if(this->verticalScrollBarPolicy() == Qt::ScrollBarAlwaysOff) { if(event->delta() >= 0) { this->verticalScrollBar()->setValue(verticalScrollBar()->value()-40); } else { this->verticalScrollBar()->setValue(verticalScrollBar()->value()+40); } } } void StatusNotiferScrollArea::itemAdded(QString serviceAndPath) { //判断DISPLAY if(serviceAndPath.contains("org.kde.StatusNotifierItem")) { if(QGuiApplication::platformName() == "xcb") { QString envDisplay = getenv("DISPLAY"); QStringList strList = serviceAndPath.split("-"); QString displayNum = getDisplayId(strList.at(1)); if(envDisplay != displayNum) { qInfo()<<"XCB environment: The application("<setFoldState(m_gsettings ? (!m_gsettings->get(SHOW_STATUSNOTIFIER_BUTTON).toBool()) : false); m_services.insert(serviceAndPath, button); connect(button, SIGNAL(switchButtons(StatusNotifierButtonAbstract*,StatusNotifierButtonAbstract*)), this, SLOT(switchButtons(StatusNotifierButtonAbstract*,StatusNotifierButtonAbstract*))); connect(button,&StatusNotifierButton::layoutUpdate,this,[=]() { resetLayout(); }); qInfo()<<"All current item services :"<m_iconStatus && !button->m_id.isEmpty()) { //Icon和ID都准备好后再加入布局 QStringList fixedAppList = readFixedAppSettings(); if(fixedAppList.contains(button->m_id)) { m_statusNotifierFixedButtons.append(button); } else { m_statusNotifierButtons.append(button); } qInfo()<m_id<<" button to add layout"; resetLayout(); } }); } void StatusNotiferScrollArea::itemRemoved(const QString &serviceAndPath) { StatusNotifierButton *button = m_services.value(serviceAndPath, NULL); if (button) { disconnect(button,&StatusNotifierButton::layoutReady,0,0); if(m_statusNotifierButtons.contains(button)) { m_statusNotifierButtons.removeOne(button); m_layoutButtons.remove(button->m_id); m_activeButtons.remove(button->m_id); m_layout->removeWidget(button); } else if(m_statusNotifierFixedButtons.contains(button)) { m_statusNotifierFixedButtons.removeOne(button); m_fixedButtons.remove(button->m_id); m_layoutFix->removeWidget(button); } m_services.remove(serviceAndPath); resetLayout(); button->deleteLater(); } } void StatusNotiferScrollArea::resetLayout() { //更新托盘活动区布局 QStringList show=readSettings().at(0); show.removeAll(""); QStringList hide=readSettings().at(1); hide.removeAll(""); QStringList fixed=readFixedAppSettings(); fixed.removeAll(""); m_activeButtons.clear(); m_layoutButtons.clear(); for(int i=0;im_id,m_statusNotifierButtons.at(i)); if(m_statusNotifierButtons.at(i)->isVisible()) { m_activeButtons.insert(m_statusNotifierButtons.at(i)->m_id,m_statusNotifierButtons.at(i)); if((!show.contains(m_statusNotifierButtons.at(i)->m_id))&&(!hide.contains(m_statusNotifierButtons.at(i)->m_id)) &&(!fixed.contains(m_statusNotifierButtons.at(i)->m_id))) { if(m_statusNotifierButtons.at(i)->m_id=="") { continue; } hide.append(m_statusNotifierButtons.at(i)->m_id); qCritical()<<"config change resetLayout:id tooltoptitle:" <m_id <m_toolTipTitle; saveSettings("",m_statusNotifierButtons.at(i)->m_id); continue; } } } else { qDebug()<<"m_statusNotifierButtons add error : "<setVisible(m_gsettings ? m_gsettings->get(SHOW_STATUSNOTIFIER_BUTTON).toBool() : false); m_activeButtons.value(hide.at(i))->setActionArea(STORAGE); m_layout->addWidget(m_activeButtons.value(hide.at(i))); m_hideButtons.insert(hide.at(i),m_activeButtons.value(hide.at(i))); } } m_layout->addWidget(m_arrowBtn); m_showButtons.clear(); for(int i=0;isetActionArea(SHOW); m_layout->addWidget(m_activeButtons.value(show.at(i))); m_showButtons.insert(show.at(i),m_activeButtons.value(show.at(i))); } } } m_layout->setEnabled(true); //更新托盘固定区布局 for(int i=0;im_id,m_statusNotifierFixedButtons.at(i)); } } for(int i=0;isetAcceptDrops(false); m_fixedButtons.value(fixed.at(i))->setVisible(true); m_fixedButtons.value(fixed.at(i))->setActionArea(FIXED); m_layoutFix->addWidget(m_fixedButtons.value(fixed.at(i))); } } realign(); } void StatusNotiferScrollArea::switchButtons(StatusNotifierButtonAbstract *srcButton, StatusNotifierButtonAbstract *dstButton) { if (srcButton == dstButton) return; int srcIndex = m_layout->indexOf(srcButton); int dstIndex = m_layout->indexOf(dstButton); if (dstIndex == srcIndex || m_layout->animatedMoveInProgress()) { return; } StatusNotifierButton *src_item = nullptr; StatusNotifierButton *dst_item = nullptr; StatusNotifierStorageArrow *dst_arrow = nullptr; if(dstButton->getTypeName() == "Item") { dst_item = qobject_cast(dstButton); } else if(dstButton->getTypeName() == "StorageArrow") { exchangeHideAndShow(); dst_arrow = qobject_cast(dstButton); } if(srcButton->getTypeName() == "Item") { src_item = qobject_cast(srcButton); } m_layout->moveItem(srcIndex, dstIndex, true); if(dst_arrow) { saveSettings(src_item->m_id,QString()); } else { saveSettings(src_item->m_id,dst_item->m_id); } } void StatusNotiferScrollArea::saveSettings(QString button1,QString button2) { PluginSettings *settings=m_plugin->settings(); QStringList showApp=settings->value("showApp").toStringList(); QStringList hideApp=settings->value("hideApp").toStringList(); if(button2==NULL) { if(showApp.contains(button1)) { showApp.removeAll(button1); hideApp.append(button1); } else if(hideApp.contains(button1)) { hideApp.removeAll(button1); showApp.insert(0,button1); } settings->setValue("showApp",showApp); settings->setValue("hideApp",hideApp); return; } if(button1==NULL) { if(!button2.isNull()) { hideApp.append(button2); hideApp.removeAll(""); settings->setValue("hideApp",hideApp); return; } } if(showApp.contains(button1)&&showApp.contains(button2)) { showApp.move(showApp.indexOf(button1), showApp.indexOf(button2)); settings->setValue("showApp",showApp); } if(showApp.contains(button1)&&hideApp.contains(button2)) { hideApp.insert(hideApp.indexOf(button2),button1); showApp.removeAll(button1); settings->setValue("showApp",showApp); settings->setValue("hideApp",hideApp); } if(hideApp.contains(button1)&&showApp.contains(button2)) { showApp.insert(showApp.indexOf(button2),button1); hideApp.removeAll(button1); settings->setValue("showApp",showApp); settings->setValue("hideApp",hideApp); } if(hideApp.contains(button1)&&hideApp.contains(button2)) { hideApp.move(hideApp.indexOf(button1), hideApp.indexOf(button2)); settings->setValue("hideApp",hideApp); } resetLayout(); } QList StatusNotiferScrollArea::readSettings() { PluginSettings *settings=m_plugin->settings(); QStringList showApp=settings->value("showApp").toStringList(); QStringList hideApp=settings->value("hideApp").toStringList(); QList list; list.append(showApp); list.append(hideApp); return list; } QStringList StatusNotiferScrollArea::readFixedAppSettings() { PluginSettings *settings = m_plugin->settings(); QStringList fixedApp = settings->value("fixedApp").toStringList(); return fixedApp; } void StatusNotiferScrollArea::exchangeHideAndShow() { QMap hideButtons; QStringList hide=readSettings().at(1); hide.removeAll(""); for(int i=0;i::const_iterator i; for(i=hideButtons.constBegin();i!=hideButtons.constEnd();++i) { if(i.value()->getStatus()!=PASSIVE) { bool status = m_gsettings ? m_gsettings->get(SHOW_STATUSNOTIFIER_BUTTON).toBool() : false; i.value()->setVisible(status); } } bool status = m_gsettings ? m_gsettings->get(SHOW_STATUSNOTIFIER_BUTTON).toBool() : false; for(int i=0;isetFoldState(!status); } resetLayout(); } void StatusNotiferScrollArea::arrowbtnAddButton(StatusNotifierButtonAbstract *srcButton, StatusNotifierButtonAbstract *dstButton) { if (srcButton == dstButton) return; int srcIndex = m_layout->indexOf(srcButton); int dstIndex = m_layout->indexOf(dstButton); if (dstIndex == srcIndex || m_layout->animatedMoveInProgress()) { return; } switchButtons(srcButton,dstButton); resetLayout(); } QString StatusNotiferScrollArea::getDisplayId(QString pid) { //从 /proc/$pid/environ 中获取 DISPLAY 字段信息,此方案不适用于wayland QString environPath = "/proc/" + pid + "/environ"; QFile envFile(environPath); if(envFile.open(QIODevice::ReadOnly)) { QByteArray array = envFile.readAll(); array.replace('\0','#'); QStringList list = QString(array).split("#"); for(int i=0; i * Paulo Lieuthier * * This program or library is free software; you can redistribute it * and/or modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General * Public License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA * * END_COMMON_COPYRIGHT_HEADER */ #ifndef STATUSNOTIFIER_PLUGIN_H #define STATUSNOTIFIER_PLUGIN_H #include "../panel/iukuipanelplugin.h" #include "statusnotiferscrollarea.h" class StatusNotifier : public QObject, public IUKUIPanelPlugin { Q_OBJECT public: StatusNotifier(const IUKUIPanelPluginStartupInfo &startupInfo); bool isSeparate() const { return true; } void realign(); QString themeId() const { return "StatusNotifier"; } virtual Flags flags() const { return SingleInstance | NeedsHandle; } QWidget *widget() { if(m_scrollArea) return m_scrollArea; else return nullptr; } private: StatusNotiferScrollArea *m_scrollArea; }; class StatusNotifierLibrary : public QObject, public IUKUIPanelPluginLibrary { Q_OBJECT Q_PLUGIN_METADATA(IID "ukui.org/Panel/PluginInterface/3.0") Q_INTERFACES(IUKUIPanelPluginLibrary) public: IUKUIPanelPlugin *instance(const IUKUIPanelPluginStartupInfo &startupInfo) const { return new StatusNotifier(startupInfo); } }; #endif // STATUSNOTIFIER_PLUGIN_H ukui-panel-4.0.0.4/plugin-statusnotifier/statusnotifier_storagearrow.h0000644000175000017500000000520014560306203024755 0ustar fengfeng/* * Copyright (C) 2019 Tianjin KYLIN Information Technology Co., Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see #include #include #include "statusnotifierwidget.h" #include "statusnotifierbuttonabstract.h" #define UKUI_PANEL_SETTINGS "org.ukui.panel.settings" #define SHOW_STATUSNOTIFIER_BUTTON "statusnotifierbutton" #define PANEL_POSITION_KEY "panelposition" #define ORG_UKUI_STYLE "org.ukui.style" #define STYLE_NAME "styleName" class StatusNotifierWidget; class StatusNotifierStorageArrow : public StatusNotifierButtonAbstract { Q_OBJECT public: StatusNotifierStorageArrow(IUKUIPanelPlugin* plugin, QWidget *parent = nullptr); ~StatusNotifierStorageArrow(); QString getTypeName() override {return QString("StorageArrow");} protected: void mousePressEvent(QMouseEvent *event); void mouseReleaseEvent(QMouseEvent *event); void mouseMoveEvent(QMouseEvent *event); void dropEvent(QDropEvent *event); void dragEnterEvent(QDragEnterEvent *event); void dragLeaveEvent(QDragLeaveEvent *event); void resizeEvent(QResizeEvent *event); void paintEvent(QPaintEvent *event); private: void setArrowIcon(); void systemThemeChanges(); void setHoverBtnProperty(); void setPressBtnProperty(); private: QGSettings *m_gsettings = nullptr; QWidget *m_parent; int m_panelPosition; IUKUIPanelPlugin* m_plugin; QGSettings *m_themeSettings = nullptr; const qreal m_blackHoverBtnAlphaF = 0.1; //深色主题下按钮悬停和按下透明度 const qreal m_blackPressBtnAlphaF = 0.05; const qreal m_lightHoverBtnAlphaF = 0.05; //浅色主题下按钮悬停和按下透明度 const qreal m_lightPressBtnAlphaF = 0.1; signals: void addButton(StatusNotifierButtonAbstract *from, StatusNotifierButtonAbstract *to); void switchButtons(StatusNotifierButtonAbstract *from, StatusNotifierButtonAbstract *to); }; #endif // STATUSNOTIFIERSTORAGEARROW_H ukui-panel-4.0.0.4/plugin-statusnotifier/statusnotifieriteminterface.cpp0000644000175000017500000000353714560306203025264 0ustar fengfeng/* BEGIN_COMMON_COPYRIGHT_HEADER * (c)LGPL2+ * * LXQt - a lightweight, Qt based, desktop toolset * https://lxqt.org * * Copyright: 2015 LXQt team * Authors: * Balázs Béla * Paulo Lieuthier * * This program or library is free software; you can redistribute it * and/or modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General * Public License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA * * END_COMMON_COPYRIGHT_HEADER */ /* * This file was generated by qdbusxml2cpp version 0.8 * Command line was: qdbusxml2cpp -c StatusNotifierItemInterface -p statusnotifieriteminterface -i dbustypes.h dbus-ifaces/org.kde.StatusNotifierItem.xml * * qdbusxml2cpp is Copyright (C) 2015 The Qt Company Ltd. * * This is an auto-generated file. * This file may have been hand-edited. Look for HAND-EDIT comments * before re-generating it. */ #include "statusnotifieriteminterface.h" /* * Implementation of interface class StatusNotifierItemInterface */ StatusNotifierItemInterface::StatusNotifierItemInterface(const QString &service, const QString &path, const QDBusConnection &connection, QObject *parent) : QDBusAbstractInterface(service, path, staticInterfaceName(), connection, parent) { } StatusNotifierItemInterface::~StatusNotifierItemInterface() { } ukui-panel-4.0.0.4/plugin-statusnotifier/sniasync.cpp0000644000175000017500000000412614560306203021263 0ustar fengfeng/* BEGIN_COMMON_COPYRIGHT_HEADER * (c)LGPL2+ * * LXQt - a lightweight, Qt based, desktop toolset * https://lxqt.org * * Copyright: 2015 LXQt team * Authors: * Palo Kisa * * This program or library is free software; you can redistribute it * and/or modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General * Public License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA * * END_COMMON_COPYRIGHT_HEADER */ #include "sniasync.h" SniAsync::SniAsync(const QString &service, const QString &path, const QDBusConnection &connection, QObject *parent/* = 0*/) : QObject(parent) , mSni{service, path, connection} { //forward StatusNotifierItem signals connect(&mSni, &org::kde::StatusNotifierItem::NewAttentionIcon, this, &SniAsync::NewAttentionIcon); connect(&mSni, &org::kde::StatusNotifierItem::NewIcon, this, &SniAsync::NewIcon); connect(&mSni, &org::kde::StatusNotifierItem::NewOverlayIcon, this, &SniAsync::NewOverlayIcon); connect(&mSni, &org::kde::StatusNotifierItem::NewStatus, this, &SniAsync::NewStatus); connect(&mSni, &org::kde::StatusNotifierItem::NewTitle, this, &SniAsync::NewTitle); connect(&mSni, &org::kde::StatusNotifierItem::NewToolTip, this, &SniAsync::NewToolTip); } QDBusPendingReply SniAsync::asyncPropGet(QString const & property) { QDBusMessage msg = QDBusMessage::createMethodCall(mSni.service(), mSni.path(), QLatin1String("org.freedesktop.DBus.Properties"), QLatin1String("Get")); msg << mSni.interface() << property; return mSni.connection().asyncCall(msg); } ukui-panel-4.0.0.4/plugin-statusnotifier/statusnotifieriteminterface.h0000644000175000017500000001373414560306203024731 0ustar fengfeng/* BEGIN_COMMON_COPYRIGHT_HEADER * (c)LGPL2+ * * LXQt - a lightweight, Qt based, desktop toolset * https://lxqt.org * * Copyright: 2015 LXQt team * Authors: * Balázs Béla * Paulo Lieuthier * * This program or library is free software; you can redistribute it * and/or modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General * Public License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA * * END_COMMON_COPYRIGHT_HEADER */ /* * This file was generated by qdbusxml2cpp version 0.8 * Command line was: qdbusxml2cpp -c StatusNotifierItemInterface -p statusnotifieriteminterface -i dbustypes.h dbus-ifaces/org.kde.StatusNotifierItem.xml * * qdbusxml2cpp is Copyright (C) 2015 The Qt Company Ltd. * * This is an auto-generated file. * Do not edit! All changes made to it will be lost. */ #ifndef STATUSNOTIFIERITEMINTERFACE_H #define STATUSNOTIFIERITEMINTERFACE_H #include #include #include #include #include #include #include #include #include "dbustypes.h" /* * Proxy class for interface org.kde.StatusNotifierItem */ class StatusNotifierItemInterface: public QDBusAbstractInterface { Q_OBJECT public: static inline const char *staticInterfaceName() { return "org.kde.StatusNotifierItem"; } public: StatusNotifierItemInterface(const QString &service, const QString &path, const QDBusConnection &connection, QObject *parent = 0); ~StatusNotifierItemInterface(); Q_PROPERTY(QString AttentionIconName READ attentionIconName) inline QString attentionIconName() const { return qvariant_cast< QString >(property("AttentionIconName")); } Q_PROPERTY(IconPixmapList AttentionIconPixmap READ attentionIconPixmap) inline IconPixmapList attentionIconPixmap() const { return qvariant_cast< IconPixmapList >(property("AttentionIconPixmap")); } Q_PROPERTY(QString AttentionMovieName READ attentionMovieName) inline QString attentionMovieName() const { return qvariant_cast< QString >(property("AttentionMovieName")); } Q_PROPERTY(QString Category READ category) inline QString category() const { return qvariant_cast< QString >(property("Category")); } Q_PROPERTY(QString IconName READ iconName) inline QString iconName() const { return qvariant_cast< QString >(property("IconName")); } Q_PROPERTY(IconPixmapList IconPixmap READ iconPixmap) inline IconPixmapList iconPixmap() const { return qvariant_cast< IconPixmapList >(property("IconPixmap")); } Q_PROPERTY(QString IconThemePath READ iconThemePath) inline QString iconThemePath() const { return qvariant_cast< QString >(property("IconThemePath")); } Q_PROPERTY(QString Id READ id) inline QString id() const { return qvariant_cast< QString >(property("Id")); } Q_PROPERTY(bool ItemIsMenu READ itemIsMenu) inline bool itemIsMenu() const { return qvariant_cast< bool >(property("ItemIsMenu")); } Q_PROPERTY(QDBusObjectPath Menu READ menu) inline QDBusObjectPath menu() const { return qvariant_cast< QDBusObjectPath >(property("Menu")); } Q_PROPERTY(QString OverlayIconName READ overlayIconName) inline QString overlayIconName() const { return qvariant_cast< QString >(property("OverlayIconName")); } Q_PROPERTY(IconPixmapList OverlayIconPixmap READ overlayIconPixmap) inline IconPixmapList overlayIconPixmap() const { return qvariant_cast< IconPixmapList >(property("OverlayIconPixmap")); } Q_PROPERTY(QString Status READ status) inline QString status() const { return qvariant_cast< QString >(property("Status")); } Q_PROPERTY(QString Title READ title) inline QString title() const { return qvariant_cast< QString >(property("Title")); } Q_PROPERTY(ToolTip ToolTip READ toolTip) inline ToolTip toolTip() const { return qvariant_cast< ToolTip >(property("ToolTip")); } Q_PROPERTY(int WindowId READ windowId) inline int windowId() const { return qvariant_cast< int >(property("WindowId")); } public Q_SLOTS: // METHODS inline QDBusPendingReply<> Activate(int x, int y) { QList argumentList; argumentList << QVariant::fromValue(x) << QVariant::fromValue(y); return asyncCallWithArgumentList(QLatin1String("Activate"), argumentList); } inline QDBusPendingReply<> ContextMenu(int x, int y) { QList argumentList; argumentList << QVariant::fromValue(x) << QVariant::fromValue(y); return asyncCallWithArgumentList(QLatin1String("ContextMenu"), argumentList); } inline QDBusPendingReply<> Scroll(int delta, const QString &orientation) { QList argumentList; argumentList << QVariant::fromValue(delta) << QVariant::fromValue(orientation); return asyncCallWithArgumentList(QLatin1String("Scroll"), argumentList); } inline QDBusPendingReply<> SecondaryActivate(int x, int y) { QList argumentList; argumentList << QVariant::fromValue(x) << QVariant::fromValue(y); return asyncCallWithArgumentList(QLatin1String("SecondaryActivate"), argumentList); } Q_SIGNALS: // SIGNALS void NewAttentionIcon(); void NewIcon(); void NewOverlayIcon(); void NewStatus(const QString &status); void NewTitle(); void NewToolTip(); }; namespace org { namespace kde { typedef ::StatusNotifierItemInterface StatusNotifierItem; } } #endif ukui-panel-4.0.0.4/plugin-statusnotifier/statusnotifierbuttonabstract.cpp0000644000175000017500000000160314560306221025474 0ustar fengfeng/* * Copyright (C) 2022, KylinSoft Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * Authors: Nicole * */ #include "statusnotifierbuttonabstract.h" StatusNotifierButtonAbstract::StatusNotifierButtonAbstract(QWidget *parent): QToolButton(parent) { } ukui-panel-4.0.0.4/plugin-statusnotifier/sniasync.h0000644000175000017500000001061314560306203020726 0ustar fengfeng/* BEGIN_COMMON_COPYRIGHT_HEADER * (c)LGPL2+ * * LXQt - a lightweight, Qt based, desktop toolset * https://lxqt.org * * Copyright: 2015 LXQt team * Authors: * Palo Kisa * * This program or library is free software; you can redistribute it * and/or modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General * Public License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA * * END_COMMON_COPYRIGHT_HEADER */ #if !defined(SNIASYNC_H) #define SNIASYNC_H #include #include "statusnotifieriteminterface.h" template struct remove_class_type { using type = void; }; // bluff template struct remove_class_type { using type = R(ArgTypes...); }; template struct remove_class_type { using type = R(ArgTypes...); }; template class call_sig_helper { template static decltype(&L1::operator()) test(int); template static void test(...); //bluff public: using type = decltype(test(0)); }; template struct call_signature : public remove_class_type::type> {}; template struct call_signature { using type = R (ArgTypes...); }; template struct call_signature { using type = R (ArgTypes...); }; template struct call_signature { using type = R (ArgTypes...); }; template struct call_signature { using type = R(ArgTypes...); }; template struct is_valid_signature : public std::false_type {}; template struct is_valid_signature : public std::true_type {}; class SniAsync : public QObject { Q_OBJECT public: SniAsync(const QString &service, const QString &path, const QDBusConnection &connection, QObject *parent = 0); template inline void propertyGetAsync(QString const &name, F finished) { static_assert(is_valid_signature::type>::value, "need callable (lambda, *function, callable obj) (Arg) -> void"); connect(new QDBusPendingCallWatcher{asyncPropGet(name), this}, &QDBusPendingCallWatcher::finished, [this, finished, name] (QDBusPendingCallWatcher * call) { QDBusPendingReply reply = *call; // if (reply.isError()) // qDebug() << "Error on DBus request:" << reply.error(); finished(qdbus_cast::type>::argument_type>(reply.value())); call->deleteLater(); } ); } //exposed methods from org::kde::StatusNotifierItem inline QString service() const { return mSni.service(); } public slots: //Forwarded slots from org::kde::StatusNotifierItem inline QDBusPendingReply<> Activate(int x, int y) { return mSni.Activate(x, y); } inline QDBusPendingReply<> ContextMenu(int x, int y) { return mSni.ContextMenu(x, y); } inline QDBusPendingReply<> Scroll(int delta, const QString &orientation) { return mSni.Scroll(delta, orientation); } inline QDBusPendingReply<> SecondaryActivate(int x, int y) { return mSni.SecondaryActivate(x, y); } signals: //Forwarded signals from org::kde::StatusNotifierItem void NewAttentionIcon(); void NewIcon(); void NewOverlayIcon(); void NewStatus(const QString &status); void NewTitle(); void NewToolTip(); private: QDBusPendingReply asyncPropGet(QString const & property); private: org::kde::StatusNotifierItem mSni; }; #endif ukui-panel-4.0.0.4/plugin-statusnotifier/statusnotifierwidget.h0000644000175000017500000000520714560306203023371 0ustar fengfeng/* BEGIN_COMMON_COPYRIGHT_HEADER * (c)LGPL2+ * * LXQt - a lightweight, Qt based, desktop toolset * https://lxqt.org * * Copyright: 2015 LXQt team * Authors: * Balázs Béla * Paulo Lieuthier * * This program or library is free software; you can redistribute it * and/or modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General * Public License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA * * END_COMMON_COPYRIGHT_HEADER */ #ifndef STATUSNOTIFIERWIDGET_H #define STATUSNOTIFIERWIDGET_H #include #include #include #include #include "../panel/common/ukuigridlayout.h" #include "../panel/iukuipanelplugin.h" #include "../panel/common/ukuisettings.h" #include "../panel/pluginsettings.h" #include "statusnotifierbutton.h" #include "statusnotifierwatcher.h" #include "statusnotifier_storagearrow.h" class StatusNotifierStorageArrow; class StatusNotifierWidget : public QWidget { Q_OBJECT public: StatusNotifierWidget(IUKUIPanelPlugin *plugin, QWidget *parent = 0); ~StatusNotifierWidget(); public: bool Direction; signals: public slots: void itemAdded(QString serviceAndPath); void itemRemoved(const QString &serviceAndPath); void realign(); private: UKUi::GridLayout *mLayout; IUKUIPanelPlugin *mPlugin; StatusNotifierWatcher *mWatcher; QHash mServices; QMap m_ShowButtons; QMap m_HideButtons; QMap m_AllButtons; QList mStatusNotifierButtons; StatusNotifierStorageArrow *mBtn; QGSettings *gsettings; QTimer *time; int timecount; bool mRealign; private: void saveSettings(QString button1,QString button2); QList readSettings(); void resetLayout(); void exchangeHideAndShow(); private slots: void switchButtons(StatusNotifierButton *button1, StatusNotifierButton *button2); void btnAddButton(QString button); }; #endif // STATUSNOTIFIERWIDGET_H ukui-panel-4.0.0.4/plugin-statusnotifier/statusnotifierwidget.cpp0000644000175000017500000002601314560306203023722 0ustar fengfeng/* BEGIN_COMMON_COPYRIGHT_HEADER * (c)LGPL2+ * * LXQt - a lightweight, Qt based, desktop toolset * https://lxqt.org * * Copyright: 2015 LXQt team * Authors: * Balázs Béla * Paulo Lieuthier * * This program or library is free software; you can redistribute it * and/or modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General * Public License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA * * END_COMMON_COPYRIGHT_HEADER */ #include "statusnotifierwidget.h" #include #include #include #include "../panel/iukuipanelplugin.h" #include "../panel/customstyle.h" #define UKUI_PANEL_SETTINGS "org.ukui.panel.settings" #define SHOW_STATUSNOTIFIER_BUTTON "statusnotifierbutton" #define CONFIG_FILE_BACKUP "/usr/share/ukui/panel.conf" StatusNotifierWidget::StatusNotifierWidget(IUKUIPanelPlugin *plugin, QWidget *parent) : QWidget(parent), mPlugin(plugin) { //检查配置文件是否完整 QSettings backup_qsettings(CONFIG_FILE_BACKUP,QSettings::IniFormat); QStringList showAppBackup = backup_qsettings.value("statusnotifier/showApp").toStringList(); QStringList hideAppBackup = backup_qsettings.value("statusnotifier/hideApp").toStringList(); QString alignmentBackup = backup_qsettings.value("statusnotifier/alignment").toString(); PluginSettings *settings=mPlugin->settings(); // ~/.config/ukui/panel.conf QStringList allkeys = settings->allKeys(); if(!allkeys.contains("showApp")) { settings->setValue("showApp",showAppBackup); } if(!allkeys.contains("hideApp")) { settings->setValue("hideApp",hideAppBackup); } if(!allkeys.contains("alignment")) { settings->setValue("alignment",alignmentBackup); } mWatcher = new StatusNotifierWatcher; connect(mWatcher, &StatusNotifierWatcher::StatusNotifierItemRegistered, this, &StatusNotifierWidget::itemAdded); connect(mWatcher, &StatusNotifierWatcher::StatusNotifierItemUnregistered, this, &StatusNotifierWidget::itemRemoved); mBtn = new StatusNotifierStorageArrow(mPlugin, this); connect(mBtn,SIGNAL(addButton(QString)),this,SLOT(btnAddButton(QString))); mLayout = new UKUi::GridLayout(this); setLayout(mLayout); mLayout->addWidget(mBtn); const QByteArray id(UKUI_PANEL_SETTINGS); if(QGSettings::isSchemaInstalled(id)) gsettings = new QGSettings(id); connect(gsettings, &QGSettings::changed, this, [=] (const QString &key){ if(key==SHOW_STATUSNOTIFIER_BUTTON){ exchangeHideAndShow(); } }); qDebug() << mWatcher->RegisteredStatusNotifierItems(); } StatusNotifierWidget::~StatusNotifierWidget() { delete mWatcher; } void StatusNotifierWidget::itemAdded(QString serviceAndPath) { int slash = serviceAndPath.indexOf('/'); QString serv = serviceAndPath.left(slash); QString path = serviceAndPath.mid(slash); StatusNotifierButton *button = new StatusNotifierButton(serv, path, mPlugin, this); mServices.insert(serviceAndPath, button); connect(button, SIGNAL(switchButtons(StatusNotifierButton*,StatusNotifierButton*)), this, SLOT(switchButtons(StatusNotifierButton*,StatusNotifierButton*))); connect(button,&StatusNotifierButton::layoutReady,this,[=](){ if(button->m_iconStatus && !button->mId.isEmpty()) { //Icon和ID都准备好后再加入布局 mStatusNotifierButtons.append(button); resetLayout(); } }); } void StatusNotifierWidget::itemRemoved(const QString &serviceAndPath) { StatusNotifierButton *button = mServices.value(serviceAndPath, NULL); if (button) { disconnect(button,&StatusNotifierButton::layoutReady,0,0); mStatusNotifierButtons.removeOne(button); mLayout->removeWidget(button); if(m_ShowButtons.keys().contains(button->mId)){ m_ShowButtons.remove(button->mId); } if(m_HideButtons.keys().contains(button->mId)){ m_HideButtons.remove(button->mId); } mServices.remove(serviceAndPath); m_AllButtons.remove(button->mId); resetLayout(); button->deleteLater(); } } void StatusNotifierWidget::realign() { UKUi::GridLayout *layout = qobject_cast(mLayout); layout->setEnabled(false); layout->setDirection(UKUi::GridLayout::LeftToRight); IUKUIPanel *panel = mPlugin->panel(); if (panel->isHorizontal()) { layout->setRowCount(panel->lineCount()); layout->setColumnCount(0); int margins = panel->panelSize()*0.15; this->setContentsMargins(margins,margins,margins,margins); } else { layout->setColumnCount(panel->lineCount()); layout->setRowCount(0); int margins = panel->panelSize()*0.15; this->setContentsMargins(margins,margins,margins,margins); } Direction=panel->isHorizontal(); layout->setEnabled(true); } void StatusNotifierWidget::resetLayout(){ QStringList show=readSettings().at(0); show.removeAll(""); QStringList hide=readSettings().at(1); hide.removeAll(""); for(int i=0;imId,mStatusNotifierButtons.at(i)); if((!show.contains(mStatusNotifierButtons.at(i)->mId))&&(!hide.contains(mStatusNotifierButtons.at(i)->mId))){ if(mStatusNotifierButtons.at(i)->mId==""){ continue; } hide.append(mStatusNotifierButtons.at(i)->mId); qCritical()<<"config change resetLayout:id tooltoptitle:" <mId <m_toolTipTitle; saveSettings("",mStatusNotifierButtons.at(i)->mId); continue; } } else{ qDebug()<<"mStatusNotifierButtons add error : "<setVisible(gsettings->get(SHOW_STATUSNOTIFIER_BUTTON).toBool()); mLayout->addWidget(m_AllButtons.value(hide.at(i))); m_HideButtons.insert(hide.at(i),m_AllButtons.value(hide.at(i))); } } mLayout->addWidget(mBtn); for(int i=0;iaddWidget(m_AllButtons.value(show.at(i))); m_ShowButtons.insert(show.at(i),m_AllButtons.value(show.at(i))); } } } mLayout->setEnabled(true); } void StatusNotifierWidget::switchButtons(StatusNotifierButton *button1, StatusNotifierButton *button2) { if (button1 == button2) return; int n1 = mLayout->indexOf(button1); int n2 = mLayout->indexOf(button2); int l = qMin(n1, n2); int m = qMax(n1, n2); mLayout->moveItem(l, m); mLayout->moveItem(m-1, l); if(!(m_HideButtons.keys().contains(button1->mId)&&m_HideButtons.keys().contains(button2->mId))){ m_HideButtons.remove(button1->mId); } if(!(m_ShowButtons.keys().contains(button1->mId)&&m_ShowButtons.keys().contains(button2->mId))){ m_ShowButtons.remove(button1->mId); } qCritical()<<"config change resetLayout:id1 tooltoptitle1:" <mId<m_toolTipTitle <<"id2 tooltoptitle2:"<mId<m_toolTipTitle; saveSettings(button1->mId,button2->mId); resetLayout(); } void StatusNotifierWidget::saveSettings(QString button1,QString button2){ PluginSettings *settings=mPlugin->settings(); QStringList showApp=settings->value("showApp").toStringList(); QStringList hideApp=settings->value("hideApp").toStringList(); if(button2==NULL){ if(m_HideButtons.keys().contains(button1)){ m_HideButtons.remove(button1); } if(m_ShowButtons.keys().contains(button1)){ m_ShowButtons.remove(button1); } if(m_HideButtons.keys().isEmpty()){ hideApp.append(button1); if(showApp.contains(button1)){ showApp.removeAll(button1); } } if(m_ShowButtons.keys().isEmpty()){ showApp.append(button1); if(hideApp.contains(button1)){ hideApp.removeAll(button1); } } settings->setValue("showApp",showApp); settings->setValue("hideApp",hideApp); return; } if(button1==NULL){ if(!button2.isNull()){ hideApp.append(button2); hideApp.removeAll(""); settings->setValue("hideApp",hideApp); return; } } if(showApp.contains(button1)&&showApp.contains(button2)){ int tep=showApp.indexOf(button1); showApp.replace(showApp.indexOf(button2),button1); showApp.replace(tep,button2); settings->setValue("showApp",showApp); } if(showApp.contains(button1)&&hideApp.contains(button2)){ hideApp.insert(hideApp.indexOf(button2),button1); showApp.removeAll(button1); settings->setValue("showApp",showApp); settings->setValue("hideApp",hideApp); } if(hideApp.contains(button1)&&showApp.contains(button2)){ showApp.insert(showApp.indexOf(button2),button1); hideApp.removeAll(button1); settings->setValue("showApp",showApp); settings->setValue("hideApp",hideApp); } if(hideApp.contains(button1)&&hideApp.contains(button2)){ int tep=hideApp.indexOf(button1); hideApp.replace(hideApp.indexOf(button2),button1); hideApp.replace(tep,button2); settings->setValue("hideApp",hideApp); } } QList StatusNotifierWidget::readSettings(){ PluginSettings *settings=mPlugin->settings(); QStringList showApp=settings->value("showApp").toStringList(); QStringList hideApp=settings->value("hideApp").toStringList(); QList list; list.append(showApp); list.append(hideApp); return list; } void StatusNotifierWidget::exchangeHideAndShow(){ QMap::const_iterator i; for(i=m_HideButtons.constBegin();i!=m_HideButtons.constEnd();++i){ i.value()->setVisible(gsettings->get(SHOW_STATUSNOTIFIER_BUTTON).toBool()); } } void StatusNotifierWidget::btnAddButton(QString button){ saveSettings(button,""); resetLayout(); } ukui-panel-4.0.0.4/plugin-statusnotifier/resources/0000755000175000017500000000000014560306203020737 5ustar fengfengukui-panel-4.0.0.4/plugin-statusnotifier/resources/statusnotifier.desktop.in0000644000175000017500000000020514560306203026017 0ustar fengfeng[Desktop Entry] Type=Service ServiceTypes=UKUIPanel/Plugin Name=Status Notifier Plugin Comment=Status Notifier Plugin Icon=go-bottom ukui-panel-4.0.0.4/plugin-statusnotifier/.org.kde.StatusNotifierItem.xml.swp0000644000175000017500000003000014560306203025460 0ustar fengfengb0VIM 8.1O%[_U,-kylinkylin-QiTianM425-N000~kylin/panel/hpy/v101/ukui-panel-1/plugin-statusnotifier/org.kde.StatusNotifierItem.xml 3210#"! UtpEadAqEqj:9h1 R  t / F c   z y \ , gYX= |nmH:9yqp ukui-panel-4.0.0.4/plugin-statusnotifier/statusnotifierwatcher_interface.cpp0000644000175000017500000000161214560306203026112 0ustar fengfeng/* * This file was generated by qdbusxml2cpp version 0.8 * Command line was: qdbusxml2cpp -m -c OrgKdeStatusNotifierWatcherInterface -i systemtraytypedefs.h -p statusnotifierwatcher_interface kf5_org.kde.StatusNotifierWatcher.xml * * qdbusxml2cpp is Copyright (C) 2020 The Qt Company Ltd. * * This is an auto-generated file. * This file may have been hand-edited. Look for HAND-EDIT comments * before re-generating it. */ #include "statusnotifierwatcher_interface.h" /* * Implementation of interface class OrgKdeStatusNotifierWatcherInterface */ OrgKdeStatusNotifierWatcherInterface::OrgKdeStatusNotifierWatcherInterface(const QString &service, const QString &path, const QDBusConnection &connection, QObject *parent) : QDBusAbstractInterface(service, path, staticInterfaceName(), connection, parent) { } OrgKdeStatusNotifierWatcherInterface::~OrgKdeStatusNotifierWatcherInterface() { } ukui-panel-4.0.0.4/plugin-statusnotifier/statusnotifierbuttonabstract.h0000644000175000017500000000222414560306221025141 0ustar fengfeng/* * Copyright (C) 2022, KylinSoft Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * Authors: Nicole * */ #ifndef STATUSNOTIFIERBUTTONABSTRACT_H #define STATUSNOTIFIERBUTTONABSTRACT_H #include #include #include #include #include "../panel/iukuipanelplugin.h" class StatusNotifierButtonAbstract : public QToolButton { Q_OBJECT public: StatusNotifierButtonAbstract(QWidget *parent = 0); virtual QString getTypeName() = 0; }; #endif // STATUSNOTIFIERBUTTONABSTRACT_H ukui-panel-4.0.0.4/plugin-statusnotifier/statusnotifierwatcher_interface.h0000644000175000017500000000532514560306203025564 0ustar fengfeng/* * This file was generated by qdbusxml2cpp version 0.8 * Command line was: qdbusxml2cpp -m -c OrgKdeStatusNotifierWatcherInterface -i systemtraytypedefs.h -p statusnotifierwatcher_interface kf5_org.kde.StatusNotifierWatcher.xml * * qdbusxml2cpp is Copyright (C) 2020 The Qt Company Ltd. * * This is an auto-generated file. * Do not edit! All changes made to it will be lost. */ #ifndef STATUSNOTIFIERWATCHER_INTERFACE_H #define STATUSNOTIFIERWATCHER_INTERFACE_H #include #include #include #include #include #include #include #include #include "systemtraytypedefs.h" /* * Proxy class for interface org.kde.StatusNotifierWatcher */ class OrgKdeStatusNotifierWatcherInterface: public QDBusAbstractInterface { Q_OBJECT public: static inline const char *staticInterfaceName() { return "org.kde.StatusNotifierWatcher"; } public: OrgKdeStatusNotifierWatcherInterface(const QString &service, const QString &path, const QDBusConnection &connection, QObject *parent = nullptr); ~OrgKdeStatusNotifierWatcherInterface(); Q_PROPERTY(bool IsStatusNotifierHostRegistered READ isStatusNotifierHostRegistered) inline bool isStatusNotifierHostRegistered() const { return qvariant_cast< bool >(property("IsStatusNotifierHostRegistered")); } Q_PROPERTY(int ProtocolVersion READ protocolVersion) inline int protocolVersion() const { return qvariant_cast< int >(property("ProtocolVersion")); } Q_PROPERTY(QStringList RegisteredStatusNotifierItems READ registeredStatusNotifierItems) inline QStringList registeredStatusNotifierItems() const { return qvariant_cast< QStringList >(property("RegisteredStatusNotifierItems")); } public Q_SLOTS: // METHODS inline QDBusPendingReply<> RegisterStatusNotifierHost(const QString &service) { QList argumentList; argumentList << QVariant::fromValue(service); return asyncCallWithArgumentList(QStringLiteral("RegisterStatusNotifierHost"), argumentList); } inline QDBusPendingReply<> RegisterStatusNotifierItem(const QString &service) { QList argumentList; argumentList << QVariant::fromValue(service); return asyncCallWithArgumentList(QStringLiteral("RegisterStatusNotifierItem"), argumentList); } Q_SIGNALS: // SIGNALS void StatusNotifierHostRegistered(); void StatusNotifierHostUnregistered(); void StatusNotifierItemRegistered(const QString &in0); void StatusNotifierItemUnregistered(const QString &in0); }; namespace org { namespace kde { typedef ::OrgKdeStatusNotifierWatcherInterface StatusNotifierWatcher; } } #endif ukui-panel-4.0.0.4/plugin-statusnotifier/org.kde.StatusNotifierItem.xml0000644000175000017500000000461714560306203024611 0ustar fengfeng ukui-panel-4.0.0.4/plugin-statusnotifier/systemtraytypedefs.h0000755000175000017500000000365114560306203023076 0ustar fengfeng/*************************************************************************** * * * Copyright (C) 2009 Marco Martin * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA . * ***************************************************************************/ #ifndef SYSTEMTRAYTYPEDEFS_H #define SYSTEMTRAYTYPEDEFS_H #include #include #include struct KDbusImageStruct { int width; int height; QByteArray data; }; typedef QVector KDbusImageVector; struct KDbusToolTipStruct { QString icon; KDbusImageVector image; QString title; QString subTitle; }; Q_DECLARE_METATYPE(KDbusImageStruct) Q_DECLARE_METATYPE(KDbusImageVector) Q_DECLARE_METATYPE(KDbusToolTipStruct) #endif ukui-panel-4.0.0.4/plugin-statusnotifier/statusnotifier.cpp0000644000175000017500000000246314560306203022521 0ustar fengfeng/* BEGIN_COMMON_COPYRIGHT_HEADER * (c)LGPL2+ * * LXQt - a lightweight, Qt based, desktop toolset * https://lxqt.org * * Copyright: 2015 LXQt team * Authors: * Balázs Béla * Paulo Lieuthier * * This program or library is free software; you can redistribute it * and/or modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General * Public License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA * * END_COMMON_COPYRIGHT_HEADER */ #include "statusnotifier.h" StatusNotifier::StatusNotifier(const IUKUIPanelPluginStartupInfo &startupInfo) : QObject(), IUKUIPanelPlugin(startupInfo) { m_scrollArea = new StatusNotiferScrollArea(this); } void StatusNotifier::realign() { m_scrollArea->realign(); } ukui-panel-4.0.0.4/sni-daemon/0000755000175000017500000000000014560306203014400 5ustar fengfengukui-panel-4.0.0.4/sni-daemon/statusnotifieritem_interface.h0000644000175000017500000001270014560306203022533 0ustar fengfeng/* * Copyright (C) 2019 Tianjin KYLIN Information Technology Co., Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see #include #include #include #include #include #include #include #include "systemtraytypedefs.h" /* * Proxy class for interface org.kde.StatusNotifierItem */ class OrgKdeStatusNotifierItemInterface: public QDBusAbstractInterface { Q_OBJECT public: static inline const char *staticInterfaceName() { return "org.kde.StatusNotifierItem"; } public: OrgKdeStatusNotifierItemInterface(const QString &service, const QString &path, const QDBusConnection &connection, QObject *parent = nullptr); ~OrgKdeStatusNotifierItemInterface(); Q_PROPERTY(QString AttentionIconName READ attentionIconName) inline QString attentionIconName() const { return qvariant_cast< QString >(property("AttentionIconName")); } Q_PROPERTY(KDbusImageVector AttentionIconPixmap READ attentionIconPixmap) inline KDbusImageVector attentionIconPixmap() const { return qvariant_cast< KDbusImageVector >(property("AttentionIconPixmap")); } Q_PROPERTY(QString AttentionMovieName READ attentionMovieName) inline QString attentionMovieName() const { return qvariant_cast< QString >(property("AttentionMovieName")); } Q_PROPERTY(QString Category READ category) inline QString category() const { return qvariant_cast< QString >(property("Category")); } Q_PROPERTY(QString IconName READ iconName) inline QString iconName() const { return qvariant_cast< QString >(property("IconName")); } Q_PROPERTY(KDbusImageVector IconPixmap READ iconPixmap) inline KDbusImageVector iconPixmap() const { return qvariant_cast< KDbusImageVector >(property("IconPixmap")); } Q_PROPERTY(QString IconThemePath READ iconThemePath) inline QString iconThemePath() const { return qvariant_cast< QString >(property("IconThemePath")); } Q_PROPERTY(QString Id READ id) inline QString id() const { return qvariant_cast< QString >(property("Id")); } Q_PROPERTY(bool ItemIsMenu READ itemIsMenu) inline bool itemIsMenu() const { return qvariant_cast< bool >(property("ItemIsMenu")); } Q_PROPERTY(QDBusObjectPath Menu READ menu) inline QDBusObjectPath menu() const { return qvariant_cast< QDBusObjectPath >(property("Menu")); } Q_PROPERTY(QString OverlayIconName READ overlayIconName) inline QString overlayIconName() const { return qvariant_cast< QString >(property("OverlayIconName")); } Q_PROPERTY(KDbusImageVector OverlayIconPixmap READ overlayIconPixmap) inline KDbusImageVector overlayIconPixmap() const { return qvariant_cast< KDbusImageVector >(property("OverlayIconPixmap")); } Q_PROPERTY(QString Status READ status) inline QString status() const { return qvariant_cast< QString >(property("Status")); } Q_PROPERTY(QString Title READ title) inline QString title() const { return qvariant_cast< QString >(property("Title")); } Q_PROPERTY(KDbusToolTipStruct ToolTip READ toolTip) inline KDbusToolTipStruct toolTip() const { return qvariant_cast< KDbusToolTipStruct >(property("ToolTip")); } Q_PROPERTY(int WindowId READ windowId) inline int windowId() const { return qvariant_cast< int >(property("WindowId")); } public Q_SLOTS: // METHODS inline QDBusPendingReply<> Activate(int x, int y) { QList argumentList; argumentList << QVariant::fromValue(x) << QVariant::fromValue(y); return asyncCallWithArgumentList(QStringLiteral("Activate"), argumentList); } inline QDBusPendingReply<> ContextMenu(int x, int y) { QList argumentList; argumentList << QVariant::fromValue(x) << QVariant::fromValue(y); return asyncCallWithArgumentList(QStringLiteral("ContextMenu"), argumentList); } inline QDBusPendingReply<> Scroll(int delta, const QString &orientation) { QList argumentList; argumentList << QVariant::fromValue(delta) << QVariant::fromValue(orientation); return asyncCallWithArgumentList(QStringLiteral("Scroll"), argumentList); } inline QDBusPendingReply<> SecondaryActivate(int x, int y) { QList argumentList; argumentList << QVariant::fromValue(x) << QVariant::fromValue(y); return asyncCallWithArgumentList(QStringLiteral("SecondaryActivate"), argumentList); } Q_SIGNALS: // SIGNALS void NewAttentionIcon(); void NewIcon(); void NewOverlayIcon(); void NewStatus(const QString &status); void NewTitle(); void NewToolTip(); }; namespace org { namespace kde { typedef ::OrgKdeStatusNotifierItemInterface StatusNotifierItem; } } #endif ukui-panel-4.0.0.4/sni-daemon/CMakeLists.txt0000644000175000017500000000146614560306203017147 0ustar fengfengcmake_minimum_required(VERSION 3.1.0) project(sni-daemon) set(CMAKE_INCLUDE_CURRENT_DIR ON) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) if(CMAKE_VERSION VERSION_LESS "3.7.0") set(CMAKE_INCLUDE_CURRENT_DIR ON) endif() find_package(Qt5 COMPONENTS Widgets Network DBus REQUIRED) find_package(PkgConfig REQUIRED) add_executable(sni-daemon main.cpp snidaemon.cpp statusnotifieritem_interface.cpp snidaemon.h statusnotifieritem_interface.h systemtraytypedefs.h ) target_link_libraries(sni-daemon Qt5::Widgets Qt5::DBus -lukui-log4qt ) add_definitions(-DQT_MESSAGELOGCONTEXT) install(TARGETS sni-daemon DESTINATION bin) install(FILES resources/sni-daemon.desktop DESTINATION "/etc/xdg/autostart/" COMPONENT Runtime ) ukui-panel-4.0.0.4/sni-daemon/snidaemon.cpp0000644000175000017500000001022014560306203017054 0ustar fengfeng/* * Copyright (C) 2019 Tianjin KYLIN Information Technology Co., Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see setConnection(dbus); m_serviceWatcher->setWatchMode(QDBusServiceWatcher::WatchForUnregistration); connect(m_serviceWatcher, &QDBusServiceWatcher::serviceUnregistered, this, &SniDaemon::serviceUnregistered); } SniDaemon::~SniDaemon() { QDBusConnection dbus = QDBusConnection::sessionBus(); dbus.unregisterService(QStringLiteral("org.kde.StatusNotifierWatcher")); } void SniDaemon::serviceUnregistered(const QString& name) { qDebug()<<"Service "<< name << "unregistered"; m_serviceWatcher->removeWatchedService(name); QString match = name + QLatin1Char('/'); QStringList::Iterator it = m_registeredServices.begin(); qDebug()<startsWith(match)) { QString name = *it; it = m_registeredServices.erase(it); emit StatusNotifierItemUnregistered(name); } else { ++it; } } if (m_statusNotifierHostServices.contains(name)) { m_statusNotifierHostServices.remove(name); emit StatusNotifierHostUnregistered(); } } void SniDaemon::RegisterStatusNotifierItem(const QString &serviceOrPath) { QString service; QString path; if (serviceOrPath.startsWith(QLatin1Char('/'))) { service = message().service(); path = serviceOrPath; } else { service = serviceOrPath; path = QStringLiteral("/StatusNotifierItem"); } QString notifierItemId = service + path; if (m_registeredServices.contains(notifierItemId)) { return; } m_serviceWatcher->addWatchedService(service); if (QDBusConnection::sessionBus().interface()->isServiceRegistered(service).value()) { //check if the service has registered a SystemTray object org::kde::StatusNotifierItem trayclient(service, path, QDBusConnection::sessionBus()); if (trayclient.isValid()) { qDebug() << "Registering" << notifierItemId << "to system tray"; m_registeredServices.append(notifierItemId); emit StatusNotifierItemRegistered(notifierItemId); } else { m_serviceWatcher->removeWatchedService(service); } } else { m_serviceWatcher->removeWatchedService(service); } } void SniDaemon::RegisterStatusNotifierHost(const QString &service) { if (service.contains(QLatin1String("org.kde.StatusNotifierHost-")) && QDBusConnection::sessionBus().interface()->isServiceRegistered(service).value() && !m_statusNotifierHostServices.contains(service)) { qDebug()<<"Registering"<addWatchedService(service); emit StatusNotifierHostRegistered(); } } QStringList SniDaemon::RegisteredStatusNotifierItems() const { return m_registeredServices; } bool SniDaemon::IsStatusNotifierHostRegistered() const { return !m_statusNotifierHostServices.isEmpty(); } int SniDaemon::ProtocolVersion() const { return 0; } ukui-panel-4.0.0.4/sni-daemon/resources/0000755000175000017500000000000014560306203016412 5ustar fengfengukui-panel-4.0.0.4/sni-daemon/resources/sni-daemon.desktop0000644000175000017500000000037414560306203022043 0ustar fengfeng[Desktop Entry] Name=sni-daemon Name[zh_CN]=sni后台服务 Comment=sni-daemon Comment[zh_CN]=sni后台服务 Exec=sni-daemon Terminal=false Type=Application OnlyShowIn=UKUI NoDisplay=true X-UKUI-AutoRestart=true X-UKUI-Autostart-Phase=Initialization ukui-panel-4.0.0.4/sni-daemon/main.cpp0000644000175000017500000000264514560306203016037 0ustar fengfeng/* * Copyright (C) 2019 Tianjin KYLIN Information Technology Co., Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see #include #include #include #include #include int main(int argc, char *argv[]) { initUkuiLog4qt("sni-daemon"); /*单例+vnc模式*/ QStringList homePath = QStandardPaths::standardLocations(QStandardPaths::HomeLocation); int fd = open(QString(homePath.at(0) + "/.config/sni-daemon.lock").toUtf8().data(), O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR); if (fd < 0) { exit(1); } if (lockf(fd, F_TLOCK, 0)) { syslog(LOG_ERR, "Can't lock single file, sni-daemon is already running!"); exit(0); } QApplication a(argc, argv); SniDaemon w; return a.exec(); } ukui-panel-4.0.0.4/sni-daemon/statusnotifieritem_interface.cpp0000644000175000017500000000223614560306203023071 0ustar fengfeng/* * Copyright (C) 2019 Tianjin KYLIN Information Technology Co., Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see #include #include struct KDbusImageStruct { int width; int height; QByteArray data; }; typedef QVector KDbusImageVector; struct KDbusToolTipStruct { QString icon; KDbusImageVector image; QString title; QString subTitle; }; Q_DECLARE_METATYPE(KDbusImageStruct) Q_DECLARE_METATYPE(KDbusImageVector) Q_DECLARE_METATYPE(KDbusToolTipStruct) #endif ukui-panel-4.0.0.4/sni-daemon/snidaemon.h0000644000175000017500000000374414560306203016536 0ustar fengfeng/* * Copyright (C) 2019 Tianjin KYLIN Information Technology Co., Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see #include #include class SniDaemon : public QObject, protected QDBusContext { Q_OBJECT Q_CLASSINFO("D-Bus Interface", "org.kde.StatusNotifierWatcher") Q_PROPERTY(QStringList RegisteredStatusNotifierItems READ RegisteredStatusNotifierItems) Q_PROPERTY(bool IsStatusNotifierHostRegistered READ IsStatusNotifierHostRegistered) Q_PROPERTY(int ProtocolVersion READ ProtocolVersion) public: SniDaemon(); ~SniDaemon(); QStringList RegisteredStatusNotifierItems() const; bool IsStatusNotifierHostRegistered() const; int ProtocolVersion() const; public Q_SLOTS: void RegisterStatusNotifierItem(const QString &service); void RegisterStatusNotifierHost(const QString &service); private: QDBusServiceWatcher *m_serviceWatcher = nullptr; QStringList m_registeredServices; QSet m_statusNotifierHostServices; Q_SIGNALS: void StatusNotifierItemRegistered(const QString &service); void StatusNotifierItemUnregistered(const QString &service); void StatusNotifierHostRegistered(); void StatusNotifierHostUnregistered(); protected Q_SLOTS: void serviceUnregistered(const QString& name); }; #endif // SNIDAEMON_H ukui-panel-4.0.0.4/CMakeLists.txt0000644000175000017500000001351414560306203015112 0ustar fengfengcmake_minimum_required(VERSION 3.1.0 FATAL_ERROR) project(ukui-panel) option(WITH_SCREENSAVER_FALLBACK "Include support for converting the deprecated 'screensaver' plugin to 'quicklaunch'. This requires the ukui-leave (ukui-session) to be installed in runtime." OFF) # additional cmake files set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake) macro(setByDefault VAR_NAME VAR_VALUE) if(NOT DEFINED ${VAR_NAME}) set (${VAR_NAME} ${VAR_VALUE}) endif(NOT DEFINED ${VAR_NAME}) endmacro() include(GNUInstallDirs) setByDefault(CUSTOM_QT_5_6_VERSION Yes) setByDefault(CUSTOM_QT_5_12_VERSION No) set(CMAKE_INCLUDE_CURRENT_DIR ON) set(CMAKE_POSITION_INDEPENDENT_CODE ON) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTOUIC ON) set(CMAKE_AUTORCC ON) set(KF5_MINIMUM_VERSION "5.18.0") set(QT_MINIMUM_VERSION "5.6.1") set(QTXDG_MINIMUM_VERSION "3.3.1") find_package(KF5WindowSystem ${KF5_MINIMUM_VERSION} REQUIRED) find_package(Qt5 ${QT_MINIMUM_VERSION} CONFIG REQUIRED Widgets Core Quick QuickWidgets DBus X11Extras LinguistTools Xml) find_package(Qt5Xdg ${QTXDG_MINIMUM_VERSION} REQUIRED) find_package(X11 REQUIRED) find_package(PkgConfig) pkg_check_modules(Gsetting REQUIRED gsettings-qt) include_directories(${Gsetting_INCLUDE_DIRS}) set(LIBRARIES ${Gsetting_LIBRARIES} -lukui-log4qt ) # Patch Version set(UKUI_VERSION 3.0) set(UKUI_PANEL_PATCH_VERSION 0) set(UKUI_MAJOR_VERSION 3) set(UKUI_MINOR_VERSION 0) #set(UKUI_TRANSLATIONS_DIR "${CMAKE_INSTALL_FULL_DATAROOTDIR}/ukui/translations/") set(UKUI_PANEL_VERSION ${UKUI_MAJOR_VERSION}.${UKUI_MINOR_VERSION}.${UKUI_PANEL_PATCH_VERSION}) add_definitions("-DUKUI_PANEL_VERSION=\"${UKUI_PANEL_VERSION}\"") include(./cmake/ukui-build-tools/modules/UKUiPreventInSourceBuilds.cmake) #include(./cmake/ukui-build-tools/modules/UKUiTranslate.cmake) # All UKUiCompilerSettings except CMAKE_MODULE_LINKER_FLAGS work just fine # So we reset only these Flags after loading UKUiCompilerSettings # ukui-build-tools: # set(CMAKE_MODULE_LINKER_FLAGS "-Wl,--no-undefined ${SYMBOLIC_FLAGS} ${CMAKE_MODULE_LINKER_FLAGS}") message(STATUS "==OLD== CMAKE_MODULE_LINKER_FLAGS: ${CMAKE_MODULE_LINKER_FLAGS}") set( OLD_CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS}") set(CMAKE_MODULE_LINKER_FLAGS "${OLD_CMAKE_MODULE_LINKER_FLAGS} ${SYMBOLIC_FLAGS}") # Warning: This must be before add_subdirectory(panel). Move with caution. set(PLUGIN_DIR "${CMAKE_INSTALL_FULL_LIBDIR}/ukui-panel") add_definitions( -DPLUGIN_DIR=\"${PLUGIN_DIR}\" ) #Add PACKAGE_DATA_DIR set(PACKAGE_DATA_DIR "/usr/share/ukui-panel") add_definitions( -DPACKAGE_DATA_DIR=\"${PACKAGE_DATA_DIR}\" -DQT_MESSAGELOGCONTEXT ) message(STATUS "CMAKE Module linker flags: ${CMAKE_MODULE_LINKER_FLAGS}") message(STATUS "Panel plugins location: ${PLUGIN_DIR}") ######################################################################### # Plugin system # You can enable/disable building of the plugin using cmake options. # cmake -DWORLDCLOCK_PLUGIN=Yes .. # Enable worldclock plugin # cmake -DWORLDCLOCK_PLUGIN=No .. # Disable worldclock plugin include("cmake/BuildPlugin.cmake") include(./cmake/ukui-build-tools/modules/UKUiTranslateDesktop.cmake) include(./cmake/ukui-build-tools/modules/UKUiTranslationLoader.cmake) set(ENABLED_PLUGINS) # list of enabled plugins set(STATIC_PLUGINS) # list of statically linked plugins setByDefault(QUICKLAUNCH_PLUGIN No) if(QUICKLAUNCH_PLUGIN) list(APPEND STATIC_PLUGINS "quicklaunch") add_definitions(-DWITH_QUICKLAUNCH_PLUGIN) list(APPEND ENABLED_PLUGINS "Quicklaunch") add_subdirectory(plugin-quicklaunch) endif() setByDefault(SHOWDESKTOP_PLUGIN Yes) if(SHOWDESKTOP_PLUGIN) list(APPEND ENABLED_PLUGINS "Show Desktop") add_subdirectory(plugin-showdesktop) endif() setByDefault(TASKBAR_PLUGIN Yes) if(TASKBAR_PLUGIN) list(APPEND ENABLED_PLUGINS "taskbar") add_subdirectory(plugin-taskbar) endif() add_subdirectory(panel-daemon) add_subdirectory(sni-daemon) add_subdirectory(sni-xembed-proxy) add_subdirectory(plugin-ukcc) setByDefault(STATUSNOTIFIER_PLUGIN Yes) if(STATUSNOTIFIER_PLUGIN) list(APPEND ENABLED_PLUGINS "statusnotifier") add_subdirectory(plugin-statusnotifier) endif() setByDefault(SPACER_PLUGIN Yes) if(SPACER_PLUGIN) list(APPEND STATIC_PLUGINS "spacer") add_definitions(-DWITH_SPACER_PLUGIN) list(APPEND ENABLED_PLUGINS "Spacer") add_subdirectory(plugin-spacer) endif() setByDefault(CALENDAR_PLUGIN Yes) if(CALENDAR_PLUGIN) list(APPEND ENABLED_PLUGINS "calendar") add_subdirectory(plugin-calendar) endif(CALENDAR_PLUGIN) setByDefault(STARTBAR_PLUGIN Yes) if(STARTBAR_PLUGIN) list(APPEND ENABLED_PLUGINS "startbar") add_subdirectory(plugin-startbar) endif(STARTBAR_PLUGIN) ######################################################################### message(STATUS "**************** The following plugins will be built ****************") foreach (PLUGIN_STR ${ENABLED_PLUGINS}) message(STATUS " ${PLUGIN_STR}") endforeach() message(STATUS "*********************************************************************") add_subdirectory(panel) file(GLOB_RECURSE QRC_SOURCE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.qrc) ## translation #set(UKUI_TRANSLATIONS_DIR ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_DATAROOTDIR}/ukui/) #add_definitions( # -DUKUI_TRANSLATIONS_DIR="${UKUI_TRANSLATIONS_DIR}" #) #if (NOT DEFINED UPDATE_TRANSLATIONS) # set(UPDATE_TRANSLATIONS "No") #endif() ## To create a new ts file: lupdate -recursive . -target-language zh_CN -ts panel/resources/ukui-panel_zh_CN.ts #file(GLOB TS_FILES "${CMAKE_CURRENT_SOURCE_DIR}/panel/resources/*.ts") ## cmake -DUPDATE_TRANSLATIONS=yes #if (UPDATE_TRANSLATIONS) # qt5_create_translation(QM_FILES ${CMAKE_SOURCE_DIR} ${TS_FILES}) #else() # qt5_add_translation(QM_FILES ${TS_FILES}) #endif() #add_custom_target(translations ALL DEPENDS ${QM_FILES}) #install(FILES ${QM_FILES} DESTINATION ${UKUI_TRANSLATIONS_DIR}) ukui-panel-4.0.0.4/plugin-calendar/0000755000175000017500000000000014576165151015427 5ustar fengfengukui-panel-4.0.0.4/plugin-calendar/calendarbuttontext.h0000644000175000017500000000363414560306221021504 0ustar fengfeng/* * Copyright (C) 2023, KylinSoft Co., Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see #include #include #include #include "../panel/iukuipanelplugin.h" #ifdef KDKSYSTIME_FOUND #include "kysdk/kysdk-system/libkydate.h" #endif class CalendarButtonText : public QObject { Q_OBJECT public: CalendarButtonText(IUKUIPanelPlugin *plugin,QPushButton *parent); ~CalendarButtonText(); enum DateStyle{YEAR_MON_DAY=0, MON_DAY}; public: QString getBtnText(); QString getEnUsBtnText(); QString getZhCnBtnText(); QString getOtherBtnText(); QString getToolTipText(); QString getEnUsToolTipText(); QString getZhCnToolTipText(); QString getBoCnToolTipText(); QString getOtherToolTipText(); private: QString getAmPm(); QString getTime(); QString getWeek(); QString getDate(DateStyle dateStyle); void updateFontSize(QString btnText); void setOptimalFont(QStringList textList, int btnMaxLength); QString getFormatsLocale(); public: QDateTime m_dataTime; QPushButton *m_parent; IUKUIPanelPlugin * m_plugin; QGSettings *m_timeFormat = nullptr; QGSettings *m_fontGsettings = nullptr; QGSettings *m_panelGsettings = nullptr; }; #endif // CALENDARBUTTONTEXT_H ukui-panel-4.0.0.4/plugin-calendar/calendar-button-bg.png0000644000175000017500000000172314560306203021574 0ustar fengfengPNG  IHDR22?tEXtSoftwareAdobe ImageReadyqe<!iTXtXML:com.adobe.xmp EHIDATx1 緅 $"""""""""""""""""""""""""""""""""""""7V#a)IENDB`ukui-panel-4.0.0.4/plugin-calendar/ukuicalendarplugin.h0000644000175000017500000000412114560306203021450 0ustar fengfeng/* * Copyright (C) 2019 Tianjin KYLIN Information Technology Co., Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see #include #include #include #include #include #include #include #include #include #include #include "../panel/ukuipanel.h" #include #include #include #include "ukuicalendarwidget.h" #include "../panel/common/ukuigridlayout.h" class StartBarLibrary; class UKUICalendarPlugin; class UKUICalendarPlugin: public QObject, public IUKUIPanelPlugin { Q_OBJECT public: explicit UKUICalendarPlugin(const IUKUIPanelPluginStartupInfo &startupInfo); ~UKUICalendarPlugin(); virtual QWidget *widget(); virtual QString themeId() const { return "Calendar"; } virtual Flags flags() const { return NeedsHandle; } void realign(); bool isSeparate() const { return true; } private: UKUICalendarWidget *m_widget; }; class CalendarLibrary: public QObject, public IUKUIPanelPluginLibrary { Q_OBJECT Q_PLUGIN_METADATA(IID "ukui.org/Panel/PluginInterface/3.0") Q_INTERFACES(IUKUIPanelPluginLibrary) public: IUKUIPanelPlugin *m_plugin; IUKUIPanelPlugin *instance(const IUKUIPanelPluginStartupInfo &startupInfo) const { return new UKUICalendarPlugin(startupInfo); } }; #endif // CALENDAR_H ukui-panel-4.0.0.4/plugin-calendar/ukuiwebviewdialog.ui0000644000175000017500000000055214560306203021502 0ustar fengfeng UkuiWebviewDialog 0 0 400 300 Dialog ukui-panel-4.0.0.4/plugin-calendar/ukuicalendarwidget.h0000644000175000017500000000347114560306203021444 0ustar fengfeng/* * Copyright (C) 2019 Tianjin KYLIN Information Technology Co., Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see #include #include #include #include #include "../panel/common/ukuigridlayout.h" #include "../panel/iukuipanelplugin.h" #include "../panel/common/ukuisettings.h" #include "../panel/pluginsettings.h" #include "../panel/ukuipanel.h" #include "../panel/common_fun/listengsettings.h" #include "lunarcalendarwidget/frmlunarcalendarwidget.h" #include "calendarbutton.h" #include "ukuiwebviewdialog.h" #include "lunarcalendarwidget/lunarcalendarwidget.h" extern UkuiWebviewDialogStatus status; class UKUICalendarWidget:public QWidget { Q_OBJECT public: UKUICalendarWidget(IUKUIPanelPlugin *plugin, QWidget* parent = 0); ~UKUICalendarWidget(); void realign(); void changeWidowpos(bool restore = false); private: void translator(); protected: private: IUKUIPanelPlugin *m_plugin; QWidget *m_parent; QHBoxLayout *m_layout; frmLunarCalendarWidget *m_frmLunarWidget; CalendarButton *m_calendarButton; LunarCalendarWidget *m_widget; }; #endif // CALENDARWIDGET_H ukui-panel-4.0.0.4/plugin-calendar/lunarcalendarwidget/0000755000175000017500000000000014560306221021432 5ustar fengfengukui-panel-4.0.0.4/plugin-calendar/lunarcalendarwidget/main.qrc0000644000175000017500000000023514560306203023065 0ustar fengfeng image/bg_calendar.png image/fontawesome-webfont.ttf ukui-panel-4.0.0.4/plugin-calendar/lunarcalendarwidget/frmlunarcalendarwidget.ui0000644000175000017500000001113014560306203026511 0ustar fengfeng frmLunarCalendarWidget 0 0 600 500 Form 0 0 0 0 0 0 整体样式 90 0 红色风格 选中样式 90 0 矩形背景 圆形背景 角标背景 图片背景 星期格式 90 0 短名称 普通名称 长名称 英文名称 显示农历 true Qt::Horizontal 40 20 LunarCalendarWidget QWidget
lunarcalendarwidget.h
1
ukui-panel-4.0.0.4/plugin-calendar/lunarcalendarwidget/lunarcalendarinfo.cpp0000644000175000017500000011734014560306203025633 0ustar fengfeng/* * Copyright (C) 2019 Tianjin KYLIN Information Technology Co., Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see #include #include #define year_2099 QScopedPointer LunarCalendarInfo::self; LunarCalendarInfo *LunarCalendarInfo::Instance() { if (self.isNull()) { static QMutex mutex; QMutexLocker locker(&mutex); if (self.isNull()) { self.reset(new LunarCalendarInfo); } } return self.data(); } LunarCalendarInfo::LunarCalendarInfo(QObject *parent) : QObject(parent) { //农历查表 lunarCalendarTable << 0x04AE53 << 0x0A5748 << 0x5526BD << 0x0D2650 << 0x0D9544 << 0x46AAB9 << 0x056A4D << 0x09AD42 << 0x24AEB6 << 0x04AE4A; //1901-1910 lunarCalendarTable << 0x6A4DBE << 0x0A4D52 << 0x0D2546 << 0x5D52BA << 0x0B544E << 0x0D6A43 << 0x296D37 << 0x095B4B << 0x749BC1 << 0x049754; //1911-1920 lunarCalendarTable << 0x0A4B48 << 0x5B25BC << 0x06A550 << 0x06D445 << 0x4ADAB8 << 0x02B64D << 0x095742 << 0x2497B7 << 0x04974A << 0x664B3E; //1921-1930 lunarCalendarTable << 0x0D4A51 << 0x0EA546 << 0x56D4BA << 0x05AD4E << 0x02B644 << 0x393738 << 0x092E4B << 0x7C96BF << 0x0C9553 << 0x0D4A48; //1931-1940 lunarCalendarTable << 0x6DA53B << 0x0B554F << 0x056A45 << 0x4AADB9 << 0x025D4D << 0x092D42 << 0x2C95B6 << 0x0A954A << 0x7B4ABD << 0x06CA51; //1941-1950 lunarCalendarTable << 0x0B5546 << 0x555ABB << 0x04DA4E << 0x0A5B43 << 0x352BB8 << 0x052B4C << 0x8A953F << 0x0E9552 << 0x06AA48 << 0x6AD53C; //1951-1960 lunarCalendarTable << 0x0AB54F << 0x04B645 << 0x4A5739 << 0x0A574D << 0x052642 << 0x3E9335 << 0x0D9549 << 0x75AABE << 0x056A51 << 0x096D46; //1961-1970 lunarCalendarTable << 0x54AEBB << 0x04AD4F << 0x0A4D43 << 0x4D26B7 << 0x0D254B << 0x8D52BF << 0x0B5452 << 0x0B6A47 << 0x696D3C << 0x095B50; //1971-1980 lunarCalendarTable << 0x049B45 << 0x4A4BB9 << 0x0A4B4D << 0xAB25C2 << 0x06A554 << 0x06D449 << 0x6ADA3D << 0x0AB651 << 0x093746 << 0x5497BB; //1981-1990 lunarCalendarTable << 0x04974F << 0x064B44 << 0x36A537 << 0x0EA54A << 0x86B2BF << 0x05AC53 << 0x0AB647 << 0x5936BC << 0x092E50 << 0x0C9645; //1991-2000 lunarCalendarTable << 0x4D4AB8 << 0x0D4A4C << 0x0DA541 << 0x25AAB6 << 0x056A49 << 0x7AADBD << 0x025D52 << 0x092D47 << 0x5C95BA << 0x0A954E; //2001-2010 lunarCalendarTable << 0x0B4A43 << 0x4B5537 << 0x0AD54A << 0x955ABF << 0x04BA53 << 0x0A5B48 << 0x652BBC << 0x052B50 << 0x0A9345 << 0x474AB9; //2011-2020 lunarCalendarTable << 0x06AA4C << 0x0AD541 << 0x24DAB6 << 0x04B64A << 0x69573D << 0x0A4E51 << 0x0D2646 << 0x5E933A << 0x0D534D << 0x05AA43; //2021-2030 lunarCalendarTable << 0x36B537 << 0x096D4B << 0xB4AEBF << 0x04AD53 << 0x0A4D48 << 0x6D25BC << 0x0D254F << 0x0D5244 << 0x5DAA38 << 0x0B5A4C; //2031-2040 lunarCalendarTable << 0x056D41 << 0x24ADB6 << 0x049B4A << 0x7A4BBE << 0x0A4B51 << 0x0AA546 << 0x5B52BA << 0x06D24E << 0x0ADA42 << 0x355B37; //2041-2050 lunarCalendarTable << 0x09374B << 0x8497C1 << 0x049753 << 0x064B48 << 0x66A53C << 0x0EA54F << 0x06B244 << 0x4AB638 << 0x0AAE4C << 0x092E42; //2051-2060 lunarCalendarTable << 0x3C9735 << 0x0C9649 << 0x7D4ABD << 0x0D4A51 << 0x0DA545 << 0x55AABA << 0x056A4E << 0x0A6D43 << 0x452EB7 << 0x052D4B; //2061-2070 lunarCalendarTable << 0x8A95BF << 0x0A9553 << 0x0B4A47 << 0x6B553B << 0x0AD54F << 0x055A45 << 0x4A5D38 << 0x0A5B4C << 0x052B42 << 0x3A93B6; //2071-2080 lunarCalendarTable << 0x069349 << 0x7729BD << 0x06AA51 << 0x0AD546 << 0x54DABA << 0x04B64E << 0x0A5743 << 0x452738 << 0x0D264A << 0x8E933E; //2081-2090 lunarCalendarTable << 0x0D5252 << 0x0DAA47 << 0x66B53B << 0x056D4F << 0x04AE45 << 0x4A4EB9 << 0x0A4D4C << 0x0D1541 << 0x2D92B5; //2091-2099 //每年春节对应的公历日期 springFestival << 130 << 217 << 206; // 1968 1969 1970 springFestival << 127 << 215 << 203 << 123 << 211 << 131 << 218 << 207 << 128 << 216; // 1971--1980 springFestival << 205 << 125 << 213 << 202 << 220 << 209 << 219 << 217 << 206 << 127; // 1981--1990 springFestival << 215 << 204 << 123 << 210 << 131 << 219 << 207 << 128 << 216 << 205; // 1991--2000 springFestival << 124 << 212 << 201 << 122 << 209 << 129 << 218 << 207 << 126 << 214; // 2001--2010 springFestival << 203 << 123 << 210 << 131 << 219 << 208 << 128 << 216 << 205 << 125; // 2011--2020 springFestival << 212 << 201 << 122 << 210 << 129 << 217 << 206 << 126 << 213 << 203; // 2021--2030 springFestival << 123 << 211 << 131 << 219 << 208 << 128 << 215 << 204 << 124 << 212; // 2031--2040 //16--18位表示闰几月 0--12位表示农历每月的数据 高位表示1月 低位表示12月(农历闰月就会多一个月) lunarData << 461653 << 1386 << 2413; // 1968 1969 1970 lunarData << 330077 << 1197 << 2637 << 268877 << 3365 << 531109 << 2900 << 2922 << 398042 << 2395; // 1971--1980 lunarData << 1179 << 267415 << 2635 << 661067 << 1701 << 1748 << 398772 << 2742 << 2391 << 330031; // 1981--1990 lunarData << 1175 << 1611 << 200010 << 3749 << 527717 << 1452 << 2742 << 332397 << 2350 << 3222; // 1991--2000 lunarData << 268949 << 3402 << 3493 << 133973 << 1386 << 464219 << 605 << 2349 << 334123 << 2709; // 2001--2010 lunarData << 2890 << 267946 << 2773 << 592565 << 1210 << 2651 << 395863 << 1323 << 2707 << 265877; // 2011--2020 lunarData << 1706 << 2773 << 133557 << 1206 << 398510 << 2638 << 3366 << 335142 << 3411 << 1450; // 2021--2030 lunarData << 200042 << 2413 << 723293 << 1197 << 2637 << 399947 << 3365 << 3410 << 334676 << 2906; // 2031--2040 //二十四节气表 chineseTwentyFourData << 0x95 << 0xB4 << 0x96 << 0xA5 << 0x96 << 0x97 << 0x88 << 0x78 << 0x78 << 0x69 << 0x78 << 0x87; // 1970 chineseTwentyFourData << 0x96 << 0xB4 << 0x96 << 0xA6 << 0x97 << 0x97 << 0x78 << 0x79 << 0x79 << 0x69 << 0x78 << 0x77; // 1971 chineseTwentyFourData << 0x96 << 0xA4 << 0xA5 << 0xA5 << 0xA6 << 0xA6 << 0x88 << 0x88 << 0x88 << 0x78 << 0x87 << 0x87; // 1972 chineseTwentyFourData << 0xA5 << 0xB5 << 0x96 << 0xA5 << 0xA6 << 0x96 << 0x88 << 0x78 << 0x78 << 0x78 << 0x87 << 0x87; // 1973 chineseTwentyFourData << 0x95 << 0xB4 << 0x96 << 0xA5 << 0x96 << 0x97 << 0x88 << 0x78 << 0x78 << 0x69 << 0x78 << 0x87; // 1974 chineseTwentyFourData << 0x96 << 0xB4 << 0x96 << 0xA6 << 0x97 << 0x97 << 0x78 << 0x79 << 0x78 << 0x69 << 0x78 << 0x77; // 1975 chineseTwentyFourData << 0x96 << 0xA4 << 0xA5 << 0xB5 << 0xA6 << 0xA6 << 0x88 << 0x89 << 0x88 << 0x78 << 0x87 << 0x87; // 1976 chineseTwentyFourData << 0xA5 << 0xB4 << 0x96 << 0xA5 << 0x96 << 0x96 << 0x88 << 0x88 << 0x78 << 0x78 << 0x87 << 0x87; // 1977 chineseTwentyFourData << 0x95 << 0xB4 << 0x96 << 0xA5 << 0x96 << 0x97 << 0x88 << 0x78 << 0x78 << 0x79 << 0x78 << 0x87; // 1978 chineseTwentyFourData << 0x96 << 0xB4 << 0x96 << 0xA6 << 0x96 << 0x97 << 0x78 << 0x79 << 0x78 << 0x69 << 0x78 << 0x77; // 1979 chineseTwentyFourData << 0x96 << 0xA4 << 0xA5 << 0xB5 << 0xA6 << 0xA6 << 0x88 << 0x88 << 0x88 << 0x78 << 0x87 << 0x87; // 1980 chineseTwentyFourData << 0xA5 << 0xB4 << 0x96 << 0xA5 << 0xA6 << 0x96 << 0x88 << 0x88 << 0x78 << 0x78 << 0x77 << 0x87; // 1981 chineseTwentyFourData << 0x95 << 0xB4 << 0x96 << 0xA5 << 0x96 << 0x97 << 0x88 << 0x78 << 0x78 << 0x79 << 0x77 << 0x87; // 1982 chineseTwentyFourData << 0x95 << 0xB4 << 0x96 << 0xA5 << 0x96 << 0x97 << 0x78 << 0x79 << 0x78 << 0x69 << 0x78 << 0x77; // 1983 chineseTwentyFourData << 0x96 << 0xB4 << 0xA5 << 0xB5 << 0xA6 << 0xA6 << 0x87 << 0x88 << 0x88 << 0x78 << 0x87 << 0x87; // 1984 chineseTwentyFourData << 0xA5 << 0xB4 << 0xA6 << 0xA5 << 0xA6 << 0x96 << 0x88 << 0x88 << 0x78 << 0x78 << 0x87 << 0x87; // 1985 chineseTwentyFourData << 0xA5 << 0xB4 << 0x96 << 0xA5 << 0x96 << 0x97 << 0x88 << 0x78 << 0x78 << 0x79 << 0x77 << 0x87; // 1986 chineseTwentyFourData << 0x95 << 0xB4 << 0x96 << 0xA5 << 0x96 << 0x97 << 0x88 << 0x79 << 0x78 << 0x69 << 0x78 << 0x87; // 1987 chineseTwentyFourData << 0x96 << 0xB4 << 0xA5 << 0xB5 << 0xA6 << 0xA6 << 0x87 << 0x88 << 0x88 << 0x78 << 0x87 << 0x86; // 1988 chineseTwentyFourData << 0xA5 << 0xB4 << 0xA5 << 0xA5 << 0xA6 << 0x96 << 0x88 << 0x88 << 0x88 << 0x78 << 0x87 << 0x87; // 1989 chineseTwentyFourData << 0xA5 << 0xB4 << 0x96 << 0xA5 << 0x96 << 0x96 << 0x88 << 0x78 << 0x78 << 0x79 << 0x77 << 0x87; // 1990 chineseTwentyFourData << 0x95 << 0xB4 << 0x96 << 0xA5 << 0x86 << 0x97 << 0x88 << 0x78 << 0x78 << 0x69 << 0x78 << 0x87; // 1991 chineseTwentyFourData << 0x96 << 0xB4 << 0xA5 << 0xB5 << 0xA6 << 0xA6 << 0x87 << 0x88 << 0x88 << 0x78 << 0x87 << 0x86; // 1992 chineseTwentyFourData << 0xA5 << 0xB3 << 0xA5 << 0xA5 << 0xA6 << 0x96 << 0x88 << 0x88 << 0x88 << 0x78 << 0x87 << 0x87; // 1993 chineseTwentyFourData << 0xA5 << 0xB4 << 0x96 << 0xA5 << 0x96 << 0x96 << 0x88 << 0x78 << 0x78 << 0x78 << 0x87 << 0x87; // 1994 chineseTwentyFourData << 0x95 << 0xB4 << 0x96 << 0xA5 << 0x96 << 0x97 << 0x88 << 0x76 << 0x78 << 0x69 << 0x78 << 0x87; // 1995 chineseTwentyFourData << 0x96 << 0xB4 << 0xA5 << 0xB5 << 0xA6 << 0xA6 << 0x87 << 0x88 << 0x88 << 0x78 << 0x87 << 0x86; // 1996 chineseTwentyFourData << 0xA5 << 0xB3 << 0xA5 << 0xA5 << 0xA6 << 0xA6 << 0x88 << 0x88 << 0x88 << 0x78 << 0x87 << 0x87; // 1997 chineseTwentyFourData << 0xA5 << 0xB4 << 0x96 << 0xA5 << 0x96 << 0x96 << 0x88 << 0x78 << 0x78 << 0x78 << 0x87 << 0x87; // 1998 chineseTwentyFourData << 0x95 << 0xB4 << 0x96 << 0xA5 << 0x96 << 0x97 << 0x88 << 0x78 << 0x78 << 0x69 << 0x78 << 0x87; // 1999 chineseTwentyFourData << 0x96 << 0xB4 << 0xA5 << 0xB5 << 0xA6 << 0xA6 << 0x87 << 0x88 << 0x88 << 0x78 << 0x87 << 0x86; // 2000 chineseTwentyFourData << 0xA5 << 0xB3 << 0xA5 << 0xA5 << 0xA6 << 0xA6 << 0x88 << 0x88 << 0x88 << 0x78 << 0x87 << 0x87; // 2001 chineseTwentyFourData << 0xA5 << 0xB4 << 0x96 << 0xA5 << 0x96 << 0x96 << 0x88 << 0x78 << 0x78 << 0x78 << 0x87 << 0x87; // 2002 chineseTwentyFourData << 0x95 << 0xB4 << 0x96 << 0xA5 << 0x96 << 0x97 << 0x88 << 0x78 << 0x78 << 0x69 << 0x78 << 0x87; // 2003 chineseTwentyFourData << 0x96 << 0xB4 << 0xA5 << 0xB5 << 0xA6 << 0xA6 << 0x87 << 0x88 << 0x88 << 0x78 << 0x87 << 0x86; // 2004 chineseTwentyFourData << 0xA5 << 0xB3 << 0xA5 << 0xA5 << 0xA6 << 0xA6 << 0x88 << 0x88 << 0x88 << 0x78 << 0x87 << 0x87; // 2005 chineseTwentyFourData << 0xA5 << 0xB4 << 0x96 << 0xA5 << 0xA6 << 0x96 << 0x88 << 0x88 << 0x78 << 0x78 << 0x87 << 0x87; // 2006 chineseTwentyFourData << 0x95 << 0xB4 << 0x96 << 0xA5 << 0x96 << 0x97 << 0x88 << 0x78 << 0x78 << 0x69 << 0x78 << 0x87; // 2007 chineseTwentyFourData << 0x96 << 0xB4 << 0xA5 << 0xB5 << 0xA6 << 0xA6 << 0x87 << 0x88 << 0x87 << 0x78 << 0x87 << 0x86; // 2008 chineseTwentyFourData << 0xA5 << 0xB3 << 0xA5 << 0xB5 << 0xA6 << 0xA6 << 0x88 << 0x88 << 0x88 << 0x78 << 0x87 << 0x87; // 2009 chineseTwentyFourData << 0xA5 << 0xB4 << 0x96 << 0xA5 << 0xA6 << 0x96 << 0x88 << 0x88 << 0x78 << 0x78 << 0x87 << 0x87; // 2010 chineseTwentyFourData << 0x95 << 0xB4 << 0x96 << 0xA5 << 0x96 << 0x97 << 0x88 << 0x78 << 0x78 << 0x79 << 0x78 << 0x87; // 2011 chineseTwentyFourData << 0x96 << 0xB4 << 0xA5 << 0xB5 << 0xA5 << 0xA6 << 0x87 << 0x88 << 0x87 << 0x78 << 0x87 << 0x86; // 2012 chineseTwentyFourData << 0xA5 << 0xB3 << 0xA5 << 0xB5 << 0xA6 << 0xA6 << 0x87 << 0x88 << 0x88 << 0x78 << 0x87 << 0x87; // 2013 chineseTwentyFourData << 0xA5 << 0xB4 << 0x96 << 0xA5 << 0xA6 << 0x96 << 0x88 << 0x88 << 0x78 << 0x78 << 0x87 << 0x87; // 2014 chineseTwentyFourData << 0x95 << 0xB4 << 0x96 << 0xA5 << 0x96 << 0x97 << 0x88 << 0x78 << 0x78 << 0x79 << 0x77 << 0x87; // 2015 chineseTwentyFourData << 0x95 << 0xB4 << 0xA5 << 0xB4 << 0xA5 << 0xA6 << 0x87 << 0x88 << 0x87 << 0x78 << 0x87 << 0x86; // 2016 chineseTwentyFourData << 0xA5 << 0xC3 << 0xA5 << 0xB5 << 0xA6 << 0xA6 << 0x87 << 0x88 << 0x88 << 0x78 << 0x87 << 0x87; // 2017 chineseTwentyFourData << 0xA5 << 0xB4 << 0xA6 << 0xA5 << 0xA6 << 0x96 << 0x88 << 0x88 << 0x78 << 0x78 << 0x87 << 0x87; // 2018 chineseTwentyFourData << 0xA5 << 0xB4 << 0x96 << 0xA5 << 0x96 << 0x96 << 0x88 << 0x78 << 0x78 << 0x79 << 0x77 << 0x87; // 2019 chineseTwentyFourData << 0x95 << 0xB4 << 0xA5 << 0xB4 << 0xA5 << 0xA6 << 0x97 << 0x87 << 0x87 << 0x78 << 0x87 << 0x86; // 2020 chineseTwentyFourData << 0xA5 << 0xC3 << 0xA5 << 0xB5 << 0xA6 << 0xA6 << 0x87 << 0x88 << 0x88 << 0x78 << 0x87 << 0x86; // 2021 chineseTwentyFourData << 0xA5 << 0xB4 << 0xA5 << 0xA5 << 0xA6 << 0x96 << 0x88 << 0x88 << 0x88 << 0x78 << 0x87 << 0x87; // 2022 chineseTwentyFourData << 0xA5 << 0xB4 << 0x96 << 0xA5 << 0x96 << 0x96 << 0x88 << 0x78 << 0x78 << 0x79 << 0x77 << 0x87; // 2023 chineseTwentyFourData << 0x95 << 0xB4 << 0xA5 << 0xB4 << 0xA5 << 0xA6 << 0x97 << 0x87 << 0x87 << 0x78 << 0x87 << 0x96; // 2024 chineseTwentyFourData << 0xA5 << 0xC3 << 0xA5 << 0xB5 << 0xA6 << 0xA6 << 0x87 << 0x88 << 0x88 << 0x78 << 0x87 << 0x86; // 2025 chineseTwentyFourData << 0xA5 << 0xB3 << 0xA5 << 0xA5 << 0xA6 << 0xA6 << 0x88 << 0x88 << 0x88 << 0x78 << 0x87 << 0x87; // 2026 chineseTwentyFourData << 0xA5 << 0xB4 << 0x96 << 0xA5 << 0x96 << 0x96 << 0x88 << 0x78 << 0x78 << 0x78 << 0x87 << 0x87; // 2027 chineseTwentyFourData << 0x95 << 0xB4 << 0xA5 << 0xB4 << 0xA5 << 0xA6 << 0x97 << 0x87 << 0x87 << 0x78 << 0x87 << 0x96; // 2028 chineseTwentyFourData << 0xA5 << 0xC3 << 0xA5 << 0xB5 << 0xA6 << 0xA6 << 0x87 << 0x88 << 0x88 << 0x78 << 0x87 << 0x86; // 2029 chineseTwentyFourData << 0xA5 << 0xB3 << 0xA5 << 0xA5 << 0xA6 << 0xA6 << 0x88 << 0x88 << 0x88 << 0x78 << 0x87 << 0x87; // 2030 chineseTwentyFourData << 0xA5 << 0xB4 << 0x96 << 0xA5 << 0x96 << 0x96 << 0x88 << 0x78 << 0x78 << 0x78 << 0x87 << 0x87; // 2031 chineseTwentyFourData << 0x95 << 0xB4 << 0xA5 << 0xB4 << 0xA5 << 0xA6 << 0x97 << 0x87 << 0x87 << 0x78 << 0x87 << 0x96; // 2032 chineseTwentyFourData << 0xA5 << 0xC3 << 0xA5 << 0xB5 << 0xA6 << 0xA6 << 0x88 << 0x88 << 0x88 << 0x78 << 0x87 << 0x86; // 2033 chineseTwentyFourData << 0xA5 << 0xB3 << 0xA5 << 0xA5 << 0xA6 << 0xA6 << 0x88 << 0x78 << 0x88 << 0x78 << 0x87 << 0x87; // 2034 chineseTwentyFourData << 0xA5 << 0xB4 << 0x96 << 0xA5 << 0xA6 << 0x96 << 0x88 << 0x88 << 0x78 << 0x78 << 0x87 << 0x87; // 2035 chineseTwentyFourData << 0x95 << 0xB4 << 0xA5 << 0xB4 << 0xA5 << 0xA6 << 0x97 << 0x87 << 0x87 << 0x78 << 0x87 << 0x96; // 2036 chineseTwentyFourData << 0xA5 << 0xC3 << 0xA5 << 0xB5 << 0xA6 << 0xA6 << 0x87 << 0x88 << 0x88 << 0x78 << 0x87 << 0x86; // 2037 chineseTwentyFourData << 0xA5 << 0xB3 << 0xA5 << 0xA5 << 0xA6 << 0xA6 << 0x88 << 0x88 << 0x88 << 0x78 << 0x87 << 0x87; // 2038 chineseTwentyFourData << 0xA5 << 0xB4 << 0x96 << 0xA5 << 0xA6 << 0x96 << 0x88 << 0x88 << 0x78 << 0x78 << 0x87 << 0x87; // 2039 chineseTwentyFourData << 0x95 << 0xB4 << 0x96 << 0xA5 << 0x96 << 0x97 << 0x88 << 0x78 << 0x78 << 0x69 << 0x78 << 0x87; // 2040 chineseTwentyFourData << 0xA5 << 0xC3 << 0xA5 << 0xB5 << 0xA5 << 0xA6 << 0x87 << 0x88 << 0x87 << 0x78 << 0x87 << 0x86; // 2041 chineseTwentyFourData << 0xA5 << 0xB3 << 0xA5 << 0xB5 << 0xA6 << 0xA6 << 0x88 << 0x88 << 0x88 << 0x78 << 0x87 << 0x87; // 2042 chineseTwentyFourData << 0xA5 << 0xB4 << 0x96 << 0xA5 << 0xA6 << 0x96 << 0x88 << 0x88 << 0x78 << 0x78 << 0x87 << 0x87; // 2043 chineseTwentyFourData << 0x95 << 0xB4 << 0x96 << 0xA5 << 0x96 << 0x97 << 0x88 << 0x78 << 0x78 << 0x79 << 0x78 << 0x87; // 2044 chineseTwentyFourData << 0xA5 << 0xC3 << 0xA5 << 0xB4 << 0xA5 << 0xA6 << 0x87 << 0x88 << 0x87 << 0x78 << 0x87 << 0x86; // 2045 chineseTwentyFourData << 0xA5 << 0xB3 << 0xA5 << 0xB5 << 0xA6 << 0xA6 << 0x87 << 0x88 << 0x88 << 0x78 << 0x87 << 0x87; // 2046 chineseTwentyFourData << 0xA5 << 0xB4 << 0x96 << 0xA5 << 0xA6 << 0x96 << 0x88 << 0x88 << 0x78 << 0x78 << 0x87 << 0x87; // 2047 chineseTwentyFourData << 0x95 << 0xB4 << 0x96 << 0xA5 << 0x96 << 0x96 << 0x88 << 0x78 << 0x78 << 0x79 << 0x77 << 0x87; // 2048 chineseTwentyFourData << 0xA4 << 0xC3 << 0xA5 << 0xB4 << 0xA5 << 0xA6 << 0x97 << 0x87 << 0x87 << 0x78 << 0x87 << 0x86; // 2049 chineseTwentyFourData << 0xA5 << 0xC3 << 0xA5 << 0xB5 << 0xA6 << 0xA6 << 0x87 << 0x88 << 0x88 << 0x78 << 0x87 << 0x87; // 2050 chineseTwentyFourData << 0xA5 << 0xB4 << 0xA5 << 0xA5 << 0xA6 << 0x96 << 0x88 << 0x88 << 0x88 << 0x78 << 0x87 << 0x87; // 2051 chineseTwentyFourData << 0xA5 << 0xB4 << 0x96 << 0xA5 << 0x96 << 0x96 << 0x88 << 0x78 << 0x78 << 0x79 << 0x77 << 0x87; // 2052 chineseTwentyFourData << 0xA4 << 0xC3 << 0xA5 << 0xB4 << 0xA5 << 0xA6 << 0x97 << 0x87 << 0x87 << 0x78 << 0x87 << 0x86; // 2053 chineseTwentyFourData << 0xA5 << 0xC3 << 0xA5 << 0xB5 << 0xA6 << 0xA6 << 0x87 << 0x88 << 0x88 << 0x78 << 0x87 << 0x87; // 2054 chineseTwentyFourData << 0xA5 << 0xB4 << 0xA5 << 0xA5 << 0xA6 << 0xA6 << 0x88 << 0x88 << 0x88 << 0x78 << 0x87 << 0x87; // 2055 chineseTwentyFourData << 0xA5 << 0xB4 << 0x96 << 0xA5 << 0x96 << 0x96 << 0x88 << 0x78 << 0x78 << 0x79 << 0x77 << 0x87; // 2056 chineseTwentyFourData << 0xA4 << 0xC3 << 0xA5 << 0xB4 << 0xA5 << 0xA6 << 0x97 << 0x87 << 0x87 << 0x78 << 0x87 << 0x96; // 2057 chineseTwentyFourData << 0xA5 << 0xC3 << 0xA5 << 0xB5 << 0xA6 << 0xA6 << 0x87 << 0x88 << 0x88 << 0x78 << 0x87 << 0x86; // 2058 chineseTwentyFourData << 0xA5 << 0xB4 << 0xA5 << 0xA5 << 0xA6 << 0xA6 << 0x88 << 0x88 << 0x88 << 0x78 << 0x87 << 0x87; // 2059 chineseTwentyFourData << 0xA5 << 0xB4 << 0x96 << 0xA5 << 0x96 << 0x96 << 0x88 << 0x78 << 0x78 << 0x78 << 0x87 << 0x87; // 2060 chineseTwentyFourData << 0xA4 << 0xC3 << 0xA5 << 0xB4 << 0xA5 << 0xA6 << 0x97 << 0x87 << 0x87 << 0x78 << 0x87 << 0x96; // 2061 chineseTwentyFourData << 0xA5 << 0xC3 << 0xA5 << 0xB5 << 0xA6 << 0xA6 << 0x87 << 0x88 << 0x88 << 0x78 << 0x87 << 0x86; // 2062 chineseTwentyFourData << 0xA5 << 0xB3 << 0xA5 << 0xA5 << 0xA6 << 0xA6 << 0x88 << 0x88 << 0x88 << 0x78 << 0x87 << 0x87; // 2063 chineseTwentyFourData << 0xA5 << 0xB4 << 0x96 << 0xA5 << 0x96 << 0x96 << 0x88 << 0x78 << 0x78 << 0x78 << 0x87 << 0x87; // 2064 chineseTwentyFourData << 0xA4 << 0xC3 << 0xA5 << 0xB4 << 0xA5 << 0xA6 << 0x97 << 0x87 << 0x87 << 0x78 << 0x87 << 0x96; // 2065 chineseTwentyFourData << 0xA5 << 0xC3 << 0xA5 << 0xB5 << 0xA6 << 0xA6 << 0x87 << 0x88 << 0x88 << 0x78 << 0x87 << 0x86; // 2066 chineseTwentyFourData << 0xA5 << 0xB3 << 0xA5 << 0xA5 << 0xA6 << 0xA6 << 0x88 << 0x88 << 0x88 << 0x78 << 0x87 << 0x87; // 2067 chineseTwentyFourData << 0xA5 << 0xB4 << 0x96 << 0xA5 << 0xA6 << 0x96 << 0x88 << 0x88 << 0x78 << 0x78 << 0x87 << 0x87; // 2068 chineseTwentyFourData << 0xA4 << 0xC3 << 0xA5 << 0xB4 << 0xA5 << 0xA6 << 0x97 << 0x87 << 0x87 << 0x78 << 0x87 << 0x96; // 2069 chineseTwentyFourData << 0xA5 << 0xC3 << 0xA5 << 0xB5 << 0xA5 << 0xA6 << 0x87 << 0x88 << 0x87 << 0x78 << 0x87 << 0x86; // 2070 chineseTwentyFourData << 0xA5 << 0xB3 << 0xA5 << 0xA5 << 0xA6 << 0xA6 << 0x88 << 0x88 << 0x88 << 0x78 << 0x87 << 0x87; // 2071 chineseTwentyFourData << 0xA5 << 0xB4 << 0x96 << 0xA5 << 0xA6 << 0x96 << 0x88 << 0x88 << 0x78 << 0x78 << 0x87 << 0x87; // 2072 chineseTwentyFourData << 0xA4 << 0xC3 << 0xA5 << 0xB4 << 0xA5 << 0xA6 << 0x97 << 0x87 << 0x87 << 0x88 << 0x87 << 0x96; // 2073 chineseTwentyFourData << 0xA5 << 0xC3 << 0xA5 << 0xB5 << 0xA5 << 0xA6 << 0x87 << 0x88 << 0x87 << 0x78 << 0x87 << 0x86; // 2074 chineseTwentyFourData << 0xA5 << 0xB3 << 0xA5 << 0xB5 << 0xA6 << 0xA6 << 0x87 << 0x88 << 0x88 << 0x78 << 0x87 << 0x87; // 2075 chineseTwentyFourData << 0xA5 << 0xB4 << 0x96 << 0xA5 << 0xA6 << 0x96 << 0x88 << 0x88 << 0x78 << 0x78 << 0x87 << 0x87; // 2076 chineseTwentyFourData << 0xA4 << 0xC3 << 0xA5 << 0xB4 << 0xA5 << 0xA6 << 0x97 << 0x87 << 0x87 << 0x88 << 0x87 << 0x96; // 2077 chineseTwentyFourData << 0xA5 << 0xC3 << 0xA5 << 0xB4 << 0xA5 << 0xA6 << 0x97 << 0x88 << 0x87 << 0x78 << 0x87 << 0x86; // 2078 chineseTwentyFourData << 0xA5 << 0xB3 << 0xA5 << 0xB5 << 0xA6 << 0xA6 << 0x87 << 0x88 << 0x88 << 0x78 << 0x87 << 0x87; // 2079 chineseTwentyFourData << 0xA5 << 0xB4 << 0x96 << 0xA5 << 0xA6 << 0x96 << 0x88 << 0x88 << 0x78 << 0x78 << 0x87 << 0x87; // 2080 chineseTwentyFourData << 0xA4 << 0xC3 << 0xA5 << 0xB4 << 0xA5 << 0xA5 << 0x97 << 0x87 << 0x87 << 0x88 << 0x86 << 0x96; // 2081 chineseTwentyFourData << 0xA5 << 0xC3 << 0xA5 << 0xB4 << 0xA5 << 0xA6 << 0x97 << 0x87 << 0x87 << 0x78 << 0x87 << 0x86; // 2082 chineseTwentyFourData << 0xA5 << 0xC3 << 0xA5 << 0xB5 << 0xA6 << 0xA6 << 0x87 << 0x88 << 0x88 << 0x78 << 0x87 << 0x87; // 2083 chineseTwentyFourData << 0xA5 << 0xB4 << 0xA6 << 0xA5 << 0xA6 << 0x96 << 0x88 << 0x88 << 0x88 << 0x78 << 0x87 << 0x87; // 2084 chineseTwentyFourData << 0xB4 << 0xC3 << 0xA5 << 0xB4 << 0xA5 << 0xA5 << 0x97 << 0x87 << 0x87 << 0x88 << 0x86 << 0x96; // 2085 chineseTwentyFourData << 0xA4 << 0xC3 << 0xA5 << 0xB4 << 0xA5 << 0xA6 << 0x97 << 0x87 << 0x87 << 0x78 << 0x87 << 0x86; // 2086 chineseTwentyFourData << 0xA5 << 0xC3 << 0xA5 << 0xB5 << 0xA6 << 0xA6 << 0x87 << 0x88 << 0x88 << 0x78 << 0x87 << 0x87; // 2087 chineseTwentyFourData << 0xA5 << 0xB4 << 0xA5 << 0xA5 << 0xA6 << 0xA6 << 0x88 << 0x88 << 0x88 << 0x78 << 0x87 << 0x87; // 2088 chineseTwentyFourData << 0xB4 << 0xC3 << 0xA5 << 0xB4 << 0xA5 << 0xA5 << 0x97 << 0x87 << 0x87 << 0x88 << 0x96 << 0x96; // 2089 chineseTwentyFourData << 0xA4 << 0xC3 << 0xA5 << 0xB4 << 0xA5 << 0xA6 << 0x97 << 0x87 << 0x87 << 0x78 << 0x87 << 0x96; // 2090 chineseTwentyFourData << 0xA5 << 0xC3 << 0xA5 << 0xB5 << 0xA6 << 0xA6 << 0x87 << 0x88 << 0x88 << 0x78 << 0x87 << 0x86; // 2091 chineseTwentyFourData << 0xA5 << 0xB4 << 0xA5 << 0xA5 << 0xA6 << 0xA6 << 0x88 << 0x88 << 0x88 << 0x78 << 0x87 << 0x87; // 2092 chineseTwentyFourData << 0xB4 << 0xC3 << 0xA5 << 0xB4 << 0xA5 << 0xA5 << 0x97 << 0x87 << 0x87 << 0x87 << 0x96 << 0x96; // 2093 chineseTwentyFourData << 0xA4 << 0xC3 << 0xA5 << 0xB4 << 0xA5 << 0xA6 << 0x97 << 0x87 << 0x87 << 0x78 << 0x87 << 0x96; // 2094 chineseTwentyFourData << 0xA5 << 0xC3 << 0xA5 << 0xB5 << 0xA6 << 0xA6 << 0x87 << 0x88 << 0x88 << 0x78 << 0x87 << 0x86; // 2095 chineseTwentyFourData << 0xA5 << 0xB3 << 0xA5 << 0xA5 << 0xA6 << 0xA6 << 0x88 << 0x88 << 0x88 << 0x78 << 0x87 << 0x87; // 2096 chineseTwentyFourData << 0xB4 << 0xC3 << 0xA5 << 0xB4 << 0xA5 << 0xA5 << 0x97 << 0x97 << 0x87 << 0x87 << 0x96 << 0x96; // 2097 chineseTwentyFourData << 0xA4 << 0xC3 << 0xA5 << 0xB4 << 0xA5 << 0xA6 << 0x97 << 0x87 << 0x87 << 0x78 << 0x87 << 0x96; // 2098 chineseTwentyFourData << 0xA5 << 0xC3 << 0xA5 << 0xB5 << 0xA6 << 0xA6 << 0x87 << 0x88 << 0x88 << 0x78 << 0x87 << 0x86; // 2099 //公历每月前面的天数 monthAdd << 0 << 31 << 59 << 90 << 120 << 151 << 181 << 212 << 243 << 273 << 304 << 334; //农历日期名称 listDayName << "*" << "初一" << "初二" << "初三" << "初四" << "初五" << "初六" << "初七" << "初八" << "初九" << "初十" << "十一" << "十二" << "十三" << "十四" << "十五" << "十六" << "十七" << "十八" << "十九" << "二十" << "廿一" << "廿二" << "廿三" << "廿四" << "廿五" << "廿六" << "廿七" << "廿八" << "廿九" << "三十"; //农历月份名称 listMonthName << "*" << "正月" << "二月" << "三月" << "四月" << "五月" << "六月" << "七月" << "八月" << "九月" << "十月" << "冬月" << "腊月"; //二十四节气名称 listSolarTerm << "小寒" << "大寒" << "立春" << "雨水" << "惊蛰" << "春分" << "清明" << "谷雨" << "立夏" << "小满" << "芒种" << "夏至" << "小暑" << "大暑" << "立秋" << "处暑" << "白露" << "秋分" << "寒露" << "霜降" << "立冬" << "小雪" << "大雪" << "冬至"; //天干 listTianGan << "甲" << "乙" << "丙" << "丁" << "戊" << "己" << "庚" << "辛" << "壬" << "癸"; //地支 listDiZhi << "子" << "丑" << "寅" << "卯" << "辰" << "巳" << "午" << "未" << "申" << "酉" << "戌" << "亥"; //属相 listShuXiang << "鼠" << "牛" << "虎" << "兔" << "龙" << "蛇" << "马" << "羊" << "猴" << "鸡" << "狗" << "猪"; } //计算是否闰年 bool LunarCalendarInfo::isLoopYear(int year) { return (((0 == (year % 4)) && (0 != (year % 100))) || (0 == (year % 400))); } //计算指定年月该月共多少天 int LunarCalendarInfo::getMonthDays(int year, int month) { int countDay = 0; int loopDay = isLoopYear(year) ? 1 : 0; switch (month) { case 1: countDay = 31; break; case 2: countDay = 28 + loopDay; break; case 3: countDay = 31; break; case 4: countDay = 30; break; case 5: countDay = 31; break; case 6: countDay = 30; break; case 7: countDay = 31; break; case 8: countDay = 31; break; case 9: countDay = 30; break; case 10: countDay = 31; break; case 11: countDay = 30; break; case 12: countDay = 31; break; default: countDay = 30; break; } return countDay; } //计算指定年月对应到该月共多少天 int LunarCalendarInfo::getTotalMonthDays(int year, int month) { int countDay = 0; int loopDay = isLoopYear(year) ? 1 : 0; switch (month) { case 1: countDay = 0; break; case 2: countDay = 31; break; case 3: countDay = 59 + loopDay; break; case 4: countDay = 90 + loopDay; break; case 5: countDay = 120 + loopDay; break; case 6: countDay = 151 + loopDay; break; case 7: countDay = 181 + loopDay; break; case 8: countDay = 212 + loopDay; break; case 9: countDay = 243 + loopDay; break; case 10: countDay = 273 + loopDay; break; case 11: countDay = 304 + loopDay; break; case 12: countDay = 334 + loopDay; break; default: countDay = 0; break; } return countDay; } //计算指定年月对应星期几 int LunarCalendarInfo::getFirstDayOfWeek(int year, int month, bool FirstDayisSun) { int week = 0; week = (year + (year - 1) / 4 - (year - 1) / 100 + (year - 1) / 400) % 7; week += getTotalMonthDays(year, month); week = week % 7 - (!FirstDayisSun); if (week == -1) week = 6; return week; } //计算国际节日 QString LunarCalendarInfo::getHoliday(int month, int day) { int temp = (month << 8) | day; QString strHoliday; switch (temp) { case 0x0101: strHoliday = "元旦"; break; case 0x020E: strHoliday = "情人节"; break; case 0x0305: strHoliday = "志愿者"; break; case 0x0308: strHoliday = "妇女节"; break; case 0x030C: strHoliday = "植树节"; break; case 0x0401: strHoliday = "愚人节"; break; case 0x0501: strHoliday = "劳动节"; break; case 0x0504: strHoliday = "青年节"; break; case 0x0601: strHoliday = "儿童节"; break; case 0x0606: strHoliday = "爱眼日"; break; case 0x0701: strHoliday = "建党节"; break; case 0x0707: strHoliday = "抗战日"; break; case 0x0801: strHoliday = "建军节"; break; case 0x090A: strHoliday = "教师节"; break; case 0x0A01: strHoliday = "国庆节"; break; case 0x0B08: strHoliday = "记者节"; break; case 0x0B09: strHoliday = "消防日"; break; case 0x0C18: strHoliday = "平安夜"; break; case 0x0C19: strHoliday = "圣诞节"; break; default: break; } return strHoliday; } //计算二十四节气 QString LunarCalendarInfo::getSolarTerms(int year, int month, int day) { QString strSolarTerms; int dayTemp = 0; int index = (year - 1970) * 12 + month - 1; if (day < 15) { dayTemp = 15 - day; if ((chineseTwentyFourData.at(index) >> 4) == dayTemp) { strSolarTerms = listSolarTerm.at(2 * (month - 1)); } } else if (day > 15) { dayTemp = day - 15; if ((chineseTwentyFourData.at(index) & 0x0f) == dayTemp) { strSolarTerms = listSolarTerm.at(2 * (month - 1) + 1); } } return strSolarTerms; } //计算农历节日(必须传入农历年份月份) QString LunarCalendarInfo::getLunarFestival(int month, int day) { int temp = (month << 8) | day; QString strFestival; switch (temp) { case 0x0201: strFestival = "二月"; break; case 0x0301: strFestival = "三月"; break; case 0x0401: strFestival = "四月"; break; case 0x0501: strFestival = "五月"; break; case 0x0601: strFestival = "六月"; break; case 0x0701: strFestival = "七月"; break; case 0x0801: strFestival = "八月"; break; case 0x0901: strFestival = "九月"; break; case 0x0A01: strFestival = "十月"; break; case 0x0B01: strFestival = "冬月"; break; case 0x0C01: strFestival = "腊月"; break; case 0x0101: strFestival = "春节"; break; case 0x010F: strFestival = "元宵节"; break; case 0x0202: strFestival = "龙抬头"; break; case 0x0505: strFestival = "端午节"; break; case 0x0707: strFestival = "七夕节"; break; case 0x080F: strFestival = "中秋节"; break; case 0x0909: strFestival = "重阳节"; break; case 0x0C08: strFestival = "腊八节"; break; case 0x0C1E: strFestival = "除夕"; break; default: break; } return strFestival; } //计算农历年 天干+地支+生肖 QString LunarCalendarInfo::getLunarYear(int year) { QString strYear; if (year > 1924) { int temp = year - 1924; strYear.append(listTianGan.at(temp % 10)); strYear.append(listDiZhi.at(temp % 12)); strYear.append("年"); strYear.append(listShuXiang.at(temp % 12)); strYear.append("年"); } return strYear; } void LunarCalendarInfo::getLunarCalendarInfo(int year, int month, int day, QString &strHoliday, QString &strSolarTerms, QString &strLunarFestival, QString &strLunarYear, QString &strLunarMonth, QString &strLunarDay) { //过滤不在范围内的年月日 if (year < 1901 || year > 2099 || month < 1 || month > 12 || day < 1 || day > 31) { return; } strHoliday = getHoliday(month, day); strSolarTerms = getSolarTerms(year, month, day); #ifndef year_2099 //现在计算农历:获得当年春节的公历日期(比如:2015年春节日期为(2月19日)) //以此为分界点,2.19前面的农历是2014年农历(用2014年农历数据来计算) //2.19以及之后的日期,农历为2015年农历(用2015年农历数据来计算) int temp, tempYear, tempMonth, isEnd, k, n; tempMonth = year - 1968; int springFestivalMonth = springFestival.at(tempMonth) / 100; int springFestivalDaty = springFestival.at(tempMonth) % 100; if (month < springFestivalMonth) { tempMonth--; tempYear = 365 * 1 + day + monthAdd.at(month - 1) - 31 * ((springFestival.at(tempMonth) / 100) - 1) - springFestival.at(tempMonth) % 100 + 1; if ((!(year % 4)) && (month > 2)) { tempYear = tempYear + 1; } if ((!((year - 1) % 4))) { tempYear = tempYear + 1; } } else if (month == springFestivalMonth) { if (day < springFestivalDaty) { tempMonth--; tempYear = 365 * 1 + day + monthAdd.at(month - 1) - 31 * ((springFestival.at(tempMonth) / 100) - 1) - springFestival.at(tempMonth) % 100 + 1; if ((!(year % 4)) && (month > 2)) { tempYear = tempYear + 1; } if ((!((year - 1) % 4))) { tempYear = tempYear + 1; } } else { tempYear = day + monthAdd.at(month - 1) - 31 * ((springFestival.at(tempMonth) / 100) - 1) - springFestival.at(tempMonth) % 100 + 1; if ((!(year % 4)) && (month > 2)) { tempYear = tempYear + 1; } } } else { tempYear = day + monthAdd.at(month - 1) - 31 * ((springFestival.at(tempMonth) / 100) - 1) - springFestival.at(tempMonth) % 100 + 1; if ((!(year % 4)) && (month > 2)) { tempYear = tempYear + 1; } } //计算农历天干地支月日 isEnd = 0; while (isEnd != 1) { if (lunarData.at(tempMonth) < 4095) { k = 11; } else { k = 12; } n = k; while (n >= 0) { temp = lunarData.at(tempMonth); temp = temp >> n; temp = temp % 2; if (tempYear <= (29 + temp)) { isEnd = 1; break; } tempYear = tempYear - 29 - temp; n = n - 1; } if (isEnd) { break; } tempMonth = tempMonth + 1; } //农历的年月日 year = 1969 + tempMonth - 1; month = k - n + 1; day = tempYear; if (k == 12) { if (month == (lunarData.at(tempMonth) / 65536) + 1) { month = 1 - month; } else if (month > (lunarData.at(tempMonth) / 65536) + 1) { month = month - 1; } } strLunarYear = getLunarYear(year); if (month < 1 && (1 == day)) { month = month * -1; strLunarMonth = "闰" + listMonthName.at(month); } else { strLunarMonth = listMonthName.at(month); } strLunarDay = listDayName.at(day); strLunarFestival = getLunarFestival(month, day); #else //记录春节离当年元旦的天数 int springOffset = 0; //记录阳历日离当年元旦的天数 int newYearOffset = 0; //记录大小月的天数 29或30 int monthCount = 0; if(((lunarCalendarTable.at(year - 1901) & 0x0060) >> 5) == 1) { springOffset = (lunarCalendarTable.at(year - 1901) & 0x001F) - 1; } else { springOffset = (lunarCalendarTable.at(year - 1901) & 0x001F) - 1 + 31; } //如果是不闰年且不是2月份 +1 newYearOffset = monthAdd.at(month - 1) + day - 1; if((!(year % 4)) && (month > 2)) { newYearOffset++; } //记录从哪个月开始来计算 int index = 0; //用来对闰月的特殊处理 int flag = 0; //判断阳历日在春节前还是春节后,计算农历的月/日 if (newYearOffset >= springOffset) { newYearOffset -= springOffset; month = 1; index = 1; flag = 0; if((lunarCalendarTable.at(year - 1901) & (0x80000 >> (index - 1))) == 0) { monthCount = 29; } else { monthCount = 30; } while (newYearOffset >= monthCount) { newYearOffset -= monthCount; index++; if (month == ((lunarCalendarTable.at(year - 1901) & 0xF00000) >> 20) ) { flag = ~flag; if (flag == 0) { month++; } } else { month++; } if ((lunarCalendarTable.at(year - 1901) & (0x80000 >> (index - 1))) == 0) { monthCount = 29; } else { monthCount = 30; } } day = newYearOffset + 1; } else { springOffset -= newYearOffset; year--; month = 12; flag = 0; if (((lunarCalendarTable.at(year - 1901) & 0xF00000) >> 20) == 0) { index = 12; } else { index = 13; } if ((lunarCalendarTable.at(year - 1901) & (0x80000 >> (index - 1))) == 0) { monthCount = 29; } else { monthCount = 30; } while (springOffset > monthCount) { springOffset -= monthCount; index--; if(flag == 0) { month--; } if(month == ((lunarCalendarTable.at(year - 1901) & 0xF00000) >> 20)) { flag = ~flag; } if ((lunarCalendarTable.at(year - 1901) & (0x80000 >> (index - 1))) == 0) { monthCount = 29; } else { monthCount = 30; } } day = monthCount - springOffset + 1; } //计算农历的索引配置 int temp = 0; temp |= day; temp |= (month << 6); //转换农历的年月 month = (temp & 0x3C0) >> 6; day = temp & 0x3F; strLunarYear = getLunarYear(year); if ((month == ((lunarCalendarTable.at(year - 1901) & 0xF00000) >> 20)) && (1 == day)) { strLunarMonth = "闰" + listMonthName.at(month); } else { strLunarMonth = listMonthName.at(month); } strLunarDay = listDayName.at(day); strLunarFestival = getLunarFestival(month, day); #endif } QString LunarCalendarInfo::getLunarInfo(int year, int month, int day, bool yearInfo, bool monthInfo, bool dayInfo) { QString strHoliday, strSolarTerms, strLunarFestival, strLunarYear, strLunarMonth, strLunarDay; LunarCalendarInfo::Instance()->getLunarCalendarInfo(year, month, day, strHoliday, strSolarTerms, strLunarFestival, strLunarYear, strLunarMonth, strLunarDay); //农历节日优先,其次农历节气,然后公历节日,最后才是农历月份名称 if (!strLunarFestival.isEmpty()) { strLunarDay = strLunarFestival; } else if (!strSolarTerms.isEmpty()) { strLunarDay = strSolarTerms; } else if (!strHoliday.isEmpty()) { strLunarDay = strHoliday; } QString info = QString("%1%2%3") .arg(yearInfo ? strLunarYear + "年" : "") .arg(monthInfo ? strLunarMonth : "") .arg(dayInfo ? strLunarDay : ""); return info; } QString LunarCalendarInfo::getLunarYearMonthDay(int year, int month, int day) { return getLunarInfo(year, month, day, true, true, true); } QString LunarCalendarInfo::getLunarMonthDay(int year, int month, int day) { return getLunarInfo(year, month, day, false, true, true); } QString LunarCalendarInfo::getLunarDay(int year, int month, int day) { return getLunarInfo(year, month, day, false, false, true); } ukui-panel-4.0.0.4/plugin-calendar/lunarcalendarwidget/statelabel.h0000644000175000017500000000204614560306203023725 0ustar fengfeng/* * Copyright (C) 2019 Tianjin KYLIN Information Technology Co., Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see #include #include #include #include class statelabel : public QLabel { Q_OBJECT public: statelabel(); protected: void mousePressEvent(QMouseEvent *event); Q_SIGNALS : void labelclick(); }; #endif // STATELABEL_H ukui-panel-4.0.0.4/plugin-calendar/lunarcalendarwidget/lunarcalendaritem.cpp0000644000175000017500000005340014560306203025632 0ustar fengfeng/* * Copyright (C) 2019 Tianjin KYLIN Information Technology Co., Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see //日历字号 const int day_font_size = 18; const int lunar_font_size = 14; const int other_font_size = 12; LunarCalendarItem::LunarCalendarItem(QString font,QWidget *parent) : QWidget(parent),m_font(font) { setProperty("useStyleWindowManager",false); setAttribute(Qt::WA_TransparentForMouseEvents,true); hover = false; pressed = false; select = false; showLunar = true; bgImage = ":/image/bg_calendar.png"; selectType = SelectType_Rect; date = QDate::currentDate(); lunar = "初一"; dayType = DayType_MonthCurrent; //实时监听主题变化 const QByteArray id("org.ukui.style"); QGSettings * fontSetting = new QGSettings(id, QByteArray(), this); connect(fontSetting, &QGSettings::changed,[=](QString key) { if((key.compare("style-name") == 0) || (key.compare("theme-color") == 0)|| (key.compare("widget-theme-name")==0) || (key.compare("styleName") == 0) || (key.compare("themeColor") == 0)|| (key.compare("widgetThemeName")==0) ){ weekColor = CalendarColor::CalendarColor::getThemeColor(CalendarColor::TEXT); currentTextColor = CalendarColor::CalendarColor::getThemeColor(CalendarColor::TEXT); otherTextColor = CalendarColor::CalendarColor::getThemeColor(CalendarColor::OTHER_TEXT); otherLunarColor = CalendarColor::CalendarColor::getThemeColor(CalendarColor::OTHER_TEXT); otherLunarColor.setAlphaF(0.35); currentLunarColor = CalendarColor::CalendarColor::getThemeColor(CalendarColor::TEXT); currentLunarColor.setAlphaF(0.45); lunarColor = CalendarColor::CalendarColor::getThemeColor(CalendarColor::TEXT); lunarColor.setAlphaF(0.35); selectBgColor = CalendarColor::CalendarColor::getThemeColor(CalendarColor::CLICKED); //hoverBgColor = CalendarColor::CalendarColor::getThemeColor(CalendarColor::CLICKED); qreal mix = 0.2; hoverBgColor = CalendarColor::CalendarColor::mixColor(CalendarColor::CalendarColor::getThemeColor(CalendarColor::CLICKED),mix); this->update(); } }); weekColor = CalendarColor::CalendarColor::getThemeColor(CalendarColor::TEXT); currentTextColor = CalendarColor::CalendarColor::getThemeColor(CalendarColor::TEXT); otherTextColor = CalendarColor::CalendarColor::getThemeColor(CalendarColor::OTHER_TEXT); otherLunarColor = CalendarColor::CalendarColor::getThemeColor(CalendarColor::OTHER_TEXT); otherLunarColor.setAlphaF(0.45); currentLunarColor = CalendarColor::CalendarColor::getThemeColor(CalendarColor::TEXT); lunarColor = CalendarColor::CalendarColor::getThemeColor(CalendarColor::TEXT); lunarColor.setAlphaF(0.35); superColor = CalendarColor::CalendarColor::getThemeColor(CalendarColor::WORK); selectTextColor = CalendarColor::CalendarColor::getThemeColor(CalendarColor::CLICKED_TEXT); hoverTextColor = CalendarColor::CalendarColor::getThemeColor(CalendarColor::CLICKED_TEXT); selectLunarColor = CalendarColor::CalendarColor::getThemeColor(CalendarColor::WORK); hoverLunarColor = CalendarColor::CalendarColor::getThemeColor(CalendarColor::WORK); selectBgColor = CalendarColor::CalendarColor::getThemeColor(CalendarColor::CLICKED); //hoverBgColor = CalendarColor::CalendarColor::getThemeColor(CalendarColor::CLICKED); qreal mix = 0.2; hoverBgColor = CalendarColor::CalendarColor::mixColor(CalendarColor::CalendarColor::getThemeColor(CalendarColor::CLICKED),mix); } void LunarCalendarItem::onEnter() { hover = true; this->update(); } void LunarCalendarItem::onLeave() { hover = false; this->update(); } void LunarCalendarItem::onSelected() { Q_EMIT clicked(date, dayType); update(); } QString LunarCalendarItem::handleJsMap(QString year,QString month2day) { QString oneNUmber = "worktime.y" + year; QString twoNumber = "d" + month2day; QMap>::Iterator it = worktime.begin(); while(it!=worktime.end()) { if(it.key() == oneNUmber) { QMap::Iterator it1 = it.value().begin(); while(it1!=it.value().end()) { if(it1.key() == twoNumber) { return it1.value(); } it1++; } } it++; } return "-1"; } void LunarCalendarItem::paintEvent(QPaintEvent *) { QDate dateNow = QDate::currentDate(); //绘制准备工作,启用反锯齿 QPainter painter(this); painter.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing); //绘制背景和边框 drawBg(&painter); //对比当前的时间,画选中状态 if(dateNow == date) { drawBgCurrent(&painter, selectBgColor); if(hover || select) { drawBgHover(&painter, hoverBgColor); } //设置一个字的颜色 if (dayType == DayType_MonthCurrent) { currentTextColor =CalendarColor::CalendarColor::getThemeColor(CalendarColor::CLICKED_TEXT); currentLunarColor = CalendarColor::CalendarColor::getThemeColor(CalendarColor::CLICKED_TEXT); currentLunarColor.setAlphaF(0.45); } } else if (hover) { //绘制悬停状态、绘制选中状态 drawBgHover(&painter, hoverBgColor); //设置一个字的颜色 if (dayType == DayType_MonthCurrent) { currentTextColor =CalendarColor::CalendarColor::getThemeColor(CalendarColor::TEXT); currentLunarColor = CalendarColor::CalendarColor::getThemeColor(CalendarColor::TEXT); currentLunarColor.setAlphaF(0.45); }else { otherLunarColor = CalendarColor::CalendarColor::getThemeColor(CalendarColor::OTHER_TEXT); otherTextColor = CalendarColor::CalendarColor::getThemeColor(CalendarColor::OTHER_TEXT); otherLunarColor.setAlphaF(0.15); } } else if (select){ if(LunarCalendarWidget::getClickedDate() == date){ drawBgHover(&painter, hoverBgColor); } //设置一个字的颜色 if (dayType == DayType_MonthCurrent) { currentTextColor =CalendarColor::CalendarColor::getThemeColor(CalendarColor::TEXT); currentLunarColor = CalendarColor::CalendarColor::getThemeColor(CalendarColor::TEXT); currentLunarColor.setAlphaF(0.45); }else { otherLunarColor = CalendarColor::CalendarColor::getThemeColor(CalendarColor::OTHER_TEXT); otherTextColor = CalendarColor::CalendarColor::getThemeColor(CalendarColor::OTHER_TEXT); otherLunarColor.setAlphaF(0.15); } }else { if (dayType == DayType_MonthCurrent) { currentTextColor =CalendarColor::CalendarColor::getThemeColor(CalendarColor::TEXT); currentLunarColor = CalendarColor::CalendarColor::getThemeColor(CalendarColor::TEXT); currentLunarColor.setAlphaF(0.45); }else { otherLunarColor = CalendarColor::CalendarColor::getThemeColor(CalendarColor::OTHER_TEXT); otherTextColor = CalendarColor::CalendarColor::getThemeColor(CalendarColor::OTHER_TEXT); otherLunarColor.setAlphaF(0.15); } } //绘制日期 drawDay(&painter); //绘制农历信息 drawLunar(&painter); } void LunarCalendarItem::drawBg(QPainter *painter) { painter->save(); //根据当前类型选择对应的颜色 QColor bgColor = currentBgColor; if (dayType == DayType_MonthPre || dayType == DayType_MonthNext) { bgColor = otherBgColor; } painter->restore(); } void LunarCalendarItem::drawBgCurrent(QPainter *painter, const QColor &color) { painter->save(); painter->setPen(Qt::NoPen); painter->setBrush(color); QRect rect = this->rect(); rect = QRect(rect.x()+1,rect.y()+1,rect.width()-2,rect.height()-2); painter->drawRoundedRect(rect,6,6); painter->restore(); } void LunarCalendarItem::drawBgHover(QPainter *painter, const QColor &color) { painter->save(); QRect rect = this->rect(); rect = QRect(rect.x()+1,rect.y()+1,rect.width()-2,rect.height()-2); painter->setPen(QPen(color,3)); painter->drawRoundedRect(rect,6,6); painter->restore(); } void LunarCalendarItem::drawDay(QPainter *painter) { int width = this->width(); int height = this->height(); int side = qMin(width, height); // qDebug() << width << height ; painter->save(); //根据当前类型选择对应的颜色 QColor color = currentTextColor; if (dayType == DayType_MonthPre || dayType == DayType_MonthNext) { color = otherTextColor; } else if (dayType == DayType_WeekEnd) { color = weekColor; } painter->setPen(color); QFont font = m_font; font.setPixelSize(day_font_size); //设置文字粗细 font.setBold(true); painter->setFont(font); QLocale locale = (QLocale::system().name() == "zh_CN" ? (QLocale::Chinese) : (QLocale::English)); //代码复用率待优化 if (showLunar) { QRect dayRect; if(locale == QLocale::Chinese){ dayRect = QRect(0, 0, width, height / 1.7); } else { dayRect = QRect(0, 0, width, height); } painter->drawText(dayRect, Qt::AlignHCenter | Qt::AlignVCenter, QString::number(date.day())); if (handleJsMap(date.toString("yyyy"),date.toString("MMdd")) == "2") { painter->setPen(Qt::NoPen); if(locale == QLocale::Chinese){ painter->setBrush(CalendarColor::CalendarColor::getThemeColor(CalendarColor::HOLIDAY)); } QRect dayRect1 = QRect(0, 0, width/3.5,height/3.5); painter->drawRoundedRect(dayRect1,4,4); font.setPixelSize(other_font_size); painter->setFont(font); painter->setPen(Qt::white); if(locale == QLocale::Chinese){ painter->drawText(dayRect1, Qt::AlignHCenter | Qt::AlignVCenter,"休"); } } else if (handleJsMap(date.toString("yyyy"),date.toString("MMdd")) == "1") { painter->setPen(Qt::NoPen); if(locale == QLocale::Chinese){ painter->setBrush(CalendarColor::CalendarColor::getThemeColor(CalendarColor::WORK)); } QRect dayRect1 = QRect(0, 0, width/3.5,height/3.5); painter->drawRoundedRect(dayRect1,4,4); font.setPixelSize(other_font_size); painter->setFont(font); painter->setPen(Qt::white); if(locale == QLocale::Chinese){ painter->drawText(dayRect1, Qt::AlignHCenter | Qt::AlignVCenter,"班"); } } } else { //非农历 QRect dayRect = QRect(0, 0, width, height); painter->drawText(dayRect, Qt::AlignCenter, QString::number(date.day())); if (handleJsMap(date.toString("yyyy"),date.toString("MMdd")) == "2") { painter->setPen(Qt::NoPen); QRect dayRect1 = QRect(0, 0, width/3.5,height/3.5); painter->drawRoundedRect(dayRect1,6,6); font.setPixelSize(other_font_size); painter->setFont(font); painter->setPen(Qt::white); } else if (handleJsMap(date.toString("yyyy"),date.toString("MMdd")) == "1") { painter->setPen(Qt::NoPen); QRect dayRect1 = QRect(0, 0, width/3.5,height/3.5); painter->drawRoundedRect(dayRect1,6,6); font.setPixelSize(other_font_size); painter->setFont(font); painter->setPen(Qt::white); } } painter->restore(); } void LunarCalendarItem::drawLunar(QPainter *painter) { int width = this->width(); int height = this->height(); QLocale locale = (QLocale::system().name() == "zh_CN" ? (QLocale::Chinese) : (QLocale::English)); painter->save(); if (showLunar){ if(locale == QLocale::Chinese){ QStringList listDayName; listDayName << "*" << "初一" << "初二" << "初三" << "初四" << "初五" << "初六" << "初七" << "初八" << "初九" << "初十" << "十一" << "十二" << "十三" << "十四" << "十五" << "十六" << "十七" << "十八" << "十九" << "二十" << "廿一" << "廿二" << "廿三" << "廿四" << "廿五" << "廿六" << "廿七" << "廿八" << "廿九" << "三十"; //判断当前农历文字是否节日,是节日且是当月则用农历节日颜色显示 bool exist = (!listDayName.contains(lunar) && dayType != DayType_MonthPre && dayType != DayType_MonthNext); //根据当前类型选择对应的颜色 QColor color = currentLunarColor; if (dayType == DayType_MonthPre || dayType == DayType_MonthNext) { color = otherLunarColor; } if (exist) { color = currentLunarColor; } painter->setPen(color); QFont font = m_font; font.setPixelSize(lunar_font_size); painter->setFont(font); QRect lunarRect(0, height / 2 + 4, width, height / 2); painter->drawText(lunarRect, Qt::AlignTop|Qt::AlignHCenter, lunar); } } painter->restore(); } bool LunarCalendarItem::getSelect() const { return this->select; } bool LunarCalendarItem::getShowLunar() const { return this->showLunar; } QString LunarCalendarItem::getBgImage() const { return this->bgImage; } LunarCalendarItem::SelectType LunarCalendarItem::getSelectType() const { return this->selectType; } QDate LunarCalendarItem::getDate() const { return this->date; } QString LunarCalendarItem::getLunar() const { return this->lunar; } LunarCalendarItem::DayType LunarCalendarItem::getDayType() const { return this->dayType; } QColor LunarCalendarItem::getBorderColor() const { return this->borderColor; } QColor LunarCalendarItem::getWeekColor() const { return this->weekColor; } QColor LunarCalendarItem::getSuperColor() const { return this->superColor; } QColor LunarCalendarItem::getLunarColor() const { return this->lunarColor; } QColor LunarCalendarItem::getCurrentTextColor() const { return this->currentTextColor; } QColor LunarCalendarItem::getOtherTextColor() const { return this->otherTextColor; } QColor LunarCalendarItem::getSelectTextColor() const { return this->selectTextColor; } QColor LunarCalendarItem::getHoverTextColor() const { return this->hoverTextColor; } QColor LunarCalendarItem::getCurrentLunarColor() const { return this->currentLunarColor; } QColor LunarCalendarItem::getOtherLunarColor() const { return this->otherLunarColor; } QColor LunarCalendarItem::getSelectLunarColor() const { return this->selectLunarColor; } QColor LunarCalendarItem::getHoverLunarColor() const { return this->hoverLunarColor; } QColor LunarCalendarItem::getCurrentBgColor() const { return this->currentBgColor; } QColor LunarCalendarItem::getOtherBgColor() const { return this->otherBgColor; } QColor LunarCalendarItem::getSelectBgColor() const { return this->selectBgColor; } QColor LunarCalendarItem::getHoverBgColor() const { return this->hoverBgColor; } QSize LunarCalendarItem::sizeHint() const { return QSize(100, 100); } QSize LunarCalendarItem::minimumSizeHint() const { return QSize(20, 20); } void LunarCalendarItem::setSelect(bool select) { if (this->select != select) { this->select = select; this->update(); } } void LunarCalendarItem::setShowLunar(bool showLunar) { this->showLunar = showLunar; this->update(); } void LunarCalendarItem::setBgImage(const QString &bgImage) { if (this->bgImage != bgImage) { this->bgImage = bgImage; this->update(); } } void LunarCalendarItem::setSelectType(const LunarCalendarItem::SelectType &selectType) { if (this->selectType != selectType) { this->selectType = selectType; this->update(); } } void LunarCalendarItem::setDate(const QDate &date) { if (this->date != date) { this->date = date; this->update(); } } void LunarCalendarItem::setLunar(const QString &lunar) { if (this->lunar != lunar) { this->lunar = lunar; this->update(); } } void LunarCalendarItem::setDayType(const LunarCalendarItem::DayType &dayType) { if (this->dayType != dayType) { this->dayType = dayType; this->update(); } } void LunarCalendarItem::setDate(const QDate &date, const QString &lunar, const DayType &dayType) { this->date = date; this->lunar = lunar; this->dayType = dayType; this->update(); } void LunarCalendarItem::setBorderColor(const QColor &borderColor) { if (this->borderColor != borderColor) { this->borderColor = borderColor; this->update(); } } void LunarCalendarItem::setWeekColor(const QColor &weekColor) { if (this->weekColor != weekColor) { this->weekColor = weekColor; this->update(); } } void LunarCalendarItem::setSuperColor(const QColor &superColor) { if (this->superColor != superColor) { this->superColor = superColor; this->update(); } } void LunarCalendarItem::setLunarColor(const QColor &lunarColor) { if (this->lunarColor != lunarColor) { this->lunarColor = lunarColor; this->update(); } } void LunarCalendarItem::setCurrentTextColor(const QColor ¤tTextColor) { if (this->currentTextColor != currentTextColor) { this->currentTextColor = currentTextColor; this->update(); } } void LunarCalendarItem::setOtherTextColor(const QColor &otherTextColor) { if (this->otherTextColor != otherTextColor) { this->otherTextColor = otherTextColor; this->update(); } } void LunarCalendarItem::setSelectTextColor(const QColor &selectTextColor) { if (this->selectTextColor != selectTextColor) { this->selectTextColor = selectTextColor; this->update(); } } void LunarCalendarItem::setHoverTextColor(const QColor &hoverTextColor) { if (this->hoverTextColor != hoverTextColor) { this->hoverTextColor = hoverTextColor; this->update(); } } void LunarCalendarItem::setCurrentLunarColor(const QColor ¤tLunarColor) { if (this->currentLunarColor != currentLunarColor) { this->currentLunarColor = currentLunarColor; this->update(); } } void LunarCalendarItem::setOtherLunarColor(const QColor &otherLunarColor) { if (this->otherLunarColor != otherLunarColor) { this->otherLunarColor = otherLunarColor; this->update(); } } void LunarCalendarItem::setSelectLunarColor(const QColor &selectLunarColor) { if (this->selectLunarColor != selectLunarColor) { this->selectLunarColor = selectLunarColor; this->update(); } } void LunarCalendarItem::setHoverLunarColor(const QColor &hoverLunarColor) { if (this->hoverLunarColor != hoverLunarColor) { this->hoverLunarColor = hoverLunarColor; this->update(); } } void LunarCalendarItem::setCurrentBgColor(const QColor ¤tBgColor) { if (this->currentBgColor != currentBgColor) { this->currentBgColor = currentBgColor; this->update(); } } void LunarCalendarItem::setOtherBgColor(const QColor &otherBgColor) { if (this->otherBgColor != otherBgColor) { this->otherBgColor = otherBgColor; this->update(); } } void LunarCalendarItem::setSelectBgColor(const QColor &selectBgColor) { if (this->selectBgColor != selectBgColor) { this->selectBgColor = selectBgColor; this->update(); } } void LunarCalendarItem::setHoverBgColor(const QColor &hoverBgColor) { if (this->hoverBgColor != hoverBgColor) { this->hoverBgColor = hoverBgColor; this->update(); } } bool LunarCalendarItem::event(QEvent *event) { if(event->type()==QEvent::ToolTip){ if(date.month()==11 && date.day()==9 ){ setToolTip(tr("消防宣传日")); } if(date.month()==3 && date.day()==5 ){ setToolTip(tr("志愿者服务日")); } if(date.month()==6 && date.day()==6 ){ setToolTip(tr("全国爱眼日")); } if(date.month()==7 && date.day()==7 ){ setToolTip(tr("抗战纪念日")); } } return QWidget::event(event); } ukui-panel-4.0.0.4/plugin-calendar/lunarcalendarwidget/lunarcalendaryearitem.cpp0000644000175000017500000003155114560306203026516 0ustar fengfeng/* * Copyright (C) 2019 Tianjin KYLIN Information Technology Co., Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see LunarCalendarYearItem::LunarCalendarYearItem(QString fontName,QWidget *parent) : QWidget(parent),m_font(fontName) { hover = false; pressed = false; select = false; showLunar = true; bgImage = ":/image/bg_calendar.png"; selectType = SelectType_Rect; date = QDate::currentDate(); lunar = "初一"; dayType = DayType_MonthCurrent; //实时监听主题变化 const QByteArray id("org.ukui.style"); QGSettings * fontSetting = new QGSettings(id, QByteArray(), this); connect(fontSetting, &QGSettings::changed,[=](QString key) { if((key.compare("style-name") == 0) || (key.compare("theme-color") == 0)|| (key.compare("widget-theme-name")==0) || (key.compare("styleName") == 0) || (key.compare("themeColor") == 0)|| (key.compare("widgetThemeName")==0) ){ weekColor = CalendarColor::CalendarColor::getThemeColor(CalendarColor::TEXT); currentTextColor = CalendarColor::CalendarColor::getThemeColor(CalendarColor::TEXT); otherTextColor = CalendarColor::CalendarColor::getThemeColor(CalendarColor::OTHER_TEXT); otherLunarColor = CalendarColor::CalendarColor::getThemeColor(CalendarColor::OTHER_TEXT); currentLunarColor = CalendarColor::CalendarColor::getThemeColor(CalendarColor::TEXT); lunarColor = CalendarColor::CalendarColor::getThemeColor(CalendarColor::TEXT); selectBgColor = CalendarColor::CalendarColor::getThemeColor(CalendarColor::CLICKED); //hoverBgColor = CalendarColor::CalendarColor::getThemeColor(CalendarColor::CLICKED); qreal mix = 0.2; hoverBgColor = CalendarColor::CalendarColor::mixColor(CalendarColor::CalendarColor::getThemeColor(CalendarColor::CLICKED),mix); this->update(); } }); weekColor = CalendarColor::CalendarColor::getThemeColor(CalendarColor::TEXT); currentTextColor = CalendarColor::CalendarColor::getThemeColor(CalendarColor::TEXT); otherTextColor = CalendarColor::CalendarColor::getThemeColor(CalendarColor::OTHER_TEXT); otherLunarColor = CalendarColor::CalendarColor::getThemeColor(CalendarColor::OTHER_TEXT); currentLunarColor = CalendarColor::CalendarColor::getThemeColor(CalendarColor::TEXT); lunarColor = CalendarColor::CalendarColor::getThemeColor(CalendarColor::TEXT); superColor = CalendarColor::CalendarColor::getThemeColor(CalendarColor::WORK); selectTextColor = CalendarColor::CalendarColor::getThemeColor(CalendarColor::CLICKED_TEXT); hoverTextColor = CalendarColor::CalendarColor::getThemeColor(CalendarColor::CLICKED_TEXT); selectLunarColor = CalendarColor::CalendarColor::getThemeColor(CalendarColor::WORK); hoverLunarColor = CalendarColor::CalendarColor::getThemeColor(CalendarColor::WORK); selectBgColor = CalendarColor::CalendarColor::getThemeColor(CalendarColor::CLICKED); //hoverBgColor = CalendarColor::CalendarColor::getThemeColor(CalendarColor::CLICKED); qreal mix = 0.2; hoverBgColor = CalendarColor::CalendarColor::mixColor(CalendarColor::CalendarColor::getThemeColor(CalendarColor::CLICKED),mix); setProperty("useStyleWindowManager",false); } void LunarCalendarYearItem::onEnter() { hover = true; this->update(); } void LunarCalendarYearItem::onLeave() { hover = false; this->update(); } void LunarCalendarYearItem::onSelected() { // Q_EMIT clicked(date, dayType); Q_EMIT yearMessage(date,dayType); update(); } void LunarCalendarYearItem::paintEvent(QPaintEvent *) { QDate dateNow = QDate::currentDate(); //绘制准备工作,启用反锯齿 QPainter painter(this); painter.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing); //绘制背景和边框 drawBg(&painter); //对比当前的时间,画选中状态 if(dateNow.year() == date.year()) { drawBgCurrent(&painter, selectBgColor); if(hover) { drawBgHover(&painter, hoverBgColor); } currentTextColor =CalendarColor::CalendarColor::getThemeColor(CalendarColor::CLICKED_TEXT); }else{ currentTextColor =CalendarColor::CalendarColor::getThemeColor(CalendarColor::TEXT); } //绘制悬停状态 if (hover||select) { drawBgHover(&painter, hoverBgColor); } //绘制日期 drawYear(&painter); } void LunarCalendarYearItem::drawBg(QPainter *painter) { painter->save(); //根据当前类型选择对应的颜色 QColor bgColor = currentBgColor; if (dayType == DayType_MonthPre || dayType == DayType_MonthNext) { bgColor = otherBgColor; } painter->restore(); } void LunarCalendarYearItem::drawBgCurrent(QPainter *painter, const QColor &color) { painter->save(); painter->setPen(Qt::NoPen); painter->setBrush(color); QRect rect = this->rect(); rect = QRect(rect.x()+1,rect.y()+1,rect.width()-2,rect.height()-2); painter->drawRoundedRect(rect,6,6); painter->restore(); } void LunarCalendarYearItem::drawBgHover(QPainter *painter, const QColor &color) { painter->save(); QRect rect = this->rect(); rect = QRect(rect.x()+1,rect.y()+1,rect.width()-2,rect.height()-2); painter->setPen(QPen(color,3)); painter->drawRoundedRect(rect,6,6); painter->restore(); } void LunarCalendarYearItem::drawYear(QPainter *painter) { int width = this->width(); int height = this->height(); int side = qMin(width, height); painter->save(); //根据当前类型选择对应的颜色 QColor color = currentTextColor; if (dayType == DayType_MonthPre || dayType == DayType_MonthNext) { color = otherTextColor; } else if (dayType == DayType_WeekEnd) { color = weekColor; } painter->setPen(color); QFont font; font.setPixelSize(side * 0.2); //设置文字粗细 font.setBold(true); painter->setFont(font); QRect dayRect = QRect(0, 0, width, height / 1.7); QString arg = QString::number(date.year()) /*+ "年"*/; painter->drawText(dayRect, Qt::AlignHCenter | Qt::AlignBottom, arg); painter->restore(); } bool LunarCalendarYearItem::getSelect() const { return this->select; } bool LunarCalendarYearItem::getShowLunar() const { return this->showLunar; } QString LunarCalendarYearItem::getBgImage() const { return this->bgImage; } LunarCalendarYearItem::SelectType LunarCalendarYearItem::getSelectType() const { return this->selectType; } QDate LunarCalendarYearItem::getDate() const { return this->date; } QString LunarCalendarYearItem::getLunar() const { return this->lunar; } LunarCalendarYearItem::DayType LunarCalendarYearItem::getDayType() const { return this->dayType; } QColor LunarCalendarYearItem::getBorderColor() const { return this->borderColor; } QColor LunarCalendarYearItem::getWeekColor() const { return this->weekColor; } QColor LunarCalendarYearItem::getSuperColor() const { return this->superColor; } QColor LunarCalendarYearItem::getLunarColor() const { return this->lunarColor; } QColor LunarCalendarYearItem::getCurrentTextColor() const { return this->currentTextColor; } QColor LunarCalendarYearItem::getOtherTextColor() const { return this->otherTextColor; } QColor LunarCalendarYearItem::getSelectTextColor() const { return this->selectTextColor; } QColor LunarCalendarYearItem::getHoverTextColor() const { return this->hoverTextColor; } QColor LunarCalendarYearItem::getCurrentLunarColor() const { return this->currentLunarColor; } QColor LunarCalendarYearItem::getOtherLunarColor() const { return this->otherLunarColor; } QColor LunarCalendarYearItem::getSelectLunarColor() const { return this->selectLunarColor; } QColor LunarCalendarYearItem::getHoverLunarColor() const { return this->hoverLunarColor; } QColor LunarCalendarYearItem::getCurrentBgColor() const { return this->currentBgColor; } QColor LunarCalendarYearItem::getOtherBgColor() const { return this->otherBgColor; } QColor LunarCalendarYearItem::getSelectBgColor() const { return this->selectBgColor; } QColor LunarCalendarYearItem::getHoverBgColor() const { return this->hoverBgColor; } QSize LunarCalendarYearItem::sizeHint() const { return QSize(100, 100); } QSize LunarCalendarYearItem::minimumSizeHint() const { return QSize(20, 20); } void LunarCalendarYearItem::setSelect(bool select) { if (this->select != select) { this->select = select; this->update(); } } void LunarCalendarYearItem::setShowLunar(bool showLunar) { this->showLunar = showLunar; this->update(); } void LunarCalendarYearItem::setBgImage(const QString &bgImage) { if (this->bgImage != bgImage) { this->bgImage = bgImage; this->update(); } } void LunarCalendarYearItem::setSelectType(const LunarCalendarYearItem::SelectType &selectType) { if (this->selectType != selectType) { this->selectType = selectType; this->update(); } } void LunarCalendarYearItem::setDate(const QDate &date) { if (this->date != date) { this->date = date; this->update(); } } void LunarCalendarYearItem::setLunar(const QString &lunar) { if (this->lunar != lunar) { this->lunar = lunar; this->update(); } } void LunarCalendarYearItem::setDayType(const LunarCalendarYearItem::DayType &dayType) { if (this->dayType != dayType) { this->dayType = dayType; this->update(); } } void LunarCalendarYearItem::setDate(const QDate &date, const QString &lunar, const DayType &dayType) { this->date = date; this->lunar = lunar; this->dayType = dayType; this->update(); } void LunarCalendarYearItem::setBorderColor(const QColor &borderColor) { if (this->borderColor != borderColor) { this->borderColor = borderColor; this->update(); } } void LunarCalendarYearItem::setWeekColor(const QColor &weekColor) { if (this->weekColor != weekColor) { this->weekColor = weekColor; this->update(); } } void LunarCalendarYearItem::setSuperColor(const QColor &superColor) { if (this->superColor != superColor) { this->superColor = superColor; this->update(); } } void LunarCalendarYearItem::setLunarColor(const QColor &lunarColor) { if (this->lunarColor != lunarColor) { this->lunarColor = lunarColor; this->update(); } } void LunarCalendarYearItem::setCurrentTextColor(const QColor ¤tTextColor) { if (this->currentTextColor != currentTextColor) { this->currentTextColor = currentTextColor; this->update(); } } void LunarCalendarYearItem::setOtherTextColor(const QColor &otherTextColor) { if (this->otherTextColor != otherTextColor) { this->otherTextColor = otherTextColor; this->update(); } } void LunarCalendarYearItem::setSelectTextColor(const QColor &selectTextColor) { if (this->selectTextColor != selectTextColor) { this->selectTextColor = selectTextColor; this->update(); } } void LunarCalendarYearItem::setHoverTextColor(const QColor &hoverTextColor) { if (this->hoverTextColor != hoverTextColor) { this->hoverTextColor = hoverTextColor; this->update(); } } void LunarCalendarYearItem::setCurrentLunarColor(const QColor ¤tLunarColor) { if (this->currentLunarColor != currentLunarColor) { this->currentLunarColor = currentLunarColor; this->update(); } } void LunarCalendarYearItem::setOtherLunarColor(const QColor &otherLunarColor) { if (this->otherLunarColor != otherLunarColor) { this->otherLunarColor = otherLunarColor; this->update(); } } ukui-panel-4.0.0.4/plugin-calendar/lunarcalendarwidget/ui_frmlunarcalendarwidget.h0000644000175000017500000000707714560306203027037 0ustar fengfeng/* * Copyright (C) 2019 Tianjin KYLIN Information Technology Co., Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see #include #include #include #include #include #include #include #include #include "lunarcalendarwidget.h" QT_BEGIN_NAMESPACE class Ui_frmLunarCalendarWidget { public: QVBoxLayout *verticalLayout; LunarCalendarWidget *lunarCalendarWidget; QWidget *widgetBottom; QHBoxLayout *horizontalLayout; QSpacerItem *horizontalSpacer; void setupUi(QWidget *frmLunarCalendarWidget) { if (frmLunarCalendarWidget->objectName().isEmpty()) frmLunarCalendarWidget->setObjectName(QString::fromUtf8("frmLunarCalendarWidget")); frmLunarCalendarWidget->resize(600, 500); verticalLayout = new QVBoxLayout(frmLunarCalendarWidget); verticalLayout->setObjectName(QString::fromUtf8("verticalLayout")); lunarCalendarWidget = new LunarCalendarWidget(frmLunarCalendarWidget); lunarCalendarWidget->setObjectName(QString::fromUtf8("lunarCalendarWidget")); QSizePolicy sizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding); sizePolicy.setHorizontalStretch(0); sizePolicy.setVerticalStretch(0); sizePolicy.setHeightForWidth(lunarCalendarWidget->sizePolicy().hasHeightForWidth()); lunarCalendarWidget->setSizePolicy(sizePolicy); verticalLayout->addWidget(lunarCalendarWidget); widgetBottom = new QWidget(frmLunarCalendarWidget); widgetBottom->setObjectName(QString::fromUtf8("widgetBottom")); horizontalLayout = new QHBoxLayout(widgetBottom); horizontalLayout->setObjectName(QString::fromUtf8("horizontalLayout")); horizontalLayout->setContentsMargins(0, 0, 0, 0); horizontalSpacer = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum); horizontalLayout->addItem(horizontalSpacer); retranslateUi(frmLunarCalendarWidget); QMetaObject::connectSlotsByName(frmLunarCalendarWidget); } // setupUi void retranslateUi(QWidget *frmLunarCalendarWidget) { frmLunarCalendarWidget->setWindowTitle(QApplication::translate("frmLunarCalendarWidget", "Form", nullptr)); } // retranslateUi }; namespace Ui { class frmLunarCalendarWidget: public Ui_frmLunarCalendarWidget {}; } // namespace Ui QT_END_NAMESPACE #endif // UI_FRMLUNARCALENDARWIDGET_H ukui-panel-4.0.0.4/plugin-calendar/lunarcalendarwidget/lunarcalendarwidget.cpp0000644000175000017500000017055014560306221026165 0ustar fengfeng/* * Copyright (C) 2019 Tianjin KYLIN Information Technology Co., Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see #include #include #include #include #include #include #include #include #include #include #define PANEL_CONTROL_IN_CALENDAR "org.ukui.control-center.panel.plugins" #define LUNAR_KEY "calendar" #define FIRST_DAY_KEY "firstday" #define TRANSPARENCY_SETTING "org.ukui.control-center.personalise" #define TRANSPARENCY_KEY "transparency" #define ORG_UKUI_STYLE "org.ukui.style" #define SYSTEM_FONT_SIZE "systemFontSize" #define SYSTEM_FONT "systemFont" #define STYLE_NAME "styleName" #define STYLE_NAME_KEY_DARK "ukui-dark" #define STYLE_NAME_KEY_DEFAULT "ukui-default" #define STYLE_NAME_KEY_BLACK "ukui-black" #define STYLE_NAME_KEY_LIGHT "ukui-light" #define STYLE_NAME_KEY_WHITE "ukui-white" #define ICON_COLOR_LOGHT 255 #define ICON_COLOR_DRAK 0 #define KYSDK_DATESERVER "com.kylin.kysdk.DateServer" #define KYSDK_DATEPATH "/com/kylin/kysdk/Date" #define KYSDK_DATEINTERFACE "com.kylin.kysdk.DateInterface" QDate LunarCalendarWidget::s_clickDate = QDate(); LunarCalendarWidget::LunarCalendarWidget(QWidget *parent) : QWidget(parent) { setObjectName("LunarCalendarWidget"); installEventFilter(this); setMouseTracking(true); analysisWorktimeJs(); btnYear = new QPushButton; btnMonth = new QPushButton; btnToday = new QPushButton; btnClick = false; calendarStyle = CalendarStyle_Red; date = QDate::currentDate(); widgetTime = new QWidget; timeShow = new QVBoxLayout(widgetTime); datelabel =new QLabel(this); timelabel = new QLabel(this); lunarlabel = new QLabel(this); widgetTime->setObjectName("widgetTime"); timeShow->setContentsMargins(16, 16, 16, 0); const QByteArray calendar_id(PANEL_CONTROL_IN_CALENDAR); if(QGSettings::isSchemaInstalled(calendar_id)){ calendar_gsettings = new QGSettings(calendar_id); } initWidget(); if(calendar_gsettings!=nullptr){ //农历切换监听与日期显示格式 connect(calendar_gsettings, &QGSettings::changed, this, [=] (const QString &key){ if(key == LUNAR_KEY){ m_showLunar = getShowLunar(); setShowLunar(m_showLunar); controlDownLine(); _timeUpdate(); } else if(key == "date") { if(calendar_gsettings->get("date").toString() == "cn"){ dateShowMode = "yyyy/MM/dd dddd"; } else { dateShowMode = "yyyy-MM-dd dddd"; } } else if (key == FIRST_DAY_KEY) { setWeekNameFormat(calendar_gsettings->get(FIRST_DAY_KEY).toString() == "sunday"); } }); if(calendar_gsettings->get("date").toString() == "cn"){ dateShowMode = "yyyy/MM/dd dddd"; } else { dateShowMode = "yyyy-MM-dd dddd"; } m_showLunar = getShowLunar(); setShowLunar(m_showLunar); setWeekNameFormat(calendar_gsettings->get(FIRST_DAY_KEY).toString() == "sunday"); //监听12/24小时制 connect(calendar_gsettings, &QGSettings::changed, this, [=] (const QString &keys){ timemodel = calendar_gsettings->get("hoursystem").toString(); _timeUpdate(); }); timemodel = calendar_gsettings->get("hoursystem").toString(); } else { //无设置默认公历 lunarstate = true; } //判断图形字体是否存在,不存在则加入 QFontDatabase fontDb; if (!fontDb.families().contains("FontAwesome")) { int fontId = fontDb.addApplicationFont(":/image/fontawesome-webfont.ttf"); QStringList fontName = fontDb.applicationFontFamilies(fontId); if (fontName.count() == 0) { qDebug() << "load fontawesome-webfont.ttf error"; } } if (fontDb.families().contains("FontAwesome")) { iconFont = QFont("FontAwesome"); #if (QT_VERSION >= QT_VERSION_CHECK(4,8,0)) iconFont.setHintingPreference(QFont::PreferNoHinting); #endif } //切换主题 const QByteArray style_id(ORG_UKUI_STYLE); QStringList stylelist; stylelist<get(STYLE_NAME).toString()); setColor(dark_style); m_fontName = style_settings->get(SYSTEM_FONT).toString(); qDebug() << m_fontName; m_font.setFamily(m_fontName); } cboxYearandMonthLabel->setFont(m_font); connect(style_settings, &QGSettings::changed, this, [=] (const QString &key){ if(key==STYLE_NAME){ dark_style=stylelist.contains(style_settings->get(STYLE_NAME).toString()); _timeUpdate(); setColor(dark_style); }else if(key == SYSTEM_FONT){ m_fontName = style_settings->get(SYSTEM_FONT).toString(); qDebug() << m_fontName; m_font.setFamily(m_fontName); }else{ qDebug()<<"key!=STYLE_NAME"; } }); timer = new QTimer(); connect(timer,SIGNAL(timeout()),this,SLOT(timerUpdate())); timer->start(1000); locale = QLocale::system().name(); setLocaleCalendar();//设置某区域下日历的显示 initTransparency(); setWindowOpacity(1); setAttribute(Qt::WA_TranslucentBackground,true);//设置窗口背景透明 setProperty("useSystemStyleBlur", true); //设置毛玻璃效果 setProperty("useStyleWindowManager",false); KWindowEffects::enableBlurBehind(winId(),true); KWindowSystem::setState(winId(),NET::SkipPager|NET::SkipTaskbar|NET::SkipSwitcher); kdk::UkuiStyleHelper::self()->removeHeader(this); _timeUpdate(); } void LunarCalendarWidget::getFontInfo(QString &fontName, int &fontSize) { qDebug() << __FILE__ <<__FUNCTION__; fontName = m_fontName; fontSize = m_fontSize; } LunarCalendarWidget::~LunarCalendarWidget() { } /* * @brief 设置日历的背景及文字颜色 * 参数: * weekColor 周六及周日文字颜色 */ void LunarCalendarWidget::setColor(bool mdark_style) { const QByteArray calendar_id(PANEL_CONTROL_IN_CALENDAR); if(mdark_style){ weekTextColor = QColor(0, 0, 0); weekBgColor = QColor(180, 180, 180); if(QGSettings::isSchemaInstalled(calendar_id)){ m_showLunar = calendar_gsettings->get(LUNAR_KEY).toString() == "lunar"; } bgImage = ":/image/bg_calendar.png"; selectType = SelectType_Rect; }else{ weekTextColor = QColor(255, 255, 255); weekBgColor = QColor(0, 0, 0); if(QGSettings::isSchemaInstalled(calendar_id)){ m_showLunar = calendar_gsettings->get(LUNAR_KEY).toString() == "lunar"; } bgImage = ":/image/bg_calendar.png"; selectType = SelectType_Rect; } initStyle(); } void LunarCalendarWidget::controlDownLine() { QString lang; QString locale; getLocale(lang, locale); if((!lang.contains("zh",Qt::CaseInsensitive)) || (!locale.contains("zh",Qt::CaseInsensitive))) { if(lineDown!=nullptr) { lineDown->hide(); } } if(calendar_gsettings->get("calendar").toString() == "solarlunar") { if(lineDown!=nullptr) { lineDown->hide(); } } } void LunarCalendarWidget::_timeUpdate() { QDateTime time = QDateTime::currentDateTime(); QLocale locale = (QLocale::system().name() == "zh_CN" ? (QLocale::Chinese) : (QLocale::English)); QString _time; if(timemodel == "12") { if(locale.language() == QLocale::English){ _time = time.toString("hh:mm:ss A"); //_time = locale.toString(time,"hh:mm:ss A"); } else { _time = time.toString("A hh:mm:ss"); //_time = locale.toString(time,"A hh:mm:ss"); } } else { //_time = locale.toString(time,"hh:mm:ss"); _time = time.toString("hh:mm:ss"); } QFont font(m_fontName); datelabel->setText(_time); font.setPointSize(22); datelabel->setFont(font); QString strHoliday; QString strSolarTerms; QString strLunarFestival; QString strLunarYear; QString strLunarMonth; QString strLunarDay; LunarCalendarInfo::Instance()->getLunarCalendarInfo(locale.toString(time,"yyyy").toInt(), locale.toString(time,"MM").toInt(), locale.toString(time,"dd").toInt(), strHoliday, strSolarTerms, strLunarFestival, strLunarYear, strLunarMonth, strLunarDay); //QString _date = locale.toString(time,dateShowMode); QString _date = time.toString(dateShowMode); if (lunarstate) { _date = _date + " "+strLunarMonth + strLunarDay; } timelabel->setText(_date); font.setPointSize(12); timelabel->setFont(font); QFont font1(m_font); font1.setPixelSize(22); QFont font2(m_font); font2.setPixelSize(12); QFontMetrics fm(font1); QFontMetrics fm2(font2); int h = fm.boundingRect(datelabel->text()).height(); int h2=fm2.boundingRect(timelabel->text()).height(); datelabel->setAlignment(Qt::AlignCenter); timelabel->setAlignment(Qt::AlignCenter); datelabel->setFixedHeight(h+5); timelabel->setFixedHeight(h2+5); datelabel->setContentsMargins(0,0,0,0); timelabel->setContentsMargins(0,0,0,0); } void LunarCalendarWidget::timerUpdate() { _timeUpdate(); } void LunarCalendarWidget::initWidget() { setObjectName("lunarCalendarWidget"); //顶部widget m_widgetTop = new QWidget; m_widgetTop->setObjectName("widgetTop"); m_widgetTop->setMinimumHeight(35); //上个月的按钮 btnPrevYear = new kdk::KBorderlessButton; btnPrevYear->setObjectName("btnPrevYear"); btnPrevYear->setFixedWidth(36); btnPrevYear->setFixedHeight(36); btnPrevYear->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Expanding); //btnPrevYear->setProperty("useIconHighlightEffect", 0x2); btnPrevYear->setIcon(QIcon::fromTheme("ukui-start-symbolic")); //下个月按钮 btnNextYear = new kdk::KBorderlessButton; btnNextYear->setObjectName("btnNextYear"); btnNextYear->setFixedWidth(36); btnNextYear->setFixedHeight(36); //btnNextYear->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Expanding); btnNextYear->setProperty("useIconHighlightEffect", 0x2); btnNextYear->setIcon(QIcon::fromTheme("ukui-end-symbolic")); m_font.setFamily(m_fontName); m_font.setPointSize(12); QFont smallfont = m_font; if(QLocale::system().name() != "zh_CN"){ smallfont.setPointSize(8); } //转到年显示 btnYear->setObjectName("btnYear"); btnYear->setFocusPolicy(Qt::NoFocus); btnYear->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding); btnYear->setFont(smallfont); btnYear->setText(tr("Year")); btnYear->setToolTip(tr("Year")); btnYear->setFixedSize(64,36); //btnYear->setStyle(new CustomStyle_pushbutton("ukui-default")); connect(btnYear,&QPushButton::clicked,this,&LunarCalendarWidget::yearWidgetChange); //转到月显示 btnMonth->setObjectName("btnMonth"); btnMonth->setFocusPolicy(Qt::NoFocus); btnMonth->setFont(smallfont); btnMonth->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding); btnMonth->setText(tr("Month")); btnMonth->setToolTip(tr("Month")); btnMonth->setFixedSize(64,36); //btnMonth->setStyle(new CustomStyle_pushbutton("ukui-default")); connect(btnMonth,&QPushButton::clicked,this,&LunarCalendarWidget::monthWidgetChange); //转到今天 btnToday->setObjectName("btnToday"); btnToday->setFocusPolicy(Qt::NoFocus); btnToday->setFont(smallfont); //btnToday->setFixedWidth(40); //btnToday->setStyle(new CustomStyle_pushbutton("ukui-default")); btnToday->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding); btnToday->setText(tr("Today")); btnToday->setToolTip(tr("Today")); btnToday->setFixedSize(64,36); btnYear->setProperty("needTranslucent",true); btnMonth->setProperty("needTranslucent",true); btnToday->setProperty("needTranslucent",true); btnYear->setProperty("useButtonPalette", true); btnMonth->setProperty("useButtonPalette", true); btnToday->setProperty("useButtonPalette", true); //年份与月份下拉框 暂不用此 cboxYearandMonth = new QComboBox; cboxYearandMonthLabel = new QLabel(); cboxYearandMonthLabel->setFixedWidth(80); cboxYearandMonthLabel->setFont(m_font); //顶部横向布局 QHBoxLayout *layoutTop = new QHBoxLayout(m_widgetTop); layoutTop->setContentsMargins(0, 0, 0, 9); layoutTop->addSpacing(8); layoutTop->addWidget(btnPrevYear); layoutTop->addWidget(cboxYearandMonthLabel); layoutTop->addWidget(btnNextYear); layoutTop->addStretch(); layoutTop->addWidget(btnYear); layoutTop->addWidget(btnMonth); layoutTop->addWidget(btnToday); layoutTop->addSpacing(8); //时间 widgetTime->setMinimumHeight(50); timeShow->setSpacing(4); timeShow->addStretch(); timeShow->addWidget(datelabel);//, Qt::AlignHCenter); // timeShow->addSpacing(4); timeShow->addWidget(timelabel);//,Qt::AlignHCenter); timeShow->addStretch(); // datelabel->setStyleSheet("background-color:red"); // timelabel->setStyleSheet("background-color:green"); //星期widget widgetWeek = new QWidget; widgetWeek->setObjectName("widgetWeek"); widgetWeek->setMinimumHeight(30); widgetWeek->installEventFilter(this); //星期布局 QHBoxLayout *layoutWeek = new QHBoxLayout(widgetWeek); layoutWeek->setMargin(0); layoutWeek->setSpacing(0); for (int i = 0; i < 7; i++) { QLabel *lab = new QLabel; lab->setObjectName(QString("WeekLabel_%1").arg(i)); QFont font(m_font); font.setPixelSize(14); lab->setFont(font); lab->setAlignment(Qt::AlignCenter); layoutWeek->addWidget(lab); labWeeks.append(lab); } //日期标签widget m_widgetDayBody = new QWidget; m_widgetDayBody->setObjectName("widgetDayBody"); m_widgetDayBody->setAttribute(Qt::WA_TransparentForMouseEvents,true); //日期标签布局 QGridLayout *layoutBodyDay = new QGridLayout(m_widgetDayBody); layoutBodyDay->setMargin(1); layoutBodyDay->setHorizontalSpacing(0); layoutBodyDay->setVerticalSpacing(0); //逐个添加日标签 for (int i = 0; i < 42; i++) { LunarCalendarItem *lab = new LunarCalendarItem(m_fontName); lab->setObjectName(QString("DayLabel_%1").arg(i)); lab->installEventFilter(this); lab->worktime = worktime; connect(lab, SIGNAL(clicked(QDate, LunarCalendarItem::DayType)), this, SLOT(labClicked(QDate, LunarCalendarItem::DayType))); layoutBodyDay->addWidget(lab, i / 7, i % 7); dayItems.append(lab); } //年份标签widget widgetYearBody = new QWidget; widgetYearBody->setObjectName("widgetYearBody"); widgetYearBody->setAttribute(Qt::WA_TransparentForMouseEvents,true); //年份标签布局 QGridLayout *layoutBodyYear = new QGridLayout(widgetYearBody); layoutBodyYear->setMargin(1); layoutBodyYear->setHorizontalSpacing(0); layoutBodyYear->setVerticalSpacing(0); //逐个添加年标签 for (int i = 0; i < 12; i++) { LunarCalendarYearItem *labYear = new LunarCalendarYearItem(m_fontName); labYear->setObjectName(QString("YEARLabel_%1").arg(i)); labYear->installEventFilter(this); connect(labYear, SIGNAL(yearMessage(QDate, LunarCalendarYearItem::DayType)), this, SLOT(updateYearClicked(QDate, LunarCalendarYearItem::DayType))); layoutBodyYear->addWidget(labYear, i / 3, i % 3); yearItems.append(labYear); } widgetYearBody->hide(); //月份标签widget widgetmonthBody = new QWidget; widgetmonthBody->setObjectName("widgetmonthBody"); widgetmonthBody->setAttribute(Qt::WA_TransparentForMouseEvents,true); //月份标签布局 QGridLayout *layoutBodyMonth = new QGridLayout(widgetmonthBody); layoutBodyMonth->setMargin(1); layoutBodyMonth->setHorizontalSpacing(0); layoutBodyMonth->setVerticalSpacing(0); //逐个添加月标签 for (int i = 0; i < 12; i++) { LunarCalendarMonthItem *labMonth = new LunarCalendarMonthItem(m_fontName); labMonth->setObjectName(QString("MONTHLabel_%1").arg(i)); labMonth->installEventFilter(this); connect(labMonth, SIGNAL(monthMessage(QDate, LunarCalendarMonthItem::DayType)), this, SLOT(updateMonthClicked(QDate, LunarCalendarMonthItem::DayType))); layoutBodyMonth->addWidget(labMonth, i / 3, i % 3); monthItems.append(labMonth); } widgetmonthBody->hide(); QFont font(m_fontName); font.setPointSize(12); labWidget = new QWidget(); labWidget->installEventFilter(this); labBottom = new QLabel(); labBottom->installEventFilter(this); yijichooseLabel = new QLabel(); yijichooseLabel->setText("宜忌"); yijichooseLabel->setFont(font); yijichooseLabel->installEventFilter(this); labBottom->setFont(font); labBottom->setAlignment(Qt::AlignLeft|Qt::AlignVCenter); yijichoose = new QCheckBox(); yijichoose->installEventFilter(this); labLayout = new QHBoxLayout(); labLayout->addWidget(labBottom); labLayout->addStretch(); labLayout->addWidget(yijichooseLabel); labLayout->addWidget(yijichoose); labWidget->setLayout(labLayout); yijiLayout = new QVBoxLayout; yijiWidget = new QWidget; yiLabel = new QLabel(); jiLabel = new QLabel(); yiLabel->setFont(font); jiLabel->setFont(font); yijiLayout->addWidget(yiLabel); yijiLayout->addWidget(jiLabel); yijiWidget->setLayout(yijiLayout); yiLabel->setVisible(false); jiLabel->setVisible(false); connect(yijichoose,&QRadioButton::clicked,this,&LunarCalendarWidget::customButtonsClicked); //默认打开黄历菜单 yijichoose->setChecked(true); yijistate = true; Q_EMIT yijichoose->clicked(true); //主布局 lineUp = new PartLineWidget(); lineDown = new PartLineWidget(); lineUp->setFixedSize(440, 1); lineDown->setFixedSize(440, 1); QVBoxLayout *verLayoutCalendar = new QVBoxLayout(this); verLayoutCalendar->setMargin(0); verLayoutCalendar->setSpacing(0); verLayoutCalendar->addWidget(widgetTime); verLayoutCalendar->addItem(new QSpacerItem(8,8)); verLayoutCalendar->addWidget(lineUp); verLayoutCalendar->addItem(new QSpacerItem(8,8)); verLayoutCalendar->addWidget(m_widgetTop); verLayoutCalendar->addWidget(widgetWeek); verLayoutCalendar->addWidget(m_widgetDayBody, 1); verLayoutCalendar->addWidget(widgetYearBody, 1); verLayoutCalendar->addWidget(widgetmonthBody, 1); verLayoutCalendar->addItem(new QSpacerItem(8,8)); verLayoutCalendar->addWidget(lineDown); controlDownLine(); verLayoutCalendar->addItem(new QSpacerItem(8,8)); verLayoutCalendar->addWidget(labWidget); verLayoutCalendar->addWidget(yijiWidget); widgetWeek->setContentsMargins(16,0,16,0); m_widgetDayBody->setContentsMargins(16,0,16,0); widgetYearBody->setContentsMargins(16,0,16,0); widgetmonthBody->setContentsMargins(16,0,16,0); labWidget->setContentsMargins(16,0,16,0); yijiWidget->setContentsMargins(16,0,16,16); //绑定按钮和下拉框信号 connect(btnPrevYear, &kdk::KBorderlessButton::clicked, this, [=]() { switch (m_currentType) { case 0: showPreviousMonth(true); break; case 2: changeYear(false); break; case 1: default: break; } }); connect(btnNextYear, &kdk::KBorderlessButton::clicked, this, [=](){ switch (m_currentType) { case 0: showNextMonth(true); break; case 2: changeYear(true); break; case 1: default: break; } }); connect(btnToday, SIGNAL(clicked(bool)), this, SLOT(showToday())); // connect(cboxYearandMonth, SIGNAL(currentIndexChanged(QString)), this, SLOT(yearChanged(QString))); // connect(cboxMonth, SIGNAL(currentIndexChanged(QString)), this, SLOT(monthChanged(QString))); yijichoose->setProperty("needTranslucent",true); } //设置日历的地区 void LunarCalendarWidget::setLocaleCalendar() { #if 0 QStringList res = getLocale(); qDebug()<<"设置区域:"<setText(tr("Sun")); labWeeks.at(1)->setText(tr("Mon")); labWeeks.at(2)->setText(tr("Tue")); labWeeks.at(3)->setText(tr("Wed")); labWeeks.at(4)->setText(tr("Thur")); labWeeks.at(5)->setText(tr("Fri")); labWeeks.at(6)->setText(tr("Sat")); }else { labWeeks.at(0)->setText(tr("Mon")); labWeeks.at(1)->setText(tr("Tue")); labWeeks.at(2)->setText(tr("Wed")); labWeeks.at(3)->setText(tr("Thur")); labWeeks.at(4)->setText(tr("Fri")); labWeeks.at(5)->setText(tr("Sat")); labWeeks.at(6)->setText(tr("Sun")); } } //获取指定地区的编号代码 QStringList LunarCalendarWidget::getLocale(QString &language, QString &locale) { //判断区域(美国/中国) QString objpath; unsigned int uid = getuid(); objpath = objpath +"/org/freedesktop/Accounts/User"+QString::number(uid); QString formats; QString lang; QStringList result; QDBusInterface localeInterface("org.freedesktop.Accounts", objpath, "org.freedesktop.DBus.Properties", QDBusConnection::systemBus(),this); QDBusReply> reply = localeInterface.call("GetAll","org.freedesktop.Accounts.User"); if (reply.isValid()){ QMap propertyMap; propertyMap = reply.value(); if (propertyMap.keys().contains("FormatsLocale")) { formats = propertyMap.find("FormatsLocale").value().toString(); locale = formats; } if(lang.isEmpty() && propertyMap.keys().contains("Language")) { lang = propertyMap.find("Language").value().toString(); language = lang; } } else { qDebug() << "reply failed"; } result.append(formats); result.append(lang); return result; } void LunarCalendarWidget::initStyle() { //设置样式 // QStringList qss; // //自定义日控件颜色 // QString strSelectType; // if (selectType == SelectType_Rect) { // strSelectType = "SelectType_Rect"; // } else if (selectType == SelectType_Circle) { // strSelectType = "SelectType_Circle"; // } else if (selectType == SelectType_Triangle) { // strSelectType = "SelectType_Triangle"; // } else if (selectType == SelectType_Image) { // strSelectType = "SelectType_Image"; //} //计划去掉qss,保留农历切换的设置 //qss.append(QString("LunarCalendarItem{qproperty-showLunar:%1;}").arg(m_showLunar)); // this->setStyleSheet(qss.join("")); } void LunarCalendarWidget::analysisWorktimeJs() { /*解析json文件*/ QFile file("/usr/share/ukui-panel/plugin-calendar/html/jiejiari.json"); file.open(QIODevice::ReadOnly | QIODevice::Text); QString value = file.readAll(); file.close(); QJsonParseError parseJsonErr; QJsonDocument document = QJsonDocument::fromJson(value.toUtf8(),&parseJsonErr); if(!(parseJsonErr.error == QJsonParseError::NoError)) { qDebug()<isHidden()){ widgetYearBody->show(); widgetWeek->hide(); m_widgetDayBody->hide(); widgetmonthBody->hide(); changeMode(2); m_savedYear = date.year(); qDebug () << m_savedYear; } else{ widgetYearBody->hide(); widgetWeek->show(); m_widgetDayBody->show(); widgetmonthBody->hide(); date.setDate(m_savedYear,date.month(),date.day()); changeMode(0); initDate(); } } void LunarCalendarWidget::monthWidgetChange() { if(widgetmonthBody->isHidden()){ widgetYearBody->hide(); widgetWeek->hide(); m_widgetDayBody->hide(); widgetmonthBody->show(); changeMode(1); } else{ widgetYearBody->hide(); widgetWeek->show(); m_widgetDayBody->show(); widgetmonthBody->hide(); changeMode(0); } } void LunarCalendarWidget::changeMode(int mode) { m_currentType = mode; if(mode == 1 || mode == 2) { btnNextYear->setEnabled(false); btnPrevYear->setEnabled(false); } else { btnNextYear->setEnabled(true); btnPrevYear->setEnabled(true); } } //初始化日期面板 void LunarCalendarWidget::initDate() { int year = date.year(); int month = date.month(); int day = date.day(); if(oneRun) { downLabelHandle(date); yijihandle(date); oneRun = false; } //设置为今天,设置变量防止重复触发 btnClick = true; //cboxYearandMonth->setCurrentIndex(cboxYearandMonth->findText(QString("%1.%2").arg(year).arg(month))); btnClick = false; cboxYearandMonthLabel->setAlignment(Qt::AlignCenter); if(m_currentType != 2){ cboxYearandMonthLabel->setText(QString("%1.%2").arg(year).arg(month)); } else { cboxYearandMonthLabel->setText(QString("%1.%2").arg(m_savedYear).arg(month)); } //首先判断当前月的第一天是星期几 int week = LunarCalendarInfo::Instance()->getFirstDayOfWeek(year, month, FirstdayisSun); //当前月天数 int countDay = LunarCalendarInfo::Instance()->getMonthDays(year, month); //上月天数 int countDayPre = LunarCalendarInfo::Instance()->getMonthDays(1 == month ? year - 1 : year, 1 == month ? 12 : month - 1); //如果上月天数上月刚好一周则另外处理 int startPre, endPre, startNext, endNext, index, tempYear, tempMonth, tempDay; if (0 == week) { startPre = 0; endPre = 7; startNext = 0; endNext = 42 - (countDay + 7); } else { startPre = 0; endPre = week; startNext = week + countDay; endNext = 42; } //纠正1月份前面部分偏差,1月份前面部分是上一年12月份 tempYear = year; tempMonth = month - 1; if (tempMonth < 1) { tempYear--; tempMonth = 12; } //显示上月天数 for (int i = startPre; i < endPre; i++) { index = i; tempDay = countDayPre - endPre + i + 1; QDate date(tempYear, tempMonth, tempDay); QString lunar = LunarCalendarInfo::Instance()->getLunarDay(tempYear, tempMonth, tempDay); dayItems.at(index)->setDate(date, lunar, LunarCalendarItem::DayType_MonthPre); dayItems.at(index)->setFont(m_fontName); } //纠正12月份后面部分偏差,12月份后面部分是下一年1月份 tempYear = year; tempMonth = month + 1; if (tempMonth > 12) { tempYear++; tempMonth = 1; } //显示下月天数 for (int i = startNext; i < endNext; i++) { index = 42 - endNext + i; tempDay = i - startNext + 1; QDate date(tempYear, tempMonth, tempDay); QString lunar = LunarCalendarInfo::Instance()->getLunarDay(tempYear, tempMonth, tempDay); dayItems.at(index)->setDate(date, lunar, LunarCalendarItem::DayType_MonthNext); } //重新置为当前年月 tempYear = year; tempMonth = month; QFont font(m_fontName); //显示当前月 for (int i = week; i < (countDay + week); i++) { index = (0 == week ? (i + 7) : i); tempDay = i - week + 1; QDate date(tempYear, tempMonth, tempDay); QString lunar = LunarCalendarInfo::Instance()->getLunarDay(tempYear, tempMonth, tempDay); dayItems.at(index)->setDate(date, lunar, LunarCalendarItem::DayType_MonthCurrent); } for (int i=0;i<12;i++){ monthItems.at(i)->setDate(QDate(date.year(),i+1,1)); yearItems.at(i)->setDate(date.addYears(i)); yearItems.at(i)->setFont(font); monthItems.at(i)->setFont(font); } auto it = dayItems.begin(); for(;it!=dayItems.end();it++){ (*it)->setFont(font); } auto itw = labWeeks.begin(); QFont f(m_fontName); f.setPixelSize(14); for(;itw!=labWeeks.end();itw++){ (*itw)->setFont(f); } labBottom->setFont(m_font); labBottom->repaint(); yijichooseLabel->setFont(m_font); yijichooseLabel->repaint(); yiLabel->setFont(m_font); jiLabel->setFont(m_font); yijiWidget->repaint(); QFont smallfont = m_font; if(QLocale::system().name() != "zh_CN"){ smallfont.setPointSize(8); } btnYear->setFont(smallfont); btnYear->repaint(); btnToday->setFont(smallfont); btnToday->repaint(); btnMonth->setFont(smallfont); btnMonth->repaint(); m_widgetTop->repaint(); cboxYearandMonthLabel->setFont(m_font); cboxYearandMonthLabel->repaint(); } void LunarCalendarWidget::customButtonsClicked(int x) { if (x) { yiLabel->setVisible(true); jiLabel->setVisible(true); yijistate = true; Q_EMIT yijiChangeUp(); } else { yiLabel->setVisible(false); jiLabel->setVisible(false); Q_EMIT yijiChangeDown(); yijistate = false; } } QString LunarCalendarWidget::getSettings() { QString arg = "配置文件"; return arg; } void LunarCalendarWidget::setSettings(QString arg) { } void LunarCalendarWidget::downLabelHandle(const QDate &date) { QString strHoliday; QString strSolarTerms; QString strLunarFestival; QString strLunarYear; QString strLunarMonth; QString strLunarDay; LunarCalendarInfo::Instance()->getLunarCalendarInfo(date.year(), date.month(), date.day(), strHoliday, strSolarTerms, strLunarFestival, strLunarYear, strLunarMonth, strLunarDay); QString labBottomarg = strLunarYear + " " + strLunarMonth + strLunarDay; labBottom->setText(labBottomarg); } void LunarCalendarWidget::yijihandle(const QDate &date) { /*解析json文件*/ QFile file(QString("/usr/share/ukui-panel/plugin-calendar/html/hlnew/hl%1.json").arg(date.year())); file.open(QIODevice::ReadOnly | QIODevice::Text); QString value = file.readAll(); file.close(); QJsonParseError parseJsonErr; QJsonDocument document = QJsonDocument::fromJson(value.toUtf8(),&parseJsonErr); if(!(parseJsonErr.error == QJsonParseError::NoError)) { qDebug()<setText("宜:"); jiLabel->setText("忌:"); return; } QJsonObject jsonObject = document.object(); if(jsonObject.contains(QString("d%1").arg(date.toString("MMdd")))) { QJsonValue jsonValueList = jsonObject.value(QString("d%1").arg(date.toString("MMdd"))); QJsonObject item = jsonValueList.toObject(); QString yiString; QString jiString; if (item["y"].toString() == "." || item["y"].isNull()){ yiString = "宜:"; }else { yiString = "宜:" + item["y"].toString(); } if (item["j"].toString() == "." || item["j"].isNull()){ jiString = "忌:"; }else { jiString = "忌:" + item["j"].toString(); } yiLabel->setText(yiString); jiLabel->setText(jiString); } } void LunarCalendarWidget::yearChanged(const QString &arg1) { //如果是单击按钮切换的日期变动则不需要触发 if (btnClick) { return; } int nIndex = arg1.indexOf("."); if(-1 == nIndex){ return; } int year = arg1.mid(0,nIndex).toInt(); int month = arg1.mid(nIndex + 1).toInt(); int day = date.day(); dateChanged(year, month, day); } void LunarCalendarWidget::monthChanged(const QString &arg1) { //如果是单击按钮切换的日期变动则不需要触发 if (btnClick) { return; } int year = date.year(); int month = arg1.mid(0, arg1.length()).toInt(); int day = date.day(); dateChanged(year, month, day); } void LunarCalendarWidget::labClicked(const QDate &date, const LunarCalendarItem::DayType &dayType) { this->date = date; s_clickDate = date; qDebug() << s_clickDate; if (LunarCalendarItem::DayType_MonthPre == dayType){ showPreviousMonth(false); } else if (LunarCalendarItem::DayType_MonthNext == dayType) { showNextMonth(false); } else{ dayChanged(this->date,s_clickDate); } } void LunarCalendarWidget::updateYearClicked(const QDate &date, const LunarCalendarYearItem::DayType &dayType) { //通过传来的日期,设置当前年月份 this->date = date; widgetYearBody->hide(); widgetWeek->show(); m_widgetDayBody->show(); widgetmonthBody->hide(); s_clickDate = date; changeDate(date); dayChanged(date,QDate()); changeMode(0); } void LunarCalendarWidget::updateMonthClicked(const QDate &date, const LunarCalendarMonthItem::DayType &dayType) { //通过传来的日期,设置当前年月份 this->date = date; widgetYearBody->hide(); widgetWeek->show(); m_widgetDayBody->show(); widgetmonthBody->hide(); // qDebug()<setCurrentIndex(cboxYearandMonth->findText(QString("%1.%2").arg(year).arg(month))); btnClick = false; cboxYearandMonthLabel->setText(QString("%1.%2").arg(year).arg(month)); //首先判断当前月的第一天是星期几 int week = LunarCalendarInfo::Instance()->getFirstDayOfWeek(year, month, FirstdayisSun); //当前月天数 int countDay = LunarCalendarInfo::Instance()->getMonthDays(year, month); //上月天数 int countDayPre = LunarCalendarInfo::Instance()->getMonthDays(1 == month ? year - 1 : year, 1 == month ? 12 : month - 1); //如果上月天数上月刚好一周则另外处理 int startPre, endPre, startNext, endNext, index, tempYear, tempMonth, tempDay; if (0 == week) { startPre = 0; endPre = 7; startNext = 0; endNext = 42 - (countDay + 7); } else { startPre = 0; endPre = week; startNext = week + countDay; endNext = 42; } //纠正1月份前面部分偏差,1月份前面部分是上一年12月份 tempYear = year; tempMonth = month - 1; if (tempMonth < 1) { tempYear--; tempMonth = 12; } //显示上月天数 for (int i = startPre; i < endPre; i++) { index = i; tempDay = countDayPre - endPre + i + 1; QDate date(tempYear, tempMonth, tempDay); QString lunar = LunarCalendarInfo::Instance()->getLunarDay(tempYear, tempMonth, tempDay); dayItems.at(index)->setDate(date, lunar, LunarCalendarItem::DayType_MonthPre); } //纠正12月份后面部分偏差,12月份后面部分是下一年1月份 tempYear = year; tempMonth = month + 1; if (tempMonth > 12) { tempYear++; tempMonth = 1; } //显示下月天数 for (int i = startNext; i < endNext; i++) { index = 42 - endNext + i; tempDay = i - startNext + 1; QDate date(tempYear, tempMonth, tempDay); QString lunar = LunarCalendarInfo::Instance()->getLunarDay(tempYear, tempMonth, tempDay); dayItems.at(index)->setDate(date, lunar, LunarCalendarItem::DayType_MonthNext); } //重新置为当前年月 tempYear = year; tempMonth = month; //显示当前月 for (int i = week; i < (countDay + week); i++) { index = (0 == week ? (i + 7) : i); tempDay = i - week + 1; QDate date(tempYear, tempMonth, tempDay); QString lunar = LunarCalendarInfo::Instance()->getLunarDay(tempYear, tempMonth, tempDay); dayItems.at(index)->setDate(date, lunar, LunarCalendarItem::DayType_MonthCurrent); } for (int i=0;i<12;i++){ yearItems.at(i)->setDate(s_clickDate.addYears(i)); monthItems.at(i)->setDate(QDate(s_clickDate.year(),i+1,1)); } } void LunarCalendarWidget::dayChanged(const QDate &date,const QDate &m_date) { //计算星期几,当前天对应标签索引=日期+星期几-1 int year = date.year(); int month = date.month(); int day = date.day(); int week = LunarCalendarInfo::Instance()->getFirstDayOfWeek(year, month, FirstdayisSun); //选中当前日期,其他日期恢复,这里还有优化空间,比方说类似单选框机制 for (int i = 0; i < 42; i++) { //当月第一天是星期天要另外计算 int index = day + week - 1; if (week == 0) { index = day + 6; } dayItems.at(i)->setSelect(false); if(dayItems.at(i)->getDate() == m_date) { dayItems.at(i)->setSelect(i == index); } if (i == index) { downLabelHandle(dayItems.at(i)->getDate()); yijihandle(dayItems.at(i)->getDate()); } } //发送日期单击信号 Q_EMIT clicked(date); //发送日期更新信号 Q_EMIT selectionChanged(); } void LunarCalendarWidget::dateChanged(int year, int month, int day) { //如果原有天大于28则设置为1,防止出错 if(year <= 1970 || year >=2099){ return ; } date.setDate(year, month, day > 28 ? 1 : day); initDate(); } bool LunarCalendarWidget::getShowLunar() { //语言是简体或繁体中文且区域是中国且GSetting的值时, //这个时候才显示农历和黄历信息 QString lang,format; getLocale(lang,format); //qInfo() << lang << format << (calendar_gsettings->get("calendar").toString() == "lunar") ; if((lang.contains("zh_CN")||lang.contains("zh_HK")) && (calendar_gsettings->get("calendar").toString() == "lunar")){ m_showLunar = true; }else { m_showLunar = false; } return m_showLunar; } void LunarCalendarWidget::setShowLunar(bool showLunar) { qDebug() << showLunar; bool realShow = showLunar & yijistate; //日界面需要重绘 for(auto i = 0 ;i < dayItems.size();i++) { dayItems.at(i)->setShowLunar(showLunar); } //日期字符串要重新写 lunarstate = realShow; //黄历信息不能再显示了 yiLabel->setVisible(realShow); jiLabel->setVisible(realShow); //yijistate = realShow; labWidget->setVisible(showLunar); yijiWidget->setVisible(showLunar); yijichoose->setChecked(yijistate); //重新布局当前窗口 Q_EMIT almanacChanged(realShow); } LunarCalendarWidget::CalendarStyle LunarCalendarWidget::getCalendarStyle() const { return this->calendarStyle; } QDate LunarCalendarWidget::getDate() const { return this->date; } QColor LunarCalendarWidget::getWeekTextColor() const { return this->weekTextColor; } QColor LunarCalendarWidget::getWeekBgColor() const { return this->weekBgColor; } QString LunarCalendarWidget::getBgImage() const { return this->bgImage; } LunarCalendarWidget::SelectType LunarCalendarWidget::getSelectType() const { return this->selectType; } QColor LunarCalendarWidget::getBorderColor() const { return this->borderColor; } QColor LunarCalendarWidget::getWeekColor() const { return this->weekColor; } QColor LunarCalendarWidget::getSuperColor() const { return this->superColor; } QColor LunarCalendarWidget::getLunarColor() const { return this->lunarColor; } QColor LunarCalendarWidget::getCurrentTextColor() const { return this->currentTextColor; } QColor LunarCalendarWidget::getOtherTextColor() const { return this->otherTextColor; } QColor LunarCalendarWidget::getSelectTextColor() const { return this->selectTextColor; } QColor LunarCalendarWidget::getHoverTextColor() const { return this->hoverTextColor; } QColor LunarCalendarWidget::getCurrentLunarColor() const { return this->currentLunarColor; } QColor LunarCalendarWidget::getOtherLunarColor() const { return this->otherLunarColor; } QColor LunarCalendarWidget::getSelectLunarColor() const { return this->selectLunarColor; } QColor LunarCalendarWidget::getHoverLunarColor() const { return this->hoverLunarColor; } QColor LunarCalendarWidget::getCurrentBgColor() const { return this->currentBgColor; } QColor LunarCalendarWidget::getOtherBgColor() const { return this->otherBgColor; } QColor LunarCalendarWidget::getSelectBgColor() const { return this->selectBgColor; } QColor LunarCalendarWidget::getHoverBgColor() const { return this->hoverBgColor; } QSize LunarCalendarWidget::sizeHint() const { return QSize(600, 500); } QSize LunarCalendarWidget::minimumSizeHint() const { return QSize(200, 150); } //显示上一年 void LunarCalendarWidget::showPreviousYear() { int year = date.year(); int month = date.month(); int day = date.day(); if (year <= 1901) { return; } year--; dateChanged(year, month, day); } //显示下一年 void LunarCalendarWidget::showNextYear() { int year = date.year(); int month = date.month(); int day = date.day(); if (year >= 2099) { return; } year++; dateChanged(year, month, day); } //显示上月日期 void LunarCalendarWidget::showPreviousMonth(bool date_clicked) { int year = date.year(); int month = date.month(); int day = date.day(); if (year <= 1901 && month == 1) { return; } //extra: if (date_clicked) month--; if (month < 1) { month = 12; year--; } dateChanged(year, month, day); } //显示下月日期 void LunarCalendarWidget::showNextMonth(bool date_clicked) { int year = date.year(); int month = date.month(); int day = date.day(); if (year >= 2099 ) { return; } //extra if (date_clicked)month++; if (month > 12) { month = 1; year++; } dateChanged(year, month, day); //dayChanged(this->date,clickDate); } //转到今天 void LunarCalendarWidget::showToday() { widgetYearBody->hide(); widgetmonthBody->hide(); m_widgetDayBody->show(); widgetWeek->show(); date = QDate::currentDate(); changeMode(0); initDate(); s_clickDate = date; dayChanged(this->date,QDate()); } void LunarCalendarWidget::setCalendarStyle(const LunarCalendarWidget::CalendarStyle &calendarStyle) { if (this->calendarStyle != calendarStyle) { this->calendarStyle = calendarStyle; } } void LunarCalendarWidget::setWeekNameFormat(bool FirstDayisSun) { FirstdayisSun = FirstDayisSun; setLocaleCalendar();//在设置是从某星期作为起点时,再判断某区域下日历的显示 initDate(); } void LunarCalendarWidget::setDate(const QDate &date) { if (this->date != date) { this->date = date; initDate(); } } void LunarCalendarWidget::setWeekTextColor(const QColor &weekTextColor) { if (this->weekTextColor != weekTextColor) { this->weekTextColor = weekTextColor; initStyle(); } } void LunarCalendarWidget::setWeekBgColor(const QColor &weekBgColor) { if (this->weekBgColor != weekBgColor) { this->weekBgColor = weekBgColor; initStyle(); } } void LunarCalendarWidget::setBgImage(const QString &bgImage) { if (this->bgImage != bgImage) { this->bgImage = bgImage; initStyle(); } } void LunarCalendarWidget::setSelectType(const LunarCalendarWidget::SelectType &selectType) { if (this->selectType != selectType) { this->selectType = selectType; initStyle(); } } void LunarCalendarWidget::setBorderColor(const QColor &borderColor) { if (this->borderColor != borderColor) { this->borderColor = borderColor; initStyle(); } } void LunarCalendarWidget::setWeekColor(const QColor &weekColor) { if (this->weekColor != weekColor) { this->weekColor = weekColor; initStyle(); } } void LunarCalendarWidget::setSuperColor(const QColor &superColor) { if (this->superColor != superColor) { this->superColor = superColor; initStyle(); } } void LunarCalendarWidget::setLunarColor(const QColor &lunarColor) { if (this->lunarColor != lunarColor) { this->lunarColor = lunarColor; initStyle(); } } void LunarCalendarWidget::setCurrentTextColor(const QColor ¤tTextColor) { if (this->currentTextColor != currentTextColor) { this->currentTextColor = currentTextColor; initStyle(); } } void LunarCalendarWidget::setOtherTextColor(const QColor &otherTextColor) { if (this->otherTextColor != otherTextColor) { this->otherTextColor = otherTextColor; initStyle(); } } void LunarCalendarWidget::setSelectTextColor(const QColor &selectTextColor) { if (this->selectTextColor != selectTextColor) { this->selectTextColor = selectTextColor; initStyle(); } } void LunarCalendarWidget::setHoverTextColor(const QColor &hoverTextColor) { if (this->hoverTextColor != hoverTextColor) { this->hoverTextColor = hoverTextColor; initStyle(); } } void LunarCalendarWidget::setCurrentLunarColor(const QColor ¤tLunarColor) { if (this->currentLunarColor != currentLunarColor) { this->currentLunarColor = currentLunarColor; initStyle(); } } void LunarCalendarWidget::setOtherLunarColor(const QColor &otherLunarColor) { if (this->otherLunarColor != otherLunarColor) { this->otherLunarColor = otherLunarColor; initStyle(); } } void LunarCalendarWidget::setSelectLunarColor(const QColor &selectLunarColor) { if (this->selectLunarColor != selectLunarColor) { this->selectLunarColor = selectLunarColor; initStyle(); } } void LunarCalendarWidget::setHoverLunarColor(const QColor &hoverLunarColor) { if (this->hoverLunarColor != hoverLunarColor) { this->hoverLunarColor = hoverLunarColor; initStyle(); } } void LunarCalendarWidget::setCurrentBgColor(const QColor ¤tBgColor) { if (this->currentBgColor != currentBgColor) { this->currentBgColor = currentBgColor; initStyle(); } } void LunarCalendarWidget::setOtherBgColor(const QColor &otherBgColor) { if (this->otherBgColor != otherBgColor) { this->otherBgColor = otherBgColor; initStyle(); } } void LunarCalendarWidget::setSelectBgColor(const QColor &selectBgColor) { if (this->selectBgColor != selectBgColor) { this->selectBgColor = selectBgColor; initStyle(); } } void LunarCalendarWidget::setHoverBgColor(const QColor &hoverBgColor) { if (this->hoverBgColor != hoverBgColor) { this->hoverBgColor = hoverBgColor; initStyle(); } } void LunarCalendarWidget::changeMonth(bool forward) { int year = date.year(); int month = date.month(); int day = date.day(); if (year <= 1901 && month == 1) { return; } if(forward){ month +=3; if(month > 12) { year += 1; month -=12; } }else{ month -=3; if(month<=0){ year -=1; month +=12; } } dateChanged(year, month, day); } void LunarCalendarWidget::changeYear(bool forward) { int year = date.year(); int month = date.month(); int day = date.day(); if (year <= 1901 || year >= 2099) { return; } if(forward) year +=3; else year -=3; dateChanged(year, month, day); } void LunarCalendarWidget::wheelEvent(QWheelEvent *event) { switch (m_currentType) { case 0: if (event->delta() > 100) { showPreviousMonth(); } else if (event->delta() < -100) { showNextMonth(); } break; case 2: if (event->delta() > 100) { //向前三年 changeYear(false); } else if (event->delta() < -100){ //向后三年 changeYear(true); } break; default: case 1: break; } event->accept(); // return QWidget::wheelEvent(event); } bool LunarCalendarWidget::eventFilter(QObject *watched, QEvent *event) { if(event->type() == QEvent::MouseButtonPress){ qDebug() << event->type()<< watched->objectName(); QMouseEvent *mouse = static_cast(event); if(mouse!=nullptr) { if(watched == this){ if(mouse->source() == Qt::MouseEventSynthesizedByQt){ m_start_y = mouse->pos().y(); } if(m_currentType == 0){ QPoint pt = m_widgetDayBody->mapFromGlobal(QCursor::pos()); for(auto w : dayItems){ if(w->geometry().contains(pt)) m_clickedWidget = w; } }else if(m_currentType == 2){ QPoint pt = widgetYearBody->mapFromGlobal(QCursor::pos()); for(auto w : yearItems){ if(w->geometry().contains(pt)) m_clickedWidget = w; } }else if(m_currentType == 1){ QPoint pt = widgetmonthBody->mapFromGlobal(QCursor::pos()); for(auto w: monthItems){ if(w->geometry().contains(pt)) m_clickedWidget = w; } } return false; } } }else if(event->type()==QEvent::MouseButtonRelease){ qDebug() << event->type() << watched->objectName(); //return -1; QMouseEvent *mouse = static_cast(event); if(mouse!=nullptr) { if(watched == this){ if(mouse->source() == Qt::MouseEventSynthesizedByQt){ //触摸的释放 if(m_start_y == -1) return false; if( mouse->pos().y() - m_start_y > 100){ switch(m_currentType){ case 0: showNextMonth(); break; case 2: changeYear(true); break; } return false; }else if(mouse->pos().y() - m_start_y < -100){ switch(m_currentType){ case 0: showPreviousMonth(); break; case 2: changeYear(false); break; } return false; } } //鼠标抬起 if(m_clickedWidget==nullptr){ return false; } if(m_clickedWidget->geometry().contains(m_widgetDayBody->mapFromGlobal(QCursor::pos()))){ qDebug() << "选中"; LunarCalendarItem *item = qobject_cast(m_clickedWidget); if(dayItems.contains(item)) item->onSelected(); LunarCalendarYearItem *yItem = qobject_cast(m_clickedWidget); if(yearItems.contains(yItem)) yItem->onSelected(); LunarCalendarMonthItem *mItem = qobject_cast(m_clickedWidget); if(monthItems.contains(mItem)) mItem->onSelected(); } return false; } } } else if (event->type()==QEvent::MouseMove){ QMouseEvent *mouse = static_cast(event); if(mouse!=nullptr) { if(mouse->source()==Qt::MouseEventSynthesizedByQt){ return -1; } } if(m_currentType == 0){ for(auto w:dayItems){ if(w->geometry().contains(m_widgetDayBody->mapFromGlobal(QCursor::pos()))){ w->onEnter(); } else { w->onLeave(); } } } else if(m_currentType == 2){ for(auto w:yearItems){ if(w->geometry().contains(widgetYearBody->mapFromGlobal(QCursor::pos()))){ w->onEnter(); } else { w->onLeave(); } } } else if(m_currentType == 1){ for(auto w:monthItems){ if(w->geometry().contains(widgetmonthBody->mapFromGlobal(QCursor::pos()))){ w->onEnter(); }else{ w->onLeave(); } } } return false; } else if(event->type()==QEvent::Enter){ LunarCalendarItem *item = qobject_cast(watched); if(dayItems.contains(item) == true){ item->onEnter(); } LunarCalendarYearItem *yItem = qobject_cast(watched); if(yearItems.contains(yItem)){ yItem->onEnter(); } }else if(event->type()==QEvent::Leave){ for(auto day : dayItems) day->onLeave(); for (auto month :monthItems) month->onLeave(); for(auto year:yearItems) year->onLeave(); } else if(event->type()==QEvent::WindowDeactivate){ this->hide(); return false; } return false; } void LunarCalendarWidget::showCalendar(bool needShowToday) { KWindowSystem::setState(winId(),NET::SkipPager|NET::SkipTaskbar|NET::SkipSwitcher); show(); if(needShowToday) { showToday(); } } void LunarCalendarWidget::initTransparency() { const QByteArray tranparency(TRANSPARENCY_SETTING); if (QGSettings::isSchemaInstalled(tranparency)){ m_transparencySetting = new QGSettings(tranparency); m_trans = m_transparencySetting->get(TRANSPARENCY_KEY).toDouble()*255; update(); connect(m_transparencySetting,&QGSettings::changed,this,[=](const QString &key) { if(key == TRANSPARENCY_KEY) { m_trans = m_transparencySetting->get(TRANSPARENCY_KEY).toDouble()*255; update(); } }); } else { m_trans = 0.75; update(); } } void LunarCalendarWidget::paintEvent(QPaintEvent*e) { QStyleOption opt; opt.init(this); QPainter p(this); QColor color = palette().color(QPalette::Base); color.setAlpha(m_trans); QBrush brush = QBrush(color); p.setBrush(brush); p.setRenderHints(QPainter::Antialiasing|QPainter::SmoothPixmapTransform); p.setPen(Qt::NoPen); p.drawRoundedRect(opt.rect,6,6); return QWidget::paintEvent(e); } PartLineWidget::PartLineWidget(QWidget *parent) : QWidget(parent) { } void PartLineWidget::paintEvent(QPaintEvent *event) { QPainter p(this); QRect rect = this->rect(); p.setRenderHint(QPainter::Antialiasing); // 反锯齿; QColor color=qApp->palette().color(QPalette::BrightText); // if(color.red() == 255 && color.green() == 255 && color.blue() == 255){ // color.setRgb(1,1,1,255); // } else if (color.red() == 31 && color.green() == 32 && color.blue() == 34) { // color.setRgb(255,255,255,255); // } //color.setAlphaF(0.08); p.setBrush(color); p.setOpacity(0.08); p.setPen(Qt::NoPen); p.drawRoundedRect(rect,0,0); QWidget::paintEvent(event); } statelabel::statelabel() : QLabel() { } //鼠标点击事件 void statelabel::mousePressEvent(QMouseEvent *event) { if (event->buttons() == Qt::LeftButton){ Q_EMIT labelclick(); } return; } //快捷键 void LunarCalendarWidget::keyPressEvent(QKeyEvent *ev) { if(ev->key()==Qt::Key_Escape) { this->hide(); } QWidget::keyPressEvent(ev); } ukui-panel-4.0.0.4/plugin-calendar/lunarcalendarwidget/frmlunarcalendarwidget.cpp0000644000175000017500000001476214560306203026674 0ustar fengfeng/* * Copyright (C) 2019 Tianjin KYLIN Information Technology Co., Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see #include #define TRANSPARENCY_SETTINGS "org.ukui.control-center.personalise" #define TRANSPARENCY_KEY "transparency" #define PANEL_CONTROL_IN_CALENDAR "org.ukui.control-center.panel.plugins" #define LUNAR_KEY "calendar" #define FIRST_DAY_KEY "firstday" const int CALENDAR_WIDTH = 440; const int CALENDAR_HEIGHT = 500; const int CALENDAR_LUNAR_HEIGHT = 75; const int CALENDAR_LUNAR_HEIGHT_PLUSE = 77; frmLunarCalendarWidget::frmLunarCalendarWidget(QWidget *parent) : QWidget(parent), ui(new Ui::frmLunarCalendarWidget) { installEventFilter(this); ui->setupUi(this); connect(ui->lunarCalendarWidget,&LunarCalendarWidget::almanacChanged,this,&frmLunarCalendarWidget::showAlmanac); connect(this, &frmLunarCalendarWidget::onShowToday,ui->lunarCalendarWidget,&LunarCalendarWidget::showToday); this->initForm(); //默认展开状态 bool showLunar = ui->lunarCalendarWidget->getShowLunar(); if(showLunar) this->setFixedSize(CALENDAR_WIDTH, CALENDAR_HEIGHT+CALENDAR_LUNAR_HEIGHT+CALENDAR_LUNAR_HEIGHT_PLUSE); else this->setFixedSize(CALENDAR_WIDTH,CALENDAR_HEIGHT); const QByteArray transparency_id(TRANSPARENCY_SETTINGS); if(QGSettings::isSchemaInstalled(transparency_id)){ transparency_gsettings = new QGSettings(transparency_id); } const QByteArray calendar_id(PANEL_CONTROL_IN_CALENDAR); if(QGSettings::isSchemaInstalled(calendar_id)){ calendar_gsettings = new QGSettings(calendar_id); //公历/农历切换 connect(calendar_gsettings, &QGSettings::changed, this, [=] (const QString &key){ if(key == LUNAR_KEY){ ckShowLunar_stateChanged(calendar_gsettings->get(LUNAR_KEY).toString() == "lunar"); } if (key == FIRST_DAY_KEY) { cboxWeekNameFormat_currentIndexChanged(calendar_gsettings->get(FIRST_DAY_KEY).toString() == "sunday"); } }); } else { ckShowLunar_stateChanged(false); cboxWeekNameFormat_currentIndexChanged(false); } setProperty("useStyleWindowManager",false); } frmLunarCalendarWidget::~frmLunarCalendarWidget() { delete ui; } void frmLunarCalendarWidget::showAlmanac(bool big) { qDebug() << __FILE__ <<__LINE__<<__FUNCTION__<setFixedSize(CALENDAR_WIDTH, CALENDAR_HEIGHT+CALENDAR_LUNAR_HEIGHT+CALENDAR_LUNAR_HEIGHT_PLUSE); Q_EMIT yijiFChangeUp(); } void frmLunarCalendarWidget::changeDownSize() { yijiIsUp = false; this->setFixedSize(CALENDAR_WIDTH, CALENDAR_HEIGHT+CALENDAR_LUNAR_HEIGHT); Q_EMIT yijiFChangeDown(); } void frmLunarCalendarWidget::initForm() { //ui->cboxWeekNameFormat->setCurrentIndex(0); } void frmLunarCalendarWidget::cboxCalendarStyle_currentIndexChanged(int index) { ui->lunarCalendarWidget->setCalendarStyle((LunarCalendarWidget::CalendarStyle)index); } void frmLunarCalendarWidget::cboxSelectType_currentIndexChanged(int index) { ui->lunarCalendarWidget->setSelectType((LunarCalendarWidget::SelectType)index); } void frmLunarCalendarWidget::cboxWeekNameFormat_currentIndexChanged(bool FirstDayisSun) { ui->lunarCalendarWidget->setWeekNameFormat(FirstDayisSun); } void frmLunarCalendarWidget::ckShowLunar_stateChanged(bool arg1) { if (arg1) { if (yijiIsUp) { this->setFixedSize(CALENDAR_WIDTH,CALENDAR_HEIGHT+CALENDAR_LUNAR_HEIGHT+CALENDAR_LUNAR_HEIGHT_PLUSE); } else { this->setFixedSize(CALENDAR_WIDTH,CALENDAR_HEIGHT+CALENDAR_LUNAR_HEIGHT); } } else { this->setFixedSize(CALENDAR_WIDTH,CALENDAR_HEIGHT); } } void frmLunarCalendarWidget::paintEvent(QPaintEvent *) { QStyleOption opt; opt.init(this); QRect rect = this->rect(); QPainter p(this); double tran =1; const QByteArray transparency_id(TRANSPARENCY_SETTINGS); if(QGSettings::isSchemaInstalled(transparency_id)){ tran=transparency_gsettings->get(TRANSPARENCY_KEY).toDouble()*255; } QColor color = palette().color(QPalette::Base); color.setAlpha(tran); QBrush brush =QBrush(color); p.setBrush(brush); p.setPen(Qt::NoPen); p.setRenderHint(QPainter::Antialiasing); p.drawRoundedRect(rect,6,6); style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this); } /* * 事件过滤,检测鼠标点击外部活动区域则收回收纳栏 */ bool frmLunarCalendarWidget::eventFilter(QObject *obj, QEvent *event) { if (obj == this) { if (event->type() == QEvent::MouseButtonPress) { QMouseEvent *mouseEvent = static_cast(event); if (mouseEvent->button() == Qt::LeftButton) { // this->hide(); // status=ST_HIDE; return true; } else if(mouseEvent->button() == Qt::RightButton) { return true; } } else if(event->type() == QEvent::ContextMenu) { return false; } else if (event->type() == QEvent::WindowDeactivate) { //qDebug()<<"激活外部窗口"; this->hide(); return true; } else if (event->type() == QEvent::StyleChange) { } } if (!isActiveWindow()) { activateWindow(); } return false; } ukui-panel-4.0.0.4/plugin-calendar/lunarcalendarwidget/lunarcalendarinfo.h0000644000175000017500000000676214560306203025305 0ustar fengfeng/* * Copyright (C) 2019 Tianjin KYLIN Information Technology Co., Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see #ifdef quc #if (QT_VERSION < QT_VERSION_CHECK(5,7,0)) #include #else #include #endif class QDESIGNER_WIDGET_EXPORT LunarCalendarInfo : public QObject #else class LunarCalendarInfo : public QObject #endif { Q_OBJECT public: static LunarCalendarInfo *Instance(); explicit LunarCalendarInfo(QObject *parent = 0); //计算是否闰年 bool isLoopYear(int year); //计算指定年月该月共多少天 int getMonthDays(int year, int month); //计算指定年月对应到该月共多少天 int getTotalMonthDays(int year, int month); //计算指定年月对应星期几 int getFirstDayOfWeek(int year, int month, bool FirstDayisSun); //计算国际节日 QString getHoliday(int month, int day); //计算二十四节气 QString getSolarTerms(int year, int month, int day); //计算农历节日(必须传入农历年份月份) QString getLunarFestival(int month, int day); //计算农历年 天干+地支+生肖 QString getLunarYear(int year); //计算指定年月日农历信息,包括公历节日和农历节日及二十四节气 void getLunarCalendarInfo(int year, int month, int day, QString &strHoliday, QString &strSolarTerms, QString &strLunarFestival, QString &strLunarYear, QString &strLunarMonth, QString &strLunarDay); //获取指定年月日农历信息 QString getLunarInfo(int year, int month, int day, bool yearInfo, bool monthInfo, bool dayInfo); QString getLunarYearMonthDay(int year, int month, int day); QString getLunarMonthDay(int year, int month, int day); QString getLunarDay(int year, int month, int day); private: static QScopedPointer self; QList lunarCalendarTable; //农历年表 QList springFestival; //春节公历日期 QList lunarData; //农历每月数据 QList chineseTwentyFourData; //农历二十四节气数据 QList monthAdd; //公历每月前面的天数 QList listDayName; //农历日期名称集合 QList listMonthName; //农历月份名称集合 QList listSolarTerm; //二十四节气名称集合 QList listTianGan; //天干名称集合 QList listDiZhi; //地支名称集合 QList listShuXiang; //属相名称集合 }; #endif // LUNARCALENDARINFO_H ukui-panel-4.0.0.4/plugin-calendar/lunarcalendarwidget/lunarcalendarmonthitem.h0000644000175000017500000001744314560306203026354 0ustar fengfeng/* * Copyright (C) 2019 Tianjin KYLIN Information Technology Co., Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see #include #include #ifdef quc #if (QT_VERSION < QT_VERSION_CHECK(5,7,0)) #include #else #include #endif class QDESIGNER_WIDGET_EXPORT LunarCalendarItem : public QWidget #else class LunarCalendarMonthItem : public QWidget #endif { Q_OBJECT Q_ENUMS(DayType) Q_ENUMS(SelectType) Q_PROPERTY(bool select READ getSelect WRITE setSelect) Q_PROPERTY(bool showLunar READ getShowLunar WRITE setShowLunar) Q_PROPERTY(QString bgImage READ getBgImage WRITE setBgImage) Q_PROPERTY(SelectType selectType READ getSelectType WRITE setSelectType) Q_PROPERTY(QDate date READ getDate WRITE setDate) Q_PROPERTY(QString lunar READ getLunar WRITE setLunar) Q_PROPERTY(DayType dayType READ getDayType WRITE setDayType) Q_PROPERTY(QColor borderColor READ getBorderColor WRITE setBorderColor) Q_PROPERTY(QColor weekColor READ getWeekColor WRITE setWeekColor) Q_PROPERTY(QColor superColor READ getSuperColor WRITE setSuperColor) Q_PROPERTY(QColor lunarColor READ getLunarColor WRITE setLunarColor) Q_PROPERTY(QColor currentTextColor READ getCurrentTextColor WRITE setCurrentTextColor) Q_PROPERTY(QColor otherTextColor READ getOtherTextColor WRITE setOtherTextColor) Q_PROPERTY(QColor selectTextColor READ getSelectTextColor WRITE setSelectTextColor) Q_PROPERTY(QColor hoverTextColor READ getHoverTextColor WRITE setHoverTextColor) Q_PROPERTY(QColor currentLunarColor READ getCurrentLunarColor WRITE setCurrentLunarColor) Q_PROPERTY(QColor otherLunarColor READ getOtherLunarColor WRITE setOtherLunarColor) public: enum DayType { DayType_MonthPre = 0, //上月剩余天数 DayType_MonthNext = 1, //下个月的天数 DayType_MonthCurrent = 2, //当月天数 DayType_WeekEnd = 3 //周末 }; enum SelectType { SelectType_Rect = 0, //矩形背景 SelectType_Circle = 1, //圆形背景 SelectType_Triangle = 2, //带三角标 SelectType_Image = 3 //图片背景 }; explicit LunarCalendarMonthItem(QString fontName, QWidget *parent = 0); QMap> worktime; void onEnter(); void onLeave(); void onSelected(); protected: void paintEvent(QPaintEvent *); void drawBg(QPainter *painter); void drawBgCurrent(QPainter *painter, const QColor &color); void drawBgHover(QPainter *painter, const QColor &color); void drawMonth(QPainter *painter); private: bool hover; //鼠标是否悬停 bool pressed; //鼠标是否按下 bool select; //是否选中 bool showLunar; //显示农历 QString bgImage; //背景图片 SelectType selectType; //选中模式 QDate date; //当前日期 QString lunar; //农历信息 DayType dayType; //当前日类型 QColor borderColor; //边框颜色 QColor weekColor; //周末颜色 QColor superColor; //角标颜色 QColor lunarColor; //农历节日颜色 QColor currentTextColor; //当前月文字颜色 QColor otherTextColor; //其他月文字颜色 QColor selectTextColor; //选中日期文字颜色 QColor hoverTextColor; //悬停日期文字颜色 QColor currentLunarColor; //当前月农历文字颜色 QColor otherLunarColor; //其他月农历文字颜色 QColor selectLunarColor; //选中日期农历文字颜色 QColor hoverLunarColor; //悬停日期农历文字颜色 QColor currentBgColor; //当前月背景颜色 QColor otherBgColor; //其他月背景颜色 QColor selectBgColor; //选中日期背景颜色 QColor hoverBgColor; //悬停日期背景颜色 QFont m_font; public: bool getSelect() const; bool getShowLunar() const; QString getBgImage() const; SelectType getSelectType() const; QDate getDate() const; QString getLunar() const; DayType getDayType() const; QColor getBorderColor() const; QColor getWeekColor() const; QColor getSuperColor() const; QColor getLunarColor() const; QColor getCurrentTextColor() const; QColor getOtherTextColor() const; QColor getSelectTextColor() const; QColor getHoverTextColor() const; QColor getCurrentLunarColor() const; QColor getOtherLunarColor() const; QColor getSelectLunarColor() const; QColor getHoverLunarColor() const; QColor getCurrentBgColor() const; QColor getOtherBgColor() const; QColor getSelectBgColor() const; QColor getHoverBgColor() const; QSize sizeHint() const; QSize minimumSizeHint() const; void setFont(const QFont &font){ m_font = font; repaint(); } public Q_SLOTS: //设置是否选中 void setSelect(bool select); //设置是否显示农历信息 void setShowLunar(bool showLunar); //设置背景图片 void setBgImage(const QString &bgImage); //设置选中背景样式 void setSelectType(const SelectType &selectType); //设置日期 void setDate(const QDate &date); //设置农历 void setLunar(const QString &lunar); //设置类型 void setDayType(const DayType &dayType); //设置日期/农历/类型 void setDate(const QDate &date, const QString &lunar, const DayType &dayType); //设置边框颜色 void setBorderColor(const QColor &borderColor); //设置周末颜色 void setWeekColor(const QColor &weekColor); //设置角标颜色 void setSuperColor(const QColor &superColor); //设置农历节日颜色 void setLunarColor(const QColor &lunarColor); //设置当前月文字颜色 void setCurrentTextColor(const QColor ¤tTextColor); //设置其他月文字颜色 void setOtherTextColor(const QColor &otherTextColor); //设置选中日期文字颜色 void setSelectTextColor(const QColor &selectTextColor); //设置悬停日期文字颜色 void setHoverTextColor(const QColor &hoverTextColor); //设置当前月农历文字颜色 void setCurrentLunarColor(const QColor ¤tLunarColor); //设置其他月农历文字颜色 void setOtherLunarColor(const QColor &otherLunarColor); Q_SIGNALS: void clicked(const QDate &date, const LunarCalendarMonthItem::DayType &dayType); void monthMessage(const QDate &date, const LunarCalendarMonthItem::DayType &dayType); }; #endif // LUNARCALENDARMONTHITEM_H ukui-panel-4.0.0.4/plugin-calendar/lunarcalendarwidget/lunarcalendarmonthitem.cpp0000644000175000017500000003304514560306203026703 0ustar fengfeng/* * Copyright (C) 2019 Tianjin KYLIN Information Technology Co., Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see LunarCalendarMonthItem::LunarCalendarMonthItem(QString fontName, QWidget *parent) : QWidget(parent),m_font(fontName) { hover = false; pressed = false; select = false; select = false; showLunar = true; bgImage = ":/image/bg_calendar.png"; selectType = SelectType_Rect; date = QDate::currentDate(); lunar = "初一"; dayType = DayType_MonthCurrent; //实时监听主题变化 const QByteArray id("org.ukui.style"); QGSettings * fontSetting = new QGSettings(id, QByteArray(), this); connect(fontSetting, &QGSettings::changed,[=](QString key) { if((key.compare("style-name") == 0) || (key.compare("theme-color") == 0)|| (key.compare("widget-theme-name")==0) || (key.compare("styleName") == 0) || (key.compare("themeColor") == 0)|| (key.compare("widgetThemeName")==0) ){ weekColor = CalendarColor::CalendarColor::getThemeColor(CalendarColor::TEXT); currentTextColor = CalendarColor::CalendarColor::getThemeColor(CalendarColor::TEXT); otherTextColor = CalendarColor::CalendarColor::getThemeColor(CalendarColor::OTHER_TEXT); otherLunarColor = CalendarColor::CalendarColor::getThemeColor(CalendarColor::OTHER_TEXT); currentLunarColor = CalendarColor::CalendarColor::getThemeColor(CalendarColor::TEXT); lunarColor = CalendarColor::CalendarColor::getThemeColor(CalendarColor::TEXT); selectBgColor = CalendarColor::CalendarColor::getThemeColor(CalendarColor::CLICKED); //hoverBgColor = CalendarColor::CalendarColor::getThemeColor(CalendarColor::CLICKED); qreal mix = 0.2; hoverBgColor = CalendarColor::CalendarColor::mixColor(CalendarColor::CalendarColor::getThemeColor(CalendarColor::CLICKED),mix); this->update(); } }); weekColor = CalendarColor::CalendarColor::getThemeColor(CalendarColor::TEXT); currentTextColor = CalendarColor::CalendarColor::getThemeColor(CalendarColor::TEXT); otherTextColor = CalendarColor::CalendarColor::getThemeColor(CalendarColor::OTHER_TEXT); otherLunarColor = CalendarColor::CalendarColor::getThemeColor(CalendarColor::OTHER_TEXT); currentLunarColor = CalendarColor::CalendarColor::getThemeColor(CalendarColor::TEXT); lunarColor = CalendarColor::CalendarColor::getThemeColor(CalendarColor::TEXT); borderColor = QColor(180, 180, 180); superColor = CalendarColor::CalendarColor::getThemeColor(CalendarColor::WORK); selectLunarColor = CalendarColor::CalendarColor::getThemeColor(CalendarColor::WORK); hoverLunarColor = CalendarColor::CalendarColor::getThemeColor(CalendarColor::WORK); selectBgColor = CalendarColor::CalendarColor::getThemeColor(CalendarColor::CLICKED); //hoverBgColor = CalendarColor::CalendarColor::getThemeColor(CalendarColor::CLICKED); qreal mix = 0.2; hoverBgColor = CalendarColor::CalendarColor::mixColor(CalendarColor::CalendarColor::getThemeColor(CalendarColor::CLICKED),mix); setProperty("useStyleWindowManager",false); } void LunarCalendarMonthItem::onEnter() { hover = true; this->update(); } void LunarCalendarMonthItem::onLeave() { hover = false; this->update(); } void LunarCalendarMonthItem::onSelected() { Q_EMIT monthMessage(date, dayType); update(); } void LunarCalendarMonthItem::paintEvent(QPaintEvent *) { QDate dateNow = QDate::currentDate(); //绘制准备工作,启用反锯齿 QPainter painter(this); painter.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing); //绘制背景和边框 drawBg(&painter); //对比当前的时间,画选中状态 if(dateNow.month() == date.month() && dateNow.year() == date.year()) { drawBgCurrent(&painter, selectBgColor); if(hover) { drawBgHover(&painter, hoverBgColor); } currentTextColor =CalendarColor::CalendarColor::getThemeColor(CalendarColor::CLICKED_TEXT); } else { currentTextColor =CalendarColor::CalendarColor::getThemeColor(CalendarColor::TEXT); } //绘制悬停状态 if (hover || select) { drawBgHover(&painter, hoverBgColor); } //绘制日期 drawMonth(&painter); } void LunarCalendarMonthItem::drawBg(QPainter *painter) { painter->save(); //根据当前类型选择对应的颜色 QColor bgColor = currentBgColor; if (dayType == DayType_MonthPre || dayType == DayType_MonthNext) { bgColor = otherBgColor; } painter->restore(); } void LunarCalendarMonthItem::drawBgCurrent(QPainter *painter, const QColor &color) { painter->save(); painter->setPen(Qt::NoPen); painter->setBrush(color); QRect rect = this->rect(); rect = QRect(rect.x()+1,rect.y()+1,rect.width()-2,rect.height()-2); painter->drawRoundedRect(rect,6,6); painter->restore(); } void LunarCalendarMonthItem::drawBgHover(QPainter *painter, const QColor &color) { painter->save(); QRect rect = this->rect(); rect = QRect(rect.x()+1,rect.y()+1,rect.width()-2,rect.height()-2); painter->setPen(QPen(color,3)); painter->drawRoundedRect(rect,6,6); painter->restore(); } void LunarCalendarMonthItem::drawMonth(QPainter *painter) { int width = this->width(); int height = this->height(); int side = qMin(width, height); painter->save(); //根据当前类型选择对应的颜色 QColor color = currentTextColor; if (dayType == DayType_MonthPre || dayType == DayType_MonthNext) { color = otherTextColor; } else if (dayType == DayType_WeekEnd) { color = weekColor; } painter->setPen(color); QFont font = m_font; font.setPixelSize(side * 0.2); //设置文字粗细 font.setBold(true); painter->setFont(font); QRect dayRect = QRect(0, 0, width, height / 1.7); QString arg = QString::number(date.month()) /*+ "月"*/; switch(date.month()){ case 1: arg = tr("Janurary"); break; case 2: arg = tr("Februray"); break; case 3: arg = tr("March"); break; case 4: arg = tr("April"); break; case 5: arg = tr("May"); break; case 6: arg = tr("June"); break; case 7: arg = tr("July"); break; case 8: arg = tr("August"); break; case 9: arg = tr("September"); break; case 10: arg = tr("October"); break; case 11: arg = tr("November"); break; case 12: arg = tr("December"); break; default : break; } painter->drawText(dayRect, Qt::AlignHCenter | Qt::AlignBottom, arg); painter->restore(); } bool LunarCalendarMonthItem::getSelect() const { return this->select; } bool LunarCalendarMonthItem::getShowLunar() const { return this->showLunar; } QString LunarCalendarMonthItem::getBgImage() const { return this->bgImage; } LunarCalendarMonthItem::SelectType LunarCalendarMonthItem::getSelectType() const { return this->selectType; } QDate LunarCalendarMonthItem::getDate() const { return this->date; } QString LunarCalendarMonthItem::getLunar() const { return this->lunar; } LunarCalendarMonthItem::DayType LunarCalendarMonthItem::getDayType() const { return this->dayType; } QColor LunarCalendarMonthItem::getBorderColor() const { return this->borderColor; } QColor LunarCalendarMonthItem::getWeekColor() const { return this->weekColor; } QColor LunarCalendarMonthItem::getSuperColor() const { return this->superColor; } QColor LunarCalendarMonthItem::getLunarColor() const { return this->lunarColor; } QColor LunarCalendarMonthItem::getCurrentTextColor() const { return this->currentTextColor; } QColor LunarCalendarMonthItem::getOtherTextColor() const { return this->otherTextColor; } QColor LunarCalendarMonthItem::getSelectTextColor() const { return this->selectTextColor; } QColor LunarCalendarMonthItem::getHoverTextColor() const { return this->hoverTextColor; } QColor LunarCalendarMonthItem::getCurrentLunarColor() const { return this->currentLunarColor; } QColor LunarCalendarMonthItem::getOtherLunarColor() const { return this->otherLunarColor; } QColor LunarCalendarMonthItem::getSelectLunarColor() const { return this->selectLunarColor; } QColor LunarCalendarMonthItem::getHoverLunarColor() const { return this->hoverLunarColor; } QColor LunarCalendarMonthItem::getCurrentBgColor() const { return this->currentBgColor; } QColor LunarCalendarMonthItem::getOtherBgColor() const { return this->otherBgColor; } QColor LunarCalendarMonthItem::getSelectBgColor() const { return this->selectBgColor; } QColor LunarCalendarMonthItem::getHoverBgColor() const { return this->hoverBgColor; } QSize LunarCalendarMonthItem::sizeHint() const { return QSize(100, 100); } QSize LunarCalendarMonthItem::minimumSizeHint() const { return QSize(20, 20); } void LunarCalendarMonthItem::setSelect(bool select) { if (this->select != select) { this->select = select; this->update(); } } void LunarCalendarMonthItem::setShowLunar(bool showLunar) { this->showLunar = showLunar; this->update(); } void LunarCalendarMonthItem::setBgImage(const QString &bgImage) { if (this->bgImage != bgImage) { this->bgImage = bgImage; this->update(); } } void LunarCalendarMonthItem::setSelectType(const LunarCalendarMonthItem::SelectType &selectType) { if (this->selectType != selectType) { this->selectType = selectType; this->update(); } } void LunarCalendarMonthItem::setDate(const QDate &date) { if (this->date != date) { this->date = date; this->update(); } } void LunarCalendarMonthItem::setLunar(const QString &lunar) { if (this->lunar != lunar) { this->lunar = lunar; this->update(); } } void LunarCalendarMonthItem::setDayType(const LunarCalendarMonthItem::DayType &dayType) { if (this->dayType != dayType) { this->dayType = dayType; this->update(); } } void LunarCalendarMonthItem::setDate(const QDate &date, const QString &lunar, const DayType &dayType) { this->date = date; this->lunar = lunar; this->dayType = dayType; this->update(); } void LunarCalendarMonthItem::setBorderColor(const QColor &borderColor) { if (this->borderColor != borderColor) { this->borderColor = borderColor; this->update(); } } void LunarCalendarMonthItem::setWeekColor(const QColor &weekColor) { if (this->weekColor != weekColor) { this->weekColor = weekColor; this->update(); } } void LunarCalendarMonthItem::setSuperColor(const QColor &superColor) { if (this->superColor != superColor) { this->superColor = superColor; this->update(); } } void LunarCalendarMonthItem::setLunarColor(const QColor &lunarColor) { if (this->lunarColor != lunarColor) { this->lunarColor = lunarColor; this->update(); } } void LunarCalendarMonthItem::setCurrentTextColor(const QColor ¤tTextColor) { if (this->currentTextColor != currentTextColor) { this->currentTextColor = currentTextColor; this->update(); } } void LunarCalendarMonthItem::setOtherTextColor(const QColor &otherTextColor) { if (this->otherTextColor != otherTextColor) { this->otherTextColor = otherTextColor; this->update(); } } void LunarCalendarMonthItem::setSelectTextColor(const QColor &selectTextColor) { if (this->selectTextColor != selectTextColor) { this->selectTextColor = selectTextColor; this->update(); } } void LunarCalendarMonthItem::setHoverTextColor(const QColor &hoverTextColor) { if (this->hoverTextColor != hoverTextColor) { this->hoverTextColor = hoverTextColor; this->update(); } } void LunarCalendarMonthItem::setCurrentLunarColor(const QColor ¤tLunarColor) { if (this->currentLunarColor != currentLunarColor) { this->currentLunarColor = currentLunarColor; this->update(); } } void LunarCalendarMonthItem::setOtherLunarColor(const QColor &otherLunarColor) { if (this->otherLunarColor != otherLunarColor) { this->otherLunarColor = otherLunarColor; this->update(); } } ukui-panel-4.0.0.4/plugin-calendar/lunarcalendarwidget/image/0000755000175000017500000000000014560306203022514 5ustar fengfengukui-panel-4.0.0.4/plugin-calendar/lunarcalendarwidget/image/bg_calendar.png0000644000175000017500000000624414560306203025451 0ustar fengfengPNG  IHDRHHUGgAMA a cHRMz%u0`:o_FbKGD pHYs  tIMEwXX][q1am JhE~3_98yppJ%H8("3?]NCw}Ꟗ֭y?e*j`@jr1Kӯ?W+RY?<0 sd۠\P@-_}k}xťE(3N Z06>(gDnN+fSR¶!erym5凯Ϳ~;R]ʸ`pOL_9?2Yn4r}nDI)pBZ +V}nbGZ *JݪrR9YLl`P[ϔgNMLWVV>^d$ /yڶh5q"< LJ'^^4\P//W~juw+=*$F*+.!#Q*/8Ƀϼ:=Jyz19IsmZ]tuDL@:T>;Rf~ة{{1XJlZӋiP!i@:T^yʎsL>Cg 3P( }z H @Kّ 8%[=Z] y8ΏA$|̂L@O˥#5g~U)5_y=m[s#b ʀ(hVŮLyFʉ7 ҀtgԞSJJМAH|xʶ+f"MSZfK9z"> 9#Dq`Ebj%K)z\LYy[~0`֣$ R̤\ (w>oEׁtp?YJ}u)3MuD5(dz$͌A]zWA VguT8[)1; Jұ%+1iN /ĐKGCC!?@@< <^.nLAdf1_Pew2%bG$w$[ Cv1ݢi(FQ,eXG) 6x~sN4ܑ{HO̐`@gM^3P JUdPib2.[hi@ڦvRFi+(?"R`^@)1Q }lrxr3(J= PfAng2s? nRO`Q(>Ȩ|F#J7&WPyZAAmp/ NIP wf!irFYU=]G]*ވA]_T+^,2'; \-KE; RP$Vlݰ =V)̞d.nzv:`oI*&EE{ p @+(ݍ$L@CylHWD 1$CtL4#YfTD* m _g cd][nsD+bӂuZhbP +-8+J}tXa*(8~(1!VTM4f &uZ{_baIxùRȂDp U D7o5DkZeZ{).r'm)+ P{i;ߔ|u?A:T@滎GG_i^aPKʟ-ub!"5[?m?] Ù*#m߽躿y "%k@2~ټZT.r|@"e=8ο4b@]dz(rͶ1csI_;"Xp ׽0/ Cfy[ʥm=m16Wb[GG{W{պ)`=dn#ẹ9߷wDD・owf gV}2KRem!, hȰYBt&7ApOp2imMR};Tu#BN^n~.>N^n~ / _!"""`%!@P`p 0@P`pd]YTC2 ߸ݺ  p%tF#fM',KLPXJvY#?+X=YKLPX}Y ԰.-, ڰ +-,KRXE#Y!-,i @PX!@Y-,+X!#!zXYKRXXY#!+XFvYXYYY-, \Z-,"PX \\Y-,$PX@\\Y-, 9/- , }+XY %I# &JPXea PX8!!Ya RX8!!YY- ,+X!!Y- , Ұ +- , /+\X G#Faj X db8!!Y!Y- , 9/ GFa# #JPX#RX@8!Y#PX@e8!YY-,+X=!! ֊KRX #I UX8!!Y!!YY-,# /+\X# XKS!YX&I## I#a8!!!!Y!!!!!Y-, ڰ+-, Ұ+-, /+\X G#Faj G#F#aj` X db8!!Y!!Y-, %Jd# PX<Y-,@@BBKcKc UX RX#b #Bb #BY @RX CcB CcB ce!Y!!Y-,Cc#Cc#-1]=/Ͱ 2/ְ Ͳ  +@ +@  + +@ +@ ++014>3!2!2#!"&463!&]$(($+@&&&&@+F#+&4&&4&x+++ͳ+)Ͳ+,/ְ$Ͱ#2$Ͱ/$!+"2ͰͰ/-+6+ #. #  " "#.... ..@(9!99!99014>32467632".4>32".Dhg-iW&@ (8DhgZghDDhg-iWDhgZghrdN+'3 8(2N++NdN+';2N++!P+Ͱ!/"/ְͰ+ ͱ#+$9  99! $9016$ #"'#"$&  oo|W%L46$܏r1ooܳ%54L&V|oMr*MI+ Ͱ"/5ͰK/N/ְͰ+2+B2 ͱO+5"9K&*$9015463!2#!"&73!265+".'&%&';2>767>5<.#!"^BB^^B@B^   %3@m00m@3% :"7..7":6] @  @B^^BB^^B  $΄+0110+$@t1%%1+;  /ְͰͱ+014632>32"'.>oP$$Po>4 #L~'T/ Ͳ  +  +2'/#(/ְͰͳ%+!Ͱ!/%ͱ)+!9%9990154>322>32#!"&6   6Fe= BSSB =eF6 yy@>ƒ5eud_C(+5++5+(C_due5xV> /?O_o /ͱSt22/|3#Ͱ2,/[333ͱc2254&'.7> $&462"&+i *bkQнQkb* j*zzLhLLhLBm +*i JyhQQhyJ i*+ mzz4LL44LL/?Ob/ ,3267676;27632#"/+"&/&'#"'&'&547>7&/.$264&" (C  ,/ 1)  $H  #H  ,/ 1)  ~'H Ԗ ..9Q $ k2 k w3 [20 6%2X  % l2 k r6 [21ԖԖ#/?GWg(+Ͱ!/.33ͱ@22E/ h/ְ$Ͳ$ +@ +$0+9Ͱ9H+QͰQX+aͰa-+Ͳ- +@ +i+0$99@9HEG99XQB9aA9-9!(43!2!2+#!"&5#"&3!2>5!46;2+"&!'&'!46;2+"&%46;2+"&5FN(@(NF5`^BB^`@@@`0 o@@@@ @%44%@LSyuS:%%@u  @@f!5=3+.36/"ְ2Ͱ2/++Ͱ2+Ͱ/7+/2'$9016762546;2#"' '&/465 #!!!"&  X  >  LL >??&&oWh J A J& &&#H/Ͱ/Ͱ/$/ְͰ+Ͱ+ ͱ%+9#901463!2#!"&7!!"&5!!&'&'8((`8(8((8`(8x @(8(`((88H8( 9  , /Ͱ*/Ͳ* +@! +/-/ְ Ͱ +&Ͳ& +@ +&+ͱ.+  $9& $9* $9 $901$  $ >. 546;46;2#!"&aa^(@a^(@`@2N1C*0+3(/5Ͱ?/D/E+(09901747>3!";26/.#!2#!26'.#!"3!";26'5.+"2$S   S$.@   @.  I6>  >6I     @  -5=u+1Ͱ82+Ͱ5/<3 Ͱ2>/ְ"Ͱ"3+7Ͱ7;+Ͳ; +@; +?+")*$93 .997&9 )*99015463!2?!2#!"&63!463!2!2"'&264&"264&"8(ч::(88(@(8E*&&*@6@L&4&&4&4&&4`@(8888((88'&&@')@*4&&4&&4&&4& 0m /Ͱ/1/ְ Ͱ +$Ͳ$ +@$( +$+ͱ2+  0$9$,-99 $9,$901$  $ >. 6;46;232"'&aa^(0  a^(^` @ 0m /Ͱ/1/ְ Ͱ ,+%Ͳ,% +@, +%+ͱ2+,  $9%99  $9($901$  $ >. 4762++"&5#"&aa^(. ?  @a^( ? `#%+Ͱ2+Ͱ /$/%+01547>3!2#!"&!!7!.'! 5@5 &&<_@_<<@>=(""=>&&   'F /Ͱ/(/ְ Ͱ +ͱ)+  $9$$901$  $ >. 476#"'&aa^( !  a^(2%J 3=0/"Ͳ"0 +"' +/4/ְͱ5+"999 99016$3276#!"'&?&#"3267672#"$&zk)'&@*hQQhwI mʬ8zoe*@&('QнQh_   z$G`/ Ͳ  +@  +2=/)Ͳ=) +@=E +52H/ְͱI+,/99  "#999=9),./999011463!23267676;2!"$'"&5!2762#!"&4?&#"+"&&&GaF * @hk4&Ak4&&@&ɆF * &&4BHrd nf&: Moe&@&&4rd/?O_oq +Ͱ-/\3$ͰT2=/l34Ͱd2M/|3DͰt2//ְͰ +0@22)ͱ8H22)+ ͱ+)PX`hpx$9015463!2#!"&73!2654&#!"546;2+"&546;2+"&546;2+"&5463!2#!"&5463!2#!"&5463!2#!"&^BB^^B@B^   @  @  @  @  @  @  @    @    @    @ @B^^BB^^B  @  @@  @  @  @  @  @  @  @  @  @  @  @ O+ͱ 22/  /ְͲ +@ ++ Ͳ  +@  +!+ 9901546;54 32#!"&!54&"8( p (88(@(8@Ԗ`@(88((88jj@7X1/Ͱ#2 ,Ͳ, +,5 +8/ְͰ ͱ9+9999$901462+"&5&476763232>32#".#"#"&@KjK@ @ @:k~&26]S &ך=}\I&5KK5H&  & x:;*4*&t,4, &KkA+3+/L/ְ.Ͱ.D+42=Ͱ=+Ͱ 2'+ ͱM+D.H9=*+$9' 9+A 990146$ #+"&546;227654$ >3546;2+"&="&/&4L4<X@@Gv"DװD"vG@@X<zz藦1!Sk @ G< _bb_ 4.54632#"&&M4&&4&""""& FUUF &&M&&M&*.D.%%G-Ikei/`/l/ְ'Ͳ' + +2'5+CͲ5C +5. +;2CT+eͲTe +TJ +]2m+`i +>G"$901463!62"'!"&%4>4.54632#"&4767>4&'&'&54632#"&47>7676'&'.'&54632#"&&M4&&4&""""& FUUF &d'8JSSJ8'& &e'.${{$.'& &&M&&M&*.D.%%'66'&;;&$ [2[ $&[4[&  #'+/37+,4333ͱ-522/3Ͱ /Ͱ /ͱ22"Ͱ/$3 Ͱ(2/03Ͱ12/*3Ͱ%28/ְ2Ͱ 2+2Ͱ2 + 2Ͱ2+$2#Ͱ(2#,+ 022/ͱ222/4+)227ͱ&229+011!!!!!!5353!353!5#!%!!535353 #'+/37;?4+@<  $(,08$3@/ְͰ+Ͱ+ Ͱ  +Ͱ+Ͱ+Ͱ+Ͱ+Ͱ +#Ͱ#$+'Ͱ'(++Ͱ+,+/Ͱ/0+3Ͱ34+7Ͱ78+;Ͱ;<+?ͱA+011373333333333333333333333333333? ?~_>_  ^?^??????_^ ?./Ͳ +@ +/ְͲ +@ ++01463!2#"'.264&"L45&%%'45%5&5KjKKj`4L5&6'45%%%%JjKKjKk5J/Ͱ2 +@ +6/ְͲ +@ +0+%ͱ7+0*-$901463!2#"'.264&"%32#"&'654'.L45&%%'45%5&5KjKKj5&%%'4$.%%5&`4L5&6'45%%%%JjKKjK5&6'45%%%54'&5 yTdty@+PͰ:/XͰa/hͰq/1Ͱ,2u/v+6=7>76&7>7>76&7>7>76&7>7>63!2#!"3!2676'#!"&'&3!26?6&#!"73!26?6&#!"  ,*$/ !'& JP$G] x6,&(sAeM `   > `   .  &k& ( "$p" . #u&#  %!' pJvwEF#9Hv@WkNC  @   @  /ְ Ͱ ͱ+01546763!2#"' #"'.'!!''!0#GG$/!' "8 8""8  X! 8'+4<o(+ Ͱ+/,Ͱ $38Ͱ+4.901546;463!232+#!"&=#"&!!!#"&=!264&"qO@8((`(@Oq 8(@(8 (8&4&&4Oq (8(`(qO` (88(8(Z4&&4&!)n/Ͱ)/%Ͱ!/ */ְͰ#+'Ͱ'+ͱ++9'# !$99%)$9 !99901546;7>3!232#!"&  462"j3e55e3jjjrgj1GG1jjrHPY'+3FͰF $A333Ͳ&=2224/KQ/R+F!?D$9'947999K9017>7;"&#"4?2>54.'%3"&#"#2327&'B03& K5!)V?@L' >R>e;&L::%P!9&WaO 'h N_":- &+# : ' 5KaQ+0Ͳ+Ͱ[/@Ͱ/63ͰJ b/ ְ`Ͱ92 ` +@  +2`S+*ͰE !ͱc+` 3699E0JNQ[$9S'9[Q *99@'9!E999017>7><5'./6$3232#"&#"32>54.#"3 4'.#"$ $5.3b[F|\8!-T>5Fu\,,jn*CRzb3:dtB2KJBx)EB_I:I^ %/2+ S:T}K4W9: #ƕdfE23j.?tTFi;J] OrB,+  )# + +)$)#+%)#+&)#+')#+()#+ #99()#9'9&9%9$9@ % #$&'()...........@ % #$&'()...........@/5799- 999017>7676'5.'732>7"#"&#&#"$ zj=N!}:0e%  y + tD3~U'#B4 # g  '2 %/!: T bRU,7a}(/%*-Y$3 Ͳ( +@({ +=D22 ( +@ m +22~/ֱM+2Ͳ2M +@2; +M2 +@MF +2e+tͱ+MD992A99e =bi$9tlmz{$9 (&9017326323!2>?23&'.'.#"&"$#"#&=>764=464.'&#"&6;#"&?62+32"/Q6 ,,$$% *'  c2N  ($"LA23Yl !x!*o!PP!~:~!PP!~:~ pP,T NE Q7^oH!+( 3  *Ueeu  wgn%%%%ao+Ͳc+z+Y/ '33/ְb2Q+*Ͳ*Q +@*8 +Q* +@QC +*+Ͱ|2+QAIYlo$9*>9@ ':prv$9 z999o99Y@ $<`fiv$901732632$?23&'.5&'&#"&"5$#"#&=>7>4&54&54>.'&#"&47>32!4&4>32#".465!#".'Q6 ,,Faw!*' =~Pl*  ($"LA23Yl  )!* @7<  <7@@7<  <7@ pP,T MF Q747ƢHoH!+( 3  tJHQ6  wh86,'$##$',686,'$##$',6/?& +Ͱ/Ͱ-/$Ͱ=/4@/A+01=463!2#!"&5463!2#!"&5463!2#!"&5463!2#!"&&&&&&&&&&&&&&&&&@&&&&&&&&&&&&&&&&/?& +Ͱ-/$Ͱ/Ͱ=/4@/A+01=463!2#!"&5463!2#!"&5463!2#!"&5463!2#!"&&&&&&&&&&&&&&&&&@&&&&&&&&&&&&&&&&/?& +Ͱ-/$Ͱ/Ͱ=/4@/A+01=463!2#!"&5463!2#!"&5463!2#!"&5463!2#!"&&&&&&&&&&&&&&&&&@&&&&&&&&&&&&&&&&/?& +Ͱ/Ͱ-/$Ͱ=/4@/A+01=463!2#!"&5463!2#!"&5463!2#!"&5463!2#!"&&&&&&&&&&&&&&&&&@&&&&&&&&&&&&&&&&/?O_oR +L3ͰD2/\3ͰT2-/l3$Ͱd2=/|34Ͱt2/ֲ 0222 Ͳ(8222+01=46;2+"&546;2+"&546;2+"&546;2+"&5463!2#!"&5463!2#!"&5463!2#!"&5463!2#!"&         @   @   @   @                  /?O6 +Ͱ=/,34ͰM/DͰ%2/P/Q+M4! 9901=463!2#!"&5463!2#!"&47632#"' 5463!2#!"&5463!2#!"&   @    @      W @   @              /?O6 +Ͱ=/34ͰM/DͰ2-/$P/Q+M49901=463!2#!"&4632#"&5463!2#!"&5463!2#!"&5463!2#!"&   @        @  @   @    @         + /!+01463!2632#"'#!"&ww '' mw@w ww**w&.i+ Ͱ./*Ͱ///ְͰ(+ 2,Ͳ,( +@,& +,+ ͱ0+,("9#9. "#%$9*$9015463!2#!"&73!2654&#!"5 462"^B@B^^BB^ @  @ppp B^^B@B^^B    @`@pppk %3+Ͱ&/ְͰͱ'+ 9 901 337'7327654#"7632@k[[  V$65&%%@`[[ &&'45%? /Ͱ//ְͰ+ͱ+ $999014 "&'&$264&",,!?H?!Ԗ,mF!&&!FԖԖ G /Ͱ//ְ Ͱ +ͱ+  99 99$901$  $3"aa^a^@-I+Ͳ +@ +./ְͰ+ͱ/+9 999 990147>7>2 %2654'.'&"QqYn 243nYqQXKjK" ]""]ً ,T5KK5$!+!77!+!*/6>H}(+Ͱ+/0Ͱ2Ͱ/I/ְͰ++2Ͱ0Ͱ2+$ͱJ+2 /457$9$-;?9990(9@ !,-.458;547632#"'&=# #"'.w M8 pB^^B@B^ww#;Noj'  'sw- 9*# @w "^BB^^B  w1T`PSA:'*4*  "g`/DY-+Ͳ- +$ +/3E/ְͰ+)ͱF+ 07A$97=A9999:9901463!2#"'&#!"3!26=4?632#!"&4?62 62"'w@?6 1 B^^B@B^ @ wwnBBnBR @w 1 ^BB^^B @ w6BnnBCv=/*3Ͱ2= +@=A +&2= +@ +2D/;ְ 2,Ͱ2,; +@,0 +2;, +@;8 + 2E+,;34$9="#$9014762!#"&4762+!5462"&=!32"'&46;!"'4&&4&&44&&4&&4f4&&44&&4&&44&&/ְͰ2+0146;2676'&'+"&&& : &&@&&Z  @  Z&&+,/ְ%Ͱ2-+0146;2676676'&''&'+"&&&  : : &&@&&Z  :  @  :  Z&&z476676'&''z::f4 :  @  : | 46&!0!`  $   /ְ Ͱ +ͱ!+01463!2#!"&%463!2#!"&&&&&&&&&@&&&&&&&& /Ͱ/ְ Ͱ ͱ+01463!2#!"&&&&&@&&&&4646&5&::` :  :4:  : +,/ְ2ͱ-+01464646;2+"&5&5&&&&&::` :  : &&&& :  : /ְ2ͱ+014646;2+"&5&&&&&:` : &&&& :  +/+017463!2#!"&&762#!&&&& 4 @@&&&&:4762 "'44444Zf647 &4?62"/Z44f444 /B /Ͱ'/0/ְ Ͱ +ͱ1+  $9'$901$  $3!;265!26=4&#!4&+"!"aa^r&&&&&&&&a^&&&&&&&& I /Ͱ//ְ Ͱ +ͱ+  $9 999901$  $3!26=4&#!"aa^r&&&&a^&&&& 7R /Ͱ2-/'38/ְ Ͱ22 +"2ͱ9+  5$9-*$901$  $32?32?654/7654/&#"'&#"aa^ZZZZa^PZZZZ #Q /Ͱ/Ͱ $/ְ Ͱ +ͱ%+  $9 99999901$  $327654/&"'&"aa^.j[4h4[a^ZiZ 6Fg /:ͰC/$Ͱ5/G/ְ7Ͱ 27 +@7 +71+ͱH+7 $91 5>$9$C9959901$  $32767632;265467>54.#";26=4&+"aa^  5!"40K(0?i+! ":oW_a^]d D4!&.uC$=1/J,XR  *:B /Ͱ/.Ͱ7/;/ְ Ͱ 2  +@ & ++2<+$901$  $%3!26=4&+4&#!";#";26=4&+"aa^2```a^R/_4-/0?333ͲGW222`/(ֲ3S222!Ͳ;K222a+01546;>7546;232++"&=.'#"&546;2>7#"&=46;.'+"&=32#&%&&%&&%&&%&S l&&l m&&m l&&l m&&@&%&&%&&%&&%&&l m&&m l&&l m&&m l&& ;F /Ͱ/. 4?'&4?62762"/"/aa^(;     a^(     ,F /Ͱ/-/ְ Ͱ +ͱ.+  %$9!)$901$  $ >. 4?6262"'aa^(f44fZ4a^(X4ff4Z&"F /Ͱ/#/ְͰ + ͱ$+  $9 "$9016$  $&&#"32>54'z8zzfY󇥔eoɒVW:zzzzO[YWo@5K / !/"+ 90147632!2#!#"'&@%&54&K&&4AA4@%&&K%54'u%@4'&&J&j&K55K$l$L%%%5K /!/"+9015463!&4?632#"/&47!"&A4&&K&45&%%u'43'K&&%@4A5K&$l$K&&u#76%u%%K&j&%K5K@!"/ְͱ#+90147632#"'+"&5"/&5&#76%%%K&56$K55K$l$K&55&%%u'43'K&&%@4AA4&&K&5K"#/ְͱ$+9014?63246;2632#"'&5&J'45%&L44L&%54'K%%u'45%u&5&K%%4LL4@&%%K'45%t%%$,O/Ͳ +% +@ + +@ +-/)ְ"Ͱ"Ͱ/.+")%9 990147!3462"&5#"#"'.'5&44&bqb>#  dž&4& 6Uue7D#  "/46262#!"&47'&463!2"/"/&4L  r &@& L&&&4  r@&L r  4&&m L4&&@& r s/647'&463!2"/"/46262#!"& L&&&4  r&4L  r &@& L4&&@& r&L r  4&&#J+!/3Ͱ2! +@ +$/ְ2Ͱ 2 +@ + +@ +%+015463!46;2!2#!+"&5!"&8(8((8(88(`8((8`(8`(8(88(`8((8`(88(8 /Ͱ/+015463!2#!"&8((88(@(8`(88((88z56//ְ 2(Ͱ27+0167-.?>46;2%6 '%+"&5&/m. .@g. L44L .g@. .@g.L44L.g@egg.n.34LL4͙.n.gg.n.4LL43.n -0 /!Ͱ*/Ͱ/.//+*999901$  $;2674'&+";26=4&+"aa^    a^  m /  @*3AJ#+7Ͱ(/3Ͱ2/>3.ͰB22/H3 Ͱ2K/&ְ4ͳ4&+,Ͳ, +@ +4;+ͳ;+FͰF/ͲF +@ +L+;, /B$9F&992. $901463!"&46327632#!2+#!"&5#"&;'&#";26=5!3264&#"]]k==k]]`8((8`x8(~+($$(88(+ @MM`(88(vP88,8P89Oh1+J/P/ ְ:Ͳ : +@ +:Ͱ/:H+ ͱQ+:,/99H'99 9J1 ',=$9 990154>54&'&54>7>7>32#"'.#"#".'.327>76$3264&#">J> Wm7' '"''? ./+>*&^&&zy#M6:D 35sҟw$ '% ' \t&_bml/J@L@ N&^|h&4&c3.+ /4/5+01463!2#!"&54>54'''. @  1O``O1BZZ71O``O1CZZ7  @  `N]SHH[3^)TtbN]SHH[3`)Tt!1H +Ͱ/%Ͱ//2/ְ"ͱ3+" 9% $9/ $901476  '7 $7&' 547265463264&#"ٌ''l==8(zV}D##D#EuhyyhulVz(#-=OUq>+?Ͳ+;/Ͳ; +@ +V/*ְ2.Ͳ.* +@. +W+.* &,999?> 99;@ &0,EJPQ$999901476!27632#"'&547.'77.547265463264&#"76$7&'7 Y[6 $!i\j1  z,XlNWb=8(zV}0Jiys?_9'Fu>La   YF  KA؉Eu?kyhulVz(Äsp@_"F"@Q-'#3 /'Ͱ0/Ͱ /4/5+017>2#!"&'&;2674'&+";26=4&+"#"'&' +&/& `  L4,@L 5 `   a 5 L@,4LH` `  #'+/?CGKOSWgkos!/$Ͳ@Lh222'/BNj333(ͲDPl222+/FRn333,ͲHTp222//JVr333ͱ223Ͱ[2Ͱ2J> +@J" +>J +@> +r/s+7M^_999J /CO$9>A99901=46;2>767>3!54632#"&=!"+"&546;2.+"&673!54632#"&=".0N<* .)C=W]xD ?  0N<* .)C=W]xDmBZxPV3!   mBZxPV3!\-7H)O]-7H)   ".=&' +'/ְ Ͱ ͱ(+ $99014>$32#"'&'5&6&>7>7&LdFK1A  0) e٫C58.H(Y#3CR!/Ͳ! +@ +21/@3(Ͱ82D/ְ$2 Ͱ,2 +42Ͱ<2E+  !99015463!22>=463!2 $463!2#!"&%463!2#!"&&&/7#"462"$462"& & &&&%ZKjKKj5KjKKj4& %&%z 0&4&&3D7KjKKjKKjKKjK+/+015463!2!2#!"&\@\\\@\\\ \@\W*-(+Ͱ/ Ͳ  +@  ++/,+(9015463!2!2!"4&47>3!2#!"&\@\ \^=IP+B@"5+B"5\\ \_Ht#3G#t3G@; /ְͲ +@ +2 +@ +2!+ $901646;#"&4762+32"'@&&4&&4&4&&44&&4@;/Ͳ +@ +2 +@ + 2 /!+$9014762!5462"&=!"'4&&44&&4f4&&4&&#'+/v+ Ͱ /$(,333!Ͳ! +@!% +@!) +@!- +/0/ְͰ +#Ͱ#$+'Ͱ'(++Ͱ+,+/Ͱ/+ ͱ1+015463!2#!"&73!2654&#!"!3!3!3!^B@B^^BB^ @   B^^B@B^^B    @[ /Ͱ$/Ͳ$ +@$? +A/ְ3Ͱ.23+ͱB+39"0=?$9 99$9015463!2#!"&%32>54'6767&#".'&'#"'#"www@wpČe1?*8ADAE=\W{O[/5dI kDtww@w^GwT -@ (M& B{Wta28r=Ku?RZ$X!/ 3Ͱ2/3Ͱ/%/ְ!Ͱ2! +2 Ͱ Ͱ/&+!9 99015463!2+37#546375&#"#3!"&www8D`Twww@w`6: &.>+ Ͱ/"Ͱ./2ͰaԖ68(B^5KK55KK5v@>ԖԖ(8^H1G^//5Ͳ/5 +@/* +@/H/ְ3Ͱ3>+ͱI+>3-/999 95/ -$9@ $9014$327.54632#".'#"'#"&2654'3264&"&#"2̓c`." b PTY9b '"+`N*(app)*Pppp)*P2ͣ`+"' b MRZBb ".`(*NppP*)pppP*)ck546?67&'&547>3267676;27632#"/+"&/&'#"'&547>7&/.$264&"54767&547>32626?2#"&'"'#"'&547&'&54767&547>32626?2#"&'"'#"'&547&'&2654&"2654&" "8x s"+  ")v  <  "8w s%(  ")v  > Ԗj 3>8L3)x3 3zLLz3 3>8L3)x3 3zLLz3 KjKLhLKjKLhL% #)0C vZl. Y L0" #)0C wZ l/ Y N,&ԖԖq$ ]G)FqqG^^Gqq$ ]G)FqqG^^GqV5KK54LL5KK54LL%OoN+&Ͳ:+ /P/ְͰ.+3ͱQ+&(L999.069939CD999&N69L$9 99 .03$90146$ #"'#"&'&4>7>7.32$7>54''&'&'# E~EVZ|$2 $ |h:(t}| $ 2$|ZV쉉X(  &%(HZT\MKG{xH(%& (X08m/C+(Ͳ-+9Ͱ32m/ͰW/Ͱ^/n/ְ2Ͱ26+9Ͱ9[+Ͳ[ +@[X +F+#ͰK Q3!ͰN Ͱ#T+ͱo+6=_+   a_  +a`a_+ #9`a_9 _`a...... _`a......@62.9[9+-A$99#FL9N9m9#7FT$99f9^[c$9015463!6767>763232+"&'&#!"&6264&"32;254'>4'654&'>54&#!4654&#+K5$e:1&+'3TF0h1 &<$]`{t5K&4&&4 %/0Ӄy#5 +N2`@`%)7&,$)' 5KK5y*%Au]cgYJ!$MCeM-+(K4&&4&IIJ 2E=\#3M:;b^v+D2 5#$2:p0$/JͰ/QͰ//;Ͱp/93Ͱf/ q/ְ4Ͱ48+pͰpM+ͲM +@MP +^+W2Ͱb Ͱ^Z ͳT^+ͱr+6?m+ *(GI*)*(+GHGI+HGI #9)*(9()*GHI......()*GHI......@849Mp$/h$99b\9Z9J-FM$9Q.C99;T99p5b$901463!27>;2+#"'.'&'&'!"&264&"322654&5!2654&'>54'64&'654&+"+K5 tip<& 1h0##T3'"( 0;e$5K&4&&4 ')$,&7)%`@``2N+ 5#bW0/% 5K(,,MeCM$!JYgc]vDEA%!bSV2MK4&&4&$#5 2D+v^b;:M3#\=E2 JIURI@47%63#"&547&8?Vy% I) b955/(3Ͱ 2:/ְͰ#+ͱ;+# $9014632>32"'.7 654.""'.">oP$$Po>4 #LHexh\`C++I@$$@I+Z$_dC/Q|I.3MCCM3.I| (@F&+Ͱ>/-Ͳ>- +@>: +-> +@-2 +/A/ְͱB+->569901463!2#!"3!:#!"&463!462"&5!"&w@  B^^B   w&&4 4&@& w   ^B@B^   & &4& &5 /ͱ *22 +@' +//Ͱ 33Ͱ6/ְͰͰ+ Ͱ !+*Ͱ*++ ͱ7+99 99!1299*/39919015463!2#!"&;265."3#347>3234&#"35#www@wG9;HFtIf<,txIww@w3EE34DD@J&#1ueB".~ /3ͱ%22  +@  +/+33 //ְͰͳ+#Ͳ# +@ ++(Ͱ(/Ͳ( +@ +(+ͱ0+(#9901463"&463!2#2#!+"'!"&2654&"c4LL44LL4c&S3 Ll&@{LhLLhL{& &z'?a%+Ͳ% +@ + /@/ְͲ +@ ++!ͱA+()-.<$9!+9 +7:<$901463!2#!"3!26546;2#!"&47'&463!2"/"/w@B^^B@B^@ww &&&4t  r @w@^BB^^B@w 4&&&t r@F<+Ͱ/Ͳ +@ + +@ +%/3A/ ְ8ͱB+ 9901463!462"&5!"&>3!2654&#!*.54&>3!2#!"&54&&4 4&@&~ @B^^B  @ww & &4& & ^BB^   w@w ;BI(//Ͱ 2B/G3Ͱ2B +@ +J/ְ<Ͱ<2+Ͳ2 +@ +#H222 +@2 ++A22F+ͱK+2<7?99FC99B/8?C$9015463!5463!2!232#!"&=4632654&'&'.7&5!>=!8( ^B@B^ (8Sq*5&=CKuuKC=&5*q͍SJ6(8`B^^B`8(GtO6)"M36J[E@@E[J63M")6OtGNN`YaipxW/ 3MͰ/3{ͱ22`/\Ͱ%//ְ.Ͱ.^ ZͰZ/^Ͱ.+ͱ+ZAF99^@+,454'6'&&"."&'./"?+"&6'&6'&&766'&6'7436#6&76www 49[aA)O%-j'&]]5r,%O)@a[9( 0BA; + >HCw  $  /    61=ww@wa-6OUyU[q ( - q[UyUP6$C +) (  8&/ &  A   )    /7?p3+:3ͰͰ7/>3 Ͱ2@/,ְ%Ͱ%5+9Ͱ9=+Ͳ= +@= +A+%,995 0999 9 ()9901463!3!267!2#!"&&762#!#!"&5!"264&"264&"8(c==c(88(@(8E6*&&**&4&&4&4&&4 @(88HH88((88'@'(@&&4&&4&&4&&4&2d*/$3;ͰA2;> 'Ͱ[/ ͰX U3 Ͱ2e/0ְ6Ͱ- 39Ͱ326G+ͰN Q3ͱ22f+6^+ LJ+Â+ +LKLJ+ #9KLJ9JKL.......JKL......@N6 *$;AS[$9X>-39GQ$9 S9014>76763232632#"&#"#"&54654&732632327>54&'.54654'&#"#"&#"$IVNz<:LQJ  |98aIea99gw   N<;+gC8A`1oζA;=N0 eTZ  (:7,oIX(*()W,$-,-[% 061IO4767>3232>32#".'&'&'&'.382W# & 9C9 Lĉ" 82<*9FF e^\3@P bMO0# -\^e FF9*<28 "L 9C9 & #W283 #0OMb P@3* +Ͱ/ /ְͰ+ ͱ!+01463!2#!"&73!2654&#!"w@www^B@B^^BB^ @wwwwB^^B@B^^B#D#/Ͳ# +@# +2$/ְͰ!+ ͱ%+9!9 901546763!2#"' #"'.77!'!!''!0#GG$/!'YY "8 8""8  X! 8AUUjUN /!ͰQ/ͲQ +@Q4 +V/ְͰ&+ Ͳ& +@&A +W+&F9Q!09015463!2#!"&3267654'./.#"#".'.'.54>54.'.#"www@w <90)$9G55 :8 c7 )1)  05.Dww@w`$)0< D.50 + AB 7c  )$+ -.1 ,T17327.'327.=.547&546326767# ,#+i!+*pDNBN,y[`m`%i]]C_LҬ}a u&,SXK &$f9s? (bEm_@/3Ͱ2 +@ + //ְ2Ͱ 2 +@ ++01!54632#"!#!_ЭQV<%'w(ں HH RH /S/ְ)Ͱ)+ͱT+)54'6'&&"."&'./"?'&aa49[aA)O%-j'&]]5r,%O)@a[9( 0BA; + >HCaoMa-6OUyU[q ( - q[UyUP6$C +) (  8&/ &fM%f#+Ͱ2/ Ͳ +@ +&/ְͲ +@ + +@ ++ ͱ'+ 99#99015463!54 +"&54&"32#!"&8(r&@&Ԗ`(88(@(8`@(8&&jj8((88#'+V+ Ͱ$/(3%Ͱ)2/Ͱ /,/ְͰ2$+'Ͱ'+2 ͱ-+'(*99015463!2#!"&73!265!!54&#!"5!35!^B@B^^BB^ @   B^^B@B^^B  `  !=Y+233Ͳ +@ +;/'>/ֱ"22ͱ?+;99799;:999')901<62"5476;+"&'&'.5476; +"&'&$'.pppp$qr $!ߺ % }#pppp rqܠ!E$ ֻ!# %%/7?+Ͱ7/>33Ͱ:2"/&Ͱ'2,/@/ְͰ1+5Ͱ59+=Ͱ=+ͱA+6<7+ &./#7+ '.(   (/...... &'(/........@01547>3!2#!"&73!2654&#!"7!.#!"462"6462"\77\^B@B^   @ 2!/B//B/B//B@2^5BB52B^^B  @    B//B//B//B/.4B5/)ְͲ) +@) +1+Ͱ 2ͱ6+)$91 /$9015463! 22##%&'.67#"&%^B4L5KK5L4_u:B&1/&.- zB^yvB^L4KjK4L[!^k'!A3;):2*767>32!2+#"'&#!"&6264&"323254'>4'654&'!2654&#!4>54&#"+K5 A# ("/?&}vhi!<;5K&4&&4 HQ#5K4LN2$YGB (HGEG 5K J7R>@#zD9eME;K4&&4&@@IJ 2E=L43M95S+C=,@QQ93ksF+&Ͳ"+JͰn21/7ͰM/Ͱi/Ͱ`/ t/ְ4Ͱ4)+CͰ, ?Ͱ82C)+cͲc +@ch +CK+mͰmq+ͱu+,4/099?;9C)=99Kc" &F$9qm!991J*=Cr$97;9M499RWf999`Zc$901463!&546323!2#!"#"&?&547&'#"&73!32>;#".'.'&'&'.#"!"264&"hv}&?/"( #A  5KK5;=!iL4K5#aWTƾH #A<(H(GY$2N&4&&4gR7J K55K;ELf9>h4L=E2 JI UR@@2*!Q@.'!&=C+S59M4&&4&2`hh+?Ͱ/dͰ^/Ͳ^ +@^Y +K/Q3ͰF ͰU/ i/ְ3Ͱ3+YͰY# +>Ͱ>Q+ Ͱ ?+e2ͰD +ͱj+3/6\$9>Y U99 QN9?FLa$9hd"99^?#D$99FLN99U 9901463246326326#!"&54.'&'.7!54>54#"."&#"4&#"".#"264&"zD9eME;K55K J7R>@#,@QQ9@@IJ 2E=L43M95S+C=&4&&4}vhi!<;5KK5 A# ("/?&B (HGEG HQ#5K4LN2$Y4&&4&3hp+/@Ͱ#/JͰD2 NͰ1/7Ͳ71 +@7< +V/lͰp/q/ְ4Ͱ4.+=Ͱ= +XͰXC+(Ͱ(U+m2ͰQ +ͱr+.417c$9=:9X+@99(CF9U!HNi$9#@'9JF9N /H99V7Q$9pl99014>767>5463!2/#"'#"&5#"&732>3326532726732654.=!264&"#@>R7J K55K;ELf6Aig6Jy=C+S59M34L.9E2 JI UR@@2*! Q@.'!&&4&&4&?/"( #A  5KK5;=ihv}GY$2NL4K#5#aWTƾH #A<(H(4&&4& +B /Ͱ(/,/ְ Ͱ +ͱ-+  $9($901$  $2?64/!26=4&#!764/&"aa^-[j6[&& [6[a^M6[[6&&4[[ +B /Ͱ!/,/ְ Ͱ +ͱ-+  $9!$901$  $3!27764/&"!"aa^2&[6j[[6[ &a^&4[j[6[j[6& +B /Ͱ(/,/ְ Ͱ #+ͱ-+#  $9($901$  $2?;2652?64''&"aa^.[6&&4[[6[a^N6[ &&[6j[[ +B /Ͱ"/,/ְ Ͱ +ͱ-+  $9"$901$  $2?64/&"4&+"'&"aa^.j[6[j[6&&4[a^L6[[j6[&& [ $  $76.7"7"#76'&'.'2#22676767765'4.6326&'.'&'"'>7>&&'.54>'>7>67&'&#674&7767>&/45'.67>76'27".#6'>776'>7647>?6#76'6&'676'&2>767676&67>?&'4&'.'.'."#&6'&6&'3.'.&'&'&&'&6'&>567>#7>7636''&'&&'.'"6&'6'..'/"&'&76.'7>767&.'"67.'&'6.'.#&'.&6'&.5aa^ +  !       $     "  +       &"      4   $!   #          .0"2Α      a^   ' -( # * $  "  !     * !   (                                 P $      2 ~ /P+ Ͳ+0/ְͰ+!Ͳ! +!) +! +1+ 999!901347#"/&6264&"32>32#"&'bV%54'j&&4&&4:,{ /덹5&b'V%%l$4&&4&r! " k[G'C/37;R +4Ͱ7/Ͱ/0Ͱ3/Ͱ,/8Ͱ;/%990132327#"&462"4>322>32#!"&6  462"654'32>32+&|Kx;CBQgRpԖ 6Fe= BPPB =eF6 yy@>ߖԖgQBC;xK|pRga*+%u{QEԖԖ5eud_C(+5++5+(C_due5xV>ԖԖu%+*NQ{p%Gi/MͰW/Ͱ+ "ͰC/j/ְ&Ͱ&>+ Ͱ HͰ R+ͱk+& " h99RM999"MRY$9+ 99W -99C &$9014?632632#"/&547'#"/7327.54632654/&#"32?654/&#"#".'USxySSXXVzxTTUSxySSXXVzxTl)* 8( !(')((* 8( !SSUSx{VXXTTSSUSx{VXXT( (8 *(('(  (8 7+Ͳ+Ͳ+ /ְͰͱ+  9901467&5432632#!"t,Ԟ;F`j)6,>jK?чs !M/Ͱ/33 "/ְͲ +@ ++Ͳ +@ +#+9901&7#"&463!2+#!!'5#E8@&&&&@8EjY&4&&4&qY%q%FTbp~6+C KͰR/Ͱ/Ͱr2/YͰ`//ְͰ2+kl99R6<9999cjkl$9 .p$9Y #ow$9` mn999017>76326?'&'#"'.'&67632632 #"'#"'&6327>'&#"3276&'&#"7''54?'462"7bRSD zz DSRb)+USbn  NnbSVZ2.'Jd\Q2.'Jd\2Q\dJ'.2Q\dJ' ``!O&4&&4TFL5T II T5L;l'OT4M01B@#$rr$#@B10M5TNTЄ*$;3*$;3;$*3;$` @@Qq: $/4&&4&y@-09</1Ͱ/ Ͱ9/:Ͱ-/.Ͱ4/Ͱ(/=/ְ Ͱ /+)Ͱ) +!21Ͱ1&+ Ͱ ; +5Ͱ52+ͱ>+/ .9&1:9.-&<99 9(09015467>3!263!2#!"&5!"&7!467!#!7!!!#!7!(`((8D<(88(@(8(8(<8(`U+8(`U+(`(8((8(@(88( 8H(`<`(8+U`(8+||?w;/Ͱ /3Ͱ/@/ְͰ0+#Ͳ#0 +@#( +#+8ͱA+#099+3;$9  +08$93999014632#"'&#"32654'&#"#"'&54632#"'&ܟs] = OfjL?R@T?"& > f?rRX=Edudqq = _MjiL?T@R?E& f > =XRr?buds15Ed+233Ͱ5/Ͱ+/9Ͱ1/'A33F/ְͰ/+26Ͱ2Ͱ6=+(Ͱ(3+Ͱ+ ͱG+01463!2#!"&73463!234&'.##!"&5#!!;2654&+"8((`(8((88(@(8 08((8   @(8(`(`(88H(88(`1  `(88(  @  5463!2#!"&www@www@w/ +Ͱ/Ͱ-/$0/1+01=463!2#!"&5463!2#!"&5463!2#!"&&&&&&&&&&&&&@&&&&&&&&&&&&@'7Gl%+Ͱ Ͱ5/,Ͱ  ͰE/<Ͱ H/ֱ22ͱ 22I+%$9,5 $9E9901<62"462"462"5463!2#!"&5463!2#!"&5463!2#!"&ppppppppppp   @    @    @ 0ppppppppppp`      <L\l|Z+QͰ22Q1Ͱ/Ͳ%+7+;/!Ͱ/ͰͰj/aͰ /Ͱz/B3qͰDͰ@2Dz +@D> +}/ֱ 22ͳ0+1Ͱ1/=30ͰE+@Ͱ52E@ +@EC +@E++3Ͱ328 $Ͱ$/8ͱA228Ͱ/~+01 'L$9E&J99@ !);>$9Z!899Q'599/+4999aj $9  9014>54&#"'>32353!&732654'>75"##5!#"733!5346=#5463!2#!"&5463!2#!"&5463!2#!"&/BB/.#U_:IdDREi919+i1$AjM_39K!.EO\$9R1P$9 E;OR999%1$99015463!2#!"&476!2/&'&#"!&'&&?5732767654'&'!#"/&'&=4@2uBo  T25XzrDCBBEh:%0f#-+>;I@KM-/Q"g)0%HPIP{rQ9 @@ $&P{<8[;:XICC>.#-a)&%,"J&9%$<=DTI*'5oe71#.0(  ls +Ͱd/0ͰO/C33KͲF222t/mְ%Ͳ%m +@% +m% +@ms +%:+;2ZͲZ: +@ZM +u+6/'+ ;.?XV??;+VWVX+WVX #9>?;9<9=9>?X;<=VW........>?X<=VW.......@%m99:EFd$9ZRU99O0EPls$9KIJ999013!26=4&#!"6323276727#"327676767654./&'&'737#"'&'&'&54'&'&'@ <4"VRt8<@< -#=XYhW8+0$"+dTLx-'I&JKkmuw<=z% @@@ v '|N;!/!$8:IObV;C#V  &   ( mL.A:9 !./KLwPM$ /?O_o +ͱCs22/K{33#ͱS22,/[333ͱc22?>;5463!2&#"&5!"&5#".!#"264&"264&"@&  ?&&! 'ԖԖ@' ! LhLLh4LhLLh&@6/" && jjjj  hLLhLLhLLhLJ /Ͱ@/0Ͱ/K/ְ!Ͱ!-+CͰC=+3Ͱ3+ͱL+C-(*GH$9= 08 E$936999  H99@@ !%-36E$9014$ #"'676732>54.#"7>76'&54632#"&7>54&#"&aaok; -j=yhwi[+PM 3ѩk=J%62>Vca^ ]G"'9r~:`}Ch 0=Z٤W=#uY2BrUI1^Fk[|Lx /I3ͰA/1Ͱ/M/ְ"Ͱ".+DͰD>+4Ͱ4+ͱN+D.(+ HI$9>19F$94799A"&.47F$9015463!2#!67673254.#"67676'&54632#"&7>54&#"#"&www+U ,iXբW<"uW1AqSH1bd=Uco /ͰQ/CͰ`/YͰ)2,/p/ְ0ͰͰ0V+]Ͱ> NͰ]g+k2 ͱq+N># 3)9$9]V!CHQ$9g&+d$9CQ99`@ !5:3dfhi$9Y#0&jlno$9015463!2#!"&32>54.4>54&'37!"3274>32#".4632#".33535#5##www@w%3!##"&'&732>54.'&#"3267654.#"53533##5 YJ .H?MpJL1EF1@[Z@0HꟄ9%Fq}A:k[7'9C 5hoS6j+=Y4&P5"?j@*Q/iiQ.R*@)$1R6B@X?ZHsG;@"$ECPNZSzsS`0$/. 0$8].ggR4!9f:}R'!;ll/<W +Ͱ-/7ͱ22+ (08$9<7 !()$9015463!2#!"&2!463"&5!#4>2".673#!5##&&&&jjjj*M~~M**M~~MPM* r@&&&&Zjjjj|NN||NN|mP%``@  //+01463!2"'&&@4@&4&&4@@  //+014762#!"4&&4@4&@ /+ͱ+014762"'@4&&4@f4&&@ / +ͱ+015462"&&4@4&&@4@&:+3 Ͱ/3/ְͰ+Ͱ+ ͱ+015463!2#!"&73!!!265!^B@B^^BB^ ``  B^^B@B^^B  `@ 463!2"'4762#!"&&@4@4&4&&4@4@4&  //+01463!2"'&&@4@4&&4@@  //+014762#!"4&&4@4&:/ ;/<+015;2>76%67#!"&463!2+".'&$'.,9j9Gv33vG9H9+^B@B^SMA_bI\ A+=66=+A [">n 1&c*/11/*{'0B^^lNh^BO3@/$$/@*l +r%/Ͳ% +@%! + 22 /,/ ְͰ Ͱ++Ͱ2+!+ ͱ-+ 99+9!9% $901462+"&!3/!#>32!4&#"gdgTRdJI*Gg?QV?U JaaJIbb8!00 08iwE334>/ Ͳ  +  +)/ 5/%ְͱ6+)  12$9 99014766$32#"$'&6?6332>4.#"#!"&('kzz䜬m IwhQQhbF*@&@*eozz   _hQнQGB'(&(q4>7632&4762.547>32#".'632#"'&547"'#"'&(  &  \(  (  &  ~+54'k%%k'45%&+~(  (h  (\  &  h(  (~+%'45%l%%l$65+~  &  !3;CK]/ͰF2;/L/ְͰI+ ͱM+I@ #,48<@D$9%9;@  *.26>BJ$90146$ #!"'&264&"264&"676&'6.264&"264&"264&"LlL##KjKKjuKjKKj;P,2e2.e<^*KjKKjuKjKKjuKjKKjL;jKKjKujKKjK1M(PM+&97 #$9:3#*0$9014$ #"'#"&'5&6&>7>7&76?32$6&$ dFK1A  0) W.{+9E=ch'٫C58.H(YpJ2`[Q?l&싋%:dc+;ͲO+ /1Ͱ8/e/ְ&Ͱ&5+ͰC+Hͱf+&995 #;=a$9CEK99HNXY999;cKNa$9 991 #+$98*.CEH$90146$ #"'#"&'&4>7>7.76?32$64&$ 32$7>54''&'&'# E~EVZ|$2 $ |j`a#",5NK :(t}| $ 2$|ZV쉉X(  &%(HwR88T h̲hhZT\MKG{xH(%& (X|!>3!2%632#"'.7#"'&H  j '9 1b{(e US/*>33ʹ"26FJ$2I/43 Ͱ2 /3V/ְOͳJO+Ͱ/JͰOB+2;Ͱ26;B+GͰG/ 36Ͱ2;.+'ͳ"'.+3Ͱ3/"ͱW+0146;5463!5#"&5463!2+!232#!"&546;5!32#!"&546;5!32#!"&8(`L4`(88(@(88(`4L`(88((88(``(88((88(``(88((8 @(84L8(@(88((8L48((88(@(88((88(@(88((88;OY|D+NͲDN +D? +DI +4/$33Ͳ4 +4 +92@4 +,2P/TZ/<ְAͰAF+P2KͰV2[+A<09F%,MN$9K901476$32#"'.#"#"'.'."#"'.'.#"#"&46226562"&5462&"-U ! 1X:Dx+  +ww+  +xD:X1 &4&NdN!>!И&4&*,P  ..J< $$ 2#"&'"&547&547&547.'&7367>7654."$4632"&54&#"YYg-;</- ?.P^P.? -/<;-gD ) ) DEooE` 2cKl4 cqAAqcq1Ls26%%4.2,44,2.4%%62sL1qeO , , OeH|O--O|+ L4  .24V/ Ͳ +@ +  +@  +2/Ͳ2 +@2- +2 +@$ +5/6+ 92()990147632!2#!#"'&5463!54632#"&=!"& @  `    ` ?    @     @ -    5p+!Ͳ! +@! +./6/ְ1Ͱ Ͱ1%+Ͱ* ͱ7+19* !99 99.!$9 901467&5432632#!"27654&+4&+"#"v,Ԝ;G_j) `  _   7 ,>jL>цY _ `  5+Ͱ)2+$Ͳ+ Ͱ2/6/ְͲ +@ +-+Ͳ- +@ +7+- 99 99$992$9  901467&5432632#!";;26532654'&"v,Ԝ;G_j)    7 ,>jL>ц  `  ` PX`+%533NͰX/TͰ`/\a/ְ Ͱ R+VͰV*+1Ͱ1^ ZͰZ/^Ͱ^3 (Ͱ(/3Ͱ18+Jͱb+R 99V $9^Z#.TW$91*>AD$93(-98@9X#(38$9T!*1:J $9`@  .>@-$9\D$90154>72654&'547 7"2654'54622654'54&'46.'#!"&$462"6  %:hD:FppG9Fj 8P8 LhL 8P8 E; Dh:% yy&4&&4>ƒD~s[4Dd=PppP=d>hh>@jY*(88(*Y4LL4Y*(88(*YDw" A4*[s~Dy4&&4&>EM.+@ͰC/*3ͰM/7Ͱ/3 Ͱ2N/ְͰ ͰB++Ͱ++'Ͳ' + +'4+GͰG0 +=Ͱ=K +9ͱO+  99+-@9994'.?99G69M14932#"' 65#"&4632632 65.5462 $=.$264&"& <#5KK5!!5KK5#< &ܤ9GppG9&4&&4&$KjKnjjKjK$&jjb>PppP>buោ4&&4& %W/ 33ͳ $2/&/ְͰ +ͳ  +ͳ +Ͱ/Ͱ+"ͱ'+01546;#"&35463!23!5!32#\@@\8(@(8`@\\`@\(88(\\!-j/%./ְ"Ͳ" +@ +"'+Ͳ' +@ + '+Ͱ/ ͱ/+"+99' %($9  9990156467&5462#!"&5!"&324#"&54"8P8¾L4@Ԗ@4LgI;U (88(¥'4LjjLLIg U;@"?/Ͱ/ ͳ +Ͱ "#/ְͱ$+9"99015!#!"&463!2+#!"&3264&+jj&@\@\@PppP@j& \Ͱ>/D+01462265462265462+"&5.463!2+"&5#"&&4&&4&&4&&4&&4&G9L44L9G&L44L @&&`&&&&`&&&&=d4LL4 d &4LL4,<LSq/Ͱ*/!Ͱ:/1ͰJ/AͰ/MͰ/T/ְͰ+MͰM+ ͱU+-.=>$9M%&56EFN$9MS901463!2#!"&7!!"&5!5463!2#!"&5463!2#!"&5463!2#!"&!&'&'8((`8(8((8`(8@@@x @(8(`((88H8( @@@@@@n 9 -=M]m} -=463!2#!"&7!5463!2!!546;2+"&546;2+"&546;2+"&546;2+"&546;2+"&546;2+"&546;2+"&546;2+"&546;2+"&546;2+"&546;2+"&546;2+"&546;2+"&546;2+"&546;2+"&546;2+"&546;2+"&546;2+"&&&&& @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @ &&&&Z   @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  1AQaq463!463!2!2#!"&7!5463!2!!#!"&=!546;2+"&546;2+"&546;2+"&546;2+"&546;2+"&;26=3;2654&+"#54&+"546;2+"&546;2+"&546;2+"&546;2+"&546;2+"&&@8((8@&&& @ 8(@(8 @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @ & (88(&&&Z   (88( @  @  @  @  @  @ @  @  @  @   ``  @  ``  @@  @  @  @  @  @  @  @  @  @ @&/7[c3+^3"Ͱ2%/33Ͱ7/b3(Ͱ*/ ͰX/M3ͰSd/ְ'Ͳ' +@ +'$ +1Ͱ1(+ 422=ͰV2Ͱ8Ͱ= +]Ͱ]D+N2ͳaD+ͰIͰI/e+(1!"*999D]^c999a9%314]`$905\a$9(@A99*;;463!2+"&5!"&5#"!#264&";;26=326=4&+54&+"#"264&"@&@&&&ԖԖKjKKjKjKKj4&@@&&&jjjj jKKjK jKKjK ;?I /@33Ͱ%2 Ͱ3/<ͳ A$2?/J/ְͰ +Ͱ62ͳ< + Ͱ /<Ͱ$+.2ͳ=$+Ͱ)Ͱ)/@+FͱK+01546;#"&35463!23;;26=326=4&+54&+"#"!5!32#\ \`8(@(8` \\`@\(88(  \\:f.+/Ͱ%2!/Ͱ2  ͳ!+Ͱ /3;/<+2/#367$9 99!89999 901575#5#5733#5;2+31 #32+53##'53535 `@@`&&E%@`@E&&`@@`    @ :# @ @   @B + /Ͱ/Ͳ +@ +/ְͱ+ 9999017!7!!57#"&5;!@   @K5 @5K3G /ͰͰ2+/Ͱ0Ͱ%24/ְͰ++2Ͱ)2!+ ͱ5+015463!2#!"&%;265!;2654&+"!4&+"www@w&&&&&&&&ww@w&&@&&&&@&&3I /Ͱ2Ͱ0/%3Ͱ+4/ְͰ.2Ͱ+&2 Ͱ !Ͱ!/5+015463!2#!"&3!;265!26=4&#!4&+"!"www@w&@&&@&&&&&ww@w&&&@&&@&&&-M3)4762 "'$4762 "'-   2 w 2  .v   2 w 2  .3  2  ww  2    2  ww  2  M3)647 &4?62"/$47 &4?62"/ w 2   .  2v w 2   .  2   2 .  . 2    2 .  . 2M3S)64762"' "/4762"' "/M    2  ww  2    2  ww  2  .  2 w 2  .  2 w 2M3s)4?62 62"'4?62 62"'M 2    2 .  . 2    2 .  . 2 w 2  .  2 w 2  . -Ms3/+Ͱ2+ 9014762 "'-   2 w 2  .3  2  ww  2  MS3/+2ͱ+901647 &4?62"/ w 2   .  2   2 .  . 2M 3S /3/+ 9014762"' "/M    2  ww  2S  .  2 w 2M-3s/Ͱ 2/+9014?62 62"'M 2    2 .  . 2 w 2  . />/ 3#Ͱ#Ͱ,/0/ְ Ͱ '+ ͱ1+'  $901463!2#!#!"&54>5!"&3!2654&#!"^B@B^^B && B^ @   @B^^BB^%Q= &&. aa^(a^(!Cb+@3Ͱ82/03Ͱ(2D/ְͰͲ +@ +"+=Ͱ5Ͳ5" +@5- +E+ 9=5,90154>;2+";2#!"&%4>;2+";2#!"&Qh@&&@j8(PppPPpQh@&&@j8(PppPPphQ&&j (8pPPppPhQ&&j (8pPPpp!Cn+03Ͱ82/@3Ͱ&2D/ְ Ͱ Ͱ/ +@ + "++Ͱ+<Ͱ^^^gggxTTxTpppjKKjK\BB\BB//B/hP88P8  /Ͱ /ְͰͱ +01$  $aa^a^,A&/Ͳ& +& +@&* +& +@ +-/ְͰ ͱ.+&990147623 #"&5465654.+"'4&ɢ5  #>bqb&4f4&mǦ"  #D7euU6 &&@LX.+ͰK/V3EͰP2>/73Ͱ2;  Y/ְ'Ͱ'B+HͰHN+TͰT4+ͱZ+HB> 99N9< $9T7 99EK4'$9 ; $90147&5472632>3#".'&7;2>54&#""'&#"4>2"&$4>2"&3lkik3=&\Nj!>@bRRb@v)GG+v=T==T=g=T==T=RXtfOT# RNftWQ|Mp<# )>dA{ XK--KXx PTDDTPTDDTPTDDTPTDD,V+Ͱ!/ Ͱ)/-/ְͰ%+ Ͱ +ͱ.+ %!9 9 !$9)%9015463!2!2#!"&73!2654&#!"&=4&#!"\@\\\@\8((88(@(88((8\\ \@\\(88((88(@(88(u3Ey+6Ͱ@/"Ͱ2(/ Ͱ0/F/ְͰ,+ Ͱ #+Ͱ=+ͱG+,49 (9#'9@699 (+90,9015463!2!232#!"&7>3!54&#!"&=4&#!"3!267654#!"\@\ \6Z.+C\,D8((88((8+5@(\&5([\\ \1. $>:5E;5E(88(@(88(#,k#+ #8@+ Ͱ7/-Ͱ#/?3Ͱ;2/A/ְ Ͱ +!Ͱ!:+>Ͱ>+ͱB+! %+$9:,-67$9> /3$9#- (1$9 $901$  $ >. 462"&676267>"&462"aa^NfffKjKKj9/02%KjKKja^ffffjKKjK/PccP/yjKKjK #8@+ Ͱ1/'Ͱ#/?3Ͱ;2/A/ְ Ͱ +!Ͱ!:+>Ͱ>+ͱB+! 83$9:&'01$9> /*$91,5$9' 99# $901$  $ >. 462">2&'."'.462"aa^NfffKjKKj9%%20/KjKKja^ffffjKKjK3yy/PccP/1jKKjK '/7+ Ͱ&/Ͱ//63+Ͱ22/8/ְ Ͱ )+2-Ͱ-1+5Ͱ"25+ͱ9+-) $951 $9& $9+/ $901$  $ >. 463!2#!"462"$462"aa^Nfff&&&&KjKKjKjKKja^ffff4&&4&jKKjKKjKKjK3;C] +37Ͳ +Ͱ;/ͰCͰ+D/ְͰA+ͱE+A !48<$9C  %&/>$9013!2#"'##";;26=326=4&+54&+"#"264&"6264&",,ܒlKjKKjKjKKj,,XԀjKKjKjKKjK+7CO[gs +Ͱ/A33ͱ;22*/Yq$3#ͳSk$26/Me}$3/ʹG_w$2//ְͰ+ ,22Ͱ22'ͰD+82KͰKP +WͰW\ +cͰch +oͰot +{Ͱ{ +Ͱ +Ͱ>2+2Ͱ2 +@ ++ ͱ+015463!2#!"&7!!54;2+"54;2+"54;2+"543!2#!"54;2+"54;2+"54;2+"54;2+"54;2+"54;2+"54;2+"54;54;2+"54;2+"K55KK55K```````````````````p```5KK55KK5`````````````````````````@?V0/JͲ0J +@0< +7/BͰO/!ͰT/W/ְ Ͱ Ͱ +@Ͱ@L+*ͱX+@:9L!07$9*%.99B7@HL999!OMRV99901462+"&5.47>32327676#"/.#"#"'&7632327#"'.#"@KjK#@##WIpp&3z # ڗXF@Fp:f_ 7ac77,9xR?d^5KK5#::c#+=&>7p #'t#!X: q%\h[ 17@?EKjr0/UͲ0U +@0< +7/LͳCL7+HͰp/!ͰI/s/ְ Ͱ Ͱ +@ͰF2@W+m2*ͱt+@:9W!07BHLk$9*%.99L7@SWXZ$9HF[ejklm$9ph9!JKnr$901462+"&5.47>32327676#"/.#"#"'&76755675323275'5&'. #"75#"'@KjK#@##WIpp&3z # ڗXF@Fp:f_ ͳשfk*1x8 2.,#,쩉-!5KK5#::c#+=&>7p #'t#!X: `eov:5 \t-  |*[ 3$"+%/&+"9901647 &4?62"/5463!2#!"& w 2   .  2i@   2 .  . 2i@@-S$94762 "' >/.$47 &4?62"/-   2 w 2  .u >  > I w 2   .  23  2  ww  2      2 .  . 2;K< 1Bi7I))9I7 !% %!bcB/4 <B&67632#"'.5!"   ( ,( )##@258++ 36Ͱ2+6 +@+& +0/43Ͱ20 +@ +29/.ְ23Ͱ 2.3 +@. +3)+72"Ͱ2") +@" +2:+)34699"9063899901546;546;2!76232++"&=!"&5#"& !!S  S-S  `SS3;CK7+2Ͳ3+0+K/ͰC/ L/ְ25Ͱ<25 +,Ͱ2,9 +@2/Ͱ 2/+EͰE +$Ͱ$I +!ͱM+,5 12$9/)9(999$E99K7@ !:=>@F$9 5.5462"&6264&"264&"264&"4,,4pp4,6d7AL*',4pp4,DS,4pp`8P88P88P88PH8P88P@4Y4Y4PppP4Y%*EY4PppxP88P8HP88P8P88P8 '6B]iw4+Y GͰ /Ͱ/{Ͱ// ְͰ7+>Ͱ>^+eͰeK+Tͱ+7@ "#,/0$9^>CD$9KeNOYjkuxy$9 4,:;CDKT$9"#NO$9{ ghku$901463!2#!"4?632&#"&'&4762#"'462"&7?654'7#"'&462"&4762"'463!2#!"@USxySN('#Tp   YR#PTUSxyS    7@xSSU#'(PVI   i@'(VvxSSUOW@?   `,<T:+1Ͱ#/Ͳ# +#) +=/-ְ26Ͱ2 6-+ ͱ>+6-#99 9#1 9901&7!2+"&=467>54&#"#"/546;2+"&c0PR'G,')7N;2]=A+#H    >hS6^;<T%-S#:/*@Z}g.H+Ͱ2/Ͱ,/#//ְ2Ͱ'2 +@ + +@ + 20+01=46;#"&=463!232#!"&5463!2#!"&&@@&&&@&&&&&&&@&&&&&&&Z&&&&b2+ /ְͰͳ+Ͱ/3Ͱ2!+01&63!2#!"&'5463!2#!"&b%@%''&&&&@&&&&&&&&k"G+3Ͱ2/3Ͱ2@+EͰEBͰ-/6H/*ְ9ͰC2*9 +@*# +E29AͰA/I+E $9@#9>9-(1999901353#5!36?!#3#/&'#4>54&#"'67632353!'&Ź}m 4NZN4;)3.i%Sin1KXL7~#& *ا* @jC?.>!&1' \%Awc8^;:+54&#"'67632353!'&Ź}m 4NZN4;)3.i%PlnEcdJ~#& *ا* @jC?.>!&1' \%AwcBiC:D'P-+/+01&6763!2#!"&'7!! &:&? &:&?uPmK,)""K,)"5hH+_37/1ͳ,17+<i/ְVͲV +@V[ +V +ͳ +ͳK+BͰ!2P +>Ͱ(2j+S99> FH$9B&97H>NY[$9<PV99,4S99011327654.54632326732>32#".#""#"&54>54&#"#"'./"'"%_P%.%vUPl#)#T=@/#,-91P+R[YO)I-D%n  "h.=T#)#lQTv%.%P_ % #,-91P+R[YO)I-D%95%_P%.%vTQl#)#|'' 59%D-I)OY[R+P19-,#'3#+3Ͱ%/3 Ͱ2/,4/ְͰ(+/ͳ/(+$Ͱ$/Ͳ$ +@ +$ +@$! +/ +ͱ5+/( 99 ,199,2 $9015462 =462!2#!"&463!5&%46  &&4&r&4&&&&&&&&&&4&&4&G s7CK.+"3)L/8ְ?Ͱ?/+"Ͳ"/ +@"& +/" +@/, +"+ͱM+?84B99/2ADE$9"H999 K9999.)45990164762#"'32=462!2#!"&463!5&'"/5462&%4632   R 76`al&4&&&&&}n  Ri&4&e*f"3  R  `3&&&4&&4& D R&&57&5462!467%632#"'%.5!#!"&54675#"#"'264&"  8Ai8^^.    @ o&&}c ;pG=( ]&4&&42 KAE*,B^^B! `  ` fs&& jo/;J!#4&&4&$ %-(-/ ./+ְ ͱ/+ + 9 - 90167%676$!2#"/&7#"/&264&"$ {`PTQr @ U @8P88PrQ P`  @U @P88P8+ $3/33/ְͰ+Ͱ + ͱ+6>+ >+ >+     ... ......@9011!2!6'&+!!̙e;<* 8GQIIc@8 !GG + /Ͱ/!/ְ ͱ"+$901$  $2?64' 64/&"aa^4f3f4:a^L4:f4334f: + /Ͱ/!/ְͱ"+$901$  ,2764'&" aa^,f4:4f3a^4f4f4 //!/ְ Ͱ +ͱ"+  $901$  $27 2?64'&"aa^,f4334f:4:a^4f3f4: / /!/ְ Ͱ +ͱ"+  $901$  $2764/&" &"aa^,4f44fa^4:4f3f@ /Ͱ/3Ͱ2/3Ͱ2/+6?d+ . ?$+ . +  +++ ....@  ............@01!%!/#35%!'!7†/d jg2|bx55dc  @h/3Ͱ 2 / 3 Ͱ 2/+6>j+ .  +  +.. ......@017!%!!7!!  G)DH:&H;KdS))MUJ+?3 +.+/,3Ͱ$2U/V/ ְ2.Ͱ#2O. +Ͱ/OͲO +@ +S. + Ͳ S +@ ) +W+ E9O9.S9 D9J6BG$9U P999011463!2#"&=46;5.546232+>7'&763!2#"/ $'#"'&264&"`dC&&:FԖF:&&Cd` ]wq4qw] @&4&&4`d[}&&"uFjjFu"&&y}[d ]] 04&&4&#`!+Ͱ2/ Ͳ +@ +$/ְͲ +@ + +@ ++ ͱ%+ 99 901546;4 +"&54&"!2#!"&8( r&@&Ԗ(88(@(8`@(8@&&jj8((88 #+3+ Ͱ#/'Ͱ3//Ͱ+/Ͱ/4/ְ Ͱ +%Ͱ%-+1Ͱ1)+!Ͱ!+ͱ5+1-@ "#&'*+$9/3@  !$%() $901$  $ >.    6& 462"aa^Nfff,,X>aԖa^ffff,X>ԖԖ/9 /,33ͱ$220/ְ Ͱ +Ͱ +)ͱ1+01546;2+"&%546;2+"&%546;2+"&8((88((88((88((88((88((8`(88((88((88((88((88((88/3 +Ͱ/Ͱ-/$0/ֱ 22 ͱ(22 ͱ1+01=46;2+"&546;2+"&546;2+"&8((88((88((88((88((88((8`(88((88((88((88((88((88+EJ /!ͱ622A/F/ְͱ,22;+ ͱG+;$4999A!).999015463!2#!"&264&"';26'&'&;276'&.$'&www@wKjKKjK    \ f ww@w jKKjK  ܚ H     f  / //ְ Ͱ +ͱ+  $901$  $%32764'&aa^2  ! a^% @J@%65+/0/%ְͱ1+% 901476227"/64&"'62764'&" 6%%k%}8p8~%%u%k%~8p8}j6j6[<<k%%%}8p8}%k%t%%~8p8~4j4j-<( /Ͱ/ /ְͰ+ ͱ!+015463!2#!"&3!26=4&#!"www@w&&&&ww@w&&&&/: +Ͱ-/$Ͱ/0/ְͰ+ ͱ1+ (9901463!2#!"&73!2654&#!"5463!2#!"&w@www^B@B^^BB^@ @wwwwB^^B@B^^B@@@/+Ͳ +@ +/ְͱ+99017&?63!#"'&762+#!" @(@>@(@ %% $%-/Ͳ +@ +/ְͱ+ 990163!232"'&76;!"/&  ($>( J &% $( /Ͱ/%/ְͰ+ͱ&+015463!2#!"&2764/&"'&"www@wf4ff4-4fww@wq4f4f-f%/F /Ͱ./0/ְͰ*+ͱ1+*"&$9.% '$9015463!2#!"&%! 57#57&76 764/&"www@w  `448.# e \Pww@wW  `844` #  \P)( /Ͱ#/*/ְͰ+ ͱ++015463!2#!"&27327654&#!"www@wf4 '& *ww@w14f*&')5C /Ͳ +@ +./6/ְͰ'+ͱ7+."'99*9015463!2#!"&3276'7>332764'&"www@w ,j.( `'(wƒa8! ww@w  bw4/*`4`*'?_`ze g /Ͱ//ְ Ͱ +Ͳ +@ ++ͱ + $9 $9$901$  $ >. -aa^(a^(1-< /Ͱ/./ְͰ+ ͱ/+-&99")99015463!2#!"&%3!2654&#!"63!2"'&www@w   @ ((Bww@ww    ###@-< /Ͱ/./ְͰ+ ͱ/+!(99$+99015463!2#!"&%3!2654&#!"&762#!"www@w   @ @B@((ww@ww    C#@##-< /Ͱ/./ְͰ+ ͱ/+ '99$+99015463!2#!"&%3!2654&#!"476'&www@w@##@##ww@ww(B`BZ+@Ͱ^/<3Ͱ32/03Ͱ(2%/a/b+^@I9%901546;&7#"&=46;632/.#"!2#!!2#!32>?6#"'#"& BCbCaf\ + ~2   }0$ #  !"'?_ q 90r p r%D p u ?|=+Ͱ/2= +@4 +/-3Ͱ%2!/@/ְ2/Ͱ$2/ +@/* +/ +@ +/0+8ͱA+0/99899!9901=46;#"&=46;54632'.#"!2#!!546;2#!"& a__ g *`-Uh1  D  ߫}   $^L   4b|W/ Ͱ=/%c/ְ@Ͱ@Z+!2SͰ)2S+Oͱd+@9Z9S =G999H9O1899 WR[99=46O$9%!*9901?676032654.'.5467546;2'.#"+"&=.'&4g q%%Q{%P46'-N/B).ĝ 9kC< Q 7>W*_x*%K./58`7E%ǟ B{PD  cVO2")#,)9;J) "!* #VD,'#/&>AX2 ,-3>)9+ /.3Ͱ&2/Ͱ$?/@+01546;267!"&=463!&+"&=463!2+32++"''& pU9ӑ @/Ԫ$  ] VRfq f=Sf o E[.+3/(3:Ͱ 2=/3DͰ2F/1ְ;2*Ͱ2*1 +@* +$21* +@1@ +62G+*1 9901&76;2>76;232#!!2#!+"&5!"&=463!5!"&=46;  % )   "       PW&WX hU g Jg Uh 08l)+./#3Ͱ2/3Ͱ128/9/,ֱ22%ͱ122%, +@% +,% +@, + 2%5+ͱ:+89901546;5#"&=46;463!2#!!2#!+"&=#"&!264&#! @jjv u~v||PT]aen^I+@3N/nDEMU]f=$3ͷd4RS^_c$2/e3QT`ab$3ͳ!*$2 +@ +$22o/p+6+ L V=+ T.\a FD+ `.Cb i=+ k"> )L+L+L+V+k!k"+>*>)+3>)+4>)+=>)+`D`C+FEFa+ML+QV+RV+\S\T+UV+\]\T+F^Fa+`_`C+bcbi+kdk"+ek"+bfbi+3^+ gbi+hbi+=+ klk"+mk"+nk"+gbi #9h9lk" #9m9@")>CFLV\gmhikl................@,!")*34=>CDEFLMQRSTUV\]^_`abcdefgmnhikl............................................@NIYj9901546;'#"&=46;&76;2!6;2!6;232+32++"'#+"&'#"&%3746573'#!37465!mY Zga~bm] [o"դѧ u #KQ#F"!QN@@X hh @@h h+,83H\+(+33Ͱ42 +@/ +)2G/KͰ /\3 Ͳ222 +@  +2]/ְ24Ͳ-I2224/Ͱ//34*+2)Ͱ2^+/9*47FKZ$9)E9GD9K999 Y901373273&#&+527536353#5"'#"&#%22>54."#52>54.#8o2 Lo@!R(Ozh=ut 3NtRP*H :&D1A.1,GHI$9F:9997D $98.:990176;46;232#"'&5333!53'#36?5"#+#5!76;53!3/&5#" iFFK//Kq   x7  y˱H l` @jjjjjZ sY wh/" "})GR%+HͰ)/ 33ͳ"&$2*/CͰ@2EͰ6/9Ͱ298S/ְ Ͱ 8+*27Ͱ&287 +@8) +7D+#2GͲGD +@G +T+6<$+ &R &%&R+R..%R....@ 989D7!'(/?HI$9G;:99H%9* M$9C+?990176;46;232#"'&333!53'#3!56?5"#+#5!76;533/&5#" iFFK//KYq   x7  yH l` @jjjjZ sY wh/" ")9IYu+&Ͱ27/.ͰG/>ͰW/NͰ2Z/ְ Ͱ J+*:222SͲSJ +@S" +@S3 +@SC +[+ 9J97 $90176;46;232#"'&463!2#!"&55463!2#!"&5463!2#!"&5463!2#!"&" f@@l` @y")9IYu+&Ͱ27/.ͰG/>ͰW/NͰ2Z/ְ Ͱ )+*:J222"Ͳ") +@"3 +@"C +@"S +[+ 9)97 $90176;46;232#"'&463!2#!"&55463!2#!"&5463!2#!"&5463!2#!"&" f@@l` @y"8KV&/3/Ͱ6/Oͱ 22U/Ͱ?/@Ͱ<2@? +@@ +:2W/ְ Ͱ +MͰMA+<Ͳ +A< +@A? +<R+ ͱX+ 9M*+9K$9A&/G999<6:OU$9R32996/+9O299U 990176;46;232#"'&%4632#"'&'73267##"&733!5346=#32654&#"" m{8PuE>.'%&TeQ,j{+>ID2FX;4l` @i>wmR1q uWrrr :MrL6)?j"8KV?/3@Ͱ<2@? +@@: +&//Ͱ6/OͰU/Ͱ2W/ְ Ͱ +MͰMA+<Ͳ +A< +@A? +<R+ ͱX+ 9M*+9K$9A&/G999<6:OU$9R3299&@ $9/*96+9O29U 990176;46;232#"'&4632#"'&'73267##"&733!5346=#32654&#"" m{8PuE>.'%&TeQ,j{+>ID2FX;4l` @i>wmR1q uWrrr :MrL6)?j@\8 +Z3Ͳ +@ +@/ +]/ְͰ+ ͱ^+015463!2#!"&732654&#"467>767>7>7632!2+".'&'.& &&&%&&%`$h1D!  .I/! Nr7.' :@$LBWM{#&@&&&&%%&&%r@W!<%*',<2(<&L,"rNV?, L=8=9%pEL+%@\0/ Ͱ 2 +@K +]/ְͰ+ͱ^+013!2654&#!"4632#"&46767>;#!#"'.'.'&'.'.& &&&%&&%`&#{MWBL$@: '.7qN !/I.  !D1h$&&&&%%&&%+LEp%9=8=L ,=XNr%(M&<(2<,'*%<!W@r% *2?Sem+ ͰP/0Ln|$3Gͱ22GP +@G +/Ͱ/3sͲAJ222+/.3,Ͱo2$/9ͲX222/a33Ͱ3Ͱ<2/ְͰ9Ͱ1+0Ͳ01 +@0. +10 +@1+ +0@+CͰ; TͰCM+I2LͳfLM+kͰL\+ͳ\+nͰn/ͱp22+Ͱ2x+Ͱ/xͰ+Ͱ2+2Ͱ2+ Ͱ Ͱ/+93?99@0>99C=P99T;$9015463!2#!"& 7>7654'.'&! 753##35#'33273#5#"'&3276=4'&#"542"3632#"'532=4#"3273##"'&5#54762#32746453#"'&7354"www@w A+&+A  B+,A RPJ # JZK35DBCC'%! p3113C@@EC $)  )#!2 $)CCCf"D 54BBBww@wET+<<+TS,;;,W FFY\g7("(-:&&<:&&:443(*54*)$H12%-(rU;&&:LA3  (&"33 !-AS[mw4+^3/ʹ25\`$2/Ͱͱ;v22/Ͱq2!/l3Ͱ/P3ͰU2Z/Gͱy22/ְ.Ͱ.( )Ͱ)/(Ͱ.?+9Ͱ429& %Ͱ%/&ͳB9?+TͰ96+\ͳW\6+LͰ\x+{ͳt{x+nͰn/]k33tͰ{+2ͳ+dͰd/Ͱ +2Ͱ2+2 ͱ+66R+ ",#$"#$,...."#$,....@() $9&%2;99\6GP99{xi`999d999999n99 o999!@ 78@Aik$9)($9Z'990147>76  '.'&3335!33#&'&3273##"'&5#547632#"'&72=4"353276=4'&#"5#632#"33273#5#"'&327676=##"=354'&#"542X;:Y X::Y oidkȀjGDfyd/% .06YYY&CE%%EC&ZVV^Y-06 62+YY''.[[[52. 'EH$[!.'CD'YZt;PP;pt;PP;p9^qJg1%=6* lRP%33%PQ%33&?FFEE077II86-CC!+} 7>%O%35 1 3 $EWgO%33%O.DD.{'&72'&76;2+%66;2+"'  ( &' P *o"-J. -Z-#7,(+ Ͱ/Ͱ58/9+($/999015463!2#!"&;274'&+"%;276'56'&+"www@w~}   ww@wc $`" j!#  #/$+$0/ְ ͱ1+ 99014>7>76  '.'.32764'&jGGkjG~Gk~!"! lAIddIAllAIddIAt& @J@&@ / ֲ222Ͱ2!+01 5577'5 @RVVWRW.\?il``l1~~ # + Ͱ /Ͳ +@ +2//3/#/!/$/ְͰ++++ + ͱ"+%+6&....ɰ6&....ɰ6&! . !.#"."#.ɰ6@ $99999#99013!3!'75%77777yx#C j''MaM}|yjC#A$VUG%/? /Ͱ/)Ͱ/$34Ͱ./Ͱ<@/ְͰ"+'Ͱ',+Ͱ+72 ͱA+'"$9,0?9999)"'+$94&,99015463!2#!"&73!265##"547#$3264&#"%;26=4&+"tQvQttQQt#-$܂"((((EvQttQQttz##?D~|D? =(())8 /Ͱ2/3 /ְͰ+Ͱ+ ͱ!+015463!2#!"&264&"264&"www@w||||||ww@w||||||| //+$901$  $37!3aa^g^h h^5a^2-2P#<P\g<5/(Ͱf/ah/cֱi+(5/;99f$&)-STe$9a 9901>767$%&'.'.? 7&'.'&7>7.'$7>'.676'&"8$}{)<U,+!  #7 ,$Vg.GR@&\74~&p )4 2{ "8 eCI0/"5#`# ## /1 "[\kr,y9R ;&?L .AU`iGT/O3EͰH2j/VְbͰb9+ ͱk+9b=>L]ef$9 $;99ETL9015463!2#!"&7>776'&'&7>746&' '>76'.&676&66'4&www@w$ i0 +p^&+3y/" h . ."!$2C',,&C7-F XjM+'TR$ww@wD$4" P[ & 57!? "0>8Q.cAj'jj#"p1XRMBn \i6-+.N#b/Ͱ /3 Ͳ +@  +$/"ְ Ͱ2 " +@ +" +@" + Ͱ/%+9 9 90156767673!!327#"'&'&'&5N[@@''l '2CusfLM`iQN<: 67MNv|v$%L02366k3\ /Ͱ!/(Ͱ2-/4/ְͰ'++2 ͱ5+399'-9 )999!9(9015463!2#!"&3327675#"'&'&5!5!#www@w*+=>NC>9MXV3%  10Dww@wlN+*$% $8c'#Z99*(@/ְ ͱ+ 90176;46;232#"'&    & /ְͱ+901&7632++"&5#  ^  c  &  @//+901476!2#!'&@  & } b  ^ //+ 9015463!546'&=!"&&      q&8M/Ͳ +@# +2 +@ + 29/ְͱ:+ '1$99990147632327632#"'&#"#"6767qpHih"-bfGw^44O#AY'T1[VA=QQ3KJ?66%z䒐""A$@C3^q|}} !"lk) =KK?6  (/ְ2Ͱ2+ 2 Ͱ2+01!%!%VKu-u5^mf}~ "=EM["/ͰAͰH2\/ְͰ#+ 2&Ͱ"29&#+3ͳ+&#+0Ͱ0/+Ͱ&N+Vͱ]+&#>BFJ$93999+099ADL$9014632"&467'&766276!+"&=##"&5'#"&264&"264&"4632#"&<+*<;V7>5'&7>.'&'&'&7>7>767&'&67636'.'&67>7>.'.67'.'&#"'.'.6'.7>7676>76&6763>4'>&4.'.'.'.'.'&6&'.'.6767645.'#.'6&'&7676"&'&627>76'&7>'&'&'&'&76767><&'&23256&'&4723#76&7?4.6>762674.'&#6'.'. "  V5 3"  ""#dA++ y0D- %&n 4P'A5j$9E#"c7Y 6" & 8Z(;=I50 ' !!%&&_f& ",VL,G$3@@$+1$.( *.'  .x,  $CN7  J#!W! '  " ';%  k )"    '   /7*   I ,6 *&"!   O6* O /     Wh   w*   sW 0%$  ""I! *  D  ,4A'4J" .0f6D4pZ{+*D_wqi;W1G("% %T7F}AG!1#%  JG 3   J  <   mAe  .(;1.D 4H&.Ct iY%  "+0n?t(-z.'< >R$A"24B@( ~ 9B9, *$        < > ?0D9f?  .Y  G   u7   $37C[bu'+ Ͱ/ͰB/c/ְ Ͱ S+ͱd+S @  %)468@D\a$9'+Sb^$9FIN$9B"46:DU$901$  $>?>7&'!7 %&'327&#63"3>7&#">2&'>7&aa^^XP2{&% .0x||*b6~#sEzG<L $MFD<5+  CK}W)oa^2|YY^D 1>]yPեA4MWME6< 5* @9IK<^/#Ͳ# +@ +D/ͲD +@ +_/ְIͰ 2IͰ/I +@IS +I(+Ͱ Ͳ( +@(5 +`+I9(@$9 9#9D $99014632632#"'#"$&547&32>54./.543232654.#"#".#"ែhMIoPែhMIoPxIoB':XM1h*+D($,/9p`DoC&JV*x& i55K55q*)y(;:*h )k5555K*x?x*& /8 /#ͰͰ/+30/ְͰ+ Ͱ '+ ͱ1+01463!2#!"&3!2654&#!"3!2654&#!"&&&&  @&&&&19L9/5:/"ְ*2Ͱ2" +@ +" +@"' +"3 7ͱ;+"4589$9014763!2#"'#++"&5#"&5475##"&462"IggI8(3- &B..B& -3(8kk(8+Ue&.BB.&+8뺃%-~ /3Ͳ  + $ + 22@  +2-/)./ְ!Ͱ!+Ͱ' +Ͱ+Ͱ+ ͱ/+(-99+'99),9901463!2"&5#"&5#"&5#"&462"pPPp8P8@B\B@B\B@8P8 PppP`(88(`p.BB.0.BB.(88+ !"/ְͰͱ#+ 9901$  $ >&'&#"'.aa^]^/(V=$<;$=V).a^J'J`"((",9I&?'&767%476762%6'%"/'&5%&2>4.", $ $ " $ $  ܴ  [՛[[՛k `2 ^ ^ ` ` ^ ^ 2`՛[[՛[[1:$+Ͱ)/2/ְͰ-+ ͱ3+ -/9)'90146$763276#"$&732$7#"$547s,!V[vn)^zf킐[68ʴh}))Ns3(zf{n 6<@+&/Ͱ*Ͱ /,/-+*#901463!2#!"&463!2#!"&3!264&#!"@&&&&@&&&&@&&&@&&&&&&@&&44&&4& `BH/+,3 +A/3Ͱ2./ Ͳ . +@ +2C/FI/@ְ2.Ͳ@. +@@ +@@ +.-+Ͱ2- +@ +@ +J+.@ 5>CE$9- &FH$9 /&5>$9C99F990146;'&462!76232+"/##"./#"'.?&5#"46  &&4L4&&&C6@Bb03eI;: &4&&4&&4&4&w4) '' 5r}G(/ְ1Ͱs21 +@ ++1z9014?63%27>'./&'&7676>767>?>%63#&/.#./.'* 46+(  < 5R5"*>%"/ +[>hy  @ 5d)(=Z& VE/#E+)AC (K%3?JUkc"/*Ͱ1/Ͱ}/oͰj/Y/dְ_ͱ+_de91*@ >8BNTa$9 0dev{$9o}|9jp9901476$6?62 $.776$'.$&7>'&676&'&7676&'&&676.76&'.&676'.76&&YJA-.-- 9\DJՂ % Q//jo_--oKDQ#"N  {WW3' 26$>>WCw%`F`F_]\df`$E ""F!I  B8/Ka`s2RDE5) %^{8+?` r 2/ְͰ+ͱ+ 9 999014$7&>7#"&$̵"#ÊI$~EacxWW^ czk8j/Ͱb/[Ͱ l/,ְ@ͱm+@,S9[ U]g$9014636$7.'>67.'>65.67>&/>./"+f$H^XbVS!rȇr?5GD_RV@-FbV=3! G84&3Im<$/6X_D'=NUTL;2KPwtB X^hc^O<q&ռ ,J~S/#NL,8JsF);??1zIEJpqDIPZXSF6[?5:NR=;.&15Pt=   ' /3Ͱ /Ͱ/Ͱ// +0175!+!"&5!!5463!2sQ9Qs**sQNQsBBUw wHHCTwwTC 1s /Ͱ//Ͳ/ +@/* +/ +@! +/2/ְ Ͱ +ͱ3+  %$9/ $9%&99 $901$  $ >. 5463!54632#"&=!"&aa^( ` ?   a^(     1s /Ͱ*/!Ͳ*! +@*. +!* +@! +/2/ְ Ͱ +ͱ3+  %$9* $9!99 $901$  $ >. 47632!2#!#"'aa^( @  `   a^(d @    ?/< /Ͱ/0/ְͰ+ ͱ1+ (99%,99015463!2#!"&%3!2654&#!"47632#"'www@w   @ &&@ww@ww    B@ && @ Z /Ͱ/Ͱ/ /ְ Ͱ +Ͱ+ͱ!+ $9  $901$  $ >. 462"aa^(Ԗa^(ԖԖ]6/+/ Ͱ3/&Ͱ%/"Ͱ!/7/ְͰ+ͱ8+6+ !.6!6&!"!&+%!&+6..!"%&6.....@99 993/*+$9%&9"9! 9014732>'#"$&7>32'!!!27#"'!"&'Ѫz~u f:лV6B^hD%i(: ((%@*>6߅~̳ޛ 3?^BEa߀#9cr#!KL/ְͲ +@ +M+015463!2#!"&66767676'&6'.'&'.'&www@w C1 $$*=+T"wh%40C>9PC/+,+  /9F6(ww@w$)7 .3c M3IU/A*7U1.L4[N .QAg#%@) D:+E/=ֳ>$2+ͳ!"*$2+= +@+' +2=+ +@= + 2+.+5ͱF+6+ #?)+  #+ +++! +"#+?*?)+>?)+@ !"#)*>?................ #)?........@0154?5#"'&=4?546;2%6%66546;2+"&5#"'& wwww `G]B Gty]ty cB Cr +ͰA/63$Ͱ.2A$ +@A< +$A +@$) +/D/ְͰ?+%28Ͱ-28? +@83 +?8 +@? +8+ ͱE+01463!2#!"&73!2654&#!"5463!46;2!2#!+"&5!"&w@www^B@B^^BB^`@`@ @wwwwB^^B@B^^B@@`@`'7HP[./+Ͱ!/3Ͱ 2  ͳ!+&ͰF/DQ/LְͱR+ JM99&999FLO99901467&546;532!!+5#"&547&327!"+323!&#64'M: @nY*Yz--zY*n@ :t9pY-`]]`.X /2I$ tkQDDQ54!/@@3,$,3@@/!@&*0&& !P@00$pRV46?'&54632%'&5463276327632#"&/#"&/#"&546?#"&%%7,5TS]8T;/M77T7%>54&#!"www@w8(@(8!"5bb./ * =%/' #?7)(8ww@w7(88(#~$EE y &%O r    O"):8%_gqzh+ /Ͱ]/&I33)Ͱ/r/ְͰk+oͰo+ ͱs+k@   #&,`dh$9h#`df$9) @ "BMUam$9016$  $& $6&$ 47&6$32#"67>&&'&67>&"&#"%654'LlLe=Z=刈2CoiSƓ i 7J ?L.*K  Px.* ~p;_lL刈=Z=刈_tj`Q7  $ki'<Z :!   @! yy,ik*%E/3Ͱ2/ְͲ +@ + +ͱ+ 9990146$7%&$&57%7&]5ň%wnj&P'!|OzrSF 0y+Ͳ!%)222+ͳ#'+$2 /1/ְͲ +@ +2 +#Ͱ#$+'Ͱ'(++Ͳ+( +@+0 +22+$# 901463!2!5 ##!"&5546;!3!3!3!32))) ));;)&&&&@&&@ (6]4/-Ͱ /7/ ְ#2Ͱ2  +@  +8+ !'$9-4!#$9 %99'*/$9014762"'%+"'&7&54767%27% $&` ` t+8?::  ::A W>4>֬.`."e$IE&O &EI&{h<EvEEvm!"/ְͱ#+99901327>7327&#"&m:2+D?*%Zx/658:@#N >+)@ (oE=W'c:= E(o0La,/7Ͱ /SͰ]/3b/ְMͳ1M+Ͱ/1ͰM+!Ͱ!X+ͳ<X+'ͱc+M ,]999! 7EGS$9X9$999 7!'G$9]S990174676%.547#"&5467>3!##"&'&732>54.'&#"3267654.#"oYJ .H?LpKL1FE1@Z[@1G렄:$/Kce3:k[7'9C!5goS6j+=Y4%Q5">j@*Q.Q.R)A)(-R6B@X?ZHsG;@"$ECPN[RzsS`;v8\;)4^>0$/. 0$8].ggR4!8g;}R'!;5>R]q|z+/EͰo/dͲdo +da +h2[/z3VͰt2>32#"&'%632#"$'.547.767&#" $7>4&'&$ 462#"&462;2762+"'462#"&264&"654&#"^SAX[]8MmmMLmtG@W^>4}|0:M31$.>Wewpt+H+tpwwpttpSpQQ89Rj MM  ccSpQQ89R@Z@@Z5/9W>1^7R2>mnlMJ:^>h!yTRWWRTz%e;C,hWʺIKQQKIʹIKQQKI9RR98PP! MM ! cc9RR98PPoZ@@Z@i.G>WAI`ht /Ͱ^/QͲQ^ +QN +V2I/g3EͰc2%/?3.Ͱr/lͰ3/u/ְͰͰC+GͰGb+fͰfi+oͰo+ Ͱ "Ͱ"/v+C=?999GJO99b;)999f*UYX$9i,6+999o%'3.$99 09EI$9%"'=$9.();<$9lr+016*$9389015463!2#!"&32$654'>54&#"&'3264&#"'&&#"462"4762;2762+"'$462"4632#"&'!#,H3<&SG12HH2$< _$93HR4J44J1{z3A@:4J44J****~%=baab?'3I0k 12FGdH)!6 m+IJ44J633@@J44J6V**** *< /Ͱ-2 +@ + /Ͳ  +@ 6 +%2=/ְ Ͱ (+#Ͱ#++Ͱ2+9+23Ͱ30+ͱ>+#( 999 99+-993 990.9 )1<$901$  $32654632754&""&=#26=##"&='aa^rsRQsOpoOx|PrrRz~{]0/.3Ͳ +@ +)2/ 1/ְͰ+Ͱ+2#Ͱ2#(++ͱ2+9 9(#.9%&99  !"$901!2654632'54&"#"&%7265!#"&H7>3263232654.547'654'63276.#&#"'&547>'&#".'&'#"&%>327>7?67>?.'.*#"3>32#"'>;?757)  //7/ D+R>,7*  2(-#KcgA+![7>7>7 $&32>67>54.#"#.67>76'&#"'&#"767>3276'&'&#"';RKR/J#=$,9,+$UCS7'|ՀMLCF9vz NAG#/  -!$IOXp7s_"kb2)W+ rJ@    #    5/1Y|qK@ %(YQ&N EHv~\lshp4AM@=I>".)x.--ST(::(Y ! "1 [   / ,<ZxX-/U3%ͰC2%- +@%" +F2y/uְS2bͰL2bu +@be +I2z+buFPh999%-)I999015467&6?2?'#"&46326'&"/.7.?>>32'764&"?#"&'&/7264/YE.A %%%h%AUpIUxxULs T@ %hJ%D,FZCV sNUxfL.C %Jh%@/LexUJrVD %hJ%NHpVA %h&%%@.FZyUybJ/@ %Ji%CWpC-KfyUMt UC %hJ%@U sMUy^G,D %Jh%cv++3/Ͳ +{ +s/k/ְͰ+Ͳ +@ ++6+ :=1'+ (1'+++ :<:=+<:= #9(1' #9(1:<....(1:<....@99@ &7MSdnx$9 9999s@ c@I$9kAED$9016767672,32%#"'47%67>7>7&'&'&'>76763>7>&/&'.'767672#&'&546323267>7''+"&'7'7j+.=;. &JlLDf' % :/d B 4@ } ,+DCCQv!0$ && !IG_U% +6(:!TO?=/f-%fdL?6 #nk^/ !X "  ##  292Q41 5gN_     %1$I BS N.|nA '0@P`p4+d33%Ͱ 24% +@4 +=D4 +t33=ͱl22MT4 +33Mͱ|22(]4 +33(Ͱ0//ְ Ͱ +1ͱAQ22(Ͱ18+HX22aͱq22ah+x22ͱ22+22!ͳ)!+ͱ+./990(90146;2+"&%463!2#!"&!#"&=!;26=4&+"5;26=4&+"5;26=4&+";26=4&+"5;26=4&+"5;26=4&+";26=4&+"5;26=4&+"5;26=4&+"^BB^^BB^8((`(:FjB^(8``@B^^BB^^B(8(`("vEj^"8(/?O_o/?463!2#!"&;26=4&+"5;26=4&+"5;26=4&+"5;26=4&+"5;26=4&+"3!26=4&#!";26=4&+"5;26=4&+"5;26=4&+"5;26=4&+";26=4&+"5;26=4&+"5;26=4&+"5;26=4&+";26=4&+"5;26=4&+"5;26=4&+"5;26=4&+"5;26=4&+"&&&&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&&&&z@@@@@2@@@@@@@@@@@@@@`%k%/!&/ְͲ +@ + #Ͱ+Ͳ +@ +'+ %$9#!$$9!% $901462!762"&5#"&5$462"@8PpP8B\B@B\BDP88P.BB..BB.8$G #3CQf/Ͳ + +"2R/$ְ,Ͱ Ͱ,4+<ͳD<4+KͱS+,$"99499<9 DO$9014632#".4>32#"&#"#"4>32#".4>32#".4>32#"&TMLFTMLFpYv"?B+D?BJM&X=M{<&X=L|<'<{M=X&<|L=X&VFLMTFLMTPwoJPvoVӮvs.= ZY 2+"&7.@UUr_-$$-_r%&&5% /ְ2 ͱ!+0146762"'.-.&,&.$@B@$F@(BB(#<<%]|*.26:>B2C/8ְͰ?2@+ͱD+8<>$9@=9015467%467%62"'%&'"'%.-%-%-%+#+#6#+$*&!@@@@@@!&l@G@,l@`&@&@ @&p@&`$>>׭:ͽ  }:!7;A5+/Ͳ/5 +@/2 +5 Ͱ,/<Ͱ/ͳ?+%Ͱ!/B/ְͰ2+ Ͱ Ͱ "+,Ͱ<2," +,) +C+ 9, 99<)"99 9%9!9015!2#%!254#!5!2654#!432!32673!"!5!!&#"RWu?rt1SrF(N[\Ίensm?vd3ZpC~[R yK{T:֧IMމoy@7+|i%,AEK /Ͱ0Ͱ/ Ͱ6 9Ͱ93ͳK +IͰ&/'ͰB/CͰ/L/ְͰ+&2#Ͱ*Ͱ#+-Ͱ-<+ ͱM+#99<-BDFK$996#99 -<99IK9'?99015463!2#!"&7!2654'654.#!532#532#327##"&5!654&#"75!>32www@w~uk'JT7|wji> I'DH~?F8q ww@wsq*4p9O*sqhOZ^"(LE MM8Bzl5R[e/9Ͱ>/ Ͱ/#ͳV#+Ͱc/_ͰZ/ͳZ+3f/ְ Ͱ  +TͰT\+aͰaX+ͱg+ 06;$9T9a\UVZ$9>999 9#9c%9_@  ) STWX$90146326327>32##"&'#"'327'.546325.#"3264&#" #".264&#"462#"&zUIr19rsswOIr37UCY? @!'G2LI*?YUI+?YY? $G2#(mnnMLGWzXW>=Wy\GrPk\G;@Y=$2G%,Y%,Y~Z  2G [mmm>WXzWW1DV`j /Ͱ_/dͰi/ZͰ"/Ͱ/k/ְͰX+aͰaf+]Ͱ] +ͱl+X$28ER$9fa"Z_$9_&)+PU$9dAC999i@  ,2%5@WX\]$9015463!2#!"&327326?264&#""&#"%.#"4632'&#"676&/632#"4632#"'2654&"www@wL6$ G.2IGffGHel #  G-6L"8(- 07 ((}*: ('88';D10DD01,7L77L7ww@w5L,:D1zefeG,:L^P8 8  9 7P7I`DD`Du'66'&77V->M\-+L+3AͰ2]/^+AL ?B$901'.?67&>7%.'>%67%7.'6?%7&?a0#Ov "N\$> P(1#00/6 'I]"RE<98 1G#9  ($=!F "\HiTe<?}8J$\ 9%d,6?=SVY]C j# %N#" H@)1;C'/33ͳ23$2-'+>3#Ͱ28/ D/%ְ Ͱ22+ %+Ͱ/+ͳ/ %+=Ͱ +ͳA+ͱE+6>q+ 2;q+ 3.4  4;.... 34;.......@-0B9901546;>3!232+"&=!"&=#"&264&"%!.#!"264&"]ibbi]pp`pp`^^^Y @ c^^^]^^]]PppPPppPp^^^e^^^3;EM1+ (33ͳ<=$271+H3-Ͱ$2B/Ͱ Ͱ2N/ְ5Ͱ59+GͰGK+ͱO+6>q+ .<Eq+ =.>>E....<=>E........@5/99,-99G')* $9K$%99!"99B-:L9901546;>;5463!23232+"&=!"&=#"&264&"%!.#!"264&"]ib@bi]pp`pp`^^^Y @ c^^^ ]^^]]@PppP@@PppP@p^^^e^^^ 3S4/.ְ12'Ͱ$2'. +@'! +@' +@' +.' +@. +@. +@. +5+'. $901647#"&47#"&4762++#!#!"&5467!" &&4&&&2 $$ 2&4&4&44&m4&m4&&##& $:P />ͰFͲF +@FB +M/,Ͱ7/Ͱ /Q/ְ%Ͱ%+Ͱ3Ͱ3/R+% 93@   ;I$99>FDI99M0999,(.39997%999$9  901$  $32763232654'&$#"32763 32654'&!"32763232654'&#"aa^) -g+(~̠4#z##ə0  o*a^(*%D= )/IK/%#!| #(* g  s" :NUk8+ /Ͱ//L/?ͲL? +@LD +/V/ְͰ+ ͱW+ 3;CPR$9/8".1;QT$9L#('0M$9015463!2#!"&73!2654&#!"5%>36'&%#!"&463!2&'$'#&7&Q::QQ::QG((((2 84@ao   Ug AU :QQ::QQ:(((( G;.} 0 T@43f= t !-;<JXfuv762"'?432#"5?632#"'?432#"5?4632#"&537632#"'7632#"'74632#"'732?.#"7462"&'7>2"&'732765?4'&"7567632"&/47632632#!.>  C  E  F  )  J  N  O  /!R U     ;  _U`59uu  ~ ~   |   ,                J|   rq "vu )9:+ Ͱ/Ͱ'/ Ͱ7//:/;+99 '990115 $7 $&5 $7 $&5 $7 $&546$  $&ww`ww`ww`bb`ΪTVVTEvEEvŪTVVTEvEEvŪTVVTEvEEvŀEvEEvEEvEEvW\gyQ+/ͰJ/Ͱ/@Ͱ/zͰ-2//ְͰj+8Ͱ8+zͰz+ ͱ+j@ W(*OXZ]dyu$98:nt9992_99z>M99@CJ{$9JQ!$OXZ$9G]99M9@>_99(:dh$9z5nux$9901463!2#!"&7!!"&5!>766767.76;2632#"&'#"/&'&767%67.'&'674767&54&5&'%!&'&'3274'&8((`8(8((8`(8 ^U 47D$    7[!3;:A0?ݫY  A4U3IL38k Cx JL0@(8(`((88H8((g- Up~R2(/{EJ1&(!;  (X6CmVo8%(*\ 9 JQ\/Ͱ/KͰ/R/ְͰ+GͰG+KͰK+ ͱS+6=+ >= !}F+ '*<8>m+ 32,-1+ '('*+)'*+ + <9<8+9<8 #9('* #9)9@ !'*,-238<=>()9...............@ !'*,-238<=>()9...............@J99GHI999K+01:$9./L999%+/16I$9KQ901463!2#!"&7!!"&5!3367653335!3#'.'##'&'35!!&'&'8((`8(8((8`(8iFFZcrcZx @(8(`((88H8(k" kkJ ! k 9 LSn/Ͱ/MͰ/T/ְͰ+MͰM+ ͱU+-./378>$9M9902456N$9699MS901463!2#!"&7!!"&5!!5#7>;#!5#35!3#&'&/35!3#!&'&'8((`8(8((8`(8-Kg kL#DCJg  jLDDSx @(8(`((88H8(j jjkk kk 9 1<C/Ͱ!/2Ͱ3/.3,Ͱ/=Ͱ/D/ְͰ+=Ͱ8 'Ͱ=+ ͱE+ !-/23$9'>9!09932'9=C901463!2#!"&7!!"&5!!5#5327>54&'&#!3#32#!&'&'8((`8(8((8`(8 G]L*COJ?0R\\x48>/x @(8(`((88H8(jRQxk !RY~ 9 #+2+/Ͱ+/'Ͱ/,Ͱ/3/ְͰ%+2)Ͳ)% +@)# +)+,Ͱ,+ ͱ4+)% 9,!9-9+ "999'!9,2901463!2#!"&7!!"&5!57 462"!&'&'8((`8(8((8`(8@pppx @(8(`((88H8(pppp 9  3;?CGKR2+7Ͱ/Ͱ;/(Ͳ(; +@(& +D2AMPU$9X^901463!2#!"&7!!"&5!546;76#"/#"&32764'.3276'.!&'&'8((`8(8((8`(8 WW6&446dd$x @(8(`((88H8( )5]]$59955{{ 9 ,<Ck/Ͱ*/:3!Ͱ12/=Ͱ/D/ְͰ+&Ͱ& +=Ͱ=+ ͱE+=-.9915:>$9=C901463!2#!"&7!!"&5!463!2#!"&%5632#"'!&'&'8((`8(8((8`(8L44LL44L  x @(8(`((88H8(4LL44LLZ  w 9 0@T[/Ͱ/UͰ/\/ְͰ+UͰU+ ͱ]+6?#+ 12:9129:....129:....@&99UBF99DNV999".&'>/.$&?'&6?6/!&'&'8((`8(8((8`(8~ 3  3  ?  ? ; 3  3@x @(8(`((88H8(-- & & U?     &  &` 9 '6h)/$Ͱ/7/ְͰ +!Ͱ!+Ͱ&28+! 9999$)999$)'99 &$901!67&54632".'654&#"327#'. 'XyzOvд:C;A:25@Ң>;eaAɢ/PRAids`W`H( ' gQWZc[-05rn"&*-Q./ְͰ+2#Ͱ'2#,+ ͱ/+$9# "$9,!$)+$9014762"'&?'%%-%% "3,3"",">[ NM[N o")" )) "nngng]xߴ]x#Z+'Ͱ<2./P34ͰJ2X/B3 Ͱ[/ְ$Ͱ$?+ͱ\+$!999? 999999.')9X,H$9 $901467&546326$32#"&#!+.327.'#"&5463232654&#"632#".#"n\ u_MK'oGԨ|g? CM7MM5,QAAIQqAy{b& BL4PJ9+OABIRo?zn6'+s:.z zcIAC65D*DRRD*wya$, @B39E*DRRD*'/7 /"Ͱ&/Ͱ/+Ͱ//8/ְͰ+Ͱ+7Ͱ73+ ͱ9+9999  #(-$97059931499&" #99$'99 14$9+),99/(-99016$  $&7&47' 6&  7'"'627& 6'LlLZ&>ʫ|RRRR«ZZlLRR>ZZZY«|R!Z +Ͱ/3Ͱ2"/ְͲ +@ ++Ͳ +@ +#+99 99014$7 >54' $&_ff_ʎ-ff`-޶Lc@_/d/ְ Ͳ +@  + G+[ͱe+ 9G5;NQ_$9016721>?>././76&/7>?>?>./&31#"$&(@8!IH2hM>'  )-* h'N'!'Og,R"/!YQG54'675#&#"432#"432#"2654&"3&547#6323#3275#"=3235#47##www@w(DL+`N11MZ % N92Z2<)UmQ// +)&')-S99kUeid=R;XYtWW-Ya^"![Y-L6#)|!'(<`X;_"# /Ͱ/3#/$+9015463!2#!"& 3##.'www@wpCWU3D/9$H ww@wFML'b;0bqG9+Iw /Ͱ$9<%(9998 #3>$9014>32#"'.7>32>4."&'&>767&5462#"'#"&'9]v @C$39aLL²L4 &) @.&FD(=GqqrO<3>5-w؜\% L²LLarh({󿵂72765'./"#"&'& }1R<2" 7MW'$  ;IS7@5sQ@@)R#DvTA ; 0x I)!:> +)C 6>&8CO[6/GͰS2M/Y3+Ͱ$/A3Ͳ$ +@$ +\/ְͰ(+Dͳ9D(+"Ͱ"/9ͰDJ+PͰPV+/ͱ]+"999$9D(>9PJ +6$9V49G6'/24$9M(9+9$ <$9014$32&#"#".'7$3264&#"6$32'#"$3264&#"32654&#"32654&#"MŰ9'#!0>R H|B+)22)+Bu7ǖD[B+)11)+B-(33(--'44'-ZNJ '31R23uWm% '31R23-,,--,,-&7632#"'%#"'.5 %&"! ; `u%( (!]#c &76#"'%#"'.5%&7 ##!!  (%P_"'(!7+4Iy/ Ͳ  +  +G/9Ͳ9G +@9> +)/ J/:ְCͲ:C +@:5 +C%+ͱK+C: ) $99G$99)% 12$9 99014766$32#"$'&6?6332>4.#"#!"&546;46;2#!"&('kzz䜬m IwhQQhbF*@&@@*eozz   _hQнQGB'(&@`@ D+ Ͱ//ְ Ͱ +ͱ+  $9$901$  $ >. aa^Nfffa^ffff>g/BHm333bͲ7654'&#!"#"&#"#"&54>765'46.'."&>..**"+8#  #Q3,,++#-:#"$$ /:yu #3=GWak:/^334Ͳ4: +@4 +@4Y +1/(Ͱ /ͰU/LͰb/fͱB22bf +@b +@b> +l/ְ2Ͱ"2=+>26ͰF26X+b2[Ͱj2m+= $%$9X6-,HI$9015463!2#!"&!+"&46;25463!2#!"&!+"&546;25463!2#!"&!+"&546;28(@(88((88(@(88((88(@(88((8@(88(@(88`.` @(88(@(88x ` @(88(@(88`.%Q/Ͱ/ ͳ +$&/'+$!99"$999 $9  9901632%&546 #"'632 &547%#"~\h ~\h\~\~ V VV V5j /ͰͰ/(Ͱ4/Ͱ-6/ְͰ+*2 ͱ7+"999!$9("%994&*2$9015463!2#!"&327264&#"'64'73264&"&#"www@w}XS>~}}XT==TX}}~>SXww@w}9xX}}~:xx:~}}Xx9/>JXgsNr/kt/ְͰ2?+Fͱu+ )03$9? 47;$9F9kr 9016$327627 $&327>7>.4762#"/5462"&4762"/&4?62#"'46;2+"o@5D.D@Yo1 *"T0l,  Z [E  [  Z Z  [ ``1oY@D.D5@ooS0 (T" 02 ,l [  Z)`` Z  [ [  Z =BH!_<ϙwiϙwi  U3U3]yn2@ zZ@55 zZZ@,_s@ @(@@- MM- MM @@ -`b $ 648""""""@N@ ,@  mo)@@   'D9>XRX8` 2  r ` xJT6(R@z (R.j !֜8~*pž:vܠBT袨(Ȧ|4ȬHбT ̴ffҸ>d0R6N(*|.vƒdȜzʸ8̼͚&n>Ҡ*x lVrݤބ2"2v0NB6,.HzNNNNNNNNNNNNNNNNNNNNNNNNNNNN^ ~ ~  . & $  0   * <( d 0zCopyright 2014 Adobe Systems Incorporated. All rights reserved.FontAwesomeRegularpyrs: FontAwesome: 2012FontAwesome RegularVersion 4.1.0 2013FontAwesomePlease refer to the Copyright section for the font trademark attribution notices.Fort AwesomeDave Gandyhttp://fontawesome.iohttp://fontawesome.io/license/Webfont 1.0Wed May 14 15:41:29 2014zZ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopq rstuvwxyz{|}~     " !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~uni00A0uni2000uni2001uni2002uni2003uni2004uni2005uni2006uni2007uni2008uni2009uni200Auni202Funi205Funi25FCglassmusicsearchenvelopeheartstar star_emptyuserfilmth_largethth_listokremovezoom_inzoom_outoffsignalcogtrashhomefile_alttimeroad download_altdownloaduploadinbox play_circlerepeatrefreshlist_altlockflag headphones volume_off volume_down volume_upqrcodebarcodetagtagsbookbookmarkprintcamerafontbolditalic text_height text_width align_left align_center align_right align_justifylist indent_left indent_rightfacetime_videopicturepencil map_markeradjusttinteditsharecheckmove step_backward fast_backwardbackwardplaypausestopforward fast_forward step_forwardeject chevron_left chevron_right plus_sign minus_sign remove_signok_sign question_sign info_sign screenshot remove_circle ok_circle ban_circle arrow_left arrow_rightarrow_up arrow_down share_alt resize_full resize_smallexclamation_signgiftleaffireeye_open eye_close warning_signplanecalendarrandomcommentmagnet chevron_up chevron_downretweet shopping_cart folder_close folder_openresize_verticalresize_horizontal bar_chart twitter_sign facebook_sign camera_retrokeycogscomments thumbs_up_altthumbs_down_alt star_half heart_emptysignout linkedin_signpushpin external_linksignintrophy github_sign upload_altlemonphone check_emptybookmark_empty phone_signtwitterfacebookgithubunlock credit_cardrsshddbullhornbell certificate hand_right hand_lefthand_up hand_downcircle_arrow_leftcircle_arrow_rightcircle_arrow_upcircle_arrow_downglobewrenchtasksfilter briefcase fullscreengrouplinkcloudbeakercutcopy paper_clipsave sign_blankreorderulol strikethrough underlinetablemagictruck pinterestpinterest_signgoogle_plus_sign google_plusmoney caret_downcaret_up caret_left caret_rightcolumnssort sort_downsort_up envelope_altlinkedinundolegal dashboard comment_alt comments_altboltsitemapumbrellapaste light_bulbexchangecloud_download cloud_uploaduser_md stethoscopesuitcasebell_altcoffeefood file_text_altbuildinghospital ambulancemedkit fighter_jetbeerh_signf0fedouble_angle_leftdouble_angle_rightdouble_angle_updouble_angle_down angle_left angle_rightangle_up angle_downdesktoplaptoptablet mobile_phone circle_blank quote_left quote_rightspinnercirclereply github_altfolder_close_altfolder_open_alt expand_alt collapse_altsmilefrownmehgamepadkeyboardflag_altflag_checkeredterminalcode reply_allstar_half_emptylocation_arrowcrop code_forkunlink_279 exclamation superscript subscript_283 puzzle_piece microphonemicrophone_offshieldcalendar_emptyfire_extinguisherrocketmaxcdnchevron_sign_leftchevron_sign_rightchevron_sign_upchevron_sign_downhtml5css3anchor unlock_altbullseyeellipsis_horizontalellipsis_vertical_303 play_signticketminus_sign_alt check_minuslevel_up level_down check_sign edit_sign_312 share_signcompasscollapse collapse_top_317eurgbpusdinrjpyrubkrwbtcfile file_textsort_by_alphabet_329sort_by_attributessort_by_attributes_alt sort_by_ordersort_by_order_alt_334_335 youtube_signyoutubexing xing_sign youtube_playdropbox stackexchange instagramflickradnf171bitbucket_signtumblr tumblr_signlong_arrow_down long_arrow_uplong_arrow_leftlong_arrow_rightwindowsandroidlinuxdribbleskype foursquaretrellofemalemalegittipsun_366archivebugvkweiborenren_372stack_exchange_374arrow_circle_alt_left_376dot_circle_alt_378 vimeo_square_380 plus_square_o_382_383_384_385_386_387_388_389uniF1A0f1a1_392_393f1a4_395_396_397_398_399_400f1ab_402_403_404uniF1B1_406_407_408_409_410_411_412_413_414_415_416_417_418_419uniF1C0uniF1C1_422_423_424_425_426_427_428_429_430_431_432_433_434uniF1D0uniF1D1uniF1D2_438_439uniF1D5uniF1D6uniF1D7_443_444_445_446_447_448_449uniF1E0_451_452_453_454_455_456_457_458_459_460_461_462_463_464_466_467_468_469_470_471_472_473_474_475_476_477_478_479KPXYF+X!YKRX!Y+\XY+Ssukui-panel-4.0.0.4/plugin-calendar/lunarcalendarwidget/picturetowhite.cpp0000644000175000017500000000640114560306203025216 0ustar fengfeng/* * Copyright (C) 2020 Tianjin KYLIN Information Technology Co., Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see get(STYLE_NAME).toString()) && m_pgsettings->get(STYLE_NAME).toString() == STYLE_NAME_KEY_LIGHT){ tray_icon_color = TRAY_ICON_COLOR_LOGHT; } else { tray_icon_color = TRAY_ICON_COLOR_DRAK; } connect(m_pgsettings, &QGSettings::changed, this, [=] (const QString &key) { if (key == STYLE_NAME) { if (stylelist.contains(m_pgsettings->get(STYLE_NAME).toString()) && m_pgsettings->get(STYLE_NAME).toString() == STYLE_NAME_KEY_LIGHT){ tray_icon_color = TRAY_ICON_COLOR_LOGHT; } else { tray_icon_color = TRAY_ICON_COLOR_DRAK; } } }); } } QPixmap PictureToWhite::drawSymbolicColoredPixmap(const QPixmap &source) { QColor gray(128,128,128); QColor standard (31,32,34); QImage img = source.toImage(); for (int x = 0; x < img.width(); x++) { for (int y = 0; y < img.height(); y++) { auto color = img.pixelColor(x, y); if (color.alpha() > 0) { if (qAbs(color.red()-gray.red()) < 20 && qAbs(color.green()-gray.green()) < 20 && qAbs(color.blue()-gray.blue()) < 20) { color.setRed(tray_icon_color); color.setGreen(tray_icon_color); color.setBlue(tray_icon_color); img.setPixelColor(x, y, color); } else if (qAbs(color.red()-standard.red()) < 20 && qAbs(color.green()-standard.green()) < 20 && qAbs(color.blue()-standard.blue()) < 20) { // qDebug()<<"反色"< #include namespace Ui { class frmLunarCalendarWidget; } class frmLunarCalendarWidget : public QWidget { Q_OBJECT public: explicit frmLunarCalendarWidget(QWidget *parent = 0); ~frmLunarCalendarWidget(); bool status; protected: void paintEvent(QPaintEvent *); private: Ui::frmLunarCalendarWidget *ui; QGSettings *transparency_gsettings; QGSettings *calendar_gsettings; bool eventFilter(QObject *, QEvent *); bool yijiIsUp = true; private Q_SLOTS: void initForm(); void cboxCalendarStyle_currentIndexChanged(int index); void cboxSelectType_currentIndexChanged(int index); void cboxWeekNameFormat_currentIndexChanged(bool FirstDayisSun); void ckShowLunar_stateChanged(bool arg1); public Q_SLOTS: void changeUpSize(); void changeDownSize(); //true: 顯示大窗口 //false: 顯示小窗口 void showAlmanac(bool big); Q_SIGNALS: void yijiFChangeUp(); void yijiFChangeDown(); void onShowToday(); }; #endif // FRMLUNARCALENDARWIDGET_H ukui-panel-4.0.0.4/plugin-calendar/lunarcalendarwidget/lunarcalendaryearitem.h0000644000175000017500000001737714560306203026175 0ustar fengfeng/* * Copyright (C) 2019 Tianjin KYLIN Information Technology Co., Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see #include #include #ifdef quc #if (QT_VERSION < QT_VERSION_CHECK(5,7,0)) #include #else #include #endif class QDESIGNER_WIDGET_EXPORT LunarCalendarItem : public QWidget #else class LunarCalendarYearItem : public QWidget #endif { Q_OBJECT Q_ENUMS(DayType) Q_ENUMS(SelectType) Q_PROPERTY(bool select READ getSelect WRITE setSelect) Q_PROPERTY(bool showLunar READ getShowLunar WRITE setShowLunar) Q_PROPERTY(QString bgImage READ getBgImage WRITE setBgImage) Q_PROPERTY(SelectType selectType READ getSelectType WRITE setSelectType) Q_PROPERTY(QDate date READ getDate WRITE setDate) Q_PROPERTY(QString lunar READ getLunar WRITE setLunar) Q_PROPERTY(DayType dayType READ getDayType WRITE setDayType) Q_PROPERTY(QColor borderColor READ getBorderColor WRITE setBorderColor) Q_PROPERTY(QColor weekColor READ getWeekColor WRITE setWeekColor) Q_PROPERTY(QColor superColor READ getSuperColor WRITE setSuperColor) Q_PROPERTY(QColor lunarColor READ getLunarColor WRITE setLunarColor) Q_PROPERTY(QColor currentTextColor READ getCurrentTextColor WRITE setCurrentTextColor) Q_PROPERTY(QColor otherTextColor READ getOtherTextColor WRITE setOtherTextColor) Q_PROPERTY(QColor selectTextColor READ getSelectTextColor WRITE setSelectTextColor) Q_PROPERTY(QColor hoverTextColor READ getHoverTextColor WRITE setHoverTextColor) Q_PROPERTY(QColor currentLunarColor READ getCurrentLunarColor WRITE setCurrentLunarColor) Q_PROPERTY(QColor otherLunarColor READ getOtherLunarColor WRITE setOtherLunarColor) public: enum DayType { DayType_MonthPre = 0, //上月剩余天数 DayType_MonthNext = 1, //下个月的天数 DayType_MonthCurrent = 2, //当月天数 DayType_WeekEnd = 3 //周末 }; enum SelectType { SelectType_Rect = 0, //矩形背景 SelectType_Circle = 1, //圆形背景 SelectType_Triangle = 2, //带三角标 SelectType_Image = 3 //图片背景 }; explicit LunarCalendarYearItem(QString fontName, QWidget *parent = 0); QMap> worktime; void onEnter(); void onLeave(); void onSelected(); protected: void paintEvent(QPaintEvent *); void drawBg(QPainter *painter); void drawBgCurrent(QPainter *painter, const QColor &color); void drawBgHover(QPainter *painter, const QColor &color); void drawYear(QPainter *painter); private: bool hover; //鼠标是否悬停 bool pressed; //鼠标是否按下 bool select; //是否选中 bool showLunar; //显示农历 QString bgImage; //背景图片 SelectType selectType; //选中模式 QDate date; //当前日期 QString lunar; //农历信息 DayType dayType; //当前日类型 QColor borderColor; //边框颜色 QColor weekColor; //周末颜色 QColor superColor; //角标颜色 QColor lunarColor; //农历节日颜色 QColor currentTextColor; //当前月文字颜色 QColor otherTextColor; //其他月文字颜色 QColor selectTextColor; //选中日期文字颜色 QColor hoverTextColor; //悬停日期文字颜色 QColor currentLunarColor; //当前月农历文字颜色 QColor otherLunarColor; //其他月农历文字颜色 QColor selectLunarColor; //选中日期农历文字颜色 QColor hoverLunarColor; //悬停日期农历文字颜色 QColor currentBgColor; //当前月背景颜色 QColor otherBgColor; //其他月背景颜色 QColor selectBgColor; //选中日期背景颜色 QColor hoverBgColor; //悬停日期背景颜色 QFont m_font; public: bool getSelect() const; bool getShowLunar() const; QString getBgImage() const; SelectType getSelectType() const; QDate getDate() const; QString getLunar() const; DayType getDayType() const; QColor getBorderColor() const; QColor getWeekColor() const; QColor getSuperColor() const; QColor getLunarColor() const; QColor getCurrentTextColor() const; QColor getOtherTextColor() const; QColor getSelectTextColor() const; QColor getHoverTextColor() const; QColor getCurrentLunarColor() const; QColor getOtherLunarColor() const; QColor getSelectLunarColor() const; QColor getHoverLunarColor() const; QColor getCurrentBgColor() const; QColor getOtherBgColor() const; QColor getSelectBgColor() const; QColor getHoverBgColor() const; QSize sizeHint() const; QSize minimumSizeHint() const; void setFont(const QFont &font){ m_font = font; repaint(); } public Q_SLOTS: //设置是否选中 void setSelect(bool select); //设置是否显示农历信息 void setShowLunar(bool showLunar); //设置背景图片 void setBgImage(const QString &bgImage); //设置选中背景样式 void setSelectType(const SelectType &selectType); //设置日期 void setDate(const QDate &date); //设置农历 void setLunar(const QString &lunar); //设置类型 void setDayType(const DayType &dayType); //设置日期/农历/类型 void setDate(const QDate &date, const QString &lunar, const DayType &dayType); //设置边框颜色 void setBorderColor(const QColor &borderColor); //设置周末颜色 void setWeekColor(const QColor &weekColor); //设置角标颜色 void setSuperColor(const QColor &superColor); //设置农历节日颜色 void setLunarColor(const QColor &lunarColor); //设置当前月文字颜色 void setCurrentTextColor(const QColor ¤tTextColor); //设置其他月文字颜色 void setOtherTextColor(const QColor &otherTextColor); //设置选中日期文字颜色 void setSelectTextColor(const QColor &selectTextColor); //设置悬停日期文字颜色 void setHoverTextColor(const QColor &hoverTextColor); //设置当前月农历文字颜色 void setCurrentLunarColor(const QColor ¤tLunarColor); //设置其他月农历文字颜色 void setOtherLunarColor(const QColor &otherLunarColor); Q_SIGNALS: void clicked(const QDate &date, const LunarCalendarYearItem::DayType &dayType); void yearMessage(const QDate &date, const LunarCalendarYearItem::DayType &dayType); }; #endif // LUNARCALENDARITEM_H ukui-panel-4.0.0.4/plugin-calendar/lunarcalendarwidget/main.cpp0000644000175000017500000000302114560306203023056 0ustar fengfeng/* * Copyright (C) 2019 Tianjin KYLIN Information Technology Co., Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see #include int main(int argc, char *argv[]) { QApplication a(argc, argv); a.setFont(QFont("Microsoft Yahei", 9)); #if (QT_VERSION <= QT_VERSION_CHECK(5,0,0)) #if _MSC_VER QTextCodec *codec = QTextCodec::codecForName("gbk"); #else QTextCodec *codec = QTextCodec::codecForName("utf-8"); #endif QTextCodec::setCodecForLocale(codec); QTextCodec::setCodecForCStrings(codec); QTextCodec::setCodecForTr(codec); #else QTextCodec *codec = QTextCodec::codecForName("utf-8"); QTextCodec::setCodecForLocale(codec); #endif frmLunarCalendarWidget w; w.setWindowTitle("自定义农历控件"); w.show(); return a.exec(); } ukui-panel-4.0.0.4/plugin-calendar/lunarcalendarwidget/statelabel.cpp0000644000175000017500000000170514560306203024261 0ustar fengfeng/* * Copyright (C) 2019 Tianjin KYLIN Information Technology Co., Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see buttons() == Qt::LeftButton){ Q_EMIT labelclick(); } return; } ukui-panel-4.0.0.4/plugin-calendar/lunarcalendarwidget/customstylePushbutton.cpp0000644000175000017500000001716314560306203026635 0ustar fengfeng/* * Copyright (C) 2019 Tianjin KYLIN Information Technology Co., Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see #include #include #include CustomStyle_pushbutton::CustomStyle_pushbutton(const QString &proxyStyleName, QObject *parent) : QProxyStyle (proxyStyleName) { Q_UNUSED(parent); } void CustomStyle_pushbutton::drawComplexControl(QStyle::ComplexControl control, const QStyleOptionComplex *option, QPainter *painter, const QWidget *widget) const { return QProxyStyle::drawComplexControl(control, option, painter, widget); } void CustomStyle_pushbutton::drawControl(QStyle::ControlElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget) const { switch (element) { case QStyle::CE_PushButton: { QStyleOptionButton button = *qstyleoption_cast(option); button.palette.setColor(QPalette::HighlightedText, button.palette.buttonText().color()); return QProxyStyle::drawControl(element, &button, painter, widget); break; } default: break; } return QProxyStyle::drawControl(element, option, painter, widget); } void CustomStyle_pushbutton::drawItemPixmap(QPainter *painter, const QRect &rectangle, int alignment, const QPixmap &pixmap) const { return QProxyStyle::drawItemPixmap(painter, rectangle, alignment, pixmap); } void CustomStyle_pushbutton::drawItemText(QPainter *painter, const QRect &rectangle, int alignment, const QPalette &palette, bool enabled, const QString &text, QPalette::ColorRole textRole) const { return QProxyStyle::drawItemText(painter, rectangle, alignment, palette, enabled, text, textRole); } /// 我们重写button的绘制方法,通过state和当前动画的状态以及value值改变相关的绘制条件 /// 这里通过判断hover与否,动态的调整painter的透明度然后绘制背景 /// 需要注意的是,默认控件的绘制流程只会触发一次,而动画需要我们在一段时间内不停绘制才行, /// 要使得动画能够持续,我们需要使用QWidget::update()在动画未完成时, /// 手动更新一次,这样button将在一段时间后再次调用draw方法,从而达到更新动画的效果 /// /// 需要注意绘制背景的流程会因主题不同而产生差异,所以这一部分代码在一些主题中未必正常, /// 如果你需要自己实现一个主题,这同样是你需要注意和考虑的点 void CustomStyle_pushbutton::drawPrimitive(QStyle::PrimitiveElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget) const { if (element == PE_PanelButtonCommand) { if (widget) { if (option->state & State_MouseOver) { if (option->state & State_Sunken) { painter->save(); painter->setRenderHint(QPainter::Antialiasing,true); painter->setPen(Qt::NoPen); QColor color(255,255,255,21); painter->setBrush(color); painter->drawRoundedRect(option->rect, 4, 4); painter->restore(); } else { painter->save(); painter->setRenderHint(QPainter::Antialiasing,true); painter->setPen(Qt::NoPen); QColor color(255,255,255,51); painter->setBrush(color); painter->drawRoundedRect(option->rect, 4, 4); painter->restore(); } } else { painter->save(); painter->setRenderHint(QPainter::Antialiasing,true); painter->setPen(Qt::NoPen); QColor color(255,255,255,0); painter->setBrush(color); painter->drawRoundedRect(option->rect, 4, 4); painter->restore(); } return; } } return QProxyStyle::drawPrimitive(element, option, painter, widget); } QPixmap CustomStyle_pushbutton::generatedIconPixmap(QIcon::Mode iconMode, const QPixmap &pixmap, const QStyleOption *option) const { return QProxyStyle::generatedIconPixmap(iconMode, pixmap, option); } QStyle::SubControl CustomStyle_pushbutton::hitTestComplexControl(QStyle::ComplexControl control, const QStyleOptionComplex *option, const QPoint &position, const QWidget *widget) const { return QProxyStyle::hitTestComplexControl(control, option, position, widget); } QRect CustomStyle_pushbutton::itemPixmapRect(const QRect &rectangle, int alignment, const QPixmap &pixmap) const { return QProxyStyle::itemPixmapRect(rectangle, alignment, pixmap); } QRect CustomStyle_pushbutton::itemTextRect(const QFontMetrics &metrics, const QRect &rectangle, int alignment, bool enabled, const QString &text) const { return QProxyStyle::itemTextRect(metrics, rectangle, alignment, enabled, text); } int CustomStyle_pushbutton::pixelMetric(QStyle::PixelMetric metric, const QStyleOption *option, const QWidget *widget) const { return QProxyStyle::pixelMetric(metric, option, widget); } /// 我们需要将动画与widget一一对应起来, /// 在一个style的生命周期里,widget只会进行polish和unpolish各一次, /// 所以我们可以在polish时将widget与一个新的动画绑定,并且对应的在unpolish中解绑定 void CustomStyle_pushbutton::polish(QWidget *widget) { return QProxyStyle::polish(widget); } void CustomStyle_pushbutton::polish(QApplication *application) { return QProxyStyle::polish(application); } void CustomStyle_pushbutton::polish(QPalette &palette) { return QProxyStyle::polish(palette); } void CustomStyle_pushbutton::unpolish(QWidget *widget) { return QProxyStyle::unpolish(widget); } void CustomStyle_pushbutton::unpolish(QApplication *application) { return QProxyStyle::unpolish(application); } QSize CustomStyle_pushbutton::sizeFromContents(QStyle::ContentsType type, const QStyleOption *option, const QSize &contentsSize, const QWidget *widget) const { return QProxyStyle::sizeFromContents(type, option, contentsSize, widget); } QIcon CustomStyle_pushbutton::standardIcon(QStyle::StandardPixmap standardIcon, const QStyleOption *option, const QWidget *widget) const { return QProxyStyle::standardIcon(standardIcon, option, widget); } QPalette CustomStyle_pushbutton::standardPalette() const { return QProxyStyle::standardPalette(); } int CustomStyle_pushbutton::styleHint(QStyle::StyleHint hint, const QStyleOption *option, const QWidget *widget, QStyleHintReturn *returnData) const { return QProxyStyle::styleHint(hint, option, widget, returnData); } QRect CustomStyle_pushbutton::subControlRect(QStyle::ComplexControl control, const QStyleOptionComplex *option, QStyle::SubControl subControl, const QWidget *widget) const { return QProxyStyle::subControlRect(control, option, subControl, widget); } QRect CustomStyle_pushbutton::subElementRect(QStyle::SubElement element, const QStyleOption *option, const QWidget *widget) const { return QProxyStyle::subElementRect(element, option, widget); } ukui-panel-4.0.0.4/plugin-calendar/lunarcalendarwidget/picturetowhite.h0000644000175000017500000000307214560306203024664 0ustar fengfeng/* * Copyright (C) 2020 Tianjin KYLIN Information Technology Co., Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see #include #include #include #include #include #define ORG_UKUI_STYLE "org.ukui.style" #define STYLE_NAME "styleName" #define STYLE_NAME_KEY_DARK "ukui-dark" #define STYLE_NAME_KEY_DEFAULT "ukui-default" #define STYLE_NAME_KEY_BLACK "ukui-black" #define STYLE_NAME_KEY_LIGHT "ukui-light" #define STYLE_NAME_KEY_WHITE "ukui-white" #define TRAY_ICON_COLOR_LOGHT 0 #define TRAY_ICON_COLOR_DRAK 255 class PictureToWhite : public QObject { Q_OBJECT public: explicit PictureToWhite(QObject *parent = nullptr); void initGsettingValue(); QPixmap drawSymbolicColoredPixmap(const QPixmap &source); public: QGSettings *m_pgsettings; int tray_icon_color; }; #endif // PICTURETOWHITE_H ukui-panel-4.0.0.4/plugin-calendar/lunarcalendarwidget/lunarcalendarwidget.h0000644000175000017500000003474614560306221025640 0ustar fengfeng/* * Copyright (C) 2019 Tianjin KYLIN Information Technology Co., Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see #include #include #include #include #include #include "qfontdatabase.h" #include "qdatetime.h" #include "qlayout.h" #include "qlabel.h" #include "qpushbutton.h" #include "qtoolbutton.h" #include "qcombobox.h" #include "qdebug.h" #include #include #include #include "picturetowhite.h" #include #include #include #include #include #include #include "../../panel/pluginsettings.h" #include "../../panel/iukuipanelplugin.h" #include "lunarcalendarinfo.h" #include "lunarcalendaritem.h" #include "lunarcalendaryearitem.h" #include "lunarcalendarmonthitem.h" #include "customstylePushbutton.h" #include #include #include #include class QGestureEvent; class QPanGesture; class QPinchGesture; class QSwipeGesture; class QLabel; class statelabel; class QComboBox; class LunarCalendarYearItem; class LunarCalendarMonthItem; class LunarCalendarItem; class PartLineWidget; #ifdef quc #if (QT_VERSION < QT_VERSION_CHECK(5,7,0)) #include #else #include #endif class QDESIGNER_WIDGET_EXPORT LunarCalendarWidget : public QWidget #else class LunarCalendarWidget : public QWidget #endif { Q_OBJECT Q_ENUMS(CalendarStyle) Q_ENUMS(WeekNameFormat) Q_ENUMS(SelectType) Q_PROPERTY(CalendarStyle calendarStyle READ getCalendarStyle WRITE setCalendarStyle) Q_PROPERTY(QDate date READ getDate WRITE setDate) Q_PROPERTY(QColor weekTextColor READ getWeekTextColor WRITE setWeekTextColor) Q_PROPERTY(QColor weekBgColor READ getWeekBgColor WRITE setWeekBgColor) Q_PROPERTY(QString bgImage READ getBgImage WRITE setBgImage) Q_PROPERTY(SelectType selectType READ getSelectType WRITE setSelectType) Q_PROPERTY(QColor borderColor READ getBorderColor WRITE setBorderColor) Q_PROPERTY(QColor weekColor READ getWeekColor WRITE setWeekColor) Q_PROPERTY(QColor superColor READ getSuperColor WRITE setSuperColor) Q_PROPERTY(QColor lunarColor READ getLunarColor WRITE setLunarColor) Q_PROPERTY(QColor currentTextColor READ getCurrentTextColor WRITE setCurrentTextColor) Q_PROPERTY(QColor otherTextColor READ getOtherTextColor WRITE setOtherTextColor) Q_PROPERTY(QColor selectTextColor READ getSelectTextColor WRITE setSelectTextColor) Q_PROPERTY(QColor hoverTextColor READ getHoverTextColor WRITE setHoverTextColor) Q_PROPERTY(QColor currentLunarColor READ getCurrentLunarColor WRITE setCurrentLunarColor) Q_PROPERTY(QColor otherLunarColor READ getOtherLunarColor WRITE setOtherLunarColor) Q_PROPERTY(QColor selectLunarColor READ getSelectLunarColor WRITE setSelectLunarColor) Q_PROPERTY(QColor hoverLunarColor READ getHoverLunarColor WRITE setHoverLunarColor) Q_PROPERTY(QColor currentBgColor READ getCurrentBgColor WRITE setCurrentBgColor) Q_PROPERTY(QColor otherBgColor READ getOtherBgColor WRITE setOtherBgColor) Q_PROPERTY(QColor selectBgColor READ getSelectBgColor WRITE setSelectBgColor) Q_PROPERTY(QColor hoverBgColor READ getHoverBgColor WRITE setHoverBgColor) public: enum CalendarStyle { CalendarStyle_Red = 0 }; enum WeekNameFormat { WeekNameFormat_Short = 0, //短名称 WeekNameFormat_Normal = 1, //普通名称 WeekNameFormat_Long = 2, //长名称 WeekNameFormat_En = 3 //英文名称 }; enum SelectType { SelectType_Rect = 0, //矩形背景 SelectType_Circle = 1, //圆形背景 SelectType_Triangle = 2, //带三角标 SelectType_Image = 3 //图片背景 }; explicit LunarCalendarWidget(QWidget *parent = 0); ~LunarCalendarWidget(); void getFontInfo(QString &fontName, int &fontSize); bool getShowLunar(); private: QLabel *datelabel = nullptr; QLabel *timelabel = nullptr; QLabel *lunarlabel = nullptr; QTimer *timer = nullptr; QVBoxLayout *timeShow = nullptr; QWidget *widgetTime = nullptr; QPushButton *btnYear = nullptr; QPushButton *btnMonth = nullptr; QPushButton *btnToday = nullptr; QWidget *labWidget = nullptr; QLabel *labBottom = nullptr; QHBoxLayout *labLayout = nullptr; PartLineWidget *lineUp = nullptr; PartLineWidget *lineDown = nullptr; kdk::KBorderlessButton *btnPrevYear; kdk::KBorderlessButton *btnNextYear; QLabel *yijichooseLabel = nullptr; QCheckBox *yijichoose = nullptr; QVBoxLayout *yijiLayout = nullptr; QWidget *yijiWidget = nullptr; QLabel *yiLabel = nullptr; QLabel *jiLabel = nullptr; QWidget *widgetWeek = nullptr; QWidget *m_widgetDayBody = nullptr; QWidget *widgetYearBody = nullptr; QWidget *widgetmonthBody = nullptr; QProcess *myProcess = nullptr; QWidget *m_widgetTop = nullptr; QString timemodel = 0; bool yijistate = false; bool lunarstate =false; bool oneRun = true; // IUKUIPanelPlugin *mPlugin; QString dateShowMode; QMap worktimeinside; QMap> worktime; void analysisWorktimeJs(); //解析js文件 void downLabelHandle(const QDate &date); QFont iconFont; //图形字体 bool btnClick; //按钮单击,避开下拉选择重复触发 QComboBox *cboxYearandMonth = nullptr; //年份下拉框 QLabel *cboxYearandMonthLabel = nullptr; QList labWeeks; //顶部星期名称 QList dayItems; //日期元素 QList yearItems; //年份元素 QList monthItems; //月份元素 QFont m_font; CalendarStyle calendarStyle; //整体样式 bool FirstdayisSun; //首日期为周日 QDate date; //当前日期 static QDate s_clickDate; //保存点击日期 QColor weekTextColor; //星期名称文字颜色 QColor weekBgColor; //星期名称背景色 QString bgImage; //背景图片 SelectType selectType; //选中模式 QColor borderColor; //边框颜色 QColor weekColor; //周末颜色 QColor superColor; //角标颜色 QColor lunarColor; //农历节日颜色 QColor currentTextColor; //当前月文字颜色 QColor otherTextColor; //其他月文字颜色 QColor selectTextColor; //选中日期文字颜色 QColor hoverTextColor; //悬停日期文字颜色 QColor currentLunarColor; //当前月农历文字颜色 QColor otherLunarColor; //其他月农历文字颜色 QColor selectLunarColor; //选中日期农历文字颜色 QColor hoverLunarColor; //悬停日期农历文字颜色 QColor currentBgColor; //当前月背景颜色 QColor otherBgColor; //其他月背景颜色 QColor selectBgColor; //选中日期背景颜色 QColor hoverBgColor; //悬停日期背景颜色 QGSettings *calendar_gsettings = nullptr; void setColor(bool mdark_style); void _timeUpdate(); void yijihandle(const QDate &date); QString getSettings(); void setSettings(QString arg); QGSettings *style_settings = nullptr; bool dark_style; QStringList getLocale(QString &language, QString &locale); void setLocaleCalendar(); void changeMonth(bool forward); void changeYear(bool forward); //控制农历、黄历、假期显示功能 bool m_showLunar = false; //设置子控件是否显示农历信息 void setShowLunar(bool showLunar); //根据gsetting和语言获取show lunar的值 int m_currentType = 0;//0:日,1:月, 2:年 void changeMode(int mode); QString m_fontName; int m_fontSize = 0; int m_start_y = -1; QWidget *m_clickedWidget = nullptr; int m_savedYear = 0; void initTransparency(); QGSettings *m_transparencySetting = nullptr; int m_trans = 75; void controlDownLine(); protected : void wheelEvent(QWheelEvent *event)override; bool eventFilter(QObject *watched, QEvent *event)override; void paintEvent(QPaintEvent*)override; void keyPressEvent(QKeyEvent *ev)override; private Q_SLOTS: void initWidget(); void initStyle(); void initDate(); void changeDate(const QDate &date); void yearChanged(const QString &arg1); void monthChanged(const QString &arg1); void labClicked(const QDate &date, const LunarCalendarItem::DayType &dayType); void dayChanged(const QDate &date,const QDate &m_date); void dateChanged(int year, int month, int day); void timerUpdate(); void customButtonsClicked(int x); void yearWidgetChange(); void monthWidgetChange(); public: QDate getCurrentDate(){return date;} static QDate getClickedDate(){ qDebug () << s_clickDate; return s_clickDate; } CalendarStyle getCalendarStyle() const; QDate getDate() const; QColor getWeekTextColor() const; QColor getWeekBgColor() const; QString getBgImage() const; SelectType getSelectType() const; QColor getBorderColor() const; QColor getWeekColor() const; QColor getSuperColor() const; QColor getLunarColor() const; QColor getCurrentTextColor() const; QColor getOtherTextColor() const; QColor getSelectTextColor() const; QColor getHoverTextColor() const; QColor getCurrentLunarColor() const; QColor getOtherLunarColor() const; QColor getSelectLunarColor() const; QColor getHoverLunarColor() const; QColor getCurrentBgColor() const; QColor getOtherBgColor() const; QColor getSelectBgColor() const; QColor getHoverBgColor() const; QSize sizeHint() const; QSize minimumSizeHint() const; QString locale ; void showCalendar(bool showToday); public Q_SLOTS: void updateYearClicked(const QDate &date, const LunarCalendarYearItem::DayType &dayType); void updateMonthClicked(const QDate &date, const LunarCalendarMonthItem::DayType &dayType); //上一年,下一年 void showPreviousYear(); void showNextYear(); //上一月,下一月 void showPreviousMonth(bool date_clicked = true); void showNextMonth(bool date_clicked = true); //转到今天 void showToday(); //设置整体样式 void setCalendarStyle(const CalendarStyle &calendarStyle); //设置星期名称格式 void setWeekNameFormat(bool FirstDayisSun); //设置日期 void setDate(const QDate &date); //设置顶部星期名称文字颜色+背景色 void setWeekTextColor(const QColor &weekTextColor); void setWeekBgColor(const QColor &weekBgColor); //设置背景图片 void setBgImage(const QString &bgImage); //设置选中背景样式 void setSelectType(const SelectType &selectType); //设置边框颜色 void setBorderColor(const QColor &borderColor); //设置周末颜色 void setWeekColor(const QColor &weekColor); //设置角标颜色 void setSuperColor(const QColor &superColor); //设置农历节日颜色 void setLunarColor(const QColor &lunarColor); //设置当前月文字颜色 void setCurrentTextColor(const QColor ¤tTextColor); //设置其他月文字颜色 void setOtherTextColor(const QColor &otherTextColor); //设置选中日期文字颜色 void setSelectTextColor(const QColor &selectTextColor); //设置悬停日期文字颜色 void setHoverTextColor(const QColor &hoverTextColor); //设置当前月农历文字颜色 void setCurrentLunarColor(const QColor ¤tLunarColor); //设置其他月农历文字颜色 void setOtherLunarColor(const QColor &otherLunarColor); //设置选中日期农历文字颜色 void setSelectLunarColor(const QColor &selectLunarColor); //设置悬停日期农历文字颜色 void setHoverLunarColor(const QColor &hoverLunarColor); //设置当前月背景颜色 void setCurrentBgColor(const QColor ¤tBgColor); //设置其他月背景颜色 void setOtherBgColor(const QColor &otherBgColor); //设置选中日期背景颜色 void setSelectBgColor(const QColor &selectBgColor); //设置悬停日期背景颜色 void setHoverBgColor(const QColor &hoverBgColor); Q_SIGNALS: void clicked(const QDate &date); void selectionChanged(); void yijiChangeUp(); void yijiChangeDown(); // true:显示农历、黄历 , false:不显示农历、黄历 void almanacChanged(bool); }; class PartLineWidget : public QWidget { Q_OBJECT public: explicit PartLineWidget(QWidget *parent = nullptr); void paintEvent(QPaintEvent *event); }; class statelabel : public QLabel { Q_OBJECT public: statelabel(); protected: void mousePressEvent(QMouseEvent *event); Q_SIGNALS : void labelclick(); }; #endif // LUNARCALENDARWIDGET_H ukui-panel-4.0.0.4/plugin-calendar/lunarcalendarwidget/lunarcalendarwidget.pro0000644000175000017500000000203514560306203026173 0ustar fengfeng#------------------------------------------------- # # Project created by QtCreator 2017-01-05T22:11:54 # #------------------------------------------------- QT += core gui greaterThan(QT_MAJOR_VERSION, 4): QT += widgets TARGET = lunarcalendarwidget TEMPLATE = app QMAKE_CXXFLAGS += -std=c++14 MOC_DIR = temp/moc RCC_DIR = temp/rcc UI_DIR = temp/ui OBJECTS_DIR = temp/obj DESTDIR = $$PWD/../bin CONFIG += qt warn_off RESOURCES += main.qrc CONFIG += \ link_pkgconfig \ PKGCONFIG += gsettings-qt SOURCES += main.cpp SOURCES += frmlunarcalendarwidget.cpp SOURCES += lunarcalendaritem.cpp SOURCES += lunarcalendarinfo.cpp SOURCES += lunarcalendarwidget.cpp HEADERS += frmlunarcalendarwidget.h HEADERS += lunarcalendaritem.h HEADERS += lunarcalendarinfo.h HEADERS += lunarcalendarwidget.h FORMS += frmlunarcalendarwidget.ui INCLUDEPATH += $$PWD ukui-panel-4.0.0.4/plugin-calendar/lunarcalendarwidget/customstylePushbutton.h0000644000175000017500000000775614560306203026311 0ustar fengfeng/* * Copyright (C) 2019 Tianjin KYLIN Information Technology Co., Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see class CustomStyle_pushbutton : public QProxyStyle { Q_OBJECT public: explicit CustomStyle_pushbutton(const QString &proxyStyleName = "windows", QObject *parent = nullptr); virtual void drawComplexControl(QStyle::ComplexControl control, const QStyleOptionComplex *option, QPainter *painter, const QWidget *widget = nullptr) const; virtual void drawControl(QStyle::ControlElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget = nullptr) const; virtual void drawItemPixmap(QPainter *painter, const QRect &rectangle, int alignment, const QPixmap &pixmap) const; virtual void drawItemText(QPainter *painter, const QRect &rectangle, int alignment, const QPalette &palette, bool enabled, const QString &text, QPalette::ColorRole textRole = QPalette::NoRole) const; /*! * \brief drawPrimitive * \param element 背景绘制,对应PE枚举类型 * \param option * \param painter * \param widget * \details * drawPrimitive用于绘制控件背景,比如按钮和菜单的背景, * 我们一般需要判断控件的状态来绘制不同的背景, * 比如按钮的hover和点击效果。 */ virtual void drawPrimitive(QStyle::PrimitiveElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget = nullptr) const; virtual QPixmap generatedIconPixmap(QIcon::Mode iconMode, const QPixmap &pixmap, const QStyleOption *option) const; virtual QStyle::SubControl hitTestComplexControl(QStyle::ComplexControl control, const QStyleOptionComplex *option, const QPoint &position, const QWidget *widget = nullptr) const; virtual QRect itemPixmapRect(const QRect &rectangle, int alignment, const QPixmap &pixmap) const; virtual QRect itemTextRect(const QFontMetrics &metrics, const QRect &rectangle, int alignment, bool enabled, const QString &text) const; //virtual int layoutSpacing(QSizePolicy::ControlType control1, QSizePolicy::ControlType control2, Qt::Orientation orientation, const QStyleOption *option, const QWidget *widget); virtual int pixelMetric(QStyle::PixelMetric metric, const QStyleOption *option = nullptr, const QWidget *widget = nullptr) const; virtual void polish(QWidget *widget); virtual void polish(QApplication *application); virtual void polish(QPalette &palette); virtual void unpolish(QWidget *widget); virtual void unpolish(QApplication *application); virtual QSize sizeFromContents(QStyle::ContentsType type, const QStyleOption *option, const QSize &contentsSize, const QWidget *widget = nullptr) const; virtual QIcon standardIcon(QStyle::StandardPixmap standardIcon, const QStyleOption *option, const QWidget *widget) const; virtual QPalette standardPalette() const; virtual int styleHint(QStyle::StyleHint hint, const QStyleOption *option = nullptr, const QWidget *widget = nullptr, QStyleHintReturn *returnData = nullptr) const; virtual QRect subControlRect(QStyle::ComplexControl control, const QStyleOptionComplex *option, QStyle::SubControl subControl, const QWidget *widget = nullptr) const; virtual QRect subElementRect(QStyle::SubElement element, const QStyleOption *option, const QWidget *widget = nullptr) const; }; #endif // CUSTOMSTYLE_PUSHBUTTON_H ukui-panel-4.0.0.4/plugin-calendar/lunarcalendarwidget/calendarcolor.h0000644000175000017500000000236614560306203024422 0ustar fengfeng/* * Copyright (C) 2019 Tianjin KYLIN Information Technology Co., Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see namespace CalendarColor { enum Color{ TEXT = 1, //Text BACKGROUND = 2, //Background CLICKED =3, //Highlight CLICKED_TEXT = 4, //HighlightText OTHER_TEXT = 5, //Shadow HOLIDAY = 6, //Red WORK = 7 //Orange }; class CalendarColor { public: CalendarColor(); public: static QColor getThemeColor(Color c); //混合颜色,参考主题代码 static QColor mixColor(const QColor& in,qreal mix); }; } #endif // CALENDARCOLOR_H ukui-panel-4.0.0.4/plugin-calendar/lunarcalendarwidget/lunarcalendaritem.h0000644000175000017500000002206214560306203025277 0ustar fengfeng/* * Copyright (C) 2019 Tianjin KYLIN Information Technology Co., Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see #include #include #include #ifdef quc #if (QT_VERSION < QT_VERSION_CHECK(5,7,0)) #include #else #include #endif class QDESIGNER_WIDGET_EXPORT LunarCalendarItem : public QWidget #else class LunarCalendarItem : public QWidget #endif { Q_OBJECT Q_ENUMS(DayType) Q_ENUMS(SelectType) Q_PROPERTY(bool select READ getSelect WRITE setSelect) Q_PROPERTY(bool showLunar READ getShowLunar WRITE setShowLunar) Q_PROPERTY(QString bgImage READ getBgImage WRITE setBgImage) Q_PROPERTY(SelectType selectType READ getSelectType WRITE setSelectType) Q_PROPERTY(QDate date READ getDate WRITE setDate) Q_PROPERTY(QString lunar READ getLunar WRITE setLunar) Q_PROPERTY(DayType dayType READ getDayType WRITE setDayType) Q_PROPERTY(QColor borderColor READ getBorderColor WRITE setBorderColor) Q_PROPERTY(QColor weekColor READ getWeekColor WRITE setWeekColor) Q_PROPERTY(QColor superColor READ getSuperColor WRITE setSuperColor) Q_PROPERTY(QColor lunarColor READ getLunarColor WRITE setLunarColor) Q_PROPERTY(QColor currentTextColor READ getCurrentTextColor WRITE setCurrentTextColor) Q_PROPERTY(QColor otherTextColor READ getOtherTextColor WRITE setOtherTextColor) Q_PROPERTY(QColor selectTextColor READ getSelectTextColor WRITE setSelectTextColor) Q_PROPERTY(QColor hoverTextColor READ getHoverTextColor WRITE setHoverTextColor) Q_PROPERTY(QColor currentLunarColor READ getCurrentLunarColor WRITE setCurrentLunarColor) Q_PROPERTY(QColor otherLunarColor READ getOtherLunarColor WRITE setOtherLunarColor) Q_PROPERTY(QColor selectLunarColor READ getSelectLunarColor WRITE setSelectLunarColor) Q_PROPERTY(QColor hoverLunarColor READ getHoverLunarColor WRITE setHoverLunarColor) Q_PROPERTY(QColor currentBgColor READ getCurrentBgColor WRITE setCurrentBgColor) Q_PROPERTY(QColor otherBgColor READ getOtherBgColor WRITE setOtherBgColor) Q_PROPERTY(QColor selectBgColor READ getSelectBgColor WRITE setSelectBgColor) Q_PROPERTY(QColor hoverBgColor READ getHoverBgColor WRITE setHoverBgColor) public: enum DayType { DayType_MonthPre = 0, //上月剩余天数 DayType_MonthNext = 1, //下个月的天数 DayType_MonthCurrent = 2, //当月天数 DayType_WeekEnd = 3 //周末 }; enum SelectType { SelectType_Rect = 0, //矩形背景 SelectType_Circle = 1, //圆形背景 SelectType_Triangle = 2, //带三角标 SelectType_Image = 3 //图片背景 }; explicit LunarCalendarItem(QString font, QWidget *parent = 0); QMap> worktime; QString handleJsMap(QString year,QString month2day); //处理js解析出的数据 protected: void paintEvent(QPaintEvent *); void drawBg(QPainter *painter); void drawBgCurrent(QPainter *painter, const QColor &color); void drawBgHover(QPainter *painter, const QColor &color); void drawDay(QPainter *painter); void drawLunar(QPainter *painter); private: bool hover; //鼠标是否悬停 bool pressed; //鼠标是否按下 bool select; //是否选中 bool showLunar = false; //显示农历 QString bgImage; //背景图片 SelectType selectType; //选中模式 QDate date; //当前日期 QString lunar; //农历信息 DayType dayType; //当前日类型 QColor borderColor; //边框颜色 QColor weekColor; //周末颜色 QColor superColor; //角标颜色 QColor lunarColor; //农历节日颜色 QColor currentTextColor; //当前月文字颜色 QColor otherTextColor; //其他月文字颜色 QColor selectTextColor; //选中日期文字颜色 QColor hoverTextColor; //悬停日期文字颜色 QColor currentLunarColor; //当前月农历文字颜色 QColor otherLunarColor; //其他月农历文字颜色 QColor selectLunarColor; //选中日期农历文字颜色 QColor hoverLunarColor; //悬停日期农历文字颜色 QColor currentBgColor; //当前月背景颜色 QColor otherBgColor; //其他月背景颜色 QColor selectBgColor; //选中日期背景颜色 QColor hoverBgColor; //悬停日期背景颜色 QFont m_font; public: // QString getHoliday(int month,int day); bool getSelect() const; bool getShowLunar() const; QString getBgImage() const; SelectType getSelectType() const; QDate getDate() const; QString getLunar() const; DayType getDayType() const; QColor getBorderColor() const; QColor getWeekColor() const; QColor getSuperColor() const; QColor getLunarColor() const; QColor getCurrentTextColor() const; QColor getOtherTextColor() const; QColor getSelectTextColor() const; QColor getHoverTextColor() const; QColor getCurrentLunarColor() const; QColor getOtherLunarColor() const; QColor getSelectLunarColor() const; QColor getHoverLunarColor() const; QColor getCurrentBgColor() const; QColor getOtherBgColor() const; QColor getSelectBgColor() const; QColor getHoverBgColor() const; QSize sizeHint() const; QSize minimumSizeHint() const; void setFont(const QFont &font){ m_font = font; repaint(); } void onEnter(); void onLeave(); void onSelected(); public Q_SLOTS: //设置是否选中 void setSelect(bool select); //设置是否显示农历信息 void setShowLunar(bool showLunar); //设置背景图片 void setBgImage(const QString &bgImage); //设置选中背景样式 void setSelectType(const SelectType &selectType); //设置日期 void setDate(const QDate &date); //设置农历 void setLunar(const QString &lunar); //设置类型 void setDayType(const DayType &dayType); //设置日期/农历/类型 void setDate(const QDate &date, const QString &lunar, const DayType &dayType); //设置边框颜色 void setBorderColor(const QColor &borderColor); //设置周末颜色 void setWeekColor(const QColor &weekColor); //设置角标颜色 void setSuperColor(const QColor &superColor); //设置农历节日颜色 void setLunarColor(const QColor &lunarColor); //设置当前月文字颜色 void setCurrentTextColor(const QColor ¤tTextColor); //设置其他月文字颜色 void setOtherTextColor(const QColor &otherTextColor); //设置选中日期文字颜色 void setSelectTextColor(const QColor &selectTextColor); //设置悬停日期文字颜色 void setHoverTextColor(const QColor &hoverTextColor); //设置当前月农历文字颜色 void setCurrentLunarColor(const QColor ¤tLunarColor); //设置其他月农历文字颜色 void setOtherLunarColor(const QColor &otherLunarColor); //设置选中日期农历文字颜色 void setSelectLunarColor(const QColor &selectLunarColor); //设置悬停日期农历文字颜色 void setHoverLunarColor(const QColor &hoverLunarColor); //设置当前月背景颜色 void setCurrentBgColor(const QColor ¤tBgColor); //设置其他月背景颜色 void setOtherBgColor(const QColor &otherBgColor); //设置选中日期背景颜色 void setSelectBgColor(const QColor &selectBgColor); //设置悬停日期背景颜色 void setHoverBgColor(const QColor &hoverBgColor); //五个字以上节日名称显示tooltip bool event(QEvent *event); Q_SIGNALS: void clicked(const QDate &date, const LunarCalendarItem::DayType &dayType); }; #endif // LUNARCALENDARITEM_H ukui-panel-4.0.0.4/plugin-calendar/lunarcalendarwidget/calendarcolor.cpp0000644000175000017500000000443214560306203024751 0ustar fengfeng/* * Copyright (C) 2019 Tianjin KYLIN Information Technology Co., Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see #include #include namespace CalendarColor { CalendarColor::CalendarColor() { } QColor CalendarColor::getThemeColor(Color c) { QColor color; QPalette pal = QApplication::palette(); switch (c){ case TEXT:{ color = pal.text().color(); }break; case BACKGROUND:{ color = pal.background().color(); }break; case CLICKED:{ color = pal.highlight().color(); }break; case CLICKED_TEXT:{ color = pal.highlightedText().color(); }break; case OTHER_TEXT:{ color = pal.placeholderText().color(); }break; case WORK:{ color = QColor(255, 129, 6); }break; case HOLIDAY:{ color = QColor(233, 90, 84); }break; default:{ qDebug () << "Failed to get color, invalid color type"; color = QColor(); } } // qDebug() << (int)c << color; return color; } static inline qreal mixQreal(qreal a, qreal b, qreal bias) { return a + (b-a)*bias; } QColor CalendarColor::mixColor(const QColor& in,qreal mix) { if (mix <= 0.0){ return in; } else if(mix >= 1.0){ return in; } else if(qIsNaN(mix)) { return in; } QColor brightTextColor = QApplication::palette().brightText().color(); qreal r = mixQreal(in.redF(),brightTextColor.redF(),mix); qreal g = mixQreal(in.greenF(),brightTextColor.greenF(),mix); qreal b = mixQreal(in.blueF(),brightTextColor.blueF(),mix); qreal a = mixQreal(in.alphaF(),brightTextColor.alphaF(),mix); return QColor::fromRgbF(r, g, b, a); } } ukui-panel-4.0.0.4/plugin-calendar/ukuicalendarwidget.cpp0000644000175000017500000001333014560306203021772 0ustar fengfeng/* * Copyright (C) 2019 Tianjin KYLIN Information Technology Co., Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see #include #include #define WEBVIEW_WIDTH (454) #define WEBVIEW_MAX_HEIGHT (704) #define WEBVIEW_MIN_HEIGHT (600) #define POPUP_BORDER_SPACING 4 #define CALENDAR_BUTTON_WIDTH 120 #define HOUR_SYSTEM_CONTROL "org.ukui.control-center.panel.plugins" #define DATA_FORMAT "date" //日期格式:yyyy/MM/dd、yyyy-MM-dd #define TIME_FORMAT "hoursystem" //时间格式:12小时制、24小时制 #define WEEK_FORMAT "firstday" //一周第一天:星期一、星期日 #define CALENDAR_FORMAT "calendar" //日历格式:公历-solarlunar、农历-lunar #define PANEL_CONFIG "/usr/share/ukui/ukui-panel/panel-commission.ini" const int WIDGET_GAP = 8; UKUICalendarWidget::UKUICalendarWidget(IUKUIPanelPlugin *plugin, QWidget *parent) : m_parent(parent), m_plugin(plugin) { //加载翻译 translator(); //实例化日历的窗口 m_frmLunarWidget = new frmLunarCalendarWidget(); //新版日历 m_widget = new LunarCalendarWidget(); connect(m_widget,&LunarCalendarWidget::yijiChangeUp,m_frmLunarWidget,&frmLunarCalendarWidget::changeUpSize); connect(m_widget,&LunarCalendarWidget::yijiChangeDown,m_frmLunarWidget,&frmLunarCalendarWidget::changeDownSize); connect(m_widget,&LunarCalendarWidget::almanacChanged,m_frmLunarWidget,&frmLunarCalendarWidget::showAlmanac); connect(m_frmLunarWidget,&frmLunarCalendarWidget::yijiFChangeDown, this, [=] (){ //日历的宜忌按钮取消 changeWidowpos(); }); connect(m_frmLunarWidget,&frmLunarCalendarWidget::yijiFChangeUp, this, [=] (){ //日历的宜忌按钮勾选 changeWidowpos(); }); //实例化任务栏日期按钮 m_calendarButton = new CalendarButton(plugin, this); connect(m_calendarButton,&CalendarButton::pressShowHideCalendar,[=](){ //点击显示新版日历主窗口 if(!m_widget->isHidden()) { m_widget->hide(); } else { changeWidowpos(true); } }); //按钮布局 m_layout=new QHBoxLayout(this); m_layout->addWidget(m_calendarButton); m_layout->setAlignment(Qt::AlignCenter); m_layout->setContentsMargins(0, 0, 0, 0); } UKUICalendarWidget::~UKUICalendarWidget() { } void UKUICalendarWidget::realign() { if (m_plugin->panel()->isHorizontal()) { this->setFixedSize(CALENDAR_BUTTON_WIDTH,m_plugin->panel()->panelSize()-5); } else { this->setFixedSize(m_plugin->panel()->panelSize()-5,CALENDAR_BUTTON_WIDTH); } } void UKUICalendarWidget::translator() { QTranslator *translator = new QTranslator(this); translator->load(QLocale(), "calendar", "_", CALENDAR_TRANSLATION_DIR); QCoreApplication::installTranslator(translator); } /* 显示新版日历窗口 */ void UKUICalendarWidget::changeWidowpos(bool restore) { int totalHeight = qApp->primaryScreen()->size().height() + qApp->primaryScreen()->geometry().y(); int totalWidth = qApp->primaryScreen()->size().width() + qApp->primaryScreen()->geometry().x(); QRect rect; switch (m_plugin->panel()->position()) { case IUKUIPanel::PositionBottom: rect.setRect(totalWidth-m_frmLunarWidget->width() - WIDGET_GAP, totalHeight-m_plugin->panel()->panelSize()-m_frmLunarWidget->height()-WIDGET_GAP, m_frmLunarWidget->width(), m_frmLunarWidget->height()); break; case IUKUIPanel::PositionTop: rect.setRect(totalWidth-m_frmLunarWidget->width()-WIDGET_GAP, qApp->primaryScreen()->geometry().y()+m_plugin->panel()->panelSize()+WIDGET_GAP, m_frmLunarWidget->width(), m_frmLunarWidget->height()); break; case IUKUIPanel::PositionLeft: rect.setRect(qApp->primaryScreen()->geometry().x()+m_plugin->panel()->panelSize()+WIDGET_GAP, totalHeight-m_frmLunarWidget->height()-WIDGET_GAP, m_frmLunarWidget->width(), m_frmLunarWidget->height()); break; case IUKUIPanel::PositionRight: rect.setRect(totalWidth-m_plugin->panel()->panelSize()-m_frmLunarWidget->width()-WIDGET_GAP, totalHeight-m_frmLunarWidget->height()-WIDGET_GAP, m_frmLunarWidget->width(), m_frmLunarWidget->height()); break; default: rect.setRect(qApp->primaryScreen()->geometry().x()+m_plugin->panel()->panelSize()+WIDGET_GAP, totalHeight-m_frmLunarWidget->height(), m_frmLunarWidget->width(), m_frmLunarWidget->height()); break; } m_widget->setFixedSize(rect.width(),rect.height()); if(restore) { // Q_EMIT(m_frmLunarWidget->onShowToday()); m_widget->showCalendar(true); } else { m_widget->showCalendar(false); } kdk::WindowManager::setGeometry(m_widget->windowHandle(),rect); } ukui-panel-4.0.0.4/plugin-calendar/ukuicalendar.cpp0000644000175000017500000005577514560306203020611 0ustar fengfeng/* BEGIN_COMMON_COPYRIGHT_HEADER * (c)LGPL2+ * * Copyright: 2012-2013 Razor team * Authors: * Kuzma Shapran * * Copyright: 2019 Tianjin KYLIN Information Technology Co., Ltd. * * * This program or library is free software; you can redistribute it * and/or modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * You should have received a copy of the GNU Lesser General * Public License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA * * END_COMMON_COPYRIGHT_HEADER */ #include "ukuicalendar.h" #include #include #include #include #include #include #include #include #include #include #include #include "../panel/pluginsettings.h" #include #include #include #include #include #include #include #include #include #define CALENDAR_HEIGHT (46) #define CALENDAR_WIDTH (104) #define WEBVIEW_WIDTH (454) #define WEBVIEW_MAX_HEIGHT (704) #define WEBVIEW_MIN_HEIGHT (600) #define POPUP_BORDER_SPACING 4 #define HOUR_SYSTEM_CONTROL "org.ukui.control-center.panel.plugins" #define HOUR_SYSTEM_24_Horizontal "hh:mm ddd yyyy/MM/dd" #define HOUR_SYSTEM_24_Vertical "hh:mm ddd MM/dd" #define HOUR_SYSTEM_12_Horizontal "Ahh:mm ddd yyyy/MM/dd" #define HOUR_SYSTEM_12_Vertical "Ahh:mm ddd MM/dd" #define CURRENT_DATE "yyyy/MM/dd dddd" #define HOUR_SYSTEM_24_Horizontal_CN "hh:mm ddd yyyy-MM-dd" #define HOUR_SYSTEM_24_Vertical_CN "hh:mm ddd MM-dd" #define HOUR_SYSTEM_12_Horizontal_CN "Ahh:mm ddd yyyy-MM-dd" #define HOUR_SYSTEM_12_Vertical_CN "Ahh:mm ddd MM-dd" #define CURRENT_DATE_CN "yyyy-MM-dd dddd" #define HOUR_SYSTEM_KEY "hoursystem" #define SYSTEM_FONT_SIZE "systemFontSize" #define SYSTEM_FONT "systemFont" #define SYSTEM_FONT_SET "org.ukui.style" #define KYSDK_TIMERSERVER "com.kylin.kysdk.TimeServer" #define KYSDK_TIMERPATH "/com/kylin/kysdk/Timer" #define KYSDK_TIMERINTERFACE "com.kylin.kysdk.TimeInterface" QString calendar_version; extern UkuiWebviewDialogStatus status; IndicatorCalendar::IndicatorCalendar(const IUKUIPanelPluginStartupInfo &startupInfo): QWidget(), IUKUIPanelPlugin(startupInfo), mTimer(new QTimer(this)), mCheckTimer(new QTimer(this)), mUpdateInterval(1), mbActived(false), mbHasCreatedWebView(false), mViewWidht(WEBVIEW_WIDTH), mViewHeight(0), mWebViewDiag(NULL) { translator(); mMainWidget = new QWidget(); mContent = new CalendarActiveLabel(this); mWebViewDiag = new UkuiWebviewDialog(this); QVBoxLayout *borderLayout = new QVBoxLayout(this); mLayout = new UKUi::GridLayout(mMainWidget); setLayout(mLayout); mLayout->setContentsMargins(0, 0, 0, 0); mLayout->setSpacing(0); mLayout->setAlignment(Qt::AlignCenter); mLayout->addWidget(mContent); mContent->setObjectName(QLatin1String("WorldClockContent")); mContent->setAlignment(Qt::AlignCenter); mTimer->setTimerType(Qt::PreciseTimer); const QByteArray id(HOUR_SYSTEM_CONTROL); if(QGSettings::isSchemaInstalled(id)){ gsettings = new QGSettings(id); connect(gsettings, &QGSettings::changed, this, [=] (const QString &keys){ updateTimeText(); }); if(QString::compare(gsettings->get("date").toString(),"cn")) { hourSystem_24_horzontal=HOUR_SYSTEM_24_Horizontal_CN; hourSystem_24_vartical=HOUR_SYSTEM_24_Vertical_CN; hourSystem_12_horzontal=HOUR_SYSTEM_12_Horizontal_CN; hourSystem_12_vartical=HOUR_SYSTEM_12_Vertical_CN; current_date=CURRENT_DATE_CN; } else { hourSystem_24_horzontal=HOUR_SYSTEM_24_Horizontal; hourSystem_24_vartical=HOUR_SYSTEM_24_Vertical; hourSystem_12_horzontal=HOUR_SYSTEM_12_Horizontal; hourSystem_12_vartical=HOUR_SYSTEM_12_Vertical; current_date=CURRENT_DATE; } } else { hourSystem_24_horzontal=HOUR_SYSTEM_24_Horizontal_CN; hourSystem_24_vartical=HOUR_SYSTEM_24_Vertical_CN; hourSystem_12_horzontal=HOUR_SYSTEM_12_Horizontal_CN; hourSystem_12_vartical=HOUR_SYSTEM_12_Vertical_CN; current_date=CURRENT_DATE_CN; } //六小时会默认刷新时间 mCheckTimer->setInterval(60*60*1000); connect(mCheckTimer, &QTimer::timeout, [this]{checkUpdateTime();}); mCheckTimer->start(); connect(mTimer, &QTimer::timeout, [this]{checkUpdateTime();}); mTimer->start(1000); const QByteArray _id(SYSTEM_FONT_SET); fgsettings = new QGSettings(_id); connect(fgsettings, &QGSettings::changed, this, [=] (const QString &keys){ if(keys == SYSTEM_FONT_SIZE || keys == SYSTEM_FONT){ updateTimeText(); } }); connect(mWebViewDiag, SIGNAL(deactivated()), SLOT(hidewebview())); if(QGSettings::isSchemaInstalled(id)) { connect(gsettings, &QGSettings::changed, this, [=] (const QString &key) { if (key == HOUR_SYSTEM_KEY) { if(gsettings->keys().contains("hoursystem")) { hourSystemMode=gsettings->get("hoursystem").toString(); } else hourSystemMode=24; } if(key == "calendar") { mbHasCreatedWebView = false; initializeCalendar(); } if(key == "firstday") { qDebug()<<"key == firstday"; mbHasCreatedWebView = false; initializeCalendar(); } if(key == "date") { if(gsettings->keys().contains("date")) { if(QString::compare(gsettings->get("date").toString(),"cn")) { hourSystem_24_horzontal=HOUR_SYSTEM_24_Horizontal_CN; hourSystem_24_vartical=HOUR_SYSTEM_24_Vertical_CN; hourSystem_12_horzontal=HOUR_SYSTEM_12_Horizontal_CN; hourSystem_12_vartical=HOUR_SYSTEM_12_Vertical_CN; current_date=CURRENT_DATE_CN; } else { hourSystem_24_horzontal=HOUR_SYSTEM_24_Horizontal; hourSystem_24_vartical=HOUR_SYSTEM_24_Vertical; hourSystem_12_horzontal=HOUR_SYSTEM_12_Horizontal; hourSystem_12_vartical=HOUR_SYSTEM_12_Vertical; current_date=CURRENT_DATE; } } updateTimeText(); } }); } connect(mContent,&CalendarActiveLabel::pressTimeText,[=]{CalendarWidgetShow();}); // initializeCalendar(); setTimeShowStyle(); mContent->setWordWrap(true); ListenGsettings *m_ListenGsettings = new ListenGsettings(); QObject::connect(m_ListenGsettings,&ListenGsettings::iconsizechanged,[this]{updateTimeText();}); QObject::connect(m_ListenGsettings,&ListenGsettings::panelpositionchanged,[this]{updateTimeText();}); updateTimeText(); QTimer::singleShot(10000,[this] { updateTimeText();}); //读取配置文件中CalendarVersion 的值 QString filename ="/usr/share/ukui/ukui-panel/panel-commission.ini"; QSettings m_settings(filename, QSettings::IniFormat); m_settings.setIniCodec("UTF-8"); m_settings.beginGroup("Calendar"); calendar_version = m_settings.value("CalendarVersion", "").toString(); if (calendar_version.isEmpty()) { calendar_version = "old"; } m_settings.endGroup(); //监听手动更改时间,后期找到接口进行替换 QTimer::singleShot(1000,this,[=](){ListenForManualSettingTime();}); //使用系统提供的sdk刷新时间显示 QDBusConnection::systemBus().connect(KYSDK_TIMERSERVER, KYSDK_TIMERPATH, KYSDK_TIMERINTERFACE, "TimeSignal", this, SLOT(timeChange(QString)) ); QDBusConnection::systemBus().connect(KYSDK_TIMERSERVER, KYSDK_TIMERPATH, KYSDK_TIMERINTERFACE, "TimeChangeSignal", this, SLOT(timeChange(QString)) ); } IndicatorCalendar::~IndicatorCalendar() { if(mMainWidget != NULL) { mMainWidget->deleteLater(); } if(mWebViewDiag != NULL) { mWebViewDiag->deleteLater(); } if(mContent != NULL) { mContent->deleteLater(); } gsettings->deleteLater(); fgsettings->deleteLater(); } void IndicatorCalendar::translator(){ m_translator = new QTranslator(this); QString locale = QLocale::system().name(); if (locale == "zh_CN"){ if (m_translator->load(QM_INSTALL)) qApp->installTranslator(m_translator); else qDebug() <load(BO_QM_INSTALL)) { qApp->installTranslator(m_translator); } else { qDebug() < pathresult=delaytime.split(":"); int second=pathresult.at(2).toInt(); if(second==0){ mTimer->setInterval(60*1000); }else{ mTimer->setInterval((60+1-second)*1000); } timeState = tzNow.toString("hh:mm ddd yyyy-MM-dd"); updateTimeText(); } void IndicatorCalendar::updateTimeText() { QDateTime tzNow = QDateTime::currentDateTime(); QString str; QByteArray id(HOUR_SYSTEM_CONTROL); if(QGSettings::isSchemaInstalled(id)) { QStringList keys = gsettings->keys(); if(keys.contains("hoursystem")) hourSystemMode=gsettings->get("hoursystem").toString(); } else { hourSystemMode = 24; } if(!QString::compare("24",hourSystemMode)) { if(panel()->isHorizontal()) str=tzNow.toString(hourSystem_24_horzontal); else str=tzNow.toString(hourSystem_24_vartical); } else { if(panel()->isHorizontal()) { str=tzNow.toString(hourSystem_12_horzontal); } else { str = tzNow.toString(hourSystem_12_vartical); str.replace("AM","AM "); str.replace("PM","PM "); } } QString style; int font_size = fgsettings->get(SYSTEM_FONT_SIZE).toInt(); if(font_size>14) font_size=14; if(font_size<12) font_size=12; style.sprintf( //正常状态样式 "QLabel{" "border-width: 0px;" //边框宽度像素 "border-radius: 6px;" //边框圆角半径像素 "font-size: %dpx;" //字体,字体大小 "padding: 0px;" //填衬 "text-align:center;" //文本居中 "}" //鼠标悬停样式 "QLabel:hover{" "background-color:rgba(190,216,239,20%%);" "border-radius:6px;" //边框圆角半径像素 "}" //鼠标按下样式 "QLabel:pressed{" "background-color:rgba(190,216,239,12%%);" "}", font_size); mContent->setStyleSheet(style); mContent->setText(str); } /*when widget is loading need initialize here*/ void IndicatorCalendar::initializeCalendar() { QByteArray id(HOUR_SYSTEM_CONTROL); CalendarShowMode showCalendar = defaultMode; QString lunarOrsolar; QString firstDay; int iScreenHeight = QApplication::screens().at(0)->size().height() - panel()->panelSize(); if(iScreenHeight > WEBVIEW_MAX_HEIGHT) { mViewHeight = WEBVIEW_MAX_HEIGHT; } else { mViewHeight = WEBVIEW_MIN_HEIGHT; } if(QGSettings::isSchemaInstalled(id)) { if(!gsettings) { qDebug()<<"get gsetting error!!!"; return; } if(gsettings->keys().contains("calendar")) { lunarOrsolar= gsettings->get("calendar").toString(); } if(gsettings->keys().contains("firstday")) { firstDay= gsettings->get("firstday").toString(); } if (QLocale::system().name() == "zh_CN") { if(lunarOrsolar == "lunar") { if(firstDay == "sunday") { showCalendar = lunarSunday; } else if(firstDay == "monday") { showCalendar = lunarMonday; } if(iScreenHeight > WEBVIEW_MAX_HEIGHT) { mViewHeight = WEBVIEW_MAX_HEIGHT; } else { mViewHeight = WEBVIEW_MIN_HEIGHT; } } else if(lunarOrsolar == "solarlunar") { if(firstDay == "sunday") { showCalendar = solarSunday; } else if(firstDay == "monday") { showCalendar = solarMonday; } mViewHeight = WEBVIEW_MIN_HEIGHT; } } else// for internaitional { if(firstDay == "sunday") { showCalendar = solarSunday; } else if(firstDay == "monday") { showCalendar = solarMonday; } mViewHeight = WEBVIEW_MIN_HEIGHT; } } if(mWebViewDiag != NULL ) { if(!mbHasCreatedWebView) { mWebViewDiag->creatwebview(showCalendar,panel()->panelSize()); mbHasCreatedWebView = true; } } } void IndicatorCalendar::CalendarWidgetShow() { if(mWebViewDiag != NULL ) { mViewHeight = WEBVIEW_MAX_HEIGHT; QByteArray id(HOUR_SYSTEM_CONTROL); if(QGSettings::isSchemaInstalled(id)) { if(gsettings->get("calendar").toString() == "solarlunar") mViewHeight = WEBVIEW_MIN_HEIGHT; } if (QLocale::system().name() != "zh_CN") mViewHeight = WEBVIEW_MIN_HEIGHT; int iScreenHeight = QApplication::screens().at(0)->size().height() - panel()->panelSize(); if (iScreenHeight < WEBVIEW_MAX_HEIGHT) { mViewHeight = iScreenHeight; if (iScreenHeight >= WEBVIEW_MIN_HEIGHT) mViewHeight = WEBVIEW_MIN_HEIGHT;; } if(qgetenv("XDG_SESSION_TYPE")=="wayland") mWebViewDiag->setGeometry(calculatePopupWindowPos(QSize(mViewWidht+POPUP_BORDER_SPACING,mViewHeight+POPUP_BORDER_SPACING))); else modifyCalendarWidget(); #if 0 mWebViewDiag->show(); mWebViewDiag->activateWindow(); if(!mbActived) { mWebViewDiag->setHidden(false); // mWebViewDiag->webview()->reload(); mbActived = true; } else { mWebViewDiag->setHidden(true); // mWebViewDiag->webview()->reload(); mbActived = false; } #endif if(status==ST_HIDE) { status = ST_SHOW; mWebViewDiag->setHidden(false); } else { status = ST_HIDE; mWebViewDiag->setHidden(true); } } } /** * @brief IndicatorCalendar::activated * @param reason * 如下两种方式也可以设置位置,由于ui问题弃用 * 1.mWebViewDiag->setGeometry(calculatePopupWindowPos(QSize(mViewWidht+POPUP_BORDER_SPACING,mViewHeight+POPUP_BORDER_SPACING))); * 2. // QRect screen = QApplication::desktop()->availableGeometry(); // switch (panel()->position()) { // case IUKUIPanel::PositionBottom: // mWebViewDiag->move(screen.width()-mViewWidht-POPUP_BORDER_SPACING,screen.height()-mViewHeight-POPUP_BORDER_SPACING); // break; // case IUKUIPanel::PositionTop: // mWebViewDiag->move(screen.width()-mViewWidht-POPUP_BORDER_SPACING,panel()->panelSize()+POPUP_BORDER_SPACING); // break; // case IUKUIPanel::PositionLeft: // mWebViewDiag->move(panel()->panelSize()+POPUP_BORDER_SPACING,screen.height()-mViewHeight-POPUP_BORDER_SPACING); // break; // default: // mWebViewDiag->setGeometry(calculatePopupWindowPos(QSize(mViewWidht+POPUP_BORDER_SPACING,mViewHeight+POPUP_BORDER_SPACING))); // break; // } */ void IndicatorCalendar::hidewebview() { mWebViewDiag->setHidden(true); mbActived = false; } void IndicatorCalendar::realign() { setTimeShowStyle(); } void IndicatorCalendar::setTimeShowStyle() { int size = panel()->panelSize() - 3; if (size > 0) { if(panel()->isHorizontal()) { mContent->setFixedSize(CALENDAR_WIDTH, size); } else { mContent->setFixedSize(size, CALENDAR_WIDTH); } } } /** * @brief IndicatorCalendar::modifyCalendarWidget * 任务栏上弹出窗口的位置标准为距离屏幕边缘及任务栏边缘分别为4像素 */ void IndicatorCalendar::modifyCalendarWidget() { int totalHeight = qApp->primaryScreen()->size().height() + qApp->primaryScreen()->geometry().y(); int totalWidth = qApp->primaryScreen()->size().width() + qApp->primaryScreen()->geometry().x(); switch (panel()->position()) { case IUKUIPanel::PositionBottom: mWebViewDiag->setGeometry(totalWidth-mViewWidht-4,totalHeight-panel()->panelSize()-mViewHeight-4,mViewWidht,mViewHeight); break; case IUKUIPanel::PositionTop: mWebViewDiag->setGeometry(totalWidth-mViewWidht-4,qApp->primaryScreen()->geometry().y()+panel()->panelSize()+4,mViewWidht,mViewHeight); break; case IUKUIPanel::PositionLeft: mWebViewDiag->setGeometry(qApp->primaryScreen()->geometry().x()+panel()->panelSize()+4,totalHeight-mViewHeight-4,mViewWidht,mViewHeight); break; case IUKUIPanel::PositionRight: mWebViewDiag->setGeometry(totalWidth-panel()->panelSize()-mViewWidht-4,totalHeight-mViewHeight-4,mViewWidht,mViewHeight); break; default: mWebViewDiag->setGeometry(qApp->primaryScreen()->geometry().x()+panel()->panelSize()+4,totalHeight-mViewHeight,mViewWidht,mViewHeight); break; } } void IndicatorCalendar::ListenForManualSettingTime(){ mProcess=new QProcess(this); QString command="journalctl -u systemd-timedated.service -f"; mProcess->setReadChannel(QProcess::StandardOutput); mProcess->start(command); mProcess->startDetached(command); connect(mProcess,&QProcess::readyReadStandardOutput,this,[=](){ updateTimeText(); }); } void IndicatorCalendar::timeChange(QString time) { updateTimeText(); } CalendarActiveLabel::CalendarActiveLabel(IUKUIPanelPlugin *plugin, QWidget *parent) : QLabel(parent), mPlugin(plugin), mInterface(new QDBusInterface(SERVICE,PATH,INTERFACE,QDBusConnection::sessionBus(),this)) { w = new frmLunarCalendarWidget(); connect(w,&frmLunarCalendarWidget::yijiChangeDown, this, [=] (){ changeHight = 0; changeWidowpos(); }); connect(w,&frmLunarCalendarWidget::yijiChangeUp, this, [=] (){ changeHight = 52; changeWidowpos(); }); QTimer::singleShot(1000,[this] {setToolTip(tr("Time and Date")); }); } void CalendarActiveLabel::mousePressEvent(QMouseEvent *event) { if (Qt::LeftButton == event->button()){ if(calendar_version == "old"){ Q_EMIT pressTimeText(); } else { //点击时间标签日历隐藏,特殊处理 if(w->isHidden()){ changeWidowpos(); }else{ w->hide(); } } // mInterface->call("ShowCalendar"); } } void CalendarActiveLabel::changeWidowpos() { int totalHeight = qApp->primaryScreen()->size().height() + qApp->primaryScreen()->geometry().y(); int totalWidth = qApp->primaryScreen()->size().width() + qApp->primaryScreen()->geometry().x(); switch (mPlugin->panel()->position()) { case IUKUIPanel::PositionBottom: w->setGeometry(totalWidth-mViewWidht-4,totalHeight-mPlugin->panel()->panelSize()-mViewHeight-4-changeHight,mViewWidht,mViewHeight); break; case IUKUIPanel::PositionTop: w->setGeometry(totalWidth-mViewWidht-4,qApp->primaryScreen()->geometry().y()+mPlugin->panel()->panelSize()+4,mViewWidht,mViewHeight); break; case IUKUIPanel::PositionLeft: w->setGeometry(qApp->primaryScreen()->geometry().x()+mPlugin->panel()->panelSize()+4,totalHeight-mViewHeight-4-changeHight,mViewWidht,mViewHeight); break; case IUKUIPanel::PositionRight: w->setGeometry(totalWidth-mPlugin->panel()->panelSize()-mViewWidht-4,totalHeight-mViewHeight-4-changeHight,mViewWidht,mViewHeight); break; default: w->setGeometry(qApp->primaryScreen()->geometry().x()+mPlugin->panel()->panelSize()+4,totalHeight-mViewHeight,mViewWidht,mViewHeight); break; } w->show(); } void CalendarActiveLabel::contextMenuEvent(QContextMenuEvent *event) { QMenu *menuCalender=new QMenu(this); menuCalender->setAttribute(Qt::WA_DeleteOnClose); menuCalender->addAction(QIcon::fromTheme("document-page-setup-symbolic"), tr("Time and Date Setting"), this, SLOT(setControlTime()) ); menuCalender->setGeometry(mPlugin->panel()->calculatePopupWindowPos(mapToGlobal(event->pos()), menuCalender->sizeHint())); menuCalender->show(); } void CalendarActiveLabel::setControlTime() { QProcess::startDetached(QString("ukui-control-center -m Date")); } ukui-panel-4.0.0.4/plugin-calendar/ukuiwebviewdialog.cpp0000644000175000017500000000516214560306203021651 0ustar fengfeng/* * Copyright (C) 2019 Tianjin KYLIN Information Technology Co., Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public as published by * the Free Software Foundation; either version 2.1, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see #include #include //#include #include #include #include #include #include #include #include #define CALENDAR_MAX_HEIGHT 704 #define CALENDAR_MIN_HEIGHT 600 #define CALENDAR_MAX_WIDTH 454 UkuiWebviewDialogStatus status; UkuiWebviewDialog::UkuiWebviewDialog(QWidget *parent) : QDialog(parent, Qt::FramelessWindowHint | Qt::Tool | Qt::X11BypassWindowManagerHint), ui(new Ui::UkuiWebviewDialog) { ui->setupUi(this); installEventFilter(this); setProperty("useStyleWindowManager",false); } UkuiWebviewDialog::~UkuiWebviewDialog() { delete ui; } void UkuiWebviewDialog::creatwebview(int _mode, int _panelSize) { } /* * 事件过滤,检测鼠标点击外部活动区域则收回收纳栏 */ bool UkuiWebviewDialog::eventFilter(QObject *obj, QEvent *event) { if (obj == this) { if (event->type() == QEvent::MouseButtonPress) { QMouseEvent *mouseEvent = static_cast(event); if (mouseEvent->button() == Qt::LeftButton) { this->hide(); status=ST_HIDE; return true; } else if(mouseEvent->button() == Qt::RightButton) { return true; } } else if(event->type() == QEvent::ContextMenu) { return false; } else if (event->type() == QEvent::WindowDeactivate &&status==ST_SHOW) { // qDebug()<<"激活外部窗口"; this->hide(); status=ST_HIDE; return true; } else if (event->type() == QEvent::StyleChange) { } } if (!isActiveWindow()) { activateWindow(); } return false; } ukui-panel-4.0.0.4/plugin-calendar/CMakeLists.txt0000644000175000017500000000566214560306221020164 0ustar fengfengset(PLUGIN "calendar") set(HEADERS ukuicalendarplugin.h ukuicalendarwidget.h calendarbutton.h calendarbuttontext.h ukuiwebviewdialog.h lunarcalendarwidget/frmlunarcalendarwidget.h lunarcalendarwidget/lunarcalendarinfo.h lunarcalendarwidget/lunarcalendaritem.h lunarcalendarwidget/lunarcalendaryearitem.h lunarcalendarwidget/lunarcalendarmonthitem.h lunarcalendarwidget/lunarcalendarwidget.h lunarcalendarwidget/picturetowhite.h lunarcalendarwidget/customstylePushbutton.h lunarcalendarwidget/calendarcolor.h ) set(SOURCES ukuicalendarplugin.cpp ukuicalendarwidget.cpp calendarbutton.cpp calendarbuttontext.cpp ukuiwebviewdialog.cpp lunarcalendarwidget/frmlunarcalendarwidget.cpp lunarcalendarwidget/lunarcalendarinfo.cpp lunarcalendarwidget/lunarcalendaritem.cpp lunarcalendarwidget/lunarcalendaryearitem.cpp lunarcalendarwidget/lunarcalendarmonthitem.cpp lunarcalendarwidget/lunarcalendarwidget.cpp lunarcalendarwidget/picturetowhite.cpp lunarcalendarwidget/customstylePushbutton.cpp lunarcalendarwidget/calendarcolor.cpp ) set(UIS ukuiwebviewdialog.ui lunarcalendarwidget/frmlunarcalendarwidget.ui ) find_package(PkgConfig) pkg_check_modules(Gsetting REQUIRED gsettings-qt) include_directories(${Gsetting_INCLUDE_DIRS}) pkg_check_modules(CALENDAR_DEPS REQUIRED glib-2.0) link_libraries(glib-2.0.so) pkg_check_modules(KDKSYSTIME kysdk-systime) if (KDKSYSTIME_FOUND) ADD_DEFINITIONS(-DKDKSYSTIME_FOUND="true") include_directories(${KDKSYSTIME_PKG_INCLUDE_DIRS}) link_directories(${KDKSYSTIME_PKG_LIBRARY_DIRS}) link_libraries(kydate.so) endif() # pkg_check_modules(KYSDKSYSTIME_PKG kysdk-systime) # include_directories(${KYSDKSYSTIME_PKG_INCLUDE_DIRS}) # link_directories(${KYSDKSYSTIME_PKG_LIBRARY_DIRS}) # link_libraries(kydate.so) pkg_check_modules(KYSDKQTWIDGETS_PKG kysdk-qtwidgets) include_directories(${KYSDKQTWIDGETS_PKG_INCLUDE_DIRS}) link_directories(${KYSDKQTWIDGETS_PKG_LIBRARY_DIRS}) link_libraries(kysdk-qtwidgets.so) pkg_check_modules(KYSDKWAYLANDHELPER_PKG kysdk-waylandhelper) include_directories(${KYSDKWAYLANDHELPER_PKG_INCLUDE_DIRS}) link_directories(${KYSDKWAYLANDHELPER_PKG_LIBRARY_DIRS}) link_libraries(kysdk-waylandhelper.so) include_directories(${CALENDAR_DEPS_INCLUDE_DIRS}) ADD_DEFINITIONS(-DQT_NO_KEYWORDS) install(DIRECTORY html/ DESTINATION ${PACKAGE_DATA_DIR}/plugin-calendar/html) #加载翻译文件 file(GLOB TS_FILES "${PROJECT_SOURCE_DIR}/plugin-calendar/translation/*.ts" ) #更新翻译文件并创建.qm文件 qt5_create_translation(QM_FILES ${PROJECT_SOURCE_DIR} ${TS_FILES}) set(${PLUGIN}_QM_FILES ${QM_FILES}) BUILD_UKUI_PLUGIN(${PLUGIN}) #安装翻译文件 set(CALENDAR_TRANSLATION_DIR "${PACKAGE_DATA_DIR}/plugin-calendar/translation") add_compile_definitions(CALENDAR_TRANSLATION_DIR="${CALENDAR_TRANSLATION_DIR}") install(FILES ${QM_FILES} DESTINATION ${CALENDAR_TRANSLATION_DIR}) ukui-panel-4.0.0.4/plugin-calendar/ukuicalendarplugin.cpp0000644000175000017500000000230214560306203022002 0ustar fengfeng/* * Copyright (C) 2019 Tianjin KYLIN Information Technology Co., Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); } UKUICalendarPlugin::~UKUICalendarPlugin() { delete m_widget; } QWidget *UKUICalendarPlugin::widget() { return m_widget; } void UKUICalendarPlugin::realign() { m_widget->realign(); } ukui-panel-4.0.0.4/plugin-calendar/calendarbutton.cpp0000664000175000017500000001641314576165151021147 0ustar fengfeng/* * Copyright (C) 2019 Tianjin KYLIN Information Technology Co., Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see #include #include #include #include "kysdk/applications/windowmanager/windowmanager.h" #include "../panel/common/common.h" #define SYSTEM_FONT_SET "org.ukui.style" #define SYSTEM_FONT_SIZE "systemFontSize" #define SYSTEM_FONT "systemFont" #define CALENDAR_BUTTON_WIDTH 120 #define KYSDK_TIMERSERVER "com.kylin.kysdk.TimeServer" #define KYSDK_TIMERPATH "/com/kylin/kysdk/Timer" #define KYSDK_TIMERINTERFACE "com.kylin.kysdk.TimeInterface" #define KYSDK_DATESERVER "com.kylin.kysdk.DateServer" #define KYSDK_DATEPATH "/com/kylin/kysdk/Date" #define KYSDK_DATEINTERFACE "com.kylin.kysdk.DateInterface" #define UKUI_CONTROL_CENTER_SERVER "org.freedesktop.Accounts" #define UKUI_CONTROL_CENTER_PATH "/org/freedesktop/Accounts/User1000" #define UKUI_CONTROL_CENTER_INTERFACE "org.freedesktop.Accounts.User" #define PANEL_SIZE_LARGE 92 #define PANEL_SIZE_MEDIUM 70 #define PANEL_SIZE_SMALL 46 #define PANEL_SIZE_KEY "panelsize" CalendarButton::CalendarButton(IUKUIPanelPlugin *plugin, QWidget *parent): QPushButton(parent), m_parent(parent), m_timer(new QTimer(this)), m_plugin(plugin) { //设置按钮样式和属性 this->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); this->setFlat(true); setProperty("useButtonPalette",true); setSystemStyle(); /*按钮边距固定0px,尽可能多显示日期信息。CalendarButton不继承ToolButton的原因就是 主题框架提供的ToolButton的边距是固定值,无法修改*/ this->setStyleSheet("padding: 0px;}"); const QByteArray id(ORG_UKUI_STYLE); if (QGSettings::isSchemaInstalled(id)) { m_styleGsettings = new QGSettings(id); connect(m_styleGsettings, &QGSettings::changed, this, [=] (const QString &key) { if (key == STYLE_NAME) { setSystemStyle(); update(); } }); } //初始化系统字体相关Gsetting initFontGsettings(); //每隔1分钟刷新时间显示 m_timer->setTimerType(Qt::PreciseTimer); connect(m_timer, &QTimer::timeout, [this]{ checkUpdateTimer(); }); m_timer->start(1000); m_listenGsettings = new ListenGsettings(); QObject::connect(m_listenGsettings,&ListenGsettings::iconsizechanged,[this]{updateBtnText(QString());}); QObject::connect(m_listenGsettings,&ListenGsettings::panelpositionchanged,[this]{updateBtnText(QString());}); //更新日历按钮内容 updateBtnText(QString()); } CalendarButton::~CalendarButton() { if(m_styleGsettings) { m_styleGsettings->deleteLater(); } if(m_fontGsettings) { m_fontGsettings->deleteLater(); } if(m_listenGsettings) { m_listenGsettings->deleteLater(); } } void CalendarButton::contextMenuEvent(QContextMenuEvent *event) { m_menuCalender = new QMenu(this); m_menuCalender->setAttribute(Qt::WA_DeleteOnClose); m_menuCalender->setGeometry(m_plugin->panel()->calculatePopupWindowPos (mapToGlobal(event->pos()), m_menuCalender->sizeHint())); m_menuCalender->addAction(QIcon::fromTheme("document-page-setup-symbolic"), tr("Time and Date Setting"), this, SLOT(setControlTime())); m_menuCalender->show(); kdk::WindowManager::setGeometry(m_menuCalender->windowHandle(), m_plugin->panel()->calculatePopupWindowPos(mapToGlobal(event->pos()), m_menuCalender->sizeHint())); QObject::connect(m_menuCalender, &QMenu::destroyed, this, [&](){ this->setAttribute(Qt::WA_UnderMouse, false); this->setDown(false); this->update(); }); } void CalendarButton::mousePressEvent(QMouseEvent *event) { if (Qt::LeftButton == event->button()){ Q_EMIT pressShowHideCalendar(); } } //初始化系统字体相关Gsetting void CalendarButton::initFontGsettings() { const QByteArray id(SYSTEM_FONT_SET); if (QGSettings::isSchemaInstalled(id)) { m_fontGsettings = new QGSettings(id); connect(m_fontGsettings, &QGSettings::changed, this, [=] (const QString &keys){ if(keys == SYSTEM_FONT_SIZE || keys == SYSTEM_FONT){ m_systemFontSize = m_fontGsettings->get(SYSTEM_FONT_SIZE).toString(); m_systemFont = m_fontGsettings->get(SYSTEM_FONT).toString(); updateBtnText(QString()); } }); QStringList ketList = m_fontGsettings->keys(); if(ketList.contains(SYSTEM_FONT_SIZE)) m_systemFontSize = m_fontGsettings->get(SYSTEM_FONT_SIZE).toString(); if(ketList.contains(SYSTEM_FONT)) m_systemFont = m_fontGsettings->get(SYSTEM_FONT).toString(); } } //右键跳转到控制面板日期页面 void CalendarButton::setControlTime() { QProcess *process =new QProcess(this); process->start( "bash", QStringList() << "-c" << "dpkg -l | grep ukui-control-center"); process->waitForFinished(); QString strResult = process->readAllStandardOutput() + process->readAllStandardError(); if (-1 != strResult.indexOf("3.0")) { QProcess::startDetached(QString("ukui-control-center -t")); } else { QProcess::startDetached(QString("ukui-control-center -m Date")); } } void CalendarButton::updateBtnText(QString timerStr) { Q_UNUSED(timerStr); CalendarButtonText btnText(m_plugin,this); this->setText(btnText.getBtnText()); } void CalendarButton::setSystemStyle() { QPalette pal = this->palette(); QColor col = pal.color(QPalette::Active, QPalette::ButtonText); col.setAlphaF(0.05); pal.setColor(QPalette::Button, col); this->setPalette(pal); } void CalendarButton::checkUpdateTimer() { //任务栏第一次启动与系统时间进行比较校正,确定第一次刷新时间 QString delaytime = QTime::currentTime().toString(); QList pathresult = delaytime.split(":"); int second = pathresult.at(2).toInt(); if (second == 0) { m_timer->setInterval(60 * 1000); } else { m_timer->setInterval((60 - second) * 1000); } updateBtnText(QString()); } bool CalendarButton::event(QEvent *event) { if (event->type() == QEvent::ToolTip) { CalendarButtonText btnText(m_plugin,this); QString toolTipText = btnText.getToolTipText(); QHelpEvent *helpEvent = static_cast(event); QToolTip::showText(helpEvent->globalPos(), toolTipText); return true; } return QWidget::event(event); } ukui-panel-4.0.0.4/plugin-calendar/ukuicalendar.h0000644000175000017500000001027314560306203020236 0ustar fengfeng/* BEGIN_COMMON_COPYRIGHT_HEADER * (c)LGPL2+ * * Copyright: 2012-2013 Razor team * Authors: * Kuzma Shapran * * Copyright: 2019 Tianjin KYLIN Information Technology Co., Ltd. * * * This program or library is free software; you can redistribute it * and/or modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * You should have received a copy of the GNU Lesser General * Public License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA * * END_COMMON_COPYRIGHT_HEADER */ #include #include #include #include #include #include #include #include #include "../panel/iukuipanelplugin.h" #include "ukuiwebviewdialog.h" #include "../panel/common/ukuigridlayout.h" #include "../panel/common_fun/listengsettings.h" #include "lunarcalendarwidget/frmlunarcalendarwidget.h" class QTimer; class CalendarActiveLabel; class UkuiCalendarWebView; class IndicatorCalendar : public QWidget, public IUKUIPanelPlugin { Q_OBJECT public: IndicatorCalendar(const IUKUIPanelPluginStartupInfo &startupInfo); ~IndicatorCalendar(); virtual QWidget *widget() { return mMainWidget; } virtual QString themeId() const { return QLatin1String("Calendar"); } bool isSeparate() const { return true; } void realign()override; void initializeCalendar(); void setTimeShowStyle(); /** * @brief modifyCalendarWidget 修改日历显示位置 */ void modifyCalendarWidget(); Q_SIGNALS: void deactivated(); private Q_SLOTS: void checkUpdateTime(); void updateTimeText(); void hidewebview(); void CalendarWidgetShow(); void ListenForManualSettingTime(); void timeChange(QString time); private: QWidget *mMainWidget; frmLunarCalendarWidget *w; UkuiWebviewDialog *mWebViewDiag; bool mbActived; bool mbHasCreatedWebView; int font_size; CalendarActiveLabel *mContent; UKUi::GridLayout *mLayout; QString timeState; QTimer *mTimer; QTimer *mCheckTimer; int mUpdateInterval; int16_t mViewWidht; int16_t mViewHeight; QString mActiveTimeZone; QGSettings *gsettings; QGSettings *fgsettings; QString hourSystemMode; QString hourSystem_24_horzontal; QString hourSystem_24_vartical; QString hourSystem_12_horzontal; QString hourSystem_12_vartical; QString current_date; IUKUIPanelPlugin * mPlugin; QProcess *mProcess; QTranslator *m_translator; private: void translator(); }; #define SERVICE "org.ukui.panel.calendar" #define PATH "/calendarWidget" #define INTERFACE "org.ukui.panel.calendar" class CalendarActiveLabel : public QLabel { Q_OBJECT public: explicit CalendarActiveLabel(IUKUIPanelPlugin *plugin,QWidget * = NULL); IUKUIPanelPlugin * mPlugin; int16_t mViewWidht = 440; int16_t mViewHeight = 600 ; int changeHight = 0; void changeWidowpos(); protected: /** * @brief contextMenuEvent 右键菜单设置项 * @param event */ virtual void contextMenuEvent(QContextMenuEvent *event); void mousePressEvent(QMouseEvent *event); private: frmLunarCalendarWidget *w; QDBusInterface *mInterface; Q_SIGNALS: void pressTimeText(); private Q_SLOTS: /** * @brief setControlTime 右键菜单选项,在控制面板设置时间 */ void setControlTime(); }; class UKUICalendarPluginLibrary: public QObject, public IUKUIPanelPluginLibrary { Q_OBJECT Q_PLUGIN_METADATA(IID "ukui.org/Panel/PluginInterface/3.0") Q_INTERFACES(IUKUIPanelPluginLibrary) public: IUKUIPanelPlugin *instance(const IUKUIPanelPluginStartupInfo &startupInfo) const { return new IndicatorCalendar(startupInfo); } }; ukui-panel-4.0.0.4/plugin-calendar/html/0000755000175000017500000000000014560306203016357 5ustar fengfengukui-panel-4.0.0.4/plugin-calendar/html/hlnew/0000755000175000017500000000000014560306221017474 5ustar fengfengukui-panel-4.0.0.4/plugin-calendar/html/hlnew/hl2020.json0000644000175000017500000027475314560306203021320 0ustar fengfeng{ "d0101": { "y": "平治道涂.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鸡", "s": "煞西", "ch": "平", "zc": "正冲正冲丁酉", "ts": "房床门房内南" }, "d0201": { "y": "祭祀.祈福.斋醮.塑绘.开光.除服.成服.入殓.作灶.嫁娶.捕捉.畋猎.纳财.", "j": "开仓.造屋.安葬.安床.", "c": "生肖冲龙", "s": "煞北", "ch": "收", "zc": "正冲正冲戊辰", "ts": "门鸡栖外西南" }, "d0102": { "y": "求嗣.斋醮.塑绘.订盟.纳采.出火.拆卸.修造.动土.造桥.安机械.栽种.纳畜.牧养.入殓.除服.成服.移柩.破土.安葬.", "j": "开市.嫁娶.", "c": "生肖冲狗", "s": "煞南", "ch": "定", "zc": "正冲正冲戊戌", "ts": "门鸡栖房内东" }, "d0103": { "y": "嫁娶.订盟.纳采.祭祀.祈福.修造.动土.移徙.入宅.", "j": "开市.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "执", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d0104": { "y": "治病.破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鼠", "s": "煞北", "ch": "破", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d0105": { "y": "祭祀.祈福.求嗣.斋醮.开光.入学.订盟.冠笄.伐木.修造.动土.起基.放水.交易.开池.", "j": "造桥.安门.理发.造庙.栽种.作灶.", "c": "生肖冲牛", "s": "煞西", "ch": "危", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d0106": { "y": "沐浴.开仓.出货财.开市.交易.立券.纳财.栽种.纳畜.牧养.畋猎.入殓.破土.安葬.", "j": "祈福.嫁娶.安床.入宅.造船.", "c": "生肖冲虎", "s": "煞南", "ch": "危", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" }, "d0107": { "y": "祭祀.沐浴.补垣.塞穴.断蚁.解除.余事勿取.", "j": "造庙.入宅.修造.安葬.行丧.嫁娶.", "c": "生肖冲兔", "s": "煞東", "ch": "成", "zc": "正冲正冲癸卯", "ts": "占大门外东北" }, "d0108": { "y": "嫁娶.纳采.订盟.问名.祭祀.冠笄.裁衣.会亲友.进人口.纳财.捕捉.作灶.", "j": "开市.安床.安葬.修坟.", "c": "生肖冲龙", "s": "煞北", "ch": "收", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d0109": { "y": "订盟.纳采.会亲友.祭祀.斋醮.沐浴.塑绘.出火.开光.竖柱.上梁.开市.交易.立券.作梁.开柱眼.伐木.架马.安门.安床.拆卸.牧养.造畜椆栖.掘井.", "j": "造庙.嫁娶.出行.动土.安葬.行丧.", "c": "生肖冲蛇", "s": "煞西", "ch": "开", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d0110": { "y": "交易.立券.纳财.安床.裁衣.造畜椆栖.安葬.谢土.启攒.除服.成服.修坟.立碑.移柩.入殓.", "j": "开光.嫁娶.开市.动土.破土.", "c": "生肖冲马", "s": "煞南", "ch": "闭", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d0111": { "y": "祭祀.解除.教牛马.会亲友.余事勿取.", "j": "破土.动土.安葬.", "c": "生肖冲羊", "s": "煞東", "ch": "建", "zc": "正冲正冲丁未", "ts": "房床厕外东北" }, "d0112": { "y": "纳采.订盟.移徙.纳财.开市.交易.立券.入宅.会亲友.解除.求医.治病.入学.安床.安门.安香.出火.拆卸.扫舍.入宅.挂匾.开生坟.合寿木.破土.修坟.启攒.入殓.", "j": "探病.祭祀.出行.上梁.造屋.谢土.安葬.", "c": "生肖冲猴", "s": "煞北", "ch": "除", "zc": "正冲正冲戊申", "ts": "占门炉外东北" }, "d0113": { "y": "嫁娶.订盟.纳采.祭祀.祈福.求嗣.会亲友.解除.出行.入学.纳财.开市.交易.立券.习艺.经络.安床.开仓.出货财.纳畜.安葬.启攒.修坟.入殓.", "j": "入宅.开光.开市.动土.", "c": "生肖冲鸡", "s": "煞西", "ch": "满", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d0114": { "y": "祭祀.冠笄.嫁娶.会亲友.进人口.裁衣.结网.平治道涂.", "j": "移徙.入宅.造庙.作灶.治病.安葬.", "c": "生肖冲狗", "s": "煞南", "ch": "平", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d0115": { "y": "祭祀.安碓硙.结网.余事勿取.", "j": "嫁娶.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "定", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d0116": { "y": "嫁娶.祭祀.沐浴.裁衣.出行.理发.移徙.捕捉.畋猎.放水.入宅.除服.成服.启攒.安葬.移柩.入殓.", "j": "造屋.开市.动土.破土.", "c": "生肖冲鼠", "s": "煞北", "ch": "执", "zc": "正冲正冲壬子", "ts": "房床碓外正东" }, "d0117": { "y": "破屋.坏垣.余事勿取.", "j": "嫁娶.开市.安葬.", "c": "生肖冲牛", "s": "煞西", "ch": "破", "zc": "正冲正冲癸丑", "ts": "占门厕外正东" }, "d0118": { "y": "纳采.订盟.祭祀.求嗣.出火.塑绘.裁衣.会亲友.入学.拆卸.扫舍.造仓.挂匾.掘井.开池.结网.栽种.纳畜.破土.修坟.立碑.安葬.入殓.", "j": "祈福.嫁娶.造庙.安床.谢土.", "c": "生肖冲虎", "s": "煞南", "ch": "危", "zc": "正冲正冲甲寅", "ts": "碓磨炉外东南" }, "d0119": { "y": "入殓.除服.成服.移柩.启攒.安葬.修坟.立碑.", "j": "开市.伐木.嫁娶.作梁.", "c": "生肖冲兔", "s": "煞東", "ch": "成", "zc": "正冲正冲乙卯", "ts": "厨灶门外东南" }, "d0120": { "y": "祭祀.作灶.入殓.除服.余事勿取.", "j": "开市.安床.", "c": "生肖冲龙", "s": "煞北", "ch": "收", "zc": "正冲正冲丙辰", "ts": "仓库栖外东南" }, "d0121": { "y": "塑绘.开光.沐浴.冠笄.会亲友.作灶.放水.造畜椆栖.", "j": "嫁娶.入殓.安葬.出行.", "c": "生肖冲蛇", "s": "煞西", "ch": "开", "zc": "正冲正冲丁巳", "ts": "占房床外东南" }, "d0122": { "y": "祭祀.沐浴.祈福.斋醮.订盟.纳采.裁衣.拆卸.起基.竖柱.上梁.安床.入殓.除服.成服.移柩.启攒.挂匾.求嗣.出行.合帐.造畜椆栖.", "j": "开仓.嫁娶.移徙.入宅.", "c": "生肖冲马", "s": "煞南", "ch": "闭", "zc": "正冲正冲戊午", "ts": "占门碓外东南" }, "d0123": { "y": "祭祀.解除.余事勿取.", "j": "诸事不宜.", "c": "生肖冲羊", "s": "煞東", "ch": "建", "zc": "正冲正冲己未", "ts": "碓磨厕外东南" }, "d0124": { "y": "沐浴.解除.订盟.纳采.裁衣.冠笄.拆卸.修造.动土.移徙.入宅.除服.成服.移柩.破土.启攒.安葬.扫舍.修坟.伐木.纳财.交易.立券.", "j": "作灶.祭祀.上梁.出行.", "c": "生肖冲猴", "s": "煞北", "ch": "除", "zc": "正冲正冲庚申", "ts": "厨灶炉外正南" }, "d0125": { "y": "出行.嫁娶.订盟.纳采.入殓.安床.启攒.安葬.祭祀.裁衣.会亲友.进人口.", "j": "作灶.掘井.谢土.入宅.", "c": "生肖冲鸡", "s": "煞西", "ch": "满", "zc": "正冲正冲辛酉", "ts": "仓库门外正南" }, "d0126": { "y": "修饰垣墙.平治道涂.入殓.移柩.余事勿取.", "j": "嫁娶.移徙.入宅.开光.", "c": "生肖冲狗", "s": "煞南", "ch": "平", "zc": "正冲正冲壬戌", "ts": "房床栖外正南" }, "d0127": { "y": "会亲友.纳采.进人口.修造.动土.竖柱.上梁.祭祀.开光.塑绘.祈福.斋醮.嫁娶.安床.移徙.入宅.安香.纳畜.", "j": "出行.治病.安葬.开市.", "c": "生肖冲猪", "s": "煞东", "ch": "定", "zc": "正冲正冲癸亥", "ts": "占门床外正南" }, "d0128": { "y": "祭祀.会亲友.出行.订盟.纳采.沐浴.修造.动土.祈福.斋醮.嫁娶.拆卸.安床.入殓.移柩.安葬.谢土.赴任.裁衣.竖柱.上梁.伐木.捕捉.栽种.破土.安门.", "j": "造屋.开市.作灶.入宅.", "c": "生肖冲鼠", "s": "煞北", "ch": "执", "zc": "正冲正冲甲子", "ts": "占碓磨外正南" }, "d0129": { "y": "解除.破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲牛", "s": "煞西", "ch": "破", "zc": "正冲正冲乙丑", "ts": "厨灶厕外西南" }, "d0130": { "y": "塑绘.开光.出行.订盟.纳采.除服.成服.嫁娶.纳婿.入殓.移柩.启攒.安葬.立碑.", "j": "入宅.安床.", "c": "生肖冲虎", "s": "煞南", "ch": "危", "zc": "正冲正冲丙寅", "ts": "仓库炉外西南" }, "d0131": { "y": "入殓.除服.成服.移柩.启攒.安葬.立碑.余事勿取.", "j": "破土.伐木.", "c": "生肖冲兔", "s": "煞東", "ch": "成", "zc": "正冲正冲丁卯", "ts": "房床门外西南" }, "d0215": { "y": "祭祀.沐浴.开光.塑绘.祈福.求嗣.订盟.纳采.冠笄.裁衣.嫁娶.动土.除服.成服.移柩.破土.启攒.出行.安碓硙.放水.开市.立券.交易.", "j": "安葬.上梁.入宅.作灶.", "c": "生肖冲马", "s": "煞南", "ch": "开", "zc": "正冲正冲壬午", "ts": "房床碓外正北" }, "d0202": { "y": "祭祀.出行.沐浴.裁衣.祈福.斋醮.订盟.纳采.嫁娶.安机械.开市.立券.安碓硙.纳畜.", "j": "栽种.嫁娶.入殓.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "开", "zc": "正冲正冲己巳", "ts": "碓磨床外西南" }, "d0205": { "y": "纳采.会亲友.竖柱.上梁.立券.入殓.移柩.安葬.启攒.", "j": "祭祀.移徙.入宅.动土.破土.", "c": "生肖冲猴", "s": "煞北", "ch": "建", "zc": "正冲正冲壬申", "ts": "房床厕外正南" }, "d0225": { "y": "取渔.入殓.除服.成服.移柩.破土.安葬.立碑.", "j": "嫁娶.上梁.入宅.作灶.", "c": "生肖冲龙", "s": "煞北", "ch": "成", "zc": "正冲正冲壬辰", "ts": "房床栖房内南" }, "d0212": { "y": "祭祀.冠笄.嫁娶.拆卸.修造.动土.起基.上梁.造屋.入宅.开市.开池.塞穴.入殓.除服.成服.移柩.安葬.破土.", "j": "安床.栽种.治病.作灶.", "c": "生肖冲兔", "s": "煞東", "ch": "危", "zc": "正冲正冲己卯", "ts": "占门炉外西北" }, "d0315": { "y": "塑绘.开光.订盟.纳采.裁衣.合帐.冠笄.安机械.会亲友.纳财.开市.立券.交易.安床.竖柱.上梁.结网.栽种.解除.经络.", "j": "作灶.出行.入宅.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "满", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d0203": { "y": "祭祀.祈福.斋醮.沐浴.安床.安机械.造车器.入殓.移柩.启攒.安葬.立碑.合帐.经络.交易.", "j": "作灶.掘井.嫁娶.入宅.", "c": "生肖冲马", "s": "煞南", "ch": "闭", "zc": "正冲正冲庚午", "ts": "厨灶碓外西南" }, "d0204": { "y": "祭祀.祈福.求嗣.斋醮.入殓.除服.成服.移柩.安葬.启攒.", "j": "嫁娶.动土.开光.造屋.破土.", "c": "生肖冲羊", "s": "煞東", "ch": "闭", "zc": "正冲正冲辛未", "ts": "仓库厕外西南" }, "d0206": { "y": "祭祀.祈福.斋醮.出行.开市.立券.动土.移徙.入宅.破土.安葬.", "j": "开光.嫁娶.作灶.掘井.纳畜.", "c": "生肖冲鸡", "s": "煞西", "ch": "除", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d0207": { "y": "会亲友.求嗣.理发.冠笄.结网.捕捉.开光.理发.", "j": "开市.动土.安葬.破土.", "c": "生肖冲狗", "s": "煞南", "ch": "满", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d0208": { "y": "祭祀.平治道涂.余事勿取.", "j": "嫁娶.祈福.掘井.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "平", "zc": "正冲正冲乙亥", "ts": "厨灶床外正西" }, "d0209": { "y": "祈福.求嗣.斋醮.纳采.嫁娶.伐木.修造.动土.移徙.入宅.造庙.安机械.开市.入殓.除服.成服.移柩.安葬.破土.谢土.", "j": "置产.造屋.合脊.开光.探病.安门.作灶.", "c": "生肖冲鼠", "s": "煞北", "ch": "定", "zc": "正冲正冲丙子", "ts": "仓库碓外西北" }, "d0210": { "y": "入学.习艺.出行.纳采.订盟.嫁娶.会亲友.进人口.牧养.捕捉.入殓.移柩.安葬.启攒.", "j": "开光.开市.入宅.动土.造屋.", "c": "生肖冲牛", "s": "煞西", "ch": "执", "zc": "正冲正冲丁丑", "ts": "房床厕外西北" }, "d0211": { "y": "祭祀.沐浴.求医.治病.扫舍.破屋.坏垣.解除.余事勿取.", "j": "入宅.开市.安葬.", "c": "生肖冲虎", "s": "煞南", "ch": "破", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d0213": { "y": "祭祀.结网.入殓.除服.成服.移柩.安葬.破土.", "j": "余事勿取.", "c": "生肖冲龙", "s": "煞北", "ch": "成", "zc": "正冲正冲庚辰", "ts": "厨灶栖外西北" }, "d0214": { "y": "塑绘.开光.祈福.求嗣.订盟.纳采.裁衣.冠笄.拆卸.修造.动土.起基.安门.安床.移徙.造仓.结网.纳畜.", "j": "伐木.作灶.安葬.取渔.入宅.", "c": "生肖冲蛇", "s": "煞西", "ch": "收", "zc": "正冲正冲辛巳", "ts": "仓库床外西北" }, "d0216": { "y": "祭祀.祈福.求嗣.酬神.裁衣.安床.立券.交易.入殓.除服.成服.移柩.谢土.启攒.", "j": "出行.嫁娶.入宅.动土.", "c": "生肖冲羊", "s": "煞東", "ch": "闭", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d0217": { "y": "裁衣.合帐.入殓.除服.成服.会亲友.纳财.", "j": "祭祀.祈福.移徙.嫁娶.入宅.", "c": "生肖冲猴", "s": "煞北", "ch": "建", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d0218": { "y": "祭祀.斋醮.裁衣.合帐.冠笄.订盟.纳采.嫁娶.入宅.安香.谢土.入殓.移柩.破土.立碑.安香.会亲友.出行.祈福.求嗣.立碑.上梁.放水.", "j": "掘井.", "c": "生肖冲鸡", "s": "煞西", "ch": "除", "zc": "正冲正冲乙酉", "ts": "厨灶门外正北" }, "d0219": { "y": "安床.合帐.入宅.问名.纳采.求嗣.祭祀.开仓.", "j": "斋醮.作灶.安床.安葬.", "c": "生肖冲狗", "s": "煞南", "ch": "满", "zc": "正冲正冲丙戌", "ts": "仓库栖外正北" }, "d0220": { "y": "作灶.平治道涂.", "j": "祭祀.祈福.安葬.安门.余事勿取.", "c": "生肖冲猪", "s": "煞东", "ch": "平", "zc": "正冲正冲丁亥", "ts": "占房床房内北" }, "d0221": { "y": "塑绘.开光.酬神.斋醮.订盟.纳采.裁衣.合帐.拆卸.动土.上梁.安床.安香.造庙.挂匾.会亲友.进人口.出行.修造.纳财.伐木.放水.出火.纳畜.沐浴.安门.", "j": "造屋.栽种.安葬.作灶.", "c": "生肖冲鼠", "s": "煞北", "ch": "定", "zc": "正冲正冲戊子", "ts": "占门碓房内北" }, "d0222": { "y": "祭祀.祈福.酬神.订盟.纳采.冠笄.裁衣.合帐.嫁娶.安床.移徙.入宅.安香.入殓.移柩.启攒.安葬.解除.取渔.捕捉.伐木.安门.出火.", "j": "栽种.动土.开市.作灶.", "c": "生肖冲牛", "s": "煞西", "ch": "执", "zc": "正冲正冲己丑", "ts": "碓磨厕房内北" }, "d0223": { "y": "求医.破屋.", "j": "诸事不宜.", "c": "生肖冲虎", "s": "煞南", "ch": "破", "zc": "正冲正冲庚寅", "ts": "厨灶炉房内北" }, "d0224": { "y": "祈福.求嗣.斋醮.塑绘.开光.订盟.纳采.嫁娶.动土.入宅.安香.移柩.安葬.谢土.出行.沐浴.修造.竖柱.上梁.纳财.破土.解除.安门.放水.", "j": "作灶.安床.", "c": "生肖冲兔", "s": "煞東", "ch": "危", "zc": "正冲正冲辛卯", "ts": "仓库门房内北" }, "d0226": { "y": "祭祀.求嗣.沐浴.酬神.订盟.纳采.裁衣.合帐.冠笄.安机械.安床.造仓.开池.经络.纳财.开市.立券.交易.结网.取渔.纳畜.捕捉.", "j": "安葬.作灶.伐木.作梁.", "c": "生肖冲蛇", "s": "煞西", "ch": "收", "zc": "正冲正冲癸巳", "ts": "占门床房内南" }, "d0227": { "y": "祭祀.沐浴.祈福.求嗣.斋醮.订盟.纳采.裁衣.冠笄.开市.立券.交易.纳财.沐浴.除服.谢土.出行.移柩.", "j": "入殓.安葬.作灶.入宅.", "c": "生肖冲马", "s": "煞南", "ch": "开", "zc": "正冲正冲甲午", "ts": "占碓磨房内南" }, "d0228": { "y": "祭祀.祈福.求嗣.入殓.启攒.安葬.移柩.", "j": "开光.掘井.针灸.出行.嫁娶.入宅.移徙.作灶.动土.", "c": "生肖冲羊", "s": "煞東", "ch": "闭", "zc": "正冲正冲乙未", "ts": "厨灶厕房内南" }, "d0229": { "y": "安床.解除.裁衣.竖柱.上梁.交易.立券.纳财.纳畜.牧养.入殓.移柩.安葬.启攒.", "j": "嫁娶.出行.动土.开渠.入宅.祭祀.掘井.", "c": "生肖冲猴", "s": "煞北", "ch": "建", "zc": "正冲正冲丙申", "ts": "仓库炉房内南" }, "d0305": { "y": "嫁娶.造车器.纳采.订盟.祭祀.祈福.安机械.移徙.入宅.开市.立券.破土.安葬.", "j": "纳畜.理发.合寿木.", "c": "生肖冲牛", "s": "煞西", "ch": "定", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d0415": { "y": "祭祀.塑绘.开光.订盟.纳采.冠笄.裁衣.安机械.拆卸.修造.动土.安床.经络.开市.", "j": "出火.入宅.安葬.伐木.", "c": "生肖冲马", "s": "煞南", "ch": "成", "zc": "正冲正冲壬午", "ts": "房床碓外正北" }, "d0301": { "y": "嫁娶.安床.开光.出行.祭祀.动土.出火.解除.会亲友.开市.交易.立券.挂匾.入宅.移徙.拆卸.破土.启攒.安葬.", "j": "掘井.词讼.", "c": "生肖冲鸡", "s": "煞西", "ch": "除", "zc": "正冲正冲丁酉", "ts": "房床门房内南" }, "d0302": { "y": "嫁娶.开光.求嗣.会亲友.安床.牧养.塑绘.针灸.", "j": "入宅.移徙.出火.分居.安香.作灶.开市.交易.立券.安葬.动土.伐木.", "c": "生肖冲狗", "s": "煞南", "ch": "满", "zc": "正冲正冲戊戌", "ts": "门鸡栖房内东" }, "d0303": { "y": "作灶.解除.平治道涂.", "j": "栽种.出行.祈福.行丧.纳畜.安葬.安门.伐木.作梁.牧养.", "c": "生肖冲猪", "s": "煞東", "ch": "平", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d0304": { "y": "解除.沐浴.", "j": "诸事不宜.", "c": "生肖冲鼠", "s": "煞北", "ch": "定", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d0306": { "y": "祈福.斋醮.出行.移徙.入宅.修造.动土.破土.安葬.", "j": "纳采.开光.安床.嫁娶.开市.", "c": "生肖冲虎", "s": "煞南", "ch": "执", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" }, "d0307": { "y": "破屋.坏垣.余事勿取.", "j": "嫁娶.移徙.开市.入宅.", "c": "生肖冲兔", "s": "煞東", "ch": "破", "zc": "正冲正冲癸卯", "ts": "占大门外东北" }, "d0308": { "y": "嫁娶.冠笄.祭祀.出行.会亲友.修造.动土.入殓.破土.", "j": "塑绘.开光.造桥.除服.成服.", "c": "生肖冲龙", "s": "煞北", "ch": "危", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d0309": { "y": "开光.求嗣.出行.纳采.冠笄.出火.拆卸.起基.修造.动土.上梁.移徙.造船.开市.交易.立券.纳财.", "j": "祈福.嫁娶.安葬.破土.", "c": "生肖冲蛇", "s": "煞西", "ch": "成", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d0310": { "y": "理发.冠笄.嫁娶.进人口.栽种.捕捉.针灸.", "j": "纳财.开市.安葬.破土.", "c": "生肖冲马", "s": "煞南", "ch": "收", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d0311": { "y": "开光.祈福.求嗣.出行.解除.伐木.造屋.起基.修造.架马.安门.移徙.入宅.造庙.除服.成服.移柩.谢土.纳畜.牧养.", "j": "纳采.动土.开市.交易.安门.", "c": "生肖冲羊", "s": "煞東", "ch": "开", "zc": "正冲正冲丁未", "ts": "房床厕外东北" }, "d0312": { "y": "裁衣.经络.伐木.开柱眼.拆卸.修造.动土.上梁.合脊.合寿木.入殓.除服.成服.移柩.破土.安葬.启攒.修坟.立碑.", "j": "祭祀.嫁娶.出行.上梁.掘井.", "c": "生肖冲猴", "s": "煞北", "ch": "闭", "zc": "正冲正冲戊申", "ts": "占门炉外东北" }, "d0313": { "y": "祭祀.会亲友.立券.交易.裁衣.合帐.嫁娶.冠笄.进人口.", "j": "栽种.动土.安葬.掘井.修坟.探病.", "c": "生肖冲鸡", "s": "煞西", "ch": "建", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d0314": { "y": "扫舍.塞穴.余事勿取.", "j": "诸事不宜.", "c": "生肖冲狗", "s": "煞南", "ch": "除", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d0316": { "y": "祭祀.嫁娶.纳婿.除服.成服.入殓.移柩.", "j": "动土.作灶.入宅.开光.安床.", "c": "生肖冲鼠", "s": "煞北", "ch": "平", "zc": "正冲正冲壬子", "ts": "房床碓外正东" }, "d0317": { "y": "祈福.求嗣.开光.塑绘.斋醮.订盟.纳采.嫁娶.拆卸.安床.入宅.安香.移柩.修坟.安葬.谢土.栽种.解除.冠笄.裁衣.移徙.修造.动土.竖柱.放水.启攒.立碑.", "j": "赴任.", "c": "生肖冲牛", "s": "煞西", "ch": "定", "zc": "正冲正冲癸丑", "ts": "占门厕外正东" }, "d0318": { "y": "祭祀.解除.入殓.除服.成服.移柩.启攒.安葬.修坟.立碑.谢土.沐浴.扫舍.捕捉.取渔.结网.畋猎.理发.", "j": "安床.嫁娶.作灶.入宅.", "c": "生肖冲虎", "s": "煞南", "ch": "执", "zc": "正冲正冲甲寅", "ts": "碓磨炉外东南" }, "d0319": { "y": "破屋.坏垣.", "j": "诸事不宜.", "c": "生肖冲兔", "s": "煞東", "ch": "破", "zc": "正冲正冲乙卯", "ts": "厨灶门外东南" }, "d0320": { "y": "祭祀.出行.订盟.纳采.裁衣.合帐.冠笄.进人口.动土.安床.作灶.入殓.移柩.安葬.破土.结网.取渔.畋猎.", "j": "作梁.造庙.", "c": "生肖冲龙", "s": "煞北", "ch": "危", "zc": "正冲正冲丙辰", "ts": "仓库栖外东南" }, "d0321": { "y": "祭祀.开光.塑绘.订盟.纳采.合帐.冠笄.拆卸.动土.起基.上梁.入宅.安香.开市.立券.纳财.沐浴.求嗣.出火.竖柱.安门.", "j": "造庙.嫁娶.伐木.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "成", "zc": "正冲正冲丁巳", "ts": "占房床外东南" }, "d0322": { "y": "祭祀.沐浴.捕捉.栽种.", "j": "嫁娶.入宅.移徙.作灶.安葬.", "c": "生肖冲马", "s": "煞南", "ch": "收", "zc": "正冲正冲戊午", "ts": "占门碓外东南" }, "d0323": { "y": "祭祀.开光.塑绘.酬神.斋醮.订盟.纳采.嫁娶.裁衣.动土.起基.出火.拆卸.移徙.入宅.安香.修造.竖柱.上梁.纳畜.牧养.祈福.求嗣.解除.伐木.定磉.造屋.安门.", "j": "栽种.安葬.", "c": "生肖冲羊", "s": "煞東", "ch": "开", "zc": "正冲正冲己未", "ts": "碓磨厕外东南" }, "d0324": { "y": "订盟.纳采.冠笄.拆卸.修造.动土.安床.入殓.除服.成服.移柩.安葬.破土.启攒.造仓.", "j": "作灶.开光.嫁娶.开市.入宅.", "c": "生肖冲猴", "s": "煞北", "ch": "闭", "zc": "正冲正冲庚申", "ts": "厨灶炉外正南" }, "d0325": { "y": "祈福.开光.塑绘.酬神.订盟.纳采.裁衣.安床.开市.立券.入殓.除服.成服.移柩.启攒.安葬.立碑.赴任.会亲友.出行.交易.竖柱.", "j": "作灶.掘井.动土.栽种.", "c": "生肖冲鸡", "s": "煞西", "ch": "建", "zc": "正冲正冲辛酉", "ts": "仓库门外正南" }, "d0326": { "y": "祭祀.扫舍.塞穴.", "j": "栽种.作灶.安葬.嫁娶.", "c": "生肖冲狗", "s": "煞南", "ch": "除", "zc": "正冲正冲壬戌", "ts": "房床栖外正南" }, "d0327": { "y": "开光.塑绘.裁衣.冠笄.伐木.拆卸.竖柱.上梁.开仓.会亲友.安机械.造仓.造屋.交易.解除.开市.立券.纳财.", "j": "出行.嫁娶.入宅.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "满", "zc": "正冲正冲癸亥", "ts": "占门床外正南" }, "d0328": { "y": "冠笄.入殓.除服.成服.移柩.平治道涂.修饰垣墙.", "j": "造屋.作灶.治病.探病.", "c": "生肖冲鼠", "s": "煞北", "ch": "平", "zc": "正冲正冲甲子", "ts": "占碓磨外正南" }, "d0329": { "y": "祭祀.嫁娶.祈福.纳采.裁衣.合帐.安床.入宅.安香.入殓.移柩.安葬.谢土.修造.安碓硙.求嗣.会亲友.挂匾.交易.立券.纳财.造仓.放水.", "j": "栽种.伐木.", "c": "生肖冲牛", "s": "煞西", "ch": "定", "zc": "正冲正冲乙丑", "ts": "厨灶厕外西南" }, "d0330": { "y": "祭祀.祈福.斋醮.订盟.纳采.裁衣.合帐.拆卸.修造.动土.上梁.起基.移柩.安葬.谢土.沐浴.扫舍.开柱眼.伐木.出火.", "j": "安床.开市.立券.作灶.", "c": "生肖冲虎", "s": "煞南", "ch": "执", "zc": "正冲正冲丙寅", "ts": "仓库炉外西南" }, "d0331": { "y": "破屋.坏垣.求医.治病.", "j": "诸事不宜.", "c": "生肖冲兔", "s": "煞東", "ch": "破", "zc": "正冲正冲丁卯", "ts": "房床门外西南" }, "d0409": { "y": "求嗣.出行.解除.订盟.纳采.嫁娶.会亲友.进人口.安床.开市.交易.纳畜.牧养.入殓.除服.成服.移柩.安葬.启攒.", "j": "祈福.开市.修造.动土.破土.谢土.", "c": "生肖冲鼠", "s": "煞北", "ch": "满", "zc": "正冲正冲丙子", "ts": "仓库碓外西北" }, "d0419": { "y": "祭祀.进人口.嫁娶.安床.解除.冠笄.出行.裁衣.扫舍.", "j": "掘井.动土.破土.安葬.开光.", "c": "生肖冲狗", "s": "煞南", "ch": "建", "zc": "正冲正冲丙戌", "ts": "仓库栖外正北" }, "d0404": { "y": "祭祀.捕捉.解除.余事勿取.", "j": "嫁娶.安葬.", "c": "生肖冲羊", "s": "煞東", "ch": "收", "zc": "正冲正冲辛未", "ts": "仓库厕外西南" }, "d0509": { "y": "沐浴.扫舍.余事勿取.", "j": "斋醮.开市.嫁娶.作灶.", "c": "生肖冲马", "s": "煞南", "ch": "危", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d0401": { "y": "祭祀.动土.上梁.订盟.纳采.嫁娶.安机械.拆卸.安床.入宅.安香.入殓.移柩.破土.安葬.立碑.谢土.赴任.出行.移徙.祈福.求嗣.解除.造仓.进人口.", "j": "开光.出货财.", "c": "生肖冲龙", "s": "煞北", "ch": "危", "zc": "正冲正冲戊辰", "ts": "门鸡栖外西南" }, "d0402": { "y": "祭祀.开光.塑绘.纳采.裁衣.拆卸.安床.起基.动土.竖柱.上梁.移徙.入宅.安香.开市.立券.挂匾.沐浴.出行.求嗣.安门.", "j": "嫁娶.栽种.伐木.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "成", "zc": "正冲正冲己巳", "ts": "碓磨床外西南" }, "d0403": { "y": "裁衣.合帐.冠笄.嫁娶.纳婿.安床.入殓.纳财.", "j": "作灶.开市.安葬.作梁.", "c": "生肖冲马", "s": "煞南", "ch": "收", "zc": "正冲正冲庚午", "ts": "厨灶碓外西南" }, "d0405": { "y": "纳采.嫁娶.出行.开市.立券.纳畜.牧养.出火.移徙.入宅.", "j": "祈福.动土.破土.安葬.入殓.", "c": "生肖冲猴", "s": "煞北", "ch": "开", "zc": "正冲正冲壬申", "ts": "房床厕外正南" }, "d0406": { "y": "祭祀.祈福.求嗣.斋醮.冠笄.作灶.纳财.交易.", "j": "开光.嫁娶.掘井.安葬.安门.探病.", "c": "生肖冲鸡", "s": "煞西", "ch": "闭", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d0407": { "y": "祭祀.解除.教牛马.出行.余事勿取.", "j": "动土.破土.行丧.开光.作梁.安葬.探病.", "c": "生肖冲狗", "s": "煞南", "ch": "建", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d0408": { "y": "沐浴.斋醮.解除.求医.治病.会亲友.造畜椆栖.栽种.理发.扫舍.", "j": "开市.嫁娶.移徙.入宅.掘井.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "除", "zc": "正冲正冲乙亥", "ts": "厨灶床外正西" }, "d0410": { "y": "祭祀.作灶.平治道涂.余事勿取.", "j": "嫁娶.安葬.动土.安床.治病.", "c": "生肖冲牛", "s": "煞西", "ch": "平", "zc": "正冲正冲丁丑", "ts": "房床厕外西北" }, "d0411": { "y": "造车器.祭祀.祈福.求嗣.斋醮.开市.交易.安机械.雕刻.开光.造屋.合脊.起基.定磉.安门.纳畜.安葬.开生坟.立碑.谢土.斋醮.", "j": "入宅.动土.开仓.出货财.", "c": "生肖冲虎", "s": "煞南", "ch": "定", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d0412": { "y": "祭祀.祈福.开光.求嗣.斋醮.纳采.订盟.求医.治病.起基.定磉.造船.取渔.解除.安葬.启攒.谢土.入殓.", "j": "开市.动土.掘井.开池.", "c": "生肖冲兔", "s": "煞東", "ch": "执", "zc": "正冲正冲己卯", "ts": "占门炉外西北" }, "d0413": { "y": "祭祀.沐浴.破屋.坏垣.求医.治病.解除.余事勿取.", "j": "嫁娶.开市.交易.入宅.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "破", "zc": "正冲正冲庚辰", "ts": "厨灶栖外西北" }, "d0414": { "y": "诸事不宜.", "j": "诸事不宜.", "c": "生肖冲蛇", "s": "煞西", "ch": "危", "zc": "正冲正冲辛巳", "ts": "仓库床外西北" }, "d0416": { "y": "祭祀.余事勿取.", "j": "造庙.嫁娶.安床.余事勿取.", "c": "生肖冲羊", "s": "煞東", "ch": "收", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d0417": { "y": "订盟.纳采.嫁娶.进人口.会亲友.交易.立券.动土.除服.谢土.移柩.破土.启攒.赴任.出行.开市.纳财.栽种.", "j": "入殓.安葬.入宅.安床.", "c": "生肖冲猴", "s": "煞北", "ch": "开", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d0418": { "y": "祭祀.祈福.裁衣.合帐.安床.入殓.除服.成服.移柩.破土.启攒.安葬.谢土.立碑.造畜椆栖.", "j": "掘井.安门.嫁娶.纳采.", "c": "生肖冲鸡", "s": "煞西", "ch": "闭", "zc": "正冲正冲乙酉", "ts": "厨灶门外正北" }, "d0420": { "y": "纳采.开光.求医.治病.动土.上梁.移徙.入宅.", "j": "嫁娶.开市.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "除", "zc": "正冲正冲丁亥", "ts": "占房床房内北" }, "d0421": { "y": "祭祀.会亲友.开市.安床.启攒.安葬.", "j": "嫁娶.动土.破土.", "c": "生肖冲鼠", "s": "煞北", "ch": "满", "zc": "正冲正冲戊子", "ts": "占门碓房内北" }, "d0422": { "y": "祭祀.作灶.掘井.平治道涂.", "j": "嫁娶.安葬.", "c": "生肖冲牛", "s": "煞西", "ch": "平", "zc": "正冲正冲己丑", "ts": "碓磨厕房内北" }, "d0423": { "y": "祭祀.斋醮.开市.动土.入殓.破土.安葬.", "j": "嫁娶.移徙.入宅.", "c": "生肖冲虎", "s": "煞南", "ch": "定", "zc": "正冲正冲庚寅", "ts": "厨灶炉房内北" }, "d0424": { "y": "嫁娶.纳采.祭祀.祈福.出行.移徙.求医.", "j": "开市.动土.破土.", "c": "生肖冲兔", "s": "煞東", "ch": "执", "zc": "正冲正冲辛卯", "ts": "仓库门房内北" }, "d0425": { "y": "祭祀.求医.治病.解除.余事勿取.", "j": "诸事不宜.", "c": "生肖冲龙", "s": "煞北", "ch": "破", "zc": "正冲正冲壬辰", "ts": "房床栖房内南" }, "d0426": { "y": "沐浴.结网.取渔.", "j": "嫁娶.入宅.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "危", "zc": "正冲正冲癸巳", "ts": "占门床房内南" }, "d0427": { "y": "", "j": "诸事不宜.", "c": "生肖冲马", "s": "煞南", "ch": "成", "zc": "正冲正冲甲午", "ts": "占碓磨房内南" }, "d0428": { "y": "解除.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲羊", "s": "煞東", "ch": "收", "zc": "正冲正冲乙未", "ts": "厨灶厕房内南" }, "d0429": { "y": "嫁娶.开光.出行.出火.拆卸.进人口.开市.立券.交易.挂匾.入宅.移徙.安床.栽种.", "j": "祈福.入殓.祭祀.作灶.安葬.探病.", "c": "生肖冲猴", "s": "煞北", "ch": "开", "zc": "正冲正冲丙申", "ts": "仓库炉房内南" }, "d0430": { "y": "嫁娶.出行.合帐.冠笄.安床.除服.成服.作灶.交易.立券.入殓.移柩.破土.安葬.", "j": "词讼.开光.开市.", "c": "生肖冲鸡", "s": "煞西", "ch": "闭", "zc": "正冲正冲丁酉", "ts": "房床门房内南" }, "d0609": { "y": "嫁娶.订盟.纳采.冠笄.会亲友.安机械.造车器.祭祀.出行.纳财.入宅.安香.出火.入学.塑绘.开光.拆卸.起基.修造.动土.牧养.栽种.安门.作厕.", "j": "行丧.伐木.作梁.作灶.", "c": "生肖冲牛", "s": "煞西", "ch": "除", "zc": "正冲正冲丁丑", "ts": "房床厕外西北" }, "d0501": { "y": "出行.修饰垣墙.造畜椆栖.教牛马.余事勿取.", "j": "诸事不宜.", "c": "生肖冲狗", "s": "煞南", "ch": "建", "zc": "正冲正冲戊戌", "ts": "门鸡栖房内东" }, "d0502": { "y": "祭祀.祈福.开光.求嗣.解除.伐木.出火.入宅.移徙.安床.拆卸.修造.动土.造畜椆栖.", "j": "嫁娶.纳财.安葬.出行.开市.立券.作灶.栽种.", "c": "生肖冲猪", "s": "煞東", "ch": "除", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d0503": { "y": "纳采.嫁娶.开光.出行.理发.会亲友.开市.安床.栽种.牧养.入殓.移柩.启攒.", "j": "谢土.祈福.上梁.作灶.斋醮.修造.入宅.安门.", "c": "生肖冲鼠", "s": "煞北", "ch": "满", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d0504": { "y": "祭祀.平治道涂.解除.修饰垣墙.余事勿取.", "j": "诸事不宜.", "c": "生肖冲牛", "s": "煞西", "ch": "平", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d0505": { "y": "祭祀.沐浴.移徙.破土.安葬.扫舍.平治道涂.", "j": "祈福.嫁娶.入宅.安床.作灶.", "c": "生肖冲虎", "s": "煞南", "ch": "平", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" }, "d0506": { "y": "祭祀.祈福.斋醮.求嗣.安机械.纳畜.移徙.入宅.安机械.塑绘.开光.起基.竖柱.上梁.作灶.安门.安香.出火.造屋.启攒.安葬.", "j": "动土.破土.嫁娶.嫁娶.", "c": "生肖冲兔", "s": "煞東", "ch": "定", "zc": "正冲正冲癸卯", "ts": "占大门外东北" }, "d0507": { "y": "嫁娶.纳采.订盟.斋醮.开光.祭祀.祈福.求医.治病.会亲友.动土.解除.捕捉.纳畜.牧养.入殓.破土.安葬.", "j": "移徙.入宅.造屋.架马.", "c": "生肖冲龙", "s": "煞北", "ch": "执", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d0508": { "y": "祭祀.沐浴.解除.破屋.坏垣.余事勿取.", "j": "行丧.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "破", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d0510": { "y": "开市.交易.立券.安机械.会亲友.开光.求医.治病.造屋.起基.修造.动土.定磉.竖柱.上梁.安门.作灶.放水.作厕.开池.栽种.牧养.造畜椆栖.破土.安葬.立碑.", "j": "嫁娶.出火.移徙.入宅.", "c": "生肖冲羊", "s": "煞東", "ch": "成", "zc": "正冲正冲丁未", "ts": "房床厕外东北" }, "d0511": { "y": "栽种.捕捉.畋猎.余事勿取.", "j": "开市.动土.祭祀.斋醮.安葬.探病.", "c": "生肖冲猴", "s": "煞北", "ch": "收", "zc": "正冲正冲戊申", "ts": "占门炉外东北" }, "d0512": { "y": "嫁娶.祭祀.祈福.求嗣.斋醮.订盟.纳采.解除.出行.动土.破土.习艺.针灸.理发.会亲友.起基.修造.动土.竖柱.定磉.安床.拆卸.纳畜.牧养.放水.破土.除服.成服.修坟.立碑.", "j": "开市.入宅.探病.出火.造屋.", "c": "生肖冲鸡", "s": "煞西", "ch": "开", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d0513": { "y": "余事勿取.", "j": "余事勿取.", "c": "生肖冲狗", "s": "煞南", "ch": "闭", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d0514": { "y": "塞穴.断蚁.结网.余事勿取.", "j": "破土.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "建", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d0515": { "y": "开光.出行.纳采.嫁娶.伐木.架马.出火.拆卸.移徙.入宅.造庙.造桥.造船.造畜椆栖.开市.入殓.除服.成服.移柩.安葬.", "j": "", "c": "生肖冲鼠", "s": "煞北", "ch": "除", "zc": "正冲正冲壬子", "ts": "房床碓外正东" }, "d0516": { "y": "进人口.牧养.置产.塞穴.结网.余事勿取.", "j": "诸事不宜.", "c": "生肖冲牛", "s": "煞西", "ch": "满", "zc": "正冲正冲癸丑", "ts": "占门厕外正东" }, "d0517": { "y": "开光.出行.嫁娶.", "j": "会亲友.进人口.修造.动土.起基.移徙.开市.纳畜.入殓.除服.成服.移柩.破土.安葬.修坟.立碑.会亲友.", "c": "生肖冲虎", "s": "煞南", "ch": "平", "zc": "正冲正冲甲寅", "ts": "碓磨炉外东南" }, "d0518": { "y": "嫁娶.纳采.出行.祭祀.祈福.开市.动土.移徙.入宅.破土.安葬.", "j": "安门.", "c": "生肖冲兔", "s": "煞東", "ch": "定", "zc": "正冲正冲乙卯", "ts": "厨灶门外东南" }, "d0519": { "y": "嫁娶.纳采.求医.治病.修造.动土.移徙.入宅.破土.安葬.", "j": "开市.开光.", "c": "生肖冲龙", "s": "煞北", "ch": "执", "zc": "正冲正冲丙辰", "ts": "仓库栖外东南" }, "d0520": { "y": "祭祀.破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲蛇", "s": "煞西", "ch": "破", "zc": "正冲正冲丁巳", "ts": "占房床外东南" }, "d0521": { "y": "嫁娶.纳采.祭祀.祈福.出行.动土.上梁.移徙.入宅.破土.安葬.", "j": "祈福.斋醮.", "c": "生肖冲马", "s": "煞南", "ch": "危", "zc": "正冲正冲戊午", "ts": "占门碓外东南" }, "d0522": { "y": "纳采.祭祀.祈福.开市.求医.治病.动土.纳畜.", "j": "嫁娶.安葬.", "c": "生肖冲羊", "s": "煞東", "ch": "成", "zc": "正冲正冲己未", "ts": "碓磨厕外东南" }, "d0523": { "y": "嫁娶.纳采.出行.移徙.入宅.", "j": "动土.破土.安葬.", "c": "生肖冲猴", "s": "煞北", "ch": "收", "zc": "正冲正冲庚申", "ts": "厨灶炉外正南" }, "d0524": { "y": "订盟.纳采.祭祀.动土.破土.交易.立券.", "j": "嫁娶.安葬.", "c": "生肖冲鸡", "s": "煞西", "ch": "开", "zc": "正冲正冲辛酉", "ts": "仓库门外正南" }, "d0525": { "y": "嫁娶.裁衣.祭祀.出行.安床.作灶.移徙.入宅.破土.安葬.", "j": "赴任.捕捉.", "c": "生肖冲狗", "s": "煞南", "ch": "闭", "zc": "正冲正冲壬戌", "ts": "房床栖外正南" }, "d0526": { "y": "塞穴.结网.余事勿取.", "j": "诸事不宜.", "c": "生肖冲猪", "s": "煞東", "ch": "建", "zc": "正冲正冲癸亥", "ts": "占门床外正南" }, "d0527": { "y": "嫁娶.订盟.纳采.出行.祭祀.祈福.斋醮.动土.上梁.破土.安葬.", "j": "移徙.入宅.", "c": "生肖冲鼠", "s": "煞北", "ch": "除", "zc": "正冲正冲甲子", "ts": "占碓磨外正南" }, "d0528": { "y": "订盟.纳采.会亲友.安床.作灶.造畜椆栖.", "j": "开市.安葬.", "c": "生肖冲牛", "s": "煞西", "ch": "满", "zc": "正冲正冲乙丑", "ts": "厨灶厕外西南" }, "d0529": { "y": "沐浴.平治道涂.扫舍.入殓.移柩.破土.启攒.安葬.余事勿取.", "j": "诸事不宜.", "c": "生肖冲虎", "s": "煞南", "ch": "平", "zc": "正冲正冲丙寅", "ts": "仓库炉外西南" }, "d0530": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出行.出火.拆卸.动土.上梁.进人口.入宅.移徙.安床.安门.开市.交易.立券.挂匾.栽种.破土.安葬.", "j": "", "c": "生肖冲兔", "s": "煞東", "ch": "定", "zc": "正冲正冲丁卯", "ts": "房床门外西南" }, "d0531": { "y": "祭祀.开光.出行.解除.塑绘.裁衣.入殓.移柩.破土.启攒.安葬.除服.成服.", "j": "嫁娶.上梁.修造.拆卸.架马.入宅.伐木.动土.出火.开柱眼.", "c": "生肖冲龙", "s": "煞北", "ch": "执", "zc": "正冲正冲戊辰", "ts": "门鸡栖外西南" }, "d0606": { "y": "祭祀.祈福.求嗣.斋醮.安香.解除.移徙.入宅.会亲友.求医.治病.动土.破土.开生坟.合寿木.", "j": "合帐.上梁.经络.安葬.入殓.", "c": "生肖冲狗", "s": "煞南", "ch": "开", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d0603": { "y": "开市.交易.立券.祭祀.祈福.开光.伐木.进人口.安床.拆卸.修造.动土.栽种.破土.移柩.安葬.", "j": "入宅.移徙.理发.出火.嫁娶.出行.", "c": "生肖冲羊", "s": "煞東", "ch": "成", "zc": "正冲正冲辛未", "ts": "仓库厕外西南" }, "d0608": { "y": "祭祀.交易.纳财.", "j": "斋醮.开渠.上梁.动土.破土.", "c": "生肖冲鼠", "s": "煞北", "ch": "建", "zc": "正冲正冲丙子", "ts": "仓库碓外西北" }, "d0706": { "y": "祭祀.修饰垣墙.平治道涂.", "j": "开市.动土.破土.嫁娶.修造.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "平", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d0601": { "y": "祭祀.解除.破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲蛇", "s": "煞西", "ch": "破", "zc": "正冲正冲己巳", "ts": "碓磨床外西南" }, "d0602": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出行.拆卸.动土.上梁.出火.进人口.入宅.移徙.安床.栽种.纳畜.牧养.竖柱.安门.修造.解除.会亲友.", "j": "", "c": "生肖冲马", "s": "煞南", "ch": "危", "zc": "正冲正冲庚午", "ts": "厨灶碓外西南" }, "d0604": { "y": "结网.解除.余事勿取.", "j": "诸事不宜.", "c": "生肖冲猴", "s": "煞北", "ch": "收", "zc": "正冲正冲壬申", "ts": "房床厕外正南" }, "d0605": { "y": "祭祀.作灶.余事勿取.", "j": "开市.安葬.破土.修坟.掘井.", "c": "生肖冲鸡", "s": "煞西", "ch": "收", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d0607": { "y": "嫁娶.冠笄.修造.动土.作灶.移徙.入宅.补垣.塞穴.纳畜.牧养.架马.修造.动土.起基.定磉.开池.造船.", "j": "祈福.开光.掘井.开市.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "闭", "zc": "正冲正冲乙亥", "ts": "厨灶床外正西" }, "d0610": { "y": "开光.求嗣.出行.冠笄.嫁娶.伐木.架马.开柱眼.修造.移徙.入宅.开市.交易.立券.出行.安香.出火.挂匾.起基.修造.开生坟.合寿木.入殓.除服.成服.移柩.安葬.", "j": "安床.出货财.作灶.动土.破土.", "c": "生肖冲虎", "s": "煞南", "ch": "满", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d0611": { "y": "祭祀.沐浴.理发.嫁娶.作灶.整手足甲.扫舍.修饰垣墙.平治道涂.", "j": "斋醮.出行.治病.合寿木.", "c": "生肖冲兔", "s": "煞東", "ch": "平", "zc": "正冲正冲己卯", "ts": "占门炉外西北" }, "d0612": { "y": "安机械.移徙.入宅.出行.祭祀.祈福.斋醮.纳采.订盟.安香.出火.解除.会亲友.修造.动土.拆卸.起基.定磉.移徙.入宅.造屋.安床.修造.破土.安葬.入殓.立碑.", "j": "开市.伐木.作梁.作灶.", "c": "生肖冲龙", "s": "煞北", "ch": "定", "zc": "正冲正冲庚辰", "ts": "厨灶栖外西北" }, "d0613": { "y": "祭祀.沐浴.捕捉.结网.畋猎.取渔.余事勿取.", "j": "开市.交易.嫁娶.安葬.行丧.", "c": "生肖冲蛇", "s": "煞西", "ch": "执", "zc": "正冲正冲辛巳", "ts": "仓库床外西北" }, "d0614": { "y": "破屋.坏垣.求医.治病.畋猎.余事勿取.", "j": "嫁娶.入宅.", "c": "生肖冲马", "s": "煞南", "ch": "破", "zc": "正冲正冲壬午", "ts": "房床碓外正北" }, "d0615": { "y": "嫁娶.出行.安机械.祭祀.塑绘.开光.治病.经络.安床.结网.塞穴.破土.入殓.", "j": "开市.安门.掘井.作灶.", "c": "生肖冲羊", "s": "煞東", "ch": "危", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d0616": { "y": "订盟.纳采.会亲友.进人口.雕刻.拆卸.修造.动土.起基.开市.栽种.纳畜.牧养.入殓.除服.成服.移柩.破土.安葬.", "j": "", "c": "生肖冲猴", "s": "煞北", "ch": "成", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d0617": { "y": "祭祀.捕捉.取渔.修饰垣墙.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鸡", "s": "煞西", "ch": "收", "zc": "正冲正冲乙酉", "ts": "厨灶门外正北" }, "d0618": { "y": "嫁娶.纳采.祭祀.祈福.求医.治病.出行.动土.移徙.入宅.", "j": "开市.安门.", "c": "生肖冲狗", "s": "煞南", "ch": "开", "zc": "正冲正冲丙戌", "ts": "仓库栖外正北" }, "d0619": { "y": "裁衣.作灶.移徙.入宅.纳畜.", "j": "嫁娶.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "闭", "zc": "正冲正冲丁亥", "ts": "占房床房内北" }, "d0620": { "y": "祭祀.入殓.移柩.启攒.安葬.", "j": "上梁.动土.破土.", "c": "生肖冲鼠", "s": "煞北", "ch": "建", "zc": "正冲正冲戊子", "ts": "占门碓房内北" }, "d0621": { "y": "订盟.纳采.出行.祈福.斋醮.安床.会亲友.", "j": "移徙.入宅.安葬.", "c": "生肖冲牛", "s": "煞西", "ch": "除", "zc": "正冲正冲己丑", "ts": "碓磨厕房内北" }, "d0622": { "y": "嫁娶.纳采.出行.求医.治病.开市.移徙.入宅.启攒.安葬.", "j": "动土.破土.", "c": "生肖冲虎", "s": "煞南", "ch": "满", "zc": "正冲正冲庚寅", "ts": "厨灶炉房内北" }, "d0623": { "y": "嫁娶.祭祀.沐浴.扫舍.修饰垣墙.", "j": "行丧.安葬.", "c": "生肖冲兔", "s": "煞東", "ch": "平", "zc": "正冲正冲辛卯", "ts": "仓库门房内北" }, "d0624": { "y": "嫁娶.订盟.纳采.出行.开市.祭祀.祈福.动土.移徙.入宅.破土.安葬.", "j": "作灶.", "c": "生肖冲龙", "s": "煞北", "ch": "定", "zc": "正冲正冲壬辰", "ts": "房床栖房内南" }, "d0625": { "y": "订盟.纳采.出行.祭祀.祈福.修造.动土.移徙.入宅.", "j": "开市.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "执", "zc": "正冲正冲癸巳", "ts": "占门床房内南" }, "d0626": { "y": "诸事不宜.", "j": "诸事不宜.", "c": "生肖冲马", "s": "煞南", "ch": "破", "zc": "正冲正冲甲午", "ts": "占碓磨房内南" }, "d0627": { "y": "嫁娶.订盟.纳采.祭祀.祈福.入殓.破土.安葬.", "j": "开光.开市.", "c": "生肖冲羊", "s": "煞東", "ch": "危", "zc": "正冲正冲乙未", "ts": "厨灶厕房内南" }, "d0628": { "y": "开光.求医.治病.动土.上梁.入殓.破土.安葬.", "j": "嫁娶.开光.", "c": "生肖冲猴", "s": "煞北", "ch": "成", "zc": "正冲正冲丙申", "ts": "仓库炉房内南" }, "d0629": { "y": "祭祀.栽种.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鸡", "s": "煞西", "ch": "收", "zc": "正冲正冲丁酉", "ts": "房床门房内南" }, "d0630": { "y": "嫁娶.开光.祭祀.祈福.求嗣.出行.解除.伐木.入宅.移徙.安床.出火.拆卸.修造.上梁.栽种.移柩.", "j": "安葬.开市.交易.立券.", "c": "生肖冲狗", "s": "煞南", "ch": "开", "zc": "正冲正冲戊戌", "ts": "门鸡栖房内东" }, "d0709": { "y": "求医.治病.破屋.坏垣.余事勿取.", "j": "嫁娶.出行.", "c": "生肖冲羊", "s": "煞東", "ch": "破", "zc": "正冲正冲丁未", "ts": "房床厕外东北" }, "d0809": { "y": "嫁娶.冠笄.祭祀.沐浴.普渡.出行.纳财.扫舍.纳畜.赴任.", "j": "开市.动土.破土.安床.开仓.上梁.", "c": "生肖冲虎", "s": "煞南", "ch": "建", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d0701": { "y": "求嗣.嫁娶.纳采.合帐.裁衣.冠笄.伐木.作梁.修造.动土.起基.竖柱.上梁.安门.作灶.筑堤.造畜椆栖.", "j": "安葬.出行.祈福.栽种.", "c": "生肖冲猪", "s": "煞東", "ch": "闭", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d0702": { "y": "祭祀.解除.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鼠", "s": "煞北", "ch": "建", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d0703": { "y": "嫁娶.祭祀.祈福.出火.开光.求嗣.出行.拆卸.开市.交易.立券.挂匾.入宅.移徙.安床.栽种.动土.", "j": "安葬.行丧.伐木.作梁.", "c": "生肖冲牛", "s": "煞西", "ch": "除", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d0704": { "y": "开光.求嗣.出行.解除.伐木.出火.拆卸.修造.上梁.起基.入宅.移徙.开市.交易.立券.栽种.牧养.入殓.安葬.除服.成服.", "j": "置产.安床.", "c": "生肖冲虎", "s": "煞南", "ch": "满", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" }, "d0705": { "y": "祭祀.理发.修饰垣墙.平治道涂.沐浴.整手足甲.扫舍.", "j": "出行.安门.修造.嫁娶.上梁.入宅.", "c": "生肖冲兔", "s": "煞東", "ch": "平", "zc": "正冲正冲癸卯", "ts": "占大门外东北" }, "d0707": { "y": "订盟.纳采.祭祀.祈福.开光.安香.出火.立券.安机械.移徙.入宅.竖柱.上梁.会亲友.安床.拆卸.挂匾.牧养.教牛马.", "j": "嫁娶.安葬.行丧.破土.修坟.", "c": "生肖冲蛇", "s": "煞西", "ch": "定", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d0708": { "y": "沐浴.理发.捕捉.入殓.移柩.破土.启攒.安葬.", "j": "出火.嫁娶.入宅.作灶.破土.上梁.动土.", "c": "生肖冲马", "s": "煞南", "ch": "执", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d0710": { "y": "纳采.订盟.嫁娶.移徙.入宅.出行.开市.交易.立券.纳财.会亲友.安香.出火.拆卸.造屋.起基.安床.作灶.挂匾.安葬.破土.启攒.立碑.入殓.移柩.", "j": "祈福.上梁.开仓.掘井.牧养.", "c": "生肖冲猴", "s": "煞北", "ch": "危", "zc": "正冲正冲戊申", "ts": "占门炉外东北" }, "d0711": { "y": "祭祀.祈福.斋醮.出行.纳采.订盟.安机械.出火.拆卸.修造.动土.起基.移徙.入宅.造庙.入殓.除服.成服.移柩.破土.安葬.谢土.", "j": "嫁娶.开市.栽种.合寿木.", "c": "生肖冲鸡", "s": "煞西", "ch": "成", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d0712": { "y": "祭祀.进人口.纳财.纳畜.牧养.捕捉.余事勿取.", "j": "开市.入宅.安床.动土.安葬.", "c": "生肖冲狗", "s": "煞南", "ch": "收", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d0713": { "y": "祭祀.塑绘.开光.求医.治病.嫁娶.会亲友.放水.掘井.牧养.纳畜.开渠.安碓硙.", "j": "造屋.入宅.作灶.入学.安葬.行丧.", "c": "生肖冲猪", "s": "煞東", "ch": "开", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d0714": { "y": "祭祀.塞穴.结网.畋猎.余事勿取.", "j": "移徙.开市.入宅.嫁娶.开光.安门.", "c": "生肖冲鼠", "s": "煞北", "ch": "闭", "zc": "正冲正冲壬子", "ts": "房床碓外正东" }, "d0715": { "y": "开市.纳财.祭祀.塑绘.安机械.冠笄.会亲友.裁衣.开仓.经络.纳畜.造畜椆栖.教牛马.牧养.", "j": "动土.破土.安葬.治病.", "c": "生肖冲牛", "s": "煞西", "ch": "建", "zc": "正冲正冲癸丑", "ts": "占门厕外正东" }, "d0716": { "y": "移徙.入宅.治病.会亲友.祭祀.祈福.斋醮.安香.移徙.嫁娶.造屋.起基.", "j": "开市.斋醮.安床.出行.经络.", "c": "生肖冲虎", "s": "煞南", "ch": "除", "zc": "正冲正冲甲寅", "ts": "碓磨炉外东南" }, "d0717": { "y": "塑绘.出行.冠笄.嫁娶.进人口.裁衣.纳婿.造畜椆栖.交易.立券.牧养.开生坟.入殓.除服.成服.移柩.安葬.启攒.", "j": "", "c": "生肖冲兔", "s": "煞東", "ch": "满", "zc": "正冲正冲乙卯", "ts": "厨灶门外东南" }, "d0718": { "y": "祭祀.冠笄.嫁娶.捕捉.结网.畋猎.取渔.余事勿取.", "j": "余事勿取.", "c": "生肖冲龙", "s": "煞北", "ch": "平", "zc": "正冲正冲丙辰", "ts": "仓库栖外东南" }, "d0719": { "y": "沐浴.扫舍.余事勿取.", "j": "诸事不宜.", "c": "生肖冲蛇", "s": "煞西", "ch": "定", "zc": "正冲正冲丁巳", "ts": "占房床外东南" }, "d0720": { "y": "纳采.祭祀.祈福.解除.动土.破土.安葬.", "j": "嫁娶.移徙.入宅.", "c": "生肖冲马", "s": "煞南", "ch": "执", "zc": "正冲正冲戊午", "ts": "占门碓外东南" }, "d0721": { "y": "祭祀.破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲羊", "s": "煞東", "ch": "破", "zc": "正冲正冲己未", "ts": "碓磨厕外东南" }, "d0722": { "y": "嫁娶.纳采.开市.出行.动土.上梁.移徙.入宅.破土.安葬.", "j": "祭祀.祈福.", "c": "生肖冲猴", "s": "煞北", "ch": "危", "zc": "正冲正冲庚申", "ts": "厨灶炉外正南" }, "d0723": { "y": "嫁娶.纳采.开市.出行.动土.上梁.移徙.入宅.破土.安葬.", "j": "赴任.", "c": "生肖冲鸡", "s": "煞西", "ch": "成", "zc": "正冲正冲辛酉", "ts": "仓库门外正南" }, "d0724": { "y": "祭祀.作灶.纳财.捕捉.", "j": "开市.破土.", "c": "生肖冲狗", "s": "煞南", "ch": "收", "zc": "正冲正冲壬戌", "ts": "房床栖外正南" }, "d0725": { "y": "嫁娶.开市.立券.祭祀.祈福.动土.移徙.入宅.", "j": "造庙.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "开", "zc": "正冲正冲癸亥", "ts": "占门床外正南" }, "d0726": { "y": "补垣.塞穴.结网.入殓.除服.成服.移柩.安葬.启攒.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鼠", "s": "煞北", "ch": "闭", "zc": "正冲正冲甲子", "ts": "占碓磨外正南" }, "d0727": { "y": "嫁娶.纳采.出行.祭祀.祈福.解除.移徙.入宅.", "j": "动土.安葬.", "c": "生肖冲牛", "s": "煞西", "ch": "建", "zc": "正冲正冲乙丑", "ts": "厨灶厕外西南" }, "d0728": { "y": "嫁娶.祭祀.祈福.斋醮.治病.破土.安葬.", "j": "开市.入宅.", "c": "生肖冲虎", "s": "煞南", "ch": "除", "zc": "正冲正冲丙寅", "ts": "仓库炉外西南" }, "d0729": { "y": "嫁娶.出行.开市.安床.入殓.启攒.安葬.", "j": "祈福.动土.破土.", "c": "生肖冲兔", "s": "煞東", "ch": "满", "zc": "正冲正冲丁卯", "ts": "房床门外西南" }, "d0730": { "y": "嫁娶.祭祀.裁衣.结网.冠笄.沐浴.", "j": "开仓.出货财.置产.安葬.动土.破土.掘井.栽种.", "c": "生肖冲龙", "s": "煞北", "ch": "平", "zc": "正冲正冲戊辰", "ts": "门鸡栖外西南" }, "d0731": { "y": "入宅.移徙.安床.开光.祈福.求嗣.进人口.开市.交易.立券.出火.拆卸.修造.动土.", "j": "嫁娶.破土.置产.栽种.安葬.修坟.行丧.", "c": "生肖冲蛇", "s": "煞西", "ch": "定", "zc": "正冲正冲己巳", "ts": "碓磨床外西南" }, "d0818": { "y": "塑绘.开光.解除.订盟.纳采.嫁娶.出火.修造.动土.移徙.入宅.拆卸.起基.安门.分居.开市.交易.立券.纳财.纳畜.牧养.", "j": "", "c": "生肖冲猪", "s": "煞東", "ch": "收", "zc": "正冲正冲丁亥", "ts": "占房床房内北" }, "d0808": { "y": "嫁娶.普渡.祭祀.祈福.补垣.塞穴.断蚁.筑堤.入殓.除服.成服.安葬.", "j": "动土.破土.掘井.开光.上梁.词讼.", "c": "生肖冲牛", "s": "煞西", "ch": "闭", "zc": "正冲正冲丁丑", "ts": "房床厕外西北" }, "d0804": { "y": "嫁娶.开光.出行.祈福.求嗣.解除.拆卸.动土.修造.进人口.开市.交易.立券.挂匾.入宅.移徙.安床.栽种.纳畜.入殓.移柩.安葬.", "j": "", "c": "生肖冲鸡", "s": "煞西", "ch": "成", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d0814": { "y": "祭祀.捕捉.畋猎.纳畜.牧养.入殓.除服.成服.移柩.破土.安葬.启攒.", "j": "嫁娶.纳采.订盟.开市.入宅.", "c": "生肖冲羊", "s": "煞東", "ch": "执", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d0803": { "y": "嫁娶.开光.出行.理发.作梁.出火.拆卸.修造.开市.交易.立券.挂匾.动土.入宅.移徙.安床.栽种.", "j": "伐木.祭祀.纳畜.祭祀.", "c": "生肖冲猴", "s": "煞北", "ch": "危", "zc": "正冲正冲壬申", "ts": "房床厕外正南" }, "d0802": { "y": "破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲羊", "s": "煞東", "ch": "破", "zc": "正冲正冲辛未", "ts": "仓库厕外西南" }, "d0819": { "y": "祈福.出行.订盟.纳采.嫁娶.裁衣.动土.安床.放水.开市.掘井.交易.立券.栽种.开渠.除服.成服.移柩.破土.", "j": "", "c": "生肖冲鼠", "s": "煞北", "ch": "开", "zc": "正冲正冲戊子", "ts": "占门碓房内北" }, "d0909": { "y": "余事勿取.", "j": "探病.", "c": "生肖冲鸡", "s": "煞西", "ch": "破", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d0801": { "y": "祭祀.解除.沐浴.整手足甲.入殓.移柩.破土.启攒.安葬.", "j": "嫁娶.入宅.移徙.作灶.开市.交易.安门.栽种.", "c": "生肖冲马", "s": "煞南", "ch": "执", "zc": "正冲正冲庚午", "ts": "厨灶碓外西南" }, "d0805": { "y": "祭祀.作灶.纳财.栽种.纳畜.进人口.", "j": "安葬.经络.修坟.破土.开市.安床.启攒.立碑.", "c": "生肖冲狗", "s": "煞南", "ch": "收", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d0806": { "y": "祭祀.祈福.求嗣.开光.开市.牧养.理发.", "j": "嫁娶.出行.安葬.入殓.入宅.作灶.冠笄.上梁.", "c": "生肖冲猪", "s": "煞東", "ch": "开", "zc": "正冲正冲乙亥", "ts": "厨灶床外正西" }, "d0807": { "y": "嫁娶.订盟.纳采.祭祀.斋醮.普渡.解除.出行.会亲友.开市.纳财.修造.动土.竖柱.上梁.开光.开仓.出货财.纳畜.牧养.开池.破土.启攒.", "j": "出火.入宅.造屋.安门.安葬.", "c": "生肖冲鼠", "s": "煞北", "ch": "开", "zc": "正冲正冲丙子", "ts": "仓库碓外西北" }, "d0810": { "y": "祭祀.沐浴.理发.整手足甲.冠笄.解除.入殓.移柩.破土.启攒.安葬.", "j": "嫁娶.出行.入宅.开市.安门.", "c": "生肖冲兔", "s": "煞東", "ch": "除", "zc": "正冲正冲己卯", "ts": "占门炉外西北" }, "d0811": { "y": "塑绘.冠笄.嫁娶.会亲友.进人口.经络.裁衣.栽种.纳畜.牧养.补垣.塞穴.捕捉.", "j": "祈福.开市.动土.行丧.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "满", "zc": "正冲正冲庚辰", "ts": "厨灶栖外西北" }, "d0812": { "y": "出行.沐浴.订盟.纳采.裁衣.竖柱.上梁.移徙.纳畜.牧养.", "j": "嫁娶.安门.动土.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "平", "zc": "正冲正冲辛巳", "ts": "仓库床外西北" }, "d0813": { "y": "纳采.订盟.嫁娶.祭祀.祈福.普渡.开光.安香.出火.移徙.入宅.竖柱.修造.动土.竖柱.上梁.起基.造屋.安门.造庙.造桥.破土.启攒.安葬.", "j": "开市.立券.纳财.作灶.", "c": "生肖冲马", "s": "煞南", "ch": "定", "zc": "正冲正冲壬午", "ts": "房床碓外正北" }, "d0815": { "y": "破屋.坏垣.治病.余事勿取.", "j": "行丧.安葬.", "c": "生肖冲猴", "s": "煞北", "ch": "破", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d0816": { "y": "祈福.斋醮.出行.冠笄.嫁娶.雕刻.开柱眼.入宅.造桥.开市.交易.立券.纳财.入殓.除服.成服.移柩.破土.安葬.启攒.", "j": "动土.破土.订盟.安床.开池.", "c": "生肖冲鸡", "s": "煞西", "ch": "危", "zc": "正冲正冲乙酉", "ts": "厨灶门外正北" }, "d0817": { "y": "祈福.求嗣.解除.订盟.纳采.动土.起基.放水.造仓.开市.纳畜.牧养.开生坟.入殓.除服.成服.移柩.破土.安葬.", "j": "", "c": "生肖冲狗", "s": "煞南", "ch": "成", "zc": "正冲正冲丙戌", "ts": "仓库栖外正北" }, "d0820": { "y": "嫁娶.祭祀.祈福.斋醮.作灶.移徙.入宅.", "j": "动土.破土.", "c": "生肖冲牛", "s": "煞西", "ch": "闭", "zc": "正冲正冲己丑", "ts": "碓磨厕房内北" }, "d0821": { "y": "嫁娶.出行.纳畜.祭祀.入殓.启攒.安葬.", "j": "作灶.动土.破土.", "c": "生肖冲虎", "s": "煞南", "ch": "建", "zc": "正冲正冲庚寅", "ts": "厨灶炉房内北" }, "d0822": { "y": "订盟.纳采.祭祀.祈福.修造.动土.上梁.破土.安葬.", "j": "嫁娶.开市.", "c": "生肖冲兔", "s": "煞東", "ch": "除", "zc": "正冲正冲辛卯", "ts": "仓库门房内北" }, "d0823": { "y": "订盟.纳采.出行.会亲友.修造.上梁.移徙.入宅.", "j": "开市.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "满", "zc": "正冲正冲壬辰", "ts": "房床栖房内南" }, "d0824": { "y": "沐浴.修饰垣墙.平治道涂.余事勿取.", "j": "嫁娶.祈福.余事勿取.", "c": "生肖冲蛇", "s": "煞西", "ch": "平", "zc": "正冲正冲癸巳", "ts": "占门床房内南" }, "d0825": { "y": "嫁娶.祭祀.祈福.斋醮.动土.移徙.入宅.", "j": "开市.安葬.", "c": "生肖冲马", "s": "煞南", "ch": "定", "zc": "正冲正冲甲午", "ts": "占碓磨房内南" }, "d0826": { "y": "捕捉.结网.入殓.破土.安葬.", "j": "嫁娶.入宅.", "c": "生肖冲羊", "s": "煞東", "ch": "执", "zc": "正冲正冲乙未", "ts": "厨灶厕房内南" }, "d0827": { "y": "沐浴.治病.破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲猴", "s": "煞北", "ch": "破", "zc": "正冲正冲丙申", "ts": "仓库炉房内南" }, "d0828": { "y": "嫁娶.订盟.纳采.出行.开市.祭祀.祈福.移徙.入宅.启攒.安葬.", "j": "动土.破土.", "c": "生肖冲鸡", "s": "煞西", "ch": "危", "zc": "正冲正冲丁酉", "ts": "房床门房内南" }, "d0829": { "y": "嫁娶.订盟.纳采.祭祀.祈福.求医.治病.动土.移徙.入宅.破土.安葬.", "j": "开光.针灸.", "c": "生肖冲狗", "s": "煞南", "ch": "成", "zc": "正冲正冲戊戌", "ts": "门鸡栖房内东" }, "d0830": { "y": "订盟.纳采.祭祀.祈福.安机械.作灶.纳畜.", "j": "动土.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "收", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d0831": { "y": "嫁娶.祭祀.祈福.求嗣.出行.动土.安床.掘井.破土.启攒.", "j": "入宅.作梁.安门.伐木.修造.上梁.入殓.造屋.", "c": "生肖冲鼠", "s": "煞北", "ch": "开", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d0904": { "y": "塑绘.开光.进人口.纳畜.补垣.塞穴.栽种.牧养.", "j": "嫁娶.纳财.祈福.安葬.修造.开市.交易.立券.动土.上梁.", "c": "生肖冲龙", "s": "煞北", "ch": "满", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d0908": { "y": "沐浴.捕捉.入殓.除服.成服.破土.启攒.安葬.", "j": "祭祀.嫁娶.安床.开市.入宅.探病.上梁.", "c": "生肖冲猴", "s": "煞北", "ch": "执", "zc": "正冲正冲戊申", "ts": "占门炉外东北" }, "d0907": { "y": "嫁娶.造车器.安机械.祭祀.祈福.开光.安香.出火.出行.开市.立券.修造.动土.移徙.入宅.破土.安葬.", "j": "纳采.订盟.架马.词讼.开渠.", "c": "生肖冲羊", "s": "煞東", "ch": "定", "zc": "正冲正冲丁未", "ts": "房床厕外东北" }, "d1009": { "y": "冠笄.祭祀.沐浴.作灶.理发.整手足甲.扫舍.补垣.塞穴.入殓.破土.启攒.", "j": "开光.嫁娶.会亲友.栽种.针灸.安葬.", "c": "生肖冲兔", "s": "煞東", "ch": "闭", "zc": "正冲正冲己卯", "ts": "占门炉外西北" }, "d0901": { "y": "嫁娶.祭祀.祈福.求嗣.出行.出火.拆卸.修造.移徙.动土.安床.入殓.破土.安葬.启攒.", "j": "造屋.开光.理发.造船.掘井.作灶.", "c": "生肖冲牛", "s": "煞西", "ch": "闭", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d0902": { "y": "祭祀.祈福.求嗣.开光.出行.解除.上梁.造屋.移徙.安门.纳财.牧养.纳畜.安葬.启攒.入殓.", "j": "破土.置产.掘井.动土.安床.", "c": "生肖冲虎", "s": "煞南", "ch": "建", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" }, "d0903": { "y": "祭祀.解除.沐浴.理发.整手足甲.入殓.移柩.破土.安葬.扫舍.", "j": "嫁娶.会亲友.进人口.出行.入宅.移徙.赴任.作灶.", "c": "生肖冲兔", "s": "煞東", "ch": "除", "zc": "正冲正冲癸卯", "ts": "占大门外东北" }, "d0905": { "y": "祭祀.作灶.沐浴.修饰垣墙.平治道涂.余事勿取.", "j": "诸事不宜.", "c": "生肖冲蛇", "s": "煞西", "ch": "平", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d0906": { "y": "祭祀.求嗣.开光.出行.伐木.作梁.出火.解除.拆卸.进人口.修造.动土.起基.安床.栽种.纳畜.入殓.破土.安葬.除服.成服.", "j": "嫁娶.移徙.", "c": "生肖冲马", "s": "煞南", "ch": "定", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d0910": { "y": "订盟.纳采.祭祀.祈福.安香.出火.修造.动土.上梁.安门.起基.竖柱.上梁.定磉.开池.移徙.入宅.立券.破土.", "j": "嫁娶.造庙.造桥.造船.作灶.安葬.", "c": "生肖冲狗", "s": "煞南", "ch": "危", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d0911": { "y": "开光.求嗣.雕刻.嫁娶.订盟.纳采.出火.拆卸.修造.动土.起基.上梁.放水.移徙.入宅.造仓.造船.开市.开池.纳畜.牧养.挂匾.", "j": "行丧.安葬.合寿木.", "c": "生肖冲猪", "s": "煞東", "ch": "成", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d0912": { "y": "祭祀.嫁娶.捕捉.", "j": "开光.动土.破土.开市.修造.入宅.安门.", "c": "生肖冲鼠", "s": "煞北", "ch": "收", "zc": "正冲正冲壬子", "ts": "房床碓外正东" }, "d0913": { "y": "祭祀.普渡.解除.会亲友.捕捉.畋猎.启攒.除服.成服.移柩.", "j": "嫁娶.开市.动土.掘井.开池.安葬.", "c": "生肖冲牛", "s": "煞西", "ch": "开", "zc": "正冲正冲癸丑", "ts": "占门厕外正东" }, "d0914": { "y": "祭祀.出行.解除.冠笄.嫁娶.伐木.架马.开柱眼.修造.动土.移徙.入宅.开生坟.合寿木.入殓.移柩.破土.安葬.修坟.", "j": "开光.安床.", "c": "生肖冲虎", "s": "煞南", "ch": "闭", "zc": "正冲正冲甲寅", "ts": "碓磨炉外东南" }, "d0915": { "y": "祭祀.祈福.求嗣.出行.沐浴.交易.扫舍.教牛马.", "j": "动土.作灶.行丧.安葬.修坟.", "c": "生肖冲兔", "s": "煞東", "ch": "建", "zc": "正冲正冲乙卯", "ts": "厨灶门外东南" }, "d0916": { "y": "出行.解除.纳采.冠笄.雕刻.修造.动土.起基.上梁.合脊.安床.移徙.入宅.开市.栽种.作厕.", "j": "造庙.安门.行丧.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "除", "zc": "正冲正冲丙辰", "ts": "仓库栖外东南" }, "d0917": { "y": "祭祀.沐浴.解除.理发.冠笄.安机械.作灶.造仓.开市.开池.作厕.补垣.塞穴.断蚁.结网.", "j": "嫁娶.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "满", "zc": "正冲正冲丁巳", "ts": "占房床外东南" }, "d0918": { "y": "祭祀.沐浴.修饰垣墙.平治道涂.", "j": "嫁娶.入宅.", "c": "生肖冲马", "s": "煞南", "ch": "平", "zc": "正冲正冲戊午", "ts": "占门碓外东南" }, "d0919": { "y": "祭祀.会亲友.纳采.嫁娶.开光.塑绘.斋醮.安香.开市.立券.除服.成服.入殓.移柩.安葬.赴任.进人口.出行.裁衣.修造.动土.上梁.经络.交易.", "j": "入宅.伐木.", "c": "生肖冲羊", "s": "煞東", "ch": "定", "zc": "正冲正冲己未", "ts": "碓磨厕外东南" }, "d0920": { "y": "祭祀.冠笄.会亲友.拆卸.起基.除服.成服.移柩.启攒.安葬.沐浴.捕捉.开光.塑绘.", "j": "作灶.祭祀.入宅.嫁娶.", "c": "生肖冲猴", "s": "煞北", "ch": "执", "zc": "正冲正冲庚申", "ts": "厨灶炉外正南" }, "d0921": { "y": "祭祀.沐浴.破屋.坏垣.余事勿取.", "j": "移徙.入宅.出行.栽种.", "c": "生肖冲鸡", "s": "煞西", "ch": "破", "zc": "正冲正冲辛酉", "ts": "仓库门外正南" }, "d0922": { "y": "祭祀.塑绘.开光.出行.解除.订盟.嫁娶.拆卸.起基.安床.入宅.开市.入殓.除服.成服.移柩.破土.谢土.挂匾.开柱眼.交易.", "j": "造桥.冠笄.造屋.掘井.", "c": "生肖冲狗", "s": "煞南", "ch": "危", "zc": "正冲正冲壬戌", "ts": "房床栖外正南" }, "d0923": { "y": "祭祀.赴任.动土.上梁.开光.塑绘.冠笄.拆卸.起基.安床.开市.立券.赴任.经络.", "j": "定磉.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "成", "zc": "正冲正冲癸亥", "ts": "占门床外正南" }, "d0924": { "y": "祭祀.裁衣.冠笄.嫁娶.纳婿.会亲友.除服.成服.移柩.捕捉.进人口.入殓.", "j": "移徙.入宅.作灶.安葬.", "c": "生肖冲鼠", "s": "煞北", "ch": "收", "zc": "正冲正冲甲子", "ts": "占碓磨外正南" }, "d0925": { "y": "祭祀.诸事不宜.", "j": "入殓.安葬.开市.交易.", "c": "生肖冲牛", "s": "煞西", "ch": "开", "zc": "正冲正冲乙丑", "ts": "厨灶厕外西南" }, "d0926": { "y": "祭祀.裁衣.冠笄.嫁娶.安机械.拆卸.动土.起基.移徙.入宅.入殓.启攒.安葬.造仓.经络.", "j": "安床.开光.开市.交易.", "c": "生肖冲虎", "s": "煞南", "ch": "闭", "zc": "正冲正冲丙寅", "ts": "仓库炉外西南" }, "d0927": { "y": "祭祀.出行.成服.除服.沐浴.入殓.", "j": "动土.冠笄.移徙.入宅.开市.竖柱.上梁.", "c": "生肖冲兔", "s": "煞東", "ch": "建", "zc": "正冲正冲丁卯", "ts": "房床门外西南" }, "d0928": { "y": "祭祀.沐浴.赴任.出行.余事勿取.", "j": "诸事不宜.", "c": "生肖冲龙", "s": "煞北", "ch": "除", "zc": "正冲正冲戊辰", "ts": "门鸡栖外西南" }, "d0929": { "y": "诸事不宜.", "j": "诸事不宜.", "c": "生肖冲蛇", "s": "煞西", "ch": "满", "zc": "正冲正冲己巳", "ts": "碓磨床外西南" }, "d0930": { "y": "沐浴.入殓.移柩.除服.成服.破土.平治道涂.", "j": "嫁娶.移徙.入宅.开市.", "c": "生肖冲马", "s": "煞南", "ch": "平", "zc": "正冲正冲庚午", "ts": "厨灶碓外西南" }, "d1008": { "y": "嫁娶.订盟.纳采.祭祀.祈福.出行.求医.治病.出火.移徙.入宅.", "j": "开市.开仓.出货财.安床.安门.安葬.", "c": "生肖冲虎", "s": "煞南", "ch": "开", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d1108": { "y": "订盟.纳采.纳财.开市.立券.祭祀.祈福.移徙.入宅.出行.造屋.起基.修造.动土.竖柱.上梁.安门.安香.出火.教牛马.会亲友.破土.", "j": "嫁娶.安葬.掘井.置产.造船.", "c": "生肖冲鸡", "s": "煞西", "ch": "定", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d1001": { "y": "嫁娶.祭祀.祈福.求嗣.沐浴.出火.出行.拆卸.修造.动土.进人口.开市.交易.立券.入宅.移徙.安床.栽种.纳畜.入殓.安葬.启攒.除服.成服.", "j": "", "c": "生肖冲羊", "s": "煞東", "ch": "定", "zc": "正冲正冲辛未", "ts": "仓库厕外西南" }, "d1002": { "y": "开光.解除.起基.动土.拆卸.上梁.立碑.修坟.安葬.破土.启攒.移柩.", "j": "嫁娶.出行.安床.作灶.祭祀.入宅.移徙.出火.进人口.置产.", "c": "生肖冲猴", "s": "煞北", "ch": "执", "zc": "正冲正冲壬申", "ts": "房床厕外正南" }, "d1003": { "y": "破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鸡", "s": "煞西", "ch": "破", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d1004": { "y": "嫁娶.祈福.求嗣.出行.出火.拆卸.修造.动土.上梁.开光.进人口.开市.交易.立券.挂匾.安床.入宅.移徙.栽种.伐木.入殓.破土.除服.成服.", "j": "", "c": "生肖冲狗", "s": "煞南", "ch": "危", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d1005": { "y": "开市.交易.立券.挂匾.祭祀.开光.进人口.入宅.安床.出火.拆卸.修造.动土.栽种.", "j": "嫁娶.立碑.出行.伐木.安葬.行丧.移徙.纳畜.", "c": "生肖冲猪", "s": "煞東", "ch": "成", "zc": "正冲正冲乙亥", "ts": "厨灶床外正西" }, "d1006": { "y": "祭祀.理发.会亲友.进人口.嫁娶.针灸.入殓.移柩.", "j": "探病.开渠.安葬.伐木.作灶.入宅.", "c": "生肖冲鼠", "s": "煞北", "ch": "收", "zc": "正冲正冲丙子", "ts": "仓库碓外西北" }, "d1007": { "y": "祭祀.立碑.修坟.启攒.除服.成服.余事勿取.", "j": "余事勿取.", "c": "生肖冲牛", "s": "煞西", "ch": "开", "zc": "正冲正冲丁丑", "ts": "房床厕外西北" }, "d1010": { "y": "纳采.订盟.嫁娶.祭祀.祈福.求嗣.置产.求医.治病.开市.交易.立券.会亲友.移徙.竖柱.上梁.造屋.合脊.安门.放水.捕捉.纳畜.", "j": "造庙.造船.动土.破土.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "建", "zc": "正冲正冲庚辰", "ts": "厨灶栖外西北" }, "d1011": { "y": "出行.造车器.造畜椆栖.解除.冠笄.裁衣.作梁.雕刻.会亲友.移徙.入宅.安机械.造畜椆栖.开市.扫舍.", "j": "嫁娶.动土.破土.修坟.", "c": "生肖冲蛇", "s": "煞西", "ch": "除", "zc": "正冲正冲辛巳", "ts": "仓库床外西北" }, "d1012": { "y": "沐浴.理发.冠笄.安床.开市.立券.会亲友.交易.纳财.结网.教牛马.", "j": "移徙.入宅.出行.祈福.嫁娶.", "c": "生肖冲马", "s": "煞南", "ch": "满", "zc": "正冲正冲壬午", "ts": "房床碓外正北" }, "d1013": { "y": "祭祀.造畜椆栖.修饰垣墙.平治道涂.余事勿取.", "j": "嫁娶.开市.安床.掘井.", "c": "生肖冲羊", "s": "煞東", "ch": "平", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d1014": { "y": "捕捉.结网.入殓.除服.成服.移柩.破土.安葬.启攒.立碑.", "j": "嫁娶.祭祀.入宅.造屋.移徙.", "c": "生肖冲猴", "s": "煞北", "ch": "定", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d1015": { "y": "祭祀.祈福.求嗣.斋醮.造庙.出火.安机械.会亲友.开市.交易.立券.纳财.习艺.经络.求医.治病.开池.作厕.畋猎.结网.栽种.牧养.安葬.破土.启攒.", "j": "开光.嫁娶.掘井.伐木.作梁.", "c": "生肖冲鸡", "s": "煞西", "ch": "执", "zc": "正冲正冲乙酉", "ts": "厨灶门外正北" }, "d1016": { "y": "破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲狗", "s": "煞南", "ch": "破", "zc": "正冲正冲丙戌", "ts": "仓库栖外正北" }, "d1017": { "y": "会亲友.嫁娶.订盟.纳采.纳婿.拆卸.修造.动土.起基.竖柱.上梁.安床.会亲友.纳财.", "j": "出行.祈福.安葬.作灶.", "c": "生肖冲猪", "s": "煞東", "ch": "危", "zc": "正冲正冲丁亥", "ts": "占房床房内北" }, "d1018": { "y": "祭祀.塑绘.开光.祈福.斋醮.出行.订盟.纳采.裁衣.嫁娶.拆卸.修造.安床.入宅.安香.入殓.启攒.安葬.谢土.赴任.会亲友.进人口.出行.移徙.上梁.经络.开市.交易.立券.纳财.", "j": "开仓.冠笄.伐木.作梁.", "c": "生肖冲鼠", "s": "煞北", "ch": "成", "zc": "正冲正冲戊子", "ts": "占门碓房内北" }, "d1019": { "y": "祭祀.作灶.入殓.除服.成服.畋猎.", "j": "栽种.动土.安葬.开市.", "c": "生肖冲牛", "s": "煞西", "ch": "收", "zc": "正冲正冲己丑", "ts": "碓磨厕房内北" }, "d1020": { "y": "祭祀.祈福.斋醮.沐浴.竖柱.订盟.纳采.嫁娶.拆卸.入宅.移柩.启攒.谢土.赴任.出火.纳畜.", "j": "作灶.入殓.安葬.安床.", "c": "生肖冲虎", "s": "煞南", "ch": "开", "zc": "正冲正冲庚寅", "ts": "厨灶炉房内北" }, "d1021": { "y": "嫁娶.祭祀.安机械.入殓.破土.安葬.", "j": "动土.上梁.", "c": "生肖冲兔", "s": "煞東", "ch": "闭", "zc": "正冲正冲辛卯", "ts": "仓库门房内北" }, "d1022": { "y": "作灶.造畜椆栖.", "j": "行丧.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "建", "zc": "正冲正冲壬辰", "ts": "房床栖房内南" }, "d1023": { "y": "沐浴.理发.入学.习艺.进人口.", "j": "嫁娶.入宅.", "c": "生肖冲蛇", "s": "煞西", "ch": "除", "zc": "正冲正冲癸巳", "ts": "占门床房内南" }, "d1024": { "y": "开光.针灸.会亲友.启攒.安葬.", "j": "开市.动土.破土.", "c": "生肖冲马", "s": "煞南", "ch": "满", "zc": "正冲正冲甲午", "ts": "占碓磨房内南" }, "d1025": { "y": "祭祀.结网.造畜椆栖.余事勿取.", "j": "余事勿取.", "c": "生肖冲羊", "s": "煞東", "ch": "平", "zc": "正冲正冲乙未", "ts": "厨灶厕房内南" }, "d1026": { "y": "入殓.除服.成服.移柩.破土.启攒.安葬.", "j": "移徙.入宅.", "c": "生肖冲猴", "s": "煞北", "ch": "定", "zc": "正冲正冲丙申", "ts": "仓库炉房内南" }, "d1027": { "y": "嫁娶.订盟.纳采.出行.祭祀.祈福.动土.移徙.入宅.破土.安葬.", "j": "开市.赴任.", "c": "生肖冲鸡", "s": "煞西", "ch": "执", "zc": "正冲正冲丁酉", "ts": "房床门房内南" }, "d1028": { "y": "祭祀.解除.破屋.坏垣.余事勿取.", "j": "余事勿取.", "c": "生肖冲狗", "s": "煞南", "ch": "破", "zc": "正冲正冲戊戌", "ts": "门鸡栖房内东" }, "d1029": { "y": "订盟.纳采.会亲友.安机械.纳财.牧养.", "j": "祈福.安葬.", "c": "生肖冲猪", "s": "煞东", "ch": "危", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d1030": { "y": "嫁娶.订盟.纳采.出行.开市.祭祀.祈福.动土.移徙.入宅.破土.安葬.", "j": "斋醮.安门.", "c": "生肖冲鼠", "s": "煞北", "ch": "成", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d1031": { "y": "祭祀.塞穴.余事勿取.", "j": "诸事不宜.", "c": "生肖冲牛", "s": "煞西", "ch": "收", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d1107": { "y": "纳采.移徙.纳财.开市.交易.立券.纳财.入宅.修造.动土.竖柱.起基.定磉.造庙.安香.出火.修饰垣墙.平治道涂.会亲友.出行.开池.作厕.", "j": "开仓.造屋.造桥.祭祀.", "c": "生肖冲猴", "s": "煞北", "ch": "平", "zc": "正冲正冲戊申", "ts": "占门炉外东北" }, "d1117": { "y": "祭祀.会亲友.嫁娶.沐浴.修造.动土.祈福.开光.塑绘.出行.订盟.纳采.裁衣.入殓.除服.成服.移柩.启攒.赴任.竖柱.上梁.纳财.扫舍.栽种.纳畜.伐木.", "j": "入宅.作灶.安床.开仓.", "c": "生肖冲马", "s": "煞南", "ch": "除", "zc": "正冲正冲戊午", "ts": "占门碓外东南" }, "d1104": { "y": "祭祀.祈福.求嗣.开光.出行.解除.移徙.伐木.安床.纳畜.出火.拆卸.", "j": "安葬.修坟.作灶.破土.造庙.动土.嫁娶.纳采.", "c": "生肖冲蛇", "s": "煞西", "ch": "除", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d1114": { "y": "祭祀.祈福.求嗣.斋醮.沐浴.冠笄.出行.理发.拆卸.解除.起基.动土.定磉.安碓硙.开池.掘井.扫舍.除服.成服.移柩.启攒.立碑.谢土.", "j": "移徙.入宅.安门.作梁.安葬.", "c": "生肖冲兔", "s": "煞東", "ch": "开", "zc": "正冲正冲乙卯", "ts": "厨灶门外东南" }, "d1113": { "y": "捕捉.畋猎.会亲友.解除.入殓.除服.成服.移柩.余事勿取.", "j": "安床.安门.破土.修坟.安葬.", "c": "生肖冲虎", "s": "煞南", "ch": "收", "zc": "正冲正冲甲寅", "ts": "碓磨炉外东南" }, "d1118": { "y": "理发.会亲友.补垣.塞穴.结网.", "j": "嫁娶.入宅.安门.移徙.", "c": "生肖冲羊", "s": "煞東", "ch": "满", "zc": "正冲正冲己未", "ts": "碓磨厕外东南" }, "d1115": { "y": "嫁娶.冠笄.安床.纳采.会亲友.塞穴.捕捉.置产.造畜椆栖.", "j": "开光.掘井.安葬.谢土.修坟.", "c": "生肖冲龙", "s": "煞北", "ch": "闭", "zc": "正冲正冲丙辰", "ts": "仓库栖外东南" }, "d1217": { "y": "祭祀.求医.破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鼠", "s": "煞北", "ch": "破", "zc": "正冲正冲戊子", "ts": "占门碓房内北" }, "d1101": { "y": "祭祀.祈福.求嗣.开光.开市.出行.解除.动土.起基.置产.栽种.", "j": "嫁娶.作灶.修坟.安门.入宅.立碑.安葬.安床.", "c": "生肖冲虎", "s": "煞南", "ch": "开", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" }, "d1102": { "y": "祭祀.解除.裁衣.理发.安床.作灶.造畜椆栖.放水.筑堤.补垣.塞穴.整手足甲.扫舍.", "j": "嫁娶.开光.会亲友.掘井.安门.栽种.", "c": "生肖冲兔", "s": "煞東", "ch": "闭", "zc": "正冲正冲癸卯", "ts": "占大门外东北" }, "d1103": { "y": "祭祀.出行.裁衣.冠笄.会亲友.造畜椆栖.嫁娶.竖柱.上梁.移徙.纳财.纳畜.", "j": "动土.伐木.作梁.行丧.安葬.开生坟.", "c": "生肖冲龙", "s": "煞北", "ch": "建", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d1105": { "y": "开市.交易.立券.纳财.会亲友.开光.理发.入殓.移柩.安葬.启攒.", "j": "嫁娶.作灶.出火.出行.入宅.移徙.安床.祈福.上梁.", "c": "生肖冲马", "s": "煞南", "ch": "满", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d1106": { "y": "造畜椆栖.平治道涂.余事勿取.", "j": "诸事不宜.", "c": "生肖冲羊", "s": "煞東", "ch": "平", "zc": "正冲正冲丁未", "ts": "房床厕外东北" }, "d1109": { "y": "嫁娶.订盟.纳采.祭祀.祈福.塑绘.开光.移徙.安床.伐木.作梁.捕捉.畋猎.结网.求医.治病.解除.安葬.除服.成服.移柩.入殓.立碑.谢土.", "j": "开市.造庙.动土.破土.", "c": "生肖冲狗", "s": "煞南", "ch": "执", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d1110": { "y": "破屋.坏垣.祭祀.余事勿取.", "j": "嫁娶.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "破", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d1111": { "y": "嫁娶.纳采.订盟.祭祀.冠笄.裁衣.伐木.作梁.架马.定磉.开柱眼.作灶.移徙.安床.畋猎.结网.开池.作厕.除服.成服.启攒.入殓.移柩.安葬.", "j": "造屋.造船.动土.破土.", "c": "生肖冲鼠", "s": "煞北", "ch": "危", "zc": "正冲正冲壬子", "ts": "房床碓外正东" }, "d1112": { "y": "纳采.订盟.祭祀.祈福.求嗣.斋醮.开光.会亲友.解除.入学.纳财.交易.立券.经络.起基.动土.定磉.开池.栽种.纳畜.牧养.破土.入殓.立碑.安葬.", "j": "嫁娶.开市.入宅.出火.移徙.", "c": "生肖冲牛", "s": "煞西", "ch": "成", "zc": "正冲正冲癸丑", "ts": "占门厕外正东" }, "d1116": { "y": "祭祀.沐浴.余事勿取.", "j": "诸事不宜.", "c": "生肖冲蛇", "s": "煞西", "ch": "建", "zc": "正冲正冲丁巳", "ts": "占房床外东南" }, "d1119": { "y": "祭祀.祈福.订盟.纳采.裁衣.拆卸.修造.动土.起基.安床.移徙.入宅.安香.除服.成服.入殓.移柩.安葬.谢土.赴任.会亲友.进人口.出行.竖柱.上梁.经络.开市.交易.立券.纳财.开仓.", "j": "作灶.治病.伐木.作梁.", "c": "生肖冲猴", "s": "煞北", "ch": "平", "zc": "正冲正冲庚申", "ts": "厨灶炉外正南" }, "d1120": { "y": "祭祀.祈福.订盟.纳采.裁衣.拆卸.修造.动土.起基.安床.移徙.入宅.安香.入殓.移柩.安葬.谢土.赴任.进人口.会亲友.", "j": "作灶.治病.", "c": "生肖冲鸡", "s": "煞西", "ch": "定", "zc": "正冲正冲辛酉", "ts": "仓库门外正南" }, "d1121": { "y": "祭祀.塑绘.开光.订盟.纳采.嫁娶.安床.进人口.入殓.除服.成服.移柩.启攒.安葬.立碑.", "j": "开市.交易.破土.作灶.", "c": "生肖冲狗", "s": "煞南", "ch": "执", "zc": "正冲正冲壬戌", "ts": "房床栖外正南" }, "d1122": { "y": "祭祀.解除.破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲猪", "s": "煞東", "ch": "破", "zc": "正冲正冲癸亥", "ts": "占门床外正南" }, "d1123": { "y": "祭祀.解除.祈福.开光.塑绘.斋醮.订盟.纳采.裁衣.冠笄.拆卸.修造.动土.入殓.除服.成服.移柩.启攒.安床.赴任.出行.移徙.竖柱.上梁.伐木.栽种.破土.安葬.纳畜.", "j": "造屋.治病.", "c": "生肖冲鼠", "s": "煞北", "ch": "危", "zc": "正冲正冲甲子", "ts": "占碓磨外正南" }, "d1124": { "y": "祭祀.祈福.订盟.纳采.裁衣.合帐.冠笄.安机械.安床.造畜椆栖.入殓.移柩.启攒.安葬.谢土.除服.成服.会亲友.竖柱.上梁.经络.开市.交易.立券.纳财.纳畜.筑堤.", "j": "嫁娶.入宅.治病.赴任.", "c": "生肖冲牛", "s": "煞西", "ch": "成", "zc": "正冲正冲乙丑", "ts": "厨灶厕外西南" }, "d1125": { "y": "沐浴.扫舍.余事勿取.", "j": "诸事不宜.", "c": "生肖冲虎", "s": "煞南", "ch": "收", "zc": "正冲正冲丙寅", "ts": "仓库炉外西南" }, "d1126": { "y": "诸事不宜.", "j": "诸事不宜.", "c": "生肖冲兔", "s": "煞東", "ch": "开", "zc": "正冲正冲丁卯", "ts": "房床门外西南" }, "d1127": { "y": "祈福.斋醮.出行.订盟.纳采.入殓.移柩.破土.安葬.立碑.结网.", "j": "入宅.作灶.", "c": "生肖冲龙", "s": "煞北", "ch": "闭", "zc": "正冲正冲戊辰", "ts": "门鸡栖外西南" }, "d1128": { "y": "祭祀.沐浴.出行.冠笄.进人口.余事勿取.", "j": "嫁娶.动土.安葬.作灶.", "c": "生肖冲蛇", "s": "煞西", "ch": "建", "zc": "正冲正冲己巳", "ts": "碓磨床外西南" }, "d1129": { "y": "祭祀.祈福.斋醮.塑绘.开光.订盟.纳采.裁衣.冠笄.嫁娶.拆卸.入宅.安香.入殓.移柩.理发.安葬.修坟.谢土.赴任.移徙.沐浴.治病.破土.启攒.整手足甲.入学.作梁.", "j": "开市.", "c": "生肖冲马", "s": "煞南", "ch": "除", "zc": "正冲正冲庚午", "ts": "厨灶碓外西南" }, "d1130": { "y": "诸事不宜.", "j": "诸事不宜.", "c": "生肖冲羊", "s": "煞東", "ch": "满", "zc": "正冲正冲辛未", "ts": "仓库厕外西南" }, "d1213": { "y": "纳财.开市.交易.立券.会亲友.进人口.经络.祭祀.祈福.安香.出火.求医.治病.修造.动土.拆卸.扫舍.安床.栽种.牧养.开生坟.合寿木.入殓.安葬.启攒.", "j": "嫁娶.祈福.出火.移徙.入宅.", "c": "生肖冲猴", "s": "煞北", "ch": "满", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d1203": { "y": "开光.解除.拆卸.修造.动土.安床.纳畜.安葬.启攒.入殓.", "j": "嫁娶.开市.出火.栽种.破土.动土.入宅.移徙.安香.分居.掘井.作灶.", "c": "生肖冲狗", "s": "煞南", "ch": "执", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d1210": { "y": "纳采.订盟.祭祀.沐浴.冠笄.合帐.裁衣.修造.动土.拆卸.移徙.入宅.安门.开仓.筑堤.作厕.栽种.纳畜.补垣.塞穴.", "j": "嫁娶.祈福.开光.掘井.安葬.行丧.", "c": "生肖冲蛇", "s": "煞西", "ch": "闭", "zc": "正冲正冲辛巳", "ts": "仓库床外西北" }, "d1230": { "y": "祭祀.祈福.求嗣.斋醮.开光.入学.订盟.冠笄.伐木.修造.动土.起基.放水.交易.开池.", "j": "造桥.安门.理发.造庙.栽种.作灶.", "c": "生肖冲牛", "s": "煞西", "ch": "危", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d1218": { "y": "祭祀.祈福.斋醮.出行.冠笄.安机械.移徙.入宅.安香.安床.除服.成服.移柩.启攒.", "j": "开光.栽种.治病.安门.作灶.", "c": "生肖冲牛", "s": "煞西", "ch": "危", "zc": "正冲正冲己丑", "ts": "碓磨厕房内北" }, "d1208": { "y": "祭祀.沐浴.作灶.纳财.捕捉.畋猎.安床.扫舍.", "j": "开市.斋醮.破土.安葬.", "c": "生肖冲兔", "s": "煞東", "ch": "收", "zc": "正冲正冲己卯", "ts": "占门炉外西北" }, "d1220": { "y": "祭祀.沐浴.安床.纳财.畋猎.捕捉.", "j": "开市.破土.", "c": "生肖冲兔", "s": "煞東", "ch": "收", "zc": "正冲正冲辛卯", "ts": "仓库门房内北" }, "d1201": { "y": "开市.交易.立券.挂匾.纳财.开光.出行.入宅.移徙.安床.纳畜.入殓.移柩.安葬.", "j": "栽种.破土.置产.祭祀.嫁娶.动土.作灶.祈福.", "c": "生肖冲猴", "s": "煞北", "ch": "平", "zc": "正冲正冲壬申", "ts": "房床厕外正南" }, "d1202": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出行.解除.出火.出行.拆卸.进人口.入宅.移徙.安床.栽种.动土.修造.纳畜.入殓.安葬.立碑.除服.成服.", "j": "", "c": "生肖冲鸡", "s": "煞西", "ch": "定", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d1204": { "y": "破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲猪", "s": "煞東", "ch": "破", "zc": "正冲正冲乙亥", "ts": "厨灶床外正西" }, "d1205": { "y": "嫁娶.祭祀.开光.出火.出行.拆卸.修造.动土.解除.开市.交易.立券.挂匾.纳财.入宅.移徙.安床.栽种.纳畜.", "j": "探病.安葬.", "c": "生肖冲鼠", "s": "煞北", "ch": "危", "zc": "正冲正冲丙子", "ts": "仓库碓外西北" }, "d1206": { "y": "祭祀.祈福.求嗣.开光.解除.理发.会亲友.栽种.纳畜.牧养.安葬.修坟.立碑.启攒.", "j": "入宅.作灶.词讼.移徙.出行.赴任.", "c": "生肖冲牛", "s": "煞西", "ch": "成", "zc": "正冲正冲丁丑", "ts": "房床厕外西北" }, "d1207": { "y": "纳采.订盟.移徙.入宅.出行.安机械.会亲友.祭祀.祈福.斋醮.开光.安香.出火.解除.求医.针灸.治病.造屋.起基.修造.安门.造船.纳畜.牧养.移柩.入殓.启攒.谢土.修坟.立碑.", "j": "嫁娶.动土.安床.造桥.掘井.", "c": "生肖冲虎", "s": "煞南", "ch": "成", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d1209": { "y": "祈福.斋醮.纳采.订盟.解除.架马.开柱眼.修造.动土.起基.上梁.归岫.造屋.合脊.掘井.除服.成服.破土.栽种.", "j": "移徙.开市.入宅.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "开", "zc": "正冲正冲庚辰", "ts": "厨灶栖外西北" }, "d1211": { "y": "合帐.裁衣.教牛马.余事勿取.", "j": "入宅.动土.破土.嫁娶.作灶.造船.", "c": "生肖冲马", "s": "煞南", "ch": "建", "zc": "正冲正冲壬午", "ts": "房床碓外正北" }, "d1212": { "y": "纳采.订盟.嫁娶.祭祀.祈福.安香.出火.出行.会亲友.经络.求医.治病.解除.拆卸.起基.修造.动土.定磉.扫舍.栽种.牧养.造畜椆栖.", "j": "斋醮.作梁.掘井.行丧.安葬.", "c": "生肖冲羊", "s": "煞東", "ch": "除", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d1214": { "y": "祭祀.入殓.移柩.余事勿取.", "j": "入宅.修造.动土.破土.安门.上梁.", "c": "生肖冲鸡", "s": "煞西", "ch": "平", "zc": "正冲正冲乙酉", "ts": "厨灶门外正北" }, "d1215": { "y": "塑绘.开光.订盟.纳采.裁衣.冠笄.拆卸.修造.安床.入宅.出火.安葬.谢土.赴任.", "j": "掘井.伐木.斋醮.作灶.", "c": "生肖冲狗", "s": "煞南", "ch": "定", "zc": "正冲正冲丙戌", "ts": "仓库栖外正北" }, "d1216": { "y": "祭祀.塑绘.开光.裁衣.冠笄.嫁娶.纳采.拆卸.修造.动土.竖柱.上梁.安床.移徙.入宅.安香.结网.捕捉.畋猎.伐木.进人口.放水.", "j": "出行.安葬.修坟.开市.", "c": "生肖冲猪", "s": "煞東", "ch": "执", "zc": "正冲正冲丁亥", "ts": "占房床房内北" }, "d1219": { "y": "塑绘.斋醮.出行.拆卸.解除.修造.移徙.造船.入殓.除服.成服.移柩.启攒.修坟.立碑.谢土.", "j": "", "c": "生肖冲虎", "s": "煞南", "ch": "成", "zc": "正冲正冲庚寅", "ts": "厨灶炉房内北" }, "d1221": { "y": "订盟.纳采.祭祀.祈福.修造.动土.上梁.破土.", "j": "嫁娶.作灶.", "c": "生肖冲龙", "s": "煞北", "ch": "开", "zc": "正冲正冲壬辰", "ts": "房床栖房内南" }, "d1222": { "y": "出行.沐浴.理发.补垣.塞穴.", "j": "入宅.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "闭", "zc": "正冲正冲癸巳", "ts": "占门床房内南" }, "d1223": { "y": "教牛马.余事勿取.", "j": "入宅.动土.破土.余事勿取.", "c": "生肖冲马", "s": "煞南", "ch": "建", "zc": "正冲正冲甲午", "ts": "占碓磨房内南" }, "d1224": { "y": "嫁娶.出行.求医.治病.祭祀.祈福.上梁.纳畜.", "j": "开市.安葬.", "c": "生肖冲羊", "s": "煞東", "ch": "除", "zc": "正冲正冲乙未", "ts": "厨灶厕房内南" }, "d1225": { "y": "开市.立券.开光.解除.安机械.上梁.启攒.安葬.", "j": "嫁娶.祈福.", "c": "生肖冲猴", "s": "煞北", "ch": "满", "zc": "正冲正冲丙申", "ts": "仓库炉房内南" }, "d1226": { "y": "平治道涂.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鸡", "s": "煞西", "ch": "平", "zc": "正冲正冲丁酉", "ts": "房床门房内南" }, "d1227": { "y": "求嗣.斋醮.塑绘.订盟.纳采.出火.拆卸.修造.动土.造桥.安机械.栽种.纳畜.牧养.入殓.除服.成服.移柩.破土.安葬.", "j": "开市.嫁娶.", "c": "生肖冲狗", "s": "煞南", "ch": "定", "zc": "正冲正冲戊戌", "ts": "门鸡栖房内东" }, "d1228": { "y": "嫁娶.订盟.纳采.祭祀.祈福.修造.动土.移徙.入宅.", "j": "开市.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "执", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d1229": { "y": "治病.破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鼠", "s": "煞北", "ch": "破", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d1231": { "y": "解除.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲虎", "s": "煞南", "ch": "成", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" } } ukui-panel-4.0.0.4/plugin-calendar/html/hlnew/hl2033.json0000644000175000017500000011543114560306203021307 0ustar fengfeng{ "d0101": { "j": "余事勿取", "y": "安葬.启钻.移柩.入殓.除服" }, "d0102": { "j": "作灶.塑绘.行丧.词讼.伐木", "y": "嫁娶.祭祀.祈福.求嗣.出行" }, "d0103": { "j": "入宅.移徙.作灶.祈福.祭祀", "y": "理髮.开光.解除.拆卸.修造" }, "d0104": { "j": "诸事不宜", "y": "祭祀.修饰垣墙.余事勿取" }, "d0105": { "j": "移徙.入宅.造庙.作灶.治病", "y": "祭祀.冠笄.嫁娶.会亲友.进人口" }, "d0106": { "j": "嫁娶.安葬", "y": "祭祀.安碓.结网.余事勿取" }, "d0107": { "j": "盖屋.开市.动土.破土", "y": "嫁娶.祭祀.沐浴.裁衣.出行" }, "d0108": { "j": "嫁娶.开市.安葬", "y": "破屋.坏垣.余事勿取" }, "d0109": { "j": "祈福.嫁娶.造庙.安床.谢土", "y": "纳采.订盟.祭祀.求嗣.出火" }, "d0110": { "j": "开市.伐木.嫁娶.作梁", "y": "入殓.除服.成服.移柩.启钻" }, "d0111": { "j": "开市.安床", "y": "祭祀.作灶.入殓.除服.余事勿取" }, "d0112": { "j": "嫁娶.入殓.安葬.出行", "y": "塑绘.开光.沐浴.冠笄.会亲友" }, "d0113": { "j": "开仓.嫁娶.移徙.入宅", "y": "祭祀.沐浴.祈福.斋醮.订盟" }, "d0114": { "j": "诸事不宜", "y": "祭祀.解除.余事勿取" }, "d0115": { "j": "作灶.祭祀.上樑.出行", "y": "沐浴.解除.订盟.纳采.裁衣" }, "d0116": { "j": "", "y": "出行.嫁娶.订盟.纳采.入殓" }, "d0117": { "j": "嫁娶.移徙.入宅.开光", "y": "修饰垣墙.平治道涂.入殓.移柩.余事勿取" }, "d0118": { "j": "出行.治病.安葬.开市", "y": "会亲友.纳采.进人口.修造.动土" }, "d0119": { "j": "盖屋.开市.作灶.入宅", "y": "祭祀.会亲友.出行.订盟.纳采" }, "d0120": { "j": "诸事不宜", "y": "解除.破屋.坏垣.余事勿取" }, "d0121": { "j": "入宅.安床", "y": "塑绘.开光.出行.订盟.纳采" }, "d0122": { "j": "破土.伐木", "y": "入殓.除服.成服.移柩.启钻" }, "d0123": { "j": "开仓.盖屋.安葬.安床", "y": "祭祀.祈福.斋醮.塑绘.开光" }, "d0124": { "j": "栽种.嫁娶.入殓.安葬", "y": "祭祀.出行.沐浴.裁衣.祈福" }, "d0125": { "j": "作灶.掘井.嫁娶.入宅", "y": "祭祀.祈福.斋醮.沐浴.安床" }, "d0126": { "j": "余事勿取", "y": "解除.扫舍.祭祀.教牛马.余事勿取" }, "d0127": { "j": "嫁娶.祭祀.出行.置产", "y": "开市.交易.立券.挂匾.开光" }, "d0128": { "j": "修造.上樑.入宅.祈福.探病", "y": "开市.交易.立券.纳财.开池" }, "d0129": { "j": "余事勿取", "y": "祭祀.解除.修饰垣墙.平治道涂.余事勿取" }, "d0130": { "j": "掘井.安葬.栽种.出行.作灶", "y": "嫁娶.祭祀.祈福.求嗣.动土" }, "d0131": { "j": "掘井.安葬.栽种.出行.作灶", "y": "嫁娶.祭祀.祈福.求嗣.开光" }, "d0201": { "j": "诸事不宜", "y": "破屋.坏垣.余事勿取" }, "d0202": { "j": "安床.伐木.祈福.纳畜", "y": "嫁娶.开市.交易.立券.开光" }, "d0203": { "j": "安床.栽种.治病.作灶", "y": "祭祀.冠笄.嫁娶.拆卸.修造" }, "d0204": { "j": "开市.伐木.作梁.作灶", "y": "安机械.移徙.入宅.出行.祭祀" }, "d0205": { "j": "伐木.作灶.安葬.取渔.入宅", "y": "塑绘.开光.祈福.求嗣.订盟" }, "d0206": { "j": "安葬.上樑.入宅.作灶", "y": "祭祀.沐浴.开光.塑绘.祈福" }, "d0207": { "j": "出行.嫁娶.入宅.动土", "y": "祭祀.祈福.求嗣.酬神.裁衣" }, "d0208": { "j": "祭祀.祈福.移徙.嫁娶.入宅", "y": "裁衣.合帐.入殓.除服.成服" }, "d0209": { "j": "掘井", "y": "祭祀.斋醮.裁衣.合帐.冠笄" }, "d0210": { "j": "斋醮.作灶.安床.安葬", "y": "安床.合帐.入宅.问名.纳采" }, "d0211": { "j": "祭祀.祈福.安葬.安门.余事勿取", "y": "作灶.平治道涂" }, "d0212": { "j": "盖屋.栽种.安葬.作灶", "y": "塑绘.开光.酬神.斋醮.订盟" }, "d0213": { "j": "栽种.动土.开市.作灶", "y": "祭祀.祈福.酬神.订盟.纳采" }, "d0214": { "j": "诸事不宜", "y": "求医.破屋" }, "d0215": { "j": "作灶.安床", "y": "祈福.求嗣.斋醮.塑绘.开光" }, "d0216": { "j": "嫁娶.上樑.入宅.作灶", "y": "取渔.入殓.除服.成服.移柩" }, "d0217": { "j": "安葬.作灶.伐木.作梁", "y": "祭祀.求嗣.沐浴.酬神.订盟" }, "d0218": { "j": "入殓.安葬.作灶.入宅", "y": "祭祀.沐浴.祈福.求嗣.斋醮" }, "d0219": { "j": "开光.掘井.针灸.出行.嫁娶", "y": "祭祀.祈福.求嗣.入殓.启钻" }, "d0220": { "j": "嫁娶.出行.动土.开渠.入宅", "y": "安床.解除.裁衣.竖柱.上樑" }, "d0221": { "j": "掘井.词讼", "y": "嫁娶.安床.开光.出行.祭祀" }, "d0222": { "j": "入宅.移徙.出火.分居.安香", "y": "嫁娶.开光.求嗣.会亲友.安床" }, "d0223": { "j": "栽种.出行.祈福.行丧.纳畜", "y": "作灶.解除.平治道涂" }, "d0224": { "j": "诸事不宜", "y": "解除.沐浴" }, "d0225": { "j": "开市.立券.理髮.作灶", "y": "嫁娶.祭祀.祈福.出行.解除" }, "d0226": { "j": "余事勿取", "y": "祭祀.解除.治病.破屋.坏垣" }, "d0227": { "j": "嫁娶.作灶.安床", "y": "祭祀.祈福.求嗣.开光.出火" }, "d0228": { "j": "诸事不宜", "y": "结网.入殓.除服.成服.移柩" }, "d0301": { "j": "嫁娶.安葬.破土.作梁.纳畜", "y": "移徙.祭祀.开光.祈福.出行" }, "d0302": { "j": "入宅.作灶.伐木.安葬.出火", "y": "嫁娶.开光.祈福.求嗣.解除" }, "d0303": { "j": "词讼.出火.入宅", "y": "祭祀.合帐.裁衣.经络.伐木" }, "d0304": { "j": "诸事不宜", "y": "裁衣.伐木.作梁.纳财.交易" }, "d0305": { "j": "栽种.动土.安葬.掘井.修坟", "y": "祭祀.会亲友.立券.交易.裁衣" }, "d0306": { "j": "诸事不宜", "y": "扫舍.塞穴.余事勿取" }, "d0307": { "j": "作灶.出行.入宅.安葬", "y": "塑绘.开光.订盟.纳采.裁衣" }, "d0308": { "j": "动土.作灶.入宅.开光.安床", "y": "祭祀.嫁娶.纳婿.除服.成服" }, "d0309": { "j": "赴任", "y": "祈福.求嗣.开光.塑绘.斋醮" }, "d0310": { "j": "安床.嫁娶.作灶.入宅", "y": "祭祀.解除.入殓.除服.成服" }, "d0311": { "j": "诸事不宜", "y": "破屋.坏垣" }, "d0312": { "j": "作梁.造庙", "y": "祭祀.出行.订盟.纳采.裁衣" }, "d0313": { "j": "造庙.嫁娶.伐木.安葬", "y": "祭祀.开光.塑绘.订盟.纳采" }, "d0314": { "j": "嫁娶.入宅.移徙.作灶.安葬", "y": "祭祀.沐浴.捕捉.栽种" }, "d0315": { "j": "栽种.安葬", "y": "祭祀.开光.塑绘.酬神.斋醮" }, "d0316": { "j": "作灶.开光.嫁娶.开市.入宅", "y": "订盟.纳采.冠笄.拆卸.修造" }, "d0317": { "j": "作灶.掘井.动土.栽种", "y": "祈福.开光.塑绘.酬神.订盟" }, "d0318": { "j": "栽种.作灶.安葬.嫁娶", "y": "祭祀.扫舍.塞穴" }, "d0319": { "j": "出行.嫁娶.入宅.安葬", "y": "开光.塑绘.裁衣.冠笄.伐木" }, "d0320": { "j": "盖屋.作灶.治病.探病", "y": "冠笄.入殓.除服.成服.移柩" }, "d0321": { "j": "栽种.伐木", "y": "祭祀.嫁娶.祈福.纳采.裁衣" }, "d0322": { "j": "安床.开市.立券.作灶", "y": "祭祀.祈福.斋醮.订盟.纳采" }, "d0323": { "j": "诸事不宜", "y": "破屋.坏垣.求医.治病" }, "d0324": { "j": "开光.出货财", "y": "祭祀.动土.上樑.订盟.纳采" }, "d0325": { "j": "嫁娶.栽种.伐木.安葬", "y": "祭祀.开光.塑绘.纳采.裁衣" }, "d0326": { "j": "作灶.开市.安葬.作梁", "y": "裁衣.合帐.冠笄.嫁娶.纳婿" }, "d0327": { "j": "作灶.安葬.开市.盖屋", "y": "祭祀.订盟.纳采.修造.动土" }, "d0328": { "j": "祭祀.开光.嫁娶.入宅", "y": "订盟.纳采.裁衣.合帐.冠笄" }, "d0329": { "j": "掘井.动土.作灶.栽种", "y": "祭祀.出行.嫁娶.冠笄.安床" }, "d0330": { "j": "安门.作灶.安葬.嫁娶", "y": "塞穴.诸事不宜" }, "d0331": { "j": "出行.斋醮.安葬.嫁娶", "y": "开光.塑绘.求嗣.纳采.裁衣" }, "d0401": { "j": "栽种.盖屋.作灶.入宅", "y": "祭祀.嫁娶.纳婿.安葬" }, "d0402": { "j": "伐木.作梁", "y": "祭祀.会亲友.订盟.裁衣.合帐" }, "d0403": { "j": "入宅.安门", "y": "祭祀.开光.塑绘.祈福.斋醮" }, "d0404": { "j": "开市.动土.掘井.开池", "y": "祭祀.祈福.开光.求嗣.斋醮" }, "d0405": { "j": "移徙.开市.入宅.安葬", "y": "祈福.斋醮.纳采.订盟.解除" }, "d0406": { "j": "诸事不宜", "y": "诸事不宜" }, "d0407": { "j": "出火.入宅.安葬.伐木", "y": "祭祀.塑绘.开光.订盟.纳采" }, "d0408": { "j": "造庙.嫁娶.安床.余事勿取", "y": "祭祀.余事勿取" }, "d0409": { "j": "入殓.安葬.入宅.安床", "y": "订盟.纳采.嫁娶.进人口.会亲友" }, "d0410": { "j": "掘井.安门.嫁娶.纳采", "y": "祭祀.祈福.裁衣.合帐.安床" }, "d0411": { "j": "掘井.动土.破土.安葬.开光", "y": "祭祀.进人口.嫁娶.安床.解除" }, "d0412": { "j": "嫁娶.开市.安葬", "y": "纳采.开光.求医.治病.动土" }, "d0413": { "j": "嫁娶.动土.破土", "y": "祭祀.会亲友.开市.安床.启钻" }, "d0414": { "j": "嫁娶.安葬", "y": "祭祀.作灶.掘井.平治道涂" }, "d0415": { "j": "嫁娶.移徙.入宅", "y": "祭祀.斋醮.开市.动土.入殓" }, "d0416": { "j": "开市.动土.破土", "y": "嫁娶.纳采.祭祀.祈福.出行" }, "d0417": { "j": "诸事不宜", "y": "祭祀.求医.治病.解除.余事勿取" }, "d0418": { "j": "嫁娶.入宅.安葬", "y": "沐浴.结网.取渔" }, "d0419": { "j": "诸事不宜", "y": "" }, "d0420": { "j": "诸事不宜", "y": "解除.坏垣.余事勿取" }, "d0421": { "j": "祈福.入殓.祭祀.作灶.安葬", "y": "嫁娶.开光.出行.出火.拆卸" }, "d0422": { "j": "词讼.开光.开市", "y": "嫁娶.出行.合帐.冠笄.安床" }, "d0423": { "j": "诸事不宜", "y": "出行.修饰垣墙.造畜稠.教牛马.余事勿取" }, "d0424": { "j": "嫁娶.纳财.安葬.出行.开市", "y": "祭祀.祈福.开光.求嗣.解除" }, "d0425": { "j": "谢土.祈福.上樑.作灶.斋醮", "y": "纳采.嫁娶.开光.出行.理髮" }, "d0426": { "j": "诸事不宜", "y": "祭祀.平治道涂.解除.修饰垣墙.余事勿取" }, "d0427": { "j": "进人口.出行.嫁娶.置产.安床", "y": "祭祀.祈福.开光.解除.动土" }, "d0428": { "j": "动土.破土.纳财.掘井.挂匾", "y": "祭祀.祈福.求嗣.开光.解除" }, "d0429": { "j": "诸事不宜", "y": "祭祀.解除.破屋.坏垣.余事勿取" }, "d0430": { "j": "诸事不宜", "y": "塞穴.扫舍.余事勿取" }, "d0501": { "j": "诸事不宜", "y": "祭祀.破屋.坏垣.余事勿取" }, "d0502": { "j": "诸事不宜", "y": "解除.破屋.余事勿取" }, "d0503": { "j": "祭祀.入殓.安葬.探病", "y": "嫁娶.祈福.求嗣.开光.出行" }, "d0504": { "j": "嫁娶.掘井.探病.开市.开光", "y": "祭祀.裁衣.冠笄.安床.交易" }, "d0505": { "j": "余事勿取", "y": "余事勿取" }, "d0506": { "j": "破土.安葬", "y": "塞穴.断蚁.结网.余事勿取" }, "d0507": { "j": "", "y": "开光.出行.纳采.嫁娶.伐木" }, "d0508": { "j": "诸事不宜", "y": "进人口.牧养.置产.塞穴.结网" }, "d0509": { "j": "会亲友.进人口.修造.动土.起基", "y": "开光.出行.嫁娶" }, "d0510": { "j": "安门", "y": "嫁娶.纳采.出行.祭祀.祈福" }, "d0511": { "j": "开市.开光", "y": "嫁娶.纳采.求医.治病.修造" }, "d0512": { "j": "诸事不宜", "y": "祭祀.破屋.坏垣.余事勿取" }, "d0513": { "j": "祈福.斋醮", "y": "嫁娶.纳采.祭祀.祈福.出行" }, "d0514": { "j": "嫁娶.安葬", "y": "纳采.祭祀.祈福.开市.求医" }, "d0515": { "j": "动土.破土.安葬", "y": "嫁娶.纳采.出行.移徙.入宅" }, "d0516": { "j": "嫁娶.安葬", "y": "订盟.纳采.祭祀.动土.破土" }, "d0517": { "j": "赴任.捕捉", "y": "嫁娶.裁衣.祭祀.出行.安床" }, "d0518": { "j": "诸事不宜", "y": "塞穴.结网.余事勿取" }, "d0519": { "j": "移徙.入宅", "y": "嫁娶.订盟.纳采.出行.祭祀" }, "d0520": { "j": "开市.安葬", "y": "订盟.纳采.会亲友.安床.作灶" }, "d0521": { "j": "诸事不宜", "y": "沐浴.平治道涂.扫舍.入殓.移柩" }, "d0522": { "j": "", "y": "嫁娶.祭祀.祈福.求嗣.开光" }, "d0523": { "j": "嫁娶.上樑.修造.拆卸.架马", "y": "祭祀.开光.出行.解除.塑绘" }, "d0524": { "j": "诸事不宜", "y": "祭祀.解除.破屋.坏垣.余事勿取" }, "d0525": { "j": "", "y": "嫁娶.祭祀.祈福.求嗣.开光" }, "d0526": { "j": "入宅.移徙.理髮.出火.嫁娶", "y": "开市.交易.立券.祭祀.祈福" }, "d0527": { "j": "诸事不宜", "y": "结网.解除.余事勿取" }, "d0528": { "j": "纳畜.入宅.移徙.安葬.探病", "y": "嫁娶.祭祀.祈福.求嗣.开光" }, "d0529": { "j": "开光.掘井.开仓", "y": "嫁娶.祭祀.祈福.求嗣.出行" }, "d0530": { "j": "诸事不宜", "y": "解除.扫舍.余事勿取" }, "d0531": { "j": "嫁娶.安床.探病.作灶", "y": "开市.交易.立券.挂匾.开光" }, "d0601": { "j": "塞穴.上樑.动土.伐木.安葬", "y": "进人口.会亲友" }, "d0602": { "j": "嫁娶.移徙.伐木.作梁.安床", "y": "沐浴.平治道涂.扫舍.入殓.破土" }, "d0603": { "j": "", "y": "嫁娶.祭祀.祈福.求嗣.开光" }, "d0604": { "j": "祈福.开市.动土.行丧.安葬", "y": "塑绘.冠笄.嫁娶.会亲友.进人口" }, "d0605": { "j": "开市.交易.嫁娶.安葬.行丧", "y": "祭祀.沐浴.捕捉.结网.畋猎" }, "d0606": { "j": "嫁娶.入宅", "y": "破屋.坏垣.求医.治病.畋猎" }, "d0607": { "j": "开市.安门.掘井.作灶", "y": "嫁娶.出行.安机械.祭祀.塑绘" }, "d0608": { "j": "", "y": "订盟.纳采.会亲友.进人口.彫刻" }, "d0609": { "j": "诸事不宜", "y": "祭祀.捕捉.取渔.修饰垣墙.余事勿取" }, "d0610": { "j": "开市.安门", "y": "嫁娶.纳采.祭祀.祈福.求医" }, "d0611": { "j": "嫁娶.安葬", "y": "裁衣.作灶.移徙.入宅.纳畜" }, "d0612": { "j": "上樑.动土.破土", "y": "祭祀.入殓.移柩.启钻.安葬" }, "d0613": { "j": "移徙.入宅.安葬", "y": "订盟.纳采.出行.祈福.斋醮" }, "d0614": { "j": "动土.破土", "y": "嫁娶.纳采.出行.求医.治病" }, "d0615": { "j": "行丧.安葬", "y": "嫁娶.祭祀.沐浴.扫舍.修饰垣墙" }, "d0616": { "j": "作灶", "y": "嫁娶.订盟.纳采.出行.开市" }, "d0617": { "j": "开市.安葬", "y": "订盟.纳采.出行.祭祀.祈福" }, "d0618": { "j": "诸事不宜", "y": "诸事不宜" }, "d0619": { "j": "开光.开市", "y": "嫁娶.订盟.纳采.祭祀.祈福" }, "d0620": { "j": "嫁娶.开光", "y": "开光.求医.治病.动土.上樑" }, "d0621": { "j": "诸事不宜", "y": "祭祀.栽种.余事勿取" }, "d0622": { "j": "安葬.开市.交易.立券", "y": "嫁娶.开光.祭祀.祈福.求嗣" }, "d0623": { "j": "安葬.出行.祈福.栽种", "y": "求嗣.嫁娶.纳采.合帐.裁衣" }, "d0624": { "j": "诸事不宜", "y": "祭祀.解除.余事勿取" }, "d0625": { "j": "安葬.行丧.伐木.作梁", "y": "嫁娶.祭祀.祈福.出火.开光" }, "d0626": { "j": "置产.安床", "y": "开光.求嗣.出行.解除.伐木" }, "d0627": { "j": "出行.安门.修造.嫁娶.上樑", "y": "祭祀.理髮.修饰垣墙.平治道涂.沐浴" }, "d0628": { "j": "", "y": "嫁娶.祭祀.开光.祈福.求嗣" }, "d0629": { "j": "嫁娶.开市.交易.行丧.安葬", "y": "祭祀.祈福.求嗣.开光.出行" }, "d0630": { "j": "诸事不宜", "y": "破屋.坏垣.余事勿取" }, "d0701": { "j": "嫁娶.造桥.词讼.移徙.安门", "y": "开市.交易.立券.纳财.开池" }, "d0702": { "j": "嫁娶.出火.伐木.祭祀.入宅", "y": "开市.交易.立券.纳财.栽种" }, "d0703": { "j": "诸事不宜", "y": "祭祀.作灶.余事勿取" }, "d0704": { "j": "诸事不宜", "y": "解除.坏垣.余事勿取" }, "d0705": { "j": "嫁娶.掘井.入宅.移徙.出火", "y": "修造.动土.起基.安门.安床" }, "d0706": { "j": "斋醮.移徙.入宅.动土", "y": "祭祀" }, "d0707": { "j": "动土.破土.安葬.治病", "y": "开市.纳财.祭祀.塑绘.安机械" }, "d0708": { "j": "开市.斋醮.安床.出行.经络", "y": "移徙.入宅.治病.会亲友.祭祀" }, "d0709": { "j": "", "y": "塑绘.出行.冠笄.嫁娶.进人口" }, "d0710": { "j": "余事勿取", "y": "祭祀.冠笄.嫁娶.捕捉.结网" }, "d0711": { "j": "诸事不宜", "y": "沐浴.扫舍.余事勿取" }, "d0712": { "j": "嫁娶.移徙.入宅", "y": "纳采.祭祀.祈福.解除.动土" }, "d0713": { "j": "诸事不宜", "y": "祭祀.破屋.坏垣.余事勿取" }, "d0714": { "j": "祭祀.祈福", "y": "嫁娶.纳采.开市.出行.动土" }, "d0715": { "j": "赴任", "y": "嫁娶.纳采.开市.出行.动土" }, "d0716": { "j": "开市.破土", "y": "祭祀.作灶.纳财.捕捉" }, "d0717": { "j": "造庙.安葬", "y": "嫁娶.开市.立券.祭祀.祈福" }, "d0718": { "j": "诸事不宜", "y": "补垣.塞穴.结网.入殓.除服" }, "d0719": { "j": "动土.安葬", "y": "嫁娶.纳采.出行.祭祀.祈福" }, "d0720": { "j": "开市.入宅", "y": "嫁娶.祭祀.祈福.斋醮.治病" }, "d0721": { "j": "祈福.动土.破土", "y": "嫁娶.出行.开市.安床.入殓" }, "d0722": { "j": "开仓.出货财.置产.安葬.动土", "y": "嫁娶.祭祀.裁衣.结网.冠笄" }, "d0723": { "j": "嫁娶.破土.置产.栽种.安葬", "y": "入宅.移徙.安床.开光.祈福" }, "d0724": { "j": "嫁娶.入宅.移徙.作灶.开市", "y": "祭祀.解除.沐浴.整手足甲.入殓" }, "d0725": { "j": "诸事不宜", "y": "破屋.坏垣.余事勿取" }, "d0726": { "j": "伐木.祭祀.纳畜.祭祀", "y": "嫁娶.开光.出行.理髮.作梁" }, "d0727": { "j": "", "y": "嫁娶.开光.出行.祈福.求嗣" }, "d0728": { "j": "安葬.经络.修坟.破土.开市", "y": "祭祀.作灶.纳财.栽种.纳畜" }, "d0729": { "j": "嫁娶.出行.安葬.入殓.入宅", "y": "祭祀.祈福.求嗣.开光.开市" }, "d0730": { "j": "余事勿取", "y": "祭祀.入殓.破土.除服.成服" }, "d0731": { "j": "嫁娶.作灶.安葬.动土.词讼", "y": "祭祀.出行.交易.割蜜.造畜稠" }, "d0801": { "j": "", "y": "嫁娶.祭祀.祈福.求嗣.开光" }, "d0802": { "j": "作灶.动土.上樑.栽种.入宅", "y": "嫁娶.开光.解除.安床.牧养" }, "d0803": { "j": "嫁娶.开市.交易.入宅.安葬", "y": "祭祀.沐浴.破屋.坏垣.求医" }, "d0804": { "j": "嫁娶.栽种.行丧.理髮.修坟", "y": "祭祀.祈福.求嗣.开光.伐木" }, "d0805": { "j": "嫁娶.开市.出火.作灶.置产", "y": "解除.祭祀.理髮.入殓.安葬" }, "d0806": { "j": "诸事不宜", "y": "破屋.坏垣.余事勿取" }, "d0807": { "j": "行丧.安葬", "y": "破屋.坏垣.治病.余事勿取" }, "d0808": { "j": "动土.破土.订盟.安床.开池", "y": "祈福.斋醮.出行.冠笄.嫁娶" }, "d0809": { "j": "", "y": "祈福.求嗣.解除.订盟.纳采" }, "d0810": { "j": "", "y": "塑绘.开光.解除.订盟.纳采" }, "d0811": { "j": "", "y": "祈福.出行.订盟.纳采.嫁娶" }, "d0812": { "j": "动土.破土", "y": "嫁娶.祭祀.祈福.斋醮.作灶" }, "d0813": { "j": "作灶.动土.破土", "y": "嫁娶.出行.纳畜.祭祀.入殓" }, "d0814": { "j": "嫁娶.开市", "y": "订盟.纳采.祭祀.祈福.修造" }, "d0815": { "j": "开市.安葬", "y": "订盟.纳采.出行.会亲友.修造" }, "d0816": { "j": "嫁娶.祈福.余事勿取", "y": "沐浴" }, "d0817": { "j": "开市.安葬", "y": "嫁娶.祭祀.祈福.斋醮.动土" }, "d0818": { "j": "嫁娶.入宅", "y": "捕捉.结网.入殓.破土.安葬" }, "d0819": { "j": "诸事不宜", "y": "沐浴.治病.破屋.坏垣.余事勿取" }, "d0820": { "j": "动土.破土", "y": "嫁娶.订盟.纳采.出行.开市" }, "d0821": { "j": "开光.针灸", "y": "嫁娶.订盟.纳采.祭祀.祈福" }, "d0822": { "j": "动土.安葬", "y": "订盟.纳采.祭祀.祈福.安机械" }, "d0823": { "j": "入宅.作梁.安门.伐木.修造", "y": "嫁娶.祭祀.祈福.求嗣.出行" }, "d0824": { "j": "盖屋.开光.理髮.造船.掘井", "y": "嫁娶.祭祀.祈福.求嗣.出行" }, "d0825": { "j": "破土.置产.掘井.动土.安床", "y": "祭祀.祈福.求嗣.开光.出行" }, "d0826": { "j": "嫁娶.会亲友.进人口.出行.入宅", "y": "祭祀.解除.沐浴.理髮.整手足甲" }, "d0827": { "j": "嫁娶.纳财.祈福.安葬.修造", "y": "塑绘.开光.进人口.纳畜.补垣" }, "d0828": { "j": "诸事不宜", "y": "作灶.沐浴.修饰垣墙.平治道涂.余事勿取" }, "d0829": { "j": "嫁娶.移徙", "y": "祭祀.求嗣.开光.出行.伐木" }, "d0830": { "j": "诸事不宜", "y": "祭祀.塞穴.入殓.破土.安葬" }, "d0831": { "j": "诸事不宜", "y": "破屋.坏垣.余事勿取" }, "d0901": { "j": "诸事不宜", "y": "祭祀.入殓.移柩.结网.启钻" }, "d0902": { "j": "栽种.作灶.针灸.出行", "y": "嫁娶.出火.拆卸.祭祀.祈福" }, "d0903": { "j": "动土.破土.嫁娶.理髮.出行", "y": "祭祀.开光.解除.进人口.交易" }, "d0904": { "j": "盖屋.入殓.安葬.伐木.入宅", "y": "嫁娶.祭祀.祈福.求嗣.开光" }, "d0905": { "j": "开光.出行.修造.上樑.入宅", "y": "祭祀.动土.筑堤.开池.会亲友" }, "d0906": { "j": "安床.动土.安葬.开生坟.合寿木", "y": "祭祀.裁衣.安门.纳财.扫舍" }, "d0907": { "j": "动土.作灶.行丧.安葬.修坟", "y": "祭祀.祈福.求嗣.出行.沐浴" }, "d0908": { "j": "造庙.安门.行丧.安葬", "y": "出行.解除.纳采.冠笄.雕刻" }, "d0909": { "j": "", "y": "开光.塑绘.出行.解除.冠笄" }, "d0910": { "j": "嫁娶.入宅.上樑.安门", "y": "祭祀.祈福.修饰垣墙.平治道涂.入殓" }, "d0911": { "j": "入宅.伐木", "y": "祭祀.会亲友.纳采.嫁娶.开光" }, "d0912": { "j": "作灶.祭祀.入宅.嫁娶", "y": "祭祀.冠笄.会亲友.拆卸.起基" }, "d0913": { "j": "移徙.入宅.出行.栽种", "y": "祭祀.沐浴.破屋.坏垣.余事勿取" }, "d0914": { "j": "造桥.冠笄.盖屋.掘井", "y": "祭祀.塑绘.开光.出行.解除" }, "d0915": { "j": "定磉.安葬", "y": "祭祀.会亲友.进人口.动土.上樑" }, "d0916": { "j": "移徙.入宅.作灶", "y": "祭祀.裁衣.冠笄.嫁娶.纳婿" }, "d0917": { "j": "入殓.安葬.开市.交易", "y": "诸事不宜" }, "d0918": { "j": "安床.开光.开市.交易", "y": "祭祀.裁衣.冠笄.嫁娶.安机械" }, "d0919": { "j": "动土.冠笄.移徙.入宅.开市", "y": "祭祀.出行.成服.除服.沐浴" }, "d0920": { "j": "诸事不宜", "y": "祭祀.沐浴.赴任.出行.余事勿取" }, "d0921": { "j": "诸事不宜", "y": "诸事不宜" }, "d0922": { "j": "嫁娶.移徙.入宅.开市", "y": "沐浴.入殓.移柩.除服.成服" }, "d0923": { "j": "", "y": "嫁娶.祭祀.祈福.求嗣.沐浴" }, "d0924": { "j": "嫁娶.出行.安床.作灶.祭祀", "y": "开光.解除.起基.动土.拆卸" }, "d0925": { "j": "诸事不宜", "y": "破屋.坏垣.余事勿取" }, "d0926": { "j": "", "y": "嫁娶.祈福.求嗣.出行.出火" }, "d0927": { "j": "嫁娶.立碑.出行.伐木.安葬", "y": "开市.交易.立券.挂匾.祭祀" }, "d0928": { "j": "探病.开渠.安葬.伐木.作灶", "y": "祭祀.理髮.会亲友.进人口.嫁娶" }, "d0929": { "j": "余事勿取", "y": "祭祀.立碑.修坟.启钻.除服" }, "d0930": { "j": "掘井.祈福.安床.开市.入宅", "y": "嫁娶.出行.伐木.拆卸.修造" }, "d1001": { "j": "诸事不宜", "y": "祭祀.出行.扫舍.余事勿取" }, "d1002": { "j": "开光.作灶.斋醮.安葬", "y": "嫁娶.祭祀.出行.冠笄.立券" }, "d1003": { "j": "作灶.行丧.理髮.乘船.嫁娶", "y": "开市.交易.立券.挂匾.开光" }, "d1004": { "j": "诸事不宜", "y": "祭祀.沐浴.修饰垣墙.平治道涂.余事勿取" }, "d1005": { "j": "", "y": "嫁娶.祭祀.祈福.求嗣.开光" }, "d1006": { "j": "诸事不宜", "y": "解除.坏垣.余事勿取" }, "d1007": { "j": "诸事不宜", "y": "祭祀.治病.破屋.坏垣.余事勿取" }, "d1008": { "j": "诸事不宜", "y": "破屋.坏垣.余事勿取" }, "d1009": { "j": "出行.祈福.安葬.作灶", "y": "会亲友.嫁娶.订盟.纳采.纳婿" }, "d1010": { "j": "开仓.冠笄.伐木.作梁", "y": "祭祀.塑绘.开光.祈福.斋醮" }, "d1011": { "j": "栽种.动土.安葬.开市", "y": "祭祀.作灶.入殓.除服.成服" }, "d1012": { "j": "作灶.入殓.安葬.安床", "y": "祭祀.祈福.斋醮.沐浴.竖柱" }, "d1013": { "j": "动土.上樑", "y": "嫁娶.祭祀.安机械.入殓.破土" }, "d1014": { "j": "行丧.安葬", "y": "作灶.造畜稠" }, "d1015": { "j": "嫁娶.入宅", "y": "沐浴.理髮.入学.习艺.进人口" }, "d1016": { "j": "开市.动土.破土", "y": "开光.针灸.会亲友.启钻.安葬" }, "d1017": { "j": "余事勿取", "y": "祭祀" }, "d1018": { "j": "移徙.入宅", "y": "入殓.除服.成服.移柩.破土" }, "d1019": { "j": "开市.赴任", "y": "嫁娶.订盟.纳采.出行.祭祀" }, "d1020": { "j": "余事勿取", "y": "祭祀.解除.破屋.坏垣.余事勿取" }, "d1021": { "j": "祈福.安葬", "y": "订盟.纳采.会亲友.安机械.纳财" }, "d1022": { "j": "斋醮.安门", "y": "嫁娶.订盟.纳采.出行.开市" }, "d1023": { "j": "诸事不宜", "y": "祭祀.塞穴.余事勿取" }, "d1024": { "j": "嫁娶.作灶.修坟.安门.入宅", "y": "祭祀.祈福.求嗣.开光.开市" }, "d1025": { "j": "嫁娶.开光.会亲友.掘井.安门", "y": "祭祀.解除.裁衣.理髮.安床" }, "d1026": { "j": "动土.伐木.作梁.行丧.安葬", "y": "祭祀.出行.裁衣.冠笄.会亲友" }, "d1027": { "j": "安葬.修坟.作灶.破土.造庙", "y": "祭祀.祈福.求嗣.开光.出行" }, "d1028": { "j": "嫁娶.作灶.出火.出行.入宅", "y": "开市.交易.立券.纳财.会亲友" }, "d1029": { "j": "诸事不宜", "y": "造畜稠.平治道涂.余事勿取" }, "d1030": { "j": "余事勿取", "y": "入殓.破土.安葬.启钻.除服" }, "d1031": { "j": "余事勿取", "y": "祭祀.入殓.移柩.开生坟.破土" }, "d1101": { "j": "诸事不宜", "y": "祭祀.解除.破屋.坏垣.余事勿取" }, "d1102": { "j": "上樑.作灶.伐木.出行.安葬", "y": "嫁娶.求嗣.纳采.进人口.纳财" }, "d1103": { "j": "纳畜.伐木.置产.作梁.行丧", "y": "嫁娶.祭祀.开市.开光.出行" }, "d1104": { "j": "安葬.开市.修坟.立碑", "y": "嫁娶.祭祀.作灶.纳财" }, "d1105": { "j": "安床.安葬", "y": "嫁娶.祭祀.祈福.求嗣.开光" }, "d1106": { "j": "开光.栽种", "y": "嫁娶.祭祀.祈福.求嗣.动土" }, "d1107": { "j": "开光.掘井.安葬.谢土.修坟", "y": "嫁娶.冠笄.安床.纳采.会亲友" }, "d1108": { "j": "诸事不宜", "y": "祭祀.沐浴.余事勿取" }, "d1109": { "j": "入宅.作灶.安床.开仓", "y": "祭祀.会亲友.嫁娶.沐浴.修造" }, "d1110": { "j": "嫁娶.入宅.安门.移徙", "y": "理髮.会亲友.补垣.塞穴.结网" }, "d1111": { "j": "作灶.治病.伐木.作梁", "y": "祭祀.祈福.订盟.纳采.裁衣" }, "d1112": { "j": "作灶.治病", "y": "祭祀.祈福.订盟.纳采.裁衣" }, "d1113": { "j": "开市.交易.破土.作灶", "y": "祭祀.塑绘.开光.订盟.纳采" }, "d1114": { "j": "诸事不宜", "y": "祭祀.解除.破屋.坏垣.余事勿取" }, "d1115": { "j": "盖屋.治病", "y": "祭祀.解除.祈福.开光.塑绘" }, "d1116": { "j": "嫁娶.入宅.治病.赴任", "y": "祭祀.祈福.订盟.纳采.裁衣" }, "d1117": { "j": "诸事不宜", "y": "沐浴.扫舍.余事勿取" }, "d1118": { "j": "诸事不宜", "y": "诸事不宜" }, "d1119": { "j": "入宅.作灶", "y": "祈福.斋醮.出行.订盟.纳采" }, "d1120": { "j": "嫁娶.动土.安葬.作灶", "y": "祭祀.沐浴.出行.冠笄.进人口" }, "d1121": { "j": "开市", "y": "祭祀.祈福.斋醮.塑绘.开光" }, "d1122": { "j": "诸事不宜", "y": "诸事不宜" }, "d1123": { "j": "栽种.破土.置产.祭祀.嫁娶", "y": "开市.交易.立券.挂匾.纳财" }, "d1124": { "j": "", "y": "嫁娶.祭祀.祈福.求嗣.开光" }, "d1125": { "j": "嫁娶.开市.出火.栽种.破土", "y": "开光.解除.拆卸.修造.动土" }, "d1126": { "j": "诸事不宜", "y": "破屋.坏垣.余事勿取" }, "d1127": { "j": "探病.安葬", "y": "嫁娶.祭祀.开光.出火.出行" }, "d1128": { "j": "入宅.作灶.词讼.移徙.出行", "y": "祭祀.祈福.求嗣.开光.解除" }, "d1129": { "j": "安床.开市.交易.出货财.安葬", "y": "祭祀.沐浴.结网.移柩.入殓" }, "d1130": { "j": "余事勿取", "y": "解除.余事勿取" }, "d1201": { "j": "入宅.移徙.嫁娶.掘井.作灶", "y": "安床.祭祀.开池.补垣.入殓" }, "d1202": { "j": "余事勿取", "y": "祭祀.沐浴.余事勿取" }, "d1203": { "j": "置产.安床", "y": "嫁娶.开光.出行.解除.出火" }, "d1204": { "j": "嫁娶.冠笄.出行.祈福.安葬", "y": "开光.裁衣.安门.会亲友.安床" }, "d1205": { "j": "祈福.祭祀.伐木.掘井.作灶", "y": "嫁娶.开光.出行.出火.拆卸" }, "d1206": { "j": "栽种.掘井.置产", "y": "嫁娶.祭祀.祈福.求嗣.开光" }, "d1207": { "j": "掘井.伐木.斋醮.作灶", "y": "塑绘.开光.订盟.纳采.裁衣" }, "d1208": { "j": "出行.安葬.修坟.开市", "y": "祭祀.塑绘.开光.裁衣.冠笄" }, "d1209": { "j": "诸事不宜", "y": "祭祀.求医.破屋.坏垣.余事勿取" }, "d1210": { "j": "开光.栽种.治病.安门.作灶", "y": "祭祀.祈福.斋醮.出行.冠笄" }, "d1211": { "j": "", "y": "塑绘.斋醮.出行.拆卸.解除" }, "d1212": { "j": "开市.破土", "y": "祭祀.沐浴.安床.纳财.畋猎" }, "d1213": { "j": "嫁娶.作灶", "y": "订盟.纳采.祭祀.祈福.修造" }, "d1214": { "j": "入宅.安葬", "y": "出行.沐浴.理髮.补垣.塞穴" }, "d1215": { "j": "入宅.动土.破土.余事勿取", "y": "教牛马.余事勿取" }, "d1216": { "j": "开市.安葬", "y": "嫁娶.出行.求医.治病.祭祀" }, "d1217": { "j": "嫁娶.祈福", "y": "开市.立券.开光.解除.安机械" }, "d1218": { "j": "诸事不宜", "y": "平治道涂.余事勿取" }, "d1219": { "j": "开市.嫁娶", "y": "求嗣.斋醮.塑绘.订盟.纳采" }, "d1220": { "j": "开市.安葬", "y": "嫁娶.订盟.纳采.祭祀.祈福" }, "d1221": { "j": "诸事不宜", "y": "治病.破屋.坏垣.余事勿取" }, "d1222": { "j": "造桥.安门.理髮.造庙.栽种", "y": "祭祀.祈福.求嗣.斋醮.开光" }, "d1223": { "j": "诸事不宜", "y": "解除.坏垣.余事勿取" }, "d1224": { "j": "伐木.纳畜.上樑.入宅.作灶", "y": "沐浴.理髮.扫舍" }, "d1225": { "j": "嫁娶.出行.赴任.盖屋.入殓", "y": "祭祀.开光.祈福.解除.作梁" }, "d1226": { "j": "嫁娶.祈福.掘井.行丧.安葬", "y": "作梁.修造.动土.安门.作灶" }, "d1227": { "j": "余事勿取", "y": "安葬.启钻.移柩.入殓.除服" }, "d1228": { "j": "作灶.塑绘.行丧.词讼.伐木", "y": "嫁娶.祭祀.祈福.求嗣.出行" }, "d1229": { "j": "入宅.移徙.作灶.祈福.祭祀", "y": "理髮.开光.解除.拆卸.修造" }, "d1230": { "j": "诸事不宜", "y": "祭祀.修饰垣墙.余事勿取" }, "d1231": { "j": "嫁娶.开市.作灶.置产.作梁", "y": "入宅.安床.开光.祭祀.出火" } } ukui-panel-4.0.0.4/plugin-calendar/html/hlnew/hl2026.json0000644000175000017500000012370514560306203021314 0ustar fengfeng{ "d0101": { "j": "嫁娶.开市.安床.栽种.安葬", "y": "入宅.移徙.出行.进人口.修造" }, "d0102": { "j": "入宅.移徙.分居.作灶.出火", "y": "造畜稠.教牛马" }, "d0103": { "j": "破土.安葬.行丧.开生坟", "y": "订盟.纳采.造车器.祭祀.祈福" }, "d0104": { "j": "祈福.出火.嫁娶.入宅.开市", "y": "订盟.纳采.会亲友.安机械.开光" }, "d0105": { "j": "修造.上樑.入宅.祈福.探病", "y": "开市.交易.立券.纳财.开池" }, "d0106": { "j": "余事勿取", "y": "祭祀.解除.修饰垣墙.平治道涂.余事勿取" }, "d0107": { "j": "掘井.安葬.栽种.出行.作灶", "y": "嫁娶.祭祀.祈福.求嗣.动土" }, "d0108": { "j": "掘井.安葬.栽种.出行.作灶", "y": "嫁娶.祭祀.祈福.求嗣.开光" }, "d0109": { "j": "诸事不宜", "y": "破屋.坏垣.余事勿取" }, "d0110": { "j": "安床.伐木.祈福.纳畜", "y": "嫁娶.开市.交易.立券.开光" }, "d0111": { "j": "余事勿取", "y": "祭祀.入殓.破土.除服.成服" }, "d0112": { "j": "伐木.行丧.作灶.作梁.安葬", "y": "嫁娶.祭祀.塑绘.开光.出行" }, "d0113": { "j": "嫁娶.栽种.安葬.理髮.造庙", "y": "开市.交易.立券.纳财.纳畜" }, "d0114": { "j": "置产.嫁娶.出行.开光.栽种", "y": "安床.裁衣.交易.立券.入殓" }, "d0115": { "j": "嫁娶.动土.开池.安葬", "y": "祭祀.解除.造畜稠.教牛马.针灸" }, "d0116": { "j": "入宅.安门.祭祀.谢土", "y": "沐浴.塑绘.开光.纳采.订盟" }, "d0117": { "j": "掘井.祈福.谢土.动土.入宅", "y": "嫁娶.出行.理髮.安床.启钻" }, "d0118": { "j": "移徙.入宅.掘井.造庙.栽种", "y": "解除.平治道涂.余事勿取" }, "d0119": { "j": "开市.行丧.栽种.出行.出货财", "y": "嫁娶.祭祀.开光.伐木.出火" }, "d0120": { "j": "伐木.开市.交易.上樑.作灶", "y": "嫁娶.纳采.订盟.入宅.移徙" }, "d0121": { "j": "开市.动土.破土", "y": "祭祀.破屋.坏垣.解除.余事勿取" }, "d0122": { "j": "祈福.造庙.祭祀.安床.谢土", "y": "嫁娶.纳采.订盟.开光.安香" }, "d0123": { "j": "嫁娶.入宅.作灶.纳采.订盟", "y": "祭祀.斋醮.入殓.破土.启钻" }, "d0124": { "j": "嫁娶.开市.入宅.安床.破土", "y": "祭祀.斋醮.纳财.捕捉.畋猎" }, "d0125": { "j": "嫁娶.合帐.入宅.行丧.安葬", "y": "纳采.订盟.祭祀.祈福.求嗣" }, "d0126": { "j": "入宅.置产.嫁娶.动土.栽种", "y": "祭祀.祈福.求嗣.沐浴.问名" }, "d0127": { "j": "嫁娶.入宅.出行.动土.破土", "y": "祭祀.教牛马.造畜稠.祭祀.会亲友" }, "d0128": { "j": "作灶.安葬.祭祀.开市.纳采", "y": "嫁娶.开光.解除.出火.拆卸" }, "d0129": { "j": "挂匾.入宅.上樑.祈福.词讼", "y": "出行.起基.安床.纳财.交易" }, "d0130": { "j": "开光.嫁娶.开仓.出货财.造船", "y": "平治道涂.余事勿取" }, "d0131": { "j": "开市.出行.安葬.行丧", "y": "嫁娶.订盟.纳采.会亲友.祭祀" }, "d0201": { "j": "纳采.订盟.嫁娶.上樑.开市", "y": "沐浴.捕捉.畋猎.理髮.整手足甲" }, "d0202": { "j": "斋醮.嫁娶.开市", "y": "祭祀.破屋.坏垣.余事勿取" }, "d0203": { "j": "祈福.嫁娶.安床.入宅.造船", "y": "沐浴.开仓.出货财.开市.交易" }, "d0204": { "j": "嫁娶.作灶.安床", "y": "祭祀.祈福.求嗣.开光.出火" }, "d0205": { "j": "诸事不宜", "y": "结网.入殓.除服.成服.移柩" }, "d0206": { "j": "嫁娶.安葬.破土.作梁.纳畜", "y": "移徙.祭祀.开光.祈福.出行" }, "d0207": { "j": "入宅.作灶.伐木.安葬.出火", "y": "嫁娶.开光.祈福.求嗣.解除" }, "d0208": { "j": "词讼.出火.入宅", "y": "祭祀.合帐.裁衣.经络.伐木" }, "d0209": { "j": "诸事不宜", "y": "裁衣.伐木.作梁.纳财.交易" }, "d0210": { "j": "", "y": "动土.上樑.进人口.入宅.移徙" }, "d0211": { "j": "入宅.作灶.治病.安葬.移徙", "y": "嫁娶.冠笄.纳采.出行.会亲友" }, "d0212": { "j": "诸事不宜", "y": "修饰垣墙" }, "d0213": { "j": "开光.盖屋.动土.作灶.栽种", "y": "造车器.纳采.订盟.祭祀.祈福" }, "d0214": { "j": "开市.作灶.安床.入宅.上樑", "y": "动土.入殓.嫁娶.移柩.安葬" }, "d0215": { "j": "开市.嫁娶", "y": "求医.治病.破屋.坏垣.余事勿取" }, "d0216": { "j": "开市.嫁娶.安床.会亲友.入宅", "y": "祭祀.斋醮.沐浴.开生坟.除服" }, "d0217": { "j": "嫁娶.入宅", "y": "祭祀.塞穴.结网.破土.谢土" }, "d0218": { "j": "嫁娶.词讼.行丧.安葬.牧养", "y": "祭祀.沐浴.理髮.作灶.结网" }, "d0219": { "j": "入宅.安葬.伐木.作梁.纳畜", "y": "嫁娶.祭祀.开光.祈福.求嗣" }, "d0220": { "j": "栽种.开光.出行.针灸.嫁娶", "y": "祭祀.祈福.求嗣.纳畜.入殓" }, "d0221": { "j": "入宅.出行.移徙.祭祀.嫁娶", "y": "开光.解除.伐木.竖柱.上樑" }, "d0222": { "j": "移徙.入宅.出火.作灶.掘井", "y": "祭祀.祈福.求嗣.开光.嫁娶" }, "d0223": { "j": "嫁娶.开市.动土.作灶.安葬", "y": "会亲友.冠笄.安床.会亲友.安机械" }, "d0224": { "j": "祭祀.祈福.安葬.安门", "y": "作灶" }, "d0225": { "j": "经络.探病.盖屋.作灶.动土", "y": "嫁娶.祭祀.冠笄.修饰垣墙.置产" }, "d0226": { "j": "开市.入宅.斋醮", "y": "纳采.嫁娶.祭祀.祈福.出行" }, "d0227": { "j": "嫁娶.安葬", "y": "祭祀.沐浴.解除.理髮.扫舍" }, "d0228": { "j": "安床.作灶.造船.会亲友", "y": "纳采.订盟.祭祀.祈福.安香" }, "d0301": { "j": "嫁娶.安门.移徙.入宅.安葬", "y": "塞穴.结网.取渔.畋猎" }, "d0302": { "j": "嫁娶.开市.安葬.破土", "y": "纳采.祭祀.祈福.出行.会亲友" }, "d0303": { "j": "移徙.入宅.出火.安门.安葬", "y": "纳采.嫁娶.祭祀.祈福.出行" }, "d0304": { "j": "嫁娶.动土.开光.盖屋.破土", "y": "祭祀.祈福.求嗣.斋醮.入殓" }, "d0305": { "j": "祭祀.开光.嫁娶.入宅", "y": "订盟.纳采.裁衣.合帐.冠笄" }, "d0306": { "j": "掘井.动土.作灶.栽种", "y": "祭祀.出行.嫁娶.冠笄.安床" }, "d0307": { "j": "安门.作灶.安葬.嫁娶", "y": "塞穴.诸事不宜" }, "d0308": { "j": "出行.斋醮.安葬.嫁娶", "y": "开光.塑绘.求嗣.纳采.裁衣" }, "d0309": { "j": "栽种.盖屋.作灶.入宅", "y": "祭祀.嫁娶.纳婿.安葬" }, "d0310": { "j": "伐木.作梁", "y": "祭祀.会亲友.订盟.裁衣.合帐" }, "d0311": { "j": "入宅.安门", "y": "祭祀.开光.塑绘.祈福.斋醮" }, "d0312": { "j": "诸事不宜", "y": "祭祀.治病.破屋.坏垣.余事勿取" }, "d0313": { "j": "造庙.造船.动土.破土.安葬", "y": "纳采.订盟.嫁娶.祭祀.祈福" }, "d0314": { "j": "嫁娶.行丧.架马.作梁.理髮", "y": "开市.立券.交易.挂匾.祭祀" }, "d0315": { "j": "置产.伐木.纳畜.造畜稠.安葬", "y": "理髮.冠笄.嫁娶.进人口" }, "d0316": { "j": "合帐.开市.安葬.入殓", "y": "嫁娶.祭祀.开光.祈福.求嗣" }, "d0317": { "j": "嫁娶.祭祀.开光.出行.出火", "y": "安床.伐木.拆卸.修造.动土" }, "d0318": { "j": "祈福.动土.移徙.入宅", "y": "祭祀.祈福.求嗣.斋醮.嫁娶" }, "d0319": { "j": "嫁娶.作灶.掘井.安葬", "y": "塞穴.整手足甲.解除.捕捉.畋猎" }, "d0320": { "j": "动土.破土.安葬.行丧.赴任", "y": "纳财.开市.立券.交易.开光" }, "d0321": { "j": "开仓.出货财.盖屋.作灶.开市", "y": "祭祀.祈福.嫁娶.冠笄.修饰垣墙" }, "d0322": { "j": "动土.伐木.安葬.行丧", "y": "嫁娶.祭祀.开光.祈福.求嗣" }, "d0323": { "j": "开市.交易.作灶.纳财.上樑", "y": "嫁娶.开光.祭祀.祈福.求嗣" }, "d0324": { "j": "开光.嫁娶", "y": "破屋.坏垣.求医.治病.余事勿取" }, "d0325": { "j": "嫁娶.开光.作灶", "y": "纳采.交易.立券.安床.安机械" }, "d0326": { "j": "嫁娶.定磉.合寿木.安葬.行丧", "y": "祭祀.祈福.求嗣.斋醮.沐浴" }, "d0327": { "j": "入宅.盖屋.竖柱.安葬", "y": "纳财.交易.立券.栽种.捕捉" }, "d0328": { "j": "开市.交易.合帐.安葬", "y": "嫁娶.订盟.纳采.祭祀.祈福" }, "d0329": { "j": "嫁娶.祈福.出火.入宅", "y": "冠笄.立券.交易.修造.动土" }, "d0330": { "j": "嫁娶.动土.掘井.起基.定磉", "y": "祭祀.会亲友.出行.立券.交易" }, "d0331": { "j": "嫁娶.安葬.行丧.安门", "y": "祭祀.沐浴.解除.扫舍.塞穴" }, "d0401": { "j": "移徙.入宅.栽种", "y": "纳财.开市.交易.立券.开光" }, "d0402": { "j": "开市.盖屋.治病.作灶", "y": "嫁娶.冠笄.会亲友.安机械.纳财" }, "d0403": { "j": "纳畜.理髮.合寿木", "y": "嫁娶.造车器.纳采.订盟.祭祀" }, "d0404": { "j": "纳采.开光.安床.嫁娶.开市", "y": "祈福.斋醮.出行.移徙.入宅" }, "d0405": { "j": "动土.破土.纳财.掘井.挂匾", "y": "祭祀.祈福.求嗣.开光.解除" }, "d0406": { "j": "诸事不宜", "y": "祭祀.解除.破屋.坏垣.余事勿取" }, "d0407": { "j": "诸事不宜", "y": "塞穴.扫舍.余事勿取" }, "d0408": { "j": "诸事不宜", "y": "祭祀.破屋.坏垣.余事勿取" }, "d0409": { "j": "诸事不宜", "y": "解除.破屋.余事勿取" }, "d0410": { "j": "祭祀.入殓.安葬.探病", "y": "嫁娶.祈福.求嗣.开光.出行" }, "d0411": { "j": "嫁娶.掘井.探病.开市.开光", "y": "祭祀.裁衣.冠笄.安床.交易" }, "d0412": { "j": "开光.伐木.安葬.破土", "y": "祭祀.出行.教牛马.扫舍.余事勿取" }, "d0413": { "j": "修坟.造桥.作灶.出行.安葬", "y": "祭祀.祈福.求嗣.开光.纳采" }, "d0414": { "j": "祈福.出火.置产.动土.破土", "y": "开光.出行.交易.塞穴.嫁娶" }, "d0415": { "j": "嫁娶.安床.治病", "y": "祭祀.作灶.畋猎.结网.修饰垣墙" }, "d0416": { "j": "斋醮.开光.嫁娶.入宅.上樑", "y": "沐浴.祭祀.解除.安葬.破土" }, "d0417": { "j": "动土.破土", "y": "祭祀.解除.入殓.移柩.启钻" }, "d0418": { "j": "嫁娶.开市", "y": "祭祀.沐浴.解除.破屋.坏垣" }, "d0419": { "j": "祈福.安葬", "y": "沐浴.塞穴.畋猎.结网.取渔" }, "d0420": { "j": "纳采.问名.订盟.嫁娶.入宅", "y": "开市.交易.立券.挂匾.祭祀" }, "d0421": { "j": "嫁娶.入宅", "y": "祭祀.修门.取渔.纳财.纳畜" }, "d0422": { "j": "作灶.安葬.祭祀.入殓", "y": "安香.出火.纳采.订盟.嫁娶" }, "d0423": { "j": "移徙.入宅.作灶.理髮.开光", "y": "祭祀.出行.修造.动土.合帐" }, "d0424": { "j": "开光.修造.动土.破土", "y": "祭祀.修饰垣墙.余事勿取" }, "d0425": { "j": "纳采.出行.修坟.安葬.开市", "y": "嫁娶.祭祀.祈福.求嗣.斋醮" }, "d0426": { "j": "祈福.入宅.盖屋.动土.破土", "y": "祭祀.塑绘.开光.纳采.嫁娶" }, "d0427": { "j": "安床.入宅.安碓.栽种", "y": "祭祀" }, "d0428": { "j": "移徙.入宅.嫁娶.出行.安床", "y": "祭祀.祈福.求嗣.斋醮.沐浴" }, "d0429": { "j": "嫁娶.开市.纳财.出火", "y": "纳采.祭祀.祈福.求嗣.斋醮" }, "d0430": { "j": "祈福.斋醮.开市.安葬", "y": "祭祀.沐浴.解除.求医.治病" }, "d0501": { "j": "祭祀.嫁娶.入宅.作灶.安葬", "y": "沐浴.捕捉.畋猎.结网.取渔" }, "d0502": { "j": "出火.嫁娶.开市", "y": "祭祀.祈福.求嗣.斋醮.纳采" }, "d0503": { "j": "嫁娶.安葬", "y": "祭祀.捕捉.解除.余事勿取" }, "d0504": { "j": "祈福.动土.破土.安葬.入殓", "y": "纳采.嫁娶.出行.开市.立券" }, "d0505": { "j": "纳畜.入宅.移徙.安葬.探病", "y": "嫁娶.祭祀.祈福.求嗣.开光" }, "d0506": { "j": "开光.掘井.开仓", "y": "嫁娶.祭祀.祈福.求嗣.出行" }, "d0507": { "j": "诸事不宜", "y": "解除.扫舍.余事勿取" }, "d0508": { "j": "嫁娶.安床.探病.作灶", "y": "开市.交易.立券.挂匾.开光" }, "d0509": { "j": "塞穴.上樑.动土.伐木.安葬", "y": "进人口.会亲友" }, "d0510": { "j": "嫁娶.移徙.伐木.作梁.安床", "y": "沐浴.平治道涂.扫舍.入殓.破土" }, "d0511": { "j": "", "y": "嫁娶.祭祀.祈福.求嗣.开光" }, "d0512": { "j": "祈福.开市.动土.行丧.安葬", "y": "塑绘.冠笄.嫁娶.会亲友.进人口" }, "d0513": { "j": "诸事不宜", "y": "破屋.坏垣.沐浴.解除.余事勿取" }, "d0514": { "j": "开市.立券", "y": "纳采.订盟.嫁娶.造车器.祭祀" }, "d0515": { "j": "嫁娶.掘井.入宅.移徙.安葬", "y": "开市.交易.立券.祭祀.祈福" }, "d0516": { "j": "祭祀.伐木.架马.安床.修造", "y": "解除.出行.纳采.冠笄.竖柱" }, "d0517": { "j": "入宅.移徙.修造.安门.伐木", "y": "祭祀.祈福.求嗣.开光.出行" }, "d0518": { "j": "安床.开渠.上樑.修造.开市", "y": "嫁娶.交易.立券.开厕.补垣" }, "d0519": { "j": "嫁娶.安葬.入宅.出行.动土", "y": "塞穴.断蚁.结网.畋猎.余事勿取" }, "d0520": { "j": "作灶.安床.开仓.盖屋.动土", "y": "纳采.订盟.嫁娶.祭祀.祈福" }, "d0521": { "j": "嫁娶.栽种.修造.动土.出行", "y": "开光.纳采.裁衣.冠笄.安床" }, "d0522": { "j": "伐木.安葬.安床.祭祀.祈福", "y": "纳采.嫁娶.裁衣.理髮.出行" }, "d0523": { "j": "作灶.嫁娶.移徙.入宅.理髮", "y": "开市.交易.立券.挂匾.祭祀" }, "d0524": { "j": "开市.立券.造船.合寿木", "y": "嫁娶.纳采.订盟.祭祀.祈福" }, "d0525": { "j": "开光.安葬", "y": "祭祀.沐浴.解除.破屋.坏垣" }, "d0526": { "j": "作灶.开市.经络", "y": "订盟.纳采.嫁娶.解除.祭祀" }, "d0527": { "j": "安床.上樑.裁衣.入宅.嫁娶", "y": "祭祀.祈福.求嗣.开光.订盟" }, "d0528": { "j": "探病.嫁娶.开市", "y": "祭祀.结网.捕捉.余事勿取" }, "d0529": { "j": "入宅.安门.安葬", "y": "祭祀.祈福.求嗣.开光.纳采" }, "d0530": { "j": "入宅.盖屋.造桥.安门.安葬", "y": "嫁娶.冠笄.祭祀.出行.移徙" }, "d0531": { "j": "嫁娶.安葬", "y": "祭祀.解除.断蚁.会亲友.余事勿取" }, "d0601": { "j": "开市.出行.安床.作灶.安葬", "y": "嫁娶.纳采.订盟.祭祀.祈福" }, "d0602": { "j": "开市.作灶.动土.行丧.安葬", "y": "嫁娶.纳采.订盟.会亲友.安机械" }, "d0603": { "j": "祈福.嫁娶.入宅.安床.作灶", "y": "祭祀.沐浴.移徙.破土.安葬" }, "d0604": { "j": "动土.破土.嫁娶.嫁娶", "y": "祭祀.祈福.斋醮.求嗣.安机械" }, "d0605": { "j": "", "y": "嫁娶.祭祀.开光.祈福.求嗣" }, "d0606": { "j": "嫁娶.开市.交易.行丧.安葬", "y": "祭祀.祈福.求嗣.开光.出行" }, "d0607": { "j": "诸事不宜", "y": "破屋.坏垣.余事勿取" }, "d0608": { "j": "嫁娶.造桥.词讼.移徙.安门", "y": "开市.交易.立券.纳财.开池" }, "d0609": { "j": "嫁娶.出火.伐木.祭祀.入宅", "y": "开市.交易.立券.纳财.栽种" }, "d0610": { "j": "诸事不宜", "y": "祭祀.作灶.余事勿取" }, "d0611": { "j": "诸事不宜", "y": "解除.坏垣.余事勿取" }, "d0612": { "j": "嫁娶.掘井.入宅.移徙.出火", "y": "修造.动土.起基.安门.安床" }, "d0613": { "j": "斋醮.移徙.入宅.动土", "y": "祭祀" }, "d0614": { "j": "行丧.安葬.破土.作灶.伐木", "y": "纳采.订盟.嫁娶.祭祀.祈福" }, "d0615": { "j": "纳采.订盟.安床.谢土.破土", "y": "嫁娶.开光.祭祀.祈福.出行" }, "d0616": { "j": "破土.出行.栽种", "y": "嫁娶.祭祀.理髮.作灶.修饰垣墙" }, "d0617": { "j": "动土.掘井.破土", "y": "嫁娶.纳采.订盟.祭祀.祈福" }, "d0618": { "j": "嫁娶.开市.安葬.启钻.行丧", "y": "畋猎.捕捉.结网.取渔.祭祀" }, "d0619": { "j": "移徙.入宅.开仓.出货财", "y": "祭祀.破屋.坏垣.余事勿取" }, "d0620": { "j": "出火.入宅", "y": "祭祀.斋醮.塑绘.开光.出行" }, "d0621": { "j": "作灶.出火.祭祀.嫁娶.入宅", "y": "开市.交易.立券.挂匾.开光" }, "d0622": { "j": "入宅.出行.掘井.安葬", "y": "祭祀.结网.余事勿取" }, "d0623": { "j": "行丧.置产.入宅.安葬", "y": "嫁娶.纳采.订盟.冠笄.造车器" }, "d0624": { "j": "安床.祈福.出行.安葬.行丧", "y": "嫁娶.合帐.裁衣.冠笄.伐木" }, "d0625": { "j": "斋醮.盖屋.动土.破土", "y": "出行" }, "d0626": { "j": "安葬.开生坟.秋.行丧", "y": "嫁娶.祭祀.祈福.求嗣.开光" }, "d0627": { "j": "嫁娶.安床.作灶.动土.破土", "y": "安机械.祭祀.祈福.求嗣.沐浴" }, "d0628": { "j": "开市.入宅.出行.修造.词讼", "y": "祭祀.沐浴.理髮.整手足甲.修饰垣墙" }, "d0629": { "j": "开光.作灶.盖屋.架马.开仓", "y": "嫁娶.纳采.祭祀.祈福.出行" }, "d0630": { "j": "嫁娶.开市.合寿木.安葬", "y": "纳采.订盟.冠笄.祭祀.祈福" }, "d0701": { "j": "入宅.嫁娶.移徙", "y": "祭祀.沐浴.破屋.坏垣.余事勿取" }, "d0702": { "j": "作灶.理髮.造桥.行丧.安葬", "y": "嫁娶.安机械.交易.出行.祭祀" }, "d0703": { "j": "斋醮.祭祀.移徙.入宅.上樑", "y": "纳采.冠笄.求医.治病.开市" }, "d0704": { "j": "开市.安葬.破土.修坟.掘井", "y": "祭祀.作灶.余事勿取" }, "d0705": { "j": "合帐.上樑.经络.安葬.入殓", "y": "祭祀.祈福.求嗣.斋醮.安香" }, "d0706": { "j": "祈福.开光.掘井.开市.安葬", "y": "嫁娶.冠笄.修造.动土.作灶" }, "d0707": { "j": "余事勿取", "y": "祭祀.入殓.破土.除服.成服" }, "d0708": { "j": "嫁娶.作灶.安葬.动土.词讼", "y": "祭祀.出行.交易.割蜜.造畜稠" }, "d0709": { "j": "", "y": "嫁娶.祭祀.祈福.求嗣.开光" }, "d0710": { "j": "作灶.动土.上樑.栽种.入宅", "y": "嫁娶.开光.解除.安床.牧养" }, "d0711": { "j": "嫁娶.开市.交易.入宅.安葬", "y": "祭祀.沐浴.破屋.坏垣.求医" }, "d0712": { "j": "嫁娶.栽种.行丧.理髮.修坟", "y": "祭祀.祈福.求嗣.开光.伐木" }, "d0713": { "j": "嫁娶.开市.出火.作灶.置产", "y": "解除.祭祀.理髮.入殓.安葬" }, "d0714": { "j": "诸事不宜", "y": "破屋.坏垣.余事勿取" }, "d0715": { "j": "入宅.移徙.作灶.祭祀.谢土", "y": "开市.交易.立券.纳财.动土" }, "d0716": { "j": "掘井.伐木.纳畜.合寿木", "y": "嫁娶.纳采.订盟.祭祀.祈福" }, "d0717": { "j": "开渠.造船.安床.安葬.破土", "y": "祭祀.冠笄.作灶.交易.纳财" }, "d0718": { "j": "移徙.栽种.出行.行丧.破土", "y": "嫁娶.纳采.订盟.祭祀.祈福" }, "d0719": { "j": "开光.治病.嫁娶.掘井.破土", "y": "经络.祭祀.沐浴.补垣.塞穴" }, "d0720": { "j": "移徙.入宅.栽种.动土.破土", "y": "嫁娶.祭祀.出行.裁衣.冠笄" }, "d0721": { "j": "开市.入宅.出行.安床.作灶", "y": "修造.动土.安机械.祭祀.沐浴" }, "d0722": { "j": "上樑.入宅.修造.动土.破土", "y": "嫁娶.纳采.订盟.造车器.开光" }, "d0723": { "j": "动土.破土.治病.开渠", "y": "祭祀.嫁娶.畋猎.结网" }, "d0724": { "j": "嫁娶.作灶.出火.置产.嫁娶", "y": "纳采.订盟.会亲友.入学.祭祀" }, "d0725": { "j": "嫁娶.斋醮.开市.出火.入宅", "y": "祭祀.祈福.解除.整手足甲.安床" }, "d0726": { "j": "嫁娶.安葬", "y": "破屋.坏垣.解除.余事勿取" }, "d0727": { "j": "祭祀.祈福.探病.谢土.造桥", "y": "嫁娶.开市.立券.移徙.入宅" }, "d0728": { "j": "入宅.开市.掘井.词讼.合寿木", "y": "嫁娶.订盟.纳采.祭祀.祈福" }, "d0729": { "j": "安葬.破土.开市.开仓.出货财", "y": "纳采.订盟.嫁娶.移徙.入宅" }, "d0730": { "j": "出行.安葬.造桥", "y": "纳采.订盟.嫁娶.祭祀.沐浴" }, "d0731": { "j": "开市.入宅.嫁娶.开光.盖屋", "y": "祭祀.入殓.除服.成服.移柩" }, "d0801": { "j": "动土.破土.掘井.安葬", "y": "祭祀.修造.出行.盖屋.竖柱" }, "d0802": { "j": "嫁娶.出行.纳采.入宅.作灶", "y": "祭祀.沐浴.塑绘.开光.入学" }, "d0803": { "j": "斋醮.入宅.安门.安葬.破土", "y": "纳财.开市.交易.立券.出行" }, "d0804": { "j": "开市.动土.破土.嫁娶.修造", "y": "祭祀.修饰垣墙.平治道涂" }, "d0805": { "j": "嫁娶.安葬.行丧.破土.修坟", "y": "订盟.纳采.祭祀.祈福.开光" }, "d0806": { "j": "出火.嫁娶.入宅.作灶.破土", "y": "沐浴.理髮.捕捉.入殓.移柩" }, "d0807": { "j": "诸事不宜", "y": "祭祀.塞穴.入殓.破土.安葬" }, "d0808": { "j": "诸事不宜", "y": "破屋.坏垣.余事勿取" }, "d0809": { "j": "诸事不宜", "y": "祭祀.入殓.移柩.结网.启钻" }, "d0810": { "j": "栽种.作灶.针灸.出行", "y": "嫁娶.出火.拆卸.祭祀.祈福" }, "d0811": { "j": "动土.破土.嫁娶.理髮.出行", "y": "祭祀.开光.解除.进人口.交易" }, "d0812": { "j": "盖屋.入殓.安葬.伐木.入宅", "y": "嫁娶.祭祀.祈福.求嗣.开光" }, "d0813": { "j": "开光.出行.修造.上樑.入宅", "y": "祭祀.动土.筑堤.开池.会亲友" }, "d0814": { "j": "安床.动土.安葬.开生坟.合寿木", "y": "祭祀.裁衣.安门.纳财.扫舍" }, "d0815": { "j": "嫁娶.出行.进人口.作灶.入宅", "y": "祭祀.解除.拆卸.修造.动土" }, "d0816": { "j": "伐木.谢土.行丧.祭祀.作灶", "y": "纳采.订盟.开光.出行.解除" }, "d0817": { "j": "嫁娶.词讼.治病.置产.作梁", "y": "修饰垣墙.平治道涂.祭祀.沐浴.作灶" }, "d0818": { "j": "斋醮.开市.开仓.作灶.造船", "y": "嫁娶.祭祀.祈福.求嗣.出火" }, "d0819": { "j": "嫁娶.入宅.开市.交易", "y": "破土.安葬.移柩.入殓.祭祀" }, "d0820": { "j": "祈福.纳采.订盟.嫁娶.入宅", "y": "破屋.坏垣.治病.余事勿取" }, "d0821": { "j": "掘井.理髮.作灶.动土.破土", "y": "嫁娶.开光.祭祀.祈福.求嗣" }, "d0822": { "j": "入宅.嫁娶.掘井.牧养", "y": "安机械.纳采.订盟.祭祀.祈福" }, "d0823": { "j": "行丧.安葬.出行.作梁.纳畜", "y": "嫁娶.祭祀.祈福.求嗣.裁衣" }, "d0824": { "j": "入宅.上樑.入殓.盖屋.探病", "y": "嫁娶.纳采.订盟.开光.祭祀" }, "d0825": { "j": "嫁娶.入宅.斋醮.开光.针灸", "y": "祭祀.出行.作梁.出火.拆卸" }, "d0826": { "j": "栽种.掘井.动土.安床.破土", "y": "嫁娶.纳采.订盟.祭祀.祈福" }, "d0827": { "j": "出火.嫁娶.开光.进人口.出行", "y": "解除.祭祀.祈福.求嗣.修造" }, "d0828": { "j": "开市.入宅.动土.破土.安葬", "y": "沐浴.理髮.会亲友.塑绘.开光" }, "d0829": { "j": "嫁娶.栽种.祈福.造桥.安葬", "y": "祭祀.理髮.作灶.沐浴.修饰垣墙" }, "d0830": { "j": "开市.立券.置产.作灶.造桥", "y": "嫁娶.纳采.订盟.祭祀.祈福" }, "d0831": { "j": "开市.交易.入宅.嫁娶", "y": "祭祀.普渡.捕捉.解除.结网" }, "d0901": { "j": "斋醮.开市", "y": "沐浴.破屋.坏垣.余事勿取" }, "d0902": { "j": "动土.破土.嫁娶.掘井.安床", "y": "订盟.纳采.祭祀.祈福.安香" }, "d0903": { "j": "纳采.订盟.经络.行丧.安葬", "y": "嫁娶.祭祀.祈福.斋醮.普渡" }, "d0904": { "j": "掘井.出行.破土.行丧.安葬", "y": "嫁娶.订盟.纳采.作灶.冠笄" }, "d0905": { "j": "出火.入宅.盖屋.安门.安葬", "y": "嫁娶.订盟.纳采.祭祀.斋醮" }, "d0906": { "j": "动土.破土.掘井.开光.上樑", "y": "嫁娶.普渡.祭祀.祈福.补垣" }, "d0907": { "j": "掘井.祈福.安床.开市.入宅", "y": "嫁娶.出行.伐木.拆卸.修造" }, "d0908": { "j": "诸事不宜", "y": "祭祀.出行.扫舍.余事勿取" }, "d0909": { "j": "开光.作灶.斋醮.安葬", "y": "嫁娶.祭祀.出行.冠笄.立券" }, "d0910": { "j": "作灶.行丧.理髮.乘船.嫁娶", "y": "开市.交易.立券.挂匾.开光" }, "d0911": { "j": "诸事不宜", "y": "祭祀.沐浴.修饰垣墙.平治道涂.余事勿取" }, "d0912": { "j": "", "y": "嫁娶.祭祀.祈福.求嗣.开光" }, "d0913": { "j": "诸事不宜", "y": "解除.坏垣.余事勿取" }, "d0914": { "j": "诸事不宜", "y": "祭祀.治病.破屋.坏垣.余事勿取" }, "d0915": { "j": "开市.掘井.开渠.造桥.造船", "y": "嫁娶.纳采.订盟.祭祀.开光" }, "d0916": { "j": "嫁娶.破土.进人口.出行.入宅", "y": "开市.交易.立券.纳财.挂匾" }, "d0917": { "j": "开仓.出货财.伐木.纳畜.开市", "y": "嫁娶.祭祀.理髮.进人口.作灶" }, "d0918": { "j": "开市.入宅.嫁娶.动土.破土", "y": "祭祀.修坟.除服.成服.启钻" }, "d0919": { "j": "祈福.开光.开市.入宅.动土", "y": "嫁娶.冠笄.安机械.解除.纳畜" }, "d0920": { "j": "动土.破土.置产.掘井", "y": "祭祀.出行.沐浴.扫舍.安葬" }, "d0921": { "j": "造庙.行丧.安葬.伐木.作灶", "y": "嫁娶.纳采.祭祀.解除.出行" }, "d0922": { "j": "斋醮.嫁娶.行丧.动土.作灶", "y": "纳采.订盟.开市.交易.立券" }, "d0923": { "j": "嫁娶.入宅.安床.出行", "y": "祭祀.沐浴.修饰垣墙.平治道涂.余事勿取" }, "d0924": { "j": "作灶.出火.进人口.开渠.入宅", "y": "开光.祈福.求嗣.斋醮.修造" }, "d0925": { "j": "出火.入宅.移徙.祈福.祭祀", "y": "开光.解除.拆卸.修造.动土" }, "d0926": { "j": "移徙.入宅", "y": "破屋.坏垣.求医.治病.余事勿取" }, "d0927": { "j": "开市.开仓.安门.安葬", "y": "嫁娶.纳采.订盟.祭祀.祈福" }, "d0928": { "j": "安葬.纳畜.出行.行丧.伐木", "y": "嫁娶.纳采.订盟.祭祀.祈福" }, "d0929": { "j": "嫁娶.开市.盖屋.作梁.合寿木", "y": "祭祀.冠笄.捕捉.余事勿取" }, "d0930": { "j": "开市.祈福.动土.破土.入殓", "y": "祭祀.解除.结网.畋猎.取渔" }, "d1001": { "j": "嫁娶.开市.祭祀.祈福.斋醮", "y": "冠笄.沐浴.出行.修造.动土" }, "d1002": { "j": "嫁娶.入宅.修造.动土.会亲友", "y": "祭祀.出行" }, "d1003": { "j": "针灸.伐木.作梁.造庙.行丧", "y": "嫁娶.订盟.纳采.祭祀.祈福" }, "d1004": { "j": "嫁娶.安葬.动土.造桥", "y": "出行.开市.交易.立券.安机械" }, "d1005": { "j": "斋醮.嫁娶.移徙.出行.上樑", "y": "祭祀.沐浴.修饰垣墙.平治道涂.余事勿取" }, "d1006": { "j": "纳采.订盟.架马.词讼.开渠", "y": "嫁娶.造车器.安机械.祭祀.祈福" }, "d1007": { "j": "祭祀.嫁娶.安床.开市.入宅", "y": "沐浴.捕捉.入殓.除服.成服" }, "d1008": { "j": "余事勿取", "y": "祭祀.入殓.移柩.开生坟.破土" }, "d1009": { "j": "诸事不宜", "y": "祭祀.解除.破屋.坏垣.余事勿取" }, "d1010": { "j": "上樑.作灶.伐木.出行.安葬", "y": "嫁娶.求嗣.纳采.进人口.纳财" }, "d1011": { "j": "纳畜.伐木.置产.作梁.行丧", "y": "嫁娶.祭祀.开市.开光.出行" }, "d1012": { "j": "安葬.开市.修坟.立碑", "y": "嫁娶.祭祀.作灶.纳财" }, "d1013": { "j": "安床.安葬", "y": "嫁娶.祭祀.祈福.求嗣.开光" }, "d1014": { "j": "开光.栽种", "y": "嫁娶.祭祀.祈福.求嗣.动土" }, "d1015": { "j": "伐木.行丧.破土.嫁娶.安葬", "y": "祭祀.祈福.求嗣.开光.出行" }, "d1016": { "j": "嫁娶.安葬.行丧.词讼.造桥", "y": "祭祀.开光.出行.解除.理髮" }, "d1017": { "j": "开市.入宅.出行.嫁娶.修坟", "y": "纳采.订盟.会亲友.沐浴.理髮" }, "d1018": { "j": "嫁娶.开市.交易.入宅.入学", "y": "解除.祭祀.修饰垣墙.平治道涂.造畜稠" }, "d1019": { "j": "开市.入宅.祭祀.置产.补垣", "y": "入殓.破土.启钻.安葬.除服" }, "d1020": { "j": "入宅.移徙.掘井.理髮.伐木", "y": "嫁娶.祭祀.祈福.求嗣.开光" }, "d1021": { "j": "嫁娶.入宅.上樑.出行.安葬", "y": "祭祀.沐浴.破屋.坏垣.余事勿取" }, "d1022": { "j": "祈福.斋醮.纳采.订盟.嫁娶", "y": "祭祀.求嗣.冠笄.进人口.会亲友" }, "d1023": { "j": "探病.纳畜.伐木.起基.作梁", "y": "嫁娶.纳采.订盟.开市.交易" }, "d1024": { "j": "嫁娶.开市.开池.开厕.破土", "y": "祭祀.冠笄.移徙.会亲友.纳财" }, "d1025": { "j": "安门.安床.裁衣.入宅.安葬", "y": "祭祀.祈福.求嗣.斋醮.开光" }, "d1026": { "j": "开市.出行.栽种.置产.词讼", "y": "嫁娶.裁衣.冠笄.合帐.祭祀" }, "d1027": { "j": "出货财.开仓.动土.破土.安葬", "y": "祭祀.造车器.出行.修造.上樑" }, "d1028": { "j": "造庙.嫁娶.掘井.栽种.造桥", "y": "祭祀.开光.出行.解除.伐木" }, "d1029": { "j": "入宅.上樑.斋醮.出火.谢土", "y": "纳采.订盟.开市.交易.立券" }, "d1030": { "j": "嫁娶.开市", "y": "祭祀.平治道涂.余事勿取" }, "d1031": { "j": "开市.交易.祭祀.入宅.安葬", "y": "捕捉.畋猎.余事勿取" }, "d1101": { "j": "开市.破土.掘井.合寿木", "y": "嫁娶.纳采.订盟.祭祀.祈福" }, "d1102": { "j": "开市.嫁娶", "y": "祭祀.沐浴.解除.破屋.坏垣" }, "d1103": { "j": "嫁娶.开市.入宅.祈福.安葬", "y": "订盟.纳采.会亲友.交易.立券" }, "d1104": { "j": "上樑.开光.盖屋.架马.合寿木", "y": "造车器.嫁娶.订盟.纳采.会亲友" }, "d1105": { "j": "动土.破土.开市.安葬", "y": "祭祀.作灶.纳财.捕捉.畋猎" }, "d1106": { "j": "开市.开仓.出货财.安床.安门", "y": "嫁娶.订盟.纳采.祭祀.祈福" }, "d1107": { "j": "余事勿取", "y": "解除.余事勿取" }, "d1108": { "j": "入宅.移徙.嫁娶.掘井.作灶", "y": "安床.祭祀.开池.补垣.入殓" }, "d1109": { "j": "余事勿取", "y": "祭祀.沐浴.余事勿取" }, "d1110": { "j": "置产.安床", "y": "嫁娶.开光.出行.解除.出火" }, "d1111": { "j": "嫁娶.冠笄.出行.祈福.安葬", "y": "开光.裁衣.安门.会亲友.安床" }, "d1112": { "j": "祈福.祭祀.伐木.掘井.作灶", "y": "嫁娶.开光.出行.出火.拆卸" }, "d1113": { "j": "栽种.掘井.置产", "y": "嫁娶.祭祀.祈福.求嗣.开光" }, "d1114": { "j": "嫁娶.动土.造船.开池.掘井", "y": "祭祀.理髮.针灸.解除.进人口" }, "d1115": { "j": "嫁娶.安葬", "y": "破屋.坏垣.求医.治病.余事勿取" }, "d1116": { "j": "上樑.开仓.出货财.盖屋.造船", "y": "纳采.订盟.嫁娶.祭祀.祈福" }, "d1117": { "j": "嫁娶.进人口.入宅.移徙.出火", "y": "祭祀.祈福.求嗣.开光.解除" }, "d1118": { "j": "嫁娶.入宅.开市.安床.破土", "y": "沐浴.扫舍.捕捉.畋猎.解除" }, "d1119": { "j": "伐木.上樑.修造.入殓.理髮", "y": "嫁娶.冠笄.祭祀.祈福.求嗣" }, "d1120": { "j": "置产.造船.开光.掘井.作灶", "y": "合帐.裁衣.嫁娶.安床.入殓" }, "d1121": { "j": "开市.动土.破土.嫁娶.安葬", "y": "解除.修饰垣墙.冠笄.出行.余事勿取" }, "d1122": { "j": "作灶.经络.安床", "y": "纳采.订盟.嫁娶.祭祀.祈福" }, "d1123": { "j": "祈福.谢土.安葬.上樑.作灶", "y": "祭祀.塑绘.理髮.会亲友.牧养" }, "d1124": { "j": "造庙.谢土.作灶.作梁.伐木", "y": "出行.纳财.开市.交易.立券" }, "d1125": { "j": "置产.掘井.词讼.栽种", "y": "嫁娶.纳采.订盟.祭祀.斋醮" }, "d1126": { "j": "破土.动土.安门.作灶.开市", "y": "嫁娶.纳采.订盟.祭祀.开光" }, "d1127": { "j": "嫁娶.安葬", "y": "祭祀.解除.破屋.坏垣.求医" }, "d1128": { "j": "祭祀.嫁娶.入宅.修造.动土", "y": "祭祀.扫舍.破土.安葬.除服" }, "d1129": { "j": "嫁娶.移徙.出火.开市.入宅", "y": "订盟.纳采.会亲友.祭祀.祈福" }, "d1130": { "j": "嫁娶.纳采.订盟.安床.动土", "y": "祭祀.沐浴.捕捉.畋猎.结网" }, "d1201": { "j": "移徙.入宅.出火.入殓.安葬", "y": "开市.纳财.出行.祭祀.祈福" }, "d1202": { "j": "嫁娶.入宅.安床.掘井.开光", "y": "祭祀.理髮.置产.塞穴.除服" }, "d1203": { "j": "开市.动土.破土.行丧.安葬", "y": "祭祀.沐浴.出行.余事勿取" }, "d1204": { "j": "开市.纳采.造庙.安床.开渠", "y": "嫁娶.造车器.出行.会亲友.移徙" }, "d1205": { "j": "嫁娶.开市.祈福.斋醮.安葬", "y": "塑绘.会亲友.安机械.塞穴.结网" }, "d1206": { "j": "开仓.盖屋.造桥.祭祀", "y": "纳采.移徙.纳财.开市.交易" }, "d1207": { "j": "诸事不宜", "y": "祭祀.修饰垣墙.余事勿取" }, "d1208": { "j": "嫁娶.开市.作灶.置产.作梁", "y": "入宅.安床.开光.祭祀.出火" }, "d1209": { "j": "诸事不宜", "y": "祭祀.解除.余事勿取" }, "d1210": { "j": "诸事不宜", "y": "破屋.坏垣.祭祀.沐浴.余事勿取" }, "d1211": { "j": "安门.栽种.作灶.治病", "y": "安床.祭祀.祈福.求嗣.冠笄" }, "d1212": { "j": "诸事不宜", "y": "解除.扫舍.余事勿取" }, "d1213": { "j": "伐木.纳畜.破土.安葬.开生坟", "y": "祭祀.开光.理髮.整手足甲.安床" }, "d1214": { "j": "嫁娶.进人口.安葬.出行.赴任", "y": "祭祀.祈福.求嗣.开光.拆卸" }, "d1215": { "j": "移徙.入宅.嫁娶.祈福.开光", "y": "沐浴.冠笄.补垣.塞穴" }, "d1216": { "j": "斋醮.入宅.修造.动土.破土", "y": "交易.进人口.祭祀.沐浴.捕捉" }, "d1217": { "j": "斋醮.伐木.作梁.安葬.行丧", "y": "嫁娶.纳采.订盟.造车器.祭祀" }, "d1218": { "j": "嫁娶.动土.破土.祈福.出火", "y": "纳采.订盟.开市.交易.立券" }, "d1219": { "j": "嫁娶.入宅.纳采.订盟.掘井", "y": "祭祀.平治道涂.除服.成服.安葬" }, "d1220": { "j": "开市.造庙.置产.掘井", "y": "纳采.订盟.祭祀.祈福.开光" }, "d1221": { "j": "开生坟.破土.行丧.安葬", "y": "嫁娶.冠笄.祭祀.祈福.求嗣" }, "d1222": { "j": "移徙.入宅", "y": "破屋.坏垣.治病.余事勿取" }, "d1223": { "j": "作灶.安门.造桥.开市.安葬", "y": "安床.架马.祭祀.塑绘.开光" }, "d1224": { "j": "伐木.作梁.动土.安床.破土", "y": "嫁娶.祭祀.祈福.求嗣.开光" }, "d1225": { "j": "会亲友.安葬.入宅.移徙.安床", "y": "祭祀.沐浴.理髮.纳财.进人口" }, "d1226": { "j": "嫁娶.开市.出火.进人口.入殓", "y": "纳采.订盟.祭祀.祈福.求嗣" }, "d1227": { "j": "嫁娶.开市.安床.栽种.安葬", "y": "入宅.移徙.出行.进人口.修造" }, "d1228": { "j": "入宅.移徙.分居.作灶.出火", "y": "造畜稠.教牛马" }, "d1229": { "j": "破土.安葬.行丧.开生坟", "y": "订盟.纳采.造车器.祭祀.祈福" }, "d1230": { "j": "祈福.出火.嫁娶.入宅.开市", "y": "订盟.纳采.会亲友.安机械.开光" }, "d1231": { "j": "移徙.入宅.嫁娶.掘井.安葬", "y": "祭祀.平治道涂.修坟.除服.成服" } } ukui-panel-4.0.0.4/plugin-calendar/html/hlnew/hl2014.json0000644000175000017500000030641714560306203021314 0ustar fengfeng{ "d0101": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出行.解除.入宅.移徙.纳畜.入殓.破土.修坟.立碑.", "j": "伐木.作梁.动土.安床.破土.栽种.造桥.", "c": "生肖冲虎", "s": "煞南", "ch": "成", "zc": "正冲正冲丙寅", "ts": "仓库炉外西南" }, "d0201": { "y": "出行.起基.安床.纳财.交易.立券.嫁娶.栽种.入殓.移柩.安葬.", "j": "挂匾.入宅.上梁.祈福.词讼.作梁.作灶.开池.安门.动土.破土.掘井.", "c": "生肖冲鸡", "s": "煞西", "ch": "满", "zc": "正冲正冲丁酉", "ts": "房床门房内南" }, "d0102": { "y": "祭祀.沐浴.理发.纳财.进人口.栽种.扫舍.捕捉.畋猎.结网.", "j": "会亲友.安葬.入宅.移徙.安床.开市.行丧.出火.作灶.安门.", "c": "生肖冲兔", "s": "煞東", "ch": "收", "zc": "正冲正冲丁卯", "ts": "房床门外西南" }, "d0103": { "y": "纳采.订盟.祭祀.祈福.求嗣.塑绘.解除.拆卸.修造.动土.竖柱.上梁.安门.置产.开池.掘井.纳畜.安床.栽种.造畜椆栖.破土.移柩.立碑.", "j": "嫁娶.开市.出火.进人口.入殓.赴任.入宅.移徙.出行.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "开", "zc": "正冲正冲戊辰", "ts": "门鸡栖外西南" }, "d0104": { "y": "入宅.移徙.出行.进人口.修造.动土.起基.上梁.安门.造仓.补垣.塞穴.造畜椆栖.", "j": "嫁娶.开市.安床.栽种.安葬.祈福.开光.掘井.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "闭", "zc": "正冲正冲己巳", "ts": "碓磨床外西南" }, "d0105": { "y": "祭祀.祈福.斋醮.沐浴.安床.安机械.造车器.入殓.移柩.启攒.安葬.立碑.合帐.经络.交易.", "j": "作灶.掘井.嫁娶.入宅.", "c": "生肖冲马", "s": "煞南", "ch": "闭", "zc": "正冲正冲庚午", "ts": "厨灶碓外西南" }, "d0106": { "y": "解除.扫舍.祭祀.教牛马.余事勿取.", "j": "余事勿取.", "c": "生肖冲羊", "s": "煞東", "ch": "建", "zc": "正冲正冲辛未", "ts": "仓库厕外西南" }, "d0107": { "y": "开市.交易.立券.挂匾.开光.解除.伐木.作梁.出火.入宅.移徙.安床.拆卸.动土.上梁.栽种.纳畜.安葬.", "j": "嫁娶.祭祀.出行.置产.", "c": "生肖冲猴", "s": "煞北", "ch": "除", "zc": "正冲正冲壬申", "ts": "房床厕外正南" }, "d0108": { "y": "开市.交易.立券.纳财.开池.补垣.嫁娶.纳采.纳畜.取渔.安床.", "j": "修造.上梁.入宅.祈福.探病.掘井.动土.安门.安葬.作灶.", "c": "生肖冲鸡", "s": "煞西", "ch": "满", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d0109": { "y": "祭祀.解除.修饰垣墙.平治道涂.余事勿取.", "j": "余事勿取.", "c": "生肖冲狗", "s": "煞南", "ch": "平", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d0110": { "y": "嫁娶.祭祀.祈福.求嗣.动土.会亲友.起基.造仓.纳畜.牧养.作厕.进人口.", "j": "掘井.安葬.栽种.出行.作灶.开市.入宅.安门.", "c": "生肖冲猪", "s": "煞東", "ch": "定", "zc": "正冲正冲乙亥", "ts": "厨灶床外正西" }, "d0111": { "y": "嫁娶.祭祀.祈福.求嗣.开光.入宅.移徙.安床.修造.动土.进人口.", "j": "掘井.安葬.栽种.出行.作灶.开市.入宅.安门.", "c": "生肖冲鼠", "s": "煞北", "ch": "执", "zc": "正冲正冲丙子", "ts": "仓库碓外西北" }, "d0112": { "y": "破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲牛", "s": "煞西", "ch": "破", "zc": "正冲正冲丁丑", "ts": "房床厕外西北" }, "d0113": { "y": "嫁娶.开市.交易.立券.开光.出行.出火.拆卸.修造.入宅.移徙.动土.破土.移柩.安葬.启攒.除服.成服.", "j": "安床.伐木.祈福.纳畜.", "c": "生肖冲虎", "s": "煞南", "ch": "危", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d0114": { "y": "祭祀.入殓.破土.除服.成服.启攒.安葬.修坟.立碑.余事勿取.", "j": "余事勿取.", "c": "生肖冲兔", "s": "煞東", "ch": "成", "zc": "正冲正冲己卯", "ts": "占门炉外西北" }, "d0115": { "y": "祭祀.解除.余事勿取.", "j": "诸事不宜.", "c": "生肖冲龙", "s": "煞北", "ch": "收", "zc": "正冲正冲庚辰", "ts": "厨灶栖外西北" }, "d0116": { "y": "开市.交易.立券.纳财.纳畜.造畜椆栖.入宅.移徙.安床.开光.祈福.求嗣.动土.", "j": "嫁娶.栽种.安葬.理发.造庙.作灶.入殓.行丧.造桥.", "c": "生肖冲蛇", "s": "煞西", "ch": "开", "zc": "正冲正冲辛巳", "ts": "仓库床外西北" }, "d0117": { "y": "安床.裁衣.交易.立券.入殓.移柩.安葬.除服.成服.", "j": "置产.嫁娶.出行.开光.栽种.动土.破土.入宅.治病.", "c": "生肖冲马", "s": "煞南", "ch": "闭", "zc": "正冲正冲壬午", "ts": "房床碓外正北" }, "d0118": { "y": "祭祀.解除.造畜椆栖.教牛马.针灸.余事勿取.", "j": "嫁娶.动土.开池.安葬.", "c": "生肖冲羊", "s": "煞東", "ch": "建", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d0119": { "y": "沐浴.塑绘.开光.纳采.订盟.开市.交易.立券.纳财.起基.动土.定磉.放水.安葬.破土.启攒.修坟.立碑.移柩.", "j": "入宅.安门.祭祀.谢土.", "c": "生肖冲猴", "s": "煞北", "ch": "除", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d0120": { "y": "嫁娶.出行.理发.安床.启攒.安葬.修坟.开市.交易.立券.纳财.开池.牧养.", "j": "掘井.祈福.谢土.动土.入宅.上梁.修造.作灶.", "c": "生肖冲鸡", "s": "煞西", "ch": "满", "zc": "正冲正冲乙酉", "ts": "厨灶门外正北" }, "d0121": { "y": "解除.平治道涂.余事勿取.", "j": "移徙.入宅.掘井.造庙.栽种.针灸.治病.开池.", "c": "生肖冲狗", "s": "煞南", "ch": "平", "zc": "正冲正冲丙戌", "ts": "仓库栖外正北" }, "d0122": { "y": "嫁娶.祭祀.开光.伐木.出火.拆卸.入宅.移徙.修造.动土.上梁.安床.纳畜.", "j": "开市.行丧.栽种.出行.出货财.安葬.置产.词讼.治病.", "c": "生肖冲猪", "s": "煞東", "ch": "定", "zc": "正冲正冲丁亥", "ts": "占房床房内北" }, "d0123": { "y": "嫁娶.纳采.订盟.入宅.移徙.安床.祭祀.祈福.开光.出行.解除.出火.拆卸.动土.纳畜.谢土.安葬.破土.", "j": "伐木.开市.交易.上梁.作灶.安门.造屋.", "c": "生肖冲鼠", "s": "煞北", "ch": "执", "zc": "正冲正冲戊子", "ts": "占门碓房内北" }, "d0124": { "y": "祭祀.破屋.坏垣.解除.余事勿取.", "j": "开市.动土.破土.", "c": "生肖冲牛", "s": "煞西", "ch": "破", "zc": "正冲正冲己丑", "ts": "碓磨厕房内北" }, "d0125": { "y": "嫁娶.纳采.订盟.开光.安香.出火.纳财.开市.交易.立券.裁衣.造屋.起基.修造.动土.安门.移徙.入宅.栽种.牧养.畋猎.掘井.开池.安葬.破土.入殓.除服.成服.立碑.", "j": "祈福.造庙.祭祀.安床.谢土.", "c": "生肖冲虎", "s": "煞南", "ch": "危", "zc": "正冲正冲庚寅", "ts": "厨灶炉房内北" }, "d0126": { "y": "祭祀.斋醮.入殓.破土.启攒.安葬.修坟.立碑.除服.成服.", "j": "嫁娶.入宅.作灶.纳采.订盟.", "c": "生肖冲兔", "s": "煞東", "ch": "成", "zc": "正冲正冲辛卯", "ts": "仓库门房内北" }, "d0127": { "y": "祭祀.斋醮.纳财.捕捉.畋猎.", "j": "嫁娶.开市.入宅.安床.破土.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "收", "zc": "正冲正冲壬辰", "ts": "房床栖房内南" }, "d0128": { "y": "纳采.订盟.祭祀.祈福.求嗣.斋醮.沐浴.进人口.会亲友.入学.治病.安碓硙.掘井.开池.纳畜.牧养.造畜椆栖.", "j": "嫁娶.合帐.入宅.行丧.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "开", "zc": "正冲正冲癸巳", "ts": "占门床房内南" }, "d0129": { "y": "祭祀.祈福.求嗣.沐浴.问名.交易.纳财.入殓.移柩.安葬.修坟.立碑.谢土.造畜椆栖.教牛马.", "j": "入宅.置产.嫁娶.动土.栽种.开市.开光.动土.破土.", "c": "生肖冲马", "s": "煞南", "ch": "闭", "zc": "正冲正冲甲午", "ts": "占碓磨房内南" }, "d0130": { "y": "祭祀.教牛马.造畜椆栖.祭祀.会亲友.解除.余事勿取.", "j": "嫁娶.入宅.出行.动土.破土.安葬.行丧.", "c": "生肖冲羊", "s": "煞東", "ch": "建", "zc": "正冲正冲乙未", "ts": "厨灶厕房内南" }, "d0131": { "y": "嫁娶.开光.解除.出火.拆卸.修造.进人口.入宅.移徙.安床.栽种.入殓.修坟.动土.除服.成服.", "j": "作灶.安葬.祭祀.开市.纳采.订盟.纳畜.谢土.出行.探病.", "c": "生肖冲猴", "s": "煞北", "ch": "除", "zc": "正冲正冲丙申", "ts": "仓库炉房内南" }, "d0210": { "y": "嫁娶.开光.祈福.求嗣.解除.动土.安床.栽种.开池.掘井.祭祀.破土.启攒.", "j": "入宅.作灶.伐木.安葬.出火.出行.纳畜.", "c": "生肖冲马", "s": "煞南", "ch": "开", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d0225": { "y": "祭祀.祈福.求嗣.开光.嫁娶.出行.解除.伐木.拆卸.进人口.安床.动土.起基.上梁.栽种.纳畜.破土.谢土.启攒.安葬.", "j": "移徙.入宅.出火.作灶.掘井.", "c": "生肖冲鸡", "s": "煞西", "ch": "除", "zc": "正冲正冲辛酉", "ts": "仓库门外正南" }, "d0215": { "y": "修饰垣墙.平治道涂.祭祀.余事勿取.", "j": "诸事不宜.", "c": "生肖冲猪", "s": "煞東", "ch": "平", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d0220": { "y": "祭祀.塞穴.结网.破土.谢土.安葬.移柩.除服.成服.余事勿取.", "j": "嫁娶.入宅.", "c": "生肖冲龙", "s": "煞北", "ch": "成", "zc": "正冲正冲丙辰", "ts": "仓库栖外东南" }, "d0227": { "y": "作灶.解除.平治道涂.余事勿取.", "j": "祭祀.祈福.安葬.安门.", "c": "生肖冲猪", "s": "煞東", "ch": "平", "zc": "正冲正冲癸亥", "ts": "占门床外正南" }, "d0223": { "y": "祭祀.祈福.求嗣.纳畜.入殓.启攒.谢土.除服.成服.", "j": "栽种.开光.出行.针灸.嫁娶.入宅.动土.破土.", "c": "生肖冲羊", "s": "煞東", "ch": "闭", "zc": "正冲正冲己未", "ts": "碓磨厕外东南" }, "d0330": { "y": "纳财.交易.立券.栽种.捕捉.结网.取渔.进人口.教牛马.理发.", "j": "入宅.造屋.竖柱.安葬.", "c": "生肖冲马", "s": "煞南", "ch": "收", "zc": "正冲正冲甲午", "ts": "占碓磨房内南" }, "d0202": { "y": "平治道涂.余事勿取.", "j": "开光.嫁娶.开仓.出货财.造船.安葬.探病.", "c": "生肖冲狗", "s": "煞南", "ch": "平", "zc": "正冲正冲戊戌", "ts": "门鸡栖房内东" }, "d0203": { "y": "嫁娶.订盟.纳采.会亲友.祭祀.安机械.移徙.入宅.造屋.安床.起基.定磉.安香.出火.挂匾.拆卸.置产.", "j": "开市.出行.安葬.行丧.", "c": "生肖冲猪", "s": "煞東", "ch": "定", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d0204": { "y": "解除.沐浴.", "j": "诸事不宜.", "c": "生肖冲鼠", "s": "煞北", "ch": "定", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d0205": { "y": "嫁娶.祭祀.祈福.出行.解除.出火.拆卸.动土.入宅.移徙.安床.上梁.栽种.纳畜.破土.启攒.安葬.", "j": "开市.立券.理发.作灶.", "c": "生肖冲牛", "s": "煞西", "ch": "执", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d0206": { "y": "祭祀.解除.治病.破屋.坏垣.扫舍.", "j": "余事勿取.", "c": "生肖冲虎", "s": "煞南", "ch": "破", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" }, "d0207": { "y": "祭祀.祈福.求嗣.开光.出火.出行.拆卸.修造.动土.入宅.移徙.上梁.挂匾.开池.入殓.安葬.破土.启攒.", "j": "嫁娶.作灶.安床.", "c": "生肖冲兔", "s": "煞東", "ch": "危", "zc": "正冲正冲癸卯", "ts": "占大门外东北" }, "d0208": { "y": "结网.入殓.除服.成服.移柩.安葬.破土.", "j": "诸事不宜.", "c": "生肖冲龙", "s": "煞北", "ch": "成", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d0209": { "y": "移徙.祭祀.开光.祈福.出行.解除.进人口.雇庸.安床.动土.起基.上梁.安门.解除.", "j": "嫁娶.安葬.破土.作梁.纳畜.牧养.行丧.作灶.", "c": "生肖冲蛇", "s": "煞西", "ch": "收", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d0211": { "y": "祭祀.合帐.裁衣.经络.伐木.作梁.安床.作灶.入殓.安葬.启攒.移柩.", "j": "词讼.出火.入宅.", "c": "生肖冲羊", "s": "煞東", "ch": "闭", "zc": "正冲正冲丁未", "ts": "房床厕外东北" }, "d0212": { "y": "裁衣.伐木.作梁.纳财.交易.立券.", "j": "诸事不宜.", "c": "生肖冲猴", "s": "煞北", "ch": "建", "zc": "正冲正冲戊申", "ts": "占门炉外东北" }, "d0213": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出行.出火.拆卸.动土.上梁.进人口.入宅.移徙.安床.开市.交易.立券.挂匾.入殓.破土.安葬.启攒.除服.成服.", "j": "诸事不宜.", "c": "生肖冲鸡", "s": "煞西", "ch": "除", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d0214": { "y": "嫁娶.冠笄.纳采.出行.会亲友.上梁.安机械.安床.牧养.畋猎.祭祀.祈福.开光.修造.安门.造屋.起基.", "j": "入宅.作灶.治病.安葬.移徙.", "c": "生肖冲狗", "s": "煞南", "ch": "满", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d0216": { "y": "造车器.纳采.订盟.祭祀.祈福.求嗣.移徙.出行.开市.出火.入宅.立券.交易.入宅.安门.安床.安葬.谢土.", "j": "开光.造屋.动土.作灶.栽种.", "c": "生肖冲鼠", "s": "煞北", "ch": "定", "zc": "正冲正冲壬子", "ts": "房床碓外正东" }, "d0217": { "y": "动土.入殓.嫁娶.移柩.安葬.破土.", "j": "开市.作灶.安床.入宅.上梁.裁衣.", "c": "生肖冲牛", "s": "煞西", "ch": "执", "zc": "正冲正冲癸丑", "ts": "占门厕外正东" }, "d0218": { "y": "求医.治病.破屋.坏垣.余事勿取.", "j": "开市.嫁娶.", "c": "生肖冲虎", "s": "煞南", "ch": "破", "zc": "正冲正冲甲寅", "ts": "碓磨炉外东南" }, "d0219": { "y": "祭祀.斋醮.沐浴.开生坟.除服.成服.移柩.入殓.破土.安葬.合寿木.", "j": "开市.嫁娶.安床.会亲友.入宅.作灶.上梁.", "c": "生肖冲兔", "s": "煞東", "ch": "危", "zc": "正冲正冲乙卯", "ts": "厨灶门外东南" }, "d0221": { "y": "祭祀.沐浴.理发.作灶.结网.栽种.", "j": "嫁娶.词讼.行丧.安葬.牧养.伐木.作梁.开市.纳畜.造畜椆栖.", "c": "生肖冲蛇", "s": "煞西", "ch": "收", "zc": "正冲正冲丁巳", "ts": "占房床外东南" }, "d0222": { "y": "嫁娶.祭祀.开光.祈福.求嗣.出行.开市.交易.立券.动土.纳财.掘井.会亲友.", "j": "入宅.安葬.伐木.作梁.纳畜.造畜椆栖.作灶.", "c": "生肖冲马", "s": "煞南", "ch": "开", "zc": "正冲正冲戊午", "ts": "占门碓外东南" }, "d0224": { "y": "开光.解除.伐木.竖柱.上梁.交易.立券.纳畜.入殓.移柩.安葬.", "j": "入宅.出行.移徙.祭祀.嫁娶.动土.破土.作灶.", "c": "生肖冲猴", "s": "煞北", "ch": "建", "zc": "正冲正冲庚申", "ts": "厨灶炉外正南" }, "d0226": { "y": "会亲友.冠笄.安床.会亲友.安机械.祭祀.祈福.求嗣.经络.", "j": "嫁娶.开市.动土.作灶.安葬.", "c": "生肖冲狗", "s": "煞南", "ch": "满", "zc": "正冲正冲壬戌", "ts": "房床栖外正南" }, "d0228": { "y": "嫁娶.祭祀.冠笄.修饰垣墙.置产.", "j": "经络.探病.造屋.作灶.动土.", "c": "生肖冲鼠", "s": "煞北", "ch": "定", "zc": "正冲正冲甲子", "ts": "占碓磨外正南" }, "d0319": { "y": "嫁娶.祭祀.开光.祈福.求嗣.出火.入宅.移徙.安床.拆卸.动土.破土.谢土.", "j": "合帐.开市.安葬.入殓.", "c": "生肖冲羊", "s": "煞東", "ch": "开", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d0328": { "y": "纳采.交易.立券.安床.安机械.安葬.移柩.动土.破土.立碑.", "j": "嫁娶.开光.作灶.", "c": "生肖冲龙", "s": "煞北", "ch": "危", "zc": "正冲正冲壬辰", "ts": "房床栖房内南" }, "d0318": { "y": "理发.冠笄.嫁娶.进人口.", "j": "置产.伐木.纳畜.造畜椆栖.安葬.破土.作梁.作灶.开生坟.", "c": "生肖冲马", "s": "煞南", "ch": "收", "zc": "正冲正冲壬午", "ts": "房床碓外正北" }, "d0308": { "y": "订盟.纳采.裁衣.合帐.冠笄.安机械.拆卸.安床.入殓.除服.成服.移柩.破土.启攒.安葬.修坟.立碑.经络.交易.立券.纳财.筑堤.造仓.补垣.塞穴.纳畜.伐木.架马.", "j": "祭祀.开光.嫁娶.入宅.", "c": "生肖冲猴", "s": "煞北", "ch": "闭", "zc": "正冲正冲壬申", "ts": "房床厕外正南" }, "d0320": { "y": "安床.伐木.拆卸.修造.动土.上梁.立券.交易.栽种.纳畜.牧养.入殓.安葬.", "j": "嫁娶.祭祀.开光.出行.出火.移徙.入宅.安门.", "c": "生肖冲猴", "s": "煞北", "ch": "闭", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d0331": { "y": "嫁娶.订盟.纳采.祭祀.祈福.出行.修造.动土.移徙.入宅.破土.出火.安门.安床.上梁.立碑.移柩.", "j": "开市.交易.合帐.安葬.", "c": "生肖冲羊", "s": "煞東", "ch": "开", "zc": "正冲正冲乙未", "ts": "厨灶厕房内南" }, "d0321": { "y": "祭祀.祈福.求嗣.斋醮.嫁娶.冠笄.出行.开市.交易.会亲友.教牛马.除服.成服.启攒.安葬.移柩.", "j": "祈福.动土.移徙.入宅.", "c": "生肖冲鸡", "s": "煞西", "ch": "建", "zc": "正冲正冲乙酉", "ts": "厨灶门外正北" }, "d0310": { "y": "塞穴.诸事不宜.", "j": "安门.作灶.安葬.嫁娶.", "c": "生肖冲狗", "s": "煞南", "ch": "除", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d0428": { "y": "嫁娶.祭祀.祈福.求嗣.斋醮.开光.出火.移徙.入宅.竖柱.上梁.会亲友.造屋.起基.治病.治病.安门.造车器.掘井.开池.", "j": "纳采.出行.修坟.安葬.开市.立券.作灶.", "c": "生肖冲猪", "s": "煞東", "ch": "除", "zc": "正冲正冲癸亥", "ts": "占门床外正南" }, "d0301": { "y": "纳采.嫁娶.祭祀.祈福.出行.修造.动土.移徙.入宅.安葬.破土.", "j": "开市.入宅.斋醮.", "c": "生肖冲牛", "s": "煞西", "ch": "执", "zc": "正冲正冲乙丑", "ts": "厨灶厕外西南" }, "d0302": { "y": "祭祀.沐浴.解除.理发.扫舍.破屋.坏垣.余事勿取.", "j": "嫁娶.安葬.", "c": "生肖冲虎", "s": "煞南", "ch": "破", "zc": "正冲正冲丙寅", "ts": "仓库炉外西南" }, "d0303": { "y": "纳采.订盟.祭祀.祈福.安香.出火.修造.出行.开市.移徙.入宅.动土.安葬.破土.", "j": "安床.作灶.造船.会亲友.", "c": "生肖冲兔", "s": "煞東", "ch": "危", "zc": "正冲正冲丁卯", "ts": "房床门外西南" }, "d0304": { "y": "塞穴.结网.取渔.畋猎.", "j": "嫁娶.安门.移徙.入宅.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "成", "zc": "正冲正冲戊辰", "ts": "门鸡栖外西南" }, "d0305": { "y": "纳采.祭祀.祈福.出行.会亲友.修造.动土.移徙.入宅.", "j": "嫁娶.开市.安葬.破土.", "c": "生肖冲蛇", "s": "煞西", "ch": "收", "zc": "正冲正冲己巳", "ts": "碓磨床外西南" }, "d0306": { "y": "裁衣.合帐.冠笄.嫁娶.纳婿.安床.入殓.纳财.", "j": "作灶.开市.安葬.作梁.", "c": "生肖冲马", "s": "煞南", "ch": "收", "zc": "正冲正冲庚午", "ts": "厨灶碓外西南" }, "d0307": { "y": "祭祀.订盟.纳采.修造.动土.祈福.塑绘.斋醮.沐浴.拆卸.起基.入宅.安香.造庙.移柩.谢土.除服.成服.入学.习艺.出行.竖柱.上梁.掘井.求嗣.解除.伐木.", "j": "作灶.安葬.开市.造屋.", "c": "生肖冲羊", "s": "煞東", "ch": "开", "zc": "正冲正冲辛未", "ts": "仓库厕外西南" }, "d0309": { "y": "祭祀.出行.嫁娶.冠笄.安床.入殓.移柩.安葬.", "j": "掘井.动土.作灶.栽种.", "c": "生肖冲鸡", "s": "煞西", "ch": "建", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d0311": { "y": "开光.塑绘.求嗣.纳采.裁衣.合帐.冠笄.安机械.作梁.开柱眼.安门.安床.造仓.祭祀.会亲友.祈福.经络.纳财.开市.立券.交易.入学.求嗣.理发.架马.", "j": "出行.斋醮.安葬.嫁娶.", "c": "生肖冲猪", "s": "煞東", "ch": "满", "zc": "正冲正冲乙亥", "ts": "厨灶床外正西" }, "d0312": { "y": "祭祀.嫁娶.纳婿.安葬.", "j": "栽种.造屋.作灶.入宅.", "c": "生肖冲鼠", "s": "煞北", "ch": "平", "zc": "正冲正冲丙子", "ts": "仓库碓外西北" }, "d0313": { "y": "祭祀.会亲友.订盟.裁衣.合帐.安机械.拆卸.上梁.安门.入殓.除服.成服.移柩.启攒.安葬.立碑.开光.塑绘.入学.出行.起基.定磉.放水.移徙.入宅.竖柱.立券.经络.", "j": "伐木.作梁.", "c": "生肖冲牛", "s": "煞西", "ch": "定", "zc": "正冲正冲丁丑", "ts": "房床厕外西北" }, "d0314": { "y": "祭祀.开光.塑绘.祈福.斋醮.裁衣.合帐.冠笄.嫁娶.拆卸.动土.移徙.入宅.入殓.移柩.安葬.谢土.求嗣.入学.理发.伐木.架马.作梁.出火.修造.起基.定磉.放水.赴任.", "j": "入宅.安门.", "c": "生肖冲虎", "s": "煞南", "ch": "执", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d0315": { "y": "祭祀.治病.破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲兔", "s": "煞東", "ch": "破", "zc": "正冲正冲己卯", "ts": "占门炉外西北" }, "d0316": { "y": "嫁娶.祭祀.出行.冠笄.立券.交易.进人口.开市.移徙.修造.动土.安床.入殓.移柩.破土.", "j": "开光.作灶.斋醮.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "危", "zc": "正冲正冲庚辰", "ts": "厨灶栖外西北" }, "d0317": { "y": "开市.立券.交易.挂匾.祭祀.祈福.开光.入宅.移徙.安床.拆卸.动土.上梁.进人口.", "j": "嫁娶.行丧.架马.作梁.理发.牧养.安葬.纳畜.伐木.", "c": "生肖冲蛇", "s": "煞西", "ch": "成", "zc": "正冲正冲辛巳", "ts": "仓库床外西北" }, "d0322": { "y": "塞穴.整手足甲.解除.捕捉.畋猎.结网.余事勿取.诸事不宜.", "j": "嫁娶.作灶.掘井.安葬.", "c": "生肖冲狗", "s": "煞南", "ch": "除", "zc": "正冲正冲丙戌", "ts": "仓库栖外正北" }, "d0323": { "y": "纳财.开市.立券.交易.开光.安床.上梁.造屋.修造.起基.", "j": "动土.破土.安葬.行丧.赴任.出行.嫁娶.入宅.移徙.谢土.词讼.", "c": "生肖冲猪", "s": "煞東", "ch": "满", "zc": "正冲正冲丁亥", "ts": "占房床房内北" }, "d0324": { "y": "祭祀.祈福.嫁娶.冠笄.修饰垣墙.置产.平治道涂.", "j": "开仓.出货财.造屋.作灶.开市.交易.立券.栽种.", "c": "生肖冲鼠", "s": "煞北", "ch": "平", "zc": "正冲正冲戊子", "ts": "占门碓房内北" }, "d0325": { "y": "嫁娶.祭祀.开光.祈福.求嗣.出行.出火.进人口.入宅.移徙.安床.拆卸.修造.安门.挂匾.纳财.扫舍.", "j": "动土.伐木.安葬.行丧.", "c": "生肖冲牛", "s": "煞西", "ch": "定", "zc": "正冲正冲己丑", "ts": "碓磨厕房内北" }, "d0326": { "y": "嫁娶.开光.祭祀.祈福.求嗣.出行.出火.入宅.移徙.解除.栽种.伐木.破土.谢土.安葬.", "j": "开市.交易.作灶.纳财.上梁.安床.造屋.造船.", "c": "生肖冲虎", "s": "煞南", "ch": "执", "zc": "正冲正冲庚寅", "ts": "厨灶炉房内北" }, "d0327": { "y": "破屋.坏垣.求医.治病.余事勿取.", "j": "开光.嫁娶.", "c": "生肖冲兔", "s": "煞東", "ch": "破", "zc": "正冲正冲辛卯", "ts": "仓库门房内北" }, "d0329": { "y": "祭祀.祈福.求嗣.斋醮.沐浴.开光.理发.经络.解除.治病.治病.立碑.栽种.牧养.掘井.开池.", "j": "嫁娶.定磉.合寿木.安葬.行丧.", "c": "生肖冲蛇", "s": "煞西", "ch": "成", "zc": "正冲正冲癸巳", "ts": "占门床房内南" }, "d0426": { "y": "祭祀.出行.修造.动土.合帐.造畜椆栖.安床.移徙.入殓.移柩.破土.启攒.安葬.开生坟.合寿木.补垣.塞穴.", "j": "移徙.入宅.作灶.理发.开光.安门.", "c": "生肖冲鸡", "s": "煞西", "ch": "闭", "zc": "正冲正冲辛酉", "ts": "仓库门外正南" }, "d0416": { "y": "祭祀.祈福.求嗣.开光.纳采.订盟.解除.栽种.纳畜.牧养.扫舍.进人口.", "j": "修坟.造桥.作灶.出行.安葬.造屋.入宅.", "c": "生肖冲猪", "s": "煞東", "ch": "除", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d0425": { "y": "安香.出火.纳采.订盟.嫁娶.开市.立券.交易.挂匾.开光.出行.解除.安床.栽种.置产.拆卸.修造.动土.", "j": "作灶.安葬.祭祀.入殓.", "c": "生肖冲猴", "s": "煞北", "ch": "开", "zc": "正冲正冲庚申", "ts": "厨灶炉外正南" }, "d0422": { "y": "沐浴.塞穴.畋猎.结网.取渔.扫舍.余事勿取.", "j": "祈福.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "危", "zc": "正冲正冲丁巳", "ts": "占房床外东南" }, "d0406": { "y": "祭祀.平治道涂.解除.修饰垣墙.余事勿取.", "j": "诸事不宜.", "c": "生肖冲牛", "s": "煞西", "ch": "平", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d0412": { "y": "解除.破屋.余事勿取.", "j": "诸事不宜.", "c": "生肖冲羊", "s": "煞東", "ch": "收", "zc": "正冲正冲丁未", "ts": "房床厕外东北" }, "d0526": { "y": "开市.交易.立券.挂匾.祭祀.祈福.斋醮.出行.开市.交易.立券.造屋.起基.修造.动土.定磉.安床.安机械.安葬.破土.启攒.除服.成服.立碑.", "j": "作灶.嫁娶.移徙.入宅.理发.", "c": "生肖冲兔", "s": "煞東", "ch": "定", "zc": "正冲正冲辛卯", "ts": "仓库门房内北" }, "d0401": { "y": "冠笄.立券.交易.修造.动土.安机械.入殓.安葬.破土.", "j": "嫁娶.祈福.出火.入宅.", "c": "生肖冲猴", "s": "煞北", "ch": "闭", "zc": "正冲正冲丙申", "ts": "仓库炉房内南" }, "d0402": { "y": "祭祀.会亲友.出行.立券.交易.冠笄.纳财.", "j": "嫁娶.动土.掘井.起基.定磉.破土.", "c": "生肖冲鸡", "s": "煞西", "ch": "建", "zc": "正冲正冲丁酉", "ts": "房床门房内南" }, "d0403": { "y": "祭祀.沐浴.解除.扫舍.塞穴.牧养.", "j": "嫁娶.安葬.行丧.安门.", "c": "生肖冲狗", "s": "煞南", "ch": "除", "zc": "正冲正冲戊戌", "ts": "门鸡栖房内东" }, "d0404": { "y": "纳财.开市.交易.立券.开光.针灸.会亲友.理发.安床.造仓.结网.", "j": "移徙.入宅.栽种.", "c": "生肖冲猪", "s": "煞東", "ch": "满", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d0405": { "y": "纳采.嫁娶.开光.出行.理发.会亲友.开市.安床.栽种.牧养.入殓.移柩.启攒.", "j": "谢土.祈福.上梁.作灶.斋醮.修造.入宅.安门.", "c": "生肖冲鼠", "s": "煞北", "ch": "满", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d0407": { "y": "祭祀.祈福.开光.解除.动土.纳财.交易.纳畜.扫舍.", "j": "进人口.出行.嫁娶.置产.安床.赴任.安葬.作灶.", "c": "生肖冲虎", "s": "煞南", "ch": "定", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" }, "d0408": { "y": "祭祀.祈福.求嗣.开光.解除.出火.拆卸.入宅.安床.修造.安门.纳畜.启攒.安葬.", "j": "动土.破土.纳财.掘井.挂匾.开市.伐木.交易.", "c": "生肖冲兔", "s": "煞東", "ch": "执", "zc": "正冲正冲癸卯", "ts": "占大门外东北" }, "d0409": { "y": "祭祀.解除.破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲龙", "s": "煞北", "ch": "破", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d0410": { "y": "塞穴.扫舍.余事勿取.", "j": "诸事不宜.", "c": "生肖冲蛇", "s": "煞西", "ch": "危", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d0411": { "y": "祭祀.祈福.求嗣.开光.解除.纳采.冠笄.出火.拆卸.进人口.安床.动土.上梁.造庙.掘井.开池.入殓.移柩.安葬.破土.", "j": "", "c": "生肖冲马", "s": "煞南", "ch": "成", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d0413": { "y": "嫁娶.祈福.求嗣.开光.出行.解除.拆卸.出火.开市.立券.交易.入宅.移徙.安床.动土.破土.谢土.", "j": "祭祀.入殓.安葬.探病.", "c": "生肖冲猴", "s": "煞北", "ch": "开", "zc": "正冲正冲戊申", "ts": "占门炉外东北" }, "d0414": { "y": "祭祀.裁衣.冠笄.安床.交易.立券.开池.补垣.塞穴.入殓.破土.启攒.安葬.谢土.除服.成服.", "j": "嫁娶.掘井.探病.开市.开光.栽种.", "c": "生肖冲鸡", "s": "煞西", "ch": "闭", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d0415": { "y": "祭祀.出行.教牛马.扫舍.余事勿取.", "j": "开光.伐木.安葬.破土.", "c": "生肖冲狗", "s": "煞南", "ch": "建", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d0417": { "y": "开光.出行.交易.塞穴.嫁娶.理发.开市.安床.", "j": "祈福.出火.置产.动土.破土.安葬.修造.上梁.置产.入宅.", "c": "生肖冲鼠", "s": "煞北", "ch": "满", "zc": "正冲正冲壬子", "ts": "房床碓外正东" }, "d0418": { "y": "祭祀.作灶.畋猎.结网.修饰垣墙.平治道涂.余事勿取.", "j": "嫁娶.安床.治病.", "c": "生肖冲牛", "s": "煞西", "ch": "平", "zc": "正冲正冲癸丑", "ts": "占门厕外正东" }, "d0419": { "y": "沐浴.祭祀.解除.安葬.破土.谢土.移柩.余事勿取.", "j": "斋醮.开光.嫁娶.入宅.上梁.", "c": "生肖冲虎", "s": "煞南", "ch": "定", "zc": "正冲正冲甲寅", "ts": "碓磨炉外东南" }, "d0420": { "y": "祭祀.解除.入殓.移柩.启攒.安葬.整手足甲.捕捉.畋猎.取渔.除服.成服.扫舍.谢土.斋醮.", "j": "动土.破土.", "c": "生肖冲兔", "s": "煞東", "ch": "执", "zc": "正冲正冲乙卯", "ts": "厨灶门外东南" }, "d0421": { "y": "祭祀.沐浴.解除.破屋.坏垣.求医.治病.余事勿取.", "j": "嫁娶.开市.", "c": "生肖冲龙", "s": "煞北", "ch": "破", "zc": "正冲正冲丙辰", "ts": "仓库栖外东南" }, "d0423": { "y": "开市.交易.立券.挂匾.祭祀.开光.祈福.求嗣.安床.解除.修造.安葬.", "j": "纳采.问名.订盟.嫁娶.入宅.开仓.出火.动土.破土.纳畜.伐木.", "c": "生肖冲马", "s": "煞南", "ch": "成", "zc": "正冲正冲戊午", "ts": "占门碓外东南" }, "d0424": { "y": "祭祀.修门.取渔.纳财.纳畜.余事勿取.", "j": "嫁娶.入宅.", "c": "生肖冲羊", "s": "煞東", "ch": "收", "zc": "正冲正冲己未", "ts": "碓磨厕外东南" }, "d0427": { "y": "祭祀.修饰垣墙.余事勿取.", "j": "开光.修造.动土.破土.", "c": "生肖冲狗", "s": "煞南", "ch": "建", "zc": "正冲正冲壬戌", "ts": "房床栖外正南" }, "d0429": { "y": "祭祀.塑绘.开光.纳采.嫁娶.开市.出行.会亲友.安床.结网.除服.成服.启攒.安葬.移柩.", "j": "祈福.入宅.造屋.动土.破土.探病.", "c": "生肖冲鼠", "s": "煞北", "ch": "满", "zc": "正冲正冲甲子", "ts": "占碓磨外正南" }, "d0430": { "y": "祭祀.作灶.平治道涂.余事勿取.", "j": "安床.入宅.安碓硙.栽种.", "c": "生肖冲牛", "s": "煞西", "ch": "平", "zc": "正冲正冲乙丑", "ts": "厨灶厕外西南" }, "d0523": { "y": "纳采.订盟.嫁娶.祭祀.祈福.求嗣.开光.解除.出行.出火.入宅.移徙.栽种.纳畜.牧养.动土.破土.入殓.安葬.", "j": "作灶.安床.开仓.造屋.动土.安葬.", "c": "生肖冲鼠", "s": "煞北", "ch": "除", "zc": "正冲正冲戊子", "ts": "占门碓房内北" }, "d0623": { "y": "祭祀.斋醮.塑绘.开光.出行.修造.动土.造畜椆栖.安床.放水.掘井.开池.作厕.结网.破土.", "j": "出火.入宅.", "c": "生肖冲羊", "s": "煞東", "ch": "危", "zc": "正冲正冲己未", "ts": "碓磨厕外东南" }, "d0501": { "y": "祭祀.祈福.求嗣.斋醮.沐浴.纳畜.入殓.破土.安葬.", "j": "移徙.入宅.嫁娶.出行.安床.", "c": "生肖冲虎", "s": "煞南", "ch": "定", "zc": "正冲正冲丙寅", "ts": "仓库炉外西南" }, "d0502": { "y": "纳采.祭祀.祈福.求嗣.斋醮.出行.起基.造屋.定磉.安门.入殓.安葬.", "j": "嫁娶.开市.纳财.出火.", "c": "生肖冲兔", "s": "煞東", "ch": "执", "zc": "正冲正冲丁卯", "ts": "房床门外西南" }, "d0503": { "y": "祭祀.沐浴.解除.求医.治病.破屋.坏垣.余事勿取.", "j": "祈福.斋醮.开市.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "破", "zc": "正冲正冲戊辰", "ts": "门鸡栖外西南" }, "d0504": { "y": "沐浴.捕捉.畋猎.结网.取渔.", "j": "祭祀.嫁娶.入宅.作灶.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "危", "zc": "正冲正冲己巳", "ts": "碓磨床外西南" }, "d0505": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出行.拆卸.动土.上梁.出火.进人口.入宅.移徙.安床.栽种.纳畜.牧养.竖柱.安门.修造.解除.会亲友.", "j": "", "c": "生肖冲马", "s": "煞南", "ch": "危", "zc": "正冲正冲庚午", "ts": "厨灶碓外西南" }, "d0506": { "y": "开市.交易.立券.祭祀.祈福.开光.伐木.进人口.安床.拆卸.修造.动土.栽种.破土.移柩.安葬.", "j": "入宅.移徙.理发.出火.嫁娶.出行.", "c": "生肖冲羊", "s": "煞东", "ch": "成", "zc": "正冲正冲辛未", "ts": "仓库厕外西南" }, "d0507": { "y": "结网.解除.余事勿取.", "j": "诸事不宜.", "c": "生肖冲猴", "s": "煞北", "ch": "收", "zc": "正冲正冲壬申", "ts": "房床厕外正南" }, "d0508": { "y": "嫁娶.祭祀.祈福.求嗣.开光.开市.交易.立券.安床.出行.拆卸.", "j": "纳畜.入宅.移徙.安葬.探病.伐木.上梁.安门.入殓.动土.", "c": "生肖冲鸡", "s": "煞西", "ch": "开", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d0509": { "y": "嫁娶.祭祀.祈福.求嗣.出行.出火.拆卸.修造.动土.入宅.移徙.安床.作灶.塞穴.栽种.破土.安葬.", "j": "开光.掘井.开仓.", "c": "生肖冲狗", "s": "煞南", "ch": "闭", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d0510": { "y": "解除.扫舍.余事勿取.", "j": "诸事不宜.", "c": "生肖冲猪", "s": "煞東", "ch": "建", "zc": "正冲正冲乙亥", "ts": "厨灶床外正西" }, "d0511": { "y": "开市.交易.立券.挂匾.开光.出行.拆卸.进人口.入宅.移柩.动土.安门.上梁.栽种.破土.修坟.安葬.", "j": "嫁娶.安床.探病.作灶.", "c": "生肖冲鼠", "s": "煞北", "ch": "除", "zc": "正冲正冲丙子", "ts": "仓库碓外西北" }, "d0512": { "y": "进人口.会亲友.", "j": "塞穴.上梁.动土.伐木.安葬.词讼.", "c": "生肖冲牛", "s": "煞西", "ch": "满", "zc": "正冲正冲丁丑", "ts": "房床厕外西北" }, "d0513": { "y": "沐浴.平治道涂.扫舍.入殓.破土.安葬.除服.成服.", "j": "嫁娶.移徙.伐木.作梁.安床.祭祀.祈福.造屋.", "c": "生肖冲虎", "s": "煞南", "ch": "平", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d0514": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出火.出行.拆卸.动土.解除.进人口.开市.交易.立券.挂匾.入宅.移徙.安床.安门.上梁.安葬.破土.谢土.", "j": "", "c": "生肖冲兔", "s": "煞東", "ch": "定", "zc": "正冲正冲己卯", "ts": "占门炉外西北" }, "d0515": { "y": "祭祀.祈福.求嗣.开光.解除.合帐.冠笄.伐木.架马.作梁.修造.进人口.嫁娶.裁衣.合帐.安床.动土.起基.上梁.竖柱.放水.会亲友.", "j": "", "c": "生肖冲龙", "s": "煞北", "ch": "执", "zc": "正冲正冲庚辰", "ts": "厨灶栖外西北" }, "d0516": { "y": "破屋.坏垣.沐浴.解除.余事勿取.", "j": "诸事不宜.", "c": "生肖冲蛇", "s": "煞西", "ch": "破", "zc": "正冲正冲辛巳", "ts": "仓库床外西北" }, "d0517": { "y": "纳采.订盟.嫁娶.造车器.祭祀.祈福.求嗣.开光.出火.拆卸.修造.动土.进人口.挂匾.入宅.移徙.安床.栽种.入殓.破土.安葬.除服.成服.", "j": "开市.立券.", "c": "生肖冲马", "s": "煞南", "ch": "危", "zc": "正冲正冲壬午", "ts": "房床碓外正北" }, "d0518": { "y": "开市.交易.立券.祭祀.祈福.开光.动土.安床.出行.栽种.纳畜.牧养.竖柱.上梁.解除.破土.", "j": "嫁娶.掘井.入宅.移徙.安葬.", "c": "生肖冲羊", "s": "煞東", "ch": "成", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d0519": { "y": "解除.出行.纳采.冠笄.竖柱.上梁.移徙.作灶.进人口.入宅.纳畜.牧养.", "j": "祭祀.伐木.架马.安床.修造.动土.安葬.修坟.破土.", "c": "生肖冲猴", "s": "煞北", "ch": "收", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d0520": { "y": "祭祀.祈福.求嗣.开光.出行.开市.交易.立券.栽种.安床.纳畜.移徙.起基.动土.定磉.造仓.置产.破土.启攒.修坟.", "j": "入宅.移徙.修造.安门.伐木.入殓.安葬.造屋.", "c": "生肖冲鸡", "s": "煞西", "ch": "开", "zc": "正冲正冲乙酉", "ts": "厨灶门外正北" }, "d0521": { "y": "嫁娶.交易.立券.作厕.补垣.塞穴.畋猎.取渔.开生坟.", "j": "安床.开渠.上梁.修造.开市.开光.入宅.移徙.安床.", "c": "生肖冲狗", "s": "煞南", "ch": "闭", "zc": "正冲正冲丙戌", "ts": "仓库栖外正北" }, "d0522": { "y": "塞穴.断蚁.结网.畋猎.余事勿取.", "j": "嫁娶.安葬.入宅.出行.动土.词讼.", "c": "生肖冲猪", "s": "煞東", "ch": "建", "zc": "正冲正冲丁亥", "ts": "占房床房内北" }, "d0524": { "y": "开光.纳采.裁衣.冠笄.安床.作灶.进人口.造仓.塞穴.", "j": "嫁娶.栽种.修造.动土.出行.伐木.作梁.安葬.谢土.", "c": "生肖冲牛", "s": "煞西", "ch": "满", "zc": "正冲正冲己丑", "ts": "碓磨厕房内北" }, "d0525": { "y": "纳采.嫁娶.裁衣.理发.出行.修造.动土.进人口.开市.交易.立券.挂匾.移徙.上梁.栽种.纳畜.", "j": "伐木.安葬.安床.祭祀.祈福.", "c": "生肖冲虎", "s": "煞南", "ch": "平", "zc": "正冲正冲庚寅", "ts": "厨灶炉房内北" }, "d0527": { "y": "嫁娶.纳采.订盟.祭祀.祈福.求嗣.开光.出火.出行.拆卸.动土.修造.进人口.入宅.移徙.安床.解除.挂匾.栽种.破土.谢土.入殓.移柩.安葬.", "j": "开市.立券.造船.合寿木.", "c": "生肖冲龙", "s": "煞北", "ch": "执", "zc": "正冲正冲壬辰", "ts": "房床栖房内南" }, "d0528": { "y": "祭祀.沐浴.解除.破屋.坏垣.余事勿取.", "j": "开光.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "破", "zc": "正冲正冲癸巳", "ts": "占门床房内南" }, "d0529": { "y": "订盟.纳采.嫁娶.解除.祭祀.祈福.求嗣.开光.出行.解除.出火.拆卸.入宅.移徙.安床.栽种.纳畜.动土.破土.谢土.安葬.修坟.", "j": "作灶.开市.经络.", "c": "生肖冲马", "s": "煞南", "ch": "危", "zc": "正冲正冲甲午", "ts": "占碓磨房内南" }, "d0530": { "y": "祭祀.祈福.求嗣.开光.订盟.纳采.解除.动土.起基.进人口.开市.交易.立券.纳财.造仓.开池.栽种.纳畜.破土.安葬.", "j": "安床.上梁.裁衣.入宅.嫁娶.", "c": "生肖冲羊", "s": "煞東", "ch": "成", "zc": "正冲正冲乙未", "ts": "厨灶厕房内南" }, "d0531": { "y": "祭祀.结网.捕捉.余事勿取.", "j": "探病.嫁娶.开市.", "c": "生肖冲猴", "s": "煞北", "ch": "收", "zc": "正冲正冲丙申", "ts": "仓库炉房内南" }, "d0626": { "y": "嫁娶.纳采.订盟.冠笄.造车器.祭祀.开光.祈福.求嗣.出行.解除.伐木.出火.入宅.拆卸.修造.动土.上梁.安床.栽种.破土.", "j": "行丧.置产.入宅.安葬.", "c": "生肖冲狗", "s": "煞南", "ch": "开", "zc": "正冲正冲壬戌", "ts": "房床栖外正南" }, "d0613": { "y": "祭祀.作灶.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鸡", "s": "煞西", "ch": "收", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d0603": { "y": "祭祀.解除.断蚁.会亲友.余事勿取.", "j": "嫁娶.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "建", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d0628": { "y": "出行.教牛马.割蜜.余事勿取.", "j": "斋醮.造屋.动土.破土.", "c": "生肖冲鼠", "s": "煞北", "ch": "建", "zc": "正冲正冲甲子", "ts": "占碓磨外正南" }, "d0618": { "y": "嫁娶.开光.祭祀.祈福.出行.解除.移徙.入宅.开市.纳财.起基.修造.竖柱.上梁.造屋.作灶.出火.安香.补垣.塞穴.拆卸.放水.扫舍.造仓.造船.栽种.安葬.", "j": "纳采.订盟.安床.谢土.破土.动土.", "c": "生肖冲虎", "s": "煞南", "ch": "满", "zc": "正冲正冲甲寅", "ts": "碓磨炉外东南" }, "d0630": { "y": "安机械.祭祀.祈福.求嗣.沐浴.解除.纳采.开市.修造.竖柱.上梁.开柱眼.安碓硙.归岫.补垣.塞穴.拆卸.放水.出火.扫舍.开生坟.合寿木.安葬.谢土.启攒.除服.成服.", "j": "嫁娶.安床.作灶.动土.破土.造船.", "c": "生肖冲虎", "s": "煞南", "ch": "满", "zc": "正冲正冲丙寅", "ts": "仓库炉外西南" }, "d0726": { "y": "祭祀.嫁娶.畋猎.结网.", "j": "动土.破土.治病.开渠.", "c": "生肖冲龙", "s": "煞北", "ch": "平", "zc": "正冲正冲壬辰", "ts": "房床栖房内南" }, "d0601": { "y": "祭祀.祈福.求嗣.开光.纳采.订盟.嫁娶.出行.动土.破土.会亲友.开市.交易.立券.习艺.拆卸.起基.安碓硙.放水.开池.造仓.开渠.栽种.谢土.启攒.修坟.立碑.", "j": "入宅.安门.安葬.", "c": "生肖冲鸡", "s": "煞西", "ch": "开", "zc": "正冲正冲丁酉", "ts": "房床门房内南" }, "d0602": { "y": "嫁娶.冠笄.祭祀.出行.移徙.入宅.作灶.造车器.补垣.塞穴.作厕.破土.启攒.除服.成服.入殓.", "j": "入宅.造屋.造桥.安门.安葬.上梁.", "c": "生肖冲狗", "s": "煞南", "ch": "闭", "zc": "正冲正冲戊戌", "ts": "门鸡栖房内东" }, "d0604": { "y": "嫁娶.纳采.订盟.祭祀.祈福.治病.造车器.修造.动土.移徙.入宅.", "j": "开市.出行.安床.作灶.安葬.", "c": "生肖冲鼠", "s": "煞北", "ch": "除", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d0605": { "y": "嫁娶.纳采.订盟.会亲友.安机械.结网.冠笄.祭祀.求嗣.进人口.经络.", "j": "开市.作灶.动土.行丧.安葬.", "c": "生肖冲牛", "s": "煞西", "ch": "满", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d0606": { "y": "开光.求嗣.出行.解除.伐木.出火.拆卸.修造.上梁.起基.入宅.移徙.开市.交易.立券.栽种.牧养.入殓.安葬.除服.成服.", "j": "置产.安床.", "c": "生肖冲虎", "s": "煞南", "ch": "满", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" }, "d0607": { "y": "祭祀.理发.修饰垣墙.平治道涂.沐浴.整手足甲.扫舍.", "j": "出行.安门.修造.嫁娶.上梁.入宅.", "c": "生肖冲兔", "s": "煞東", "ch": "平", "zc": "正冲正冲癸卯", "ts": "占大门外东北" }, "d0608": { "y": "嫁娶.祭祀.开光.祈福.求嗣.出行.出火.拆卸.动土.修造.进人口.入宅.移徙.安床.挂匾.交易.立券.栽种.纳畜.入殓.破土.启攒.安葬.", "j": "", "c": "生肖冲龙", "s": "煞北", "ch": "定", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d0609": { "y": "祭祀.祈福.求嗣.开光.出行.伐木.出火.拆卸.修造.动土.起基.安床.入宅.移徙.", "j": "嫁娶.开市.交易.行丧.安葬.修坟.", "c": "生肖冲蛇", "s": "煞西", "ch": "执", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d0610": { "y": "破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲马", "s": "煞南", "ch": "破", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d0611": { "y": "开市.交易.立券.纳财.开池.作厕.结网.祭祀.修造.动土.安床.放水.经络.破土.", "j": "嫁娶.造桥.词讼.移徙.安门.作灶.栽种.", "c": "生肖冲羊", "s": "煞東", "ch": "危", "zc": "正冲正冲丁未", "ts": "房床厕外东北" }, "d0612": { "y": "开市.交易.立券.纳财.栽种.安床.拆卸.修造.动土.上梁.入殓.安葬.破土.除服.成服.", "j": "嫁娶.出火.伐木.祭祀.入宅.移徙.纳畜.探病.", "c": "生肖冲猴", "s": "煞北", "ch": "成", "zc": "正冲正冲戊申", "ts": "占门炉外东北" }, "d0614": { "y": "解除.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲狗", "s": "煞南", "ch": "开", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d0615": { "y": "修造.动土.起基.安门.安床.栽种.筑堤.补垣.造畜椆栖.", "j": "嫁娶.掘井.入宅.移徙.出火.出行.行丧.安葬.开光.理发.进人口.", "c": "生肖冲猪", "s": "煞東", "ch": "闭", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d0616": { "y": "祭祀.教牛马.断蚁.余事勿取.", "j": "斋醮.移徙.入宅.动土.", "c": "生肖冲鼠", "s": "煞北", "ch": "建", "zc": "正冲正冲壬子", "ts": "房床碓外正东" }, "d0617": { "y": "纳采.订盟.嫁娶.祭祀.祈福.开市.纳财.立券.移徙.出行.修造.动土.起基.定磉.竖柱.拆卸.扫舍.放水.安香.安床.造船.开池.掘井.造畜椆栖.栽种.", "j": "行丧.安葬.破土.作灶.伐木.斋醮.", "c": "生肖冲牛", "s": "煞西", "ch": "除", "zc": "正冲正冲癸丑", "ts": "占门厕外正东" }, "d0619": { "y": "嫁娶.祭祀.理发.作灶.修饰垣墙.平治道涂.整手足甲.沐浴.冠笄.", "j": "破土.出行.栽种.", "c": "生肖冲兔", "s": "煞東", "ch": "平", "zc": "正冲正冲乙卯", "ts": "厨灶门外东南" }, "d0620": { "y": "嫁娶.纳采.订盟.祭祀.祈福.求嗣.开光.出火.出行.拆卸.修造.动土.进人口.入宅.移徙.安床.交易.立券.挂匾.纳财.入殓.安葬.启攒.除服.成服.", "j": "动土.掘井.破土.", "c": "生肖冲龙", "s": "煞北", "ch": "定", "zc": "正冲正冲丙辰", "ts": "仓库栖外东南" }, "d0621": { "y": "畋猎.捕捉.结网.取渔.祭祀.沐浴.余事勿取.", "j": "嫁娶.开市.安葬.启攒.行丧.", "c": "生肖冲蛇", "s": "煞西", "ch": "执", "zc": "正冲正冲丁巳", "ts": "占房床外东南" }, "d0622": { "y": "祭祀.破屋.坏垣.余事勿取.", "j": "移徙.入宅.开仓.出货财.", "c": "生肖冲马", "s": "煞南", "ch": "破", "zc": "正冲正冲戊午", "ts": "占门碓外东南" }, "d0624": { "y": "开市.交易.立券.挂匾.开光.解除.拆卸.动土.安床.修造.上梁.置产.栽种.破土.安葬.", "j": "作灶.出火.祭祀.嫁娶.入宅.", "c": "生肖冲猴", "s": "煞北", "ch": "成", "zc": "正冲正冲庚申", "ts": "厨灶炉外正南" }, "d0625": { "y": "祭祀.结网.余事勿取.", "j": "入宅.出行.掘井.安葬.", "c": "生肖冲鸡", "s": "煞西", "ch": "收", "zc": "正冲正冲辛酉", "ts": "仓库门外正南" }, "d0627": { "y": "嫁娶.合帐.裁衣.冠笄.伐木.上梁.出火.拆卸.移徙.修造.动土.安门.纳财.筑堤.栽种.塞穴.", "j": "安床.祈福.出行.安葬.行丧.开光.", "c": "生肖冲猪", "s": "煞東", "ch": "闭", "zc": "正冲正冲癸亥", "ts": "占门床外正南" }, "d0629": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出行.解除.出火.拆卸.修造.进人口.入宅.移徙.动土.安床.纳畜.栽种.纳财.交易.立券.挂匾.造畜椆栖.", "j": "安葬.开生坟.合寿木.行丧.", "c": "生肖冲牛", "s": "煞西", "ch": "除", "zc": "正冲正冲乙丑", "ts": "厨灶厕外西南" }, "d0730": { "y": "嫁娶.开市.立券.移徙.入宅.安机械.会亲友.经络.安门.安床.挂匾.拆卸.开仓.出货财.开池.栽种.纳畜.牧养.破土.安葬.启攒.移柩.入殓.立碑.", "j": "祭祀.祈福.探病.谢土.造桥.", "c": "生肖冲猴", "s": "煞北", "ch": "危", "zc": "正冲正冲丙申", "ts": "仓库炉房内南" }, "d0723": { "y": "嫁娶.祭祀.出行.裁衣.冠笄.交易.雕刻.纳财.造畜椆栖.造车器.雕刻.教牛马.", "j": "移徙.入宅.栽种.动土.破土.作灶.安葬.行丧.伐木.上梁.", "c": "生肖冲牛", "s": "煞西", "ch": "建", "zc": "正冲正冲己丑", "ts": "碓磨厕房内北" }, "d0720": { "y": "祭祀.冠笄.作灶.交易.纳财.栽种.结网.纳畜.牧养.进人口.", "j": "开渠.造船.安床.安葬.破土.出行.修坟.掘井.开市.开生坟.", "c": "生肖冲狗", "s": "煞南", "ch": "收", "zc": "正冲正冲丙戌", "ts": "仓库栖外正北" }, "d0725": { "y": "嫁娶.纳采.订盟.造车器.开光.出行.拆卸.起基.安床.除服.成服.开市.交易.立券.栽种.牧养.入殓.移柩.启攒.", "j": "上梁.入宅.修造.动土.破土.祭祀.祈福.斋醮.", "c": "生肖冲兔", "s": "煞東", "ch": "满", "zc": "正冲正冲辛卯", "ts": "仓库门房内北" }, "d0825": { "y": "安机械.纳采.订盟.祭祀.祈福.求嗣.开光.普渡.出行.出火.拆卸.修造.动土.进人口.开市.交易.立券.移徙.安床.栽种.上梁.纳畜.破土.移柩.安葬.", "j": "入宅.嫁娶.掘井.牧养.", "c": "生肖冲狗", "s": "煞南", "ch": "成", "zc": "正冲正冲壬戌", "ts": "房床栖外正南" }, "d0701": { "y": "祭祀.沐浴.理发.整手足甲.修饰垣墙.平治道涂.余事勿取.", "j": "开市.入宅.出行.修造.词讼.", "c": "生肖冲兔", "s": "煞東", "ch": "平", "zc": "正冲正冲丁卯", "ts": "房床门外西南" }, "d0702": { "y": "嫁娶.纳采.祭祀.祈福.出行.立券.移徙.入宅.动土.破土.安葬.", "j": "开光.作灶.造屋.架马.开仓.", "c": "生肖冲龙", "s": "煞北", "ch": "定", "zc": "正冲正冲戊辰", "ts": "门鸡栖外西南" }, "d0703": { "y": "纳采.订盟.冠笄.祭祀.祈福.斋醮.出行.修造.动土.移徙.入宅.安香.出火.拆卸.造屋.起基.竖柱.上梁.定磉.安门.开池.", "j": "嫁娶.开市.合寿木.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "执", "zc": "正冲正冲己巳", "ts": "碓磨床外西南" }, "d0704": { "y": "祭祀.沐浴.破屋.坏垣.余事勿取.", "j": "入宅.嫁娶.移徙.", "c": "生肖冲马", "s": "煞南", "ch": "破", "zc": "正冲正冲庚午", "ts": "厨灶碓外西南" }, "d0705": { "y": "嫁娶.安机械.交易.出行.祭祀.祈福.求嗣.斋醮.塑绘.开光.合帐.裁衣.放水.开池.掘井.", "j": "作灶.理发.造桥.行丧.安葬.", "c": "生肖冲羊", "s": "煞東", "ch": "危", "zc": "正冲正冲辛未", "ts": "仓库厕外西南" }, "d0706": { "y": "纳采.冠笄.求医.治病.开市.立券.修造.动土.安机械.破土.安葬.", "j": "斋醮.祭祀.移徙.入宅.上梁.嫁娶.", "c": "生肖冲猴", "s": "煞北", "ch": "成", "zc": "正冲正冲壬申", "ts": "房床厕外正南" }, "d0707": { "y": "嫁娶.开光.出行.祈福.求嗣.解除.拆卸.动土.修造.进人口.开市.交易.立券.挂匾.入宅.移徙.安床.栽种.纳畜.入殓.移柩.安葬.", "j": "", "c": "生肖冲鸡", "s": "煞西", "ch": "成", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d0708": { "y": "祭祀.作灶.纳财.栽种.纳畜.进人口.", "j": "安葬.经络.修坟.破土.开市.安床.启攒.立碑.", "c": "生肖冲狗", "s": "煞南", "ch": "收", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d0709": { "y": "祭祀.祈福.求嗣.开光.开市.牧养.理发.", "j": "嫁娶.出行.安葬.入殓.入宅.作灶.冠笄.上梁.", "c": "生肖冲猪", "s": "煞東", "ch": "开", "zc": "正冲正冲乙亥", "ts": "厨灶床外正西" }, "d0710": { "y": "祭祀.入殓.破土.除服.成服.移柩.启攒.安葬.谢土.余事勿取.", "j": "余事勿取.", "c": "生肖冲鼠", "s": "煞北", "ch": "闭", "zc": "正冲正冲丙子", "ts": "仓库碓外西北" }, "d0711": { "y": "祭祀.出行.交易.割蜜.造畜椆栖.", "j": "嫁娶.作灶.安葬.动土.词讼.作梁.伐木.掘井.破土.移徙.", "c": "生肖冲牛", "s": "煞西", "ch": "建", "zc": "正冲正冲丁丑", "ts": "房床厕外西北" }, "d0712": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出火.拆卸.修造.动土.进人口.开市.交易.立券.挂匾.入宅.移徙.栽种.纳畜.入殓.启攒.除服.成服.", "j": "", "c": "生肖冲虎", "s": "煞南", "ch": "除", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d0713": { "y": "嫁娶.开光.解除.安床.牧养.理发.开市.入殓.启攒.移柩.安葬.扫舍.", "j": "作灶.动土.上梁.栽种.入宅.移徙.修造.祈福.", "c": "生肖冲兔", "s": "煞東", "ch": "满", "zc": "正冲正冲己卯", "ts": "占门炉外西北" }, "d0714": { "y": "祭祀.解除.余事勿取.", "j": "诸事不宜.", "c": "生肖冲龙", "s": "煞北", "ch": "平", "zc": "正冲正冲庚辰", "ts": "厨灶栖外西北" }, "d0715": { "y": "祭祀.祈福.求嗣.开光.伐木.出火.拆卸.入宅.安床.修造.动土.上梁.挂匾.纳畜.", "j": "嫁娶.栽种.行丧.理发.修坟.行丧.作灶.", "c": "生肖冲蛇", "s": "煞西", "ch": "定", "zc": "正冲正冲辛巳", "ts": "仓库床外西北" }, "d0716": { "y": "解除.祭祀.理发.入殓.安葬.破土.", "j": "嫁娶.开市.出火.作灶.置产.斋醮.入宅.移徙.安门.", "c": "生肖冲马", "s": "煞南", "ch": "执", "zc": "正冲正冲壬午", "ts": "房床碓外正北" }, "d0717": { "y": "破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲羊", "s": "煞東", "ch": "破", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d0718": { "y": "开市.交易.立券.纳财.动土.开光.出行.嫁娶.纳采.订盟.出行.纳财.入学.开仓.出货财.纳畜.牧养.栽种.破土.启攒.安葬.立碑.", "j": "入宅.移徙.作灶.祭祀.谢土.", "c": "生肖冲猴", "s": "煞北", "ch": "危", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d0719": { "y": "嫁娶.纳采.订盟.祭祀.祈福.求嗣.开光.出火.出行.拆卸.修造.动土.进人口.开市.交易.立券.挂匾.入宅.移徙.安床.栽种.入殓.破土.谢土.安葬.", "j": "掘井.伐木.纳畜.合寿木.", "c": "生肖冲鸡", "s": "煞西", "ch": "成", "zc": "正冲正冲乙酉", "ts": "厨灶门外正北" }, "d0721": { "y": "嫁娶.纳采.订盟.祭祀.祈福.求嗣.纳采.裁衣.冠笄.开光.安床.作梁.修造.动土.作灶.起基.上梁.造屋.纳畜.牧养.", "j": "移徙.栽种.出行.行丧.破土.安葬.词讼.", "c": "生肖冲猪", "s": "煞東", "ch": "开", "zc": "正冲正冲丁亥", "ts": "占房床房内北" }, "d0722": { "y": "经络.祭祀.沐浴.补垣.塞穴.除服.成服.移柩.入殓.启攒.立碑.", "j": "开光.治病.嫁娶.掘井.破土.安葬.", "c": "生肖冲鼠", "s": "煞北", "ch": "闭", "zc": "正冲正冲戊子", "ts": "占门碓房内北" }, "d0724": { "y": "修造.动土.安机械.祭祀.沐浴.解除.拆卸.治病.作灶.造屋.起基.开池.扫舍.造畜椆栖.开生坟.合寿木.安葬.破土.启攒.移柩.入殓.立碑.", "j": "开市.入宅.出行.安床.作灶.", "c": "生肖冲虎", "s": "煞南", "ch": "除", "zc": "正冲正冲庚寅", "ts": "厨灶炉房内北" }, "d0727": { "y": "纳采.订盟.会亲友.入学.祭祀.祈福.求嗣.开光.出行.解除.理发.动土.起基.开市.交易.立券.纳财.造仓.栽种.纳畜.牧养.", "j": "嫁娶.作灶.出火.置产.嫁娶.入宅.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "定", "zc": "正冲正冲癸巳", "ts": "占门床房内南" }, "d0728": { "y": "祭祀.祈福.解除.整手足甲.安床.沐浴.入殓.移柩.破土.启攒.安葬.谢土.", "j": "嫁娶.斋醮.开市.出火.入宅.移徙.出行.作灶.安门.伐木.", "c": "生肖冲马", "s": "煞南", "ch": "执", "zc": "正冲正冲甲午", "ts": "占碓磨房内南" }, "d0729": { "y": "破屋.坏垣.解除.余事勿取.", "j": "嫁娶.安葬.", "c": "生肖冲羊", "s": "煞東", "ch": "破", "zc": "正冲正冲乙未", "ts": "厨灶厕房内南" }, "d0731": { "y": "嫁娶.订盟.纳采.祭祀.祈福.斋醮.开光.会亲友.求医.治病.造屋.起基.竖柱.上梁.安门.安碓硙.筑堤.开池.破土.安葬.除服.成服.", "j": "入宅.开市.掘井.词讼.合寿木.", "c": "生肖冲鸡", "s": "煞西", "ch": "成", "zc": "正冲正冲丁酉", "ts": "房床门房内南" }, "d0815": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出行.解除.安床.栽种.移柩.进人口.会亲友.除服.成服.", "j": "造屋.入殓.安葬.伐木.入宅.移徙.置产.纳畜.", "c": "生肖冲鼠", "s": "煞北", "ch": "开", "zc": "正冲正冲壬子", "ts": "房床碓外正东" }, "d0829": { "y": "嫁娶.纳采.订盟.祭祀.祈福.求嗣.出行.解除.竖柱.入宅.移徙.纳财.上梁.纳畜.入殓.安葬.启攒.", "j": "栽种.掘井.动土.安床.破土.置产.", "c": "生肖冲虎", "s": "煞南", "ch": "建", "zc": "正冲正冲丙寅", "ts": "仓库炉外西南" }, "d0822": { "y": "破土.安葬.移柩.入殓.祭祀.捕捉.除服.成服.余事勿取.", "j": "嫁娶.入宅.开市.交易.", "c": "生肖冲羊", "s": "煞東", "ch": "执", "zc": "正冲正冲己未", "ts": "碓磨厕外东南" }, "d0922": { "y": "嫁娶.冠笄.安机械.解除.纳畜.牧养.沐浴.伐木.架马.作梁.安门.扫舍.合寿木.安葬.启攒.立碑.修坟.", "j": "祈福.开光.开市.入宅.动土.", "c": "生肖冲虎", "s": "煞南", "ch": "闭", "zc": "正冲正冲庚寅", "ts": "厨灶炉房内北" }, "d0801": { "y": "纳采.订盟.嫁娶.移徙.入宅.出行.祭祀.祈福.斋醮.塑绘.开光.安香.出火.会亲友.解除.入学.竖柱.上梁.拆卸.造屋.起基.栽种.牧养.纳畜.", "j": "安葬.破土.开市.开仓.出货财.启攒.", "c": "生肖冲狗", "s": "煞南", "ch": "收", "zc": "正冲正冲戊戌", "ts": "门鸡栖房内东" }, "d0802": { "y": "纳采.订盟.嫁娶.祭祀.沐浴.塑绘.开光.出火.治病.习艺.伐木.造屋.竖柱.上梁.安床.作灶.安碓硙.挂匾.掘井.纳畜.", "j": "出行.安葬.造桥.", "c": "生肖冲猪", "s": "煞東", "ch": "开", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d0803": { "y": "祭祀.入殓.除服.成服.移柩.破土.启攒.安葬.塞穴.断蚁.结网.", "j": "开市.入宅.嫁娶.开光.造屋.", "c": "生肖冲鼠", "s": "煞北", "ch": "闭", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d0804": { "y": "祭祀.修造.出行.造屋.竖柱.造车器.教牛马.造畜椆栖.割蜜.", "j": "动土.破土.掘井.安葬.", "c": "生肖冲牛", "s": "煞西", "ch": "建", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d0805": { "y": "祭祀.沐浴.塑绘.开光.入学.解除.扫舍.治病.开池.牧养.", "j": "嫁娶.出行.纳采.入宅.作灶.", "c": "生肖冲虎", "s": "煞南", "ch": "除", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" }, "d0806": { "y": "纳财.开市.交易.立券.出行.祭祀.祈福.求嗣.开光.解除.扫舍.起基.竖柱.安床.移徙.开仓.出货财.补垣.塞穴.栽种.纳畜.牧养.", "j": "斋醮.入宅.安门.安葬.破土.行丧.", "c": "生肖冲兔", "s": "煞東", "ch": "满", "zc": "正冲正冲癸卯", "ts": "占大门外东北" }, "d0807": { "y": "塑绘.开光.进人口.纳畜.补垣.塞穴.栽种.牧养.", "j": "嫁娶.纳财.祈福.安葬.修造.开市.交易.立券.动土.上梁.", "c": "生肖冲龙", "s": "煞北", "ch": "满", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d0808": { "y": "祭祀.作灶.沐浴.修饰垣墙.平治道涂.余事勿取.", "j": "诸事不宜.", "c": "生肖冲蛇", "s": "煞西", "ch": "平", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d0809": { "y": "祭祀.求嗣.开光.出行.伐木.作梁.出火.解除.拆卸.进人口.修造.动土.起基.安床.栽种.纳畜.入殓.破土.安葬.除服.成服.", "j": "嫁娶.移徙.", "c": "生肖冲马", "s": "煞南", "ch": "定", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d0810": { "y": "祭祀.求医.捕捉.栽种.塞穴.入殓.破土.安葬.移柩.余事勿取.", "j": "诸事不宜.", "c": "生肖冲羊", "s": "煞東", "ch": "执", "zc": "正冲正冲丁未", "ts": "房床厕外东北" }, "d0811": { "y": "破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲猴", "s": "煞北", "ch": "破", "zc": "正冲正冲戊申", "ts": "占门炉外东北" }, "d0812": { "y": "祭祀.结网.入殓.移柩.启攒.安葬.移柩.除服.成服.合寿木.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鸡", "s": "煞西", "ch": "危", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d0813": { "y": "嫁娶.出火.拆卸.祭祀.祈福.开光.伐木.动土.开市.交易.立券.入宅.移徙.安床.纳畜.入殓.安葬.", "j": "栽种.作灶.针灸.出行.", "c": "生肖冲狗", "s": "煞南", "ch": "成", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d0814": { "y": "祭祀.开光.解除.移徙.裁衣.开市.立券.祈福.求嗣.进人口.交易.纳财.纳畜.", "j": "动土.破土.理发.出行.入宅.分居.安香.出火.", "c": "生肖冲猪", "s": "煞東", "ch": "收", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d0816": { "y": "祭祀.动土.筑堤.开池.会亲友.塞穴.入殓.移柩.破土.安葬.", "j": "开光.出行.修造.上梁.入宅.安门.作灶.裁衣.", "c": "生肖冲牛", "s": "煞西", "ch": "闭", "zc": "正冲正冲癸丑", "ts": "占门厕外正东" }, "d0817": { "y": "祭祀.裁衣.安门.纳财.扫舍.出行.进人口.作灶.纳畜.造畜椆栖.", "j": "安床.动土.安葬.开生坟.合寿木.", "c": "生肖冲虎", "s": "煞南", "ch": "建", "zc": "正冲正冲甲寅", "ts": "碓磨炉外东南" }, "d0818": { "y": "祭祀.解除.拆卸.修造.动土.起基.上梁.安床.安门.开渠.开池.入殓.破土.启攒.", "j": "嫁娶.出行.进人口.作灶.入宅.移徙.栽种.赴任.", "c": "生肖冲兔", "s": "煞东", "ch": "除", "zc": "正冲正冲乙卯", "ts": "厨灶门外东南" }, "d0819": { "y": "纳采.订盟.开光.出行.解除.安香.出火.拆卸.入宅.移徙.修造.上梁.安床.栽种.纳畜.会亲友.安机械.经络.", "j": "伐木.谢土.行丧.祭祀.作灶.动土.破土.安葬.祈福.", "c": "生肖冲龙", "s": "煞北", "ch": "满", "zc": "正冲正冲丙辰", "ts": "仓库栖外东南" }, "d0820": { "y": "修饰垣墙.平治道涂.祭祀.沐浴.作灶.", "j": "嫁娶.词讼.治病.置产.作梁.祈福.安葬.栽种.伐木.安门.", "c": "生肖冲蛇", "s": "煞西", "ch": "平", "zc": "正冲正冲丁巳", "ts": "占房床外东南" }, "d0821": { "y": "嫁娶.祭祀.祈福.求嗣.出火.出行.开光.解除.拆卸.修造.进人口.安香.交易.立券.入宅.移徙.安床.动土.破土.谢土.安葬.入殓.除服.成服.", "j": "斋醮.开市.开仓.作灶.造船.", "c": "生肖冲马", "s": "煞南", "ch": "定", "zc": "正冲正冲戊午", "ts": "占门碓外东南" }, "d0823": { "y": "破屋.坏垣.治病.余事勿取.", "j": "祈福.纳采.订盟.嫁娶.入宅.安葬.", "c": "生肖冲猴", "s": "煞北", "ch": "破", "zc": "正冲正冲庚申", "ts": "厨灶炉外正南" }, "d0824": { "y": "嫁娶.开光.祭祀.祈福.求嗣.安香.出火.解除.伐木.入宅.移徙.安床.开市.交易.立券.栽种.出火.出行.安葬.", "j": "掘井.理发.作灶.动土.破土.开池.", "c": "生肖冲鸡", "s": "煞西", "ch": "危", "zc": "正冲正冲辛酉", "ts": "仓库门外正南" }, "d0826": { "y": "嫁娶.祭祀.祈福.求嗣.裁衣.冠笄.经络.修造.进人口.安床.动土.竖柱.上梁.移徙.交易.立券.栽种.会亲友.", "j": "行丧.安葬.出行.作梁.纳畜.伐木.造桥.", "c": "生肖冲猪", "s": "煞東", "ch": "收", "zc": "正冲正冲癸亥", "ts": "占门床外正南" }, "d0827": { "y": "嫁娶.纳采.订盟.开光.祭祀.出行.理发.动土.安床.放水.开渠.栽种.进人口.", "j": "入宅.上梁.入殓.造屋.探病.作灶.安门.安葬.纳畜.伐木.", "c": "生肖冲鼠", "s": "煞北", "ch": "开", "zc": "正冲正冲甲子", "ts": "占碓磨外正南" }, "d0828": { "y": "祭祀.出行.作梁.出火.拆卸.修造.动土.起基.安床.补垣.塞穴.入殓.破土.安葬.移柩.造畜椆栖.", "j": "嫁娶.入宅.斋醮.开光.针灸.掘井.", "c": "生肖冲牛", "s": "煞西", "ch": "闭", "zc": "正冲正冲乙丑", "ts": "厨灶厕外西南" }, "d0830": { "y": "解除.祭祀.祈福.求嗣.修造.动土.竖柱.上梁.安床.纳畜.造屋.合脊.起基.入殓.破土.安葬.", "j": "出火.嫁娶.开光.进人口.出行.词讼.开市.入宅.移徙.赴任.", "c": "生肖冲兔", "s": "煞东", "ch": "除", "zc": "正冲正冲丁卯", "ts": "房床门外西南" }, "d0831": { "y": "沐浴.理发.会亲友.塑绘.开光.栽种.牧养.嫁娶.经络.补垣.塞穴.", "j": "开市.入宅.动土.破土.安葬.作灶.上梁.安床.开仓.祈福.", "c": "生肖冲龙", "s": "煞北", "ch": "满", "zc": "正冲正冲戊辰", "ts": "门鸡栖外西南" }, "d0930": { "y": "嫁娶.纳采.订盟.祭祀.祈福.求嗣.开光.出行.出火.拆卸.修造.动土.进人口.入宅.移徙.安床.上梁.合脊.放水.掘井.破土.移柩.谢土.除服.成服.", "j": "开市.开仓.安门.安葬.", "c": "生肖冲狗", "s": "煞南", "ch": "危", "zc": "正冲正冲戊戌", "ts": "门鸡栖房内东" }, "d1022": { "y": "入殓.破土.启攒.安葬.除服.成服.余事勿取.", "j": "开市.入宅.祭祀.置产.补垣.塞穴.", "c": "生肖冲猴", "s": "煞北", "ch": "定", "zc": "正冲正冲庚申", "ts": "厨灶炉外正南" }, "d0901": { "y": "祭祀.理发.作灶.沐浴.修饰垣墙.平治道涂.", "j": "嫁娶.栽种.祈福.造桥.安葬.安门.伐木.作梁.", "c": "生肖冲蛇", "s": "煞西", "ch": "平", "zc": "正冲正冲己巳", "ts": "碓磨床外西南" }, "d0902": { "y": "嫁娶.纳采.订盟.祭祀.祈福.斋醮.普渡.移徙.入宅.出行.安机械.开光.修造.动土.竖柱.上梁.造屋.起基.定磉.安门.安葬.破土.", "j": "开市.立券.置产.作灶.造桥.", "c": "生肖冲马", "s": "煞南", "ch": "定", "zc": "正冲正冲庚午", "ts": "厨灶碓外西南" }, "d0903": { "y": "祭祀.普渡.捕捉.解除.结网.畋猎.入殓.破土.安葬.", "j": "开市.交易.入宅.嫁娶.", "c": "生肖冲羊", "s": "煞東", "ch": "执", "zc": "正冲正冲辛未", "ts": "仓库厕外西南" }, "d0904": { "y": "沐浴.破屋.坏垣.余事勿取.", "j": "斋醮.开市.", "c": "生肖冲猴", "s": "煞北", "ch": "破", "zc": "正冲正冲壬申", "ts": "房床厕外正南" }, "d0905": { "y": "订盟.纳采.祭祀.祈福.安香.出火.开市.立券.入宅.挂匾.造桥.启攒.安葬.", "j": "动土.破土.嫁娶.掘井.安床.", "c": "生肖冲鸡", "s": "煞西", "ch": "危", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d0906": { "y": "嫁娶.祭祀.祈福.斋醮.普渡.移徙.入宅.动土.治病.开市.交易.立券.开光.修造.造车器.安香.安床.捕捉.畋猎.结网.", "j": "纳采.订盟.经络.行丧.安葬.探病.", "c": "生肖冲狗", "s": "煞南", "ch": "成", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d0907": { "y": "嫁娶.订盟.纳采.作灶.冠笄.裁衣.会亲友.纳畜.牧养.安机械.开市.立券.纳财.安床.", "j": "掘井.出行.破土.行丧.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "收", "zc": "正冲正冲乙亥", "ts": "厨灶床外正西" }, "d0908": { "y": "祭祀.理发.会亲友.进人口.嫁娶.针灸.入殓.移柩.", "j": "探病.开渠.安葬.伐木.作灶.入宅.", "c": "生肖冲鼠", "s": "煞北", "ch": "收", "zc": "正冲正冲丙子", "ts": "仓库碓外西北" }, "d0909": { "y": "祭祀.立碑.修坟.启攒.除服.成服.余事勿取.", "j": "余事勿取.", "c": "生肖冲牛", "s": "煞西", "ch": "开", "zc": "正冲正冲丁丑", "ts": "房床厕外西北" }, "d0910": { "y": "嫁娶.出行.伐木.拆卸.修造.动土.移徙.安葬.破土.修坟.立碑.", "j": "掘井.祈福.安床.开市.入宅.挂匾.开光.", "c": "生肖冲虎", "s": "煞南", "ch": "闭", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d0911": { "y": "祭祀.出行.扫舍.余事勿取.", "j": "诸事不宜.", "c": "生肖冲兔", "s": "煞東", "ch": "建", "zc": "正冲正冲己卯", "ts": "占门炉外西北" }, "d0912": { "y": "嫁娶.祭祀.塑绘.开光.出行.解除.理发.整手足甲.动土.安床.开池.放水.扫舍.", "j": "伐木.行丧.作灶.作梁.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "除", "zc": "正冲正冲庚辰", "ts": "厨灶栖外西北" }, "d0913": { "y": "开市.交易.立券.挂匾.开光.出行.入宅.移徙.安床.出火.上梁.", "j": "作灶.行丧.理发.乘船.嫁娶.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "满", "zc": "正冲正冲辛巳", "ts": "仓库床外西北" }, "d0914": { "y": "祭祀.沐浴.修饰垣墙.平治道涂.余事勿取.", "j": "诸事不宜.", "c": "生肖冲马", "s": "煞南", "ch": "平", "zc": "正冲正冲壬午", "ts": "房床碓外正北" }, "d0915": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出行.出火.拆卸.修造.动土.进人口.入宅.移徙.安床.开市.交易.立券.挂匾.栽种.纳畜.入殓.安葬.除服.成服.", "j": "", "c": "生肖冲羊", "s": "煞東", "ch": "定", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d0916": { "y": "解除.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲猴", "s": "煞北", "ch": "执", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d0917": { "y": "祭祀.治病.破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鸡", "s": "煞西", "ch": "破", "zc": "正冲正冲乙酉", "ts": "厨灶门外正北" }, "d0918": { "y": "嫁娶.纳采.订盟.祭祀.开光.出行.理发.作梁.出火.拆卸.修造.动土.进人口.入宅.移徙.安床.移徙.拆卸.挂匾.栽种.纳畜.破土.安葬.入殓.除服.成服.", "j": "开市.掘井.开渠.造桥.造船.", "c": "生肖冲狗", "s": "煞南", "ch": "危", "zc": "正冲正冲丙戌", "ts": "仓库栖外正北" }, "d0919": { "y": "开市.交易.立券.纳财.挂匾.栽种.祭祀.祈福.开光.拆卸.动土.安床.", "j": "嫁娶.破土.进人口.出行.入宅.移徙.出火.纳畜.词讼.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "成", "zc": "正冲正冲丁亥", "ts": "占房床房内北" }, "d0920": { "y": "嫁娶.祭祀.理发.进人口.作灶.移柩.冠笄.会亲友.", "j": "开仓.出货财.伐木.纳畜.开市.上梁.造屋.破土.启攒.栽种.", "c": "生肖冲鼠", "s": "煞北", "ch": "收", "zc": "正冲正冲戊子", "ts": "占门碓房内北" }, "d0921": { "y": "祭祀.修坟.除服.成服.启攒.移柩.余事勿取.", "j": "开市.入宅.嫁娶.动土.破土.安葬.", "c": "生肖冲牛", "s": "煞西", "ch": "开", "zc": "正冲正冲己丑", "ts": "碓磨厕房内北" }, "d0923": { "y": "祭祀.出行.沐浴.扫舍.安葬.余事勿取.", "j": "动土.破土.置产.掘井.", "c": "生肖冲兔", "s": "煞東", "ch": "建", "zc": "正冲正冲辛卯", "ts": "仓库门房内北" }, "d0924": { "y": "嫁娶.纳采.祭祀.解除.出行.修造.动土.开市.上梁.安床.整手足甲.扫舍.求医.治病.起基.定磉.造屋.合脊.", "j": "造庙.行丧.安葬.伐木.作灶.造船.", "c": "生肖冲龙", "s": "煞北", "ch": "除", "zc": "正冲正冲壬辰", "ts": "房床栖房内南" }, "d0925": { "y": "纳采.订盟.开市.交易.立券.挂匾.纳财.栽种.进人口.入宅.移徙.安床.开光.出火.拆卸.安门.修造.", "j": "斋醮.嫁娶.行丧.动土.作灶.安葬.破土.", "c": "生肖冲蛇", "s": "煞西", "ch": "满", "zc": "正冲正冲癸巳", "ts": "占门床房内南" }, "d0926": { "y": "祭祀.沐浴.修饰垣墙.平治道涂.余事勿取.", "j": "嫁娶.入宅.安床.出行.", "c": "生肖冲马", "s": "煞南", "ch": "平", "zc": "正冲正冲甲午", "ts": "占碓磨房内南" }, "d0927": { "y": "开光.祈福.求嗣.斋醮.修造.动土.纳财.造仓.作厕.栽种.牧养.会亲友.", "j": "作灶.出火.进人口.开渠.入宅.移徙.祭祀.", "c": "生肖冲羊", "s": "煞東", "ch": "定", "zc": "正冲正冲乙未", "ts": "厨灶厕房内南" }, "d0928": { "y": "开光.解除.拆卸.修造.动土.竖柱.安门.牧养.安葬.修坟.破土.移柩.", "j": "出火.入宅.移徙.祈福.祭祀.安床.开市.嫁娶.探病.", "c": "生肖冲猴", "s": "煞北", "ch": "执", "zc": "正冲正冲丙申", "ts": "仓库炉房内南" }, "d0929": { "y": "破屋.坏垣.求医.治病.余事勿取.", "j": "移徙.入宅.", "c": "生肖冲鸡", "s": "煞西", "ch": "破", "zc": "正冲正冲丁酉", "ts": "房床门房内南" }, "d1027": { "y": "祭祀.冠笄.移徙.会亲友.纳财.理发.捕捉.", "j": "嫁娶.开市.开池.作厕.破土.", "c": "生肖冲牛", "s": "煞西", "ch": "收", "zc": "正冲正冲乙丑", "ts": "厨灶厕外西南" }, "d1122": { "y": "嫁娶.冠笄.祭祀.祈福.求嗣.斋醮.开光.出行.解除.动土.开市.交易.立券.挂匾.拆卸.破土.", "j": "伐木.上梁.修造.入殓.理发.会亲友.入宅.安门.安葬.作灶.", "c": "生肖冲兔", "s": "煞東", "ch": "开", "zc": "正冲正冲辛卯", "ts": "仓库门房内北" }, "d1001": { "y": "嫁娶.纳采.订盟.祭祀.祈福.求嗣.开光.解除.进人口.入宅.移徙.出火.安床.开市.交易.立券.挂匾.", "j": "安葬.纳畜.出行.行丧.伐木.栽种.造庙.造桥.", "c": "生肖冲猪", "s": "煞東", "ch": "成", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d1002": { "y": "祭祀.冠笄.捕捉.余事勿取.", "j": "嫁娶.开市.造屋.作梁.合寿木.", "c": "生肖冲鼠", "s": "煞北", "ch": "收", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d1003": { "y": "祭祀.解除.结网.畋猎.取渔.会亲友.入学.移柩.启攒.除服.成服.", "j": "开市.祈福.动土.破土.入殓.安葬.造船.", "c": "生肖冲牛", "s": "煞西", "ch": "开", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d1004": { "y": "冠笄.沐浴.出行.修造.动土.移徙.入宅.破土.安葬.", "j": "嫁娶.开市.祭祀.祈福.斋醮.纳采.修坟.", "c": "生肖冲虎", "s": "煞南", "ch": "闭", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" }, "d1005": { "y": "祭祀.出行.", "j": "嫁娶.入宅.修造.动土.会亲友.破土.", "c": "生肖冲兔", "s": "煞東", "ch": "建", "zc": "正冲正冲癸卯", "ts": "占大门外东北" }, "d1006": { "y": "嫁娶.订盟.纳采.祭祀.祈福.出行.修造.动土.移徙.入宅.", "j": "针灸.伐木.作梁.造庙.行丧.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "除", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d1007": { "y": "出行.开市.交易.立券.安机械.出火.上梁.移徙.", "j": "嫁娶.安葬.动土.造桥.", "c": "生肖冲蛇", "s": "煞西", "ch": "满", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d1008": { "y": "开市.交易.立券.纳财.会亲友.开光.理发.入殓.移柩.安葬.启攒.", "j": "嫁娶.作灶.出火.出行.入宅.移徙.安床.祈福.上梁.", "c": "生肖冲马", "s": "煞南", "ch": "满", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d1009": { "y": "造畜椆栖.平治道涂.余事勿取.", "j": "诸事不宜.", "c": "生肖冲羊", "s": "煞東", "ch": "平", "zc": "正冲正冲丁未", "ts": "房床厕外东北" }, "d1010": { "y": "入殓.破土.安葬.启攒.除服.成服.余事勿取.", "j": "余事勿取.", "c": "生肖冲猴", "s": "煞北", "ch": "定", "zc": "正冲正冲戊申", "ts": "占门炉外东北" }, "d1011": { "y": "祭祀.入殓.移柩.开生坟.破土.启攒.安葬.除服.成服.余事勿取.", "j": "余事勿取.", "c": "生肖冲鸡", "s": "煞西", "ch": "执", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d1012": { "y": "祭祀.解除.破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲狗", "s": "煞南", "ch": "破", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d1013": { "y": "嫁娶.求嗣.纳采.进人口.纳财.结网.纳畜.牧养.会亲友.", "j": "上梁.作灶.伐木.出行.安葬.安门.理发.", "c": "生肖冲猪", "s": "煞東", "ch": "危", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d1014": { "y": "嫁娶.祭祀.开市.开光.出行.入宅.移徙.出火.拆卸.修造.安床.", "j": "纳畜.伐木.置产.作梁.行丧.安葬.修坟.立碑.", "c": "生肖冲鼠", "s": "煞北", "ch": "成", "zc": "正冲正冲壬子", "ts": "房床碓外正东" }, "d1015": { "y": "嫁娶.祭祀.作灶.纳财.", "j": "安葬.开市.修坟.立碑.", "c": "生肖冲牛", "s": "煞西", "ch": "收", "zc": "正冲正冲癸丑", "ts": "占门厕外正东" }, "d1016": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出行.解除.出火.进人口.开市.交易.立券.挂匾.纳财.入宅.移徙.栽种.破土.谢土.", "j": "安床.安葬.", "c": "生肖冲虎", "s": "煞南", "ch": "开", "zc": "正冲正冲甲寅", "ts": "碓磨炉外东南" }, "d1017": { "y": "嫁娶.祭祀.祈福.求嗣.动土.安床.扫舍.入殓.移柩.破土.启攒.安葬.作灶.整手足甲.补垣.除服.成服.", "j": "开光.栽种.", "c": "生肖冲兔", "s": "煞東", "ch": "闭", "zc": "正冲正冲乙卯", "ts": "厨灶门外东南" }, "d1018": { "y": "祭祀.祈福.求嗣.开光.出行.解除.上梁.入宅.移徙.安床.安门.纳财.纳畜.造畜椆栖.", "j": "伐木.行丧.破土.嫁娶.安葬.开渠.", "c": "生肖冲龙", "s": "煞北", "ch": "建", "zc": "正冲正冲丙辰", "ts": "仓库栖外东南" }, "d1019": { "y": "祭祀.开光.出行.解除.理发.伐木.出火.拆卸.上梁.合脊.安床.造畜椆栖.", "j": "嫁娶.安葬.行丧.词讼.造桥.作灶.破土.动土.", "c": "生肖冲蛇", "s": "煞西", "ch": "除", "zc": "正冲正冲丁巳", "ts": "占房床外东南" }, "d1020": { "y": "纳采.订盟.会亲友.沐浴.理发.裁衣.冠笄.安床.除服.成服.启攒.移柩.安葬.会亲友.开生坟.", "j": "开市.入宅.出行.嫁娶.修坟.祈福.动土.入宅.安门.谢土.上梁.", "c": "生肖冲马", "s": "煞南", "ch": "满", "zc": "正冲正冲戊午", "ts": "占门碓外东南" }, "d1021": { "y": "解除.祭祀.修饰垣墙.平治道涂.造畜椆栖.余事勿取.", "j": "嫁娶.开市.交易.入宅.入学.安葬.", "c": "生肖冲羊", "s": "煞東", "ch": "平", "zc": "正冲正冲己未", "ts": "碓磨厕外东南" }, "d1023": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出行.拆卸.修造.动土.上梁.安床.纳畜.入殓.破土.", "j": "入宅.移徙.掘井.理发.伐木.交易.开市.作灶.", "c": "生肖冲鸡", "s": "煞西", "ch": "执", "zc": "正冲正冲辛酉", "ts": "仓库门外正南" }, "d1024": { "y": "祭祀.沐浴.破屋.坏垣.余事勿取.", "j": "嫁娶.入宅.上梁.出行.安葬.", "c": "生肖冲狗", "s": "煞南", "ch": "破", "zc": "正冲正冲壬戌", "ts": "房床栖外正南" }, "d1025": { "y": "祭祀.求嗣.冠笄.进人口.会亲友.安门.安床.经络.纳财.牧养.畋猎.放水.割蜜.", "j": "祈福.斋醮.纳采.订盟.嫁娶.入宅.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "危", "zc": "正冲正冲癸亥", "ts": "占门床外正南" }, "d1026": { "y": "嫁娶.纳采.订盟.开市.交易.立券.挂匾.祭祀.祈福.开光.造车器.挂匾.出行.入宅.移徙.安床.安门.拆卸.修造.动土.栽种.安葬.破土.启攒.除服.成服.入殓.立碑.", "j": "探病.纳畜.伐木.起基.作梁.造屋.", "c": "生肖冲鼠", "s": "煞北", "ch": "成", "zc": "正冲正冲甲子", "ts": "占碓磨外正南" }, "d1028": { "y": "祭祀.祈福.求嗣.斋醮.开光.出行.嫁娶.求医.治病.动土.破土.入学.起基.扫舍.竖柱.上梁.开仓.出货财.置产.栽种.牧养.开生坟.谢土.立碑.", "j": "安门.安床.裁衣.入宅.安葬.", "c": "生肖冲虎", "s": "煞南", "ch": "开", "zc": "正冲正冲丙寅", "ts": "仓库炉外西南" }, "d1029": { "y": "嫁娶.裁衣.冠笄.合帐.祭祀.出行.安床.移徙.塞穴.入殓.破土.移柩.安葬.", "j": "开市.出行.栽种.置产.词讼.安门.掘井.开光.", "c": "生肖冲兔", "s": "煞東", "ch": "闭", "zc": "正冲正冲丁卯", "ts": "房床门外西南" }, "d1030": { "y": "祭祀.造车器.出行.修造.上梁.造屋.安门.安床.造畜椆栖.教牛马.", "j": "出货财.开仓.动土.破土.安葬.行丧.伐木.开渠.栽种.", "c": "生肖冲龙", "s": "煞北", "ch": "建", "zc": "正冲正冲戊辰", "ts": "门鸡栖外西南" }, "d1031": { "y": "祭祀.开光.出行.解除.伐木.作梁.出火.拆卸.入宅.移徙.安床.修造.造畜椆栖.扫舍.", "j": "造庙.嫁娶.掘井.栽种.造桥.作灶.动土.", "c": "生肖冲蛇", "s": "煞西", "ch": "除", "zc": "正冲正冲己巳", "ts": "碓磨床外西南" }, "d1128": { "y": "嫁娶.纳采.订盟.祭祀.斋醮.开光.安香.出火.出行.出火.拆卸.动土.祈福.进人口.纳财.交易.立券.移徙.安床.修造.安葬.除服.成服.", "j": "置产.掘井.词讼.栽种.", "c": "生肖冲鸡", "s": "煞西", "ch": "定", "zc": "正冲正冲丁酉", "ts": "房床门房内南" }, "d1125": { "y": "纳采.订盟.嫁娶.祭祀.祈福.求嗣.开光.出行.解除.进人口.开市.立券.挂匾.入宅.移徙.安门.栽种.动土.求医.治病.会亲友.起基.修造.造屋.安葬.", "j": "作灶.经络.安床.", "c": "生肖冲马", "s": "煞南", "ch": "除", "zc": "正冲正冲甲午", "ts": "占碓磨房内南" }, "d1225": { "y": "破屋.坏垣.治病.余事勿取.", "j": "移徙.入宅.", "c": "生肖冲鼠", "s": "煞北", "ch": "破", "zc": "正冲正冲甲子", "ts": "占碓磨外正南" }, "d1101": { "y": "纳采.订盟.开市.交易.立券.会亲友.纳畜.牧养.问名.移徙.解除.作厕.入学.起基.安床.开仓.出货财.安葬.启攒.入殓.除服.成服.", "j": "入宅.上梁.斋醮.出火.谢土.", "c": "生肖冲马", "s": "煞南", "ch": "满", "zc": "正冲正冲庚午", "ts": "厨灶碓外西南" }, "d1102": { "y": "祭祀.平治道涂.余事勿取.", "j": "嫁娶.开市.", "c": "生肖冲羊", "s": "煞東", "ch": "平", "zc": "正冲正冲辛未", "ts": "仓库厕外西南" }, "d1103": { "y": "捕捉.畋猎.余事勿取.", "j": "开市.交易.祭祀.入宅.安葬.", "c": "生肖冲猴", "s": "煞北", "ch": "定", "zc": "正冲正冲壬申", "ts": "房床厕外正南" }, "d1104": { "y": "嫁娶.纳采.订盟.祭祀.祈福.求嗣.斋醮.开光.安香.出火.造庙.移徙.出行.入宅.造庙.起基.竖柱.上梁.安床.纳畜.捕捉.纳婿.安葬.", "j": "开市.破土.掘井.合寿木.", "c": "生肖冲鸡", "s": "煞西", "ch": "执", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d1105": { "y": "祭祀.沐浴.解除.破屋.坏垣.余事勿取.", "j": "开市.嫁娶.", "c": "生肖冲狗", "s": "煞南", "ch": "破", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d1106": { "y": "订盟.纳采.会亲友.交易.立券.纳财.栽种.纳畜.牧养.", "j": "嫁娶.开市.入宅.祈福.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "危", "zc": "正冲正冲乙亥", "ts": "厨灶床外正西" }, "d1107": { "y": "嫁娶.祭祀.开光.出火.出行.拆卸.修造.动土.解除.开市.交易.立券.挂匾.纳财.入宅.移徙.安床.栽种.纳畜.", "j": "探病.安葬.", "c": "生肖冲鼠", "s": "煞北", "ch": "危", "zc": "正冲正冲丙子", "ts": "仓库碓外西北" }, "d1108": { "y": "祭祀.祈福.求嗣.开光.解除.理发.会亲友.栽种.纳畜.牧养.安葬.修坟.立碑.启攒.", "j": "入宅.作灶.词讼.移徙.出行.赴任.", "c": "生肖冲牛", "s": "煞西", "ch": "成", "zc": "正冲正冲丁丑", "ts": "房床厕外西北" }, "d1109": { "y": "祭祀.沐浴.结网.移柩.入殓.除服.成服.", "j": "安床.开市.交易.出货财.安葬.修坟.嫁娶.作灶.", "c": "生肖冲虎", "s": "煞南", "ch": "收", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d1110": { "y": "解除.余事勿取.", "j": "余事勿取.", "c": "生肖冲兔", "s": "煞東", "ch": "开", "zc": "正冲正冲己卯", "ts": "占门炉外西北" }, "d1111": { "y": "安床.祭祀.开池.补垣.入殓.移柩.破土.启攒.", "j": "入宅.移徙.嫁娶.掘井.作灶.出火.进人口.开市.开光.", "c": "生肖冲龙", "s": "煞北", "ch": "闭", "zc": "正冲正冲庚辰", "ts": "厨灶栖外西北" }, "d1112": { "y": "祭祀.沐浴.余事勿取.", "j": "余事勿取.", "c": "生肖冲蛇", "s": "煞西", "ch": "建", "zc": "正冲正冲辛巳", "ts": "仓库床外西北" }, "d1113": { "y": "嫁娶.开光.出行.解除.出火.拆卸.修造.进人口.动土.入宅.移徙.栽种.纳畜.掘井.安葬.除服.成服.", "j": "置产.安床.", "c": "生肖冲马", "s": "煞南", "ch": "除", "zc": "正冲正冲壬午", "ts": "房床碓外正北" }, "d1114": { "y": "开光.裁衣.安门.会亲友.安床.结网.理发.", "j": "嫁娶.冠笄.出行.祈福.安葬.伐木.入宅.移徙.出火.栽种.动土.上梁.", "c": "生肖冲羊", "s": "煞東", "ch": "满", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d1115": { "y": "嫁娶.开光.出行.出火.拆卸.修造.动土.入宅.移徙.安床.上梁.开市.交易.立券.栽种.", "j": "祈福.祭祀.伐木.掘井.作灶.谢土.", "c": "生肖冲猴", "s": "煞北", "ch": "平", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d1116": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出火.出行.拆卸.开市.交易.立券.挂匾.伐木.入宅.移徙.安床.安葬.", "j": "栽种.掘井.置产.", "c": "生肖冲鸡", "s": "煞西", "ch": "定", "zc": "正冲正冲乙酉", "ts": "厨灶门外正北" }, "d1117": { "y": "祭祀.理发.针灸.解除.进人口.整手足甲.", "j": "嫁娶.动土.造船.开池.掘井.出行.修造.入宅.上梁.移徙.安葬.破土.作灶.开市.", "c": "生肖冲狗", "s": "煞南", "ch": "执", "zc": "正冲正冲丙戌", "ts": "仓库栖外正北" }, "d1118": { "y": "破屋.坏垣.求医.治病.余事勿取.", "j": "嫁娶.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "破", "zc": "正冲正冲丁亥", "ts": "占房床房内北" }, "d1119": { "y": "纳采.订盟.嫁娶.祭祀.祈福.雕刻.移徙.开市.入宅.出行.动土.会亲友.入学.修造.动土.起基.安门.安床.造庙.解除.纳财.开池.造畜椆栖.牧养.牧养.", "j": "上梁.开仓.出货财.造屋.造船.", "c": "生肖冲鼠", "s": "煞北", "ch": "危", "zc": "正冲正冲戊子", "ts": "占门碓房内北" }, "d1120": { "y": "祭祀.祈福.求嗣.开光.解除.伐木.拆卸.修造.栽种.纳畜.安葬.修坟.立碑.", "j": "嫁娶.进人口.入宅.移徙.出火.出行.", "c": "生肖冲牛", "s": "煞西", "ch": "成", "zc": "正冲正冲己丑", "ts": "碓磨厕房内北" }, "d1121": { "y": "沐浴.扫舍.捕捉.畋猎.解除.塞穴.余事勿取.", "j": "嫁娶.入宅.开市.安床.破土.修坟.", "c": "生肖冲虎", "s": "煞南", "ch": "收", "zc": "正冲正冲庚寅", "ts": "厨灶炉房内北" }, "d1123": { "y": "合帐.裁衣.嫁娶.安床.入殓.移柩.破土.造畜椆栖.", "j": "置产.造船.开光.掘井.作灶.", "c": "生肖冲龙", "s": "煞北", "ch": "闭", "zc": "正冲正冲壬辰", "ts": "房床栖房内南" }, "d1124": { "y": "解除.修饰垣墙.冠笄.出行.余事勿取.", "j": "开市.动土.破土.嫁娶.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "建", "zc": "正冲正冲癸巳", "ts": "占门床房内南" }, "d1126": { "y": "祭祀.塑绘.理发.会亲友.牧养.开池.造畜椆栖.畋猎.结网.", "j": "祈福.谢土.安葬.上梁.作灶.开市.嫁娶.出行.入宅.动土.", "c": "生肖冲羊", "s": "煞東", "ch": "满", "zc": "正冲正冲乙未", "ts": "厨灶厕房内南" }, "d1127": { "y": "出行.纳财.开市.交易.立券.动土.移徙.入宅.裁衣.会亲友.拆卸.进人口.安香.经络.出货财.修饰垣墙.平治道涂.", "j": "造庙.谢土.作灶.作梁.伐木.安葬.行丧.修坟.探病.", "c": "生肖冲猴", "s": "煞北", "ch": "平", "zc": "正冲正冲丙申", "ts": "仓库炉房内南" }, "d1129": { "y": "嫁娶.纳采.订盟.祭祀.开光.出行.解除.伐木.出火.入宅.移徙.拆卸.修造.栽种.安葬.入殓.", "j": "破土.动土.安门.作灶.开市.交易.", "c": "生肖冲狗", "s": "煞南", "ch": "执", "zc": "正冲正冲戊戌", "ts": "门鸡栖房内东" }, "d1130": { "y": "祭祀.解除.破屋.坏垣.求医.治病.余事勿取.", "j": "嫁娶.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "破", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d1201": { "y": "祭祀.扫舍.破土.安葬.除服.成服.启攒.移柩.入殓.立碑.余事勿取.", "j": "祭祀.嫁娶.入宅.修造.动土.", "c": "生肖冲鼠", "s": "煞北", "ch": "危", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d1202": { "y": "订盟.纳采.会亲友.祭祀.祈福.修造.动土.安机械.破土.安葬.", "j": "嫁娶.移徙.出火.开市.入宅.", "c": "生肖冲牛", "s": "煞西", "ch": "成", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d1203": { "y": "祭祀.沐浴.捕捉.畋猎.结网.扫舍.", "j": "嫁娶.纳采.订盟.安床.动土.破土.安葬.", "c": "生肖冲虎", "s": "煞南", "ch": "收", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" }, "d1204": { "y": "开市.纳财.出行.祭祀.祈福.求嗣.斋醮.问名.入学.起基.定磉.置产.开渠.掘井.拆卸.栽种.纳畜.牧养.动土.破土.启攒.", "j": "移徙.入宅.出火.入殓.安葬.", "c": "生肖冲兔", "s": "煞東", "ch": "开", "zc": "正冲正冲癸卯", "ts": "占大门外东北" }, "d1205": { "y": "祭祀.理发.置产.塞穴.除服.成服.移柩.入殓.破土.安葬.", "j": "嫁娶.入宅.安床.掘井.开光.", "c": "生肖冲龙", "s": "煞北", "ch": "闭", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d1206": { "y": "祭祀.沐浴.出行.余事勿取.", "j": "开市.动土.破土.行丧.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "建", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d1207": { "y": "安葬.启攒.移柩.入殓.除服.成服.", "j": "余事勿取.", "c": "生肖冲马", "s": "煞南", "ch": "建", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d1208": { "y": "嫁娶.祭祀.祈福.求嗣.出行.出火.拆卸.开市.交易.立券.挂匾.入宅.移徙.安床.栽种.", "j": "作灶.塑绘.行丧.词讼.伐木.安葬.", "c": "生肖冲羊", "s": "煞東", "ch": "除", "zc": "正冲正冲丁未", "ts": "房床厕外东北" }, "d1209": { "y": "理发.开光.解除.拆卸.修造.安葬.开市.交易.立券.挂匾.安床.栽种.", "j": "入宅.移徙.作灶.祈福.祭祀.嫁娶.谢土.掘井.造屋.探病.", "c": "生肖冲猴", "s": "煞北", "ch": "满", "zc": "正冲正冲戊申", "ts": "占门炉外东北" }, "d1210": { "y": "祭祀.修饰垣墙.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鸡", "s": "煞西", "ch": "平", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d1211": { "y": "入宅.安床.开光.祭祀.出火.拆卸.动土.挂匾.入殓.破土.安葬.纳畜.", "j": "嫁娶.开市.作灶.置产.作梁.伐木.", "c": "生肖冲狗", "s": "煞南", "ch": "定", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d1212": { "y": "祭祀.解除.余事勿取.", "j": "诸事不宜.", "c": "生肖冲猪", "s": "煞東", "ch": "执", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d1213": { "y": "破屋.坏垣.祭祀.沐浴.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鼠", "s": "煞北", "ch": "破", "zc": "正冲正冲壬子", "ts": "房床碓外正东" }, "d1214": { "y": "安床.祭祀.祈福.求嗣.冠笄.伐木.架马.动土.开池.作厕.结网.入殓.除服.成服.", "j": "安门.栽种.作灶.治病.", "c": "生肖冲牛", "s": "煞西", "ch": "危", "zc": "正冲正冲癸丑", "ts": "占门厕外正东" }, "d1215": { "y": "解除.扫舍.余事勿取.", "j": "诸事不宜.", "c": "生肖冲虎", "s": "煞南", "ch": "成", "zc": "正冲正冲甲寅", "ts": "碓磨炉外东南" }, "d1216": { "y": "祭祀.开光.理发.整手足甲.安床.作灶.扫舍.教牛马.", "j": "伐木.纳畜.破土.安葬.开生坟.嫁娶.开市.动土.交易.作梁.", "c": "生肖冲兔", "s": "煞東", "ch": "收", "zc": "正冲正冲乙卯", "ts": "厨灶门外东南" }, "d1217": { "y": "祭祀.祈福.求嗣.开光.拆卸.修造.动土.上梁.安床.置产.栽种.破土.", "j": "嫁娶.进人口.安葬.出行.赴任.入宅.移徙.入殓.开渠.", "c": "生肖冲龙", "s": "煞北", "ch": "开", "zc": "正冲正冲丙辰", "ts": "仓库栖外东南" }, "d1218": { "y": "沐浴.冠笄.补垣.塞穴.合帐.裁衣.修造.作梁.开柱眼.安碓硙.筑堤.作厕.断蚁.", "j": "移徙.入宅.嫁娶.祈福.开光.掘井.", "c": "生肖冲蛇", "s": "煞西", "ch": "闭", "zc": "正冲正冲丁巳", "ts": "占房床外东南" }, "d1219": { "y": "交易.进人口.祭祀.沐浴.捕捉.入殓.除服.成服.安葬.谢土.启攒.修坟.", "j": "斋醮.入宅.修造.动土.破土.", "c": "生肖冲马", "s": "煞南", "ch": "建", "zc": "正冲正冲戊午", "ts": "占门碓外东南" }, "d1220": { "y": "嫁娶.纳采.订盟.造车器.祭祀.祈福.造庙.安香.出火.出行.归宁.入学.入宅.交易.立券.求医.治病.修造.动土.竖柱.上梁.造屋.起基.安门.", "j": "斋醮.伐木.作梁.安葬.行丧.", "c": "生肖冲羊", "s": "煞東", "ch": "除", "zc": "正冲正冲己未", "ts": "碓磨厕外东南" }, "d1221": { "y": "纳采.订盟.开市.交易.立券.出行.会亲友.安机械.竖柱.上梁.平治道涂.伐木.拆卸.造屋.起基.安床.安门.解除.安葬.启攒.除服.成服.修坟.立碑.移柩.入殓.", "j": "嫁娶.动土.破土.祈福.出火.入宅.", "c": "生肖冲猴", "s": "煞北", "ch": "满", "zc": "正冲正冲庚申", "ts": "厨灶炉外正南" }, "d1222": { "y": "祭祀.平治道涂.除服.成服.安葬.余事勿取.", "j": "嫁娶.入宅.纳采.订盟.掘井.", "c": "生肖冲鸡", "s": "煞西", "ch": "平", "zc": "正冲正冲辛酉", "ts": "仓库门外正南" }, "d1223": { "y": "纳采.订盟.祭祀.祈福.开光.安香.出火.出行.会亲友.安机械.修造.动土.竖柱.上梁.造屋.起基.定磉.安床.安门.拆卸.移徙.造桥.造船.安葬.破土.入殓.", "j": "开市.造庙.置产.掘井.", "c": "生肖冲狗", "s": "煞南", "ch": "定", "zc": "正冲正冲壬戌", "ts": "房床栖外正南" }, "d1224": { "y": "嫁娶.冠笄.祭祀.祈福.求嗣.斋醮.进人口.会亲友.伐木.作梁.开柱眼.安床.掘井.捕捉.畋猎.", "j": "开生坟.破土.行丧.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "执", "zc": "正冲正冲癸亥", "ts": "占门床外正南" }, "d1226": { "y": "安床.架马.祭祀.塑绘.开光.出行.理发.伐木.作梁.开柱眼.作厕.畋猎.破土.入殓.除服.成服.移柩.启攒.修坟.立碑.", "j": "作灶.安门.造桥.开市.安葬.", "c": "生肖冲牛", "s": "煞西", "ch": "危", "zc": "正冲正冲乙丑", "ts": "厨灶厕外西南" }, "d1227": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出行.解除.入宅.移徙.纳畜.入殓.破土.修坟.立碑.", "j": "伐木.作梁.动土.安床.破土.栽种.造桥.", "c": "生肖冲虎", "s": "煞南", "ch": "成", "zc": "正冲正冲丙寅", "ts": "仓库炉外西南" }, "d1228": { "y": "祭祀.沐浴.理发.纳财.进人口.栽种.扫舍.捕捉.畋猎.结网.", "j": "会亲友.安葬.入宅.移徙.安床.开市.行丧.出火.作灶.安门.", "c": "生肖冲兔", "s": "煞東", "ch": "收", "zc": "正冲正冲丁卯", "ts": "房床门外西南" }, "d1229": { "y": "纳采.订盟.祭祀.祈福.求嗣.塑绘.解除.拆卸.修造.动土.竖柱.上梁.安门.置产.开池.掘井.纳畜.安床.栽种.造畜椆栖.破土.移柩.立碑.", "j": "嫁娶.开市.出火.进人口.入殓.赴任.入宅.移徙.出行.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "开", "zc": "正冲正冲戊辰", "ts": "门鸡栖外西南" }, "d1230": { "y": "入宅.移徙.出行.进人口.修造.动土.起基.上梁.安门.造仓.补垣.塞穴.造畜椆栖.", "j": "嫁娶.开市.安床.栽种.安葬.祈福.开光.掘井.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "闭", "zc": "正冲正冲己巳", "ts": "碓磨床外西南" }, "d1231": { "y": "造畜椆栖.教牛马.", "j": "入宅.移徙.分居.作灶.出火.安香.动土.嫁娶.掘井.扫舍.造桥.", "c": "生肖冲马", "s": "煞南", "ch": "建", "zc": "正冲正冲庚午", "ts": "厨灶碓外西南" } } ukui-panel-4.0.0.4/plugin-calendar/html/hlnew/hl2029.json0000644000175000017500000012256014560306203021315 0ustar fengfeng{ "d0101": { "j": "入宅.修造.动土.破土.安门", "y": "祭祀.入殓.移柩.余事勿取" }, "d0102": { "j": "掘井.伐木.斋醮.作灶", "y": "塑绘.开光.订盟.纳采.裁衣" }, "d0103": { "j": "出行.安葬.修坟.开市", "y": "祭祀.塑绘.开光.裁衣.冠笄" }, "d0104": { "j": "诸事不宜", "y": "祭祀.求医.破屋.坏垣.余事勿取" }, "d0105": { "j": "开市.动土.破土", "y": "祭祀.破屋.坏垣.解除.余事勿取" }, "d0106": { "j": "祈福.造庙.祭祀.安床.谢土", "y": "嫁娶.纳采.订盟.开光.安香" }, "d0107": { "j": "嫁娶.入宅.作灶.纳采.订盟", "y": "祭祀.斋醮.入殓.破土.启钻" }, "d0108": { "j": "嫁娶.开市.入宅.安床.破土", "y": "祭祀.斋醮.纳财.捕捉.畋猎" }, "d0109": { "j": "嫁娶.合帐.入宅.行丧.安葬", "y": "纳采.订盟.祭祀.祈福.求嗣" }, "d0110": { "j": "入宅.置产.嫁娶.动土.栽种", "y": "祭祀.祈福.求嗣.沐浴.问名" }, "d0111": { "j": "嫁娶.入宅.出行.动土.破土", "y": "祭祀.教牛马.造畜稠.祭祀.会亲友" }, "d0112": { "j": "作灶.安葬.祭祀.开市.纳采", "y": "嫁娶.开光.解除.出火.拆卸" }, "d0113": { "j": "挂匾.入宅.上樑.祈福.词讼", "y": "出行.起基.安床.纳财.交易" }, "d0114": { "j": "开光.嫁娶.开仓.出货财.造船", "y": "平治道涂.余事勿取" }, "d0115": { "j": "开市.出行.安葬.行丧", "y": "嫁娶.订盟.纳采.会亲友.祭祀" }, "d0116": { "j": "纳采.订盟.嫁娶.上樑.开市", "y": "沐浴.捕捉.畋猎.理髮.整手足甲" }, "d0117": { "j": "斋醮.嫁娶.开市", "y": "祭祀.破屋.坏垣.余事勿取" }, "d0118": { "j": "祈福.嫁娶.安床.入宅.造船", "y": "沐浴.开仓.出货财.开市.交易" }, "d0119": { "j": "造庙.入宅.修造.安葬.行丧", "y": "祭祀.沐浴.补垣.塞穴.断蚁" }, "d0120": { "j": "开市.安床.安葬.修坟", "y": "嫁娶.纳采.订盟.问名.祭祀" }, "d0121": { "j": "造庙.嫁娶.出行.动土.安葬", "y": "订盟.纳采.会亲友.祭祀.斋醮" }, "d0122": { "j": "开光.嫁娶.开市.动土.破土", "y": "交易.立券.纳财.安床.裁衣" }, "d0123": { "j": "破土.动土.安葬", "y": "祭祀.解除.教牛马.会亲友.余事勿取" }, "d0124": { "j": "探病.祭祀.出行.上樑.盖屋", "y": "纳采.订盟.移徙.纳财.开市" }, "d0125": { "j": "入宅.开光.开市.动土", "y": "嫁娶.订盟.纳采.祭祀.祈福" }, "d0126": { "j": "移徙.入宅.造庙.作灶.治病", "y": "祭祀.冠笄.嫁娶.会亲友.进人口" }, "d0127": { "j": "嫁娶.安葬", "y": "祭祀.安碓.结网.余事勿取" }, "d0128": { "j": "盖屋.开市.动土.破土", "y": "嫁娶.祭祀.沐浴.裁衣.出行" }, "d0129": { "j": "嫁娶.开市.安葬", "y": "破屋.坏垣.余事勿取" }, "d0130": { "j": "祈福.嫁娶.造庙.安床.谢土", "y": "纳采.订盟.祭祀.求嗣.出火" }, "d0131": { "j": "开市.伐木.嫁娶.作梁", "y": "入殓.除服.成服.移柩.启钻" }, "d0201": { "j": "开市.安床", "y": "祭祀.作灶.入殓.除服.余事勿取" }, "d0202": { "j": "嫁娶.入殓.安葬.出行", "y": "塑绘.开光.沐浴.冠笄.会亲友" }, "d0203": { "j": "入宅.安葬.伐木.作梁.纳畜", "y": "嫁娶.祭祀.开光.祈福.求嗣" }, "d0204": { "j": "栽种.开光.出行.针灸.嫁娶", "y": "祭祀.祈福.求嗣.纳畜.入殓" }, "d0205": { "j": "入宅.出行.移徙.祭祀.嫁娶", "y": "开光.解除.伐木.竖柱.上樑" }, "d0206": { "j": "移徙.入宅.出火.作灶.掘井", "y": "祭祀.祈福.求嗣.开光.嫁娶" }, "d0207": { "j": "嫁娶.开市.动土.作灶.安葬", "y": "会亲友.冠笄.安床.会亲友.安机械" }, "d0208": { "j": "祭祀.祈福.安葬.安门", "y": "作灶" }, "d0209": { "j": "经络.探病.盖屋.作灶.动土", "y": "嫁娶.祭祀.冠笄.修饰垣墙.置产" }, "d0210": { "j": "开市.入宅.斋醮", "y": "纳采.嫁娶.祭祀.祈福.出行" }, "d0211": { "j": "嫁娶.安葬", "y": "祭祀.沐浴.解除.理髮.扫舍" }, "d0212": { "j": "安床.作灶.造船.会亲友", "y": "纳采.订盟.祭祀.祈福.安香" }, "d0213": { "j": "嫁娶.安门.移徙.入宅.安葬", "y": "塞穴.结网.取渔.畋猎" }, "d0214": { "j": "嫁娶.开市.安葬.破土", "y": "纳采.祭祀.祈福.出行.会亲友" }, "d0215": { "j": "移徙.入宅.出火.安门.安葬", "y": "纳采.嫁娶.祭祀.祈福.出行" }, "d0216": { "j": "嫁娶.动土.开光.盖屋.破土", "y": "祭祀.祈福.求嗣.斋醮.入殓" }, "d0217": { "j": "祭祀.移徙.入宅.动土.破土", "y": "纳采.会亲友.竖柱.上樑.立券" }, "d0218": { "j": "开光.嫁娶.作灶.掘井.纳畜", "y": "祭祀.祈福.斋醮.出行.开市" }, "d0219": { "j": "开市.动土.安葬.破土", "y": "会亲友.求嗣.理髮.冠笄.结网" }, "d0220": { "j": "嫁娶.祈福.掘井.安葬", "y": "祭祀.平治道涂.余事勿取" }, "d0221": { "j": "置产.盖屋.合嵴.开光.探病", "y": "祈福.求嗣.斋醮.纳采.嫁娶" }, "d0222": { "j": "开光.开市.入宅.动土.盖屋", "y": "入学.习艺.出行.纳采.订盟" }, "d0223": { "j": "入宅.开市.安葬", "y": "祭祀.沐浴.求医.治病.扫舍" }, "d0224": { "j": "安床.栽种.治病.作灶", "y": "祭祀.冠笄.嫁娶.拆卸.修造" }, "d0225": { "j": "开市.伐木.作梁.作灶", "y": "安机械.移徙.入宅.出行.祭祀" }, "d0226": { "j": "伐木.作灶.安葬.取渔.入宅", "y": "塑绘.开光.祈福.求嗣.订盟" }, "d0227": { "j": "安葬.上樑.入宅.作灶", "y": "祭祀.沐浴.开光.塑绘.祈福" }, "d0228": { "j": "出行.嫁娶.入宅.动土", "y": "祭祀.祈福.求嗣.酬神.裁衣" }, "d0301": { "j": "祭祀.祈福.移徙.嫁娶.入宅", "y": "裁衣.合帐.入殓.除服.成服" }, "d0302": { "j": "掘井", "y": "祭祀.斋醮.裁衣.合帐.冠笄" }, "d0303": { "j": "斋醮.作灶.安床.安葬", "y": "安床.合帐.入宅.问名.纳采" }, "d0304": { "j": "祭祀.祈福.安葬.安门.余事勿取", "y": "作灶.平治道涂" }, "d0305": { "j": "开仓.出货财.盖屋.作灶.开市", "y": "祭祀.祈福.嫁娶.冠笄.修饰垣墙" }, "d0306": { "j": "动土.伐木.安葬.行丧", "y": "嫁娶.祭祀.开光.祈福.求嗣" }, "d0307": { "j": "开市.交易.作灶.纳财.上樑", "y": "嫁娶.开光.祭祀.祈福.求嗣" }, "d0308": { "j": "开光.嫁娶", "y": "破屋.坏垣.求医.治病.余事勿取" }, "d0309": { "j": "嫁娶.开光.作灶", "y": "纳采.交易.立券.安床.安机械" }, "d0310": { "j": "嫁娶.定磉.合寿木.安葬.行丧", "y": "祭祀.祈福.求嗣.斋醮.沐浴" }, "d0311": { "j": "入宅.盖屋.竖柱.安葬", "y": "纳财.交易.立券.栽种.捕捉" }, "d0312": { "j": "开市.交易.合帐.安葬", "y": "嫁娶.订盟.纳采.祭祀.祈福" }, "d0313": { "j": "嫁娶.祈福.出火.入宅", "y": "冠笄.立券.交易.修造.动土" }, "d0314": { "j": "嫁娶.动土.掘井.起基.定磉", "y": "祭祀.会亲友.出行.立券.交易" }, "d0315": { "j": "嫁娶.安葬.行丧.安门", "y": "祭祀.沐浴.解除.扫舍.塞穴" }, "d0316": { "j": "移徙.入宅.栽种", "y": "纳财.开市.交易.立券.开光" }, "d0317": { "j": "开市.盖屋.治病.作灶", "y": "嫁娶.冠笄.会亲友.安机械.纳财" }, "d0318": { "j": "纳畜.理髮.合寿木", "y": "嫁娶.造车器.纳采.订盟.祭祀" }, "d0319": { "j": "纳采.开光.安床.嫁娶.开市", "y": "祈福.斋醮.出行.移徙.入宅" }, "d0320": { "j": "嫁娶.移徙.开市.入宅", "y": "破屋.坏垣.余事勿取" }, "d0321": { "j": "塑绘.开光.造桥.除服.成服", "y": "嫁娶.冠笄.祭祀.出行.会亲友" }, "d0322": { "j": "祈福.嫁娶.安葬.破土", "y": "开光.求嗣.出行.纳采.冠笄" }, "d0323": { "j": "纳财.开市.安葬.破土", "y": "理髮.冠笄.嫁娶.进人口.栽种" }, "d0324": { "j": "纳采.动土.开市.交易.安门", "y": "开光.祈福.求嗣.出行.解除" }, "d0325": { "j": "祭祀.嫁娶.出行.上樑.掘井", "y": "裁衣.经络.伐木.开柱眼.拆卸" }, "d0326": { "j": "栽种.动土.安葬.掘井.修坟", "y": "祭祀.会亲友.立券.交易.裁衣" }, "d0327": { "j": "诸事不宜", "y": "扫舍.塞穴.余事勿取" }, "d0328": { "j": "作灶.出行.入宅.安葬", "y": "塑绘.开光.订盟.纳采.裁衣" }, "d0329": { "j": "动土.作灶.入宅.开光.安床", "y": "祭祀.嫁娶.纳婿.除服.成服" }, "d0330": { "j": "赴任", "y": "祈福.求嗣.开光.塑绘.斋醮" }, "d0331": { "j": "安床.嫁娶.作灶.入宅", "y": "祭祀.解除.入殓.除服.成服" }, "d0401": { "j": "诸事不宜", "y": "破屋.坏垣" }, "d0402": { "j": "作梁.造庙", "y": "祭祀.出行.订盟.纳采.裁衣" }, "d0403": { "j": "造庙.嫁娶.伐木.安葬", "y": "祭祀.开光.塑绘.订盟.纳采" }, "d0404": { "j": "纳采.问名.订盟.嫁娶.入宅", "y": "开市.交易.立券.挂匾.祭祀" }, "d0405": { "j": "嫁娶.入宅", "y": "祭祀.修门.取渔.纳财.纳畜" }, "d0406": { "j": "作灶.安葬.祭祀.入殓", "y": "安香.出火.纳采.订盟.嫁娶" }, "d0407": { "j": "移徙.入宅.作灶.理髮.开光", "y": "祭祀.出行.修造.动土.合帐" }, "d0408": { "j": "开光.修造.动土.破土", "y": "祭祀.修饰垣墙.余事勿取" }, "d0409": { "j": "纳采.出行.修坟.安葬.开市", "y": "嫁娶.祭祀.祈福.求嗣.斋醮" }, "d0410": { "j": "祈福.入宅.盖屋.动土.破土", "y": "祭祀.塑绘.开光.纳采.嫁娶" }, "d0411": { "j": "安床.入宅.安碓.栽种", "y": "祭祀" }, "d0412": { "j": "移徙.入宅.嫁娶.出行.安床", "y": "祭祀.祈福.求嗣.斋醮.沐浴" }, "d0413": { "j": "嫁娶.开市.纳财.出火", "y": "纳采.祭祀.祈福.求嗣.斋醮" }, "d0414": { "j": "祈福.斋醮.开市.安葬", "y": "祭祀.沐浴.解除.求医.治病" }, "d0415": { "j": "祭祀.嫁娶.入宅.作灶.安葬", "y": "沐浴.捕捉.畋猎.结网.取渔" }, "d0416": { "j": "出火.嫁娶.开市", "y": "祭祀.祈福.求嗣.斋醮.纳采" }, "d0417": { "j": "嫁娶.安葬", "y": "祭祀.捕捉.解除.余事勿取" }, "d0418": { "j": "祈福.动土.破土.安葬.入殓", "y": "纳采.嫁娶.出行.开市.立券" }, "d0419": { "j": "开光.嫁娶.掘井.安葬.安门", "y": "祭祀.祈福.求嗣.斋醮.冠笄" }, "d0420": { "j": "动土.破土.行丧.开光.作梁", "y": "祭祀.解除.教牛马.出行.余事勿取" }, "d0421": { "j": "开市.嫁娶.移徙.入宅.掘井", "y": "沐浴.斋醮.解除.求医.治病" }, "d0422": { "j": "祈福.开市.修造.动土.破土", "y": "求嗣.出行.解除.订盟.纳采" }, "d0423": { "j": "嫁娶.安葬.动土.安床.治病", "y": "祭祀" }, "d0424": { "j": "入宅.动土.开仓.出货财", "y": "造车器.祭祀.祈福.求嗣.斋醮" }, "d0425": { "j": "开市.动土.掘井.开池", "y": "祭祀.祈福.开光.求嗣.斋醮" }, "d0426": { "j": "移徙.开市.入宅.安葬", "y": "祈福.斋醮.纳采.订盟.解除" }, "d0427": { "j": "诸事不宜", "y": "诸事不宜" }, "d0428": { "j": "出火.入宅.安葬.伐木", "y": "祭祀.塑绘.开光.订盟.纳采" }, "d0429": { "j": "造庙.嫁娶.安床.余事勿取", "y": "祭祀.余事勿取" }, "d0430": { "j": "入殓.安葬.入宅.安床", "y": "订盟.纳采.嫁娶.进人口.会亲友" }, "d0501": { "j": "掘井.安门.嫁娶.纳采", "y": "祭祀.祈福.裁衣.合帐.安床" }, "d0502": { "j": "掘井.动土.破土.安葬.开光", "y": "祭祀.进人口.嫁娶.安床.解除" }, "d0503": { "j": "嫁娶.开市.安葬", "y": "纳采.开光.求医.治病.动土" }, "d0504": { "j": "嫁娶.动土.破土", "y": "祭祀.会亲友.开市.安床.启钻" }, "d0505": { "j": "嫁娶.栽种.修造.动土.出行", "y": "开光.纳采.裁衣.冠笄.安床" }, "d0506": { "j": "伐木.安葬.安床.祭祀.祈福", "y": "纳采.嫁娶.裁衣.理髮.出行" }, "d0507": { "j": "作灶.嫁娶.移徙.入宅.理髮", "y": "开市.交易.立券.挂匾.祭祀" }, "d0508": { "j": "开市.立券.造船.合寿木", "y": "嫁娶.纳采.订盟.祭祀.祈福" }, "d0509": { "j": "开光.安葬", "y": "祭祀.沐浴.解除.破屋.坏垣" }, "d0510": { "j": "作灶.开市.经络", "y": "订盟.纳采.嫁娶.解除.祭祀" }, "d0511": { "j": "安床.上樑.裁衣.入宅.嫁娶", "y": "祭祀.祈福.求嗣.开光.订盟" }, "d0512": { "j": "探病.嫁娶.开市", "y": "祭祀.结网.捕捉.余事勿取" }, "d0513": { "j": "入宅.安门.安葬", "y": "祭祀.祈福.求嗣.开光.纳采" }, "d0514": { "j": "入宅.盖屋.造桥.安门.安葬", "y": "嫁娶.冠笄.祭祀.出行.移徙" }, "d0515": { "j": "嫁娶.安葬", "y": "祭祀.解除.断蚁.会亲友.余事勿取" }, "d0516": { "j": "开市.出行.安床.作灶.安葬", "y": "嫁娶.纳采.订盟.祭祀.祈福" }, "d0517": { "j": "开市.作灶.动土.行丧.安葬", "y": "嫁娶.纳采.订盟.会亲友.安机械" }, "d0518": { "j": "祈福.嫁娶.入宅.安床.作灶", "y": "祭祀.沐浴.移徙.破土.安葬" }, "d0519": { "j": "动土.破土.嫁娶.嫁娶", "y": "祭祀.祈福.斋醮.求嗣.安机械" }, "d0520": { "j": "移徙.入宅.盖屋.架马", "y": "嫁娶.纳采.订盟.斋醮.开光" }, "d0521": { "j": "行丧.安葬", "y": "祭祀.沐浴.解除.破屋.坏垣" }, "d0522": { "j": "斋醮.开市.嫁娶.作灶", "y": "沐浴.扫舍.余事勿取" }, "d0523": { "j": "嫁娶.出火.移徙.入宅", "y": "开市.交易.立券.安机械.会亲友" }, "d0524": { "j": "开市.动土.祭祀.斋醮.安葬", "y": "栽种.捕捉.畋猎.余事勿取" }, "d0525": { "j": "开市.入宅.探病.出火.盖屋", "y": "嫁娶.祭祀.祈福.求嗣.斋醮" }, "d0526": { "j": "余事勿取", "y": "余事勿取" }, "d0527": { "j": "破土.安葬", "y": "塞穴.断蚁.结网.余事勿取" }, "d0528": { "j": "", "y": "开光.出行.纳采.嫁娶.伐木" }, "d0529": { "j": "诸事不宜", "y": "进人口.牧养.置产.塞穴.结网" }, "d0530": { "j": "会亲友.进人口.修造.动土.起基", "y": "开光.出行.嫁娶" }, "d0531": { "j": "安门", "y": "嫁娶.纳采.出行.祭祀.祈福" }, "d0601": { "j": "开市.开光", "y": "嫁娶.纳采.求医.治病.修造" }, "d0602": { "j": "诸事不宜", "y": "祭祀.破屋.坏垣.余事勿取" }, "d0603": { "j": "祈福.斋醮", "y": "嫁娶.纳采.祭祀.祈福.出行" }, "d0604": { "j": "嫁娶.安葬", "y": "纳采.祭祀.祈福.开市.求医" }, "d0605": { "j": "作灶.出火.祭祀.嫁娶.入宅", "y": "开市.交易.立券.挂匾.开光" }, "d0606": { "j": "入宅.出行.掘井.安葬", "y": "祭祀.结网.余事勿取" }, "d0607": { "j": "行丧.置产.入宅.安葬", "y": "嫁娶.纳采.订盟.冠笄.造车器" }, "d0608": { "j": "安床.祈福.出行.安葬.行丧", "y": "嫁娶.合帐.裁衣.冠笄.伐木" }, "d0609": { "j": "斋醮.盖屋.动土.破土", "y": "出行" }, "d0610": { "j": "安葬.开生坟.秋.行丧", "y": "嫁娶.祭祀.祈福.求嗣.开光" }, "d0611": { "j": "嫁娶.安床.作灶.动土.破土", "y": "安机械.祭祀.祈福.求嗣.沐浴" }, "d0612": { "j": "开市.入宅.出行.修造.词讼", "y": "祭祀.沐浴.理髮.整手足甲.修饰垣墙" }, "d0613": { "j": "开光.作灶.盖屋.架马.开仓", "y": "嫁娶.纳采.祭祀.祈福.出行" }, "d0614": { "j": "嫁娶.开市.合寿木.安葬", "y": "纳采.订盟.冠笄.祭祀.祈福" }, "d0615": { "j": "入宅.嫁娶.移徙", "y": "祭祀.沐浴.破屋.坏垣.余事勿取" }, "d0616": { "j": "作灶.理髮.造桥.行丧.安葬", "y": "嫁娶.安机械.交易.出行.祭祀" }, "d0617": { "j": "斋醮.祭祀.移徙.入宅.上樑", "y": "纳采.冠笄.求医.治病.开市" }, "d0618": { "j": "开市.安葬.破土.修坟.掘井", "y": "祭祀.作灶.余事勿取" }, "d0619": { "j": "合帐.上樑.经络.安葬.入殓", "y": "祭祀.祈福.求嗣.斋醮.安香" }, "d0620": { "j": "祈福.开光.掘井.开市.安葬", "y": "嫁娶.冠笄.修造.动土.作灶" }, "d0621": { "j": "斋醮.开渠.上樑.动土.破土", "y": "祭祀.交易.纳财" }, "d0622": { "j": "行丧.伐木.作梁.作灶", "y": "嫁娶.订盟.纳采.冠笄.会亲友" }, "d0623": { "j": "安床.出货财.作灶.动土.破土", "y": "开光.求嗣.出行.冠笄.嫁娶" }, "d0624": { "j": "斋醮.出行.治病.合寿木", "y": "祭祀.沐浴.理髮.嫁娶.作灶" }, "d0625": { "j": "诸事不宜", "y": "祭祀.解除.余事勿取" }, "d0626": { "j": "开市.交易.嫁娶.安葬.行丧", "y": "祭祀.沐浴.捕捉.结网.畋猎" }, "d0627": { "j": "嫁娶.入宅", "y": "破屋.坏垣.求医.治病.畋猎" }, "d0628": { "j": "开市.安门.掘井.作灶", "y": "嫁娶.出行.安机械.祭祀.塑绘" }, "d0629": { "j": "", "y": "订盟.纳采.会亲友.进人口.彫刻" }, "d0630": { "j": "诸事不宜", "y": "祭祀.捕捉.取渔.修饰垣墙.余事勿取" }, "d0701": { "j": "开市.安门", "y": "嫁娶.纳采.祭祀.祈福.求医" }, "d0702": { "j": "嫁娶.安葬", "y": "裁衣.作灶.移徙.入宅.纳畜" }, "d0703": { "j": "上樑.动土.破土", "y": "祭祀.入殓.移柩.启钻.安葬" }, "d0704": { "j": "移徙.入宅.安葬", "y": "订盟.纳采.出行.祈福.斋醮" }, "d0705": { "j": "动土.破土", "y": "嫁娶.纳采.出行.求医.治病" }, "d0706": { "j": "行丧.安葬", "y": "嫁娶.祭祀.沐浴.扫舍.修饰垣墙" }, "d0707": { "j": "动土.破土.治病.开渠", "y": "祭祀.嫁娶.畋猎.结网" }, "d0708": { "j": "嫁娶.作灶.出火.置产.嫁娶", "y": "纳采.订盟.会亲友.入学.祭祀" }, "d0709": { "j": "嫁娶.斋醮.开市.出火.入宅", "y": "祭祀.祈福.解除.整手足甲.安床" }, "d0710": { "j": "嫁娶.安葬", "y": "破屋.坏垣.解除.余事勿取" }, "d0711": { "j": "祭祀.祈福.探病.谢土.造桥", "y": "嫁娶.开市.立券.移徙.入宅" }, "d0712": { "j": "入宅.开市.掘井.词讼.合寿木", "y": "嫁娶.订盟.纳采.祭祀.祈福" }, "d0713": { "j": "安葬.破土.开市.开仓.出货财", "y": "纳采.订盟.嫁娶.移徙.入宅" }, "d0714": { "j": "出行.安葬.造桥", "y": "纳采.订盟.嫁娶.祭祀.沐浴" }, "d0715": { "j": "开市.入宅.嫁娶.开光.盖屋", "y": "祭祀.入殓.除服.成服.移柩" }, "d0716": { "j": "动土.破土.掘井.安葬", "y": "祭祀.修造.出行.盖屋.竖柱" }, "d0717": { "j": "嫁娶.出行.纳采.入宅.作灶", "y": "祭祀.沐浴.塑绘.开光.入学" }, "d0718": { "j": "斋醮.入宅.安门.安葬.破土", "y": "纳财.开市.交易.立券.出行" }, "d0719": { "j": "开市.动土.破土.嫁娶.修造", "y": "祭祀.修饰垣墙.平治道涂" }, "d0720": { "j": "嫁娶.安葬.行丧.破土.修坟", "y": "订盟.纳采.祭祀.祈福.开光" }, "d0721": { "j": "出火.嫁娶.入宅.作灶.破土", "y": "沐浴.理髮.捕捉.入殓.移柩" }, "d0722": { "j": "嫁娶.出行", "y": "求医.治病.破屋.坏垣.余事勿取" }, "d0723": { "j": "祈福.上樑.开仓.掘井.牧养", "y": "纳采.订盟.嫁娶.移徙.入宅" }, "d0724": { "j": "嫁娶.开市.栽种.合寿木", "y": "祭祀.祈福.斋醮.出行.纳采" }, "d0725": { "j": "开市.入宅.安床.动土.安葬", "y": "祭祀.进人口.纳财.纳畜.牧养" }, "d0726": { "j": "盖屋.入宅.作灶.入学.安葬", "y": "祭祀.塑绘.开光.求医.治病" }, "d0727": { "j": "移徙.开市.入宅.嫁娶.开光", "y": "祭祀.塞穴.结网.畋猎.余事勿取" }, "d0728": { "j": "动土.破土.安葬.治病", "y": "开市.纳财.祭祀.塑绘.安机械" }, "d0729": { "j": "开市.斋醮.安床.出行.经络", "y": "移徙.入宅.治病.会亲友.祭祀" }, "d0730": { "j": "", "y": "塑绘.出行.冠笄.嫁娶.进人口" }, "d0731": { "j": "余事勿取", "y": "祭祀.冠笄.嫁娶.捕捉.结网" }, "d0801": { "j": "诸事不宜", "y": "沐浴.扫舍.余事勿取" }, "d0802": { "j": "嫁娶.移徙.入宅", "y": "纳采.祭祀.祈福.解除.动土" }, "d0803": { "j": "诸事不宜", "y": "祭祀.破屋.坏垣.余事勿取" }, "d0804": { "j": "祭祀.祈福", "y": "嫁娶.纳采.开市.出行.动土" }, "d0805": { "j": "赴任", "y": "嫁娶.纳采.开市.出行.动土" }, "d0806": { "j": "开市.破土", "y": "祭祀.作灶.纳财.捕捉" }, "d0807": { "j": "行丧.安葬.出行.作梁.纳畜", "y": "嫁娶.祭祀.祈福.求嗣.裁衣" }, "d0808": { "j": "入宅.上樑.入殓.盖屋.探病", "y": "嫁娶.纳采.订盟.开光.祭祀" }, "d0809": { "j": "嫁娶.入宅.斋醮.开光.针灸", "y": "祭祀.出行.作梁.出火.拆卸" }, "d0810": { "j": "栽种.掘井.动土.安床.破土", "y": "嫁娶.纳采.订盟.祭祀.祈福" }, "d0811": { "j": "出火.嫁娶.开光.进人口.出行", "y": "解除.祭祀.祈福.求嗣.修造" }, "d0812": { "j": "开市.入宅.动土.破土.安葬", "y": "沐浴.理髮.会亲友.塑绘.开光" }, "d0813": { "j": "嫁娶.栽种.祈福.造桥.安葬", "y": "祭祀.理髮.作灶.沐浴.修饰垣墙" }, "d0814": { "j": "开市.立券.置产.作灶.造桥", "y": "嫁娶.纳采.订盟.祭祀.祈福" }, "d0815": { "j": "开市.交易.入宅.嫁娶", "y": "祭祀.普渡.捕捉.解除.结网" }, "d0816": { "j": "斋醮.开市", "y": "沐浴.破屋.坏垣.余事勿取" }, "d0817": { "j": "动土.破土.嫁娶.掘井.安床", "y": "订盟.纳采.祭祀.祈福.安香" }, "d0818": { "j": "纳采.订盟.经络.行丧.安葬", "y": "嫁娶.祭祀.祈福.斋醮.普渡" }, "d0819": { "j": "掘井.出行.破土.行丧.安葬", "y": "嫁娶.订盟.纳采.作灶.冠笄" }, "d0820": { "j": "出火.入宅.盖屋.安门.安葬", "y": "嫁娶.订盟.纳采.祭祀.斋醮" }, "d0821": { "j": "动土.破土.掘井.开光.上樑", "y": "嫁娶.普渡.祭祀.祈福.补垣" }, "d0822": { "j": "开市.动土.破土.安床.开仓", "y": "嫁娶.冠笄.祭祀.沐浴.普渡" }, "d0823": { "j": "嫁娶.出行.入宅.开市.安门", "y": "祭祀.沐浴.理髮.整手足甲.冠笄" }, "d0824": { "j": "诸事不宜", "y": "祭祀.解除.余事勿取" }, "d0825": { "j": "嫁娶.安门.动土.安葬", "y": "出行.沐浴.订盟.纳采.裁衣" }, "d0826": { "j": "开市.立券.纳财.作灶", "y": "纳采.订盟.嫁娶.祭祀.祈福" }, "d0827": { "j": "嫁娶.纳采.订盟.开市.入宅", "y": "祭祀.捕捉.畋猎.纳畜.牧养" }, "d0828": { "j": "行丧.安葬", "y": "破屋.坏垣.治病.余事勿取" }, "d0829": { "j": "动土.破土.订盟.安床.开池", "y": "祈福.斋醮.出行.冠笄.嫁娶" }, "d0830": { "j": "", "y": "祈福.求嗣.解除.订盟.纳采" }, "d0831": { "j": "", "y": "塑绘.开光.解除.订盟.纳采" }, "d0901": { "j": "", "y": "祈福.出行.订盟.纳采.嫁娶" }, "d0902": { "j": "动土.破土", "y": "嫁娶.祭祀.祈福.斋醮.作灶" }, "d0903": { "j": "作灶.动土.破土", "y": "嫁娶.出行.纳畜.祭祀.入殓" }, "d0904": { "j": "嫁娶.开市", "y": "订盟.纳采.祭祀.祈福.修造" }, "d0905": { "j": "开市.安葬", "y": "订盟.纳采.出行.会亲友.修造" }, "d0906": { "j": "嫁娶.祈福.余事勿取", "y": "沐浴" }, "d0907": { "j": "嫁娶.入宅.安床.出行", "y": "祭祀.沐浴.修饰垣墙.平治道涂.余事勿取" }, "d0908": { "j": "作灶.出火.进人口.开渠.入宅", "y": "开光.祈福.求嗣.斋醮.修造" }, "d0909": { "j": "出火.入宅.移徙.祈福.祭祀", "y": "开光.解除.拆卸.修造.动土" }, "d0910": { "j": "移徙.入宅", "y": "破屋.坏垣.求医.治病.余事勿取" }, "d0911": { "j": "开市.开仓.安门.安葬", "y": "嫁娶.纳采.订盟.祭祀.祈福" }, "d0912": { "j": "安葬.纳畜.出行.行丧.伐木", "y": "嫁娶.纳采.订盟.祭祀.祈福" }, "d0913": { "j": "嫁娶.开市.盖屋.作梁.合寿木", "y": "祭祀.冠笄.捕捉.余事勿取" }, "d0914": { "j": "开市.祈福.动土.破土.入殓", "y": "祭祀.解除.结网.畋猎.取渔" }, "d0915": { "j": "嫁娶.开市.祭祀.祈福.斋醮", "y": "冠笄.沐浴.出行.修造.动土" }, "d0916": { "j": "嫁娶.入宅.修造.动土.会亲友", "y": "祭祀.出行" }, "d0917": { "j": "针灸.伐木.作梁.造庙.行丧", "y": "嫁娶.订盟.纳采.祭祀.祈福" }, "d0918": { "j": "嫁娶.安葬.动土.造桥", "y": "出行.开市.交易.立券.安机械" }, "d0919": { "j": "斋醮.嫁娶.移徙.出行.上樑", "y": "祭祀.沐浴.修饰垣墙.平治道涂.余事勿取" }, "d0920": { "j": "纳采.订盟.架马.词讼.开渠", "y": "嫁娶.造车器.安机械.祭祀.祈福" }, "d0921": { "j": "祭祀.嫁娶.安床.开市.入宅", "y": "沐浴.捕捉.入殓.除服.成服" }, "d0922": { "j": "探病.余事勿取", "y": "余事勿取" }, "d0923": { "j": "嫁娶.造庙.造桥.造船.作灶", "y": "订盟.纳采.祭祀.祈福.安香" }, "d0924": { "j": "行丧.安葬.合寿木", "y": "开光.求嗣.雕刻.嫁娶.订盟" }, "d0925": { "j": "开光.动土.破土.开市.修造", "y": "祭祀.嫁娶.捕捉" }, "d0926": { "j": "嫁娶.开市.动土.掘井.开池", "y": "祭祀.普渡.解除.会亲友.捕捉" }, "d0927": { "j": "祭祀.祈福.开光.开市.安床", "y": "出行.解除.冠笄.嫁娶.伐木" }, "d0928": { "j": "动土.作灶.行丧.安葬.修坟", "y": "祭祀.祈福.求嗣.出行.沐浴" }, "d0929": { "j": "造庙.安门.行丧.安葬", "y": "出行.解除.纳采.冠笄.雕刻" }, "d0930": { "j": "", "y": "开光.塑绘.出行.解除.冠笄" }, "d1001": { "j": "嫁娶.入宅.上樑.安门", "y": "祭祀.祈福.修饰垣墙.平治道涂.入殓" }, "d1002": { "j": "入宅.伐木", "y": "祭祀.会亲友.纳采.嫁娶.开光" }, "d1003": { "j": "作灶.祭祀.入宅.嫁娶", "y": "祭祀.冠笄.会亲友.拆卸.起基" }, "d1004": { "j": "移徙.入宅.出行.栽种", "y": "祭祀.沐浴.破屋.坏垣.余事勿取" }, "d1005": { "j": "造桥.冠笄.盖屋.掘井", "y": "祭祀.塑绘.开光.出行.解除" }, "d1006": { "j": "定磉.安葬", "y": "祭祀.会亲友.进人口.动土.上樑" }, "d1007": { "j": "移徙.入宅.作灶", "y": "祭祀.裁衣.冠笄.嫁娶.纳婿" }, "d1008": { "j": "嫁娶.开市.开池.开厕.破土", "y": "祭祀.冠笄.移徙.会亲友.纳财" }, "d1009": { "j": "安门.安床.裁衣.入宅.安葬", "y": "祭祀.祈福.求嗣.斋醮.开光" }, "d1010": { "j": "开市.出行.栽种.置产.词讼", "y": "嫁娶.裁衣.冠笄.合帐.祭祀" }, "d1011": { "j": "出货财.开仓.动土.破土.安葬", "y": "祭祀.造车器.出行.修造.上樑" }, "d1012": { "j": "造庙.嫁娶.掘井.栽种.造桥", "y": "祭祀.开光.出行.解除.伐木" }, "d1013": { "j": "入宅.上樑.斋醮.出火.谢土", "y": "纳采.订盟.开市.交易.立券" }, "d1014": { "j": "嫁娶.开市", "y": "祭祀.平治道涂.余事勿取" }, "d1015": { "j": "开市.交易.祭祀.入宅.安葬", "y": "捕捉.畋猎.余事勿取" }, "d1016": { "j": "开市.破土.掘井.合寿木", "y": "嫁娶.纳采.订盟.祭祀.祈福" }, "d1017": { "j": "开市.嫁娶", "y": "祭祀.沐浴.解除.破屋.坏垣" }, "d1018": { "j": "嫁娶.开市.入宅.祈福.安葬", "y": "订盟.纳采.会亲友.交易.立券" }, "d1019": { "j": "上樑.开光.盖屋.架马.合寿木", "y": "造车器.嫁娶.订盟.纳采.会亲友" }, "d1020": { "j": "动土.破土.开市.安葬", "y": "祭祀.作灶.纳财.捕捉.畋猎" }, "d1021": { "j": "开市.开仓.出货财.安床.安门", "y": "嫁娶.订盟.纳采.祭祀.祈福" }, "d1022": { "j": "开光.嫁娶.会亲友.栽种.针灸", "y": "冠笄.祭祀.沐浴.作灶.理髮" }, "d1023": { "j": "", "y": "祭祀.祈福.求嗣.开光.解除" }, "d1024": { "j": "嫁娶.动土.破土.修坟", "y": "出行.造车器.造畜稠.解除.冠笄" }, "d1025": { "j": "移徙.入宅.出行.祈福.嫁娶", "y": "沐浴.理髮.冠笄.安床.开市" }, "d1026": { "j": "嫁娶.开市.安床.掘井", "y": "祭祀.造畜稠.修饰垣墙.平治道涂.余事勿取" }, "d1027": { "j": "嫁娶.祭祀.入宅.盖屋.移徙", "y": "捕捉.结网.入殓.除服.成服" }, "d1028": { "j": "开光.嫁娶.掘井.伐木.作梁", "y": "祭祀.祈福.求嗣.斋醮.造庙" }, "d1029": { "j": "诸事不宜", "y": "破屋.坏垣.余事勿取" }, "d1030": { "j": "出行.祈福.安葬.作灶", "y": "会亲友.嫁娶.订盟.纳采.纳婿" }, "d1031": { "j": "开仓.冠笄.伐木.作梁", "y": "祭祀.塑绘.开光.祈福.斋醮" }, "d1101": { "j": "栽种.动土.安葬.开市", "y": "祭祀.作灶.入殓.除服.成服" }, "d1102": { "j": "作灶.入殓.安葬.安床", "y": "祭祀.祈福.斋醮.沐浴.竖柱" }, "d1103": { "j": "动土.上樑", "y": "嫁娶.祭祀.安机械.入殓.破土" }, "d1104": { "j": "行丧.安葬", "y": "作灶.造畜稠" }, "d1105": { "j": "嫁娶.入宅", "y": "沐浴.理髮.入学.习艺.进人口" }, "d1106": { "j": "开市.动土.破土", "y": "开光.针灸.会亲友.启钻.安葬" }, "d1107": { "j": "祈福.谢土.安葬.上樑.作灶", "y": "祭祀.塑绘.理髮.会亲友.牧养" }, "d1108": { "j": "造庙.谢土.作灶.作梁.伐木", "y": "出行.纳财.开市.交易.立券" }, "d1109": { "j": "置产.掘井.词讼.栽种", "y": "嫁娶.纳采.订盟.祭祀.斋醮" }, "d1110": { "j": "破土.动土.安门.作灶.开市", "y": "嫁娶.纳采.订盟.祭祀.开光" }, "d1111": { "j": "嫁娶.安葬", "y": "祭祀.解除.破屋.坏垣.求医" }, "d1112": { "j": "祭祀.嫁娶.入宅.修造.动土", "y": "祭祀.扫舍.破土.安葬.除服" }, "d1113": { "j": "嫁娶.移徙.出火.开市.入宅", "y": "订盟.纳采.会亲友.祭祀.祈福" }, "d1114": { "j": "嫁娶.纳采.订盟.安床.动土", "y": "祭祀.沐浴.捕捉.畋猎.结网" }, "d1115": { "j": "移徙.入宅.出火.入殓.安葬", "y": "开市.纳财.出行.祭祀.祈福" }, "d1116": { "j": "嫁娶.入宅.安床.掘井.开光", "y": "祭祀.理髮.置产.塞穴.除服" }, "d1117": { "j": "开市.动土.破土.行丧.安葬", "y": "祭祀.沐浴.出行.余事勿取" }, "d1118": { "j": "开市.纳采.造庙.安床.开渠", "y": "嫁娶.造车器.出行.会亲友.移徙" }, "d1119": { "j": "嫁娶.开市.祈福.斋醮.安葬", "y": "塑绘.会亲友.安机械.塞穴.结网" }, "d1120": { "j": "开仓.盖屋.造桥.祭祀", "y": "纳采.移徙.纳财.开市.交易" }, "d1121": { "j": "嫁娶.安葬.掘井.置产.造船", "y": "订盟.纳采.纳财.开市.立券" }, "d1122": { "j": "开市.造庙.动土.破土", "y": "嫁娶.订盟.纳采.祭祀.祈福" }, "d1123": { "j": "嫁娶.安葬", "y": "破屋.坏垣.祭祀.余事勿取" }, "d1124": { "j": "盖屋.造船.动土.破土", "y": "嫁娶.纳采.订盟.祭祀.冠笄" }, "d1125": { "j": "嫁娶.开市.入宅.出火.移徙", "y": "纳采.订盟.祭祀.祈福.求嗣" }, "d1126": { "j": "安床.安门.破土.修坟.安葬", "y": "捕捉.畋猎.会亲友.解除.入殓" }, "d1127": { "j": "移徙.入宅.安门.作梁.安葬", "y": "祭祀.祈福.求嗣.斋醮.沐浴" }, "d1128": { "j": "开光.掘井.安葬.谢土.修坟", "y": "嫁娶.冠笄.安床.纳采.会亲友" }, "d1129": { "j": "诸事不宜", "y": "祭祀.沐浴.余事勿取" }, "d1130": { "j": "入宅.作灶.安床.开仓", "y": "祭祀.会亲友.嫁娶.沐浴.修造" }, "d1201": { "j": "嫁娶.入宅.安门.移徙", "y": "理髮.会亲友.补垣.塞穴.结网" }, "d1202": { "j": "作灶.治病.伐木.作梁", "y": "祭祀.祈福.订盟.纳采.裁衣" }, "d1203": { "j": "作灶.治病", "y": "祭祀.祈福.订盟.纳采.裁衣" }, "d1204": { "j": "开市.交易.破土.作灶", "y": "祭祀.塑绘.开光.订盟.纳采" }, "d1205": { "j": "诸事不宜", "y": "祭祀.解除.破屋.坏垣.余事勿取" }, "d1206": { "j": "盖屋.治病", "y": "祭祀.解除.祈福.开光.塑绘" }, "d1207": { "j": "作灶.安门.造桥.开市.安葬", "y": "安床.架马.祭祀.塑绘.开光" }, "d1208": { "j": "伐木.作梁.动土.安床.破土", "y": "嫁娶.祭祀.祈福.求嗣.开光" }, "d1209": { "j": "会亲友.安葬.入宅.移徙.安床", "y": "祭祀.沐浴.理髮.纳财.进人口" }, "d1210": { "j": "嫁娶.开市.出火.进人口.入殓", "y": "纳采.订盟.祭祀.祈福.求嗣" }, "d1211": { "j": "嫁娶.开市.安床.栽种.安葬", "y": "入宅.移徙.出行.进人口.修造" }, "d1212": { "j": "入宅.移徙.分居.作灶.出火", "y": "造畜稠.教牛马" }, "d1213": { "j": "破土.安葬.行丧.开生坟", "y": "订盟.纳采.造车器.祭祀.祈福" }, "d1214": { "j": "祈福.出火.嫁娶.入宅.开市", "y": "订盟.纳采.会亲友.安机械.开光" }, "d1215": { "j": "移徙.入宅.嫁娶.掘井.安葬", "y": "祭祀.平治道涂.修坟.除服.成服" }, "d1216": { "j": "开市.纳采.订盟.作灶.造庙", "y": "嫁娶.冠笄.祭祀.祈福.求嗣" }, "d1217": { "j": "出行.掘井.破土.行丧.安葬", "y": "嫁娶.订盟.纳采.祭祀.祈福" }, "d1218": { "j": "嫁娶.移徙.入宅.探病.出行", "y": "祭祀.沐浴.破屋.坏垣.余事勿取" }, "d1219": { "j": "安门.动土.破土.行丧.安葬", "y": "冠笄.纳财.掘井.开池.出火" }, "d1220": { "j": "嫁娶.动土.安床.造桥.掘井", "y": "纳采.订盟.移徙.入宅.出行" }, "d1221": { "j": "开市.斋醮.破土.安葬", "y": "祭祀.沐浴.作灶.纳财.捕捉" }, "d1222": { "j": "余事勿取", "y": "祭祀.结网.入殓.除服.成服" }, "d1223": { "j": "嫁娶.祈福.开光.掘井.安葬", "y": "纳采.订盟.祭祀.沐浴.冠笄" }, "d1224": { "j": "入宅.动土.破土.嫁娶.作灶", "y": "合帐" }, "d1225": { "j": "斋醮.作梁.掘井.行丧.安葬", "y": "纳采.订盟.嫁娶.祭祀.祈福" }, "d1226": { "j": "嫁娶.祈福.出火.移徙.入宅", "y": "纳财.开市.交易.立券.会亲友" }, "d1227": { "j": "入宅.修造.动土.破土.安门", "y": "祭祀.入殓.移柩.余事勿取" }, "d1228": { "j": "掘井.伐木.斋醮.作灶", "y": "塑绘.开光.订盟.纳采.裁衣" }, "d1229": { "j": "出行.安葬.修坟.开市", "y": "祭祀.塑绘.开光.裁衣.冠笄" }, "d1230": { "j": "诸事不宜", "y": "祭祀.求医.破屋.坏垣.余事勿取" }, "d1231": { "j": "开光.栽种.治病.安门.作灶", "y": "祭祀.祈福.斋醮.出行.冠笄" } } ukui-panel-4.0.0.4/plugin-calendar/html/hlnew/hl2022.json0000644000175000017500000006554214560306203021314 0ustar fengfeng{ "d0101": { "y": "搬家.装修.结婚.入宅.", "j": "安葬." }, "d0102": { "y": "装修.动土.安床.订婚.", "j": "开业.结婚.入宅.领证." }, "d0103": { "y": "开业.开工.安床.出行.", "j": "动土.作灶.掘井." }, "d0104": { "y": "祭祀.塞穴.", "j": "结婚.领证.安葬.作灶." }, "d0105": { "y": "开业.开工.上梁.交易.", "j": "结婚.入宅.领证.出行." }, "d0106": { "y": "成服.除服.冠笄.入殓.", "j": "作灶.盖屋.探病." }, "d0107": { "y": "装修.结婚.入宅.领证.", "j": "伐木." }, "d0108": { "y": "装修.动土.订婚.安葬.", "j": "开业.开工.安床.开张." }, "d0109": { "y": "破屋.坏垣.求医.", "j": "." }, "d0110": { "y": "搬家.结婚.入宅.领证.", "j": "开光." }, "d0111": { "y": "搬家.开业.入宅.开工.", "j": "结婚.领证.安葬.嫁娶." }, "d0112": { "y": "结婚.领证.安床.纳财.", "j": "开业.开工.安葬.开张." }, "d0113": { "y": "装修.入宅.动土.出行.", "j": "开业.开工.安葬.开张." }, "d0114": { "y": "安床.订婚.安葬.交易.", "j": "结婚.入宅.领证.祭祀." }, "d0115": { "y": "结婚.领证.安床.出行.", "j": "动土.作灶.掘井." }, "d0116": { "y": ".", "j": "结婚.领证.安门.安葬." }, "d0117": { "y": "开业.开工.安门.安床.", "j": "结婚.领证.出行.安葬." }, "d0118": { "y": "结婚.领证.安葬.祭祀.", "j": "入宅.作灶.盖屋." }, "d0119": { "y": "搬家.入宅.安门.出行.", "j": "伐木." }, "d0120": { "y": "搬家.装修.结婚.", "j": "入宅." }, "d0121": { "y": "祭祀.破屋.坏垣.", "j": "." }, "d0122": { "y": "搬家.装修.开业.结婚.", "j": "安葬.作灶.开光." }, "d0123": { "y": "搬家.开业.入宅.开工.", "j": "结婚.领证.安葬.理发." }, "d0124": { "y": "结婚.领证.理发.嫁娶.", "j": "安葬.作灶.破土.纳畜." }, "d0125": { "y": "搬家.结婚.入宅.领证.", "j": "开业.开工.安葬.开张." }, "d0126": { "y": "开业.结婚.领证.开工.", "j": "入宅.安床.安葬." }, "d0127": { "y": "安床.安葬.破土.祈福.", "j": "结婚.领证.安门.订婚." }, "d0128": { "y": "结婚.领证.安床.出行.", "j": "动土.安葬.破土.开光." }, "d0129": { "y": "搬家.入宅.动土.订婚.", "j": "开业.结婚.领证.开工." }, "d0130": { "y": "开业.开工.安床.安葬.", "j": "结婚.领证.动土.破土." }, "d0131": { "y": "作灶.祭祀.掘井.", "j": "结婚.领证.安葬." }, "d0201": { "y": "开业.开工.动土.安葬.", "j": "搬家.结婚.入宅.领证." }, "d0202": { "y": "搬家.结婚.领证.出行.", "j": "开业.开工.动土.开张." }, "d0203": { "y": "祭祀.解除.求医.", "j": "." }, "d0204": { "y": "沐浴.结网.", "j": "结婚.入宅.领证.安葬." }, "d0205": { "y": ".", "j": "." }, "d0206": { "y": "解除.", "j": "." }, "d0207": { "y": "搬家.开业.结婚.入宅.", "j": "安葬.作灶.祈福.祭祀." }, "d0208": { "y": "结婚.领证.安床.出行.", "j": "开业.开工.开张.开市." }, "d0209": { "y": "出行.旅游.教牛马.造畜稠.", "j": "." }, "d0210": { "y": "搬家.装修.入宅.动土.", "j": "开业.结婚.领证.开工." }, "d0211": { "y": "开业.结婚.领证.开工.", "j": "装修.入宅.安门.上梁." }, "d0212": { "y": "祭祀.解除.平治道涂.", "j": "." }, "d0213": { "y": "动土.交易.祈福.祭祀.", "j": "结婚.领证.安床.出行." }, "d0214": { "y": "装修.入宅.安门.安床.", "j": "开业.开工.动土.交易." }, "d0215": { "y": "祭祀.解除.破屋.", "j": "." }, "d0216": { "y": "塞穴.", "j": "." }, "d0217": { "y": "动土.安床.订婚.安葬.", "j": "." }, "d0218": { "y": "解除.", "j": "." }, "d0219": { "y": "搬家.开业.结婚.入宅.", "j": "安葬.祭祀.入殓." }, "d0220": { "y": "安床.安葬.交易.破土.", "j": "开业.结婚.领证.开工." }, "d0221": { "y": "出行.旅游.祭祀.扫舍.", "j": "安葬.破土.开光." }, "d0222": { "y": "订婚.求嗣.祈福.祭祀.", "j": "入宅.出行.安葬.作灶." }, "d0223": { "y": "开业.结婚.领证.开工.", "j": "装修.入宅.动土.安葬." }, "d0224": { "y": "作灶.祭祀.结网.畋猎.", "j": "结婚.领证.安床.嫁娶." }, "d0225": { "y": "安葬.破土.祭祀.解除.", "j": "结婚.入宅.领证.上梁." }, "d0226": { "y": "搬家.开业.结婚.入宅.", "j": "." }, "d0227": { "y": "搬家.装修.结婚.入宅.", "j": "开业.开工.开张.开市." }, "d0228": { "y": "祭祀.破屋.", "j": "." }, "d0301": { "y": "搬家.结婚.入宅.领证.", "j": "祈福." }, "d0302": { "y": "开业.开工.动土.订婚.", "j": "结婚.领证.安葬." }, "d0303": { "y": "搬家.结婚.入宅.领证.", "j": "动土.安葬." }, "d0304": { "y": "动土.订婚.交易.破土.", "j": "结婚.领证.安葬." }, "d0305": { "y": "搬家.结婚.入宅.领证.", "j": "赴任." }, "d0306": { "y": "结网.", "j": "." }, "d0307": { "y": "结婚.领证.动土.出行.", "j": "搬家.入宅." }, "d0308": { "y": "安床.订婚.作灶.订盟.", "j": "开业.开工.安葬.开张." }, "d0309": { "y": "安葬.破土.沐浴.启钻.", "j": "." }, "d0310": { "y": "搬家.开业.结婚.入宅.", "j": "." }, "d0311": { "y": "出行.安葬.旅游.破土.", "j": "装修.结婚.入宅.领证." }, "d0312": { "y": "祭祀.解除.破屋.", "j": "." }, "d0313": { "y": "搬家.装修.结婚.入宅.", "j": "." }, "d0314": { "y": "装修.开业.开工.动土.", "j": "搬家.结婚.入宅.领证." }, "d0315": { "y": "解除.", "j": "." }, "d0316": { "y": "开业.结婚.领证.开工.", "j": "搬家.入宅.动土.安门." }, "d0317": { "y": "搬家.装修.结婚.入宅.", "j": "开光.掘井." }, "d0318": { "y": "解除.", "j": "." }, "d0319": { "y": "开业.入宅.开工.动土.", "j": "结婚.领证.安床.作灶." }, "d0320": { "y": "认养.会亲友.", "j": "动土.安葬.上梁.伐木." }, "d0321": { "y": "安葬.破土.沐浴.成服.", "j": "搬家.结婚.领证.安床." }, "d0322": { "y": "搬家.开业.结婚.入宅.", "j": "." }, "d0323": { "y": "装修.结婚.领证.动土.", "j": "." }, "d0324": { "y": "解除.沐浴.破屋.", "j": "." }, "d0325": { "y": "搬家.装修.结婚.入宅.", "j": "开业.开工.开张.开市." }, "d0326": { "y": "开业.开工.动土.安床.", "j": "搬家.结婚.入宅.领证." }, "d0327": { "y": "搬家.入宅.出行.订婚.", "j": "装修.动土.安床.安葬." }, "d0328": { "y": "搬家.开业.开工.动土.", "j": "搬家.装修.入宅.安门." }, "d0329": { "y": "搬家.结婚.入宅.领证.", "j": "开业.开工.安门.开张." }, "d0330": { "y": "搬家.入宅.作灶.纳畜.", "j": "结婚.领证.安葬." }, "d0331": { "y": "安葬.祭祀.启钻.入殓.", "j": "动土.上梁." }, "d0401": { "y": "安床.出行.订婚.旅游.", "j": "搬家.入宅.安葬." }, "d0402": { "y": "搬家.开业.结婚.入宅.", "j": "动土." }, "d0403": { "y": "结婚.领证.祭祀.沐浴.", "j": "安葬." }, "d0404": { "y": "搬家.开业.结婚.入宅.", "j": "." }, "d0405": { "y": "搬家.装修.入宅.动土.", "j": "开业.开工.安葬.开张." }, "d0406": { "y": ".", "j": "." }, "d0407": { "y": "结婚.领证.订婚.安葬.", "j": "开业.开工.开张.开市." }, "d0408": { "y": "动土.安葬.上梁.破土.", "j": "结婚.领证.开光." }, "d0409": { "y": "祭祀.", "j": "." }, "d0410": { "y": "搬家.装修.结婚.入宅.", "j": "开业.开工.安葬.交易." }, "d0411": { "y": "装修.结婚.领证.动土.", "j": "出行.安葬.旅游.祈福." }, "d0412": { "y": "祭祀.", "j": "." }, "d0413": { "y": "搬家.开业.结婚.入宅.", "j": "安葬.伐木.作梁." }, "d0414": { "y": "搬家.装修.开业.入宅.", "j": "安床." }, "d0415": { "y": "理发.祭祀.沐浴.扫舍.", "j": "装修.结婚.入宅.领证." }, "d0416": { "y": "搬家.装修.结婚.入宅.", "j": "." }, "d0417": { "y": "搬家.装修.入宅.动土.", "j": "开业.结婚.领证.开工." }, "d0418": { "y": "破屋.", "j": "." }, "d0419": { "y": "装修.开业.开工.动土.", "j": "搬家.结婚.领证.安门." }, "d0420": { "y": "装修.开业.开工.动土.", "j": "搬家.结婚.入宅.领证." }, "d0421": { "y": "作灶.", "j": "." }, "d0422": { "y": "解除.", "j": "." }, "d0423": { "y": "装修.动土.安门.安床.", "j": "搬家.结婚.入宅.领证." }, "d0424": { "y": "祭祀.断蚁.", "j": "搬家.入宅.动土.移徙." }, "d0425": { "y": "搬家.装修.开业.结婚.", "j": "安葬.作灶.破土.伐木." }, "d0426": { "y": "搬家.装修.开业.结婚.", "j": "动土.安床.订婚.破土." }, "d0427": { "y": "结婚.领证.作灶.理发.", "j": "出行.旅游.破土." }, "d0428": { "y": "搬家.装修.结婚.入宅.", "j": "动土.破土." }, "d0429": { "y": "沐浴.", "j": "." }, "d0430": { "y": "动土.订婚.安葬.破土.", "j": "搬家.结婚.入宅.领证." }, "d0501": { "y": "祭祀.破屋.", "j": "." }, "d0502": { "y": "搬家.开业.结婚.入宅.", "j": "祈福." }, "d0503": { "y": "搬家.开业.结婚.入宅.", "j": "." }, "d0504": { "y": "作灶.祭祀.纳财.", "j": "开业.开工.开张.破土." }, "d0505": { "y": "搬家.开业.结婚.入宅.", "j": "安葬." }, "d0506": { "y": "安葬.启钻.成服.除服.", "j": "." }, "d0507": { "y": "搬家.结婚.入宅.领证.", "j": "动土." }, "d0508": { "y": "结婚.领证.安葬.破土.", "j": "开业.入宅.开工.开张." }, "d0509": { "y": "开业.结婚.领证.开工.", "j": "动土.破土." }, "d0510": { "y": "结婚.领证.祭祀.沐浴.", "j": "动土.安葬.破土.掘井." }, "d0511": { "y": "搬家.装修.开业.入宅.", "j": "结婚.领证.安葬.修坟." }, "d0512": { "y": "安葬.破土.祭祀.解除.", "j": "搬家.开业.结婚.入宅." }, "d0513": { "y": "破屋.", "j": "." }, "d0514": { "y": "搬家.装修.开业.结婚.", "j": "祭祀.祭祀.纳畜." }, "d0515": { "y": "搬家.装修.开业.结婚.", "j": "." }, "d0516": { "y": "作灶.祭祀.纳财.纳畜.", "j": "开业.开工.安床.安葬." }, "d0517": { "y": "开业.开工.开张.理发.", "j": "结婚.入宅.领证.出行." }, "d0518": { "y": "安葬.破土.祭祀.启钻.", "j": "." }, "d0519": { "y": "出行.交易.旅游.祭祀.", "j": "搬家.结婚.领证.动土." }, "d0520": { "y": "搬家.装修.开业.结婚.", "j": "." }, "d0521": { "y": "开业.结婚.领证.开工.", "j": "搬家.装修.入宅.动土." }, "d0522": { "y": "祭祀.", "j": "." }, "d0523": { "y": "装修.入宅.动土.安床.", "j": "结婚.领证.作灶.理发." }, "d0524": { "y": "安葬.理发.破土.祭祀.", "j": "搬家.开业.结婚.入宅." }, "d0525": { "y": "破屋.", "j": "." }, "d0526": { "y": "开业.结婚.领证.开工.", "j": "搬家.入宅.作灶.祭祀." }, "d0527": { "y": "搬家.装修.开业.结婚.", "j": "纳畜.伐木.掘井." }, "d0528": { "y": "交易.作灶.祭祀.牧养.", "j": "开业.开工.安床.出行." }, "d0529": { "y": "装修.结婚.领证.动土.", "j": "搬家.出行.安葬.旅游." }, "d0530": { "y": "祭祀.立碑.沐浴.启钻.", "j": "结婚.领证.安葬.破土." }, "d0531": { "y": "搬家.结婚.入宅.领证.", "j": "动土." }, "d0601": { "y": "结婚.领证.出行.安葬.", "j": "动土.作灶." }, "d0602": { "y": "装修.动土.订婚.安葬.", "j": "开业.结婚.领证.开工." }, "d0603": { "y": "搬家.装修.入宅.出行.", "j": "开业.开工.安葬.开张." }, "d0604": { "y": "沐浴.平治道涂.", "j": "结婚.领证.祈福." }, "d0605": { "y": "搬家.结婚.入宅.领证.", "j": "开业.开工.安葬.开张." }, "d0606": { "y": "安葬.破土.捕捉.结网.", "j": "结婚.入宅.领证." }, "d0607": { "y": "沐浴.破屋.坏垣.", "j": "." }, "d0608": { "y": "搬家.开业.结婚.入宅.", "j": "动土." }, "d0609": { "y": "搬家.结婚.入宅.领证.", "j": "开光." }, "d0610": { "y": "订婚.作灶.祈福.祭祀.", "j": "动土." }, "d0611": { "y": "结婚.领证.动土.安床.", "j": "装修.入宅.安门.上梁." }, "d0612": { "y": "搬家.装修.结婚.领证.", "j": "作灶.理发.开光.盖屋." }, "d0613": { "y": "搬家.安门.出行.安葬.", "j": "动土.安床.破土.掘井." }, "d0614": { "y": "安葬.理发.破土.祭祀.", "j": "搬家.结婚.入宅.领证." }, "d0615": { "y": "牧养.纳畜.开光.塞穴.", "j": "装修.开业.结婚.领证." }, "d0616": { "y": "作灶.沐浴.平治道涂.", "j": "." }, "d0617": { "y": "装修.动土.安床.出行.", "j": "搬家.结婚.领证.嫁娶." }, "d0618": { "y": "安葬.破土.祭祀.塞穴.", "j": "." }, "d0619": { "y": "破屋.", "j": "." }, "d0620": { "y": "安葬.祭祀.启钻.成服.", "j": "." }, "d0621": { "y": "搬家.开业.结婚.入宅.", "j": "出行.作灶.旅游.栽种." }, "d0622": { "y": "交易.祭祀.解除.纳财.", "j": "搬家.结婚.入宅.领证." }, "d0623": { "y": "结婚.领证.安床.出行.", "j": "搬家.入宅.安葬.移徙." }, "d0624": { "y": "动土.安葬.破土.祭祀.", "j": "装修.入宅.安门.出行." }, "d0625": { "y": "安门.出行.作灶.旅游.", "j": "动土.安床.安葬.开生坟." }, "d0626": { "y": "装修.动土.安门.安床.", "j": "搬家.结婚.入宅.领证." }, "d0627": { "y": "搬家.装修.入宅.安床.", "j": "动土.安葬.作灶.破土." }, "d0628": { "y": "作灶.祭祀.沐浴.平治道涂.", "j": "结婚.领证.安门.安葬." }, "d0629": { "y": "搬家.装修.结婚.入宅.", "j": "开业.开工.开张.作灶." }, "d0630": { "y": "安葬.破土.祭祀.捕捉.", "j": "开业.结婚.入宅.领证.." }, "d0701": { "y": "安葬.祭祀.拆卸.沐浴.", "j": "结婚.入宅.领证.作灶." }, "d0702": { "y": "祭祀.沐浴.破屋.", "j": "搬家.入宅.出行.旅游." }, "d0703": { "y": "开业.结婚.入宅.领证.", "j": "盖屋.冠笄.掘井." }, "d0704": { "y": "开业.开工.动土.安床.", "j": "安葬." }, "d0705": { "y": "结婚.领证.祭祀.捕捉.", "j": "搬家.入宅.作灶." }, "d0706": { "y": ".", "j": "开业.开工.安葬.交易." }, "d0707": { "y": "搬家.结婚.入宅.领证.", "j": "开业.开工.安床.交易." }, "d0708": { "y": "出行.旅游.祭祀.沐浴.", "j": "搬家.开业.入宅.开工." }, "d0709": { "y": "出行.旅游.赴任.祭祀.", "j": "." }, "d0710": { "y": ".", "j": "." }, "d0711": { "y": "破土.沐浴.成服.除服.", "j": "搬家.开业.结婚.入宅." }, "d0712": { "y": "搬家.装修.开业.结婚.", "j": "." }, "d0713": { "y": "动土.安葬.上梁.修坟.", "j": "搬家.结婚.入宅.领证." }, "d0714": { "y": "破屋.", "j": "." }, "d0715": { "y": "搬家.装修.开业.结婚.", "j": "." }, "d0716": { "y": "装修.开业.入宅.开工.", "j": "搬家.结婚.领证.出行." }, "d0717": { "y": "结婚.领证.理发.祭祀.", "j": "入宅.安葬.作灶.伐木." }, "d0718": { "y": "修坟.祭祀.立碑.启钻.", "j": "." }, "d0719": { "y": "搬家.装修.结婚.领证.", "j": "开业.入宅.开工.安床." }, "d0720": { "y": "出行.旅游.祭祀.", "j": "." }, "d0721": { "y": "结婚.领证.动土.安床.", "j": "安葬.作灶.伐木.作梁." }, "d0722": { "y": "搬家.开业.入宅.开工.", "j": "结婚.领证.安葬.作灶." }, "d0723": { "y": "祭祀.沐浴.平治道涂.", "j": "." }, "d0724": { "y": "搬家.装修.开业.结婚.", "j": "." }, "d0725": { "y": "解除.", "j": "." }, "d0726": { "y": "祭祀.破屋.坏垣.", "j": "." }, "d0727": { "y": "搬家.搬家.装修.结婚.", "j": "开业.开工.开张.开市." }, "d0728": { "y": "开业.开工.动土.安床.", "j": "搬家.结婚.入宅.领证." }, "d0729": { "y": "结婚.领证.作灶.理发.", "j": "开业.开工.上梁.开张." }, "d0730": { "y": "修坟.祭祀.启钻.成服.", "j": "开业.结婚.入宅.领证." }, "d0731": { "y": "结婚.入宅.领证.订婚.", "j": "安床.安葬.作灶." }, "d0801": { "y": "结婚.领证.安葬.破土.", "j": "动土." }, "d0802": { "y": "作灶.", "j": "安葬." }, "d0803": { "y": "入学.理发.沐浴.认养.", "j": "结婚.入宅.领证." }, "d0804": { "y": "安葬.启钻.开光.针灸.", "j": "开业.开工.动土.开张." }, "d0805": { "y": "祭祀.结网.", "j": "." }, "d0806": { "y": "安葬.破土.启钻.成服.", "j": "搬家.入宅." }, "d0807": { "y": "搬家.结婚.入宅.领证.", "j": "开业.开工.开张.赴任." }, "d0808": { "y": "祭祀.解除.破屋.", "j": "." }, "d0809": { "y": "订婚.订盟.牧养.纳财.", "j": "安葬." }, "d0810": { "y": "搬家.开业.结婚.入宅.", "j": "安门." }, "d0811": { "y": "祭祀.", "j": "." }, "d0812": { "y": "开业.开工.动土.出行.", "j": "结婚.入宅.领证.安门." }, "d0813": { "y": "安床.作灶.理发.祭祀.", "j": "结婚.领证.安门.开光." }, "d0814": { "y": "搬家.结婚.领证.出行.", "j": "动土.安葬.伐木.作梁." }, "d0815": { "y": "搬家.安床.出行.旅游.", "j": "结婚.领证.动土.订婚." }, "d0816": { "y": "开业.开工.安葬.交易.", "j": "搬家.结婚.入宅.领证." }, "d0817": { "y": "造畜稠.", "j": "." }, "d0818": { "y": "安葬.破土.启钻.成服.", "j": "." }, "d0819": { "y": "安葬.破土.祭祀.启钻.", "j": "." }, "d0820": { "y": "祭祀.解除.破屋.", "j": "." }, "d0821": { "y": "结婚.领证.订婚.求嗣.", "j": "安门.出行.安葬.上梁." }, "d0822": { "y": "搬家.装修.开业.结婚.", "j": "安葬.修坟.立碑.纳畜." }, "d0823": { "y": "结婚.领证.作灶.祭祀.", "j": "开业.开工.安葬.开张." }, "d0824": { "y": "搬家.开业.结婚.入宅.", "j": "安床." }, "d0825": { "y": "结婚.领证.动土.安床.", "j": "开光." }, "d0826": { "y": "搬家.入宅.安门.安床.", "j": "结婚.领证.安葬.破土." }, "d0827": { "y": "安床.出行.上梁.旅游.", "j": "结婚.领证.动土.安葬." }, "d0828": { "y": "安床.订婚.安葬.理发.", "j": "开业.结婚.入宅.入宅." }, "d0829": { "y": "祭祀.解除.造畜稠.平治道涂.", "j": "开业.结婚.入宅.领证." }, "d0830": { "y": "安葬.破土.启钻.成服.", "j": "开业.入宅.开工.开张." }, "d0831": { "y": "搬家.装修.入宅.动土.", "j": "作灶." }, "d0901": { "y": "结婚.领证.安床.订婚.", "j": "开业.开工.交易.开张." }, "d0902": { "y": "祭祀.解除.破屋.", "j": "." }, "d0903": { "y": "搬家.装修.动土.安床.", "j": "盖屋." }, "d0904": { "y": "开业.开工.安床.订婚.", "j": "结婚.入宅.领证.赴任." }, "d0905": { "y": "沐浴.", "j": "." }, "d0906": { "y": ".", "j": "." }, "d0907": { "y": "出行.订婚.安葬.旅游.", "j": "入宅." }, "d0908": { "y": "出行.旅游.祭祀.沐浴.", "j": "结婚.领证.动土.安葬." }, "d0909": { "y": "搬家.结婚.入宅.领证.", "j": "开业.开工.开张." }, "d0910": { "y": ".", "j": "." }, "d0911": { "y": "搬家.开业.入宅.开工.", "j": "结婚.领证.动土.作灶." }, "d0912": { "y": "搬家.装修.结婚.入宅.", "j": "." }, "d0913": { "y": "装修.动土.安床.安葬.", "j": "搬家.开业.结婚.入宅." }, "d0914": { "y": "破屋.", "j": "." }, "d0915": { "y": "搬家.装修.开业.结婚.", "j": "安葬." }, "d0916": { "y": "安葬.理发.求嗣.修坟.", "j": "搬家.入宅.出行.作灶." }, "d0917": { "y": "祭祀.沐浴.成服.除服.", "j": "开业.结婚.领证.开工." }, "d0918": { "y": ".", "j": "." }, "d0919": { "y": "安床.破土.祭祀.启钻.", "j": "搬家.开业.结婚.入宅." }, "d0920": { "y": "祭祀.", "j": "." }, "d0921": { "y": "搬家.装修.结婚.入宅.", "j": "安床." }, "d0922": { "y": "安门.安床.理发.裁衣.", "j": "搬家.结婚.入宅.领证." }, "d0923": { "y": "搬家.装修.开业.结婚.", "j": "作灶.祈福.祭祀.伐木." }, "d0924": { "y": "祭祀.入殓.", "j": "装修.入宅.动土.安门." }, "d0925": { "y": "装修.入宅.安床.订婚.", "j": "作灶.伐木.掘井." }, "d0926": { "y": "搬家.装修.结婚.入宅.", "j": "开业.开工.出行.安葬." }, "d0927": { "y": "祭祀.破屋.坏垣.", "j": "." }, "d0928": { "y": "搬家.入宅.安床.出行.", "j": "安门.作灶.开光.栽种." }, "d0929": { "y": "搬家.装修.出行.旅游.", "j": "." }, "d0930": { "y": "安床.祭祀.沐浴.纳财.", "j": "开业.开工.开张.破土." }, "d1001": { "y": "装修.动土.订婚.上梁.", "j": "结婚.领证.作灶." }, "d1002": { "y": "出行.旅游.理发.沐浴.", "j": "入宅." }, "d1003": { "y": ".", "j": "入宅.动土." }, "d1004": { "y": "结婚.领证.出行.上梁.", "j": "开业.开工.安葬.开张." }, "d1005": { "y": "开业.开工.安葬.上梁.", "j": "结婚.领证.祈福." }, "d1006": { "y": ".", "j": "." }, "d1007": { "y": "装修.动土.订婚.安葬.", "j": "开业.结婚.领证.开工." }, "d1008": { "y": "搬家.装修.结婚.入宅.", "j": "开业.开工.安葬.开张." }, "d1009": { "y": "破屋.坏垣.", "j": "." }, "d1010": { "y": "装修.动土.交易.入学.", "j": "安门.作灶.理发.栽种." }, "d1011": { "y": "解除.", "j": "." }, "d1012": { "y": "理发.沐浴.", "j": "结婚.入宅.领证.安门." }, "d1013": { "y": "动土.安床.破土.祈福.", "j": "搬家.结婚.入宅.领证." }, "d1014": { "y": "装修.动土.安门.作灶.", "j": "结婚.领证.安床.安葬." }, "d1015": { "y": "安葬.启钻.成服.除服.", "j": "." }, "d1016": { "y": "搬家.开业.结婚.入宅.", "j": "安葬.作灶.伐木.塑绘." }, "d1017": { "y": "装修.开业.开工.安床.", "j": "搬家.结婚.入宅.领证." }, "d1018": { "y": "祭祀.", "j": "." }, "d1019": { "y": "入宅.动土.安床.安葬.", "j": "开业.结婚.领证.开工." }, "d1020": { "y": "祭祀.", "j": "." }, "d1021": { "y": "祭祀.沐浴.破屋.", "j": "." }, "d1022": { "y": "动土.安床.求嗣.祈福.", "j": "安门.作灶.栽种." }, "d1023": { "y": "解除.", "j": "." }, "d1024": { "y": "安葬.修坟.立碑.启钻.", "j": "开业.结婚.领证.开工." }, "d1025": { "y": "作灶.祭祀.除服.", "j": "开业.开工.安床.开张." }, "d1026": { "y": "作灶.沐浴.开光.冠笄.", "j": "结婚.领证.出行.安葬." }, "d1027": { "y": "安床.出行.订婚.上梁.", "j": "搬家.结婚.入宅.领证." }, "d1028": { "y": "祭祀.", "j": "." }, "d1029": { "y": "搬家.装修.入宅.动土.", "j": "出行.上梁.作灶.旅游." }, "d1030": { "y": "结婚.领证.安床.出行.", "j": "." }, "d1031": { "y": "入殓.移柩.平治道涂.", "j": "搬家.结婚.入宅.领证." }, "d1101": { "y": "搬家.装修.结婚.入宅.", "j": "开业.开工.出行.安葬." }, "d1102": { "y": "装修.结婚.领证.动土.", "j": "开业.入宅.开工.开张." }, "d1103": { "y": "解除.破屋.", "j": "." }, "d1104": { "y": "结婚.领证.出行.订婚.", "j": "入宅." }, "d1105": { "y": "安葬.立碑.启钻.成服.", "j": "破土." }, "d1106": { "y": "结婚.领证.作灶.祈福.", "j": "安床.安葬.盖屋." }, "d1107": { "y": "开业.结婚.领证.开工.", "j": "结婚.领证.安葬.嫁娶." }, "d1108": { "y": "安床.安葬.交易.祈福.", "j": "结婚.入宅.领证.作灶." }, "d1109": { "y": "祭祀.解除.扫舍.", "j": "." }, "d1110": { "y": "搬家.开业.入宅.开工.", "j": "结婚.领证.出行.旅游." }, "d1111": { "y": "开业.结婚.领证.开工.", "j": "装修.入宅.动土.安门." }, "d1112": { "y": "祭祀.解除.平治道涂.", "j": "." }, "d1113": { "y": "结婚.领证.动土.求嗣.", "j": "开业.入宅.开工.安门." }, "d1114": { "y": "搬家.装修.结婚.入宅.", "j": "开业.入宅.开工.安门." }, "d1115": { "y": "破屋.", "j": "." }, "d1116": { "y": "搬家.装修.开业.结婚.", "j": "安床.祈福.纳畜." }, "d1117": { "y": "安葬.修坟.破土.祭祀.", "j": "." }, "d1118": { "y": "祭祀.", "j": "." }, "d1119": { "y": "搬家.开业.入宅.开工.", "j": "结婚.领证.安葬.作灶." }, "d1120": { "y": "安床.安葬.交易.裁衣.", "j": "结婚.入宅.领证.动土." }, "d1121": { "y": "祭祀.解除.针灸.教牛马.", "j": "结婚.领证.动土.安葬." }, "d1122": { "y": "纳财.裁衣.成服.除服.", "j": "搬家.结婚.入宅.领证." }, "d1123": { "y": "结婚.入宅.领证.出行.", "j": "." }, "d1124": { "y": "入宅.安床.订婚.求嗣.", "j": "安床.安葬.作灶." }, "d1125": { "y": "作灶.", "j": "安门.安葬.祈福." }, "d1126": { "y": "装修.动土.安门.安床.", "j": "安葬.作灶.盖屋." }, "d1127": { "y": "搬家.结婚.入宅.领证.", "j": "开业.开工.动土.开张." }, "d1128": { "y": "破屋.", "j": "." }, "d1129": { "y": "装修.结婚.入宅.领证.", "j": "安床." }, "d1130": { "y": "安葬.破土.立碑.成服.", "j": "结婚.入宅.领证.上梁." }, "d1201": { "y": "开业.开工.安床.订婚.", "j": "安葬.作灶.伐木." }, "d1202": { "y": "开业.开工.出行.订婚.", "j": "入宅.安葬.作灶." }, "d1203": { "y": "安葬.求嗣.祈福.祭祀.", "j": "搬家.结婚.入宅.领证." }, "d1204": { "y": "安床.安葬.上梁.交易.", "j": "结婚.入宅.领证.动土." }, "d1205": { "y": "搬家.开业.结婚.入宅.", "j": "掘井.词讼." }, "d1206": { "y": "结婚.领证.安床.求嗣.", "j": "搬家.开业.入宅.开工." }, "d1207": { "y": "作灶.解除.", "j": "安门.出行.安葬.旅游." }, "d1208": { "y": "解除.", "j": "." }, "d1209": { "y": "搬家.结婚.入宅.领证.", "j": "开业.开工.开张.作灶." }, "d1210": { "y": "祭祀.解除.破屋.坏垣.", "j": "." }, "d1211": { "y": "搬家.装修.入宅.动土.", "j": "结婚.领证.安床.作灶." }, "d1212": { "y": "安葬.破土.成服.除服.", "j": "." }, "d1213": { "y": "搬家.动土.安门.安床.", "j": "结婚.领证.安葬.作灶." }, "d1214": { "y": "结婚.领证.动土.安床.", "j": "入宅.出行.安葬.作灶." }, "d1215": { "y": "安床.安葬.作灶.祭祀.", "j": "入宅.出火.词讼." }, "d1216": { "y": "交易.纳财.裁衣.伐木.", "j": "." }, "d1217": { "y": "搬家.开业.结婚.入宅.", "j": "." }, "d1218": { "y": "装修.结婚.领证.安门.", "j": "搬家.入宅.安葬.作灶." }, "d1219": { "y": "祭祀.平治道涂.", "j": "." }, "d1220": { "y": "搬家.开业.入宅.开工.", "j": "动土.作灶.开光.盖屋." }, "d1221": { "y": "结婚.领证.动土.安葬.", "j": "开业.入宅.开工.安床." }, "d1222": { "y": "安葬.理发.修坟.祭祀.", "j": "结婚.入宅.领证.安床." }, "d1223": { "y": "破屋.", "j": "." }, "d1224": { "y": "动土.安床.出行.订婚.", "j": "作梁." }, "d1225": { "y": "开业.入宅.开工.动土.", "j": "结婚.领证.安葬.嫁娶." }, "d1226": { "y": "祭祀.沐浴.捕捉.", "j": "搬家.结婚.入宅.领证." }, "d1227": { "y": "搬家.装修.结婚.入宅.", "j": "安葬." }, "d1228": { "y": "装修.动土.安床.订婚.", "j": "开业.结婚.入宅.领证." }, "d1229": { "y": "开业.开工.安床.出行.", "j": "动土.作灶.掘井." }, "d1230": { "y": "祭祀.塞穴.", "j": "结婚.领证.安葬.作灶." }, "d1231": { "y": "开业.开工.上梁.交易.", "j": "结婚.入宅.领证.出行." } } ukui-panel-4.0.0.4/plugin-calendar/html/hlnew/hl2013.json0000644000175000017500000030601114560306203021301 0ustar fengfeng{ "d0101": { "y": "祭祀.平治道涂.除服.成服.安葬.余事勿取.", "j": "嫁娶.入宅.纳采.订盟.掘井.", "c": "生肖冲鸡", "s": "煞西", "ch": "平", "zc": "正冲正冲辛酉", "ts": "仓库门外正南" }, "d0201": { "y": "祭祀.斋醮.纳财.捕捉.畋猎.", "j": "嫁娶.开市.入宅.安床.破土.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "收", "zc": "正冲正冲壬辰", "ts": "房床栖房内南" }, "d0102": { "y": "纳采.订盟.祭祀.祈福.开光.安香.出火.出行.会亲友.安机械.修造.动土.竖柱.上梁.造屋.起基.定磉.安床.安门.拆卸.移徙.造桥.造船.安葬.破土.入殓.", "j": "开市.造庙.置产.掘井.", "c": "生肖冲狗", "s": "煞南", "ch": "定", "zc": "正冲正冲壬戌", "ts": "房床栖外正南" }, "d0103": { "y": "嫁娶.冠笄.祭祀.祈福.求嗣.斋醮.进人口.会亲友.伐木.作梁.开柱眼.安床.掘井.捕捉.畋猎.", "j": "开生坟.破土.行丧.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "执", "zc": "正冲正冲癸亥", "ts": "占门床外正南" }, "d0104": { "y": "破屋.坏垣.治病.余事勿取.", "j": "移徙.入宅.", "c": "生肖冲鼠", "s": "煞北", "ch": "破", "zc": "正冲正冲甲子", "ts": "占碓磨外正南" }, "d0105": { "y": "解除.破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲牛", "s": "煞西", "ch": "破", "zc": "正冲正冲乙丑", "ts": "厨灶厕外西南" }, "d0106": { "y": "塑绘.开光.出行.订盟.纳采.除服.成服.嫁娶.纳婿.入殓.移柩.启攒.安葬.立碑.", "j": "入宅.安床.", "c": "生肖冲虎", "s": "煞南", "ch": "危", "zc": "正冲正冲丙寅", "ts": "仓库炉外西南" }, "d0107": { "y": "入殓.除服.成服.移柩.启攒.安葬.立碑.余事勿取.", "j": "破土.伐木.", "c": "生肖冲兔", "s": "煞東", "ch": "成", "zc": "正冲正冲丁卯", "ts": "房床门外西南" }, "d0108": { "y": "祭祀.祈福.斋醮.塑绘.开光.除服.成服.入殓.作灶.嫁娶.捕捉.畋猎.纳财.", "j": "开仓.造屋.安葬.安床.", "c": "生肖冲龙", "s": "煞北", "ch": "收", "zc": "正冲正冲戊辰", "ts": "门鸡栖外西南" }, "d0109": { "y": "祭祀.出行.沐浴.裁衣.祈福.斋醮.订盟.纳采.嫁娶.安机械.开市.立券.安碓硙.纳畜.", "j": "栽种.嫁娶.入殓.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "开", "zc": "正冲正冲己巳", "ts": "碓磨床外西南" }, "d0110": { "y": "祭祀.祈福.斋醮.沐浴.安床.安机械.造车器.入殓.移柩.启攒.安葬.立碑.合帐.经络.交易.", "j": "作灶.掘井.嫁娶.入宅.", "c": "生肖冲马", "s": "煞南", "ch": "闭", "zc": "正冲正冲庚午", "ts": "厨灶碓外西南" }, "d0111": { "y": "解除.扫舍.祭祀.教牛马.余事勿取.", "j": "余事勿取.", "c": "生肖冲羊", "s": "煞東", "ch": "建", "zc": "正冲正冲辛未", "ts": "仓库厕外西南" }, "d0112": { "y": "开市.交易.立券.挂匾.开光.解除.伐木.作梁.出火.入宅.移徙.安床.拆卸.动土.上梁.栽种.纳畜.安葬.", "j": "嫁娶.祭祀.出行.置产.", "c": "生肖冲猴", "s": "煞北", "ch": "除", "zc": "正冲正冲壬申", "ts": "房床厕外正南" }, "d0113": { "y": "开市.交易.立券.纳财.开池.补垣.嫁娶.纳采.纳畜.取渔.安床.", "j": "修造.上梁.入宅.祈福.探病.掘井.动土.安门.安葬.作灶.", "c": "生肖冲鸡", "s": "煞西", "ch": "满", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d0114": { "y": "祭祀.解除.修饰垣墙.平治道涂.余事勿取.", "j": "余事勿取.", "c": "生肖冲狗", "s": "煞南", "ch": "平", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d0115": { "y": "嫁娶.祭祀.祈福.求嗣.动土.会亲友.起基.造仓.纳畜.牧养.作厕.进人口.", "j": "掘井.安葬.栽种.出行.作灶.开市.入宅.安门.", "c": "生肖冲猪", "s": "煞東", "ch": "定", "zc": "正冲正冲乙亥", "ts": "厨灶床外正西" }, "d0116": { "y": "嫁娶.祭祀.祈福.求嗣.开光.入宅.移徙.安床.修造.动土.进人口.", "j": "掘井.安葬.栽种.出行.作灶.开市.入宅.安门.", "c": "生肖冲鼠", "s": "煞北", "ch": "执", "zc": "正冲正冲丙子", "ts": "仓库碓外西北" }, "d0117": { "y": "破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲牛", "s": "煞西", "ch": "破", "zc": "正冲正冲丁丑", "ts": "房床厕外西北" }, "d0118": { "y": "嫁娶.开市.交易.立券.开光.出行.出火.拆卸.修造.入宅.移徙.动土.破土.移柩.安葬.启攒.除服.成服.", "j": "安床.伐木.祈福.纳畜.", "c": "生肖冲虎", "s": "煞南", "ch": "危", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d0119": { "y": "祭祀.入殓.破土.除服.成服.启攒.安葬.修坟.立碑.余事勿取.", "j": "余事勿取.", "c": "生肖冲兔", "s": "煞東", "ch": "成", "zc": "正冲正冲己卯", "ts": "占门炉外西北" }, "d0120": { "y": "祭祀.解除.余事勿取.", "j": "诸事不宜.", "c": "生肖冲龙", "s": "煞北", "ch": "收", "zc": "正冲正冲庚辰", "ts": "厨灶栖外西北" }, "d0121": { "y": "开市.交易.立券.纳财.纳畜.造畜椆栖.入宅.移徙.安床.开光.祈福.求嗣.动土.", "j": "嫁娶.栽种.安葬.理发.造庙.作灶.入殓.行丧.造桥.", "c": "生肖冲蛇", "s": "煞西", "ch": "开", "zc": "正冲正冲辛巳", "ts": "仓库床外西北" }, "d0122": { "y": "安床.裁衣.交易.立券.入殓.移柩.安葬.除服.成服.", "j": "置产.嫁娶.出行.开光.栽种.动土.破土.入宅.治病.", "c": "生肖冲马", "s": "煞南", "ch": "闭", "zc": "正冲正冲壬午", "ts": "房床碓外正北" }, "d0123": { "y": "祭祀.解除.造畜椆栖.教牛马.针灸.余事勿取.", "j": "嫁娶.动土.开池.安葬.", "c": "生肖冲羊", "s": "煞東", "ch": "建", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d0124": { "y": "沐浴.塑绘.开光.纳采.订盟.开市.交易.立券.纳财.起基.动土.定磉.放水.安葬.破土.启攒.修坟.立碑.移柩.", "j": "入宅.安门.祭祀.谢土.", "c": "生肖冲猴", "s": "煞北", "ch": "除", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d0125": { "y": "嫁娶.出行.理发.安床.启攒.安葬.修坟.开市.交易.立券.纳财.开池.牧养.", "j": "掘井.祈福.谢土.动土.入宅.上梁.修造.作灶.", "c": "生肖冲鸡", "s": "煞西", "ch": "满", "zc": "正冲正冲乙酉", "ts": "厨灶门外正北" }, "d0126": { "y": "解除.平治道涂.余事勿取.", "j": "移徙.入宅.掘井.造庙.栽种.针灸.治病.开池.", "c": "生肖冲狗", "s": "煞南", "ch": "平", "zc": "正冲正冲丙戌", "ts": "仓库栖外正北" }, "d0127": { "y": "嫁娶.祭祀.开光.伐木.出火.拆卸.入宅.移徙.修造.动土.上梁.安床.纳畜.", "j": "开市.行丧.栽种.出行.出货财.安葬.置产.词讼.治病.", "c": "生肖冲猪", "s": "煞東", "ch": "定", "zc": "正冲正冲丁亥", "ts": "占房床房内北" }, "d0128": { "y": "嫁娶.纳采.订盟.入宅.移徙.安床.祭祀.祈福.开光.出行.解除.出火.拆卸.动土.纳畜.谢土.安葬.破土.", "j": "伐木.开市.交易.上梁.作灶.安门.造屋.", "c": "生肖冲鼠", "s": "煞北", "ch": "执", "zc": "正冲正冲戊子", "ts": "占门碓房内北" }, "d0129": { "y": "祭祀.破屋.坏垣.解除.余事勿取.", "j": "开市.动土.破土.", "c": "生肖冲牛", "s": "煞西", "ch": "破", "zc": "正冲正冲己丑", "ts": "碓磨厕房内北" }, "d0130": { "y": "嫁娶.纳采.订盟.开光.安香.出火.纳财.开市.交易.立券.裁衣.造屋.起基.修造.动土.安门.移徙.入宅.栽种.牧养.畋猎.掘井.开池.安葬.破土.入殓.除服.成服.立碑.", "j": "祈福.造庙.祭祀.安床.谢土.", "c": "生肖冲虎", "s": "煞南", "ch": "危", "zc": "正冲正冲庚寅", "ts": "厨灶炉房内北" }, "d0131": { "y": "祭祀.斋醮.入殓.破土.启攒.安葬.修坟.立碑.除服.成服.", "j": "嫁娶.入宅.作灶.纳采.订盟.", "c": "生肖冲兔", "s": "煞東", "ch": "成", "zc": "正冲正冲辛卯", "ts": "仓库门房内北" }, "d0216": { "y": "祭祀.合帐.裁衣.经络.伐木.作梁.安床.作灶.入殓.安葬.启攒.移柩.", "j": "词讼.出火.入宅.", "c": "生肖冲羊", "s": "煞東", "ch": "闭", "zc": "正冲正冲丁未", "ts": "房床厕外东北" }, "d0206": { "y": "嫁娶.安床.开光.出行.祭祀.动土.出火.解除.会亲友.开市.交易.立券.挂匾.入宅.移徙.拆卸.破土.启攒.安葬.", "j": "掘井.词讼.", "c": "生肖冲鸡", "s": "煞西", "ch": "除", "zc": "正冲正冲丁酉", "ts": "房床门房内南" }, "d0219": { "y": "嫁娶.冠笄.纳采.出行.会亲友.上梁.安机械.安床.牧养.畋猎.祭祀.祈福.开光.修造.安门.造屋.起基.", "j": "入宅.作灶.治病.安葬.移徙.", "c": "生肖冲狗", "s": "煞南", "ch": "满", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d0226": { "y": "祭祀.沐浴.理发.作灶.结网.栽种.", "j": "嫁娶.词讼.行丧.安葬.牧养.伐木.作梁.开市.纳畜.造畜椆栖.", "c": "生肖冲蛇", "s": "煞西", "ch": "收", "zc": "正冲正冲丁巳", "ts": "占房床外东南" }, "d0224": { "y": "祭祀.斋醮.沐浴.开生坟.除服.成服.移柩.入殓.破土.安葬.合寿木.", "j": "开市.嫁娶.安床.会亲友.入宅.作灶.上梁.", "c": "生肖冲兔", "s": "煞東", "ch": "危", "zc": "正冲正冲乙卯", "ts": "厨灶门外东南" }, "d0214": { "y": "移徙.祭祀.开光.祈福.出行.解除.进人口.雇庸.安床.动土.起基.上梁.安门.解除.", "j": "嫁娶.安葬.破土.作梁.纳畜.牧养.行丧.作灶.", "c": "生肖冲蛇", "s": "煞西", "ch": "收", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d0204": { "y": "祭祀.祈福.求嗣.入殓.启攒.安葬.移柩.", "j": "开光.掘井.针灸.出行.嫁娶.入宅.移徙.作灶.动土.", "c": "生肖冲羊", "s": "煞東", "ch": "闭", "zc": "正冲正冲乙未", "ts": "厨灶厕房内南" }, "d0221": { "y": "造车器.纳采.订盟.祭祀.祈福.求嗣.移徙.出行.开市.出火.入宅.立券.交易.入宅.安门.安床.安葬.谢土.", "j": "开光.造屋.动土.作灶.栽种.", "c": "生肖冲鼠", "s": "煞北", "ch": "定", "zc": "正冲正冲壬子", "ts": "房床碓外正东" }, "d0326": { "y": "祭祀.祈福.求嗣.斋醮.嫁娶.冠笄.出行.开市.交易.会亲友.教牛马.除服.成服.启攒.安葬.移柩.", "j": "祈福.动土.移徙.入宅.", "c": "生肖冲鸡", "s": "煞西", "ch": "建", "zc": "正冲正冲乙酉", "ts": "厨灶门外正北" }, "d0202": { "y": "纳采.订盟.祭祀.祈福.求嗣.斋醮.沐浴.进人口.会亲友.入学.治病.安碓硙.掘井.开池.纳畜.牧养.造畜椆栖.", "j": "嫁娶.合帐.入宅.行丧.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "开", "zc": "正冲正冲癸巳", "ts": "占门床房内南" }, "d0203": { "y": "祭祀.祈福.求嗣.沐浴.问名.交易.纳财.入殓.移柩.安葬.修坟.立碑.谢土.造畜椆栖.教牛马.", "j": "入宅.置产.嫁娶.动土.栽种.开市.开光.动土.破土.", "c": "生肖冲马", "s": "煞南", "ch": "闭", "zc": "正冲正冲甲午", "ts": "占碓磨房内南" }, "d0205": { "y": "安床.解除.裁衣.竖柱.上梁.交易.立券.纳财.纳畜.牧养.入殓.移柩.安葬.启攒.", "j": "嫁娶.出行.动土.开渠.入宅.祭祀.掘井.", "c": "生肖冲猴", "s": "煞北", "ch": "建", "zc": "正冲正冲丙申", "ts": "仓库炉房内南" }, "d0207": { "y": "嫁娶.开光.求嗣.会亲友.安床.牧养.塑绘.针灸.", "j": "入宅.移徙.出火.分居.安香.作灶.开市.交易.立券.安葬.动土.伐木.", "c": "生肖冲狗", "s": "煞南", "ch": "满", "zc": "正冲正冲戊戌", "ts": "门鸡栖房内东" }, "d0316": { "y": "开光.塑绘.求嗣.纳采.裁衣.合帐.冠笄.安机械.作梁.开柱眼.安门.安床.造仓.祭祀.会亲友.祈福.经络.纳财.开市.立券.交易.入学.求嗣.理发.架马.", "j": "出行.斋醮.安葬.嫁娶.", "c": "生肖冲猪", "s": "煞東", "ch": "满", "zc": "正冲正冲乙亥", "ts": "厨灶床外正西" }, "d0208": { "y": "作灶.解除.平治道涂.", "j": "栽种.出行.祈福.行丧.纳畜.安葬.安门.伐木.作梁.牧养.", "c": "生肖冲猪", "s": "煞東", "ch": "平", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d0209": { "y": "解除.沐浴.", "j": "诸事不宜.", "c": "生肖冲鼠", "s": "煞北", "ch": "定", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d0210": { "y": "嫁娶.祭祀.祈福.出行.解除.出火.拆卸.动土.入宅.移徙.安床.上梁.栽种.纳畜.破土.启攒.安葬.", "j": "开市.立券.理发.作灶.", "c": "生肖冲牛", "s": "煞西", "ch": "执", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d0211": { "y": "祭祀.解除.治病.破屋.坏垣.扫舍.", "j": "余事勿取.", "c": "生肖冲虎", "s": "煞南", "ch": "破", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" }, "d0212": { "y": "祭祀.祈福.求嗣.开光.出火.出行.拆卸.修造.动土.入宅.移徙.上梁.挂匾.开池.入殓.安葬.破土.启攒.", "j": "嫁娶.作灶.安床.", "c": "生肖冲兔", "s": "煞東", "ch": "危", "zc": "正冲正冲癸卯", "ts": "占大门外东北" }, "d0213": { "y": "结网.入殓.除服.成服.移柩.安葬.破土.", "j": "诸事不宜.", "c": "生肖冲龙", "s": "煞北", "ch": "成", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d0215": { "y": "嫁娶.开光.祈福.求嗣.解除.动土.安床.栽种.开池.掘井.祭祀.破土.启攒.", "j": "入宅.作灶.伐木.安葬.出火.出行.纳畜.", "c": "生肖冲马", "s": "煞南", "ch": "开", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d0217": { "y": "裁衣.伐木.作梁.纳财.交易.立券.", "j": "诸事不宜.", "c": "生肖冲猴", "s": "煞北", "ch": "建", "zc": "正冲正冲戊申", "ts": "占门炉外东北" }, "d0218": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出行.出火.拆卸.动土.上梁.进人口.入宅.移徙.安床.开市.交易.立券.挂匾.入殓.破土.安葬.启攒.除服.成服.", "j": "诸事不宜.", "c": "生肖冲鸡", "s": "煞西", "ch": "除", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d0220": { "y": "修饰垣墙.平治道涂.祭祀.余事勿取.", "j": "诸事不宜.", "c": "生肖冲猪", "s": "煞東", "ch": "平", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d0222": { "y": "动土.入殓.嫁娶.移柩.安葬.破土.", "j": "开市.作灶.安床.入宅.上梁.裁衣.", "c": "生肖冲牛", "s": "煞西", "ch": "执", "zc": "正冲正冲癸丑", "ts": "占门厕外正东" }, "d0223": { "y": "求医.治病.破屋.坏垣.余事勿取.", "j": "开市.嫁娶.", "c": "生肖冲虎", "s": "煞南", "ch": "破", "zc": "正冲正冲甲寅", "ts": "碓磨炉外东南" }, "d0225": { "y": "祭祀.塞穴.结网.破土.谢土.安葬.移柩.除服.成服.余事勿取.", "j": "嫁娶.入宅.", "c": "生肖冲龙", "s": "煞北", "ch": "成", "zc": "正冲正冲丙辰", "ts": "仓库栖外东南" }, "d0227": { "y": "嫁娶.祭祀.开光.祈福.求嗣.出行.开市.交易.立券.动土.纳财.掘井.会亲友.", "j": "入宅.安葬.伐木.作梁.纳畜.造畜椆栖.作灶.", "c": "生肖冲马", "s": "煞南", "ch": "开", "zc": "正冲正冲戊午", "ts": "占门碓外东南" }, "d0228": { "y": "祭祀.祈福.求嗣.纳畜.入殓.启攒.谢土.除服.成服.", "j": "栽种.开光.出行.针灸.嫁娶.入宅.动土.破土.", "c": "生肖冲羊", "s": "煞東", "ch": "闭", "zc": "正冲正冲己未", "ts": "碓磨厕外东南" }, "d0327": { "y": "塞穴.整手足甲.解除.捕捉.畋猎.结网.余事勿取.诸事不宜.", "j": "嫁娶.作灶.掘井.安葬.", "c": "生肖冲狗", "s": "煞南", "ch": "除", "zc": "正冲正冲丙戌", "ts": "仓库栖外正北" }, "d0427": { "y": "沐浴.塞穴.畋猎.结网.取渔.扫舍.余事勿取.", "j": "祈福.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "危", "zc": "正冲正冲丁巳", "ts": "占房床外东南" }, "d0301": { "y": "开光.解除.伐木.竖柱.上梁.交易.立券.纳畜.入殓.移柩.安葬.", "j": "入宅.出行.移徙.祭祀.嫁娶.动土.破土.作灶.", "c": "生肖冲猴", "s": "煞北", "ch": "建", "zc": "正冲正冲庚申", "ts": "厨灶炉外正南" }, "d0302": { "y": "祭祀.祈福.求嗣.开光.嫁娶.出行.解除.伐木.拆卸.进人口.安床.动土.起基.上梁.栽种.纳畜.破土.谢土.启攒.安葬.", "j": "移徙.入宅.出火.作灶.掘井.", "c": "生肖冲鸡", "s": "煞西", "ch": "除", "zc": "正冲正冲辛酉", "ts": "仓库门外正南" }, "d0303": { "y": "会亲友.冠笄.安床.会亲友.安机械.祭祀.祈福.求嗣.经络.", "j": "嫁娶.开市.动土.作灶.安葬.", "c": "生肖冲狗", "s": "煞南", "ch": "满", "zc": "正冲正冲壬戌", "ts": "房床栖外正南" }, "d0304": { "y": "作灶.解除.平治道涂.余事勿取.", "j": "祭祀.祈福.安葬.安门.", "c": "生肖冲猪", "s": "煞東", "ch": "平", "zc": "正冲正冲癸亥", "ts": "占门床外正南" }, "d0305": { "y": "冠笄.入殓.除服.成服.移柩.平治道涂.修饰垣墙.", "j": "造屋.作灶.治病.探病.", "c": "生肖冲鼠", "s": "煞北", "ch": "平", "zc": "正冲正冲甲子", "ts": "占碓磨外正南" }, "d0306": { "y": "祭祀.嫁娶.祈福.纳采.裁衣.合帐.安床.入宅.安香.入殓.移柩.安葬.谢土.修造.安碓硙.求嗣.会亲友.挂匾.交易.立券.纳财.造仓.放水.", "j": "栽种.伐木.", "c": "生肖冲牛", "s": "煞西", "ch": "定", "zc": "正冲正冲乙丑", "ts": "厨灶厕外西南" }, "d0307": { "y": "祭祀.祈福.斋醮.订盟.纳采.裁衣.合帐.拆卸.修造.动土.上梁.起基.移柩.安葬.谢土.沐浴.扫舍.开柱眼.伐木.出火.", "j": "安床.开市.立券.作灶.", "c": "生肖冲虎", "s": "煞南", "ch": "执", "zc": "正冲正冲丙寅", "ts": "仓库炉外西南" }, "d0308": { "y": "破屋.坏垣.求医.治病.", "j": "诸事不宜.", "c": "生肖冲兔", "s": "煞東", "ch": "破", "zc": "正冲正冲丁卯", "ts": "房床门外西南" }, "d0309": { "y": "祭祀.动土.上梁.订盟.纳采.嫁娶.安机械.拆卸.安床.入宅.安香.入殓.移柩.破土.安葬.立碑.谢土.赴任.出行.移徙.祈福.求嗣.解除.造仓.进人口.", "j": "开光.出货财.", "c": "生肖冲龙", "s": "煞北", "ch": "危", "zc": "正冲正冲戊辰", "ts": "门鸡栖外西南" }, "d0310": { "y": "祭祀.开光.塑绘.纳采.裁衣.拆卸.安床.起基.动土.竖柱.上梁.移徙.入宅.安香.开市.立券.挂匾.沐浴.出行.求嗣.安门.", "j": "嫁娶.栽种.伐木.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "成", "zc": "正冲正冲己巳", "ts": "碓磨床外西南" }, "d0311": { "y": "裁衣.合帐.冠笄.嫁娶.纳婿.安床.入殓.纳财.", "j": "作灶.开市.安葬.作梁.", "c": "生肖冲马", "s": "煞南", "ch": "收", "zc": "正冲正冲庚午", "ts": "厨灶碓外西南" }, "d0312": { "y": "祭祀.订盟.纳采.修造.动土.祈福.塑绘.斋醮.沐浴.拆卸.起基.入宅.安香.造庙.移柩.谢土.除服.成服.入学.习艺.出行.竖柱.上梁.掘井.求嗣.解除.伐木.", "j": "作灶.安葬.开市.造屋.", "c": "生肖冲羊", "s": "煞東", "ch": "开", "zc": "正冲正冲辛未", "ts": "仓库厕外西南" }, "d0313": { "y": "订盟.纳采.裁衣.合帐.冠笄.安机械.拆卸.安床.入殓.除服.成服.移柩.破土.启攒.安葬.修坟.立碑.经络.交易.立券.纳财.筑堤.造仓.补垣.塞穴.纳畜.伐木.架马.", "j": "祭祀.开光.嫁娶.入宅.", "c": "生肖冲猴", "s": "煞北", "ch": "闭", "zc": "正冲正冲壬申", "ts": "房床厕外正南" }, "d0314": { "y": "祭祀.出行.嫁娶.冠笄.安床.入殓.移柩.安葬.", "j": "掘井.动土.作灶.栽种.", "c": "生肖冲鸡", "s": "煞西", "ch": "建", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d0315": { "y": "塞穴.诸事不宜.", "j": "安门.作灶.安葬.嫁娶.", "c": "生肖冲狗", "s": "煞南", "ch": "除", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d0317": { "y": "祭祀.嫁娶.纳婿.安葬.", "j": "栽种.造屋.作灶.入宅.", "c": "生肖冲鼠", "s": "煞北", "ch": "平", "zc": "正冲正冲丙子", "ts": "仓库碓外西北" }, "d0318": { "y": "祭祀.会亲友.订盟.裁衣.合帐.安机械.拆卸.上梁.安门.入殓.除服.成服.移柩.启攒.安葬.立碑.开光.塑绘.入学.出行.起基.定磉.放水.移徙.入宅.竖柱.立券.经络.", "j": "伐木.作梁.", "c": "生肖冲牛", "s": "煞西", "ch": "定", "zc": "正冲正冲丁丑", "ts": "房床厕外西北" }, "d0319": { "y": "祭祀.开光.塑绘.祈福.斋醮.裁衣.合帐.冠笄.嫁娶.拆卸.动土.移徙.入宅.入殓.移柩.安葬.谢土.求嗣.入学.理发.伐木.架马.作梁.出火.修造.起基.定磉.放水.赴任.", "j": "入宅.安门.", "c": "生肖冲虎", "s": "煞南", "ch": "执", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d0320": { "y": "祭祀.治病.破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲兔", "s": "煞東", "ch": "破", "zc": "正冲正冲己卯", "ts": "占门炉外西北" }, "d0321": { "y": "嫁娶.祭祀.出行.冠笄.立券.交易.进人口.开市.移徙.修造.动土.安床.入殓.移柩.破土.", "j": "开光.作灶.斋醮.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "危", "zc": "正冲正冲庚辰", "ts": "厨灶栖外西北" }, "d0322": { "y": "开市.立券.交易.挂匾.祭祀.祈福.开光.入宅.移徙.安床.拆卸.动土.上梁.进人口.", "j": "嫁娶.行丧.架马.作梁.理发.牧养.安葬.纳畜.伐木.", "c": "生肖冲蛇", "s": "煞西", "ch": "成", "zc": "正冲正冲辛巳", "ts": "仓库床外西北" }, "d0323": { "y": "理发.冠笄.嫁娶.进人口.", "j": "置产.伐木.纳畜.造畜椆栖.安葬.破土.作梁.作灶.开生坟.", "c": "生肖冲马", "s": "煞南", "ch": "收", "zc": "正冲正冲壬午", "ts": "房床碓外正北" }, "d0324": { "y": "嫁娶.祭祀.开光.祈福.求嗣.出火.入宅.移徙.安床.拆卸.动土.破土.谢土.", "j": "合帐.开市.安葬.入殓.", "c": "生肖冲羊", "s": "煞東", "ch": "开", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d0325": { "y": "安床.伐木.拆卸.修造.动土.上梁.立券.交易.栽种.纳畜.牧养.入殓.安葬.", "j": "嫁娶.祭祀.开光.出行.出火.移徙.入宅.安门.", "c": "生肖冲猴", "s": "煞北", "ch": "闭", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d0328": { "y": "纳财.开市.立券.交易.开光.安床.上梁.造屋.修造.起基.", "j": "动土.破土.安葬.行丧.赴任.出行.嫁娶.入宅.移徙.谢土.词讼.", "c": "生肖冲猪", "s": "煞東", "ch": "满", "zc": "正冲正冲丁亥", "ts": "占房床房内北" }, "d0329": { "y": "祭祀.祈福.嫁娶.冠笄.修饰垣墙.置产.平治道涂.", "j": "开仓.出货财.造屋.作灶.开市.交易.立券.栽种.", "c": "生肖冲鼠", "s": "煞北", "ch": "平", "zc": "正冲正冲戊子", "ts": "占门碓房内北" }, "d0330": { "y": "嫁娶.祭祀.开光.祈福.求嗣.出行.出火.进人口.入宅.移徙.安床.拆卸.修造.安门.挂匾.纳财.扫舍.", "j": "动土.伐木.安葬.行丧.", "c": "生肖冲牛", "s": "煞西", "ch": "定", "zc": "正冲正冲己丑", "ts": "碓磨厕房内北" }, "d0331": { "y": "嫁娶.开光.祭祀.祈福.求嗣.出行.出火.入宅.移徙.解除.栽种.伐木.破土.谢土.安葬.", "j": "开市.交易.作灶.纳财.上梁.安床.造屋.造船.", "c": "生肖冲虎", "s": "煞南", "ch": "执", "zc": "正冲正冲庚寅", "ts": "厨灶炉房内北" }, "d0426": { "y": "祭祀.沐浴.解除.破屋.坏垣.求医.治病.余事勿取.", "j": "嫁娶.开市.", "c": "生肖冲龙", "s": "煞北", "ch": "破", "zc": "正冲正冲丙辰", "ts": "仓库栖外东南" }, "d0416": { "y": "祭祀.祈福.求嗣.开光.解除.纳采.冠笄.出火.拆卸.进人口.安床.动土.上梁.造庙.掘井.开池.入殓.移柩.安葬.破土.", "j": "", "c": "生肖冲马", "s": "煞南", "ch": "成", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d0428": { "y": "开市.交易.立券.挂匾.祭祀.开光.祈福.求嗣.安床.解除.修造.安葬.", "j": "纳采.问名.订盟.嫁娶.入宅.开仓.出火.动土.破土.纳畜.伐木.", "c": "生肖冲马", "s": "煞南", "ch": "成", "zc": "正冲正冲戊午", "ts": "占门碓外东南" }, "d0430": { "y": "安香.出火.纳采.订盟.嫁娶.开市.立券.交易.挂匾.开光.出行.解除.安床.栽种.置产.拆卸.修造.动土.", "j": "作灶.安葬.祭祀.入殓.", "c": "生肖冲猴", "s": "煞北", "ch": "开", "zc": "正冲正冲庚申", "ts": "厨灶炉外正南" }, "d0425": { "y": "祭祀.解除.入殓.移柩.启攒.安葬.整手足甲.捕捉.畋猎.取渔.除服.成服.扫舍.谢土.斋醮.", "j": "动土.破土.", "c": "生肖冲兔", "s": "煞東", "ch": "执", "zc": "正冲正冲乙卯", "ts": "厨灶门外东南" }, "d0420": { "y": "祭祀.出行.教牛马.扫舍.余事勿取.", "j": "开光.伐木.安葬.破土.", "c": "生肖冲狗", "s": "煞南", "ch": "建", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d0527": { "y": "塞穴.断蚁.结网.畋猎.余事勿取.", "j": "嫁娶.安葬.入宅.出行.动土.词讼.", "c": "生肖冲猪", "s": "煞東", "ch": "建", "zc": "正冲正冲丁亥", "ts": "占房床房内北" }, "d0401": { "y": "破屋.坏垣.求医.治病.余事勿取.", "j": "开光.嫁娶.", "c": "生肖冲兔", "s": "煞東", "ch": "破", "zc": "正冲正冲辛卯", "ts": "仓库门房内北" }, "d0402": { "y": "纳采.交易.立券.安床.安机械.安葬.移柩.动土.破土.立碑.", "j": "嫁娶.开光.作灶.", "c": "生肖冲龙", "s": "煞北", "ch": "危", "zc": "正冲正冲壬辰", "ts": "房床栖房内南" }, "d0403": { "y": "祭祀.祈福.求嗣.斋醮.沐浴.开光.理发.经络.解除.治病.治病.立碑.栽种.牧养.掘井.开池.", "j": "嫁娶.定磉.合寿木.安葬.行丧.", "c": "生肖冲蛇", "s": "煞西", "ch": "成", "zc": "正冲正冲癸巳", "ts": "占门床房内南" }, "d0404": { "y": "", "j": "诸事不宜.", "c": "生肖冲马", "s": "煞南", "ch": "成", "zc": "正冲正冲甲午", "ts": "占碓磨房内南" }, "d0405": { "y": "解除.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲羊", "s": "煞東", "ch": "收", "zc": "正冲正冲乙未", "ts": "厨灶厕房内南" }, "d0406": { "y": "嫁娶.开光.出行.出火.拆卸.进人口.开市.立券.交易.挂匾.入宅.移徙.安床.栽种.", "j": "祈福.入殓.祭祀.作灶.安葬.探病.", "c": "生肖冲猴", "s": "煞北", "ch": "开", "zc": "正冲正冲丙申", "ts": "仓库炉房内南" }, "d0407": { "y": "嫁娶.出行.合帐.冠笄.安床.除服.成服.作灶.交易.立券.入殓.移柩.破土.安葬.", "j": "词讼.开光.开市.", "c": "生肖冲鸡", "s": "煞西", "ch": "闭", "zc": "正冲正冲丁酉", "ts": "房床门房内南" }, "d0408": { "y": "出行.修饰垣墙.造畜椆栖.教牛马.余事勿取.", "j": "诸事不宜.", "c": "生肖冲狗", "s": "煞南", "ch": "建", "zc": "正冲正冲戊戌", "ts": "门鸡栖房内东" }, "d0409": { "y": "祭祀.祈福.开光.求嗣.解除.伐木.出火.入宅.移徙.安床.拆卸.修造.动土.造畜椆栖.", "j": "嫁娶.纳财.安葬.出行.开市.立券.作灶.栽种.", "c": "生肖冲猪", "s": "煞東", "ch": "除", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d0410": { "y": "纳采.嫁娶.开光.出行.理发.会亲友.开市.安床.栽种.牧养.入殓.移柩.启攒.", "j": "谢土.祈福.上梁.作灶.斋醮.修造.入宅.安门.", "c": "生肖冲鼠", "s": "煞北", "ch": "满", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d0411": { "y": "祭祀.平治道涂.解除.修饰垣墙.余事勿取.", "j": "诸事不宜.", "c": "生肖冲牛", "s": "煞西", "ch": "平", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d0412": { "y": "祭祀.祈福.开光.解除.动土.纳财.交易.纳畜.扫舍.", "j": "进人口.出行.嫁娶.置产.安床.赴任.安葬.作灶.", "c": "生肖冲虎", "s": "煞南", "ch": "定", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" }, "d0413": { "y": "祭祀.祈福.求嗣.开光.解除.出火.拆卸.入宅.安床.修造.安门.纳畜.启攒.安葬.", "j": "动土.破土.纳财.掘井.挂匾.开市.伐木.交易.", "c": "生肖冲兔", "s": "煞東", "ch": "执", "zc": "正冲正冲癸卯", "ts": "占大门外东北" }, "d0414": { "y": "祭祀.解除.破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲龙", "s": "煞北", "ch": "破", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d0415": { "y": "塞穴.扫舍.余事勿取.", "j": "诸事不宜.", "c": "生肖冲蛇", "s": "煞西", "ch": "危", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d0417": { "y": "解除.破屋.余事勿取.", "j": "诸事不宜.", "c": "生肖冲羊", "s": "煞東", "ch": "收", "zc": "正冲正冲丁未", "ts": "房床厕外东北" }, "d0418": { "y": "嫁娶.祈福.求嗣.开光.出行.解除.拆卸.出火.开市.立券.交易.入宅.移徙.安床.动土.破土.谢土.", "j": "祭祀.入殓.安葬.探病.", "c": "生肖冲猴", "s": "煞北", "ch": "开", "zc": "正冲正冲戊申", "ts": "占门炉外东北" }, "d0419": { "y": "祭祀.裁衣.冠笄.安床.交易.立券.开池.补垣.塞穴.入殓.破土.启攒.安葬.谢土.除服.成服.", "j": "嫁娶.掘井.探病.开市.开光.栽种.", "c": "生肖冲鸡", "s": "煞西", "ch": "闭", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d0421": { "y": "祭祀.祈福.求嗣.开光.纳采.订盟.解除.栽种.纳畜.牧养.扫舍.进人口.", "j": "修坟.造桥.作灶.出行.安葬.造屋.入宅.", "c": "生肖冲猪", "s": "煞東", "ch": "除", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d0422": { "y": "开光.出行.交易.塞穴.嫁娶.理发.开市.安床.", "j": "祈福.出火.置产.动土.破土.安葬.修造.上梁.置产.入宅.", "c": "生肖冲鼠", "s": "煞北", "ch": "满", "zc": "正冲正冲壬子", "ts": "房床碓外正东" }, "d0423": { "y": "祭祀.作灶.畋猎.结网.修饰垣墙.平治道涂.余事勿取.", "j": "嫁娶.安床.治病.", "c": "生肖冲牛", "s": "煞西", "ch": "平", "zc": "正冲正冲癸丑", "ts": "占门厕外正东" }, "d0424": { "y": "沐浴.祭祀.解除.安葬.破土.谢土.移柩.余事勿取.", "j": "斋醮.开光.嫁娶.入宅.上梁.", "c": "生肖冲虎", "s": "煞南", "ch": "定", "zc": "正冲正冲甲寅", "ts": "碓磨炉外东南" }, "d0429": { "y": "祭祀.修门.取渔.纳财.纳畜.余事勿取.", "j": "嫁娶.入宅.", "c": "生肖冲羊", "s": "煞東", "ch": "收", "zc": "正冲正冲己未", "ts": "碓磨厕外东南" }, "d0627": { "y": "祭祀.破屋.坏垣.余事勿取.", "j": "移徙.入宅.开仓.出货财.", "c": "生肖冲马", "s": "煞南", "ch": "破", "zc": "正冲正冲戊午", "ts": "占门碓外东南" }, "d0501": { "y": "祭祀.出行.修造.动土.合帐.造畜椆栖.安床.移徙.入殓.移柩.破土.启攒.安葬.开生坟.合寿木.补垣.塞穴.", "j": "移徙.入宅.作灶.理发.开光.安门.", "c": "生肖冲鸡", "s": "煞西", "ch": "闭", "zc": "正冲正冲辛酉", "ts": "仓库门外正南" }, "d0502": { "y": "祭祀.修饰垣墙.余事勿取.", "j": "开光.修造.动土.破土.", "c": "生肖冲狗", "s": "煞南", "ch": "建", "zc": "正冲正冲壬戌", "ts": "房床栖外正南" }, "d0503": { "y": "嫁娶.祭祀.祈福.求嗣.斋醮.开光.出火.移徙.入宅.竖柱.上梁.会亲友.造屋.起基.治病.治病.安门.造车器.掘井.开池.", "j": "纳采.出行.修坟.安葬.开市.立券.作灶.", "c": "生肖冲猪", "s": "煞東", "ch": "除", "zc": "正冲正冲癸亥", "ts": "占门床外正南" }, "d0504": { "y": "祭祀.塑绘.开光.纳采.嫁娶.开市.出行.会亲友.安床.结网.除服.成服.启攒.安葬.移柩.", "j": "祈福.入宅.造屋.动土.破土.探病.", "c": "生肖冲鼠", "s": "煞北", "ch": "满", "zc": "正冲正冲甲子", "ts": "占碓磨外正南" }, "d0505": { "y": "订盟.纳采.会亲友.安床.作灶.造畜椆栖.", "j": "开市.安葬.", "c": "生肖冲牛", "s": "煞西", "ch": "满", "zc": "正冲正冲乙丑", "ts": "厨灶厕外西南" }, "d0506": { "y": "沐浴.平治道涂.扫舍.入殓.移柩.破土.启攒.安葬.余事勿取.", "j": "诸事不宜.", "c": "生肖冲虎", "s": "煞南", "ch": "平", "zc": "正冲正冲丙寅", "ts": "仓库炉外西南" }, "d0507": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出行.出火.拆卸.动土.上梁.进人口.入宅.移徙.安床.安门.开市.交易.立券.挂匾.栽种.破土.安葬.", "j": "", "c": "生肖冲兔", "s": "煞東", "ch": "定", "zc": "正冲正冲丁卯", "ts": "房床门外西南" }, "d0508": { "y": "祭祀.开光.出行.解除.塑绘.裁衣.入殓.移柩.破土.启攒.安葬.除服.成服.", "j": "嫁娶.上梁.修造.拆卸.架马.入宅.伐木.动土.出火.开柱眼.", "c": "生肖冲龙", "s": "煞北", "ch": "执", "zc": "正冲正冲戊辰", "ts": "门鸡栖外西南" }, "d0509": { "y": "祭祀.解除.破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲蛇", "s": "煞西", "ch": "破", "zc": "正冲正冲己巳", "ts": "碓磨床外西南" }, "d0510": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出行.拆卸.动土.上梁.出火.进人口.入宅.移徙.安床.栽种.纳畜.牧养.竖柱.安门.修造.解除.会亲友.", "j": "", "c": "生肖冲马", "s": "煞南", "ch": "危", "zc": "正冲正冲庚午", "ts": "厨灶碓外西南" }, "d0511": { "y": "开市.交易.立券.祭祀.祈福.开光.伐木.进人口.安床.拆卸.修造.动土.栽种.破土.移柩.安葬.", "j": "入宅.移徙.理发.出火.嫁娶.出行.", "c": "生肖冲羊", "s": "煞東", "ch": "成", "zc": "正冲正冲辛未", "ts": "仓库厕外西南" }, "d0512": { "y": "结网.解除.余事勿取.", "j": "诸事不宜.", "c": "生肖冲猴", "s": "煞北", "ch": "收", "zc": "正冲正冲壬申", "ts": "房床厕外正南" }, "d0513": { "y": "嫁娶.祭祀.祈福.求嗣.开光.开市.交易.立券.安床.出行.拆卸.", "j": "纳畜.入宅.移徙.安葬.探病.伐木.上梁.安门.入殓.动土.", "c": "生肖冲鸡", "s": "煞西", "ch": "开", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d0514": { "y": "嫁娶.祭祀.祈福.求嗣.出行.出火.拆卸.修造.动土.入宅.移徙.安床.作灶.塞穴.栽种.破土.安葬.", "j": "开光.掘井.开仓.", "c": "生肖冲狗", "s": "煞南", "ch": "闭", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d0515": { "y": "解除.扫舍.余事勿取.", "j": "诸事不宜.", "c": "生肖冲猪", "s": "煞東", "ch": "建", "zc": "正冲正冲乙亥", "ts": "厨灶床外正西" }, "d0516": { "y": "开市.交易.立券.挂匾.开光.出行.拆卸.进人口.入宅.移柩.动土.安门.上梁.栽种.破土.修坟.安葬.", "j": "嫁娶.安床.探病.作灶.", "c": "生肖冲鼠", "s": "煞北", "ch": "除", "zc": "正冲正冲丙子", "ts": "仓库碓外西北" }, "d0517": { "y": "进人口.会亲友.", "j": "塞穴.上梁.动土.伐木.安葬.词讼.", "c": "生肖冲牛", "s": "煞西", "ch": "满", "zc": "正冲正冲丁丑", "ts": "房床厕外西北" }, "d0518": { "y": "沐浴.平治道涂.扫舍.入殓.破土.安葬.除服.成服.", "j": "嫁娶.移徙.伐木.作梁.安床.祭祀.祈福.造屋.", "c": "生肖冲虎", "s": "煞南", "ch": "平", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d0519": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出火.出行.拆卸.动土.解除.进人口.开市.交易.立券.挂匾.入宅.移徙.安床.安门.上梁.安葬.破土.谢土.", "j": "", "c": "生肖冲兔", "s": "煞東", "ch": "定", "zc": "正冲正冲己卯", "ts": "占门炉外西北" }, "d0520": { "y": "祭祀.祈福.求嗣.开光.解除.合帐.冠笄.伐木.架马.作梁.修造.进人口.嫁娶.裁衣.合帐.安床.动土.起基.上梁.竖柱.放水.会亲友.", "j": "", "c": "生肖冲龙", "s": "煞北", "ch": "执", "zc": "正冲正冲庚辰", "ts": "厨灶栖外西北" }, "d0521": { "y": "破屋.坏垣.沐浴.解除.余事勿取.", "j": "诸事不宜.", "c": "生肖冲蛇", "s": "煞西", "ch": "破", "zc": "正冲正冲辛巳", "ts": "仓库床外西北" }, "d0522": { "y": "纳采.订盟.嫁娶.造车器.祭祀.祈福.求嗣.开光.出火.拆卸.修造.动土.进人口.挂匾.入宅.移徙.安床.栽种.入殓.破土.安葬.除服.成服.", "j": "开市.立券.", "c": "生肖冲马", "s": "煞南", "ch": "危", "zc": "正冲正冲壬午", "ts": "房床碓外正北" }, "d0523": { "y": "开市.交易.立券.祭祀.祈福.开光.动土.安床.出行.栽种.纳畜.牧养.竖柱.上梁.解除.破土.", "j": "嫁娶.掘井.入宅.移徙.安葬.", "c": "生肖冲羊", "s": "煞東", "ch": "成", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d0524": { "y": "解除.出行.纳采.冠笄.竖柱.上梁.移徙.作灶.进人口.入宅.纳畜.牧养.", "j": "祭祀.伐木.架马.安床.修造.动土.安葬.修坟.破土.", "c": "生肖冲猴", "s": "煞北", "ch": "收", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d0525": { "y": "祭祀.祈福.求嗣.开光.出行.开市.交易.立券.栽种.安床.纳畜.移徙.起基.动土.定磉.造仓.置产.破土.启攒.修坟.", "j": "入宅.移徙.修造.安门.伐木.入殓.安葬.造屋.", "c": "生肖冲鸡", "s": "煞西", "ch": "开", "zc": "正冲正冲乙酉", "ts": "厨灶门外正北" }, "d0526": { "y": "嫁娶.交易.立券.作厕.补垣.塞穴.畋猎.取渔.开生坟.", "j": "安床.开渠.上梁.修造.开市.开光.入宅.移徙.安床.", "c": "生肖冲狗", "s": "煞南", "ch": "闭", "zc": "正冲正冲丙戌", "ts": "仓库栖外正北" }, "d0528": { "y": "纳采.订盟.嫁娶.祭祀.祈福.求嗣.开光.解除.出行.出火.入宅.移徙.栽种.纳畜.牧养.动土.破土.入殓.安葬.", "j": "作灶.安床.开仓.造屋.动土.安葬.", "c": "生肖冲鼠", "s": "煞北", "ch": "除", "zc": "正冲正冲戊子", "ts": "占门碓房内北" }, "d0529": { "y": "开光.纳采.裁衣.冠笄.安床.作灶.进人口.造仓.塞穴.", "j": "嫁娶.栽种.修造.动土.出行.伐木.作梁.安葬.谢土.", "c": "生肖冲牛", "s": "煞西", "ch": "满", "zc": "正冲正冲己丑", "ts": "碓磨厕房内北" }, "d0530": { "y": "纳采.嫁娶.裁衣.理发.出行.修造.动土.进人口.开市.交易.立券.挂匾.移徙.上梁.栽种.纳畜.", "j": "伐木.安葬.安床.祭祀.祈福.", "c": "生肖冲虎", "s": "煞南", "ch": "平", "zc": "正冲正冲庚寅", "ts": "厨灶炉房内北" }, "d0531": { "y": "开市.交易.立券.挂匾.祭祀.祈福.斋醮.出行.开市.交易.立券.造屋.起基.修造.动土.定磉.安床.安机械.安葬.破土.启攒.除服.成服.立碑.", "j": "作灶.嫁娶.移徙.入宅.理发.", "c": "生肖冲兔", "s": "煞東", "ch": "定", "zc": "正冲正冲辛卯", "ts": "仓库门房内北" }, "d0617": { "y": "开市.交易.立券.纳财.栽种.安床.拆卸.修造.动土.上梁.入殓.安葬.破土.除服.成服.", "j": "嫁娶.出火.伐木.祭祀.入宅.移徙.纳畜.探病.", "c": "生肖冲猴", "s": "煞北", "ch": "成", "zc": "正冲正冲戊申", "ts": "占门炉外东北" }, "d0630": { "y": "祭祀.结网.余事勿取.", "j": "入宅.出行.掘井.安葬.", "c": "生肖冲鸡", "s": "煞西", "ch": "收", "zc": "正冲正冲辛酉", "ts": "仓库门外正南" }, "d0628": { "y": "祭祀.斋醮.塑绘.开光.出行.修造.动土.造畜椆栖.安床.放水.掘井.开池.作厕.结网.破土.", "j": "出火.入宅.", "c": "生肖冲羊", "s": "煞東", "ch": "危", "zc": "正冲正冲己未", "ts": "碓磨厕外东南" }, "d0728": { "y": "嫁娶.祭祀.出行.裁衣.冠笄.交易.雕刻.纳财.造畜椆栖.造车器.雕刻.教牛马.", "j": "移徙.入宅.栽种.动土.破土.作灶.安葬.行丧.伐木.上梁.", "c": "生肖冲牛", "s": "煞西", "ch": "建", "zc": "正冲正冲己丑", "ts": "碓磨厕房内北" }, "d0601": { "y": "嫁娶.纳采.订盟.祭祀.祈福.求嗣.开光.出火.出行.拆卸.动土.修造.进人口.入宅.移徙.安床.解除.挂匾.栽种.破土.谢土.入殓.移柩.安葬.", "j": "开市.立券.造船.合寿木.", "c": "生肖冲龙", "s": "煞北", "ch": "执", "zc": "正冲正冲壬辰", "ts": "房床栖房内南" }, "d0602": { "y": "祭祀.沐浴.解除.破屋.坏垣.余事勿取.", "j": "开光.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "破", "zc": "正冲正冲癸巳", "ts": "占门床房内南" }, "d0603": { "y": "订盟.纳采.嫁娶.解除.祭祀.祈福.求嗣.开光.出行.解除.出火.拆卸.入宅.移徙.安床.栽种.纳畜.动土.破土.谢土.安葬.修坟.", "j": "作灶.开市.经络.", "c": "生肖冲马", "s": "煞南", "ch": "危", "zc": "正冲正冲甲午", "ts": "占碓磨房内南" }, "d0604": { "y": "祭祀.祈福.求嗣.开光.订盟.纳采.解除.动土.起基.进人口.开市.交易.立券.纳财.造仓.开池.栽种.纳畜.破土.安葬.", "j": "安床.上梁.裁衣.入宅.嫁娶.", "c": "生肖冲羊", "s": "煞东", "ch": "成", "zc": "正冲正冲乙未", "ts": "厨灶厕房内南" }, "d0605": { "y": "开光.求医.治病.动土.上梁.入殓.破土.安葬.", "j": "嫁娶.开光.", "c": "生肖冲猴", "s": "煞北", "ch": "成", "zc": "正冲正冲丙申", "ts": "仓库炉房内南" }, "d0606": { "y": "祭祀.栽种.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鸡", "s": "煞西", "ch": "收", "zc": "正冲正冲丁酉", "ts": "房床门房内南" }, "d0607": { "y": "嫁娶.开光.祭祀.祈福.求嗣.出行.解除.伐木.入宅.移徙.安床.出火.拆卸.修造.上梁.栽种.移柩.", "j": "安葬.开市.交易.立券.", "c": "生肖冲狗", "s": "煞南", "ch": "开", "zc": "正冲正冲戊戌", "ts": "门鸡栖房内东" }, "d0608": { "y": "求嗣.嫁娶.纳采.合帐.裁衣.冠笄.伐木.作梁.修造.动土.起基.竖柱.上梁.安门.作灶.筑堤.造畜椆栖.", "j": "安葬.出行.祈福.栽种.", "c": "生肖冲猪", "s": "煞东", "ch": "闭", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d0609": { "y": "祭祀.解除.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鼠", "s": "煞北", "ch": "建", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d0610": { "y": "嫁娶.祭祀.祈福.出火.开光.求嗣.出行.拆卸.开市.交易.立券.挂匾.入宅.移徙.安床.栽种.动土.", "j": "安葬.行丧.伐木.作梁.", "c": "生肖冲牛", "s": "煞西", "ch": "除", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d0611": { "y": "开光.求嗣.出行.解除.伐木.出火.拆卸.修造.上梁.起基.入宅.移徙.开市.交易.立券.栽种.牧养.入殓.安葬.除服.成服.", "j": "置产.安床.", "c": "生肖冲虎", "s": "煞南", "ch": "满", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" }, "d0612": { "y": "祭祀.理发.修饰垣墙.平治道涂.沐浴.整手足甲.扫舍.", "j": "出行.安门.修造.嫁娶.上梁.入宅.", "c": "生肖冲兔", "s": "煞東", "ch": "平", "zc": "正冲正冲癸卯", "ts": "占大门外东北" }, "d0613": { "y": "嫁娶.祭祀.开光.祈福.求嗣.出行.出火.拆卸.动土.修造.进人口.入宅.移徙.安床.挂匾.交易.立券.栽种.纳畜.入殓.破土.启攒.安葬.", "j": "", "c": "生肖冲龙", "s": "煞北", "ch": "定", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d0614": { "y": "祭祀.祈福.求嗣.开光.出行.伐木.出火.拆卸.修造.动土.起基.安床.入宅.移徙.", "j": "嫁娶.开市.交易.行丧.安葬.修坟.", "c": "生肖冲蛇", "s": "煞西", "ch": "执", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d0615": { "y": "破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲马", "s": "煞南", "ch": "破", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d0616": { "y": "开市.交易.立券.纳财.开池.作厕.结网.祭祀.修造.动土.安床.放水.经络.破土.", "j": "嫁娶.造桥.词讼.移徙.安门.作灶.栽种.", "c": "生肖冲羊", "s": "煞東", "ch": "危", "zc": "正冲正冲丁未", "ts": "房床厕外东北" }, "d0618": { "y": "祭祀.作灶.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鸡", "s": "煞西", "ch": "收", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d0619": { "y": "解除.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲狗", "s": "煞南", "ch": "开", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d0620": { "y": "修造.动土.起基.安门.安床.栽种.筑堤.补垣.造畜椆栖.", "j": "嫁娶.掘井.入宅.移徙.出火.出行.行丧.安葬.开光.理发.进人口.", "c": "生肖冲猪", "s": "煞東", "ch": "闭", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d0621": { "y": "祭祀.教牛马.断蚁.余事勿取.", "j": "斋醮.移徙.入宅.动土.", "c": "生肖冲鼠", "s": "煞北", "ch": "建", "zc": "正冲正冲壬子", "ts": "房床碓外正东" }, "d0622": { "y": "纳采.订盟.嫁娶.祭祀.祈福.开市.纳财.立券.移徙.出行.修造.动土.起基.定磉.竖柱.拆卸.扫舍.放水.安香.安床.造船.开池.掘井.造畜椆栖.栽种.", "j": "行丧.安葬.破土.作灶.伐木.斋醮.", "c": "生肖冲牛", "s": "煞西", "ch": "除", "zc": "正冲正冲癸丑", "ts": "占门厕外正东" }, "d0623": { "y": "嫁娶.开光.祭祀.祈福.出行.解除.移徙.入宅.开市.纳财.起基.修造.竖柱.上梁.造屋.作灶.出火.安香.补垣.塞穴.拆卸.放水.扫舍.造仓.造船.栽种.安葬.", "j": "纳采.订盟.安床.谢土.破土.动土.", "c": "生肖冲虎", "s": "煞南", "ch": "满", "zc": "正冲正冲甲寅", "ts": "碓磨炉外东南" }, "d0624": { "y": "嫁娶.祭祀.理发.作灶.修饰垣墙.平治道涂.整手足甲.沐浴.冠笄.", "j": "破土.出行.栽种.", "c": "生肖冲兔", "s": "煞東", "ch": "平", "zc": "正冲正冲乙卯", "ts": "厨灶门外东南" }, "d0625": { "y": "嫁娶.纳采.订盟.祭祀.祈福.求嗣.开光.出火.出行.拆卸.修造.动土.进人口.入宅.移徙.安床.交易.立券.挂匾.纳财.入殓.安葬.启攒.除服.成服.", "j": "动土.掘井.破土.", "c": "生肖冲龙", "s": "煞北", "ch": "定", "zc": "正冲正冲丙辰", "ts": "仓库栖外东南" }, "d0626": { "y": "畋猎.捕捉.结网.取渔.祭祀.沐浴.余事勿取.", "j": "嫁娶.开市.安葬.启攒.行丧.", "c": "生肖冲蛇", "s": "煞西", "ch": "执", "zc": "正冲正冲丁巳", "ts": "占房床外东南" }, "d0629": { "y": "开市.交易.立券.挂匾.开光.解除.拆卸.动土.安床.修造.上梁.置产.栽种.破土.安葬.", "j": "作灶.出火.祭祀.嫁娶.入宅.", "c": "生肖冲猴", "s": "煞北", "ch": "成", "zc": "正冲正冲庚申", "ts": "厨灶炉外正南" }, "d0723": { "y": "开市.交易.立券.纳财.动土.开光.出行.嫁娶.纳采.订盟.出行.纳财.入学.开仓.出货财.纳畜.牧养.栽种.破土.启攒.安葬.立碑.", "j": "入宅.移徙.作灶.祭祀.谢土.", "c": "生肖冲猴", "s": "煞北", "ch": "危", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d0828": { "y": "破屋.坏垣.治病.余事勿取.", "j": "祈福.纳采.订盟.嫁娶.入宅.安葬.", "c": "生肖冲猴", "s": "煞北", "ch": "破", "zc": "正冲正冲庚申", "ts": "厨灶炉外正南" }, "d0701": { "y": "嫁娶.纳采.订盟.冠笄.造车器.祭祀.开光.祈福.求嗣.出行.解除.伐木.出火.入宅.拆卸.修造.动土.上梁.安床.栽种.破土.", "j": "行丧.置产.入宅.安葬.", "c": "生肖冲狗", "s": "煞南", "ch": "开", "zc": "正冲正冲壬戌", "ts": "房床栖外正南" }, "d0702": { "y": "嫁娶.合帐.裁衣.冠笄.伐木.上梁.出火.拆卸.移徙.修造.动土.安门.纳财.筑堤.栽种.塞穴.", "j": "安床.祈福.出行.安葬.行丧.开光.", "c": "生肖冲猪", "s": "煞東", "ch": "闭", "zc": "正冲正冲癸亥", "ts": "占门床外正南" }, "d0703": { "y": "出行.教牛马.割蜜.余事勿取.", "j": "斋醮.造屋.动土.破土.", "c": "生肖冲鼠", "s": "煞北", "ch": "建", "zc": "正冲正冲甲子", "ts": "占碓磨外正南" }, "d0704": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出行.解除.出火.拆卸.修造.进人口.入宅.移徙.动土.安床.纳畜.栽种.纳财.交易.立券.挂匾.造畜椆栖.", "j": "安葬.开生坟.合寿木.行丧.", "c": "生肖冲牛", "s": "煞西", "ch": "除", "zc": "正冲正冲乙丑", "ts": "厨灶厕外西南" }, "d0705": { "y": "安机械.祭祀.祈福.求嗣.沐浴.解除.纳采.开市.修造.竖柱.上梁.开柱眼.安碓硙.归岫.补垣.塞穴.拆卸.放水.出火.扫舍.开生坟.合寿木.安葬.谢土.启攒.除服.成服.", "j": "嫁娶.安床.作灶.动土.破土.造船.", "c": "生肖冲虎", "s": "煞南", "ch": "满", "zc": "正冲正冲丙寅", "ts": "仓库炉外西南" }, "d0706": { "y": "祭祀.沐浴.理发.整手足甲.修饰垣墙.平治道涂.余事勿取.", "j": "开市.入宅.出行.修造.词讼.", "c": "生肖冲兔", "s": "煞東", "ch": "平", "zc": "正冲正冲丁卯", "ts": "房床门外西南" }, "d0707": { "y": "嫁娶.祭祀.裁衣.结网.冠笄.沐浴.", "j": "开仓.出货财.置产.安葬.动土.破土.掘井.栽种.", "c": "生肖冲龙", "s": "煞北", "ch": "平", "zc": "正冲正冲戊辰", "ts": "门鸡栖外西南" }, "d0708": { "y": "入宅.移徙.安床.开光.祈福.求嗣.进人口.开市.交易.立券.出火.拆卸.修造.动土.", "j": "嫁娶.破土.置产.栽种.安葬.修坟.行丧.", "c": "生肖冲蛇", "s": "煞西", "ch": "定", "zc": "正冲正冲己巳", "ts": "碓磨床外西南" }, "d0709": { "y": "祭祀.解除.沐浴.整手足甲.入殓.移柩.破土.启攒.安葬.", "j": "嫁娶.入宅.移徙.作灶.开市.交易.安门.栽种.", "c": "生肖冲马", "s": "煞南", "ch": "执", "zc": "正冲正冲庚午", "ts": "厨灶碓外西南" }, "d0710": { "y": "破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲羊", "s": "煞東", "ch": "破", "zc": "正冲正冲辛未", "ts": "仓库厕外西南" }, "d0711": { "y": "嫁娶.开光.出行.理发.作梁.出火.拆卸.修造.开市.交易.立券.挂匾.动土.入宅.移徙.安床.栽种.", "j": "伐木.祭祀.纳畜.祭祀.", "c": "生肖冲猴", "s": "煞北", "ch": "危", "zc": "正冲正冲壬申", "ts": "房床厕外正南" }, "d0712": { "y": "嫁娶.开光.出行.祈福.求嗣.解除.拆卸.动土.修造.进人口.开市.交易.立券.挂匾.入宅.移徙.安床.栽种.纳畜.入殓.移柩.安葬.", "j": "", "c": "生肖冲鸡", "s": "煞西", "ch": "成", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d0713": { "y": "祭祀.作灶.纳财.栽种.纳畜.进人口.", "j": "安葬.经络.修坟.破土.开市.安床.启攒.立碑.", "c": "生肖冲狗", "s": "煞南", "ch": "收", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d0714": { "y": "祭祀.祈福.求嗣.开光.开市.牧养.理发.", "j": "嫁娶.出行.安葬.入殓.入宅.作灶.冠笄.上梁.", "c": "生肖冲猪", "s": "煞東", "ch": "开", "zc": "正冲正冲乙亥", "ts": "厨灶床外正西" }, "d0715": { "y": "祭祀.入殓.破土.除服.成服.移柩.启攒.安葬.谢土.余事勿取.", "j": "余事勿取.", "c": "生肖冲鼠", "s": "煞北", "ch": "闭", "zc": "正冲正冲丙子", "ts": "仓库碓外西北" }, "d0716": { "y": "祭祀.出行.交易.割蜜.造畜椆栖.", "j": "嫁娶.作灶.安葬.动土.词讼.作梁.伐木.掘井.破土.移徙.", "c": "生肖冲牛", "s": "煞西", "ch": "建", "zc": "正冲正冲丁丑", "ts": "房床厕外西北" }, "d0717": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出火.拆卸.修造.动土.进人口.开市.交易.立券.挂匾.入宅.移徙.栽种.纳畜.入殓.启攒.除服.成服.", "j": "", "c": "生肖冲虎", "s": "煞南", "ch": "除", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d0718": { "y": "嫁娶.开光.解除.安床.牧养.理发.开市.入殓.启攒.移柩.安葬.扫舍.", "j": "作灶.动土.上梁.栽种.入宅.移徙.修造.祈福.", "c": "生肖冲兔", "s": "煞東", "ch": "满", "zc": "正冲正冲己卯", "ts": "占门炉外西北" }, "d0719": { "y": "祭祀.解除.余事勿取.", "j": "诸事不宜.", "c": "生肖冲龙", "s": "煞北", "ch": "平", "zc": "正冲正冲庚辰", "ts": "厨灶栖外西北" }, "d0720": { "y": "祭祀.祈福.求嗣.开光.伐木.出火.拆卸.入宅.安床.修造.动土.上梁.挂匾.纳畜.", "j": "嫁娶.栽种.行丧.理发.修坟.行丧.作灶.", "c": "生肖冲蛇", "s": "煞西", "ch": "定", "zc": "正冲正冲辛巳", "ts": "仓库床外西北" }, "d0721": { "y": "解除.祭祀.理发.入殓.安葬.破土.", "j": "嫁娶.开市.出火.作灶.置产.斋醮.入宅.移徙.安门.", "c": "生肖冲马", "s": "煞南", "ch": "执", "zc": "正冲正冲壬午", "ts": "房床碓外正北" }, "d0722": { "y": "破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲羊", "s": "煞東", "ch": "破", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d0724": { "y": "嫁娶.纳采.订盟.祭祀.祈福.求嗣.开光.出火.出行.拆卸.修造.动土.进人口.开市.交易.立券.挂匾.入宅.移徙.安床.栽种.入殓.破土.谢土.安葬.", "j": "掘井.伐木.纳畜.合寿木.", "c": "生肖冲鸡", "s": "煞西", "ch": "成", "zc": "正冲正冲乙酉", "ts": "厨灶门外正北" }, "d0725": { "y": "祭祀.冠笄.作灶.交易.纳财.栽种.结网.纳畜.牧养.进人口.", "j": "开渠.造船.安床.安葬.破土.出行.修坟.掘井.开市.开生坟.", "c": "生肖冲狗", "s": "煞南", "ch": "收", "zc": "正冲正冲丙戌", "ts": "仓库栖外正北" }, "d0726": { "y": "嫁娶.纳采.订盟.祭祀.祈福.求嗣.纳采.裁衣.冠笄.开光.安床.作梁.修造.动土.作灶.起基.上梁.造屋.纳畜.牧养.", "j": "移徙.栽种.出行.行丧.破土.安葬.词讼.", "c": "生肖冲猪", "s": "煞東", "ch": "开", "zc": "正冲正冲丁亥", "ts": "占房床房内北" }, "d0727": { "y": "经络.祭祀.沐浴.补垣.塞穴.除服.成服.移柩.入殓.启攒.立碑.", "j": "开光.治病.嫁娶.掘井.破土.安葬.", "c": "生肖冲鼠", "s": "煞北", "ch": "闭", "zc": "正冲正冲戊子", "ts": "占门碓房内北" }, "d0729": { "y": "修造.动土.安机械.祭祀.沐浴.解除.拆卸.治病.作灶.造屋.起基.开池.扫舍.造畜椆栖.开生坟.合寿木.安葬.破土.启攒.移柩.入殓.立碑.", "j": "开市.入宅.出行.安床.作灶.", "c": "生肖冲虎", "s": "煞南", "ch": "除", "zc": "正冲正冲庚寅", "ts": "厨灶炉房内北" }, "d0730": { "y": "嫁娶.纳采.订盟.造车器.开光.出行.拆卸.起基.安床.除服.成服.开市.交易.立券.栽种.牧养.入殓.移柩.启攒.", "j": "上梁.入宅.修造.动土.破土.祭祀.祈福.斋醮.", "c": "生肖冲兔", "s": "煞東", "ch": "满", "zc": "正冲正冲辛卯", "ts": "仓库门房内北" }, "d0731": { "y": "祭祀.嫁娶.畋猎.结网.", "j": "动土.破土.治病.开渠.", "c": "生肖冲龙", "s": "煞北", "ch": "平", "zc": "正冲正冲壬辰", "ts": "房床栖房内南" }, "d0818": { "y": "嫁娶.出火.拆卸.祭祀.祈福.开光.伐木.动土.开市.交易.立券.入宅.移徙.安床.纳畜.入殓.安葬.", "j": "栽种.作灶.针灸.出行.", "c": "生肖冲狗", "s": "煞南", "ch": "成", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d0829": { "y": "嫁娶.开光.祭祀.祈福.求嗣.安香.出火.解除.伐木.入宅.移徙.安床.开市.交易.立券.栽种.出火.出行.安葬.", "j": "掘井.理发.作灶.动土.破土.开池.", "c": "生肖冲鸡", "s": "煞西", "ch": "危", "zc": "正冲正冲辛酉", "ts": "仓库门外正南" }, "d0831": { "y": "嫁娶.祭祀.祈福.求嗣.裁衣.冠笄.经络.修造.进人口.安床.动土.竖柱.上梁.移徙.交易.立券.栽种.会亲友.", "j": "行丧.安葬.出行.作梁.纳畜.伐木.造桥.", "c": "生肖冲猪", "s": "煞東", "ch": "收", "zc": "正冲正冲癸亥", "ts": "占门床外正南" }, "d0823": { "y": "祭祀.解除.拆卸.修造.动土.起基.上梁.安床.安门.开渠.开池.入殓.破土.启攒.", "j": "嫁娶.出行.进人口.作灶.入宅.移徙.栽种.赴任.", "c": "生肖冲兔", "s": "煞東", "ch": "除", "zc": "正冲正冲乙卯", "ts": "厨灶门外东南" }, "d0923": { "y": "嫁娶.纳采.订盟.祭祀.开光.出行.理发.作梁.出火.拆卸.修造.动土.进人口.入宅.移徙.安床.移徙.拆卸.挂匾.栽种.纳畜.破土.安葬.入殓.除服.成服.", "j": "开市.掘井.开渠.造桥.造船.", "c": "生肖冲狗", "s": "煞南", "ch": "危", "zc": "正冲正冲丙戌", "ts": "仓库栖外正北" }, "d0801": { "y": "纳采.订盟.会亲友.入学.祭祀.祈福.求嗣.开光.出行.解除.理发.动土.起基.开市.交易.立券.纳财.造仓.栽种.纳畜.牧养.", "j": "嫁娶.作灶.出火.置产.嫁娶.入宅.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "定", "zc": "正冲正冲癸巳", "ts": "占门床房内南" }, "d0802": { "y": "祭祀.祈福.解除.整手足甲.安床.沐浴.入殓.移柩.破土.启攒.安葬.谢土.", "j": "嫁娶.斋醮.开市.出火.入宅.移徙.出行.作灶.安门.伐木.", "c": "生肖冲马", "s": "煞南", "ch": "执", "zc": "正冲正冲甲午", "ts": "占碓磨房内南" }, "d0803": { "y": "破屋.坏垣.解除.余事勿取.", "j": "嫁娶.安葬.", "c": "生肖冲羊", "s": "煞東", "ch": "破", "zc": "正冲正冲乙未", "ts": "厨灶厕房内南" }, "d0804": { "y": "嫁娶.开市.立券.移徙.入宅.安机械.会亲友.经络.安门.安床.挂匾.拆卸.开仓.出货财.开池.栽种.纳畜.牧养.破土.安葬.启攒.移柩.入殓.立碑.", "j": "祭祀.祈福.探病.谢土.造桥.", "c": "生肖冲猴", "s": "煞北", "ch": "危", "zc": "正冲正冲丙申", "ts": "仓库炉房内南" }, "d0805": { "y": "嫁娶.订盟.纳采.祭祀.祈福.斋醮.开光.会亲友.求医.治病.造屋.起基.竖柱.上梁.安门.安碓硙.筑堤.开池.破土.安葬.除服.成服.", "j": "入宅.开市.掘井.词讼.合寿木.", "c": "生肖冲鸡", "s": "煞西", "ch": "成", "zc": "正冲正冲丁酉", "ts": "房床门房内南" }, "d0806": { "y": "纳采.订盟.嫁娶.移徙.入宅.出行.祭祀.祈福.斋醮.塑绘.开光.安香.出火.会亲友.解除.入学.竖柱.上梁.拆卸.造屋.起基.栽种.牧养.纳畜.", "j": "安葬.破土.开市.开仓.出货财.启攒.", "c": "生肖冲狗", "s": "煞南", "ch": "收", "zc": "正冲正冲戊戌", "ts": "门鸡栖房内东" }, "d0807": { "y": "订盟.纳采.祭祀.祈福.安机械.作灶.纳畜.", "j": "动土.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "收", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d0808": { "y": "嫁娶.祭祀.祈福.求嗣.出行.动土.安床.掘井.破土.启攒.", "j": "入宅.作梁.安门.伐木.修造.上梁.入殓.造屋.", "c": "生肖冲鼠", "s": "煞北", "ch": "开", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d0809": { "y": "嫁娶.祭祀.祈福.求嗣.出行.出火.拆卸.修造.移徙.动土.安床.入殓.破土.安葬.启攒.", "j": "造屋.开光.理发.造船.掘井.作灶.", "c": "生肖冲牛", "s": "煞西", "ch": "闭", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d0810": { "y": "祭祀.祈福.求嗣.开光.出行.解除.上梁.造屋.移徙.安门.纳财.牧养.纳畜.安葬.启攒.入殓.", "j": "破土.置产.掘井.动土.安床.", "c": "生肖冲虎", "s": "煞南", "ch": "建", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" }, "d0811": { "y": "祭祀.解除.沐浴.理发.整手足甲.入殓.移柩.破土.安葬.扫舍.", "j": "嫁娶.会亲友.进人口.出行.入宅.移徙.赴任.作灶.", "c": "生肖冲兔", "s": "煞東", "ch": "除", "zc": "正冲正冲癸卯", "ts": "占大门外东北" }, "d0812": { "y": "塑绘.开光.进人口.纳畜.补垣.塞穴.栽种.牧养.", "j": "嫁娶.纳财.祈福.安葬.修造.开市.交易.立券.动土.上梁.", "c": "生肖冲龙", "s": "煞北", "ch": "满", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d0813": { "y": "祭祀.作灶.沐浴.修饰垣墙.平治道涂.余事勿取.", "j": "诸事不宜.", "c": "生肖冲蛇", "s": "煞西", "ch": "平", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d0814": { "y": "祭祀.求嗣.开光.出行.伐木.作梁.出火.解除.拆卸.进人口.修造.动土.起基.安床.栽种.纳畜.入殓.破土.安葬.除服.成服.", "j": "嫁娶.移徙.", "c": "生肖冲马", "s": "煞南", "ch": "定", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d0815": { "y": "祭祀.求医.捕捉.栽种.塞穴.入殓.破土.安葬.移柩.余事勿取.", "j": "诸事不宜.", "c": "生肖冲羊", "s": "煞東", "ch": "执", "zc": "正冲正冲丁未", "ts": "房床厕外东北" }, "d0816": { "y": "破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲猴", "s": "煞北", "ch": "破", "zc": "正冲正冲戊申", "ts": "占门炉外东北" }, "d0817": { "y": "祭祀.结网.入殓.移柩.启攒.安葬.移柩.除服.成服.合寿木.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鸡", "s": "煞西", "ch": "危", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d0819": { "y": "祭祀.开光.解除.移徙.裁衣.开市.立券.祈福.求嗣.进人口.交易.纳财.纳畜.", "j": "动土.破土.理发.出行.入宅.分居.安香.出火.", "c": "生肖冲猪", "s": "煞東", "ch": "收", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d0820": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出行.解除.安床.栽种.移柩.进人口.会亲友.除服.成服.", "j": "造屋.入殓.安葬.伐木.入宅.移徙.置产.纳畜.", "c": "生肖冲鼠", "s": "煞北", "ch": "开", "zc": "正冲正冲壬子", "ts": "房床碓外正东" }, "d0821": { "y": "祭祀.动土.筑堤.开池.会亲友.塞穴.入殓.移柩.破土.安葬.", "j": "开光.出行.修造.上梁.入宅.安门.作灶.裁衣.", "c": "生肖冲牛", "s": "煞西", "ch": "闭", "zc": "正冲正冲癸丑", "ts": "占门厕外正东" }, "d0822": { "y": "祭祀.裁衣.安门.纳财.扫舍.出行.进人口.作灶.纳畜.造畜椆栖.", "j": "安床.动土.安葬.开生坟.合寿木.", "c": "生肖冲虎", "s": "煞南", "ch": "建", "zc": "正冲正冲甲寅", "ts": "碓磨炉外东南" }, "d0824": { "y": "纳采.订盟.开光.出行.解除.安香.出火.拆卸.入宅.移徙.修造.上梁.安床.栽种.纳畜.会亲友.安机械.经络.", "j": "伐木.谢土.行丧.祭祀.作灶.动土.破土.安葬.祈福.", "c": "生肖冲龙", "s": "煞北", "ch": "满", "zc": "正冲正冲丙辰", "ts": "仓库栖外东南" }, "d0825": { "y": "修饰垣墙.平治道涂.祭祀.沐浴.作灶.", "j": "嫁娶.词讼.治病.置产.作梁.祈福.安葬.栽种.伐木.安门.", "c": "生肖冲蛇", "s": "煞西", "ch": "平", "zc": "正冲正冲丁巳", "ts": "占房床外东南" }, "d0826": { "y": "嫁娶.祭祀.祈福.求嗣.出火.出行.开光.解除.拆卸.修造.进人口.安香.交易.立券.入宅.移徙.安床.动土.破土.谢土.安葬.入殓.除服.成服.", "j": "斋醮.开市.开仓.作灶.造船.", "c": "生肖冲马", "s": "煞南", "ch": "定", "zc": "正冲正冲戊午", "ts": "占门碓外东南" }, "d0827": { "y": "破土.安葬.移柩.入殓.祭祀.捕捉.除服.成服.余事勿取.", "j": "嫁娶.入宅.开市.交易.", "c": "生肖冲羊", "s": "煞東", "ch": "执", "zc": "正冲正冲己未", "ts": "碓磨厕外东南" }, "d0830": { "y": "安机械.纳采.订盟.祭祀.祈福.求嗣.开光.普渡.出行.出火.拆卸.修造.动土.进人口.开市.交易.立券.移徙.安床.栽种.上梁.纳畜.破土.移柩.安葬.", "j": "入宅.嫁娶.掘井.牧养.", "c": "生肖冲狗", "s": "煞南", "ch": "成", "zc": "正冲正冲壬戌", "ts": "房床栖外正南" }, "d0930": { "y": "纳采.订盟.开市.交易.立券.挂匾.纳财.栽种.进人口.入宅.移徙.安床.开光.出火.拆卸.安门.修造.", "j": "斋醮.嫁娶.行丧.动土.作灶.安葬.破土.", "c": "生肖冲蛇", "s": "煞西", "ch": "满", "zc": "正冲正冲癸巳", "ts": "占门床房内南" }, "d0922": { "y": "祭祀.治病.破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鸡", "s": "煞西", "ch": "破", "zc": "正冲正冲乙酉", "ts": "厨灶门外正北" }, "d0929": { "y": "嫁娶.纳采.祭祀.解除.出行.修造.动土.开市.上梁.安床.整手足甲.扫舍.求医.治病.起基.定磉.造屋.合脊.", "j": "造庙.行丧.安葬.伐木.作灶.造船.", "c": "生肖冲龙", "s": "煞北", "ch": "除", "zc": "正冲正冲壬辰", "ts": "房床栖房内南" }, "d0928": { "y": "祭祀.出行.沐浴.扫舍.安葬.余事勿取.", "j": "动土.破土.置产.掘井.", "c": "生肖冲兔", "s": "煞東", "ch": "建", "zc": "正冲正冲辛卯", "ts": "仓库门房内北" }, "d0912": { "y": "开市.交易.立券.挂匾.祭祀.开光.进人口.入宅.安床.出火.拆卸.修造.动土.栽种.", "j": "嫁娶.立碑.出行.伐木.安葬.行丧.移徙.纳畜.", "c": "生肖冲猪", "s": "煞東", "ch": "成", "zc": "正冲正冲乙亥", "ts": "厨灶床外正西" }, "d0920": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出行.出火.拆卸.修造.动土.进人口.入宅.移徙.安床.开市.交易.立券.挂匾.栽种.纳畜.入殓.安葬.除服.成服.", "j": "", "c": "生肖冲羊", "s": "煞東", "ch": "定", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d0910": { "y": "破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鸡", "s": "煞西", "ch": "破", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d1029": { "y": "祭祀.沐浴.破屋.坏垣.余事勿取.", "j": "嫁娶.入宅.上梁.出行.安葬.", "c": "生肖冲狗", "s": "煞南", "ch": "破", "zc": "正冲正冲壬戌", "ts": "房床栖外正南" }, "d0901": { "y": "嫁娶.纳采.订盟.开光.祭祀.出行.理发.动土.安床.放水.开渠.栽种.进人口.", "j": "入宅.上梁.入殓.造屋.探病.作灶.安门.安葬.纳畜.伐木.", "c": "生肖冲鼠", "s": "煞北", "ch": "开", "zc": "正冲正冲甲子", "ts": "占碓磨外正南" }, "d0902": { "y": "祭祀.出行.作梁.出火.拆卸.修造.动土.起基.安床.补垣.塞穴.入殓.破土.安葬.移柩.造畜椆栖.", "j": "嫁娶.入宅.斋醮.开光.针灸.掘井.", "c": "生肖冲牛", "s": "煞西", "ch": "闭", "zc": "正冲正冲乙丑", "ts": "厨灶厕外西南" }, "d0903": { "y": "嫁娶.纳采.订盟.祭祀.祈福.求嗣.出行.解除.竖柱.入宅.移徙.纳财.上梁.纳畜.入殓.安葬.启攒.", "j": "栽种.掘井.动土.安床.破土.置产.", "c": "生肖冲虎", "s": "煞南", "ch": "建", "zc": "正冲正冲丙寅", "ts": "仓库炉外西南" }, "d0904": { "y": "解除.祭祀.祈福.求嗣.修造.动土.竖柱.上梁.安床.纳畜.造屋.合脊.起基.入殓.破土.安葬.", "j": "出火.嫁娶.开光.进人口.出行.词讼.开市.入宅.移徙.赴任.", "c": "生肖冲兔", "s": "煞東", "ch": "除", "zc": "正冲正冲丁卯", "ts": "房床门外西南" }, "d0905": { "y": "沐浴.理发.会亲友.塑绘.开光.栽种.牧养.嫁娶.经络.补垣.塞穴.", "j": "开市.入宅.动土.破土.安葬.作灶.上梁.安床.开仓.祈福.", "c": "生肖冲龙", "s": "煞北", "ch": "满", "zc": "正冲正冲戊辰", "ts": "门鸡栖外西南" }, "d0906": { "y": "祭祀.理发.作灶.沐浴.修饰垣墙.平治道涂.", "j": "嫁娶.栽种.祈福.造桥.安葬.安门.伐木.作梁.", "c": "生肖冲蛇", "s": "煞西", "ch": "平", "zc": "正冲正冲己巳", "ts": "碓磨床外西南" }, "d0907": { "y": "沐浴.入殓.移柩.除服.成服.破土.平治道涂.", "j": "嫁娶.移徙.入宅.开市.", "c": "生肖冲马", "s": "煞南", "ch": "平", "zc": "正冲正冲庚午", "ts": "厨灶碓外西南" }, "d0908": { "y": "嫁娶.祭祀.祈福.求嗣.沐浴.出火.出行.拆卸.修造.动土.进人口.开市.交易.立券.入宅.移徙.安床.栽种.纳畜.入殓.安葬.启攒.除服.成服.", "j": "", "c": "生肖冲羊", "s": "煞東", "ch": "定", "zc": "正冲正冲辛未", "ts": "仓库厕外西南" }, "d0909": { "y": "开光.解除.起基.动土.拆卸.上梁.立碑.修坟.安葬.破土.启攒.移柩.", "j": "嫁娶.出行.安床.作灶.祭祀.入宅.移徙.出火.进人口.置产.", "c": "生肖冲猴", "s": "煞北", "ch": "执", "zc": "正冲正冲壬申", "ts": "房床厕外正南" }, "d0911": { "y": "嫁娶.祈福.求嗣.出行.出火.拆卸.修造.动土.上梁.开光.进人口.开市.交易.立券.挂匾.安床.入宅.移徙.栽种.伐木.入殓.破土.除服.成服.", "j": "", "c": "生肖冲狗", "s": "煞南", "ch": "危", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d0913": { "y": "祭祀.理发.会亲友.进人口.嫁娶.针灸.入殓.移柩.", "j": "探病.开渠.安葬.伐木.作灶.入宅.", "c": "生肖冲鼠", "s": "煞北", "ch": "收", "zc": "正冲正冲丙子", "ts": "仓库碓外西北" }, "d0914": { "y": "祭祀.立碑.修坟.启攒.除服.成服.余事勿取.", "j": "余事勿取.", "c": "生肖冲牛", "s": "煞西", "ch": "开", "zc": "正冲正冲丁丑", "ts": "房床厕外西北" }, "d0915": { "y": "嫁娶.出行.伐木.拆卸.修造.动土.移徙.安葬.破土.修坟.立碑.", "j": "掘井.祈福.安床.开市.入宅.挂匾.开光.", "c": "生肖冲虎", "s": "煞南", "ch": "闭", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d0916": { "y": "祭祀.出行.扫舍.余事勿取.", "j": "诸事不宜.", "c": "生肖冲兔", "s": "煞東", "ch": "建", "zc": "正冲正冲己卯", "ts": "占门炉外西北" }, "d0917": { "y": "嫁娶.祭祀.塑绘.开光.出行.解除.理发.整手足甲.动土.安床.开池.放水.扫舍.", "j": "伐木.行丧.作灶.作梁.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "除", "zc": "正冲正冲庚辰", "ts": "厨灶栖外西北" }, "d0918": { "y": "开市.交易.立券.挂匾.开光.出行.入宅.移徙.安床.出火.上梁.", "j": "作灶.行丧.理发.乘船.嫁娶.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "满", "zc": "正冲正冲辛巳", "ts": "仓库床外西北" }, "d0919": { "y": "祭祀.沐浴.修饰垣墙.平治道涂.余事勿取.", "j": "诸事不宜.", "c": "生肖冲马", "s": "煞南", "ch": "平", "zc": "正冲正冲壬午", "ts": "房床碓外正北" }, "d0921": { "y": "解除.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲猴", "s": "煞北", "ch": "执", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d0924": { "y": "开市.交易.立券.纳财.挂匾.栽种.祭祀.祈福.开光.拆卸.动土.安床.", "j": "嫁娶.破土.进人口.出行.入宅.移徙.出火.纳畜.词讼.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "成", "zc": "正冲正冲丁亥", "ts": "占房床房内北" }, "d0925": { "y": "嫁娶.祭祀.理发.进人口.作灶.移柩.冠笄.会亲友.", "j": "开仓.出货财.伐木.纳畜.开市.上梁.造屋.破土.启攒.栽种.", "c": "生肖冲鼠", "s": "煞北", "ch": "收", "zc": "正冲正冲戊子", "ts": "占门碓房内北" }, "d0926": { "y": "祭祀.修坟.除服.成服.启攒.移柩.余事勿取.", "j": "开市.入宅.嫁娶.动土.破土.安葬.", "c": "生肖冲牛", "s": "煞西", "ch": "开", "zc": "正冲正冲己丑", "ts": "碓磨厕房内北" }, "d0927": { "y": "嫁娶.冠笄.安机械.解除.纳畜.牧养.沐浴.伐木.架马.作梁.安门.扫舍.合寿木.安葬.启攒.立碑.修坟.", "j": "祈福.开光.开市.入宅.动土.", "c": "生肖冲虎", "s": "煞南", "ch": "闭", "zc": "正冲正冲庚寅", "ts": "厨灶炉房内北" }, "d1027": { "y": "入殓.破土.启攒.安葬.除服.成服.余事勿取.", "j": "开市.入宅.祭祀.置产.补垣.塞穴.", "c": "生肖冲猴", "s": "煞北", "ch": "定", "zc": "正冲正冲庚申", "ts": "厨灶炉外正南" }, "d1025": { "y": "纳采.订盟.会亲友.沐浴.理发.裁衣.冠笄.安床.除服.成服.启攒.移柩.安葬.会亲友.开生坟.", "j": "开市.入宅.出行.嫁娶.修坟.祈福.动土.入宅.安门.谢土.上梁.", "c": "生肖冲马", "s": "煞南", "ch": "满", "zc": "正冲正冲戊午", "ts": "占门碓外东南" }, "d1125": { "y": "祭祀.祈福.求嗣.开光.解除.伐木.拆卸.修造.栽种.纳畜.安葬.修坟.立碑.", "j": "嫁娶.进人口.入宅.移徙.出火.出行.", "c": "生肖冲牛", "s": "煞西", "ch": "成", "zc": "正冲正冲己丑", "ts": "碓磨厕房内北" }, "d1001": { "y": "祭祀.沐浴.修饰垣墙.平治道涂.余事勿取.", "j": "嫁娶.入宅.安床.出行.", "c": "生肖冲马", "s": "煞南", "ch": "平", "zc": "正冲正冲甲午", "ts": "占碓磨房内南" }, "d1002": { "y": "开光.祈福.求嗣.斋醮.修造.动土.纳财.造仓.作厕.栽种.牧养.会亲友.", "j": "作灶.出火.进人口.开渠.入宅.移徙.祭祀.", "c": "生肖冲羊", "s": "煞東", "ch": "定", "zc": "正冲正冲乙未", "ts": "厨灶厕房内南" }, "d1003": { "y": "开光.解除.拆卸.修造.动土.竖柱.安门.牧养.安葬.修坟.破土.移柩.", "j": "出火.入宅.移徙.祈福.祭祀.安床.开市.嫁娶.探病.", "c": "生肖冲猴", "s": "煞北", "ch": "执", "zc": "正冲正冲丙申", "ts": "仓库炉房内南" }, "d1004": { "y": "破屋.坏垣.求医.治病.余事勿取.", "j": "移徙.入宅.", "c": "生肖冲鸡", "s": "煞西", "ch": "破", "zc": "正冲正冲丁酉", "ts": "房床门房内南" }, "d1005": { "y": "嫁娶.纳采.订盟.祭祀.祈福.求嗣.开光.出行.出火.拆卸.修造.动土.进人口.入宅.移徙.安床.上梁.合脊.放水.掘井.破土.移柩.谢土.除服.成服.", "j": "开市.开仓.安门.安葬.", "c": "生肖冲狗", "s": "煞南", "ch": "危", "zc": "正冲正冲戊戌", "ts": "门鸡栖房内东" }, "d1006": { "y": "嫁娶.纳采.订盟.祭祀.祈福.求嗣.开光.解除.进人口.入宅.移徙.出火.安床.开市.交易.立券.挂匾.", "j": "安葬.纳畜.出行.行丧.伐木.栽种.造庙.造桥.", "c": "生肖冲猪", "s": "煞東", "ch": "成", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d1007": { "y": "祭祀.冠笄.捕捉.余事勿取.", "j": "嫁娶.开市.造屋.作梁.合寿木.", "c": "生肖冲鼠", "s": "煞北", "ch": "收", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d1008": { "y": "祭祀.塞穴.余事勿取.", "j": "诸事不宜.", "c": "生肖冲牛", "s": "煞西", "ch": "收", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d1009": { "y": "祭祀.祈福.求嗣.开光.开市.出行.解除.动土.起基.置产.栽种.", "j": "嫁娶.作灶.修坟.安门.入宅.立碑.安葬.安床.", "c": "生肖冲虎", "s": "煞南", "ch": "开", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" }, "d1010": { "y": "祭祀.解除.裁衣.理发.安床.作灶.造畜椆栖.放水.筑堤.补垣.塞穴.整手足甲.扫舍.", "j": "嫁娶.开光.会亲友.掘井.安门.栽种.", "c": "生肖冲兔", "s": "煞東", "ch": "闭", "zc": "正冲正冲癸卯", "ts": "占大门外东北" }, "d1011": { "y": "祭祀.出行.裁衣.冠笄.会亲友.造畜椆栖.嫁娶.竖柱.上梁.移徙.纳财.纳畜.", "j": "动土.伐木.作梁.行丧.安葬.开生坟.", "c": "生肖冲龙", "s": "煞北", "ch": "建", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d1012": { "y": "祭祀.祈福.求嗣.开光.出行.解除.移徙.伐木.安床.纳畜.出火.拆卸.", "j": "安葬.修坟.作灶.破土.造庙.动土.嫁娶.纳采.", "c": "生肖冲蛇", "s": "煞西", "ch": "除", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d1013": { "y": "开市.交易.立券.纳财.会亲友.开光.理发.入殓.移柩.安葬.启攒.", "j": "嫁娶.作灶.出火.出行.入宅.移徙.安床.祈福.上梁.", "c": "生肖冲马", "s": "煞南", "ch": "满", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d1014": { "y": "造畜椆栖.平治道涂.余事勿取.", "j": "诸事不宜.", "c": "生肖冲羊", "s": "煞東", "ch": "平", "zc": "正冲正冲丁未", "ts": "房床厕外东北" }, "d1015": { "y": "入殓.破土.安葬.启攒.除服.成服.余事勿取.", "j": "余事勿取.", "c": "生肖冲猴", "s": "煞北", "ch": "定", "zc": "正冲正冲戊申", "ts": "占门炉外东北" }, "d1016": { "y": "祭祀.入殓.移柩.开生坟.破土.启攒.安葬.除服.成服.余事勿取.", "j": "余事勿取.", "c": "生肖冲鸡", "s": "煞西", "ch": "执", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d1017": { "y": "祭祀.解除.破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲狗", "s": "煞南", "ch": "破", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d1018": { "y": "嫁娶.求嗣.纳采.进人口.纳财.结网.纳畜.牧养.会亲友.", "j": "上梁.作灶.伐木.出行.安葬.安门.理发.", "c": "生肖冲猪", "s": "煞東", "ch": "危", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d1019": { "y": "嫁娶.祭祀.开市.开光.出行.入宅.移徙.出火.拆卸.修造.安床.", "j": "纳畜.伐木.置产.作梁.行丧.安葬.修坟.立碑.", "c": "生肖冲鼠", "s": "煞北", "ch": "成", "zc": "正冲正冲壬子", "ts": "房床碓外正东" }, "d1020": { "y": "嫁娶.祭祀.作灶.纳财.", "j": "安葬.开市.修坟.立碑.", "c": "生肖冲牛", "s": "煞西", "ch": "收", "zc": "正冲正冲癸丑", "ts": "占门厕外正东" }, "d1021": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出行.解除.出火.进人口.开市.交易.立券.挂匾.纳财.入宅.移徙.栽种.破土.谢土.", "j": "安床.安葬.", "c": "生肖冲虎", "s": "煞南", "ch": "开", "zc": "正冲正冲甲寅", "ts": "碓磨炉外东南" }, "d1022": { "y": "嫁娶.祭祀.祈福.求嗣.动土.安床.扫舍.入殓.移柩.破土.启攒.安葬.作灶.整手足甲.补垣.除服.成服.", "j": "开光.栽种.", "c": "生肖冲兔", "s": "煞東", "ch": "闭", "zc": "正冲正冲乙卯", "ts": "厨灶门外东南" }, "d1023": { "y": "祭祀.祈福.求嗣.开光.出行.解除.上梁.入宅.移徙.安床.安门.纳财.纳畜.造畜椆栖.", "j": "伐木.行丧.破土.嫁娶.安葬.开渠.", "c": "生肖冲龙", "s": "煞北", "ch": "建", "zc": "正冲正冲丙辰", "ts": "仓库栖外东南" }, "d1024": { "y": "祭祀.开光.出行.解除.理发.伐木.出火.拆卸.上梁.合脊.安床.造畜椆栖.", "j": "嫁娶.安葬.行丧.词讼.造桥.作灶.破土.动土.", "c": "生肖冲蛇", "s": "煞西", "ch": "除", "zc": "正冲正冲丁巳", "ts": "占房床外东南" }, "d1026": { "y": "解除.祭祀.修饰垣墙.平治道涂.造畜椆栖.余事勿取.", "j": "嫁娶.开市.交易.入宅.入学.安葬.", "c": "生肖冲羊", "s": "煞東", "ch": "平", "zc": "正冲正冲己未", "ts": "碓磨厕外东南" }, "d1028": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出行.拆卸.修造.动土.上梁.安床.纳畜.入殓.破土.", "j": "入宅.移徙.掘井.理发.伐木.交易.开市.作灶.", "c": "生肖冲鸡", "s": "煞西", "ch": "执", "zc": "正冲正冲辛酉", "ts": "仓库门外正南" }, "d1030": { "y": "祭祀.求嗣.冠笄.进人口.会亲友.安门.安床.经络.纳财.牧养.畋猎.放水.割蜜.", "j": "祈福.斋醮.纳采.订盟.嫁娶.入宅.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "危", "zc": "正冲正冲癸亥", "ts": "占门床外正南" }, "d1031": { "y": "嫁娶.纳采.订盟.开市.交易.立券.挂匾.祭祀.祈福.开光.造车器.挂匾.出行.入宅.移徙.安床.安门.拆卸.修造.动土.栽种.安葬.破土.启攒.除服.成服.入殓.立碑.", "j": "探病.纳畜.伐木.起基.作梁.造屋.", "c": "生肖冲鼠", "s": "煞北", "ch": "成", "zc": "正冲正冲甲子", "ts": "占碓磨外正南" }, "d1105": { "y": "祭祀.开光.出行.解除.伐木.作梁.出火.拆卸.入宅.移徙.安床.修造.造畜椆栖.扫舍.", "j": "造庙.嫁娶.掘井.栽种.造桥.作灶.动土.", "c": "生肖冲蛇", "s": "煞西", "ch": "除", "zc": "正冲正冲己巳", "ts": "碓磨床外西南" }, "d1128": { "y": "合帐.裁衣.嫁娶.安床.入殓.移柩.破土.造畜椆栖.", "j": "置产.造船.开光.掘井.作灶.", "c": "生肖冲龙", "s": "煞北", "ch": "闭", "zc": "正冲正冲壬辰", "ts": "房床栖房内南" }, "d1115": { "y": "解除.余事勿取.", "j": "余事勿取.", "c": "生肖冲兔", "s": "煞東", "ch": "开", "zc": "正冲正冲己卯", "ts": "占门炉外西北" }, "d1108": { "y": "开市.交易.立券.挂匾.纳财.开光.出行.入宅.移徙.安床.纳畜.入殓.移柩.安葬.", "j": "栽种.破土.置产.祭祀.嫁娶.动土.作灶.祈福.", "c": "生肖冲猴", "s": "煞北", "ch": "平", "zc": "正冲正冲壬申", "ts": "房床厕外正南" }, "d1126": { "y": "沐浴.扫舍.捕捉.畋猎.解除.塞穴.余事勿取.", "j": "嫁娶.入宅.开市.安床.破土.修坟.", "c": "生肖冲虎", "s": "煞南", "ch": "收", "zc": "正冲正冲庚寅", "ts": "厨灶炉房内北" }, "d1120": { "y": "嫁娶.开光.出行.出火.拆卸.修造.动土.入宅.移徙.安床.上梁.开市.交易.立券.栽种.", "j": "祈福.祭祀.伐木.掘井.作灶.谢土.", "c": "生肖冲猴", "s": "煞北", "ch": "平", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d1130": { "y": "纳采.订盟.嫁娶.祭祀.祈福.求嗣.开光.出行.解除.进人口.开市.立券.挂匾.入宅.移徙.安门.栽种.动土.求医.治病.会亲友.起基.修造.造屋.安葬.", "j": "作灶.经络.安床.", "c": "生肖冲马", "s": "煞南", "ch": "除", "zc": "正冲正冲甲午", "ts": "占碓磨房内南" }, "d1225": { "y": "嫁娶.纳采.订盟.造车器.祭祀.祈福.造庙.安香.出火.出行.归宁.入学.入宅.交易.立券.求医.治病.修造.动土.竖柱.上梁.造屋.起基.安门.", "j": "斋醮.伐木.作梁.安葬.行丧.", "c": "生肖冲羊", "s": "煞東", "ch": "除", "zc": "正冲正冲己未", "ts": "碓磨厕外东南" }, "d1101": { "y": "祭祀.冠笄.移徙.会亲友.纳财.理发.捕捉.", "j": "嫁娶.开市.开池.作厕.破土.", "c": "生肖冲牛", "s": "煞西", "ch": "收", "zc": "正冲正冲乙丑", "ts": "厨灶厕外西南" }, "d1102": { "y": "祭祀.祈福.求嗣.斋醮.开光.出行.嫁娶.求医.治病.动土.破土.入学.起基.扫舍.竖柱.上梁.开仓.出货财.置产.栽种.牧养.开生坟.谢土.立碑.", "j": "安门.安床.裁衣.入宅.安葬.", "c": "生肖冲虎", "s": "煞南", "ch": "开", "zc": "正冲正冲丙寅", "ts": "仓库炉外西南" }, "d1103": { "y": "嫁娶.裁衣.冠笄.合帐.祭祀.出行.安床.移徙.塞穴.入殓.破土.移柩.安葬.", "j": "开市.出行.栽种.置产.词讼.安门.掘井.开光.", "c": "生肖冲兔", "s": "煞東", "ch": "闭", "zc": "正冲正冲丁卯", "ts": "房床门外西南" }, "d1104": { "y": "祭祀.造车器.出行.修造.上梁.造屋.安门.安床.造畜椆栖.教牛马.", "j": "出货财.开仓.动土.破土.安葬.行丧.伐木.开渠.栽种.", "c": "生肖冲龙", "s": "煞北", "ch": "建", "zc": "正冲正冲戊辰", "ts": "门鸡栖外西南" }, "d1106": { "y": "纳采.订盟.开市.交易.立券.会亲友.纳畜.牧养.问名.移徙.解除.作厕.入学.起基.安床.开仓.出货财.安葬.启攒.入殓.除服.成服.", "j": "入宅.上梁.斋醮.出火.谢土.", "c": "生肖冲马", "s": "煞南", "ch": "满", "zc": "正冲正冲庚午", "ts": "厨灶碓外西南" }, "d1107": { "y": "诸事不宜.", "j": "诸事不宜.", "c": "生肖冲羊", "s": "煞東", "ch": "满", "zc": "正冲正冲辛未", "ts": "仓库厕外西南" }, "d1109": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出行.解除.出火.出行.拆卸.进人口.入宅.移徙.安床.栽种.动土.修造.纳畜.入殓.安葬.立碑.除服.成服.", "j": "", "c": "生肖冲鸡", "s": "煞西", "ch": "定", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d1110": { "y": "开光.解除.拆卸.修造.动土.安床.纳畜.安葬.启攒.入殓.", "j": "嫁娶.开市.出火.栽种.破土.动土.入宅.移徙.安香.分居.掘井.作灶.", "c": "生肖冲狗", "s": "煞南", "ch": "执", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d1111": { "y": "破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲猪", "s": "煞東", "ch": "破", "zc": "正冲正冲乙亥", "ts": "厨灶床外正西" }, "d1112": { "y": "嫁娶.祭祀.开光.出火.出行.拆卸.修造.动土.解除.开市.交易.立券.挂匾.纳财.入宅.移徙.安床.栽种.纳畜.", "j": "探病.安葬.", "c": "生肖冲鼠", "s": "煞北", "ch": "危", "zc": "正冲正冲丙子", "ts": "仓库碓外西北" }, "d1113": { "y": "祭祀.祈福.求嗣.开光.解除.理发.会亲友.栽种.纳畜.牧养.安葬.修坟.立碑.启攒.", "j": "入宅.作灶.词讼.移徙.出行.赴任.", "c": "生肖冲牛", "s": "煞西", "ch": "成", "zc": "正冲正冲丁丑", "ts": "房床厕外西北" }, "d1114": { "y": "祭祀.沐浴.结网.移柩.入殓.除服.成服.", "j": "安床.开市.交易.出货财.安葬.修坟.嫁娶.作灶.", "c": "生肖冲虎", "s": "煞南", "ch": "收", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d1116": { "y": "安床.祭祀.开池.补垣.入殓.移柩.破土.启攒.", "j": "入宅.移徙.嫁娶.掘井.作灶.出火.进人口.开市.开光.", "c": "生肖冲龙", "s": "煞北", "ch": "闭", "zc": "正冲正冲庚辰", "ts": "厨灶栖外西北" }, "d1117": { "y": "祭祀.沐浴.余事勿取.", "j": "余事勿取.", "c": "生肖冲蛇", "s": "煞西", "ch": "建", "zc": "正冲正冲辛巳", "ts": "仓库床外西北" }, "d1118": { "y": "嫁娶.开光.出行.解除.出火.拆卸.修造.进人口.动土.入宅.移徙.栽种.纳畜.掘井.安葬.除服.成服.", "j": "置产.安床.", "c": "生肖冲马", "s": "煞南", "ch": "除", "zc": "正冲正冲壬午", "ts": "房床碓外正北" }, "d1119": { "y": "开光.裁衣.安门.会亲友.安床.结网.理发.", "j": "嫁娶.冠笄.出行.祈福.安葬.伐木.入宅.移徙.出火.栽种.动土.上梁.", "c": "生肖冲羊", "s": "煞東", "ch": "满", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d1121": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出火.出行.拆卸.开市.交易.立券.挂匾.伐木.入宅.移徙.安床.安葬.", "j": "栽种.掘井.置产.", "c": "生肖冲鸡", "s": "煞西", "ch": "定", "zc": "正冲正冲乙酉", "ts": "厨灶门外正北" }, "d1122": { "y": "祭祀.理发.针灸.解除.进人口.整手足甲.", "j": "嫁娶.动土.造船.开池.掘井.出行.修造.入宅.上梁.移徙.安葬.破土.作灶.开市.", "c": "生肖冲狗", "s": "煞南", "ch": "执", "zc": "正冲正冲丙戌", "ts": "仓库栖外正北" }, "d1123": { "y": "破屋.坏垣.求医.治病.余事勿取.", "j": "嫁娶.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "破", "zc": "正冲正冲丁亥", "ts": "占房床房内北" }, "d1124": { "y": "纳采.订盟.嫁娶.祭祀.祈福.雕刻.移徙.开市.入宅.出行.动土.会亲友.入学.修造.动土.起基.安门.安床.造庙.解除.纳财.开池.造畜椆栖.牧养.牧养.", "j": "上梁.开仓.出货财.造屋.造船.", "c": "生肖冲鼠", "s": "煞北", "ch": "危", "zc": "正冲正冲戊子", "ts": "占门碓房内北" }, "d1127": { "y": "嫁娶.冠笄.祭祀.祈福.求嗣.斋醮.开光.出行.解除.动土.开市.交易.立券.挂匾.拆卸.破土.", "j": "伐木.上梁.修造.入殓.理发.会亲友.入宅.安门.安葬.作灶.", "c": "生肖冲兔", "s": "煞東", "ch": "开", "zc": "正冲正冲辛卯", "ts": "仓库门房内北" }, "d1129": { "y": "解除.修饰垣墙.冠笄.出行.余事勿取.", "j": "开市.动土.破土.嫁娶.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "建", "zc": "正冲正冲癸巳", "ts": "占门床房内南" }, "d1201": { "y": "祭祀.塑绘.理发.会亲友.牧养.开池.造畜椆栖.畋猎.结网.", "j": "祈福.谢土.安葬.上梁.作灶.开市.嫁娶.出行.入宅.动土.", "c": "生肖冲羊", "s": "煞東", "ch": "满", "zc": "正冲正冲乙未", "ts": "厨灶厕房内南" }, "d1202": { "y": "出行.纳财.开市.交易.立券.动土.移徙.入宅.裁衣.会亲友.拆卸.进人口.安香.经络.出货财.修饰垣墙.平治道涂.", "j": "造庙.谢土.作灶.作梁.伐木.安葬.行丧.修坟.探病.", "c": "生肖冲猴", "s": "煞北", "ch": "平", "zc": "正冲正冲丙申", "ts": "仓库炉房内南" }, "d1203": { "y": "嫁娶.纳采.订盟.祭祀.斋醮.开光.安香.出火.出行.出火.拆卸.动土.祈福.进人口.纳财.交易.立券.移徙.安床.修造.安葬.除服.成服.", "j": "置产.掘井.词讼.栽种.", "c": "生肖冲鸡", "s": "煞西", "ch": "定", "zc": "正冲正冲丁酉", "ts": "房床门房内南" }, "d1204": { "y": "嫁娶.纳采.订盟.祭祀.开光.出行.解除.伐木.出火.入宅.移徙.拆卸.修造.栽种.安葬.入殓.", "j": "破土.动土.安门.作灶.开市.交易.", "c": "生肖冲狗", "s": "煞南", "ch": "执", "zc": "正冲正冲戊戌", "ts": "门鸡栖房内东" }, "d1205": { "y": "祭祀.解除.破屋.坏垣.求医.治病.余事勿取.", "j": "嫁娶.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "破", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d1206": { "y": "祭祀.扫舍.破土.安葬.除服.成服.启攒.移柩.入殓.立碑.余事勿取.", "j": "祭祀.嫁娶.入宅.修造.动土.", "c": "生肖冲鼠", "s": "煞北", "ch": "危", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d1207": { "y": "祭祀.祈福.求嗣.斋醮.开光.入学.订盟.冠笄.伐木.修造.动土.起基.放水.交易.开池.", "j": "造桥.安门.理发.造庙.栽种.作灶.", "c": "生肖冲牛", "s": "煞西", "ch": "危", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d1208": { "y": "解除.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲虎", "s": "煞南", "ch": "成", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" }, "d1209": { "y": "沐浴.理发.扫舍.", "j": "伐木.纳畜.上梁.入宅.作灶.造畜椆栖.嫁娶.安葬.作梁.造船.安门.", "c": "生肖冲兔", "s": "煞東", "ch": "收", "zc": "正冲正冲癸卯", "ts": "占大门外东北" }, "d1210": { "y": "祭祀.开光.祈福.解除.作梁.动土.安床.掘井.栽种.纳畜.破土.移柩.", "j": "嫁娶.出行.赴任.造屋.入殓.入宅.移徙.出火.进人口.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "开", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d1211": { "y": "诸事不宜.作梁.修造.动土.安门.作灶.塞穴.开池.作厕.筑堤.补垣.栽种.", "j": "嫁娶.祈福.掘井.行丧.安葬.安床.", "c": "生肖冲蛇", "s": "煞西", "ch": "闭", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d1212": { "y": "安葬.启攒.移柩.入殓.除服.成服.", "j": "余事勿取.", "c": "生肖冲马", "s": "煞南", "ch": "建", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d1213": { "y": "嫁娶.祭祀.祈福.求嗣.出行.出火.拆卸.开市.交易.立券.挂匾.入宅.移徙.安床.栽种.", "j": "作灶.塑绘.行丧.词讼.伐木.安葬.", "c": "生肖冲羊", "s": "煞東", "ch": "除", "zc": "正冲正冲丁未", "ts": "房床厕外东北" }, "d1214": { "y": "理发.开光.解除.拆卸.修造.安葬.开市.交易.立券.挂匾.安床.栽种.", "j": "入宅.移徙.作灶.祈福.祭祀.嫁娶.谢土.掘井.造屋.探病.", "c": "生肖冲猴", "s": "煞北", "ch": "满", "zc": "正冲正冲戊申", "ts": "占门炉外东北" }, "d1215": { "y": "祭祀.修饰垣墙.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鸡", "s": "煞西", "ch": "平", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d1216": { "y": "入宅.安床.开光.祭祀.出火.拆卸.动土.挂匾.入殓.破土.安葬.纳畜.", "j": "嫁娶.开市.作灶.置产.作梁.伐木.", "c": "生肖冲狗", "s": "煞南", "ch": "定", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d1217": { "y": "祭祀.解除.余事勿取.", "j": "诸事不宜.", "c": "生肖冲猪", "s": "煞東", "ch": "执", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d1218": { "y": "破屋.坏垣.祭祀.沐浴.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鼠", "s": "煞北", "ch": "破", "zc": "正冲正冲壬子", "ts": "房床碓外正东" }, "d1219": { "y": "安床.祭祀.祈福.求嗣.冠笄.伐木.架马.动土.开池.作厕.结网.入殓.除服.成服.", "j": "安门.栽种.作灶.治病.", "c": "生肖冲牛", "s": "煞西", "ch": "危", "zc": "正冲正冲癸丑", "ts": "占门厕外正东" }, "d1220": { "y": "解除.扫舍.余事勿取.", "j": "诸事不宜.", "c": "生肖冲虎", "s": "煞南", "ch": "成", "zc": "正冲正冲甲寅", "ts": "碓磨炉外东南" }, "d1221": { "y": "祭祀.开光.理发.整手足甲.安床.作灶.扫舍.教牛马.", "j": "伐木.纳畜.破土.安葬.开生坟.嫁娶.开市.动土.交易.作梁.", "c": "生肖冲兔", "s": "煞东", "ch": "收", "zc": "正冲正冲乙卯", "ts": "厨灶门外东南" }, "d1222": { "y": "祭祀.祈福.求嗣.开光.拆卸.修造.动土.上梁.安床.置产.栽种.破土.", "j": "嫁娶.进人口.安葬.出行.赴任.入宅.移徙.入殓.开渠.", "c": "生肖冲龙", "s": "煞北", "ch": "开", "zc": "正冲正冲丙辰", "ts": "仓库栖外东南" }, "d1223": { "y": "沐浴.冠笄.补垣.塞穴.合帐.裁衣.修造.作梁.开柱眼.安碓硙.筑堤.作厕.断蚁.", "j": "移徙.入宅.嫁娶.祈福.开光.掘井.", "c": "生肖冲蛇", "s": "煞西", "ch": "闭", "zc": "正冲正冲丁巳", "ts": "占房床外东南" }, "d1224": { "y": "交易.进人口.祭祀.沐浴.捕捉.入殓.除服.成服.安葬.谢土.启攒.修坟.", "j": "斋醮.入宅.修造.动土.破土.", "c": "生肖冲马", "s": "煞南", "ch": "建", "zc": "正冲正冲戊午", "ts": "占门碓外东南" }, "d1226": { "y": "纳采.订盟.开市.交易.立券.出行.会亲友.安机械.竖柱.上梁.平治道涂.伐木.拆卸.造屋.起基.安床.安门.解除.安葬.启攒.除服.成服.修坟.立碑.移柩.入殓.", "j": "嫁娶.动土.破土.祈福.出火.入宅.", "c": "生肖冲猴", "s": "煞北", "ch": "满", "zc": "正冲正冲庚申", "ts": "厨灶炉外正南" }, "d1227": { "y": "祭祀.平治道涂.除服.成服.安葬.余事勿取.", "j": "嫁娶.入宅.纳采.订盟.掘井.", "c": "生肖冲鸡", "s": "煞西", "ch": "平", "zc": "正冲正冲辛酉", "ts": "仓库门外正南" }, "d1228": { "y": "纳采.订盟.祭祀.祈福.开光.安香.出火.出行.会亲友.安机械.修造.动土.竖柱.上梁.造屋.起基.定磉.安床.安门.拆卸.移徙.造桥.造船.安葬.破土.入殓.", "j": "开市.造庙.置产.掘井.", "c": "生肖冲狗", "s": "煞南", "ch": "定", "zc": "正冲正冲壬戌", "ts": "房床栖外正南" }, "d1229": { "y": "嫁娶.冠笄.祭祀.祈福.求嗣.斋醮.进人口.会亲友.伐木.作梁.开柱眼.安床.掘井.捕捉.畋猎.", "j": "开生坟.破土.行丧.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "执", "zc": "正冲正冲癸亥", "ts": "占门床外正南" }, "d1230": { "y": "破屋.坏垣.治病.余事勿取.", "j": "移徙.入宅.", "c": "生肖冲鼠", "s": "煞北", "ch": "破", "zc": "正冲正冲甲子", "ts": "占碓磨外正南" }, "d1231": { "y": "安床.架马.祭祀.塑绘.开光.出行.理发.伐木.作梁.开柱眼.作厕.畋猎.破土.入殓.除服.成服.移柩.启攒.修坟.立碑.", "j": "作灶.安门.造桥.开市.安葬.", "c": "生肖冲牛", "s": "煞西", "ch": "危", "zc": "正冲正冲乙丑", "ts": "厨灶厕外西南" } } ukui-panel-4.0.0.4/plugin-calendar/html/hlnew/hl2019.json0000644000175000017500000027433514560306203021324 0ustar fengfeng{ "d0101": { "y": "订盟.纳采.祭祀.祈福.修造.动土.上梁.破土.", "j": "嫁娶.作灶.", "c": "生肖冲龙", "s": "煞北", "ch": "开", "zc": "正冲正冲壬辰", "ts": "房床栖房内南" }, "d0201": { "y": "会亲友.纳采.进人口.修造.动土.竖柱.上梁.祭祀.开光.塑绘.祈福.斋醮.嫁娶.安床.移徙.入宅.安香.纳畜.", "j": "出行.治病.安葬.开市.", "c": "生肖冲猪", "s": "煞東", "ch": "定", "zc": "正冲正冲癸亥", "ts": "占门床外正南" }, "d0102": { "y": "出行.沐浴.理发.补垣.塞穴.", "j": "入宅.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "闭", "zc": "正冲正冲癸巳", "ts": "占门床房内南" }, "d0103": { "y": "教牛马.余事勿取.", "j": "入宅.动土.破土.余事勿取.", "c": "生肖冲马", "s": "煞南", "ch": "建", "zc": "正冲正冲甲午", "ts": "占碓磨房内南" }, "d0104": { "y": "嫁娶.出行.求医.治病.祭祀.祈福.上梁.纳畜.", "j": "开市.安葬.", "c": "生肖冲羊", "s": "煞東", "ch": "除", "zc": "正冲正冲乙未", "ts": "厨灶厕房内南" }, "d0105": { "y": "嫁娶.开光.解除.出火.拆卸.修造.进人口.入宅.移徙.安床.栽种.入殓.修坟.动土.除服.成服.", "j": "作灶.安葬.祭祀.开市.纳采.订盟.纳畜.谢土.出行.探病.", "c": "生肖冲猴", "s": "煞北", "ch": "除", "zc": "正冲正冲丙申", "ts": "仓库炉房内南" }, "d0106": { "y": "出行.起基.安床.纳财.交易.立券.嫁娶.栽种.入殓.移柩.安葬.", "j": "挂匾.入宅.上梁.祈福.词讼.作梁.作灶.开池.安门.动土.破土.掘井.", "c": "生肖冲鸡", "s": "煞西", "ch": "满", "zc": "正冲正冲丁酉", "ts": "房床门房内南" }, "d0107": { "y": "平治道涂.余事勿取.", "j": "开光.嫁娶.开仓.出货财.造船.安葬.探病.", "c": "生肖冲狗", "s": "煞南", "ch": "平", "zc": "正冲正冲戊戌", "ts": "门鸡栖房内东" }, "d0108": { "y": "嫁娶.订盟.纳采.会亲友.祭祀.安机械.移徙.入宅.造屋.安床.起基.定磉.安香.出火.挂匾.拆卸.置产.", "j": "开市.出行.安葬.行丧.", "c": "生肖冲猪", "s": "煞東", "ch": "定", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d0109": { "y": "沐浴.捕捉.畋猎.理发.整手足甲.入殓.除服.成服.破土.安葬.谢土.立碑.修坟.启攒.", "j": "纳采.订盟.嫁娶.上梁.开市.斋醮.造屋.安门.", "c": "生肖冲鼠", "s": "煞北", "ch": "执", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d0110": { "y": "祭祀.破屋.坏垣.余事勿取.", "j": "斋醮.嫁娶.开市.", "c": "生肖冲牛", "s": "煞西", "ch": "破", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d0111": { "y": "沐浴.开仓.出货财.开市.交易.立券.纳财.栽种.纳畜.牧养.畋猎.入殓.破土.安葬.", "j": "祈福.嫁娶.安床.入宅.造船.", "c": "生肖冲虎", "s": "煞南", "ch": "危", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" }, "d0112": { "y": "祭祀.沐浴.补垣.塞穴.断蚁.解除.余事勿取.", "j": "造庙.入宅.修造.安葬.行丧.嫁娶.", "c": "生肖冲兔", "s": "煞東", "ch": "成", "zc": "正冲正冲癸卯", "ts": "占大门外东北" }, "d0113": { "y": "嫁娶.纳采.订盟.问名.祭祀.冠笄.裁衣.会亲友.进人口.纳财.捕捉.作灶.", "j": "开市.安床.安葬.修坟.", "c": "生肖冲龙", "s": "煞北", "ch": "收", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d0114": { "y": "订盟.纳采.会亲友.祭祀.斋醮.沐浴.塑绘.出火.开光.竖柱.上梁.开市.交易.立券.作梁.开柱眼.伐木.架马.安门.安床.拆卸.牧养.造畜椆栖.掘井.", "j": "造庙.嫁娶.出行.动土.安葬.行丧.", "c": "生肖冲蛇", "s": "煞西", "ch": "开", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d0115": { "y": "交易.立券.纳财.安床.裁衣.造畜椆栖.安葬.谢土.启攒.除服.成服.修坟.立碑.移柩.入殓.", "j": "开光.嫁娶.开市.动土.破土.", "c": "生肖冲马", "s": "煞南", "ch": "闭", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d0116": { "y": "祭祀.解除.教牛马.会亲友.余事勿取.", "j": "破土.动土.安葬.", "c": "生肖冲羊", "s": "煞東", "ch": "建", "zc": "正冲正冲丁未", "ts": "房床厕外东北" }, "d0117": { "y": "纳采.订盟.移徙.纳财.开市.交易.立券.入宅.会亲友.解除.求医.治病.入学.安床.安门.安香.出火.拆卸.扫舍.入宅.挂匾.开生坟.合寿木.破土.修坟.启攒.入殓.", "j": "探病.祭祀.出行.上梁.造屋.谢土.安葬.", "c": "生肖冲猴", "s": "煞北", "ch": "除", "zc": "正冲正冲戊申", "ts": "占门炉外东北" }, "d0118": { "y": "嫁娶.订盟.纳采.祭祀.祈福.求嗣.会亲友.解除.出行.入学.纳财.开市.交易.立券.习艺.经络.安床.开仓.出货财.纳畜.安葬.启攒.修坟.入殓.", "j": "入宅.开光.开市.动土.", "c": "生肖冲鸡", "s": "煞西", "ch": "满", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d0119": { "y": "祭祀.冠笄.嫁娶.会亲友.进人口.裁衣.结网.平治道涂.", "j": "移徙.入宅.造庙.作灶.治病.安葬.", "c": "生肖冲狗", "s": "煞南", "ch": "平", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d0120": { "y": "祭祀.安碓硙.结网.余事勿取.", "j": "嫁娶.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "定", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d0121": { "y": "嫁娶.祭祀.沐浴.裁衣.出行.理发.移徙.捕捉.畋猎.放水.入宅.除服.成服.启攒.安葬.移柩.入殓.", "j": "造屋.开市.动土.破土.", "c": "生肖冲鼠", "s": "煞北", "ch": "执", "zc": "正冲正冲壬子", "ts": "房床碓外正东" }, "d0122": { "y": "破屋.坏垣.余事勿取.", "j": "嫁娶.开市.安葬.", "c": "生肖冲牛", "s": "煞西", "ch": "破", "zc": "正冲正冲癸丑", "ts": "占门厕外正东" }, "d0123": { "y": "纳采.订盟.祭祀.求嗣.出火.塑绘.裁衣.会亲友.入学.拆卸.扫舍.造仓.挂匾.掘井.开池.结网.栽种.纳畜.破土.修坟.立碑.安葬.入殓.", "j": "祈福.嫁娶.造庙.安床.谢土.", "c": "生肖冲虎", "s": "煞南", "ch": "危", "zc": "正冲正冲甲寅", "ts": "碓磨炉外东南" }, "d0124": { "y": "入殓.除服.成服.移柩.启攒.安葬.修坟.立碑.", "j": "开市.伐木.嫁娶.作梁.", "c": "生肖冲兔", "s": "煞東", "ch": "成", "zc": "正冲正冲乙卯", "ts": "厨灶门外东南" }, "d0125": { "y": "祭祀.作灶.入殓.除服.余事勿取.", "j": "开市.安床.", "c": "生肖冲龙", "s": "煞北", "ch": "收", "zc": "正冲正冲丙辰", "ts": "仓库栖外东南" }, "d0126": { "y": "塑绘.开光.沐浴.冠笄.会亲友.作灶.放水.造畜椆栖.", "j": "嫁娶.入殓.安葬.出行.", "c": "生肖冲蛇", "s": "煞西", "ch": "开", "zc": "正冲正冲丁巳", "ts": "占房床外东南" }, "d0127": { "y": "祭祀.沐浴.祈福.斋醮.订盟.纳采.裁衣.拆卸.起基.竖柱.上梁.安床.入殓.除服.成服.移柩.启攒.挂匾.求嗣.出行.合帐.造畜椆栖.", "j": "开仓.嫁娶.移徙.入宅.", "c": "生肖冲马", "s": "煞南", "ch": "闭", "zc": "正冲正冲戊午", "ts": "占门碓外东南" }, "d0128": { "y": "祭祀.解除.余事勿取.", "j": "诸事不宜.", "c": "生肖冲羊", "s": "煞東", "ch": "建", "zc": "正冲正冲己未", "ts": "碓磨厕外东南" }, "d0129": { "y": "沐浴.解除.订盟.纳采.裁衣.冠笄.拆卸.修造.动土.移徙.入宅.除服.成服.移柩.破土.启攒.安葬.扫舍.修坟.伐木.纳财.交易.立券.", "j": "作灶.祭祀.上梁.出行.", "c": "生肖冲猴", "s": "煞北", "ch": "除", "zc": "正冲正冲庚申", "ts": "厨灶炉外正南" }, "d0130": { "y": "出行.嫁娶.订盟.纳采.入殓.安床.启攒.安葬.祭祀.裁衣.会亲友.进人口.", "j": "作灶.掘井.谢土.入宅.", "c": "生肖冲鸡", "s": "煞西", "ch": "满", "zc": "正冲正冲辛酉", "ts": "仓库门外正南" }, "d0131": { "y": "修饰垣墙.平治道涂.入殓.移柩.余事勿取.", "j": "嫁娶.移徙.入宅.开光.", "c": "生肖冲狗", "s": "煞南", "ch": "平", "zc": "正冲正冲壬戌", "ts": "房床栖外正南" }, "d0210": { "y": "纳采.会亲友.竖柱.上梁.立券.入殓.移柩.安葬.启攒.", "j": "祭祀.移徙.入宅.动土.破土.", "c": "生肖冲猴", "s": "煞北", "ch": "建", "zc": "正冲正冲壬申", "ts": "房床厕外正南" }, "d0218": { "y": "祭祀.结网.入殓.除服.成服.移柩.安葬.破土.", "j": "余事勿取.", "c": "生肖冲龙", "s": "煞北", "ch": "成", "zc": "正冲正冲庚辰", "ts": "厨灶栖外西北" }, "d0228": { "y": "求医.破屋.", "j": "诸事不宜.", "c": "生肖冲虎", "s": "煞南", "ch": "破", "zc": "正冲正冲庚寅", "ts": "厨灶炉房内北" }, "d0220": { "y": "祭祀.沐浴.开光.塑绘.祈福.求嗣.订盟.纳采.冠笄.裁衣.嫁娶.动土.除服.成服.移柩.破土.启攒.出行.安碓硙.放水.开市.立券.交易.", "j": "安葬.上梁.入宅.作灶.", "c": "生肖冲马", "s": "煞南", "ch": "开", "zc": "正冲正冲壬午", "ts": "房床碓外正北" }, "d0208": { "y": "纳采.嫁娶.祭祀.祈福.出行.开市.会亲友.动土.破土.启攒.", "j": "移徙.入宅.出火.安门.安葬.", "c": "生肖冲马", "s": "煞南", "ch": "开", "zc": "正冲正冲庚午", "ts": "厨灶碓外西南" }, "d0226": { "y": "塑绘.开光.酬神.斋醮.订盟.纳采.裁衣.合帐.拆卸.动土.上梁.安床.安香.造庙.挂匾.会亲友.进人口.出行.修造.纳财.伐木.放水.出火.纳畜.沐浴.安门.", "j": "造屋.栽种.安葬.作灶.", "c": "生肖冲鼠", "s": "煞北", "ch": "定", "zc": "正冲正冲戊子", "ts": "占门碓房内北" }, "d0216": { "y": "祭祀.沐浴.求医.治病.扫舍.破屋.坏垣.解除.余事勿取.", "j": "入宅.开市.安葬.", "c": "生肖冲虎", "s": "煞南", "ch": "破", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d0227": { "y": "祭祀.祈福.酬神.订盟.纳采.冠笄.裁衣.合帐.嫁娶.安床.移徙.入宅.安香.入殓.移柩.启攒.安葬.解除.取渔.捕捉.伐木.安门.出火.", "j": "栽种.动土.开市.作灶.", "c": "生肖冲牛", "s": "煞西", "ch": "执", "zc": "正冲正冲己丑", "ts": "碓磨厕房内北" }, "d0217": { "y": "祭祀.冠笄.嫁娶.拆卸.修造.动土.起基.上梁.造屋.入宅.开市.开池.塞穴.入殓.除服.成服.移柩.安葬.破土.", "j": "安床.栽种.治病.作灶.", "c": "生肖冲兔", "s": "煞東", "ch": "危", "zc": "正冲正冲己卯", "ts": "占门炉外西北" }, "d0207": { "y": "纳采.祭祀.祈福.出行.会亲友.修造.动土.移徙.入宅.", "j": "嫁娶.开市.安葬.破土.", "c": "生肖冲蛇", "s": "煞西", "ch": "收", "zc": "正冲正冲己巳", "ts": "碓磨床外西南" }, "d0206": { "y": "塞穴.结网.取渔.畋猎.", "j": "嫁娶.安门.移徙.入宅.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "成", "zc": "正冲正冲戊辰", "ts": "门鸡栖外西南" }, "d0331": { "y": "祈福.开光.塑绘.酬神.订盟.纳采.裁衣.安床.开市.立券.入殓.除服.成服.移柩.启攒.安葬.立碑.赴任.会亲友.出行.交易.竖柱.", "j": "作灶.掘井.动土.栽种.", "c": "生肖冲鸡", "s": "煞西", "ch": "建", "zc": "正冲正冲辛酉", "ts": "仓库门外正南" }, "d0202": { "y": "祭祀.会亲友.出行.订盟.纳采.沐浴.修造.动土.祈福.斋醮.嫁娶.拆卸.安床.入殓.移柩.安葬.谢土.赴任.裁衣.竖柱.上梁.伐木.捕捉.栽种.破土.安门.", "j": "造屋.开市.作灶.入宅.", "c": "生肖冲鼠", "s": "煞北", "ch": "执", "zc": "正冲正冲甲子", "ts": "占碓磨外正南" }, "d0203": { "y": "解除.破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲牛", "s": "煞西", "ch": "破", "zc": "正冲正冲乙丑", "ts": "厨灶厕外西南" }, "d0204": { "y": "祭祀.沐浴.解除.理发.扫舍.破屋.坏垣.余事勿取.", "j": "嫁娶.安葬.", "c": "生肖冲虎", "s": "煞南", "ch": "破", "zc": "正冲正冲丙寅", "ts": "仓库炉外西南" }, "d0205": { "y": "纳采.订盟.祭祀.祈福.安香.出火.修造.出行.开市.移徙.入宅.动土.安葬.破土.", "j": "安床.作灶.造船.会亲友.", "c": "生肖冲兔", "s": "煞東", "ch": "危", "zc": "正冲正冲丁卯", "ts": "房床门外西南" }, "d0209": { "y": "祭祀.祈福.求嗣.斋醮.入殓.除服.成服.移柩.安葬.启攒.", "j": "嫁娶.动土.开光.造屋.破土.", "c": "生肖冲羊", "s": "煞東", "ch": "闭", "zc": "正冲正冲辛未", "ts": "仓库厕外西南" }, "d0211": { "y": "祭祀.祈福.斋醮.出行.开市.立券.动土.移徙.入宅.破土.安葬.", "j": "开光.嫁娶.作灶.掘井.纳畜.", "c": "生肖冲鸡", "s": "煞西", "ch": "除", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d0212": { "y": "会亲友.求嗣.理发.冠笄.结网.捕捉.开光.理发.", "j": "开市.动土.安葬.破土.", "c": "生肖冲狗", "s": "煞南", "ch": "满", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d0213": { "y": "祭祀.平治道涂.余事勿取.", "j": "嫁娶.祈福.掘井.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "平", "zc": "正冲正冲乙亥", "ts": "厨灶床外正西" }, "d0214": { "y": "祈福.求嗣.斋醮.纳采.嫁娶.伐木.修造.动土.移徙.入宅.造庙.安机械.开市.入殓.除服.成服.移柩.安葬.破土.谢土.", "j": "置产.造屋.合脊.开光.探病.安门.作灶.", "c": "生肖冲鼠", "s": "煞北", "ch": "定", "zc": "正冲正冲丙子", "ts": "仓库碓外西北" }, "d0215": { "y": "入学.习艺.出行.纳采.订盟.嫁娶.会亲友.进人口.牧养.捕捉.入殓.移柩.安葬.启攒.", "j": "开光.开市.入宅.动土.造屋.", "c": "生肖冲牛", "s": "煞西", "ch": "执", "zc": "正冲正冲丁丑", "ts": "房床厕外西北" }, "d0219": { "y": "塑绘.开光.祈福.求嗣.订盟.纳采.裁衣.冠笄.拆卸.修造.动土.起基.安门.安床.移徙.造仓.结网.纳畜.", "j": "伐木.作灶.安葬.取渔.入宅.", "c": "生肖冲蛇", "s": "煞西", "ch": "收", "zc": "正冲正冲辛巳", "ts": "仓库床外西北" }, "d0221": { "y": "祭祀.祈福.求嗣.酬神.裁衣.安床.立券.交易.入殓.除服.成服.移柩.谢土.启攒.", "j": "出行.嫁娶.入宅.动土.", "c": "生肖冲羊", "s": "煞東", "ch": "闭", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d0222": { "y": "裁衣.合帐.入殓.除服.成服.会亲友.纳财.", "j": "祭祀.祈福.移徙.嫁娶.入宅.", "c": "生肖冲猴", "s": "煞北", "ch": "建", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d0223": { "y": "祭祀.斋醮.裁衣.合帐.冠笄.订盟.纳采.嫁娶.入宅.安香.谢土.入殓.移柩.破土.立碑.安香.会亲友.出行.祈福.求嗣.立碑.上梁.放水.", "j": "掘井.", "c": "生肖冲鸡", "s": "煞西", "ch": "除", "zc": "正冲正冲乙酉", "ts": "厨灶门外正北" }, "d0224": { "y": "安床.合帐.入宅.问名.纳采.求嗣.祭祀.开仓.", "j": "斋醮.作灶.安床.安葬.", "c": "生肖冲狗", "s": "煞南", "ch": "满", "zc": "正冲正冲丙戌", "ts": "仓库栖外正北" }, "d0225": { "y": "作灶.平治道涂.", "j": "祭祀.祈福.安葬.安门.余事勿取.", "c": "生肖冲猪", "s": "煞東", "ch": "平", "zc": "正冲正冲丁亥", "ts": "占房床房内北" }, "d0319": { "y": "祭祀.会亲友.立券.交易.裁衣.合帐.嫁娶.冠笄.进人口.", "j": "栽种.动土.安葬.掘井.修坟.探病.", "c": "生肖冲鸡", "s": "煞西", "ch": "建", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d0323": { "y": "祈福.求嗣.开光.塑绘.斋醮.订盟.纳采.嫁娶.拆卸.安床.入宅.安香.移柩.修坟.安葬.谢土.栽种.解除.冠笄.裁衣.移徙.修造.动土.竖柱.放水.启攒.立碑.", "j": "赴任.", "c": "生肖冲牛", "s": "煞西", "ch": "定", "zc": "正冲正冲癸丑", "ts": "占门厕外正东" }, "d0419": { "y": "祭祀.沐浴.破屋.坏垣.求医.治病.解除.余事勿取.", "j": "嫁娶.开市.交易.入宅.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "破", "zc": "正冲正冲庚辰", "ts": "厨灶栖外西北" }, "d0301": { "y": "祈福.求嗣.斋醮.塑绘.开光.订盟.纳采.嫁娶.动土.入宅.安香.移柩.安葬.谢土.出行.沐浴.修造.竖柱.上梁.纳财.破土.解除.安门.放水.", "j": "作灶.安床.", "c": "生肖冲兔", "s": "煞東", "ch": "危", "zc": "正冲正冲辛卯", "ts": "仓库门房内北" }, "d0302": { "y": "取渔.入殓.除服.成服.移柩.破土.安葬.立碑.", "j": "嫁娶.上梁.入宅.作灶.", "c": "生肖冲龙", "s": "煞北", "ch": "成", "zc": "正冲正冲壬辰", "ts": "房床栖房内南" }, "d0303": { "y": "祭祀.求嗣.沐浴.酬神.订盟.纳采.裁衣.合帐.冠笄.安机械.安床.造仓.开池.经络.纳财.开市.立券.交易.结网.取渔.纳畜.捕捉.", "j": "安葬.作灶.伐木.作梁.", "c": "生肖冲蛇", "s": "煞西", "ch": "收", "zc": "正冲正冲癸巳", "ts": "占门床房内南" }, "d0304": { "y": "祭祀.沐浴.祈福.求嗣.斋醮.订盟.纳采.裁衣.冠笄.开市.立券.交易.纳财.沐浴.除服.谢土.出行.移柩.", "j": "入殓.安葬.作灶.入宅.", "c": "生肖冲马", "s": "煞南", "ch": "开", "zc": "正冲正冲甲午", "ts": "占碓磨房内南" }, "d0305": { "y": "祭祀.祈福.求嗣.入殓.启攒.安葬.移柩.", "j": "开光.掘井.针灸.出行.嫁娶.入宅.移徙.作灶.动土.", "c": "生肖冲羊", "s": "煞東", "ch": "闭", "zc": "正冲正冲乙未", "ts": "厨灶厕房内南" }, "d0306": { "y": "冠笄.立券.交易.修造.动土.安机械.入殓.安葬.破土.", "j": "嫁娶.祈福.出火.入宅.", "c": "生肖冲猴", "s": "煞北", "ch": "闭", "zc": "正冲正冲丙申", "ts": "仓库炉房内南" }, "d0307": { "y": "祭祀.会亲友.出行.立券.交易.冠笄.纳财.", "j": "嫁娶.动土.掘井.起基.定磉.破土.", "c": "生肖冲鸡", "s": "煞西", "ch": "建", "zc": "正冲正冲丁酉", "ts": "房床门房内南" }, "d0308": { "y": "祭祀.沐浴.解除.扫舍.塞穴.牧养.", "j": "嫁娶.安葬.行丧.安门.", "c": "生肖冲狗", "s": "煞南", "ch": "除", "zc": "正冲正冲戊戌", "ts": "门鸡栖房内东" }, "d0309": { "y": "纳财.开市.交易.立券.开光.针灸.会亲友.理发.安床.造仓.结网.", "j": "移徙.入宅.栽种.", "c": "生肖冲猪", "s": "煞東", "ch": "满", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d0310": { "y": "嫁娶.冠笄.会亲友.安机械.纳财.交易.立券.置产.", "j": "开市.造屋.治病.作灶.", "c": "生肖冲鼠", "s": "煞北", "ch": "平", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d0311": { "y": "嫁娶.造车器.纳采.订盟.祭祀.祈福.安机械.移徙.入宅.开市.立券.破土.安葬.", "j": "纳畜.理发.合寿木.", "c": "生肖冲牛", "s": "煞西", "ch": "定", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d0312": { "y": "祈福.斋醮.出行.移徙.入宅.修造.动土.破土.安葬.", "j": "纳采.开光.安床.嫁娶.开市.", "c": "生肖冲虎", "s": "煞南", "ch": "执", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" }, "d0313": { "y": "破屋.坏垣.余事勿取.", "j": "嫁娶.移徙.开市.入宅.", "c": "生肖冲兔", "s": "煞東", "ch": "破", "zc": "正冲正冲癸卯", "ts": "占大门外东北" }, "d0314": { "y": "嫁娶.冠笄.祭祀.出行.会亲友.修造.动土.入殓.破土.", "j": "塑绘.开光.造桥.除服.成服.", "c": "生肖冲龙", "s": "煞北", "ch": "危", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d0315": { "y": "开光.求嗣.出行.纳采.冠笄.出火.拆卸.起基.修造.动土.上梁.移徙.造船.开市.交易.立券.纳财.", "j": "祈福.嫁娶.安葬.破土.", "c": "生肖冲蛇", "s": "煞西", "ch": "成", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d0316": { "y": "理发.冠笄.嫁娶.进人口.栽种.捕捉.针灸.", "j": "纳财.开市.安葬.破土.", "c": "生肖冲马", "s": "煞南", "ch": "收", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d0317": { "y": "开光.祈福.求嗣.出行.解除.伐木.造屋.起基.修造.架马.安门.移徙.入宅.造庙.除服.成服.移柩.谢土.纳畜.牧养.", "j": "纳采.动土.开市.交易.安门.", "c": "生肖冲羊", "s": "煞東", "ch": "开", "zc": "正冲正冲丁未", "ts": "房床厕外东北" }, "d0318": { "y": "裁衣.经络.伐木.开柱眼.拆卸.修造.动土.上梁.合脊.合寿木.入殓.除服.成服.移柩.破土.安葬.启攒.修坟.立碑.", "j": "祭祀.嫁娶.出行.上梁.掘井.", "c": "生肖冲猴", "s": "煞北", "ch": "闭", "zc": "正冲正冲戊申", "ts": "占门炉外东北" }, "d0320": { "y": "扫舍.塞穴.余事勿取.", "j": "诸事不宜.", "c": "生肖冲狗", "s": "煞南", "ch": "除", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d0321": { "y": "塑绘.开光.订盟.纳采.裁衣.合帐.冠笄.安机械.会亲友.纳财.开市.立券.交易.安床.竖柱.上梁.结网.栽种.解除.经络.", "j": "作灶.出行.入宅.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "满", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d0322": { "y": "祭祀.嫁娶.纳婿.除服.成服.入殓.移柩.", "j": "动土.作灶.入宅.开光.安床.", "c": "生肖冲鼠", "s": "煞北", "ch": "平", "zc": "正冲正冲壬子", "ts": "房床碓外正东" }, "d0324": { "y": "祭祀.解除.入殓.除服.成服.移柩.启攒.安葬.修坟.立碑.谢土.沐浴.扫舍.捕捉.取渔.结网.畋猎.理发.", "j": "安床.嫁娶.作灶.入宅.", "c": "生肖冲虎", "s": "煞南", "ch": "执", "zc": "正冲正冲甲寅", "ts": "碓磨炉外东南" }, "d0325": { "y": "破屋.坏垣.", "j": "诸事不宜.", "c": "生肖冲兔", "s": "煞東", "ch": "破", "zc": "正冲正冲乙卯", "ts": "厨灶门外东南" }, "d0326": { "y": "祭祀.出行.订盟.纳采.裁衣.合帐.冠笄.进人口.动土.安床.作灶.入殓.移柩.安葬.破土.结网.取渔.畋猎.", "j": "作梁.造庙.", "c": "生肖冲龙", "s": "煞北", "ch": "危", "zc": "正冲正冲丙辰", "ts": "仓库栖外东南" }, "d0327": { "y": "祭祀.开光.塑绘.订盟.纳采.合帐.冠笄.拆卸.动土.起基.上梁.入宅.安香.开市.立券.纳财.沐浴.求嗣.出火.竖柱.安门.", "j": "造庙.嫁娶.伐木.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "成", "zc": "正冲正冲丁巳", "ts": "占房床外东南" }, "d0328": { "y": "祭祀.沐浴.捕捉.栽种.", "j": "嫁娶.入宅.移徙.作灶.安葬.", "c": "生肖冲马", "s": "煞南", "ch": "收", "zc": "正冲正冲戊午", "ts": "占门碓外东南" }, "d0329": { "y": "祭祀.开光.塑绘.酬神.斋醮.订盟.纳采.嫁娶.裁衣.动土.起基.出火.拆卸.移徙.入宅.安香.修造.竖柱.上梁.纳畜.牧养.祈福.求嗣.解除.伐木.定磉.造屋.安门.", "j": "栽种.安葬.", "c": "生肖冲羊", "s": "煞東", "ch": "开", "zc": "正冲正冲己未", "ts": "碓磨厕外东南" }, "d0330": { "y": "订盟.纳采.冠笄.拆卸.修造.动土.安床.入殓.除服.成服.移柩.安葬.破土.启攒.造仓.", "j": "作灶.开光.嫁娶.开市.入宅.", "c": "生肖冲猴", "s": "煞北", "ch": "闭", "zc": "正冲正冲庚申", "ts": "厨灶炉外正南" }, "d0426": { "y": "纳采.开光.求医.治病.动土.上梁.移徙.入宅.", "j": "嫁娶.开市.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "除", "zc": "正冲正冲丁亥", "ts": "占房床房内北" }, "d0406": { "y": "纳采.祭祀.祈福.求嗣.斋醮.出行.起基.造屋.定磉.安门.入殓.安葬.", "j": "嫁娶.开市.纳财.出火.", "c": "生肖冲兔", "s": "煞東", "ch": "执", "zc": "正冲正冲丁卯", "ts": "房床门外西南" }, "d0429": { "y": "祭祀.斋醮.开市.动土.入殓.破土.安葬.", "j": "嫁娶.移徙.入宅.", "c": "生肖冲虎", "s": "煞南", "ch": "定", "zc": "正冲正冲庚寅", "ts": "厨灶炉房内北" }, "d0424": { "y": "祭祀.祈福.裁衣.合帐.安床.入殓.除服.成服.移柩.破土.启攒.安葬.谢土.立碑.造畜椆栖.", "j": "掘井.安门.嫁娶.纳采.", "c": "生肖冲鸡", "s": "煞西", "ch": "闭", "zc": "正冲正冲乙酉", "ts": "厨灶门外正北" }, "d0409": { "y": "祭祀.祈福.求嗣.斋醮.纳采.订盟.开光.竖柱.上梁.开仓.出货财.造屋.起基.定磉.安门.诸事不宜.破土.入殓.启攒.谢土.", "j": "出火.嫁娶.开市.", "c": "生肖冲马", "s": "煞南", "ch": "成", "zc": "正冲正冲庚午", "ts": "厨灶碓外西南" }, "d0416": { "y": "祭祀.作灶.平治道涂.余事勿取.", "j": "嫁娶.安葬.动土.安床.治病.", "c": "生肖冲牛", "s": "煞西", "ch": "平", "zc": "正冲正冲丁丑", "ts": "房床厕外西北" }, "d0414": { "y": "沐浴.斋醮.解除.求医.治病.会亲友.造畜椆栖.栽种.理发.扫舍.", "j": "开市.嫁娶.移徙.入宅.掘井.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "除", "zc": "正冲正冲乙亥", "ts": "厨灶床外正西" }, "d0404": { "y": "祭祀.嫁娶.祈福.纳采.裁衣.合帐.安床.入宅.安香.入殓.移柩.安葬.谢土.修造.安碓硙.求嗣.会亲友.挂匾.交易.立券.纳财.造仓.放水.", "j": "栽种.伐木.", "c": "生肖冲牛", "s": "煞西", "ch": "定", "zc": "正冲正冲乙丑", "ts": "厨灶厕外西南" }, "d0427": { "y": "祭祀.会亲友.开市.安床.启攒.安葬.", "j": "嫁娶.动土.破土.", "c": "生肖冲鼠", "s": "煞北", "ch": "满", "zc": "正冲正冲戊子", "ts": "占门碓房内北" }, "d0428": { "y": "祭祀.作灶.掘井.平治道涂.", "j": "嫁娶.安葬.", "c": "生肖冲牛", "s": "煞西", "ch": "平", "zc": "正冲正冲己丑", "ts": "碓磨厕房内北" }, "d0417": { "y": "造车器.祭祀.祈福.求嗣.斋醮.开市.交易.安机械.雕刻.开光.造屋.合脊.起基.定磉.安门.纳畜.安葬.开生坟.立碑.谢土.斋醮.", "j": "入宅.动土.开仓.出货财.", "c": "生肖冲虎", "s": "煞南", "ch": "定", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d0422": { "y": "祭祀.余事勿取.", "j": "造庙.嫁娶.安床.余事勿取.", "c": "生肖冲羊", "s": "煞東", "ch": "收", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d0528": { "y": "纳采.祭祀.祈福.开市.求医.治病.动土.纳畜.", "j": "嫁娶.安葬.", "c": "生肖冲羊", "s": "煞東", "ch": "成", "zc": "正冲正冲己未", "ts": "碓磨厕外东南" }, "d0401": { "y": "祭祀.扫舍.塞穴.", "j": "栽种.作灶.安葬.嫁娶.", "c": "生肖冲狗", "s": "煞南", "ch": "除", "zc": "正冲正冲壬戌", "ts": "房床栖外正南" }, "d0402": { "y": "开光.塑绘.裁衣.冠笄.伐木.拆卸.竖柱.上梁.开仓.会亲友.安机械.造仓.造屋.交易.解除.开市.立券.纳财.", "j": "出行.嫁娶.入宅.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "满", "zc": "正冲正冲癸亥", "ts": "占门床外正南" }, "d0403": { "y": "冠笄.入殓.除服.成服.移柩.平治道涂.修饰垣墙.", "j": "造屋.作灶.治病.探病.", "c": "生肖冲鼠", "s": "煞北", "ch": "平", "zc": "正冲正冲甲子", "ts": "占碓磨外正南" }, "d0405": { "y": "祭祀.祈福.求嗣.斋醮.沐浴.纳畜.入殓.破土.安葬.", "j": "移徙.入宅.嫁娶.出行.安床.", "c": "生肖冲虎", "s": "煞南", "ch": "定", "zc": "正冲正冲丙寅", "ts": "仓库炉外西南" }, "d0407": { "y": "祭祀.沐浴.解除.求医.治病.破屋.坏垣.余事勿取.", "j": "祈福.斋醮.开市.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "破", "zc": "正冲正冲戊辰", "ts": "门鸡栖外西南" }, "d0408": { "y": "沐浴.捕捉.畋猎.结网.取渔.", "j": "祭祀.嫁娶.入宅.作灶.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "危", "zc": "正冲正冲己巳", "ts": "碓磨床外西南" }, "d0410": { "y": "祭祀.捕捉.解除.余事勿取.", "j": "嫁娶.安葬.", "c": "生肖冲羊", "s": "煞东", "ch": "收", "zc": "正冲正冲辛未", "ts": "仓库厕外西南" }, "d0411": { "y": "纳采.嫁娶.出行.开市.立券.纳畜.牧养.出火.移徙.入宅.", "j": "祈福.动土.破土.安葬.入殓.", "c": "生肖冲猴", "s": "煞北", "ch": "开", "zc": "正冲正冲壬申", "ts": "房床厕外正南" }, "d0412": { "y": "祭祀.祈福.求嗣.斋醮.冠笄.作灶.纳财.交易.", "j": "开光.嫁娶.掘井.安葬.安门.探病.", "c": "生肖冲鸡", "s": "煞西", "ch": "闭", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d0413": { "y": "祭祀.解除.教牛马.出行.余事勿取.", "j": "动土.破土.行丧.开光.作梁.安葬.探病.", "c": "生肖冲狗", "s": "煞南", "ch": "建", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d0415": { "y": "求嗣.出行.解除.订盟.纳采.嫁娶.会亲友.进人口.安床.开市.交易.纳畜.牧养.入殓.除服.成服.移柩.安葬.启攒.", "j": "祈福.开市.修造.动土.破土.谢土.", "c": "生肖冲鼠", "s": "煞北", "ch": "满", "zc": "正冲正冲丙子", "ts": "仓库碓外西北" }, "d0418": { "y": "祭祀.祈福.开光.求嗣.斋醮.纳采.订盟.求医.治病.起基.定磉.造船.取渔.解除.安葬.启攒.谢土.入殓.", "j": "开市.动土.掘井.开池.", "c": "生肖冲兔", "s": "煞東", "ch": "执", "zc": "正冲正冲己卯", "ts": "占门炉外西北" }, "d0420": { "y": "诸事不宜.", "j": "诸事不宜.", "c": "生肖冲蛇", "s": "煞西", "ch": "危", "zc": "正冲正冲辛巳", "ts": "仓库床外西北" }, "d0421": { "y": "祭祀.塑绘.开光.订盟.纳采.冠笄.裁衣.安机械.拆卸.修造.动土.安床.经络.开市.", "j": "出火.入宅.安葬.伐木.", "c": "生肖冲马", "s": "煞南", "ch": "成", "zc": "正冲正冲壬午", "ts": "房床碓外正北" }, "d0423": { "y": "订盟.纳采.嫁娶.进人口.会亲友.交易.立券.动土.除服.谢土.移柩.破土.启攒.赴任.出行.开市.纳财.栽种.", "j": "入殓.安葬.入宅.安床.", "c": "生肖冲猴", "s": "煞北", "ch": "开", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d0425": { "y": "祭祀.进人口.嫁娶.安床.解除.冠笄.出行.裁衣.扫舍.", "j": "掘井.动土.破土.安葬.开光.", "c": "生肖冲狗", "s": "煞南", "ch": "建", "zc": "正冲正冲丙戌", "ts": "仓库栖外正北" }, "d0430": { "y": "嫁娶.纳采.祭祀.祈福.出行.移徙.求医.", "j": "开市.动土.破土.", "c": "生肖冲兔", "s": "煞東", "ch": "执", "zc": "正冲正冲辛卯", "ts": "仓库门房内北" }, "d0521": { "y": "开光.出行.纳采.嫁娶.伐木.架马.出火.拆卸.移徙.入宅.造庙.造桥.造船.造畜椆栖.开市.入殓.除服.成服.移柩.安葬.", "j": "", "c": "生肖冲鼠", "s": "煞北", "ch": "除", "zc": "正冲正冲壬子", "ts": "房床碓外正东" }, "d0511": { "y": "祭祀.沐浴.移徙.破土.安葬.扫舍.平治道涂.", "j": "祈福.嫁娶.入宅.安床.作灶.", "c": "生肖冲虎", "s": "煞南", "ch": "平", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" }, "d0501": { "y": "祭祀.求医.治病.解除.余事勿取.", "j": "诸事不宜.", "c": "生肖冲龙", "s": "煞北", "ch": "破", "zc": "正冲正冲壬辰", "ts": "房床栖房内南" }, "d0525": { "y": "嫁娶.纳采.求医.治病.修造.动土.移徙.入宅.破土.安葬.", "j": "开市.开光.", "c": "生肖冲龙", "s": "煞北", "ch": "执", "zc": "正冲正冲丙辰", "ts": "仓库栖外东南" }, "d0523": { "y": "开光.出行.嫁娶.", "j": "会亲友.进人口.修造.动土.起基.移徙.开市.纳畜.入殓.除服.成服.移柩.破土.安葬.修坟.立碑.会亲友.", "c": "生肖冲虎", "s": "煞南", "ch": "平", "zc": "正冲正冲甲寅", "ts": "碓磨炉外东南" }, "d0621": { "y": "嫁娶.出行.安机械.祭祀.塑绘.开光.治病.经络.安床.结网.塞穴.破土.入殓.", "j": "开市.安门.掘井.作灶.", "c": "生肖冲羊", "s": "煞東", "ch": "危", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d0502": { "y": "沐浴.结网.取渔.", "j": "嫁娶.入宅.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "危", "zc": "正冲正冲癸巳", "ts": "占门床房内南" }, "d0503": { "y": "", "j": "诸事不宜.", "c": "生肖冲马", "s": "煞南", "ch": "成", "zc": "正冲正冲甲午", "ts": "占碓磨房内南" }, "d0504": { "y": "解除.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲羊", "s": "煞東", "ch": "收", "zc": "正冲正冲乙未", "ts": "厨灶厕房内南" }, "d0505": { "y": "嫁娶.开光.出行.出火.拆卸.进人口.开市.立券.交易.挂匾.入宅.移徙.安床.栽种.", "j": "祈福.入殓.祭祀.作灶.安葬.探病.", "c": "生肖冲猴", "s": "煞北", "ch": "开", "zc": "正冲正冲丙申", "ts": "仓库炉房内南" }, "d0506": { "y": "祭祀.祈福.求嗣.开光.纳采.订盟.嫁娶.出行.动土.破土.会亲友.开市.交易.立券.习艺.拆卸.起基.安碓硙.放水.开池.造仓.开渠.栽种.谢土.启攒.修坟.立碑.", "j": "入宅.安门.安葬.", "c": "生肖冲鸡", "s": "煞西", "ch": "开", "zc": "正冲正冲丁酉", "ts": "房床门房内南" }, "d0507": { "y": "嫁娶.冠笄.祭祀.出行.移徙.入宅.作灶.造车器.补垣.塞穴.作厕.破土.启攒.除服.成服.入殓.", "j": "入宅.造屋.造桥.安门.安葬.上梁.", "c": "生肖冲狗", "s": "煞南", "ch": "闭", "zc": "正冲正冲戊戌", "ts": "门鸡栖房内东" }, "d0508": { "y": "祭祀.解除.断蚁.会亲友.余事勿取.", "j": "嫁娶.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "建", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d0509": { "y": "嫁娶.纳采.订盟.祭祀.祈福.治病.造车器.修造.动土.移徙.入宅.", "j": "开市.出行.安床.作灶.安葬.", "c": "生肖冲鼠", "s": "煞北", "ch": "除", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d0510": { "y": "嫁娶.纳采.订盟.会亲友.安机械.结网.冠笄.祭祀.求嗣.进人口.经络.", "j": "开市.作灶.动土.行丧.安葬.", "c": "生肖冲牛", "s": "煞西", "ch": "满", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d0512": { "y": "祭祀.祈福.斋醮.求嗣.安机械.纳畜.移徙.入宅.安机械.塑绘.开光.起基.竖柱.上梁.作灶.安门.安香.出火.造屋.启攒.安葬.", "j": "动土.破土.嫁娶.嫁娶.", "c": "生肖冲兔", "s": "煞東", "ch": "定", "zc": "正冲正冲癸卯", "ts": "占大门外东北" }, "d0513": { "y": "嫁娶.纳采.订盟.斋醮.开光.祭祀.祈福.求医.治病.会亲友.动土.解除.捕捉.纳畜.牧养.入殓.破土.安葬.", "j": "移徙.入宅.造屋.架马.", "c": "生肖冲龙", "s": "煞北", "ch": "执", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d0514": { "y": "祭祀.沐浴.解除.破屋.坏垣.余事勿取.", "j": "行丧.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "破", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d0515": { "y": "沐浴.扫舍.余事勿取.", "j": "斋醮.开市.嫁娶.作灶.", "c": "生肖冲马", "s": "煞南", "ch": "危", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d0516": { "y": "开市.交易.立券.安机械.会亲友.开光.求医.治病.造屋.起基.修造.动土.定磉.竖柱.上梁.安门.作灶.放水.作厕.开池.栽种.牧养.造畜椆栖.破土.安葬.立碑.", "j": "嫁娶.出火.移徙.入宅.", "c": "生肖冲羊", "s": "煞東", "ch": "成", "zc": "正冲正冲丁未", "ts": "房床厕外东北" }, "d0517": { "y": "栽种.捕捉.畋猎.余事勿取.", "j": "开市.动土.祭祀.斋醮.安葬.探病.", "c": "生肖冲猴", "s": "煞北", "ch": "收", "zc": "正冲正冲戊申", "ts": "占门炉外东北" }, "d0518": { "y": "嫁娶.祭祀.祈福.求嗣.斋醮.订盟.纳采.解除.出行.动土.破土.习艺.针灸.理发.会亲友.起基.修造.动土.竖柱.定磉.安床.拆卸.纳畜.牧养.放水.破土.除服.成服.修坟.立碑.", "j": "开市.入宅.探病.出火.造屋.", "c": "生肖冲鸡", "s": "煞西", "ch": "开", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d0519": { "y": "余事勿取.", "j": "余事勿取.", "c": "生肖冲狗", "s": "煞南", "ch": "闭", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d0520": { "y": "塞穴.断蚁.结网.余事勿取.", "j": "破土.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "建", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d0522": { "y": "进人口.牧养.置产.塞穴.结网.余事勿取.", "j": "诸事不宜.", "c": "生肖冲牛", "s": "煞西", "ch": "满", "zc": "正冲正冲癸丑", "ts": "占门厕外正东" }, "d0524": { "y": "嫁娶.纳采.出行.祭祀.祈福.开市.动土.移徙.入宅.破土.安葬.", "j": "安门.", "c": "生肖冲兔", "s": "煞東", "ch": "定", "zc": "正冲正冲乙卯", "ts": "厨灶门外东南" }, "d0526": { "y": "祭祀.破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲蛇", "s": "煞西", "ch": "破", "zc": "正冲正冲丁巳", "ts": "占房床外东南" }, "d0527": { "y": "嫁娶.纳采.祭祀.祈福.出行.动土.上梁.移徙.入宅.破土.安葬.", "j": "祈福.斋醮.", "c": "生肖冲马", "s": "煞南", "ch": "危", "zc": "正冲正冲戊午", "ts": "占门碓外东南" }, "d0529": { "y": "嫁娶.纳采.出行.移徙.入宅.", "j": "动土.破土.安葬.", "c": "生肖冲猴", "s": "煞北", "ch": "收", "zc": "正冲正冲庚申", "ts": "厨灶炉外正南" }, "d0530": { "y": "订盟.纳采.祭祀.动土.破土.交易.立券.", "j": "嫁娶.安葬.", "c": "生肖冲鸡", "s": "煞西", "ch": "开", "zc": "正冲正冲辛酉", "ts": "仓库门外正南" }, "d0531": { "y": "嫁娶.裁衣.祭祀.出行.安床.作灶.移徙.入宅.破土.安葬.", "j": "赴任.捕捉.", "c": "生肖冲狗", "s": "煞南", "ch": "闭", "zc": "正冲正冲壬戌", "ts": "房床栖外正南" }, "d0626": { "y": "祭祀.入殓.移柩.启攒.安葬.", "j": "上梁.动土.破土.", "c": "生肖冲鼠", "s": "煞北", "ch": "建", "zc": "正冲正冲戊子", "ts": "占门碓房内北" }, "d0726": { "y": "纳采.祭祀.祈福.解除.动土.破土.安葬.", "j": "嫁娶.移徙.入宅.", "c": "生肖冲马", "s": "煞南", "ch": "执", "zc": "正冲正冲戊午", "ts": "占门碓外东南" }, "d0601": { "y": "塞穴.结网.余事勿取.", "j": "诸事不宜.", "c": "生肖冲猪", "s": "煞東", "ch": "建", "zc": "正冲正冲癸亥", "ts": "占门床外正南" }, "d0602": { "y": "嫁娶.订盟.纳采.出行.祭祀.祈福.斋醮.动土.上梁.破土.安葬.", "j": "移徙.入宅.", "c": "生肖冲鼠", "s": "煞北", "ch": "除", "zc": "正冲正冲甲子", "ts": "占碓磨外正南" }, "d0603": { "y": "订盟.纳采.会亲友.安床.作灶.造畜椆栖.", "j": "开市.安葬.", "c": "生肖冲牛", "s": "煞西", "ch": "满", "zc": "正冲正冲乙丑", "ts": "厨灶厕外西南" }, "d0604": { "y": "沐浴.平治道涂.扫舍.入殓.移柩.破土.启攒.安葬.余事勿取.", "j": "诸事不宜.", "c": "生肖冲虎", "s": "煞南", "ch": "平", "zc": "正冲正冲丙寅", "ts": "仓库炉外西南" }, "d0605": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出行.出火.拆卸.动土.上梁.进人口.入宅.移徙.安床.安门.开市.交易.立券.挂匾.栽种.破土.安葬.", "j": "", "c": "生肖冲兔", "s": "煞東", "ch": "定", "zc": "正冲正冲丁卯", "ts": "房床门外西南" }, "d0606": { "y": "嫁娶.纳采.祭祀.祈福.出行.立券.移徙.入宅.动土.破土.安葬.", "j": "开光.作灶.造屋.架马.开仓.", "c": "生肖冲龙", "s": "煞北", "ch": "定", "zc": "正冲正冲戊辰", "ts": "门鸡栖外西南" }, "d0607": { "y": "纳采.订盟.冠笄.祭祀.祈福.斋醮.出行.修造.动土.移徙.入宅.安香.出火.拆卸.造屋.起基.竖柱.上梁.定磉.安门.开池.", "j": "嫁娶.开市.合寿木.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "执", "zc": "正冲正冲己巳", "ts": "碓磨床外西南" }, "d0608": { "y": "祭祀.沐浴.破屋.坏垣.余事勿取.", "j": "入宅.嫁娶.移徙.", "c": "生肖冲马", "s": "煞南", "ch": "破", "zc": "正冲正冲庚午", "ts": "厨灶碓外西南" }, "d0609": { "y": "嫁娶.安机械.交易.出行.祭祀.祈福.求嗣.斋醮.塑绘.开光.合帐.裁衣.放水.开池.掘井.", "j": "作灶.理发.造桥.行丧.安葬.", "c": "生肖冲羊", "s": "煞東", "ch": "危", "zc": "正冲正冲辛未", "ts": "仓库厕外西南" }, "d0610": { "y": "纳采.冠笄.求医.治病.开市.立券.修造.动土.安机械.破土.安葬.", "j": "斋醮.祭祀.移徙.入宅.上梁.嫁娶.", "c": "生肖冲猴", "s": "煞北", "ch": "成", "zc": "正冲正冲壬申", "ts": "房床厕外正南" }, "d0611": { "y": "祭祀.作灶.余事勿取.", "j": "开市.安葬.破土.修坟.掘井.", "c": "生肖冲鸡", "s": "煞西", "ch": "收", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d0612": { "y": "祭祀.祈福.求嗣.斋醮.安香.解除.移徙.入宅.会亲友.求医.治病.动土.破土.开生坟.合寿木.", "j": "合帐.上梁.经络.安葬.入殓.", "c": "生肖冲狗", "s": "煞南", "ch": "开", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d0613": { "y": "嫁娶.冠笄.修造.动土.作灶.移徙.入宅.补垣.塞穴.纳畜.牧养.架马.修造.动土.起基.定磉.开池.造船.", "j": "祈福.开光.掘井.开市.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "闭", "zc": "正冲正冲乙亥", "ts": "厨灶床外正西" }, "d0614": { "y": "祭祀.交易.纳财.", "j": "斋醮.开渠.上梁.动土.破土.", "c": "生肖冲鼠", "s": "煞北", "ch": "建", "zc": "正冲正冲丙子", "ts": "仓库碓外西北" }, "d0615": { "y": "嫁娶.订盟.纳采.冠笄.会亲友.安机械.造车器.祭祀.出行.纳财.入宅.安香.出火.入学.塑绘.开光.拆卸.起基.修造.动土.牧养.栽种.安门.作厕.", "j": "行丧.伐木.作梁.作灶.", "c": "生肖冲牛", "s": "煞西", "ch": "除", "zc": "正冲正冲丁丑", "ts": "房床厕外西北" }, "d0616": { "y": "开光.求嗣.出行.冠笄.嫁娶.伐木.架马.开柱眼.修造.移徙.入宅.开市.交易.立券.出行.安香.出火.挂匾.起基.修造.开生坟.合寿木.入殓.除服.成服.移柩.安葬.", "j": "安床.出货财.作灶.动土.破土.", "c": "生肖冲虎", "s": "煞南", "ch": "满", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d0617": { "y": "祭祀.沐浴.理发.嫁娶.作灶.整手足甲.扫舍.修饰垣墙.平治道涂.", "j": "斋醮.出行.治病.合寿木.", "c": "生肖冲兔", "s": "煞東", "ch": "平", "zc": "正冲正冲己卯", "ts": "占门炉外西北" }, "d0618": { "y": "安机械.移徙.入宅.出行.祭祀.祈福.斋醮.纳采.订盟.安香.出火.解除.会亲友.修造.动土.拆卸.起基.定磉.移徙.入宅.造屋.安床.修造.破土.安葬.入殓.立碑.", "j": "开市.伐木.作梁.作灶.", "c": "生肖冲龙", "s": "煞北", "ch": "定", "zc": "正冲正冲庚辰", "ts": "厨灶栖外西北" }, "d0619": { "y": "祭祀.沐浴.捕捉.结网.畋猎.取渔.余事勿取.", "j": "开市.交易.嫁娶.安葬.行丧.", "c": "生肖冲蛇", "s": "煞西", "ch": "执", "zc": "正冲正冲辛巳", "ts": "仓库床外西北" }, "d0620": { "y": "破屋.坏垣.求医.治病.畋猎.余事勿取.", "j": "嫁娶.入宅.", "c": "生肖冲马", "s": "煞南", "ch": "破", "zc": "正冲正冲壬午", "ts": "房床碓外正北" }, "d0622": { "y": "订盟.纳采.会亲友.进人口.雕刻.拆卸.修造.动土.起基.开市.栽种.纳畜.牧养.入殓.除服.成服.移柩.破土.安葬.", "j": "", "c": "生肖冲猴", "s": "煞北", "ch": "成", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d0623": { "y": "祭祀.捕捉.取渔.修饰垣墙.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鸡", "s": "煞西", "ch": "收", "zc": "正冲正冲乙酉", "ts": "厨灶门外正北" }, "d0624": { "y": "嫁娶.纳采.祭祀.祈福.求医.治病.出行.动土.移徙.入宅.", "j": "开市.安门.", "c": "生肖冲狗", "s": "煞南", "ch": "开", "zc": "正冲正冲丙戌", "ts": "仓库栖外正北" }, "d0625": { "y": "裁衣.作灶.移徙.入宅.纳畜.", "j": "嫁娶.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "闭", "zc": "正冲正冲丁亥", "ts": "占房床房内北" }, "d0627": { "y": "订盟.纳采.出行.祈福.斋醮.安床.会亲友.", "j": "移徙.入宅.安葬.", "c": "生肖冲牛", "s": "煞西", "ch": "除", "zc": "正冲正冲己丑", "ts": "碓磨厕房内北" }, "d0628": { "y": "嫁娶.纳采.出行.求医.治病.开市.移徙.入宅.启攒.安葬.", "j": "动土.破土.", "c": "生肖冲虎", "s": "煞南", "ch": "满", "zc": "正冲正冲庚寅", "ts": "厨灶炉房内北" }, "d0629": { "y": "嫁娶.祭祀.沐浴.扫舍.修饰垣墙.", "j": "行丧.安葬.", "c": "生肖冲兔", "s": "煞東", "ch": "平", "zc": "正冲正冲辛卯", "ts": "仓库门房内北" }, "d0630": { "y": "嫁娶.订盟.纳采.出行.开市.祭祀.祈福.动土.移徙.入宅.破土.安葬.", "j": "作灶.", "c": "生肖冲龙", "s": "煞北", "ch": "定", "zc": "正冲正冲壬辰", "ts": "房床栖房内南" }, "d0716": { "y": "纳采.订盟.嫁娶.移徙.入宅.出行.开市.交易.立券.纳财.会亲友.安香.出火.拆卸.造屋.起基.安床.作灶.挂匾.安葬.破土.启攒.立碑.入殓.移柩.", "j": "祈福.上梁.开仓.掘井.牧养.", "c": "生肖冲猴", "s": "煞北", "ch": "危", "zc": "正冲正冲戊申", "ts": "占门炉外东北" }, "d0721": { "y": "开市.纳财.祭祀.塑绘.安机械.冠笄.会亲友.裁衣.开仓.经络.纳畜.造畜椆栖.教牛马.牧养.", "j": "动土.破土.安葬.治病.", "c": "生肖冲牛", "s": "煞西", "ch": "建", "zc": "正冲正冲癸丑", "ts": "占门厕外正东" }, "d0724": { "y": "祭祀.冠笄.嫁娶.捕捉.结网.畋猎.取渔.余事勿取.", "j": "余事勿取.", "c": "生肖冲龙", "s": "煞北", "ch": "平", "zc": "正冲正冲丙辰", "ts": "仓库栖外东南" }, "d0706": { "y": "嫁娶.开光.祭祀.祈福.求嗣.出行.解除.伐木.入宅.移徙.安床.出火.拆卸.修造.上梁.栽种.移柩.", "j": "安葬.开市.交易.立券.", "c": "生肖冲狗", "s": "煞南", "ch": "开", "zc": "正冲正冲戊戌", "ts": "门鸡栖房内东" }, "d0730": { "y": "祭祀.作灶.纳财.捕捉.", "j": "开市.破土.", "c": "生肖冲狗", "s": "煞南", "ch": "收", "zc": "正冲正冲壬戌", "ts": "房床栖外正南" }, "d0720": { "y": "祭祀.塞穴.结网.畋猎.余事勿取.", "j": "移徙.开市.入宅.嫁娶.开光.安门.", "c": "生肖冲鼠", "s": "煞北", "ch": "闭", "zc": "正冲正冲壬子", "ts": "房床碓外正东" }, "d0710": { "y": "祭祀.沐浴.塑绘.开光.入学.解除.扫舍.治病.开池.牧养.", "j": "嫁娶.出行.纳采.入宅.作灶.", "c": "生肖冲虎", "s": "煞南", "ch": "除", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" }, "d0728": { "y": "嫁娶.纳采.开市.出行.动土.上梁.移徙.入宅.破土.安葬.", "j": "祭祀.祈福.", "c": "生肖冲猴", "s": "煞北", "ch": "危", "zc": "正冲正冲庚申", "ts": "厨灶炉外正南" }, "d0714": { "y": "沐浴.理发.捕捉.入殓.移柩.破土.启攒.安葬.", "j": "出火.嫁娶.入宅.作灶.破土.上梁.动土.", "c": "生肖冲马", "s": "煞南", "ch": "执", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d0718": { "y": "祭祀.进人口.纳财.纳畜.牧养.捕捉.余事勿取.", "j": "开市.入宅.安床.动土.安葬.", "c": "生肖冲狗", "s": "煞南", "ch": "收", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d0729": { "y": "嫁娶.纳采.开市.出行.动土.上梁.移徙.入宅.破土.安葬.", "j": "赴任.", "c": "生肖冲鸡", "s": "煞西", "ch": "成", "zc": "正冲正冲辛酉", "ts": "仓库门外正南" }, "d0719": { "y": "祭祀.塑绘.开光.求医.治病.嫁娶.会亲友.放水.掘井.牧养.纳畜.开渠.安碓硙.", "j": "造屋.入宅.作灶.入学.安葬.行丧.", "c": "生肖冲猪", "s": "煞東", "ch": "开", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d0708": { "y": "祭祀.入殓.除服.成服.移柩.破土.启攒.安葬.塞穴.断蚁.结网.", "j": "开市.入宅.嫁娶.开光.造屋.", "c": "生肖冲鼠", "s": "煞北", "ch": "闭", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d0709": { "y": "祭祀.修造.出行.造屋.竖柱.造车器.教牛马.造畜椆栖.割蜜.", "j": "动土.破土.掘井.安葬.", "c": "生肖冲牛", "s": "煞西", "ch": "建", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d0725": { "y": "沐浴.扫舍.余事勿取.", "j": "诸事不宜.", "c": "生肖冲蛇", "s": "煞西", "ch": "定", "zc": "正冲正冲丁巳", "ts": "占房床外东南" }, "d0824": { "y": "塑绘.开光.解除.订盟.纳采.嫁娶.出火.修造.动土.移徙.入宅.拆卸.起基.安门.分居.开市.交易.立券.纳财.纳畜.牧养.", "j": "", "c": "生肖冲猪", "s": "煞東", "ch": "收", "zc": "正冲正冲丁亥", "ts": "占房床房内北" }, "d0701": { "y": "订盟.纳采.出行.祭祀.祈福.修造.动土.移徙.入宅.", "j": "开市.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "执", "zc": "正冲正冲癸巳", "ts": "占门床房内南" }, "d0702": { "y": "诸事不宜.", "j": "诸事不宜.", "c": "生肖冲马", "s": "煞南", "ch": "破", "zc": "正冲正冲甲午", "ts": "占碓磨房内南" }, "d0703": { "y": "嫁娶.订盟.纳采.祭祀.祈福.入殓.破土.安葬.", "j": "开光.开市.", "c": "生肖冲羊", "s": "煞東", "ch": "危", "zc": "正冲正冲乙未", "ts": "厨灶厕房内南" }, "d0704": { "y": "开光.求医.治病.动土.上梁.入殓.破土.安葬.", "j": "嫁娶.开光.", "c": "生肖冲猴", "s": "煞北", "ch": "成", "zc": "正冲正冲丙申", "ts": "仓库炉房内南" }, "d0705": { "y": "祭祀.栽种.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鸡", "s": "煞西", "ch": "收", "zc": "正冲正冲丁酉", "ts": "房床门房内南" }, "d0707": { "y": "纳采.订盟.嫁娶.祭祀.沐浴.塑绘.开光.出火.治病.习艺.伐木.造屋.竖柱.上梁.安床.作灶.安碓硙.挂匾.掘井.纳畜.", "j": "出行.安葬.造桥.", "c": "生肖冲猪", "s": "煞東", "ch": "开", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d0711": { "y": "纳财.开市.交易.立券.出行.祭祀.祈福.求嗣.开光.解除.扫舍.起基.竖柱.安床.移徙.开仓.出货财.补垣.塞穴.栽种.纳畜.牧养.", "j": "斋醮.入宅.安门.安葬.破土.行丧.", "c": "生肖冲兔", "s": "煞東", "ch": "满", "zc": "正冲正冲癸卯", "ts": "占大门外东北" }, "d0712": { "y": "祭祀.修饰垣墙.平治道涂.", "j": "开市.动土.破土.嫁娶.修造.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "平", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d0713": { "y": "订盟.纳采.祭祀.祈福.开光.安香.出火.立券.安机械.移徙.入宅.竖柱.上梁.会亲友.安床.拆卸.挂匾.牧养.教牛马.", "j": "嫁娶.安葬.行丧.破土.修坟.", "c": "生肖冲蛇", "s": "煞西", "ch": "定", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d0715": { "y": "求医.治病.破屋.坏垣.余事勿取.", "j": "嫁娶.出行.", "c": "生肖冲羊", "s": "煞東", "ch": "破", "zc": "正冲正冲丁未", "ts": "房床厕外东北" }, "d0717": { "y": "祭祀.祈福.斋醮.出行.纳采.订盟.安机械.出火.拆卸.修造.动土.起基.移徙.入宅.造庙.入殓.除服.成服.移柩.破土.安葬.谢土.", "j": "嫁娶.开市.栽种.合寿木.", "c": "生肖冲鸡", "s": "煞西", "ch": "成", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d0722": { "y": "移徙.入宅.治病.会亲友.祭祀.祈福.斋醮.安香.移徙.嫁娶.造屋.起基.", "j": "开市.斋醮.安床.出行.经络.", "c": "生肖冲虎", "s": "煞南", "ch": "除", "zc": "正冲正冲甲寅", "ts": "碓磨炉外东南" }, "d0723": { "y": "塑绘.出行.冠笄.嫁娶.进人口.裁衣.纳婿.造畜椆栖.交易.立券.牧养.开生坟.入殓.除服.成服.移柩.安葬.启攒.", "j": "", "c": "生肖冲兔", "s": "煞東", "ch": "满", "zc": "正冲正冲乙卯", "ts": "厨灶门外东南" }, "d0727": { "y": "祭祀.破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲羊", "s": "煞東", "ch": "破", "zc": "正冲正冲己未", "ts": "碓磨厕外东南" }, "d0731": { "y": "嫁娶.开市.立券.祭祀.祈福.动土.移徙.入宅.", "j": "造庙.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "开", "zc": "正冲正冲癸亥", "ts": "占门床外正南" }, "d0829": { "y": "订盟.纳采.出行.会亲友.修造.上梁.移徙.入宅.", "j": "开市.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "满", "zc": "正冲正冲壬辰", "ts": "房床栖房内南" }, "d0802": { "y": "嫁娶.纳采.出行.祭祀.祈福.解除.移徙.入宅.", "j": "动土.安葬.", "c": "生肖冲牛", "s": "煞西", "ch": "建", "zc": "正冲正冲乙丑", "ts": "厨灶厕外西南" }, "d0830": { "y": "沐浴.修饰垣墙.平治道涂.余事勿取.", "j": "嫁娶.祈福.余事勿取.", "c": "生肖冲蛇", "s": "煞西", "ch": "平", "zc": "正冲正冲癸巳", "ts": "占门床房内南" }, "d0812": { "y": "嫁娶.订盟.纳采.作灶.冠笄.裁衣.会亲友.纳畜.牧养.安机械.开市.立券.纳财.安床.", "j": "掘井.出行.破土.行丧.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "收", "zc": "正冲正冲乙亥", "ts": "厨灶床外正西" }, "d0820": { "y": "祭祀.捕捉.畋猎.纳畜.牧养.入殓.除服.成服.移柩.破土.安葬.启攒.", "j": "嫁娶.纳采.订盟.开市.入宅.", "c": "生肖冲羊", "s": "煞東", "ch": "执", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d0822": { "y": "祈福.斋醮.出行.冠笄.嫁娶.雕刻.开柱眼.入宅.造桥.开市.交易.立券.纳财.入殓.除服.成服.移柩.破土.安葬.启攒.", "j": "动土.破土.订盟.安床.开池.", "c": "生肖冲鸡", "s": "煞西", "ch": "危", "zc": "正冲正冲乙酉", "ts": "厨灶门外正北" }, "d0810": { "y": "订盟.纳采.祭祀.祈福.安香.出火.开市.立券.入宅.挂匾.造桥.启攒.安葬.", "j": "动土.破土.嫁娶.掘井.安床.", "c": "生肖冲鸡", "s": "煞西", "ch": "危", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d0819": { "y": "纳采.订盟.嫁娶.祭祀.祈福.普渡.开光.安香.出火.移徙.入宅.竖柱.修造.动土.竖柱.上梁.起基.造屋.安门.造庙.造桥.破土.启攒.安葬.", "j": "开市.立券.纳财.作灶.", "c": "生肖冲马", "s": "煞南", "ch": "定", "zc": "正冲正冲壬午", "ts": "房床碓外正北" }, "d0930": { "y": "祭祀.裁衣.冠笄.嫁娶.纳婿.会亲友.除服.成服.移柩.捕捉.进人口.入殓.", "j": "移徙.入宅.作灶.安葬.", "c": "生肖冲鼠", "s": "煞北", "ch": "收", "zc": "正冲正冲甲子", "ts": "占碓磨外正南" }, "d0801": { "y": "补垣.塞穴.结网.入殓.除服.成服.移柩.安葬.启攒.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鼠", "s": "煞北", "ch": "闭", "zc": "正冲正冲甲子", "ts": "占碓磨外正南" }, "d0803": { "y": "嫁娶.祭祀.祈福.斋醮.治病.破土.安葬.", "j": "开市.入宅.", "c": "生肖冲虎", "s": "煞南", "ch": "除", "zc": "正冲正冲丙寅", "ts": "仓库炉外西南" }, "d0804": { "y": "嫁娶.出行.开市.安床.入殓.启攒.安葬.", "j": "祈福.动土.破土.", "c": "生肖冲兔", "s": "煞東", "ch": "满", "zc": "正冲正冲丁卯", "ts": "房床门外西南" }, "d0805": { "y": "嫁娶.祭祀.裁衣.结网.冠笄.沐浴.", "j": "开仓.出货财.置产.安葬.动土.破土.掘井.栽种.", "c": "生肖冲龙", "s": "煞北", "ch": "平", "zc": "正冲正冲戊辰", "ts": "门鸡栖外西南" }, "d0806": { "y": "入宅.移徙.安床.开光.祈福.求嗣.进人口.开市.交易.立券.出火.拆卸.修造.动土.", "j": "嫁娶.破土.置产.栽种.安葬.修坟.行丧.", "c": "生肖冲蛇", "s": "煞西", "ch": "定", "zc": "正冲正冲己巳", "ts": "碓磨床外西南" }, "d0807": { "y": "祭祀.解除.沐浴.整手足甲.入殓.移柩.破土.启攒.安葬.", "j": "嫁娶.入宅.移徙.作灶.开市.交易.安门.栽种.", "c": "生肖冲马", "s": "煞南", "ch": "执", "zc": "正冲正冲庚午", "ts": "厨灶碓外西南" }, "d0808": { "y": "祭祀.普渡.捕捉.解除.结网.畋猎.入殓.破土.安葬.", "j": "开市.交易.入宅.嫁娶.", "c": "生肖冲羊", "s": "煞東", "ch": "执", "zc": "正冲正冲辛未", "ts": "仓库厕外西南" }, "d0809": { "y": "沐浴.破屋.坏垣.余事勿取.", "j": "斋醮.开市.", "c": "生肖冲猴", "s": "煞北", "ch": "破", "zc": "正冲正冲壬申", "ts": "房床厕外正南" }, "d0811": { "y": "嫁娶.祭祀.祈福.斋醮.普渡.移徙.入宅.动土.治病.开市.交易.立券.开光.修造.造车器.安香.安床.捕捉.畋猎.结网.", "j": "纳采.订盟.经络.行丧.安葬.探病.", "c": "生肖冲狗", "s": "煞南", "ch": "成", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d0813": { "y": "嫁娶.订盟.纳采.祭祀.斋醮.普渡.解除.出行.会亲友.开市.纳财.修造.动土.竖柱.上梁.开光.开仓.出货财.纳畜.牧养.开池.破土.启攒.", "j": "出火.入宅.造屋.安门.安葬.", "c": "生肖冲鼠", "s": "煞北", "ch": "开", "zc": "正冲正冲丙子", "ts": "仓库碓外西北" }, "d0814": { "y": "嫁娶.普渡.祭祀.祈福.补垣.塞穴.断蚁.筑堤.入殓.除服.成服.安葬.", "j": "动土.破土.掘井.开光.上梁.词讼.", "c": "生肖冲牛", "s": "煞西", "ch": "闭", "zc": "正冲正冲丁丑", "ts": "房床厕外西北" }, "d0815": { "y": "嫁娶.冠笄.祭祀.沐浴.普渡.出行.纳财.扫舍.纳畜.赴任.", "j": "开市.动土.破土.安床.开仓.上梁.", "c": "生肖冲虎", "s": "煞南", "ch": "建", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d0816": { "y": "祭祀.沐浴.理发.整手足甲.冠笄.解除.入殓.移柩.破土.启攒.安葬.", "j": "嫁娶.出行.入宅.开市.安门.", "c": "生肖冲兔", "s": "煞東", "ch": "除", "zc": "正冲正冲己卯", "ts": "占门炉外西北" }, "d0817": { "y": "塑绘.冠笄.嫁娶.会亲友.进人口.经络.裁衣.栽种.纳畜.牧养.补垣.塞穴.捕捉.", "j": "祈福.开市.动土.行丧.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "满", "zc": "正冲正冲庚辰", "ts": "厨灶栖外西北" }, "d0818": { "y": "出行.沐浴.订盟.纳采.裁衣.竖柱.上梁.移徙.纳畜.牧养.", "j": "嫁娶.安门.动土.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "平", "zc": "正冲正冲辛巳", "ts": "仓库床外西北" }, "d0821": { "y": "破屋.坏垣.治病.余事勿取.", "j": "行丧.安葬.", "c": "生肖冲猴", "s": "煞北", "ch": "破", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d0823": { "y": "祈福.求嗣.解除.订盟.纳采.动土.起基.放水.造仓.开市.纳畜.牧养.开生坟.入殓.除服.成服.移柩.破土.安葬.", "j": "", "c": "生肖冲狗", "s": "煞南", "ch": "成", "zc": "正冲正冲丙戌", "ts": "仓库栖外正北" }, "d0825": { "y": "祈福.出行.订盟.纳采.嫁娶.裁衣.动土.安床.放水.开市.掘井.交易.立券.栽种.开渠.除服.成服.移柩.破土.", "j": "", "c": "生肖冲鼠", "s": "煞北", "ch": "开", "zc": "正冲正冲戊子", "ts": "占门碓房内北" }, "d0826": { "y": "嫁娶.祭祀.祈福.斋醮.作灶.移徙.入宅.", "j": "动土.破土.", "c": "生肖冲牛", "s": "煞西", "ch": "闭", "zc": "正冲正冲己丑", "ts": "碓磨厕房内北" }, "d0827": { "y": "嫁娶.出行.纳畜.祭祀.入殓.启攒.安葬.", "j": "作灶.动土.破土.", "c": "生肖冲虎", "s": "煞南", "ch": "建", "zc": "正冲正冲庚寅", "ts": "厨灶炉房内北" }, "d0828": { "y": "订盟.纳采.祭祀.祈福.修造.动土.上梁.破土.安葬.", "j": "嫁娶.开市.", "c": "生肖冲兔", "s": "煞東", "ch": "除", "zc": "正冲正冲辛卯", "ts": "仓库门房内北" }, "d0831": { "y": "嫁娶.祭祀.祈福.斋醮.动土.移徙.入宅.", "j": "开市.安葬.", "c": "生肖冲马", "s": "煞南", "ch": "定", "zc": "正冲正冲甲午", "ts": "占碓磨房内南" }, "d1030": { "y": "开光.针灸.会亲友.启攒.安葬.", "j": "开市.动土.破土.", "c": "生肖冲马", "s": "煞南", "ch": "满", "zc": "正冲正冲甲午", "ts": "占碓磨房内南" }, "d0901": { "y": "捕捉.结网.入殓.破土.安葬.", "j": "嫁娶.入宅.", "c": "生肖冲羊", "s": "煞東", "ch": "执", "zc": "正冲正冲乙未", "ts": "厨灶厕房内南" }, "d0902": { "y": "沐浴.治病.破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲猴", "s": "煞北", "ch": "破", "zc": "正冲正冲丙申", "ts": "仓库炉房内南" }, "d0903": { "y": "嫁娶.订盟.纳采.出行.开市.祭祀.祈福.移徙.入宅.启攒.安葬.", "j": "动土.破土.", "c": "生肖冲鸡", "s": "煞西", "ch": "危", "zc": "正冲正冲丁酉", "ts": "房床门房内南" }, "d0904": { "y": "嫁娶.订盟.纳采.祭祀.祈福.求医.治病.动土.移徙.入宅.破土.安葬.", "j": "开光.针灸.", "c": "生肖冲狗", "s": "煞南", "ch": "成", "zc": "正冲正冲戊戌", "ts": "门鸡栖房内东" }, "d0905": { "y": "订盟.纳采.祭祀.祈福.安机械.作灶.纳畜.", "j": "动土.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "收", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d0906": { "y": "嫁娶.祭祀.祈福.求嗣.出行.动土.安床.掘井.破土.启攒.", "j": "入宅.作梁.安门.伐木.修造.上梁.入殓.造屋.", "c": "生肖冲鼠", "s": "煞北", "ch": "开", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d0907": { "y": "嫁娶.祭祀.祈福.求嗣.出行.出火.拆卸.修造.移徙.动土.安床.入殓.破土.安葬.启攒.", "j": "造屋.开光.理发.造船.掘井.作灶.", "c": "生肖冲牛", "s": "煞西", "ch": "闭", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d0908": { "y": "冠笄.沐浴.出行.修造.动土.移徙.入宅.破土.安葬.", "j": "嫁娶.开市.祭祀.祈福.斋醮.纳采.修坟.", "c": "生肖冲虎", "s": "煞南", "ch": "闭", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" }, "d0909": { "y": "祭祀.出行.", "j": "嫁娶.入宅.修造.动土.会亲友.破土.", "c": "生肖冲兔", "s": "煞東", "ch": "建", "zc": "正冲正冲癸卯", "ts": "占大门外东北" }, "d0910": { "y": "嫁娶.订盟.纳采.祭祀.祈福.出行.修造.动土.移徙.入宅.", "j": "针灸.伐木.作梁.造庙.行丧.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "除", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d0911": { "y": "出行.开市.交易.立券.安机械.出火.上梁.移徙.", "j": "嫁娶.安葬.动土.造桥.", "c": "生肖冲蛇", "s": "煞西", "ch": "满", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d0912": { "y": "祭祀.沐浴.修饰垣墙.平治道涂.余事勿取.", "j": "斋醮.嫁娶.移徙.出行.上梁.入宅.", "c": "生肖冲马", "s": "煞南", "ch": "平", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d0913": { "y": "嫁娶.造车器.安机械.祭祀.祈福.开光.安香.出火.出行.开市.立券.修造.动土.移徙.入宅.破土.安葬.", "j": "纳采.订盟.架马.词讼.开渠.", "c": "生肖冲羊", "s": "煞東", "ch": "定", "zc": "正冲正冲丁未", "ts": "房床厕外东北" }, "d0914": { "y": "沐浴.捕捉.入殓.除服.成服.破土.启攒.安葬.", "j": "祭祀.嫁娶.安床.开市.入宅.探病.上梁.", "c": "生肖冲猴", "s": "煞北", "ch": "执", "zc": "正冲正冲戊申", "ts": "占门炉外东北" }, "d0915": { "y": "余事勿取.", "j": "探病.余事勿取.", "c": "生肖冲鸡", "s": "煞西", "ch": "破", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d0916": { "y": "订盟.纳采.祭祀.祈福.安香.出火.修造.动土.上梁.安门.起基.竖柱.上梁.定磉.开池.移徙.入宅.立券.破土.", "j": "嫁娶.造庙.造桥.造船.作灶.安葬.", "c": "生肖冲狗", "s": "煞南", "ch": "危", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d0917": { "y": "开光.求嗣.雕刻.嫁娶.订盟.纳采.出火.拆卸.修造.动土.起基.上梁.放水.移徙.入宅.造仓.造船.开市.开池.纳畜.牧养.挂匾.", "j": "行丧.安葬.合寿木.", "c": "生肖冲猪", "s": "煞東", "ch": "成", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d0918": { "y": "祭祀.嫁娶.捕捉.", "j": "开光.动土.破土.开市.修造.入宅.安门.", "c": "生肖冲鼠", "s": "煞北", "ch": "收", "zc": "正冲正冲壬子", "ts": "房床碓外正东" }, "d0919": { "y": "祭祀.普渡.解除.会亲友.捕捉.畋猎.启攒.除服.成服.移柩.", "j": "嫁娶.开市.动土.掘井.开池.安葬.", "c": "生肖冲牛", "s": "煞西", "ch": "开", "zc": "正冲正冲癸丑", "ts": "占门厕外正东" }, "d0920": { "y": "祭祀.出行.解除.冠笄.嫁娶.伐木.架马.开柱眼.修造.动土.移徙.入宅.开生坟.合寿木.入殓.移柩.破土.安葬.修坟.", "j": "开光.安床.", "c": "生肖冲虎", "s": "煞南", "ch": "闭", "zc": "正冲正冲甲寅", "ts": "碓磨炉外东南" }, "d0921": { "y": "祭祀.祈福.求嗣.出行.沐浴.交易.扫舍.教牛马.", "j": "动土.作灶.行丧.安葬.修坟.", "c": "生肖冲兔", "s": "煞東", "ch": "建", "zc": "正冲正冲乙卯", "ts": "厨灶门外东南" }, "d0922": { "y": "出行.解除.纳采.冠笄.雕刻.修造.动土.起基.上梁.合脊.安床.移徙.入宅.开市.栽种.作厕.", "j": "造庙.安门.行丧.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "除", "zc": "正冲正冲丙辰", "ts": "仓库栖外东南" }, "d0923": { "y": "祭祀.沐浴.解除.理发.冠笄.安机械.作灶.造仓.开市.开池.作厕.补垣.塞穴.断蚁.结网.", "j": "嫁娶.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "满", "zc": "正冲正冲丁巳", "ts": "占房床外东南" }, "d0924": { "y": "祭祀.沐浴.修饰垣墙.平治道涂.", "j": "嫁娶.入宅.", "c": "生肖冲马", "s": "煞南", "ch": "平", "zc": "正冲正冲戊午", "ts": "占门碓外东南" }, "d0925": { "y": "祭祀.会亲友.纳采.嫁娶.开光.塑绘.斋醮.安香.开市.立券.除服.成服.入殓.移柩.安葬.赴任.进人口.出行.裁衣.修造.动土.上梁.经络.交易.", "j": "入宅.伐木.", "c": "生肖冲羊", "s": "煞東", "ch": "定", "zc": "正冲正冲己未", "ts": "碓磨厕外东南" }, "d0926": { "y": "祭祀.冠笄.会亲友.拆卸.起基.除服.成服.移柩.启攒.安葬.沐浴.捕捉.开光.塑绘.", "j": "作灶.祭祀.入宅.嫁娶.", "c": "生肖冲猴", "s": "煞北", "ch": "执", "zc": "正冲正冲庚申", "ts": "厨灶炉外正南" }, "d0927": { "y": "祭祀.沐浴.破屋.坏垣.余事勿取.", "j": "移徙.入宅.出行.栽种.", "c": "生肖冲鸡", "s": "煞西", "ch": "破", "zc": "正冲正冲辛酉", "ts": "仓库门外正南" }, "d0928": { "y": "祭祀.塑绘.开光.出行.解除.订盟.嫁娶.拆卸.起基.安床.入宅.开市.入殓.除服.成服.移柩.破土.谢土.挂匾.开柱眼.交易.", "j": "造桥.冠笄.造屋.掘井.", "c": "生肖冲狗", "s": "煞南", "ch": "危", "zc": "正冲正冲壬戌", "ts": "房床栖外正南" }, "d0929": { "y": "祭祀.赴任.动土.上梁.开光.塑绘.冠笄.拆卸.起基.安床.开市.立券.赴任.经络.", "j": "定磉.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "成", "zc": "正冲正冲癸亥", "ts": "占门床外正南" }, "d1020": { "y": "捕捉.结网.入殓.除服.成服.移柩.破土.安葬.启攒.立碑.", "j": "嫁娶.祭祀.入宅.造屋.移徙.", "c": "生肖冲猴", "s": "煞北", "ch": "定", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d1010": { "y": "祭祀.沐浴.解除.破屋.坏垣.余事勿取.", "j": "开市.嫁娶.", "c": "生肖冲狗", "s": "煞南", "ch": "破", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d1026": { "y": "祭祀.祈福.斋醮.沐浴.竖柱.订盟.纳采.嫁娶.拆卸.入宅.移柩.启攒.谢土.赴任.出火.纳畜.", "j": "作灶.入殓.安葬.安床.", "c": "生肖冲虎", "s": "煞南", "ch": "开", "zc": "正冲正冲庚寅", "ts": "厨灶炉房内北" }, "d1023": { "y": "会亲友.嫁娶.订盟.纳采.纳婿.拆卸.修造.动土.起基.竖柱.上梁.安床.会亲友.纳财.", "j": "出行.祈福.安葬.作灶.", "c": "生肖冲猪", "s": "煞東", "ch": "危", "zc": "正冲正冲丁亥", "ts": "占房床房内北" }, "d1126": { "y": "祭祀.祈福.订盟.纳采.裁衣.拆卸.修造.动土.起基.安床.移徙.入宅.安香.入殓.移柩.安葬.谢土.赴任.进人口.会亲友.", "j": "作灶.治病.", "c": "生肖冲鸡", "s": "煞西", "ch": "定", "zc": "正冲正冲辛酉", "ts": "仓库门外正南" }, "d1001": { "y": "祭祀.诸事不宜.", "j": "入殓.安葬.开市.交易.", "c": "生肖冲牛", "s": "煞西", "ch": "开", "zc": "正冲正冲乙丑", "ts": "厨灶厕外西南" }, "d1002": { "y": "祭祀.裁衣.冠笄.嫁娶.安机械.拆卸.动土.起基.移徙.入宅.入殓.启攒.安葬.造仓.经络.", "j": "安床.开光.开市.交易.", "c": "生肖冲虎", "s": "煞南", "ch": "闭", "zc": "正冲正冲丙寅", "ts": "仓库炉外西南" }, "d1003": { "y": "祭祀.出行.成服.除服.沐浴.入殓.", "j": "动土.冠笄.移徙.入宅.开市.竖柱.上梁.", "c": "生肖冲兔", "s": "煞東", "ch": "建", "zc": "正冲正冲丁卯", "ts": "房床门外西南" }, "d1004": { "y": "祭祀.沐浴.赴任.出行.余事勿取.", "j": "诸事不宜.", "c": "生肖冲龙", "s": "煞北", "ch": "除", "zc": "正冲正冲戊辰", "ts": "门鸡栖外西南" }, "d1005": { "y": "诸事不宜.", "j": "诸事不宜.", "c": "生肖冲蛇", "s": "煞西", "ch": "满", "zc": "正冲正冲己巳", "ts": "碓磨床外西南" }, "d1006": { "y": "沐浴.入殓.移柩.除服.成服.破土.平治道涂.", "j": "嫁娶.移徙.入宅.开市.", "c": "生肖冲马", "s": "煞南", "ch": "平", "zc": "正冲正冲庚午", "ts": "厨灶碓外西南" }, "d1007": { "y": "嫁娶.祭祀.祈福.求嗣.沐浴.出火.出行.拆卸.修造.动土.进人口.开市.交易.立券.入宅.移徙.安床.栽种.纳畜.入殓.安葬.启攒.除服.成服.", "j": "", "c": "生肖冲羊", "s": "煞東", "ch": "定", "zc": "正冲正冲辛未", "ts": "仓库厕外西南" }, "d1008": { "y": "捕捉.畋猎.余事勿取.", "j": "开市.交易.祭祀.入宅.安葬.", "c": "生肖冲猴", "s": "煞北", "ch": "定", "zc": "正冲正冲壬申", "ts": "房床厕外正南" }, "d1009": { "y": "嫁娶.纳采.订盟.祭祀.祈福.求嗣.斋醮.开光.安香.出火.造庙.移徙.出行.入宅.造庙.起基.竖柱.上梁.安床.纳畜.捕捉.纳婿.安葬.", "j": "开市.破土.掘井.合寿木.", "c": "生肖冲鸡", "s": "煞西", "ch": "执", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d1011": { "y": "订盟.纳采.会亲友.交易.立券.纳财.栽种.纳畜.牧养.", "j": "嫁娶.开市.入宅.祈福.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "危", "zc": "正冲正冲乙亥", "ts": "厨灶床外正西" }, "d1012": { "y": "造车器.嫁娶.订盟.纳采.会亲友.祭祀.出行.开市.立券.移徙.入宅.破土.安葬.", "j": "上梁.开光.造屋.架马.合寿木.", "c": "生肖冲鼠", "s": "煞北", "ch": "成", "zc": "正冲正冲丙子", "ts": "仓库碓外西北" }, "d1013": { "y": "祭祀.作灶.纳财.捕捉.畋猎.余事勿取.", "j": "动土.破土.开市.安葬.", "c": "生肖冲牛", "s": "煞西", "ch": "收", "zc": "正冲正冲丁丑", "ts": "房床厕外西北" }, "d1014": { "y": "嫁娶.订盟.纳采.祭祀.祈福.出行.求医.治病.出火.移徙.入宅.", "j": "开市.开仓.出货财.安床.安门.安葬.", "c": "生肖冲虎", "s": "煞南", "ch": "开", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d1015": { "y": "冠笄.祭祀.沐浴.作灶.理发.整手足甲.扫舍.补垣.塞穴.入殓.破土.启攒.", "j": "开光.嫁娶.会亲友.栽种.针灸.安葬.", "c": "生肖冲兔", "s": "煞東", "ch": "闭", "zc": "正冲正冲己卯", "ts": "占门炉外西北" }, "d1016": { "y": "纳采.订盟.嫁娶.祭祀.祈福.求嗣.置产.求医.治病.开市.交易.立券.会亲友.移徙.竖柱.上梁.造屋.合脊.安门.放水.捕捉.纳畜.", "j": "造庙.造船.动土.破土.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "建", "zc": "正冲正冲庚辰", "ts": "厨灶栖外西北" }, "d1017": { "y": "出行.造车器.造畜椆栖.解除.冠笄.裁衣.作梁.雕刻.会亲友.移徙.入宅.安机械.造畜椆栖.开市.扫舍.", "j": "嫁娶.动土.破土.修坟.", "c": "生肖冲蛇", "s": "煞西", "ch": "除", "zc": "正冲正冲辛巳", "ts": "仓库床外西北" }, "d1018": { "y": "沐浴.理发.冠笄.安床.开市.立券.会亲友.交易.纳财.结网.教牛马.", "j": "移徙.入宅.出行.祈福.嫁娶.", "c": "生肖冲马", "s": "煞南", "ch": "满", "zc": "正冲正冲壬午", "ts": "房床碓外正北" }, "d1019": { "y": "祭祀.造畜椆栖.修饰垣墙.平治道涂.余事勿取.", "j": "嫁娶.开市.安床.掘井.", "c": "生肖冲羊", "s": "煞東", "ch": "平", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d1021": { "y": "祭祀.祈福.求嗣.斋醮.造庙.出火.安机械.会亲友.开市.交易.立券.纳财.习艺.经络.求医.治病.开池.作厕.畋猎.结网.栽种.牧养.安葬.破土.启攒.", "j": "开光.嫁娶.掘井.伐木.作梁.", "c": "生肖冲鸡", "s": "煞西", "ch": "执", "zc": "正冲正冲乙酉", "ts": "厨灶门外正北" }, "d1022": { "y": "破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲狗", "s": "煞南", "ch": "破", "zc": "正冲正冲丙戌", "ts": "仓库栖外正北" }, "d1024": { "y": "祭祀.塑绘.开光.祈福.斋醮.出行.订盟.纳采.裁衣.嫁娶.拆卸.修造.安床.入宅.安香.入殓.启攒.安葬.谢土.赴任.会亲友.进人口.出行.移徙.上梁.经络.开市.交易.立券.纳财.", "j": "开仓.冠笄.伐木.作梁.", "c": "生肖冲鼠", "s": "煞北", "ch": "成", "zc": "正冲正冲戊子", "ts": "占门碓房内北" }, "d1025": { "y": "祭祀.作灶.入殓.除服.成服.畋猎.", "j": "栽种.动土.安葬.开市.", "c": "生肖冲牛", "s": "煞西", "ch": "收", "zc": "正冲正冲己丑", "ts": "碓磨厕房内北" }, "d1027": { "y": "嫁娶.祭祀.安机械.入殓.破土.安葬.", "j": "动土.上梁.", "c": "生肖冲兔", "s": "煞東", "ch": "闭", "zc": "正冲正冲辛卯", "ts": "仓库门房内北" }, "d1028": { "y": "作灶.造畜椆栖.", "j": "行丧.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "建", "zc": "正冲正冲壬辰", "ts": "房床栖房内南" }, "d1029": { "y": "沐浴.理发.入学.习艺.进人口.", "j": "嫁娶.入宅.", "c": "生肖冲蛇", "s": "煞西", "ch": "除", "zc": "正冲正冲癸巳", "ts": "占门床房内南" }, "d1031": { "y": "祭祀.结网.造畜椆栖.余事勿取.", "j": "余事勿取.", "c": "生肖冲羊", "s": "煞東", "ch": "平", "zc": "正冲正冲乙未", "ts": "厨灶厕房内南" }, "d1129": { "y": "祭祀.解除.祈福.开光.塑绘.斋醮.订盟.纳采.裁衣.冠笄.拆卸.修造.动土.入殓.除服.成服.移柩.启攒.安床.赴任.出行.移徙.竖柱.上梁.伐木.栽种.破土.安葬.纳畜.", "j": "造屋.治病.", "c": "生肖冲鼠", "s": "煞北", "ch": "危", "zc": "正冲正冲甲子", "ts": "占碓磨外正南" }, "d1120": { "y": "祭祀.祈福.求嗣.斋醮.沐浴.冠笄.出行.理发.拆卸.解除.起基.动土.定磉.安碓硙.开池.掘井.扫舍.除服.成服.移柩.启攒.立碑.谢土.", "j": "移徙.入宅.安门.作梁.安葬.", "c": "生肖冲兔", "s": "煞東", "ch": "开", "zc": "正冲正冲乙卯", "ts": "厨灶门外东南" }, "d1128": { "y": "祭祀.解除.破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲猪", "s": "煞東", "ch": "破", "zc": "正冲正冲癸亥", "ts": "占门床外正南" }, "d1122": { "y": "祭祀.沐浴.余事勿取.", "j": "诸事不宜.", "c": "生肖冲蛇", "s": "煞西", "ch": "建", "zc": "正冲正冲丁巳", "ts": "占房床外东南" }, "d1127": { "y": "祭祀.塑绘.开光.订盟.纳采.嫁娶.安床.进人口.入殓.除服.成服.移柩.启攒.安葬.立碑.", "j": "开市.交易.破土.作灶.", "c": "生肖冲狗", "s": "煞南", "ch": "执", "zc": "正冲正冲壬戌", "ts": "房床栖外正南" }, "d1220": { "y": "祭祀.入殓.移柩.余事勿取.", "j": "入宅.修造.动土.破土.安门.上梁.", "c": "生肖冲鸡", "s": "煞西", "ch": "平", "zc": "正冲正冲乙酉", "ts": "厨灶门外正北" }, "d1101": { "y": "入殓.除服.成服.移柩.破土.启攒.安葬.", "j": "移徙.入宅.", "c": "生肖冲猴", "s": "煞北", "ch": "定", "zc": "正冲正冲丙申", "ts": "仓库炉房内南" }, "d1102": { "y": "嫁娶.订盟.纳采.出行.祭祀.祈福.动土.移徙.入宅.破土.安葬.", "j": "开市.赴任.", "c": "生肖冲鸡", "s": "煞西", "ch": "执", "zc": "正冲正冲丁酉", "ts": "房床门房内南" }, "d1103": { "y": "祭祀.解除.破屋.坏垣.余事勿取.", "j": "余事勿取.", "c": "生肖冲狗", "s": "煞南", "ch": "破", "zc": "正冲正冲戊戌", "ts": "门鸡栖房内东" }, "d1104": { "y": "订盟.纳采.会亲友.安机械.纳财.牧养.", "j": "祈福.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "危", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d1105": { "y": "嫁娶.订盟.纳采.出行.开市.祭祀.祈福.动土.移徙.入宅.破土.安葬.", "j": "斋醮.安门.", "c": "生肖冲鼠", "s": "煞北", "ch": "成", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d1106": { "y": "祭祀.塞穴.余事勿取.", "j": "诸事不宜.", "c": "生肖冲牛", "s": "煞西", "ch": "收", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d1107": { "y": "祭祀.祈福.求嗣.开光.开市.出行.解除.动土.起基.置产.栽种.", "j": "嫁娶.作灶.修坟.安门.入宅.立碑.安葬.安床.", "c": "生肖冲虎", "s": "煞南", "ch": "开", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" }, "d1108": { "y": "开市.纳财.出行.祭祀.祈福.求嗣.斋醮.问名.入学.起基.定磉.置产.开渠.掘井.拆卸.栽种.纳畜.牧养.动土.破土.启攒.", "j": "移徙.入宅.出火.入殓.安葬.", "c": "生肖冲兔", "s": "煞東", "ch": "开", "zc": "正冲正冲癸卯", "ts": "占大门外东北" }, "d1109": { "y": "祭祀.理发.置产.塞穴.除服.成服.移柩.入殓.破土.安葬.", "j": "嫁娶.入宅.安床.掘井.开光.", "c": "生肖冲龙", "s": "煞北", "ch": "闭", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d1110": { "y": "祭祀.沐浴.出行.余事勿取.", "j": "开市.动土.破土.行丧.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "建", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d1111": { "y": "嫁娶.造车器.出行.会亲友.移徙.入宅.修造.动土.雕刻.开光.安香.出火.理发.会亲友.造屋.合脊.起基.归岫.安门.拆卸.扫舍.栽种.造畜椆栖.", "j": "开市.纳采.造庙.安床.开渠.安葬.", "c": "生肖冲马", "s": "煞南", "ch": "除", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d1112": { "y": "塑绘.会亲友.安机械.塞穴.结网.裁衣.经络.", "j": "嫁娶.开市.祈福.斋醮.安葬.", "c": "生肖冲羊", "s": "煞東", "ch": "满", "zc": "正冲正冲丁未", "ts": "房床厕外东北" }, "d1113": { "y": "纳采.移徙.纳财.开市.交易.立券.纳财.入宅.修造.动土.竖柱.起基.定磉.造庙.安香.出火.修饰垣墙.平治道涂.会亲友.出行.开池.作厕.", "j": "开仓.造屋.造桥.祭祀.", "c": "生肖冲猴", "s": "煞北", "ch": "平", "zc": "正冲正冲戊申", "ts": "占门炉外东北" }, "d1114": { "y": "订盟.纳采.纳财.开市.立券.祭祀.祈福.移徙.入宅.出行.造屋.起基.修造.动土.竖柱.上梁.安门.安香.出火.教牛马.会亲友.破土.", "j": "嫁娶.安葬.掘井.置产.造船.", "c": "生肖冲鸡", "s": "煞西", "ch": "定", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d1115": { "y": "嫁娶.订盟.纳采.祭祀.祈福.塑绘.开光.移徙.安床.伐木.作梁.捕捉.畋猎.结网.求医.治病.解除.安葬.除服.成服.移柩.入殓.立碑.谢土.", "j": "开市.造庙.动土.破土.", "c": "生肖冲狗", "s": "煞南", "ch": "执", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d1116": { "y": "破屋.坏垣.祭祀.余事勿取.", "j": "嫁娶.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "破", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d1117": { "y": "嫁娶.纳采.订盟.祭祀.冠笄.裁衣.伐木.作梁.架马.定磉.开柱眼.作灶.移徙.安床.畋猎.结网.开池.作厕.除服.成服.启攒.入殓.移柩.安葬.", "j": "造屋.造船.动土.破土.", "c": "生肖冲鼠", "s": "煞北", "ch": "危", "zc": "正冲正冲壬子", "ts": "房床碓外正东" }, "d1118": { "y": "纳采.订盟.祭祀.祈福.求嗣.斋醮.开光.会亲友.解除.入学.纳财.交易.立券.经络.起基.动土.定磉.开池.栽种.纳畜.牧养.破土.入殓.立碑.安葬.", "j": "嫁娶.开市.入宅.出火.移徙.", "c": "生肖冲牛", "s": "煞西", "ch": "成", "zc": "正冲正冲癸丑", "ts": "占门厕外正东" }, "d1119": { "y": "捕捉.畋猎.会亲友.解除.入殓.除服.成服.移柩.余事勿取.", "j": "安床.安门.破土.修坟.安葬.", "c": "生肖冲虎", "s": "煞南", "ch": "收", "zc": "正冲正冲甲寅", "ts": "碓磨炉外东南" }, "d1121": { "y": "嫁娶.冠笄.安床.纳采.会亲友.塞穴.捕捉.置产.造畜椆栖.", "j": "开光.掘井.安葬.谢土.修坟.", "c": "生肖冲龙", "s": "煞北", "ch": "闭", "zc": "正冲正冲丙辰", "ts": "仓库栖外东南" }, "d1123": { "y": "祭祀.会亲友.嫁娶.沐浴.修造.动土.祈福.开光.塑绘.出行.订盟.纳采.裁衣.入殓.除服.成服.移柩.启攒.赴任.竖柱.上梁.纳财.扫舍.栽种.纳畜.伐木.", "j": "入宅.作灶.安床.开仓.", "c": "生肖冲马", "s": "煞南", "ch": "除", "zc": "正冲正冲戊午", "ts": "占门碓外东南" }, "d1124": { "y": "理发.会亲友.补垣.塞穴.结网.", "j": "嫁娶.入宅.安门.移徙.", "c": "生肖冲羊", "s": "煞東", "ch": "满", "zc": "正冲正冲己未", "ts": "碓磨厕外东南" }, "d1125": { "y": "祭祀.祈福.订盟.纳采.裁衣.拆卸.修造.动土.起基.安床.移徙.入宅.安香.除服.成服.入殓.移柩.安葬.谢土.赴任.会亲友.进人口.出行.竖柱.上梁.经络.开市.交易.立券.纳财.开仓.", "j": "作灶.治病.伐木.作梁.", "c": "生肖冲猴", "s": "煞北", "ch": "平", "zc": "正冲正冲庚申", "ts": "厨灶炉外正南" }, "d1130": { "y": "祭祀.祈福.订盟.纳采.裁衣.合帐.冠笄.安机械.安床.造畜椆栖.入殓.移柩.启攒.安葬.谢土.除服.成服.会亲友.竖柱.上梁.经络.开市.交易.立券.纳财.纳畜.筑堤.", "j": "嫁娶.入宅.治病.赴任.", "c": "生肖冲牛", "s": "煞西", "ch": "成", "zc": "正冲正冲乙丑", "ts": "厨灶厕外西南" }, "d1230": { "y": "嫁娶.出行.求医.治病.祭祀.祈福.上梁.纳畜.", "j": "开市.安葬.", "c": "生肖冲羊", "s": "煞東", "ch": "除", "zc": "正冲正冲乙未", "ts": "厨灶厕房内南" }, "d1229": { "y": "教牛马.余事勿取.", "j": "入宅.动土.破土.余事勿取.", "c": "生肖冲马", "s": "煞南", "ch": "建", "zc": "正冲正冲甲午", "ts": "占碓磨房内南" }, "d1226": { "y": "祭祀.沐浴.安床.纳财.畋猎.捕捉.", "j": "开市.破土.", "c": "生肖冲兔", "s": "煞東", "ch": "收", "zc": "正冲正冲辛卯", "ts": "仓库门房内北" }, "d1222": { "y": "祭祀.塑绘.开光.裁衣.冠笄.嫁娶.纳采.拆卸.修造.动土.竖柱.上梁.安床.移徙.入宅.安香.结网.捕捉.畋猎.伐木.进人口.放水.", "j": "出行.安葬.修坟.开市.", "c": "生肖冲猪", "s": "煞東", "ch": "执", "zc": "正冲正冲丁亥", "ts": "占房床房内北" }, "d1206": { "y": "诸事不宜.", "j": "诸事不宜.", "c": "生肖冲羊", "s": "煞東", "ch": "满", "zc": "正冲正冲辛未", "ts": "仓库厕外西南" }, "d1225": { "y": "塑绘.斋醮.出行.拆卸.解除.修造.移徙.造船.入殓.除服.成服.移柩.启攒.修坟.立碑.谢土.", "j": "", "c": "生肖冲虎", "s": "煞南", "ch": "成", "zc": "正冲正冲庚寅", "ts": "厨灶炉房内北" }, "d1202": { "y": "诸事不宜.", "j": "诸事不宜.", "c": "生肖冲兔", "s": "煞東", "ch": "开", "zc": "正冲正冲丁卯", "ts": "房床门外西南" }, "d1205": { "y": "祭祀.祈福.斋醮.塑绘.开光.订盟.纳采.裁衣.冠笄.嫁娶.拆卸.入宅.安香.入殓.移柩.理发.安葬.修坟.谢土.赴任.移徙.沐浴.治病.破土.启攒.整手足甲.入学.作梁.", "j": "开市.", "c": "生肖冲马", "s": "煞南", "ch": "除", "zc": "正冲正冲庚午", "ts": "厨灶碓外西南" }, "d1209": { "y": "嫁娶.冠笄.祭祀.祈福.求嗣.雕刻.开光.安香.出行.入学.修造.动土.竖柱.上梁.造屋.起基.安门.出火.移徙.入宅.掘井.造畜椆栖.安葬.破土.除服.成服.", "j": "开市.纳采.订盟.作灶.造庙.造船.经络.", "c": "生肖冲狗", "s": "煞南", "ch": "定", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d1219": { "y": "纳财.开市.交易.立券.会亲友.进人口.经络.祭祀.祈福.安香.出火.求医.治病.修造.动土.拆卸.扫舍.安床.栽种.牧养.开生坟.合寿木.入殓.安葬.启攒.", "j": "嫁娶.祈福.出火.移徙.入宅.", "c": "生肖冲猴", "s": "煞北", "ch": "满", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d1212": { "y": "冠笄.纳财.掘井.开池.出火.安床.交易.立券.畋猎.结网.理发.放水.", "j": "安门.动土.破土.行丧.安葬.成服.", "c": "生肖冲牛", "s": "煞西", "ch": "危", "zc": "正冲正冲丁丑", "ts": "房床厕外西北" }, "d1201": { "y": "沐浴.扫舍.余事勿取.", "j": "诸事不宜.", "c": "生肖冲虎", "s": "煞南", "ch": "收", "zc": "正冲正冲丙寅", "ts": "仓库炉外西南" }, "d1203": { "y": "祈福.斋醮.出行.订盟.纳采.入殓.移柩.破土.安葬.立碑.结网.", "j": "入宅.作灶.", "c": "生肖冲龙", "s": "煞北", "ch": "闭", "zc": "正冲正冲戊辰", "ts": "门鸡栖外西南" }, "d1204": { "y": "祭祀.沐浴.出行.冠笄.进人口.余事勿取.", "j": "嫁娶.动土.安葬.作灶.", "c": "生肖冲蛇", "s": "煞西", "ch": "建", "zc": "正冲正冲己巳", "ts": "碓磨床外西南" }, "d1207": { "y": "订盟.纳采.会亲友.安机械.开光.修造.动土.竖柱.上梁.造屋.起基.造桥.栽种.纳畜.造畜椆栖.移柩.入殓.启攒.修坟.立碑.安葬.", "j": "祈福.出火.嫁娶.入宅.开市.动土.破土.", "c": "生肖冲猴", "s": "煞北", "ch": "满", "zc": "正冲正冲壬申", "ts": "房床厕外正南" }, "d1208": { "y": "祭祀.平治道涂.修坟.除服.成服.余事勿取.", "j": "移徙.入宅.嫁娶.掘井.安葬.", "c": "生肖冲鸡", "s": "煞西", "ch": "平", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d1210": { "y": "嫁娶.订盟.纳采.祭祀.祈福.求嗣.斋醮.安香.出火.修造.起基.造屋.合脊.安门.安碓硙.动土.上梁.移徙.入宅.", "j": "出行.掘井.破土.行丧.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "执", "zc": "正冲正冲乙亥", "ts": "厨灶床外正西" }, "d1211": { "y": "祭祀.沐浴.破屋.坏垣.余事勿取.", "j": "嫁娶.移徙.入宅.探病.出行.造屋.", "c": "生肖冲鼠", "s": "煞北", "ch": "破", "zc": "正冲正冲丙子", "ts": "仓库碓外西北" }, "d1213": { "y": "纳采.订盟.移徙.入宅.出行.安机械.会亲友.祭祀.祈福.斋醮.开光.安香.出火.解除.求医.针灸.治病.造屋.起基.修造.安门.造船.纳畜.牧养.移柩.入殓.启攒.谢土.修坟.立碑.", "j": "嫁娶.动土.安床.造桥.掘井.", "c": "生肖冲虎", "s": "煞南", "ch": "成", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d1214": { "y": "祭祀.沐浴.作灶.纳财.捕捉.畋猎.安床.扫舍.", "j": "开市.斋醮.破土.安葬.", "c": "生肖冲兔", "s": "煞東", "ch": "收", "zc": "正冲正冲己卯", "ts": "占门炉外西北" }, "d1215": { "y": "祈福.斋醮.纳采.订盟.解除.架马.开柱眼.修造.动土.起基.上梁.归岫.造屋.合脊.掘井.除服.成服.破土.栽种.", "j": "移徙.开市.入宅.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "开", "zc": "正冲正冲庚辰", "ts": "厨灶栖外西北" }, "d1216": { "y": "纳采.订盟.祭祀.沐浴.冠笄.合帐.裁衣.修造.动土.拆卸.移徙.入宅.安门.开仓.筑堤.作厕.栽种.纳畜.补垣.塞穴.", "j": "嫁娶.祈福.开光.掘井.安葬.行丧.", "c": "生肖冲蛇", "s": "煞西", "ch": "闭", "zc": "正冲正冲辛巳", "ts": "仓库床外西北" }, "d1217": { "y": "合帐.裁衣.教牛马.余事勿取.", "j": "入宅.动土.破土.嫁娶.作灶.造船.", "c": "生肖冲马", "s": "煞南", "ch": "建", "zc": "正冲正冲壬午", "ts": "房床碓外正北" }, "d1218": { "y": "纳采.订盟.嫁娶.祭祀.祈福.安香.出火.出行.会亲友.经络.求医.治病.解除.拆卸.起基.修造.动土.定磉.扫舍.栽种.牧养.造畜椆栖.", "j": "斋醮.作梁.掘井.行丧.安葬.", "c": "生肖冲羊", "s": "煞東", "ch": "除", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d1221": { "y": "塑绘.开光.订盟.纳采.裁衣.冠笄.拆卸.修造.安床.入宅.出火.安葬.谢土.赴任.", "j": "掘井.伐木.斋醮.作灶.", "c": "生肖冲狗", "s": "煞南", "ch": "定", "zc": "正冲正冲丙戌", "ts": "仓库栖外正北" }, "d1223": { "y": "祭祀.求医.破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鼠", "s": "煞北", "ch": "破", "zc": "正冲正冲戊子", "ts": "占门碓房内北" }, "d1224": { "y": "祭祀.祈福.斋醮.出行.冠笄.安机械.移徙.入宅.安香.安床.除服.成服.移柩.启攒.", "j": "开光.栽种.治病.安门.作灶.", "c": "生肖冲牛", "s": "煞西", "ch": "危", "zc": "正冲正冲己丑", "ts": "碓磨厕房内北" }, "d1227": { "y": "订盟.纳采.祭祀.祈福.修造.动土.上梁.破土.", "j": "嫁娶.作灶.", "c": "生肖冲龙", "s": "煞北", "ch": "开", "zc": "正冲正冲壬辰", "ts": "房床栖房内南" }, "d1228": { "y": "出行.沐浴.理发.补垣.塞穴.", "j": "入宅.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "闭", "zc": "正冲正冲癸巳", "ts": "占门床房内南" }, "d1231": { "y": "开市.立券.开光.解除.安机械.上梁.启攒.安葬.", "j": "嫁娶.祈福.", "c": "生肖冲猴", "s": "煞北", "ch": "满", "zc": "正冲正冲丙申", "ts": "仓库炉房内南" } } ukui-panel-4.0.0.4/plugin-calendar/html/hlnew/hl2018.json0000644000175000017500000030252414560306203021313 0ustar fengfeng{ "d0101": { "y": "祭祀.塑绘.开光.裁衣.冠笄.嫁娶.纳采.拆卸.修造.动土.竖柱.上梁.安床.移徙.入宅.安香.结网.捕捉.畋猎.伐木.进人口.放水.", "j": "出行.安葬.修坟.开市.", "c": "生肖冲猪", "s": "煞東", "ch": "执", "zc": "正冲正冲丁亥", "ts": "占房床房内北" }, "d0201": { "y": "祭祀.沐浴.祈福.斋醮.订盟.纳采.裁衣.拆卸.起基.竖柱.上梁.安床.入殓.除服.成服.移柩.启攒.挂匾.求嗣.出行.合帐.造畜椆栖.", "j": "开仓.嫁娶.移徙.入宅.", "c": "生肖冲马", "s": "煞南", "ch": "闭", "zc": "正冲正冲戊午", "ts": "占门碓外东南" }, "d0102": { "y": "祭祀.求医.破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鼠", "s": "煞北", "ch": "破", "zc": "正冲正冲戊子", "ts": "占门碓房内北" }, "d0103": { "y": "祭祀.祈福.斋醮.出行.冠笄.安机械.移徙.入宅.安香.安床.除服.成服.移柩.启攒.", "j": "开光.栽种.治病.安门.作灶.", "c": "生肖冲牛", "s": "煞西", "ch": "危", "zc": "正冲正冲己丑", "ts": "碓磨厕房内北" }, "d0104": { "y": "塑绘.斋醮.出行.拆卸.解除.修造.移徙.造船.入殓.除服.成服.移柩.启攒.修坟.立碑.谢土.", "j": "", "c": "生肖冲虎", "s": "煞南", "ch": "成", "zc": "正冲正冲庚寅", "ts": "厨灶炉房内北" }, "d0105": { "y": "祭祀.斋醮.入殓.破土.启攒.安葬.修坟.立碑.除服.成服.", "j": "嫁娶.入宅.作灶.纳采.订盟.", "c": "生肖冲兔", "s": "煞東", "ch": "成", "zc": "正冲正冲辛卯", "ts": "仓库门房内北" }, "d0106": { "y": "祭祀.斋醮.纳财.捕捉.畋猎.", "j": "嫁娶.开市.入宅.安床.破土.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "收", "zc": "正冲正冲壬辰", "ts": "房床栖房内南" }, "d0107": { "y": "纳采.订盟.祭祀.祈福.求嗣.斋醮.沐浴.进人口.会亲友.入学.治病.安碓硙.掘井.开池.纳畜.牧养.造畜椆栖.", "j": "嫁娶.合帐.入宅.行丧.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "开", "zc": "正冲正冲癸巳", "ts": "占门床房内南" }, "d0108": { "y": "祭祀.祈福.求嗣.沐浴.问名.交易.纳财.入殓.移柩.安葬.修坟.立碑.谢土.造畜椆栖.教牛马.", "j": "入宅.置产.嫁娶.动土.栽种.开市.开光.动土.破土.", "c": "生肖冲马", "s": "煞南", "ch": "闭", "zc": "正冲正冲甲午", "ts": "占碓磨房内南" }, "d0109": { "y": "祭祀.教牛马.造畜椆栖.祭祀.会亲友.解除.余事勿取.", "j": "嫁娶.入宅.出行.动土.破土.安葬.行丧.", "c": "生肖冲羊", "s": "煞東", "ch": "建", "zc": "正冲正冲乙未", "ts": "厨灶厕房内南" }, "d0110": { "y": "嫁娶.开光.解除.出火.拆卸.修造.进人口.入宅.移徙.安床.栽种.入殓.修坟.动土.除服.成服.", "j": "作灶.安葬.祭祀.开市.纳采.订盟.纳畜.谢土.出行.探病.", "c": "生肖冲猴", "s": "煞北", "ch": "除", "zc": "正冲正冲丙申", "ts": "仓库炉房内南" }, "d0111": { "y": "出行.起基.安床.纳财.交易.立券.嫁娶.栽种.入殓.移柩.安葬.", "j": "挂匾.入宅.上梁.祈福.词讼.作梁.作灶.开池.安门.动土.破土.掘井.", "c": "生肖冲鸡", "s": "煞西", "ch": "满", "zc": "正冲正冲丁酉", "ts": "房床门房内南" }, "d0112": { "y": "平治道涂.余事勿取.", "j": "开光.嫁娶.开仓.出货财.造船.安葬.探病.", "c": "生肖冲狗", "s": "煞南", "ch": "平", "zc": "正冲正冲戊戌", "ts": "门鸡栖房内东" }, "d0113": { "y": "嫁娶.订盟.纳采.会亲友.祭祀.安机械.移徙.入宅.造屋.安床.起基.定磉.安香.出火.挂匾.拆卸.置产.", "j": "开市.出行.安葬.行丧.", "c": "生肖冲猪", "s": "煞東", "ch": "定", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d0114": { "y": "沐浴.捕捉.畋猎.理发.整手足甲.入殓.除服.成服.破土.安葬.谢土.立碑.修坟.启攒.", "j": "纳采.订盟.嫁娶.上梁.开市.斋醮.造屋.安门.", "c": "生肖冲鼠", "s": "煞北", "ch": "执", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d0115": { "y": "祭祀.破屋.坏垣.余事勿取.", "j": "斋醮.嫁娶.开市.", "c": "生肖冲牛", "s": "煞西", "ch": "破", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d0116": { "y": "沐浴.开仓.出货财.开市.交易.立券.纳财.栽种.纳畜.牧养.畋猎.入殓.破土.安葬.", "j": "祈福.嫁娶.安床.入宅.造船.", "c": "生肖冲虎", "s": "煞南", "ch": "危", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" }, "d0117": { "y": "祭祀.沐浴.补垣.塞穴.断蚁.解除.余事勿取.", "j": "造庙.入宅.修造.安葬.行丧.嫁娶.", "c": "生肖冲兔", "s": "煞東", "ch": "成", "zc": "正冲正冲癸卯", "ts": "占大门外东北" }, "d0118": { "y": "嫁娶.纳采.订盟.问名.祭祀.冠笄.裁衣.会亲友.进人口.纳财.捕捉.作灶.", "j": "开市.安床.安葬.修坟.", "c": "生肖冲龙", "s": "煞北", "ch": "收", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d0119": { "y": "订盟.纳采.会亲友.祭祀.斋醮.沐浴.塑绘.出火.开光.竖柱.上梁.开市.交易.立券.作梁.开柱眼.伐木.架马.安门.安床.拆卸.牧养.造畜椆栖.掘井.", "j": "造庙.嫁娶.出行.动土.安葬.行丧.", "c": "生肖冲蛇", "s": "煞西", "ch": "开", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d0120": { "y": "交易.立券.纳财.安床.裁衣.造畜椆栖.安葬.谢土.启攒.除服.成服.修坟.立碑.移柩.入殓.", "j": "开光.嫁娶.开市.动土.破土.", "c": "生肖冲马", "s": "煞南", "ch": "闭", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d0121": { "y": "祭祀.解除.教牛马.会亲友.余事勿取.", "j": "破土.动土.安葬.", "c": "生肖冲羊", "s": "煞東", "ch": "建", "zc": "正冲正冲丁未", "ts": "房床厕外东北" }, "d0122": { "y": "纳采.订盟.移徙.纳财.开市.交易.立券.入宅.会亲友.解除.求医.治病.入学.安床.安门.安香.出火.拆卸.扫舍.入宅.挂匾.开生坟.合寿木.破土.修坟.启攒.入殓.", "j": "探病.祭祀.出行.上梁.造屋.谢土.安葬.", "c": "生肖冲猴", "s": "煞北", "ch": "除", "zc": "正冲正冲戊申", "ts": "占门炉外东北" }, "d0123": { "y": "嫁娶.订盟.纳采.祭祀.祈福.求嗣.会亲友.解除.出行.入学.纳财.开市.交易.立券.习艺.经络.安床.开仓.出货财.纳畜.安葬.启攒.修坟.入殓.", "j": "入宅.开光.开市.动土.", "c": "生肖冲鸡", "s": "煞西", "ch": "满", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d0124": { "y": "祭祀.冠笄.嫁娶.会亲友.进人口.裁衣.结网.平治道涂.", "j": "移徙.入宅.造庙.作灶.治病.安葬.", "c": "生肖冲狗", "s": "煞南", "ch": "平", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d0125": { "y": "祭祀.安碓硙.结网.余事勿取.", "j": "嫁娶.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "定", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d0126": { "y": "嫁娶.祭祀.沐浴.裁衣.出行.理发.移徙.捕捉.畋猎.放水.入宅.除服.成服.启攒.安葬.移柩.入殓.", "j": "造屋.开市.动土.破土.", "c": "生肖冲鼠", "s": "煞北", "ch": "执", "zc": "正冲正冲壬子", "ts": "房床碓外正东" }, "d0127": { "y": "破屋.坏垣.余事勿取.", "j": "嫁娶.开市.安葬.", "c": "生肖冲牛", "s": "煞西", "ch": "破", "zc": "正冲正冲癸丑", "ts": "占门厕外正东" }, "d0128": { "y": "纳采.订盟.祭祀.求嗣.出火.塑绘.裁衣.会亲友.入学.拆卸.扫舍.造仓.挂匾.掘井.开池.结网.栽种.纳畜.破土.修坟.立碑.安葬.入殓.", "j": "祈福.嫁娶.造庙.安床.谢土.", "c": "生肖冲虎", "s": "煞南", "ch": "危", "zc": "正冲正冲甲寅", "ts": "碓磨炉外东南" }, "d0129": { "y": "入殓.除服.成服.移柩.启攒.安葬.修坟.立碑.", "j": "开市.伐木.嫁娶.作梁.", "c": "生肖冲兔", "s": "煞東", "ch": "成", "zc": "正冲正冲乙卯", "ts": "厨灶门外东南" }, "d0130": { "y": "祭祀.作灶.入殓.除服.余事勿取.", "j": "开市.安床.", "c": "生肖冲龙", "s": "煞北", "ch": "收", "zc": "正冲正冲丙辰", "ts": "仓库栖外东南" }, "d0131": { "y": "塑绘.开光.沐浴.冠笄.会亲友.作灶.放水.造畜椆栖.", "j": "嫁娶.入殓.安葬.出行.", "c": "生肖冲蛇", "s": "煞西", "ch": "开", "zc": "正冲正冲丁巳", "ts": "占房床外东南" }, "d0227": { "y": "裁衣.合帐.入殓.除服.成服.会亲友.纳财.", "j": "祭祀.祈福.移徙.嫁娶.入宅.", "c": "生肖冲猴", "s": "煞北", "ch": "建", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d0212": { "y": "纳采.祭祀.祈福.出行.会亲友.修造.动土.移徙.入宅.", "j": "嫁娶.开市.安葬.破土.", "c": "生肖冲蛇", "s": "煞西", "ch": "收", "zc": "正冲正冲己巳", "ts": "碓磨床外西南" }, "d0202": { "y": "祭祀.解除.余事勿取.", "j": "诸事不宜.", "c": "生肖冲羊", "s": "煞東", "ch": "建", "zc": "正冲正冲己未", "ts": "碓磨厕外东南" }, "d0222": { "y": "祭祀.冠笄.嫁娶.拆卸.修造.动土.起基.上梁.造屋.入宅.开市.开池.塞穴.入殓.除服.成服.移柩.安葬.破土.", "j": "安床.栽种.治病.作灶.", "c": "生肖冲兔", "s": "煞東", "ch": "危", "zc": "正冲正冲己卯", "ts": "占门炉外西北" }, "d0217": { "y": "会亲友.求嗣.理发.冠笄.结网.捕捉.开光.理发.", "j": "开市.动土.安葬.破土.", "c": "生肖冲狗", "s": "煞南", "ch": "满", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d0225": { "y": "祭祀.沐浴.开光.塑绘.祈福.求嗣.订盟.纳采.冠笄.裁衣.嫁娶.动土.除服.成服.移柩.破土.启攒.出行.安碓硙.放水.开市.立券.交易.", "j": "安葬.上梁.入宅.作灶.", "c": "生肖冲马", "s": "煞南", "ch": "开", "zc": "正冲正冲壬午", "ts": "房床碓外正北" }, "d0215": { "y": "纳采.会亲友.竖柱.上梁.立券.入殓.移柩.安葬.启攒.", "j": "祭祀.移徙.入宅.动土.破土.", "c": "生肖冲猴", "s": "煞北", "ch": "建", "zc": "正冲正冲壬申", "ts": "房床厕外正南" }, "d0207": { "y": "嫁娶.祭祀.冠笄.修饰垣墙.置产.", "j": "经络.探病.造屋.作灶.动土.", "c": "生肖冲鼠", "s": "煞北", "ch": "定", "zc": "正冲正冲甲子", "ts": "占碓磨外正南" }, "d0224": { "y": "塑绘.开光.祈福.求嗣.订盟.纳采.裁衣.冠笄.拆卸.修造.动土.起基.安门.安床.移徙.造仓.结网.纳畜.", "j": "伐木.作灶.安葬.取渔.入宅.", "c": "生肖冲蛇", "s": "煞西", "ch": "收", "zc": "正冲正冲辛巳", "ts": "仓库床外西北" }, "d0315": { "y": "嫁娶.冠笄.会亲友.安机械.纳财.交易.立券.置产.", "j": "开市.造屋.治病.作灶.", "c": "生肖冲鼠", "s": "煞北", "ch": "平", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d0203": { "y": "沐浴.解除.订盟.纳采.裁衣.冠笄.拆卸.修造.动土.移徙.入宅.除服.成服.移柩.破土.启攒.安葬.扫舍.修坟.伐木.纳财.交易.立券.", "j": "作灶.祭祀.上梁.出行.", "c": "生肖冲猴", "s": "煞北", "ch": "除", "zc": "正冲正冲庚申", "ts": "厨灶炉外正南" }, "d0204": { "y": "祭祀.祈福.求嗣.开光.嫁娶.出行.解除.伐木.拆卸.进人口.安床.动土.起基.上梁.栽种.纳畜.破土.谢土.启攒.安葬.", "j": "移徙.入宅.出火.作灶.掘井.", "c": "生肖冲鸡", "s": "煞西", "ch": "除", "zc": "正冲正冲辛酉", "ts": "仓库门外正南" }, "d0205": { "y": "会亲友.冠笄.安床.会亲友.安机械.祭祀.祈福.求嗣.经络.", "j": "嫁娶.开市.动土.作灶.安葬.", "c": "生肖冲狗", "s": "煞南", "ch": "满", "zc": "正冲正冲壬戌", "ts": "房床栖外正南" }, "d0206": { "y": "作灶.解除.平治道涂.余事勿取.", "j": "祭祀.祈福.安葬.安门.", "c": "生肖冲猪", "s": "煞東", "ch": "平", "zc": "正冲正冲癸亥", "ts": "占门床外正南" }, "d0208": { "y": "纳采.嫁娶.祭祀.祈福.出行.修造.动土.移徙.入宅.安葬.破土.", "j": "开市.入宅.斋醮.", "c": "生肖冲牛", "s": "煞西", "ch": "执", "zc": "正冲正冲乙丑", "ts": "厨灶厕外西南" }, "d0209": { "y": "祭祀.沐浴.解除.理发.扫舍.破屋.坏垣.余事勿取.", "j": "嫁娶.安葬.", "c": "生肖冲虎", "s": "煞南", "ch": "破", "zc": "正冲正冲丙寅", "ts": "仓库炉外西南" }, "d0210": { "y": "纳采.订盟.祭祀.祈福.安香.出火.修造.出行.开市.移徙.入宅.动土.安葬.破土.", "j": "安床.作灶.造船.会亲友.", "c": "生肖冲兔", "s": "煞東", "ch": "危", "zc": "正冲正冲丁卯", "ts": "房床门外西南" }, "d0211": { "y": "塞穴.结网.取渔.畋猎.", "j": "嫁娶.安门.移徙.入宅.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "成", "zc": "正冲正冲戊辰", "ts": "门鸡栖外西南" }, "d0213": { "y": "纳采.嫁娶.祭祀.祈福.出行.开市.会亲友.动土.破土.启攒.", "j": "移徙.入宅.出火.安门.安葬.", "c": "生肖冲马", "s": "煞南", "ch": "开", "zc": "正冲正冲庚午", "ts": "厨灶碓外西南" }, "d0214": { "y": "祭祀.祈福.求嗣.斋醮.入殓.除服.成服.移柩.安葬.启攒.", "j": "嫁娶.动土.开光.造屋.破土.", "c": "生肖冲羊", "s": "煞東", "ch": "闭", "zc": "正冲正冲辛未", "ts": "仓库厕外西南" }, "d0216": { "y": "祭祀.祈福.斋醮.出行.开市.立券.动土.移徙.入宅.破土.安葬.", "j": "开光.嫁娶.作灶.掘井.纳畜.", "c": "生肖冲鸡", "s": "煞西", "ch": "除", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d0218": { "y": "祭祀.平治道涂.余事勿取.", "j": "嫁娶.祈福.掘井.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "平", "zc": "正冲正冲乙亥", "ts": "厨灶床外正西" }, "d0219": { "y": "祈福.求嗣.斋醮.纳采.嫁娶.伐木.修造.动土.移徙.入宅.造庙.安机械.开市.入殓.除服.成服.移柩.安葬.破土.谢土.", "j": "置产.造屋.合脊.开光.探病.安门.作灶.", "c": "生肖冲鼠", "s": "煞北", "ch": "定", "zc": "正冲正冲丙子", "ts": "仓库碓外西北" }, "d0220": { "y": "入学.习艺.出行.纳采.订盟.嫁娶.会亲友.进人口.牧养.捕捉.入殓.移柩.安葬.启攒.", "j": "开光.开市.入宅.动土.造屋.", "c": "生肖冲牛", "s": "煞西", "ch": "执", "zc": "正冲正冲丁丑", "ts": "房床厕外西北" }, "d0221": { "y": "祭祀.沐浴.求医.治病.扫舍.破屋.坏垣.解除.余事勿取.", "j": "入宅.开市.安葬.", "c": "生肖冲虎", "s": "煞南", "ch": "破", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d0223": { "y": "祭祀.结网.入殓.除服.成服.移柩.安葬.破土.", "j": "余事勿取.", "c": "生肖冲龙", "s": "煞北", "ch": "成", "zc": "正冲正冲庚辰", "ts": "厨灶栖外西北" }, "d0226": { "y": "祭祀.祈福.求嗣.酬神.裁衣.安床.立券.交易.入殓.除服.成服.移柩.谢土.启攒.", "j": "出行.嫁娶.入宅.动土.", "c": "生肖冲羊", "s": "煞東", "ch": "闭", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d0228": { "y": "祭祀.斋醮.裁衣.合帐.冠笄.订盟.纳采.嫁娶.入宅.安香.谢土.入殓.移柩.破土.立碑.安香.会亲友.出行.祈福.求嗣.立碑.上梁.放水.", "j": "掘井.", "c": "生肖冲鸡", "s": "煞西", "ch": "除", "zc": "正冲正冲乙酉", "ts": "厨灶门外正北" }, "d0325": { "y": "扫舍.塞穴.余事勿取.", "j": "诸事不宜.", "c": "生肖冲狗", "s": "煞南", "ch": "除", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d0415": { "y": "祭祀.捕捉.解除.余事勿取.", "j": "嫁娶.安葬.", "c": "生肖冲羊", "s": "煞東", "ch": "收", "zc": "正冲正冲辛未", "ts": "仓库厕外西南" }, "d0301": { "y": "安床.合帐.入宅.问名.纳采.求嗣.祭祀.开仓.", "j": "斋醮.作灶.安床.安葬.", "c": "生肖冲狗", "s": "煞南", "ch": "满", "zc": "正冲正冲丙戌", "ts": "仓库栖外正北" }, "d0302": { "y": "作灶.平治道涂.", "j": "祭祀.祈福.安葬.安门.余事勿取.", "c": "生肖冲猪", "s": "煞東", "ch": "平", "zc": "正冲正冲丁亥", "ts": "占房床房内北" }, "d0303": { "y": "塑绘.开光.酬神.斋醮.订盟.纳采.裁衣.合帐.拆卸.动土.上梁.安床.安香.造庙.挂匾.会亲友.进人口.出行.修造.纳财.伐木.放水.出火.纳畜.沐浴.安门.", "j": "造屋.栽种.安葬.作灶.", "c": "生肖冲鼠", "s": "煞北", "ch": "定", "zc": "正冲正冲戊子", "ts": "占门碓房内北" }, "d0304": { "y": "祭祀.祈福.酬神.订盟.纳采.冠笄.裁衣.合帐.嫁娶.安床.移徙.入宅.安香.入殓.移柩.启攒.安葬.解除.取渔.捕捉.伐木.安门.出火.", "j": "栽种.动土.开市.作灶.", "c": "生肖冲牛", "s": "煞西", "ch": "执", "zc": "正冲正冲己丑", "ts": "碓磨厕房内北" }, "d0305": { "y": "嫁娶.开光.祭祀.祈福.求嗣.出行.出火.入宅.移徙.解除.栽种.伐木.破土.谢土.安葬.", "j": "开市.交易.作灶.纳财.上梁.安床.造屋.造船.", "c": "生肖冲虎", "s": "煞南", "ch": "执", "zc": "正冲正冲庚寅", "ts": "厨灶炉房内北" }, "d0306": { "y": "破屋.坏垣.求医.治病.余事勿取.", "j": "开光.嫁娶.", "c": "生肖冲兔", "s": "煞東", "ch": "破", "zc": "正冲正冲辛卯", "ts": "仓库门房内北" }, "d0307": { "y": "纳采.交易.立券.安床.安机械.安葬.移柩.动土.破土.立碑.", "j": "嫁娶.开光.作灶.", "c": "生肖冲龙", "s": "煞北", "ch": "危", "zc": "正冲正冲壬辰", "ts": "房床栖房内南" }, "d0308": { "y": "祭祀.祈福.求嗣.斋醮.沐浴.开光.理发.经络.解除.治病.治病.立碑.栽种.牧养.掘井.开池.", "j": "嫁娶.定磉.合寿木.安葬.行丧.", "c": "生肖冲蛇", "s": "煞西", "ch": "成", "zc": "正冲正冲癸巳", "ts": "占门床房内南" }, "d0309": { "y": "纳财.交易.立券.栽种.捕捉.结网.取渔.进人口.教牛马.理发.", "j": "入宅.造屋.竖柱.安葬.", "c": "生肖冲马", "s": "煞南", "ch": "收", "zc": "正冲正冲甲午", "ts": "占碓磨房内南" }, "d0310": { "y": "嫁娶.订盟.纳采.祭祀.祈福.出行.修造.动土.移徙.入宅.破土.出火.安门.安床.上梁.立碑.移柩.", "j": "开市.交易.合帐.安葬.", "c": "生肖冲羊", "s": "煞東", "ch": "开", "zc": "正冲正冲乙未", "ts": "厨灶厕房内南" }, "d0311": { "y": "冠笄.立券.交易.修造.动土.安机械.入殓.安葬.破土.", "j": "嫁娶.祈福.出火.入宅.", "c": "生肖冲猴", "s": "煞北", "ch": "闭", "zc": "正冲正冲丙申", "ts": "仓库炉房内南" }, "d0312": { "y": "祭祀.会亲友.出行.立券.交易.冠笄.纳财.", "j": "嫁娶.动土.掘井.起基.定磉.破土.", "c": "生肖冲鸡", "s": "煞西", "ch": "建", "zc": "正冲正冲丁酉", "ts": "房床门房内南" }, "d0313": { "y": "祭祀.沐浴.解除.扫舍.塞穴.牧养.", "j": "嫁娶.安葬.行丧.安门.", "c": "生肖冲狗", "s": "煞南", "ch": "除", "zc": "正冲正冲戊戌", "ts": "门鸡栖房内东" }, "d0314": { "y": "纳财.开市.交易.立券.开光.针灸.会亲友.理发.安床.造仓.结网.", "j": "移徙.入宅.栽种.", "c": "生肖冲猪", "s": "煞東", "ch": "满", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d0316": { "y": "嫁娶.造车器.纳采.订盟.祭祀.祈福.安机械.移徙.入宅.开市.立券.破土.安葬.", "j": "纳畜.理发.合寿木.", "c": "生肖冲牛", "s": "煞西", "ch": "定", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d0317": { "y": "祈福.斋醮.出行.移徙.入宅.修造.动土.破土.安葬.", "j": "纳采.开光.安床.嫁娶.开市.", "c": "生肖冲虎", "s": "煞南", "ch": "执", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" }, "d0318": { "y": "破屋.坏垣.余事勿取.", "j": "嫁娶.移徙.开市.入宅.", "c": "生肖冲兔", "s": "煞東", "ch": "破", "zc": "正冲正冲癸卯", "ts": "占大门外东北" }, "d0319": { "y": "嫁娶.冠笄.祭祀.出行.会亲友.修造.动土.入殓.破土.", "j": "塑绘.开光.造桥.除服.成服.", "c": "生肖冲龙", "s": "煞北", "ch": "危", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d0320": { "y": "开光.求嗣.出行.纳采.冠笄.出火.拆卸.起基.修造.动土.上梁.移徙.造船.开市.交易.立券.纳财.", "j": "祈福.嫁娶.安葬.破土.", "c": "生肖冲蛇", "s": "煞西", "ch": "成", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d0321": { "y": "理发.冠笄.嫁娶.进人口.栽种.捕捉.针灸.", "j": "纳财.开市.安葬.破土.", "c": "生肖冲马", "s": "煞南", "ch": "收", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d0322": { "y": "开光.祈福.求嗣.出行.解除.伐木.造屋.起基.修造.架马.安门.移徙.入宅.造庙.除服.成服.移柩.谢土.纳畜.牧养.", "j": "纳采.动土.开市.交易.安门.", "c": "生肖冲羊", "s": "煞東", "ch": "开", "zc": "正冲正冲丁未", "ts": "房床厕外东北" }, "d0323": { "y": "裁衣.经络.伐木.开柱眼.拆卸.修造.动土.上梁.合脊.合寿木.入殓.除服.成服.移柩.破土.安葬.启攒.修坟.立碑.", "j": "祭祀.嫁娶.出行.上梁.掘井.", "c": "生肖冲猴", "s": "煞北", "ch": "闭", "zc": "正冲正冲戊申", "ts": "占门炉外东北" }, "d0324": { "y": "祭祀.会亲友.立券.交易.裁衣.合帐.嫁娶.冠笄.进人口.", "j": "栽种.动土.安葬.掘井.修坟.探病.", "c": "生肖冲鸡", "s": "煞西", "ch": "建", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d0326": { "y": "塑绘.开光.订盟.纳采.裁衣.合帐.冠笄.安机械.会亲友.纳财.开市.立券.交易.安床.竖柱.上梁.结网.栽种.解除.经络.", "j": "作灶.出行.入宅.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "满", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d0327": { "y": "祭祀.嫁娶.纳婿.除服.成服.入殓.移柩.", "j": "动土.作灶.入宅.开光.安床.", "c": "生肖冲鼠", "s": "煞北", "ch": "平", "zc": "正冲正冲壬子", "ts": "房床碓外正东" }, "d0328": { "y": "祈福.求嗣.开光.塑绘.斋醮.订盟.纳采.嫁娶.拆卸.安床.入宅.安香.移柩.修坟.安葬.谢土.栽种.解除.冠笄.裁衣.移徙.修造.动土.竖柱.放水.启攒.立碑.", "j": "赴任.", "c": "生肖冲牛", "s": "煞西", "ch": "定", "zc": "正冲正冲癸丑", "ts": "占门厕外正东" }, "d0329": { "y": "祭祀.解除.入殓.除服.成服.移柩.启攒.安葬.修坟.立碑.谢土.沐浴.扫舍.捕捉.取渔.结网.畋猎.理发.", "j": "安床.嫁娶.作灶.入宅.", "c": "生肖冲虎", "s": "煞南", "ch": "执", "zc": "正冲正冲甲寅", "ts": "碓磨炉外东南" }, "d0330": { "y": "破屋.坏垣.", "j": "诸事不宜.", "c": "生肖冲兔", "s": "煞東", "ch": "破", "zc": "正冲正冲乙卯", "ts": "厨灶门外东南" }, "d0331": { "y": "祭祀.出行.订盟.纳采.裁衣.合帐.冠笄.进人口.动土.安床.作灶.入殓.移柩.安葬.破土.结网.取渔.畋猎.", "j": "作梁.造庙.", "c": "生肖冲龙", "s": "煞北", "ch": "危", "zc": "正冲正冲丙辰", "ts": "仓库栖外东南" }, "d0425": { "y": "诸事不宜.", "j": "诸事不宜.", "c": "生肖冲蛇", "s": "煞西", "ch": "危", "zc": "正冲正冲辛巳", "ts": "仓库床外西北" }, "d0426": { "y": "祭祀.塑绘.开光.订盟.纳采.冠笄.裁衣.安机械.拆卸.修造.动土.安床.经络.开市.", "j": "出火.入宅.安葬.伐木.", "c": "生肖冲马", "s": "煞南", "ch": "成", "zc": "正冲正冲壬午", "ts": "房床碓外正北" }, "d0416": { "y": "纳采.嫁娶.出行.开市.立券.纳畜.牧养.出火.移徙.入宅.", "j": "祈福.动土.破土.安葬.入殓.", "c": "生肖冲猴", "s": "煞北", "ch": "开", "zc": "正冲正冲壬申", "ts": "房床厕外正南" }, "d0406": { "y": "祭祀.修饰垣墙.余事勿取.", "j": "开光.修造.动土.破土.", "c": "生肖冲狗", "s": "煞南", "ch": "建", "zc": "正冲正冲壬戌", "ts": "房床栖外正南" }, "d0423": { "y": "祭祀.祈福.开光.求嗣.斋醮.纳采.订盟.求医.治病.起基.定磉.造船.取渔.解除.安葬.启攒.谢土.入殓.", "j": "开市.动土.掘井.开池.", "c": "生肖冲兔", "s": "煞東", "ch": "执", "zc": "正冲正冲己卯", "ts": "占门炉外西北" }, "d0427": { "y": "祭祀.余事勿取.", "j": "造庙.嫁娶.安床.余事勿取.", "c": "生肖冲羊", "s": "煞東", "ch": "收", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d0526": { "y": "开光.出行.纳采.嫁娶.伐木.架马.出火.拆卸.移徙.入宅.造庙.造桥.造船.造畜椆栖.开市.入殓.除服.成服.移柩.安葬.", "j": "", "c": "生肖冲鼠", "s": "煞北", "ch": "除", "zc": "正冲正冲壬子", "ts": "房床碓外正东" }, "d0401": { "y": "祭祀.开光.塑绘.订盟.纳采.合帐.冠笄.拆卸.动土.起基.上梁.入宅.安香.开市.立券.纳财.沐浴.求嗣.出火.竖柱.安门.", "j": "造庙.嫁娶.伐木.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "成", "zc": "正冲正冲丁巳", "ts": "占房床外东南" }, "d0402": { "y": "祭祀.沐浴.捕捉.栽种.", "j": "嫁娶.入宅.移徙.作灶.安葬.", "c": "生肖冲马", "s": "煞南", "ch": "收", "zc": "正冲正冲戊午", "ts": "占门碓外东南" }, "d0403": { "y": "祭祀.开光.塑绘.酬神.斋醮.订盟.纳采.嫁娶.裁衣.动土.起基.出火.拆卸.移徙.入宅.安香.修造.竖柱.上梁.纳畜.牧养.祈福.求嗣.解除.伐木.定磉.造屋.安门.", "j": "栽种.安葬.", "c": "生肖冲羊", "s": "煞東", "ch": "开", "zc": "正冲正冲己未", "ts": "碓磨厕外东南" }, "d0404": { "y": "订盟.纳采.冠笄.拆卸.修造.动土.安床.入殓.除服.成服.移柩.安葬.破土.启攒.造仓.", "j": "作灶.开光.嫁娶.开市.入宅.", "c": "生肖冲猴", "s": "煞北", "ch": "闭", "zc": "正冲正冲庚申", "ts": "厨灶炉外正南" }, "d0405": { "y": "祭祀.出行.修造.动土.合帐.造畜椆栖.安床.移徙.入殓.移柩.破土.启攒.安葬.开生坟.合寿木.补垣.塞穴.", "j": "移徙.入宅.作灶.理发.开光.安门.", "c": "生肖冲鸡", "s": "煞西", "ch": "闭", "zc": "正冲正冲辛酉", "ts": "仓库门外正南" }, "d0407": { "y": "嫁娶.祭祀.祈福.求嗣.斋醮.开光.出火.移徙.入宅.竖柱.上梁.会亲友.造屋.起基.治病.治病.安门.造车器.掘井.开池.", "j": "纳采.出行.修坟.安葬.开市.立券.作灶.", "c": "生肖冲猪", "s": "煞東", "ch": "除", "zc": "正冲正冲癸亥", "ts": "占门床外正南" }, "d0408": { "y": "祭祀.塑绘.开光.纳采.嫁娶.开市.出行.会亲友.安床.结网.除服.成服.启攒.安葬.移柩.", "j": "祈福.入宅.造屋.动土.破土.探病.", "c": "生肖冲鼠", "s": "煞北", "ch": "满", "zc": "正冲正冲甲子", "ts": "占碓磨外正南" }, "d0409": { "y": "祭祀.作灶.平治道涂.余事勿取.", "j": "安床.入宅.安碓硙.栽种.", "c": "生肖冲牛", "s": "煞西", "ch": "平", "zc": "正冲正冲乙丑", "ts": "厨灶厕外西南" }, "d0410": { "y": "祭祀.祈福.求嗣.斋醮.沐浴.纳畜.入殓.破土.安葬.", "j": "移徙.入宅.嫁娶.出行.安床.", "c": "生肖冲虎", "s": "煞南", "ch": "定", "zc": "正冲正冲丙寅", "ts": "仓库炉外西南" }, "d0411": { "y": "纳采.祭祀.祈福.求嗣.斋醮.出行.起基.造屋.定磉.安门.入殓.安葬.", "j": "嫁娶.开市.纳财.出火.", "c": "生肖冲兔", "s": "煞東", "ch": "执", "zc": "正冲正冲丁卯", "ts": "房床门外西南" }, "d0412": { "y": "祭祀.沐浴.解除.求医.治病.破屋.坏垣.余事勿取.", "j": "祈福.斋醮.开市.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "破", "zc": "正冲正冲戊辰", "ts": "门鸡栖外西南" }, "d0413": { "y": "沐浴.捕捉.畋猎.结网.取渔.", "j": "祭祀.嫁娶.入宅.作灶.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "危", "zc": "正冲正冲己巳", "ts": "碓磨床外西南" }, "d0414": { "y": "祭祀.祈福.求嗣.斋醮.纳采.订盟.开光.竖柱.上梁.开仓.出货财.造屋.起基.定磉.安门.诸事不宜.破土.入殓.启攒.谢土.", "j": "出火.嫁娶.开市.", "c": "生肖冲马", "s": "煞南", "ch": "成", "zc": "正冲正冲庚午", "ts": "厨灶碓外西南" }, "d0417": { "y": "祭祀.祈福.求嗣.斋醮.冠笄.作灶.纳财.交易.", "j": "开光.嫁娶.掘井.安葬.安门.探病.", "c": "生肖冲鸡", "s": "煞西", "ch": "闭", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d0418": { "y": "祭祀.解除.教牛马.出行.余事勿取.", "j": "动土.破土.行丧.开光.作梁.安葬.探病.", "c": "生肖冲狗", "s": "煞南", "ch": "建", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d0419": { "y": "沐浴.斋醮.解除.求医.治病.会亲友.造畜椆栖.栽种.理发.扫舍.", "j": "开市.嫁娶.移徙.入宅.掘井.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "除", "zc": "正冲正冲乙亥", "ts": "厨灶床外正西" }, "d0420": { "y": "求嗣.出行.解除.订盟.纳采.嫁娶.会亲友.进人口.安床.开市.交易.纳畜.牧养.入殓.除服.成服.移柩.安葬.启攒.", "j": "祈福.开市.修造.动土.破土.谢土.", "c": "生肖冲鼠", "s": "煞北", "ch": "满", "zc": "正冲正冲丙子", "ts": "仓库碓外西北" }, "d0421": { "y": "祭祀.作灶.平治道涂.余事勿取.", "j": "嫁娶.安葬.动土.安床.治病.", "c": "生肖冲牛", "s": "煞西", "ch": "平", "zc": "正冲正冲丁丑", "ts": "房床厕外西北" }, "d0422": { "y": "造车器.祭祀.祈福.求嗣.斋醮.开市.交易.安机械.雕刻.开光.造屋.合脊.起基.定磉.安门.纳畜.安葬.开生坟.立碑.谢土.斋醮.", "j": "入宅.动土.开仓.出货财.", "c": "生肖冲虎", "s": "煞南", "ch": "定", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d0424": { "y": "祭祀.沐浴.破屋.坏垣.求医.治病.解除.余事勿取.", "j": "嫁娶.开市.交易.入宅.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "破", "zc": "正冲正冲庚辰", "ts": "厨灶栖外西北" }, "d0428": { "y": "订盟.纳采.嫁娶.进人口.会亲友.交易.立券.动土.除服.谢土.移柩.破土.启攒.赴任.出行.开市.纳财.栽种.", "j": "入殓.安葬.入宅.安床.", "c": "生肖冲猴", "s": "煞北", "ch": "开", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d0429": { "y": "祭祀.祈福.裁衣.合帐.安床.入殓.除服.成服.移柩.破土.启攒.安葬.谢土.立碑.造畜椆栖.", "j": "掘井.安门.嫁娶.纳采.", "c": "生肖冲鸡", "s": "煞西", "ch": "闭", "zc": "正冲正冲乙酉", "ts": "厨灶门外正北" }, "d0430": { "y": "祭祀.进人口.嫁娶.安床.解除.冠笄.出行.裁衣.扫舍.", "j": "掘井.动土.破土.安葬.开光.", "c": "生肖冲狗", "s": "煞南", "ch": "建", "zc": "正冲正冲丙戌", "ts": "仓库栖外正北" }, "d0524": { "y": "余事勿取.", "j": "余事勿取.", "c": "生肖冲狗", "s": "煞南", "ch": "闭", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d0529": { "y": "嫁娶.纳采.出行.祭祀.祈福.开市.动土.移徙.入宅.破土.安葬.", "j": "安门.", "c": "生肖冲兔", "s": "煞東", "ch": "定", "zc": "正冲正冲乙卯", "ts": "厨灶门外东南" }, "d0519": { "y": "祭祀.沐浴.解除.破屋.坏垣.余事勿取.", "j": "行丧.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "破", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d0522": { "y": "栽种.捕捉.畋猎.余事勿取.", "j": "开市.动土.祭祀.斋醮.安葬.探病.", "c": "生肖冲猴", "s": "煞北", "ch": "收", "zc": "正冲正冲戊申", "ts": "占门炉外东北" }, "d0516": { "y": "祭祀.沐浴.移徙.破土.安葬.扫舍.平治道涂.", "j": "祈福.嫁娶.入宅.安床.作灶.", "c": "生肖冲虎", "s": "煞南", "ch": "平", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" }, "d0512": { "y": "嫁娶.冠笄.祭祀.出行.移徙.入宅.作灶.造车器.补垣.塞穴.作厕.破土.启攒.除服.成服.入殓.", "j": "入宅.造屋.造桥.安门.安葬.上梁.", "c": "生肖冲狗", "s": "煞南", "ch": "闭", "zc": "正冲正冲戊戌", "ts": "门鸡栖房内东" }, "d0502": { "y": "祭祀.会亲友.开市.安床.启攒.安葬.", "j": "嫁娶.动土.破土.", "c": "生肖冲鼠", "s": "煞北", "ch": "满", "zc": "正冲正冲戊子", "ts": "占门碓房内北" }, "d0528": { "y": "开光.出行.嫁娶.", "j": "会亲友.进人口.修造.动土.起基.移徙.开市.纳畜.入殓.除服.成服.移柩.破土.安葬.修坟.立碑.会亲友.", "c": "生肖冲虎", "s": "煞南", "ch": "平", "zc": "正冲正冲甲寅", "ts": "碓磨炉外东南" }, "d0518": { "y": "嫁娶.纳采.订盟.斋醮.开光.祭祀.祈福.求医.治病.会亲友.动土.解除.捕捉.纳畜.牧养.入殓.破土.安葬.", "j": "移徙.入宅.造屋.架马.", "c": "生肖冲龙", "s": "煞北", "ch": "执", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d0521": { "y": "开市.交易.立券.安机械.会亲友.开光.求医.治病.造屋.起基.修造.动土.定磉.竖柱.上梁.安门.作灶.放水.作厕.开池.栽种.牧养.造畜椆栖.破土.安葬.立碑.", "j": "嫁娶.出火.移徙.入宅.", "c": "生肖冲羊", "s": "煞東", "ch": "成", "zc": "正冲正冲丁未", "ts": "房床厕外东北" }, "d0508": { "y": "订盟.纳采.嫁娶.解除.祭祀.祈福.求嗣.开光.出行.解除.出火.拆卸.入宅.移徙.安床.栽种.纳畜.动土.破土.谢土.安葬.修坟.", "j": "作灶.开市.经络.", "c": "生肖冲马", "s": "煞南", "ch": "危", "zc": "正冲正冲甲午", "ts": "占碓磨房内南" }, "d0527": { "y": "进人口.牧养.置产.塞穴.结网.余事勿取.", "j": "诸事不宜.", "c": "生肖冲牛", "s": "煞西", "ch": "满", "zc": "正冲正冲癸丑", "ts": "占门厕外正东" }, "d0621": { "y": "开光.求嗣.出行.冠笄.嫁娶.伐木.架马.开柱眼.修造.移徙.入宅.开市.交易.立券.出行.安香.出火.挂匾.起基.修造.开生坟.合寿木.入殓.除服.成服.移柩.安葬.", "j": "安床.出货财.作灶.动土.破土.", "c": "生肖冲虎", "s": "煞南", "ch": "满", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d0501": { "y": "纳采.开光.求医.治病.动土.上梁.移徙.入宅.", "j": "嫁娶.开市.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "除", "zc": "正冲正冲丁亥", "ts": "占房床房内北" }, "d0503": { "y": "祭祀.作灶.掘井.平治道涂.", "j": "嫁娶.安葬.", "c": "生肖冲牛", "s": "煞西", "ch": "平", "zc": "正冲正冲己丑", "ts": "碓磨厕房内北" }, "d0504": { "y": "祭祀.斋醮.开市.动土.入殓.破土.安葬.", "j": "嫁娶.移徙.入宅.", "c": "生肖冲虎", "s": "煞南", "ch": "定", "zc": "正冲正冲庚寅", "ts": "厨灶炉房内北" }, "d0505": { "y": "开市.交易.立券.挂匾.祭祀.祈福.斋醮.出行.开市.交易.立券.造屋.起基.修造.动土.定磉.安床.安机械.安葬.破土.启攒.除服.成服.立碑.", "j": "作灶.嫁娶.移徙.入宅.理发.", "c": "生肖冲兔", "s": "煞東", "ch": "定", "zc": "正冲正冲辛卯", "ts": "仓库门房内北" }, "d0506": { "y": "嫁娶.纳采.订盟.祭祀.祈福.求嗣.开光.出火.出行.拆卸.动土.修造.进人口.入宅.移徙.安床.解除.挂匾.栽种.破土.谢土.入殓.移柩.安葬.", "j": "开市.立券.造船.合寿木.", "c": "生肖冲龙", "s": "煞北", "ch": "执", "zc": "正冲正冲壬辰", "ts": "房床栖房内南" }, "d0507": { "y": "祭祀.沐浴.解除.破屋.坏垣.余事勿取.", "j": "开光.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "破", "zc": "正冲正冲癸巳", "ts": "占门床房内南" }, "d0509": { "y": "祭祀.祈福.求嗣.开光.订盟.纳采.解除.动土.起基.进人口.开市.交易.立券.纳财.造仓.开池.栽种.纳畜.破土.安葬.", "j": "安床.上梁.裁衣.入宅.嫁娶.", "c": "生肖冲羊", "s": "煞東", "ch": "成", "zc": "正冲正冲乙未", "ts": "厨灶厕房内南" }, "d0510": { "y": "祭祀.结网.捕捉.余事勿取.", "j": "探病.嫁娶.开市.", "c": "生肖冲猴", "s": "煞北", "ch": "收", "zc": "正冲正冲丙申", "ts": "仓库炉房内南" }, "d0511": { "y": "祭祀.祈福.求嗣.开光.纳采.订盟.嫁娶.出行.动土.破土.会亲友.开市.交易.立券.习艺.拆卸.起基.安碓硙.放水.开池.造仓.开渠.栽种.谢土.启攒.修坟.立碑.", "j": "入宅.安门.安葬.", "c": "生肖冲鸡", "s": "煞西", "ch": "开", "zc": "正冲正冲丁酉", "ts": "房床门房内南" }, "d0513": { "y": "祭祀.解除.断蚁.会亲友.余事勿取.", "j": "嫁娶.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "建", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d0514": { "y": "嫁娶.纳采.订盟.祭祀.祈福.治病.造车器.修造.动土.移徙.入宅.", "j": "开市.出行.安床.作灶.安葬.", "c": "生肖冲鼠", "s": "煞北", "ch": "除", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d0515": { "y": "嫁娶.纳采.订盟.会亲友.安机械.结网.冠笄.祭祀.求嗣.进人口.经络.", "j": "开市.作灶.动土.行丧.安葬.", "c": "生肖冲牛", "s": "煞西", "ch": "满", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d0517": { "y": "祭祀.祈福.斋醮.求嗣.安机械.纳畜.移徙.入宅.安机械.塑绘.开光.起基.竖柱.上梁.作灶.安门.安香.出火.造屋.启攒.安葬.", "j": "动土.破土.嫁娶.嫁娶.", "c": "生肖冲兔", "s": "煞東", "ch": "定", "zc": "正冲正冲癸卯", "ts": "占大门外东北" }, "d0520": { "y": "沐浴.扫舍.余事勿取.", "j": "斋醮.开市.嫁娶.作灶.", "c": "生肖冲马", "s": "煞南", "ch": "危", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d0523": { "y": "嫁娶.祭祀.祈福.求嗣.斋醮.订盟.纳采.解除.出行.动土.破土.习艺.针灸.理发.会亲友.起基.修造.动土.竖柱.定磉.安床.拆卸.纳畜.牧养.放水.破土.除服.成服.修坟.立碑.", "j": "开市.入宅.探病.出火.造屋.", "c": "生肖冲鸡", "s": "煞西", "ch": "开", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d0525": { "y": "塞穴.断蚁.结网.余事勿取.", "j": "破土.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "建", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d0530": { "y": "嫁娶.纳采.求医.治病.修造.动土.移徙.入宅.破土.安葬.", "j": "开市.开光.", "c": "生肖冲龙", "s": "煞北", "ch": "执", "zc": "正冲正冲丙辰", "ts": "仓库栖外东南" }, "d0531": { "y": "祭祀.破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲蛇", "s": "煞西", "ch": "破", "zc": "正冲正冲丁巳", "ts": "占房床外东南" }, "d0611": { "y": "嫁娶.纳采.祭祀.祈福.出行.立券.移徙.入宅.动土.破土.安葬.", "j": "开光.作灶.造屋.架马.开仓.", "c": "生肖冲龙", "s": "煞北", "ch": "定", "zc": "正冲正冲戊辰", "ts": "门鸡栖外西南" }, "d0613": { "y": "祭祀.沐浴.破屋.坏垣.余事勿取.", "j": "入宅.嫁娶.移徙.", "c": "生肖冲马", "s": "煞南", "ch": "破", "zc": "正冲正冲庚午", "ts": "厨灶碓外西南" }, "d0623": { "y": "安机械.移徙.入宅.出行.祭祀.祈福.斋醮.纳采.订盟.安香.出火.解除.会亲友.修造.动土.拆卸.起基.定磉.移徙.入宅.造屋.安床.修造.破土.安葬.入殓.立碑.", "j": "开市.伐木.作梁.作灶.", "c": "生肖冲龙", "s": "煞北", "ch": "定", "zc": "正冲正冲庚辰", "ts": "厨灶栖外西北" }, "d0622": { "y": "祭祀.沐浴.理发.嫁娶.作灶.整手足甲.扫舍.修饰垣墙.平治道涂.", "j": "斋醮.出行.治病.合寿木.", "c": "生肖冲兔", "s": "煞東", "ch": "平", "zc": "正冲正冲己卯", "ts": "占门炉外西北" }, "d0612": { "y": "纳采.订盟.冠笄.祭祀.祈福.斋醮.出行.修造.动土.移徙.入宅.安香.出火.拆卸.造屋.起基.竖柱.上梁.定磉.安门.开池.", "j": "嫁娶.开市.合寿木.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "执", "zc": "正冲正冲己巳", "ts": "碓磨床外西南" }, "d0731": { "y": "纳采.祭祀.祈福.解除.动土.破土.安葬.", "j": "嫁娶.移徙.入宅.", "c": "生肖冲马", "s": "煞南", "ch": "执", "zc": "正冲正冲戊午", "ts": "占门碓外东南" }, "d0601": { "y": "嫁娶.纳采.祭祀.祈福.出行.动土.上梁.移徙.入宅.破土.安葬.", "j": "祈福.斋醮.", "c": "生肖冲马", "s": "煞南", "ch": "危", "zc": "正冲正冲戊午", "ts": "占门碓外东南" }, "d0602": { "y": "纳采.祭祀.祈福.开市.求医.治病.动土.纳畜.", "j": "嫁娶.安葬.", "c": "生肖冲羊", "s": "煞東", "ch": "成", "zc": "正冲正冲己未", "ts": "碓磨厕外东南" }, "d0603": { "y": "嫁娶.纳采.出行.移徙.入宅.", "j": "动土.破土.安葬.", "c": "生肖冲猴", "s": "煞北", "ch": "收", "zc": "正冲正冲庚申", "ts": "厨灶炉外正南" }, "d0604": { "y": "订盟.纳采.祭祀.动土.破土.交易.立券.", "j": "嫁娶.安葬.", "c": "生肖冲鸡", "s": "煞西", "ch": "开", "zc": "正冲正冲辛酉", "ts": "仓库门外正南" }, "d0605": { "y": "嫁娶.裁衣.祭祀.出行.安床.作灶.移徙.入宅.破土.安葬.", "j": "赴任.捕捉.", "c": "生肖冲狗", "s": "煞南", "ch": "闭", "zc": "正冲正冲壬戌", "ts": "房床栖外正南" }, "d0606": { "y": "嫁娶.合帐.裁衣.冠笄.伐木.上梁.出火.拆卸.移徙.修造.动土.安门.纳财.筑堤.栽种.塞穴.", "j": "安床.祈福.出行.安葬.行丧.开光.", "c": "生肖冲猪", "s": "煞東", "ch": "闭", "zc": "正冲正冲癸亥", "ts": "占门床外正南" }, "d0607": { "y": "出行.教牛马.割蜜.余事勿取.", "j": "斋醮.造屋.动土.破土.", "c": "生肖冲鼠", "s": "煞北", "ch": "建", "zc": "正冲正冲甲子", "ts": "占碓磨外正南" }, "d0608": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出行.解除.出火.拆卸.修造.进人口.入宅.移徙.动土.安床.纳畜.栽种.纳财.交易.立券.挂匾.造畜椆栖.", "j": "安葬.开生坟.合寿木.行丧.", "c": "生肖冲牛", "s": "煞西", "ch": "除", "zc": "正冲正冲乙丑", "ts": "厨灶厕外西南" }, "d0609": { "y": "安机械.祭祀.祈福.求嗣.沐浴.解除.纳采.开市.修造.竖柱.上梁.开柱眼.安碓硙.归岫.补垣.塞穴.拆卸.放水.出火.扫舍.开生坟.合寿木.安葬.谢土.启攒.除服.成服.", "j": "嫁娶.安床.作灶.动土.破土.造船.", "c": "生肖冲虎", "s": "煞南", "ch": "满", "zc": "正冲正冲丙寅", "ts": "仓库炉外西南" }, "d0610": { "y": "祭祀.沐浴.理发.整手足甲.修饰垣墙.平治道涂.余事勿取.", "j": "开市.入宅.出行.修造.词讼.", "c": "生肖冲兔", "s": "煞東", "ch": "平", "zc": "正冲正冲丁卯", "ts": "房床门外西南" }, "d0614": { "y": "嫁娶.安机械.交易.出行.祭祀.祈福.求嗣.斋醮.塑绘.开光.合帐.裁衣.放水.开池.掘井.", "j": "作灶.理发.造桥.行丧.安葬.", "c": "生肖冲羊", "s": "煞東", "ch": "危", "zc": "正冲正冲辛未", "ts": "仓库厕外西南" }, "d0615": { "y": "纳采.冠笄.求医.治病.开市.立券.修造.动土.安机械.破土.安葬.", "j": "斋醮.祭祀.移徙.入宅.上梁.嫁娶.", "c": "生肖冲猴", "s": "煞北", "ch": "成", "zc": "正冲正冲壬申", "ts": "房床厕外正南" }, "d0616": { "y": "祭祀.作灶.余事勿取.", "j": "开市.安葬.破土.修坟.掘井.", "c": "生肖冲鸡", "s": "煞西", "ch": "收", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d0617": { "y": "祭祀.祈福.求嗣.斋醮.安香.解除.移徙.入宅.会亲友.求医.治病.动土.破土.开生坟.合寿木.", "j": "合帐.上梁.经络.安葬.入殓.", "c": "生肖冲狗", "s": "煞南", "ch": "开", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d0618": { "y": "嫁娶.冠笄.修造.动土.作灶.移徙.入宅.补垣.塞穴.纳畜.牧养.架马.修造.动土.起基.定磉.开池.造船.", "j": "祈福.开光.掘井.开市.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "闭", "zc": "正冲正冲乙亥", "ts": "厨灶床外正西" }, "d0619": { "y": "祭祀.交易.纳财.", "j": "斋醮.开渠.上梁.动土.破土.", "c": "生肖冲鼠", "s": "煞北", "ch": "建", "zc": "正冲正冲丙子", "ts": "仓库碓外西北" }, "d0620": { "y": "嫁娶.订盟.纳采.冠笄.会亲友.安机械.造车器.祭祀.出行.纳财.入宅.安香.出火.入学.塑绘.开光.拆卸.起基.修造.动土.牧养.栽种.安门.作厕.", "j": "行丧.伐木.作梁.作灶.", "c": "生肖冲牛", "s": "煞西", "ch": "除", "zc": "正冲正冲丁丑", "ts": "房床厕外西北" }, "d0624": { "y": "祭祀.沐浴.捕捉.结网.畋猎.取渔.余事勿取.", "j": "开市.交易.嫁娶.安葬.行丧.", "c": "生肖冲蛇", "s": "煞西", "ch": "执", "zc": "正冲正冲辛巳", "ts": "仓库床外西北" }, "d0625": { "y": "破屋.坏垣.求医.治病.畋猎.余事勿取.", "j": "嫁娶.入宅.", "c": "生肖冲马", "s": "煞南", "ch": "破", "zc": "正冲正冲壬午", "ts": "房床碓外正北" }, "d0626": { "y": "嫁娶.出行.安机械.祭祀.塑绘.开光.治病.经络.安床.结网.塞穴.破土.入殓.", "j": "开市.安门.掘井.作灶.", "c": "生肖冲羊", "s": "煞東", "ch": "危", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d0627": { "y": "订盟.纳采.会亲友.进人口.雕刻.拆卸.修造.动土.起基.开市.栽种.纳畜.牧养.入殓.除服.成服.移柩.破土.安葬.", "j": "", "c": "生肖冲猴", "s": "煞北", "ch": "成", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d0628": { "y": "祭祀.捕捉.取渔.修饰垣墙.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鸡", "s": "煞西", "ch": "收", "zc": "正冲正冲乙酉", "ts": "厨灶门外正北" }, "d0629": { "y": "嫁娶.纳采.祭祀.祈福.求医.治病.出行.动土.移徙.入宅.", "j": "开市.安门.", "c": "生肖冲狗", "s": "煞南", "ch": "开", "zc": "正冲正冲丙戌", "ts": "仓库栖外正北" }, "d0630": { "y": "裁衣.作灶.移徙.入宅.纳畜.", "j": "嫁娶.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "闭", "zc": "正冲正冲丁亥", "ts": "占房床房内北" }, "d0728": { "y": "塑绘.出行.冠笄.嫁娶.进人口.裁衣.纳婿.造畜椆栖.交易.立券.牧养.开生坟.入殓.除服.成服.移柩.安葬.启攒.", "j": "", "c": "生肖冲兔", "s": "煞東", "ch": "满", "zc": "正冲正冲乙卯", "ts": "厨灶门外东南" }, "d0831": { "y": "嫁娶.祭祀.祈福.斋醮.作灶.移徙.入宅.", "j": "动土.破土.", "c": "生肖冲牛", "s": "煞西", "ch": "闭", "zc": "正冲正冲己丑", "ts": "碓磨厕房内北" }, "d0701": { "y": "祭祀.入殓.移柩.启攒.安葬.", "j": "上梁.动土.破土.", "c": "生肖冲鼠", "s": "煞北", "ch": "建", "zc": "正冲正冲戊子", "ts": "占门碓房内北" }, "d0702": { "y": "订盟.纳采.出行.祈福.斋醮.安床.会亲友.", "j": "移徙.入宅.安葬.", "c": "生肖冲牛", "s": "煞西", "ch": "除", "zc": "正冲正冲己丑", "ts": "碓磨厕房内北" }, "d0703": { "y": "嫁娶.纳采.出行.求医.治病.开市.移徙.入宅.启攒.安葬.", "j": "动土.破土.", "c": "生肖冲虎", "s": "煞南", "ch": "满", "zc": "正冲正冲庚寅", "ts": "厨灶炉房内北" }, "d0704": { "y": "嫁娶.祭祀.沐浴.扫舍.修饰垣墙.", "j": "行丧.安葬.", "c": "生肖冲兔", "s": "煞東", "ch": "平", "zc": "正冲正冲辛卯", "ts": "仓库门房内北" }, "d0705": { "y": "嫁娶.订盟.纳采.出行.开市.祭祀.祈福.动土.移徙.入宅.破土.安葬.", "j": "作灶.", "c": "生肖冲龙", "s": "煞北", "ch": "定", "zc": "正冲正冲壬辰", "ts": "房床栖房内南" }, "d0706": { "y": "订盟.纳采.出行.祭祀.祈福.修造.动土.移徙.入宅.", "j": "开市.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "执", "zc": "正冲正冲癸巳", "ts": "占门床房内南" }, "d0707": { "y": "祭祀.祈福.解除.整手足甲.安床.沐浴.入殓.移柩.破土.启攒.安葬.谢土.", "j": "嫁娶.斋醮.开市.出火.入宅.移徙.出行.作灶.安门.伐木.", "c": "生肖冲马", "s": "煞南", "ch": "执", "zc": "正冲正冲甲午", "ts": "占碓磨房内南" }, "d0708": { "y": "破屋.坏垣.解除.余事勿取.", "j": "嫁娶.安葬.", "c": "生肖冲羊", "s": "煞東", "ch": "破", "zc": "正冲正冲乙未", "ts": "厨灶厕房内南" }, "d0709": { "y": "嫁娶.开市.立券.移徙.入宅.安机械.会亲友.经络.安门.安床.挂匾.拆卸.开仓.出货财.开池.栽种.纳畜.牧养.破土.安葬.启攒.移柩.入殓.立碑.", "j": "祭祀.祈福.探病.谢土.造桥.", "c": "生肖冲猴", "s": "煞北", "ch": "危", "zc": "正冲正冲丙申", "ts": "仓库炉房内南" }, "d0710": { "y": "嫁娶.订盟.纳采.祭祀.祈福.斋醮.开光.会亲友.求医.治病.造屋.起基.竖柱.上梁.安门.安碓硙.筑堤.开池.破土.安葬.除服.成服.", "j": "入宅.开市.掘井.词讼.合寿木.", "c": "生肖冲鸡", "s": "煞西", "ch": "成", "zc": "正冲正冲丁酉", "ts": "房床门房内南" }, "d0711": { "y": "纳采.订盟.嫁娶.移徙.入宅.出行.祭祀.祈福.斋醮.塑绘.开光.安香.出火.会亲友.解除.入学.竖柱.上梁.拆卸.造屋.起基.栽种.牧养.纳畜.", "j": "安葬.破土.开市.开仓.出货财.启攒.", "c": "生肖冲狗", "s": "煞南", "ch": "收", "zc": "正冲正冲戊戌", "ts": "门鸡栖房内东" }, "d0712": { "y": "纳采.订盟.嫁娶.祭祀.沐浴.塑绘.开光.出火.治病.习艺.伐木.造屋.竖柱.上梁.安床.作灶.安碓硙.挂匾.掘井.纳畜.", "j": "出行.安葬.造桥.", "c": "生肖冲猪", "s": "煞東", "ch": "开", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d0713": { "y": "祭祀.入殓.除服.成服.移柩.破土.启攒.安葬.塞穴.断蚁.结网.", "j": "开市.入宅.嫁娶.开光.造屋.", "c": "生肖冲鼠", "s": "煞北", "ch": "闭", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d0714": { "y": "祭祀.修造.出行.造屋.竖柱.造车器.教牛马.造畜椆栖.割蜜.", "j": "动土.破土.掘井.安葬.", "c": "生肖冲牛", "s": "煞西", "ch": "建", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d0715": { "y": "祭祀.沐浴.塑绘.开光.入学.解除.扫舍.治病.开池.牧养.", "j": "嫁娶.出行.纳采.入宅.作灶.", "c": "生肖冲虎", "s": "煞南", "ch": "除", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" }, "d0716": { "y": "纳财.开市.交易.立券.出行.祭祀.祈福.求嗣.开光.解除.扫舍.起基.竖柱.安床.移徙.开仓.出货财.补垣.塞穴.栽种.纳畜.牧养.", "j": "斋醮.入宅.安门.安葬.破土.行丧.", "c": "生肖冲兔", "s": "煞東", "ch": "满", "zc": "正冲正冲癸卯", "ts": "占大门外东北" }, "d0717": { "y": "祭祀.修饰垣墙.平治道涂.", "j": "开市.动土.破土.嫁娶.修造.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "平", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d0718": { "y": "订盟.纳采.祭祀.祈福.开光.安香.出火.立券.安机械.移徙.入宅.竖柱.上梁.会亲友.安床.拆卸.挂匾.牧养.教牛马.", "j": "嫁娶.安葬.行丧.破土.修坟.", "c": "生肖冲蛇", "s": "煞西", "ch": "定", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d0719": { "y": "沐浴.理发.捕捉.入殓.移柩.破土.启攒.安葬.", "j": "出火.嫁娶.入宅.作灶.破土.上梁.动土.", "c": "生肖冲马", "s": "煞南", "ch": "执", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d0720": { "y": "求医.治病.破屋.坏垣.余事勿取.", "j": "嫁娶.出行.", "c": "生肖冲羊", "s": "煞東", "ch": "破", "zc": "正冲正冲丁未", "ts": "房床厕外东北" }, "d0721": { "y": "纳采.订盟.嫁娶.移徙.入宅.出行.开市.交易.立券.纳财.会亲友.安香.出火.拆卸.造屋.起基.安床.作灶.挂匾.安葬.破土.启攒.立碑.入殓.移柩.", "j": "祈福.上梁.开仓.掘井.牧养.", "c": "生肖冲猴", "s": "煞北", "ch": "危", "zc": "正冲正冲戊申", "ts": "占门炉外东北" }, "d0722": { "y": "祭祀.祈福.斋醮.出行.纳采.订盟.安机械.出火.拆卸.修造.动土.起基.移徙.入宅.造庙.入殓.除服.成服.移柩.破土.安葬.谢土.", "j": "嫁娶.开市.栽种.合寿木.", "c": "生肖冲鸡", "s": "煞西", "ch": "成", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d0723": { "y": "祭祀.进人口.纳财.纳畜.牧养.捕捉.余事勿取.", "j": "开市.入宅.安床.动土.安葬.", "c": "生肖冲狗", "s": "煞南", "ch": "收", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d0724": { "y": "祭祀.塑绘.开光.求医.治病.嫁娶.会亲友.放水.掘井.牧养.纳畜.开渠.安碓硙.", "j": "造屋.入宅.作灶.入学.安葬.行丧.", "c": "生肖冲猪", "s": "煞東", "ch": "开", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d0725": { "y": "祭祀.塞穴.结网.畋猎.余事勿取.", "j": "移徙.开市.入宅.嫁娶.开光.安门.", "c": "生肖冲鼠", "s": "煞北", "ch": "闭", "zc": "正冲正冲壬子", "ts": "房床碓外正东" }, "d0726": { "y": "开市.纳财.祭祀.塑绘.安机械.冠笄.会亲友.裁衣.开仓.经络.纳畜.造畜椆栖.教牛马.牧养.", "j": "动土.破土.安葬.治病.", "c": "生肖冲牛", "s": "煞西", "ch": "建", "zc": "正冲正冲癸丑", "ts": "占门厕外正东" }, "d0727": { "y": "移徙.入宅.治病.会亲友.祭祀.祈福.斋醮.安香.移徙.嫁娶.造屋.起基.", "j": "开市.斋醮.安床.出行.经络.", "c": "生肖冲虎", "s": "煞南", "ch": "除", "zc": "正冲正冲甲寅", "ts": "碓磨炉外东南" }, "d0729": { "y": "祭祀.冠笄.嫁娶.捕捉.结网.畋猎.取渔.余事勿取.", "j": "余事勿取.", "c": "生肖冲龙", "s": "煞北", "ch": "平", "zc": "正冲正冲丙辰", "ts": "仓库栖外东南" }, "d0730": { "y": "沐浴.扫舍.余事勿取.", "j": "诸事不宜.", "c": "生肖冲蛇", "s": "煞西", "ch": "定", "zc": "正冲正冲丁巳", "ts": "占房床外东南" }, "d0801": { "y": "祭祀.破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲羊", "s": "煞東", "ch": "破", "zc": "正冲正冲己未", "ts": "碓磨厕外东南" }, "d0802": { "y": "嫁娶.纳采.开市.出行.动土.上梁.移徙.入宅.破土.安葬.", "j": "祭祀.祈福.", "c": "生肖冲猴", "s": "煞北", "ch": "危", "zc": "正冲正冲庚申", "ts": "厨灶炉外正南" }, "d0803": { "y": "嫁娶.纳采.开市.出行.动土.上梁.移徙.入宅.破土.安葬.", "j": "赴任.", "c": "生肖冲鸡", "s": "煞西", "ch": "成", "zc": "正冲正冲辛酉", "ts": "仓库门外正南" }, "d0804": { "y": "祭祀.作灶.纳财.捕捉.", "j": "开市.破土.", "c": "生肖冲狗", "s": "煞南", "ch": "收", "zc": "正冲正冲壬戌", "ts": "房床栖外正南" }, "d0805": { "y": "嫁娶.开市.立券.祭祀.祈福.动土.移徙.入宅.", "j": "造庙.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "开", "zc": "正冲正冲癸亥", "ts": "占门床外正南" }, "d0806": { "y": "补垣.塞穴.结网.入殓.除服.成服.移柩.安葬.启攒.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鼠", "s": "煞北", "ch": "闭", "zc": "正冲正冲甲子", "ts": "占碓磨外正南" }, "d0807": { "y": "祭祀.出行.作梁.出火.拆卸.修造.动土.起基.安床.补垣.塞穴.入殓.破土.安葬.移柩.造畜椆栖.", "j": "嫁娶.入宅.斋醮.开光.针灸.掘井.", "c": "生肖冲牛", "s": "煞西", "ch": "闭", "zc": "正冲正冲乙丑", "ts": "厨灶厕外西南" }, "d0808": { "y": "嫁娶.纳采.订盟.祭祀.祈福.求嗣.出行.解除.竖柱.入宅.移徙.纳财.上梁.纳畜.入殓.安葬.启攒.", "j": "栽种.掘井.动土.安床.破土.置产.", "c": "生肖冲虎", "s": "煞南", "ch": "建", "zc": "正冲正冲丙寅", "ts": "仓库炉外西南" }, "d0809": { "y": "解除.祭祀.祈福.求嗣.修造.动土.竖柱.上梁.安床.纳畜.造屋.合脊.起基.入殓.破土.安葬.", "j": "出火.嫁娶.开光.进人口.出行.词讼.开市.入宅.移徙.赴任.", "c": "生肖冲兔", "s": "煞東", "ch": "除", "zc": "正冲正冲丁卯", "ts": "房床门外西南" }, "d0810": { "y": "沐浴.理发.会亲友.塑绘.开光.栽种.牧养.嫁娶.经络.补垣.塞穴.", "j": "开市.入宅.动土.破土.安葬.作灶.上梁.安床.开仓.祈福.", "c": "生肖冲龙", "s": "煞北", "ch": "满", "zc": "正冲正冲戊辰", "ts": "门鸡栖外西南" }, "d0811": { "y": "祭祀.理发.作灶.沐浴.修饰垣墙.平治道涂.", "j": "嫁娶.栽种.祈福.造桥.安葬.安门.伐木.作梁.", "c": "生肖冲蛇", "s": "煞西", "ch": "平", "zc": "正冲正冲己巳", "ts": "碓磨床外西南" }, "d0812": { "y": "嫁娶.纳采.订盟.祭祀.祈福.斋醮.普渡.移徙.入宅.出行.安机械.开光.修造.动土.竖柱.上梁.造屋.起基.定磉.安门.安葬.破土.", "j": "开市.立券.置产.作灶.造桥.", "c": "生肖冲马", "s": "煞南", "ch": "定", "zc": "正冲正冲庚午", "ts": "厨灶碓外西南" }, "d0813": { "y": "祭祀.普渡.捕捉.解除.结网.畋猎.入殓.破土.安葬.", "j": "开市.交易.入宅.嫁娶.", "c": "生肖冲羊", "s": "煞東", "ch": "执", "zc": "正冲正冲辛未", "ts": "仓库厕外西南" }, "d0814": { "y": "沐浴.破屋.坏垣.余事勿取.", "j": "斋醮.开市.", "c": "生肖冲猴", "s": "煞北", "ch": "破", "zc": "正冲正冲壬申", "ts": "房床厕外正南" }, "d0815": { "y": "订盟.纳采.祭祀.祈福.安香.出火.开市.立券.入宅.挂匾.造桥.启攒.安葬.", "j": "动土.破土.嫁娶.掘井.安床.", "c": "生肖冲鸡", "s": "煞西", "ch": "危", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d0816": { "y": "嫁娶.祭祀.祈福.斋醮.普渡.移徙.入宅.动土.治病.开市.交易.立券.开光.修造.造车器.安香.安床.捕捉.畋猎.结网.", "j": "纳采.订盟.经络.行丧.安葬.探病.", "c": "生肖冲狗", "s": "煞南", "ch": "成", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d0817": { "y": "嫁娶.订盟.纳采.作灶.冠笄.裁衣.会亲友.纳畜.牧养.安机械.开市.立券.纳财.安床.", "j": "掘井.出行.破土.行丧.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "收", "zc": "正冲正冲乙亥", "ts": "厨灶床外正西" }, "d0818": { "y": "嫁娶.订盟.纳采.祭祀.斋醮.普渡.解除.出行.会亲友.开市.纳财.修造.动土.竖柱.上梁.开光.开仓.出货财.纳畜.牧养.开池.破土.启攒.", "j": "出火.入宅.造屋.安门.安葬.", "c": "生肖冲鼠", "s": "煞北", "ch": "开", "zc": "正冲正冲丙子", "ts": "仓库碓外西北" }, "d0819": { "y": "嫁娶.普渡.祭祀.祈福.补垣.塞穴.断蚁.筑堤.入殓.除服.成服.安葬.", "j": "动土.破土.掘井.开光.上梁.词讼.", "c": "生肖冲牛", "s": "煞西", "ch": "闭", "zc": "正冲正冲丁丑", "ts": "房床厕外西北" }, "d0820": { "y": "嫁娶.冠笄.祭祀.沐浴.普渡.出行.纳财.扫舍.纳畜.赴任.", "j": "开市.动土.破土.安床.开仓.上梁.", "c": "生肖冲虎", "s": "煞南", "ch": "建", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d0821": { "y": "祭祀.沐浴.理发.整手足甲.冠笄.解除.入殓.移柩.破土.启攒.安葬.", "j": "嫁娶.出行.入宅.开市.安门.", "c": "生肖冲兔", "s": "煞東", "ch": "除", "zc": "正冲正冲己卯", "ts": "占门炉外西北" }, "d0822": { "y": "塑绘.冠笄.嫁娶.会亲友.进人口.经络.裁衣.栽种.纳畜.牧养.补垣.塞穴.捕捉.", "j": "祈福.开市.动土.行丧.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "满", "zc": "正冲正冲庚辰", "ts": "厨灶栖外西北" }, "d0823": { "y": "出行.沐浴.订盟.纳采.裁衣.竖柱.上梁.移徙.纳畜.牧养.", "j": "嫁娶.安门.动土.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "平", "zc": "正冲正冲辛巳", "ts": "仓库床外西北" }, "d0824": { "y": "纳采.订盟.嫁娶.祭祀.祈福.普渡.开光.安香.出火.移徙.入宅.竖柱.修造.动土.竖柱.上梁.起基.造屋.安门.造庙.造桥.破土.启攒.安葬.", "j": "开市.立券.纳财.作灶.", "c": "生肖冲马", "s": "煞南", "ch": "定", "zc": "正冲正冲壬午", "ts": "房床碓外正北" }, "d0825": { "y": "祭祀.捕捉.畋猎.纳畜.牧养.入殓.除服.成服.移柩.破土.安葬.启攒.", "j": "嫁娶.纳采.订盟.开市.入宅.", "c": "生肖冲羊", "s": "煞東", "ch": "执", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d0826": { "y": "破屋.坏垣.治病.余事勿取.", "j": "行丧.安葬.", "c": "生肖冲猴", "s": "煞北", "ch": "破", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d0827": { "y": "祈福.斋醮.出行.冠笄.嫁娶.雕刻.开柱眼.入宅.造桥.开市.交易.立券.纳财.入殓.除服.成服.移柩.破土.安葬.启攒.", "j": "动土.破土.订盟.安床.开池.", "c": "生肖冲鸡", "s": "煞西", "ch": "危", "zc": "正冲正冲乙酉", "ts": "厨灶门外正北" }, "d0828": { "y": "祈福.求嗣.解除.订盟.纳采.动土.起基.放水.造仓.开市.纳畜.牧养.开生坟.入殓.除服.成服.移柩.破土.安葬.", "j": "", "c": "生肖冲狗", "s": "煞南", "ch": "成", "zc": "正冲正冲丙戌", "ts": "仓库栖外正北" }, "d0829": { "y": "塑绘.开光.解除.订盟.纳采.嫁娶.出火.修造.动土.移徙.入宅.拆卸.起基.安门.分居.开市.交易.立券.纳财.纳畜.牧养.", "j": "", "c": "生肖冲猪", "s": "煞東", "ch": "收", "zc": "正冲正冲丁亥", "ts": "占房床房内北" }, "d0830": { "y": "祈福.出行.订盟.纳采.嫁娶.裁衣.动土.安床.放水.开市.掘井.交易.立券.栽种.开渠.除服.成服.移柩.破土.", "j": "", "c": "生肖冲鼠", "s": "煞北", "ch": "开", "zc": "正冲正冲戊子", "ts": "占门碓房内北" }, "d0921": { "y": "订盟.纳采.祭祀.祈福.安香.出火.修造.动土.上梁.安门.起基.竖柱.上梁.定磉.开池.移徙.入宅.立券.破土.", "j": "嫁娶.造庙.造桥.造船.作灶.安葬.", "c": "生肖冲狗", "s": "煞南", "ch": "危", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d0925": { "y": "祭祀.出行.解除.冠笄.嫁娶.伐木.架马.开柱眼.修造.动土.移徙.入宅.开生坟.合寿木.入殓.移柩.破土.安葬.修坟.", "j": "开光.安床.", "c": "生肖冲虎", "s": "煞南", "ch": "闭", "zc": "正冲正冲甲寅", "ts": "碓磨炉外东南" }, "d0930": { "y": "祭祀.会亲友.纳采.嫁娶.开光.塑绘.斋醮.安香.开市.立券.除服.成服.入殓.移柩.安葬.赴任.进人口.出行.裁衣.修造.动土.上梁.经络.交易.", "j": "入宅.伐木.", "c": "生肖冲羊", "s": "煞東", "ch": "定", "zc": "正冲正冲己未", "ts": "碓磨厕外东南" }, "d0926": { "y": "祭祀.祈福.求嗣.出行.沐浴.交易.扫舍.教牛马.", "j": "动土.作灶.行丧.安葬.修坟.", "c": "生肖冲兔", "s": "煞東", "ch": "建", "zc": "正冲正冲乙卯", "ts": "厨灶门外东南" }, "d0920": { "y": "余事勿取.", "j": "探病.余事勿取.", "c": "生肖冲鸡", "s": "煞西", "ch": "破", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d1031": { "y": "祭祀.祈福.斋醮.沐浴.竖柱.订盟.纳采.嫁娶.拆卸.入宅.移柩.启攒.谢土.赴任.出火.纳畜.", "j": "作灶.入殓.安葬.安床.", "c": "生肖冲虎", "s": "煞南", "ch": "开", "zc": "正冲正冲庚寅", "ts": "厨灶炉房内北" }, "d0901": { "y": "嫁娶.出行.纳畜.祭祀.入殓.启攒.安葬.", "j": "作灶.动土.破土.", "c": "生肖冲虎", "s": "煞南", "ch": "建", "zc": "正冲正冲庚寅", "ts": "厨灶炉房内北" }, "d0902": { "y": "订盟.纳采.祭祀.祈福.修造.动土.上梁.破土.安葬.", "j": "嫁娶.开市.", "c": "生肖冲兔", "s": "煞東", "ch": "除", "zc": "正冲正冲辛卯", "ts": "仓库门房内北" }, "d0903": { "y": "订盟.纳采.出行.会亲友.修造.上梁.移徙.入宅.", "j": "开市.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "满", "zc": "正冲正冲壬辰", "ts": "房床栖房内南" }, "d0904": { "y": "沐浴.修饰垣墙.平治道涂.余事勿取.", "j": "嫁娶.祈福.余事勿取.", "c": "生肖冲蛇", "s": "煞西", "ch": "平", "zc": "正冲正冲癸巳", "ts": "占门床房内南" }, "d0905": { "y": "嫁娶.祭祀.祈福.斋醮.动土.移徙.入宅.", "j": "开市.安葬.", "c": "生肖冲马", "s": "煞南", "ch": "定", "zc": "正冲正冲甲午", "ts": "占碓磨房内南" }, "d0906": { "y": "捕捉.结网.入殓.破土.安葬.", "j": "嫁娶.入宅.", "c": "生肖冲羊", "s": "煞東", "ch": "执", "zc": "正冲正冲乙未", "ts": "厨灶厕房内南" }, "d0907": { "y": "沐浴.治病.破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲猴", "s": "煞北", "ch": "破", "zc": "正冲正冲丙申", "ts": "仓库炉房内南" }, "d0908": { "y": "破屋.坏垣.求医.治病.余事勿取.", "j": "移徙.入宅.", "c": "生肖冲鸡", "s": "煞西", "ch": "破", "zc": "正冲正冲丁酉", "ts": "房床门房内南" }, "d0909": { "y": "嫁娶.纳采.订盟.祭祀.祈福.求嗣.开光.出行.出火.拆卸.修造.动土.进人口.入宅.移徙.安床.上梁.合脊.放水.掘井.破土.移柩.谢土.除服.成服.", "j": "开市.开仓.安门.安葬.", "c": "生肖冲狗", "s": "煞南", "ch": "危", "zc": "正冲正冲戊戌", "ts": "门鸡栖房内东" }, "d0910": { "y": "嫁娶.纳采.订盟.祭祀.祈福.求嗣.开光.解除.进人口.入宅.移徙.出火.安床.开市.交易.立券.挂匾.", "j": "安葬.纳畜.出行.行丧.伐木.栽种.造庙.造桥.", "c": "生肖冲猪", "s": "煞東", "ch": "成", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d0911": { "y": "祭祀.冠笄.捕捉.余事勿取.", "j": "嫁娶.开市.造屋.作梁.合寿木.", "c": "生肖冲鼠", "s": "煞北", "ch": "收", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d0912": { "y": "祭祀.解除.结网.畋猎.取渔.会亲友.入学.移柩.启攒.除服.成服.", "j": "开市.祈福.动土.破土.入殓.安葬.造船.", "c": "生肖冲牛", "s": "煞西", "ch": "开", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d0913": { "y": "冠笄.沐浴.出行.修造.动土.移徙.入宅.破土.安葬.", "j": "嫁娶.开市.祭祀.祈福.斋醮.纳采.修坟.", "c": "生肖冲虎", "s": "煞南", "ch": "闭", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" }, "d0914": { "y": "祭祀.出行.", "j": "嫁娶.入宅.修造.动土.会亲友.破土.", "c": "生肖冲兔", "s": "煞東", "ch": "建", "zc": "正冲正冲癸卯", "ts": "占大门外东北" }, "d0915": { "y": "嫁娶.订盟.纳采.祭祀.祈福.出行.修造.动土.移徙.入宅.", "j": "针灸.伐木.作梁.造庙.行丧.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "除", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d0916": { "y": "出行.开市.交易.立券.安机械.出火.上梁.移徙.", "j": "嫁娶.安葬.动土.造桥.", "c": "生肖冲蛇", "s": "煞西", "ch": "满", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d0917": { "y": "祭祀.沐浴.修饰垣墙.平治道涂.余事勿取.", "j": "斋醮.嫁娶.移徙.出行.上梁.入宅.", "c": "生肖冲马", "s": "煞南", "ch": "平", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d0918": { "y": "嫁娶.造车器.安机械.祭祀.祈福.开光.安香.出火.出行.开市.立券.修造.动土.移徙.入宅.破土.安葬.", "j": "纳采.订盟.架马.词讼.开渠.", "c": "生肖冲羊", "s": "煞東", "ch": "定", "zc": "正冲正冲丁未", "ts": "房床厕外东北" }, "d0919": { "y": "沐浴.捕捉.入殓.除服.成服.破土.启攒.安葬.", "j": "祭祀.嫁娶.安床.开市.入宅.探病.上梁.", "c": "生肖冲猴", "s": "煞北", "ch": "执", "zc": "正冲正冲戊申", "ts": "占门炉外东北" }, "d0922": { "y": "开光.求嗣.雕刻.嫁娶.订盟.纳采.出火.拆卸.修造.动土.起基.上梁.放水.移徙.入宅.造仓.造船.开市.开池.纳畜.牧养.挂匾.", "j": "行丧.安葬.合寿木.", "c": "生肖冲猪", "s": "煞東", "ch": "成", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d0923": { "y": "祭祀.嫁娶.捕捉.", "j": "开光.动土.破土.开市.修造.入宅.安门.", "c": "生肖冲鼠", "s": "煞北", "ch": "收", "zc": "正冲正冲壬子", "ts": "房床碓外正东" }, "d0924": { "y": "祭祀.普渡.解除.会亲友.捕捉.畋猎.启攒.除服.成服.移柩.", "j": "嫁娶.开市.动土.掘井.开池.安葬.", "c": "生肖冲牛", "s": "煞西", "ch": "开", "zc": "正冲正冲癸丑", "ts": "占门厕外正东" }, "d0927": { "y": "出行.解除.纳采.冠笄.雕刻.修造.动土.起基.上梁.合脊.安床.移徙.入宅.开市.栽种.作厕.", "j": "造庙.安门.行丧.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "除", "zc": "正冲正冲丙辰", "ts": "仓库栖外东南" }, "d0928": { "y": "祭祀.沐浴.解除.理发.冠笄.安机械.作灶.造仓.开市.开池.作厕.补垣.塞穴.断蚁.结网.", "j": "嫁娶.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "满", "zc": "正冲正冲丁巳", "ts": "占房床外东南" }, "d0929": { "y": "祭祀.沐浴.修饰垣墙.平治道涂.", "j": "嫁娶.入宅.", "c": "生肖冲马", "s": "煞南", "ch": "平", "zc": "正冲正冲戊午", "ts": "占门碓外东南" }, "d1021": { "y": "纳采.订盟.嫁娶.祭祀.祈福.求嗣.置产.求医.治病.开市.交易.立券.会亲友.移徙.竖柱.上梁.造屋.合脊.安门.放水.捕捉.纳畜.", "j": "造庙.造船.动土.破土.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "建", "zc": "正冲正冲庚辰", "ts": "厨灶栖外西北" }, "d1029": { "y": "祭祀.塑绘.开光.祈福.斋醮.出行.订盟.纳采.裁衣.嫁娶.拆卸.修造.安床.入宅.安香.入殓.启攒.安葬.谢土.赴任.会亲友.进人口.出行.移徙.上梁.经络.开市.交易.立券.纳财.", "j": "开仓.冠笄.伐木.作梁.", "c": "生肖冲鼠", "s": "煞北", "ch": "成", "zc": "正冲正冲戊子", "ts": "占门碓房内北" }, "d1024": { "y": "祭祀.造畜椆栖.修饰垣墙.平治道涂.余事勿取.", "j": "嫁娶.开市.安床.掘井.", "c": "生肖冲羊", "s": "煞東", "ch": "平", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d1014": { "y": "嫁娶.纳采.订盟.祭祀.祈福.求嗣.斋醮.开光.安香.出火.造庙.移徙.出行.入宅.造庙.起基.竖柱.上梁.安床.纳畜.捕捉.纳婿.安葬.", "j": "开市.破土.掘井.合寿木.", "c": "生肖冲鸡", "s": "煞西", "ch": "执", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d1011": { "y": "纳采.订盟.开市.交易.立券.会亲友.纳畜.牧养.问名.移徙.解除.作厕.入学.起基.安床.开仓.出货财.安葬.启攒.入殓.除服.成服.", "j": "入宅.上梁.斋醮.出火.谢土.", "c": "生肖冲马", "s": "煞南", "ch": "满", "zc": "正冲正冲庚午", "ts": "厨灶碓外西南" }, "d1022": { "y": "出行.造车器.造畜椆栖.解除.冠笄.裁衣.作梁.雕刻.会亲友.移徙.入宅.安机械.造畜椆栖.开市.扫舍.", "j": "嫁娶.动土.破土.修坟.", "c": "生肖冲蛇", "s": "煞西", "ch": "除", "zc": "正冲正冲辛巳", "ts": "仓库床外西北" }, "d1027": { "y": "破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲狗", "s": "煞南", "ch": "破", "zc": "正冲正冲丙戌", "ts": "仓库栖外正北" }, "d1017": { "y": "造车器.嫁娶.订盟.纳采.会亲友.祭祀.出行.开市.立券.移徙.入宅.破土.安葬.", "j": "上梁.开光.造屋.架马.合寿木.", "c": "生肖冲鼠", "s": "煞北", "ch": "成", "zc": "正冲正冲丙子", "ts": "仓库碓外西北" }, "d1129": { "y": "理发.会亲友.补垣.塞穴.结网.", "j": "嫁娶.入宅.安门.移徙.", "c": "生肖冲羊", "s": "煞東", "ch": "满", "zc": "正冲正冲己未", "ts": "碓磨厕外东南" }, "d1001": { "y": "祭祀.冠笄.会亲友.拆卸.起基.除服.成服.移柩.启攒.安葬.沐浴.捕捉.开光.塑绘.", "j": "作灶.祭祀.入宅.嫁娶.", "c": "生肖冲猴", "s": "煞北", "ch": "执", "zc": "正冲正冲庚申", "ts": "厨灶炉外正南" }, "d1002": { "y": "祭祀.沐浴.破屋.坏垣.余事勿取.", "j": "移徙.入宅.出行.栽种.", "c": "生肖冲鸡", "s": "煞西", "ch": "破", "zc": "正冲正冲辛酉", "ts": "仓库门外正南" }, "d1003": { "y": "祭祀.塑绘.开光.出行.解除.订盟.嫁娶.拆卸.起基.安床.入宅.开市.入殓.除服.成服.移柩.破土.谢土.挂匾.开柱眼.交易.", "j": "造桥.冠笄.造屋.掘井.", "c": "生肖冲狗", "s": "煞南", "ch": "危", "zc": "正冲正冲壬戌", "ts": "房床栖外正南" }, "d1004": { "y": "祭祀.赴任.动土.上梁.开光.塑绘.冠笄.拆卸.起基.安床.开市.立券.赴任.经络.", "j": "定磉.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "成", "zc": "正冲正冲癸亥", "ts": "占门床外正南" }, "d1005": { "y": "祭祀.裁衣.冠笄.嫁娶.纳婿.会亲友.除服.成服.移柩.捕捉.进人口.入殓.", "j": "移徙.入宅.作灶.安葬.", "c": "生肖冲鼠", "s": "煞北", "ch": "收", "zc": "正冲正冲甲子", "ts": "占碓磨外正南" }, "d1006": { "y": "祭祀.诸事不宜.", "j": "入殓.安葬.开市.交易.", "c": "生肖冲牛", "s": "煞西", "ch": "开", "zc": "正冲正冲乙丑", "ts": "厨灶厕外西南" }, "d1007": { "y": "祭祀.裁衣.冠笄.嫁娶.安机械.拆卸.动土.起基.移徙.入宅.入殓.启攒.安葬.造仓.经络.", "j": "安床.开光.开市.交易.", "c": "生肖冲虎", "s": "煞南", "ch": "闭", "zc": "正冲正冲丙寅", "ts": "仓库炉外西南" }, "d1008": { "y": "嫁娶.裁衣.冠笄.合帐.祭祀.出行.安床.移徙.塞穴.入殓.破土.移柩.安葬.", "j": "开市.出行.栽种.置产.词讼.安门.掘井.开光.", "c": "生肖冲兔", "s": "煞東", "ch": "闭", "zc": "正冲正冲丁卯", "ts": "房床门外西南" }, "d1009": { "y": "祭祀.造车器.出行.修造.上梁.造屋.安门.安床.造畜椆栖.教牛马.", "j": "出货财.开仓.动土.破土.安葬.行丧.伐木.开渠.栽种.", "c": "生肖冲龙", "s": "煞北", "ch": "建", "zc": "正冲正冲戊辰", "ts": "门鸡栖外西南" }, "d1010": { "y": "祭祀.开光.出行.解除.伐木.作梁.出火.拆卸.入宅.移徙.安床.修造.造畜椆栖.扫舍.", "j": "造庙.嫁娶.掘井.栽种.造桥.作灶.动土.", "c": "生肖冲蛇", "s": "煞西", "ch": "除", "zc": "正冲正冲己巳", "ts": "碓磨床外西南" }, "d1012": { "y": "祭祀.平治道涂.余事勿取.", "j": "嫁娶.开市.", "c": "生肖冲羊", "s": "煞東", "ch": "平", "zc": "正冲正冲辛未", "ts": "仓库厕外西南" }, "d1013": { "y": "捕捉.畋猎.余事勿取.", "j": "开市.交易.祭祀.入宅.安葬.", "c": "生肖冲猴", "s": "煞北", "ch": "定", "zc": "正冲正冲壬申", "ts": "房床厕外正南" }, "d1015": { "y": "祭祀.沐浴.解除.破屋.坏垣.余事勿取.", "j": "开市.嫁娶.", "c": "生肖冲狗", "s": "煞南", "ch": "破", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d1016": { "y": "订盟.纳采.会亲友.交易.立券.纳财.栽种.纳畜.牧养.", "j": "嫁娶.开市.入宅.祈福.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "危", "zc": "正冲正冲乙亥", "ts": "厨灶床外正西" }, "d1018": { "y": "祭祀.作灶.纳财.捕捉.畋猎.余事勿取.", "j": "动土.破土.开市.安葬.", "c": "生肖冲牛", "s": "煞西", "ch": "收", "zc": "正冲正冲丁丑", "ts": "房床厕外西北" }, "d1019": { "y": "嫁娶.订盟.纳采.祭祀.祈福.出行.求医.治病.出火.移徙.入宅.", "j": "开市.开仓.出货财.安床.安门.安葬.", "c": "生肖冲虎", "s": "煞南", "ch": "开", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d1020": { "y": "冠笄.祭祀.沐浴.作灶.理发.整手足甲.扫舍.补垣.塞穴.入殓.破土.启攒.", "j": "开光.嫁娶.会亲友.栽种.针灸.安葬.", "c": "生肖冲兔", "s": "煞東", "ch": "闭", "zc": "正冲正冲己卯", "ts": "占门炉外西北" }, "d1023": { "y": "沐浴.理发.冠笄.安床.开市.立券.会亲友.交易.纳财.结网.教牛马.", "j": "移徙.入宅.出行.祈福.嫁娶.", "c": "生肖冲马", "s": "煞南", "ch": "满", "zc": "正冲正冲壬午", "ts": "房床碓外正北" }, "d1025": { "y": "捕捉.结网.入殓.除服.成服.移柩.破土.安葬.启攒.立碑.", "j": "嫁娶.祭祀.入宅.造屋.移徙.", "c": "生肖冲猴", "s": "煞北", "ch": "定", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d1026": { "y": "祭祀.祈福.求嗣.斋醮.造庙.出火.安机械.会亲友.开市.交易.立券.纳财.习艺.经络.求医.治病.开池.作厕.畋猎.结网.栽种.牧养.安葬.破土.启攒.", "j": "开光.嫁娶.掘井.伐木.作梁.", "c": "生肖冲鸡", "s": "煞西", "ch": "执", "zc": "正冲正冲乙酉", "ts": "厨灶门外正北" }, "d1028": { "y": "会亲友.嫁娶.订盟.纳采.纳婿.拆卸.修造.动土.起基.竖柱.上梁.安床.会亲友.纳财.", "j": "出行.祈福.安葬.作灶.", "c": "生肖冲猪", "s": "煞東", "ch": "危", "zc": "正冲正冲丁亥", "ts": "占房床房内北" }, "d1030": { "y": "祭祀.作灶.入殓.除服.成服.畋猎.", "j": "栽种.动土.安葬.开市.", "c": "生肖冲牛", "s": "煞西", "ch": "收", "zc": "正冲正冲己丑", "ts": "碓磨厕房内北" }, "d1121": { "y": "破屋.坏垣.祭祀.余事勿取.", "j": "嫁娶.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "破", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d1229": { "y": "祭祀.祈福.斋醮.出行.冠笄.安机械.移徙.入宅.安香.安床.除服.成服.移柩.启攒.", "j": "开光.栽种.治病.安门.作灶.", "c": "生肖冲牛", "s": "煞西", "ch": "危", "zc": "正冲正冲己丑", "ts": "碓磨厕房内北" }, "d1101": { "y": "嫁娶.祭祀.安机械.入殓.破土.安葬.", "j": "动土.上梁.", "c": "生肖冲兔", "s": "煞東", "ch": "闭", "zc": "正冲正冲辛卯", "ts": "仓库门房内北" }, "d1102": { "y": "作灶.造畜椆栖.", "j": "行丧.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "建", "zc": "正冲正冲壬辰", "ts": "房床栖房内南" }, "d1103": { "y": "沐浴.理发.入学.习艺.进人口.", "j": "嫁娶.入宅.", "c": "生肖冲蛇", "s": "煞西", "ch": "除", "zc": "正冲正冲癸巳", "ts": "占门床房内南" }, "d1104": { "y": "开光.针灸.会亲友.启攒.安葬.", "j": "开市.动土.破土.", "c": "生肖冲马", "s": "煞南", "ch": "满", "zc": "正冲正冲甲午", "ts": "占碓磨房内南" }, "d1105": { "y": "祭祀.结网.造畜椆栖.余事勿取.", "j": "余事勿取.", "c": "生肖冲羊", "s": "煞東", "ch": "平", "zc": "正冲正冲乙未", "ts": "厨灶厕房内南" }, "d1106": { "y": "入殓.除服.成服.移柩.破土.启攒.安葬.", "j": "移徙.入宅.", "c": "生肖冲猴", "s": "煞北", "ch": "定", "zc": "正冲正冲丙申", "ts": "仓库炉房内南" }, "d1107": { "y": "嫁娶.纳采.订盟.祭祀.斋醮.开光.安香.出火.出行.出火.拆卸.动土.祈福.进人口.纳财.交易.立券.移徙.安床.修造.安葬.除服.成服.", "j": "置产.掘井.词讼.栽种.", "c": "生肖冲鸡", "s": "煞西", "ch": "定", "zc": "正冲正冲丁酉", "ts": "房床门房内南" }, "d1108": { "y": "嫁娶.纳采.订盟.祭祀.开光.出行.解除.伐木.出火.入宅.移徙.拆卸.修造.栽种.安葬.入殓.", "j": "破土.动土.安门.作灶.开市.交易.", "c": "生肖冲狗", "s": "煞南", "ch": "执", "zc": "正冲正冲戊戌", "ts": "门鸡栖房内东" }, "d1109": { "y": "祭祀.解除.破屋.坏垣.求医.治病.余事勿取.", "j": "嫁娶.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "破", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d1110": { "y": "祭祀.扫舍.破土.安葬.除服.成服.启攒.移柩.入殓.立碑.余事勿取.", "j": "祭祀.嫁娶.入宅.修造.动土.", "c": "生肖冲鼠", "s": "煞北", "ch": "危", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d1111": { "y": "订盟.纳采.会亲友.祭祀.祈福.修造.动土.安机械.破土.安葬.", "j": "嫁娶.移徙.出火.开市.入宅.", "c": "生肖冲牛", "s": "煞西", "ch": "成", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d1112": { "y": "祭祀.沐浴.捕捉.畋猎.结网.扫舍.", "j": "嫁娶.纳采.订盟.安床.动土.破土.安葬.", "c": "生肖冲虎", "s": "煞南", "ch": "收", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" }, "d1113": { "y": "开市.纳财.出行.祭祀.祈福.求嗣.斋醮.问名.入学.起基.定磉.置产.开渠.掘井.拆卸.栽种.纳畜.牧养.动土.破土.启攒.", "j": "移徙.入宅.出火.入殓.安葬.", "c": "生肖冲兔", "s": "煞東", "ch": "开", "zc": "正冲正冲癸卯", "ts": "占大门外东北" }, "d1114": { "y": "祭祀.理发.置产.塞穴.除服.成服.移柩.入殓.破土.安葬.", "j": "嫁娶.入宅.安床.掘井.开光.", "c": "生肖冲龙", "s": "煞北", "ch": "闭", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d1115": { "y": "祭祀.沐浴.出行.余事勿取.", "j": "开市.动土.破土.行丧.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "建", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d1116": { "y": "嫁娶.造车器.出行.会亲友.移徙.入宅.修造.动土.雕刻.开光.安香.出火.理发.会亲友.造屋.合脊.起基.归岫.安门.拆卸.扫舍.栽种.造畜椆栖.", "j": "开市.纳采.造庙.安床.开渠.安葬.", "c": "生肖冲马", "s": "煞南", "ch": "除", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d1117": { "y": "塑绘.会亲友.安机械.塞穴.结网.裁衣.经络.", "j": "嫁娶.开市.祈福.斋醮.安葬.", "c": "生肖冲羊", "s": "煞東", "ch": "满", "zc": "正冲正冲丁未", "ts": "房床厕外东北" }, "d1118": { "y": "纳采.移徙.纳财.开市.交易.立券.纳财.入宅.修造.动土.竖柱.起基.定磉.造庙.安香.出火.修饰垣墙.平治道涂.会亲友.出行.开池.作厕.", "j": "开仓.造屋.造桥.祭祀.", "c": "生肖冲猴", "s": "煞北", "ch": "平", "zc": "正冲正冲戊申", "ts": "占门炉外东北" }, "d1119": { "y": "订盟.纳采.纳财.开市.立券.祭祀.祈福.移徙.入宅.出行.造屋.起基.修造.动土.竖柱.上梁.安门.安香.出火.教牛马.会亲友.破土.", "j": "嫁娶.安葬.掘井.置产.造船.", "c": "生肖冲鸡", "s": "煞西", "ch": "定", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d1120": { "y": "嫁娶.订盟.纳采.祭祀.祈福.塑绘.开光.移徙.安床.伐木.作梁.捕捉.畋猎.结网.求医.治病.解除.安葬.除服.成服.移柩.入殓.立碑.谢土.", "j": "开市.造庙.动土.破土.", "c": "生肖冲狗", "s": "煞南", "ch": "执", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d1122": { "y": "嫁娶.纳采.订盟.祭祀.冠笄.裁衣.伐木.作梁.架马.定磉.开柱眼.作灶.移徙.安床.畋猎.结网.开池.作厕.除服.成服.启攒.入殓.移柩.安葬.", "j": "造屋.造船.动土.破土.", "c": "生肖冲鼠", "s": "煞北", "ch": "危", "zc": "正冲正冲壬子", "ts": "房床碓外正东" }, "d1123": { "y": "纳采.订盟.祭祀.祈福.求嗣.斋醮.开光.会亲友.解除.入学.纳财.交易.立券.经络.起基.动土.定磉.开池.栽种.纳畜.牧养.破土.入殓.立碑.安葬.", "j": "嫁娶.开市.入宅.出火.移徙.", "c": "生肖冲牛", "s": "煞西", "ch": "成", "zc": "正冲正冲癸丑", "ts": "占门厕外正东" }, "d1124": { "y": "捕捉.畋猎.会亲友.解除.入殓.除服.成服.移柩.余事勿取.", "j": "安床.安门.破土.修坟.安葬.", "c": "生肖冲虎", "s": "煞南", "ch": "收", "zc": "正冲正冲甲寅", "ts": "碓磨炉外东南" }, "d1125": { "y": "祭祀.祈福.求嗣.斋醮.沐浴.冠笄.出行.理发.拆卸.解除.起基.动土.定磉.安碓硙.开池.掘井.扫舍.除服.成服.移柩.启攒.立碑.谢土.", "j": "移徙.入宅.安门.作梁.安葬.", "c": "生肖冲兔", "s": "煞東", "ch": "开", "zc": "正冲正冲乙卯", "ts": "厨灶门外东南" }, "d1126": { "y": "嫁娶.冠笄.安床.纳采.会亲友.塞穴.捕捉.置产.造畜椆栖.", "j": "开光.掘井.安葬.谢土.修坟.", "c": "生肖冲龙", "s": "煞北", "ch": "闭", "zc": "正冲正冲丙辰", "ts": "仓库栖外东南" }, "d1127": { "y": "祭祀.沐浴.余事勿取.", "j": "诸事不宜.", "c": "生肖冲蛇", "s": "煞西", "ch": "建", "zc": "正冲正冲丁巳", "ts": "占房床外东南" }, "d1128": { "y": "祭祀.会亲友.嫁娶.沐浴.修造.动土.祈福.开光.塑绘.出行.订盟.纳采.裁衣.入殓.除服.成服.移柩.启攒.赴任.竖柱.上梁.纳财.扫舍.栽种.纳畜.伐木.", "j": "入宅.作灶.安床.开仓.", "c": "生肖冲马", "s": "煞南", "ch": "除", "zc": "正冲正冲戊午", "ts": "占门碓外东南" }, "d1130": { "y": "祭祀.祈福.订盟.纳采.裁衣.拆卸.修造.动土.起基.安床.移徙.入宅.安香.除服.成服.入殓.移柩.安葬.谢土.赴任.会亲友.进人口.出行.竖柱.上梁.经络.开市.交易.立券.纳财.开仓.", "j": "作灶.治病.伐木.作梁.", "c": "生肖冲猴", "s": "煞北", "ch": "平", "zc": "正冲正冲庚申", "ts": "厨灶炉外正南" }, "d1226": { "y": "塑绘.开光.订盟.纳采.裁衣.冠笄.拆卸.修造.安床.入宅.出火.安葬.谢土.赴任.", "j": "掘井.伐木.斋醮.作灶.", "c": "生肖冲狗", "s": "煞南", "ch": "定", "zc": "正冲正冲丙戌", "ts": "仓库栖外正北" }, "d1206": { "y": "沐浴.扫舍.余事勿取.", "j": "诸事不宜.", "c": "生肖冲虎", "s": "煞南", "ch": "收", "zc": "正冲正冲丙寅", "ts": "仓库炉外西南" }, "d1216": { "y": "祭祀.沐浴.破屋.坏垣.余事勿取.", "j": "嫁娶.移徙.入宅.探病.出行.造屋.", "c": "生肖冲鼠", "s": "煞北", "ch": "破", "zc": "正冲正冲丙子", "ts": "仓库碓外西北" }, "d1227": { "y": "祭祀.塑绘.开光.裁衣.冠笄.嫁娶.纳采.拆卸.修造.动土.竖柱.上梁.安床.移徙.入宅.安香.结网.捕捉.畋猎.伐木.进人口.放水.", "j": "出行.安葬.修坟.开市.", "c": "生肖冲猪", "s": "煞東", "ch": "执", "zc": "正冲正冲丁亥", "ts": "占房床房内北" }, "d1207": { "y": "祭祀.沐浴.理发.纳财.进人口.栽种.扫舍.捕捉.畋猎.结网.", "j": "会亲友.安葬.入宅.移徙.安床.开市.行丧.出火.作灶.安门.", "c": "生肖冲兔", "s": "煞東", "ch": "收", "zc": "正冲正冲丁卯", "ts": "房床门外西南" }, "d1222": { "y": "合帐.裁衣.教牛马.余事勿取.", "j": "入宅.动土.破土.嫁娶.作灶.造船.", "c": "生肖冲马", "s": "煞南", "ch": "建", "zc": "正冲正冲壬午", "ts": "房床碓外正北" }, "d1217": { "y": "冠笄.纳财.掘井.开池.出火.安床.交易.立券.畋猎.结网.理发.放水.", "j": "安门.动土.破土.行丧.安葬.成服.", "c": "生肖冲牛", "s": "煞西", "ch": "危", "zc": "正冲正冲丁丑", "ts": "房床厕外西北" }, "d1209": { "y": "入宅.移徙.出行.进人口.修造.动土.起基.上梁.安门.造仓.补垣.塞穴.造畜椆栖.", "j": "嫁娶.开市.安床.栽种.安葬.祈福.开光.掘井.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "闭", "zc": "正冲正冲己巳", "ts": "碓磨床外西南" }, "d1220": { "y": "祈福.斋醮.纳采.订盟.解除.架马.开柱眼.修造.动土.起基.上梁.归岫.造屋.合脊.掘井.除服.成服.破土.栽种.", "j": "移徙.开市.入宅.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "开", "zc": "正冲正冲庚辰", "ts": "厨灶栖外西北" }, "d1228": { "y": "祭祀.求医.破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鼠", "s": "煞北", "ch": "破", "zc": "正冲正冲戊子", "ts": "占门碓房内北" }, "d1201": { "y": "祭祀.祈福.订盟.纳采.裁衣.拆卸.修造.动土.起基.安床.移徙.入宅.安香.入殓.移柩.安葬.谢土.赴任.进人口.会亲友.", "j": "作灶.治病.", "c": "生肖冲鸡", "s": "煞西", "ch": "定", "zc": "正冲正冲辛酉", "ts": "仓库门外正南" }, "d1202": { "y": "祭祀.塑绘.开光.订盟.纳采.嫁娶.安床.进人口.入殓.除服.成服.移柩.启攒.安葬.立碑.", "j": "开市.交易.破土.作灶.", "c": "生肖冲狗", "s": "煞南", "ch": "执", "zc": "正冲正冲壬戌", "ts": "房床栖外正南" }, "d1203": { "y": "祭祀.解除.破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲猪", "s": "煞東", "ch": "破", "zc": "正冲正冲癸亥", "ts": "占门床外正南" }, "d1204": { "y": "祭祀.解除.祈福.开光.塑绘.斋醮.订盟.纳采.裁衣.冠笄.拆卸.修造.动土.入殓.除服.成服.移柩.启攒.安床.赴任.出行.移徙.竖柱.上梁.伐木.栽种.破土.安葬.纳畜.", "j": "造屋.治病.", "c": "生肖冲鼠", "s": "煞北", "ch": "危", "zc": "正冲正冲甲子", "ts": "占碓磨外正南" }, "d1205": { "y": "祭祀.祈福.订盟.纳采.裁衣.合帐.冠笄.安机械.安床.造畜椆栖.入殓.移柩.启攒.安葬.谢土.除服.成服.会亲友.竖柱.上梁.经络.开市.交易.立券.纳财.纳畜.筑堤.", "j": "嫁娶.入宅.治病.赴任.", "c": "生肖冲牛", "s": "煞西", "ch": "成", "zc": "正冲正冲乙丑", "ts": "厨灶厕外西南" }, "d1208": { "y": "纳采.订盟.祭祀.祈福.求嗣.塑绘.解除.拆卸.修造.动土.竖柱.上梁.安门.置产.开池.掘井.纳畜.安床.栽种.造畜椆栖.破土.移柩.立碑.", "j": "嫁娶.开市.出火.进人口.入殓.赴任.入宅.移徙.出行.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "开", "zc": "正冲正冲戊辰", "ts": "门鸡栖外西南" }, "d1210": { "y": "造畜椆栖.教牛马.", "j": "入宅.移徙.分居.作灶.出火.安香.动土.嫁娶.掘井.扫舍.造桥.", "c": "生肖冲马", "s": "煞南", "ch": "建", "zc": "正冲正冲庚午", "ts": "厨灶碓外西南" }, "d1211": { "y": "订盟.纳采.造车器.祭祀.祈福.出行.安香.修造.动土.上梁.开市.交易.立券.移徙.入宅.会亲友.安机械.栽种.纳畜.造屋.起基.安床.造畜椆栖.", "j": "破土.安葬.行丧.开生坟.", "c": "生肖冲羊", "s": "煞東", "ch": "除", "zc": "正冲正冲辛未", "ts": "仓库厕外西南" }, "d1212": { "y": "订盟.纳采.会亲友.安机械.开光.修造.动土.竖柱.上梁.造屋.起基.造桥.栽种.纳畜.造畜椆栖.移柩.入殓.启攒.修坟.立碑.安葬.", "j": "祈福.出火.嫁娶.入宅.开市.动土.破土.", "c": "生肖冲猴", "s": "煞北", "ch": "满", "zc": "正冲正冲壬申", "ts": "房床厕外正南" }, "d1213": { "y": "祭祀.平治道涂.修坟.除服.成服.余事勿取.", "j": "移徙.入宅.嫁娶.掘井.安葬.", "c": "生肖冲鸡", "s": "煞西", "ch": "平", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d1214": { "y": "嫁娶.冠笄.祭祀.祈福.求嗣.雕刻.开光.安香.出行.入学.修造.动土.竖柱.上梁.造屋.起基.安门.出火.移徙.入宅.掘井.造畜椆栖.安葬.破土.除服.成服.", "j": "开市.纳采.订盟.作灶.造庙.造船.经络.", "c": "生肖冲狗", "s": "煞南", "ch": "定", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d1215": { "y": "嫁娶.订盟.纳采.祭祀.祈福.求嗣.斋醮.安香.出火.修造.起基.造屋.合脊.安门.安碓硙.动土.上梁.移徙.入宅.", "j": "出行.掘井.破土.行丧.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "执", "zc": "正冲正冲乙亥", "ts": "厨灶床外正西" }, "d1218": { "y": "纳采.订盟.移徙.入宅.出行.安机械.会亲友.祭祀.祈福.斋醮.开光.安香.出火.解除.求医.针灸.治病.造屋.起基.修造.安门.造船.纳畜.牧养.移柩.入殓.启攒.谢土.修坟.立碑.", "j": "嫁娶.动土.安床.造桥.掘井.", "c": "生肖冲虎", "s": "煞南", "ch": "成", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d1219": { "y": "祭祀.沐浴.作灶.纳财.捕捉.畋猎.安床.扫舍.", "j": "开市.斋醮.破土.安葬.", "c": "生肖冲兔", "s": "煞東", "ch": "收", "zc": "正冲正冲己卯", "ts": "占门炉外西北" }, "d1221": { "y": "纳采.订盟.祭祀.沐浴.冠笄.合帐.裁衣.修造.动土.拆卸.移徙.入宅.安门.开仓.筑堤.作厕.栽种.纳畜.补垣.塞穴.", "j": "嫁娶.祈福.开光.掘井.安葬.行丧.", "c": "生肖冲蛇", "s": "煞西", "ch": "闭", "zc": "正冲正冲辛巳", "ts": "仓库床外西北" }, "d1223": { "y": "纳采.订盟.嫁娶.祭祀.祈福.安香.出火.出行.会亲友.经络.求医.治病.解除.拆卸.起基.修造.动土.定磉.扫舍.栽种.牧养.造畜椆栖.", "j": "斋醮.作梁.掘井.行丧.安葬.", "c": "生肖冲羊", "s": "煞東", "ch": "除", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d1224": { "y": "纳财.开市.交易.立券.会亲友.进人口.经络.祭祀.祈福.安香.出火.求医.治病.修造.动土.拆卸.扫舍.安床.栽种.牧养.开生坟.合寿木.入殓.安葬.启攒.", "j": "嫁娶.祈福.出火.移徙.入宅.", "c": "生肖冲猴", "s": "煞北", "ch": "满", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d1225": { "y": "祭祀.入殓.移柩.余事勿取.", "j": "入宅.修造.动土.破土.安门.上梁.", "c": "生肖冲鸡", "s": "煞西", "ch": "平", "zc": "正冲正冲乙酉", "ts": "厨灶门外正北" }, "d1230": { "y": "塑绘.斋醮.出行.拆卸.解除.修造.移徙.造船.入殓.除服.成服.移柩.启攒.修坟.立碑.谢土.", "j": "", "c": "生肖冲虎", "s": "煞南", "ch": "成", "zc": "正冲正冲庚寅", "ts": "厨灶炉房内北" }, "d1231": { "y": "祭祀.沐浴.安床.纳财.畋猎.捕捉.", "j": "开市.破土.", "c": "生肖冲兔", "s": "煞東", "ch": "收", "zc": "正冲正冲辛卯", "ts": "仓库门房内北" } } ukui-panel-4.0.0.4/plugin-calendar/html/hlnew/hl2008.json0000644000175000017500000016645414560306203021324 0ustar fengfeng{ "d0101": { "y": "教牛马.余事勿取xixi.", "j": "入宅.动土.破土.余事勿取." }, "d0102": { "y": "嫁娶.出行.求医.治病.祭祀.祈福.上梁.纳畜.", "j": "开市.安葬." }, "d0103": { "y": "开市.立券.开光.解除.安机械.上梁.启攒.安葬.", "j": "嫁娶.祈福." }, "d0104": { "y": "平治道涂.余事勿取.", "j": "诸事不宜." }, "d0105": { "y": "求嗣.斋醮.塑绘.订盟.纳采.出火.拆卸.修造.动土.造桥.安机械.栽种.纳畜.牧养.入殓.除服.成服.移柩.破土.安葬.", "j": "开市.嫁娶." }, "d0106": { "y": "嫁娶.订盟.纳采.会亲友.祭祀.安机械.移徙.入宅.造屋.安床.起基.定磉.安香.出火.挂匾.拆卸.置产.", "j": "开市.出行.安葬.行丧." }, "d0107": { "y": "沐浴.捕捉.畋猎.理发.整手足甲.入殓.除服.成服.破土.安葬.谢土.立碑.修坟.启攒.", "j": "纳采.订盟.嫁娶.上梁.开市.斋醮.造屋.安门." }, "d0108": { "y": "祭祀.破屋.坏垣.余事勿取.", "j": "斋醮.嫁娶.开市." }, "d0109": { "y": "沐浴.开仓.出货财.开市.交易.立券.纳财.栽种.纳畜.牧养.畋猎.入殓.破土.安葬.", "j": "祈福.嫁娶.安床.入宅.造船." }, "d0110": { "y": "祭祀.沐浴.补垣.塞穴.断蚁.解除.余事勿取.", "j": "造庙.入宅.修造.安葬.行丧.嫁娶." }, "d0111": { "y": "嫁娶.纳采.订盟.问名.祭祀.冠笄.裁衣.会亲友.进人口.纳财.捕捉.作灶.", "j": "开市.安床.安葬.修坟." }, "d0112": { "y": "订盟.纳采.会亲友.祭祀.斋醮.沐浴.塑绘.出火.开光.竖柱.上梁.开市.交易.立券.作梁.开柱眼.伐木.架马.安门.安床.拆卸.牧养.造畜椆栖.掘井.", "j": "造庙.嫁娶.出行.动土.安葬.行丧." }, "d0113": { "y": "交易.立券.纳财.安床.裁衣.造畜椆栖.安葬.谢土.启攒.除服.成服.修坟.立碑.移柩.入殓.", "j": "开光.嫁娶.开市.动土.破土." }, "d0114": { "y": "祭祀.解除.教牛马.会亲友.余事勿取.", "j": "破土.动土.安葬." }, "d0115": { "y": "纳采.订盟.移徙.纳财.开市.交易.立券.入宅.会亲友.解除.求医.治病.入学.安床.安门.安香.出火.拆卸.扫舍.入宅.挂匾.开生坟.合寿木.破土.修坟.启攒.入殓.", "j": "探病.祭祀.出行.上梁.造屋.谢土.安葬." }, "d0116": { "y": "嫁娶.订盟.纳采.祭祀.祈福.求嗣.会亲友.解除.出行.入学.纳财.开市.交易.立券.习艺.经络.安床.开仓.出货财.纳畜.安葬.启攒.修坟.入殓.", "j": "入宅.开光.开市.动土." }, "d0117": { "y": "祭祀.冠笄.嫁娶.会亲友.进人口.裁衣.结网.平治道涂.", "j": "移徙.入宅.造庙.作灶.治病.安葬." }, "d0118": { "y": "祭祀.安碓硙.结网.余事勿取.", "j": "嫁娶.安葬." }, "d0119": { "y": "嫁娶.祭祀.沐浴.裁衣.出行.理发.移徙.捕捉.畋猎.放水.入宅.除服.成服.启攒.安葬.移柩.入殓.", "j": "造屋.开市.动土.破土." }, "d0120": { "y": "破屋.坏垣.余事勿取.", "j": "嫁娶.开市.安葬." }, "d0121": { "y": "纳采.订盟.祭祀.求嗣.出火.塑绘.裁衣.会亲友.入学.拆卸.扫舍.造仓.挂匾.掘井.开池.结网.栽种.纳畜.破土.修坟.立碑.安葬.入殓.", "j": "祈福.嫁娶.造庙.安床.谢土." }, "d0122": { "y": "入殓.除服.成服.移柩.启攒.安葬.修坟.立碑.", "j": "开市.伐木.嫁娶.作梁." }, "d0123": { "y": "祭祀.作灶.入殓.除服.余事勿取.", "j": "开市.安床." }, "d0124": { "y": "塑绘.开光.沐浴.冠笄.会亲友.作灶.放水.造畜椆栖.", "j": "嫁娶.入殓.安葬.出行." }, "d0125": { "y": "祭祀.沐浴.祈福.斋醮.订盟.纳采.裁衣.拆卸.起基.竖柱.上梁.安床.入殓.除服.成服.移柩.启攒.挂匾.求嗣.出行.合帐.造畜椆栖.", "j": "开仓.嫁娶.移徙.入宅." }, "d0126": { "y": "祭祀.解除.余事勿取.", "j": "诸事不宜." }, "d0127": { "y": "沐浴.解除.订盟.纳采.裁衣.冠笄.拆卸.修造.动土.移徙.入宅.除服.成服.移柩.破土.启攒.安葬.扫舍.修坟.伐木.纳财.交易.立券.", "j": "作灶.祭祀.上梁.出行." }, "d0128": { "y": "出行.嫁娶.订盟.纳采.入殓.安床.启攒.安葬.祭祀.裁衣.会亲友.进人口.", "j": "作灶.掘井.谢土.入宅." }, "d0129": { "y": "修饰垣墙.平治道涂.入殓.移柩.余事勿取.", "j": "嫁娶.移徙.入宅.开光." }, "d0130": { "y": "会亲友.纳采.进人口.修造.动土.竖柱.上梁.祭祀.开光.塑绘.祈福.斋醮.嫁娶.安床.移徙.入宅.安香.纳畜.", "j": "出行.治病.安葬.开市." }, "d0131": { "y": "祭祀.会亲友.出行.订盟.纳采.沐浴.修造.动土.祈福.斋醮.嫁娶.拆卸.安床.入殓.移柩.安葬.谢土.赴任.裁衣.竖柱.上梁.伐木.捕捉.栽种.破土.安门.", "j": "造屋.开市.作灶.入宅." }, "d0201": { "y": "解除.破屋.坏垣.余事勿取.", "j": "诸事不宜." }, "d0202": { "y": "塑绘.开光.出行.订盟.纳采.除服.成服.嫁娶.纳婿.入殓.移柩.启攒.安葬.立碑.", "j": "入宅.安床." }, "d0203": { "y": "入殓.除服.成服.移柩.启攒.安葬.立碑.余事勿取.", "j": "破土.伐木." }, "d0204": { "y": "塞穴.结网.取渔.畋猎.", "j": "嫁娶.安门.移徙.入宅.安葬." }, "d0205": { "y": "纳采.祭祀.祈福.出行.会亲友.修造.动土.移徙.入宅.", "j": "嫁娶.开市.安葬.破土." }, "d0206": { "y": "纳采.嫁娶.祭祀.祈福.出行.开市.会亲友.动土.破土.启攒.", "j": "移徙.入宅.出火.安门.安葬." }, "d0207": { "y": "祭祀.祈福.求嗣.斋醮.入殓.除服.成服.移柩.安葬.启攒.", "j": "嫁娶.动土.开光.造屋.破土." }, "d0208": { "y": "纳采.会亲友.竖柱.上梁.立券.入殓.移柩.安葬.启攒.", "j": "祭祀.移徙.入宅.动土.破土." }, "d0209": { "y": "祭祀.祈福.斋醮.出行.开市.立券.动土.移徙.入宅.破土.安葬.", "j": "开光.嫁娶.作灶.掘井.纳畜." }, "d0210": { "y": "会亲友.求嗣.理发.冠笄.结网.捕捉.开光.理发.", "j": "开市.动土.安葬.破土." }, "d0211": { "y": "祭祀.平治道涂.余事勿取.", "j": "嫁娶.祈福.掘井.安葬." }, "d0212": { "y": "祈福.求嗣.斋醮.纳采.嫁娶.伐木.修造.动土.移徙.入宅.造庙.安机械.开市.入殓.除服.成服.移柩.安葬.破土.谢土.", "j": "置产.造屋.合脊.开光.探病.安门.作灶." }, "d0213": { "y": "入学.习艺.出行.纳采.订盟.嫁娶.会亲友.进人口.牧养.捕捉.入殓.移柩.安葬.启攒.", "j": "开光.开市.入宅.动土.造屋." }, "d0214": { "y": "祭祀.沐浴.求医.治病.扫舍.破屋.坏垣.解除.余事勿取.", "j": "入宅.开市.安葬." }, "d0215": { "y": "祭祀.冠笄.嫁娶.拆卸.修造.动土.起基.上梁.造屋.入宅.开市.开池.塞穴.入殓.除服.成服.移柩.安葬.破土.", "j": "安床.栽种.治病.作灶." }, "d0216": { "y": "", "j": "" }, "d0217": { "y": "塑绘.开光.祈福.求嗣.订盟.纳采.裁衣.冠笄.拆卸.修造.动土.起基.安门.安床.移徙.造仓.结网.纳畜.", "j": "伐木.作灶.安葬.取渔.入宅." }, "d0218": { "y": "祭祀.沐浴.开光.塑绘.祈福.求嗣.订盟.纳采.冠笄.裁衣.嫁娶.动土.除服.成服.移柩.破土.启攒.出行.安碓硙.放水.开市.立券.交易.", "j": "安葬.上梁.入宅.作灶." }, "d0219": { "y": "祭祀.祈福.求嗣.酬神.裁衣.安床.立券.交易.入殓.除服.成服.移柩.谢土.启攒.", "j": "出行.嫁娶.入宅.动土." }, "d0220": { "y": "裁衣.合帐.入殓.除服.成服.会亲友.纳财.", "j": "祭祀.祈福.移徙.嫁娶.入宅." }, "d0221": { "y": "祭祀.斋醮.裁衣.合帐.冠笄.订盟.纳采.嫁娶.入宅.安香.谢土.入殓.移柩.破土.立碑.安香.会亲友.出行.祈福.求嗣.立碑.上梁.放水.", "j": "掘井." }, "d0222": { "y": "安床.合帐.入宅.问名.纳采.求嗣.祭祀.开仓.", "j": "斋醮.作灶.安床.安葬." }, "d0223": { "y": "", "j": "" }, "d0224": { "y": "塑绘.开光.酬神.斋醮.订盟.纳采.裁衣.合帐.拆卸.动土.上梁.安床.安香.造庙.挂匾.会亲友.进人口.出行.修造.纳财.伐木.放水.出火.纳畜.沐浴.安门.", "j": "造屋.栽种.安葬.作灶." }, "d0225": { "y": "祭祀.祈福.酬神.订盟.纳采.冠笄.裁衣.合帐.嫁娶.安床.移徙.入宅.安香.入殓.移柩.启攒.安葬.解除.取渔.捕捉.伐木.安门.出火.", "j": "栽种.动土.开市.作灶." }, "d0226": { "y": "求医.破屋.", "j": "诸事不宜." }, "d0227": { "y": "祈福.求嗣.斋醮.塑绘.开光.订盟.纳采.嫁娶.动土.入宅.安香.移柩.安葬.谢土.出行.沐浴.修造.竖柱.上梁.纳财.破土.解除.安门.放水.", "j": "作灶.安床." }, "d0228": { "y": "取渔.入殓.除服.成服.移柩.破土.安葬.立碑.", "j": "嫁娶.上梁.入宅.作灶." }, "d0229": { "y": "祭祀.求嗣.沐浴.酬神.订盟.纳采.裁衣.合帐.冠笄.安机械.安床.造仓.开池.经络.纳财.开市.立券.交易.结网.取渔.纳畜.捕捉.", "j": "安葬.作灶.伐木.作梁." }, "d0301": { "y": "祭祀.沐浴.祈福.求嗣.斋醮.订盟.纳采.裁衣.冠笄.开市.立券.交易.纳财.沐浴.除服.谢土.出行.移柩.", "j": "入殓.安葬.作灶.入宅." }, "d0302": { "y": "祭祀.祈福.求嗣.入殓.启攒.安葬.移柩.", "j": "开光.掘井.针灸.出行.嫁娶.入宅.移徙.作灶.动土." }, "d0303": { "y": "安床.解除.裁衣.竖柱.上梁.交易.立券.纳财.纳畜.牧养.入殓.移柩.安葬.启攒.", "j": "嫁娶.出行.动土.开渠.入宅.祭祀.掘井." }, "d0304": { "y": "嫁娶.安床.开光.出行.祭祀.动土.出火.解除.会亲友.开市.交易.立券.挂匾.入宅.移徙.拆卸.破土.启攒.安葬.", "j": "掘井.词讼." }, "d0305": { "y": "祭祀.沐浴.解除.扫舍.塞穴.牧养.", "j": "嫁娶.安葬.行丧.安门." }, "d0306": { "y": "", "j": "" }, "d0307": { "y": "嫁娶.冠笄.会亲友.安机械.纳财.交易.立券.置产.", "j": "开市.造屋.治病.作灶." }, "d0308": { "y": "嫁娶.造车器.纳采.订盟.祭祀.祈福.安机械.移徙.入宅.开市.立券.破土.安葬.", "j": "纳畜.理发.合寿木." }, "d0309": { "y": "祈福.斋醮.出行.移徙.入宅.修造.动土.破土.安葬.", "j": "纳采.开光.安床.嫁娶.开市." }, "d0310": { "y": "破屋.坏垣.余事勿取.", "j": "嫁娶.移徙.开市.入宅." }, "d0311": { "y": "嫁娶.冠笄.祭祀.出行.会亲友.修造.动土.入殓.破土.", "j": "塑绘.开光.造桥.除服.成服." }, "d0312": { "y": "开光.求嗣.出行.纳采.冠笄.出火.拆卸.起基.修造.动土.上梁.移徙.造船.开市.交易.立券.纳财.", "j": "祈福.嫁娶.安葬.破土." }, "d0313": { "y": "理发.冠笄.嫁娶.进人口.栽种.捕捉.针灸.", "j": "纳财.开市.安葬.破土." }, "d0314": { "y": "开光.祈福.求嗣.出行.解除.伐木.造屋.起基.修造.架马.安门.移徙.入宅.造庙.除服.成服.移柩.谢土.纳畜.牧养.", "j": "纳采.动土.开市.交易.安门." }, "d0315": { "y": "裁衣.经络.伐木.开柱眼.拆卸.修造.动土.上梁.合脊.合寿木.入殓.除服.成服.移柩.破土.安葬.启攒.修坟.立碑.", "j": "祭祀.嫁娶.出行.上梁.掘井." }, "d0316": { "y": "祭祀.会亲友.立券.交易.裁衣.合帐.嫁娶.冠笄.进人口.", "j": "栽种.动土.安葬.掘井.修坟.探病." }, "d0317": { "y": "扫舍.塞穴.余事勿取.", "j": "诸事不宜." }, "d0318": { "y": "塑绘.开光.订盟.纳采.裁衣.合帐.冠笄.安机械.会亲友.纳财.开市.立券.交易.安床.竖柱.上梁.结网.栽种.解除.经络.", "j": "作灶.出行.入宅.安葬." }, "d0319": { "y": "祭祀.嫁娶.纳婿.除服.成服.入殓.移柩.", "j": "动土.作灶.入宅.开光.安床." }, "d0320": { "y": "祈福.求嗣.开光.塑绘.斋醮.订盟.纳采.嫁娶.拆卸.安床.入宅.安香.移柩.修坟.安葬.谢土.栽种.解除.冠笄.裁衣.移徙.修造.动土.竖柱.放水.启攒.立碑.", "j": "赴任." }, "d0321": { "y": "祭祀.解除.入殓.除服.成服.移柩.启攒.安葬.修坟.立碑.谢土.沐浴.扫舍.捕捉.取渔.结网.畋猎.理发.", "j": "安床.嫁娶.作灶.入宅." }, "d0322": { "y": "破屋.坏垣.", "j": "诸事不宜." }, "d0323": { "y": "祭祀.出行.订盟.纳采.裁衣.合帐.冠笄.进人口.动土.安床.作灶.入殓.移柩.安葬.破土.结网.取渔.畋猎.", "j": "作梁.造庙." }, "d0324": { "y": "祭祀.开光.塑绘.订盟.纳采.合帐.冠笄.拆卸.动土.起基.上梁.入宅.安香.开市.立券.纳财.沐浴.求嗣.出火.竖柱.安门.", "j": "造庙.嫁娶.伐木.安葬." }, "d0325": { "y": "祭祀.沐浴.捕捉.栽种.", "j": "嫁娶.入宅.移徙.作灶.安葬." }, "d0326": { "y": "祭祀.开光.塑绘.酬神.斋醮.订盟.纳采.嫁娶.裁衣.动土.起基.出火.拆卸.移徙.入宅.安香.修造.竖柱.上梁.纳畜.牧养.祈福.求嗣.解除.伐木.定磉.造屋.安门.", "j": "栽种.安葬." }, "d0327": { "y": "订盟.纳采.冠笄.拆卸.修造.动土.安床.入殓.除服.成服.移柩.安葬.破土.启攒.造仓.", "j": "作灶.开光.嫁娶.开市.入宅." }, "d0328": { "y": "祈福.开光.塑绘.酬神.订盟.纳采.裁衣.安床.开市.立券.入殓.除服.成服.移柩.启攒.安葬.立碑.赴任.会亲友.出行.交易.竖柱.", "j": "作灶.掘井.动土.栽种." }, "d0329": { "y": "祭祀.扫舍.塞穴.", "j": "栽种.作灶.安葬.嫁娶." }, "d0330": { "y": "开光.塑绘.裁衣.冠笄.伐木.拆卸.竖柱.上梁.开仓.会亲友.安机械.造仓.造屋.交易.解除.开市.立券.纳财.", "j": "出行.嫁娶.入宅.安葬." }, "d0331": { "y": "冠笄.入殓.除服.成服.移柩.平治道涂.修饰垣墙.", "j": "造屋.作灶.治病.探病." }, "d0401": { "y": "祭祀.嫁娶.祈福.纳采.裁衣.合帐.安床.入宅.安香.入殓.移柩.安葬.谢土.修造.安碓硙.求嗣.会亲友.挂匾.交易.立券.纳财.造仓.放水.", "j": "栽种.伐木." }, "d0402": { "y": "祭祀.祈福.斋醮.订盟.纳采.裁衣.合帐.拆卸.修造.动土.上梁.起基.移柩.安葬.谢土.沐浴.扫舍.开柱眼.伐木.出火.", "j": "安床.开市.立券.作灶." }, "d0403": { "y": "", "j": "" }, "d0404": { "y": "祭祀.沐浴.解除.求医.治病.破屋.坏垣.余事勿取.", "j": "祈福.斋醮.开市.安葬." }, "d0405": { "y": "沐浴.捕捉.畋猎.结网.取渔.", "j": "祭祀.嫁娶.入宅.作灶.安葬." }, "d0406": { "y": "祭祀.祈福.求嗣.斋醮.纳采.订盟.开光.竖柱.上梁.开仓.出货财.造屋.起基.定磉.安门.诸事不宜.破土.入殓.启攒.谢土.", "j": "出火.嫁娶.开市." }, "d0407": { "y": "祭祀.捕捉.解除.余事勿取.", "j": "嫁娶.安葬." }, "d0408": { "y": "纳采.嫁娶.出行.开市.立券.纳畜.牧养.出火.移徙.入宅.", "j": "祈福.动土.破土.安葬.入殓." }, "d0409": { "y": "祭祀.祈福.求嗣.斋醮.冠笄.作灶.纳财.交易.", "j": "开光.嫁娶.掘井.安葬.安门.探病." }, "d0410": { "y": "祭祀.解除.教牛马.出行.余事勿取.", "j": "动土.破土.行丧.开光.作梁.安葬.探病." }, "d0411": { "y": "沐浴.斋醮.解除.求医.治病.会亲友.造畜椆栖.栽种.理发.扫舍.", "j": "开市.嫁娶.移徙.入宅.掘井.安葬." }, "d0412": { "y": "求嗣.出行.解除.订盟.纳采.嫁娶.会亲友.进人口.安床.开市.交易.纳畜.牧养.入殓.除服.成服.移柩.安葬.启攒.", "j": "祈福.开市.修造.动土.破土.谢土." }, "d0413": { "y": "祭祀.作灶.平治道涂.余事勿取.", "j": "嫁娶.安葬.动土.安床.治病." }, "d0414": { "y": "造车器.祭祀.祈福.求嗣.斋醮.开市.交易.安机械.雕刻.开光.造屋.合脊.起基.定磉.安门.纳畜.安葬.开生坟.立碑.谢土.斋醮.", "j": "入宅.动土.开仓.出货财." }, "d0415": { "y": "祭祀.祈福.开光.求嗣.斋醮.纳采.订盟.求医.治病.起基.定磉.造船.取渔.解除.安葬.启攒.谢土.入殓.", "j": "开市.动土.掘井.开池." }, "d0416": { "y": "祭祀.沐浴.破屋.坏垣.求医.治病.解除.余事勿取.", "j": "嫁娶.开市.交易.入宅.安葬." }, "d0417": { "y": "诸事不宜.", "j": "诸事不宜." }, "d0418": { "y": "祭祀.塑绘.开光.订盟.纳采.冠笄.裁衣.安机械.拆卸.修造.动土.安床.经络.开市.", "j": "出火.入宅.安葬.伐木." }, "d0419": { "y": "祭祀.余事勿取.", "j": "造庙.嫁娶.安床.余事勿取." }, "d0420": { "y": "订盟.纳采.嫁娶.进人口.会亲友.交易.立券.动土.除服.谢土.移柩.破土.启攒.赴任.出行.开市.纳财.栽种.", "j": "入殓.安葬.入宅.安床." }, "d0421": { "y": "祭祀.祈福.裁衣.合帐.安床.入殓.除服.成服.移柩.破土.启攒.安葬.谢土.立碑.造畜椆栖.", "j": "掘井.安门.嫁娶.纳采." }, "d0422": { "y": "祭祀.进人口.嫁娶.安床.解除.冠笄.出行.裁衣.扫舍.", "j": "掘井.动土.破土.安葬.开光." }, "d0423": { "y": "纳采.开光.求医.治病.动土.上梁.移徙.入宅.", "j": "嫁娶.开市.安葬." }, "d0424": { "y": "祭祀.会亲友.开市.安床.启攒.安葬.", "j": "嫁娶.动土.破土." }, "d0425": { "y": "祭祀.作灶.掘井.平治道涂.", "j": "嫁娶.安葬." }, "d0426": { "y": "祭祀.斋醮.开市.动土.入殓.破土.安葬.", "j": "嫁娶.移徙.入宅." }, "d0427": { "y": "嫁娶.纳采.祭祀.祈福.出行.移徙.求医.", "j": "开市.动土.破土." }, "d0428": { "y": "祭祀.求医.治病.解除.余事勿取.", "j": "诸事不宜." }, "d0429": { "y": "沐浴.结网.取渔.", "j": "嫁娶.入宅.安葬." }, "d0430": { "y": "", "j": "诸事不宜." }, "d0501": { "y": "解除.坏垣.余事勿取.", "j": "诸事不宜." }, "d0502": { "y": "嫁娶.开光.出行.出火.拆卸.进人口.开市.立券.交易.挂匾.入宅.移徙.安床.栽种.", "j": "祈福.入殓.祭祀.作灶.安葬.探病." }, "d0503": { "y": "嫁娶.出行.合帐.冠笄.安床.除服.成服.作灶.交易.立券.入殓.移柩.破土.安葬.", "j": "词讼.开光.开市." }, "d0504": { "y": "出行.修饰垣墙.造畜椆栖.教牛马.余事勿取.", "j": "诸事不宜." }, "d0505": { "y": "祭祀.解除.断蚁.会亲友.余事勿取.", "j": "嫁娶.安葬." }, "d0506": { "y": "嫁娶.纳采.订盟.祭祀.祈福.治病.造车器.修造.动土.移徙.入宅.", "j": "开市.出行.安床.作灶.安葬." }, "d0507": { "y": "嫁娶.纳采.订盟.会亲友.安机械.结网.冠笄.祭祀.求嗣.进人口.经络.", "j": "开市.作灶.动土.行丧.安葬." }, "d0508": { "y": "祭祀.沐浴.移徙.破土.安葬.扫舍.平治道涂.", "j": "祈福.嫁娶.入宅.安床.作灶." }, "d0509": { "y": "祭祀.祈福.斋醮.求嗣.安机械.纳畜.移徙.入宅.安机械.塑绘.开光.起基.竖柱.上梁.作灶.安门.安香.出火.造屋.启攒.安葬.", "j": "动土.破土.嫁娶.嫁娶." }, "d0510": { "y": "嫁娶.纳采.订盟.斋醮.开光.祭祀.祈福.求医.治病.会亲友.动土.解除.捕捉.纳畜.牧养.入殓.破土.安葬.", "j": "移徙.入宅.造屋.架马." }, "d0511": { "y": "祭祀.沐浴.解除.破屋.坏垣.余事勿取.", "j": "行丧.安葬." }, "d0512": { "y": "沐浴.扫舍.余事勿取.", "j": "斋醮.开市.嫁娶.作灶." }, "d0513": { "y": "开市.交易.立券.安机械.会亲友.开光.求医.治病.造屋.起基.修造.动土.定磉.竖柱.上梁.安门.作灶.放水.作厕.开池.栽种.牧养.造畜椆栖.破土.安葬.立碑.", "j": "嫁娶.出火.移徙.入宅." }, "d0514": { "y": "栽种.捕捉.畋猎.余事勿取.", "j": "开市.动土.祭祀.斋醮.安葬.探病." }, "d0515": { "y": "嫁娶.祭祀.祈福.求嗣.斋醮.订盟.纳采.解除.出行.动土.破土.习艺.针灸.理发.会亲友.起基.修造.动土.竖柱.定磉.安床.拆卸.纳畜.牧养.放水.破土.除服.成服.修坟.立碑.", "j": "开市.入宅.探病.出火.造屋." }, "d0516": { "y": "余事勿取.", "j": "余事勿取." }, "d0517": { "y": "塞穴.断蚁.结网.余事勿取.", "j": "破土.安葬." }, "d0518": { "y": "开光.出行.纳采.嫁娶.伐木.架马.出火.拆卸.移徙.入宅.造庙.造桥.造船.造畜椆栖.开市.入殓.除服.成服.移柩.安葬.", "j": "" }, "d0519": { "y": "进人口.牧养.置产.塞穴.结网.余事勿取.", "j": "诸事不宜." }, "d0520": { "y": "开光.出行.嫁娶.", "j": "会亲友.进人口.修造.动土.起基.移徙.开市.纳畜.入殓.除服.成服.移柩.破土.安葬.修坟.立碑.会亲友." }, "d0521": { "y": "嫁娶.纳采.出行.祭祀.祈福.开市.动土.移徙.入宅.破土.安葬.", "j": "安门." }, "d0522": { "y": "嫁娶.纳采.求医.治病.修造.动土.移徙.入宅.破土.安葬.", "j": "开市.开光." }, "d0523": { "y": "祭祀.破屋.坏垣.余事勿取.", "j": "诸事不宜." }, "d0524": { "y": "嫁娶.纳采.祭祀.祈福.出行.动土.上梁.移徙.入宅.破土.安葬.", "j": "祈福.斋醮." }, "d0525": { "y": "纳采.祭祀.祈福.开市.求医.治病.动土.纳畜.", "j": "嫁娶.安葬." }, "d0526": { "y": "嫁娶.纳采.出行.移徙.入宅.", "j": "动土.破土.安葬." }, "d0527": { "y": "订盟.纳采.祭祀.动土.破土.交易.立券.", "j": "嫁娶.安葬." }, "d0528": { "y": "嫁娶.裁衣.祭祀.出行.安床.作灶.移徙.入宅.破土.安葬.", "j": "赴任.捕捉." }, "d0529": { "y": "塞穴.结网.余事勿取.", "j": "诸事不宜." }, "d0530": { "y": "", "j": "" }, "d0531": { "y": "订盟.纳采.会亲友.安床.作灶.造畜椆栖.", "j": "开市.安葬." }, "d0601": { "y": "沐浴.平治道涂.扫舍.入殓.移柩.破土.启攒.安葬.余事勿取.", "j": "诸事不宜." }, "d0602": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出行.出火.拆卸.动土.上梁.进人口.入宅.移徙.安床.安门.开市.交易.立券.挂匾.栽种.破土.安葬.", "j": "" }, "d0603": { "y": "祭祀.开光.出行.解除.塑绘.裁衣.入殓.移柩.破土.启攒.安葬.除服.成服.", "j": "嫁娶.上梁.修造.拆卸.架马.入宅.伐木.动土.出火.开柱眼." }, "d0604": { "y": "祭祀.解除.破屋.坏垣.余事勿取.", "j": "诸事不宜." }, "d0605": { "y": "祭祀.沐浴.破屋.坏垣.余事勿取.", "j": "入宅.嫁娶.移徙." }, "d0606": { "y": "嫁娶.安机械.交易.出行.祭祀.祈福.求嗣.斋醮.塑绘.开光.合帐.裁衣.放水.开池.掘井.", "j": "作灶.理发.造桥.行丧.安葬." }, "d0607": { "y": "纳采.冠笄.求医.治病.开市.立券.修造.动土.安机械.破土.安葬.", "j": "斋醮.祭祀.移徙.入宅.上梁.嫁娶." }, "d0608": { "y": "祭祀.作灶.余事勿取.", "j": "开市.安葬.破土.修坟.掘井." }, "d0609": { "y": "祭祀.祈福.求嗣.斋醮.安香.解除.移徙.入宅.会亲友.求医.治病.动土.破土.开生坟.合寿木.", "j": "合帐.上梁.经络.安葬.入殓." }, "d0610": { "y": "嫁娶.冠笄.修造.动土.作灶.移徙.入宅.补垣.塞穴.纳畜.牧养.架马.修造.动土.起基.定磉.开池.造船.", "j": "祈福.开光.掘井.开市.安葬." }, "d0611": { "y": "祭祀.交易.纳财.", "j": "斋醮.开渠.上梁.动土.破土." }, "d0612": { "y": "嫁娶.订盟.纳采.冠笄.会亲友.安机械.造车器.祭祀.出行.纳财.入宅.安香.出火.入学.塑绘.开光.拆卸.起基.修造.动土.牧养.栽种.安门.作厕.", "j": "行丧.伐木.作梁.作灶." }, "d0613": { "y": "开光.求嗣.出行.冠笄.嫁娶.伐木.架马.开柱眼.修造.移徙.入宅.开市.交易.立券.出行.安香.出火.挂匾.起基.修造.开生坟.合寿木.入殓.除服.成服.移柩.安葬.", "j": "安床.出货财.作灶.动土.破土." }, "d0614": { "y": "祭祀.沐浴.理发.嫁娶.作灶.整手足甲.扫舍.修饰垣墙.平治道涂.", "j": "斋醮.出行.治病.合寿木." }, "d0615": { "y": "安机械.移徙.入宅.出行.祭祀.祈福.斋醮.纳采.订盟.安香.出火.解除.会亲友.修造.动土.拆卸.起基.定磉.移徙.入宅.造屋.安床.修造.破土.安葬.入殓.立碑.", "j": "开市.伐木.作梁.作灶." }, "d0616": { "y": "祭祀.沐浴.捕捉.结网.畋猎.取渔.余事勿取.", "j": "开市.交易.嫁娶.安葬.行丧." }, "d0617": { "y": "破屋.坏垣.求医.治病.畋猎.余事勿取.", "j": "嫁娶.入宅." }, "d0618": { "y": "嫁娶.出行.安机械.祭祀.塑绘.开光.治病.经络.安床.结网.塞穴.破土.入殓.", "j": "开市.安门.掘井.作灶." }, "d0619": { "y": "订盟.纳采.会亲友.进人口.雕刻.拆卸.修造.动土.起基.开市.栽种.纳畜.牧养.入殓.除服.成服.移柩.破土.安葬.", "j": "" }, "d0620": { "y": "祭祀.捕捉.取渔.修饰垣墙.余事勿取.", "j": "诸事不宜." }, "d0621": { "y": "嫁娶.纳采.祭祀.祈福.求医.治病.出行.动土.移徙.入宅.", "j": "开市.安门." }, "d0622": { "y": "裁衣.作灶.移徙.入宅.纳畜.", "j": "嫁娶.安葬." }, "d0623": { "y": "祭祀.入殓.移柩.启攒.安葬.", "j": "上梁.动土.破土." }, "d0624": { "y": "订盟.纳采.出行.祈福.斋醮.安床.会亲友.", "j": "移徙.入宅.安葬." }, "d0625": { "y": "嫁娶.纳采.出行.求医.治病.开市.移徙.入宅.启攒.安葬.", "j": "动土.破土." }, "d0626": { "y": "嫁娶.祭祀.沐浴.扫舍.修饰垣墙.", "j": "行丧.安葬." }, "d0627": { "y": "嫁娶.订盟.纳采.出行.开市.祭祀.祈福.动土.移徙.入宅.破土.安葬.", "j": "作灶." }, "d0628": { "y": "订盟.纳采.出行.祭祀.祈福.修造.动土.移徙.入宅.", "j": "开市.安葬." }, "d0629": { "y": "诸事不宜.", "j": "诸事不宜." }, "d0630": { "y": "嫁娶.订盟.纳采.祭祀.祈福.入殓.破土.安葬.", "j": "开光.开市." }, "d0701": { "y": "开光.求医.治病.动土.上梁.入殓.破土.安葬.", "j": "嫁娶.开光." }, "d0702": { "y": "祭祀.栽种.余事勿取.", "j": "诸事不宜." }, "d0703": { "y": "嫁娶.开光.祭祀.祈福.求嗣.出行.解除.伐木.入宅.移徙.安床.出火.拆卸.修造.上梁.栽种.移柩.", "j": "安葬.开市.交易.立券." }, "d0704": { "y": "求嗣.嫁娶.纳采.合帐.裁衣.冠笄.伐木.作梁.修造.动土.起基.竖柱.上梁.安门.作灶.筑堤.造畜椆栖.", "j": "安葬.出行.祈福.栽种." }, "d0705": { "y": "祭祀.解除.余事勿取.", "j": "诸事不宜." }, "d0706": { "y": "嫁娶.祭祀.祈福.出火.开光.求嗣.出行.拆卸.开市.交易.立券.挂匾.入宅.移徙.安床.栽种.动土.", "j": "安葬.行丧.伐木.作梁." }, "d0707": { "y": "祭祀.沐浴.塑绘.开光.入学.解除.扫舍.治病.开池.牧养.", "j": "嫁娶.出行.纳采.入宅.作灶." }, "d0708": { "y": "纳财.开市.交易.立券.出行.祭祀.祈福.求嗣.开光.解除.扫舍.起基.竖柱.安床.移徙.开仓.出货财.补垣.塞穴.栽种.纳畜.牧养.", "j": "斋醮.入宅.安门.安葬.破土.行丧." }, "d0709": { "y": "祭祀.修饰垣墙.平治道涂.", "j": "开市.动土.破土.嫁娶.修造.安葬." }, "d0710": { "y": "订盟.纳采.祭祀.祈福.开光.安香.出火.立券.安机械.移徙.入宅.竖柱.上梁.会亲友.安床.拆卸.挂匾.牧养.教牛马.", "j": "嫁娶.安葬.行丧.破土.修坟." }, "d0711": { "y": "沐浴.理发.捕捉.入殓.移柩.破土.启攒.安葬.", "j": "出火.嫁娶.入宅.作灶.破土.上梁.动土." }, "d0712": { "y": "求医.治病.破屋.坏垣.余事勿取.", "j": "嫁娶.出行." }, "d0713": { "y": "纳采.订盟.嫁娶.移徙.入宅.出行.开市.交易.立券.纳财.会亲友.安香.出火.拆卸.造屋.起基.安床.作灶.挂匾.安葬.破土.启攒.立碑.入殓.移柩.", "j": "祈福.上梁.开仓.掘井.牧养." }, "d0714": { "y": "祭祀.祈福.斋醮.出行.纳采.订盟.安机械.出火.拆卸.修造.动土.起基.移徙.入宅.造庙.入殓.除服.成服.移柩.破土.安葬.谢土.", "j": "嫁娶.开市.栽种.合寿木." }, "d0715": { "y": "祭祀.进人口.纳财.纳畜.牧养.捕捉.余事勿取.", "j": "开市.入宅.安床.动土.安葬." }, "d0716": { "y": "祭祀.塑绘.开光.求医.治病.嫁娶.会亲友.放水.掘井.牧养.纳畜.开渠.安碓硙.", "j": "造屋.入宅.作灶.入学.安葬.行丧." }, "d0717": { "y": "祭祀.塞穴.结网.畋猎.余事勿取.", "j": "移徙.开市.入宅.嫁娶.开光.安门." }, "d0718": { "y": "开市.纳财.祭祀.塑绘.安机械.冠笄.会亲友.裁衣.开仓.经络.纳畜.造畜椆栖.教牛马.牧养.", "j": "动土.破土.安葬.治病." }, "d0719": { "y": "移徙.入宅.治病.会亲友.祭祀.祈福.斋醮.安香.移徙.嫁娶.造屋.起基.", "j": "开市.斋醮.安床.出行.经络." }, "d0720": { "y": "塑绘.出行.冠笄.嫁娶.进人口.裁衣.纳婿.造畜椆栖.交易.立券.牧养.开生坟.入殓.除服.成服.移柩.安葬.启攒.", "j": "" }, "d0721": { "y": "祭祀.冠笄.嫁娶.捕捉.结网.畋猎.取渔.余事勿取.", "j": "余事勿取." }, "d0722": { "y": "沐浴.扫舍.余事勿取.", "j": "诸事不宜." }, "d0723": { "y": "纳采.祭祀.祈福.解除.动土.破土.安葬.", "j": "嫁娶.移徙.入宅." }, "d0724": { "y": "祭祀.破屋.坏垣.余事勿取.", "j": "诸事不宜." }, "d0725": { "y": "嫁娶.纳采.开市.出行.动土.上梁.移徙.入宅.破土.安葬.", "j": "祭祀.祈福." }, "d0726": { "y": "嫁娶.纳采.开市.出行.动土.上梁.移徙.入宅.破土.安葬.", "j": "赴任." }, "d0727": { "y": "祭祀.作灶.纳财.捕捉.", "j": "开市.破土." }, "d0728": { "y": "嫁娶.开市.立券.祭祀.祈福.动土.移徙.入宅.", "j": "造庙.安葬." }, "d0729": { "y": "补垣.塞穴.结网.入殓.除服.成服.移柩.安葬.启攒.余事勿取.", "j": "诸事不宜." }, "d0730": { "y": "嫁娶.纳采.出行.祭祀.祈福.解除.移徙.入宅.", "j": "动土.安葬." }, "d0731": { "y": "嫁娶.祭祀.祈福.斋醮.治病.破土.安葬.", "j": "开市.入宅." }, "d0801": { "y": "嫁娶.出行.开市.安床.入殓.启攒.安葬.", "j": "祈福.动土.破土." }, "d0802": { "y": "嫁娶.祭祀.裁衣.结网.冠笄.沐浴.", "j": "开仓.出货财.置产.安葬.动土.破土.掘井.栽种." }, "d0803": { "y": "入宅.移徙.安床.开光.祈福.求嗣.进人口.开市.交易.立券.出火.拆卸.修造.动土.", "j": "嫁娶.破土.置产.栽种.安葬.修坟.行丧." }, "d0804": { "y": "祭祀.解除.沐浴.整手足甲.入殓.移柩.破土.启攒.安葬.", "j": "嫁娶.入宅.移徙.作灶.开市.交易.安门.栽种." }, "d0805": { "y": "破屋.坏垣.余事勿取.", "j": "诸事不宜." }, "d0806": { "y": "嫁娶.开光.出行.理发.作梁.出火.拆卸.修造.开市.交易.立券.挂匾.动土.入宅.移徙.安床.栽种.", "j": "伐木.祭祀.纳畜.祭祀." }, "d0807": { "y": "订盟.纳采.祭祀.祈福.安香.出火.开市.立券.入宅.挂匾.造桥.启攒.安葬.", "j": "动土.破土.嫁娶.掘井.安床." }, "d0808": { "y": "嫁娶.祭祀.祈福.斋醮.普渡.移徙.入宅.动土.治病.开市.交易.立券.开光.修造.造车器.安香.安床.捕捉.畋猎.结网.", "j": "纳采.订盟.经络.行丧.安葬.探病." }, "d0809": { "y": "嫁娶.订盟.纳采.作灶.冠笄.裁衣.会亲友.纳畜.牧养.安机械.开市.立券.纳财.安床.", "j": "掘井.出行.破土.行丧.安葬." }, "d0810": { "y": "嫁娶.订盟.纳采.祭祀.斋醮.普渡.解除.出行.会亲友.开市.纳财.修造.动土.竖柱.上梁.开光.开仓.出货财.纳畜.牧养.开池.破土.启攒.", "j": "出火.入宅.造屋.安门.安葬." }, "d0811": { "y": "嫁娶.普渡.祭祀.祈福.补垣.塞穴.断蚁.筑堤.入殓.除服.成服.安葬.", "j": "动土.破土.掘井.开光.上梁.词讼." }, "d0812": { "y": "嫁娶.冠笄.祭祀.沐浴.普渡.出行.纳财.扫舍.纳畜.赴任.", "j": "开市.动土.破土.安床.开仓.上梁." }, "d0813": { "y": "祭祀.沐浴.理发.整手足甲.冠笄.解除.入殓.移柩.破土.启攒.安葬.", "j": "嫁娶.出行.入宅.开市.安门." }, "d0814": { "y": "塑绘.冠笄.嫁娶.会亲友.进人口.经络.裁衣.栽种.纳畜.牧养.补垣.塞穴.捕捉.", "j": "祈福.开市.动土.行丧.安葬." }, "d0815": { "y": "出行.沐浴.订盟.纳采.裁衣.竖柱.上梁.移徙.纳畜.牧养.", "j": "嫁娶.安门.动土.安葬." }, "d0816": { "y": "纳采.订盟.嫁娶.祭祀.祈福.普渡.开光.安香.出火.移徙.入宅.竖柱.修造.动土.竖柱.上梁.起基.造屋.安门.造庙.造桥.破土.启攒.安葬.", "j": "开市.立券.纳财.作灶." }, "d0817": { "y": "祭祀.捕捉.畋猎.纳畜.牧养.入殓.除服.成服.移柩.破土.安葬.启攒.", "j": "嫁娶.纳采.订盟.开市.入宅." }, "d0818": { "y": "破屋.坏垣.治病.余事勿取.", "j": "行丧.安葬." }, "d0819": { "y": "祈福.斋醮.出行.冠笄.嫁娶.雕刻.开柱眼.入宅.造桥.开市.交易.立券.纳财.入殓.除服.成服.移柩.破土.安葬.启攒.", "j": "动土.破土.订盟.安床.开池." }, "d0820": { "y": "祈福.求嗣.解除.订盟.纳采.动土.起基.放水.造仓.开市.纳畜.牧养.开生坟.入殓.除服.成服.移柩.破土.安葬.", "j": "" }, "d0821": { "y": "塑绘.开光.解除.订盟.纳采.嫁娶.出火.修造.动土.移徙.入宅.拆卸.起基.安门.分居.开市.交易.立券.纳财.纳畜.牧养.", "j": "" }, "d0822": { "y": "祈福.出行.订盟.纳采.嫁娶.裁衣.动土.安床.放水.开市.掘井.交易.立券.栽种.开渠.除服.成服.移柩.破土.", "j": "" }, "d0823": { "y": "嫁娶.祭祀.祈福.斋醮.作灶.移徙.入宅.", "j": "动土.破土." }, "d0824": { "y": "嫁娶.出行.纳畜.祭祀.入殓.启攒.安葬.", "j": "作灶.动土.破土." }, "d0825": { "y": "订盟.纳采.祭祀.祈福.修造.动土.上梁.破土.安葬.", "j": "嫁娶.开市." }, "d0826": { "y": "订盟.纳采.出行.会亲友.修造.上梁.移徙.入宅.", "j": "开市.安葬." }, "d0827": { "y": "沐浴.修饰垣墙.平治道涂.余事勿取.", "j": "嫁娶.祈福.余事勿取." }, "d0828": { "y": "嫁娶.祭祀.祈福.斋醮.动土.移徙.入宅.", "j": "开市.安葬." }, "d0829": { "y": "捕捉.结网.入殓.破土.安葬.", "j": "嫁娶.入宅." }, "d0830": { "y": "沐浴.治病.破屋.坏垣.余事勿取.", "j": "诸事不宜." }, "d0831": { "y": "嫁娶.订盟.纳采.出行.开市.祭祀.祈福.移徙.入宅.启攒.安葬.", "j": "动土.破土." }, "d0901": { "y": "嫁娶.订盟.纳采.祭祀.祈福.求医.治病.动土.移徙.入宅.破土.安葬.", "j": "开光.针灸." }, "d0902": { "y": "订盟.纳采.祭祀.祈福.安机械.作灶.纳畜.", "j": "动土.安葬." }, "d0903": { "y": "嫁娶.祭祀.祈福.求嗣.出行.动土.安床.掘井.破土.启攒.", "j": "入宅.作梁.安门.伐木.修造.上梁.入殓.造屋." }, "d0904": { "y": "嫁娶.祭祀.祈福.求嗣.出行.出火.拆卸.修造.移徙.动土.安床.入殓.破土.安葬.启攒.", "j": "造屋.开光.理发.造船.掘井.作灶." }, "d0905": { "y": "祭祀.祈福.求嗣.开光.出行.解除.上梁.造屋.移徙.安门.纳财.牧养.纳畜.安葬.启攒.入殓.", "j": "破土.置产.掘井.动土.安床." }, "d0906": { "y": "祭祀.解除.沐浴.理发.整手足甲.入殓.移柩.破土.安葬.扫舍.", "j": "嫁娶.会亲友.进人口.出行.入宅.移徙.赴任.作灶." }, "d0907": { "y": "嫁娶.订盟.纳采.祭祀.祈福.出行.修造.动土.移徙.入宅.", "j": "针灸.伐木.作梁.造庙.行丧.安葬." }, "d0908": { "y": "出行.开市.交易.立券.安机械.出火.上梁.移徙.", "j": "嫁娶.安葬.动土.造桥." }, "d0909": { "y": "祭祀.沐浴.修饰垣墙.平治道涂.余事勿取.", "j": "斋醮.嫁娶.移徙.出行.上梁.入宅." }, "d0910": { "y": "嫁娶.造车器.安机械.祭祀.祈福.开光.安香.出火.出行.开市.立券.修造.动土.移徙.入宅.破土.安葬.", "j": "纳采.订盟.架马.词讼.开渠." }, "d0911": { "y": "沐浴.捕捉.入殓.除服.成服.破土.启攒.安葬.", "j": "祭祀.嫁娶.安床.开市.入宅.探病.上梁." }, "d0912": { "y": "余事勿取.", "j": "探病.余事勿取." }, "d0913": { "y": "订盟.纳采.祭祀.祈福.安香.出火.修造.动土.上梁.安门.起基.竖柱.上梁.定磉.开池.移徙.入宅.立券.破土.", "j": "嫁娶.造庙.造桥.造船.作灶.安葬." }, "d0914": { "y": "开光.求嗣.雕刻.嫁娶.订盟.纳采.出火.拆卸.修造.动土.起基.上梁.放水.移徙.入宅.造仓.造船.开市.开池.纳畜.牧养.挂匾.", "j": "行丧.安葬.合寿木." }, "d0915": { "y": "祭祀.嫁娶.捕捉.", "j": "开光.动土.破土.开市.修造.入宅.安门." }, "d0916": { "y": "祭祀.普渡.解除.会亲友.捕捉.畋猎.启攒.除服.成服.移柩.", "j": "嫁娶.开市.动土.掘井.开池.安葬." }, "d0917": { "y": "祭祀.出行.解除.冠笄.嫁娶.伐木.架马.开柱眼.修造.动土.移徙.入宅.开生坟.合寿木.入殓.移柩.破土.安葬.修坟.", "j": "开光.安床." }, "d0918": { "y": "祭祀.祈福.求嗣.出行.沐浴.交易.扫舍.教牛马.", "j": "动土.作灶.行丧.安葬.修坟." }, "d0919": { "y": "出行.解除.纳采.冠笄.雕刻.修造.动土.起基.上梁.合脊.安床.移徙.入宅.开市.栽种.作厕.", "j": "造庙.安门.行丧.安葬." }, "d0920": { "y": "祭祀.沐浴.解除.理发.冠笄.安机械.作灶.造仓.开市.开池.作厕.补垣.塞穴.断蚁.结网.", "j": "嫁娶.安葬." }, "d0921": { "y": "祭祀.沐浴.修饰垣墙.平治道涂.", "j": "嫁娶.入宅." }, "d0922": { "y": "祭祀.会亲友.纳采.嫁娶.开光.塑绘.斋醮.安香.开市.立券.除服.成服.入殓.移柩.安葬.赴任.进人口.出行.裁衣.修造.动土.上梁.经络.交易.", "j": "入宅.伐木." }, "d0923": { "y": "祭祀.冠笄.会亲友.拆卸.起基.除服.成服.移柩.启攒.安葬.沐浴.捕捉.开光.塑绘.", "j": "作灶.祭祀.入宅.嫁娶." }, "d0924": { "y": "祭祀.沐浴.破屋.坏垣.余事勿取.", "j": "移徙.入宅.出行.栽种." }, "d0925": { "y": "祭祀.塑绘.开光.出行.解除.订盟.嫁娶.拆卸.起基.安床.入宅.开市.入殓.除服.成服.移柩.破土.谢土.挂匾.开柱眼.交易.", "j": "造桥.冠笄.造屋.掘井." }, "d0926": { "y": "祭祀.赴任.动土.上梁.开光.塑绘.冠笄.拆卸.起基.安床.开市.立券.赴任.经络.", "j": "定磉.安葬." }, "d0927": { "y": "祭祀.裁衣.冠笄.嫁娶.纳婿.会亲友.除服.成服.移柩.捕捉.进人口.入殓.", "j": "移徙.入宅.作灶.安葬." }, "d0928": { "y": "祭祀.诸事不宜.", "j": "入殓.安葬.开市.交易." }, "d0929": { "y": "祭祀.裁衣.冠笄.嫁娶.安机械.拆卸.动土.起基.移徙.入宅.入殓.启攒.安葬.造仓.经络.", "j": "安床.开光.开市.交易." }, "d0930": { "y": "祭祀.出行.成服.除服.沐浴.入殓.", "j": "动土.冠笄.移徙.入宅.开市.竖柱.上梁." }, "d1001": { "y": "祭祀.沐浴.赴任.出行.余事勿取.", "j": "诸事不宜." }, "d1002": { "y": "诸事不宜.", "j": "诸事不宜." }, "d1003": { "y": "沐浴.入殓.移柩.除服.成服.破土.平治道涂.", "j": "嫁娶.移徙.入宅.开市." }, "d1004": { "y": "嫁娶.祭祀.祈福.求嗣.沐浴.出火.出行.拆卸.修造.动土.进人口.开市.交易.立券.入宅.移徙.安床.栽种.纳畜.入殓.安葬.启攒.除服.成服.", "j": "" }, "d1005": { "y": "开光.解除.起基.动土.拆卸.上梁.立碑.修坟.安葬.破土.启攒.移柩.", "j": "嫁娶.出行.安床.作灶.祭祀.入宅.移徙.出火.进人口.置产." }, "d1006": { "y": "破屋.坏垣.余事勿取.", "j": "诸事不宜." }, "d1007": { "y": "嫁娶.祈福.求嗣.出行.出火.拆卸.修造.动土.上梁.开光.进人口.开市.交易.立券.挂匾.安床.入宅.移徙.栽种.伐木.入殓.破土.除服.成服.", "j": "" }, "d1008": { "y": "订盟.纳采.会亲友.交易.立券.纳财.栽种.纳畜.牧养.", "j": "嫁娶.开市.入宅.祈福.安葬." }, "d1009": { "y": "造车器.嫁娶.订盟.纳采.会亲友.祭祀.出行.开市.立券.移徙.入宅.破土.安葬.", "j": "上梁.开光.造屋.架马.合寿木." }, "d1010": { "y": "祭祀.作灶.纳财.捕捉.畋猎.余事勿取.", "j": "动土.破土.开市.安葬." }, "d1011": { "y": "嫁娶.订盟.纳采.祭祀.祈福.出行.求医.治病.出火.移徙.入宅.", "j": "开市.开仓.出货财.安床.安门.安葬." }, "d1012": { "y": "冠笄.祭祀.沐浴.作灶.理发.整手足甲.扫舍.补垣.塞穴.入殓.破土.启攒.", "j": "开光.嫁娶.会亲友.栽种.针灸.安葬." }, "d1013": { "y": "纳采.订盟.嫁娶.祭祀.祈福.求嗣.置产.求医.治病.开市.交易.立券.会亲友.移徙.竖柱.上梁.造屋.合脊.安门.放水.捕捉.纳畜.", "j": "造庙.造船.动土.破土.安葬." }, "d1014": { "y": "出行.造车器.造畜椆栖.解除.冠笄.裁衣.作梁.雕刻.会亲友.移徙.入宅.安机械.造畜椆栖.开市.扫舍.", "j": "嫁娶.动土.破土.修坟." }, "d1015": { "y": "沐浴.理发.冠笄.安床.开市.立券.会亲友.交易.纳财.结网.教牛马.", "j": "移徙.入宅.出行.祈福.嫁娶." }, "d1016": { "y": "祭祀.造畜椆栖.修饰垣墙.平治道涂.余事勿取.", "j": "嫁娶.开市.安床.掘井." }, "d1017": { "y": "捕捉.结网.入殓.除服.成服.移柩.破土.安葬.启攒.立碑.", "j": "嫁娶.祭祀.入宅.造屋.移徙." }, "d1018": { "y": "祭祀.祈福.求嗣.斋醮.造庙.出火.安机械.会亲友.开市.交易.立券.纳财.习艺.经络.求医.治病.开池.作厕.畋猎.结网.栽种.牧养.安葬.破土.启攒.", "j": "开光.嫁娶.掘井.伐木.作梁." }, "d1019": { "y": "破屋.坏垣.余事勿取.", "j": "诸事不宜." }, "d1020": { "y": "会亲友.嫁娶.订盟.纳采.纳婿.拆卸.修造.动土.起基.竖柱.上梁.安床.会亲友.纳财.", "j": "出行.祈福.安葬.作灶." }, "d1021": { "y": "祭祀.塑绘.开光.祈福.斋醮.出行.订盟.纳采.裁衣.嫁娶.拆卸.修造.安床.入宅.安香.入殓.启攒.安葬.谢土.赴任.会亲友.进人口.出行.移徙.上梁.经络.开市.交易.立券.纳财.", "j": "开仓.冠笄.伐木.作梁." }, "d1022": { "y": "祭祀.作灶.入殓.除服.成服.畋猎.", "j": "栽种.动土.安葬.开市." }, "d1023": { "y": "祭祀.祈福.斋醮.沐浴.竖柱.订盟.纳采.嫁娶.拆卸.入宅.移柩.启攒.谢土.赴任.出火.纳畜.", "j": "作灶.入殓.安葬.安床." }, "d1024": { "y": "嫁娶.祭祀.安机械.入殓.破土.安葬.", "j": "动土.上梁." }, "d1025": { "y": "作灶.造畜椆栖.", "j": "行丧.安葬." }, "d1026": { "y": "沐浴.理发.入学.习艺.进人口.", "j": "嫁娶.入宅." }, "d1027": { "y": "开光.针灸.会亲友.启攒.安葬.", "j": "开市.动土.破土." }, "d1028": { "y": "祭祀.结网.造畜椆栖.余事勿取.", "j": "余事勿取." }, "d1029": { "y": "入殓.除服.成服.移柩.破土.启攒.安葬.", "j": "移徙.入宅." }, "d1030": { "y": "嫁娶.订盟.纳采.出行.祭祀.祈福.动土.移徙.入宅.破土.安葬.", "j": "开市.赴任." }, "d1031": { "y": "祭祀.解除.破屋.坏垣.余事勿取.", "j": "余事勿取." }, "d1101": { "y": "订盟.纳采.会亲友.安机械.纳财.牧养.", "j": "祈福.安葬." }, "d1102": { "y": "嫁娶.订盟.纳采.出行.开市.祭祀.祈福.动土.移徙.入宅.破土.安葬.", "j": "斋醮.安门." }, "d1103": { "y": "祭祀.塞穴.余事勿取.", "j": "诸事不宜." }, "d1104": { "y": "祭祀.祈福.求嗣.开光.开市.出行.解除.动土.起基.置产.栽种.", "j": "嫁娶.作灶.修坟.安门.入宅.立碑.安葬.安床." }, "d1105": { "y": "祭祀.解除.裁衣.理发.安床.作灶.造畜椆栖.放水.筑堤.补垣.塞穴.整手足甲.扫舍.", "j": "嫁娶.开光.会亲友.掘井.安门.栽种." }, "d1106": { "y": "祭祀.出行.裁衣.冠笄.会亲友.造畜椆栖.嫁娶.竖柱.上梁.移徙.纳财.纳畜.", "j": "动土.伐木.作梁.行丧.安葬.开生坟." }, "d1107": { "y": "祭祀.沐浴.出行.余事勿取.", "j": "开市.动土.破土.行丧.安葬." }, "d1108": { "y": "嫁娶.造车器.出行.会亲友.移徙.入宅.修造.动土.雕刻.开光.安香.出火.理发.会亲友.造屋.合脊.起基.归岫.安门.拆卸.扫舍.栽种.造畜椆栖.", "j": "开市.纳采.造庙.安床.开渠.安葬." }, "d1109": { "y": "塑绘.会亲友.安机械.塞穴.结网.裁衣.经络.", "j": "嫁娶.开市.祈福.斋醮.安葬." }, "d1110": { "y": "纳采.移徙.纳财.开市.交易.立券.纳财.入宅.修造.动土.竖柱.起基.定磉.造庙.安香.出火.修饰垣墙.平治道涂.会亲友.出行.开池.作厕.", "j": "开仓.造屋.造桥.祭祀." }, "d1111": { "y": "订盟.纳采.纳财.开市.立券.祭祀.祈福.移徙.入宅.出行.造屋.起基.修造.动土.竖柱.上梁.安门.安香.出火.教牛马.会亲友.破土.", "j": "嫁娶.安葬.掘井.置产.造船." }, "d1112": { "y": "嫁娶.订盟.纳采.祭祀.祈福.塑绘.开光.移徙.安床.伐木.作梁.捕捉.畋猎.结网.求医.治病.解除.安葬.除服.成服.移柩.入殓.立碑.谢土.", "j": "开市.造庙.动土.破土." }, "d1113": { "y": "破屋.坏垣.祭祀.余事勿取.", "j": "嫁娶.安葬." }, "d1114": { "y": "嫁娶.纳采.订盟.祭祀.冠笄.裁衣.伐木.作梁.架马.定磉.开柱眼.作灶.移徙.安床.畋猎.结网.开池.作厕.除服.成服.启攒.入殓.移柩.安葬.", "j": "造屋.造船.动土.破土." }, "d1115": { "y": "纳采.订盟.祭祀.祈福.求嗣.斋醮.开光.会亲友.解除.入学.纳财.交易.立券.经络.起基.动土.定磉.开池.栽种.纳畜.牧养.破土.入殓.立碑.安葬.", "j": "嫁娶.开市.入宅.出火.移徙." }, "d1116": { "y": "捕捉.畋猎.会亲友.解除.入殓.除服.成服.移柩.余事勿取.", "j": "安床.安门.破土.修坟.安葬." }, "d1117": { "y": "祭祀.祈福.求嗣.斋醮.沐浴.冠笄.出行.理发.拆卸.解除.起基.动土.定磉.安碓硙.开池.掘井.扫舍.除服.成服.移柩.启攒.立碑.谢土.", "j": "移徙.入宅.安门.作梁.安葬." }, "d1118": { "y": "嫁娶.冠笄.安床.纳采.会亲友.塞穴.捕捉.置产.造畜椆栖.", "j": "开光.掘井.安葬.谢土.修坟." }, "d1119": { "y": "祭祀.沐浴.余事勿取.", "j": "诸事不宜." }, "d1120": { "y": "祭祀.会亲友.嫁娶.沐浴.修造.动土.祈福.开光.塑绘.出行.订盟.纳采.裁衣.入殓.除服.成服.移柩.启攒.赴任.竖柱.上梁.纳财.扫舍.栽种.纳畜.伐木.", "j": "入宅.作灶.安床.开仓." }, "d1121": { "y": "理发.会亲友.补垣.塞穴.结网.", "j": "嫁娶.入宅.安门.移徙." }, "d1122": { "y": "祭祀.祈福.订盟.纳采.裁衣.拆卸.修造.动土.起基.安床.移徙.入宅.安香.除服.成服.入殓.移柩.安葬.谢土.赴任.会亲友.进人口.出行.竖柱.上梁.经络.开市.交易.立券.纳财.开仓.", "j": "作灶.治病.伐木.作梁." }, "d1123": { "y": "祭祀.祈福.订盟.纳采.裁衣.拆卸.修造.动土.起基.安床.移徙.入宅.安香.入殓.移柩.安葬.谢土.赴任.进人口.会亲友.", "j": "作灶.治病." }, "d1124": { "y": "祭祀.塑绘.开光.订盟.纳采.嫁娶.安床.进人口.入殓.除服.成服.移柩.启攒.安葬.立碑.", "j": "开市.交易.破土.作灶." }, "d1125": { "y": "祭祀.解除.破屋.坏垣.余事勿取.", "j": "诸事不宜." }, "d1126": { "y": "祭祀.解除.祈福.开光.塑绘.斋醮.订盟.纳采.裁衣.冠笄.拆卸.修造.动土.入殓.除服.成服.移柩.启攒.安床.赴任.出行.移徙.竖柱.上梁.伐木.栽种.破土.安葬.纳畜.", "j": "造屋.治病." }, "d1127": { "y": "祭祀.祈福.订盟.纳采.裁衣.合帐.冠笄.安机械.安床.造畜椆栖.入殓.移柩.启攒.安葬.谢土.除服.成服.会亲友.竖柱.上梁.经络.开市.交易.立券.纳财.纳畜.筑堤.", "j": "嫁娶.入宅.治病.赴任." }, "d1128": { "y": "沐浴.扫舍.余事勿取.", "j": "诸事不宜." }, "d1129": { "y": "诸事不宜.", "j": "诸事不宜." }, "d1130": { "y": "祈福.斋醮.出行.订盟.纳采.入殓.移柩.破土.安葬.立碑.结网.", "j": "入宅.作灶." }, "d1201": { "y": "祭祀.沐浴.出行.冠笄.进人口.余事勿取.", "j": "嫁娶.动土.安葬.作灶." }, "d1202": { "y": "祭祀.祈福.斋醮.塑绘.开光.订盟.纳采.裁衣.冠笄.嫁娶.拆卸.入宅.安香.入殓.移柩.理发.安葬.修坟.谢土.赴任.移徙.沐浴.治病.破土.启攒.整手足甲.入学.作梁.", "j": "开市." }, "d1203": { "y": "诸事不宜.", "j": "诸事不宜." }, "d1204": { "y": "开市.交易.立券.挂匾.纳财.开光.出行.入宅.移徙.安床.纳畜.入殓.移柩.安葬.", "j": "栽种.破土.置产.祭祀.嫁娶.动土.作灶.祈福." }, "d1205": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出行.解除.出火.出行.拆卸.进人口.入宅.移徙.安床.栽种.动土.修造.纳畜.入殓.安葬.立碑.除服.成服.", "j": "" }, "d1206": { "y": "开光.解除.拆卸.修造.动土.安床.纳畜.安葬.启攒.入殓.", "j": "嫁娶.开市.出火.栽种.破土.动土.入宅.移徙.安香.分居.掘井.作灶." }, "d1207": { "y": "嫁娶.订盟.纳采.祭祀.祈福.求嗣.斋醮.安香.出火.修造.起基.造屋.合脊.安门.安碓硙.动土.上梁.移徙.入宅.", "j": "出行.掘井.破土.行丧.安葬." }, "d1208": { "y": "祭祀.沐浴.破屋.坏垣.余事勿取.", "j": "嫁娶.移徙.入宅.探病.出行.造屋." }, "d1209": { "y": "冠笄.纳财.掘井.开池.出火.安床.交易.立券.畋猎.结网.理发.放水.", "j": "安门.动土.破土.行丧.安葬.成服." }, "d1210": { "y": "纳采.订盟.移徙.入宅.出行.安机械.会亲友.祭祀.祈福.斋醮.开光.安香.出火.解除.求医.针灸.治病.造屋.起基.修造.安门.造船.纳畜.牧养.移柩.入殓.启攒.谢土.修坟.立碑.", "j": "嫁娶.动土.安床.造桥.掘井." }, "d1211": { "y": "祭祀.沐浴.作灶.纳财.捕捉.畋猎.安床.扫舍.", "j": "开市.斋醮.破土.安葬." }, "d1212": { "y": "祈福.斋醮.纳采.订盟.解除.架马.开柱眼.修造.动土.起基.上梁.归岫.造屋.合脊.掘井.除服.成服.破土.栽种.", "j": "移徙.开市.入宅.安葬." }, "d1213": { "y": "纳采.订盟.祭祀.沐浴.冠笄.合帐.裁衣.修造.动土.拆卸.移徙.入宅.安门.开仓.筑堤.作厕.栽种.纳畜.补垣.塞穴.", "j": "嫁娶.祈福.开光.掘井.安葬.行丧." }, "d1214": { "y": "合帐.裁衣.教牛马.余事勿取.", "j": "入宅.动土.破土.嫁娶.作灶.造船." }, "d1215": { "y": "纳采.订盟.嫁娶.祭祀.祈福.安香.出火.出行.会亲友.经络.求医.治病.解除.拆卸.起基.修造.动土.定磉.扫舍.栽种.牧养.造畜椆栖.", "j": "斋醮.作梁.掘井.行丧.安葬." }, "d1216": { "y": "纳财.开市.交易.立券.会亲友.进人口.经络.祭祀.祈福.安香.出火.求医.治病.修造.动土.拆卸.扫舍.安床.栽种.牧养.开生坟.合寿木.入殓.安葬.启攒.", "j": "嫁娶.祈福.出火.移徙.入宅." }, "d1217": { "y": "祭祀.入殓.移柩.余事勿取.", "j": "入宅.修造.动土.破土.安门.上梁." }, "d1218": { "y": "塑绘.开光.订盟.纳采.裁衣.冠笄.拆卸.修造.安床.入宅.出火.安葬.谢土.赴任.", "j": "掘井.伐木.斋醮.作灶." }, "d1219": { "y": "祭祀.塑绘.开光.裁衣.冠笄.嫁娶.纳采.拆卸.修造.动土.竖柱.上梁.安床.移徙.入宅.安香.结网.捕捉.畋猎.伐木.进人口.放水.", "j": "出行.安葬.修坟.开市." }, "d1220": { "y": "祭祀.求医.破屋.坏垣.余事勿取.", "j": "诸事不宜." }, "d1221": { "y": "祭祀.祈福.斋醮.出行.冠笄.安机械.移徙.入宅.安香.安床.除服.成服.移柩.启攒.", "j": "开光.栽种.治病.安门.作灶." }, "d1222": { "y": "塑绘.斋醮.出行.拆卸.解除.修造.移徙.造船.入殓.除服.成服.移柩.启攒.修坟.立碑.谢土.", "j": "" }, "d1223": { "y": "祭祀.沐浴.安床.纳财.畋猎.捕捉.", "j": "开市.破土." }, "d1224": { "y": "订盟.纳采.祭祀.祈福.修造.动土.上梁.破土.", "j": "嫁娶.作灶." }, "d1225": { "y": "出行.沐浴.理发.补垣.塞穴.", "j": "入宅.安葬." }, "d1226": { "y": "教牛马.余事勿取.", "j": "入宅.动土.破土.余事勿取." }, "d1227": { "y": "嫁娶.出行.求医.治病.祭祀.祈福.上梁.纳畜.", "j": "开市.安葬." }, "d1228": { "y": "开市.立券.开光.解除.安机械.上梁.启攒.安葬.", "j": "嫁娶.祈福." }, "d1229": { "y": "平治道涂.余事勿取.", "j": "诸事不宜." }, "d1230": { "y": "求嗣.斋醮.塑绘.订盟.纳采.出火.拆卸.修造.动土.造桥.安机械.栽种.纳畜.牧养.入殓.除服.成服.移柩.破土.安葬.", "j": "开市.嫁娶." }, "d1231": { "y": "嫁娶.订盟.纳采.祭祀.祈福.修造.动土.移徙.入宅.", "j": "开市.安葬." } } ukui-panel-4.0.0.4/plugin-calendar/html/hlnew/hl2035.json0000644000175000017500000012051714560306203021312 0ustar fengfeng{ "d0101": { "j": "嫁娶.进人口.安葬.出行.赴任", "y": "祭祀.祈福.求嗣.开光.拆卸" }, "d0102": { "j": "移徙.入宅.嫁娶.祈福.开光", "y": "沐浴.冠笄.补垣.塞穴" }, "d0103": { "j": "斋醮.入宅.修造.动土.破土", "y": "交易.进人口.祭祀.沐浴.捕捉" }, "d0104": { "j": "斋醮.伐木.作梁.安葬.行丧", "y": "嫁娶.纳采.订盟.造车器.祭祀" }, "d0105": { "j": "作灶.祭祀.上樑.出行", "y": "沐浴.解除.订盟.纳采.裁衣" }, "d0106": { "j": "", "y": "出行.嫁娶.订盟.纳采.入殓" }, "d0107": { "j": "嫁娶.移徙.入宅.开光", "y": "修饰垣墙.平治道涂.入殓.移柩.余事勿取" }, "d0108": { "j": "出行.治病.安葬.开市", "y": "会亲友.纳采.进人口.修造.动土" }, "d0109": { "j": "盖屋.开市.作灶.入宅", "y": "祭祀.会亲友.出行.订盟.纳采" }, "d0110": { "j": "诸事不宜", "y": "解除.破屋.坏垣.余事勿取" }, "d0111": { "j": "入宅.安床", "y": "塑绘.开光.出行.订盟.纳采" }, "d0112": { "j": "破土.伐木", "y": "入殓.除服.成服.移柩.启钻" }, "d0113": { "j": "开仓.盖屋.安葬.安床", "y": "祭祀.祈福.斋醮.塑绘.开光" }, "d0114": { "j": "栽种.嫁娶.入殓.安葬", "y": "祭祀.出行.沐浴.裁衣.祈福" }, "d0115": { "j": "作灶.掘井.嫁娶.入宅", "y": "祭祀.祈福.斋醮.沐浴.安床" }, "d0116": { "j": "余事勿取", "y": "解除.扫舍.祭祀.教牛马.余事勿取" }, "d0117": { "j": "嫁娶.祭祀.出行.置产", "y": "开市.交易.立券.挂匾.开光" }, "d0118": { "j": "修造.上樑.入宅.祈福.探病", "y": "开市.交易.立券.纳财.开池" }, "d0119": { "j": "余事勿取", "y": "祭祀.解除.修饰垣墙.平治道涂.余事勿取" }, "d0120": { "j": "掘井.安葬.栽种.出行.作灶", "y": "嫁娶.祭祀.祈福.求嗣.动土" }, "d0121": { "j": "掘井.安葬.栽种.出行.作灶", "y": "嫁娶.祭祀.祈福.求嗣.开光" }, "d0122": { "j": "诸事不宜", "y": "破屋.坏垣.余事勿取" }, "d0123": { "j": "安床.伐木.祈福.纳畜", "y": "嫁娶.开市.交易.立券.开光" }, "d0124": { "j": "余事勿取", "y": "祭祀.入殓.破土.除服.成服" }, "d0125": { "j": "伐木.行丧.作灶.作梁.安葬", "y": "嫁娶.祭祀.塑绘.开光.出行" }, "d0126": { "j": "嫁娶.栽种.安葬.理髮.造庙", "y": "开市.交易.立券.纳财.纳畜" }, "d0127": { "j": "置产.嫁娶.出行.开光.栽种", "y": "安床.裁衣.交易.立券.入殓" }, "d0128": { "j": "嫁娶.动土.开池.安葬", "y": "祭祀.解除.造畜稠.教牛马.针灸" }, "d0129": { "j": "入宅.安门.祭祀.谢土", "y": "沐浴.塑绘.开光.纳采.订盟" }, "d0130": { "j": "掘井.祈福.谢土.动土.入宅", "y": "嫁娶.出行.理髮.安床.启钻" }, "d0131": { "j": "移徙.入宅.掘井.造庙.栽种", "y": "解除.平治道涂.余事勿取" }, "d0201": { "j": "开市.行丧.栽种.出行.出货财", "y": "嫁娶.祭祀.开光.伐木.出火" }, "d0202": { "j": "伐木.开市.交易.上樑.作灶", "y": "嫁娶.纳采.订盟.入宅.移徙" }, "d0203": { "j": "开市.动土.破土", "y": "祭祀.破屋.坏垣.解除.余事勿取" }, "d0204": { "j": "诸事不宜", "y": "求医.破屋" }, "d0205": { "j": "作灶.安床", "y": "祈福.求嗣.斋醮.塑绘.开光" }, "d0206": { "j": "嫁娶.上樑.入宅.作灶", "y": "取渔.入殓.除服.成服.移柩" }, "d0207": { "j": "安葬.作灶.伐木.作梁", "y": "祭祀.求嗣.沐浴.酬神.订盟" }, "d0208": { "j": "入殓.安葬.作灶.入宅", "y": "祭祀.沐浴.祈福.求嗣.斋醮" }, "d0209": { "j": "开光.掘井.针灸.出行.嫁娶", "y": "祭祀.祈福.求嗣.入殓.启钻" }, "d0210": { "j": "嫁娶.出行.动土.开渠.入宅", "y": "安床.解除.裁衣.竖柱.上樑" }, "d0211": { "j": "掘井.词讼", "y": "嫁娶.安床.开光.出行.祭祀" }, "d0212": { "j": "入宅.移徙.出火.分居.安香", "y": "嫁娶.开光.求嗣.会亲友.安床" }, "d0213": { "j": "栽种.出行.祈福.行丧.纳畜", "y": "作灶.解除.平治道涂" }, "d0214": { "j": "诸事不宜", "y": "解除.沐浴" }, "d0215": { "j": "开市.立券.理髮.作灶", "y": "嫁娶.祭祀.祈福.出行.解除" }, "d0216": { "j": "余事勿取", "y": "祭祀.解除.治病.破屋.坏垣" }, "d0217": { "j": "嫁娶.作灶.安床", "y": "祭祀.祈福.求嗣.开光.出火" }, "d0218": { "j": "诸事不宜", "y": "结网.入殓.除服.成服.移柩" }, "d0219": { "j": "嫁娶.安葬.破土.作梁.纳畜", "y": "移徙.祭祀.开光.祈福.出行" }, "d0220": { "j": "入宅.作灶.伐木.安葬.出火", "y": "嫁娶.开光.祈福.求嗣.解除" }, "d0221": { "j": "词讼.出火.入宅", "y": "祭祀.合帐.裁衣.经络.伐木" }, "d0222": { "j": "诸事不宜", "y": "裁衣.伐木.作梁.纳财.交易" }, "d0223": { "j": "", "y": "动土.上樑.进人口.入宅.移徙" }, "d0224": { "j": "入宅.作灶.治病.安葬.移徙", "y": "嫁娶.冠笄.纳采.出行.会亲友" }, "d0225": { "j": "诸事不宜", "y": "修饰垣墙" }, "d0226": { "j": "开光.盖屋.动土.作灶.栽种", "y": "造车器.纳采.订盟.祭祀.祈福" }, "d0227": { "j": "开市.作灶.安床.入宅.上樑", "y": "动土.入殓.嫁娶.移柩.安葬" }, "d0228": { "j": "开市.嫁娶", "y": "求医.治病.破屋.坏垣.余事勿取" }, "d0301": { "j": "开市.嫁娶.安床.会亲友.入宅", "y": "祭祀.斋醮.沐浴.开生坟.除服" }, "d0302": { "j": "嫁娶.入宅", "y": "祭祀.塞穴.结网.破土.谢土" }, "d0303": { "j": "嫁娶.词讼.行丧.安葬.牧养", "y": "祭祀.沐浴.理髮.作灶.结网" }, "d0304": { "j": "入宅.安葬.伐木.作梁.纳畜", "y": "嫁娶.祭祀.开光.祈福.求嗣" }, "d0305": { "j": "栽种.开光.出行.针灸.嫁娶", "y": "祭祀.祈福.求嗣.纳畜.入殓" }, "d0306": { "j": "作灶.开光.嫁娶.开市.入宅", "y": "订盟.纳采.冠笄.拆卸.修造" }, "d0307": { "j": "作灶.掘井.动土.栽种", "y": "祈福.开光.塑绘.酬神.订盟" }, "d0308": { "j": "栽种.作灶.安葬.嫁娶", "y": "祭祀.扫舍.塞穴" }, "d0309": { "j": "出行.嫁娶.入宅.安葬", "y": "开光.塑绘.裁衣.冠笄.伐木" }, "d0310": { "j": "盖屋.作灶.治病.探病", "y": "冠笄.入殓.除服.成服.移柩" }, "d0311": { "j": "栽种.伐木", "y": "祭祀.嫁娶.祈福.纳采.裁衣" }, "d0312": { "j": "安床.开市.立券.作灶", "y": "祭祀.祈福.斋醮.订盟.纳采" }, "d0313": { "j": "诸事不宜", "y": "破屋.坏垣.求医.治病" }, "d0314": { "j": "开光.出货财", "y": "祭祀.动土.上樑.订盟.纳采" }, "d0315": { "j": "嫁娶.栽种.伐木.安葬", "y": "祭祀.开光.塑绘.纳采.裁衣" }, "d0316": { "j": "作灶.开市.安葬.作梁", "y": "裁衣.合帐.冠笄.嫁娶.纳婿" }, "d0317": { "j": "作灶.安葬.开市.盖屋", "y": "祭祀.订盟.纳采.修造.动土" }, "d0318": { "j": "祭祀.开光.嫁娶.入宅", "y": "订盟.纳采.裁衣.合帐.冠笄" }, "d0319": { "j": "掘井.动土.作灶.栽种", "y": "祭祀.出行.嫁娶.冠笄.安床" }, "d0320": { "j": "安门.作灶.安葬.嫁娶", "y": "塞穴.诸事不宜" }, "d0321": { "j": "出行.斋醮.安葬.嫁娶", "y": "开光.塑绘.求嗣.纳采.裁衣" }, "d0322": { "j": "栽种.盖屋.作灶.入宅", "y": "祭祀.嫁娶.纳婿.安葬" }, "d0323": { "j": "伐木.作梁", "y": "祭祀.会亲友.订盟.裁衣.合帐" }, "d0324": { "j": "入宅.安门", "y": "祭祀.开光.塑绘.祈福.斋醮" }, "d0325": { "j": "诸事不宜", "y": "祭祀.治病.破屋.坏垣.余事勿取" }, "d0326": { "j": "造庙.造船.动土.破土.安葬", "y": "纳采.订盟.嫁娶.祭祀.祈福" }, "d0327": { "j": "嫁娶.行丧.架马.作梁.理髮", "y": "开市.立券.交易.挂匾.祭祀" }, "d0328": { "j": "置产.伐木.纳畜.造畜稠.安葬", "y": "理髮.冠笄.嫁娶.进人口" }, "d0329": { "j": "合帐.开市.安葬.入殓", "y": "嫁娶.祭祀.开光.祈福.求嗣" }, "d0330": { "j": "嫁娶.祭祀.开光.出行.出火", "y": "安床.伐木.拆卸.修造.动土" }, "d0331": { "j": "祈福.动土.移徙.入宅", "y": "祭祀.祈福.求嗣.斋醮.嫁娶" }, "d0401": { "j": "嫁娶.作灶.掘井.安葬", "y": "塞穴.整手足甲.解除.捕捉.畋猎" }, "d0402": { "j": "动土.破土.安葬.行丧.赴任", "y": "纳财.开市.立券.交易.开光" }, "d0403": { "j": "开仓.出货财.盖屋.作灶.开市", "y": "祭祀.祈福.嫁娶.冠笄.修饰垣墙" }, "d0404": { "j": "动土.伐木.安葬.行丧", "y": "嫁娶.祭祀.开光.祈福.求嗣" }, "d0405": { "j": "嫁娶.移徙.入宅", "y": "祭祀.斋醮.开市.动土.入殓" }, "d0406": { "j": "开市.动土.破土", "y": "嫁娶.纳采.祭祀.祈福.出行" }, "d0407": { "j": "诸事不宜", "y": "祭祀.求医.治病.解除.余事勿取" }, "d0408": { "j": "嫁娶.入宅.安葬", "y": "沐浴.结网.取渔" }, "d0409": { "j": "诸事不宜", "y": "" }, "d0410": { "j": "诸事不宜", "y": "解除.坏垣.余事勿取" }, "d0411": { "j": "祈福.入殓.祭祀.作灶.安葬", "y": "嫁娶.开光.出行.出火.拆卸" }, "d0412": { "j": "词讼.开光.开市", "y": "嫁娶.出行.合帐.冠笄.安床" }, "d0413": { "j": "诸事不宜", "y": "出行.修饰垣墙.造畜稠.教牛马.余事勿取" }, "d0414": { "j": "嫁娶.纳财.安葬.出行.开市", "y": "祭祀.祈福.开光.求嗣.解除" }, "d0415": { "j": "谢土.祈福.上樑.作灶.斋醮", "y": "纳采.嫁娶.开光.出行.理髮" }, "d0416": { "j": "诸事不宜", "y": "祭祀.平治道涂.解除.修饰垣墙.余事勿取" }, "d0417": { "j": "进人口.出行.嫁娶.置产.安床", "y": "祭祀.祈福.开光.解除.动土" }, "d0418": { "j": "动土.破土.纳财.掘井.挂匾", "y": "祭祀.祈福.求嗣.开光.解除" }, "d0419": { "j": "诸事不宜", "y": "祭祀.解除.破屋.坏垣.余事勿取" }, "d0420": { "j": "诸事不宜", "y": "塞穴.扫舍.余事勿取" }, "d0421": { "j": "诸事不宜", "y": "祭祀.破屋.坏垣.余事勿取" }, "d0422": { "j": "诸事不宜", "y": "解除.破屋.余事勿取" }, "d0423": { "j": "祭祀.入殓.安葬.探病", "y": "嫁娶.祈福.求嗣.开光.出行" }, "d0424": { "j": "嫁娶.掘井.探病.开市.开光", "y": "祭祀.裁衣.冠笄.安床.交易" }, "d0425": { "j": "开光.伐木.安葬.破土", "y": "祭祀.出行.教牛马.扫舍.余事勿取" }, "d0426": { "j": "修坟.造桥.作灶.出行.安葬", "y": "祭祀.祈福.求嗣.开光.纳采" }, "d0427": { "j": "祈福.出火.置产.动土.破土", "y": "开光.出行.交易.塞穴.嫁娶" }, "d0428": { "j": "嫁娶.安床.治病", "y": "祭祀.作灶.畋猎.结网.修饰垣墙" }, "d0429": { "j": "斋醮.开光.嫁娶.入宅.上樑", "y": "沐浴.祭祀.解除.安葬.破土" }, "d0430": { "j": "动土.破土", "y": "祭祀.解除.入殓.移柩.启钻" }, "d0501": { "j": "嫁娶.开市", "y": "祭祀.沐浴.解除.破屋.坏垣" }, "d0502": { "j": "祈福.安葬", "y": "沐浴.塞穴.畋猎.结网.取渔" }, "d0503": { "j": "纳采.问名.订盟.嫁娶.入宅", "y": "开市.交易.立券.挂匾.祭祀" }, "d0504": { "j": "嫁娶.入宅", "y": "祭祀.修门.取渔.纳财.纳畜" }, "d0505": { "j": "动土.破土.安葬", "y": "嫁娶.纳采.出行.移徙.入宅" }, "d0506": { "j": "嫁娶.安葬", "y": "订盟.纳采.祭祀.动土.破土" }, "d0507": { "j": "赴任.捕捉", "y": "嫁娶.裁衣.祭祀.出行.安床" }, "d0508": { "j": "诸事不宜", "y": "塞穴.结网.余事勿取" }, "d0509": { "j": "移徙.入宅", "y": "嫁娶.订盟.纳采.出行.祭祀" }, "d0510": { "j": "开市.安葬", "y": "订盟.纳采.会亲友.安床.作灶" }, "d0511": { "j": "诸事不宜", "y": "沐浴.平治道涂.扫舍.入殓.移柩" }, "d0512": { "j": "", "y": "嫁娶.祭祀.祈福.求嗣.开光" }, "d0513": { "j": "嫁娶.上樑.修造.拆卸.架马", "y": "祭祀.开光.出行.解除.塑绘" }, "d0514": { "j": "诸事不宜", "y": "祭祀.解除.破屋.坏垣.余事勿取" }, "d0515": { "j": "", "y": "嫁娶.祭祀.祈福.求嗣.开光" }, "d0516": { "j": "入宅.移徙.理髮.出火.嫁娶", "y": "开市.交易.立券.祭祀.祈福" }, "d0517": { "j": "诸事不宜", "y": "结网.解除.余事勿取" }, "d0518": { "j": "纳畜.入宅.移徙.安葬.探病", "y": "嫁娶.祭祀.祈福.求嗣.开光" }, "d0519": { "j": "开光.掘井.开仓", "y": "嫁娶.祭祀.祈福.求嗣.出行" }, "d0520": { "j": "诸事不宜", "y": "解除.扫舍.余事勿取" }, "d0521": { "j": "嫁娶.安床.探病.作灶", "y": "开市.交易.立券.挂匾.开光" }, "d0522": { "j": "塞穴.上樑.动土.伐木.安葬", "y": "进人口.会亲友" }, "d0523": { "j": "嫁娶.移徙.伐木.作梁.安床", "y": "沐浴.平治道涂.扫舍.入殓.破土" }, "d0524": { "j": "", "y": "嫁娶.祭祀.祈福.求嗣.开光" }, "d0525": { "j": "祈福.开市.动土.行丧.安葬", "y": "塑绘.冠笄.嫁娶.会亲友.进人口" }, "d0526": { "j": "诸事不宜", "y": "破屋.坏垣.沐浴.解除.余事勿取" }, "d0527": { "j": "开市.立券", "y": "纳采.订盟.嫁娶.造车器.祭祀" }, "d0528": { "j": "嫁娶.掘井.入宅.移徙.安葬", "y": "开市.交易.立券.祭祀.祈福" }, "d0529": { "j": "祭祀.伐木.架马.安床.修造", "y": "解除.出行.纳采.冠笄.竖柱" }, "d0530": { "j": "入宅.移徙.修造.安门.伐木", "y": "祭祀.祈福.求嗣.开光.出行" }, "d0531": { "j": "安床.开渠.上樑.修造.开市", "y": "嫁娶.交易.立券.开厕.补垣" }, "d0601": { "j": "嫁娶.安葬.入宅.出行.动土", "y": "塞穴.断蚁.结网.畋猎.余事勿取" }, "d0602": { "j": "作灶.安床.开仓.盖屋.动土", "y": "纳采.订盟.嫁娶.祭祀.祈福" }, "d0603": { "j": "嫁娶.栽种.修造.动土.出行", "y": "开光.纳采.裁衣.冠笄.安床" }, "d0604": { "j": "伐木.安葬.安床.祭祀.祈福", "y": "纳采.嫁娶.裁衣.理髮.出行" }, "d0605": { "j": "作灶.嫁娶.移徙.入宅.理髮", "y": "开市.交易.立券.挂匾.祭祀" }, "d0606": { "j": "作灶", "y": "嫁娶.订盟.纳采.出行.开市" }, "d0607": { "j": "开市.安葬", "y": "订盟.纳采.出行.祭祀.祈福" }, "d0608": { "j": "诸事不宜", "y": "诸事不宜" }, "d0609": { "j": "开光.开市", "y": "嫁娶.订盟.纳采.祭祀.祈福" }, "d0610": { "j": "嫁娶.开光", "y": "开光.求医.治病.动土.上樑" }, "d0611": { "j": "诸事不宜", "y": "祭祀.栽种.余事勿取" }, "d0612": { "j": "安葬.开市.交易.立券", "y": "嫁娶.开光.祭祀.祈福.求嗣" }, "d0613": { "j": "安葬.出行.祈福.栽种", "y": "求嗣.嫁娶.纳采.合帐.裁衣" }, "d0614": { "j": "诸事不宜", "y": "祭祀.解除.余事勿取" }, "d0615": { "j": "安葬.行丧.伐木.作梁", "y": "嫁娶.祭祀.祈福.出火.开光" }, "d0616": { "j": "置产.安床", "y": "开光.求嗣.出行.解除.伐木" }, "d0617": { "j": "出行.安门.修造.嫁娶.上樑", "y": "祭祀.理髮.修饰垣墙.平治道涂.沐浴" }, "d0618": { "j": "", "y": "嫁娶.祭祀.开光.祈福.求嗣" }, "d0619": { "j": "嫁娶.开市.交易.行丧.安葬", "y": "祭祀.祈福.求嗣.开光.出行" }, "d0620": { "j": "诸事不宜", "y": "破屋.坏垣.余事勿取" }, "d0621": { "j": "嫁娶.造桥.词讼.移徙.安门", "y": "开市.交易.立券.纳财.开池" }, "d0622": { "j": "嫁娶.出火.伐木.祭祀.入宅", "y": "开市.交易.立券.纳财.栽种" }, "d0623": { "j": "诸事不宜", "y": "祭祀.作灶.余事勿取" }, "d0624": { "j": "诸事不宜", "y": "解除.坏垣.余事勿取" }, "d0625": { "j": "嫁娶.掘井.入宅.移徙.出火", "y": "修造.动土.起基.安门.安床" }, "d0626": { "j": "斋醮.移徙.入宅.动土", "y": "祭祀" }, "d0627": { "j": "行丧.安葬.破土.作灶.伐木", "y": "纳采.订盟.嫁娶.祭祀.祈福" }, "d0628": { "j": "纳采.订盟.安床.谢土.破土", "y": "嫁娶.开光.祭祀.祈福.出行" }, "d0629": { "j": "破土.出行.栽种", "y": "嫁娶.祭祀.理髮.作灶.修饰垣墙" }, "d0630": { "j": "动土.掘井.破土", "y": "嫁娶.纳采.订盟.祭祀.祈福" }, "d0701": { "j": "嫁娶.开市.安葬.启钻.行丧", "y": "畋猎.捕捉.结网.取渔.祭祀" }, "d0702": { "j": "移徙.入宅.开仓.出货财", "y": "祭祀.破屋.坏垣.余事勿取" }, "d0703": { "j": "出火.入宅", "y": "祭祀.斋醮.塑绘.开光.出行" }, "d0704": { "j": "作灶.出火.祭祀.嫁娶.入宅", "y": "开市.交易.立券.挂匾.开光" }, "d0705": { "j": "入宅.出行.掘井.安葬", "y": "祭祀.结网.余事勿取" }, "d0706": { "j": "行丧.置产.入宅.安葬", "y": "嫁娶.纳采.订盟.冠笄.造车器" }, "d0707": { "j": "造庙.安葬", "y": "嫁娶.开市.立券.祭祀.祈福" }, "d0708": { "j": "诸事不宜", "y": "补垣.塞穴.结网.入殓.除服" }, "d0709": { "j": "动土.安葬", "y": "嫁娶.纳采.出行.祭祀.祈福" }, "d0710": { "j": "开市.入宅", "y": "嫁娶.祭祀.祈福.斋醮.治病" }, "d0711": { "j": "祈福.动土.破土", "y": "嫁娶.出行.开市.安床.入殓" }, "d0712": { "j": "开仓.出货财.置产.安葬.动土", "y": "嫁娶.祭祀.裁衣.结网.冠笄" }, "d0713": { "j": "嫁娶.破土.置产.栽种.安葬", "y": "入宅.移徙.安床.开光.祈福" }, "d0714": { "j": "嫁娶.入宅.移徙.作灶.开市", "y": "祭祀.解除.沐浴.整手足甲.入殓" }, "d0715": { "j": "诸事不宜", "y": "破屋.坏垣.余事勿取" }, "d0716": { "j": "伐木.祭祀.纳畜.祭祀", "y": "嫁娶.开光.出行.理髮.作梁" }, "d0717": { "j": "", "y": "嫁娶.开光.出行.祈福.求嗣" }, "d0718": { "j": "安葬.经络.修坟.破土.开市", "y": "祭祀.作灶.纳财.栽种.纳畜" }, "d0719": { "j": "嫁娶.出行.安葬.入殓.入宅", "y": "祭祀.祈福.求嗣.开光.开市" }, "d0720": { "j": "余事勿取", "y": "祭祀.入殓.破土.除服.成服" }, "d0721": { "j": "嫁娶.作灶.安葬.动土.词讼", "y": "祭祀.出行.交易.割蜜.造畜稠" }, "d0722": { "j": "", "y": "嫁娶.祭祀.祈福.求嗣.开光" }, "d0723": { "j": "作灶.动土.上樑.栽种.入宅", "y": "嫁娶.开光.解除.安床.牧养" }, "d0724": { "j": "嫁娶.开市.交易.入宅.安葬", "y": "祭祀.沐浴.破屋.坏垣.求医" }, "d0725": { "j": "嫁娶.栽种.行丧.理髮.修坟", "y": "祭祀.祈福.求嗣.开光.伐木" }, "d0726": { "j": "嫁娶.开市.出火.作灶.置产", "y": "解除.祭祀.理髮.入殓.安葬" }, "d0727": { "j": "诸事不宜", "y": "破屋.坏垣.余事勿取" }, "d0728": { "j": "入宅.移徙.作灶.祭祀.谢土", "y": "开市.交易.立券.纳财.动土" }, "d0729": { "j": "掘井.伐木.纳畜.合寿木", "y": "嫁娶.纳采.订盟.祭祀.祈福" }, "d0730": { "j": "开渠.造船.安床.安葬.破土", "y": "祭祀.冠笄.作灶.交易.纳财" }, "d0731": { "j": "移徙.栽种.出行.行丧.破土", "y": "嫁娶.纳采.订盟.祭祀.祈福" }, "d0801": { "j": "开光.治病.嫁娶.掘井.破土", "y": "经络.祭祀.沐浴.补垣.塞穴" }, "d0802": { "j": "移徙.入宅.栽种.动土.破土", "y": "嫁娶.祭祀.出行.裁衣.冠笄" }, "d0803": { "j": "开市.入宅.出行.安床.作灶", "y": "修造.动土.安机械.祭祀.沐浴" }, "d0804": { "j": "上樑.入宅.修造.动土.破土", "y": "嫁娶.纳采.订盟.造车器.开光" }, "d0805": { "j": "动土.破土.治病.开渠", "y": "祭祀.嫁娶.畋猎.结网" }, "d0806": { "j": "嫁娶.作灶.出火.置产.嫁娶", "y": "纳采.订盟.会亲友.入学.祭祀" }, "d0807": { "j": "开市.安葬", "y": "嫁娶.祭祀.祈福.斋醮.动土" }, "d0808": { "j": "嫁娶.入宅", "y": "捕捉.结网.入殓.破土.安葬" }, "d0809": { "j": "诸事不宜", "y": "沐浴.治病.破屋.坏垣.余事勿取" }, "d0810": { "j": "动土.破土", "y": "嫁娶.订盟.纳采.出行.开市" }, "d0811": { "j": "开光.针灸", "y": "嫁娶.订盟.纳采.祭祀.祈福" }, "d0812": { "j": "动土.安葬", "y": "订盟.纳采.祭祀.祈福.安机械" }, "d0813": { "j": "入宅.作梁.安门.伐木.修造", "y": "嫁娶.祭祀.祈福.求嗣.出行" }, "d0814": { "j": "盖屋.开光.理髮.造船.掘井", "y": "嫁娶.祭祀.祈福.求嗣.出行" }, "d0815": { "j": "破土.置产.掘井.动土.安床", "y": "祭祀.祈福.求嗣.开光.出行" }, "d0816": { "j": "嫁娶.会亲友.进人口.出行.入宅", "y": "祭祀.解除.沐浴.理髮.整手足甲" }, "d0817": { "j": "嫁娶.纳财.祈福.安葬.修造", "y": "塑绘.开光.进人口.纳畜.补垣" }, "d0818": { "j": "诸事不宜", "y": "作灶.沐浴.修饰垣墙.平治道涂.余事勿取" }, "d0819": { "j": "嫁娶.移徙", "y": "祭祀.求嗣.开光.出行.伐木" }, "d0820": { "j": "诸事不宜", "y": "祭祀.塞穴.入殓.破土.安葬" }, "d0821": { "j": "诸事不宜", "y": "破屋.坏垣.余事勿取" }, "d0822": { "j": "诸事不宜", "y": "祭祀.入殓.移柩.结网.启钻" }, "d0823": { "j": "栽种.作灶.针灸.出行", "y": "嫁娶.出火.拆卸.祭祀.祈福" }, "d0824": { "j": "动土.破土.嫁娶.理髮.出行", "y": "祭祀.开光.解除.进人口.交易" }, "d0825": { "j": "盖屋.入殓.安葬.伐木.入宅", "y": "嫁娶.祭祀.祈福.求嗣.开光" }, "d0826": { "j": "开光.出行.修造.上樑.入宅", "y": "祭祀.动土.筑堤.开池.会亲友" }, "d0827": { "j": "安床.动土.安葬.开生坟.合寿木", "y": "祭祀.裁衣.安门.纳财.扫舍" }, "d0828": { "j": "嫁娶.出行.进人口.作灶.入宅", "y": "祭祀.解除.拆卸.修造.动土" }, "d0829": { "j": "伐木.谢土.行丧.祭祀.作灶", "y": "纳采.订盟.开光.出行.解除" }, "d0830": { "j": "嫁娶.词讼.治病.置产.作梁", "y": "修饰垣墙.平治道涂.祭祀.沐浴.作灶" }, "d0831": { "j": "斋醮.开市.开仓.作灶.造船", "y": "嫁娶.祭祀.祈福.求嗣.出火" }, "d0901": { "j": "嫁娶.入宅.开市.交易", "y": "破土.安葬.移柩.入殓.祭祀" }, "d0902": { "j": "祈福.纳采.订盟.嫁娶.入宅", "y": "破屋.坏垣.治病.余事勿取" }, "d0903": { "j": "掘井.理髮.作灶.动土.破土", "y": "嫁娶.开光.祭祀.祈福.求嗣" }, "d0904": { "j": "入宅.嫁娶.掘井.牧养", "y": "安机械.纳采.订盟.祭祀.祈福" }, "d0905": { "j": "行丧.安葬.出行.作梁.纳畜", "y": "嫁娶.祭祀.祈福.求嗣.裁衣" }, "d0906": { "j": "入宅.上樑.入殓.盖屋.探病", "y": "嫁娶.纳采.订盟.开光.祭祀" }, "d0907": { "j": "嫁娶.入宅.斋醮.开光.针灸", "y": "祭祀.出行.作梁.出火.拆卸" }, "d0908": { "j": "安床.开光.开市.交易", "y": "祭祀.裁衣.冠笄.嫁娶.安机械" }, "d0909": { "j": "动土.冠笄.移徙.入宅.开市", "y": "祭祀.出行.成服.除服.沐浴" }, "d0910": { "j": "诸事不宜", "y": "祭祀.沐浴.赴任.出行.余事勿取" }, "d0911": { "j": "诸事不宜", "y": "诸事不宜" }, "d0912": { "j": "嫁娶.移徙.入宅.开市", "y": "沐浴.入殓.移柩.除服.成服" }, "d0913": { "j": "", "y": "嫁娶.祭祀.祈福.求嗣.沐浴" }, "d0914": { "j": "嫁娶.出行.安床.作灶.祭祀", "y": "开光.解除.起基.动土.拆卸" }, "d0915": { "j": "诸事不宜", "y": "破屋.坏垣.余事勿取" }, "d0916": { "j": "", "y": "嫁娶.祈福.求嗣.出行.出火" }, "d0917": { "j": "嫁娶.立碑.出行.伐木.安葬", "y": "开市.交易.立券.挂匾.祭祀" }, "d0918": { "j": "探病.开渠.安葬.伐木.作灶", "y": "祭祀.理髮.会亲友.进人口.嫁娶" }, "d0919": { "j": "余事勿取", "y": "祭祀.立碑.修坟.启钻.除服" }, "d0920": { "j": "掘井.祈福.安床.开市.入宅", "y": "嫁娶.出行.伐木.拆卸.修造" }, "d0921": { "j": "诸事不宜", "y": "祭祀.出行.扫舍.余事勿取" }, "d0922": { "j": "开光.作灶.斋醮.安葬", "y": "嫁娶.祭祀.出行.冠笄.立券" }, "d0923": { "j": "作灶.行丧.理髮.乘船.嫁娶", "y": "开市.交易.立券.挂匾.开光" }, "d0924": { "j": "诸事不宜", "y": "祭祀.沐浴.修饰垣墙.平治道涂.余事勿取" }, "d0925": { "j": "", "y": "嫁娶.祭祀.祈福.求嗣.开光" }, "d0926": { "j": "诸事不宜", "y": "解除.坏垣.余事勿取" }, "d0927": { "j": "诸事不宜", "y": "祭祀.治病.破屋.坏垣.余事勿取" }, "d0928": { "j": "开市.掘井.开渠.造桥.造船", "y": "嫁娶.纳采.订盟.祭祀.开光" }, "d0929": { "j": "嫁娶.破土.进人口.出行.入宅", "y": "开市.交易.立券.纳财.挂匾" }, "d0930": { "j": "开仓.出货财.伐木.纳畜.开市", "y": "嫁娶.祭祀.理髮.进人口.作灶" }, "d1001": { "j": "开市.入宅.嫁娶.动土.破土", "y": "祭祀.修坟.除服.成服.启钻" }, "d1002": { "j": "祈福.开光.开市.入宅.动土", "y": "嫁娶.冠笄.安机械.解除.纳畜" }, "d1003": { "j": "动土.破土.置产.掘井", "y": "祭祀.出行.沐浴.扫舍.安葬" }, "d1004": { "j": "造庙.行丧.安葬.伐木.作灶", "y": "嫁娶.纳采.祭祀.解除.出行" }, "d1005": { "j": "斋醮.嫁娶.行丧.动土.作灶", "y": "纳采.订盟.开市.交易.立券" }, "d1006": { "j": "嫁娶.入宅.安床.出行", "y": "祭祀.沐浴.修饰垣墙.平治道涂.余事勿取" }, "d1007": { "j": "作灶.出火.进人口.开渠.入宅", "y": "开光.祈福.求嗣.斋醮.修造" }, "d1008": { "j": "移徙.入宅", "y": "入殓.除服.成服.移柩.破土" }, "d1009": { "j": "开市.赴任", "y": "嫁娶.订盟.纳采.出行.祭祀" }, "d1010": { "j": "余事勿取", "y": "祭祀.解除.破屋.坏垣.余事勿取" }, "d1011": { "j": "祈福.安葬", "y": "订盟.纳采.会亲友.安机械.纳财" }, "d1012": { "j": "斋醮.安门", "y": "嫁娶.订盟.纳采.出行.开市" }, "d1013": { "j": "诸事不宜", "y": "祭祀.塞穴.余事勿取" }, "d1014": { "j": "嫁娶.作灶.修坟.安门.入宅", "y": "祭祀.祈福.求嗣.开光.开市" }, "d1015": { "j": "嫁娶.开光.会亲友.掘井.安门", "y": "祭祀.解除.裁衣.理髮.安床" }, "d1016": { "j": "动土.伐木.作梁.行丧.安葬", "y": "祭祀.出行.裁衣.冠笄.会亲友" }, "d1017": { "j": "安葬.修坟.作灶.破土.造庙", "y": "祭祀.祈福.求嗣.开光.出行" }, "d1018": { "j": "嫁娶.作灶.出火.出行.入宅", "y": "开市.交易.立券.纳财.会亲友" }, "d1019": { "j": "诸事不宜", "y": "造畜稠.平治道涂.余事勿取" }, "d1020": { "j": "余事勿取", "y": "入殓.破土.安葬.启钻.除服" }, "d1021": { "j": "余事勿取", "y": "祭祀.入殓.移柩.开生坟.破土" }, "d1022": { "j": "诸事不宜", "y": "祭祀.解除.破屋.坏垣.余事勿取" }, "d1023": { "j": "上樑.作灶.伐木.出行.安葬", "y": "嫁娶.求嗣.纳采.进人口.纳财" }, "d1024": { "j": "纳畜.伐木.置产.作梁.行丧", "y": "嫁娶.祭祀.开市.开光.出行" }, "d1025": { "j": "安葬.开市.修坟.立碑", "y": "嫁娶.祭祀.作灶.纳财" }, "d1026": { "j": "安床.安葬", "y": "嫁娶.祭祀.祈福.求嗣.开光" }, "d1027": { "j": "开光.栽种", "y": "嫁娶.祭祀.祈福.求嗣.动土" }, "d1028": { "j": "伐木.行丧.破土.嫁娶.安葬", "y": "祭祀.祈福.求嗣.开光.出行" }, "d1029": { "j": "嫁娶.安葬.行丧.词讼.造桥", "y": "祭祀.开光.出行.解除.理髮" }, "d1030": { "j": "开市.入宅.出行.嫁娶.修坟", "y": "纳采.订盟.会亲友.沐浴.理髮" }, "d1031": { "j": "嫁娶.开市.交易.入宅.入学", "y": "解除.祭祀.修饰垣墙.平治道涂.造畜稠" }, "d1101": { "j": "开市.入宅.祭祀.置产.补垣", "y": "入殓.破土.启钻.安葬.除服" }, "d1102": { "j": "入宅.移徙.掘井.理髮.伐木", "y": "嫁娶.祭祀.祈福.求嗣.开光" }, "d1103": { "j": "嫁娶.入宅.上樑.出行.安葬", "y": "祭祀.沐浴.破屋.坏垣.余事勿取" }, "d1104": { "j": "祈福.斋醮.纳采.订盟.嫁娶", "y": "祭祀.求嗣.冠笄.进人口.会亲友" }, "d1105": { "j": "探病.纳畜.伐木.起基.作梁", "y": "嫁娶.纳采.订盟.开市.交易" }, "d1106": { "j": "嫁娶.开市.开池.开厕.破土", "y": "祭祀.冠笄.移徙.会亲友.纳财" }, "d1107": { "j": "诸事不宜", "y": "沐浴.扫舍.余事勿取" }, "d1108": { "j": "诸事不宜", "y": "诸事不宜" }, "d1109": { "j": "入宅.作灶", "y": "祈福.斋醮.出行.订盟.纳采" }, "d1110": { "j": "嫁娶.动土.安葬.作灶", "y": "祭祀.沐浴.出行.冠笄.进人口" }, "d1111": { "j": "开市", "y": "祭祀.祈福.斋醮.塑绘.开光" }, "d1112": { "j": "诸事不宜", "y": "诸事不宜" }, "d1113": { "j": "栽种.破土.置产.祭祀.嫁娶", "y": "开市.交易.立券.挂匾.纳财" }, "d1114": { "j": "", "y": "嫁娶.祭祀.祈福.求嗣.开光" }, "d1115": { "j": "嫁娶.开市.出火.栽种.破土", "y": "开光.解除.拆卸.修造.动土" }, "d1116": { "j": "诸事不宜", "y": "破屋.坏垣.余事勿取" }, "d1117": { "j": "探病.安葬", "y": "嫁娶.祭祀.开光.出火.出行" }, "d1118": { "j": "入宅.作灶.词讼.移徙.出行", "y": "祭祀.祈福.求嗣.开光.解除" }, "d1119": { "j": "安床.开市.交易.出货财.安葬", "y": "祭祀.沐浴.结网.移柩.入殓" }, "d1120": { "j": "余事勿取", "y": "解除.余事勿取" }, "d1121": { "j": "入宅.移徙.嫁娶.掘井.作灶", "y": "安床.祭祀.开池.补垣.入殓" }, "d1122": { "j": "余事勿取", "y": "祭祀.沐浴.余事勿取" }, "d1123": { "j": "置产.安床", "y": "嫁娶.开光.出行.解除.出火" }, "d1124": { "j": "嫁娶.冠笄.出行.祈福.安葬", "y": "开光.裁衣.安门.会亲友.安床" }, "d1125": { "j": "祈福.祭祀.伐木.掘井.作灶", "y": "嫁娶.开光.出行.出火.拆卸" }, "d1126": { "j": "栽种.掘井.置产", "y": "嫁娶.祭祀.祈福.求嗣.开光" }, "d1127": { "j": "嫁娶.动土.造船.开池.掘井", "y": "祭祀.理髮.针灸.解除.进人口" }, "d1128": { "j": "嫁娶.安葬", "y": "破屋.坏垣.求医.治病.余事勿取" }, "d1129": { "j": "上樑.开仓.出货财.盖屋.造船", "y": "纳采.订盟.嫁娶.祭祀.祈福" }, "d1130": { "j": "嫁娶.进人口.入宅.移徙.出火", "y": "祭祀.祈福.求嗣.开光.解除" }, "d1201": { "j": "嫁娶.入宅.开市.安床.破土", "y": "沐浴.扫舍.捕捉.畋猎.解除" }, "d1202": { "j": "伐木.上樑.修造.入殓.理髮", "y": "嫁娶.冠笄.祭祀.祈福.求嗣" }, "d1203": { "j": "置产.造船.开光.掘井.作灶", "y": "合帐.裁衣.嫁娶.安床.入殓" }, "d1204": { "j": "开市.动土.破土.嫁娶.安葬", "y": "解除.修饰垣墙.冠笄.出行.余事勿取" }, "d1205": { "j": "作灶.经络.安床", "y": "纳采.订盟.嫁娶.祭祀.祈福" }, "d1206": { "j": "祈福.谢土.安葬.上樑.作灶", "y": "祭祀.塑绘.理髮.会亲友.牧养" }, "d1207": { "j": "嫁娶.祈福", "y": "开市.立券.开光.解除.安机械" }, "d1208": { "j": "诸事不宜", "y": "平治道涂.余事勿取" }, "d1209": { "j": "开市.嫁娶", "y": "求嗣.斋醮.塑绘.订盟.纳采" }, "d1210": { "j": "开市.安葬", "y": "嫁娶.订盟.纳采.祭祀.祈福" }, "d1211": { "j": "诸事不宜", "y": "治病.破屋.坏垣.余事勿取" }, "d1212": { "j": "造桥.安门.理髮.造庙.栽种", "y": "祭祀.祈福.求嗣.斋醮.开光" }, "d1213": { "j": "诸事不宜", "y": "解除.坏垣.余事勿取" }, "d1214": { "j": "伐木.纳畜.上樑.入宅.作灶", "y": "沐浴.理髮.扫舍" }, "d1215": { "j": "嫁娶.出行.赴任.盖屋.入殓", "y": "祭祀.开光.祈福.解除.作梁" }, "d1216": { "j": "嫁娶.祈福.掘井.行丧.安葬", "y": "作梁.修造.动土.安门.作灶" }, "d1217": { "j": "余事勿取", "y": "安葬.启钻.移柩.入殓.除服" }, "d1218": { "j": "作灶.塑绘.行丧.词讼.伐木", "y": "嫁娶.祭祀.祈福.求嗣.出行" }, "d1219": { "j": "入宅.移徙.作灶.祈福.祭祀", "y": "理髮.开光.解除.拆卸.修造" }, "d1220": { "j": "诸事不宜", "y": "祭祀.修饰垣墙.余事勿取" }, "d1221": { "j": "嫁娶.开市.作灶.置产.作梁", "y": "入宅.安床.开光.祭祀.出火" }, "d1222": { "j": "诸事不宜", "y": "祭祀.解除.余事勿取" }, "d1223": { "j": "诸事不宜", "y": "破屋.坏垣.祭祀.沐浴.余事勿取" }, "d1224": { "j": "安门.栽种.作灶.治病", "y": "安床.祭祀.祈福.求嗣.冠笄" }, "d1225": { "j": "诸事不宜", "y": "解除.扫舍.余事勿取" }, "d1226": { "j": "伐木.纳畜.破土.安葬.开生坟", "y": "祭祀.开光.理髮.整手足甲.安床" }, "d1227": { "j": "嫁娶.进人口.安葬.出行.赴任", "y": "祭祀.祈福.求嗣.开光.拆卸" }, "d1228": { "j": "移徙.入宅.嫁娶.祈福.开光", "y": "沐浴.冠笄.补垣.塞穴" }, "d1229": { "j": "斋醮.入宅.修造.动土.破土", "y": "交易.进人口.祭祀.沐浴.捕捉" }, "d1230": { "j": "斋醮.伐木.作梁.安葬.行丧", "y": "嫁娶.纳采.订盟.造车器.祭祀" }, "d1231": { "j": "嫁娶.动土.破土.祈福.出火", "y": "纳采.订盟.开市.交易.立券" } } ukui-panel-4.0.0.4/plugin-calendar/html/hlnew/hl2011.json0000644000175000017500000027573014560306203021314 0ustar fengfeng{ "d1221": { "y": "祭祀.开光.祈福.解除.作梁.动土.安床.掘井.栽种.纳畜.破土.移柩.", "j": "嫁娶.出行.赴任.造屋.入殓.入宅.移徙.出火.进人口.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "开", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d1121": { "y": "开光.解除.拆卸.修造.动土.安床.纳畜.安葬.启攒.入殓.", "j": "嫁娶.开市.出火.栽种.破土.动土.入宅.移徙.安香.分居.掘井.作灶.", "c": "生肖冲狗", "s": "煞南", "ch": "执", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d1201": { "y": "嫁娶.开光.出行.出火.拆卸.修造.动土.入宅.移徙.安床.上梁.开市.交易.立券.栽种.", "j": "祈福.祭祀.伐木.掘井.作灶.谢土.", "c": "生肖冲猴", "s": "煞北", "ch": "平", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d1202": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出火.出行.拆卸.开市.交易.立券.挂匾.伐木.入宅.移徙.安床.安葬.", "j": "栽种.掘井.置产.", "c": "生肖冲鸡", "s": "煞西", "ch": "定", "zc": "正冲正冲乙酉", "ts": "厨灶门外正北" }, "d1203": { "y": "祭祀.理发.针灸.解除.进人口.整手足甲.", "j": "嫁娶.动土.造船.开池.掘井.出行.修造.入宅.上梁.移徙.安葬.破土.作灶.开市.", "c": "生肖冲狗", "s": "煞南", "ch": "执", "zc": "正冲正冲丙戌", "ts": "仓库栖外正北" }, "d1204": { "y": "破屋.坏垣.求医.治病.余事勿取.", "j": "嫁娶.安葬.", "c": "生肖冲猪", "s": "煞东", "ch": "破", "zc": "正冲正冲丁亥", "ts": "占房床房内北" }, "d1205": { "y": "纳采.订盟.嫁娶.祭祀.祈福.雕刻.移徙.开市.入宅.出行.动土.会亲友.入学.修造.动土.起基.安门.安床.造庙.解除.纳财.开池.造畜椆栖.牧养.牧养.", "j": "上梁.开仓.出货财.造屋.造船.", "c": "生肖冲鼠", "s": "煞北", "ch": "危", "zc": "正冲正冲戊子", "ts": "占门碓房内北" }, "d1206": { "y": "祭祀.祈福.求嗣.开光.解除.伐木.拆卸.修造.栽种.纳畜.安葬.修坟.立碑.", "j": "嫁娶.进人口.入宅.移徙.出火.出行.", "c": "生肖冲牛", "s": "煞西", "ch": "成", "zc": "正冲正冲己丑", "ts": "碓磨厕房内北" }, "d1207": { "y": "塑绘.斋醮.出行.拆卸.解除.修造.移徙.造船.入殓.除服.成服.移柩.启攒.修坟.立碑.谢土.", "j": "", "c": "生肖冲虎", "s": "煞南", "ch": "成", "zc": "正冲正冲庚寅", "ts": "厨灶炉房内北" }, "d1208": { "y": "祭祀.沐浴.安床.纳财.畋猎.捕捉.", "j": "开市.破土.", "c": "生肖冲兔", "s": "煞东", "ch": "收", "zc": "正冲正冲辛卯", "ts": "仓库门房内北" }, "d1209": { "y": "订盟.纳采.祭祀.祈福.修造.动土.上梁.破土.", "j": "嫁娶.作灶.", "c": "生肖冲龙", "s": "煞北", "ch": "开", "zc": "正冲正冲壬辰", "ts": "房床栖房内南" }, "d1210": { "y": "出行.沐浴.理发.补垣.塞穴.", "j": "入宅.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "闭", "zc": "正冲正冲癸巳", "ts": "占门床房内南" }, "d1211": { "y": "教牛马.余事勿取.", "j": "入宅.动土.破土.余事勿取.", "c": "生肖冲马", "s": "煞南", "ch": "建", "zc": "正冲正冲甲午", "ts": "占碓磨房内南" }, "d1212": { "y": "嫁娶.出行.求医.治病.祭祀.祈福.上梁.纳畜.", "j": "开市.安葬.", "c": "生肖冲羊", "s": "煞东", "ch": "除", "zc": "正冲正冲乙未", "ts": "厨灶厕房内南" }, "d1213": { "y": "开市.立券.开光.解除.安机械.上梁.启攒.安葬.", "j": "嫁娶.祈福.", "c": "生肖冲猴", "s": "煞北", "ch": "满", "zc": "正冲正冲丙申", "ts": "仓库炉房内南" }, "d1214": { "y": "平治道涂.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鸡", "s": "煞西", "ch": "平", "zc": "正冲正冲丁酉", "ts": "房床门房内南" }, "d1215": { "y": "求嗣.斋醮.塑绘.订盟.纳采.出火.拆卸.修造.动土.造桥.安机械.栽种.纳畜.牧养.入殓.除服.成服.移柩.破土.安葬.", "j": "开市.嫁娶.", "c": "生肖冲狗", "s": "煞南", "ch": "定", "zc": "正冲正冲戊戌", "ts": "门鸡栖房内东" }, "d1216": { "y": "嫁娶.订盟.纳采.祭祀.祈福.修造.动土.移徙.入宅.", "j": "开市.安葬.", "c": "生肖冲猪", "s": "煞东", "ch": "执", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d1217": { "y": "治病.破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鼠", "s": "煞北", "ch": "破", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d1218": { "y": "祭祀.祈福.求嗣.斋醮.开光.入学.订盟.冠笄.伐木.修造.动土.起基.放水.交易.开池.", "j": "造桥.安门.理发.造庙.栽种.作灶.", "c": "生肖冲牛", "s": "煞西", "ch": "危", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d1219": { "y": "解除.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲虎", "s": "煞南", "ch": "成", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" }, "d1220": { "y": "沐浴.理发.扫舍.", "j": "伐木.纳畜.上梁.入宅.作灶.造畜椆栖.嫁娶.安葬.作梁.造船.安门.", "c": "生肖冲兔", "s": "煞东", "ch": "收", "zc": "正冲正冲癸卯", "ts": "占大门外东北" }, "d1222": { "y": "诸事不宜.作梁.修造.动土.安门.作灶.塞穴.开池.作厕.筑堤.补垣.栽种.", "j": "嫁娶.祈福.掘井.行丧.安葬.安床.", "c": "生肖冲蛇", "s": "煞西", "ch": "闭", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d1223": { "y": "安葬.启攒.移柩.入殓.除服.成服.", "j": "余事勿取.", "c": "生肖冲马", "s": "煞南", "ch": "建", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d1224": { "y": "嫁娶.祭祀.祈福.求嗣.出行.出火.拆卸.开市.交易.立券.挂匾.入宅.移徙.安床.栽种.", "j": "作灶.塑绘.行丧.词讼.伐木.安葬.", "c": "生肖冲羊", "s": "煞东", "ch": "除", "zc": "正冲正冲丁未", "ts": "房床厕外东北" }, "d1225": { "y": "理发.开光.解除.拆卸.修造.安葬.开市.交易.立券.挂匾.安床.栽种.", "j": "入宅.移徙.作灶.祈福.祭祀.嫁娶.谢土.掘井.造屋.探病.", "c": "生肖冲猴", "s": "煞北", "ch": "满", "zc": "正冲正冲戊申", "ts": "占门炉外东北" }, "d1226": { "y": "祭祀.修饰垣墙.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鸡", "s": "煞西", "ch": "平", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d1227": { "y": "入宅.安床.开光.祭祀.出火.拆卸.动土.挂匾.入殓.破土.安葬.纳畜.", "j": "嫁娶.开市.作灶.置产.作梁.伐木.", "c": "生肖冲狗", "s": "煞南", "ch": "定", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d1228": { "y": "祭祀.解除.余事勿取.", "j": "诸事不宜.", "c": "生肖冲猪", "s": "煞东", "ch": "执", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d1229": { "y": "破屋.坏垣.祭祀.沐浴.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鼠", "s": "煞北", "ch": "破", "zc": "正冲正冲壬子", "ts": "房床碓外正东" }, "d1230": { "y": "安床.祭祀.祈福.求嗣.冠笄.伐木.架马.动土.开池.作厕.结网.入殓.除服.成服.", "j": "安门.栽种.作灶.治病.", "c": "生肖冲牛", "s": "煞西", "ch": "危", "zc": "正冲正冲癸丑", "ts": "占门厕外正东" }, "d1231": { "y": "解除.扫舍.余事勿取.", "j": "诸事不宜.", "c": "生肖冲虎", "s": "煞南", "ch": "成", "zc": "正冲正冲甲寅", "ts": "碓磨炉外东南" }, "d1101": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出行.解除.出火.进人口.开市.交易.立券.挂匾.纳财.入宅.移徙.栽种.破土.谢土.", "j": "安床.安葬.", "c": "生肖冲虎", "s": "煞南", "ch": "开", "zc": "正冲正冲甲寅", "ts": "碓磨炉外东南" }, "d1103": { "y": "祭祀.祈福.求嗣.开光.出行.解除.上梁.入宅.移徙.安床.安门.纳财.纳畜.造畜椆栖.", "j": "伐木.行丧.破土.嫁娶.安葬.开渠.", "c": "生肖冲龙", "s": "煞北", "ch": "建", "zc": "正冲正冲丙辰", "ts": "仓库栖外东南" }, "d1102": { "y": "嫁娶.祭祀.祈福.求嗣.动土.安床.扫舍.入殓.移柩.破土.启攒.安葬.作灶.整手足甲.补垣.除服.成服.", "j": "开光.栽种.", "c": "生肖冲兔", "s": "煞东", "ch": "闭", "zc": "正冲正冲乙卯", "ts": "厨灶门外东南" }, "d1104": { "y": "祭祀.开光.出行.解除.理发.伐木.出火.拆卸.上梁.合脊.安床.造畜椆栖.", "j": "嫁娶.安葬.行丧.词讼.造桥.作灶.破土.动土.", "c": "生肖冲蛇", "s": "煞西", "ch": "除", "zc": "正冲正冲丁巳", "ts": "占房床外东南" }, "d1105": { "y": "纳采.订盟.会亲友.沐浴.理发.裁衣.冠笄.安床.除服.成服.启攒.移柩.安葬.会亲友.开生坟.", "j": "开市.入宅.出行.嫁娶.修坟.祈福.动土.入宅.安门.谢土.上梁.", "c": "生肖冲马", "s": "煞南", "ch": "满", "zc": "正冲正冲戊午", "ts": "占门碓外东南" }, "d1106": { "y": "解除.祭祀.修饰垣墙.平治道涂.造畜椆栖.余事勿取.", "j": "嫁娶.开市.交易.入宅.入学.安葬.", "c": "生肖冲羊", "s": "煞东", "ch": "平", "zc": "正冲正冲己未", "ts": "碓磨厕外东南" }, "d1107": { "y": "入殓.破土.启攒.安葬.除服.成服.余事勿取.", "j": "开市.入宅.祭祀.置产.补垣.塞穴.", "c": "生肖冲猴", "s": "煞北", "ch": "定", "zc": "正冲正冲庚申", "ts": "厨灶炉外正南" }, "d1108": { "y": "祭祀.祈福.订盟.纳采.裁衣.拆卸.修造.动土.起基.安床.移徙.入宅.安香.入殓.移柩.安葬.谢土.赴任.进人口.会亲友.", "j": "作灶.治病.", "c": "生肖冲鸡", "s": "煞西", "ch": "定", "zc": "正冲正冲辛酉", "ts": "仓库门外正南" }, "d1109": { "y": "祭祀.塑绘.开光.订盟.纳采.嫁娶.安床.进人口.入殓.除服.成服.移柩.启攒.安葬.立碑.", "j": "开市.交易.破土.作灶.", "c": "生肖冲狗", "s": "煞南", "ch": "执", "zc": "正冲正冲壬戌", "ts": "房床栖外正南" }, "d1110": { "y": "祭祀.解除.破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲猪", "s": "煞东", "ch": "破", "zc": "正冲正冲癸亥", "ts": "占门床外正南" }, "d1111": { "y": "祭祀.解除.祈福.开光.塑绘.斋醮.订盟.纳采.裁衣.冠笄.拆卸.修造.动土.入殓.除服.成服.移柩.启攒.安床.赴任.出行.移徙.竖柱.上梁.伐木.栽种.破土.安葬.纳畜.", "j": "造屋.治病.", "c": "生肖冲鼠", "s": "煞北", "ch": "危", "zc": "正冲正冲甲子", "ts": "占碓磨外正南" }, "d1112": { "y": "祭祀.祈福.订盟.纳采.裁衣.合帐.冠笄.安机械.安床.造畜椆栖.入殓.移柩.启攒.安葬.谢土.除服.成服.会亲友.竖柱.上梁.经络.开市.交易.立券.纳财.纳畜.筑堤.", "j": "嫁娶.入宅.治病.赴任.", "c": "生肖冲牛", "s": "煞西", "ch": "成", "zc": "正冲正冲乙丑", "ts": "厨灶厕外西南" }, "d1113": { "y": "沐浴.扫舍.余事勿取.", "j": "诸事不宜.", "c": "生肖冲虎", "s": "煞南", "ch": "收", "zc": "正冲正冲丙寅", "ts": "仓库炉外西南" }, "d1114": { "y": "诸事不宜.", "j": "诸事不宜.", "c": "生肖冲兔", "s": "煞东", "ch": "开", "zc": "正冲正冲丁卯", "ts": "房床门外西南" }, "d1115": { "y": "祈福.斋醮.出行.订盟.纳采.入殓.移柩.破土.安葬.立碑.结网.", "j": "入宅.作灶.", "c": "生肖冲龙", "s": "煞北", "ch": "闭", "zc": "正冲正冲戊辰", "ts": "门鸡栖外西南" }, "d1116": { "y": "祭祀.沐浴.出行.冠笄.进人口.余事勿取.", "j": "嫁娶.动土.安葬.作灶.", "c": "生肖冲蛇", "s": "煞西", "ch": "建", "zc": "正冲正冲己巳", "ts": "碓磨床外西南" }, "d1117": { "y": "祭祀.祈福.斋醮.塑绘.开光.订盟.纳采.裁衣.冠笄.嫁娶.拆卸.入宅.安香.入殓.移柩.理发.安葬.修坟.谢土.赴任.移徙.沐浴.治病.破土.启攒.整手足甲.入学.作梁.", "j": "开市.", "c": "生肖冲马", "s": "煞南", "ch": "除", "zc": "正冲正冲庚午", "ts": "厨灶碓外西南" }, "d1118": { "y": "诸事不宜.", "j": "诸事不宜.", "c": "生肖冲羊", "s": "煞东", "ch": "满", "zc": "正冲正冲辛未", "ts": "仓库厕外西南" }, "d1119": { "y": "开市.交易.立券.挂匾.纳财.开光.出行.入宅.移徙.安床.纳畜.入殓.移柩.安葬.", "j": "栽种.破土.置产.祭祀.嫁娶.动土.作灶.祈福.", "c": "生肖冲猴", "s": "煞北", "ch": "平", "zc": "正冲正冲壬申", "ts": "房床厕外正南" }, "d1120": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出行.解除.出火.出行.拆卸.进人口.入宅.移徙.安床.栽种.动土.修造.纳畜.入殓.安葬.立碑.除服.成服.", "j": "", "c": "生肖冲鸡", "s": "煞西", "ch": "定", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d1122": { "y": "破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲猪", "s": "煞东", "ch": "破", "zc": "正冲正冲乙亥", "ts": "厨灶床外正西" }, "d1123": { "y": "嫁娶.祭祀.开光.出火.出行.拆卸.修造.动土.解除.开市.交易.立券.挂匾.纳财.入宅.移徙.安床.栽种.纳畜.", "j": "探病.安葬.", "c": "生肖冲鼠", "s": "煞北", "ch": "危", "zc": "正冲正冲丙子", "ts": "仓库碓外西北" }, "d1124": { "y": "祭祀.祈福.求嗣.开光.解除.理发.会亲友.栽种.纳畜.牧养.安葬.修坟.立碑.启攒.", "j": "入宅.作灶.词讼.移徙.出行.赴任.", "c": "生肖冲牛", "s": "煞西", "ch": "成", "zc": "正冲正冲丁丑", "ts": "房床厕外西北" }, "d1126": { "y": "解除.余事勿取.", "j": "余事勿取.", "c": "生肖冲兔", "s": "煞东", "ch": "开", "zc": "正冲正冲己卯", "ts": "占门炉外西北" }, "d1125": { "y": "祭祀.沐浴.结网.移柩.入殓.除服.成服.", "j": "安床.开市.交易.出货财.安葬.修坟.嫁娶.作灶.", "c": "生肖冲虎", "s": "煞南", "ch": "收", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d1127": { "y": "安床.祭祀.开池.补垣.入殓.移柩.破土.启攒.", "j": "入宅.移徙.嫁娶.掘井.作灶.出火.进人口.开市.开光.", "c": "生肖冲龙", "s": "煞北", "ch": "闭", "zc": "正冲正冲庚辰", "ts": "厨灶栖外西北" }, "d1128": { "y": "祭祀.沐浴.余事勿取.", "j": "余事勿取.", "c": "生肖冲蛇", "s": "煞西", "ch": "建", "zc": "正冲正冲辛巳", "ts": "仓库床外西北" }, "d1129": { "y": "嫁娶.开光.出行.解除.出火.拆卸.修造.进人口.动土.入宅.移徙.栽种.纳畜.掘井.安葬.除服.成服.", "j": "置产.安床.", "c": "生肖冲马", "s": "煞南", "ch": "除", "zc": "正冲正冲壬午", "ts": "房床碓外正北" }, "d1130": { "y": "开光.裁衣.安门.会亲友.安床.结网.理发.", "j": "嫁娶.冠笄.出行.祈福.安葬.伐木.入宅.移徙.出火.栽种.动土.上梁.", "c": "生肖冲羊", "s": "煞东", "ch": "满", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d1131": { "y": "嫁娶.开光.出行.出火.拆卸.修造.动土.入宅.移徙.安床.上梁.开市.交易.立券.栽种.", "j": "祈福.祭祀.伐木.掘井.作灶.谢土.", "c": "生肖冲猴", "s": "煞北", "ch": "平", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d1001": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出行.出火.拆卸.修造.动土.进人口.入宅.移徙.安床.开市.交易.立券.挂匾.栽种.纳畜.入殓.安葬.除服.成服.", "j": "", "c": "生肖冲羊", "s": "煞东", "ch": "定", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d1003": { "y": "祭祀.治病.破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鸡", "s": "煞西", "ch": "破", "zc": "正冲正冲乙酉", "ts": "厨灶门外正北" }, "d1002": { "y": "解除.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲猴", "s": "煞北", "ch": "执", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d1005": { "y": "开市.交易.立券.纳财.挂匾.栽种.祭祀.祈福.开光.拆卸.动土.安床.", "j": "嫁娶.破土.进人口.出行.入宅.移徙.出火.纳畜.词讼.安葬.", "c": "生肖冲猪", "s": "煞东", "ch": "成", "zc": "正冲正冲丁亥", "ts": "占房床房内北" }, "d1004": { "y": "嫁娶.纳采.订盟.祭祀.开光.出行.理发.作梁.出火.拆卸.修造.动土.进人口.入宅.移徙.安床.移徙.拆卸.挂匾.栽种.纳畜.破土.安葬.入殓.除服.成服.", "j": "开市.掘井.开渠.造桥.造船.", "c": "生肖冲狗", "s": "煞南", "ch": "危", "zc": "正冲正冲丙戌", "ts": "仓库栖外正北" }, "d1006": { "y": "嫁娶.祭祀.理发.进人口.作灶.移柩.冠笄.会亲友.", "j": "开仓.出货财.伐木.纳畜.开市.上梁.造屋.破土.启攒.栽种.", "c": "生肖冲鼠", "s": "煞北", "ch": "收", "zc": "正冲正冲戊子", "ts": "占门碓房内北" }, "d1007": { "y": "祭祀.修坟.除服.成服.启攒.移柩.余事勿取.", "j": "开市.入宅.嫁娶.动土.破土.安葬.", "c": "生肖冲牛", "s": "煞西", "ch": "开", "zc": "正冲正冲己丑", "ts": "碓磨厕房内北" }, "d1008": { "y": "祭祀.祈福.斋醮.沐浴.竖柱.订盟.纳采.嫁娶.拆卸.入宅.移柩.启攒.谢土.赴任.出火.纳畜.", "j": "作灶.入殓.安葬.安床.", "c": "生肖冲虎", "s": "煞南", "ch": "开", "zc": "正冲正冲庚寅", "ts": "厨灶炉房内北" }, "d1010": { "y": "作灶.造畜椆栖.", "j": "行丧.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "建", "zc": "正冲正冲壬辰", "ts": "房床栖房内南" }, "d1009": { "y": "嫁娶.祭祀.安机械.入殓.破土.安葬.", "j": "动土.上梁.", "c": "生肖冲兔", "s": "煞东", "ch": "闭", "zc": "正冲正冲辛卯", "ts": "仓库门房内北" }, "d1011": { "y": "沐浴.理发.入学.习艺.进人口.", "j": "嫁娶.入宅.", "c": "生肖冲蛇", "s": "煞西", "ch": "除", "zc": "正冲正冲癸巳", "ts": "占门床房内南" }, "d1012": { "y": "开光.针灸.会亲友.启攒.安葬.", "j": "开市.动土.破土.", "c": "生肖冲马", "s": "煞南", "ch": "满", "zc": "正冲正冲甲午", "ts": "占碓磨房内南" }, "d1013": { "y": "祭祀.结网.造畜椆栖.余事勿取.", "j": "余事勿取.", "c": "生肖冲羊", "s": "煞东", "ch": "平", "zc": "正冲正冲乙未", "ts": "厨灶厕房内南" }, "d1015": { "y": "嫁娶.订盟.纳采.出行.祭祀.祈福.动土.移徙.入宅.破土.安葬.", "j": "开市.赴任.", "c": "生肖冲鸡", "s": "煞西", "ch": "执", "zc": "正冲正冲丁酉", "ts": "房床门房内南" }, "d1014": { "y": "入殓.除服.成服.移柩.破土.启攒.安葬.", "j": "移徙.入宅.", "c": "生肖冲猴", "s": "煞北", "ch": "定", "zc": "正冲正冲丙申", "ts": "仓库炉房内南" }, "d1016": { "y": "祭祀.解除.破屋.坏垣.余事勿取.", "j": "余事勿取.", "c": "生肖冲狗", "s": "煞南", "ch": "破", "zc": "正冲正冲戊戌", "ts": "门鸡栖房内东" }, "d1017": { "y": "订盟.纳采.会亲友.安机械.纳财.牧养.", "j": "祈福.安葬.", "c": "生肖冲猪", "s": "煞东", "ch": "危", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d1018": { "y": "嫁娶.订盟.纳采.出行.开市.祭祀.祈福.动土.移徙.入宅.破土.安葬.", "j": "斋醮.安门.", "c": "生肖冲鼠", "s": "煞北", "ch": "成", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d1019": { "y": "祭祀.塞穴.余事勿取.", "j": "诸事不宜.", "c": "生肖冲牛", "s": "煞西", "ch": "收", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d1020": { "y": "祭祀.祈福.求嗣.开光.开市.出行.解除.动土.起基.置产.栽种.", "j": "嫁娶.作灶.修坟.安门.入宅.立碑.安葬.安床.", "c": "生肖冲虎", "s": "煞南", "ch": "开", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" }, "d1022": { "y": "祭祀.出行.裁衣.冠笄.会亲友.造畜椆栖.嫁娶.竖柱.上梁.移徙.纳财.纳畜.", "j": "动土.伐木.作梁.行丧.安葬.开生坟.", "c": "生肖冲龙", "s": "煞北", "ch": "建", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d1023": { "y": "祭祀.祈福.求嗣.开光.出行.解除.移徙.伐木.安床.纳畜.出火.拆卸.", "j": "安葬.修坟.作灶.破土.造庙.动土.嫁娶.纳采.", "c": "生肖冲蛇", "s": "煞西", "ch": "除", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d1024": { "y": "开市.交易.立券.纳财.会亲友.开光.理发.入殓.移柩.安葬.启攒.", "j": "嫁娶.作灶.出火.出行.入宅.移徙.安床.祈福.上梁.", "c": "生肖冲马", "s": "煞南", "ch": "满", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d1026": { "y": "入殓.破土.安葬.启攒.除服.成服.余事勿取.", "j": "余事勿取.", "c": "生肖冲猴", "s": "煞北", "ch": "定", "zc": "正冲正冲戊申", "ts": "占门炉外东北" }, "d1025": { "y": "造畜椆栖.平治道涂.余事勿取.", "j": "诸事不宜.", "c": "生肖冲羊", "s": "煞东", "ch": "平", "zc": "正冲正冲丁未", "ts": "房床厕外东北" }, "d1028": { "y": "祭祀.解除.破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲狗", "s": "煞南", "ch": "破", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d1027": { "y": "祭祀.入殓.移柩.开生坟.破土.启攒.安葬.除服.成服.余事勿取.", "j": "余事勿取.", "c": "生肖冲鸡", "s": "煞西", "ch": "执", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d1029": { "y": "嫁娶.求嗣.纳采.进人口.纳财.结网.纳畜.牧养.会亲友.", "j": "上梁.作灶.伐木.出行.安葬.安门.理发.", "c": "生肖冲猪", "s": "煞东", "ch": "危", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d1030": { "y": "嫁娶.祭祀.开市.开光.出行.入宅.移徙.出火.拆卸.修造.安床.", "j": "纳畜.伐木.置产.作梁.行丧.安葬.修坟.立碑.", "c": "生肖冲鼠", "s": "煞北", "ch": "成", "zc": "正冲正冲壬子", "ts": "房床碓外正东" }, "d1031": { "y": "嫁娶.祭祀.作灶.纳财.", "j": "安葬.开市.修坟.立碑.", "c": "生肖冲牛", "s": "煞西", "ch": "收", "zc": "正冲正冲癸丑", "ts": "占门厕外正东" }, "d0901": { "y": "祭祀.动土.筑堤.开池.会亲友.塞穴.入殓.移柩.破土.安葬.", "j": "开光.出行.修造.上梁.入宅.安门.作灶.裁衣.", "c": "生肖冲牛", "s": "煞西", "ch": "闭", "zc": "正冲正冲癸丑", "ts": "占门厕外正东" }, "d1021": { "y": "祭祀.解除.裁衣.理发.安床.作灶.造畜椆栖.放水.筑堤.补垣.塞穴.整手足甲.扫舍.", "j": "嫁娶.开光.会亲友.掘井.安门.栽种.", "c": "生肖冲兔", "s": "煞东", "ch": "闭", "zc": "正冲正冲癸卯", "ts": "占大门外东北" }, "d0902": { "y": "祭祀.裁衣.安门.纳财.扫舍.出行.进人口.作灶.纳畜.造畜椆栖.", "j": "安床.动土.安葬.开生坟.合寿木.", "c": "生肖冲虎", "s": "煞南", "ch": "建", "zc": "正冲正冲甲寅", "ts": "碓磨炉外东南" }, "d0903": { "y": "祭祀.解除.拆卸.修造.动土.起基.上梁.安床.安门.开渠.开池.入殓.破土.启攒.", "j": "嫁娶.出行.进人口.作灶.入宅.移徙.栽种.赴任.", "c": "生肖冲兔", "s": "煞东", "ch": "除", "zc": "正冲正冲乙卯", "ts": "厨灶门外东南" }, "d0905": { "y": "修饰垣墙.平治道涂.祭祀.沐浴.作灶.", "j": "嫁娶.词讼.治病.置产.作梁.祈福.安葬.栽种.伐木.安门.", "c": "生肖冲蛇", "s": "煞西", "ch": "平", "zc": "正冲正冲丁巳", "ts": "占房床外东南" }, "d0904": { "y": "纳采.订盟.开光.出行.解除.安香.出火.拆卸.入宅.移徙.修造.上梁.安床.栽种.纳畜.会亲友.安机械.经络.", "j": "伐木.谢土.行丧.祭祀.作灶.动土.破土.安葬.祈福.", "c": "生肖冲龙", "s": "煞北", "ch": "满", "zc": "正冲正冲丙辰", "ts": "仓库栖外东南" }, "d0906": { "y": "嫁娶.祭祀.祈福.求嗣.出火.出行.开光.解除.拆卸.修造.进人口.安香.交易.立券.入宅.移徙.安床.动土.破土.谢土.安葬.入殓.除服.成服.", "j": "斋醮.开市.开仓.作灶.造船.", "c": "生肖冲马", "s": "煞南", "ch": "定", "zc": "正冲正冲戊午", "ts": "占门碓外东南" }, "d0908": { "y": "祭祀.冠笄.会亲友.拆卸.起基.除服.成服.移柩.启攒.安葬.沐浴.捕捉.开光.塑绘.", "j": "作灶.祭祀.入宅.嫁娶.", "c": "生肖冲猴", "s": "煞北", "ch": "执", "zc": "正冲正冲庚申", "ts": "厨灶炉外正南" }, "d0907": { "y": "破土.安葬.移柩.入殓.祭祀.捕捉.除服.成服.余事勿取.", "j": "嫁娶.入宅.开市.交易.", "c": "生肖冲羊", "s": "煞东", "ch": "执", "zc": "正冲正冲己未", "ts": "碓磨厕外东南" }, "d0909": { "y": "祭祀.沐浴.破屋.坏垣.余事勿取.", "j": "移徙.入宅.出行.栽种.", "c": "生肖冲鸡", "s": "煞西", "ch": "破", "zc": "正冲正冲辛酉", "ts": "仓库门外正南" }, "d0912": { "y": "祭祀.裁衣.冠笄.嫁娶.纳婿.会亲友.除服.成服.移柩.捕捉.进人口.入殓.", "j": "移徙.入宅.作灶.安葬.", "c": "生肖冲鼠", "s": "煞北", "ch": "收", "zc": "正冲正冲甲子", "ts": "占碓磨外正南" }, "d0910": { "y": "祭祀.塑绘.开光.出行.解除.订盟.嫁娶.拆卸.起基.安床.入宅.开市.入殓.除服.成服.移柩.破土.谢土.挂匾.开柱眼.交易.", "j": "造桥.冠笄.造屋.掘井.", "c": "生肖冲狗", "s": "煞南", "ch": "危", "zc": "正冲正冲壬戌", "ts": "房床栖外正南" }, "d0913": { "y": "祭祀.诸事不宜.", "j": "入殓.安葬.开市.交易.", "c": "生肖冲牛", "s": "煞西", "ch": "开", "zc": "正冲正冲乙丑", "ts": "厨灶厕外西南" }, "d0915": { "y": "祭祀.出行.成服.除服.沐浴.入殓.", "j": "动土.冠笄.移徙.入宅.开市.竖柱.上梁.", "c": "生肖冲兔", "s": "煞东", "ch": "建", "zc": "正冲正冲丁卯", "ts": "房床门外西南" }, "d0911": { "y": "祭祀.赴任.动土.上梁.开光.塑绘.冠笄.拆卸.起基.安床.开市.立券.赴任.经络.", "j": "定磉.安葬.", "c": "生肖冲猪", "s": "煞东", "ch": "成", "zc": "正冲正冲癸亥", "ts": "占门床外正南" }, "d0916": { "y": "祭祀.沐浴.赴任.出行.余事勿取.", "j": "诸事不宜.", "c": "生肖冲龙", "s": "煞北", "ch": "除", "zc": "正冲正冲戊辰", "ts": "门鸡栖外西南" }, "d0914": { "y": "祭祀.裁衣.冠笄.嫁娶.安机械.拆卸.动土.起基.移徙.入宅.入殓.启攒.安葬.造仓.经络.", "j": "安床.开光.开市.交易.", "c": "生肖冲虎", "s": "煞南", "ch": "闭", "zc": "正冲正冲丙寅", "ts": "仓库炉外西南" }, "d0917": { "y": "诸事不宜.", "j": "诸事不宜.", "c": "生肖冲蛇", "s": "煞西", "ch": "满", "zc": "正冲正冲己巳", "ts": "碓磨床外西南" }, "d0918": { "y": "沐浴.入殓.移柩.除服.成服.破土.平治道涂.", "j": "嫁娶.移徙.入宅.开市.", "c": "生肖冲马", "s": "煞南", "ch": "平", "zc": "正冲正冲庚午", "ts": "厨灶碓外西南" }, "d0919": { "y": "嫁娶.祭祀.祈福.求嗣.沐浴.出火.出行.拆卸.修造.动土.进人口.开市.交易.立券.入宅.移徙.安床.栽种.纳畜.入殓.安葬.启攒.除服.成服.", "j": "", "c": "生肖冲羊", "s": "煞东", "ch": "定", "zc": "正冲正冲辛未", "ts": "仓库厕外西南" }, "d0922": { "y": "嫁娶.祈福.求嗣.出行.出火.拆卸.修造.动土.上梁.开光.进人口.开市.交易.立券.挂匾.安床.入宅.移徙.栽种.伐木.入殓.破土.除服.成服.", "j": "", "c": "生肖冲狗", "s": "煞南", "ch": "危", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d0920": { "y": "开光.解除.起基.动土.拆卸.上梁.立碑.修坟.安葬.破土.启攒.移柩.", "j": "嫁娶.出行.安床.作灶.祭祀.入宅.移徙.出火.进人口.置产.", "c": "生肖冲猴", "s": "煞北", "ch": "执", "zc": "正冲正冲壬申", "ts": "房床厕外正南" }, "d0923": { "y": "开市.交易.立券.挂匾.祭祀.开光.进人口.入宅.安床.出火.拆卸.修造.动土.栽种.", "j": "嫁娶.立碑.出行.伐木.安葬.行丧.移徙.纳畜.", "c": "生肖冲猪", "s": "煞东", "ch": "成", "zc": "正冲正冲乙亥", "ts": "厨灶床外正西" }, "d0924": { "y": "祭祀.理发.会亲友.进人口.嫁娶.针灸.入殓.移柩.", "j": "探病.开渠.安葬.伐木.作灶.入宅.", "c": "生肖冲鼠", "s": "煞北", "ch": "收", "zc": "正冲正冲丙子", "ts": "仓库碓外西北" }, "d0926": { "y": "嫁娶.出行.伐木.拆卸.修造.动土.移徙.安葬.破土.修坟.立碑.", "j": "掘井.祈福.安床.开市.入宅.挂匾.开光.", "c": "生肖冲虎", "s": "煞南", "ch": "闭", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d0925": { "y": "祭祀.立碑.修坟.启攒.除服.成服.余事勿取.", "j": "余事勿取.", "c": "生肖冲牛", "s": "煞西", "ch": "开", "zc": "正冲正冲丁丑", "ts": "房床厕外西北" }, "d0928": { "y": "嫁娶.祭祀.塑绘.开光.出行.解除.理发.整手足甲.动土.安床.开池.放水.扫舍.", "j": "伐木.行丧.作灶.作梁.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "除", "zc": "正冲正冲庚辰", "ts": "厨灶栖外西北" }, "d0927": { "y": "祭祀.出行.扫舍.余事勿取.", "j": "诸事不宜.", "c": "生肖冲兔", "s": "煞东", "ch": "建", "zc": "正冲正冲己卯", "ts": "占门炉外西北" }, "d0929": { "y": "开市.交易.立券.挂匾.开光.出行.入宅.移徙.安床.出火.上梁.", "j": "作灶.行丧.理发.乘船.嫁娶.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "满", "zc": "正冲正冲辛巳", "ts": "仓库床外西北" }, "d0930": { "y": "祭祀.沐浴.修饰垣墙.平治道涂.余事勿取.", "j": "诸事不宜.", "c": "生肖冲马", "s": "煞南", "ch": "平", "zc": "正冲正冲壬午", "ts": "房床碓外正北" }, "d0931": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出行.出火.拆卸.修造.动土.进人口.入宅.移徙.安床.开市.交易.立券.挂匾.栽种.纳畜.入殓.安葬.除服.成服.", "j": "", "c": "生肖冲羊", "s": "煞东", "ch": "定", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d0801": { "y": "解除.祭祀.理发.入殓.安葬.破土.", "j": "嫁娶.开市.出火.作灶.置产.斋醮.入宅.移徙.安门.", "c": "生肖冲马", "s": "煞南", "ch": "执", "zc": "正冲正冲壬午", "ts": "房床碓外正北" }, "d0921": { "y": "破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鸡", "s": "煞西", "ch": "破", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d0802": { "y": "破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲羊", "s": "煞东", "ch": "破", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d0803": { "y": "开市.交易.立券.纳财.动土.开光.出行.嫁娶.纳采.订盟.出行.纳财.入学.开仓.出货财.纳畜.牧养.栽种.破土.启攒.安葬.立碑.", "j": "入宅.移徙.作灶.祭祀.谢土.", "c": "生肖冲猴", "s": "煞北", "ch": "危", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d0805": { "y": "祭祀.冠笄.作灶.交易.纳财.栽种.结网.纳畜.牧养.进人口.", "j": "开渠.造船.安床.安葬.破土.出行.修坟.掘井.开市.开生坟.", "c": "生肖冲狗", "s": "煞南", "ch": "收", "zc": "正冲正冲丙戌", "ts": "仓库栖外正北" }, "d0804": { "y": "嫁娶.纳采.订盟.祭祀.祈福.求嗣.开光.出火.出行.拆卸.修造.动土.进人口.开市.交易.立券.挂匾.入宅.移徙.安床.栽种.入殓.破土.谢土.安葬.", "j": "掘井.伐木.纳畜.合寿木.", "c": "生肖冲鸡", "s": "煞西", "ch": "成", "zc": "正冲正冲乙酉", "ts": "厨灶门外正北" }, "d0806": { "y": "嫁娶.纳采.订盟.祭祀.祈福.求嗣.纳采.裁衣.冠笄.开光.安床.作梁.修造.动土.作灶.起基.上梁.造屋.纳畜.牧养.", "j": "移徙.栽种.出行.行丧.破土.安葬.词讼.", "c": "生肖冲猪", "s": "煞东", "ch": "开", "zc": "正冲正冲丁亥", "ts": "占房床房内北" }, "d0808": { "y": "嫁娶.祭祀.祈福.斋醮.作灶.移徙.入宅.", "j": "动土.破土.", "c": "生肖冲牛", "s": "煞西", "ch": "闭", "zc": "正冲正冲己丑", "ts": "碓磨厕房内北" }, "d0807": { "y": "经络.祭祀.沐浴.补垣.塞穴.除服.成服.移柩.入殓.启攒.立碑.", "j": "开光.治病.嫁娶.掘井.破土.安葬.", "c": "生肖冲鼠", "s": "煞北", "ch": "闭", "zc": "正冲正冲戊子", "ts": "占门碓房内北" }, "d0809": { "y": "嫁娶.出行.纳畜.祭祀.入殓.启攒.安葬.", "j": "作灶.动土.破土.", "c": "生肖冲虎", "s": "煞南", "ch": "建", "zc": "正冲正冲庚寅", "ts": "厨灶炉房内北" }, "d0812": { "y": "沐浴.修饰垣墙.平治道涂.余事勿取.", "j": "嫁娶.祈福.余事勿取.", "c": "生肖冲蛇", "s": "煞西", "ch": "平", "zc": "正冲正冲癸巳", "ts": "占门床房内南" }, "d0810": { "y": "订盟.纳采.祭祀.祈福.修造.动土.上梁.破土.安葬.", "j": "嫁娶.开市.", "c": "生肖冲兔", "s": "煞东", "ch": "除", "zc": "正冲正冲辛卯", "ts": "仓库门房内北" }, "d0813": { "y": "嫁娶.祭祀.祈福.斋醮.动土.移徙.入宅.", "j": "开市.安葬.", "c": "生肖冲马", "s": "煞南", "ch": "定", "zc": "正冲正冲甲午", "ts": "占碓磨房内南" }, "d0815": { "y": "沐浴.治病.破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲猴", "s": "煞北", "ch": "破", "zc": "正冲正冲丙申", "ts": "仓库炉房内南" }, "d0811": { "y": "订盟.纳采.出行.会亲友.修造.上梁.移徙.入宅.", "j": "开市.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "满", "zc": "正冲正冲壬辰", "ts": "房床栖房内南" }, "d0816": { "y": "嫁娶.订盟.纳采.出行.开市.祭祀.祈福.移徙.入宅.启攒.安葬.", "j": "动土.破土.", "c": "生肖冲鸡", "s": "煞西", "ch": "危", "zc": "正冲正冲丁酉", "ts": "房床门房内南" }, "d0814": { "y": "捕捉.结网.入殓.破土.安葬.", "j": "嫁娶.入宅.", "c": "生肖冲羊", "s": "煞东", "ch": "执", "zc": "正冲正冲乙未", "ts": "厨灶厕房内南" }, "d0817": { "y": "嫁娶.订盟.纳采.祭祀.祈福.求医.治病.动土.移徙.入宅.破土.安葬.", "j": "开光.针灸.", "c": "生肖冲狗", "s": "煞南", "ch": "成", "zc": "正冲正冲戊戌", "ts": "门鸡栖房内东" }, "d0818": { "y": "订盟.纳采.祭祀.祈福.安机械.作灶.纳畜.", "j": "动土.安葬.", "c": "生肖冲猪", "s": "煞东", "ch": "收", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d0819": { "y": "嫁娶.祭祀.祈福.求嗣.出行.动土.安床.掘井.破土.启攒.", "j": "入宅.作梁.安门.伐木.修造.上梁.入殓.造屋.", "c": "生肖冲鼠", "s": "煞北", "ch": "开", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d0822": { "y": "祭祀.解除.沐浴.理发.整手足甲.入殓.移柩.破土.安葬.扫舍.", "j": "嫁娶.会亲友.进人口.出行.入宅.移徙.赴任.作灶.", "c": "生肖冲兔", "s": "煞东", "ch": "除", "zc": "正冲正冲癸卯", "ts": "占大门外东北" }, "d0820": { "y": "嫁娶.祭祀.祈福.求嗣.出行.出火.拆卸.修造.移徙.动土.安床.入殓.破土.安葬.启攒.", "j": "造屋.开光.理发.造船.掘井.作灶.", "c": "生肖冲牛", "s": "煞西", "ch": "闭", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d0823": { "y": "塑绘.开光.进人口.纳畜.补垣.塞穴.栽种.牧养.", "j": "嫁娶.纳财.祈福.安葬.修造.开市.交易.立券.动土.上梁.", "c": "生肖冲龙", "s": "煞北", "ch": "满", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d0824": { "y": "祭祀.作灶.沐浴.修饰垣墙.平治道涂.余事勿取.", "j": "诸事不宜.", "c": "生肖冲蛇", "s": "煞西", "ch": "平", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d0826": { "y": "祭祀.求医.捕捉.栽种.塞穴.入殓.破土.安葬.移柩.余事勿取.", "j": "诸事不宜.", "c": "生肖冲羊", "s": "煞东", "ch": "执", "zc": "正冲正冲丁未", "ts": "房床厕外东北" }, "d0825": { "y": "祭祀.求嗣.开光.出行.伐木.作梁.出火.解除.拆卸.进人口.修造.动土.起基.安床.栽种.纳畜.入殓.破土.安葬.除服.成服.", "j": "嫁娶.移徙.", "c": "生肖冲马", "s": "煞南", "ch": "定", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d0828": { "y": "祭祀.结网.入殓.移柩.启攒.安葬.移柩.除服.成服.合寿木.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鸡", "s": "煞西", "ch": "危", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d0827": { "y": "破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲猴", "s": "煞北", "ch": "破", "zc": "正冲正冲戊申", "ts": "占门炉外东北" }, "d0829": { "y": "嫁娶.出火.拆卸.祭祀.祈福.开光.伐木.动土.开市.交易.立券.入宅.移徙.安床.纳畜.入殓.安葬.", "j": "栽种.作灶.针灸.出行.", "c": "生肖冲狗", "s": "煞南", "ch": "成", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d0830": { "y": "祭祀.开光.解除.移徙.裁衣.开市.立券.祈福.求嗣.进人口.交易.纳财.纳畜.", "j": "动土.破土.理发.出行.入宅.分居.安香.出火.", "c": "生肖冲猪", "s": "煞东", "ch": "收", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d0831": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出行.解除.安床.栽种.移柩.进人口.会亲友.除服.成服.", "j": "造屋.入殓.安葬.伐木.入宅.移徙.置产.纳畜.", "c": "生肖冲鼠", "s": "煞北", "ch": "开", "zc": "正冲正冲壬子", "ts": "房床碓外正东" }, "d0821": { "y": "祭祀.祈福.求嗣.开光.出行.解除.上梁.造屋.移徙.安门.纳财.牧养.纳畜.安葬.启攒.入殓.", "j": "破土.置产.掘井.动土.安床.", "c": "生肖冲虎", "s": "煞南", "ch": "建", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" }, "d0701": { "y": "修造.动土.起基.安门.安床.栽种.筑堤.补垣.造畜椆栖.", "j": "嫁娶.掘井.入宅.移徙.出火.出行.行丧.安葬.开光.理发.进人口.", "c": "生肖冲猪", "s": "煞东", "ch": "闭", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d0703": { "y": "纳采.订盟.嫁娶.祭祀.祈福.开市.纳财.立券.移徙.出行.修造.动土.起基.定磉.竖柱.拆卸.扫舍.放水.安香.安床.造船.开池.掘井.造畜椆栖.栽种.", "j": "行丧.安葬.破土.作灶.伐木.斋醮.", "c": "生肖冲牛", "s": "煞西", "ch": "除", "zc": "正冲正冲癸丑", "ts": "占门厕外正东" }, "d0702": { "y": "祭祀.教牛马.断蚁.余事勿取.", "j": "斋醮.移徙.入宅.动土.", "c": "生肖冲鼠", "s": "煞北", "ch": "建", "zc": "正冲正冲壬子", "ts": "房床碓外正东" }, "d0704": { "y": "嫁娶.开光.祭祀.祈福.出行.解除.移徙.入宅.开市.纳财.起基.修造.竖柱.上梁.造屋.作灶.出火.安香.补垣.塞穴.拆卸.放水.扫舍.造仓.造船.栽种.安葬.", "j": "纳采.订盟.安床.谢土.破土.动土.", "c": "生肖冲虎", "s": "煞南", "ch": "满", "zc": "正冲正冲甲寅", "ts": "碓磨炉外东南" }, "d0705": { "y": "嫁娶.祭祀.理发.作灶.修饰垣墙.平治道涂.整手足甲.沐浴.冠笄.", "j": "破土.出行.栽种.", "c": "生肖冲兔", "s": "煞东", "ch": "平", "zc": "正冲正冲乙卯", "ts": "厨灶门外东南" }, "d0706": { "y": "嫁娶.纳采.订盟.祭祀.祈福.求嗣.开光.出火.出行.拆卸.修造.动土.进人口.入宅.移徙.安床.交易.立券.挂匾.纳财.入殓.安葬.启攒.除服.成服.", "j": "动土.掘井.破土.", "c": "生肖冲龙", "s": "煞北", "ch": "定", "zc": "正冲正冲丙辰", "ts": "仓库栖外东南" }, "d0707": { "y": "沐浴.扫舍.余事勿取.", "j": "诸事不宜.", "c": "生肖冲蛇", "s": "煞西", "ch": "定", "zc": "正冲正冲丁巳", "ts": "占房床外东南" }, "d0708": { "y": "纳采.祭祀.祈福.解除.动土.破土.安葬.", "j": "嫁娶.移徙.入宅.", "c": "生肖冲马", "s": "煞南", "ch": "执", "zc": "正冲正冲戊午", "ts": "占门碓外东南" }, "d0709": { "y": "祭祀.破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲羊", "s": "煞东", "ch": "破", "zc": "正冲正冲己未", "ts": "碓磨厕外东南" }, "d0712": { "y": "祭祀.作灶.纳财.捕捉.", "j": "开市.破土.", "c": "生肖冲狗", "s": "煞南", "ch": "收", "zc": "正冲正冲壬戌", "ts": "房床栖外正南" }, "d0710": { "y": "嫁娶.纳采.开市.出行.动土.上梁.移徙.入宅.破土.安葬.", "j": "祭祀.祈福.", "c": "生肖冲猴", "s": "煞北", "ch": "危", "zc": "正冲正冲庚申", "ts": "厨灶炉外正南" }, "d0715": { "y": "嫁娶.纳采.出行.祭祀.祈福.解除.移徙.入宅.", "j": "动土.安葬.", "c": "生肖冲牛", "s": "煞西", "ch": "建", "zc": "正冲正冲乙丑", "ts": "厨灶厕外西南" }, "d0713": { "y": "嫁娶.开市.立券.祭祀.祈福.动土.移徙.入宅.", "j": "造庙.安葬.", "c": "生肖冲猪", "s": "煞东", "ch": "开", "zc": "正冲正冲癸亥", "ts": "占门床外正南" }, "d0716": { "y": "嫁娶.祭祀.祈福.斋醮.治病.破土.安葬.", "j": "开市.入宅.", "c": "生肖冲虎", "s": "煞南", "ch": "除", "zc": "正冲正冲丙寅", "ts": "仓库炉外西南" }, "d0711": { "y": "嫁娶.纳采.开市.出行.动土.上梁.移徙.入宅.破土.安葬.", "j": "赴任.", "c": "生肖冲鸡", "s": "煞西", "ch": "成", "zc": "正冲正冲辛酉", "ts": "仓库门外正南" }, "d0714": { "y": "补垣.塞穴.结网.入殓.除服.成服.移柩.安葬.启攒.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鼠", "s": "煞北", "ch": "闭", "zc": "正冲正冲甲子", "ts": "占碓磨外正南" }, "d0717": { "y": "嫁娶.出行.开市.安床.入殓.启攒.安葬.", "j": "祈福.动土.破土.", "c": "生肖冲兔", "s": "煞东", "ch": "满", "zc": "正冲正冲丁卯", "ts": "房床门外西南" }, "d0718": { "y": "嫁娶.祭祀.裁衣.结网.冠笄.沐浴.", "j": "开仓.出货财.置产.安葬.动土.破土.掘井.栽种.", "c": "生肖冲龙", "s": "煞北", "ch": "平", "zc": "正冲正冲戊辰", "ts": "门鸡栖外西南" }, "d0719": { "y": "入宅.移徙.安床.开光.祈福.求嗣.进人口.开市.交易.立券.出火.拆卸.修造.动土.", "j": "嫁娶.破土.置产.栽种.安葬.修坟.行丧.", "c": "生肖冲蛇", "s": "煞西", "ch": "定", "zc": "正冲正冲己巳", "ts": "碓磨床外西南" }, "d0720": { "y": "祭祀.解除.沐浴.整手足甲.入殓.移柩.破土.启攒.安葬.", "j": "嫁娶.入宅.移徙.作灶.开市.交易.安门.栽种.", "c": "生肖冲马", "s": "煞南", "ch": "执", "zc": "正冲正冲庚午", "ts": "厨灶碓外西南" }, "d0722": { "y": "嫁娶.开光.出行.理发.作梁.出火.拆卸.修造.开市.交易.立券.挂匾.动土.入宅.移徙.安床.栽种.", "j": "伐木.祭祀.纳畜.祭祀.", "c": "生肖冲猴", "s": "煞北", "ch": "危", "zc": "正冲正冲壬申", "ts": "房床厕外正南" }, "d0723": { "y": "嫁娶.开光.出行.祈福.求嗣.解除.拆卸.动土.修造.进人口.开市.交易.立券.挂匾.入宅.移徙.安床.栽种.纳畜.入殓.移柩.安葬.", "j": "", "c": "生肖冲鸡", "s": "煞西", "ch": "成", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d0724": { "y": "祭祀.作灶.纳财.栽种.纳畜.进人口.", "j": "安葬.经络.修坟.破土.开市.安床.启攒.立碑.", "c": "生肖冲狗", "s": "煞南", "ch": "收", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d0725": { "y": "祭祀.祈福.求嗣.开光.开市.牧养.理发.", "j": "嫁娶.出行.安葬.入殓.入宅.作灶.冠笄.上梁.", "c": "生肖冲猪", "s": "煞东", "ch": "开", "zc": "正冲正冲乙亥", "ts": "厨灶床外正西" }, "d0726": { "y": "祭祀.入殓.破土.除服.成服.移柩.启攒.安葬.谢土.余事勿取.", "j": "余事勿取.", "c": "生肖冲鼠", "s": "煞北", "ch": "闭", "zc": "正冲正冲丙子", "ts": "仓库碓外西北" }, "d0728": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出火.拆卸.修造.动土.进人口.开市.交易.立券.挂匾.入宅.移徙.栽种.纳畜.入殓.启攒.除服.成服.", "j": "", "c": "生肖冲虎", "s": "煞南", "ch": "除", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d0727": { "y": "祭祀.出行.交易.割蜜.造畜椆栖.", "j": "嫁娶.作灶.安葬.动土.词讼.作梁.伐木.掘井.破土.移徙.", "c": "生肖冲牛", "s": "煞西", "ch": "建", "zc": "正冲正冲丁丑", "ts": "房床厕外西北" }, "d0729": { "y": "嫁娶.开光.解除.安床.牧养.理发.开市.入殓.启攒.移柩.安葬.扫舍.", "j": "作灶.动土.上梁.栽种.入宅.移徙.修造.祈福.", "c": "生肖冲兔", "s": "煞东", "ch": "满", "zc": "正冲正冲己卯", "ts": "占门炉外西北" }, "d0730": { "y": "祭祀.解除.余事勿取.", "j": "诸事不宜.", "c": "生肖冲龙", "s": "煞北", "ch": "平", "zc": "正冲正冲庚辰", "ts": "厨灶栖外西北" }, "d0731": { "y": "祭祀.祈福.求嗣.开光.伐木.出火.拆卸.入宅.安床.修造.动土.上梁.挂匾.纳畜.", "j": "嫁娶.栽种.行丧.理发.修坟.行丧.作灶.", "c": "生肖冲蛇", "s": "煞西", "ch": "定", "zc": "正冲正冲辛巳", "ts": "仓库床外西北" }, "d0721": { "y": "破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲羊", "s": "煞东", "ch": "破", "zc": "正冲正冲辛未", "ts": "仓库厕外西南" }, "d0601": { "y": "破屋.坏垣.沐浴.解除.余事勿取.", "j": "诸事不宜.", "c": "生肖冲蛇", "s": "煞西", "ch": "破", "zc": "正冲正冲辛巳", "ts": "仓库床外西北" }, "d0603": { "y": "开市.交易.立券.祭祀.祈福.开光.动土.安床.出行.栽种.纳畜.牧养.竖柱.上梁.解除.破土.", "j": "嫁娶.掘井.入宅.移徙.安葬.", "c": "生肖冲羊", "s": "煞东", "ch": "成", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d0602": { "y": "纳采.订盟.嫁娶.造车器.祭祀.祈福.求嗣.开光.出火.拆卸.修造.动土.进人口.挂匾.入宅.移徙.安床.栽种.入殓.破土.安葬.除服.成服.", "j": "开市.立券.", "c": "生肖冲马", "s": "煞南", "ch": "危", "zc": "正冲正冲壬午", "ts": "房床碓外正北" }, "d0604": { "y": "解除.出行.纳采.冠笄.竖柱.上梁.移徙.作灶.进人口.入宅.纳畜.牧养.", "j": "祭祀.伐木.架马.安床.修造.动土.安葬.修坟.破土.", "c": "生肖冲猴", "s": "煞北", "ch": "收", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d0605": { "y": "祭祀.祈福.求嗣.开光.出行.开市.交易.立券.栽种.安床.纳畜.移徙.起基.动土.定磉.造仓.置产.破土.启攒.修坟.", "j": "入宅.移徙.修造.安门.伐木.入殓.安葬.造屋.", "c": "生肖冲鸡", "s": "煞西", "ch": "开", "zc": "正冲正冲乙酉", "ts": "厨灶门外正北" }, "d0606": { "y": "嫁娶.纳采.祭祀.祈福.求医.治病.出行.动土.移徙.入宅.", "j": "开市.安门.", "c": "生肖冲狗", "s": "煞南", "ch": "开", "zc": "正冲正冲丙戌", "ts": "仓库栖外正北" }, "d0607": { "y": "裁衣.作灶.移徙.入宅.纳畜.", "j": "嫁娶.安葬.", "c": "生肖冲猪", "s": "煞东", "ch": "闭", "zc": "正冲正冲丁亥", "ts": "占房床房内北" }, "d0608": { "y": "祭祀.入殓.移柩.启攒.安葬.", "j": "上梁.动土.破土.", "c": "生肖冲鼠", "s": "煞北", "ch": "建", "zc": "正冲正冲戊子", "ts": "占门碓房内北" }, "d0609": { "y": "订盟.纳采.出行.祈福.斋醮.安床.会亲友.", "j": "移徙.入宅.安葬.", "c": "生肖冲牛", "s": "煞西", "ch": "除", "zc": "正冲正冲己丑", "ts": "碓磨厕房内北" }, "d0612": { "y": "嫁娶.订盟.纳采.出行.开市.祭祀.祈福.动土.移徙.入宅.破土.安葬.", "j": "作灶.", "c": "生肖冲龙", "s": "煞北", "ch": "定", "zc": "正冲正冲壬辰", "ts": "房床栖房内南" }, "d0610": { "y": "嫁娶.纳采.出行.求医.治病.开市.移徙.入宅.启攒.安葬.", "j": "动土.破土.", "c": "生肖冲虎", "s": "煞南", "ch": "满", "zc": "正冲正冲庚寅", "ts": "厨灶炉房内北" }, "d0615": { "y": "嫁娶.订盟.纳采.祭祀.祈福.入殓.破土.安葬.", "j": "开光.开市.", "c": "生肖冲羊", "s": "煞东", "ch": "危", "zc": "正冲正冲乙未", "ts": "厨灶厕房内南" }, "d0613": { "y": "订盟.纳采.出行.祭祀.祈福.修造.动土.移徙.入宅.", "j": "开市.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "执", "zc": "正冲正冲癸巳", "ts": "占门床房内南" }, "d0616": { "y": "开光.求医.治病.动土.上梁.入殓.破土.安葬.", "j": "嫁娶.开光.", "c": "生肖冲猴", "s": "煞北", "ch": "成", "zc": "正冲正冲丙申", "ts": "仓库炉房内南" }, "d0611": { "y": "嫁娶.祭祀.沐浴.扫舍.修饰垣墙.", "j": "行丧.安葬.", "c": "生肖冲兔", "s": "煞东", "ch": "平", "zc": "正冲正冲辛卯", "ts": "仓库门房内北" }, "d0617": { "y": "祭祀.栽种.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鸡", "s": "煞西", "ch": "收", "zc": "正冲正冲丁酉", "ts": "房床门房内南" }, "d0614": { "y": "诸事不宜.", "j": "诸事不宜.", "c": "生肖冲马", "s": "煞南", "ch": "破", "zc": "正冲正冲甲午", "ts": "占碓磨房内南" }, "d0619": { "y": "求嗣.嫁娶.纳采.合帐.裁衣.冠笄.伐木.作梁.修造.动土.起基.竖柱.上梁.安门.作灶.筑堤.造畜椆栖.", "j": "安葬.出行.祈福.栽种.", "c": "生肖冲猪", "s": "煞东", "ch": "闭", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d0618": { "y": "嫁娶.开光.祭祀.祈福.求嗣.出行.解除.伐木.入宅.移徙.安床.出火.拆卸.修造.上梁.栽种.移柩.", "j": "安葬.开市.交易.立券.", "c": "生肖冲狗", "s": "煞南", "ch": "开", "zc": "正冲正冲戊戌", "ts": "门鸡栖房内东" }, "d0620": { "y": "祭祀.解除.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鼠", "s": "煞北", "ch": "建", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d0622": { "y": "开光.求嗣.出行.解除.伐木.出火.拆卸.修造.上梁.起基.入宅.移徙.开市.交易.立券.栽种.牧养.入殓.安葬.除服.成服.", "j": "置产.安床.", "c": "生肖冲虎", "s": "煞南", "ch": "满", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" }, "d0623": { "y": "祭祀.理发.修饰垣墙.平治道涂.沐浴.整手足甲.扫舍.", "j": "出行.安门.修造.嫁娶.上梁.入宅.", "c": "生肖冲兔", "s": "煞东", "ch": "平", "zc": "正冲正冲癸卯", "ts": "占大门外东北" }, "d0624": { "y": "嫁娶.祭祀.开光.祈福.求嗣.出行.出火.拆卸.动土.修造.进人口.入宅.移徙.安床.挂匾.交易.立券.栽种.纳畜.入殓.破土.启攒.安葬.", "j": "", "c": "生肖冲龙", "s": "煞北", "ch": "定", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d0625": { "y": "祭祀.祈福.求嗣.开光.出行.伐木.出火.拆卸.修造.动土.起基.安床.入宅.移徙.", "j": "嫁娶.开市.交易.行丧.安葬.修坟.", "c": "生肖冲蛇", "s": "煞西", "ch": "执", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d0626": { "y": "破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲马", "s": "煞南", "ch": "破", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d0628": { "y": "开市.交易.立券.纳财.栽种.安床.拆卸.修造.动土.上梁.入殓.安葬.破土.除服.成服.", "j": "嫁娶.出火.伐木.祭祀.入宅.移徙.纳畜.探病.", "c": "生肖冲猴", "s": "煞北", "ch": "成", "zc": "正冲正冲戊申", "ts": "占门炉外东北" }, "d0627": { "y": "开市.交易.立券.纳财.开池.作厕.结网.祭祀.修造.动土.安床.放水.经络.破土.", "j": "嫁娶.造桥.词讼.移徙.安门.作灶.栽种.", "c": "生肖冲羊", "s": "煞东", "ch": "危", "zc": "正冲正冲丁未", "ts": "房床厕外东北" }, "d0629": { "y": "祭祀.作灶.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鸡", "s": "煞西", "ch": "收", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d0630": { "y": "解除.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲狗", "s": "煞南", "ch": "开", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d0631": { "y": "修造.动土.起基.安门.安床.栽种.筑堤.补垣.造畜椆栖.", "j": "嫁娶.掘井.入宅.移徙.出火.出行.行丧.安葬.开光.理发.进人口.", "c": "生肖冲猪", "s": "煞东", "ch": "闭", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d0621": { "y": "嫁娶.祭祀.祈福.出火.开光.求嗣.出行.拆卸.开市.交易.立券.挂匾.入宅.移徙.安床.栽种.动土.", "j": "安葬.行丧.伐木.作梁.", "c": "生肖冲牛", "s": "煞西", "ch": "除", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d0501": { "y": "祭祀.出行.教牛马.扫舍.余事勿取.", "j": "开光.伐木.安葬.破土.", "c": "生肖冲狗", "s": "煞南", "ch": "建", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d0503": { "y": "开光.出行.交易.塞穴.嫁娶.理发.开市.安床.", "j": "祈福.出火.置产.动土.破土.安葬.修造.上梁.置产.入宅.", "c": "生肖冲鼠", "s": "煞北", "ch": "满", "zc": "正冲正冲壬子", "ts": "房床碓外正东" }, "d0502": { "y": "祭祀.祈福.求嗣.开光.纳采.订盟.解除.栽种.纳畜.牧养.扫舍.进人口.", "j": "修坟.造桥.作灶.出行.安葬.造屋.入宅.", "c": "生肖冲猪", "s": "煞东", "ch": "除", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d0504": { "y": "祭祀.作灶.畋猎.结网.修饰垣墙.平治道涂.余事勿取.", "j": "嫁娶.安床.治病.", "c": "生肖冲牛", "s": "煞西", "ch": "平", "zc": "正冲正冲癸丑", "ts": "占门厕外正东" }, "d0505": { "y": "沐浴.祭祀.解除.安葬.破土.谢土.移柩.余事勿取.", "j": "斋醮.开光.嫁娶.入宅.上梁.", "c": "生肖冲虎", "s": "煞南", "ch": "定", "zc": "正冲正冲甲寅", "ts": "碓磨炉外东南" }, "d0507": { "y": "嫁娶.纳采.求医.治病.修造.动土.移徙.入宅.破土.安葬.", "j": "开市.开光.", "c": "生肖冲龙", "s": "煞北", "ch": "执", "zc": "正冲正冲丙辰", "ts": "仓库栖外东南" }, "d0506": { "y": "嫁娶.纳采.出行.祭祀.祈福.开市.动土.移徙.入宅.破土.安葬.", "j": "安门.", "c": "生肖冲兔", "s": "煞东", "ch": "定", "zc": "正冲正冲乙卯", "ts": "厨灶门外东南" }, "d0508": { "y": "祭祀.破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲蛇", "s": "煞西", "ch": "破", "zc": "正冲正冲丁巳", "ts": "占房床外东南" }, "d0509": { "y": "嫁娶.纳采.祭祀.祈福.出行.动土.上梁.移徙.入宅.破土.安葬.", "j": "祈福.斋醮.", "c": "生肖冲马", "s": "煞南", "ch": "危", "zc": "正冲正冲戊午", "ts": "占门碓外东南" }, "d0512": { "y": "订盟.纳采.祭祀.动土.破土.交易.立券.", "j": "嫁娶.安葬.", "c": "生肖冲鸡", "s": "煞西", "ch": "开", "zc": "正冲正冲辛酉", "ts": "仓库门外正南" }, "d0510": { "y": "纳采.祭祀.祈福.开市.求医.治病.动土.纳畜.", "j": "嫁娶.安葬.", "c": "生肖冲羊", "s": "煞东", "ch": "成", "zc": "正冲正冲己未", "ts": "碓磨厕外东南" }, "d0513": { "y": "嫁娶.裁衣.祭祀.出行.安床.作灶.移徙.入宅.破土.安葬.", "j": "赴任.捕捉.", "c": "生肖冲狗", "s": "煞南", "ch": "闭", "zc": "正冲正冲壬戌", "ts": "房床栖外正南" }, "d0515": { "y": "嫁娶.订盟.纳采.出行.祭祀.祈福.斋醮.动土.上梁.破土.安葬.", "j": "移徙.入宅.", "c": "生肖冲鼠", "s": "煞北", "ch": "除", "zc": "正冲正冲甲子", "ts": "占碓磨外正南" }, "d0516": { "y": "订盟.纳采.会亲友.安床.作灶.造畜椆栖.", "j": "开市.安葬.", "c": "生肖冲牛", "s": "煞西", "ch": "满", "zc": "正冲正冲乙丑", "ts": "厨灶厕外西南" }, "d0511": { "y": "嫁娶.纳采.出行.移徙.入宅.", "j": "动土.破土.安葬.", "c": "生肖冲猴", "s": "煞北", "ch": "收", "zc": "正冲正冲庚申", "ts": "厨灶炉外正南" }, "d0517": { "y": "沐浴.平治道涂.扫舍.入殓.移柩.破土.启攒.安葬.余事勿取.", "j": "诸事不宜.", "c": "生肖冲虎", "s": "煞南", "ch": "平", "zc": "正冲正冲丙寅", "ts": "仓库炉外西南" }, "d0519": { "y": "祭祀.开光.出行.解除.塑绘.裁衣.入殓.移柩.破土.启攒.安葬.除服.成服.", "j": "嫁娶.上梁.修造.拆卸.架马.入宅.伐木.动土.出火.开柱眼.", "c": "生肖冲龙", "s": "煞北", "ch": "执", "zc": "正冲正冲戊辰", "ts": "门鸡栖外西南" }, "d0514": { "y": "塞穴.结网.余事勿取.", "j": "诸事不宜.", "c": "生肖冲猪", "s": "煞东", "ch": "建", "zc": "正冲正冲癸亥", "ts": "占门床外正南" }, "d0518": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出行.出火.拆卸.动土.上梁.进人口.入宅.移徙.安床.安门.开市.交易.立券.挂匾.栽种.破土.安葬.", "j": "", "c": "生肖冲兔", "s": "煞东", "ch": "定", "zc": "正冲正冲丁卯", "ts": "房床门外西南" }, "d0520": { "y": "祭祀.解除.破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲蛇", "s": "煞西", "ch": "破", "zc": "正冲正冲己巳", "ts": "碓磨床外西南" }, "d0522": { "y": "开市.交易.立券.祭祀.祈福.开光.伐木.进人口.安床.拆卸.修造.动土.栽种.破土.移柩.安葬.", "j": "入宅.移徙.理发.出火.嫁娶.出行.", "c": "生肖冲羊", "s": "煞东", "ch": "成", "zc": "正冲正冲辛未", "ts": "仓库厕外西南" }, "d0523": { "y": "结网.解除.余事勿取.", "j": "诸事不宜.", "c": "生肖冲猴", "s": "煞北", "ch": "收", "zc": "正冲正冲壬申", "ts": "房床厕外正南" }, "d0524": { "y": "嫁娶.祭祀.祈福.求嗣.开光.开市.交易.立券.安床.出行.拆卸.", "j": "纳畜.入宅.移徙.安葬.探病.伐木.上梁.安门.入殓.动土.", "c": "生肖冲鸡", "s": "煞西", "ch": "开", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d0525": { "y": "嫁娶.祭祀.祈福.求嗣.出行.出火.拆卸.修造.动土.入宅.移徙.安床.作灶.塞穴.栽种.破土.安葬.", "j": "开光.掘井.开仓.", "c": "生肖冲狗", "s": "煞南", "ch": "闭", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d0526": { "y": "解除.扫舍.余事勿取.", "j": "诸事不宜.", "c": "生肖冲猪", "s": "煞东", "ch": "建", "zc": "正冲正冲乙亥", "ts": "厨灶床外正西" }, "d0528": { "y": "进人口.会亲友.", "j": "塞穴.上梁.动土.伐木.安葬.词讼.", "c": "生肖冲牛", "s": "煞西", "ch": "满", "zc": "正冲正冲丁丑", "ts": "房床厕外西北" }, "d0527": { "y": "开市.交易.立券.挂匾.开光.出行.拆卸.进人口.入宅.移柩.动土.安门.上梁.栽种.破土.修坟.安葬.", "j": "嫁娶.安床.探病.作灶.", "c": "生肖冲鼠", "s": "煞北", "ch": "除", "zc": "正冲正冲丙子", "ts": "仓库碓外西北" }, "d0529": { "y": "沐浴.平治道涂.扫舍.入殓.破土.安葬.除服.成服.", "j": "嫁娶.移徙.伐木.作梁.安床.祭祀.祈福.造屋.", "c": "生肖冲虎", "s": "煞南", "ch": "平", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d0531": { "y": "祭祀.祈福.求嗣.开光.解除.合帐.冠笄.伐木.架马.作梁.修造.进人口.嫁娶.裁衣.合帐.安床.动土.起基.上梁.竖柱.放水.会亲友.", "j": "", "c": "生肖冲龙", "s": "煞北", "ch": "执", "zc": "正冲正冲庚辰", "ts": "厨灶栖外西北" }, "d0530": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出火.出行.拆卸.动土.解除.进人口.开市.交易.立券.挂匾.入宅.移徙.安床.安门.上梁.安葬.破土.谢土.", "j": "", "c": "生肖冲兔", "s": "煞东", "ch": "定", "zc": "正冲正冲己卯", "ts": "占门炉外西北" }, "d0521": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出行.拆卸.动土.上梁.出火.进人口.入宅.移徙.安床.栽种.纳畜.牧养.竖柱.安门.修造.解除.会亲友.", "j": "", "c": "生肖冲马", "s": "煞南", "ch": "危", "zc": "正冲正冲庚午", "ts": "厨灶碓外西南" }, "d0403": { "y": "理发.冠笄.嫁娶.进人口.", "j": "置产.伐木.纳畜.造畜椆栖.安葬.破土.作梁.作灶.开生坟.", "c": "生肖冲马", "s": "煞南", "ch": "收", "zc": "正冲正冲壬午", "ts": "房床碓外正北" }, "d0401": { "y": "嫁娶.祭祀.出行.冠笄.立券.交易.进人口.开市.移徙.修造.动土.安床.入殓.移柩.破土.", "j": "开光.作灶.斋醮.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "危", "zc": "正冲正冲庚辰", "ts": "厨灶栖外西北" }, "d0402": { "y": "开市.立券.交易.挂匾.祭祀.祈福.开光.入宅.移徙.安床.拆卸.动土.上梁.进人口.", "j": "嫁娶.行丧.架马.作梁.理发.牧养.安葬.纳畜.伐木.", "c": "生肖冲蛇", "s": "煞西", "ch": "成", "zc": "正冲正冲辛巳", "ts": "仓库床外西北" }, "d0404": { "y": "嫁娶.祭祀.开光.祈福.求嗣.出火.入宅.移徙.安床.拆卸.动土.破土.谢土.", "j": "合帐.开市.安葬.入殓.", "c": "生肖冲羊", "s": "煞东", "ch": "开", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d0405": { "y": "订盟.纳采.嫁娶.进人口.会亲友.交易.立券.动土.除服.谢土.移柩.破土.启攒.赴任.出行.开市.纳财.栽种.", "j": "入殓.安葬.入宅.安床.", "c": "生肖冲猴", "s": "煞北", "ch": "开", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d0407": { "y": "祭祀.进人口.嫁娶.安床.解除.冠笄.出行.裁衣.扫舍.", "j": "掘井.动土.破土.安葬.开光.", "c": "生肖冲狗", "s": "煞南", "ch": "建", "zc": "正冲正冲丙戌", "ts": "仓库栖外正北" }, "d0408": { "y": "纳采.开光.求医.治病.动土.上梁.移徙.入宅.", "j": "嫁娶.开市.安葬.", "c": "生肖冲猪", "s": "煞东", "ch": "除", "zc": "正冲正冲丁亥", "ts": "占房床房内北" }, "d0406": { "y": "祭祀.祈福.裁衣.合帐.安床.入殓.除服.成服.移柩.破土.启攒.安葬.谢土.立碑.造畜椆栖.", "j": "掘井.安门.嫁娶.纳采.", "c": "生肖冲鸡", "s": "煞西", "ch": "闭", "zc": "正冲正冲乙酉", "ts": "厨灶门外正北" }, "d0409": { "y": "祭祀.会亲友.开市.安床.启攒.安葬.", "j": "嫁娶.动土.破土.", "c": "生肖冲鼠", "s": "煞北", "ch": "满", "zc": "正冲正冲戊子", "ts": "占门碓房内北" }, "d0412": { "y": "嫁娶.纳采.祭祀.祈福.出行.移徙.求医.", "j": "开市.动土.破土.", "c": "生肖冲兔", "s": "煞东", "ch": "执", "zc": "正冲正冲辛卯", "ts": "仓库门房内北" }, "d0410": { "y": "祭祀.作灶.掘井.平治道涂.", "j": "嫁娶.安葬.", "c": "生肖冲牛", "s": "煞西", "ch": "平", "zc": "正冲正冲己丑", "ts": "碓磨厕房内北" }, "d0413": { "y": "祭祀.求医.治病.解除.余事勿取.", "j": "诸事不宜.", "c": "生肖冲龙", "s": "煞北", "ch": "破", "zc": "正冲正冲壬辰", "ts": "房床栖房内南" }, "d0415": { "y": "", "j": "诸事不宜.", "c": "生肖冲马", "s": "煞南", "ch": "成", "zc": "正冲正冲甲午", "ts": "占碓磨房内南" }, "d0416": { "y": "解除.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲羊", "s": "煞东", "ch": "收", "zc": "正冲正冲乙未", "ts": "厨灶厕房内南" }, "d0411": { "y": "祭祀.斋醮.开市.动土.入殓.破土.安葬.", "j": "嫁娶.移徙.入宅.", "c": "生肖冲虎", "s": "煞南", "ch": "定", "zc": "正冲正冲庚寅", "ts": "厨灶炉房内北" }, "d0417": { "y": "嫁娶.开光.出行.出火.拆卸.进人口.开市.立券.交易.挂匾.入宅.移徙.安床.栽种.", "j": "祈福.入殓.祭祀.作灶.安葬.探病.", "c": "生肖冲猴", "s": "煞北", "ch": "开", "zc": "正冲正冲丙申", "ts": "仓库炉房内南" }, "d0419": { "y": "出行.修饰垣墙.造畜椆栖.教牛马.余事勿取.", "j": "诸事不宜.", "c": "生肖冲狗", "s": "煞南", "ch": "建", "zc": "正冲正冲戊戌", "ts": "门鸡栖房内东" }, "d0414": { "y": "沐浴.结网.取渔.", "j": "嫁娶.入宅.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "危", "zc": "正冲正冲癸巳", "ts": "占门床房内南" }, "d0418": { "y": "嫁娶.出行.合帐.冠笄.安床.除服.成服.作灶.交易.立券.入殓.移柩.破土.安葬.", "j": "词讼.开光.开市.", "c": "生肖冲鸡", "s": "煞西", "ch": "闭", "zc": "正冲正冲丁酉", "ts": "房床门房内南" }, "d0420": { "y": "祭祀.祈福.开光.求嗣.解除.伐木.出火.入宅.移徙.安床.拆卸.修造.动土.造畜椆栖.", "j": "嫁娶.纳财.安葬.出行.开市.立券.作灶.栽种.", "c": "生肖冲猪", "s": "煞东", "ch": "除", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d0422": { "y": "祭祀.平治道涂.解除.修饰垣墙.余事勿取.", "j": "诸事不宜.", "c": "生肖冲牛", "s": "煞西", "ch": "平", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d0423": { "y": "祭祀.祈福.开光.解除.动土.纳财.交易.纳畜.扫舍.", "j": "进人口.出行.嫁娶.置产.安床.赴任.安葬.作灶.", "c": "生肖冲虎", "s": "煞南", "ch": "定", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" }, "d0424": { "y": "祭祀.祈福.求嗣.开光.解除.出火.拆卸.入宅.安床.修造.安门.纳畜.启攒.安葬.", "j": "动土.破土.纳财.掘井.挂匾.开市.伐木.交易.", "c": "生肖冲兔", "s": "煞东", "ch": "执", "zc": "正冲正冲癸卯", "ts": "占大门外东北" }, "d0425": { "y": "祭祀.解除.破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲龙", "s": "煞北", "ch": "破", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d0426": { "y": "塞穴.扫舍.余事勿取.", "j": "诸事不宜.", "c": "生肖冲蛇", "s": "煞西", "ch": "危", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d0428": { "y": "解除.破屋.余事勿取.", "j": "诸事不宜.", "c": "生肖冲羊", "s": "煞东", "ch": "收", "zc": "正冲正冲丁未", "ts": "房床厕外东北" }, "d0427": { "y": "祭祀.祈福.求嗣.开光.解除.纳采.冠笄.出火.拆卸.进人口.安床.动土.上梁.造庙.掘井.开池.入殓.移柩.安葬.破土.", "j": "", "c": "生肖冲马", "s": "煞南", "ch": "成", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d0429": { "y": "嫁娶.祈福.求嗣.开光.出行.解除.拆卸.出火.开市.立券.交易.入宅.移徙.安床.动土.破土.谢土.", "j": "祭祀.入殓.安葬.探病.", "c": "生肖冲猴", "s": "煞北", "ch": "开", "zc": "正冲正冲戊申", "ts": "占门炉外东北" }, "d0431": { "y": "祭祀.出行.教牛马.扫舍.余事勿取.", "j": "开光.伐木.安葬.破土.", "c": "生肖冲狗", "s": "煞南", "ch": "建", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d0421": { "y": "纳采.嫁娶.开光.出行.理发.会亲友.开市.安床.栽种.牧养.入殓.移柩.启攒.", "j": "谢土.祈福.上梁.作灶.斋醮.修造.入宅.安门.", "c": "生肖冲鼠", "s": "煞北", "ch": "满", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d0430": { "y": "祭祀.裁衣.冠笄.安床.交易.立券.开池.补垣.塞穴.入殓.破土.启攒.安葬.谢土.除服.成服.", "j": "嫁娶.掘井.探病.开市.开光.栽种.", "c": "生肖冲鸡", "s": "煞西", "ch": "闭", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d0303": { "y": "修饰垣墙.平治道涂.祭祀.余事勿取.", "j": "诸事不宜.", "c": "生肖冲猪", "s": "煞东", "ch": "平", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d0301": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出行.出火.拆卸.动土.上梁.进人口.入宅.移徙.安床.开市.交易.立券.挂匾.入殓.破土.安葬.启攒.除服.成服.", "j": "诸事不宜.", "c": "生肖冲鸡", "s": "煞西", "ch": "除", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d0304": { "y": "造车器.纳采.订盟.祭祀.祈福.求嗣.移徙.出行.开市.出火.入宅.立券.交易.入宅.安门.安床.安葬.谢土.", "j": "开光.造屋.动土.作灶.栽种.", "c": "生肖冲鼠", "s": "煞北", "ch": "定", "zc": "正冲正冲壬子", "ts": "房床碓外正东" }, "d0302": { "y": "嫁娶.冠笄.纳采.出行.会亲友.上梁.安机械.安床.牧养.畋猎.祭祀.祈福.开光.修造.安门.造屋.起基.", "j": "入宅.作灶.治病.安葬.移徙.", "c": "生肖冲狗", "s": "煞南", "ch": "满", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d0305": { "y": "动土.入殓.嫁娶.移柩.安葬.破土.", "j": "开市.作灶.安床.入宅.上梁.裁衣.", "c": "生肖冲牛", "s": "煞西", "ch": "执", "zc": "正冲正冲癸丑", "ts": "占门厕外正东" }, "d0307": { "y": "破屋.坏垣.", "j": "诸事不宜.", "c": "生肖冲兔", "s": "煞东", "ch": "破", "zc": "正冲正冲乙卯", "ts": "厨灶门外东南" }, "d0306": { "y": "祭祀.解除.入殓.除服.成服.移柩.启攒.安葬.修坟.立碑.谢土.沐浴.扫舍.捕捉.取渔.结网.畋猎.理发.", "j": "安床.嫁娶.作灶.入宅.", "c": "生肖冲虎", "s": "煞南", "ch": "执", "zc": "正冲正冲甲寅", "ts": "碓磨炉外东南" }, "d0308": { "y": "祭祀.出行.订盟.纳采.裁衣.合帐.冠笄.进人口.动土.安床.作灶.入殓.移柩.安葬.破土.结网.取渔.畋猎.", "j": "作梁.造庙.", "c": "生肖冲龙", "s": "煞北", "ch": "危", "zc": "正冲正冲丙辰", "ts": "仓库栖外东南" }, "d0309": { "y": "祭祀.开光.塑绘.订盟.纳采.合帐.冠笄.拆卸.动土.起基.上梁.入宅.安香.开市.立券.纳财.沐浴.求嗣.出火.竖柱.安门.", "j": "造庙.嫁娶.伐木.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "成", "zc": "正冲正冲丁巳", "ts": "占房床外东南" }, "d0312": { "y": "订盟.纳采.冠笄.拆卸.修造.动土.安床.入殓.除服.成服.移柩.安葬.破土.启攒.造仓.", "j": "作灶.开光.嫁娶.开市.入宅.", "c": "生肖冲猴", "s": "煞北", "ch": "闭", "zc": "正冲正冲庚申", "ts": "厨灶炉外正南" }, "d0310": { "y": "祭祀.沐浴.捕捉.栽种.", "j": "嫁娶.入宅.移徙.作灶.安葬.", "c": "生肖冲马", "s": "煞南", "ch": "收", "zc": "正冲正冲戊午", "ts": "占门碓外东南" }, "d0313": { "y": "祈福.开光.塑绘.酬神.订盟.纳采.裁衣.安床.开市.立券.入殓.除服.成服.移柩.启攒.安葬.立碑.赴任.会亲友.出行.交易.竖柱.", "j": "作灶.掘井.动土.栽种.", "c": "生肖冲鸡", "s": "煞西", "ch": "建", "zc": "正冲正冲辛酉", "ts": "仓库门外正南" }, "d0316": { "y": "冠笄.入殓.除服.成服.移柩.平治道涂.修饰垣墙.", "j": "造屋.作灶.治病.探病.", "c": "生肖冲鼠", "s": "煞北", "ch": "平", "zc": "正冲正冲甲子", "ts": "占碓磨外正南" }, "d0315": { "y": "开光.塑绘.裁衣.冠笄.伐木.拆卸.竖柱.上梁.开仓.会亲友.安机械.造仓.造屋.交易.解除.开市.立券.纳财.", "j": "出行.嫁娶.入宅.安葬.", "c": "生肖冲猪", "s": "煞东", "ch": "满", "zc": "正冲正冲癸亥", "ts": "占门床外正南" }, "d0311": { "y": "祭祀.开光.塑绘.酬神.斋醮.订盟.纳采.嫁娶.裁衣.动土.起基.出火.拆卸.移徙.入宅.安香.修造.竖柱.上梁.纳畜.牧养.祈福.求嗣.解除.伐木.定磉.造屋.安门.", "j": "栽种.安葬.", "c": "生肖冲羊", "s": "煞东", "ch": "开", "zc": "正冲正冲己未", "ts": "碓磨厕外东南" }, "d0317": { "y": "祭祀.嫁娶.祈福.纳采.裁衣.合帐.安床.入宅.安香.入殓.移柩.安葬.谢土.修造.安碓硙.求嗣.会亲友.挂匾.交易.立券.纳财.造仓.放水.", "j": "栽种.伐木.", "c": "生肖冲牛", "s": "煞西", "ch": "定", "zc": "正冲正冲乙丑", "ts": "厨灶厕外西南" }, "d0319": { "y": "破屋.坏垣.求医.治病.", "j": "诸事不宜.", "c": "生肖冲兔", "s": "煞东", "ch": "破", "zc": "正冲正冲丁卯", "ts": "房床门外西南" }, "d0314": { "y": "祭祀.扫舍.塞穴.", "j": "栽种.作灶.安葬.嫁娶.", "c": "生肖冲狗", "s": "煞南", "ch": "除", "zc": "正冲正冲壬戌", "ts": "房床栖外正南" }, "d0318": { "y": "祭祀.祈福.斋醮.订盟.纳采.裁衣.合帐.拆卸.修造.动土.上梁.起基.移柩.安葬.谢土.沐浴.扫舍.开柱眼.伐木.出火.", "j": "安床.开市.立券.作灶.", "c": "生肖冲虎", "s": "煞南", "ch": "执", "zc": "正冲正冲丙寅", "ts": "仓库炉外西南" }, "d0320": { "y": "祭祀.动土.上梁.订盟.纳采.嫁娶.安机械.拆卸.安床.入宅.安香.入殓.移柩.破土.安葬.立碑.谢土.赴任.出行.移徙.祈福.求嗣.解除.造仓.进人口.", "j": "开光.出货财.", "c": "生肖冲龙", "s": "煞北", "ch": "危", "zc": "正冲正冲戊辰", "ts": "门鸡栖外西南" }, "d0322": { "y": "裁衣.合帐.冠笄.嫁娶.纳婿.安床.入殓.纳财.", "j": "作灶.开市.安葬.作梁.", "c": "生肖冲马", "s": "煞南", "ch": "收", "zc": "正冲正冲庚午", "ts": "厨灶碓外西南" }, "d0323": { "y": "祭祀.订盟.纳采.修造.动土.祈福.塑绘.斋醮.沐浴.拆卸.起基.入宅.安香.造庙.移柩.谢土.除服.成服.入学.习艺.出行.竖柱.上梁.掘井.求嗣.解除.伐木.", "j": "作灶.安葬.开市.造屋.", "c": "生肖冲羊", "s": "煞东", "ch": "开", "zc": "正冲正冲辛未", "ts": "仓库厕外西南" }, "d0325": { "y": "祭祀.出行.嫁娶.冠笄.安床.入殓.移柩.安葬.", "j": "掘井.动土.作灶.栽种.", "c": "生肖冲鸡", "s": "煞西", "ch": "建", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d0326": { "y": "塞穴.诸事不宜.", "j": "安门.作灶.安葬.嫁娶.", "c": "生肖冲狗", "s": "煞南", "ch": "除", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d0324": { "y": "订盟.纳采.裁衣.合帐.冠笄.安机械.拆卸.安床.入殓.除服.成服.移柩.破土.启攒.安葬.修坟.立碑.经络.交易.立券.纳财.筑堤.造仓.补垣.塞穴.纳畜.伐木.架马.", "j": "祭祀.开光.嫁娶.入宅.", "c": "生肖冲猴", "s": "煞北", "ch": "闭", "zc": "正冲正冲壬申", "ts": "房床厕外正南" }, "d0328": { "y": "祭祀.嫁娶.纳婿.安葬.", "j": "栽种.造屋.作灶.入宅.", "c": "生肖冲鼠", "s": "煞北", "ch": "平", "zc": "正冲正冲丙子", "ts": "仓库碓外西北" }, "d0329": { "y": "祭祀.会亲友.订盟.裁衣.合帐.安机械.拆卸.上梁.安门.入殓.除服.成服.移柩.启攒.安葬.立碑.开光.塑绘.入学.出行.起基.定磉.放水.移徙.入宅.竖柱.立券.经络.", "j": "伐木.作梁.", "c": "生肖冲牛", "s": "煞西", "ch": "定", "zc": "正冲正冲丁丑", "ts": "房床厕外西北" }, "d0327": { "y": "开光.塑绘.求嗣.纳采.裁衣.合帐.冠笄.安机械.作梁.开柱眼.安门.安床.造仓.祭祀.会亲友.祈福.经络.纳财.开市.立券.交易.入学.求嗣.理发.架马.", "j": "出行.斋醮.安葬.嫁娶.", "c": "生肖冲猪", "s": "煞东", "ch": "满", "zc": "正冲正冲乙亥", "ts": "厨灶床外正西" }, "d0321": { "y": "祭祀.开光.塑绘.纳采.裁衣.拆卸.安床.起基.动土.竖柱.上梁.移徙.入宅.安香.开市.立券.挂匾.沐浴.出行.求嗣.安门.", "j": "嫁娶.栽种.伐木.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "成", "zc": "正冲正冲己巳", "ts": "碓磨床外西南" }, "d0331": { "y": "祭祀.治病.破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲兔", "s": "煞东", "ch": "破", "zc": "正冲正冲己卯", "ts": "占门炉外西北" }, "d0330": { "y": "祭祀.开光.塑绘.祈福.斋醮.裁衣.合帐.冠笄.嫁娶.拆卸.动土.移徙.入宅.入殓.移柩.安葬.谢土.求嗣.入学.理发.伐木.架马.作梁.出火.修造.起基.定磉.放水.赴任.", "j": "入宅.安门.", "c": "生肖冲虎", "s": "煞南", "ch": "执", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d0203": { "y": "祭祀.解除.造畜椆栖.教牛马.针灸.余事勿取.", "j": "嫁娶.动土.开池.安葬.", "c": "生肖冲羊", "s": "煞东", "ch": "建", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d0201": { "y": "开市.交易.立券.纳财.纳畜.造畜椆栖.入宅.移徙.安床.开光.祈福.求嗣.动土.", "j": "嫁娶.栽种.安葬.理发.造庙.作灶.入殓.行丧.造桥.", "c": "生肖冲蛇", "s": "煞西", "ch": "开", "zc": "正冲正冲辛巳", "ts": "仓库床外西北" }, "d0202": { "y": "安床.裁衣.交易.立券.入殓.移柩.安葬.除服.成服.", "j": "置产.嫁娶.出行.开光.栽种.动土.破土.入宅.治病.", "c": "生肖冲马", "s": "煞南", "ch": "闭", "zc": "正冲正冲壬午", "ts": "房床碓外正北" }, "d0204": { "y": "裁衣.合帐.入殓.除服.成服.会亲友.纳财.", "j": "祭祀.祈福.移徙.嫁娶.入宅.", "c": "生肖冲猴", "s": "煞北", "ch": "建", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d0205": { "y": "祭祀.斋醮.裁衣.合帐.冠笄.订盟.纳采.嫁娶.入宅.安香.谢土.入殓.移柩.破土.立碑.安香.会亲友.出行.祈福.求嗣.立碑.上梁.放水.", "j": "掘井.", "c": "生肖冲鸡", "s": "煞西", "ch": "除", "zc": "正冲正冲乙酉", "ts": "厨灶门外正北" }, "d0207": { "y": "作灶.平治道涂.", "j": "祭祀.祈福.安葬.安门.余事勿取.", "c": "生肖冲猪", "s": "煞东", "ch": "平", "zc": "正冲正冲丁亥", "ts": "占房床房内北" }, "d0206": { "y": "安床.合帐.入宅.问名.纳采.求嗣.祭祀.开仓.", "j": "斋醮.作灶.安床.安葬.", "c": "生肖冲狗", "s": "煞南", "ch": "满", "zc": "正冲正冲丙戌", "ts": "仓库栖外正北" }, "d0208": { "y": "塑绘.开光.酬神.斋醮.订盟.纳采.裁衣.合帐.拆卸.动土.上梁.安床.安香.造庙.挂匾.会亲友.进人口.出行.修造.纳财.伐木.放水.出火.纳畜.沐浴.安门.", "j": "造屋.栽种.安葬.作灶.", "c": "生肖冲鼠", "s": "煞北", "ch": "定", "zc": "正冲正冲戊子", "ts": "占门碓房内北" }, "d0209": { "y": "祭祀.祈福.酬神.订盟.纳采.冠笄.裁衣.合帐.嫁娶.安床.移徙.入宅.安香.入殓.移柩.启攒.安葬.解除.取渔.捕捉.伐木.安门.出火.", "j": "栽种.动土.开市.作灶.", "c": "生肖冲牛", "s": "煞西", "ch": "执", "zc": "正冲正冲己丑", "ts": "碓磨厕房内北" }, "d0212": { "y": "取渔.入殓.除服.成服.移柩.破土.安葬.立碑.", "j": "嫁娶.上梁.入宅.作灶.", "c": "生肖冲龙", "s": "煞北", "ch": "成", "zc": "正冲正冲壬辰", "ts": "房床栖房内南" }, "d0210": { "y": "求医.破屋.", "j": "诸事不宜.", "c": "生肖冲虎", "s": "煞南", "ch": "破", "zc": "正冲正冲庚寅", "ts": "厨灶炉房内北" }, "d0213": { "y": "祭祀.求嗣.沐浴.酬神.订盟.纳采.裁衣.合帐.冠笄.安机械.安床.造仓.开池.经络.纳财.开市.立券.交易.结网.取渔.纳畜.捕捉.", "j": "安葬.作灶.伐木.作梁.", "c": "生肖冲蛇", "s": "煞西", "ch": "收", "zc": "正冲正冲癸巳", "ts": "占门床房内南" }, "d0216": { "y": "安床.解除.裁衣.竖柱.上梁.交易.立券.纳财.纳畜.牧养.入殓.移柩.安葬.启攒.", "j": "嫁娶.出行.动土.开渠.入宅.祭祀.掘井.", "c": "生肖冲猴", "s": "煞北", "ch": "建", "zc": "正冲正冲丙申", "ts": "仓库炉房内南" }, "d0215": { "y": "祭祀.祈福.求嗣.入殓.启攒.安葬.移柩.", "j": "开光.掘井.针灸.出行.嫁娶.入宅.移徙.作灶.动土.", "c": "生肖冲羊", "s": "煞东", "ch": "闭", "zc": "正冲正冲乙未", "ts": "厨灶厕房内南" }, "d0211": { "y": "祈福.求嗣.斋醮.塑绘.开光.订盟.纳采.嫁娶.动土.入宅.安香.移柩.安葬.谢土.出行.沐浴.修造.竖柱.上梁.纳财.破土.解除.安门.放水.", "j": "作灶.安床.", "c": "生肖冲兔", "s": "煞东", "ch": "危", "zc": "正冲正冲辛卯", "ts": "仓库门房内北" }, "d0217": { "y": "嫁娶.安床.开光.出行.祭祀.动土.出火.解除.会亲友.开市.交易.立券.挂匾.入宅.移徙.拆卸.破土.启攒.安葬.", "j": "掘井.词讼.", "c": "生肖冲鸡", "s": "煞西", "ch": "除", "zc": "正冲正冲丁酉", "ts": "房床门房内南" }, "d0219": { "y": "作灶.解除.平治道涂.", "j": "栽种.出行.祈福.行丧.纳畜.安葬.安门.伐木.作梁.牧养.", "c": "生肖冲猪", "s": "煞东", "ch": "平", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d0214": { "y": "祭祀.沐浴.祈福.求嗣.斋醮.订盟.纳采.裁衣.冠笄.开市.立券.交易.纳财.沐浴.除服.谢土.出行.移柩.", "j": "入殓.安葬.作灶.入宅.", "c": "生肖冲马", "s": "煞南", "ch": "开", "zc": "正冲正冲甲午", "ts": "占碓磨房内南" }, "d0218": { "y": "嫁娶.开光.求嗣.会亲友.安床.牧养.塑绘.针灸.", "j": "入宅.移徙.出火.分居.安香.作灶.开市.交易.立券.安葬.动土.伐木.", "c": "生肖冲狗", "s": "煞南", "ch": "满", "zc": "正冲正冲戊戌", "ts": "门鸡栖房内东" }, "d0220": { "y": "解除.沐浴.", "j": "诸事不宜.", "c": "生肖冲鼠", "s": "煞北", "ch": "定", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d0222": { "y": "祭祀.解除.治病.破屋.坏垣.扫舍.", "j": "余事勿取.", "c": "生肖冲虎", "s": "煞南", "ch": "破", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" }, "d0223": { "y": "祭祀.祈福.求嗣.开光.出火.出行.拆卸.修造.动土.入宅.移徙.上梁.挂匾.开池.入殓.安葬.破土.启攒.", "j": "嫁娶.作灶.安床.", "c": "生肖冲兔", "s": "煞东", "ch": "危", "zc": "正冲正冲癸卯", "ts": "占大门外东北" }, "d0225": { "y": "移徙.祭祀.开光.祈福.出行.解除.进人口.雇庸.安床.动土.起基.上梁.安门.解除.", "j": "嫁娶.安葬.破土.作梁.纳畜.牧养.行丧.作灶.", "c": "生肖冲蛇", "s": "煞西", "ch": "收", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d0226": { "y": "嫁娶.开光.祈福.求嗣.解除.动土.安床.栽种.开池.掘井.祭祀.破土.启攒.", "j": "入宅.作灶.伐木.安葬.出火.出行.纳畜.", "c": "生肖冲马", "s": "煞南", "ch": "开", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d0224": { "y": "结网.入殓.除服.成服.移柩.安葬.破土.", "j": "诸事不宜.", "c": "生肖冲龙", "s": "煞北", "ch": "成", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d0228": { "y": "裁衣.伐木.作梁.纳财.交易.立券.", "j": "诸事不宜.", "c": "生肖冲猴", "s": "煞北", "ch": "建", "zc": "正冲正冲戊申", "ts": "占门炉外东北" }, "d0229": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出行.出火.拆卸.动土.上梁.进人口.入宅.移徙.安床.开市.交易.立券.挂匾.入殓.破土.安葬.启攒.除服.成服.", "j": "诸事不宜.", "c": "生肖冲鸡", "s": "煞西", "ch": "除", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d0227": { "y": "祭祀.合帐.裁衣.经络.伐木.作梁.安床.作灶.入殓.安葬.启攒.移柩.", "j": "词讼.出火.入宅.", "c": "生肖冲羊", "s": "煞东", "ch": "闭", "zc": "正冲正冲丁未", "ts": "房床厕外东北" }, "d0221": { "y": "嫁娶.祭祀.祈福.出行.解除.出火.拆卸.动土.入宅.移徙.安床.上梁.栽种.纳畜.破土.启攒.安葬.", "j": "开市.立券.理发.作灶.", "c": "生肖冲牛", "s": "煞西", "ch": "执", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d0231": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出行.出火.拆卸.动土.上梁.进人口.入宅.移徙.安床.开市.交易.立券.挂匾.入殓.破土.安葬.启攒.除服.成服.", "j": "诸事不宜.", "c": "生肖冲鸡", "s": "煞西", "ch": "除", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d0230": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出行.出火.拆卸.动土.上梁.进人口.入宅.移徙.安床.开市.交易.立券.挂匾.入殓.破土.安葬.启攒.除服.成服.", "j": "诸事不宜.", "c": "生肖冲鸡", "s": "煞西", "ch": "除", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d0103": { "y": "破屋.坏垣.祭祀.沐浴.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鼠", "s": "煞北", "ch": "破", "zc": "正冲正冲壬子", "ts": "房床碓外正东" }, "d0102": { "y": "祭祀.解除.余事勿取.", "j": "诸事不宜.", "c": "生肖冲猪", "s": "煞东", "ch": "执", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d0101": { "y": "入宅.安床.开光.祭祀.出火.拆卸.动土.挂匾.入殓.破土.安葬.纳畜.", "j": "嫁娶.开市.作灶.置产.作梁.伐木.", "c": "生肖冲狗", "s": "煞南", "ch": "定", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d0104": { "y": "安床.祭祀.祈福.求嗣.冠笄.伐木.架马.动土.开池.作厕.结网.入殓.除服.成服.", "j": "安门.栽种.作灶.治病.", "c": "生肖冲牛", "s": "煞西", "ch": "危", "zc": "正冲正冲癸丑", "ts": "占门厕外正东" }, "d0107": { "y": "祭祀.作灶.入殓.除服.余事勿取.", "j": "开市.安床.", "c": "生肖冲龙", "s": "煞北", "ch": "收", "zc": "正冲正冲丙辰", "ts": "仓库栖外东南" }, "d0105": { "y": "解除.扫舍.余事勿取.", "j": "诸事不宜.", "c": "生肖冲虎", "s": "煞南", "ch": "成", "zc": "正冲正冲甲寅", "ts": "碓磨炉外东南" }, "d0106": { "y": "入殓.除服.成服.移柩.启攒.安葬.修坟.立碑.", "j": "开市.伐木.嫁娶.作梁.", "c": "生肖冲兔", "s": "煞东", "ch": "成", "zc": "正冲正冲乙卯", "ts": "厨灶门外东南" }, "d0108": { "y": "塑绘.开光.沐浴.冠笄.会亲友.作灶.放水.造畜椆栖.", "j": "嫁娶.入殓.安葬.出行.", "c": "生肖冲蛇", "s": "煞西", "ch": "开", "zc": "正冲正冲丁巳", "ts": "占房床外东南" }, "d0109": { "y": "祭祀.沐浴.祈福.斋醮.订盟.纳采.裁衣.拆卸.起基.竖柱.上梁.安床.入殓.除服.成服.移柩.启攒.挂匾.求嗣.出行.合帐.造畜椆栖.", "j": "开仓.嫁娶.移徙.入宅.", "c": "生肖冲马", "s": "煞南", "ch": "闭", "zc": "正冲正冲戊午", "ts": "占门碓外东南" }, "d0112": { "y": "出行.嫁娶.订盟.纳采.入殓.安床.启攒.安葬.祭祀.裁衣.会亲友.进人口.", "j": "作灶.掘井.谢土.入宅.", "c": "生肖冲鸡", "s": "煞西", "ch": "满", "zc": "正冲正冲辛酉", "ts": "仓库门外正南" }, "d0110": { "y": "祭祀.解除.余事勿取.", "j": "诸事不宜.", "c": "生肖冲羊", "s": "煞东", "ch": "建", "zc": "正冲正冲己未", "ts": "碓磨厕外东南" }, "d0116": { "y": "解除.破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲牛", "s": "煞西", "ch": "破", "zc": "正冲正冲乙丑", "ts": "厨灶厕外西南" }, "d0113": { "y": "修饰垣墙.平治道涂.入殓.移柩.余事勿取.", "j": "嫁娶.移徙.入宅.开光.", "c": "生肖冲狗", "s": "煞南", "ch": "平", "zc": "正冲正冲壬戌", "ts": "房床栖外正南" }, "d0115": { "y": "祭祀.会亲友.出行.订盟.纳采.沐浴.修造.动土.祈福.斋醮.嫁娶.拆卸.安床.入殓.移柩.安葬.谢土.赴任.裁衣.竖柱.上梁.伐木.捕捉.栽种.破土.安门.", "j": "造屋.开市.作灶.入宅.", "c": "生肖冲鼠", "s": "煞北", "ch": "执", "zc": "正冲正冲甲子", "ts": "占碓磨外正南" }, "d0111": { "y": "沐浴.解除.订盟.纳采.裁衣.冠笄.拆卸.修造.动土.移徙.入宅.除服.成服.移柩.破土.启攒.安葬.扫舍.修坟.伐木.纳财.交易.立券.", "j": "作灶.祭祀.上梁.出行.", "c": "生肖冲猴", "s": "煞北", "ch": "除", "zc": "正冲正冲庚申", "ts": "厨灶炉外正南" }, "d0117": { "y": "塑绘.开光.出行.订盟.纳采.除服.成服.嫁娶.纳婿.入殓.移柩.启攒.安葬.立碑.", "j": "入宅.安床.", "c": "生肖冲虎", "s": "煞南", "ch": "危", "zc": "正冲正冲丙寅", "ts": "仓库炉外西南" }, "d0119": { "y": "祭祀.祈福.斋醮.塑绘.开光.除服.成服.入殓.作灶.嫁娶.捕捉.畋猎.纳财.", "j": "开仓.造屋.安葬.安床.", "c": "生肖冲龙", "s": "煞北", "ch": "收", "zc": "正冲正冲戊辰", "ts": "门鸡栖外西南" }, "d0114": { "y": "会亲友.纳采.进人口.修造.动土.竖柱.上梁.祭祀.开光.塑绘.祈福.斋醮.嫁娶.安床.移徙.入宅.安香.纳畜.", "j": "出行.治病.安葬.开市.", "c": "生肖冲猪", "s": "煞东", "ch": "定", "zc": "正冲正冲癸亥", "ts": "占门床外正南" }, "d0118": { "y": "入殓.除服.成服.移柩.启攒.安葬.立碑.余事勿取.", "j": "破土.伐木.", "c": "生肖冲兔", "s": "煞东", "ch": "成", "zc": "正冲正冲丁卯", "ts": "房床门外西南" }, "d0120": { "y": "祭祀.出行.沐浴.裁衣.祈福.斋醮.订盟.纳采.嫁娶.安机械.开市.立券.安碓硙.纳畜.", "j": "栽种.嫁娶.入殓.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "开", "zc": "正冲正冲己巳", "ts": "碓磨床外西南" }, "d0122": { "y": "解除.扫舍.祭祀.教牛马.余事勿取.", "j": "余事勿取.", "c": "生肖冲羊", "s": "煞东", "ch": "建", "zc": "正冲正冲辛未", "ts": "仓库厕外西南" }, "d0123": { "y": "开市.交易.立券.挂匾.开光.解除.伐木.作梁.出火.入宅.移徙.安床.拆卸.动土.上梁.栽种.纳畜.安葬.", "j": "嫁娶.祭祀.出行.置产.", "c": "生肖冲猴", "s": "煞北", "ch": "除", "zc": "正冲正冲壬申", "ts": "房床厕外正南" }, "d0125": { "y": "祭祀.解除.修饰垣墙.平治道涂.余事勿取.", "j": "余事勿取.", "c": "生肖冲狗", "s": "煞南", "ch": "平", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d0124": { "y": "开市.交易.立券.纳财.开池.补垣.嫁娶.纳采.纳畜.取渔.安床.", "j": "修造.上梁.入宅.祈福.探病.掘井.动土.安门.安葬.作灶.", "c": "生肖冲鸡", "s": "煞西", "ch": "满", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d0126": { "y": "嫁娶.祭祀.祈福.求嗣.动土.会亲友.起基.造仓.纳畜.牧养.作厕.进人口.", "j": "掘井.安葬.栽种.出行.作灶.开市.入宅.安门.", "c": "生肖冲猪", "s": "煞东", "ch": "定", "zc": "正冲正冲乙亥", "ts": "厨灶床外正西" }, "d0129": { "y": "嫁娶.开市.交易.立券.开光.出行.出火.拆卸.修造.入宅.移徙.动土.破土.移柩.安葬.启攒.除服.成服.", "j": "安床.伐木.祈福.纳畜.", "c": "生肖冲虎", "s": "煞南", "ch": "危", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d0127": { "y": "嫁娶.祭祀.祈福.求嗣.开光.入宅.移徙.安床.修造.动土.进人口.", "j": "掘井.安葬.栽种.出行.作灶.开市.入宅.安门.", "c": "生肖冲鼠", "s": "煞北", "ch": "执", "zc": "正冲正冲丙子", "ts": "仓库碓外西北" }, "d0128": { "y": "破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲牛", "s": "煞西", "ch": "破", "zc": "正冲正冲丁丑", "ts": "房床厕外西北" }, "d0121": { "y": "祭祀.祈福.斋醮.沐浴.安床.安机械.造车器.入殓.移柩.启攒.安葬.立碑.合帐.经络.交易.", "j": "作灶.掘井.嫁娶.入宅.", "c": "生肖冲马", "s": "煞南", "ch": "闭", "zc": "正冲正冲庚午", "ts": "厨灶碓外西南" }, "d0131": { "y": "祭祀.解除.余事勿取.", "j": "诸事不宜.", "c": "生肖冲龙", "s": "煞北", "ch": "收", "zc": "正冲正冲庚辰", "ts": "厨灶栖外西北" }, "d0130": { "y": "祭祀.入殓.破土.除服.成服.启攒.安葬.修坟.立碑.余事勿取.", "j": "余事勿取.", "c": "生肖冲兔", "s": "煞东", "ch": "成", "zc": "正冲正冲己卯", "ts": "占门炉外西北" } } ukui-panel-4.0.0.4/plugin-calendar/html/hlnew/hl2010.json0000644000175000017500000027376114560306203021315 0ustar fengfeng{ "d1221": { "y": "嫁娶.订盟.纳采.祭祀.祈福.修造.动土.移徙.入宅.", "j": "开市.安葬.", "c": "生肖冲猪", "s": "煞东", "ch": "执", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d1121": { "y": "祭祀.沐浴.出行.冠笄.进人口.余事勿取.", "j": "嫁娶.动土.安葬.作灶.", "c": "生肖冲蛇", "s": "煞西", "ch": "建", "zc": "正冲正冲己巳", "ts": "碓磨床外西南" }, "d1201": { "y": "解除.余事勿取.", "j": "余事勿取.", "c": "生肖冲兔", "s": "煞东", "ch": "开", "zc": "正冲正冲己卯", "ts": "占门炉外西北" }, "d1202": { "y": "安床.祭祀.开池.补垣.入殓.移柩.破土.启攒.", "j": "入宅.移徙.嫁娶.掘井.作灶.出火.进人口.开市.开光.", "c": "生肖冲龙", "s": "煞北", "ch": "闭", "zc": "正冲正冲庚辰", "ts": "厨灶栖外西北" }, "d1203": { "y": "祭祀.沐浴.余事勿取.", "j": "余事勿取.", "c": "生肖冲蛇", "s": "煞西", "ch": "建", "zc": "正冲正冲辛巳", "ts": "仓库床外西北" }, "d1204": { "y": "嫁娶.开光.出行.解除.出火.拆卸.修造.进人口.动土.入宅.移徙.栽种.纳畜.掘井.安葬.除服.成服.", "j": "置产.安床.", "c": "生肖冲马", "s": "煞南", "ch": "除", "zc": "正冲正冲壬午", "ts": "房床碓外正北" }, "d1205": { "y": "开光.裁衣.安门.会亲友.安床.结网.理发.", "j": "嫁娶.冠笄.出行.祈福.安葬.伐木.入宅.移徙.出火.栽种.动土.上梁.", "c": "生肖冲羊", "s": "煞东", "ch": "满", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d1206": { "y": "嫁娶.开光.出行.出火.拆卸.修造.动土.入宅.移徙.安床.上梁.开市.交易.立券.栽种.", "j": "祈福.祭祀.伐木.掘井.作灶.谢土.", "c": "生肖冲猴", "s": "煞北", "ch": "平", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d1207": { "y": "祭祀.入殓.移柩.余事勿取.", "j": "入宅.修造.动土.破土.安门.上梁.", "c": "生肖冲鸡", "s": "煞西", "ch": "平", "zc": "正冲正冲乙酉", "ts": "厨灶门外正北" }, "d1208": { "y": "塑绘.开光.订盟.纳采.裁衣.冠笄.拆卸.修造.安床.入宅.出火.安葬.谢土.赴任.", "j": "掘井.伐木.斋醮.作灶.", "c": "生肖冲狗", "s": "煞南", "ch": "定", "zc": "正冲正冲丙戌", "ts": "仓库栖外正北" }, "d1209": { "y": "祭祀.塑绘.开光.裁衣.冠笄.嫁娶.纳采.拆卸.修造.动土.竖柱.上梁.安床.移徙.入宅.安香.结网.捕捉.畋猎.伐木.进人口.放水.", "j": "出行.安葬.修坟.开市.", "c": "生肖冲猪", "s": "煞东", "ch": "执", "zc": "正冲正冲丁亥", "ts": "占房床房内北" }, "d1210": { "y": "祭祀.求医.破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鼠", "s": "煞北", "ch": "破", "zc": "正冲正冲戊子", "ts": "占门碓房内北" }, "d1211": { "y": "祭祀.祈福.斋醮.出行.冠笄.安机械.移徙.入宅.安香.安床.除服.成服.移柩.启攒.", "j": "开光.栽种.治病.安门.作灶.", "c": "生肖冲牛", "s": "煞西", "ch": "危", "zc": "正冲正冲己丑", "ts": "碓磨厕房内北" }, "d1212": { "y": "塑绘.斋醮.出行.拆卸.解除.修造.移徙.造船.入殓.除服.成服.移柩.启攒.修坟.立碑.谢土.", "j": "", "c": "生肖冲虎", "s": "煞南", "ch": "成", "zc": "正冲正冲庚寅", "ts": "厨灶炉房内北" }, "d1213": { "y": "祭祀.沐浴.安床.纳财.畋猎.捕捉.", "j": "开市.破土.", "c": "生肖冲兔", "s": "煞东", "ch": "收", "zc": "正冲正冲辛卯", "ts": "仓库门房内北" }, "d1214": { "y": "订盟.纳采.祭祀.祈福.修造.动土.上梁.破土.", "j": "嫁娶.作灶.", "c": "生肖冲龙", "s": "煞北", "ch": "开", "zc": "正冲正冲壬辰", "ts": "房床栖房内南" }, "d1215": { "y": "出行.沐浴.理发.补垣.塞穴.", "j": "入宅.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "闭", "zc": "正冲正冲癸巳", "ts": "占门床房内南" }, "d1216": { "y": "教牛马.余事勿取.", "j": "入宅.动土.破土.余事勿取.", "c": "生肖冲马", "s": "煞南", "ch": "建", "zc": "正冲正冲甲午", "ts": "占碓磨房内南" }, "d1217": { "y": "嫁娶.出行.求医.治病.祭祀.祈福.上梁.纳畜.", "j": "开市.安葬.", "c": "生肖冲羊", "s": "煞东", "ch": "除", "zc": "正冲正冲乙未", "ts": "厨灶厕房内南" }, "d1218": { "y": "开市.立券.开光.解除.安机械.上梁.启攒.安葬.", "j": "嫁娶.祈福.", "c": "生肖冲猴", "s": "煞北", "ch": "满", "zc": "正冲正冲丙申", "ts": "仓库炉房内南" }, "d1219": { "y": "平治道涂.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鸡", "s": "煞西", "ch": "平", "zc": "正冲正冲丁酉", "ts": "房床门房内南" }, "d1220": { "y": "求嗣.斋醮.塑绘.订盟.纳采.出火.拆卸.修造.动土.造桥.安机械.栽种.纳畜.牧养.入殓.除服.成服.移柩.破土.安葬.", "j": "开市.嫁娶.", "c": "生肖冲狗", "s": "煞南", "ch": "定", "zc": "正冲正冲戊戌", "ts": "门鸡栖房内东" }, "d1222": { "y": "治病.破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鼠", "s": "煞北", "ch": "破", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d1223": { "y": "祭祀.祈福.求嗣.斋醮.开光.入学.订盟.冠笄.伐木.修造.动土.起基.放水.交易.开池.", "j": "造桥.安门.理发.造庙.栽种.作灶.", "c": "生肖冲牛", "s": "煞西", "ch": "危", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d1224": { "y": "解除.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲虎", "s": "煞南", "ch": "成", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" }, "d1225": { "y": "沐浴.理发.扫舍.", "j": "伐木.纳畜.上梁.入宅.作灶.造畜椆栖.嫁娶.安葬.作梁.造船.安门.", "c": "生肖冲兔", "s": "煞东", "ch": "收", "zc": "正冲正冲癸卯", "ts": "占大门外东北" }, "d1226": { "y": "祭祀.开光.祈福.解除.作梁.动土.安床.掘井.栽种.纳畜.破土.移柩.", "j": "嫁娶.出行.赴任.造屋.入殓.入宅.移徙.出火.进人口.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "开", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d1227": { "y": "诸事不宜.作梁.修造.动土.安门.作灶.塞穴.开池.作厕.筑堤.补垣.栽种.", "j": "嫁娶.祈福.掘井.行丧.安葬.安床.", "c": "生肖冲蛇", "s": "煞西", "ch": "闭", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d1228": { "y": "安葬.启攒.移柩.入殓.除服.成服.", "j": "余事勿取.", "c": "生肖冲马", "s": "煞南", "ch": "建", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d1229": { "y": "嫁娶.祭祀.祈福.求嗣.出行.出火.拆卸.开市.交易.立券.挂匾.入宅.移徙.安床.栽种.", "j": "作灶.塑绘.行丧.词讼.伐木.安葬.", "c": "生肖冲羊", "s": "煞东", "ch": "除", "zc": "正冲正冲丁未", "ts": "房床厕外东北" }, "d1230": { "y": "理发.开光.解除.拆卸.修造.安葬.开市.交易.立券.挂匾.安床.栽种.", "j": "入宅.移徙.作灶.祈福.祭祀.嫁娶.谢土.掘井.造屋.探病.", "c": "生肖冲猴", "s": "煞北", "ch": "满", "zc": "正冲正冲戊申", "ts": "占门炉外东北" }, "d1231": { "y": "祭祀.修饰垣墙.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鸡", "s": "煞西", "ch": "平", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d1021": { "y": "祭祀.解除.破屋.坏垣.余事勿取.", "j": "余事勿取.", "c": "生肖冲狗", "s": "煞南", "ch": "破", "zc": "正冲正冲戊戌", "ts": "门鸡栖房内东" }, "d1101": { "y": "祭祀.入殓.移柩.开生坟.破土.启攒.安葬.除服.成服.余事勿取.", "j": "余事勿取.", "c": "生肖冲鸡", "s": "煞西", "ch": "执", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d1102": { "y": "祭祀.解除.破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲狗", "s": "煞南", "ch": "破", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d1103": { "y": "嫁娶.求嗣.纳采.进人口.纳财.结网.纳畜.牧养.会亲友.", "j": "上梁.作灶.伐木.出行.安葬.安门.理发.", "c": "生肖冲猪", "s": "煞东", "ch": "危", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d1104": { "y": "嫁娶.祭祀.开市.开光.出行.入宅.移徙.出火.拆卸.修造.安床.", "j": "纳畜.伐木.置产.作梁.行丧.安葬.修坟.立碑.", "c": "生肖冲鼠", "s": "煞北", "ch": "成", "zc": "正冲正冲壬子", "ts": "房床碓外正东" }, "d1105": { "y": "嫁娶.祭祀.作灶.纳财.", "j": "安葬.开市.修坟.立碑.", "c": "生肖冲牛", "s": "煞西", "ch": "收", "zc": "正冲正冲癸丑", "ts": "占门厕外正东" }, "d1106": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出行.解除.出火.进人口.开市.交易.立券.挂匾.纳财.入宅.移徙.栽种.破土.谢土.", "j": "安床.安葬.", "c": "生肖冲虎", "s": "煞南", "ch": "开", "zc": "正冲正冲甲寅", "ts": "碓磨炉外东南" }, "d1107": { "y": "祭祀.祈福.求嗣.斋醮.沐浴.冠笄.出行.理发.拆卸.解除.起基.动土.定磉.安碓硙.开池.掘井.扫舍.除服.成服.移柩.启攒.立碑.谢土.", "j": "移徙.入宅.安门.作梁.安葬.", "c": "生肖冲兔", "s": "煞东", "ch": "开", "zc": "正冲正冲乙卯", "ts": "厨灶门外东南" }, "d1108": { "y": "嫁娶.冠笄.安床.纳采.会亲友.塞穴.捕捉.置产.造畜椆栖.", "j": "开光.掘井.安葬.谢土.修坟.", "c": "生肖冲龙", "s": "煞北", "ch": "闭", "zc": "正冲正冲丙辰", "ts": "仓库栖外东南" }, "d1109": { "y": "祭祀.沐浴.余事勿取.", "j": "诸事不宜.", "c": "生肖冲蛇", "s": "煞西", "ch": "建", "zc": "正冲正冲丁巳", "ts": "占房床外东南" }, "d1110": { "y": "祭祀.会亲友.嫁娶.沐浴.修造.动土.祈福.开光.塑绘.出行.订盟.纳采.裁衣.入殓.除服.成服.移柩.启攒.赴任.竖柱.上梁.纳财.扫舍.栽种.纳畜.伐木.", "j": "入宅.作灶.安床.开仓.", "c": "生肖冲马", "s": "煞南", "ch": "除", "zc": "正冲正冲戊午", "ts": "占门碓外东南" }, "d1111": { "y": "理发.会亲友.补垣.塞穴.结网.", "j": "嫁娶.入宅.安门.移徙.", "c": "生肖冲羊", "s": "煞东", "ch": "满", "zc": "正冲正冲己未", "ts": "碓磨厕外东南" }, "d1112": { "y": "祭祀.祈福.订盟.纳采.裁衣.拆卸.修造.动土.起基.安床.移徙.入宅.安香.除服.成服.入殓.移柩.安葬.谢土.赴任.会亲友.进人口.出行.竖柱.上梁.经络.开市.交易.立券.纳财.开仓.", "j": "作灶.治病.伐木.作梁.", "c": "生肖冲猴", "s": "煞北", "ch": "平", "zc": "正冲正冲庚申", "ts": "厨灶炉外正南" }, "d1113": { "y": "祭祀.祈福.订盟.纳采.裁衣.拆卸.修造.动土.起基.安床.移徙.入宅.安香.入殓.移柩.安葬.谢土.赴任.进人口.会亲友.", "j": "作灶.治病.", "c": "生肖冲鸡", "s": "煞西", "ch": "定", "zc": "正冲正冲辛酉", "ts": "仓库门外正南" }, "d1114": { "y": "祭祀.塑绘.开光.订盟.纳采.嫁娶.安床.进人口.入殓.除服.成服.移柩.启攒.安葬.立碑.", "j": "开市.交易.破土.作灶.", "c": "生肖冲狗", "s": "煞南", "ch": "执", "zc": "正冲正冲壬戌", "ts": "房床栖外正南" }, "d1115": { "y": "祭祀.解除.破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲猪", "s": "煞东", "ch": "破", "zc": "正冲正冲癸亥", "ts": "占门床外正南" }, "d1116": { "y": "祭祀.解除.祈福.开光.塑绘.斋醮.订盟.纳采.裁衣.冠笄.拆卸.修造.动土.入殓.除服.成服.移柩.启攒.安床.赴任.出行.移徙.竖柱.上梁.伐木.栽种.破土.安葬.纳畜.", "j": "造屋.治病.", "c": "生肖冲鼠", "s": "煞北", "ch": "危", "zc": "正冲正冲甲子", "ts": "占碓磨外正南" }, "d1117": { "y": "祭祀.祈福.订盟.纳采.裁衣.合帐.冠笄.安机械.安床.造畜椆栖.入殓.移柩.启攒.安葬.谢土.除服.成服.会亲友.竖柱.上梁.经络.开市.交易.立券.纳财.纳畜.筑堤.", "j": "嫁娶.入宅.治病.赴任.", "c": "生肖冲牛", "s": "煞西", "ch": "成", "zc": "正冲正冲乙丑", "ts": "厨灶厕外西南" }, "d1118": { "y": "沐浴.扫舍.余事勿取.", "j": "诸事不宜.", "c": "生肖冲虎", "s": "煞南", "ch": "收", "zc": "正冲正冲丙寅", "ts": "仓库炉外西南" }, "d1119": { "y": "诸事不宜.", "j": "诸事不宜.", "c": "生肖冲兔", "s": "煞东", "ch": "开", "zc": "正冲正冲丁卯", "ts": "房床门外西南" }, "d1120": { "y": "祈福.斋醮.出行.订盟.纳采.入殓.移柩.破土.安葬.立碑.结网.", "j": "入宅.作灶.", "c": "生肖冲龙", "s": "煞北", "ch": "闭", "zc": "正冲正冲戊辰", "ts": "门鸡栖外西南" }, "d1122": { "y": "祭祀.祈福.斋醮.塑绘.开光.订盟.纳采.裁衣.冠笄.嫁娶.拆卸.入宅.安香.入殓.移柩.理发.安葬.修坟.谢土.赴任.移徙.沐浴.治病.破土.启攒.整手足甲.入学.作梁.", "j": "开市.", "c": "生肖冲马", "s": "煞南", "ch": "除", "zc": "正冲正冲庚午", "ts": "厨灶碓外西南" }, "d1123": { "y": "诸事不宜.", "j": "诸事不宜.", "c": "生肖冲羊", "s": "煞东", "ch": "满", "zc": "正冲正冲辛未", "ts": "仓库厕外西南" }, "d1124": { "y": "开市.交易.立券.挂匾.纳财.开光.出行.入宅.移徙.安床.纳畜.入殓.移柩.安葬.", "j": "栽种.破土.置产.祭祀.嫁娶.动土.作灶.祈福.", "c": "生肖冲猴", "s": "煞北", "ch": "平", "zc": "正冲正冲壬申", "ts": "房床厕外正南" }, "d1125": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出行.解除.出火.出行.拆卸.进人口.入宅.移徙.安床.栽种.动土.修造.纳畜.入殓.安葬.立碑.除服.成服.", "j": "", "c": "生肖冲鸡", "s": "煞西", "ch": "定", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d1126": { "y": "开光.解除.拆卸.修造.动土.安床.纳畜.安葬.启攒.入殓.", "j": "嫁娶.开市.出火.栽种.破土.动土.入宅.移徙.安香.分居.掘井.作灶.", "c": "生肖冲狗", "s": "煞南", "ch": "执", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d1127": { "y": "破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲猪", "s": "煞东", "ch": "破", "zc": "正冲正冲乙亥", "ts": "厨灶床外正西" }, "d1128": { "y": "嫁娶.祭祀.开光.出火.出行.拆卸.修造.动土.解除.开市.交易.立券.挂匾.纳财.入宅.移徙.安床.栽种.纳畜.", "j": "探病.安葬.", "c": "生肖冲鼠", "s": "煞北", "ch": "危", "zc": "正冲正冲丙子", "ts": "仓库碓外西北" }, "d1129": { "y": "祭祀.祈福.求嗣.开光.解除.理发.会亲友.栽种.纳畜.牧养.安葬.修坟.立碑.启攒.", "j": "入宅.作灶.词讼.移徙.出行.赴任.", "c": "生肖冲牛", "s": "煞西", "ch": "成", "zc": "正冲正冲丁丑", "ts": "房床厕外西北" }, "d1130": { "y": "祭祀.沐浴.结网.移柩.入殓.除服.成服.", "j": "安床.开市.交易.出货财.安葬.修坟.嫁娶.作灶.", "c": "生肖冲虎", "s": "煞南", "ch": "收", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d0921": { "y": "祭祀.沐浴.赴任.出行.余事勿取.", "j": "诸事不宜.", "c": "生肖冲龙", "s": "煞北", "ch": "除", "zc": "正冲正冲戊辰", "ts": "门鸡栖外西南" }, "d1001": { "y": "嫁娶.出行.伐木.拆卸.修造.动土.移徙.安葬.破土.修坟.立碑.", "j": "掘井.祈福.安床.开市.入宅.挂匾.开光.", "c": "生肖冲虎", "s": "煞南", "ch": "闭", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d1002": { "y": "祭祀.出行.扫舍.余事勿取.", "j": "诸事不宜.", "c": "生肖冲兔", "s": "煞东", "ch": "建", "zc": "正冲正冲己卯", "ts": "占门炉外西北" }, "d1003": { "y": "嫁娶.祭祀.塑绘.开光.出行.解除.理发.整手足甲.动土.安床.开池.放水.扫舍.", "j": "伐木.行丧.作灶.作梁.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "除", "zc": "正冲正冲庚辰", "ts": "厨灶栖外西北" }, "d1004": { "y": "开市.交易.立券.挂匾.开光.出行.入宅.移徙.安床.出火.上梁.", "j": "作灶.行丧.理发.乘船.嫁娶.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "满", "zc": "正冲正冲辛巳", "ts": "仓库床外西北" }, "d1005": { "y": "祭祀.沐浴.修饰垣墙.平治道涂.余事勿取.", "j": "诸事不宜.", "c": "生肖冲马", "s": "煞南", "ch": "平", "zc": "正冲正冲壬午", "ts": "房床碓外正北" }, "d1006": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出行.出火.拆卸.修造.动土.进人口.入宅.移徙.安床.开市.交易.立券.挂匾.栽种.纳畜.入殓.安葬.除服.成服.", "j": "", "c": "生肖冲羊", "s": "煞东", "ch": "定", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d1007": { "y": "解除.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲猴", "s": "煞北", "ch": "执", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d1008": { "y": "祭祀.祈福.求嗣.斋醮.造庙.出火.安机械.会亲友.开市.交易.立券.纳财.习艺.经络.求医.治病.开池.作厕.畋猎.结网.栽种.牧养.安葬.破土.启攒.", "j": "开光.嫁娶.掘井.伐木.作梁.", "c": "生肖冲鸡", "s": "煞西", "ch": "执", "zc": "正冲正冲乙酉", "ts": "厨灶门外正北" }, "d1009": { "y": "破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲狗", "s": "煞南", "ch": "破", "zc": "正冲正冲丙戌", "ts": "仓库栖外正北" }, "d1010": { "y": "会亲友.嫁娶.订盟.纳采.纳婿.拆卸.修造.动土.起基.竖柱.上梁.安床.会亲友.纳财.", "j": "出行.祈福.安葬.作灶.", "c": "生肖冲猪", "s": "煞东", "ch": "危", "zc": "正冲正冲丁亥", "ts": "占房床房内北" }, "d1011": { "y": "祭祀.塑绘.开光.祈福.斋醮.出行.订盟.纳采.裁衣.嫁娶.拆卸.修造.安床.入宅.安香.入殓.启攒.安葬.谢土.赴任.会亲友.进人口.出行.移徙.上梁.经络.开市.交易.立券.纳财.", "j": "开仓.冠笄.伐木.作梁.", "c": "生肖冲鼠", "s": "煞北", "ch": "成", "zc": "正冲正冲戊子", "ts": "占门碓房内北" }, "d1012": { "y": "祭祀.作灶.入殓.除服.成服.畋猎.", "j": "栽种.动土.安葬.开市.", "c": "生肖冲牛", "s": "煞西", "ch": "收", "zc": "正冲正冲己丑", "ts": "碓磨厕房内北" }, "d1013": { "y": "祭祀.祈福.斋醮.沐浴.竖柱.订盟.纳采.嫁娶.拆卸.入宅.移柩.启攒.谢土.赴任.出火.纳畜.", "j": "作灶.入殓.安葬.安床.", "c": "生肖冲虎", "s": "煞南", "ch": "开", "zc": "正冲正冲庚寅", "ts": "厨灶炉房内北" }, "d1014": { "y": "嫁娶.祭祀.安机械.入殓.破土.安葬.", "j": "动土.上梁.", "c": "生肖冲兔", "s": "煞东", "ch": "闭", "zc": "正冲正冲辛卯", "ts": "仓库门房内北" }, "d1131": { "y": "解除.余事勿取.", "j": "余事勿取.", "c": "生肖冲兔", "s": "煞东", "ch": "开", "zc": "正冲正冲己卯", "ts": "占门炉外西北" }, "d1015": { "y": "作灶.造畜椆栖.", "j": "行丧.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "建", "zc": "正冲正冲壬辰", "ts": "房床栖房内南" }, "d1016": { "y": "沐浴.理发.入学.习艺.进人口.", "j": "嫁娶.入宅.", "c": "生肖冲蛇", "s": "煞西", "ch": "除", "zc": "正冲正冲癸巳", "ts": "占门床房内南" }, "d1017": { "y": "开光.针灸.会亲友.启攒.安葬.", "j": "开市.动土.破土.", "c": "生肖冲马", "s": "煞南", "ch": "满", "zc": "正冲正冲甲午", "ts": "占碓磨房内南" }, "d1018": { "y": "祭祀.结网.造畜椆栖.余事勿取.", "j": "余事勿取.", "c": "生肖冲羊", "s": "煞东", "ch": "平", "zc": "正冲正冲乙未", "ts": "厨灶厕房内南" }, "d1019": { "y": "入殓.除服.成服.移柩.破土.启攒.安葬.", "j": "移徙.入宅.", "c": "生肖冲猴", "s": "煞北", "ch": "定", "zc": "正冲正冲丙申", "ts": "仓库炉房内南" }, "d1020": { "y": "嫁娶.订盟.纳采.出行.祭祀.祈福.动土.移徙.入宅.破土.安葬.", "j": "开市.赴任.", "c": "生肖冲鸡", "s": "煞西", "ch": "执", "zc": "正冲正冲丁酉", "ts": "房床门房内南" }, "d1022": { "y": "订盟.纳采.会亲友.安机械.纳财.牧养.", "j": "祈福.安葬.", "c": "生肖冲猪", "s": "煞东", "ch": "危", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d1023": { "y": "嫁娶.订盟.纳采.出行.开市.祭祀.祈福.动土.移徙.入宅.破土.安葬.", "j": "斋醮.安门.", "c": "生肖冲鼠", "s": "煞北", "ch": "成", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d1024": { "y": "祭祀.塞穴.余事勿取.", "j": "诸事不宜.", "c": "生肖冲牛", "s": "煞西", "ch": "收", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d1025": { "y": "祭祀.祈福.求嗣.开光.开市.出行.解除.动土.起基.置产.栽种.", "j": "嫁娶.作灶.修坟.安门.入宅.立碑.安葬.安床.", "c": "生肖冲虎", "s": "煞南", "ch": "开", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" }, "d1026": { "y": "祭祀.解除.裁衣.理发.安床.作灶.造畜椆栖.放水.筑堤.补垣.塞穴.整手足甲.扫舍.", "j": "嫁娶.开光.会亲友.掘井.安门.栽种.", "c": "生肖冲兔", "s": "煞东", "ch": "闭", "zc": "正冲正冲癸卯", "ts": "占大门外东北" }, "d1027": { "y": "祭祀.出行.裁衣.冠笄.会亲友.造畜椆栖.嫁娶.竖柱.上梁.移徙.纳财.纳畜.", "j": "动土.伐木.作梁.行丧.安葬.开生坟.", "c": "生肖冲龙", "s": "煞北", "ch": "建", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d1028": { "y": "祭祀.祈福.求嗣.开光.出行.解除.移徙.伐木.安床.纳畜.出火.拆卸.", "j": "安葬.修坟.作灶.破土.造庙.动土.嫁娶.纳采.", "c": "生肖冲蛇", "s": "煞西", "ch": "除", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d1029": { "y": "开市.交易.立券.纳财.会亲友.开光.理发.入殓.移柩.安葬.启攒.", "j": "嫁娶.作灶.出火.出行.入宅.移徙.安床.祈福.上梁.", "c": "生肖冲马", "s": "煞南", "ch": "满", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d1030": { "y": "造畜椆栖.平治道涂.余事勿取.", "j": "诸事不宜.", "c": "生肖冲羊", "s": "煞东", "ch": "平", "zc": "正冲正冲丁未", "ts": "房床厕外东北" }, "d1031": { "y": "入殓.破土.安葬.启攒.除服.成服.余事勿取.", "j": "余事勿取.", "c": "生肖冲猴", "s": "煞北", "ch": "定", "zc": "正冲正冲戊申", "ts": "占门炉外东北" }, "d0821": { "y": "嫁娶.订盟.纳采.出行.开市.祭祀.祈福.移徙.入宅.启攒.安葬.", "j": "动土.破土.", "c": "生肖冲鸡", "s": "煞西", "ch": "危", "zc": "正冲正冲丁酉", "ts": "房床门房内南" }, "d0901": { "y": "破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲猴", "s": "煞北", "ch": "破", "zc": "正冲正冲戊申", "ts": "占门炉外东北" }, "d0902": { "y": "祭祀.结网.入殓.移柩.启攒.安葬.移柩.除服.成服.合寿木.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鸡", "s": "煞西", "ch": "危", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d0903": { "y": "嫁娶.出火.拆卸.祭祀.祈福.开光.伐木.动土.开市.交易.立券.入宅.移徙.安床.纳畜.入殓.安葬.", "j": "栽种.作灶.针灸.出行.", "c": "生肖冲狗", "s": "煞南", "ch": "成", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d0904": { "y": "祭祀.开光.解除.移徙.裁衣.开市.立券.祈福.求嗣.进人口.交易.纳财.纳畜.", "j": "动土.破土.理发.出行.入宅.分居.安香.出火.", "c": "生肖冲猪", "s": "煞东", "ch": "收", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d0905": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出行.解除.安床.栽种.移柩.进人口.会亲友.除服.成服.", "j": "造屋.入殓.安葬.伐木.入宅.移徙.置产.纳畜.", "c": "生肖冲鼠", "s": "煞北", "ch": "开", "zc": "正冲正冲壬子", "ts": "房床碓外正东" }, "d0906": { "y": "祭祀.动土.筑堤.开池.会亲友.塞穴.入殓.移柩.破土.安葬.", "j": "开光.出行.修造.上梁.入宅.安门.作灶.裁衣.", "c": "生肖冲牛", "s": "煞西", "ch": "闭", "zc": "正冲正冲癸丑", "ts": "占门厕外正东" }, "d0907": { "y": "祭祀.裁衣.安门.纳财.扫舍.出行.进人口.作灶.纳畜.造畜椆栖.", "j": "安床.动土.安葬.开生坟.合寿木.", "c": "生肖冲虎", "s": "煞南", "ch": "建", "zc": "正冲正冲甲寅", "ts": "碓磨炉外东南" }, "d0908": { "y": "祭祀.祈福.求嗣.出行.沐浴.交易.扫舍.教牛马.", "j": "动土.作灶.行丧.安葬.修坟.", "c": "生肖冲兔", "s": "煞东", "ch": "建", "zc": "正冲正冲乙卯", "ts": "厨灶门外东南" }, "d0909": { "y": "出行.解除.纳采.冠笄.雕刻.修造.动土.起基.上梁.合脊.安床.移徙.入宅.开市.栽种.作厕.", "j": "造庙.安门.行丧.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "除", "zc": "正冲正冲丙辰", "ts": "仓库栖外东南" }, "d0910": { "y": "祭祀.沐浴.解除.理发.冠笄.安机械.作灶.造仓.开市.开池.作厕.补垣.塞穴.断蚁.结网.", "j": "嫁娶.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "满", "zc": "正冲正冲丁巳", "ts": "占房床外东南" }, "d0911": { "y": "祭祀.沐浴.修饰垣墙.平治道涂.", "j": "嫁娶.入宅.", "c": "生肖冲马", "s": "煞南", "ch": "平", "zc": "正冲正冲戊午", "ts": "占门碓外东南" }, "d0912": { "y": "祭祀.会亲友.纳采.嫁娶.开光.塑绘.斋醮.安香.开市.立券.除服.成服.入殓.移柩.安葬.赴任.进人口.出行.裁衣.修造.动土.上梁.经络.交易.", "j": "入宅.伐木.", "c": "生肖冲羊", "s": "煞东", "ch": "定", "zc": "正冲正冲己未", "ts": "碓磨厕外东南" }, "d0913": { "y": "祭祀.冠笄.会亲友.拆卸.起基.除服.成服.移柩.启攒.安葬.沐浴.捕捉.开光.塑绘.", "j": "作灶.祭祀.入宅.嫁娶.", "c": "生肖冲猴", "s": "煞北", "ch": "执", "zc": "正冲正冲庚申", "ts": "厨灶炉外正南" }, "d0914": { "y": "祭祀.沐浴.破屋.坏垣.余事勿取.", "j": "移徙.入宅.出行.栽种.", "c": "生肖冲鸡", "s": "煞西", "ch": "破", "zc": "正冲正冲辛酉", "ts": "仓库门外正南" }, "d0915": { "y": "祭祀.塑绘.开光.出行.解除.订盟.嫁娶.拆卸.起基.安床.入宅.开市.入殓.除服.成服.移柩.破土.谢土.挂匾.开柱眼.交易.", "j": "造桥.冠笄.造屋.掘井.", "c": "生肖冲狗", "s": "煞南", "ch": "危", "zc": "正冲正冲壬戌", "ts": "房床栖外正南" }, "d0916": { "y": "祭祀.赴任.动土.上梁.开光.塑绘.冠笄.拆卸.起基.安床.开市.立券.赴任.经络.", "j": "定磉.安葬.", "c": "生肖冲猪", "s": "煞东", "ch": "成", "zc": "正冲正冲癸亥", "ts": "占门床外正南" }, "d0917": { "y": "祭祀.裁衣.冠笄.嫁娶.纳婿.会亲友.除服.成服.移柩.捕捉.进人口.入殓.", "j": "移徙.入宅.作灶.安葬.", "c": "生肖冲鼠", "s": "煞北", "ch": "收", "zc": "正冲正冲甲子", "ts": "占碓磨外正南" }, "d0918": { "y": "祭祀.诸事不宜.", "j": "入殓.安葬.开市.交易.", "c": "生肖冲牛", "s": "煞西", "ch": "开", "zc": "正冲正冲乙丑", "ts": "厨灶厕外西南" }, "d0919": { "y": "祭祀.裁衣.冠笄.嫁娶.安机械.拆卸.动土.起基.移徙.入宅.入殓.启攒.安葬.造仓.经络.", "j": "安床.开光.开市.交易.", "c": "生肖冲虎", "s": "煞南", "ch": "闭", "zc": "正冲正冲丙寅", "ts": "仓库炉外西南" }, "d0920": { "y": "祭祀.出行.成服.除服.沐浴.入殓.", "j": "动土.冠笄.移徙.入宅.开市.竖柱.上梁.", "c": "生肖冲兔", "s": "煞东", "ch": "建", "zc": "正冲正冲丁卯", "ts": "房床门外西南" }, "d0922": { "y": "诸事不宜.", "j": "诸事不宜.", "c": "生肖冲蛇", "s": "煞西", "ch": "满", "zc": "正冲正冲己巳", "ts": "碓磨床外西南" }, "d0923": { "y": "沐浴.入殓.移柩.除服.成服.破土.平治道涂.", "j": "嫁娶.移徙.入宅.开市.", "c": "生肖冲马", "s": "煞南", "ch": "平", "zc": "正冲正冲庚午", "ts": "厨灶碓外西南" }, "d0924": { "y": "嫁娶.祭祀.祈福.求嗣.沐浴.出火.出行.拆卸.修造.动土.进人口.开市.交易.立券.入宅.移徙.安床.栽种.纳畜.入殓.安葬.启攒.除服.成服.", "j": "", "c": "生肖冲羊", "s": "煞东", "ch": "定", "zc": "正冲正冲辛未", "ts": "仓库厕外西南" }, "d0925": { "y": "开光.解除.起基.动土.拆卸.上梁.立碑.修坟.安葬.破土.启攒.移柩.", "j": "嫁娶.出行.安床.作灶.祭祀.入宅.移徙.出火.进人口.置产.", "c": "生肖冲猴", "s": "煞北", "ch": "执", "zc": "正冲正冲壬申", "ts": "房床厕外正南" }, "d0926": { "y": "破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鸡", "s": "煞西", "ch": "破", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d0927": { "y": "嫁娶.祈福.求嗣.出行.出火.拆卸.修造.动土.上梁.开光.进人口.开市.交易.立券.挂匾.安床.入宅.移徙.栽种.伐木.入殓.破土.除服.成服.", "j": "", "c": "生肖冲狗", "s": "煞南", "ch": "危", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d0928": { "y": "开市.交易.立券.挂匾.祭祀.开光.进人口.入宅.安床.出火.拆卸.修造.动土.栽种.", "j": "嫁娶.立碑.出行.伐木.安葬.行丧.移徙.纳畜.", "c": "生肖冲猪", "s": "煞东", "ch": "成", "zc": "正冲正冲乙亥", "ts": "厨灶床外正西" }, "d0929": { "y": "祭祀.理发.会亲友.进人口.嫁娶.针灸.入殓.移柩.", "j": "探病.开渠.安葬.伐木.作灶.入宅.", "c": "生肖冲鼠", "s": "煞北", "ch": "收", "zc": "正冲正冲丙子", "ts": "仓库碓外西北" }, "d0930": { "y": "祭祀.立碑.修坟.启攒.除服.成服.余事勿取.", "j": "余事勿取.", "c": "生肖冲牛", "s": "煞西", "ch": "开", "zc": "正冲正冲丁丑", "ts": "房床厕外西北" }, "d0931": { "y": "嫁娶.出行.伐木.拆卸.修造.动土.移徙.安葬.破土.修坟.立碑.", "j": "掘井.祈福.安床.开市.入宅.挂匾.开光.", "c": "生肖冲虎", "s": "煞南", "ch": "闭", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d0801": { "y": "祭祀.出行.交易.割蜜.造畜椆栖.", "j": "嫁娶.作灶.安葬.动土.词讼.作梁.伐木.掘井.破土.移徙.", "c": "生肖冲牛", "s": "煞西", "ch": "建", "zc": "正冲正冲丁丑", "ts": "房床厕外西北" }, "d0721": { "y": "嫁娶.祭祀.祈福.斋醮.治病.破土.安葬.", "j": "开市.入宅.", "c": "生肖冲虎", "s": "煞南", "ch": "除", "zc": "正冲正冲丙寅", "ts": "仓库炉外西南" }, "d0802": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出火.拆卸.修造.动土.进人口.开市.交易.立券.挂匾.入宅.移徙.栽种.纳畜.入殓.启攒.除服.成服.", "j": "", "c": "生肖冲虎", "s": "煞南", "ch": "除", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d0803": { "y": "嫁娶.开光.解除.安床.牧养.理发.开市.入殓.启攒.移柩.安葬.扫舍.", "j": "作灶.动土.上梁.栽种.入宅.移徙.修造.祈福.", "c": "生肖冲兔", "s": "煞东", "ch": "满", "zc": "正冲正冲己卯", "ts": "占门炉外西北" }, "d0804": { "y": "祭祀.解除.余事勿取.", "j": "诸事不宜.", "c": "生肖冲龙", "s": "煞北", "ch": "平", "zc": "正冲正冲庚辰", "ts": "厨灶栖外西北" }, "d0805": { "y": "祭祀.祈福.求嗣.开光.伐木.出火.拆卸.入宅.安床.修造.动土.上梁.挂匾.纳畜.", "j": "嫁娶.栽种.行丧.理发.修坟.行丧.作灶.", "c": "生肖冲蛇", "s": "煞西", "ch": "定", "zc": "正冲正冲辛巳", "ts": "仓库床外西北" }, "d0806": { "y": "解除.祭祀.理发.入殓.安葬.破土.", "j": "嫁娶.开市.出火.作灶.置产.斋醮.入宅.移徙.安门.", "c": "生肖冲马", "s": "煞南", "ch": "执", "zc": "正冲正冲壬午", "ts": "房床碓外正北" }, "d0807": { "y": "祭祀.捕捉.畋猎.纳畜.牧养.入殓.除服.成服.移柩.破土.安葬.启攒.", "j": "嫁娶.纳采.订盟.开市.入宅.", "c": "生肖冲羊", "s": "煞东", "ch": "执", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d0808": { "y": "破屋.坏垣.治病.余事勿取.", "j": "行丧.安葬.", "c": "生肖冲猴", "s": "煞北", "ch": "破", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d0809": { "y": "祈福.斋醮.出行.冠笄.嫁娶.雕刻.开柱眼.入宅.造桥.开市.交易.立券.纳财.入殓.除服.成服.移柩.破土.安葬.启攒.", "j": "动土.破土.订盟.安床.开池.", "c": "生肖冲鸡", "s": "煞西", "ch": "危", "zc": "正冲正冲乙酉", "ts": "厨灶门外正北" }, "d0810": { "y": "祈福.求嗣.解除.订盟.纳采.动土.起基.放水.造仓.开市.纳畜.牧养.开生坟.入殓.除服.成服.移柩.破土.安葬.", "j": "", "c": "生肖冲狗", "s": "煞南", "ch": "成", "zc": "正冲正冲丙戌", "ts": "仓库栖外正北" }, "d0811": { "y": "塑绘.开光.解除.订盟.纳采.嫁娶.出火.修造.动土.移徙.入宅.拆卸.起基.安门.分居.开市.交易.立券.纳财.纳畜.牧养.", "j": "", "c": "生肖冲猪", "s": "煞东", "ch": "收", "zc": "正冲正冲丁亥", "ts": "占房床房内北" }, "d0812": { "y": "祈福.出行.订盟.纳采.嫁娶.裁衣.动土.安床.放水.开市.掘井.交易.立券.栽种.开渠.除服.成服.移柩.破土.", "j": "", "c": "生肖冲鼠", "s": "煞北", "ch": "开", "zc": "正冲正冲戊子", "ts": "占门碓房内北" }, "d0813": { "y": "嫁娶.祭祀.祈福.斋醮.作灶.移徙.入宅.", "j": "动土.破土.", "c": "生肖冲牛", "s": "煞西", "ch": "闭", "zc": "正冲正冲己丑", "ts": "碓磨厕房内北" }, "d0814": { "y": "嫁娶.出行.纳畜.祭祀.入殓.启攒.安葬.", "j": "作灶.动土.破土.", "c": "生肖冲虎", "s": "煞南", "ch": "建", "zc": "正冲正冲庚寅", "ts": "厨灶炉房内北" }, "d0815": { "y": "订盟.纳采.祭祀.祈福.修造.动土.上梁.破土.安葬.", "j": "嫁娶.开市.", "c": "生肖冲兔", "s": "煞东", "ch": "除", "zc": "正冲正冲辛卯", "ts": "仓库门房内北" }, "d0816": { "y": "订盟.纳采.出行.会亲友.修造.上梁.移徙.入宅.", "j": "开市.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "满", "zc": "正冲正冲壬辰", "ts": "房床栖房内南" }, "d0817": { "y": "沐浴.修饰垣墙.平治道涂.余事勿取.", "j": "嫁娶.祈福.余事勿取.", "c": "生肖冲蛇", "s": "煞西", "ch": "平", "zc": "正冲正冲癸巳", "ts": "占门床房内南" }, "d0818": { "y": "嫁娶.祭祀.祈福.斋醮.动土.移徙.入宅.", "j": "开市.安葬.", "c": "生肖冲马", "s": "煞南", "ch": "定", "zc": "正冲正冲甲午", "ts": "占碓磨房内南" }, "d0819": { "y": "捕捉.结网.入殓.破土.安葬.", "j": "嫁娶.入宅.", "c": "生肖冲羊", "s": "煞东", "ch": "执", "zc": "正冲正冲乙未", "ts": "厨灶厕房内南" }, "d0820": { "y": "沐浴.治病.破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲猴", "s": "煞北", "ch": "破", "zc": "正冲正冲丙申", "ts": "仓库炉房内南" }, "d0822": { "y": "嫁娶.订盟.纳采.祭祀.祈福.求医.治病.动土.移徙.入宅.破土.安葬.", "j": "开光.针灸.", "c": "生肖冲狗", "s": "煞南", "ch": "成", "zc": "正冲正冲戊戌", "ts": "门鸡栖房内东" }, "d0823": { "y": "订盟.纳采.祭祀.祈福.安机械.作灶.纳畜.", "j": "动土.安葬.", "c": "生肖冲猪", "s": "煞东", "ch": "收", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d0824": { "y": "嫁娶.祭祀.祈福.求嗣.出行.动土.安床.掘井.破土.启攒.", "j": "入宅.作梁.安门.伐木.修造.上梁.入殓.造屋.", "c": "生肖冲鼠", "s": "煞北", "ch": "开", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d0825": { "y": "嫁娶.祭祀.祈福.求嗣.出行.出火.拆卸.修造.移徙.动土.安床.入殓.破土.安葬.启攒.", "j": "造屋.开光.理发.造船.掘井.作灶.", "c": "生肖冲牛", "s": "煞西", "ch": "闭", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d0826": { "y": "祭祀.祈福.求嗣.开光.出行.解除.上梁.造屋.移徙.安门.纳财.牧养.纳畜.安葬.启攒.入殓.", "j": "破土.置产.掘井.动土.安床.", "c": "生肖冲虎", "s": "煞南", "ch": "建", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" }, "d0827": { "y": "祭祀.解除.沐浴.理发.整手足甲.入殓.移柩.破土.安葬.扫舍.", "j": "嫁娶.会亲友.进人口.出行.入宅.移徙.赴任.作灶.", "c": "生肖冲兔", "s": "煞东", "ch": "除", "zc": "正冲正冲癸卯", "ts": "占大门外东北" }, "d0828": { "y": "塑绘.开光.进人口.纳畜.补垣.塞穴.栽种.牧养.", "j": "嫁娶.纳财.祈福.安葬.修造.开市.交易.立券.动土.上梁.", "c": "生肖冲龙", "s": "煞北", "ch": "满", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d0829": { "y": "祭祀.作灶.沐浴.修饰垣墙.平治道涂.余事勿取.", "j": "诸事不宜.", "c": "生肖冲蛇", "s": "煞西", "ch": "平", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d0830": { "y": "祭祀.求嗣.开光.出行.伐木.作梁.出火.解除.拆卸.进人口.修造.动土.起基.安床.栽种.纳畜.入殓.破土.安葬.除服.成服.", "j": "嫁娶.移徙.", "c": "生肖冲马", "s": "煞南", "ch": "定", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d0831": { "y": "祭祀.求医.捕捉.栽种.塞穴.入殓.破土.安葬.移柩.余事勿取.", "j": "诸事不宜.", "c": "生肖冲羊", "s": "煞东", "ch": "执", "zc": "正冲正冲丁未", "ts": "房床厕外东北" }, "d0701": { "y": "破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲马", "s": "煞南", "ch": "破", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d0621": { "y": "开光.求医.治病.动土.上梁.入殓.破土.安葬.", "j": "嫁娶.开光.", "c": "生肖冲猴", "s": "煞北", "ch": "成", "zc": "正冲正冲丙申", "ts": "仓库炉房内南" }, "d0702": { "y": "开市.交易.立券.纳财.开池.作厕.结网.祭祀.修造.动土.安床.放水.经络.破土.", "j": "嫁娶.造桥.词讼.移徙.安门.作灶.栽种.", "c": "生肖冲羊", "s": "煞东", "ch": "危", "zc": "正冲正冲丁未", "ts": "房床厕外东北" }, "d0703": { "y": "开市.交易.立券.纳财.栽种.安床.拆卸.修造.动土.上梁.入殓.安葬.破土.除服.成服.", "j": "嫁娶.出火.伐木.祭祀.入宅.移徙.纳畜.探病.", "c": "生肖冲猴", "s": "煞北", "ch": "成", "zc": "正冲正冲戊申", "ts": "占门炉外东北" }, "d0704": { "y": "祭祀.作灶.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鸡", "s": "煞西", "ch": "收", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d0705": { "y": "解除.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲狗", "s": "煞南", "ch": "开", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d0706": { "y": "修造.动土.起基.安门.安床.栽种.筑堤.补垣.造畜椆栖.", "j": "嫁娶.掘井.入宅.移徙.出火.出行.行丧.安葬.开光.理发.进人口.", "c": "生肖冲猪", "s": "煞东", "ch": "闭", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d0707": { "y": "祭祀.塞穴.结网.畋猎.余事勿取.", "j": "移徙.开市.入宅.嫁娶.开光.安门.", "c": "生肖冲鼠", "s": "煞北", "ch": "闭", "zc": "正冲正冲壬子", "ts": "房床碓外正东" }, "d0708": { "y": "开市.纳财.祭祀.塑绘.安机械.冠笄.会亲友.裁衣.开仓.经络.纳畜.造畜椆栖.教牛马.牧养.", "j": "动土.破土.安葬.治病.", "c": "生肖冲牛", "s": "煞西", "ch": "建", "zc": "正冲正冲癸丑", "ts": "占门厕外正东" }, "d0709": { "y": "移徙.入宅.治病.会亲友.祭祀.祈福.斋醮.安香.移徙.嫁娶.造屋.起基.", "j": "开市.斋醮.安床.出行.经络.", "c": "生肖冲虎", "s": "煞南", "ch": "除", "zc": "正冲正冲甲寅", "ts": "碓磨炉外东南" }, "d0710": { "y": "塑绘.出行.冠笄.嫁娶.进人口.裁衣.纳婿.造畜椆栖.交易.立券.牧养.开生坟.入殓.除服.成服.移柩.安葬.启攒.", "j": "", "c": "生肖冲兔", "s": "煞东", "ch": "满", "zc": "正冲正冲乙卯", "ts": "厨灶门外东南" }, "d0711": { "y": "祭祀.冠笄.嫁娶.捕捉.结网.畋猎.取渔.余事勿取.", "j": "余事勿取.", "c": "生肖冲龙", "s": "煞北", "ch": "平", "zc": "正冲正冲丙辰", "ts": "仓库栖外东南" }, "d0712": { "y": "沐浴.扫舍.余事勿取.", "j": "诸事不宜.", "c": "生肖冲蛇", "s": "煞西", "ch": "定", "zc": "正冲正冲丁巳", "ts": "占房床外东南" }, "d0713": { "y": "纳采.祭祀.祈福.解除.动土.破土.安葬.", "j": "嫁娶.移徙.入宅.", "c": "生肖冲马", "s": "煞南", "ch": "执", "zc": "正冲正冲戊午", "ts": "占门碓外东南" }, "d0714": { "y": "祭祀.破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲羊", "s": "煞东", "ch": "破", "zc": "正冲正冲己未", "ts": "碓磨厕外东南" }, "d0715": { "y": "嫁娶.纳采.开市.出行.动土.上梁.移徙.入宅.破土.安葬.", "j": "祭祀.祈福.", "c": "生肖冲猴", "s": "煞北", "ch": "危", "zc": "正冲正冲庚申", "ts": "厨灶炉外正南" }, "d0716": { "y": "嫁娶.纳采.开市.出行.动土.上梁.移徙.入宅.破土.安葬.", "j": "赴任.", "c": "生肖冲鸡", "s": "煞西", "ch": "成", "zc": "正冲正冲辛酉", "ts": "仓库门外正南" }, "d0717": { "y": "祭祀.作灶.纳财.捕捉.", "j": "开市.破土.", "c": "生肖冲狗", "s": "煞南", "ch": "收", "zc": "正冲正冲壬戌", "ts": "房床栖外正南" }, "d0718": { "y": "嫁娶.开市.立券.祭祀.祈福.动土.移徙.入宅.", "j": "造庙.安葬.", "c": "生肖冲猪", "s": "煞东", "ch": "开", "zc": "正冲正冲癸亥", "ts": "占门床外正南" }, "d0719": { "y": "补垣.塞穴.结网.入殓.除服.成服.移柩.安葬.启攒.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鼠", "s": "煞北", "ch": "闭", "zc": "正冲正冲甲子", "ts": "占碓磨外正南" }, "d0720": { "y": "嫁娶.纳采.出行.祭祀.祈福.解除.移徙.入宅.", "j": "动土.安葬.", "c": "生肖冲牛", "s": "煞西", "ch": "建", "zc": "正冲正冲乙丑", "ts": "厨灶厕外西南" }, "d0722": { "y": "嫁娶.出行.开市.安床.入殓.启攒.安葬.", "j": "祈福.动土.破土.", "c": "生肖冲兔", "s": "煞东", "ch": "满", "zc": "正冲正冲丁卯", "ts": "房床门外西南" }, "d0723": { "y": "嫁娶.祭祀.裁衣.结网.冠笄.沐浴.", "j": "开仓.出货财.置产.安葬.动土.破土.掘井.栽种.", "c": "生肖冲龙", "s": "煞北", "ch": "平", "zc": "正冲正冲戊辰", "ts": "门鸡栖外西南" }, "d0724": { "y": "入宅.移徙.安床.开光.祈福.求嗣.进人口.开市.交易.立券.出火.拆卸.修造.动土.", "j": "嫁娶.破土.置产.栽种.安葬.修坟.行丧.", "c": "生肖冲蛇", "s": "煞西", "ch": "定", "zc": "正冲正冲己巳", "ts": "碓磨床外西南" }, "d0725": { "y": "祭祀.解除.沐浴.整手足甲.入殓.移柩.破土.启攒.安葬.", "j": "嫁娶.入宅.移徙.作灶.开市.交易.安门.栽种.", "c": "生肖冲马", "s": "煞南", "ch": "执", "zc": "正冲正冲庚午", "ts": "厨灶碓外西南" }, "d0726": { "y": "破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲羊", "s": "煞东", "ch": "破", "zc": "正冲正冲辛未", "ts": "仓库厕外西南" }, "d0727": { "y": "嫁娶.开光.出行.理发.作梁.出火.拆卸.修造.开市.交易.立券.挂匾.动土.入宅.移徙.安床.栽种.", "j": "伐木.祭祀.纳畜.祭祀.", "c": "生肖冲猴", "s": "煞北", "ch": "危", "zc": "正冲正冲壬申", "ts": "房床厕外正南" }, "d0728": { "y": "嫁娶.开光.出行.祈福.求嗣.解除.拆卸.动土.修造.进人口.开市.交易.立券.挂匾.入宅.移徙.安床.栽种.纳畜.入殓.移柩.安葬.", "j": "", "c": "生肖冲鸡", "s": "煞西", "ch": "成", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d0729": { "y": "祭祀.作灶.纳财.栽种.纳畜.进人口.", "j": "安葬.经络.修坟.破土.开市.安床.启攒.立碑.", "c": "生肖冲狗", "s": "煞南", "ch": "收", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d0730": { "y": "祭祀.祈福.求嗣.开光.开市.牧养.理发.", "j": "嫁娶.出行.安葬.入殓.入宅.作灶.冠笄.上梁.", "c": "生肖冲猪", "s": "煞东", "ch": "开", "zc": "正冲正冲乙亥", "ts": "厨灶床外正西" }, "d0731": { "y": "祭祀.入殓.破土.除服.成服.移柩.启攒.安葬.谢土.余事勿取.", "j": "余事勿取.", "c": "生肖冲鼠", "s": "煞北", "ch": "闭", "zc": "正冲正冲丙子", "ts": "仓库碓外西北" }, "d0601": { "y": "开市.交易.立券.挂匾.开光.出行.拆卸.进人口.入宅.移柩.动土.安门.上梁.栽种.破土.修坟.安葬.", "j": "嫁娶.安床.探病.作灶.", "c": "生肖冲鼠", "s": "煞北", "ch": "除", "zc": "正冲正冲丙子", "ts": "仓库碓外西北" }, "d0602": { "y": "进人口.会亲友.", "j": "塞穴.上梁.动土.伐木.安葬.词讼.", "c": "生肖冲牛", "s": "煞西", "ch": "满", "zc": "正冲正冲丁丑", "ts": "房床厕外西北" }, "d0603": { "y": "沐浴.平治道涂.扫舍.入殓.破土.安葬.除服.成服.", "j": "嫁娶.移徙.伐木.作梁.安床.祭祀.祈福.造屋.", "c": "生肖冲虎", "s": "煞南", "ch": "平", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d0521": { "y": "订盟.纳采.会亲友.安床.作灶.造畜椆栖.", "j": "开市.安葬.", "c": "生肖冲牛", "s": "煞西", "ch": "满", "zc": "正冲正冲乙丑", "ts": "厨灶厕外西南" }, "d0604": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出火.出行.拆卸.动土.解除.进人口.开市.交易.立券.挂匾.入宅.移徙.安床.安门.上梁.安葬.破土.谢土.", "j": "", "c": "生肖冲兔", "s": "煞东", "ch": "定", "zc": "正冲正冲己卯", "ts": "占门炉外西北" }, "d0605": { "y": "祭祀.祈福.求嗣.开光.解除.合帐.冠笄.伐木.架马.作梁.修造.进人口.嫁娶.裁衣.合帐.安床.动土.起基.上梁.竖柱.放水.会亲友.", "j": "", "c": "生肖冲龙", "s": "煞北", "ch": "执", "zc": "正冲正冲庚辰", "ts": "厨灶栖外西北" }, "d0606": { "y": "祭祀.沐浴.捕捉.结网.畋猎.取渔.余事勿取.", "j": "开市.交易.嫁娶.安葬.行丧.", "c": "生肖冲蛇", "s": "煞西", "ch": "执", "zc": "正冲正冲辛巳", "ts": "仓库床外西北" }, "d0607": { "y": "破屋.坏垣.求医.治病.畋猎.余事勿取.", "j": "嫁娶.入宅.", "c": "生肖冲马", "s": "煞南", "ch": "破", "zc": "正冲正冲壬午", "ts": "房床碓外正北" }, "d0608": { "y": "嫁娶.出行.安机械.祭祀.塑绘.开光.治病.经络.安床.结网.塞穴.破土.入殓.", "j": "开市.安门.掘井.作灶.", "c": "生肖冲羊", "s": "煞东", "ch": "危", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d0609": { "y": "订盟.纳采.会亲友.进人口.雕刻.拆卸.修造.动土.起基.开市.栽种.纳畜.牧养.入殓.除服.成服.移柩.破土.安葬.", "j": "", "c": "生肖冲猴", "s": "煞北", "ch": "成", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d0610": { "y": "祭祀.捕捉.取渔.修饰垣墙.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鸡", "s": "煞西", "ch": "收", "zc": "正冲正冲乙酉", "ts": "厨灶门外正北" }, "d0611": { "y": "嫁娶.纳采.祭祀.祈福.求医.治病.出行.动土.移徙.入宅.", "j": "开市.安门.", "c": "生肖冲狗", "s": "煞南", "ch": "开", "zc": "正冲正冲丙戌", "ts": "仓库栖外正北" }, "d0612": { "y": "裁衣.作灶.移徙.入宅.纳畜.", "j": "嫁娶.安葬.", "c": "生肖冲猪", "s": "煞东", "ch": "闭", "zc": "正冲正冲丁亥", "ts": "占房床房内北" }, "d0613": { "y": "祭祀.入殓.移柩.启攒.安葬.", "j": "上梁.动土.破土.", "c": "生肖冲鼠", "s": "煞北", "ch": "建", "zc": "正冲正冲戊子", "ts": "占门碓房内北" }, "d0614": { "y": "订盟.纳采.出行.祈福.斋醮.安床.会亲友.", "j": "移徙.入宅.安葬.", "c": "生肖冲牛", "s": "煞西", "ch": "除", "zc": "正冲正冲己丑", "ts": "碓磨厕房内北" }, "d0615": { "y": "嫁娶.纳采.出行.求医.治病.开市.移徙.入宅.启攒.安葬.", "j": "动土.破土.", "c": "生肖冲虎", "s": "煞南", "ch": "满", "zc": "正冲正冲庚寅", "ts": "厨灶炉房内北" }, "d0616": { "y": "嫁娶.祭祀.沐浴.扫舍.修饰垣墙.", "j": "行丧.安葬.", "c": "生肖冲兔", "s": "煞东", "ch": "平", "zc": "正冲正冲辛卯", "ts": "仓库门房内北" }, "d0617": { "y": "嫁娶.订盟.纳采.出行.开市.祭祀.祈福.动土.移徙.入宅.破土.安葬.", "j": "作灶.", "c": "生肖冲龙", "s": "煞北", "ch": "定", "zc": "正冲正冲壬辰", "ts": "房床栖房内南" }, "d0618": { "y": "订盟.纳采.出行.祭祀.祈福.修造.动土.移徙.入宅.", "j": "开市.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "执", "zc": "正冲正冲癸巳", "ts": "占门床房内南" }, "d0619": { "y": "诸事不宜.", "j": "诸事不宜.", "c": "生肖冲马", "s": "煞南", "ch": "破", "zc": "正冲正冲甲午", "ts": "占碓磨房内南" }, "d0620": { "y": "嫁娶.订盟.纳采.祭祀.祈福.入殓.破土.安葬.", "j": "开光.开市.", "c": "生肖冲羊", "s": "煞东", "ch": "危", "zc": "正冲正冲乙未", "ts": "厨灶厕房内南" }, "d0622": { "y": "祭祀.栽种.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鸡", "s": "煞西", "ch": "收", "zc": "正冲正冲丁酉", "ts": "房床门房内南" }, "d0623": { "y": "嫁娶.开光.祭祀.祈福.求嗣.出行.解除.伐木.入宅.移徙.安床.出火.拆卸.修造.上梁.栽种.移柩.", "j": "安葬.开市.交易.立券.", "c": "生肖冲狗", "s": "煞南", "ch": "开", "zc": "正冲正冲戊戌", "ts": "门鸡栖房内东" }, "d0624": { "y": "求嗣.嫁娶.纳采.合帐.裁衣.冠笄.伐木.作梁.修造.动土.起基.竖柱.上梁.安门.作灶.筑堤.造畜椆栖.", "j": "安葬.出行.祈福.栽种.", "c": "生肖冲猪", "s": "煞东", "ch": "闭", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d0625": { "y": "祭祀.解除.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鼠", "s": "煞北", "ch": "建", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d0626": { "y": "嫁娶.祭祀.祈福.出火.开光.求嗣.出行.拆卸.开市.交易.立券.挂匾.入宅.移徙.安床.栽种.动土.", "j": "安葬.行丧.伐木.作梁.", "c": "生肖冲牛", "s": "煞西", "ch": "除", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d0627": { "y": "开光.求嗣.出行.解除.伐木.出火.拆卸.修造.上梁.起基.入宅.移徙.开市.交易.立券.栽种.牧养.入殓.安葬.除服.成服.", "j": "置产.安床.", "c": "生肖冲虎", "s": "煞南", "ch": "满", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" }, "d0628": { "y": "祭祀.理发.修饰垣墙.平治道涂.沐浴.整手足甲.扫舍.", "j": "出行.安门.修造.嫁娶.上梁.入宅.", "c": "生肖冲兔", "s": "煞东", "ch": "平", "zc": "正冲正冲癸卯", "ts": "占大门外东北" }, "d0629": { "y": "嫁娶.祭祀.开光.祈福.求嗣.出行.出火.拆卸.动土.修造.进人口.入宅.移徙.安床.挂匾.交易.立券.栽种.纳畜.入殓.破土.启攒.安葬.", "j": "", "c": "生肖冲龙", "s": "煞北", "ch": "定", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d0630": { "y": "祭祀.祈福.求嗣.开光.出行.伐木.出火.拆卸.修造.动土.起基.安床.入宅.移徙.", "j": "嫁娶.开市.交易.行丧.安葬.修坟.", "c": "生肖冲蛇", "s": "煞西", "ch": "执", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d0631": { "y": "破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲马", "s": "煞南", "ch": "破", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d0501": { "y": "塞穴.扫舍.余事勿取.", "j": "诸事不宜.", "c": "生肖冲蛇", "s": "煞西", "ch": "危", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d0502": { "y": "祭祀.祈福.求嗣.开光.解除.纳采.冠笄.出火.拆卸.进人口.安床.动土.上梁.造庙.掘井.开池.入殓.移柩.安葬.破土.", "j": "", "c": "生肖冲马", "s": "煞南", "ch": "成", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d0421": { "y": "解除.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲羊", "s": "煞东", "ch": "收", "zc": "正冲正冲乙未", "ts": "厨灶厕房内南" }, "d0503": { "y": "解除.破屋.余事勿取.", "j": "诸事不宜.", "c": "生肖冲羊", "s": "煞东", "ch": "收", "zc": "正冲正冲丁未", "ts": "房床厕外东北" }, "d0504": { "y": "嫁娶.祈福.求嗣.开光.出行.解除.拆卸.出火.开市.立券.交易.入宅.移徙.安床.动土.破土.谢土.", "j": "祭祀.入殓.安葬.探病.", "c": "生肖冲猴", "s": "煞北", "ch": "开", "zc": "正冲正冲戊申", "ts": "占门炉外东北" }, "d0505": { "y": "嫁娶.祭祀.祈福.求嗣.斋醮.订盟.纳采.解除.出行.动土.破土.习艺.针灸.理发.会亲友.起基.修造.动土.竖柱.定磉.安床.拆卸.纳畜.牧养.放水.破土.除服.成服.修坟.立碑.", "j": "开市.入宅.探病.出火.造屋.", "c": "生肖冲鸡", "s": "煞西", "ch": "开", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d0506": { "y": "余事勿取.", "j": "余事勿取.", "c": "生肖冲狗", "s": "煞南", "ch": "闭", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d0507": { "y": "塞穴.断蚁.结网.余事勿取.", "j": "破土.安葬.", "c": "生肖冲猪", "s": "煞东", "ch": "建", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d0508": { "y": "开光.出行.纳采.嫁娶.伐木.架马.出火.拆卸.移徙.入宅.造庙.造桥.造船.造畜椆栖.开市.入殓.除服.成服.移柩.安葬.", "j": "", "c": "生肖冲鼠", "s": "煞北", "ch": "除", "zc": "正冲正冲壬子", "ts": "房床碓外正东" }, "d0509": { "y": "进人口.牧养.置产.塞穴.结网.余事勿取.", "j": "诸事不宜.", "c": "生肖冲牛", "s": "煞西", "ch": "满", "zc": "正冲正冲癸丑", "ts": "占门厕外正东" }, "d0510": { "y": "开光.出行.嫁娶.", "j": "会亲友.进人口.修造.动土.起基.移徙.开市.纳畜.入殓.除服.成服.移柩.破土.安葬.修坟.立碑.会亲友.", "c": "生肖冲虎", "s": "煞南", "ch": "平", "zc": "正冲正冲甲寅", "ts": "碓磨炉外东南" }, "d0511": { "y": "嫁娶.纳采.出行.祭祀.祈福.开市.动土.移徙.入宅.破土.安葬.", "j": "安门.", "c": "生肖冲兔", "s": "煞东", "ch": "定", "zc": "正冲正冲乙卯", "ts": "厨灶门外东南" }, "d0512": { "y": "嫁娶.纳采.求医.治病.修造.动土.移徙.入宅.破土.安葬.", "j": "开市.开光.", "c": "生肖冲龙", "s": "煞北", "ch": "执", "zc": "正冲正冲丙辰", "ts": "仓库栖外东南" }, "d0513": { "y": "祭祀.破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲蛇", "s": "煞西", "ch": "破", "zc": "正冲正冲丁巳", "ts": "占房床外东南" }, "d0514": { "y": "嫁娶.纳采.祭祀.祈福.出行.动土.上梁.移徙.入宅.破土.安葬.", "j": "祈福.斋醮.", "c": "生肖冲马", "s": "煞南", "ch": "危", "zc": "正冲正冲戊午", "ts": "占门碓外东南" }, "d0515": { "y": "纳采.祭祀.祈福.开市.求医.治病.动土.纳畜.", "j": "嫁娶.安葬.", "c": "生肖冲羊", "s": "煞东", "ch": "成", "zc": "正冲正冲己未", "ts": "碓磨厕外东南" }, "d0516": { "y": "嫁娶.纳采.出行.移徙.入宅.", "j": "动土.破土.安葬.", "c": "生肖冲猴", "s": "煞北", "ch": "收", "zc": "正冲正冲庚申", "ts": "厨灶炉外正南" }, "d0517": { "y": "订盟.纳采.祭祀.动土.破土.交易.立券.", "j": "嫁娶.安葬.", "c": "生肖冲鸡", "s": "煞西", "ch": "开", "zc": "正冲正冲辛酉", "ts": "仓库门外正南" }, "d0518": { "y": "嫁娶.裁衣.祭祀.出行.安床.作灶.移徙.入宅.破土.安葬.", "j": "赴任.捕捉.", "c": "生肖冲狗", "s": "煞南", "ch": "闭", "zc": "正冲正冲壬戌", "ts": "房床栖外正南" }, "d0519": { "y": "塞穴.结网.余事勿取.", "j": "诸事不宜.", "c": "生肖冲猪", "s": "煞东", "ch": "建", "zc": "正冲正冲癸亥", "ts": "占门床外正南" }, "d0520": { "y": "嫁娶.订盟.纳采.出行.祭祀.祈福.斋醮.动土.上梁.破土.安葬.", "j": "移徙.入宅.", "c": "生肖冲鼠", "s": "煞北", "ch": "除", "zc": "正冲正冲甲子", "ts": "占碓磨外正南" }, "d0522": { "y": "沐浴.平治道涂.扫舍.入殓.移柩.破土.启攒.安葬.余事勿取.", "j": "诸事不宜.", "c": "生肖冲虎", "s": "煞南", "ch": "平", "zc": "正冲正冲丙寅", "ts": "仓库炉外西南" }, "d0523": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出行.出火.拆卸.动土.上梁.进人口.入宅.移徙.安床.安门.开市.交易.立券.挂匾.栽种.破土.安葬.", "j": "", "c": "生肖冲兔", "s": "煞东", "ch": "定", "zc": "正冲正冲丁卯", "ts": "房床门外西南" }, "d0524": { "y": "祭祀.开光.出行.解除.塑绘.裁衣.入殓.移柩.破土.启攒.安葬.除服.成服.", "j": "嫁娶.上梁.修造.拆卸.架马.入宅.伐木.动土.出火.开柱眼.", "c": "生肖冲龙", "s": "煞北", "ch": "执", "zc": "正冲正冲戊辰", "ts": "门鸡栖外西南" }, "d0525": { "y": "祭祀.解除.破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲蛇", "s": "煞西", "ch": "破", "zc": "正冲正冲己巳", "ts": "碓磨床外西南" }, "d0526": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出行.拆卸.动土.上梁.出火.进人口.入宅.移徙.安床.栽种.纳畜.牧养.竖柱.安门.修造.解除.会亲友.", "j": "", "c": "生肖冲马", "s": "煞南", "ch": "危", "zc": "正冲正冲庚午", "ts": "厨灶碓外西南" }, "d0527": { "y": "开市.交易.立券.祭祀.祈福.开光.伐木.进人口.安床.拆卸.修造.动土.栽种.破土.移柩.安葬.", "j": "入宅.移徙.理发.出火.嫁娶.出行.", "c": "生肖冲羊", "s": "煞东", "ch": "成", "zc": "正冲正冲辛未", "ts": "仓库厕外西南" }, "d0528": { "y": "结网.解除.余事勿取.", "j": "诸事不宜.", "c": "生肖冲猴", "s": "煞北", "ch": "收", "zc": "正冲正冲壬申", "ts": "房床厕外正南" }, "d0529": { "y": "嫁娶.祭祀.祈福.求嗣.开光.开市.交易.立券.安床.出行.拆卸.", "j": "纳畜.入宅.移徙.安葬.探病.伐木.上梁.安门.入殓.动土.", "c": "生肖冲鸡", "s": "煞西", "ch": "开", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d0530": { "y": "嫁娶.祭祀.祈福.求嗣.出行.出火.拆卸.修造.动土.入宅.移徙.安床.作灶.塞穴.栽种.破土.安葬.", "j": "开光.掘井.开仓.", "c": "生肖冲狗", "s": "煞南", "ch": "闭", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d0531": { "y": "解除.扫舍.余事勿取.", "j": "诸事不宜.", "c": "生肖冲猪", "s": "煞东", "ch": "建", "zc": "正冲正冲乙亥", "ts": "厨灶床外正西" }, "d0401": { "y": "开光.塑绘.求嗣.纳采.裁衣.合帐.冠笄.安机械.作梁.开柱眼.安门.安床.造仓.祭祀.会亲友.祈福.经络.纳财.开市.立券.交易.入学.求嗣.理发.架马.", "j": "出行.斋醮.安葬.嫁娶.", "c": "生肖冲猪", "s": "煞东", "ch": "满", "zc": "正冲正冲乙亥", "ts": "厨灶床外正西" }, "d0402": { "y": "祭祀.嫁娶.纳婿.安葬.", "j": "栽种.造屋.作灶.入宅.", "c": "生肖冲鼠", "s": "煞北", "ch": "平", "zc": "正冲正冲丙子", "ts": "仓库碓外西北" }, "d0321": { "y": "冠笄.入殓.除服.成服.移柩.平治道涂.修饰垣墙.", "j": "造屋.作灶.治病.探病.", "c": "生肖冲鼠", "s": "煞北", "ch": "平", "zc": "正冲正冲甲子", "ts": "占碓磨外正南" }, "d0403": { "y": "祭祀.会亲友.订盟.裁衣.合帐.安机械.拆卸.上梁.安门.入殓.除服.成服.移柩.启攒.安葬.立碑.开光.塑绘.入学.出行.起基.定磉.放水.移徙.入宅.竖柱.立券.经络.", "j": "伐木.作梁.", "c": "生肖冲牛", "s": "煞西", "ch": "定", "zc": "正冲正冲丁丑", "ts": "房床厕外西北" }, "d0404": { "y": "祭祀.开光.塑绘.祈福.斋醮.裁衣.合帐.冠笄.嫁娶.拆卸.动土.移徙.入宅.入殓.移柩.安葬.谢土.求嗣.入学.理发.伐木.架马.作梁.出火.修造.起基.定磉.放水.赴任.", "j": "入宅.安门.", "c": "生肖冲虎", "s": "煞南", "ch": "执", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d0405": { "y": "祭祀.祈福.开光.求嗣.斋醮.纳采.订盟.求医.治病.起基.定磉.造船.取渔.解除.安葬.启攒.谢土.入殓.", "j": "开市.动土.掘井.开池.", "c": "生肖冲兔", "s": "煞东", "ch": "执", "zc": "正冲正冲己卯", "ts": "占门炉外西北" }, "d0406": { "y": "祭祀.沐浴.破屋.坏垣.求医.治病.解除.余事勿取.", "j": "嫁娶.开市.交易.入宅.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "破", "zc": "正冲正冲庚辰", "ts": "厨灶栖外西北" }, "d0407": { "y": "诸事不宜.", "j": "诸事不宜.", "c": "生肖冲蛇", "s": "煞西", "ch": "危", "zc": "正冲正冲辛巳", "ts": "仓库床外西北" }, "d0408": { "y": "祭祀.塑绘.开光.订盟.纳采.冠笄.裁衣.安机械.拆卸.修造.动土.安床.经络.开市.", "j": "出火.入宅.安葬.伐木.", "c": "生肖冲马", "s": "煞南", "ch": "成", "zc": "正冲正冲壬午", "ts": "房床碓外正北" }, "d0409": { "y": "祭祀.余事勿取.", "j": "造庙.嫁娶.安床.余事勿取.", "c": "生肖冲羊", "s": "煞东", "ch": "收", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d0410": { "y": "订盟.纳采.嫁娶.进人口.会亲友.交易.立券.动土.除服.谢土.移柩.破土.启攒.赴任.出行.开市.纳财.栽种.", "j": "入殓.安葬.入宅.安床.", "c": "生肖冲猴", "s": "煞北", "ch": "开", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d0411": { "y": "祭祀.祈福.裁衣.合帐.安床.入殓.除服.成服.移柩.破土.启攒.安葬.谢土.立碑.造畜椆栖.", "j": "掘井.安门.嫁娶.纳采.", "c": "生肖冲鸡", "s": "煞西", "ch": "闭", "zc": "正冲正冲乙酉", "ts": "厨灶门外正北" }, "d0412": { "y": "祭祀.进人口.嫁娶.安床.解除.冠笄.出行.裁衣.扫舍.", "j": "掘井.动土.破土.安葬.开光.", "c": "生肖冲狗", "s": "煞南", "ch": "建", "zc": "正冲正冲丙戌", "ts": "仓库栖外正北" }, "d0413": { "y": "纳采.开光.求医.治病.动土.上梁.移徙.入宅.", "j": "嫁娶.开市.安葬.", "c": "生肖冲猪", "s": "煞东", "ch": "除", "zc": "正冲正冲丁亥", "ts": "占房床房内北" }, "d0414": { "y": "祭祀.会亲友.开市.安床.启攒.安葬.", "j": "嫁娶.动土.破土.", "c": "生肖冲鼠", "s": "煞北", "ch": "满", "zc": "正冲正冲戊子", "ts": "占门碓房内北" }, "d0415": { "y": "祭祀.作灶.掘井.平治道涂.", "j": "嫁娶.安葬.", "c": "生肖冲牛", "s": "煞西", "ch": "平", "zc": "正冲正冲己丑", "ts": "碓磨厕房内北" }, "d0416": { "y": "祭祀.斋醮.开市.动土.入殓.破土.安葬.", "j": "嫁娶.移徙.入宅.", "c": "生肖冲虎", "s": "煞南", "ch": "定", "zc": "正冲正冲庚寅", "ts": "厨灶炉房内北" }, "d0417": { "y": "嫁娶.纳采.祭祀.祈福.出行.移徙.求医.", "j": "开市.动土.破土.", "c": "生肖冲兔", "s": "煞东", "ch": "执", "zc": "正冲正冲辛卯", "ts": "仓库门房内北" }, "d0418": { "y": "祭祀.求医.治病.解除.余事勿取.", "j": "诸事不宜.", "c": "生肖冲龙", "s": "煞北", "ch": "破", "zc": "正冲正冲壬辰", "ts": "房床栖房内南" }, "d0419": { "y": "沐浴.结网.取渔.", "j": "嫁娶.入宅.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "危", "zc": "正冲正冲癸巳", "ts": "占门床房内南" }, "d0420": { "y": "", "j": "诸事不宜.", "c": "生肖冲马", "s": "煞南", "ch": "成", "zc": "正冲正冲甲午", "ts": "占碓磨房内南" }, "d0422": { "y": "嫁娶.开光.出行.出火.拆卸.进人口.开市.立券.交易.挂匾.入宅.移徙.安床.栽种.", "j": "祈福.入殓.祭祀.作灶.安葬.探病.", "c": "生肖冲猴", "s": "煞北", "ch": "开", "zc": "正冲正冲丙申", "ts": "仓库炉房内南" }, "d0423": { "y": "嫁娶.出行.合帐.冠笄.安床.除服.成服.作灶.交易.立券.入殓.移柩.破土.安葬.", "j": "词讼.开光.开市.", "c": "生肖冲鸡", "s": "煞西", "ch": "闭", "zc": "正冲正冲丁酉", "ts": "房床门房内南" }, "d0424": { "y": "出行.修饰垣墙.造畜椆栖.教牛马.余事勿取.", "j": "诸事不宜.", "c": "生肖冲狗", "s": "煞南", "ch": "建", "zc": "正冲正冲戊戌", "ts": "门鸡栖房内东" }, "d0425": { "y": "祭祀.祈福.开光.求嗣.解除.伐木.出火.入宅.移徙.安床.拆卸.修造.动土.造畜椆栖.", "j": "嫁娶.纳财.安葬.出行.开市.立券.作灶.栽种.", "c": "生肖冲猪", "s": "煞东", "ch": "除", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d0426": { "y": "纳采.嫁娶.开光.出行.理发.会亲友.开市.安床.栽种.牧养.入殓.移柩.启攒.", "j": "谢土.祈福.上梁.作灶.斋醮.修造.入宅.安门.", "c": "生肖冲鼠", "s": "煞北", "ch": "满", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d0427": { "y": "祭祀.平治道涂.解除.修饰垣墙.余事勿取.", "j": "诸事不宜.", "c": "生肖冲牛", "s": "煞西", "ch": "平", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d0428": { "y": "祭祀.祈福.开光.解除.动土.纳财.交易.纳畜.扫舍.", "j": "进人口.出行.嫁娶.置产.安床.赴任.安葬.作灶.", "c": "生肖冲虎", "s": "煞南", "ch": "定", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" }, "d0429": { "y": "祭祀.祈福.求嗣.开光.解除.出火.拆卸.入宅.安床.修造.安门.纳畜.启攒.安葬.", "j": "动土.破土.纳财.掘井.挂匾.开市.伐木.交易.", "c": "生肖冲兔", "s": "煞东", "ch": "执", "zc": "正冲正冲癸卯", "ts": "占大门外东北" }, "d0430": { "y": "祭祀.解除.破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲龙", "s": "煞北", "ch": "破", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d0301": { "y": "结网.入殓.除服.成服.移柩.安葬.破土.", "j": "诸事不宜.", "c": "生肖冲龙", "s": "煞北", "ch": "成", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d0431": { "y": "塞穴.扫舍.余事勿取.", "j": "诸事不宜.", "c": "生肖冲蛇", "s": "煞西", "ch": "危", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d0302": { "y": "移徙.祭祀.开光.祈福.出行.解除.进人口.雇庸.安床.动土.起基.上梁.安门.解除.", "j": "嫁娶.安葬.破土.作梁.纳畜.牧养.行丧.作灶.", "c": "生肖冲蛇", "s": "煞西", "ch": "收", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d0221": { "y": "安床.解除.裁衣.竖柱.上梁.交易.立券.纳财.纳畜.牧养.入殓.移柩.安葬.启攒.", "j": "嫁娶.出行.动土.开渠.入宅.祭祀.掘井.", "c": "生肖冲猴", "s": "煞北", "ch": "建", "zc": "正冲正冲丙申", "ts": "仓库炉房内南" }, "d0303": { "y": "嫁娶.开光.祈福.求嗣.解除.动土.安床.栽种.开池.掘井.祭祀.破土.启攒.", "j": "入宅.作灶.伐木.安葬.出火.出行.纳畜.", "c": "生肖冲马", "s": "煞南", "ch": "开", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d0304": { "y": "祭祀.合帐.裁衣.经络.伐木.作梁.安床.作灶.入殓.安葬.启攒.移柩.", "j": "词讼.出火.入宅.", "c": "生肖冲羊", "s": "煞东", "ch": "闭", "zc": "正冲正冲丁未", "ts": "房床厕外东北" }, "d0305": { "y": "裁衣.伐木.作梁.纳财.交易.立券.", "j": "诸事不宜.", "c": "生肖冲猴", "s": "煞北", "ch": "建", "zc": "正冲正冲戊申", "ts": "占门炉外东北" }, "d0306": { "y": "祭祀.会亲友.立券.交易.裁衣.合帐.嫁娶.冠笄.进人口.", "j": "栽种.动土.安葬.掘井.修坟.探病.", "c": "生肖冲鸡", "s": "煞西", "ch": "建", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d0307": { "y": "扫舍.塞穴.余事勿取.", "j": "诸事不宜.", "c": "生肖冲狗", "s": "煞南", "ch": "除", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d0308": { "y": "塑绘.开光.订盟.纳采.裁衣.合帐.冠笄.安机械.会亲友.纳财.开市.立券.交易.安床.竖柱.上梁.结网.栽种.解除.经络.", "j": "作灶.出行.入宅.安葬.", "c": "生肖冲猪", "s": "煞东", "ch": "满", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d0309": { "y": "祭祀.嫁娶.纳婿.除服.成服.入殓.移柩.", "j": "动土.作灶.入宅.开光.安床.", "c": "生肖冲鼠", "s": "煞北", "ch": "平", "zc": "正冲正冲壬子", "ts": "房床碓外正东" }, "d0310": { "y": "祈福.求嗣.开光.塑绘.斋醮.订盟.纳采.嫁娶.拆卸.安床.入宅.安香.移柩.修坟.安葬.谢土.栽种.解除.冠笄.裁衣.移徙.修造.动土.竖柱.放水.启攒.立碑.", "j": "赴任.", "c": "生肖冲牛", "s": "煞西", "ch": "定", "zc": "正冲正冲癸丑", "ts": "占门厕外正东" }, "d0311": { "y": "祭祀.解除.入殓.除服.成服.移柩.启攒.安葬.修坟.立碑.谢土.沐浴.扫舍.捕捉.取渔.结网.畋猎.理发.", "j": "安床.嫁娶.作灶.入宅.", "c": "生肖冲虎", "s": "煞南", "ch": "执", "zc": "正冲正冲甲寅", "ts": "碓磨炉外东南" }, "d0312": { "y": "破屋.坏垣.", "j": "诸事不宜.", "c": "生肖冲兔", "s": "煞东", "ch": "破", "zc": "正冲正冲乙卯", "ts": "厨灶门外东南" }, "d0313": { "y": "祭祀.出行.订盟.纳采.裁衣.合帐.冠笄.进人口.动土.安床.作灶.入殓.移柩.安葬.破土.结网.取渔.畋猎.", "j": "作梁.造庙.", "c": "生肖冲龙", "s": "煞北", "ch": "危", "zc": "正冲正冲丙辰", "ts": "仓库栖外东南" }, "d0314": { "y": "祭祀.开光.塑绘.订盟.纳采.合帐.冠笄.拆卸.动土.起基.上梁.入宅.安香.开市.立券.纳财.沐浴.求嗣.出火.竖柱.安门.", "j": "造庙.嫁娶.伐木.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "成", "zc": "正冲正冲丁巳", "ts": "占房床外东南" }, "d0315": { "y": "祭祀.沐浴.捕捉.栽种.", "j": "嫁娶.入宅.移徙.作灶.安葬.", "c": "生肖冲马", "s": "煞南", "ch": "收", "zc": "正冲正冲戊午", "ts": "占门碓外东南" }, "d0316": { "y": "祭祀.开光.塑绘.酬神.斋醮.订盟.纳采.嫁娶.裁衣.动土.起基.出火.拆卸.移徙.入宅.安香.修造.竖柱.上梁.纳畜.牧养.祈福.求嗣.解除.伐木.定磉.造屋.安门.", "j": "栽种.安葬.", "c": "生肖冲羊", "s": "煞东", "ch": "开", "zc": "正冲正冲己未", "ts": "碓磨厕外东南" }, "d0317": { "y": "订盟.纳采.冠笄.拆卸.修造.动土.安床.入殓.除服.成服.移柩.安葬.破土.启攒.造仓.", "j": "作灶.开光.嫁娶.开市.入宅.", "c": "生肖冲猴", "s": "煞北", "ch": "闭", "zc": "正冲正冲庚申", "ts": "厨灶炉外正南" }, "d0318": { "y": "祈福.开光.塑绘.酬神.订盟.纳采.裁衣.安床.开市.立券.入殓.除服.成服.移柩.启攒.安葬.立碑.赴任.会亲友.出行.交易.竖柱.", "j": "作灶.掘井.动土.栽种.", "c": "生肖冲鸡", "s": "煞西", "ch": "建", "zc": "正冲正冲辛酉", "ts": "仓库门外正南" }, "d0319": { "y": "祭祀.扫舍.塞穴.", "j": "栽种.作灶.安葬.嫁娶.", "c": "生肖冲狗", "s": "煞南", "ch": "除", "zc": "正冲正冲壬戌", "ts": "房床栖外正南" }, "d0320": { "y": "开光.塑绘.裁衣.冠笄.伐木.拆卸.竖柱.上梁.开仓.会亲友.安机械.造仓.造屋.交易.解除.开市.立券.纳财.", "j": "出行.嫁娶.入宅.安葬.", "c": "生肖冲猪", "s": "煞东", "ch": "满", "zc": "正冲正冲癸亥", "ts": "占门床外正南" }, "d0322": { "y": "祭祀.嫁娶.祈福.纳采.裁衣.合帐.安床.入宅.安香.入殓.移柩.安葬.谢土.修造.安碓硙.求嗣.会亲友.挂匾.交易.立券.纳财.造仓.放水.", "j": "栽种.伐木.", "c": "生肖冲牛", "s": "煞西", "ch": "定", "zc": "正冲正冲乙丑", "ts": "厨灶厕外西南" }, "d0323": { "y": "祭祀.祈福.斋醮.订盟.纳采.裁衣.合帐.拆卸.修造.动土.上梁.起基.移柩.安葬.谢土.沐浴.扫舍.开柱眼.伐木.出火.", "j": "安床.开市.立券.作灶.", "c": "生肖冲虎", "s": "煞南", "ch": "执", "zc": "正冲正冲丙寅", "ts": "仓库炉外西南" }, "d0324": { "y": "破屋.坏垣.求医.治病.", "j": "诸事不宜.", "c": "生肖冲兔", "s": "煞东", "ch": "破", "zc": "正冲正冲丁卯", "ts": "房床门外西南" }, "d0325": { "y": "祭祀.动土.上梁.订盟.纳采.嫁娶.安机械.拆卸.安床.入宅.安香.入殓.移柩.破土.安葬.立碑.谢土.赴任.出行.移徙.祈福.求嗣.解除.造仓.进人口.", "j": "开光.出货财.", "c": "生肖冲龙", "s": "煞北", "ch": "危", "zc": "正冲正冲戊辰", "ts": "门鸡栖外西南" }, "d0326": { "y": "祭祀.开光.塑绘.纳采.裁衣.拆卸.安床.起基.动土.竖柱.上梁.移徙.入宅.安香.开市.立券.挂匾.沐浴.出行.求嗣.安门.", "j": "嫁娶.栽种.伐木.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "成", "zc": "正冲正冲己巳", "ts": "碓磨床外西南" }, "d0327": { "y": "裁衣.合帐.冠笄.嫁娶.纳婿.安床.入殓.纳财.", "j": "作灶.开市.安葬.作梁.", "c": "生肖冲马", "s": "煞南", "ch": "收", "zc": "正冲正冲庚午", "ts": "厨灶碓外西南" }, "d0328": { "y": "祭祀.订盟.纳采.修造.动土.祈福.塑绘.斋醮.沐浴.拆卸.起基.入宅.安香.造庙.移柩.谢土.除服.成服.入学.习艺.出行.竖柱.上梁.掘井.求嗣.解除.伐木.", "j": "作灶.安葬.开市.造屋.", "c": "生肖冲羊", "s": "煞东", "ch": "开", "zc": "正冲正冲辛未", "ts": "仓库厕外西南" }, "d0329": { "y": "订盟.纳采.裁衣.合帐.冠笄.安机械.拆卸.安床.入殓.除服.成服.移柩.破土.启攒.安葬.修坟.立碑.经络.交易.立券.纳财.筑堤.造仓.补垣.塞穴.纳畜.伐木.架马.", "j": "祭祀.开光.嫁娶.入宅.", "c": "生肖冲猴", "s": "煞北", "ch": "闭", "zc": "正冲正冲壬申", "ts": "房床厕外正南" }, "d0330": { "y": "祭祀.出行.嫁娶.冠笄.安床.入殓.移柩.安葬.", "j": "掘井.动土.作灶.栽种.", "c": "生肖冲鸡", "s": "煞西", "ch": "建", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d0331": { "y": "塞穴.诸事不宜.", "j": "安门.作灶.安葬.嫁娶.", "c": "生肖冲狗", "s": "煞南", "ch": "除", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d0201": { "y": "嫁娶.祭祀.祈福.求嗣.开光.入宅.移徙.安床.修造.动土.进人口.", "j": "掘井.安葬.栽种.出行.作灶.开市.入宅.安门.", "c": "生肖冲鼠", "s": "煞北", "ch": "执", "zc": "正冲正冲丙子", "ts": "仓库碓外西北" }, "d0121": { "y": "解除.破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲牛", "s": "煞西", "ch": "破", "zc": "正冲正冲乙丑", "ts": "厨灶厕外西南" }, "d0202": { "y": "破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲牛", "s": "煞西", "ch": "破", "zc": "正冲正冲丁丑", "ts": "房床厕外西北" }, "d0203": { "y": "嫁娶.开市.交易.立券.开光.出行.出火.拆卸.修造.入宅.移徙.动土.破土.移柩.安葬.启攒.除服.成服.", "j": "安床.伐木.祈福.纳畜.", "c": "生肖冲虎", "s": "煞南", "ch": "危", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d0204": { "y": "祭祀.冠笄.嫁娶.拆卸.修造.动土.起基.上梁.造屋.入宅.开市.开池.塞穴.入殓.除服.成服.移柩.安葬.破土.", "j": "安床.栽种.治病.作灶.", "c": "生肖冲兔", "s": "煞东", "ch": "危", "zc": "正冲正冲己卯", "ts": "占门炉外西北" }, "d0205": { "y": "祭祀.结网.入殓.除服.成服.移柩.安葬.破土.", "j": "余事勿取.", "c": "生肖冲龙", "s": "煞北", "ch": "成", "zc": "正冲正冲庚辰", "ts": "厨灶栖外西北" }, "d0206": { "y": "塑绘.开光.祈福.求嗣.订盟.纳采.裁衣.冠笄.拆卸.修造.动土.起基.安门.安床.移徙.造仓.结网.纳畜.", "j": "伐木.作灶.安葬.取渔.入宅.", "c": "生肖冲蛇", "s": "煞西", "ch": "收", "zc": "正冲正冲辛巳", "ts": "仓库床外西北" }, "d0207": { "y": "祭祀.沐浴.开光.塑绘.祈福.求嗣.订盟.纳采.冠笄.裁衣.嫁娶.动土.除服.成服.移柩.破土.启攒.出行.安碓硙.放水.开市.立券.交易.", "j": "安葬.上梁.入宅.作灶.", "c": "生肖冲马", "s": "煞南", "ch": "开", "zc": "正冲正冲壬午", "ts": "房床碓外正北" }, "d0208": { "y": "祭祀.祈福.求嗣.酬神.裁衣.安床.立券.交易.入殓.除服.成服.移柩.谢土.启攒.", "j": "出行.嫁娶.入宅.动土.", "c": "生肖冲羊", "s": "煞东", "ch": "闭", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d0209": { "y": "裁衣.合帐.入殓.除服.成服.会亲友.纳财.", "j": "祭祀.祈福.移徙.嫁娶.入宅.", "c": "生肖冲猴", "s": "煞北", "ch": "建", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d0210": { "y": "祭祀.斋醮.裁衣.合帐.冠笄.订盟.纳采.嫁娶.入宅.安香.谢土.入殓.移柩.破土.立碑.安香.会亲友.出行.祈福.求嗣.立碑.上梁.放水.", "j": "掘井.", "c": "生肖冲鸡", "s": "煞西", "ch": "除", "zc": "正冲正冲乙酉", "ts": "厨灶门外正北" }, "d0211": { "y": "安床.合帐.入宅.问名.纳采.求嗣.祭祀.开仓.", "j": "斋醮.作灶.安床.安葬.", "c": "生肖冲狗", "s": "煞南", "ch": "满", "zc": "正冲正冲丙戌", "ts": "仓库栖外正北" }, "d0212": { "y": "作灶.平治道涂.", "j": "祭祀.祈福.安葬.安门.余事勿取.", "c": "生肖冲猪", "s": "煞东", "ch": "平", "zc": "正冲正冲丁亥", "ts": "占房床房内北" }, "d0213": { "y": "塑绘.开光.酬神.斋醮.订盟.纳采.裁衣.合帐.拆卸.动土.上梁.安床.安香.造庙.挂匾.会亲友.进人口.出行.修造.纳财.伐木.放水.出火.纳畜.沐浴.安门.", "j": "造屋.栽种.安葬.作灶.", "c": "生肖冲鼠", "s": "煞北", "ch": "定", "zc": "正冲正冲戊子", "ts": "占门碓房内北" }, "d0214": { "y": "祭祀.祈福.酬神.订盟.纳采.冠笄.裁衣.合帐.嫁娶.安床.移徙.入宅.安香.入殓.移柩.启攒.安葬.解除.取渔.捕捉.伐木.安门.出火.", "j": "栽种.动土.开市.作灶.", "c": "生肖冲牛", "s": "煞西", "ch": "执", "zc": "正冲正冲己丑", "ts": "碓磨厕房内北" }, "d0215": { "y": "求医.破屋.", "j": "诸事不宜.", "c": "生肖冲虎", "s": "煞南", "ch": "破", "zc": "正冲正冲庚寅", "ts": "厨灶炉房内北" }, "d0216": { "y": "祈福.求嗣.斋醮.塑绘.开光.订盟.纳采.嫁娶.动土.入宅.安香.移柩.安葬.谢土.出行.沐浴.修造.竖柱.上梁.纳财.破土.解除.安门.放水.", "j": "作灶.安床.", "c": "生肖冲兔", "s": "煞东", "ch": "危", "zc": "正冲正冲辛卯", "ts": "仓库门房内北" }, "d0217": { "y": "取渔.入殓.除服.成服.移柩.破土.安葬.立碑.", "j": "嫁娶.上梁.入宅.作灶.", "c": "生肖冲龙", "s": "煞北", "ch": "成", "zc": "正冲正冲壬辰", "ts": "房床栖房内南" }, "d0218": { "y": "祭祀.求嗣.沐浴.酬神.订盟.纳采.裁衣.合帐.冠笄.安机械.安床.造仓.开池.经络.纳财.开市.立券.交易.结网.取渔.纳畜.捕捉.", "j": "安葬.作灶.伐木.作梁.", "c": "生肖冲蛇", "s": "煞西", "ch": "收", "zc": "正冲正冲癸巳", "ts": "占门床房内南" }, "d0219": { "y": "祭祀.沐浴.祈福.求嗣.斋醮.订盟.纳采.裁衣.冠笄.开市.立券.交易.纳财.沐浴.除服.谢土.出行.移柩.", "j": "入殓.安葬.作灶.入宅.", "c": "生肖冲马", "s": "煞南", "ch": "开", "zc": "正冲正冲甲午", "ts": "占碓磨房内南" }, "d0220": { "y": "祭祀.祈福.求嗣.入殓.启攒.安葬.移柩.", "j": "开光.掘井.针灸.出行.嫁娶.入宅.移徙.作灶.动土.", "c": "生肖冲羊", "s": "煞东", "ch": "闭", "zc": "正冲正冲乙未", "ts": "厨灶厕房内南" }, "d0222": { "y": "嫁娶.安床.开光.出行.祭祀.动土.出火.解除.会亲友.开市.交易.立券.挂匾.入宅.移徙.拆卸.破土.启攒.安葬.", "j": "掘井.词讼.", "c": "生肖冲鸡", "s": "煞西", "ch": "除", "zc": "正冲正冲丁酉", "ts": "房床门房内南" }, "d0223": { "y": "嫁娶.开光.求嗣.会亲友.安床.牧养.塑绘.针灸.", "j": "入宅.移徙.出火.分居.安香.作灶.开市.交易.立券.安葬.动土.伐木.", "c": "生肖冲狗", "s": "煞南", "ch": "满", "zc": "正冲正冲戊戌", "ts": "门鸡栖房内东" }, "d0224": { "y": "作灶.解除.平治道涂.", "j": "栽种.出行.祈福.行丧.纳畜.安葬.安门.伐木.作梁.牧养.", "c": "生肖冲猪", "s": "煞东", "ch": "平", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d0225": { "y": "解除.沐浴.", "j": "诸事不宜.", "c": "生肖冲鼠", "s": "煞北", "ch": "定", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d0226": { "y": "嫁娶.祭祀.祈福.出行.解除.出火.拆卸.动土.入宅.移徙.安床.上梁.栽种.纳畜.破土.启攒.安葬.", "j": "开市.立券.理发.作灶.", "c": "生肖冲牛", "s": "煞西", "ch": "执", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d0227": { "y": "祭祀.解除.治病.破屋.坏垣.扫舍.", "j": "余事勿取.", "c": "生肖冲虎", "s": "煞南", "ch": "破", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" }, "d0228": { "y": "祭祀.祈福.求嗣.开光.出火.出行.拆卸.修造.动土.入宅.移徙.上梁.挂匾.开池.入殓.安葬.破土.启攒.", "j": "嫁娶.作灶.安床.", "c": "生肖冲兔", "s": "煞东", "ch": "危", "zc": "正冲正冲癸卯", "ts": "占大门外东北" }, "d0230": { "y": "结网.入殓.除服.成服.移柩.安葬.破土.", "j": "诸事不宜.", "c": "生肖冲龙", "s": "煞北", "ch": "成", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d0101": { "y": "诸事不宜.作梁.修造.动土.安门.作灶.塞穴.开池.作厕.筑堤.补垣.栽种.", "j": "嫁娶.祈福.掘井.行丧.安葬.安床.", "c": "生肖冲蛇", "s": "煞西", "ch": "闭", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d0231": { "y": "结网.入殓.除服.成服.移柩.安葬.破土.", "j": "诸事不宜.", "c": "生肖冲龙", "s": "煞北", "ch": "成", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d0102": { "y": "安葬.启攒.移柩.入殓.除服.成服.", "j": "余事勿取.", "c": "生肖冲马", "s": "煞南", "ch": "建", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d0103": { "y": "嫁娶.祭祀.祈福.求嗣.出行.出火.拆卸.开市.交易.立券.挂匾.入宅.移徙.安床.栽种.", "j": "作灶.塑绘.行丧.词讼.伐木.安葬.", "c": "生肖冲羊", "s": "煞东", "ch": "除", "zc": "正冲正冲丁未", "ts": "房床厕外东北" }, "d0229": { "y": "结网.入殓.除服.成服.移柩.安葬.破土.", "j": "诸事不宜.", "c": "生肖冲龙", "s": "煞北", "ch": "成", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d0104": { "y": "理发.开光.解除.拆卸.修造.安葬.开市.交易.立券.挂匾.安床.栽种.", "j": "入宅.移徙.作灶.祈福.祭祀.嫁娶.谢土.掘井.造屋.探病.", "c": "生肖冲猴", "s": "煞北", "ch": "满", "zc": "正冲正冲戊申", "ts": "占门炉外东北" }, "d0105": { "y": "嫁娶.订盟.纳采.祭祀.祈福.求嗣.会亲友.解除.出行.入学.纳财.开市.交易.立券.习艺.经络.安床.开仓.出货财.纳畜.安葬.启攒.修坟.入殓.", "j": "入宅.开光.开市.动土.", "c": "生肖冲鸡", "s": "煞西", "ch": "满", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d0106": { "y": "祭祀.冠笄.嫁娶.会亲友.进人口.裁衣.结网.平治道涂.", "j": "移徙.入宅.造庙.作灶.治病.安葬.", "c": "生肖冲狗", "s": "煞南", "ch": "平", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d0107": { "y": "祭祀.安碓硙.结网.余事勿取.", "j": "嫁娶.安葬.", "c": "生肖冲猪", "s": "煞东", "ch": "定", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d0108": { "y": "嫁娶.祭祀.沐浴.裁衣.出行.理发.移徙.捕捉.畋猎.放水.入宅.除服.成服.启攒.安葬.移柩.入殓.", "j": "造屋.开市.动土.破土.", "c": "生肖冲鼠", "s": "煞北", "ch": "执", "zc": "正冲正冲壬子", "ts": "房床碓外正东" }, "d0109": { "y": "破屋.坏垣.余事勿取.", "j": "嫁娶.开市.安葬.", "c": "生肖冲牛", "s": "煞西", "ch": "破", "zc": "正冲正冲癸丑", "ts": "占门厕外正东" }, "d0110": { "y": "纳采.订盟.祭祀.求嗣.出火.塑绘.裁衣.会亲友.入学.拆卸.扫舍.造仓.挂匾.掘井.开池.结网.栽种.纳畜.破土.修坟.立碑.安葬.入殓.", "j": "祈福.嫁娶.造庙.安床.谢土.", "c": "生肖冲虎", "s": "煞南", "ch": "危", "zc": "正冲正冲甲寅", "ts": "碓磨炉外东南" }, "d0111": { "y": "入殓.除服.成服.移柩.启攒.安葬.修坟.立碑.", "j": "开市.伐木.嫁娶.作梁.", "c": "生肖冲兔", "s": "煞东", "ch": "成", "zc": "正冲正冲乙卯", "ts": "厨灶门外东南" }, "d0112": { "y": "祭祀.作灶.入殓.除服.余事勿取.", "j": "开市.安床.", "c": "生肖冲龙", "s": "煞北", "ch": "收", "zc": "正冲正冲丙辰", "ts": "仓库栖外东南" }, "d0113": { "y": "塑绘.开光.沐浴.冠笄.会亲友.作灶.放水.造畜椆栖.", "j": "嫁娶.入殓.安葬.出行.", "c": "生肖冲蛇", "s": "煞西", "ch": "开", "zc": "正冲正冲丁巳", "ts": "占房床外东南" }, "d0114": { "y": "祭祀.沐浴.祈福.斋醮.订盟.纳采.裁衣.拆卸.起基.竖柱.上梁.安床.入殓.除服.成服.移柩.启攒.挂匾.求嗣.出行.合帐.造畜椆栖.", "j": "开仓.嫁娶.移徙.入宅.", "c": "生肖冲马", "s": "煞南", "ch": "闭", "zc": "正冲正冲戊午", "ts": "占门碓外东南" }, "d0115": { "y": "祭祀.解除.余事勿取.", "j": "诸事不宜.", "c": "生肖冲羊", "s": "煞东", "ch": "建", "zc": "正冲正冲己未", "ts": "碓磨厕外东南" }, "d0116": { "y": "沐浴.解除.订盟.纳采.裁衣.冠笄.拆卸.修造.动土.移徙.入宅.除服.成服.移柩.破土.启攒.安葬.扫舍.修坟.伐木.纳财.交易.立券.", "j": "作灶.祭祀.上梁.出行.", "c": "生肖冲猴", "s": "煞北", "ch": "除", "zc": "正冲正冲庚申", "ts": "厨灶炉外正南" }, "d0117": { "y": "出行.嫁娶.订盟.纳采.入殓.安床.启攒.安葬.祭祀.裁衣.会亲友.进人口.", "j": "作灶.掘井.谢土.入宅.", "c": "生肖冲鸡", "s": "煞西", "ch": "满", "zc": "正冲正冲辛酉", "ts": "仓库门外正南" }, "d0118": { "y": "修饰垣墙.平治道涂.入殓.移柩.余事勿取.", "j": "嫁娶.移徙.入宅.开光.", "c": "生肖冲狗", "s": "煞南", "ch": "平", "zc": "正冲正冲壬戌", "ts": "房床栖外正南" }, "d0119": { "y": "会亲友.纳采.进人口.修造.动土.竖柱.上梁.祭祀.开光.塑绘.祈福.斋醮.嫁娶.安床.移徙.入宅.安香.纳畜.", "j": "出行.治病.安葬.开市.", "c": "生肖冲猪", "s": "煞东", "ch": "定", "zc": "正冲正冲癸亥", "ts": "占门床外正南" }, "d0120": { "y": "祭祀.会亲友.出行.订盟.纳采.沐浴.修造.动土.祈福.斋醮.嫁娶.拆卸.安床.入殓.移柩.安葬.谢土.赴任.裁衣.竖柱.上梁.伐木.捕捉.栽种.破土.安门.", "j": "造屋.开市.作灶.入宅.", "c": "生肖冲鼠", "s": "煞北", "ch": "执", "zc": "正冲正冲甲子", "ts": "占碓磨外正南" }, "d0122": { "y": "塑绘.开光.出行.订盟.纳采.除服.成服.嫁娶.纳婿.入殓.移柩.启攒.安葬.立碑.", "j": "入宅.安床.", "c": "生肖冲虎", "s": "煞南", "ch": "危", "zc": "正冲正冲丙寅", "ts": "仓库炉外西南" }, "d0123": { "y": "入殓.除服.成服.移柩.启攒.安葬.立碑.余事勿取.", "j": "破土.伐木.", "c": "生肖冲兔", "s": "煞东", "ch": "成", "zc": "正冲正冲丁卯", "ts": "房床门外西南" }, "d0124": { "y": "祭祀.祈福.斋醮.塑绘.开光.除服.成服.入殓.作灶.嫁娶.捕捉.畋猎.纳财.", "j": "开仓.造屋.安葬.安床.", "c": "生肖冲龙", "s": "煞北", "ch": "收", "zc": "正冲正冲戊辰", "ts": "门鸡栖外西南" }, "d0125": { "y": "祭祀.出行.沐浴.裁衣.祈福.斋醮.订盟.纳采.嫁娶.安机械.开市.立券.安碓硙.纳畜.", "j": "栽种.嫁娶.入殓.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "开", "zc": "正冲正冲己巳", "ts": "碓磨床外西南" }, "d0126": { "y": "祭祀.祈福.斋醮.沐浴.安床.安机械.造车器.入殓.移柩.启攒.安葬.立碑.合帐.经络.交易.", "j": "作灶.掘井.嫁娶.入宅.", "c": "生肖冲马", "s": "煞南", "ch": "闭", "zc": "正冲正冲庚午", "ts": "厨灶碓外西南" }, "d0127": { "y": "解除.扫舍.祭祀.教牛马.余事勿取.", "j": "余事勿取.", "c": "生肖冲羊", "s": "煞东", "ch": "建", "zc": "正冲正冲辛未", "ts": "仓库厕外西南" }, "d0128": { "y": "开市.交易.立券.挂匾.开光.解除.伐木.作梁.出火.入宅.移徙.安床.拆卸.动土.上梁.栽种.纳畜.安葬.", "j": "嫁娶.祭祀.出行.置产.", "c": "生肖冲猴", "s": "煞北", "ch": "除", "zc": "正冲正冲壬申", "ts": "房床厕外正南" }, "d0129": { "y": "开市.交易.立券.纳财.开池.补垣.嫁娶.纳采.纳畜.取渔.安床.", "j": "修造.上梁.入宅.祈福.探病.掘井.动土.安门.安葬.作灶.", "c": "生肖冲鸡", "s": "煞西", "ch": "满", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d0130": { "y": "祭祀.解除.修饰垣墙.平治道涂.余事勿取.", "j": "余事勿取.", "c": "生肖冲狗", "s": "煞南", "ch": "平", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d0131": { "y": "嫁娶.祭祀.祈福.求嗣.动土.会亲友.起基.造仓.纳畜.牧养.作厕.进人口.", "j": "掘井.安葬.栽种.出行.作灶.开市.入宅.安门.", "c": "生肖冲猪", "s": "煞东", "ch": "定", "zc": "正冲正冲乙亥", "ts": "厨灶床外正西" } } ukui-panel-4.0.0.4/plugin-calendar/html/hlnew/hl2025.json0000644000175000017500000006545314560306203021320 0ustar fengfeng{ "d0101": { "y": "开业.开工.安门.安床.", "j": "结婚.领证.出行.安葬." }, "d0102": { "y": "结婚.领证.安葬.祭祀.", "j": "入宅.作灶.盖屋." }, "d0103": { "y": "搬家.入宅.安门.出行.", "j": "伐木." }, "d0104": { "y": "搬家.装修.结婚.入宅.", "j": "入宅." }, "d0105": { "y": "祭祀.破屋.坏垣.", "j": "." }, "d0106": { "y": "搬家.装修.开业.结婚.", "j": "安葬.作灶.开光." }, "d0107": { "y": "搬家.开业.入宅.开工.", "j": "结婚.领证.安葬.理发." }, "d0108": { "y": "结婚.领证.理发.嫁娶.", "j": "安葬.作灶.破土.纳畜." }, "d0109": { "y": "搬家.结婚.入宅.领证.", "j": "开业.开工.安葬.开张." }, "d0110": { "y": "开业.结婚.领证.开工.", "j": "入宅.安床.安葬." }, "d0111": { "y": "安床.安葬.破土.祈福.", "j": "结婚.领证.安门.订婚." }, "d0112": { "y": "结婚.领证.安床.出行.", "j": "动土.安葬.破土.开光." }, "d0113": { "y": "搬家.入宅.动土.订婚.", "j": "开业.结婚.领证.开工." }, "d0114": { "y": "开业.开工.安床.安葬.", "j": "结婚.领证.动土.破土." }, "d0115": { "y": "作灶.祭祀.掘井.", "j": "结婚.领证.安葬." }, "d0116": { "y": "开业.开工.动土.安葬.", "j": "搬家.结婚.入宅.领证." }, "d0117": { "y": "搬家.结婚.领证.出行.", "j": "搬家.结婚.领证.出行." }, "d0118": { "y": "开业.开工.动土.开张.", "j": "祭祀.解除.求医." }, "d0119": { "y": ".", "j": "沐浴.结网." }, "d0120": { "y": "结婚.入宅.领证.安葬.", "j": "." }, "d0121": { "y": ".", "j": "解除." }, "d0122": { "y": ".", "j": "搬家.开业.结婚.入宅." }, "d0123": { "y": "安葬.作灶.祈福.祭祀.", "j": "结婚.领证.安床.出行." }, "d0124": { "y": "开业.开工.开张.开市.", "j": "出行.旅游.教牛马.造畜稠." }, "d0125": { "y": ".", "j": "搬家.装修.入宅.动土." }, "d0126": { "y": "开业.结婚.领证.开工.", "j": "装修.入宅.安门.上梁." }, "d0127": { "y": "祭祀.解除.平治道涂.", "j": "." }, "d0128": { "y": "动土.交易.祈福.祭祀.", "j": "结婚.领证.安床.出行." }, "d0129": { "y": "装修.入宅.安门.安床.", "j": "开业.开工.动土.交易." }, "d0130": { "y": "祭祀.解除.破屋.", "j": "." }, "d0131": { "y": "塞穴.", "j": "." }, "d0201": { "y": "动土.安床.订婚.安葬.", "j": "." }, "d0202": { "y": "解除.", "j": "." }, "d0203": { "y": "搬家.开业.结婚.入宅.", "j": "安葬.祭祀.入殓." }, "d0204": { "y": "安床.安葬.交易.破土.", "j": "开业.结婚.领证.开工." }, "d0205": { "y": "出行.旅游.祭祀.扫舍.", "j": "安葬.破土.开光." }, "d0206": { "y": "订婚.求嗣.祈福.祭祀.", "j": "入宅.出行.安葬.作灶." }, "d0207": { "y": "开业.结婚.领证.开工.", "j": "装修.入宅.动土.安葬." }, "d0208": { "y": "作灶.祭祀.结网.畋猎.", "j": "结婚.领证.安床.嫁娶." }, "d0209": { "y": "安葬.破土.祭祀.解除.", "j": "结婚.入宅.领证.上梁." }, "d0210": { "y": "搬家.开业.结婚.入宅.", "j": "." }, "d0211": { "y": "搬家.装修.结婚.入宅.", "j": "开业.开工.开张.开市." }, "d0212": { "y": "祭祀.破屋.", "j": "." }, "d0213": { "y": "搬家.结婚.入宅.领证.", "j": "祈福." }, "d0214": { "y": "开业.开工.动土.订婚.", "j": "结婚.领证.安葬." }, "d0215": { "y": "搬家.结婚.入宅.领证.", "j": "动土.安葬." }, "d0216": { "y": "动土.订婚.交易.破土.", "j": "结婚.领证.安葬." }, "d0217": { "y": "搬家.结婚.入宅.领证.", "j": "赴任." }, "d0218": { "y": "结网.", "j": "." }, "d0219": { "y": "结婚.领证.动土.出行.", "j": "搬家.入宅." }, "d0220": { "y": "安床.订婚.作灶.订盟.", "j": "开业.开工.安葬.开张." }, "d0221": { "y": "安葬.破土.沐浴.启钻.", "j": "." }, "d0222": { "y": "搬家.开业.结婚.入宅.", "j": "." }, "d0223": { "y": "出行.安葬.旅游.破土.", "j": "装修.结婚.入宅.领证." }, "d0224": { "y": "祭祀.解除.破屋.", "j": "." }, "d0225": { "y": "搬家.装修.结婚.入宅.", "j": "." }, "d0226": { "y": "装修.开业.开工.动土.", "j": "搬家.结婚.入宅.领证." }, "d0227": { "y": "解除.", "j": "." }, "d0228": { "y": "开业.结婚.领证.开工.", "j": "搬家.入宅.动土.安门." }, "d0301": { "y": "搬家.装修.结婚.入宅.", "j": "开光.掘井." }, "d0302": { "y": "解除.", "j": "." }, "d0303": { "y": "开业.入宅.开工.动土.", "j": "结婚.领证.安床.作灶." }, "d0304": { "y": "认养.会亲友.", "j": "动土.安葬.上梁.伐木." }, "d0305": { "y": "安葬.破土.沐浴.成服.", "j": "搬家.结婚.领证.安床." }, "d0306": { "y": "搬家.开业.结婚.入宅.", "j": "." }, "d0307": { "y": "装修.结婚.领证.动土.", "j": "." }, "d0308": { "y": "解除.沐浴.破屋.", "j": "." }, "d0309": { "y": "搬家.装修.结婚.入宅.", "j": "开业.开工.开张.开市." }, "d0310": { "y": "开业.开工.动土.安床.", "j": "搬家.结婚.入宅.领证." }, "d0311": { "y": "搬家.入宅.出行.订婚.", "j": "装修.动土.安床.安葬." }, "d0312": { "y": "搬家.开业.开工.动土.", "j": "搬家.装修.入宅.安门." }, "d0313": { "y": "搬家.结婚.入宅.领证.", "j": "开业.开工.安门.开张." }, "d0314": { "y": "搬家.入宅.作灶.纳畜.", "j": "结婚.领证.安葬." }, "d0315": { "y": "安葬.祭祀.启钻.入殓.", "j": "动土.上梁." }, "d0316": { "y": "安床.出行.订婚.旅游.", "j": "搬家.入宅.安葬." }, "d0317": { "y": "搬家.开业.结婚.入宅.", "j": "动土." }, "d0318": { "y": "结婚.领证.祭祀.沐浴.", "j": "安葬." }, "d0319": { "y": "搬家.开业.结婚.入宅.", "j": "." }, "d0320": { "y": "搬家.装修.入宅.动土.", "j": "开业.开工.安葬.开张." }, "d0321": { "y": ".", "j": "." }, "d0322": { "y": "结婚.领证.订婚.安葬.", "j": "开业.开工.开张.开市." }, "d0323": { "y": "动土.安葬.上梁.破土.", "j": "结婚.领证.开光." }, "d0324": { "y": "祭祀.", "j": "." }, "d0325": { "y": "搬家.装修.结婚.入宅.", "j": "开业.开工.安葬.交易." }, "d0326": { "y": "装修.结婚.领证.动土.", "j": "出行.安葬.旅游.祈福." }, "d0327": { "y": "祭祀.", "j": "." }, "d0328": { "y": "搬家.开业.结婚.入宅.", "j": "安葬.伐木.作梁." }, "d0329": { "y": "搬家.装修.开业.入宅.", "j": "安床." }, "d0330": { "y": "理发.祭祀.沐浴.扫舍.", "j": "装修.结婚.入宅.领证." }, "d0331": { "y": "搬家.装修.结婚.入宅.", "j": "." }, "d0401": { "y": "搬家.装修.入宅.动土.", "j": "开业.结婚.领证.开工." }, "d0402": { "y": "破屋.", "j": "." }, "d0403": { "y": "装修.开业.开工.动土.", "j": "搬家.结婚.领证.安门." }, "d0404": { "y": "装修.开业.开工.动土.", "j": "搬家.结婚.入宅.领证." }, "d0405": { "y": "作灶.", "j": "." }, "d0406": { "y": "解除.", "j": "." }, "d0407": { "y": "装修.动土.安门.安床.", "j": "搬家.结婚.入宅.领证." }, "d0408": { "y": "祭祀.断蚁.", "j": "搬家.入宅.动土.移徙." }, "d0409": { "y": "搬家.装修.开业.结婚.", "j": "安葬.作灶.破土.伐木." }, "d0410": { "y": "搬家.装修.开业.结婚.", "j": "动土.安床.订婚.破土." }, "d0411": { "y": "结婚.领证.作灶.理发.", "j": "出行.旅游.破土." }, "d0412": { "y": "搬家.装修.结婚.入宅.", "j": "动土.破土." }, "d0413": { "y": "沐浴.", "j": "." }, "d0414": { "y": "动土.订婚.安葬.破土.", "j": "搬家.结婚.入宅.领证." }, "d0415": { "y": "祭祀.破屋.", "j": "." }, "d0416": { "y": "搬家.开业.结婚.入宅.", "j": "祈福." }, "d0417": { "y": "搬家.开业.结婚.入宅.", "j": "." }, "d0418": { "y": "作灶.祭祀.纳财.", "j": "开业.开工.开张.破土." }, "d0419": { "y": "搬家.开业.结婚.入宅.", "j": "安葬." }, "d0420": { "y": "安葬.启钻.成服.除服.", "j": "." }, "d0421": { "y": "搬家.结婚.入宅.领证.", "j": "动土." }, "d0422": { "y": "结婚.领证.安葬.破土.", "j": "开业.入宅.开工.开张." }, "d0423": { "y": "开业.结婚.领证.开工.", "j": "动土.破土." }, "d0424": { "y": "结婚.领证.祭祀.沐浴.", "j": "动土.安葬.破土.掘井." }, "d0425": { "y": "搬家.装修.开业.入宅.", "j": "结婚.领证.安葬.修坟." }, "d0426": { "y": "安葬.破土.祭祀.解除.", "j": "搬家.开业.结婚.入宅." }, "d0427": { "y": "破屋.", "j": "." }, "d0428": { "y": "搬家.装修.开业.结婚.", "j": "祭祀.祭祀.纳畜." }, "d0429": { "y": "搬家.装修.开业.结婚.", "j": "." }, "d0430": { "y": "作灶.祭祀.纳财.纳畜.", "j": "开业.开工.安床.安葬." }, "d0501": { "y": "开业.开工.开张.理发.", "j": "结婚.入宅.领证.出行." }, "d0502": { "y": "安葬.破土.祭祀.启钻.", "j": "." }, "d0503": { "y": "出行.交易.旅游.祭祀.", "j": "搬家.结婚.领证.动土." }, "d0504": { "y": "搬家.装修.开业.结婚.", "j": "." }, "d0505": { "y": "开业.结婚.领证.开工.", "j": "搬家.装修.入宅.动土." }, "d0506": { "y": "祭祀.", "j": "." }, "d0507": { "y": "装修.入宅.动土.安床.", "j": "结婚.领证.作灶.理发." }, "d0508": { "y": "安葬.理发.破土.祭祀.", "j": "搬家.开业.结婚.入宅." }, "d0509": { "y": "破屋.", "j": "." }, "d0510": { "y": "开业.结婚.领证.开工.", "j": "搬家.入宅.作灶.祭祀." }, "d0511": { "y": "搬家.装修.开业.结婚.", "j": "纳畜.伐木.掘井." }, "d0512": { "y": "交易.作灶.祭祀.牧养.", "j": "开业.开工.安床.出行." }, "d0513": { "y": "装修.结婚.领证.动土.", "j": "搬家.出行.安葬.旅游." }, "d0514": { "y": "祭祀.立碑.沐浴.启钻.", "j": "结婚.领证.安葬.破土." }, "d0515": { "y": "搬家.结婚.入宅.领证.", "j": "动土." }, "d0516": { "y": "结婚.领证.出行.安葬.", "j": "动土.作灶." }, "d0517": { "y": "装修.动土.订婚.安葬.", "j": "开业.结婚.领证.开工." }, "d0518": { "y": "搬家.装修.入宅.出行.", "j": "开业.开工.安葬.开张." }, "d0519": { "y": "沐浴.平治道涂.", "j": "结婚.领证.祈福." }, "d0520": { "y": "搬家.结婚.入宅.领证.", "j": "开业.开工.安葬.开张." }, "d0521": { "y": "安葬.破土.捕捉.结网.", "j": "结婚.入宅.领证." }, "d0522": { "y": "沐浴.破屋.坏垣.", "j": "." }, "d0523": { "y": "搬家.开业.结婚.入宅.", "j": "动土." }, "d0524": { "y": "搬家.结婚.入宅.领证.", "j": "开光." }, "d0525": { "y": "订婚.作灶.祈福.祭祀.", "j": "动土." }, "d0526": { "y": "结婚.领证.动土.安床.", "j": "装修.入宅.安门.上梁." }, "d0527": { "y": "搬家.装修.结婚.领证.", "j": "作灶.理发.开光.盖屋." }, "d0528": { "y": "搬家.安门.出行.安葬.", "j": "动土.安床.破土.掘井." }, "d0529": { "y": "安葬.理发.破土.祭祀.", "j": "搬家.结婚.入宅.领证." }, "d0530": { "y": "牧养.纳畜.开光.塞穴.", "j": "装修.开业.结婚.领证." }, "d0531": { "y": "作灶.沐浴.平治道涂.", "j": "." }, "d0601": { "y": "装修.动土.安床.出行.", "j": "搬家.结婚.领证.嫁娶." }, "d0602": { "y": "安葬.破土.祭祀.塞穴.", "j": "." }, "d0603": { "y": "破屋.", "j": "." }, "d0604": { "y": "安葬.祭祀.启钻.成服.", "j": "." }, "d0605": { "y": "搬家.开业.结婚.入宅.", "j": "出行.作灶.旅游.栽种." }, "d0606": { "y": "交易.祭祀.解除.纳财.", "j": "搬家.结婚.入宅.领证." }, "d0607": { "y": "结婚.领证.安床.出行.", "j": "搬家.入宅.安葬.纳畜." }, "d0608": { "y": "动土.安葬.破土.祭祀.", "j": "装修.入宅.安门.出行." }, "d0609": { "y": "安门.出行.作灶.旅游.", "j": "动土.安床.安葬.开生坟." }, "d0610": { "y": "装修.动土.安门.安床.", "j": "搬家.结婚.入宅.领证." }, "d0611": { "y": "搬家.装修.入宅.安床.", "j": "动土.安葬.作灶.破土." }, "d0612": { "y": "作灶.祭祀.沐浴.平治道涂.", "j": "结婚.领证.安门.安葬." }, "d0613": { "y": "搬家.装修.结婚.入宅.", "j": "开业.开工.开张.作灶." }, "d0614": { "y": "安葬.破土.祭祀.捕捉.", "j": "开业.结婚.入宅.领证." }, "d0615": { "y": "安葬.祭祀.拆卸.沐浴.", "j": "结婚.入宅.领证.作灶." }, "d0616": { "y": "祭祀.沐浴.破屋.", "j": "搬家.入宅.出行.旅游." }, "d0617": { "y": "开业.结婚.入宅.领证.", "j": "盖屋.冠笄.掘井." }, "d0618": { "y": "开业.开工.动土.安床.", "j": "安葬." }, "d0619": { "y": "结婚.领证.祭祀.捕捉.", "j": "搬家.入宅.作灶." }, "d0620": { "y": ".", "j": "开业.开工.安葬.交易." }, "d0621": { "y": "搬家.结婚.入宅.领证.", "j": "开业.开工.安床.交易." }, "d0622": { "y": "出行.旅游.祭祀.沐浴.", "j": "搬家.开业.入宅.开工." }, "d0623": { "y": "出行.旅游.赴任.祭祀.", "j": "." }, "d0624": { "y": ".", "j": "." }, "d0625": { "y": "破土.沐浴.成服.除服.", "j": "搬家.开业.结婚.入宅." }, "d0626": { "y": "搬家.装修.开业.结婚.", "j": "." }, "d0627": { "y": "动土.安葬.上梁.修坟.", "j": "搬家.结婚.入宅.领证." }, "d0628": { "y": "破屋.", "j": "." }, "d0629": { "y": "搬家.装修.开业.结婚.", "j": "." }, "d0630": { "y": "装修.开业.入宅.开工.", "j": "搬家.结婚.领证.出行." }, "d0701": { "y": "结婚.领证.理发.祭祀.", "j": "入宅.安葬.作灶.伐木." }, "d0702": { "y": "修坟.祭祀.立碑.启钻.", "j": "." }, "d0703": { "y": "搬家.装修.结婚.领证.", "j": "开业.入宅.开工.安床." }, "d0704": { "y": "出行.旅游.祭祀.", "j": "." }, "d0705": { "y": "结婚.领证.动土.安床.", "j": "安葬.作灶.伐木.作梁." }, "d0706": { "y": "搬家.开业.入宅.开工.", "j": "结婚.领证.安葬.作灶." }, "d0707": { "y": "祭祀.沐浴.平治道涂.", "j": "." }, "d0708": { "y": "搬家.装修.开业.结婚.", "j": "." }, "d0709": { "y": "解除.", "j": "." }, "d0710": { "y": "祭祀.破屋.坏垣.", "j": "." }, "d0711": { "y": "搬家.搬家.装修.结婚.", "j": "开业.开工.开张.开市." }, "d0712": { "y": "开业.开工.动土.安床.", "j": "搬家.结婚.入宅.领证." }, "d0713": { "y": "结婚.领证.作灶.理发.", "j": "开业.开工.上梁.开张." }, "d0714": { "y": "修坟.祭祀.启钻.成服.", "j": "开业.结婚.入宅.领证." }, "d0715": { "y": "结婚.入宅.领证.订婚.", "j": "安床.安葬.作灶." }, "d0716": { "y": "结婚.领证.安葬.破土.", "j": "动土." }, "d0717": { "y": "作灶.", "j": "安葬." }, "d0718": { "y": "入学.理发.沐浴.认养.", "j": "结婚.入宅.领证." }, "d0719": { "y": "安葬.启钻.开光.针灸.", "j": "开业.开工.动土.开张." }, "d0720": { "y": "祭祀.结网.", "j": "." }, "d0721": { "y": "安葬.破土.启钻.成服.", "j": "搬家.入宅." }, "d0722": { "y": "搬家.结婚.入宅.领证.", "j": "开业.开工.开张.赴任." }, "d0723": { "y": "祭祀.解除.破屋.", "j": "." }, "d0724": { "y": "订婚.订盟.牧养.纳财.", "j": "安葬." }, "d0725": { "y": "搬家.开业.结婚.入宅.", "j": "安门." }, "d0726": { "y": "祭祀.", "j": "." }, "d0727": { "y": "开业.开工.动土.出行.", "j": "结婚.入宅.领证.安门." }, "d0728": { "y": "安床.作灶.理发.祭祀.", "j": "结婚.领证.安门.开光." }, "d0729": { "y": "搬家.结婚.领证.出行.", "j": "动土.安葬.伐木.作梁." }, "d0730": { "y": "搬家.安床.出行.旅游.", "j": "结婚.领证.动土.订婚." }, "d0731": { "y": "开业.开工.安葬.交易.", "j": "搬家.结婚.入宅.领证." }, "d0801": { "y": "造畜稠.", "j": "." }, "d0802": { "y": "安葬.破土.启钻.成服.", "j": "." }, "d0803": { "y": "安葬.破土.祭祀.启钻.", "j": "." }, "d0804": { "y": "祭祀.解除.破屋.", "j": "." }, "d0805": { "y": "结婚.领证.订婚.求嗣.", "j": "安门.出行.安葬.上梁." }, "d0806": { "y": "搬家.装修.开业.结婚.", "j": "安葬.修坟.立碑.纳畜." }, "d0807": { "y": "结婚.领证.作灶.祭祀.", "j": "开业.开工.安葬.开张." }, "d0808": { "y": "搬家.开业.结婚.入宅.", "j": "安床." }, "d0809": { "y": "结婚.领证.动土.安床.", "j": "开光." }, "d0810": { "y": "搬家.入宅.安门.安床.", "j": "结婚.领证.安葬.破土." }, "d0811": { "y": "安床.出行.上梁.旅游.", "j": "结婚.领证.动土.安葬." }, "d0812": { "y": "安床.订婚.安葬.理发.", "j": "开业.结婚.入宅.领证." }, "d0813": { "y": "祭祀.解除.造畜稠.平治道涂.", "j": "开业.结婚.入宅.领证." }, "d0814": { "y": "安葬.破土.启钻.成服.", "j": "开业.入宅.开工.开张." }, "d0815": { "y": "搬家.装修.入宅.动土.", "j": "作灶." }, "d0816": { "y": "结婚.领证.安床.订婚.", "j": "开业.开工.交易.开张." }, "d0817": { "y": "祭祀.解除.破屋.", "j": "." }, "d0818": { "y": "搬家.装修.动土.安床.", "j": "盖屋." }, "d0819": { "y": "开业.开工.安床.订婚.", "j": "结婚.入宅.领证.赴任." }, "d0820": { "y": "沐浴.", "j": "." }, "d0821": { "y": ".", "j": "." }, "d0822": { "y": "出行.订婚.安葬.旅游.", "j": "入宅." }, "d0823": { "y": "出行.旅游.祭祀.沐浴.", "j": "结婚.领证.动土.安葬." }, "d0824": { "y": "搬家.结婚.入宅.领证.", "j": "开业.开工.开张." }, "d0825": { "y": ".", "j": "." }, "d0826": { "y": "搬家.开业.入宅.开工.", "j": "结婚.领证.动土.作灶." }, "d0827": { "y": "搬家.装修.结婚.入宅.", "j": "." }, "d0828": { "y": "装修.动土.安床.安葬.", "j": "搬家.开业.结婚.入宅." }, "d0829": { "y": "破屋.", "j": "." }, "d0830": { "y": "搬家.装修.开业.结婚.", "j": "安葬." }, "d0831": { "y": "安葬.理发.求嗣.修坟.", "j": "搬家.入宅.出行.作灶." }, "d0901": { "y": "祭祀.沐浴.成服.除服.", "j": "开业.结婚.领证.开工." }, "d0902": { "y": ".", "j": "." }, "d0903": { "y": "安床.破土.祭祀.启钻.", "j": "搬家.开业.结婚.入宅." }, "d0904": { "y": "祭祀.", "j": "." }, "d0905": { "y": "搬家.装修.结婚.入宅.", "j": "安床." }, "d0906": { "y": "安门.安床.理发.裁衣.", "j": "搬家.结婚.入宅.领证." }, "d0907": { "y": "搬家.装修.开业.结婚.", "j": "作灶.祈福.祭祀.伐木." }, "d0908": { "y": "祭祀.入殓.", "j": "装修.入宅.动土.安门." }, "d0909": { "y": "装修.入宅.安床.订婚.", "j": "作灶.伐木.掘井." }, "d0910": { "y": "搬家.装修.结婚.入宅.", "j": "开业.开工.出行.安葬." }, "d0911": { "y": "祭祀.破屋.坏垣.", "j": "." }, "d0912": { "y": "搬家.入宅.安床.出行.", "j": "安门.作灶.开光.栽种." }, "d0913": { "y": "搬家.装修.出行.旅游.", "j": "." }, "d0914": { "y": "安床.祭祀.沐浴.纳财.", "j": "开业.开工.开张.破土." }, "d0915": { "y": "装修.动土.订婚.上梁.", "j": "结婚.领证.作灶." }, "d0916": { "y": "出行.旅游.理发.沐浴.", "j": "入宅." }, "d0917": { "y": ".", "j": "入宅.动土." }, "d0918": { "y": "结婚.领证.出行.上梁.", "j": "开业.开工.安葬.开张." }, "d0919": { "y": "开业.开工.安葬.上梁.", "j": "结婚.领证.祈福." }, "d0920": { "y": ".", "j": "." }, "d0921": { "y": "装修.动土.订婚.安葬.", "j": "开业.结婚.领证.开工." }, "d0922": { "y": "搬家.装修.结婚.入宅.", "j": "开业.开工.安葬.开张." }, "d0923": { "y": "破屋.坏垣.", "j": "." }, "d0924": { "y": "装修.动土.交易.入学.", "j": "安门.作灶.理发.栽种." }, "d0925": { "y": "解除.", "j": "." }, "d0926": { "y": "理发.沐浴.", "j": "结婚.入宅.领证.安门." }, "d0927": { "y": "动土.安床.破土.祈福.", "j": "搬家.结婚.入宅.领证." }, "d0928": { "y": "装修.动土.安门.作灶.", "j": "结婚.领证.安床.安葬." }, "d0929": { "y": "安葬.启钻.成服.除服.", "j": "." }, "d0930": { "y": "搬家.开业.结婚.入宅.", "j": "安葬.作灶.伐木.塑绘." }, "d1001": { "y": "装修.开业.开工.安床.", "j": "搬家.结婚.入宅.领证." }, "d1002": { "y": "祭祀.", "j": "." }, "d1003": { "y": "入宅.动土.安床.安葬.", "j": "开业.结婚.领证.开工." }, "d1004": { "y": "祭祀.", "j": "." }, "d1005": { "y": "祭祀.沐浴.破屋.", "j": "." }, "d1006": { "y": "动土.安床.求嗣.祈福.", "j": "安门.作灶.栽种." }, "d1007": { "y": "解除.", "j": "." }, "d1008": { "y": "安葬.修坟.立碑.启钻.", "j": "开业.结婚.领证.开工." }, "d1009": { "y": "作灶.祭祀.除服.", "j": "开业.开工.安床.开张." }, "d1010": { "y": "作灶.沐浴.开光.冠笄.", "j": "结婚.领证.出行.安葬." }, "d1011": { "y": "安床.出行.订婚.上梁.", "j": "搬家.结婚.入宅.领证." }, "d1012": { "y": "祭祀.", "j": "." }, "d1013": { "y": "搬家.装修.入宅.动土.", "j": "出行.上梁.作灶.旅游." }, "d1014": { "y": "结婚.领证.安床.出行.", "j": "." }, "d1015": { "y": "入殓.移柩.平治道涂.", "j": "搬家.结婚.入宅.领证." }, "d1016": { "y": "搬家.装修.结婚.入宅.", "j": "开业.开工.出行.安葬." }, "d1017": { "y": "装修.结婚.领证.动土", "j": "开业.入宅.开工.开张." }, "d1018": { "y": "解除.破屋.", "j": "." }, "d1019": { "y": "结婚.领证.出行.订婚.", "j": "入宅." }, "d1020": { "y": "安葬.立碑.启钻.成服.", "j": "破土." }, "d1021": { "y": "结婚.领证.作灶.祈福.", "j": "安床.安葬.盖屋." }, "d1022": { "y": "开业.结婚.领证.开工.", "j": "结婚.领证.安葬.嫁娶." }, "d1023": { "y": "安床.安葬.交易.祈福.", "j": "结婚.入宅.领证.作灶." }, "d1024": { "y": "祭祀.解除.扫舍.", "j": "." }, "d1025": { "y": "搬家.开业.入宅.开工.", "j": "结婚.领证.出行.旅游." }, "d1026": { "y": "开业.结婚.领证.开工.", "j": "装修.入宅.动土.安门." }, "d1027": { "y": "祭祀.解除.平治道涂.", "j": "." }, "d1028": { "y": "结婚.领证.动土.求嗣.", "j": "开业.入宅.开工.安门." }, "d1029": { "y": "搬家.装修.结婚.入宅.", "j": "开业.入宅.开工.安门." }, "d1030": { "y": "破屋.", "j": "." }, "d1031": { "y": "搬家.装修.开业.结婚.", "j": "安床.祈福.纳畜." }, "d1101": { "y": "安葬.修坟.破土.祭祀.", "j": "." }, "d1102": { "y": "祭祀.", "j": "." }, "d1103": { "y": "搬家.开业.入宅.开工.", "j": "结婚.领证.安葬.作灶." }, "d1104": { "y": "安床.安葬.交易.裁衣.", "j": "结婚.入宅.领证.动土." }, "d1105": { "y": "祭祀.解除.针灸.教牛马.", "j": "结婚.领证.动土.安葬." }, "d1106": { "y": "纳财.裁衣.成服.除服.", "j": "搬家.结婚.入宅.领证." }, "d1107": { "y": "结婚.入宅.领证.出行.", "j": "." }, "d1108": { "y": "入宅.安床.订婚.求嗣.", "j": "安床.安葬.作灶." }, "d1109": { "y": "作灶.", "j": "安门.安葬.祈福." }, "d1110": { "y": "装修.动土.安门.安床.", "j": "安葬.作灶.盖屋." }, "d1111": { "y": "搬家.结婚.入宅.领证.", "j": "开业.开工.动土.开张." }, "d1112": { "y": "破屋.", "j": "." }, "d1113": { "y": "装修.结婚.入宅.领证.", "j": "安床." }, "d1114": { "y": "安葬.破土.立碑.成服.", "j": "结婚.入宅.领证.上梁." }, "d1115": { "y": "开业.开工.安床.订婚.", "j": "安葬.作灶.伐木." }, "d1116": { "y": "开业.开工.出行.订婚.", "j": "入宅.安葬.作灶." }, "d1117": { "y": "安葬.求嗣.祈福.祭祀.", "j": "搬家.结婚.入宅.领证." }, "d1118": { "y": "安床.安葬.上梁.交易.", "j": "结婚.入宅.领证.动土." }, "d1119": { "y": "搬家.开业.结婚.入宅.", "j": "掘井.词讼." }, "d1120": { "y": "结婚.领证.安床.求嗣.", "j": "搬家.开业.入宅.开工." }, "d1121": { "y": "作灶.解除.", "j": "安门.出行.安葬.旅游." }, "d1122": { "y": "解除.", "j": "." }, "d1123": { "y": "搬家.结婚.入宅.领证.", "j": "开业.开工.开张.作灶." }, "d1124": { "y": "祭祀.解除.破屋.坏垣.", "j": "." }, "d1125": { "y": "搬家.装修.入宅.动土.", "j": "结婚.领证.安床.作灶." }, "d1126": { "y": "安葬.破土.成服.除服.", "j": "." }, "d1127": { "y": "搬家.动土.安门.安床.", "j": "结婚.领证.安葬.作灶." }, "d1128": { "y": "结婚.领证.动土.安床.", "j": "入宅.出行.安葬.作灶." }, "d1129": { "y": "安床.安葬.作灶.祭祀.", "j": "入宅.出火.词讼." }, "d1130": { "y": "交易.纳财.裁衣.伐木.", "j": "." }, "d1201": { "y": "搬家.开业.结婚.入宅.", "j": "." }, "d1202": { "y": "装修.结婚.领证.安门.", "j": "搬家.入宅.安葬.作灶." }, "d1203": { "y": "祭祀.平治道涂.", "j": "." }, "d1204": { "y": "搬家.开业.入宅.开工.", "j": "动土.作灶.开光.盖屋." }, "d1205": { "y": "结婚.领证.动土.安葬.", "j": "开业.入宅.开工.安床." }, "d1206": { "y": "安葬.理发.修坟.祭祀.", "j": "结婚.入宅.领证.安床." }, "d1207": { "y": "破屋.", "j": "." }, "d1208": { "y": "动土.安床.出行.订婚.", "j": "作梁." }, "d1209": { "y": "开业.入宅.开工.动土.", "j": "结婚.领证.安葬.嫁娶." }, "d1210": { "y": "祭祀.沐浴.捕捉.", "j": "搬家.结婚.入宅.领证." }, "d1211": { "y": "搬家.装修.结婚.入宅.", "j": "安葬." }, "d1212": { "y": "装修.动土.安床.订婚.", "j": "开业.结婚.入宅.领证." }, "d1213": { "y": "开业.开工.安床.出行.", "j": "动土.作灶.掘井." }, "d1214": { "y": "祭祀.塞穴.", "j": "结婚.领证.安葬.作灶." }, "d1215": { "y": "开业.开工.上梁.交易.", "j": "结婚.入宅.领证." }, "d1216": { "y": "成服.除服.冠笄.入殓.", "j": "作灶.盖屋.探病." }, "d1217": { "y": "装修.结婚.入宅.领证.", "j": "伐木." }, "d1218": { "y": "装修.动土.订婚.安葬.", "j": "开业.开工.安床.开张." }, "d1219": { "y": "破屋.坏垣.求医.", "j": "." }, "d1220": { "y": "搬家.结婚.入宅.领证.", "j": "开光." }, "d1221": { "y": "搬家.开业.入宅.开工.", "j": "结婚.领证.安葬.嫁娶." }, "d1222": { "y": "结婚.领证.安床.纳财.", "j": "开业.开工.安葬.开张." }, "d1223": { "y": "装修.入宅.动土.出行.", "j": "开业.开工.安葬.开张." }, "d1224": { "y": "安床.订婚.安葬.交易.", "j": "结婚.入宅.领证.祭祀." }, "d1225": { "y": "结婚.领证.安床.出行.", "j": "动土.作灶.掘井." }, "d1226": { "y": ".", "j": "结婚.领证.安门.安葬." }, "d1227": { "y": "开业.开工.安门.安床.", "j": "结婚.领证.出行.安葬." }, "d1228": { "y": "结婚.领证.安葬.祭祀.", "j": "入宅.作灶.盖屋." }, "d1229": { "y": "搬家.入宅.安门.出行.", "j": "伐木." }, "d1230": { "y": "搬家.装修.结婚.领证.", "j": "入宅." }, "d1231": { "y": "祭祀.破屋.坏垣.", "j": "." } } ukui-panel-4.0.0.4/plugin-calendar/html/hlnew/hl20xx.json0000644000175000017500000002772014560306203021524 0ustar fengfeng{ "d0101": { "y": "", "j": "" }, "d0102": { "y": "", "j": "" }, "d0103": { "y": "", "j": "" }, "d0104": { "y": "", "j": "" }, "d0105": { "y": "", "j": "" }, "d0106": { "y": "", "j": "" }, "d0107": { "y": "", "j": "" }, "d0108": { "y": "", "j": "" }, "d0109": { "y": "", "j": "." }, "d0110": { "y": "", "j": "" }, "d0111": { "y": "", "j": "" }, "d0112": { "y": "", "j": "" }, "d0113": { "y": "", "j": "" }, "d0114": { "y": "", "j": "" }, "d0115": { "y": "", "j": "" }, "d0116": { "y": "", "j": "" }, "d0117": { "y": "", "j": "" }, "d0118": { "y": "", "j": "" }, "d0119": { "y": "", "j": "" }, "d0120": { "y": "", "j": "" }, "d0121": { "y": "", "j": "." }, "d0122": { "y": "", "j": "" }, "d0123": { "y": "", "j": "" }, "d0124": { "y": "", "j": "" }, "d0125": { "y": "", "j": "" }, "d0126": { "y": "", "j": "" }, "d0127": { "y": "", "j": "" }, "d0128": { "y": "", "j": "" }, "d0129": { "y": "", "j": "" }, "d0130": { "y": "", "j": "" }, "d0131": { "y": "", "j": "" }, "d0201": { "y": "", "j": "" }, "d0202": { "y": "", "j": "" }, "d0203": { "y": "", "j": "" }, "d0204": { "y": "", "j": "" }, "d0205": { "y": "", "j": "" }, "d0206": { "y": "", "j": "" }, "d0207": { "y": "", "j": "" }, "d0208": { "y": "", "j": "" }, "d0209": { "y": "", "j": "" }, "d0210": { "y": "", "j": "" }, "d0211": { "y": "", "j": "" }, "d0212": { "y": "", "j": "" }, "d0213": { "y": "", "j": "" }, "d0214": { "y": "", "j": "" }, "d0215": { "y": "", "j": "" }, "d0216": { "y": "", "j": "" }, "d0217": { "y": "", "j": "" }, "d0218": { "y": "", "j": "" }, "d0219": { "y": "", "j": "" }, "d0220": { "y": "", "j": "" }, "d0221": { "y": "", "j": "" }, "d0222": { "y": "", "j": "" }, "d0223": { "y": "", "j": "" }, "d0224": { "y": "", "j": "" }, "d0225": { "y": "", "j": "" }, "d0226": { "y": "", "j": "" }, "d0227": { "y": "", "j": "" }, "d0228": { "y": "", "j": "" }, "d0301": { "y": "", "j": "" }, "d0302": { "y": "", "j": "" }, "d0303": { "y": "", "j": "" }, "d0304": { "y": "", "j": "" }, "d0305": { "y": "", "j": "" }, "d0306": { "y": "", "j": "" }, "d0307": { "y": "", "j": "" }, "d0308": { "y": "", "j": "" }, "d0309": { "y": "", "j": "" }, "d0310": { "y": "", "j": "" }, "d0311": { "y": "", "j": "" }, "d0312": { "y": "", "j": "" }, "d0313": { "y": "", "j": "" }, "d0314": { "y": "", "j": "" }, "d0315": { "y": "", "j": "" }, "d0316": { "y": "", "j": "" }, "d0317": { "y": "", "j": "" }, "d0318": { "y": "", "j": "" }, "d0319": { "y": "", "j": "" }, "d0320": { "y": "", "j": "" }, "d0321": { "y": "", "j": "" }, "d0322": { "y": "", "j": "" }, "d0323": { "y": "", "j": "" }, "d0324": { "y": "", "j": "" }, "d0325": { "y": "", "j": "" }, "d0326": { "y": "", "j": "" }, "d0327": { "y": "", "j": "" }, "d0328": { "y": "", "j": "" }, "d0329": { "y": "", "j": "" }, "d0330": { "y": "", "j": "" }, "d0331": { "y": "", "j": "" }, "d0401": { "y": "", "j": "" }, "d0402": { "y": "", "j": "" }, "d0403": { "y": "", "j": "" }, "d0404": { "y": "", "j": "" }, "d0405": { "y": "", "j": "" }, "d0406": { "y": "", "j": "" }, "d0407": { "y": "", "j": "" }, "d0408": { "y": "", "j": "" }, "d0409": { "y": "", "j": "" }, "d0410": { "y": "", "j": "" }, "d0411": { "y": "", "j": "" }, "d0412": { "y": "", "j": "" }, "d0413": { "y": "", "j": "" }, "d0414": { "y": "", "j": "" }, "d0415": { "y": "", "j": "" }, "d0416": { "y": "", "j": "" }, "d0417": { "y": "", "j": "" }, "d0418": { "y": "", "j": "" }, "d0419": { "y": "", "j": "" }, "d0420": { "y": "", "j": "" }, "d0421": { "y": "", "j": "" }, "d0422": { "y": "", "j": "" }, "d0423": { "y": "", "j": "" }, "d0424": { "y": "", "j": "" }, "d0425": { "y": "", "j": "" }, "d0426": { "y": "", "j": "" }, "d0427": { "y": "", "j": "" }, "d0428": { "y": "", "j": "" }, "d0429": { "y": "", "j": "" }, "d0430": { "y": "", "j": "" }, "d0501": { "y": "", "j": "" }, "d0502": { "y": "", "j": "" }, "d0503": { "y": "", "j": "" }, "d0504": { "y": "", "j": "" }, "d0505": { "y": "", "j": "" }, "d0506": { "y": "", "j": "" }, "d0507": { "y": "", "j": "" }, "d0508": { "y": "", "j": "" }, "d0509": { "y": "", "j": "" }, "d0510": { "y": "", "j": "" }, "d0511": { "y": "", "j": "" }, "d0512": { "y": "", "j": "" }, "d0513": { "y": "", "j": "" }, "d0514": { "y": "", "j": "" }, "d0515": { "y": "", "j": "" }, "d0516": { "y": "", "j": "" }, "d0517": { "y": "", "j": "" }, "d0518": { "y": "", "j": "" }, "d0519": { "y": "", "j": "" }, "d0520": { "y": "", "j": "" }, "d0521": { "y": "", "j": "" }, "d0522": { "y": "", "j": "" }, "d0523": { "y": "", "j": "" }, "d0524": { "y": "", "j": "" }, "d0525": { "y": "", "j": "" }, "d0526": { "y": "", "j": "" }, "d0527": { "y": "", "j": "" }, "d0528": { "y": "", "j": "" }, "d0529": { "y": "", "j": "" }, "d0530": { "y": "", "j": "" }, "d0531": { "y": "", "j": "" }, "d0601": { "y": "", "j": "" }, "d0602": { "y": "", "j": "" }, "d0603": { "y": "", "j": "" }, "d0604": { "y": "", "j": "" }, "d0605": { "y": "", "j": "" }, "d0606": { "y": "", "j": "" }, "d0607": { "y": "", "j": "" }, "d0608": { "y": "", "j": "" }, "d0609": { "y": "", "j": "" }, "d0610": { "y": "", "j": "" }, "d0611": { "y": "", "j": "" }, "d0612": { "y": "", "j": "" }, "d0613": { "y": "", "j": "" }, "d0614": { "y": "", "j": "" }, "d0615": { "y": "", "j": "" }, "d0616": { "y": "", "j": "" }, "d0617": { "y": "", "j": "" }, "d0618": { "y": "", "j": "" }, "d0619": { "y": "", "j": "" }, "d0620": { "y": "", "j": "" }, "d0621": { "y": "", "j": "" }, "d0622": { "y": "", "j": "" }, "d0623": { "y": "", "j": "" }, "d0624": { "y": "", "j": "" }, "d0625": { "y": "", "j": "" }, "d0626": { "y": "", "j": "" }, "d0627": { "y": "", "j": "" }, "d0628": { "y": "", "j": "" }, "d0629": { "y": "", "j": "" }, "d0630": { "y": "", "j": "" }, "0709": { "y": "", "j": "" }, "d0809": { "y": "", "j": "" }, "d0701": { "y": "", "j": "" }, "d0702": { "y": "", "j": "" }, "d0703": { "y": "", "j": "" }, "d0704": { "y": "", "j": "" }, "d0705": { "y": "", "j": "" }, "d0706": { "y": "", "j": "" }, "d0707": { "y": "", "j": "" }, "d0708": { "y": "", "j": "" }, "d0709": { "y": "", "j": "" }, "d0710": { "y": "", "j": "" }, "d0711": { "y": "", "j": "" }, "d0712": { "y": "", "j": "" }, "d0713": { "y": "", "j": "" }, "d0714": { "y": "", "j": "" }, "d0715": { "y": "", "j": "" }, "d0716": { "y": "", "j": "" }, "d0717": { "y": "", "j": "" }, "d0718": { "y": "", "j": "" }, "d0719": { "y": "", "j": "" }, "d0720": { "y": "", "j": "" }, "d0721": { "y": "", "j": "" }, "d0722": { "y": "", "j": "" }, "d0723": { "y": "", "j": "" }, "d0724": { "y": "", "j": "" }, "d0725": { "y": "", "j": "" }, "d0726": { "y": "", "j": "" }, "d0727": { "y": "", "j": "" }, "d0728": { "y": "", "j": "" }, "d0729": { "y": "", "j": "" }, "d0730": { "y": "", "j": "" }, "d0731": { "y": "", "j": "" }, "d0801": { "y": "", "j": "" }, "d0802": { "y": "", "j": "" }, "d0803": { "y": "", "j": "" }, "d0804": { "y": "", "j": "" }, "d0805": { "y": "", "j": "" }, "d0806": { "y": "", "j": "" }, "d0807": { "y": "", "j": "" }, "d0808": { "y": "", "j": "" }, "d0809": { "y": "", "j": "" }, "d0810": { "y": "", "j": "" }, "d0811": { "y": "", "j": "" }, "d0812": { "y": "", "j": "" }, "d0813": { "y": "", "j": "" }, "d0814": { "y": "", "j": "" }, "d0815": { "y": "", "j": "" }, "d0816": { "y": "", "j": "" }, "d0817": { "y": "", "j": "" }, "d0818": { "y": "", "j": "" }, "d0819": { "y": "", "j": "" }, "d0820": { "y": "", "j": "" }, "d0821": { "y": "", "j": "" }, "d0822": { "y": "", "j": "" }, "d0823": { "y": "", "j": "" }, "d0824": { "y": "", "j": "" }, "d0825": { "y": "", "j": "" }, "d0826": { "y": "", "j": "" }, "d0827": { "y": "", "j": "" }, "d0828": { "y": "", "j": "" }, "d0829": { "y": "", "j": "" }, "d0830": { "y": "", "j": "" }, "d0831": { "y": "", "j": "" }, "d0901": { "y": "", "j": "" }, "d0902": { "y": "", "j": "" }, "d0903": { "y": "", "j": "" }, "d0904": { "y": "", "j": "" }, "d0905": { "y": "", "j": "" }, "d0906": { "y": "", "j": "" }, "d0907": { "y": "", "j": "" }, "d0908": { "y": "", "j": "" }, "d0909": { "y": "", "j": "" }, "d0910": { "y": "", "j": "" }, "d0911": { "y": "", "j": "" }, "d0912": { "y": "", "j": "" }, "d0913": { "y": "", "j": "" }, "d0914": { "y": "", "j": "" }, "d0915": { "y": "", "j": "" }, "d0916": { "y": "", "j": "" }, "d0917": { "y": "", "j": "" }, "d0918": { "y": "", "j": "" }, "d0919": { "y": "", "j": "" }, "d0920": { "y": "", "j": "" }, "d0921": { "y": "", "j": "" }, "d0922": { "y": "", "j": "" }, "d0923": { "y": "", "j": "" }, "d0924": { "y": "", "j": "" }, "d0925": { "y": "", "j": "" }, "d0926": { "y": "", "j": "" }, "d0927": { "y": "", "j": "" }, "d0928": { "y": "", "j": "" }, "d0929": { "y": "", "j": "" }, "d0930": { "y": "", "j": "" }, "d1001": { "y": "", "j": "" }, "d1002": { "y": "", "j": "" }, "d1003": { "y": "", "j": "" }, "d1004": { "y": "", "j": "" }, "d1005": { "y": "", "j": "" }, "d1006": { "y": "", "j": "" }, "d1007": { "y": "", "j": "" }, "d1008": { "y": "", "j": "" }, "d1009": { "y": "", "j": "" }, "d1010": { "y": "", "j": "" }, "d1011": { "y": "", "j": "" }, "d1012": { "y": "", "j": "" }, "d1013": { "y": "", "j": "" }, "d1014": { "y": "", "j": "" }, "d1015": { "y": "", "j": "" }, "d1016": { "y": "", "j": "" }, "d1017": { "y": "", "j": "" }, "d1018": { "y": "", "j": "" }, "d1019": { "y": "", "j": "" }, "d1020": { "y": "", "j": "" }, "d1021": { "y": "", "j": "" }, "d1022": { "y": "", "j": "" }, "d1023": { "y": "", "j": "" }, "d1024": { "y": "", "j": "" }, "d1025": { "y": "", "j": "" }, "d1026": { "y": "", "j": "" }, "d1027": { "y": "", "j": "" }, "d1028": { "y": "", "j": "" }, "d1029": { "y": "", "j": "" }, "d1030": { "y": "", "j": "" }, "d1031": { "y": "", "j": "" }, "d1101": { "y": "", "j": "" }, "d1102": { "y": "", "j": "" }, "d1103": { "y": "", "j": "" }, "d1104": { "y": "", "j": "" }, "d1105": { "y": "", "j": "" }, "d1106": { "y": "", "j": "" }, "d1107": { "y": "", "j": "" }, "d1108": { "y": "", "j": "" }, "d1109": { "y": "", "j": "" }, "d1110": { "y": "", "j": "" }, "d1111": { "y": "", "j": "" }, "d1112": { "y": "", "j": "" }, "d1113": { "y": "", "j": "" }, "d1114": { "y": "", "j": "" }, "d1115": { "y": "", "j": "" }, "d1116": { "y": "", "j": "" }, "d1117": { "y": "", "j": "" }, "d1118": { "y": "", "j": "" }, "d1119": { "y": "", "j": "" }, "d1120": { "y": "", "j": "" }, "d1121": { "y": "", "j": "" }, "d1122": { "y": "", "j": "" }, "d1123": { "y": "", "j": "" }, "d1124": { "y": "", "j": "" }, "d1125": { "y": "", "j": "" }, "d1126": { "y": "", "j": "" }, "d1127": { "y": "", "j": "" }, "d1128": { "y": "", "j": "" }, "d1129": { "y": "", "j": "" }, "d1130": { "y": "", "j": "" }, "d1201": { "y": "", "j": "" }, "d1202": { "y": "", "j": "" }, "d1203": { "y": "", "j": "" }, "d1204": { "y": "", "j": "" }, "d1205": { "y": "", "j": "" }, "d1206": { "y": "", "j": "" }, "d1207": { "y": "", "j": "" }, "d1208": { "y": "", "j": "" }, "d1209": { "y": "", "j": "" }, "d1210": { "y": "", "j": "" }, "d1211": { "y": "", "j": "" }, "d1212": { "y": "", "j": "" }, "d1213": { "y": "", "j": "" }, "d1214": { "y": "", "j": "" }, "d1215": { "y": "", "j": "" }, "d1216": { "y": "", "j": "" }, "d1217": { "y": "", "j": "" }, "d1218": { "y": "", "j": "" }, "d1219": { "y": "", "j": "" }, "d1220": { "y": "", "j": "" }, "d1221": { "y": "", "j": "" }, "d1222": { "y": "", "j": "" }, "d1223": { "y": "", "j": "" }, "d1224": { "y": "", "j": "" }, "d1225": { "y": "", "j": "" }, "d1226": { "y": "", "j": "" }, "d1227": { "y": "", "j": "" }, "d1228": { "y": "", "j": "" }, "d1229": { "y": "", "j": "" }, "d1230": { "y": "", "j": "" }, "d1231": { "y": "", "j": "" } } ukui-panel-4.0.0.4/plugin-calendar/html/hlnew/hl2021.json0000644000175000017500000022226014560306203021303 0ustar fengfeng{ "d0101": { "y":"搬家.结婚.入宅.领证.订婚.入学.求嗣.纳财." , "j": "装修.开业.开工.安床.出行.安葬.上梁.开张." }, "d0102": { "y": "搬家.结婚.领证.订婚.上梁.入学.求嗣.祈福.", "j": "装修.开业.开工.动土.安床.出行.安葬.开张." }, "d0103": { "y": "装修.开业.结婚.领证.开工.订婚.安葬.上梁.", "j": "搬家.入宅.动土.出行.旅游.解除.安香.移徙." }, "d0104": { "y": "开业.结婚.领证.开工.开张.作灶.入学.祭祀.", "j": "搬家.装修.入宅.动土.安门.安床.出行.订婚." }, "d0105": { "y": "装修.开业.开工.动土.出行.上梁.开张.旅游.", "j": "搬家.结婚.入宅.领证.安床.订婚.安葬.破土." }, "d0106": { "y": "入宅.订婚.安葬.上梁.求嗣.解除.牧养.纳畜.", "j": "搬家.装修.开业.结婚.领证.开工.动土.出行." }, "d0107": { "y": "搬家.结婚.入宅.领证.安床.出行.订婚.安葬.", "j": "装修.动土.修造.纳畜.经络.掘井.栽种.放水." }, "d0108": { "y": "开业.开工.订婚.开张.入学.求嗣.祈福.祭祀.", "j": "搬家.装修.结婚.入宅.领证.动土.安床.出行." }, "d0109": { "y": "结婚.领证.作灶.求嗣.祈福.祭祀.捕捉.嫁娶.", "j": "搬家.装修.开业.入宅.开工.安门.安床.出行." }, "d0110": { "y": "求嗣.赴任.祭祀.解除.破屋.立券.求医.招赘.", "j": "搬家.装修.开业.结婚.入宅.领证.开工.动土." }, "d0111": { "y": "装修.结婚.领证.安床.订婚.赴任.修造.祈福.", "j": "开业.开工.安葬.开张.破土.开市.纳畜.启钻." }, "d0112": { "y": "结婚.领证.出行.订婚.安葬.作灶.旅游.入学.", "j": "搬家.装修.开业.入宅.开工.动土.安门.安床." }, "d0113": { "y": "装修.入宅.动土.订婚.入学.求嗣.修坟.赴任.", "j": "搬家.开业.结婚.领证.开工.安床.出行.安葬." }, "d0114": { "y": "装修.结婚.领证.动土.订婚.上梁.入学.求嗣.", "j": "搬家.开业.入宅.开工.出行.安葬.开张.旅游." }, "d0115": { "y": "搬家.结婚.领证.出行.上梁.旅游.入学.求嗣.", "j": "装修.开业.入宅.开工.动土.安床.订婚.安葬." }, "d0116": { "y": "开业.开工.订婚.安葬.上梁.开张.求嗣.赴任.", "j": "搬家.装修.结婚.入宅.领证.动土.出行.旅游." }, "d0117": { "y": "搬家.开业.结婚.领证.开工.出行.开张.作灶.", "j": "装修.入宅.动土.安床.订婚.安葬.上梁.求嗣." }, "d0118": { "y": "开业.开工.出行.安葬.开张.旅游.求嗣.赴任.", "j": "搬家.装修.结婚.入宅.领证.动土.订婚.上梁." }, "d0119": { "y": "入宅.出行.安葬.旅游.求嗣.牧养.启钻.裁衣.", "j": "搬家.装修.开业.结婚.领证.开工.动土.安门." }, "d0120": { "y": "开业.结婚.领证.开工.动土.出行.订婚.上梁.", "j": "搬家.装修.入宅.安葬.破土.修造.安香.纳畜." }, "d0121": { "y": "订婚.入学.求嗣.祈福.祭祀.裁衣.纳采.盖屋.", "j": "搬家.装修.开业.结婚.入宅.领证.开工.动土." }, "d0122": { "y": "装修.结婚.领证.动土.安床.订婚.作灶.修坟.", "j": "搬家.开业.入宅.开工.出行.安葬.上梁.开张." }, "d0123": { "y": "作灶.求嗣.修坟.赴任.解除.纳财.破屋.立券.", "j": "搬家.装修.开业.结婚.入宅.领证.开工.动土." }, "d0124": { "y": "搬家.装修.开业.结婚.入宅.领证.开工.动土.", "j": "安床.上梁.解除.纳畜.伐木." }, "d0125": { "y": "搬家.装修.开业.结婚.入宅.领证.开工.动土.", "j": "安床.上梁.破土.祈福.纳畜.伐木.斋醮.词讼." }, "d0126": { "y": "搬家.装修.结婚.入宅.领证.动土.订婚.上梁.", "j": "开业.开工.出行.安葬.开张.旅游.修坟.破土." }, "d0127": { "y": "结婚.领证.出行.订婚.上梁.作灶.旅游.入学.", "j": "搬家.装修.开业.入宅.开工.动土.安床.安葬." }, "d0128": { "y": "开业.开工.订婚.安葬.开张.求嗣.赴任.祈福.", "j": "搬家.装修.结婚.入宅.领证.动土.出行.旅游." }, "d0129": { "y": "出行.旅游.入学.祭祀.冠笄.求财.求人.招赘.", "j": "搬家.装修.结婚.入宅.领证.动土.安门.安床." }, "d0130": { "y": "搬家.开业.入宅.开工.出行.上梁.开张.旅游.", "j": "装修.结婚.领证.动土.订婚.安葬.破土.修造." }, "d0131": { "y": "求嗣.修坟.牧养.启钻.裁衣.经络.栽种.招赘.", "j": "搬家.装修.开业.结婚.入宅.领证.开工.动土." }, "d0201": { "y": "搬家.开业.结婚.入宅.领证.开工.动土.安床.", "j": "装修.修造.纳畜.盖屋.经络.掘井.栽种.放水." }, "d0202": { "y": "搬家.订婚.安葬.上梁.入学.求嗣.赴任.祈福.", "j": "装修.开业.结婚.入宅.领证.开工.动土.安床." }, "d0203": { "y": "装修.结婚.领证.动土.订婚.求嗣.修坟.修造.", "j": "搬家.开业.入宅.开工.出行.安葬.上梁.开张." }, "d0204": { "y": "作灶.求嗣.修坟.赴任.解除.纳财.破屋.立券.", "j": "搬家.装修.开业.结婚.入宅.领证.开工.动土." }, "d0205": { "y": "装修.开业.结婚.领证.开工.动土.订婚.安葬.", "j": "搬家.入宅.安床.上梁.解除.安香.纳畜.移徙." }, "d0206": { "y": "装修.开业.结婚.入宅.领证.开工.动土.出行.", "j": "搬家.安床.安葬.上梁.祈福.纳畜.移徙.伐木." }, "d0207": { "y": "装修.结婚.领证.订婚.入学.修造.祈福.祭祀.", "j": "搬家.开业.入宅.开工.出行.安葬.开张.旅游." }, "d0208": { "y": "搬家.结婚.领证.出行.订婚.旅游.入学.求嗣.", "j": "装修.开业.入宅.开工.动土.安床.安葬.上梁." }, "d0209": { "y": "开业.开工.订婚.开张.求嗣.赴任.祈福.祭祀.", "j": "搬家.装修.结婚.入宅.领证.动土.出行.安葬." }, "d0210": { "y": "出行.旅游.入学.祭祀.冠笄.求财.求人.招赘.", "j": "装修.结婚.入宅.领证.动土.安床.订婚.安葬." }, "d0211": { "y": "搬家.开业.结婚.入宅.领证.开工.安床.出行.", "j": "装修.动土.订婚.修造.纳采." }, "d0212": { "y": "开业.结婚.领证.开工.安床.出行.开张.作灶.", "j": "搬家.装修.入宅.动土.订婚.安葬.上梁.修造." }, "d0213": { "y": "结婚.领证.订婚.作灶.求嗣.牧养.裁衣.嫁娶.", "j": "搬家.装修.开业.入宅.开工.动土.安床.出行." }, "d0214": { "y": "结婚.领证.动土.订婚.求嗣.赴任.纳财.嫁娶.", "j": "搬家.装修.开业.入宅.开工.安葬.上梁.开张." }, "d0215": { "y": "搬家.开业.结婚.入宅.领证.开工.订婚.上梁.", "j": "装修.动土.安床.出行.安葬.旅游.赴任.破土." }, "d0216": { "y": "装修.结婚.领证.动土.安床.订婚.安葬.上梁.", "j": "搬家.开业.入宅.开工.出行.开张.旅游.祈福." }, "d0217": { "y": "开业.结婚.领证.开工.开张.作灶.求嗣.修坟.", "j": "搬家.装修.入宅.动土.安门.安床.出行.订婚." }, "d0218": { "y": "搬家.装修.开业.结婚.入宅.领证.开工.动土.", "j": "安葬.破土.启钻.伐木.入殓.移柩." }, "d0219": { "y": "搬家.装修.开业.结婚.入宅.领证.开工.动土.", "j": "祈福.纳畜.经络.栽种.斋醮.词讼.置产." }, "d0220": { "y": "装修.入宅.订婚.入学.修造.祈福.祭祀.纳财.", "j": "搬家.开业.结婚.领证.开工.安床.出行.安葬." }, "d0221": { "y": "搬家.装修.结婚.入宅.领证.出行.旅游.入学.", "j": "开业.开工.动土.安门.安床.订婚.安葬.上梁." }, "d0222": { "y": "开业.结婚.领证.开工.安床.订婚.安葬.开张.", "j": "搬家.装修.入宅.动土.出行.旅游.破土.修造." }, "d0223": { "y": "开业.结婚.领证.开工.安床.出行.开张.作灶.", "j": "搬家.装修.入宅.动土.订婚.安葬.上梁.求嗣." }, "d0224": { "y": "装修.安葬.修坟.赴任.破土.修造.祈福.祭祀.", "j": "搬家.结婚.入宅.领证.出行.订婚.旅游.纳畜." }, "d0225": { "y": "订婚.上梁.求嗣.解除.牧养.纳畜.裁衣.纳采.", "j": "搬家.装修.开业.结婚.入宅.领证.开工.动土." }, "d0226": { "y": "搬家.结婚.领证.动土.订婚.求嗣.赴任.纳财.", "j": "装修.开业.开工.安葬.上梁.开张.破土.修造." }, "d0227": { "y": "搬家.开业.结婚.入宅.领证.开工.订婚.安葬.", "j": "装修.动土.安床.出行.旅游.修造.求医.词讼." }, "d0228": { "y": "装修.结婚.领证.动土.安床.订婚.作灶.求嗣.", "j": "搬家.开业.入宅.开工.出行.安葬.上梁.开张." }, "d0301": { "y": "开业.开工.开张.作灶.修坟.赴任.破土.解除.", "j": "搬家.装修.结婚.入宅.领证.动土.安门.安床." }, "d0302": { "y": "搬家.装修.结婚.入宅.领证.安床.订婚.上梁.", "j": "安葬.破土.启钻.伐木.入殓.移柩." }, "d0303": { "y": "搬家.装修.开业.结婚.入宅.领证.开工.动土.", "j": "安床.安葬.上梁.破土.祈福.纳畜.启钻.伐木." }, "d0304": { "y": "装修.结婚.领证.动土.订婚.作灶.入学.求嗣.", "j": "搬家.开业.入宅.开工.安床.出行.安葬.上梁." }, "d0305": { "y": "搬家.装修.结婚.入宅.领证.入学.求嗣.赴任.", "j": "开业.开工.动土.安门.安床.出行.订婚.安葬." }, "d0306": { "y": "开业.开工.订婚.安葬.上梁.开张.求嗣.赴任.", "j": "搬家.装修.结婚.入宅.领证.动土.出行.旅游." }, "d0307": { "y": "搬家.结婚.领证.出行.旅游.入学.祭祀.纳财.", "j": "装修.动土.安床.订婚.安葬.上梁.求嗣.赴任." }, "d0308": { "y": "出行.旅游.求嗣.赴任.破土.祈福.祭祀.解除.", "j": "搬家.装修.结婚.入宅.领证.动土.订婚.安葬." }, "d0309": { "y": "结婚.领证.订婚.上梁.作灶.求嗣.解除.牧养.", "j": "搬家.装修.开业.入宅.开工.动土.安床.出行." }, "d0310": { "y": "搬家.结婚.入宅.领证.动土.安床.订婚.作灶.", "j": "装修.开业.开工.安葬.上梁.开张.破土.修造." }, "d0311": { "y": "搬家.开业.结婚.领证.开工.订婚.安葬.上梁.", "j": "装修.动土.安床.出行.旅游.修造.求医.词讼." }, "d0312": { "y": "装修.结婚.领证.安床.订婚.上梁.修造.祭祀.", "j": "搬家.开业.入宅.开工.出行.开张.旅游.祈福." }, "d0313": { "y": "结婚.领证.动土.作灶.修坟.赴任.破土.祈福.", "j": "搬家.装修.开业.入宅.开工.安门.安床.出行." }, "d0314": { "y": "结婚.领证.修坟.破土.破屋.嫁娶.立券.求医.", "j": "搬家.装修.开业.入宅.开工.动土.安门.安床." }, "d0315": { "y": "装修.开业.结婚.领证.开工.动土.安床.订婚.", "j": "搬家.入宅.祈福.安香.纳畜.移徙.伐木.经络." }, "d0316": { "y": "搬家.装修.开业.结婚.入宅.领证.开工.动土.", "j": "安床.安葬.上梁.破土.祈福.纳畜.启钻.伐木." }, "d0317": { "y": "搬家.结婚.入宅.领证.订婚.作灶.入学.求嗣.", "j": "装修.开业.开工.动土.安床.出行.安葬.上梁." }, "d0318": { "y": "搬家.结婚.领证.订婚.上梁.入学.求嗣.赴任.", "j": "装修.开业.入宅.开工.动土.安床.出行.安葬." }, "d0319": { "y": "装修.开业.结婚.领证.开工.订婚.安葬.开张.", "j": "搬家.入宅.动土.出行.上梁.旅游.解除.安香." }, "d0320": { "y": "搬家.入宅.出行.旅游.入学.赴任.纳财.纳畜.", "j": "装修.结婚.领证.动土.订婚.安葬.上梁.求嗣." }, "d0321": { "y": "装修.出行.旅游.求嗣.赴任.修造.祭祀.解除.", "j": "搬家.开业.结婚.入宅.领证.开工.安床.订婚." }, "d0322": { "y": "结婚.领证.安床.出行.订婚.安葬.作灶.旅游.", "j": "搬家.装修.开业.入宅.开工.动土.开张.赴任." }, "d0323": { "y": "装修.开业.结婚.领证.开工.动土.订婚.安葬.", "j": "搬家.入宅.出行.旅游.出火.移徙.经络.掘井." }, "d0324": { "y": "搬家.开业.结婚.领证.开工.订婚.安葬.开张.", "j": "装修.动土.安床.出行.上梁.旅游.修造.求医." }, "d0325": { "y": "装修.结婚.领证.安床.订婚.安葬.上梁.作灶.", "j": "搬家.开业.入宅.开工.出行.开张.旅游.赴任." }, "d0326": { "y": "修坟.破屋.启钻.立券.求医.招赘.纳婿.", "j": "搬家.装修.开业.结婚.入宅.领证.开工.动土." }, "d0327": { "y": "搬家.装修.开业.结婚.领证.开工.动土.安床.", "j": "入宅.祈福.纳畜.伐木.经络.斋醮.放水.开仓." }, "d0328": { "y": "装修.结婚.领证.动土.出行.旅游.入学.求嗣.", "j": "搬家.开业.入宅.开工.安床.订婚.安葬.上梁." }, "d0329": { "y": "结婚.入宅.领证.订婚.入学.求嗣.赴任.祈福.", "j": "搬家.装修.开业.开工.动土.安床.出行.安葬." }, "d0330": { "y": "结婚.领证.订婚.上梁.入学.求嗣.祈福.祭祀.", "j": "搬家.装修.开业.入宅.开工.动土.安床.出行." }, "d0331": { "y": "装修.开业.开工.订婚.安葬.开张.修坟.赴任.", "j": "搬家.结婚.入宅.领证.动土.出行.旅游.解除." }, "d0401": { "y": "搬家.开业.结婚.入宅.领证.开工.安床.出行.", "j": "装修.动土.订婚.安葬.上梁.求嗣.破土.修造." }, "d0402": { "y": "搬家.装修.入宅.动土.出行.上梁.旅游.求嗣.", "j": "开业.结婚.领证.开工.安床.订婚.安葬.开张." }, "d0403": { "y": "结婚.领证.安床.出行.订婚.安葬.上梁.作灶.", "j": "搬家.装修.开业.入宅.开工.动土.开张.赴任." }, "d0404": { "y": "搬家.装修.开业.结婚.入宅.领证.开工.动土.", "j": "经络.掘井.栽种.放水." }, "d0405": { "y": "搬家.开业.结婚.领证.开工.订婚.开张.入学.", "j": "装修.动土.安床.出行.安葬.上梁.旅游.破土." }, "d0406": { "y": "装修.结婚.领证.动土.安床.订婚.作灶.求嗣.", "j": "搬家.开业.入宅.开工.出行.安葬.上梁.开张." }, "d0407": { "y": "求嗣.修坟.赴任.破土.祭祀.解除.纳财.破屋.", "j": "搬家.装修.开业.结婚.入宅.领证.开工.动土." }, "d0408": { "y": "装修.开业.结婚.领证.开工.动土.安床.出行.", "j": "搬家.入宅.祈福.安香.纳畜.移徙.伐木.经络." }, "d0409": { "y": "搬家.装修.开业.结婚.入宅.领证.开工.动土.", "j": "安床.安葬.上梁.破土.祈福.纳畜.启钻.伐木." }, "d0410": { "y": "搬家.结婚.入宅.领证.订婚.入学.赴任.祈福.", "j": "装修.开业.开工.动土.安床.出行.安葬.上梁." }, "d0411": { "y": "搬家.结婚.领证.订婚.作灶.入学.求嗣.祈福.", "j": "装修.开业.入宅.开工.动土.安床.出行.安葬." }, "d0412": { "y": "安床.出行.订婚.旅游.入学.求嗣.赴任.祈福.", "j": "搬家.装修.开业.结婚.入宅.领证.开工.动土." }, "d0413": { "y": "结婚.领证.订婚.赴任.祈福.祭祀.纳财.除服.", "j": "搬家.装修.开业.入宅.开工.动土.出行.安葬." }, "d0414": { "y": "搬家.开业.结婚.领证.开工.出行.开张.作灶.", "j": "装修.入宅.动土.安床.订婚.安葬.上梁.求嗣." }, "d0415": { "y": "装修.开业.开工.出行.开张.旅游.赴任.修造.", "j": "搬家.结婚.入宅.领证.订婚.安葬.破土.安香." }, "d0416": { "y": "出行.安葬.旅游.求嗣.修坟.解除.牧养.纳畜.", "j": "搬家.装修.开业.结婚.入宅.领证.开工.动土." }, "d0417": { "y": "装修.结婚.领证.动土.订婚.安葬.上梁.求嗣.", "j": "搬家.入宅.安床.安香.纳畜.移徙.经络.掘井." }, "d0418": { "y": "搬家.结婚.领证.入学.求嗣.修坟.破土.祈福.", "j": "装修.开业.入宅.开工.动土.安床.出行.订婚." }, "d0419": { "y": "结婚.领证.安床.订婚.安葬.作灶.求嗣.修坟.", "j": "搬家.装修.开业.入宅.开工.动土.出行.上梁." }, "d0420": { "y": "作灶.求嗣.赴任.祭祀.解除.破屋.求医.斋醮.", "j": "搬家.装修.开业.结婚.入宅.领证.开工.动土." }, "d0421": { "y": "搬家.结婚.入宅.领证.订婚.赴任.祭祀.纳财.", "j": "装修.动土.安床.安葬.上梁.破土.修造.祈福." }, "d0422": { "y": "搬家.装修.开业.开工.动土.订婚.安葬.开张.", "j": "结婚.入宅.领证.安床.出行.上梁.旅游.祈福." }, "d0423": { "y": "搬家.结婚.领证.动土.入学.求嗣.赴任.纳财.", "j": "装修.开业.入宅.开工.出行.订婚.安葬.开张." }, "d0424": { "y": "结婚.领证.安床.出行.订婚.作灶.旅游.入学.", "j": "搬家.装修.开业.入宅.开工.动土.安门.安葬." }, "d0425": { "y": "装修.结婚.领证.订婚.修坟.赴任.修造.祈福.", "j": "搬家.开业.入宅.开工.动土.出行.安葬.开张." }, "d0426": { "y": "出行.旅游.入学.祭祀.纳财.盖屋.冠笄.栽种.", "j": "搬家.装修.结婚.入宅.领证.动土.安床.订婚." }, "d0427": { "y": "搬家.装修.开业.入宅.开工.动土.出行.安葬.", "j": "结婚.领证.订婚.嫁娶.纳采." }, "d0428": { "y": "结婚.领证.出行.旅游.求嗣.修坟.解除.牧养.", "j": "搬家.装修.开业.开工.动土.安门.订婚.安葬." }, "d0429": { "y": "搬家.装修.开业.结婚.领证.开工.动土.订婚.", "j": "入宅.安床.纳畜.经络.掘井.栽种.造床.放水." }, "d0430": { "y": "开业.结婚.入宅.领证.开工.订婚.安葬.上梁.", "j": "装修.动土.安床.出行.旅游.赴任.修造.求医." }, "d0501": { "y": "结婚.领证.订婚.求嗣.修坟.赴任.祈福.祭祀.", "j": "搬家.装修.开业.入宅.开工.动土.出行.安葬." }, "d0502": { "y": "作灶.求嗣.赴任.祭祀.解除.破屋.求医.栽种.", "j": "搬家.装修.开业.结婚.入宅.领证.开工.动土." }, "d0503": { "y": "结婚.领证.出行.订婚.安葬.旅游.求嗣.祈福.", "j": "搬家.装修.入宅.动土.安床.上梁.赴任.修造." }, "d0504": { "y": "搬家.装修.结婚.领证.动土.订婚.安葬.作灶.", "j": "开业.入宅.开工.安床.出行.上梁.交易.开张." }, "d0505": { "y": "上梁.入学.求嗣.赴任.纳财.捕捉.竖柱.栽种.", "j": "搬家.装修.开业.结婚.入宅.领证.开工.出行." }, "d0506": { "y": "安床.出行.订婚.旅游.入学.求嗣.赴任.祈福.", "j": "搬家.装修.开业.结婚.入宅.领证.开工.动土." }, "d0507": { "y": "结婚.领证.订婚.上梁.求嗣.赴任.祈福.祭祀.", "j": "搬家.装修.开业.入宅.开工.动土.出行.安葬." }, "d0508": { "y": "搬家.结婚.领证.出行.旅游.入学.祭祀.纳财.", "j": "装修.入宅.动土.安床.订婚.安葬.上梁.求嗣." }, "d0509": { "y": "搬家.装修.开业.结婚.入宅.领证.开工.动土.", "j": "订婚.上梁.纳采.盖屋." }, "d0510": { "y": "出行.安葬.旅游.求嗣.解除.牧养.纳畜.裁衣.", "j": "搬家.装修.开业.结婚.领证.开工.动土.安门." }, "d0511": { "y": "搬家.装修.结婚.领证.动土.订婚.上梁.求嗣.", "j": "入宅.安床.安葬.破土.纳畜.经络.掘井.栽种." }, "d0512": { "y": "开业.结婚.领证.开工.动土.订婚.开张.作灶.", "j": "搬家.装修.入宅.安床.安葬.上梁.破土.修造." }, "d0513": { "y": "搬家.开业.结婚.领证.开工.订婚.安葬.上梁.", "j": "装修.入宅.动土.安床.出行.旅游.修造.求医." }, "d0514": { "y": "结婚.领证.订婚.上梁.求嗣.祈福.祭祀.解除.", "j": "搬家.装修.开业.入宅.开工.动土.出行.开张." }, "d0515": { "y": "作灶.纳财.破屋.立券.求财.招赘.纳婿.藏宝.", "j": "搬家.装修.开业.结婚.入宅.领证.开工.动土." }, "d0516": { "y": "装修.开业.结婚.领证.开工.动土.安床.出行.", "j": "搬家.入宅.安葬.作灶.破土.纳畜.移徙.伐木." }, "d0517": { "y": "搬家.装修.开业.结婚.入宅.领证.开工.动土.", "j": "出行.旅游.祈福.斋醮.归宁.词讼." }, "d0518": { "y": "结婚.领证.订婚.作灶.入学.求嗣.赴任.祭祀.", "j": "搬家.装修.开业.入宅.开工.动土.安床.出行." }, "d0519": { "y": "搬家.装修.结婚.领证.出行.旅游.入学.求嗣.", "j": "开业.开工.动土.安门.安床.订婚.安葬.上梁." }, "d0520": { "y": "装修.开业.开工.订婚.开张.求嗣.修造.祈福.", "j": "搬家.结婚.入宅.领证.动土.出行.安葬.上梁." }, "d0521": { "y": "搬家.结婚.领证.出行.旅游.入学.祭祀.纳财.", "j": "装修.动土.安床.订婚.安葬.上梁.求嗣.赴任." }, "d0522": { "y": "搬家.装修.开业.结婚.入宅.领证.开工.安床.", "j": "订婚.安葬.破土.祈福.纳采.斋醮." }, "d0523": { "y": "结婚.领证.订婚.作灶.求嗣.修坟.牧养.启钻.", "j": "搬家.装修.开业.入宅.开工.动土.安床.出行." }, "d0524": { "y": "开业.结婚.入宅.领证.开工.动土.订婚.安葬.", "j": "装修.安床.上梁.修造.解除.盖屋.冠笄.经络." }, "d0525": { "y": "开业.结婚.领证.开工.订婚.安葬.上梁.开张.", "j": "装修.入宅.动土.安床.出行.旅游.修造.求医." }, "d0526": { "y": "结婚.领证.订婚.上梁.求嗣.祈福.祭祀.解除.", "j": "搬家.装修.开业.入宅.开工.动土.出行.安葬." }, "d0527": { "y": "开业.结婚.领证.开工.开张.作灶.开市.纳财.", "j": "搬家.装修.入宅.动土.安门.安床.出行.订婚." }, "d0528": { "y": "装修.开业.结婚.入宅.领证.开工.动土.安床.", "j": "搬家.安葬.上梁.纳畜.移徙.伐木.分居." }, "d0529": { "y": "装修.开业.开工.动土.安床.订婚.安葬.上梁.", "j": "搬家.结婚.入宅.领证.出行.旅游.祈福.安香." }, "d0530": { "y": "搬家.结婚.领证.订婚.入学.求嗣.赴任.祭祀.", "j": "装修.开业.入宅.开工.动土.安床.出行.安葬." }, "d0531": { "y": "搬家.装修.结婚.领证.出行.旅游.入学.求嗣.", "j": "开业.开工.动土.安门.安床.订婚.安葬.上梁." }, "d0601": { "y": "装修.开业.结婚.领证.开工.安床.订婚.上梁.", "j": "搬家.入宅.动土.出行.安葬.旅游.破土.纳畜." }, "d0602": { "y": "搬家.开业.结婚.入宅.领证.开工.安床.出行.", "j": "装修.动土.订婚.安葬.上梁.求嗣.破土.修造." }, "d0603": { "y": "搬家.装修.入宅.出行.安葬.上梁.旅游.求嗣.", "j": "结婚.领证.订婚.嫁娶." }, "d0604": { "y": "订婚.上梁.求嗣.修坟.牧养.纳畜.启钻.裁衣.", "j": "搬家.装修.开业.结婚.入宅.领证.开工.动土." }, "d0605": { "y": "开业.开工.动土.订婚.开张.求嗣.修坟.赴任.", "j": "搬家.装修.结婚.入宅.领证.安床.安葬.上梁." }, "d0606": { "y": "搬家.开业.结婚.领证.开工.订婚.安葬.上梁.", "j": "装修.入宅.动土.安床.出行.旅游.修造.求医." }, "d0607": { "y": "结婚.领证.安床.订婚.安葬.上梁.作灶.求嗣.", "j": "搬家.装修.开业.入宅.开工.动土.出行.开张." }, "d0608": { "y": "作灶.求嗣.解除.纳财.破屋.立券.栽种.斋醮.", "j": "搬家.装修.开业.结婚.入宅.领证.开工.动土." }, "d0609": { "y": "搬家.装修.开业.结婚.领证.开工.动土.安床.", "j": "纳畜.伐木.分居." }, "d0610": { "y": "装修.动土.安床.订婚.求嗣.赴任.修造.祈福.", "j": "搬家.开业.结婚.领证.开工.安葬.上梁.开张." }, "d0611": { "y": "搬家.装修.开业.结婚.入宅.领证.开工.动土.", "j": "安床.出行.上梁.旅游.祈福.纳畜.伐木.斋醮." }, "d0612": { "y": "搬家.结婚.领证.订婚.作灶.入学.求嗣.祈福.", "j": "装修.开业.入宅.开工.动土.安床.出行.安葬." }, "d0613": { "y": "搬家.结婚.领证.安床.订婚.上梁.入学.求嗣.", "j": "装修.开业.入宅.开工.动土.出行.安葬.开张." }, "d0614": { "y": "装修.开业.结婚.领证.开工.订婚.开张.赴任.", "j": "搬家.入宅.动土.安床.出行.安葬.旅游.破土." }, "d0615": { "y": "搬家.开业.结婚.入宅.领证.开工.出行.开张.", "j": "装修.动土.订婚.安葬.上梁.求嗣.破土.修造." }, "d0616": { "y": "装修.开业.开工.出行.开张.旅游.修坟.赴任.", "j": "搬家.结婚.入宅.领证.安床.订婚.安葬.破土." }, "d0617": { "y": "结婚.入宅.领证.安床.出行.订婚.安葬.作灶.", "j": "搬家.装修.开业.开工.动土.上梁.开张.赴任." }, "d0618": { "y": "开业.开工.出行.订婚.开张.旅游.求嗣.修坟.", "j": "搬家.装修.结婚.入宅.领证.动土.安门.安葬." }, "d0619": { "y": "搬家.开业.结婚.领证.开工.订婚.安葬.开张.", "j": "装修.动土.安床.出行.上梁.旅游.修造.盖屋." }, "d0620": { "y": "装修.结婚.领证.动土.安床.订婚.安葬.上梁.", "j": "搬家.开业.入宅.开工.出行.开张.旅游.祈福." }, "d0621": { "y": "求嗣.破土.解除.破屋.启钻.除服.立券.求医.", "j": "搬家.装修.开业.结婚.入宅.领证.开工.动土." }, "d0622": { "y": "搬家.装修.结婚.入宅.领证.动土.安床.出行.", "j": "开业.开工.安葬.开张.赴任.破土.开市.纳畜." }, "d0623": { "y": "装修.开业.结婚.领证.开工.动土.订婚.安葬.", "j": "搬家.入宅.安床.出行.上梁.旅游.祈福.安香." }, "d0624": { "y": "搬家.结婚.领证.订婚.入学.求嗣.祈福.祭祀.", "j": "装修.开业.入宅.开工.动土.安床.出行.安葬." }, "d0625": { "y": "结婚.领证.安床.订婚.上梁.入学.求嗣.赴任.", "j": "搬家.装修.开业.入宅.开工.动土.出行.安葬." }, "d0626": { "y": "装修.开业.开工.订婚.开张.赴任.修造.祈福.", "j": "搬家.结婚.入宅.领证.动土.安床.出行.安葬." }, "d0627": { "y": "搬家.开业.结婚.入宅.领证.开工.出行.开张.", "j": "装修.动土.安床.订婚.安葬.上梁.求嗣.赴任." }, "d0628": { "y": "搬家.装修.开业.入宅.开工.动土.出行.上梁.", "j": "结婚.领证.安床.订婚.安葬.破土.嫁娶.纳采." }, "d0629": { "y": "入宅.出行.订婚.安葬.上梁.旅游.求嗣.修坟.", "j": "搬家.装修.开业.结婚.领证.开工.动土.开张." }, "d0630": { "y": "搬家.开业.结婚.领证.开工.出行.订婚.安葬.", "j": "装修.动土.修造.祈福.祭祀.经络.掘井.栽种." }, "0709": { "y": "求医.治病.破屋.坏垣.余事勿取.", "j": "嫁娶.出行.", "c": "生肖冲羊", "s": "煞東", "ch": "破", "zc": "正冲正冲丁未", "ts": "房床厕外东北" }, "d0809": { "y": "装修.订婚.上梁.修造.祈福.祭祀.捕捉.纳采.", "j": "搬家.开业.结婚.入宅.领证.开工.出行.开张.", "c": "生肖冲虎", "s": "煞南", "ch": "建", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d0701": { "y": "搬家.开业.结婚.领证.开工.订婚.安葬.开张.", "j": "装修.动土.安床.出行.上梁.旅游.修造.盖屋.", "c": "生肖冲猪", "s": "煞東", "ch": "闭", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d0702": { "y": "装修.结婚.领证.动土.安床.订婚.上梁.作灶.", "j": "搬家.开业.入宅.开工.出行.安葬.开张.旅游.", "c": "生肖冲鼠", "s": "煞北", "ch": "建", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d0703": { "y": "求嗣.赴任.破土.解除.纳财.破屋.启钻.除服.", "j": "搬家.装修.开业.结婚.入宅.领证.开工.动土.", "c": "生肖冲牛", "s": "煞西", "ch": "除", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d0704": { "y": "装修.安床.订婚.求嗣.赴任.修造.祈福.祭祀.", "j": "搬家.开业.结婚.入宅.领证.开工.安葬.上梁.", "c": "生肖冲虎", "s": "煞南", "ch": "满", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" }, "d0705": { "y": "搬家.装修.开业.结婚.入宅.领证.开工.动土.", "j": "安床.出行.上梁.旅游.祈福.纳畜.伐木.斋醮.", "c": "生肖冲兔", "s": "煞東", "ch": "平", "zc": "正冲正冲癸卯", "ts": "占大门外东北" }, "d0706": { "y": "搬家.结婚.领证.订婚.入学.求嗣.祈福.祭祀.", "j": "装修.开业.入宅.开工.动土.安门.安床.出行.", "c": "生肖冲蛇", "s": "煞西", "ch": "定", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d0707": { "y": "搬家.结婚.领证.安床.订婚.上梁.作灶.入学.", "j": "装修.开业.入宅.开工.动土.出行.安葬.开张.", "c": "生肖冲蛇", "s": "煞西", "ch": "定", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d0708": { "y": "装修.开业.结婚.领证.开工.订婚.开张.求嗣.", "j": "搬家.入宅.动土.安床.出行.安葬.上梁.旅游.", "c": "生肖冲马", "s": "煞南", "ch": "执", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d0709": { "y": "搬家.开业.结婚.入宅.领证.开工.出行.开张.", "j": "装修.动土.订婚.安葬.上梁.求嗣.破土.修造.", "c": "生肖冲蛇", "s": "煞西", "ch": "定", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d0710": { "y": "开业.结婚.领证.开工.出行.开张.作灶.旅游.", "j": "搬家.装修.入宅.动土.安床.订婚.安葬.上梁.", "c": "生肖冲猴", "s": "煞北", "ch": "危", "zc": "正冲正冲戊申", "ts": "占门炉外东北" }, "d0711": { "y": "开业.开工.出行.安葬.开张.旅游.求嗣.修坟.", "j": "搬家.装修.结婚.入宅.领证.动土.订婚.修造.", "c": "生肖冲鸡", "s": "煞西", "ch": "成", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d0712": { "y": "结婚.领证.安葬.求嗣.修坟.解除.牧养.纳畜.", "j": "搬家.装修.开业.入宅.开工.动土.安门.出行.", "c": "生肖冲狗", "s": "煞南", "ch": "收", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d0713": { "y": "结婚.领证.订婚.安葬.祈福.祭祀.嫁娶.纳采.", "j": "搬家.装修.入宅.动土.破土.修造.安香.纳畜.", "c": "生肖冲猪", "s": "煞東", "ch": "开", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d0714": { "y": "搬家.安葬.入学.求嗣.祈福.祭祀.纳财.", "j": "装修.开业.结婚.入宅.领证.开工.动土.安门.", "c": "生肖冲鼠", "s": "煞北", "ch": "闭", "zc": "正冲正冲壬子", "ts": "房床碓外正东" }, "d0715": { "y": "装修.结婚.领证.订婚.作灶.求嗣.赴任.修造.", "j": "搬家.开业.入宅.开工.安床.出行.安葬.上梁.", "c": "生肖冲牛", "s": "煞西", "ch": "建", "zc": "正冲正冲癸丑", "ts": "占门厕外正东" }, "d0716": { "y": "作灶.求嗣.赴任.纳财.破屋.立券.求医.栽种.", "j": "搬家.装修.开业.结婚.入宅.领证.开工.动土.", "c": "生肖冲虎", "s": "煞南", "ch": "除", "zc": "正冲正冲甲寅", "ts": "碓磨炉外东南" }, "d0717": { "y": "装修.开业.结婚.领证.开工.动土.出行.订婚.", "j": "搬家.入宅.安床.上梁.解除.安香.纳畜.移徙.", "c": "生肖冲兔", "s": "煞東", "ch": "满", "zc": "正冲正冲乙卯", "ts": "厨灶门外东南" }, "d0718": { "y": "装修.开业.入宅.开工.动土.出行.订婚.开张.", "j": "搬家.结婚.领证.安床.安葬.上梁.祈福.纳畜.", "c": "生肖冲龙", "s": "煞北", "ch": "平", "zc": "正冲正冲丙辰", "ts": "仓库栖外东南" }, "d0719": { "y": "装修.结婚.领证.动土.订婚.上梁.入学.求嗣.", "j": "搬家.开业.入宅.开工.安床.出行.安葬.开张.", "c": "生肖冲蛇", "s": "煞西", "ch": "定", "zc": "正冲正冲丁巳", "ts": "占房床外东南" }, "d0720": { "y": "搬家.结婚.领证.出行.订婚.上梁.作灶.旅游.", "j": "装修.开业.入宅.开工.动土.安床.安葬.开张.", "c": "生肖冲马", "s": "煞南", "ch": "执", "zc": "正冲正冲戊午", "ts": "占门碓外东南" }, "d0721": { "y": "装修.开业.结婚.领证.开工.订婚.安葬.", "j": "搬家.入宅.动土.出行.旅游.赴任.纳畜.移徙.", "c": "生肖冲羊", "s": "煞東", "ch": "破", "zc": "正冲正冲己未", "ts": "碓磨厕外东南" }, "d0722": { "y": "搬家.结婚.领证.出行.旅游.入学.修坟.赴任.", "j": "装修.入宅.动土.安床.订婚.安葬.上梁.求嗣.", "c": "生肖冲猴", "s": "煞北", "ch": "危", "zc": "正冲正冲庚申", "ts": "厨灶炉外正南" }, "d0723": { "y": "开业.入宅.开工.出行.安葬.开张.旅游.求嗣.", "j": "装修.结婚.领证.动土.订婚.修造.嫁娶.纳采.", "c": "生肖冲鸡", "s": "煞西", "ch": "成", "zc": "正冲正冲辛酉", "ts": "仓库门外正南" }, "d0724": { "y": "出行.安葬.旅游.求嗣.修坟.牧养.启钻.裁衣.", "j": "搬家.装修.开业.结婚.领证.开工.动土.", "c": "生肖冲狗", "s": "煞南", "ch": "收", "zc": "正冲正冲壬戌", "ts": "房床栖外正南" }, "d0725": { "y": "搬家.开业.结婚.入宅.领证.开工.安床.订婚.", "j": "装修.动土.破土.修造.纳畜.盖屋.经络.掘井.", "c": "生肖冲猪", "s": "煞東", "ch": "开", "zc": "正冲正冲癸亥", "ts": "占门床外正南" }, "d0726": { "y": "开业.开工.订婚.开张.入学.求嗣.祈福.", "j": "搬家.装修.结婚.入宅.领证.动土.安床.", "c": "生肖冲鼠", "s": "煞北", "ch": "闭", "zc": "正冲正冲甲子", "ts": "占碓磨外正南" }, "d0727": { "y": "装修.结婚.领证.动土.订婚.求嗣.赴任.修造.", "j": "搬家.开业.入宅.开工.安床.出行.安葬.上梁.", "c": "生肖冲牛", "s": "煞西", "ch": "建", "zc": "正冲正冲乙丑", "ts": "厨灶厕外西南" }, "d0728": { "y": "作灶.求嗣.赴任.祭祀.解除.纳财.破屋.立券.", "j": "搬家.装修.开业.结婚.入宅.领证.开工.动土.", "c": "生肖冲虎", "s": "煞南", "ch": "除", "zc": "正冲正冲丙寅", "ts": "仓库炉外西南" }, "d0729": { "y": "搬家.装修.开业.结婚.入宅.领证.开工.动土.", "j": "安床.上梁.解除.纳畜.伐木.", "c": "生肖冲兔", "s": "煞東", "ch": "满", "zc": "正冲正冲丁卯", "ts": "房床门外西南" }, "d0730": { "y": "搬家.装修.开业.结婚.入宅.领证.开工.动土.", "j": "安床.安葬.上梁.破土.祈福.纳畜.伐木.斋醮.", "c": "生肖冲龙", "s": "煞北", "ch": "平", "zc": "正冲正冲戊辰", "ts": "门鸡栖外西南" }, "d0731": { "y": "搬家.装修.结婚.领证.动土.订婚.上梁.入学.", "j": "开业.开工.安床.出行.安葬.开张.旅游.修坟.", "c": "生肖冲蛇", "s": "煞西", "ch": "定", "zc": "正冲正冲己巳", "ts": "碓磨床外西南" }, "d0818": { "y": "结婚.领证.订婚.作灶.牧养.裁衣.嫁娶.纳采.", "j": "搬家.装修.开业.入宅.开工.动土.安床.出行.", "c": "生肖冲猪", "s": "煞東", "ch": "收", "zc": "正冲正冲丁亥", "ts": "占房床房内北" }, "d0808": { "y": "开业.结婚.领证.开工.订婚.开张.作灶.入学.", "j": "搬家.装修.入宅.动土.安门.安床.出行.安葬.", "c": "生肖冲牛", "s": "煞西", "ch": "闭", "zc": "正冲正冲丁丑", "ts": "房床厕外西北" }, "d0804": { "y": "开业.结婚.领证.开工.安床.出行.安葬.开张.", "j": "搬家.装修.入宅.动土.订婚.修造.安香.纳采.", "c": "生肖冲鸡", "s": "煞西", "ch": "成", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d0814": { "y": "搬家.装修.结婚.入宅.领证.出行.旅游.入学.", "j": "开业.开工.动土.安门.安床.订婚.安葬.上梁.", "c": "生肖冲羊", "s": "煞東", "ch": "执", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d0803": { "y": "出行.旅游.入学.修坟.赴任.纳财.纳畜.冠笄.", "j": "搬家.装修.结婚.入宅.领证.动土.安床.订婚.", "c": "生肖冲猴", "s": "煞北", "ch": "危", "zc": "正冲正冲壬申", "ts": "房床厕外正南" }, "d0802": { "y": "装修.开业.结婚.领证.开工.订婚.安葬.上梁.", "j": "搬家.入宅.动土.出行.旅游.赴任.纳畜.移徙.", "c": "生肖冲羊", "s": "煞東", "ch": "破", "zc": "正冲正冲辛未", "ts": "仓库厕外西南" }, "d0819": { "y": "搬家.结婚.领证.动土.出行.订婚.旅游.求嗣.", "j": "装修.开业.开工.安葬.上梁.开张.破土.修造.", "c": "生肖冲鼠", "s": "煞北", "ch": "开", "zc": "正冲正冲戊子", "ts": "占门碓房内北" }, "d0909": { "y": "装修.开业.结婚.领证.开工.安床.订婚.安葬.", "j": "搬家.入宅.动土.出行.旅游.祈福.解除.安香.", "c": "生肖冲鸡", "s": "煞西", "ch": "破", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d0801": { "y": "搬家.结婚.领证.安床.出行.订婚.上梁.旅游.", "j": "装修.开业.入宅.开工.动土.安葬.开张.破土.", "c": "生肖冲马", "s": "煞南", "ch": "执", "zc": "正冲正冲庚午", "ts": "厨灶碓外西南" }, "d0805": { "y": "入宅.出行.安葬.旅游.求嗣.修坟.牧养.启钻.", "j": "搬家.装修.开业.结婚.领证.开工.动土.安门.", "c": "生肖冲狗", "s": "煞南", "ch": "收", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d0806": { "y": "结婚.领证.出行.订婚.安葬.上梁.旅游.求嗣.", "j": "搬家.装修.入宅.动土.破土.修造.安香.纳畜.", "c": "生肖冲猪", "s": "煞東", "ch": "开", "zc": "正冲正冲乙亥", "ts": "厨灶床外正西" }, "d0807": { "y": "搬家.入宅.安葬.入学.求嗣.赴任.祈福.祭祀.", "j": "装修.开业.结婚.领证.开工.动土.安床.出行.", "c": "生肖冲鼠", "s": "煞北", "ch": "开", "zc": "正冲正冲丙子", "ts": "仓库碓外西北" }, "d0810": { "y": "开业.开工.开张.作灶.求嗣.赴任.破土.祭祀.", "j": "搬家.装修.结婚.入宅.领证.动土.安门.安床.", "c": "生肖冲兔", "s": "煞東", "ch": "除", "zc": "正冲正冲己卯", "ts": "占门炉外西北" }, "d0811": { "y": "搬家.结婚.领证.出行.订婚.安葬.上梁.旅游.", "j": "装修.入宅.动土.安床.赴任.破土.修造.伐木.", "c": "生肖冲龙", "s": "煞北", "ch": "满", "zc": "正冲正冲庚辰", "ts": "厨灶栖外西北" }, "d0812": { "y": "搬家.装修.开业.结婚.入宅.领证.开工.动土.", "j": "安葬.破土.祈福.栽种.斋醮.词讼.针灸.置产.", "c": "生肖冲蛇", "s": "煞西", "ch": "平", "zc": "正冲正冲辛巳", "ts": "仓库床外西北" }, "d0813": { "y": "装修.结婚.领证.动土.订婚.作灶.入学.求嗣.", "j": "搬家.开业.入宅.开工.安床.出行.安葬.上梁.", "c": "生肖冲马", "s": "煞南", "ch": "定", "zc": "正冲正冲壬午", "ts": "房床碓外正北" }, "d0815": { "y": "开业.结婚.领证.开工.安床.订婚.安葬.开张.", "j": "搬家.装修.入宅.动土.出行.旅游.修造.安香.", "c": "生肖冲猴", "s": "煞北", "ch": "破", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d0816": { "y": "结婚.领证.出行.旅游.入学.修坟.祭祀.嫁娶.", "j": "搬家.装修.入宅.动土.订婚.安葬.上梁.求嗣.", "c": "生肖冲鸡", "s": "煞西", "ch": "危", "zc": "正冲正冲乙酉", "ts": "厨灶门外正北" }, "d0817": { "y": "搬家.装修.结婚.领证.出行.作灶.旅游.修坟.", "j": "开业.入宅.开工.安床.订婚.安葬.开张.赴任.", "c": "生肖冲狗", "s": "煞南", "ch": "成", "zc": "正冲正冲丙戌", "ts": "仓库栖外正北" }, "d0820": { "y": "搬家.开业.入宅.开工.订婚.上梁.开张.入学.", "j": "装修.结婚.领证.动土.安床.出行.安葬.旅游.", "c": "生肖冲牛", "s": "煞西", "ch": "闭", "zc": "正冲正冲己丑", "ts": "碓磨厕房内北" }, "d0821": { "y": "装修.结婚.领证.动土.订婚.安葬.上梁.求嗣.", "j": "搬家.开业.入宅.开工.出行.开张.旅游.开市.", "c": "生肖冲虎", "s": "煞南", "ch": "建", "zc": "正冲正冲庚寅", "ts": "厨灶炉房内北" }, "d0822": { "y": "开业.结婚.领证.开工.开张.作灶.求嗣.修坟.", "j": "搬家.装修.入宅.动土.安门.安床.出行.订婚.", "c": "生肖冲兔", "s": "煞東", "ch": "除", "zc": "正冲正冲辛卯", "ts": "仓库门房内北" }, "d0823": { "y": "搬家.开业.结婚.领证.开工.订婚.安葬.上梁.", "j": "装修.入宅.动土.安床.破土.修造.伐木.造床.", "c": "生肖冲龙", "s": "煞北", "ch": "满", "zc": "正冲正冲壬辰", "ts": "房床栖房内南" }, "d0824": { "y": "装修.开业.开工.动土.出行.订婚.开张.旅游.", "j": "搬家.结婚.入宅.领证.安床.安葬.上梁.赴任.", "c": "生肖冲蛇", "s": "煞西", "ch": "平", "zc": "正冲正冲癸巳", "ts": "占门床房内南" }, "d0825": { "y": "装修.结婚.入宅.领证.订婚.入学.修造.纳财.", "j": "开业.开工.安床.出行.安葬.上梁.开张.旅游.", "c": "生肖冲马", "s": "煞南", "ch": "定", "zc": "正冲正冲甲午", "ts": "占碓磨房内南" }, "d0826": { "y": "开业.开工.订婚.开张.入学.求嗣.祈福.祭祀.", "j": "搬家.装修.结婚.入宅.领证.动土.安床.出行.", "c": "生肖冲羊", "s": "煞東", "ch": "执", "zc": "正冲正冲乙未", "ts": "厨灶厕房内南" }, "d0827": { "y": "装修.结婚.领证.动土.订婚.求嗣.赴任.修造.", "j": "搬家.开业.入宅.开工.安床.出行.安葬.上梁.", "c": "生肖冲猴", "s": "煞北", "ch": "破", "zc": "正冲正冲丙申", "ts": "仓库炉房内南" }, "d0828": { "y": "作灶.求嗣.赴任.祭祀.解除.纳财.破屋.立券.", "j": "搬家.装修.开业.结婚.入宅.领证.开工.动土.", "c": "生肖冲鸡", "s": "煞西", "ch": "危", "zc": "正冲正冲丁酉", "ts": "房床门房内南" }, "d0829": { "y": "搬家.装修.开业.结婚.入宅.领证.开工.动土.", "j": "安床.上梁.解除.纳畜.伐木.", "c": "生肖冲狗", "s": "煞南", "ch": "成", "zc": "正冲正冲戊戌", "ts": "门鸡栖房内东" }, "d0830": { "y": "搬家.装修.开业.结婚.入宅.领证.开工.动土.", "j": "安床.安葬.上梁.破土.祈福.纳畜.伐木.斋醮.", "c": "生肖冲猪", "s": "煞東", "ch": "收", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d0831": { "y": "搬家.装修.结婚.领证.动土.订婚.上梁.入学.", "j": "开业.开工.安床.出行.安葬.开张.旅游.修坟.", "c": "生肖冲鼠", "s": "煞北", "ch": "开", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d0904": { "y": "安葬.求嗣.赴任.祈福.祭祀.纳财.启钻.捕捉.", "j": "装修.开业.结婚.入宅.领证.开工.动土.安门.", "c": "生肖冲龙", "s": "煞北", "ch": "满", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d0908": { "y": "搬家.结婚.领证.安床.订婚.入学.求嗣.祈福.", "j": "装修.开业.开工.动土.出行.安葬.开张.旅游.", "c": "生肖冲猴", "s": "煞北", "ch": "执", "zc": "正冲正冲戊申", "ts": "占门炉外东北" }, "d0907": { "y": "订婚.入学.求嗣.祈福.祭祀.捕捉.纳采.栽种.", "j": "搬家.装修.开业.结婚.入宅.领证.开工.动土.", "c": "生肖冲羊", "s": "煞東", "ch": "定", "zc": "正冲正冲丁未", "ts": "房床厕外东北" }, "d1009": { "y": "搬家.结婚.领证.订婚.安葬.上梁.入学.求嗣.", "j": "装修.开业.入宅.开工.动土.安床.出行.开张.", "c": "生肖冲兔", "s": "煞東", "ch": "闭", "zc": "正冲正冲己卯", "ts": "占门炉外西北" }, "d0901": { "y": "开业.结婚.入宅.领证.开工.订婚.开张.作灶.", "j": "搬家.装修.动土.安床.出行.安葬.上梁.旅游.", "c": "生肖冲牛", "s": "煞西", "ch": "闭", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d0902": { "y": "装修.结婚.领证.动土.安床.订婚.安葬.上梁.", "j": "搬家.开业.入宅.开工.出行.开张.旅游.安香.", "c": "生肖冲虎", "s": "煞南", "ch": "建", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" }, "d0903": { "y": "作灶.赴任.破土.祭祀.解除.破屋.启钻.除服.", "j": "搬家.装修.开业.结婚.入宅.领证.开工.动土.", "c": "生肖冲兔", "s": "煞東", "ch": "除", "zc": "正冲正冲癸卯", "ts": "占大门外东北" }, "d0905": { "y": "装修.开业.结婚.领证.开工.动土.订婚.上梁.", "j": "搬家.入宅.出行.安葬.旅游.破土.祈福.出火.", "c": "生肖冲蛇", "s": "煞西", "ch": "平", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d0906": { "y": "搬家.装修.结婚.入宅.领证.订婚.作灶.入学.", "j": "开业.开工.安床.出行.安葬.上梁.开张.旅游.", "c": "生肖冲马", "s": "煞南", "ch": "定", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d0910": { "y": "搬家.结婚.入宅.领证.出行.旅游.入学.修坟.", "j": "装修.动土.安床.订婚.安葬.上梁.求嗣.赴任.", "c": "生肖冲狗", "s": "煞南", "ch": "危", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d0911": { "y": "装修.动土.出行.上梁.旅游.求嗣.赴任.修造.", "j": "搬家.开业.结婚.入宅.领证.开工.安床.订婚.", "c": "生肖冲猪", "s": "煞東", "ch": "成", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d0912": { "y": "结婚.入宅.领证.安床.出行.订婚.上梁.作灶.", "j": "搬家.装修.开业.开工.动土.安葬.开张.赴任.", "c": "生肖冲鼠", "s": "煞北", "ch": "收", "zc": "正冲正冲壬子", "ts": "房床碓外正东" }, "d0913": { "y": "搬家.装修.开业.结婚.入宅.领证.开工.动土.", "j": "赴任.经络.掘井.求医.栽种.放水.", "c": "生肖冲牛", "s": "煞西", "ch": "开", "zc": "正冲正冲癸丑", "ts": "占门厕外正东" }, "d0914": { "y": "搬家.开业.结婚.入宅.领证.开工.订婚.开张.", "j": "装修.动土.安床.出行.安葬.上梁.旅游.破土.", "c": "生肖冲虎", "s": "煞南", "ch": "闭", "zc": "正冲正冲甲寅", "ts": "碓磨炉外东南" }, "d0915": { "y": "装修.结婚.领证.动土.订婚.作灶.求嗣.赴任.", "j": "搬家.开业.入宅.开工.安床.出行.安葬.上梁.", "c": "生肖冲兔", "s": "煞東", "ch": "建", "zc": "正冲正冲乙卯", "ts": "厨灶门外东南" }, "d0916": { "y": "求嗣.赴任.破土.纳财.破屋.启钻.除服.立券.", "j": "搬家.装修.开业.结婚.入宅.领证.开工.动土.", "c": "生肖冲龙", "s": "煞北", "ch": "除", "zc": "正冲正冲丙辰", "ts": "仓库栖外东南" }, "d0917": { "y": "装修.开业.结婚.领证.开工.动土.安床.订婚.", "j": "搬家.入宅.安香.纳畜.移徙.伐木.盖屋.冠笄.", "c": "生肖冲蛇", "s": "煞西", "ch": "满", "zc": "正冲正冲丁巳", "ts": "占房床外东南" }, "d0918": { "y": "搬家.装修.开业.结婚.领证.开工.动土.出行.", "j": "入宅.安床.上梁.祈福.纳畜.伐木.斋醮.词讼.", "c": "生肖冲马", "s": "煞南", "ch": "平", "zc": "正冲正冲戊午", "ts": "占门碓外东南" }, "d0919": { "y": "搬家.结婚.领证.订婚.作灶.入学.求嗣.祭祀.", "j": "装修.开业.入宅.开工.动土.安床.出行.安葬.", "c": "生肖冲羊", "s": "煞東", "ch": "定", "zc": "正冲正冲己未", "ts": "碓磨厕外东南" }, "d0920": { "y": "搬家.结婚.领证.安床.订婚.上梁.入学.求嗣.", "j": "装修.开业.开工.动土.出行.安葬.开张.旅游.", "c": "生肖冲猴", "s": "煞北", "ch": "执", "zc": "正冲正冲庚申", "ts": "厨灶炉外正南" }, "d0921": { "y": "装修.开业.结婚.领证.开工.订婚.安葬.上梁.", "j": "搬家.入宅.动土.出行.旅游.祈福.解除.纳畜.", "c": "生肖冲鸡", "s": "煞西", "ch": "破", "zc": "正冲正冲辛酉", "ts": "仓库门外正南" }, "d0922": { "y": "搬家.入宅.安床.出行.旅游.入学.修坟.赴任.", "j": "装修.结婚.领证.动土.订婚.安葬.上梁.求嗣.", "c": "生肖冲狗", "s": "煞南", "ch": "危", "zc": "正冲正冲壬戌", "ts": "房床栖外正南" }, "d0923": { "y": "装修.动土.出行.旅游.求嗣.赴任.修造.祈福.", "j": "搬家.开业.结婚.入宅.领证.开工.安床.订婚.", "c": "生肖冲猪", "s": "煞東", "ch": "成", "zc": "正冲正冲癸亥", "ts": "占门床外正南" }, "d0924": { "y": "结婚.领证.安床.出行.订婚.作灶.旅游.牧养.", "j": "搬家.装修.开业.入宅.开工.动土.安葬.开张.", "c": "生肖冲鼠", "s": "煞北", "ch": "收", "zc": "正冲正冲甲子", "ts": "占碓磨外正南" }, "d0925": { "y": "搬家.装修.开业.结婚.入宅.领证.开工.动土.", "j": "赴任.经络.掘井.求医.栽种.放水.", "c": "生肖冲牛", "s": "煞西", "ch": "开", "zc": "正冲正冲乙丑", "ts": "厨灶厕外西南" }, "d0926": { "y": "开业.结婚.领证.开工.订婚.开张.入学.求嗣.", "j": "搬家.装修.入宅.动土.安床.出行.上梁.旅游.", "c": "生肖冲虎", "s": "煞南", "ch": "闭", "zc": "正冲正冲丙寅", "ts": "仓库炉外西南" }, "d0927": { "y": "装修.结婚.领证.订婚.安葬.上梁.作灶.修坟.", "j": "搬家.开业.入宅.开工.安床.出行.开张.旅游.", "c": "生肖冲兔", "s": "煞東", "ch": "建", "zc": "正冲正冲丁卯", "ts": "房床门外西南" }, "d0928": { "y": "求嗣.修坟.赴任.破土.纳财.破屋.启钻.立券.", "j": "搬家.装修.开业.结婚.入宅.领证.开工.动土.", "c": "生肖冲龙", "s": "煞北", "ch": "除", "zc": "正冲正冲戊辰", "ts": "门鸡栖外西南" }, "d0929": { "y": "搬家.装修.开业.结婚.入宅.领证.开工.动土.", "j": "纳畜.伐木.盖屋.冠笄.开仓.", "c": "生肖冲蛇", "s": "煞西", "ch": "满", "zc": "正冲正冲己巳", "ts": "碓磨床外西南" }, "d0930": { "y": "搬家.装修.开业.结婚.领证.开工.动土.出行.", "j": "入宅.安床.安葬.上梁.破土.祈福.纳畜.伐木..", "c": "生肖冲马", "s": "煞南", "ch": "平", "zc": "正冲正冲庚午", "ts": "厨灶碓外西南" }, "d1008": { "y": "搬家.装修.动土.求嗣.赴任.修造.解除.纳财.", "j": "结婚.入宅.领证.安床.订婚.安葬.上梁.破土.", "c": "生肖冲虎", "s": "煞南", "ch": "开", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d1108": { "y": "装修.结婚.领证.动土.订婚.作灶.入学.修造.", "j": "搬家.开业.入宅.开工.安床.出行.安葬.上梁.", "c": "生肖冲鸡", "s": "煞西", "ch": "定", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d1001": { "y": "安葬.求嗣.解除.牧养.纳畜.启钻.裁衣.除服.", "j": "搬家.装修.开业.结婚.入宅.领证.开工.动土.", "c": "生肖冲羊", "s": "煞東", "ch": "定", "zc": "正冲正冲辛未", "ts": "仓库厕外西南" }, "d1002": { "y": "搬家.结婚.领证.安床.订婚.上梁.入学.求嗣.", "j": "装修.开业.开工.动土.出行.安葬.开张.旅游.", "c": "生肖冲猴", "s": "煞北", "ch": "执", "zc": "正冲正冲壬申", "ts": "房床厕外正南" }, "d1003": { "y": "装修.开业.结婚.领证.开工.订婚.安葬.开张.", "j": "搬家.入宅.动土.出行.旅游.祈福.解除.安香.", "c": "生肖冲鸡", "s": "煞西", "ch": "破", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d1004": { "y": "搬家.开业.结婚.入宅.领证.开工.安床.出行.", "j": "装修.动土.订婚.安葬.上梁.求嗣.破土.修造", "c": "生肖冲狗", "s": "煞南", "ch": "危", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d1005": { "y": "装修.结婚.领证.动土.出行.旅游.求嗣.赴任.", "j": "搬家.开业.入宅.开工.安床.订婚.安葬.开张.", "c": "生肖冲猪", "s": "煞東", "ch": "成", "zc": "正冲正冲乙亥", "ts": "厨灶床外正西" }, "d1006": { "y": "开业.入宅.开工.安床.出行.开张.旅游.赴任.", "j": "搬家.装修.结婚.领证.动土.订婚.安葬.上梁.", "c": "生肖冲鼠", "s": "煞北", "ch": "收", "zc": "正冲正冲丙子", "ts": "仓库碓外西北" }, "d1007": { "y": "求嗣.解除.牧养.纳畜.裁衣.栽种.斋醮.词讼.", "j": "搬家.装修.开业.结婚.入宅.领证.开工.动土.", "c": "生肖冲牛", "s": "煞西", "ch": "开", "zc": "正冲正冲丁丑", "ts": "房床厕外西北" }, "d1010": { "y": "装修.结婚.领证.动土.安床.订婚.安葬.上梁.", "j": "搬家.开业.入宅.开工.出行.开张.旅游.开市..", "c": "生肖冲龙", "s": "煞北", "ch": "建", "zc": "正冲正冲庚辰", "ts": "厨灶栖外西北" }, "d1011": { "y": "作灶.求嗣.祭祀.解除.纳财.破屋.立券.栽种.", "j": "搬家.装修.开业.结婚.入宅.领证.开工.动土.", "c": "生肖冲蛇", "s": "煞西", "ch": "除", "zc": "正冲正冲辛巳", "ts": "仓库床外西北" }, "d1012": { "y": "开业.结婚.领证.开工.出行.订婚.安葬.开张.", "j": "搬家.装修.入宅.动土.安床.上梁.修造.祈福.", "c": "生肖冲马", "s": "煞南", "ch": "满", "zc": "正冲正冲壬午", "ts": "房床碓外正北" }, "d1013": { "y": "搬家.装修.开业.结婚.入宅.领证.开工.动土.", "j": "安床.上梁.祈福.纳畜.伐木.盖屋.冠笄.斋醮.", "c": "生肖冲羊", "s": "煞東", "ch": "平", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d1014": { "y": "订婚.入学.祭祀.纳财.捕捉.纳采.", "j": "搬家.装修.开业.结婚.入宅.领证.开工.出行.", "c": "生肖冲猴", "s": "煞北", "ch": "定", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d1015": { "y": "搬家.结婚.领证.安床.出行.订婚.作灶.旅游.", "j": "装修.开业.入宅.开工.动土.安葬.上梁.开张.", "c": "生肖冲鸡", "s": "煞西", "ch": "执", "zc": "正冲正冲乙酉", "ts": "厨灶门外正北" }, "d1016": { "y": "结婚.领证.订婚.修坟.赴任.祈福.祭祀.纳财.", "j": "搬家.开业.入宅.开工.动土.出行.安葬.开张.", "c": "生肖冲狗", "s": "煞南", "ch": "破", "zc": "正冲正冲丙戌", "ts": "仓库栖外正北" }, "d1017": { "y": "搬家.开业.开工.出行.开张.旅游.入学.赴任.", "j": "装修.结婚.入宅.领证.动土.安床.订婚.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "危", "zc": "正冲正冲丁亥", "ts": "占房床房内北" }, "d1018": { "y": "开业.入宅.开工.安床.出行.开张.旅游.赴任.", "j": "装修.结婚.领证.动土.订婚.安葬.破土.修造.", "c": "生肖冲鼠", "s": "煞北", "ch": "成", "zc": "正冲正冲戊子", "ts": "占门碓房内北" }, "d1019": { "y": "求嗣.解除.牧养.纳畜.启钻.裁衣.除服.栽种.", "j": "搬家.装修.开业.结婚.入宅.领证.开工.动土.", "c": "生肖冲牛", "s": "煞西", "ch": "收", "zc": "正冲正冲己丑", "ts": "碓磨厕房内北" }, "d1020": { "y": "搬家.装修.开业.结婚.领证.开工.动土.出行.", "j": "入宅.安床.订婚.安葬.上梁.破土.祈福.祭祀.kylin@UK:~入宅.安床.订婚.安葬.上梁.破土.祈福.祭祀..", "c": "生肖冲虎", "s": "煞南", "ch": "开", "zc": "正冲正冲庚寅", "ts": "厨灶炉房内北" }, "d1021": { "y": "结婚.领证.订婚.安葬.上梁.入学.求嗣.修坟.", "j": "搬家.装修.开业.入宅.开工.动土.安床.出行.", "c": "生肖冲兔", "s": "煞東", "ch": "闭", "zc": "正冲正冲辛卯", "ts": "仓库门房内北" }, "d1022": { "y": "装修.动土.订婚.求嗣.修坟.赴任.破土.修造.", "j": "搬家.开业.结婚.入宅.领证.开工.出行.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "建", "zc": "正冲正冲壬辰", "ts": "房床栖房内南" }, "d1023": { "y": "作灶.求嗣.祭祀.解除.破屋.立券.招赘.词讼.", "j": "搬家.装修.开业.结婚.入宅.领证.开工.动土.", "c": "生肖冲蛇", "s": "煞西", "ch": "除", "zc": "正冲正冲癸巳", "ts": "占门床房内南" }, "d1024": { "y": "搬家.开业.结婚.领证.开工.出行.订婚.安葬.", "j": "装修.动土.安床.上梁.修造.祈福.解除.纳畜.", "c": "生肖冲马", "s": "煞南", "ch": "满", "zc": "正冲正冲甲午", "ts": "占碓磨房内南" }, "d1025": { "y": "搬家.装修.开业.结婚.入宅.领证.开工.动土.", "j": "安床.上梁.祈福.纳畜.伐木.盖屋.冠笄.斋醮.", "c": "生肖冲羊", "s": "煞東", "ch": "平", "zc": "正冲正冲乙未", "ts": "厨灶厕房内南" }, "d1026": { "y": "搬家.结婚.领证.订婚.入学.祭祀.纳财.捕捉.", "j": "装修.开业.入宅.开工.出行.安葬.开张.旅游.", "c": "生肖冲猴", "s": "煞北", "ch": "定", "zc": "正冲正冲丙申", "ts": "仓库炉房内南" }, "d1027": { "y": "搬家.安床.出行.订婚.旅游.入学.求嗣.修坟.", "j": "装修.开业.结婚.入宅.领证.开工.动土.安葬.", "c": "生肖冲鸡", "s": "煞西", "ch": "执", "zc": "正冲正冲丁酉", "ts": "房床门房内南" }, "d1028": { "y": "装修.结婚.领证.订婚.上梁.求嗣.修坟.赴任.", "j": "搬家.开业.入宅.开工.动土.出行.安葬.开张.", "c": "生肖冲狗", "s": "煞南", "ch": "破", "zc": "正冲正冲戊戌", "ts": "门鸡栖房内东" }, "d1029": { "y": "搬家.开业.开工.出行.开张.旅游.入学.祭祀.", "j": "装修.结婚.入宅.领证.动土.安床.订婚.安葬.", "c": "生肖冲猪", "s": "煞东", "ch": "危", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d1030": { "y": "结婚.领证.安床.作灶.求嗣.赴任.祈福.祭祀.", "j": "搬家.装修.开业.入宅.开工.动土.出行.订婚.", "c": "生肖冲鼠", "s": "煞北", "ch": "成", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d1031": { "y": "安葬.求嗣.解除.牧养.纳畜.启钻.裁衣.除服.", "j": "搬家.装修.开业.结婚.入宅.领证.开工.动土..", "c": "生肖冲牛", "s": "煞西", "ch": "收", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d1107": { "y": "搬家.装修.开业.结婚.领证.开工.安床.出行.", "j": "入宅.动土.安门.赴任.祈福.求医.斋醮.词讼.", "c": "生肖冲猴", "s": "煞北", "ch": "平", "zc": "正冲正冲戊申", "ts": "占门炉外东北" }, "d1117": { "y": "开业.结婚.领证.开工.开张.作灶.赴任.祭祀.", "j": "搬家.装修.入宅.动土.安门.安床.出行.订婚.", "c": "生肖冲马", "s": "煞南", "ch": "除", "zc": "正冲正冲戊午", "ts": "占门碓外东南" }, "d1104": { "y": "结婚.领证.作灶.求嗣.祭祀.解除.纳财.破屋.", "j": "搬家.装修.开业.入宅.开工.动土.安门.安床.", "c": "生肖冲蛇", "s": "煞西", "ch": "除", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d1114": { "y": "开业.结婚.领证.开工.动土.出行.订婚.安葬.", "j": "搬家.装修.入宅.上梁.修造.解除.安香.移徙.", "c": "生肖冲兔", "s": "煞東", "ch": "开", "zc": "正冲正冲乙卯", "ts": "厨灶门外东南" }, "d1113": { "y": "结婚.领证.订婚.作灶.求嗣.解除.牧养.纳畜.", "j": "搬家.装修.开业.入宅.开工.动土.安床.出行.", "c": "生肖冲虎", "s": "煞南", "ch": "收", "zc": "正冲正冲甲寅", "ts": "碓磨炉外东南" }, "d1118": { "y": "装修.开业.结婚.领证.开工.动土.出行.订婚.", "j": "搬家.入宅.安床.作灶.纳畜.移徙.伐木.造床.", "c": "生肖冲羊", "s": "煞東", "ch": "满", "zc": "正冲正冲己未", "ts": "碓磨厕外东南" }, "d1115": { "y": "搬家.开业.结婚.领证.开工.订婚.上梁.开张.", "j": "装修.入宅.动土.安门.安床.出行.安葬.旅游.", "c": "生肖冲龙", "s": "煞北", "ch": "闭", "zc": "正冲正冲丙辰", "ts": "仓库栖外东南" }, "d1217": { "y": "开业.结婚.领证.开工.订婚.开张.赴任.祈福.", "j": "搬家.入宅.动土.出行.旅游.解除.移徙.盖屋.", "c": "生肖冲鼠", "s": "煞北", "ch": "破", "zc": "正冲正冲戊子", "ts": "占门碓房内北" }, "d1101": { "y": "装修.动土.求嗣.修造.解除.纳财.斋醮.求财.", "j": "搬家.结婚.入宅.领证.安床.订婚.安葬.上梁.", "c": "生肖冲虎", "s": "煞南", "ch": "开", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" }, "d1102": { "y": "安葬.入学.求嗣.破土.祈福.祭祀.启钻.裁衣.", "j": "装修.开业.结婚.入宅.领证.开工.动土.安门.", "c": "生肖冲兔", "s": "煞東", "ch": "闭", "zc": "正冲正冲癸卯", "ts": "占大门外东北" }, "d1103": { "y": "安葬.破土.祈福.祭祀.启钻.捕捉.除服.栽种.", "j": "搬家.装修.开业.结婚.入宅.领证.开工.安门.", "c": "生肖冲龙", "s": "煞北", "ch": "建", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d1105": { "y": "作灶.赴任.祭祀.破屋.立券.求医.求财.招赘.", "j": "搬家.装修.开业.结婚.入宅.领证.开工.动土.", "c": "生肖冲马", "s": "煞南", "ch": "满", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d1106": { "y": "搬家.装修.结婚.入宅.领证.动土.出行.订婚.", "j": "安床.纳畜.伐木.造床.", "c": "生肖冲羊", "s": "煞東", "ch": "平", "zc": "正冲正冲丁未", "ts": "房床厕外东北" }, "d1109": { "y": "搬家.装修.结婚.领证.入学.求嗣.修坟.赴任.", "j": "开业.入宅.开工.动土.安门.安床.出行.订婚.", "c": "生肖冲狗", "s": "煞南", "ch": "执", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d1110": { "y": "装修.开业.结婚.领证.开工.订婚.上梁.开张.", "j": "搬家.入宅.动土.出行.安葬.旅游.破土.安香..", "c": "生肖冲猪", "s": "煞東", "ch": "破", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d1111": { "y": "搬家.结婚.领证.出行.旅游.入学.嫁娶.移徙.", "j": "装修.开业.入宅.开工.动土.安床.订婚.安葬.", "c": "生肖冲鼠", "s": "煞北", "ch": "危", "zc": "正冲正冲壬子", "ts": "房床碓外正东" }, "d1112": { "y": "搬家.装修.开业.结婚.入宅.领证.开工.动土.", "j": "订婚.祈福.纳采.斋醮.", "c": "生肖冲牛", "s": "煞西", "ch": "成", "zc": "正冲正冲癸丑", "ts": "占门厕外正东" }, "d1116": { "y": "结婚.领证.订婚.安葬.上梁.求嗣.赴任.祈福.", "j": "搬家.装修.开业.入宅.开工.动土.出行.开张.", "c": "生肖冲蛇", "s": "煞西", "ch": "建", "zc": "正冲正冲丁巳", "ts": "占房床外东南" }, "d1119": { "y": "搬家.结婚.领证.出行.上梁.旅游.入学.求嗣.", "j": "装修.开业.入宅.开工.动土.订婚.安葬.开张.", "c": "生肖冲猴", "s": "煞北", "ch": "平", "zc": "正冲正冲庚申", "ts": "厨灶炉外正南" }, "d1120": { "y": "搬家.装修.结婚.领证.动土.订婚.入学.求嗣.", "j": "开业.开工.安床.出行.安葬.上梁.开张.旅游.", "c": "生肖冲鸡", "s": "煞西", "ch": "定", "zc": "正冲正冲辛酉", "ts": "仓库门外正南" }, "d1121": { "y": "装修.出行.旅游.入学.求嗣.修坟.赴任.修造.", "j": "搬家.开业.结婚.入宅.领证.开工.动土.安门.", "c": "生肖冲狗", "s": "煞南", "ch": "执", "zc": "正冲正冲壬戌", "ts": "房床栖外正南" }, "d1122": { "y": "装修.开业.结婚.领证.开工.安床.订婚.安葬.", "j": "搬家.入宅.动土.出行.旅游.纳畜.移徙.盖屋.", "c": "生肖冲猪", "s": "煞東", "ch": "破", "zc": "正冲正冲癸亥", "ts": "占门床外正南" }, "d1123": { "y": "结婚.领证.出行.作灶.旅游.入学.赴任.嫁娶.", "j": "搬家.装修.开业.入宅.开工.动土.安床.订婚.", "c": "生肖冲鼠", "s": "煞北", "ch": "危", "zc": "正冲正冲甲子", "ts": "占碓磨外正南" }, "d1124": { "y": "搬家.开业.结婚.入宅.领证.开工.出行.安葬.", "j": "装修.动土.订婚.修造.纳采.开池.分居.", "c": "生肖冲牛", "s": "煞西", "ch": "成", "zc": "正冲正冲乙丑", "ts": "厨灶厕外西南" }, "d1125": { "y": "订婚.牧养.裁衣.纳采.经络.", "j": "搬家.装修.开业.结婚.入宅.领证.开工.动土.", "c": "生肖冲虎", "s": "煞南", "ch": "收", "zc": "正冲正冲丙寅", "ts": "仓库炉外西南" }, "d1126": { "y": "搬家.开业.结婚.领证.开工.动土.订婚.安葬.", "j": "装修.入宅.上梁.破土.修造.解除.盖屋.经络.", "c": "生肖冲兔", "s": "煞東", "ch": "开", "zc": "正冲正冲丁卯", "ts": "房床门外西南" }, "d1127": { "y": "开业.结婚.领证.开工.订婚.上梁.开张.作灶.", "j": "搬家.装修.入宅.动土.安床.出行.安葬.旅游.", "c": "生肖冲龙", "s": "煞北", "ch": "闭", "zc": "正冲正冲戊辰", "ts": "门鸡栖外西南" }, "d1128": { "y": "结婚.领证.安床.订婚.安葬.上梁.作灶.求嗣.", "j": "搬家.装修.开业.入宅.开工.动土.出行.开张.", "c": "生肖冲蛇", "s": "煞西", "ch": "建", "zc": "正冲正冲己巳", "ts": "碓磨床外西南" }, "d1129": { "y": "开业.结婚.领证.开工.开张.作灶.求嗣.赴任.", "j": "搬家.装修.入宅.动土.安门.安床.出行.订婚.", "c": "生肖冲马", "s": "煞南", "ch": "除", "zc": "正冲正冲庚午", "ts": "厨灶碓外西南" }, "d1130": { "y": "搬家.装修.结婚.入宅.领证.动土.出行.订婚.", "j": "安床.安葬.破土.纳畜.伐木.造床.行丧.", "c": "生肖冲羊", "s": "煞東", "ch": "满", "zc": "正冲正冲辛未", "ts": "仓库厕外西南" }, "d1213": { "y": "装修.结婚.领证.动土.安床.订婚.上梁.求嗣.", "j": "搬家.开业.入宅.开工.安葬.开张.破土.安香.", "c": "生肖冲猴", "s": "煞北", "ch": "满", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d1203": { "y": "搬家.装修.结婚.领证.出行.旅游.入学.求嗣.", "j": "开业.入宅.开工.动土.安门.安床.订婚.安葬.", "c": "生肖冲狗", "s": "煞南", "ch": "执", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d1210": { "y": "搬家.开业.结婚.领证.开工.订婚.安葬.开张.", "j": "装修.入宅.动土.安床.出行.上梁.旅游.造.", "c": "生肖冲蛇", "s": "煞西", "ch": "闭", "zc": "正冲正冲辛巳", "ts": "仓库床外西北" }, "d1230": { "y": "搬家.开业.结婚.入宅.领证.开工.出行.开张.", "j": "装修.动土.安床.订婚.安葬.上梁.求嗣.赴任.", "c": "生肖冲牛", "s": "煞西", "ch": "危", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d1218": { "y": "开业.结婚.入宅.领证.开工.出行.开张.旅游.", "j": "装修.动土.订婚.安葬.上梁.求嗣.破土.修造.", "c": "生肖冲牛", "s": "煞西", "ch": "危", "zc": "正冲正冲己丑", "ts": "碓磨厕房内北" }, "d1208": { "y": "入宅.订婚.安葬.上梁.求嗣.解除.牧养.纳畜.", "j": "搬家.装修.开业.结婚.领证.开工.动土.出行.", "c": "生肖冲兔", "s": "煞東", "ch": "收", "zc": "正冲正冲己卯", "ts": "占门炉外西北" }, "d1220": { "y": "结婚.领证.安床.订婚.作灶.求嗣.修坟.解除.", "j": "搬家.装修.开业.入宅.开工.动土.出行.安葬.", "c": "生肖冲兔", "s": "煞東", "ch": "收", "zc": "正冲正冲辛卯", "ts": "仓库门房内北" }, "d1201": { "y": "搬家.装修.开业.入宅.开工.出行.订婚.安葬.", "j": "结婚.领证.动土.赴任.祈福.嫁娶.求医.斋醮.", "c": "生肖冲猴", "s": "煞北", "ch": "平", "zc": "正冲正冲壬申", "ts": "房床厕外正南" }, "d1202": { "y": "装修.结婚.领证.动土.订婚.作灶.入学.求嗣.", "j": "搬家.开业.入宅.开工.安床.出行.安葬.上梁.", "c": "生肖冲鸡", "s": "煞西", "ch": "定", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d1204": { "y": "结婚.领证.订婚.入学.求嗣.祈福.祭祀.纳财.", "j": "搬家.装修.开业.入宅.开工.动土.安床.出行.", "c": "生肖冲猪", "s": "煞東", "ch": "破", "zc": "正冲正冲乙亥", "ts": "厨灶床外正西" }, "d1205": { "y": "开业.结婚.领证.开工.安床.订婚.开张.作灶.", "j": "搬家.入宅.动土.出行.安葬.上梁.旅游.破土.", "c": "生肖冲鼠", "s": "煞北", "ch": "危", "zc": "正冲正冲丙子", "ts": "仓库碓外西北" }, "d1206": { "y": "开业.结婚.入宅.领证.开工.出行.开张.旅游.", "j": "装修.动土.订婚.安葬.上梁.求嗣.破土.修造.", "c": "生肖冲牛", "s": "煞西", "ch": "成", "zc": "正冲正冲丁丑", "ts": "房床厕外西北" }, "d1207": { "y": "搬家.装修.开业.入宅.开工.出行.开张.旅游.", "j": "结婚.领证.安床.订婚.安葬.破土.祈福.纳畜.", "c": "生肖冲虎", "s": "煞南", "ch": "成", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d1209": { "y": "搬家.结婚.入宅.领证.安床.出行.订婚.安葬.", "j": "装修.动土.破土.修造.纳畜.经络.掘井.栽种.", "c": "生肖冲龙", "s": "煞北", "ch": "开", "zc": "正冲正冲庚辰", "ts": "厨灶栖外西北" }, "d1211": { "y": "装修.结婚.领证.动土.安床.订婚.上梁.作灶.", "j": "搬家.开业.入宅.开工.出行.安葬.开张.旅游.", "c": "生肖冲马", "s": "煞南", "ch": "建", "zc": "正冲正冲壬午", "ts": "房床碓外正北" }, "d1212": { "y": "求嗣.修坟.赴任.破土.祭祀.解除.纳财.破屋.", "j": "搬家.装修.开业.结婚.入宅.领证.开工.动土.", "c": "生肖冲羊", "s": "煞東", "ch": "除", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d1214": { "y": "搬家.结婚.领证.出行.订婚.安葬.作灶.旅游.", "j": "装修.开业.入宅.开工.动土.安床.上梁.开张.", "c": "生肖冲鸡", "s": "煞西", "ch": "平", "zc": "正冲正冲乙酉", "ts": "厨灶门外正北" }, "d1215": { "y": "搬家.结婚.入宅.领证.订婚.作灶.入学.纳财.", "j": "装修.开业.开工.安床.出行.安葬.上梁.开张.", "c": "生肖冲狗", "s": "煞南", "ch": "定", "zc": "正冲正冲丙戌", "ts": "仓库栖外正北" }, "d1216": { "y": "结婚.领证.订婚.入学.求嗣.祈福.祭祀.纳财.", "j": "装修.开业.开工.动土.安床.出行.安葬.开张.", "c": "生肖冲猪", "s": "煞東", "ch": "执", "zc": "正冲正冲丁亥", "ts": "占房床房内北" }, "d1219": { "y": "搬家.装修.开业.结婚.入宅.领证.开工.动土.", "j": "安床.订婚.安葬.破土.祈福.纳畜.纳采.斋醮.", "c": "生肖冲虎", "s": "煞南", "ch": "成", "zc": "正冲正冲庚寅", "ts": "厨灶炉房内北" }, "d1221": { "y": "搬家.结婚.入宅.领证.安床.出行.订婚.安葬.", "j": "装修.动土.赴任.修造.纳畜.经络.掘井.栽种.", "c": "生肖冲龙", "s": "煞北", "ch": "开", "zc": "正冲正冲壬辰", "ts": "房床栖房内南" }, "d1222": { "y": "开业.结婚.领证.开工.订婚.安葬.开张.入学.", "j": "搬家.装修.入宅.动土.安床.出行.上梁.旅游.", "c": "生肖冲蛇", "s": "煞西", "ch": "闭", "zc": "正冲正冲癸巳", "ts": "占门床房内南" }, "d1223": { "y": "装修.结婚.领证.动土.安床.订婚.上梁.作灶.", "j": "搬家.开业.入宅.开工.出行.安葬.开张.旅游.", "c": "生肖冲马", "s": "煞南", "ch": "建", "zc": "正冲正冲甲午", "ts": "占碓磨房内南" }, "d1224": { "y": "结婚.领证.求嗣.修坟.赴任.破土.祭祀.解除.", "j": "搬家.装修.开业.入宅.开工.动土.安门.安床.", "c": "生肖冲羊", "s": "煞東", "ch": "除", "zc": "正冲正冲乙未", "ts": "厨灶厕房内南" }, "d1225": { "y": "搬家.装修.结婚.入宅.领证.安床.订婚.作灶.", "j": "开业.开工.安葬.开张.破土.开市.纳畜.启钻.", "c": "生肖冲猴", "s": "煞北", "ch": "满", "zc": "正冲正冲丙申", "ts": "仓库炉房内南" }, "d1226": { "y": "搬家.结婚.领证.出行.订婚.作灶.旅游.入学.", "j": "装修.开业.入宅.开工.动土.安床.安葬.上梁.", "c": "生肖冲鸡", "s": "煞西", "ch": "平", "zc": "正冲正冲丁酉", "ts": "房床门房内南" }, "d1227": { "y": "搬家.结婚.入宅.领证.订婚.入学.求嗣.赴任.", "j": "装修.开业.开工.安床.出行.安葬.上梁.开张.", "c": "生肖冲狗", "s": "煞南", "ch": "定", "zc": "正冲正冲戊戌", "ts": "门鸡栖房内东" }, "d1228": { "y": "订婚.入学.求嗣.祈福.祭祀.纳财.纳畜.纳采.", "j": "搬家.装修.开业.结婚.入宅.领证.开工.动土.", "c": "生肖冲猪", "s": "煞東", "ch": "执", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d1229": { "y": "装修.开业.结婚.领证.开工.订婚.安葬.上梁.", "j": "搬家.入宅.动土.出行.旅游.解除.安香.移徙.", "c": "生肖冲鼠", "s": "煞北", "ch": "破", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d1231": { "y": "装修.开业.开工.动土.出行.上梁.开张.旅游.", "j": "搬家.结婚.入宅.领证.安床.订婚.安葬.破土.", "c": "生肖冲虎", "s": "煞南", "ch": "成", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" } } ukui-panel-4.0.0.4/plugin-calendar/html/hlnew/hl2023.json0000644000175000017500000006543014560306203021311 0ustar fengfeng{ "d0101": { "y": "成服.除服.冠笄.入殓.", "j": "作灶.盖屋.探病." }, "d0102": { "y": "装修.结婚.入宅.领证.", "j": "伐木." }, "d0103": { "y": "装修.动土.订婚.安葬.", "j": "开业.开工.安床.开张." }, "d0104": { "y": "破屋.坏垣.求医.", "j": "." }, "d0105": { "y": "搬家.结婚.入宅.领证.", "j": "开光." }, "d0106": { "y": "搬家.开业.入宅.开工.", "j": "结婚.领证.安葬.嫁娶." }, "d0107": { "y": "结婚.领证.安床.纳财.", "j": "开业.开工.安葬.开张." }, "d0108": { "y": "装修.入宅.动土.出行.", "j": "开业.开工.安葬.开张." }, "d0109": { "y": "安床.订婚.安葬.交易.", "j": "结婚.入宅.领证.祭祀." }, "d0110": { "y": "结婚.领证.安床.出行.", "j": "动土.作灶.掘井." }, "d0111": { "y": ".", "j": "结婚.领证.安门.安葬." }, "d0112": { "y": "开业.开工.安门.安床.", "j": "结婚.领证.出行.安葬." }, "d0113": { "y": "结婚.领证.安葬.祭祀.", "j": "入宅.作灶.盖屋." }, "d0114": { "y": "搬家.入宅.安门.出行.", "j": "伐木." }, "d0115": { "y": "搬家.装修.结婚.入宅.", "j": "入宅." }, "d0116": { "y": "祭祀.破屋.坏垣.", "j": "." }, "d0117": { "y": "搬家.装修.开业.结婚.", "j": "安葬.作灶.开光." }, "d0118": { "y": "搬家.开业.入宅.开工.", "j": "结婚.领证.安葬.理发." }, "d0119": { "y": "结婚.领证.理发.嫁娶.", "j": "安葬.作灶.破土.纳畜." }, "d0120": { "y": "搬家.结婚.入宅.领证.", "j": "开业.开工.安葬.开张." }, "d0121": { "y": "开业.结婚.领证.开工.", "j": "入宅.安床.安葬." }, "d0122": { "y": "安床.安葬.破土.祈福.", "j": "结婚.领证.安门.订婚." }, "d0123": { "y": "结婚.领证.安床.出行.", "j": "动土.安葬.破土.开光." }, "d0124": { "y": "搬家.入宅.动土.订婚.", "j": "开业.结婚.领证.开工." }, "d0125": { "y": "开业.开工.安床.安葬.", "j": "结婚.领证.动土.破土." }, "d0126": { "y": "作灶.祭祀.掘井.", "j": "结婚.领证.安葬." }, "d0127": { "y": "开业.开工.动土.安葬.", "j": "搬家.结婚.入宅.领证." }, "d0128": { "y": "搬家.结婚.领证.出行.", "j": "开业.开工.动土.开张." }, "d0129": { "y": "祭祀.解除.求医.", "j": "." }, "d0130": { "y": "沐浴.结网.", "j": "结婚.入宅.领证.安葬." }, "d0131": { "y": ".", "j": "." }, "d0201": { "y": "解除.", "j": "." }, "d0202": { "y": "搬家.开业.结婚.入宅.", "j": "安葬.作灶.祈福.祭祀." }, "d0203": { "y": "结婚.领证.安床.出行.", "j": "开业.开工.开张.开市." }, "d0204": { "y": "出行.旅游.教牛马.造畜稠.", "j": "." }, "d0205": { "y": "搬家.装修.入宅.动土.", "j": "开业.结婚.领证.开工." }, "d0206": { "y": "开业.结婚.领证.开工.", "j": "装修.入宅.安门.上梁." }, "d0207": { "y": "祭祀.解除.平治道涂.", "j": "." }, "d0208": { "y": "动土.交易.祈福.祭祀.", "j": "结婚.领证.安床.出行." }, "d0209": { "y": "装修.入宅.安门.安床.", "j": "开业.开工.动土.交易." }, "d0210": { "y": "祭祀.解除.破屋.", "j": "." }, "d0211": { "y": "塞穴.", "j": "." }, "d0212": { "y": "动土.安床.订婚.安葬.", "j": "." }, "d0213": { "y": "解除.", "j": "." }, "d0214": { "y": "搬家.开业.结婚.入宅.", "j": "安葬.祭祀.入殓." }, "d0215": { "y": "安床.安葬.交易.破土.", "j": "开业.结婚.领证.开工." }, "d0216": { "y": "出行.旅游.祭祀.扫舍.", "j": "安葬.破土.开光." }, "d0217": { "y": "订婚.求嗣.祈福.祭祀.", "j": "入宅.出行.安葬.作灶." }, "d0218": { "y": "开业.结婚.领证.开工.", "j": "装修.入宅.动土.安葬." }, "d0219": { "y": "作灶.祭祀.结网.畋猎.", "j": "结婚.领证.安床.嫁娶." }, "d0220": { "y": "安葬.破土.祭祀.解除.", "j": "结婚.入宅.领证.上梁." }, "d0221": { "y": "搬家.开业.结婚.入宅.", "j": "." }, "d0222": { "y": "搬家.装修.结婚.入宅.", "j": "开业.开工.开张.开市." }, "d0223": { "y": "祭祀.破屋.", "j": "." }, "d0224": { "y": "搬家.结婚.入宅.领证.", "j": "祈福." }, "d0225": { "y": "开业.开工.动土.订婚.", "j": "结婚.领证.安葬." }, "d0226": { "y": "搬家.结婚.入宅.领证.", "j": "动土.安葬." }, "d0227": { "y": "动土.订婚.交易.破土.", "j": "结婚.领证.安葬." }, "d0228": { "y": "搬家.结婚.入宅.领证.", "j": "赴任." }, "d0301": { "y": "结网.", "j": "." }, "d0302": { "y": "结婚.领证.动土.出行.", "j": "搬家.入宅." }, "d0303": { "y": "安床.订婚.作灶.订盟.", "j": "开业.开工.安葬.开张." }, "d0304": { "y": "安葬.破土.沐浴.启钻.", "j": "." }, "d0305": { "y": "搬家.开业.结婚.入宅.", "j": "." }, "d0306": { "y": "出行.安葬.旅游.破土.", "j": "装修.结婚.入宅.领证." }, "d0307": { "y": "祭祀.解除.破屋.", "j": "." }, "d0308": { "y": "搬家.装修.结婚.入宅.", "j": "." }, "d0309": { "y": "装修.开业.开工.动土.", "j": "搬家.结婚.入宅.领证." }, "d0310": { "y": "解除.", "j": "." }, "d0311": { "y": "开业.结婚.领证.开工.", "j": "搬家.入宅.动土.安门." }, "d0312": { "y": "搬家.装修.结婚.入宅.", "j": "开光.掘井." }, "d0313": { "y": "解除.", "j": "." }, "d0314": { "y": "开业.入宅.开工.动土.", "j": "结婚.领证.安床.作灶." }, "d0315": { "y": "认养.会亲友.", "j": "动土.安葬.上梁.伐木." }, "d0316": { "y": "安葬.破土.沐浴.成服.", "j": "搬家.结婚.领证.安床." }, "d0317": { "y": "搬家.开业.结婚.入宅.", "j": "." }, "d0318": { "y": "装修.结婚.领证.动土.", "j": "." }, "d0319": { "y": "解除.沐浴.破屋.", "j": "." }, "d0320": { "y": "搬家.装修.结婚.入宅.", "j": "开业.开工.开张.开市." }, "d0321": { "y": "开业.开工.动土.安床.", "j": "搬家.结婚.入宅.领证." }, "d0322": { "y": "搬家.入宅.出行.订婚.", "j": "装修.动土.安床.安葬." }, "d0323": { "y": "搬家.开业.开工.动土.", "j": "搬家.装修.入宅.安门" }, "d0324": { "y": "搬家.结婚.入宅.领证.", "j": "开业.开工.安门." }, "d0325": { "y": "搬家.入宅.作灶.纳畜.", "j": "结婚.领证.安葬." }, "d0326": { "y": "安葬.祭祀.启钻.入殓.", "j": "动土.上梁." }, "d0327": { "y": "安床.出行.订婚.旅游.", "j": "搬家.入宅.安葬." }, "d0328": { "y": "搬家.开业.结婚.入宅.", "j": "动土." }, "d0329": { "y": "结婚.领证.祭祀.沐浴.", "j": "安葬." }, "d0330": { "y": "搬家.开业.结婚.入宅.", "j": "." }, "d0331": { "y": "搬家.装修.入宅.动土.", "j": "开业.开工.安葬.开张." }, "d0401": { "y": ".", "j": "." }, "d0402": { "y": "结婚.领证.订婚.安葬.", "j": "开业.开工.开张." }, "d0403": { "y": "动土.安葬.上梁.破土.", "j": "结婚.领证.开光." }, "d0404": { "y": "祭祀.", "j": "." }, "d0405": { "y": "搬家.装修.结婚.入宅.", "j": "开业.开工.安葬.交易." }, "d0406": { "y": "装修.结婚.领证.动土.", "j": "出行.安葬.旅游.祈福." }, "d0407": { "y": "祭祀.", "j": "." }, "d0408": { "y": "搬家.开业.结婚.入宅.", "j": "安葬.伐木.作梁." }, "d0409": { "y": "搬家.装修.开业.入宅.", "j": "安床." }, "d0410": { "y": "理发.祭祀.沐浴.扫舍.", "j": "装修.结婚.入宅.领证." }, "d0411": { "y": "搬家.装修.结婚.入宅.", "j": "." }, "d0412": { "y": "搬家.装修.入宅.动土.", "j": "开业.结婚.领证.开工." }, "d0413": { "y": "破屋.", "j": "." }, "d0414": { "y": "装修.开业.开工.动土.", "j": "搬家.结婚.领证.安门." }, "d0415": { "y": "装修.开业.开工.动土.", "j": "搬家.结婚.入宅.领证." }, "d0416": { "y": "作灶.", "j": "." }, "d0417": { "y": "解除.", "j": "." }, "d0418": { "y": "装修.动土.安门.安床.", "j": "搬家.结婚.入宅.领证." }, "d0419": { "y": "祭祀.断蚁.", "j": "搬家.入宅.动土.移徙." }, "d0420": { "y": "搬家.装修.开业.结婚.", "j": "安葬.作灶.破土.伐木." }, "d0421": { "y": "搬家.装修.开业.结婚.", "j": "动土.安床.订婚.破土." }, "d0422": { "y": "结婚.领证.作灶.理发.", "j": "出行.旅游.破土." }, "d0423": { "y": "搬家.装修.结婚.入宅.", "j": "动土.破土." }, "d0424": { "y": "沐浴.", "j": "." }, "d0425": { "y": "动土.订婚.安葬.破土.", "j": "搬家.结婚.入宅.领证." }, "d0426": { "y": "祭祀.破屋.", "j": "." }, "d0427": { "y": "搬家.开业.结婚.入宅.", "j": "祈福." }, "d0428": { "y": "搬家.开业.结婚.入宅.", "j": "." }, "d0429": { "y": "作灶.祭祀.纳财.", "j": "开业.开工.开张.破土." }, "d0430": { "y": "搬家.开业.结婚.入宅.", "j": "安葬." }, "d0501": { "y": "安葬.启钻.成服.除服.", "j": "." }, "d0502": { "y": "搬家.结婚.入宅.领证.", "j": "动土." }, "d0503": { "y": "结婚.领证.安葬.破土.", "j": "开业.入宅.开工.开张." }, "d0504": { "y": "开业.结婚.领证.开工.", "j": "动土.破土." }, "d0505": { "y": "结婚.领证.祭祀.沐浴.", "j": "动土.安葬.破土.掘井." }, "d0506": { "y": "搬家.装修.开业.入宅.", "j": "结婚.领证.安葬.修坟." }, "d0507": { "y": "安葬.破土.祭祀.解除.", "j": "搬家.开业.结婚.入宅." }, "d0508": { "y": "破屋.", "j": "." }, "d0509": { "y": "搬家.装修.开业.结婚.", "j": "祭祀.祭祀.纳畜." }, "d0510": { "y": "搬家.装修.开业.结婚.", "j": "." }, "d0511": { "y": "作灶.祭祀.纳财.纳畜.", "j": "开业.开工.安床.安葬." }, "d0512": { "y": "开业.开工.开张.理发.", "j": "结婚.入宅.领证.出行." }, "d0513": { "y": "安葬.破土.祭祀.启钻.", "j": "." }, "d0514": { "y": "出行.交易.旅游.祭祀.", "j": "搬家.结婚.领证.动土." }, "d0515": { "y": "搬家.装修.开业.结婚.", "j": "." }, "d0516": { "y": "开业.结婚.领证.开工.", "j": "搬家.装修.入宅.动土." }, "d0517": { "y": "祭祀.", "j": "." }, "d0518": { "y": "装修.入宅.动土.安床.", "j": "结婚.领证.作灶.理发." }, "d0519": { "y": "安葬.理发.破土.祭祀.", "j": "搬家.开业.结婚.入宅." }, "d0520": { "y": "破屋.", "j": "." }, "d0521": { "y": "开业.结婚.领证.开工.", "j": "搬家.入宅.作灶.祭祀." }, "d0522": { "y": "搬家.装修.开业.结婚.", "j": "纳畜.伐木.掘井." }, "d0523": { "y": "交易.作灶.祭祀.牧养.", "j": "开业.开工.安床.出行." }, "d0524": { "y": "装修.结婚.领证.动土.", "j": "搬家.出行.安葬.旅游." }, "d0525": { "y": "祭祀.立碑.沐浴.启钻.", "j": "结婚.领证.安葬.破土." }, "d0526": { "y": "搬家.结婚.入宅.领证.", "j": "动土." }, "d0527": { "y": "结婚.领证.出行.安葬.", "j": "动土.作灶." }, "d0528": { "y": "装修.动土.订婚.安葬.", "j": "开业.结婚.领证.开工." }, "d0529": { "y": "搬家.装修.入宅.出行.", "j": "开业.开工.安葬.开张." }, "d0530": { "y": "沐浴.平治道涂.", "j": "结婚.领证.祈福." }, "d0531": { "y": "搬家.结婚.入宅.领证.", "j": "开业.开工.安葬.开张." }, "d0601": { "y": "安葬.破土.捕捉.结网.", "j": "结婚.入宅.领证." }, "d0602": { "y": "沐浴.破屋.坏垣.", "j": "." }, "d0603": { "y": "搬家.开业.结婚.入宅.", "j": "动土." }, "d0604": { "y": "搬家.结婚.入宅.领证.", "j": "开光." }, "d0605": { "y": "订婚.作灶.祈福.祭祀.", "j": "动土." }, "d0606": { "y": "结婚.领证.动土.安床.", "j": "装修.入宅.安门.上梁." }, "d0607": { "y": "搬家.装修.结婚.领证.", "j": "作灶.理发.开光.盖屋." }, "d0608": { "y": "搬家.安门.出行.安葬.", "j": "动土.安床.破土.掘井." }, "d0609": { "y": "安葬.理发.破土.祭祀.", "j": "搬家.结婚.入宅.领证." }, "d0610": { "y": "牧养.纳畜.开光.塞穴.", "j": "装修.开业.结婚.领证." }, "d0611": { "y": "作灶.沐浴.平治道涂.", "j": "." }, "d0612": { "y": "装修.动土.安床.出行.", "j": "搬家.结婚.领证.嫁娶." }, "d0613": { "y": "安葬.破土.祭祀.塞穴.", "j": "." }, "d0614": { "y": "破屋.", "j": "." }, "d0615": { "y": "安葬.祭祀.启钻.成服.", "j": "." }, "d0616": { "y": "搬家.开业.结婚.入宅.", "j": "出行.作灶.旅游.栽种." }, "d0617": { "y": "交易.祭祀.解除.纳财.", "j": "搬家.结婚.入宅.领证." }, "d0618": { "y": "结婚.领证.安床.出行.", "j": "搬家.入宅.安葬.纳畜." }, "d0619": { "y": "动土.安葬.破土.祭祀.", "j": "装修.入宅.安门.出行." }, "d0620": { "y": "安门.出行.作灶.旅游.", "j": "动土.安床.安葬.开生坟." }, "d0621": { "y": "装修.动土.安门.安床.", "j": "搬家.结婚.入宅.领证." }, "d0622": { "y": "搬家.装修.入宅.安床.", "j": "动土.安葬.作灶.破土." }, "d0623": { "y": "作灶.祭祀.沐浴.平治道涂.", "j": "结婚.领证.安门.安葬." }, "d0624": { "y": "搬家.装修.结婚.入宅.", "j": "开业.开工.开张.作灶." }, "d0625": { "y": "安葬.破土.祭祀.捕捉.", "j": "开业.结婚.入宅.领证." }, "d0626": { "y": "安葬.祭祀.拆卸.沐浴.", "j": "结婚.入宅.领证.作灶." }, "d0627": { "y": "祭祀.沐浴.破屋.", "j": "搬家.入宅.出行.旅游." }, "d0628": { "y": "开业.结婚.入宅.领证.", "j": "盖屋.冠笄.掘井." }, "d0629": { "y": "开业.开工.动土.安床.", "j": "安葬." }, "d0630": { "y": "结婚.领证.祭祀.捕捉.", "j": "搬家.入宅.作灶." }, "d0701": { "y": ".", "j": "开业.开工.安葬.交易." }, "d0702": { "y": "搬家.结婚.入宅.领证.", "j": "开业.开工.安床.交易." }, "d0703": { "y": "出行.旅游.祭祀.沐浴.", "j": "搬家.开业.入宅.开工." }, "d0704": { "y": "出行.旅游.赴任.祭祀.", "j": "." }, "d0705": { "y": ".", "j": "." }, "d0706": { "y": "破土.沐浴.成服.除服.", "j": "搬家.开业.结婚.入宅." }, "d0707": { "y": "搬家.装修.开业.结婚.", "j": "." }, "d0708": { "y": "动土.安葬.上梁.修坟.", "j": "搬家.结婚.入宅.领证." }, "d0709": { "y": "破屋.", "j": "." }, "d0710": { "y": "搬家.装修.开业.结婚.", "j": "." }, "d0711": { "y": "装修.开业.入宅.开工.", "j": "搬家.结婚.领证.出行." }, "d0712": { "y": "结婚.领证.理发.祭祀.", "j": "入宅.安葬.作灶.伐木." }, "d0713": { "y": "修坟.祭祀.立碑.启钻.", "j": "." }, "d0714": { "y": "搬家.装修.结婚.领证.", "j": "开业.入宅.开工.安床." }, "d0715": { "y": "出行.旅游.祭祀.", "j": "." }, "d0716": { "y": "结婚.领证.动土.安床.", "j": "安葬.作灶.伐木.作梁." }, "d0717": { "y": "搬家.开业.入宅.开工.", "j": "结婚.领证.安葬.作灶." }, "d0718": { "y": "祭祀.沐浴.平治道涂.", "j": "." }, "d0719": { "y": "搬家.装修.开业.结婚.", "j": "." }, "d0720": { "y": "解除.", "j": "." }, "d0721": { "y": "祭祀.破屋.坏垣.", "j": "." }, "d0722": { "y": "搬家.搬家.装修.结婚.", "j": "开业.开工.开张.开市." }, "d0723": { "y": "开业.开工.动土.安床.", "j": "搬家.结婚.入宅.领证." }, "d0724": { "y": "结婚.领证.作灶.理发.", "j": "开业.开工.上梁.开张" }, "d0725": { "y": "修坟.祭祀.启钻.成服.", "j": "开业.结婚.入宅.领证." }, "d0726": { "y": "结婚.入宅.领证.订婚.", "j": "安床.安葬.作灶." }, "d0727": { "y": "结婚.领证.安葬.破土.", "j": "动土." }, "d0728": { "y": "作灶.", "j": "安葬." }, "d0729": { "y": "入学.理发.沐浴.认养", "j": "结婚.入宅.领证." }, "d0730": { "y": "安葬.启钻.开光.针灸.", "j": "开业.开工.动土.开张." }, "d0731": { "y": "祭祀.结网.", "j": "." }, "d0801": { "y": "安葬.破土.启钻.成服.", "j": "搬家.入宅." }, "d0802": { "y": "搬家.结婚.入宅.领证.", "j": "开业.开工.开张.赴任." }, "d0803": { "y": "祭祀.解除.破屋.", "j": "." }, "d0804": { "y": "订婚.订盟.牧养.纳财.", "j": "安葬." }, "d0805": { "y": "搬家.开业.结婚.入宅.", "j": "安门." }, "d0806": { "y": "祭祀.", "j": "." }, "d0807": { "y": "开业.开工.动土.出行.", "j": "结婚.入宅.领证.安门." }, "d0808": { "y": "安床.作灶.理发.祭祀.", "j": "结婚.领证.安门.开光." }, "d0809": { "y": "搬家.结婚.领证.出行.", "j": "动土.安葬.伐木.作梁." }, "d0810": { "y": "搬家.安床.出行.旅游.", "j": "结婚.领证.动土.订婚." }, "d0811": { "y": "开业.开工.安葬.交易.", "j": "搬家.结婚.入宅.领证." }, "d0812": { "y": "造畜稠.", "j": "." }, "d0813": { "y": "安葬.破土.启钻.成服.", "j": "." }, "d0814": { "y": "安葬.破土.祭祀.启钻.", "j": "." }, "d0815": { "y": "祭祀.解除.破屋.", "j": "." }, "d0816": { "y": "结婚.领证.订婚.求嗣.", "j": "安门.出行.安葬.上梁." }, "d0817": { "y": "搬家.装修.开业.结婚.", "j": "安葬.修坟.立碑.纳畜." }, "d0818": { "y": "结婚.领证.作灶.祭祀.", "j": "开业.开工.安葬.开张." }, "d0819": { "y": "搬家.开业.结婚.入宅.", "j": "安床." }, "d0820": { "y": "结婚.领证.动土.安床.", "j": "开光." }, "d0821": { "y": "搬家.入宅.安门.安床.", "j": "结婚.领证.安葬.破土." }, "d0822": { "y": "安床.出行.上梁.旅游.", "j": "结婚.领证.动土.安葬." }, "d0823": { "y": "安床.订婚.安葬.理发.", "j": "开业.结婚.入宅.领证." }, "d0824": { "y": "祭祀.解除.造畜稠.平治道涂.", "j": "开业.结婚.入宅.领证." }, "d0825": { "y": "安葬.破土.启钻.成.", "j": "开业.入宅.开工.开张." }, "d0826": { "y": "搬家.装修.入宅.动土.", "j": "作灶." }, "d0827": { "y": "结婚.领证.安床.订婚.", "j": "开业.开工.交易." }, "d0828": { "y": "祭祀.解除.破屋.", "j": "." }, "d0829": { "y": "搬家.装修.动土.安床.", "j": "盖屋." }, "d0830": { "y": "开业.开工.安床.订婚.", "j": "结婚.入宅.领证.赴任." }, "d0831": { "y": "沐浴.", "j": "." }, "d0901": { "y": ".", "j": "." }, "d0902": { "y": "出行.订婚.安葬.旅游.", "j": "入宅." }, "d0903": { "y": "出行.旅游.祭祀.沐浴.", "j": "结婚.领证.动土.安葬." }, "d0904": { "y": "搬家.结婚.入宅.领证.", "j": "开业.开工.开张." }, "d0905": { "y": ".", "j": "." }, "d0906": { "y": "搬家.开业.入宅.开工.", "j": "结婚.领证.动土.作灶." }, "d0907": { "y": "搬家.装修.结婚.入宅.", "j": "." }, "d0908": { "y": "装修.动土.安床.安葬.", "j": "搬家.开业.结婚.入宅." }, "d0909": { "y": "破屋.", "j": "." }, "d0910": { "y": "搬家.装修.开业.结婚.", "j": "安葬." }, "d0911": { "y": "安葬.理发.求嗣.修坟.", "j": "搬家.入宅.出行.作灶." }, "d0912": { "y": "祭祀.沐浴.成服.除服.", "j": "开业.结婚.领证.开工." }, "d0913": { "y": ".", "j": "." }, "d0914": { "y": "安床.破土.祭祀.启钻.", "j": "搬家.开业.结婚.入宅." }, "d0915": { "y": "祭祀.", "j": "." }, "d0916": { "y": "搬家.装修.结婚.入宅.", "j": "安床." }, "d0917": { "y": "安门.安床.理发.裁衣.", "j": "搬家.结婚.入宅.领证." }, "d0918": { "y": "搬家.装修.开业.结婚.", "j": "作灶.祈福.祭祀.伐木." }, "d0919": { "y": "祭祀.入殓.", "j": "装修.入宅.动土.安门." }, "d0920": { "y": "装修.入宅.安床.订婚.", "j": "作灶.伐木.掘井." }, "d0921": { "y": "搬家.装修.结婚.入宅.", "j": "开业.开工.出行.安葬." }, "d0922": { "y": "祭祀.破屋.坏垣.", "j": "." }, "d0923": { "y": "搬家.入宅.安床.出行.", "j": "安门.作灶.开光.栽种." }, "d0924": { "y": "搬家.装修.出行.旅游.", "j": "." }, "d0925": { "y": "安床.祭祀.沐浴.纳财.", "j": "开业.开工.开张.破土." }, "d0926": { "y": "装修.动土.订婚.上梁.", "j": "结婚.领证.作灶." }, "d0927": { "y": "出行.旅游.理发.沐浴.", "j": "入宅." }, "d0928": { "y": ".", "j": "入宅.动土." }, "d0929": { "y": "结婚.领证.出行.上梁.", "j": "开业.开工.安葬.开张." }, "d0930": { "y": "开业.开工.安葬.上梁.", "j": "结婚.领证.祈福." }, "d1001": { "y": ".", "j": "." }, "d1002": { "y": "装修.动土.订婚.安葬.", "j": "开业.结婚.领证.开工." }, "d1003": { "y": "搬家.装修.结婚.入宅.", "j": "开业.开工.安葬.开张." }, "d1004": { "y": "破屋.坏垣.", "j": "." }, "d1005": { "y": "装修.动土.交易.入学.", "j": "安门.作灶.理发.栽种." }, "d1006": { "y": "解除.", "j": "." }, "d1007": { "y": "理发.沐浴.", "j": "结婚.入宅.领证.安门." }, "d1008": { "y": "动土.安床.破土.祈福.", "j": "搬家.结婚.入宅.领证." }, "d1009": { "y": "装修.动土.安门.作灶.", "j": "结婚.领证.安床.安葬." }, "d1010": { "y": "安葬.启钻.成服.除服.", "j": "." }, "d1011": { "y": "搬家.开业.结婚.入宅.", "j": "安葬.作灶.伐木.塑绘." }, "d1012": { "y": "装修.开业.开工.安床.", "j": "搬家.结婚.入宅.领证." }, "d1013": { "y": "祭祀.", "j": "." }, "d1014": { "y": "入宅.动土.安床.安葬.", "j": "开业.结婚.领证.开工." }, "d1015": { "y": "祭祀.", "j": "." }, "d1016": { "y": "祭祀.沐浴.破屋.", "j": "." }, "d1017": { "y": "动土.安床.求嗣.祈福.", "j": "安门.作灶.栽种." }, "d1018": { "y": "解除.", "j": "." }, "d1019": { "y": "安葬.修坟.立碑.启钻.", "j": "开业.结婚.领证.开工." }, "d1020": { "y": "作灶.祭祀.除服.", "j": "开业.开工.安床.开张." }, "d1021": { "y": "作灶.沐浴.开光.冠笄.", "j": "结婚.领证.出行.安葬." }, "d1022": { "y": "安床.出行.订婚.上梁.", "j": "搬家.结婚.入宅.领证." }, "d1023": { "y": "祭祀.", "j": "." }, "d1024": { "y": "搬家.装修.入宅.动土.", "j": "出行.上梁.作灶.旅游." }, "d1025": { "y": "结婚.领证.安床.出行.", "j": "." }, "d1026": { "y": "入殓.移柩.平治道涂.", "j": "搬家.结婚.入宅.领证." }, "d1027": { "y": "搬家.装修.结婚.入宅.", "j": "开业.开工.出行.安葬." }, "d1028": { "y": "装修.结婚.领证.动土.", "j": "开业.入宅.开工.开张." }, "d1029": { "y": "解除.破屋.", "j": "." }, "d1030": { "y": "结婚.领证.出行.订婚.", "j": "入宅." }, "d1031": { "y": "安葬.立碑.启钻.成服.", "j": "破土." }, "d1101": { "y": "结婚.领证.作灶.祈福.", "j": "安床.安葬.盖屋." }, "d1102": { "y": "开业.结婚.领证.开工.", "j": "结婚.领证.安葬.嫁娶." }, "d1103": { "y": "安床.安葬.交易.祈福.", "j": "结婚.入宅.领证.作灶." }, "d1104": { "y": "祭祀.解除.扫舍.", "j": "." }, "d1105": { "y": "搬家.开业.入宅.开工.", "j": "结婚.领证.出行.旅游." }, "d1106": { "y": "开业.结婚.领证.开工.", "j": "装修.入宅.动土.安门." }, "d1107": { "y": "祭祀.解除.平治道涂.", "j": "." }, "d1108": { "y": "结婚.领证.动土.求嗣.", "j": "开业.入宅.开工.安门." }, "d1109": { "y": "搬家.装修.结婚.入宅.", "j": "开业.入宅.开工.安门." }, "d1110": { "y": "破屋.", "j": "." }, "d1111": { "y": "搬家.装修.开业.结婚.", "j": "安床.祈福.纳畜." }, "d1112": { "y": "安葬.修坟.破土.祭祀.", "j": "." }, "d1113": { "y": "祭祀.", "j": "." }, "d1114": { "y": "搬家.开业.入宅.开工.", "j": "结婚.领证.安葬.作灶." }, "d1115": { "y": "安床.安葬.交易.裁衣.", "j": "结婚.入宅.领证.动土." }, "d1116": { "y": "祭祀.解除.针灸.教牛马.", "j": "结婚.领证.动土.安葬." }, "d1117": { "y": "纳财.裁衣.成服.除服.", "j": "搬家.结婚.入宅.领证." }, "d1118": { "y": "结婚.入宅.领证.出行.", "j": "." }, "d1119": { "y": "入宅.安床.订婚.求嗣.", "j": "安床.安葬.作灶." }, "d1120": { "y": "作灶.", "j": "安门.安葬.祈福." }, "d1121": { "y": "装修.动土.安门.安床.", "j": "安葬.作灶.盖屋." }, "d1122": { "y": "搬家.结婚.入宅.领证.", "j": "开业.开工.动土.开张." }, "d1123": { "y": "破屋.", "j": "." }, "d1124": { "y": "装修.结婚.入宅.领证.", "j": "安床." }, "d1125": { "y": "安葬.破土.立碑.成服.", "j": "结婚.入宅.领证.上梁." }, "d1126": { "y": "开业.开工.安床.订婚.", "j": "安葬.作灶.伐木." }, "d1127": { "y": "开业.开工.出行.订婚.", "j": "入宅.安葬.作灶." }, "d1128": { "y": "安葬.求嗣.祈福.祭祀.", "j": "搬家.结婚.入宅.领证." }, "d1129": { "y": "安床.安葬.上梁.交易.", "j": "结婚.入宅.领证.动土." }, "d1130": { "y": "搬家.开业.结婚.入宅.", "j": "掘井.词讼." }, "d1201": { "y": "结婚.领证.安床.求嗣.", "j": "搬家.开业.入宅.开工." }, "d1202": { "y": "作灶.解除.", "j": "安门.出行.安葬.旅游." }, "d1203": { "y": "解除.", "j": "." }, "d1204": { "y": "搬家.结婚.入宅.领证.", "j": "开业.开工.开张.作灶." }, "d1205": { "y": "祭祀.解除.破屋.坏垣.", "j": "." }, "d1206": { "y": "搬家.装修.入宅.动土.", "j": "结婚.领证.安床.作灶." }, "d1207": { "y": "安葬.破土.成服.除服.", "j": "." }, "d1208": { "y": "搬家.动土.安门.安床.", "j": "结婚.领证.安葬.作灶." }, "d1209": { "y": "结婚.领证.动土.安床.", "j": "入宅.出行.安葬.作灶." }, "d1210": { "y": "安床.安葬.作灶.祭祀.", "j": "入宅.出火.词讼." }, "d1211": { "y": "交易.纳财.裁衣.伐木.", "j": "." }, "d1212": { "y": "搬家.开业.结婚.入宅.", "j": "." }, "d1213": { "y": "装修.结婚.领证.安门.", "j": "搬家.入宅.安葬.作灶." }, "d1214": { "y": "祭祀.平治道涂.", "j": "." }, "d1215": { "y": "搬家.开业.入宅.开工.", "j": "动土.作灶.开光.盖屋." }, "d1216": { "y": "结婚.领证.动土.安葬.", "j": "开业.入宅.开工.安床." }, "d1217": { "y": "安葬.理发.修坟.祭祀.", "j": "结婚.入宅.领证.安床." }, "d1218": { "y": "破屋.", "j": "." }, "d1219": { "y": "动土.安床.出行.订婚.", "j": "作梁." }, "d1220": { "y": "开业.入宅.开工.动土.", "j": "结婚.领证.安葬.嫁娶." }, "d1221": { "y": "祭祀.沐浴.捕捉.", "j": "搬家.结婚.入宅.领证." }, "d1222": { "y": "搬家.装修.结婚.入宅.", "j": "安葬." }, "d1223": { "y": "装修.动土.安床.订婚.", "j": "开业.结婚.入宅.领证." }, "d1224": { "y": "开业.开工.安床.出行.", "j": "动土.作灶.掘井." }, "d1225": { "y": "祭祀.塞穴.", "j": "结婚.领证.安葬.作灶." }, "d1226": { "y": "开业.开工.上梁.交易.", "j": "结婚.入宅.领证.出行." }, "d1227": { "y": "成服.除服.冠笄.入殓.", "j": "作灶.盖屋.探病." }, "d1228": { "y": "装修.结婚.入宅.领证.", "j": "伐木." }, "d1229": { "y": "装修.动土.订婚.安葬.", "j": "开业.开工.安床.开张." }, "d1230": { "y": "破屋.坏垣.求医.", "j": "." }, "d1231": { "y": "搬家.结婚.入宅.领证.", "j": "开光." } } ukui-panel-4.0.0.4/plugin-calendar/html/hlnew/hl2016.json0000644000175000017500000031365014560306203021313 0ustar fengfeng{ "d0101": { "y": "祭祀.沐浴.破屋.坏垣.余事勿取.", "j": "嫁娶.移徙.入宅.探病.出行.造屋.", "c": "生肖冲鼠", "s": "煞北", "ch": "破", "zc": "正冲正冲丙子", "ts": "仓库碓外西北" }, "d0201": { "y": "祭祀.解除.教牛马.会亲友.余事勿取.", "j": "破土.动土.安葬.", "c": "生肖冲羊", "s": "煞東", "ch": "建", "zc": "正冲正冲丁未", "ts": "房床厕外东北" }, "d0102": { "y": "冠笄.纳财.掘井.开池.出火.安床.交易.立券.畋猎.结网.理发.放水.", "j": "安门.动土.破土.行丧.安葬.成服.", "c": "生肖冲牛", "s": "煞西", "ch": "危", "zc": "正冲正冲丁丑", "ts": "房床厕外西北" }, "d0103": { "y": "纳采.订盟.移徙.入宅.出行.安机械.会亲友.祭祀.祈福.斋醮.开光.安香.出火.解除.求医.针灸.治病.造屋.起基.修造.安门.造船.纳畜.牧养.移柩.入殓.启攒.谢土.修坟.立碑.", "j": "嫁娶.动土.安床.造桥.掘井.", "c": "生肖冲虎", "s": "煞南", "ch": "成", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d0104": { "y": "祭祀.沐浴.作灶.纳财.捕捉.畋猎.安床.扫舍.", "j": "开市.斋醮.破土.安葬.", "c": "生肖冲兔", "s": "煞東", "ch": "收", "zc": "正冲正冲己卯", "ts": "占门炉外西北" }, "d0105": { "y": "祈福.斋醮.纳采.订盟.解除.架马.开柱眼.修造.动土.起基.上梁.归岫.造屋.合脊.掘井.除服.成服.破土.栽种.", "j": "移徙.开市.入宅.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "开", "zc": "正冲正冲庚辰", "ts": "厨灶栖外西北" }, "d0106": { "y": "开市.交易.立券.纳财.纳畜.造畜椆栖.入宅.移徙.安床.开光.祈福.求嗣.动土.", "j": "嫁娶.栽种.安葬.理发.造庙.作灶.入殓.行丧.造桥.", "c": "生肖冲蛇", "s": "煞西", "ch": "开", "zc": "正冲正冲辛巳", "ts": "仓库床外西北" }, "d0107": { "y": "安床.裁衣.交易.立券.入殓.移柩.安葬.除服.成服.", "j": "置产.嫁娶.出行.开光.栽种.动土.破土.入宅.治病.", "c": "生肖冲马", "s": "煞南", "ch": "闭", "zc": "正冲正冲壬午", "ts": "房床碓外正北" }, "d0108": { "y": "祭祀.解除.造畜椆栖.教牛马.针灸.余事勿取.", "j": "嫁娶.动土.开池.安葬.", "c": "生肖冲羊", "s": "煞東", "ch": "建", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d0109": { "y": "沐浴.塑绘.开光.纳采.订盟.开市.交易.立券.纳财.起基.动土.定磉.放水.安葬.破土.启攒.修坟.立碑.移柩.", "j": "入宅.安门.祭祀.谢土.", "c": "生肖冲猴", "s": "煞北", "ch": "除", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d0110": { "y": "嫁娶.出行.理发.安床.启攒.安葬.修坟.开市.交易.立券.纳财.开池.牧养.", "j": "掘井.祈福.谢土.动土.入宅.上梁.修造.作灶.", "c": "生肖冲鸡", "s": "煞西", "ch": "满", "zc": "正冲正冲乙酉", "ts": "厨灶门外正北" }, "d0111": { "y": "解除.平治道涂.余事勿取.", "j": "移徙.入宅.掘井.造庙.栽种.针灸.治病.开池.", "c": "生肖冲狗", "s": "煞南", "ch": "平", "zc": "正冲正冲丙戌", "ts": "仓库栖外正北" }, "d0112": { "y": "嫁娶.祭祀.开光.伐木.出火.拆卸.入宅.移徙.修造.动土.上梁.安床.纳畜.", "j": "开市.行丧.栽种.出行.出货财.安葬.置产.词讼.治病.", "c": "生肖冲猪", "s": "煞東", "ch": "定", "zc": "正冲正冲丁亥", "ts": "占房床房内北" }, "d0113": { "y": "嫁娶.纳采.订盟.入宅.移徙.安床.祭祀.祈福.开光.出行.解除.出火.拆卸.动土.纳畜.谢土.安葬.破土.", "j": "伐木.开市.交易.上梁.作灶.安门.造屋.", "c": "生肖冲鼠", "s": "煞北", "ch": "执", "zc": "正冲正冲戊子", "ts": "占门碓房内北" }, "d0114": { "y": "祭祀.破屋.坏垣.解除.余事勿取.", "j": "开市.动土.破土.", "c": "生肖冲牛", "s": "煞西", "ch": "破", "zc": "正冲正冲己丑", "ts": "碓磨厕房内北" }, "d0115": { "y": "嫁娶.纳采.订盟.开光.安香.出火.纳财.开市.交易.立券.裁衣.造屋.起基.修造.动土.安门.移徙.入宅.栽种.牧养.畋猎.掘井.开池.安葬.破土.入殓.除服.成服.立碑.", "j": "祈福.造庙.祭祀.安床.谢土.", "c": "生肖冲虎", "s": "煞南", "ch": "危", "zc": "正冲正冲庚寅", "ts": "厨灶炉房内北" }, "d0116": { "y": "祭祀.斋醮.入殓.破土.启攒.安葬.修坟.立碑.除服.成服.", "j": "嫁娶.入宅.作灶.纳采.订盟.", "c": "生肖冲兔", "s": "煞東", "ch": "成", "zc": "正冲正冲辛卯", "ts": "仓库门房内北" }, "d0117": { "y": "祭祀.斋醮.纳财.捕捉.畋猎.", "j": "嫁娶.开市.入宅.安床.破土.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "收", "zc": "正冲正冲壬辰", "ts": "房床栖房内南" }, "d0118": { "y": "纳采.订盟.祭祀.祈福.求嗣.斋醮.沐浴.进人口.会亲友.入学.治病.安碓硙.掘井.开池.纳畜.牧养.造畜椆栖.", "j": "嫁娶.合帐.入宅.行丧.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "开", "zc": "正冲正冲癸巳", "ts": "占门床房内南" }, "d0119": { "y": "祭祀.祈福.求嗣.沐浴.问名.交易.纳财.入殓.移柩.安葬.修坟.立碑.谢土.造畜椆栖.教牛马.", "j": "入宅.置产.嫁娶.动土.栽种.开市.开光.动土.破土.", "c": "生肖冲马", "s": "煞南", "ch": "闭", "zc": "正冲正冲甲午", "ts": "占碓磨房内南" }, "d0120": { "y": "祭祀.教牛马.造畜椆栖.祭祀.会亲友.解除.余事勿取.", "j": "嫁娶.入宅.出行.动土.破土.安葬.行丧.", "c": "生肖冲羊", "s": "煞東", "ch": "建", "zc": "正冲正冲乙未", "ts": "厨灶厕房内南" }, "d0121": { "y": "嫁娶.开光.解除.出火.拆卸.修造.进人口.入宅.移徙.安床.栽种.入殓.修坟.动土.除服.成服.", "j": "作灶.安葬.祭祀.开市.纳采.订盟.纳畜.谢土.出行.探病.", "c": "生肖冲猴", "s": "煞北", "ch": "除", "zc": "正冲正冲丙申", "ts": "仓库炉房内南" }, "d0122": { "y": "出行.起基.安床.纳财.交易.立券.嫁娶.栽种.入殓.移柩.安葬.", "j": "挂匾.入宅.上梁.祈福.词讼.作梁.作灶.开池.安门.动土.破土.掘井.", "c": "生肖冲鸡", "s": "煞西", "ch": "满", "zc": "正冲正冲丁酉", "ts": "房床门房内南" }, "d0123": { "y": "平治道涂.余事勿取.", "j": "开光.嫁娶.开仓.出货财.造船.安葬.探病.", "c": "生肖冲狗", "s": "煞南", "ch": "平", "zc": "正冲正冲戊戌", "ts": "门鸡栖房内东" }, "d0124": { "y": "嫁娶.订盟.纳采.会亲友.祭祀.安机械.移徙.入宅.造屋.安床.起基.定磉.安香.出火.挂匾.拆卸.置产.", "j": "开市.出行.安葬.行丧.", "c": "生肖冲猪", "s": "煞東", "ch": "定", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d0125": { "y": "沐浴.捕捉.畋猎.理发.整手足甲.入殓.除服.成服.破土.安葬.谢土.立碑.修坟.启攒.", "j": "纳采.订盟.嫁娶.上梁.开市.斋醮.造屋.安门.", "c": "生肖冲鼠", "s": "煞北", "ch": "执", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d0126": { "y": "祭祀.破屋.坏垣.余事勿取.", "j": "斋醮.嫁娶.开市.", "c": "生肖冲牛", "s": "煞西", "ch": "破", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d0127": { "y": "沐浴.开仓.出货财.开市.交易.立券.纳财.栽种.纳畜.牧养.畋猎.入殓.破土.安葬.", "j": "祈福.嫁娶.安床.入宅.造船.", "c": "生肖冲虎", "s": "煞南", "ch": "危", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" }, "d0128": { "y": "祭祀.沐浴.补垣.塞穴.断蚁.解除.余事勿取.", "j": "造庙.入宅.修造.安葬.行丧.嫁娶.", "c": "生肖冲兔", "s": "煞東", "ch": "成", "zc": "正冲正冲癸卯", "ts": "占大门外东北" }, "d0129": { "y": "嫁娶.纳采.订盟.问名.祭祀.冠笄.裁衣.会亲友.进人口.纳财.捕捉.作灶.", "j": "开市.安床.安葬.修坟.", "c": "生肖冲龙", "s": "煞北", "ch": "收", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d0130": { "y": "订盟.纳采.会亲友.祭祀.斋醮.沐浴.塑绘.出火.开光.竖柱.上梁.开市.交易.立券.作梁.开柱眼.伐木.架马.安门.安床.拆卸.牧养.造畜椆栖.掘井.", "j": "造庙.嫁娶.出行.动土.安葬.行丧.", "c": "生肖冲蛇", "s": "煞西", "ch": "开", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d0131": { "y": "交易.立券.纳财.安床.裁衣.造畜椆栖.安葬.谢土.启攒.除服.成服.修坟.立碑.移柩.入殓.", "j": "开光.嫁娶.开市.动土.破土.", "c": "生肖冲马", "s": "煞南", "ch": "闭", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d0214": { "y": "开光.解除.伐木.竖柱.上梁.交易.立券.纳畜.入殓.移柩.安葬.", "j": "入宅.出行.移徙.祭祀.嫁娶.动土.破土.作灶.", "c": "生肖冲猴", "s": "煞北", "ch": "建", "zc": "正冲正冲庚申", "ts": "厨灶炉外正南" }, "d0204": { "y": "嫁娶.冠笄.纳采.出行.会亲友.上梁.安机械.安床.牧养.畋猎.祭祀.祈福.开光.修造.安门.造屋.起基.", "j": "入宅.作灶.治病.安葬.移徙.", "c": "生肖冲狗", "s": "煞南", "ch": "满", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d0219": { "y": "纳采.嫁娶.祭祀.祈福.出行.修造.动土.移徙.入宅.安葬.破土.", "j": "开市.入宅.斋醮.", "c": "生肖冲牛", "s": "煞西", "ch": "执", "zc": "正冲正冲乙丑", "ts": "厨灶厕外西南" }, "d0229": { "y": "祭祀.平治道涂.余事勿取.", "j": "嫁娶.祈福.掘井.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "平", "zc": "正冲正冲乙亥", "ts": "厨灶床外正西" }, "d0224": { "y": "纳采.嫁娶.祭祀.祈福.出行.开市.会亲友.动土.破土.启攒.", "j": "移徙.入宅.出火.安门.安葬.", "c": "生肖冲马", "s": "煞南", "ch": "开", "zc": "正冲正冲庚午", "ts": "厨灶碓外西南" }, "d0225": { "y": "祭祀.祈福.求嗣.斋醮.入殓.除服.成服.移柩.安葬.启攒.", "j": "嫁娶.动土.开光.造屋.破土.", "c": "生肖冲羊", "s": "煞東", "ch": "闭", "zc": "正冲正冲辛未", "ts": "仓库厕外西南" }, "d0215": { "y": "祭祀.祈福.求嗣.开光.嫁娶.出行.解除.伐木.拆卸.进人口.安床.动土.起基.上梁.栽种.纳畜.破土.谢土.启攒.安葬.", "j": "移徙.入宅.出火.作灶.掘井.", "c": "生肖冲鸡", "s": "煞西", "ch": "除", "zc": "正冲正冲辛酉", "ts": "仓库门外正南" }, "d0209": { "y": "祭祀.斋醮.沐浴.开生坟.除服.成服.移柩.入殓.破土.安葬.合寿木.", "j": "开市.嫁娶.安床.会亲友.入宅.作灶.上梁.", "c": "生肖冲兔", "s": "煞東", "ch": "危", "zc": "正冲正冲乙卯", "ts": "厨灶门外东南" }, "d0205": { "y": "修饰垣墙.平治道涂.祭祀.余事勿取.", "j": "诸事不宜.", "c": "生肖冲猪", "s": "煞東", "ch": "平", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d0226": { "y": "纳采.会亲友.竖柱.上梁.立券.入殓.移柩.安葬.启攒.", "j": "祭祀.移徙.入宅.动土.破土.", "c": "生肖冲猴", "s": "煞北", "ch": "建", "zc": "正冲正冲壬申", "ts": "房床厕外正南" }, "d0221": { "y": "纳采.订盟.祭祀.祈福.安香.出火.修造.出行.开市.移徙.入宅.动土.安葬.破土.", "j": "安床.作灶.造船.会亲友.", "c": "生肖冲兔", "s": "煞東", "ch": "危", "zc": "正冲正冲丁卯", "ts": "房床门外西南" }, "d0326": { "y": "嫁娶.造车器.纳采.订盟.祭祀.祈福.安机械.移徙.入宅.开市.立券.破土.安葬.", "j": "纳畜.理发.合寿木.", "c": "生肖冲牛", "s": "煞西", "ch": "定", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d0202": { "y": "纳采.订盟.移徙.纳财.开市.交易.立券.入宅.会亲友.解除.求医.治病.入学.安床.安门.安香.出火.拆卸.扫舍.入宅.挂匾.开生坟.合寿木.破土.修坟.启攒.入殓.", "j": "探病.祭祀.出行.上梁.造屋.谢土.安葬.", "c": "生肖冲猴", "s": "煞北", "ch": "除", "zc": "正冲正冲戊申", "ts": "占门炉外东北" }, "d0203": { "y": "嫁娶.订盟.纳采.祭祀.祈福.求嗣.会亲友.解除.出行.入学.纳财.开市.交易.立券.习艺.经络.安床.开仓.出货财.纳畜.安葬.启攒.修坟.入殓.", "j": "入宅.开光.开市.动土.", "c": "生肖冲鸡", "s": "煞西", "ch": "满", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d0206": { "y": "造车器.纳采.订盟.祭祀.祈福.求嗣.移徙.出行.开市.出火.入宅.立券.交易.入宅.安门.安床.安葬.谢土.", "j": "开光.造屋.动土.作灶.栽种.", "c": "生肖冲鼠", "s": "煞北", "ch": "定", "zc": "正冲正冲壬子", "ts": "房床碓外正东" }, "d0207": { "y": "动土.入殓.嫁娶.移柩.安葬.破土.", "j": "开市.作灶.安床.入宅.上梁.裁衣.", "c": "生肖冲牛", "s": "煞西", "ch": "执", "zc": "正冲正冲癸丑", "ts": "占门厕外正东" }, "d0208": { "y": "求医.治病.破屋.坏垣.余事勿取.", "j": "开市.嫁娶.", "c": "生肖冲虎", "s": "煞南", "ch": "破", "zc": "正冲正冲甲寅", "ts": "碓磨炉外东南" }, "d0210": { "y": "祭祀.塞穴.结网.破土.谢土.安葬.移柩.除服.成服.余事勿取.", "j": "嫁娶.入宅.", "c": "生肖冲龙", "s": "煞北", "ch": "成", "zc": "正冲正冲丙辰", "ts": "仓库栖外东南" }, "d0211": { "y": "祭祀.沐浴.理发.作灶.结网.栽种.", "j": "嫁娶.词讼.行丧.安葬.牧养.伐木.作梁.开市.纳畜.造畜椆栖.", "c": "生肖冲蛇", "s": "煞西", "ch": "收", "zc": "正冲正冲丁巳", "ts": "占房床外东南" }, "d0212": { "y": "嫁娶.祭祀.开光.祈福.求嗣.出行.开市.交易.立券.动土.纳财.掘井.会亲友.", "j": "入宅.安葬.伐木.作梁.纳畜.造畜椆栖.作灶.", "c": "生肖冲马", "s": "煞南", "ch": "开", "zc": "正冲正冲戊午", "ts": "占门碓外东南" }, "d0213": { "y": "祭祀.祈福.求嗣.纳畜.入殓.启攒.谢土.除服.成服.", "j": "栽种.开光.出行.针灸.嫁娶.入宅.动土.破土.", "c": "生肖冲羊", "s": "煞東", "ch": "闭", "zc": "正冲正冲己未", "ts": "碓磨厕外东南" }, "d0216": { "y": "会亲友.冠笄.安床.会亲友.安机械.祭祀.祈福.求嗣.经络.", "j": "嫁娶.开市.动土.作灶.安葬.", "c": "生肖冲狗", "s": "煞南", "ch": "满", "zc": "正冲正冲壬戌", "ts": "房床栖外正南" }, "d0217": { "y": "作灶.解除.平治道涂.余事勿取.", "j": "祭祀.祈福.安葬.安门.", "c": "生肖冲猪", "s": "煞東", "ch": "平", "zc": "正冲正冲癸亥", "ts": "占门床外正南" }, "d0218": { "y": "嫁娶.祭祀.冠笄.修饰垣墙.置产.", "j": "经络.探病.造屋.作灶.动土.", "c": "生肖冲鼠", "s": "煞北", "ch": "定", "zc": "正冲正冲甲子", "ts": "占碓磨外正南" }, "d0220": { "y": "祭祀.沐浴.解除.理发.扫舍.破屋.坏垣.余事勿取.", "j": "嫁娶.安葬.", "c": "生肖冲虎", "s": "煞南", "ch": "破", "zc": "正冲正冲丙寅", "ts": "仓库炉外西南" }, "d0222": { "y": "塞穴.结网.取渔.畋猎.", "j": "嫁娶.安门.移徙.入宅.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "成", "zc": "正冲正冲戊辰", "ts": "门鸡栖外西南" }, "d0223": { "y": "纳采.祭祀.祈福.出行.会亲友.修造.动土.移徙.入宅.", "j": "嫁娶.开市.安葬.破土.", "c": "生肖冲蛇", "s": "煞西", "ch": "收", "zc": "正冲正冲己巳", "ts": "碓磨床外西南" }, "d0227": { "y": "祭祀.祈福.斋醮.出行.开市.立券.动土.移徙.入宅.破土.安葬.", "j": "开光.嫁娶.作灶.掘井.纳畜.", "c": "生肖冲鸡", "s": "煞西", "ch": "除", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d0228": { "y": "会亲友.求嗣.理发.冠笄.结网.捕捉.开光.理发.", "j": "开市.动土.安葬.破土.", "c": "生肖冲狗", "s": "煞南", "ch": "满", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d0324": { "y": "纳财.开市.交易.立券.开光.针灸.会亲友.理发.安床.造仓.结网.", "j": "移徙.入宅.栽种.", "c": "生肖冲猪", "s": "煞東", "ch": "满", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d0328": { "y": "破屋.坏垣.余事勿取.", "j": "嫁娶.移徙.开市.入宅.", "c": "生肖冲兔", "s": "煞東", "ch": "破", "zc": "正冲正冲癸卯", "ts": "占大门外东北" }, "d0327": { "y": "祈福.斋醮.出行.移徙.入宅.修造.动土.破土.安葬.", "j": "纳采.开光.安床.嫁娶.开市.", "c": "生肖冲虎", "s": "煞南", "ch": "执", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" }, "d0320": { "y": "嫁娶.订盟.纳采.祭祀.祈福.出行.修造.动土.移徙.入宅.破土.出火.安门.安床.上梁.立碑.移柩.", "j": "开市.交易.合帐.安葬.", "c": "生肖冲羊", "s": "煞東", "ch": "开", "zc": "正冲正冲乙未", "ts": "厨灶厕房内南" }, "d0428": { "y": "祭祀.解除.教牛马.出行.余事勿取.", "j": "动土.破土.行丧.开光.作梁.安葬.探病.", "c": "生肖冲狗", "s": "煞南", "ch": "建", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d0301": { "y": "祈福.求嗣.斋醮.纳采.嫁娶.伐木.修造.动土.移徙.入宅.造庙.安机械.开市.入殓.除服.成服.移柩.安葬.破土.谢土.", "j": "置产.造屋.合脊.开光.探病.安门.作灶.", "c": "生肖冲鼠", "s": "煞北", "ch": "定", "zc": "正冲正冲丙子", "ts": "仓库碓外西北" }, "d0302": { "y": "入学.习艺.出行.纳采.订盟.嫁娶.会亲友.进人口.牧养.捕捉.入殓.移柩.安葬.启攒.", "j": "开光.开市.入宅.动土.造屋.", "c": "生肖冲牛", "s": "煞西", "ch": "执", "zc": "正冲正冲丁丑", "ts": "房床厕外西北" }, "d0303": { "y": "祭祀.沐浴.求医.治病.扫舍.破屋.坏垣.解除.余事勿取.", "j": "入宅.开市.安葬.", "c": "生肖冲虎", "s": "煞南", "ch": "破", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d0304": { "y": "祭祀.冠笄.嫁娶.拆卸.修造.动土.起基.上梁.造屋.入宅.开市.开池.塞穴.入殓.除服.成服.移柩.安葬.破土.", "j": "安床.栽种.治病.作灶.", "c": "生肖冲兔", "s": "煞東", "ch": "危", "zc": "正冲正冲己卯", "ts": "占门炉外西北" }, "d0305": { "y": "嫁娶.祭祀.出行.冠笄.立券.交易.进人口.开市.移徙.修造.动土.安床.入殓.移柩.破土.", "j": "开光.作灶.斋醮.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "危", "zc": "正冲正冲庚辰", "ts": "厨灶栖外西北" }, "d0306": { "y": "开市.立券.交易.挂匾.祭祀.祈福.开光.入宅.移徙.安床.拆卸.动土.上梁.进人口.", "j": "嫁娶.行丧.架马.作梁.理发.牧养.安葬.纳畜.伐木.", "c": "生肖冲蛇", "s": "煞西", "ch": "成", "zc": "正冲正冲辛巳", "ts": "仓库床外西北" }, "d0307": { "y": "理发.冠笄.嫁娶.进人口.", "j": "置产.伐木.纳畜.造畜椆栖.安葬.破土.作梁.作灶.开生坟.", "c": "生肖冲马", "s": "煞南", "ch": "收", "zc": "正冲正冲壬午", "ts": "房床碓外正北" }, "d0308": { "y": "嫁娶.祭祀.开光.祈福.求嗣.出火.入宅.移徙.安床.拆卸.动土.破土.谢土.", "j": "合帐.开市.安葬.入殓.", "c": "生肖冲羊", "s": "煞東", "ch": "开", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d0309": { "y": "安床.伐木.拆卸.修造.动土.上梁.立券.交易.栽种.纳畜.牧养.入殓.安葬.", "j": "嫁娶.祭祀.开光.出行.出火.移徙.入宅.安门.", "c": "生肖冲猴", "s": "煞北", "ch": "闭", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d0310": { "y": "祭祀.祈福.求嗣.斋醮.嫁娶.冠笄.出行.开市.交易.会亲友.教牛马.除服.成服.启攒.安葬.移柩.", "j": "祈福.动土.移徙.入宅.", "c": "生肖冲鸡", "s": "煞西", "ch": "建", "zc": "正冲正冲乙酉", "ts": "厨灶门外正北" }, "d0311": { "y": "塞穴.整手足甲.解除.捕捉.畋猎.结网.余事勿取.诸事不宜.", "j": "嫁娶.作灶.掘井.安葬.", "c": "生肖冲狗", "s": "煞南", "ch": "除", "zc": "正冲正冲丙戌", "ts": "仓库栖外正北" }, "d0312": { "y": "纳财.开市.立券.交易.开光.安床.上梁.造屋.修造.起基.", "j": "动土.破土.安葬.行丧.赴任.出行.嫁娶.入宅.移徙.谢土.词讼.", "c": "生肖冲猪", "s": "煞東", "ch": "满", "zc": "正冲正冲丁亥", "ts": "占房床房内北" }, "d0313": { "y": "祭祀.祈福.嫁娶.冠笄.修饰垣墙.置产.平治道涂.", "j": "开仓.出货财.造屋.作灶.开市.交易.立券.栽种.", "c": "生肖冲鼠", "s": "煞北", "ch": "平", "zc": "正冲正冲戊子", "ts": "占门碓房内北" }, "d0314": { "y": "嫁娶.祭祀.开光.祈福.求嗣.出行.出火.进人口.入宅.移徙.安床.拆卸.修造.安门.挂匾.纳财.扫舍.", "j": "动土.伐木.安葬.行丧.", "c": "生肖冲牛", "s": "煞西", "ch": "定", "zc": "正冲正冲己丑", "ts": "碓磨厕房内北" }, "d0315": { "y": "嫁娶.开光.祭祀.祈福.求嗣.出行.出火.入宅.移徙.解除.栽种.伐木.破土.谢土.安葬.", "j": "开市.交易.作灶.纳财.上梁.安床.造屋.造船.", "c": "生肖冲虎", "s": "煞南", "ch": "执", "zc": "正冲正冲庚寅", "ts": "厨灶炉房内北" }, "d0316": { "y": "破屋.坏垣.求医.治病.余事勿取.", "j": "开光.嫁娶.", "c": "生肖冲兔", "s": "煞東", "ch": "破", "zc": "正冲正冲辛卯", "ts": "仓库门房内北" }, "d0317": { "y": "纳采.交易.立券.安床.安机械.安葬.移柩.动土.破土.立碑.", "j": "嫁娶.开光.作灶.", "c": "生肖冲龙", "s": "煞北", "ch": "危", "zc": "正冲正冲壬辰", "ts": "房床栖房内南" }, "d0318": { "y": "祭祀.祈福.求嗣.斋醮.沐浴.开光.理发.经络.解除.治病.治病.立碑.栽种.牧养.掘井.开池.", "j": "嫁娶.定磉.合寿木.安葬.行丧.", "c": "生肖冲蛇", "s": "煞西", "ch": "成", "zc": "正冲正冲癸巳", "ts": "占门床房内南" }, "d0319": { "y": "纳财.交易.立券.栽种.捕捉.结网.取渔.进人口.教牛马.理发.", "j": "入宅.造屋.竖柱.安葬.", "c": "生肖冲马", "s": "煞南", "ch": "收", "zc": "正冲正冲甲午", "ts": "占碓磨房内南" }, "d0321": { "y": "冠笄.立券.交易.修造.动土.安机械.入殓.安葬.破土.", "j": "嫁娶.祈福.出火.入宅.", "c": "生肖冲猴", "s": "煞北", "ch": "闭", "zc": "正冲正冲丙申", "ts": "仓库炉房内南" }, "d0322": { "y": "祭祀.会亲友.出行.立券.交易.冠笄.纳财.", "j": "嫁娶.动土.掘井.起基.定磉.破土.", "c": "生肖冲鸡", "s": "煞西", "ch": "建", "zc": "正冲正冲丁酉", "ts": "房床门房内南" }, "d0323": { "y": "祭祀.沐浴.解除.扫舍.塞穴.牧养.", "j": "嫁娶.安葬.行丧.安门.", "c": "生肖冲狗", "s": "煞南", "ch": "除", "zc": "正冲正冲戊戌", "ts": "门鸡栖房内东" }, "d0325": { "y": "嫁娶.冠笄.会亲友.安机械.纳财.交易.立券.置产.", "j": "开市.造屋.治病.作灶.", "c": "生肖冲鼠", "s": "煞北", "ch": "平", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d0329": { "y": "嫁娶.冠笄.祭祀.出行.会亲友.修造.动土.入殓.破土.", "j": "塑绘.开光.造桥.除服.成服.", "c": "生肖冲龙", "s": "煞北", "ch": "危", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d0330": { "y": "开光.求嗣.出行.纳采.冠笄.出火.拆卸.起基.修造.动土.上梁.移徙.造船.开市.交易.立券.纳财.", "j": "祈福.嫁娶.安葬.破土.", "c": "生肖冲蛇", "s": "煞西", "ch": "成", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d0331": { "y": "理发.冠笄.嫁娶.进人口.栽种.捕捉.针灸.", "j": "纳财.开市.安葬.破土.", "c": "生肖冲马", "s": "煞南", "ch": "收", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d0427": { "y": "祭祀.祈福.求嗣.斋醮.冠笄.作灶.纳财.交易.", "j": "开光.嫁娶.掘井.安葬.安门.探病.", "c": "生肖冲鸡", "s": "煞西", "ch": "闭", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d0423": { "y": "沐浴.捕捉.畋猎.结网.取渔.", "j": "祭祀.嫁娶.入宅.作灶.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "危", "zc": "正冲正冲己巳", "ts": "碓磨床外西南" }, "d0413": { "y": "祭祀.修门.取渔.纳财.纳畜.余事勿取.", "j": "嫁娶.入宅.", "c": "生肖冲羊", "s": "煞東", "ch": "收", "zc": "正冲正冲己未", "ts": "碓磨厕外东南" }, "d0403": { "y": "祭祀.会亲友.立券.交易.裁衣.合帐.嫁娶.冠笄.进人口.", "j": "栽种.动土.安葬.掘井.修坟.探病.", "c": "生肖冲鸡", "s": "煞西", "ch": "建", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d0418": { "y": "祭祀.塑绘.开光.纳采.嫁娶.开市.出行.会亲友.安床.结网.除服.成服.启攒.安葬.移柩.", "j": "祈福.入宅.造屋.动土.破土.探病.", "c": "生肖冲鼠", "s": "煞北", "ch": "满", "zc": "正冲正冲甲子", "ts": "占碓磨外正南" }, "d0424": { "y": "祭祀.祈福.求嗣.斋醮.纳采.订盟.开光.竖柱.上梁.开仓.出货财.造屋.起基.定磉.安门.诸事不宜.破土.入殓.启攒.谢土.", "j": "出火.嫁娶.开市.", "c": "生肖冲马", "s": "煞南", "ch": "成", "zc": "正冲正冲庚午", "ts": "厨灶碓外西南" }, "d0414": { "y": "安香.出火.纳采.订盟.嫁娶.开市.立券.交易.挂匾.开光.出行.解除.安床.栽种.置产.拆卸.修造.动土.", "j": "作灶.安葬.祭祀.入殓.", "c": "生肖冲猴", "s": "煞北", "ch": "开", "zc": "正冲正冲庚申", "ts": "厨灶炉外正南" }, "d0429": { "y": "沐浴.斋醮.解除.求医.治病.会亲友.造畜椆栖.栽种.理发.扫舍.", "j": "开市.嫁娶.移徙.入宅.掘井.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "除", "zc": "正冲正冲乙亥", "ts": "厨灶床外正西" }, "d0422": { "y": "祭祀.沐浴.解除.求医.治病.破屋.坏垣.余事勿取.", "j": "祈福.斋醮.开市.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "破", "zc": "正冲正冲戊辰", "ts": "门鸡栖外西南" }, "d0524": { "y": "嫁娶.纳采.订盟.祭祀.祈福.治病.造车器.修造.动土.移徙.入宅.", "j": "开市.出行.安床.作灶.安葬.", "c": "生肖冲鼠", "s": "煞北", "ch": "除", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d0401": { "y": "开光.祈福.求嗣.出行.解除.伐木.造屋.起基.修造.架马.安门.移徙.入宅.造庙.除服.成服.移柩.谢土.纳畜.牧养.", "j": "纳采.动土.开市.交易.安门.", "c": "生肖冲羊", "s": "煞東", "ch": "开", "zc": "正冲正冲丁未", "ts": "房床厕外东北" }, "d0402": { "y": "裁衣.经络.伐木.开柱眼.拆卸.修造.动土.上梁.合脊.合寿木.入殓.除服.成服.移柩.破土.安葬.启攒.修坟.立碑.", "j": "祭祀.嫁娶.出行.上梁.掘井.", "c": "生肖冲猴", "s": "煞北", "ch": "闭", "zc": "正冲正冲戊申", "ts": "占门炉外东北" }, "d0404": { "y": "祭祀.出行.教牛马.扫舍.余事勿取.", "j": "开光.伐木.安葬.破土.", "c": "生肖冲狗", "s": "煞南", "ch": "建", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d0405": { "y": "祭祀.祈福.求嗣.开光.纳采.订盟.解除.栽种.纳畜.牧养.扫舍.进人口.", "j": "修坟.造桥.作灶.出行.安葬.造屋.入宅.", "c": "生肖冲猪", "s": "煞東", "ch": "除", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d0406": { "y": "开光.出行.交易.塞穴.嫁娶.理发.开市.安床.", "j": "祈福.出火.置产.动土.破土.安葬.修造.上梁.置产.入宅.", "c": "生肖冲鼠", "s": "煞北", "ch": "满", "zc": "正冲正冲壬子", "ts": "房床碓外正东" }, "d0407": { "y": "祭祀.作灶.畋猎.结网.修饰垣墙.平治道涂.余事勿取.", "j": "嫁娶.安床.治病.", "c": "生肖冲牛", "s": "煞西", "ch": "平", "zc": "正冲正冲癸丑", "ts": "占门厕外正东" }, "d0408": { "y": "沐浴.祭祀.解除.安葬.破土.谢土.移柩.余事勿取.", "j": "斋醮.开光.嫁娶.入宅.上梁.", "c": "生肖冲虎", "s": "煞南", "ch": "定", "zc": "正冲正冲甲寅", "ts": "碓磨炉外东南" }, "d0409": { "y": "祭祀.解除.入殓.移柩.启攒.安葬.整手足甲.捕捉.畋猎.取渔.除服.成服.扫舍.谢土.斋醮.", "j": "动土.破土.", "c": "生肖冲兔", "s": "煞東", "ch": "执", "zc": "正冲正冲乙卯", "ts": "厨灶门外东南" }, "d0410": { "y": "祭祀.沐浴.解除.破屋.坏垣.求医.治病.余事勿取.", "j": "嫁娶.开市.", "c": "生肖冲龙", "s": "煞北", "ch": "破", "zc": "正冲正冲丙辰", "ts": "仓库栖外东南" }, "d0411": { "y": "沐浴.塞穴.畋猎.结网.取渔.扫舍.余事勿取.", "j": "祈福.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "危", "zc": "正冲正冲丁巳", "ts": "占房床外东南" }, "d0412": { "y": "开市.交易.立券.挂匾.祭祀.开光.祈福.求嗣.安床.解除.修造.安葬.", "j": "纳采.问名.订盟.嫁娶.入宅.开仓.出火.动土.破土.纳畜.伐木.", "c": "生肖冲马", "s": "煞南", "ch": "成", "zc": "正冲正冲戊午", "ts": "占门碓外东南" }, "d0415": { "y": "祭祀.出行.修造.动土.合帐.造畜椆栖.安床.移徙.入殓.移柩.破土.启攒.安葬.开生坟.合寿木.补垣.塞穴.", "j": "移徙.入宅.作灶.理发.开光.安门.", "c": "生肖冲鸡", "s": "煞西", "ch": "闭", "zc": "正冲正冲辛酉", "ts": "仓库门外正南" }, "d0416": { "y": "祭祀.修饰垣墙.余事勿取.", "j": "开光.修造.动土.破土.", "c": "生肖冲狗", "s": "煞南", "ch": "建", "zc": "正冲正冲壬戌", "ts": "房床栖外正南" }, "d0417": { "y": "嫁娶.祭祀.祈福.求嗣.斋醮.开光.出火.移徙.入宅.竖柱.上梁.会亲友.造屋.起基.治病.治病.安门.造车器.掘井.开池.", "j": "纳采.出行.修坟.安葬.开市.立券.作灶.", "c": "生肖冲猪", "s": "煞東", "ch": "除", "zc": "正冲正冲癸亥", "ts": "占门床外正南" }, "d0419": { "y": "祭祀.作灶.平治道涂.余事勿取.", "j": "安床.入宅.安碓硙.栽种.", "c": "生肖冲牛", "s": "煞西", "ch": "平", "zc": "正冲正冲乙丑", "ts": "厨灶厕外西南" }, "d0420": { "y": "祭祀.祈福.求嗣.斋醮.沐浴.纳畜.入殓.破土.安葬.", "j": "移徙.入宅.嫁娶.出行.安床.", "c": "生肖冲虎", "s": "煞南", "ch": "定", "zc": "正冲正冲丙寅", "ts": "仓库炉外西南" }, "d0421": { "y": "纳采.祭祀.祈福.求嗣.斋醮.出行.起基.造屋.定磉.安门.入殓.安葬.", "j": "嫁娶.开市.纳财.出火.", "c": "生肖冲兔", "s": "煞東", "ch": "执", "zc": "正冲正冲丁卯", "ts": "房床门外西南" }, "d0425": { "y": "祭祀.捕捉.解除.余事勿取.", "j": "嫁娶.安葬.", "c": "生肖冲羊", "s": "煞東", "ch": "收", "zc": "正冲正冲辛未", "ts": "仓库厕外西南" }, "d0426": { "y": "纳采.嫁娶.出行.开市.立券.纳畜.牧养.出火.移徙.入宅.", "j": "祈福.动土.破土.安葬.入殓.", "c": "生肖冲猴", "s": "煞北", "ch": "开", "zc": "正冲正冲壬申", "ts": "房床厕外正南" }, "d0430": { "y": "求嗣.出行.解除.订盟.纳采.嫁娶.会亲友.进人口.安床.开市.交易.纳畜.牧养.入殓.除服.成服.移柩.安葬.启攒.", "j": "祈福.开市.修造.动土.破土.谢土.", "c": "生肖冲鼠", "s": "煞北", "ch": "满", "zc": "正冲正冲丙子", "ts": "仓库碓外西北" }, "d0514": { "y": "纳采.嫁娶.裁衣.理发.出行.修造.动土.进人口.开市.交易.立券.挂匾.移徙.上梁.栽种.纳畜.", "j": "伐木.安葬.安床.祭祀.祈福.", "c": "生肖冲虎", "s": "煞南", "ch": "平", "zc": "正冲正冲庚寅", "ts": "厨灶炉房内北" }, "d0504": { "y": "祭祀.沐浴.破屋.坏垣.求医.治病.解除.余事勿取.", "j": "嫁娶.开市.交易.入宅.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "破", "zc": "正冲正冲庚辰", "ts": "厨灶栖外西北" }, "d0624": { "y": "嫁娶.安机械.交易.出行.祭祀.祈福.求嗣.斋醮.塑绘.开光.合帐.裁衣.放水.开池.掘井.", "j": "作灶.理发.造桥.行丧.安葬.", "c": "生肖冲羊", "s": "煞東", "ch": "危", "zc": "正冲正冲辛未", "ts": "仓库厕外西南" }, "d0501": { "y": "祭祀.作灶.平治道涂.余事勿取.", "j": "嫁娶.安葬.动土.安床.治病.", "c": "生肖冲牛", "s": "煞西", "ch": "平", "zc": "正冲正冲丁丑", "ts": "房床厕外西北" }, "d0502": { "y": "造车器.祭祀.祈福.求嗣.斋醮.开市.交易.安机械.雕刻.开光.造屋.合脊.起基.定磉.安门.纳畜.安葬.开生坟.立碑.谢土.斋醮.", "j": "入宅.动土.开仓.出货财.", "c": "生肖冲虎", "s": "煞南", "ch": "定", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d0503": { "y": "祭祀.祈福.开光.求嗣.斋醮.纳采.订盟.求医.治病.起基.定磉.造船.取渔.解除.安葬.启攒.谢土.入殓.", "j": "开市.动土.掘井.开池.", "c": "生肖冲兔", "s": "煞東", "ch": "执", "zc": "正冲正冲己卯", "ts": "占门炉外西北" }, "d0505": { "y": "破屋.坏垣.沐浴.解除.余事勿取.", "j": "诸事不宜.", "c": "生肖冲蛇", "s": "煞西", "ch": "破", "zc": "正冲正冲辛巳", "ts": "仓库床外西北" }, "d0506": { "y": "纳采.订盟.嫁娶.造车器.祭祀.祈福.求嗣.开光.出火.拆卸.修造.动土.进人口.挂匾.入宅.移徙.安床.栽种.入殓.破土.安葬.除服.成服.", "j": "开市.立券.", "c": "生肖冲马", "s": "煞南", "ch": "危", "zc": "正冲正冲壬午", "ts": "房床碓外正北" }, "d0507": { "y": "开市.交易.立券.祭祀.祈福.开光.动土.安床.出行.栽种.纳畜.牧养.竖柱.上梁.解除.破土.", "j": "嫁娶.掘井.入宅.移徙.安葬.", "c": "生肖冲羊", "s": "煞东", "ch": "成", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d0508": { "y": "解除.出行.纳采.冠笄.竖柱.上梁.移徙.作灶.进人口.入宅.纳畜.牧养.", "j": "祭祀.伐木.架马.安床.修造.动土.安葬.修坟.破土.", "c": "生肖冲猴", "s": "煞北", "ch": "收", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d0509": { "y": "祭祀.祈福.求嗣.开光.出行.开市.交易.立券.栽种.安床.纳畜.移徙.起基.动土.定磉.造仓.置产.破土.启攒.修坟.", "j": "入宅.移徙.修造.安门.伐木.入殓.安葬.造屋.", "c": "生肖冲鸡", "s": "煞西", "ch": "开", "zc": "正冲正冲乙酉", "ts": "厨灶门外正北" }, "d0510": { "y": "嫁娶.交易.立券.作厕.补垣.塞穴.畋猎.取渔.开生坟.", "j": "安床.开渠.上梁.修造.开市.开光.入宅.移徙.安床.", "c": "生肖冲狗", "s": "煞南", "ch": "闭", "zc": "正冲正冲丙戌", "ts": "仓库栖外正北" }, "d0511": { "y": "塞穴.断蚁.结网.畋猎.余事勿取.", "j": "嫁娶.安葬.入宅.出行.动土.词讼.", "c": "生肖冲猪", "s": "煞東", "ch": "建", "zc": "正冲正冲丁亥", "ts": "占房床房内北" }, "d0512": { "y": "纳采.订盟.嫁娶.祭祀.祈福.求嗣.开光.解除.出行.出火.入宅.移徙.栽种.纳畜.牧养.动土.破土.入殓.安葬.", "j": "作灶.安床.开仓.造屋.动土.安葬.", "c": "生肖冲鼠", "s": "煞北", "ch": "除", "zc": "正冲正冲戊子", "ts": "占门碓房内北" }, "d0513": { "y": "开光.纳采.裁衣.冠笄.安床.作灶.进人口.造仓.塞穴.", "j": "嫁娶.栽种.修造.动土.出行.伐木.作梁.安葬.谢土.", "c": "生肖冲牛", "s": "煞西", "ch": "满", "zc": "正冲正冲己丑", "ts": "碓磨厕房内北" }, "d0515": { "y": "开市.交易.立券.挂匾.祭祀.祈福.斋醮.出行.开市.交易.立券.造屋.起基.修造.动土.定磉.安床.安机械.安葬.破土.启攒.除服.成服.立碑.", "j": "作灶.嫁娶.移徙.入宅.理发.", "c": "生肖冲兔", "s": "煞東", "ch": "定", "zc": "正冲正冲辛卯", "ts": "仓库门房内北" }, "d0516": { "y": "嫁娶.纳采.订盟.祭祀.祈福.求嗣.开光.出火.出行.拆卸.动土.修造.进人口.入宅.移徙.安床.解除.挂匾.栽种.破土.谢土.入殓.移柩.安葬.", "j": "开市.立券.造船.合寿木.", "c": "生肖冲龙", "s": "煞北", "ch": "执", "zc": "正冲正冲壬辰", "ts": "房床栖房内南" }, "d0517": { "y": "祭祀.沐浴.解除.破屋.坏垣.余事勿取.", "j": "开光.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "破", "zc": "正冲正冲癸巳", "ts": "占门床房内南" }, "d0518": { "y": "订盟.纳采.嫁娶.解除.祭祀.祈福.求嗣.开光.出行.解除.出火.拆卸.入宅.移徙.安床.栽种.纳畜.动土.破土.谢土.安葬.修坟.", "j": "作灶.开市.经络.", "c": "生肖冲马", "s": "煞南", "ch": "危", "zc": "正冲正冲甲午", "ts": "占碓磨房内南" }, "d0519": { "y": "祭祀.祈福.求嗣.开光.订盟.纳采.解除.动土.起基.进人口.开市.交易.立券.纳财.造仓.开池.栽种.纳畜.破土.安葬.", "j": "安床.上梁.裁衣.入宅.嫁娶.", "c": "生肖冲羊", "s": "煞東", "ch": "成", "zc": "正冲正冲乙未", "ts": "厨灶厕房内南" }, "d0520": { "y": "祭祀.结网.捕捉.余事勿取.", "j": "探病.嫁娶.开市.", "c": "生肖冲猴", "s": "煞北", "ch": "收", "zc": "正冲正冲丙申", "ts": "仓库炉房内南" }, "d0521": { "y": "祭祀.祈福.求嗣.开光.纳采.订盟.嫁娶.出行.动土.破土.会亲友.开市.交易.立券.习艺.拆卸.起基.安碓硙.放水.开池.造仓.开渠.栽种.谢土.启攒.修坟.立碑.", "j": "入宅.安门.安葬.", "c": "生肖冲鸡", "s": "煞西", "ch": "开", "zc": "正冲正冲丁酉", "ts": "房床门房内南" }, "d0522": { "y": "嫁娶.冠笄.祭祀.出行.移徙.入宅.作灶.造车器.补垣.塞穴.作厕.破土.启攒.除服.成服.入殓.", "j": "入宅.造屋.造桥.安门.安葬.上梁.", "c": "生肖冲狗", "s": "煞南", "ch": "闭", "zc": "正冲正冲戊戌", "ts": "门鸡栖房内东" }, "d0523": { "y": "祭祀.解除.断蚁.会亲友.余事勿取.", "j": "嫁娶.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "建", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d0525": { "y": "嫁娶.纳采.订盟.会亲友.安机械.结网.冠笄.祭祀.求嗣.进人口.经络.", "j": "开市.作灶.动土.行丧.安葬.", "c": "生肖冲牛", "s": "煞西", "ch": "满", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d0526": { "y": "祭祀.沐浴.移徙.破土.安葬.扫舍.平治道涂.", "j": "祈福.嫁娶.入宅.安床.作灶.", "c": "生肖冲虎", "s": "煞南", "ch": "平", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" }, "d0527": { "y": "祭祀.祈福.斋醮.求嗣.安机械.纳畜.移徙.入宅.安机械.塑绘.开光.起基.竖柱.上梁.作灶.安门.安香.出火.造屋.启攒.安葬.", "j": "动土.破土.嫁娶.嫁娶.", "c": "生肖冲兔", "s": "煞東", "ch": "定", "zc": "正冲正冲癸卯", "ts": "占大门外东北" }, "d0528": { "y": "嫁娶.纳采.订盟.斋醮.开光.祭祀.祈福.求医.治病.会亲友.动土.解除.捕捉.纳畜.牧养.入殓.破土.安葬.", "j": "移徙.入宅.造屋.架马.", "c": "生肖冲龙", "s": "煞北", "ch": "执", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d0529": { "y": "祭祀.沐浴.解除.破屋.坏垣.余事勿取.", "j": "行丧.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "破", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d0530": { "y": "沐浴.扫舍.余事勿取.", "j": "斋醮.开市.嫁娶.作灶.", "c": "生肖冲马", "s": "煞南", "ch": "危", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d0531": { "y": "开市.交易.立券.安机械.会亲友.开光.求医.治病.造屋.起基.修造.动土.定磉.竖柱.上梁.安门.作灶.放水.作厕.开池.栽种.牧养.造畜椆栖.破土.安葬.立碑.", "j": "嫁娶.出火.移徙.入宅.", "c": "生肖冲羊", "s": "煞東", "ch": "成", "zc": "正冲正冲丁未", "ts": "房床厕外东北" }, "d0622": { "y": "纳采.订盟.冠笄.祭祀.祈福.斋醮.出行.修造.动土.移徙.入宅.安香.出火.拆卸.造屋.起基.竖柱.上梁.定磉.安门.开池.", "j": "嫁娶.开市.合寿木.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "执", "zc": "正冲正冲己巳", "ts": "碓磨床外西南" }, "d0612": { "y": "祭祀.斋醮.塑绘.开光.出行.修造.动土.造畜椆栖.安床.放水.掘井.开池.作厕.结网.破土.", "j": "出火.入宅.", "c": "生肖冲羊", "s": "煞東", "ch": "危", "zc": "正冲正冲己未", "ts": "碓磨厕外东南" }, "d0626": { "y": "祭祀.作灶.余事勿取.", "j": "开市.安葬.破土.修坟.掘井.", "c": "生肖冲鸡", "s": "煞西", "ch": "收", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d0602": { "y": "嫁娶.祭祀.祈福.求嗣.斋醮.订盟.纳采.解除.出行.动土.破土.习艺.针灸.理发.会亲友.起基.修造.动土.竖柱.定磉.安床.拆卸.纳畜.牧养.放水.破土.除服.成服.修坟.立碑.", "j": "开市.入宅.探病.出火.造屋.", "c": "生肖冲鸡", "s": "煞西", "ch": "开", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d0630": { "y": "嫁娶.订盟.纳采.冠笄.会亲友.安机械.造车器.祭祀.出行.纳财.入宅.安香.出火.入学.塑绘.开光.拆卸.起基.修造.动土.牧养.栽种.安门.作厕.", "j": "行丧.伐木.作梁.作灶.", "c": "生肖冲牛", "s": "煞西", "ch": "除", "zc": "正冲正冲丁丑", "ts": "房床厕外西北" }, "d0625": { "y": "纳采.冠笄.求医.治病.开市.立券.修造.动土.安机械.破土.安葬.", "j": "斋醮.祭祀.移徙.入宅.上梁.嫁娶.", "c": "生肖冲猴", "s": "煞北", "ch": "成", "zc": "正冲正冲壬申", "ts": "房床厕外正南" }, "d0614": { "y": "祭祀.结网.余事勿取.", "j": "入宅.出行.掘井.安葬.", "c": "生肖冲鸡", "s": "煞西", "ch": "收", "zc": "正冲正冲辛酉", "ts": "仓库门外正南" }, "d0623": { "y": "祭祀.沐浴.破屋.坏垣.余事勿取.", "j": "入宅.嫁娶.移徙.", "c": "生肖冲马", "s": "煞南", "ch": "破", "zc": "正冲正冲庚午", "ts": "厨灶碓外西南" }, "d0615": { "y": "嫁娶.纳采.订盟.冠笄.造车器.祭祀.开光.祈福.求嗣.出行.解除.伐木.出火.入宅.拆卸.修造.动土.上梁.安床.栽种.破土.", "j": "行丧.置产.入宅.安葬.", "c": "生肖冲狗", "s": "煞南", "ch": "开", "zc": "正冲正冲壬戌", "ts": "房床栖外正南" }, "d0613": { "y": "开市.交易.立券.挂匾.开光.解除.拆卸.动土.安床.修造.上梁.置产.栽种.破土.安葬.", "j": "作灶.出火.祭祀.嫁娶.入宅.", "c": "生肖冲猴", "s": "煞北", "ch": "成", "zc": "正冲正冲庚申", "ts": "厨灶炉外正南" }, "d0604": { "y": "塞穴.断蚁.结网.余事勿取.", "j": "破土.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "建", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d0603": { "y": "余事勿取.", "j": "余事勿取.", "c": "生肖冲狗", "s": "煞南", "ch": "闭", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d0616": { "y": "嫁娶.合帐.裁衣.冠笄.伐木.上梁.出火.拆卸.移徙.修造.动土.安门.纳财.筑堤.栽种.塞穴.", "j": "安床.祈福.出行.安葬.行丧.开光.", "c": "生肖冲猪", "s": "煞東", "ch": "闭", "zc": "正冲正冲癸亥", "ts": "占门床外正南" }, "d0605": { "y": "祭祀.教牛马.断蚁.余事勿取.", "j": "斋醮.移徙.入宅.动土.", "c": "生肖冲鼠", "s": "煞北", "ch": "建", "zc": "正冲正冲壬子", "ts": "房床碓外正东" }, "d0726": { "y": "纳财.开市.交易.立券.出行.祭祀.祈福.求嗣.开光.解除.扫舍.起基.竖柱.安床.移徙.开仓.出货财.补垣.塞穴.栽种.纳畜.牧养.", "j": "斋醮.入宅.安门.安葬.破土.行丧.", "c": "生肖冲兔", "s": "煞東", "ch": "满", "zc": "正冲正冲癸卯", "ts": "占大门外东北" }, "d0601": { "y": "栽种.捕捉.畋猎.余事勿取.", "j": "开市.动土.祭祀.斋醮.安葬.探病.", "c": "生肖冲猴", "s": "煞北", "ch": "收", "zc": "正冲正冲戊申", "ts": "占门炉外东北" }, "d0606": { "y": "纳采.订盟.嫁娶.祭祀.祈福.开市.纳财.立券.移徙.出行.修造.动土.起基.定磉.竖柱.拆卸.扫舍.放水.安香.安床.造船.开池.掘井.造畜椆栖.栽种.", "j": "行丧.安葬.破土.作灶.伐木.斋醮.", "c": "生肖冲牛", "s": "煞西", "ch": "除", "zc": "正冲正冲癸丑", "ts": "占门厕外正东" }, "d0607": { "y": "嫁娶.开光.祭祀.祈福.出行.解除.移徙.入宅.开市.纳财.起基.修造.竖柱.上梁.造屋.作灶.出火.安香.补垣.塞穴.拆卸.放水.扫舍.造仓.造船.栽种.安葬.", "j": "纳采.订盟.安床.谢土.破土.动土.", "c": "生肖冲虎", "s": "煞南", "ch": "满", "zc": "正冲正冲甲寅", "ts": "碓磨炉外东南" }, "d0608": { "y": "嫁娶.祭祀.理发.作灶.修饰垣墙.平治道涂.整手足甲.沐浴.冠笄.", "j": "破土.出行.栽种.", "c": "生肖冲兔", "s": "煞東", "ch": "平", "zc": "正冲正冲乙卯", "ts": "厨灶门外东南" }, "d0609": { "y": "嫁娶.纳采.订盟.祭祀.祈福.求嗣.开光.出火.出行.拆卸.修造.动土.进人口.入宅.移徙.安床.交易.立券.挂匾.纳财.入殓.安葬.启攒.除服.成服.", "j": "动土.掘井.破土.", "c": "生肖冲龙", "s": "煞北", "ch": "定", "zc": "正冲正冲丙辰", "ts": "仓库栖外东南" }, "d0610": { "y": "畋猎.捕捉.结网.取渔.祭祀.沐浴.余事勿取.", "j": "嫁娶.开市.安葬.启攒.行丧.", "c": "生肖冲蛇", "s": "煞西", "ch": "执", "zc": "正冲正冲丁巳", "ts": "占房床外东南" }, "d0611": { "y": "祭祀.破屋.坏垣.余事勿取.", "j": "移徙.入宅.开仓.出货财.", "c": "生肖冲马", "s": "煞南", "ch": "破", "zc": "正冲正冲戊午", "ts": "占门碓外东南" }, "d0617": { "y": "出行.教牛马.割蜜.余事勿取.", "j": "斋醮.造屋.动土.破土.", "c": "生肖冲鼠", "s": "煞北", "ch": "建", "zc": "正冲正冲甲子", "ts": "占碓磨外正南" }, "d0618": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出行.解除.出火.拆卸.修造.进人口.入宅.移徙.动土.安床.纳畜.栽种.纳财.交易.立券.挂匾.造畜椆栖.", "j": "安葬.开生坟.合寿木.行丧.", "c": "生肖冲牛", "s": "煞西", "ch": "除", "zc": "正冲正冲乙丑", "ts": "厨灶厕外西南" }, "d0619": { "y": "安机械.祭祀.祈福.求嗣.沐浴.解除.纳采.开市.修造.竖柱.上梁.开柱眼.安碓硙.归岫.补垣.塞穴.拆卸.放水.出火.扫舍.开生坟.合寿木.安葬.谢土.启攒.除服.成服.", "j": "嫁娶.安床.作灶.动土.破土.造船.", "c": "生肖冲虎", "s": "煞南", "ch": "满", "zc": "正冲正冲丙寅", "ts": "仓库炉外西南" }, "d0620": { "y": "祭祀.沐浴.理发.整手足甲.修饰垣墙.平治道涂.余事勿取.", "j": "开市.入宅.出行.修造.词讼.", "c": "生肖冲兔", "s": "煞東", "ch": "平", "zc": "正冲正冲丁卯", "ts": "房床门外西南" }, "d0621": { "y": "嫁娶.纳采.祭祀.祈福.出行.立券.移徙.入宅.动土.破土.安葬.", "j": "开光.作灶.造屋.架马.开仓.", "c": "生肖冲龙", "s": "煞北", "ch": "定", "zc": "正冲正冲戊辰", "ts": "门鸡栖外西南" }, "d0627": { "y": "祭祀.祈福.求嗣.斋醮.安香.解除.移徙.入宅.会亲友.求医.治病.动土.破土.开生坟.合寿木.", "j": "合帐.上梁.经络.安葬.入殓.", "c": "生肖冲狗", "s": "煞南", "ch": "开", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d0628": { "y": "嫁娶.冠笄.修造.动土.作灶.移徙.入宅.补垣.塞穴.纳畜.牧养.架马.修造.动土.起基.定磉.开池.造船.", "j": "祈福.开光.掘井.开市.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "闭", "zc": "正冲正冲乙亥", "ts": "厨灶床外正西" }, "d0629": { "y": "祭祀.交易.纳财.", "j": "斋醮.开渠.上梁.动土.破土.", "c": "生肖冲鼠", "s": "煞北", "ch": "建", "zc": "正冲正冲丙子", "ts": "仓库碓外西北" }, "d0716": { "y": "纳采.订盟.会亲友.入学.祭祀.祈福.求嗣.开光.出行.解除.理发.动土.起基.开市.交易.立券.纳财.造仓.栽种.纳畜.牧养.", "j": "嫁娶.作灶.出火.置产.嫁娶.入宅.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "定", "zc": "正冲正冲癸巳", "ts": "占门床房内南" }, "d0706": { "y": "嫁娶.出行.安机械.祭祀.塑绘.开光.治病.经络.安床.结网.塞穴.破土.入殓.", "j": "开市.安门.掘井.作灶.", "c": "生肖冲羊", "s": "煞東", "ch": "危", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d0727": { "y": "祭祀.修饰垣墙.平治道涂.", "j": "开市.动土.破土.嫁娶.修造.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "平", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d0717": { "y": "祭祀.祈福.解除.整手足甲.安床.沐浴.入殓.移柩.破土.启攒.安葬.谢土.", "j": "嫁娶.斋醮.开市.出火.入宅.移徙.出行.作灶.安门.伐木.", "c": "生肖冲马", "s": "煞南", "ch": "执", "zc": "正冲正冲甲午", "ts": "占碓磨房内南" }, "d0731": { "y": "纳采.订盟.嫁娶.移徙.入宅.出行.开市.交易.立券.纳财.会亲友.安香.出火.拆卸.造屋.起基.安床.作灶.挂匾.安葬.破土.启攒.立碑.入殓.移柩.", "j": "祈福.上梁.开仓.掘井.牧养.", "c": "生肖冲猴", "s": "煞北", "ch": "危", "zc": "正冲正冲戊申", "ts": "占门炉外东北" }, "d0827": { "y": "嫁娶.订盟.纳采.作灶.冠笄.裁衣.会亲友.纳畜.牧养.安机械.开市.立券.纳财.安床.", "j": "掘井.出行.破土.行丧.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "收", "zc": "正冲正冲乙亥", "ts": "厨灶床外正西" }, "d0701": { "y": "开光.求嗣.出行.冠笄.嫁娶.伐木.架马.开柱眼.修造.移徙.入宅.开市.交易.立券.出行.安香.出火.挂匾.起基.修造.开生坟.合寿木.入殓.除服.成服.移柩.安葬.", "j": "安床.出货财.作灶.动土.破土.", "c": "生肖冲虎", "s": "煞南", "ch": "满", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d0702": { "y": "祭祀.沐浴.理发.嫁娶.作灶.整手足甲.扫舍.修饰垣墙.平治道涂.", "j": "斋醮.出行.治病.合寿木.", "c": "生肖冲兔", "s": "煞東", "ch": "平", "zc": "正冲正冲己卯", "ts": "占门炉外西北" }, "d0703": { "y": "安机械.移徙.入宅.出行.祭祀.祈福.斋醮.纳采.订盟.安香.出火.解除.会亲友.修造.动土.拆卸.起基.定磉.移徙.入宅.造屋.安床.修造.破土.安葬.入殓.立碑.", "j": "开市.伐木.作梁.作灶.", "c": "生肖冲龙", "s": "煞北", "ch": "定", "zc": "正冲正冲庚辰", "ts": "厨灶栖外西北" }, "d0704": { "y": "祭祀.沐浴.捕捉.结网.畋猎.取渔.余事勿取.", "j": "开市.交易.嫁娶.安葬.行丧.", "c": "生肖冲蛇", "s": "煞西", "ch": "执", "zc": "正冲正冲辛巳", "ts": "仓库床外西北" }, "d0705": { "y": "破屋.坏垣.求医.治病.畋猎.余事勿取.", "j": "嫁娶.入宅.", "c": "生肖冲马", "s": "煞南", "ch": "破", "zc": "正冲正冲壬午", "ts": "房床碓外正北" }, "d0707": { "y": "开市.交易.立券.纳财.动土.开光.出行.嫁娶.纳采.订盟.出行.纳财.入学.开仓.出货财.纳畜.牧养.栽种.破土.启攒.安葬.立碑.", "j": "入宅.移徙.作灶.祭祀.谢土.", "c": "生肖冲猴", "s": "煞北", "ch": "危", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d0708": { "y": "嫁娶.纳采.订盟.祭祀.祈福.求嗣.开光.出火.出行.拆卸.修造.动土.进人口.开市.交易.立券.挂匾.入宅.移徙.安床.栽种.入殓.破土.谢土.安葬.", "j": "掘井.伐木.纳畜.合寿木.", "c": "生肖冲鸡", "s": "煞西", "ch": "成", "zc": "正冲正冲乙酉", "ts": "厨灶门外正北" }, "d0709": { "y": "祭祀.冠笄.作灶.交易.纳财.栽种.结网.纳畜.牧养.进人口.", "j": "开渠.造船.安床.安葬.破土.出行.修坟.掘井.开市.开生坟.", "c": "生肖冲狗", "s": "煞南", "ch": "收", "zc": "正冲正冲丙戌", "ts": "仓库栖外正北" }, "d0710": { "y": "嫁娶.纳采.订盟.祭祀.祈福.求嗣.纳采.裁衣.冠笄.开光.安床.作梁.修造.动土.作灶.起基.上梁.造屋.纳畜.牧养.", "j": "移徙.栽种.出行.行丧.破土.安葬.词讼.", "c": "生肖冲猪", "s": "煞東", "ch": "开", "zc": "正冲正冲丁亥", "ts": "占房床房内北" }, "d0711": { "y": "经络.祭祀.沐浴.补垣.塞穴.除服.成服.移柩.入殓.启攒.立碑.", "j": "开光.治病.嫁娶.掘井.破土.安葬.", "c": "生肖冲鼠", "s": "煞北", "ch": "闭", "zc": "正冲正冲戊子", "ts": "占门碓房内北" }, "d0712": { "y": "嫁娶.祭祀.出行.裁衣.冠笄.交易.雕刻.纳财.造畜椆栖.造车器.雕刻.教牛马.", "j": "移徙.入宅.栽种.动土.破土.作灶.安葬.行丧.伐木.上梁.", "c": "生肖冲牛", "s": "煞西", "ch": "建", "zc": "正冲正冲己丑", "ts": "碓磨厕房内北" }, "d0713": { "y": "修造.动土.安机械.祭祀.沐浴.解除.拆卸.治病.作灶.造屋.起基.开池.扫舍.造畜椆栖.开生坟.合寿木.安葬.破土.启攒.移柩.入殓.立碑.", "j": "开市.入宅.出行.安床.作灶.", "c": "生肖冲虎", "s": "煞南", "ch": "除", "zc": "正冲正冲庚寅", "ts": "厨灶炉房内北" }, "d0714": { "y": "嫁娶.纳采.订盟.造车器.开光.出行.拆卸.起基.安床.除服.成服.开市.交易.立券.栽种.牧养.入殓.移柩.启攒.", "j": "上梁.入宅.修造.动土.破土.祭祀.祈福.斋醮.", "c": "生肖冲兔", "s": "煞東", "ch": "满", "zc": "正冲正冲辛卯", "ts": "仓库门房内北" }, "d0715": { "y": "祭祀.嫁娶.畋猎.结网.", "j": "动土.破土.治病.开渠.", "c": "生肖冲龙", "s": "煞北", "ch": "平", "zc": "正冲正冲壬辰", "ts": "房床栖房内南" }, "d0718": { "y": "破屋.坏垣.解除.余事勿取.", "j": "嫁娶.安葬.", "c": "生肖冲羊", "s": "煞東", "ch": "破", "zc": "正冲正冲乙未", "ts": "厨灶厕房内南" }, "d0719": { "y": "嫁娶.开市.立券.移徙.入宅.安机械.会亲友.经络.安门.安床.挂匾.拆卸.开仓.出货财.开池.栽种.纳畜.牧养.破土.安葬.启攒.移柩.入殓.立碑.", "j": "祭祀.祈福.探病.谢土.造桥.", "c": "生肖冲猴", "s": "煞北", "ch": "危", "zc": "正冲正冲丙申", "ts": "仓库炉房内南" }, "d0720": { "y": "嫁娶.订盟.纳采.祭祀.祈福.斋醮.开光.会亲友.求医.治病.造屋.起基.竖柱.上梁.安门.安碓硙.筑堤.开池.破土.安葬.除服.成服.", "j": "入宅.开市.掘井.词讼.合寿木.", "c": "生肖冲鸡", "s": "煞西", "ch": "成", "zc": "正冲正冲丁酉", "ts": "房床门房内南" }, "d0721": { "y": "纳采.订盟.嫁娶.移徙.入宅.出行.祭祀.祈福.斋醮.塑绘.开光.安香.出火.会亲友.解除.入学.竖柱.上梁.拆卸.造屋.起基.栽种.牧养.纳畜.", "j": "安葬.破土.开市.开仓.出货财.启攒.", "c": "生肖冲狗", "s": "煞南", "ch": "收", "zc": "正冲正冲戊戌", "ts": "门鸡栖房内东" }, "d0722": { "y": "纳采.订盟.嫁娶.祭祀.沐浴.塑绘.开光.出火.治病.习艺.伐木.造屋.竖柱.上梁.安床.作灶.安碓硙.挂匾.掘井.纳畜.", "j": "出行.安葬.造桥.", "c": "生肖冲猪", "s": "煞東", "ch": "开", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d0723": { "y": "祭祀.入殓.除服.成服.移柩.破土.启攒.安葬.塞穴.断蚁.结网.", "j": "开市.入宅.嫁娶.开光.造屋.", "c": "生肖冲鼠", "s": "煞北", "ch": "闭", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d0724": { "y": "祭祀.修造.出行.造屋.竖柱.造车器.教牛马.造畜椆栖.割蜜.", "j": "动土.破土.掘井.安葬.", "c": "生肖冲牛", "s": "煞西", "ch": "建", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d0725": { "y": "祭祀.沐浴.塑绘.开光.入学.解除.扫舍.治病.开池.牧养.", "j": "嫁娶.出行.纳采.入宅.作灶.", "c": "生肖冲虎", "s": "煞南", "ch": "除", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" }, "d0728": { "y": "订盟.纳采.祭祀.祈福.开光.安香.出火.立券.安机械.移徙.入宅.竖柱.上梁.会亲友.安床.拆卸.挂匾.牧养.教牛马.", "j": "嫁娶.安葬.行丧.破土.修坟.", "c": "生肖冲蛇", "s": "煞西", "ch": "定", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d0729": { "y": "沐浴.理发.捕捉.入殓.移柩.破土.启攒.安葬.", "j": "出火.嫁娶.入宅.作灶.破土.上梁.动土.", "c": "生肖冲马", "s": "煞南", "ch": "执", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d0730": { "y": "求医.治病.破屋.坏垣.余事勿取.", "j": "嫁娶.出行.", "c": "生肖冲羊", "s": "煞東", "ch": "破", "zc": "正冲正冲丁未", "ts": "房床厕外东北" }, "d0817": { "y": "祭祀.出行.作梁.出火.拆卸.修造.动土.起基.安床.补垣.塞穴.入殓.破土.安葬.移柩.造畜椆栖.", "j": "嫁娶.入宅.斋醮.开光.针灸.掘井.", "c": "生肖冲牛", "s": "煞西", "ch": "闭", "zc": "正冲正冲乙丑", "ts": "厨灶厕外西南" }, "d0807": { "y": "祭祀.解除.拆卸.修造.动土.起基.上梁.安床.安门.开渠.开池.入殓.破土.启攒.", "j": "嫁娶.出行.进人口.作灶.入宅.移徙.栽种.赴任.", "c": "生肖冲兔", "s": "煞東", "ch": "除", "zc": "正冲正冲乙卯", "ts": "厨灶门外东南" }, "d0822": { "y": "嫁娶.纳采.订盟.祭祀.祈福.斋醮.普渡.移徙.入宅.出行.安机械.开光.修造.动土.竖柱.上梁.造屋.起基.定磉.安门.安葬.破土.", "j": "开市.立券.置产.作灶.造桥.", "c": "生肖冲马", "s": "煞南", "ch": "定", "zc": "正冲正冲庚午", "ts": "厨灶碓外西南" }, "d0812": { "y": "破屋.坏垣.治病.余事勿取.", "j": "祈福.纳采.订盟.嫁娶.入宅.安葬.", "c": "生肖冲猴", "s": "煞北", "ch": "破", "zc": "正冲正冲庚申", "ts": "厨灶炉外正南" }, "d0802": { "y": "祭祀.进人口.纳财.纳畜.牧养.捕捉.余事勿取.", "j": "开市.入宅.安床.动土.安葬.", "c": "生肖冲狗", "s": "煞南", "ch": "收", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d0831": { "y": "祭祀.沐浴.理发.整手足甲.冠笄.解除.入殓.移柩.破土.启攒.安葬.", "j": "嫁娶.出行.入宅.开市.安门.", "c": "生肖冲兔", "s": "煞東", "ch": "除", "zc": "正冲正冲己卯", "ts": "占门炉外西北" }, "d0826": { "y": "嫁娶.祭祀.祈福.斋醮.普渡.移徙.入宅.动土.治病.开市.交易.立券.开光.修造.造车器.安香.安床.捕捉.畋猎.结网.", "j": "纳采.订盟.经络.行丧.安葬.探病.", "c": "生肖冲狗", "s": "煞南", "ch": "成", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d0821": { "y": "祭祀.理发.作灶.沐浴.修饰垣墙.平治道涂.", "j": "嫁娶.栽种.祈福.造桥.安葬.安门.伐木.作梁.", "c": "生肖冲蛇", "s": "煞西", "ch": "平", "zc": "正冲正冲己巳", "ts": "碓磨床外西南" }, "d0816": { "y": "嫁娶.纳采.订盟.开光.祭祀.出行.理发.动土.安床.放水.开渠.栽种.进人口.", "j": "入宅.上梁.入殓.造屋.探病.作灶.安门.安葬.纳畜.伐木.", "c": "生肖冲鼠", "s": "煞北", "ch": "开", "zc": "正冲正冲甲子", "ts": "占碓磨外正南" }, "d0806": { "y": "移徙.入宅.治病.会亲友.祭祀.祈福.斋醮.安香.移徙.嫁娶.造屋.起基.", "j": "开市.斋醮.安床.出行.经络.", "c": "生肖冲虎", "s": "煞南", "ch": "除", "zc": "正冲正冲甲寅", "ts": "碓磨炉外东南" }, "d0921": { "y": "祭祀.冠笄.捕捉.余事勿取.", "j": "嫁娶.开市.造屋.作梁.合寿木.", "c": "生肖冲鼠", "s": "煞北", "ch": "收", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d0801": { "y": "祭祀.祈福.斋醮.出行.纳采.订盟.安机械.出火.拆卸.修造.动土.起基.移徙.入宅.造庙.入殓.除服.成服.移柩.破土.安葬.谢土.", "j": "嫁娶.开市.栽种.合寿木.", "c": "生肖冲鸡", "s": "煞西", "ch": "成", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d0803": { "y": "祭祀.塑绘.开光.求医.治病.嫁娶.会亲友.放水.掘井.牧养.纳畜.开渠.安碓硙.", "j": "造屋.入宅.作灶.入学.安葬.行丧.", "c": "生肖冲猪", "s": "煞東", "ch": "开", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d0804": { "y": "祭祀.塞穴.结网.畋猎.余事勿取.", "j": "移徙.开市.入宅.嫁娶.开光.安门.", "c": "生肖冲鼠", "s": "煞北", "ch": "闭", "zc": "正冲正冲壬子", "ts": "房床碓外正东" }, "d0805": { "y": "开市.纳财.祭祀.塑绘.安机械.冠笄.会亲友.裁衣.开仓.经络.纳畜.造畜椆栖.教牛马.牧养.", "j": "动土.破土.安葬.治病.", "c": "生肖冲牛", "s": "煞西", "ch": "建", "zc": "正冲正冲癸丑", "ts": "占门厕外正东" }, "d0808": { "y": "纳采.订盟.开光.出行.解除.安香.出火.拆卸.入宅.移徙.修造.上梁.安床.栽种.纳畜.会亲友.安机械.经络.", "j": "伐木.谢土.行丧.祭祀.作灶.动土.破土.安葬.祈福.", "c": "生肖冲龙", "s": "煞北", "ch": "满", "zc": "正冲正冲丙辰", "ts": "仓库栖外东南" }, "d0809": { "y": "修饰垣墙.平治道涂.祭祀.沐浴.作灶.", "j": "嫁娶.词讼.治病.置产.作梁.祈福.安葬.栽种.伐木.安门.", "c": "生肖冲蛇", "s": "煞西", "ch": "平", "zc": "正冲正冲丁巳", "ts": "占房床外东南" }, "d0810": { "y": "嫁娶.祭祀.祈福.求嗣.出火.出行.开光.解除.拆卸.修造.进人口.安香.交易.立券.入宅.移徙.安床.动土.破土.谢土.安葬.入殓.除服.成服.", "j": "斋醮.开市.开仓.作灶.造船.", "c": "生肖冲马", "s": "煞南", "ch": "定", "zc": "正冲正冲戊午", "ts": "占门碓外东南" }, "d0811": { "y": "破土.安葬.移柩.入殓.祭祀.捕捉.除服.成服.余事勿取.", "j": "嫁娶.入宅.开市.交易.", "c": "生肖冲羊", "s": "煞東", "ch": "执", "zc": "正冲正冲己未", "ts": "碓磨厕外东南" }, "d0813": { "y": "嫁娶.开光.祭祀.祈福.求嗣.安香.出火.解除.伐木.入宅.移徙.安床.开市.交易.立券.栽种.出火.出行.安葬.", "j": "掘井.理发.作灶.动土.破土.开池.", "c": "生肖冲鸡", "s": "煞西", "ch": "危", "zc": "正冲正冲辛酉", "ts": "仓库门外正南" }, "d0814": { "y": "安机械.纳采.订盟.祭祀.祈福.求嗣.开光.普渡.出行.出火.拆卸.修造.动土.进人口.开市.交易.立券.移徙.安床.栽种.上梁.纳畜.破土.移柩.安葬.", "j": "入宅.嫁娶.掘井.牧养.", "c": "生肖冲狗", "s": "煞南", "ch": "成", "zc": "正冲正冲壬戌", "ts": "房床栖外正南" }, "d0815": { "y": "嫁娶.祭祀.祈福.求嗣.裁衣.冠笄.经络.修造.进人口.安床.动土.竖柱.上梁.移徙.交易.立券.栽种.会亲友.", "j": "行丧.安葬.出行.作梁.纳畜.伐木.造桥.", "c": "生肖冲猪", "s": "煞東", "ch": "收", "zc": "正冲正冲癸亥", "ts": "占门床外正南" }, "d0818": { "y": "嫁娶.纳采.订盟.祭祀.祈福.求嗣.出行.解除.竖柱.入宅.移徙.纳财.上梁.纳畜.入殓.安葬.启攒.", "j": "栽种.掘井.动土.安床.破土.置产.", "c": "生肖冲虎", "s": "煞南", "ch": "建", "zc": "正冲正冲丙寅", "ts": "仓库炉外西南" }, "d0819": { "y": "解除.祭祀.祈福.求嗣.修造.动土.竖柱.上梁.安床.纳畜.造屋.合脊.起基.入殓.破土.安葬.", "j": "出火.嫁娶.开光.进人口.出行.词讼.开市.入宅.移徙.赴任.", "c": "生肖冲兔", "s": "煞東", "ch": "除", "zc": "正冲正冲丁卯", "ts": "房床门外西南" }, "d0820": { "y": "沐浴.理发.会亲友.塑绘.开光.栽种.牧养.嫁娶.经络.补垣.塞穴.", "j": "开市.入宅.动土.破土.安葬.作灶.上梁.安床.开仓.祈福.", "c": "生肖冲龙", "s": "煞北", "ch": "满", "zc": "正冲正冲戊辰", "ts": "门鸡栖外西南" }, "d0823": { "y": "祭祀.普渡.捕捉.解除.结网.畋猎.入殓.破土.安葬.", "j": "开市.交易.入宅.嫁娶.", "c": "生肖冲羊", "s": "煞東", "ch": "执", "zc": "正冲正冲辛未", "ts": "仓库厕外西南" }, "d0824": { "y": "沐浴.破屋.坏垣.余事勿取.", "j": "斋醮.开市.", "c": "生肖冲猴", "s": "煞北", "ch": "破", "zc": "正冲正冲壬申", "ts": "房床厕外正南" }, "d0825": { "y": "订盟.纳采.祭祀.祈福.安香.出火.开市.立券.入宅.挂匾.造桥.启攒.安葬.", "j": "动土.破土.嫁娶.掘井.安床.", "c": "生肖冲鸡", "s": "煞西", "ch": "危", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d0828": { "y": "嫁娶.订盟.纳采.祭祀.斋醮.普渡.解除.出行.会亲友.开市.纳财.修造.动土.竖柱.上梁.开光.开仓.出货财.纳畜.牧养.开池.破土.启攒.", "j": "出火.入宅.造屋.安门.安葬.", "c": "生肖冲鼠", "s": "煞北", "ch": "开", "zc": "正冲正冲丙子", "ts": "仓库碓外西北" }, "d0829": { "y": "嫁娶.普渡.祭祀.祈福.补垣.塞穴.断蚁.筑堤.入殓.除服.成服.安葬.", "j": "动土.破土.掘井.开光.上梁.词讼.", "c": "生肖冲牛", "s": "煞西", "ch": "闭", "zc": "正冲正冲丁丑", "ts": "房床厕外西北" }, "d0830": { "y": "嫁娶.冠笄.祭祀.沐浴.普渡.出行.纳财.扫舍.纳畜.赴任.", "j": "开市.动土.破土.安床.开仓.上梁.", "c": "生肖冲虎", "s": "煞南", "ch": "建", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d0919": { "y": "嫁娶.纳采.订盟.祭祀.祈福.求嗣.开光.出行.出火.拆卸.修造.动土.进人口.入宅.移徙.安床.上梁.合脊.放水.掘井.破土.移柩.谢土.除服.成服.", "j": "开市.开仓.安门.安葬.", "c": "生肖冲狗", "s": "煞南", "ch": "危", "zc": "正冲正冲戊戌", "ts": "门鸡栖房内东" }, "d0909": { "y": "嫁娶.祭祀.理发.进人口.作灶.移柩.冠笄.会亲友.", "j": "开仓.出货财.伐木.纳畜.开市.上梁.造屋.破土.启攒.栽种.", "c": "生肖冲鼠", "s": "煞北", "ch": "收", "zc": "正冲正冲戊子", "ts": "占门碓房内北" }, "d1021": { "y": "纳采.订盟.开市.交易.立券.会亲友.纳畜.牧养.问名.移徙.解除.作厕.入学.起基.安床.开仓.出货财.安葬.启攒.入殓.除服.成服.", "j": "入宅.上梁.斋醮.出火.谢土.", "c": "生肖冲马", "s": "煞南", "ch": "满", "zc": "正冲正冲庚午", "ts": "厨灶碓外西南" }, "d0901": { "y": "塑绘.冠笄.嫁娶.会亲友.进人口.经络.裁衣.栽种.纳畜.牧养.补垣.塞穴.捕捉.", "j": "祈福.开市.动土.行丧.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "满", "zc": "正冲正冲庚辰", "ts": "厨灶栖外西北" }, "d0902": { "y": "出行.沐浴.订盟.纳采.裁衣.竖柱.上梁.移徙.纳畜.牧养.", "j": "嫁娶.安门.动土.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "平", "zc": "正冲正冲辛巳", "ts": "仓库床外西北" }, "d0903": { "y": "纳采.订盟.嫁娶.祭祀.祈福.普渡.开光.安香.出火.移徙.入宅.竖柱.修造.动土.竖柱.上梁.起基.造屋.安门.造庙.造桥.破土.启攒.安葬.", "j": "开市.立券.纳财.作灶.", "c": "生肖冲马", "s": "煞南", "ch": "定", "zc": "正冲正冲壬午", "ts": "房床碓外正北" }, "d0904": { "y": "祭祀.捕捉.畋猎.纳畜.牧养.入殓.除服.成服.移柩.破土.安葬.启攒.", "j": "嫁娶.纳采.订盟.开市.入宅.", "c": "生肖冲羊", "s": "煞東", "ch": "执", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d0905": { "y": "破屋.坏垣.治病.余事勿取.", "j": "行丧.安葬.", "c": "生肖冲猴", "s": "煞北", "ch": "破", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d0906": { "y": "祈福.斋醮.出行.冠笄.嫁娶.雕刻.开柱眼.入宅.造桥.开市.交易.立券.纳财.入殓.除服.成服.移柩.破土.安葬.启攒.", "j": "动土.破土.订盟.安床.开池.", "c": "生肖冲鸡", "s": "煞西", "ch": "危", "zc": "正冲正冲乙酉", "ts": "厨灶门外正北" }, "d0907": { "y": "嫁娶.纳采.订盟.祭祀.开光.出行.理发.作梁.出火.拆卸.修造.动土.进人口.入宅.移徙.安床.移徙.拆卸.挂匾.栽种.纳畜.破土.安葬.入殓.除服.成服.", "j": "开市.掘井.开渠.造桥.造船.", "c": "生肖冲狗", "s": "煞南", "ch": "危", "zc": "正冲正冲丙戌", "ts": "仓库栖外正北" }, "d0908": { "y": "开市.交易.立券.纳财.挂匾.栽种.祭祀.祈福.开光.拆卸.动土.安床.", "j": "嫁娶.破土.进人口.出行.入宅.移徙.出火.纳畜.词讼.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "成", "zc": "正冲正冲丁亥", "ts": "占房床房内北" }, "d0910": { "y": "祭祀.修坟.除服.成服.启攒.移柩.余事勿取.", "j": "开市.入宅.嫁娶.动土.破土.安葬.", "c": "生肖冲牛", "s": "煞西", "ch": "开", "zc": "正冲正冲己丑", "ts": "碓磨厕房内北" }, "d0911": { "y": "嫁娶.冠笄.安机械.解除.纳畜.牧养.沐浴.伐木.架马.作梁.安门.扫舍.合寿木.安葬.启攒.立碑.修坟.", "j": "祈福.开光.开市.入宅.动土.", "c": "生肖冲虎", "s": "煞南", "ch": "闭", "zc": "正冲正冲庚寅", "ts": "厨灶炉房内北" }, "d0912": { "y": "祭祀.出行.沐浴.扫舍.安葬.余事勿取.", "j": "动土.破土.置产.掘井.", "c": "生肖冲兔", "s": "煞東", "ch": "建", "zc": "正冲正冲辛卯", "ts": "仓库门房内北" }, "d0913": { "y": "嫁娶.纳采.祭祀.解除.出行.修造.动土.开市.上梁.安床.整手足甲.扫舍.求医.治病.起基.定磉.造屋.合脊.", "j": "造庙.行丧.安葬.伐木.作灶.造船.", "c": "生肖冲龙", "s": "煞北", "ch": "除", "zc": "正冲正冲壬辰", "ts": "房床栖房内南" }, "d0914": { "y": "纳采.订盟.开市.交易.立券.挂匾.纳财.栽种.进人口.入宅.移徙.安床.开光.出火.拆卸.安门.修造.", "j": "斋醮.嫁娶.行丧.动土.作灶.安葬.破土.", "c": "生肖冲蛇", "s": "煞西", "ch": "满", "zc": "正冲正冲癸巳", "ts": "占门床房内南" }, "d0915": { "y": "祭祀.沐浴.修饰垣墙.平治道涂.余事勿取.", "j": "嫁娶.入宅.安床.出行.", "c": "生肖冲马", "s": "煞南", "ch": "平", "zc": "正冲正冲甲午", "ts": "占碓磨房内南" }, "d0916": { "y": "开光.祈福.求嗣.斋醮.修造.动土.纳财.造仓.作厕.栽种.牧养.会亲友.", "j": "作灶.出火.进人口.开渠.入宅.移徙.祭祀.", "c": "生肖冲羊", "s": "煞東", "ch": "定", "zc": "正冲正冲乙未", "ts": "厨灶厕房内南" }, "d0917": { "y": "开光.解除.拆卸.修造.动土.竖柱.安门.牧养.安葬.修坟.破土.移柩.", "j": "出火.入宅.移徙.祈福.祭祀.安床.开市.嫁娶.探病.", "c": "生肖冲猴", "s": "煞北", "ch": "执", "zc": "正冲正冲丙申", "ts": "仓库炉房内南" }, "d0918": { "y": "破屋.坏垣.求医.治病.余事勿取.", "j": "移徙.入宅.", "c": "生肖冲鸡", "s": "煞西", "ch": "破", "zc": "正冲正冲丁酉", "ts": "房床门房内南" }, "d0920": { "y": "嫁娶.纳采.订盟.祭祀.祈福.求嗣.开光.解除.进人口.入宅.移徙.出火.安床.开市.交易.立券.挂匾.", "j": "安葬.纳畜.出行.行丧.伐木.栽种.造庙.造桥.", "c": "生肖冲猪", "s": "煞东", "ch": "成", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d0922": { "y": "祭祀.解除.结网.畋猎.取渔.会亲友.入学.移柩.启攒.除服.成服.", "j": "开市.祈福.动土.破土.入殓.安葬.造船.", "c": "生肖冲牛", "s": "煞西", "ch": "开", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d0923": { "y": "冠笄.沐浴.出行.修造.动土.移徙.入宅.破土.安葬.", "j": "嫁娶.开市.祭祀.祈福.斋醮.纳采.修坟.", "c": "生肖冲虎", "s": "煞南", "ch": "闭", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" }, "d0924": { "y": "祭祀.出行.", "j": "嫁娶.入宅.修造.动土.会亲友.破土.", "c": "生肖冲兔", "s": "煞東", "ch": "建", "zc": "正冲正冲癸卯", "ts": "占大门外东北" }, "d0925": { "y": "嫁娶.订盟.纳采.祭祀.祈福.出行.修造.动土.移徙.入宅.", "j": "针灸.伐木.作梁.造庙.行丧.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "除", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d0926": { "y": "出行.开市.交易.立券.安机械.出火.上梁.移徙.", "j": "嫁娶.安葬.动土.造桥.", "c": "生肖冲蛇", "s": "煞西", "ch": "满", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d0927": { "y": "祭祀.沐浴.修饰垣墙.平治道涂.余事勿取.", "j": "斋醮.嫁娶.移徙.出行.上梁.入宅.", "c": "生肖冲马", "s": "煞南", "ch": "平", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d0928": { "y": "嫁娶.造车器.安机械.祭祀.祈福.开光.安香.出火.出行.开市.立券.修造.动土.移徙.入宅.破土.安葬.", "j": "纳采.订盟.架马.词讼.开渠.", "c": "生肖冲羊", "s": "煞東", "ch": "定", "zc": "正冲正冲丁未", "ts": "房床厕外东北" }, "d0929": { "y": "沐浴.捕捉.入殓.除服.成服.破土.启攒.安葬.", "j": "祭祀.嫁娶.安床.开市.入宅.探病.上梁.", "c": "生肖冲猴", "s": "煞北", "ch": "执", "zc": "正冲正冲戊申", "ts": "占门炉外东北" }, "d0930": { "y": "余事勿取.", "j": "探病.余事勿取.", "c": "生肖冲鸡", "s": "煞西", "ch": "破", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d1027": { "y": "造车器.嫁娶.订盟.纳采.会亲友.祭祀.出行.开市.立券.移徙.入宅.破土.安葬.", "j": "上梁.开光.造屋.架马.合寿木.", "c": "生肖冲鼠", "s": "煞北", "ch": "成", "zc": "正冲正冲丙子", "ts": "仓库碓外西北" }, "d1023": { "y": "捕捉.畋猎.余事勿取.", "j": "开市.交易.祭祀.入宅.安葬.", "c": "生肖冲猴", "s": "煞北", "ch": "定", "zc": "正冲正冲壬申", "ts": "房床厕外正南" }, "d1127": { "y": "塑绘.会亲友.安机械.塞穴.结网.裁衣.经络.", "j": "嫁娶.开市.祈福.斋醮.安葬.", "c": "生肖冲羊", "s": "煞東", "ch": "满", "zc": "正冲正冲丁未", "ts": "房床厕外东北" }, "d1001": { "y": "订盟.纳采.祭祀.祈福.安香.出火.修造.动土.上梁.安门.起基.竖柱.上梁.定磉.开池.移徙.入宅.立券.破土.", "j": "嫁娶.造庙.造桥.造船.作灶.安葬.", "c": "生肖冲狗", "s": "煞南", "ch": "危", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d1002": { "y": "开光.求嗣.雕刻.嫁娶.订盟.纳采.出火.拆卸.修造.动土.起基.上梁.放水.移徙.入宅.造仓.造船.开市.开池.纳畜.牧养.挂匾.", "j": "行丧.安葬.合寿木.", "c": "生肖冲猪", "s": "煞東", "ch": "成", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d1003": { "y": "祭祀.嫁娶.捕捉.", "j": "开光.动土.破土.开市.修造.入宅.安门.", "c": "生肖冲鼠", "s": "煞北", "ch": "收", "zc": "正冲正冲壬子", "ts": "房床碓外正东" }, "d1004": { "y": "祭祀.普渡.解除.会亲友.捕捉.畋猎.启攒.除服.成服.移柩.", "j": "嫁娶.开市.动土.掘井.开池.安葬.", "c": "生肖冲牛", "s": "煞西", "ch": "开", "zc": "正冲正冲癸丑", "ts": "占门厕外正东" }, "d1005": { "y": "祭祀.出行.解除.冠笄.嫁娶.伐木.架马.开柱眼.修造.动土.移徙.入宅.开生坟.合寿木.入殓.移柩.破土.安葬.修坟.", "j": "开光.安床.", "c": "生肖冲虎", "s": "煞南", "ch": "闭", "zc": "正冲正冲甲寅", "ts": "碓磨炉外东南" }, "d1006": { "y": "祭祀.祈福.求嗣.出行.沐浴.交易.扫舍.教牛马.", "j": "动土.作灶.行丧.安葬.修坟.", "c": "生肖冲兔", "s": "煞東", "ch": "建", "zc": "正冲正冲乙卯", "ts": "厨灶门外东南" }, "d1007": { "y": "出行.解除.纳采.冠笄.雕刻.修造.动土.起基.上梁.合脊.安床.移徙.入宅.开市.栽种.作厕.", "j": "造庙.安门.行丧.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "除", "zc": "正冲正冲丙辰", "ts": "仓库栖外东南" }, "d1008": { "y": "祭祀.开光.出行.解除.理发.伐木.出火.拆卸.上梁.合脊.安床.造畜椆栖.", "j": "嫁娶.安葬.行丧.词讼.造桥.作灶.破土.动土.", "c": "生肖冲蛇", "s": "煞西", "ch": "除", "zc": "正冲正冲丁巳", "ts": "占房床外东南" }, "d1009": { "y": "纳采.订盟.会亲友.沐浴.理发.裁衣.冠笄.安床.除服.成服.启攒.移柩.安葬.会亲友.开生坟.", "j": "开市.入宅.出行.嫁娶.修坟.祈福.动土.入宅.安门.谢土.上梁.", "c": "生肖冲马", "s": "煞南", "ch": "满", "zc": "正冲正冲戊午", "ts": "占门碓外东南" }, "d1010": { "y": "解除.祭祀.修饰垣墙.平治道涂.造畜椆栖.余事勿取.", "j": "嫁娶.开市.交易.入宅.入学.安葬.", "c": "生肖冲羊", "s": "煞東", "ch": "平", "zc": "正冲正冲己未", "ts": "碓磨厕外东南" }, "d1011": { "y": "入殓.破土.启攒.安葬.除服.成服.余事勿取.", "j": "开市.入宅.祭祀.置产.补垣.塞穴.", "c": "生肖冲猴", "s": "煞北", "ch": "定", "zc": "正冲正冲庚申", "ts": "厨灶炉外正南" }, "d1012": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出行.拆卸.修造.动土.上梁.安床.纳畜.入殓.破土.", "j": "入宅.移徙.掘井.理发.伐木.交易.开市.作灶.", "c": "生肖冲鸡", "s": "煞西", "ch": "执", "zc": "正冲正冲辛酉", "ts": "仓库门外正南" }, "d1013": { "y": "祭祀.沐浴.破屋.坏垣.余事勿取.", "j": "嫁娶.入宅.上梁.出行.安葬.", "c": "生肖冲狗", "s": "煞南", "ch": "破", "zc": "正冲正冲壬戌", "ts": "房床栖外正南" }, "d1014": { "y": "祭祀.求嗣.冠笄.进人口.会亲友.安门.安床.经络.纳财.牧养.畋猎.放水.割蜜.", "j": "祈福.斋醮.纳采.订盟.嫁娶.入宅.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "危", "zc": "正冲正冲癸亥", "ts": "占门床外正南" }, "d1015": { "y": "嫁娶.纳采.订盟.开市.交易.立券.挂匾.祭祀.祈福.开光.造车器.挂匾.出行.入宅.移徙.安床.安门.拆卸.修造.动土.栽种.安葬.破土.启攒.除服.成服.入殓.立碑.", "j": "探病.纳畜.伐木.起基.作梁.造屋.", "c": "生肖冲鼠", "s": "煞北", "ch": "成", "zc": "正冲正冲甲子", "ts": "占碓磨外正南" }, "d1016": { "y": "祭祀.冠笄.移徙.会亲友.纳财.理发.捕捉.", "j": "嫁娶.开市.开池.作厕.破土.", "c": "生肖冲牛", "s": "煞西", "ch": "收", "zc": "正冲正冲乙丑", "ts": "厨灶厕外西南" }, "d1017": { "y": "祭祀.祈福.求嗣.斋醮.开光.出行.嫁娶.求医.治病.动土.破土.入学.起基.扫舍.竖柱.上梁.开仓.出货财.置产.栽种.牧养.开生坟.谢土.立碑.", "j": "安门.安床.裁衣.入宅.安葬.", "c": "生肖冲虎", "s": "煞南", "ch": "开", "zc": "正冲正冲丙寅", "ts": "仓库炉外西南" }, "d1018": { "y": "嫁娶.裁衣.冠笄.合帐.祭祀.出行.安床.移徙.塞穴.入殓.破土.移柩.安葬.", "j": "开市.出行.栽种.置产.词讼.安门.掘井.开光.", "c": "生肖冲兔", "s": "煞東", "ch": "闭", "zc": "正冲正冲丁卯", "ts": "房床门外西南" }, "d1019": { "y": "祭祀.造车器.出行.修造.上梁.造屋.安门.安床.造畜椆栖.教牛马.", "j": "出货财.开仓.动土.破土.安葬.行丧.伐木.开渠.栽种.", "c": "生肖冲龙", "s": "煞北", "ch": "建", "zc": "正冲正冲戊辰", "ts": "门鸡栖外西南" }, "d1020": { "y": "祭祀.开光.出行.解除.伐木.作梁.出火.拆卸.入宅.移徙.安床.修造.造畜椆栖.扫舍.", "j": "造庙.嫁娶.掘井.栽种.造桥.作灶.动土.", "c": "生肖冲蛇", "s": "煞西", "ch": "除", "zc": "正冲正冲己巳", "ts": "碓磨床外西南" }, "d1022": { "y": "祭祀.平治道涂.余事勿取.", "j": "嫁娶.开市.", "c": "生肖冲羊", "s": "煞東", "ch": "平", "zc": "正冲正冲辛未", "ts": "仓库厕外西南" }, "d1024": { "y": "嫁娶.纳采.订盟.祭祀.祈福.求嗣.斋醮.开光.安香.出火.造庙.移徙.出行.入宅.造庙.起基.竖柱.上梁.安床.纳畜.捕捉.纳婿.安葬.", "j": "开市.破土.掘井.合寿木.", "c": "生肖冲鸡", "s": "煞西", "ch": "执", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d1025": { "y": "祭祀.沐浴.解除.破屋.坏垣.余事勿取.", "j": "开市.嫁娶.", "c": "生肖冲狗", "s": "煞南", "ch": "破", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d1026": { "y": "订盟.纳采.会亲友.交易.立券.纳财.栽种.纳畜.牧养.", "j": "嫁娶.开市.入宅.祈福.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "危", "zc": "正冲正冲乙亥", "ts": "厨灶床外正西" }, "d1028": { "y": "祭祀.作灶.纳财.捕捉.畋猎.余事勿取.", "j": "动土.破土.开市.安葬.", "c": "生肖冲牛", "s": "煞西", "ch": "收", "zc": "正冲正冲丁丑", "ts": "房床厕外西北" }, "d1029": { "y": "嫁娶.订盟.纳采.祭祀.祈福.出行.求医.治病.出火.移徙.入宅.", "j": "开市.开仓.出货财.安床.安门.安葬.", "c": "生肖冲虎", "s": "煞南", "ch": "开", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d1030": { "y": "冠笄.祭祀.沐浴.作灶.理发.整手足甲.扫舍.补垣.塞穴.入殓.破土.启攒.", "j": "开光.嫁娶.会亲友.栽种.针灸.安葬.", "c": "生肖冲兔", "s": "煞東", "ch": "闭", "zc": "正冲正冲己卯", "ts": "占门炉外西北" }, "d1031": { "y": "纳采.订盟.嫁娶.祭祀.祈福.求嗣.置产.求医.治病.开市.交易.立券.会亲友.移徙.竖柱.上梁.造屋.合脊.安门.放水.捕捉.纳畜.", "j": "造庙.造船.动土.破土.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "建", "zc": "正冲正冲庚辰", "ts": "厨灶栖外西北" }, "d1107": { "y": "破屋.坏垣.求医.治病.余事勿取.", "j": "嫁娶.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "破", "zc": "正冲正冲丁亥", "ts": "占房床房内北" }, "d1117": { "y": "嫁娶.纳采.订盟.祭祀.斋醮.开光.安香.出火.出行.出火.拆卸.动土.祈福.进人口.纳财.交易.立券.移徙.安床.修造.安葬.除服.成服.", "j": "置产.掘井.词讼.栽种.", "c": "生肖冲鸡", "s": "煞西", "ch": "定", "zc": "正冲正冲丁酉", "ts": "房床门房内南" }, "d1128": { "y": "纳采.移徙.纳财.开市.交易.立券.纳财.入宅.修造.动土.竖柱.起基.定磉.造庙.安香.出火.修饰垣墙.平治道涂.会亲友.出行.开池.作厕.", "j": "开仓.造屋.造桥.祭祀.", "c": "生肖冲猴", "s": "煞北", "ch": "平", "zc": "正冲正冲戊申", "ts": "占门炉外东北" }, "d1108": { "y": "纳采.订盟.嫁娶.祭祀.祈福.雕刻.移徙.开市.入宅.出行.动土.会亲友.入学.修造.动土.起基.安门.安床.造庙.解除.纳财.开池.造畜椆栖.牧养.牧养.", "j": "上梁.开仓.出货财.造屋.造船.", "c": "生肖冲鼠", "s": "煞北", "ch": "危", "zc": "正冲正冲戊子", "ts": "占门碓房内北" }, "d1126": { "y": "嫁娶.造车器.出行.会亲友.移徙.入宅.修造.动土.雕刻.开光.安香.出火.理发.会亲友.造屋.合脊.起基.归岫.安门.拆卸.扫舍.栽种.造畜椆栖.", "j": "开市.纳采.造庙.安床.开渠.安葬.", "c": "生肖冲马", "s": "煞南", "ch": "除", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d1118": { "y": "嫁娶.纳采.订盟.祭祀.开光.出行.解除.伐木.出火.入宅.移徙.拆卸.修造.栽种.安葬.入殓.", "j": "破土.动土.安门.作灶.开市.交易.", "c": "生肖冲狗", "s": "煞南", "ch": "执", "zc": "正冲正冲戊戌", "ts": "门鸡栖房内东" }, "d1122": { "y": "祭祀.沐浴.捕捉.畋猎.结网.扫舍.", "j": "嫁娶.纳采.订盟.安床.动土.破土.安葬.", "c": "生肖冲虎", "s": "煞南", "ch": "收", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" }, "d1226": { "y": "祭祀.沐浴.破屋.坏垣.余事勿取.", "j": "嫁娶.移徙.入宅.探病.出行.造屋.", "c": "生肖冲鼠", "s": "煞北", "ch": "破", "zc": "正冲正冲丙子", "ts": "仓库碓外西北" }, "d1101": { "y": "出行.造车器.造畜椆栖.解除.冠笄.裁衣.作梁.雕刻.会亲友.移徙.入宅.安机械.造畜椆栖.开市.扫舍.", "j": "嫁娶.动土.破土.修坟.", "c": "生肖冲蛇", "s": "煞西", "ch": "除", "zc": "正冲正冲辛巳", "ts": "仓库床外西北" }, "d1102": { "y": "沐浴.理发.冠笄.安床.开市.立券.会亲友.交易.纳财.结网.教牛马.", "j": "移徙.入宅.出行.祈福.嫁娶.", "c": "生肖冲马", "s": "煞南", "ch": "满", "zc": "正冲正冲壬午", "ts": "房床碓外正北" }, "d1103": { "y": "祭祀.造畜椆栖.修饰垣墙.平治道涂.余事勿取.", "j": "嫁娶.开市.安床.掘井.", "c": "生肖冲羊", "s": "煞東", "ch": "平", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d1104": { "y": "捕捉.结网.入殓.除服.成服.移柩.破土.安葬.启攒.立碑.", "j": "嫁娶.祭祀.入宅.造屋.移徙.", "c": "生肖冲猴", "s": "煞北", "ch": "定", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d1105": { "y": "祭祀.祈福.求嗣.斋醮.造庙.出火.安机械.会亲友.开市.交易.立券.纳财.习艺.经络.求医.治病.开池.作厕.畋猎.结网.栽种.牧养.安葬.破土.启攒.", "j": "开光.嫁娶.掘井.伐木.作梁.", "c": "生肖冲鸡", "s": "煞西", "ch": "执", "zc": "正冲正冲乙酉", "ts": "厨灶门外正北" }, "d1106": { "y": "破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲狗", "s": "煞南", "ch": "破", "zc": "正冲正冲丙戌", "ts": "仓库栖外正北" }, "d1109": { "y": "祭祀.祈福.求嗣.开光.解除.伐木.拆卸.修造.栽种.纳畜.安葬.修坟.立碑.", "j": "嫁娶.进人口.入宅.移徙.出火.出行.", "c": "生肖冲牛", "s": "煞西", "ch": "成", "zc": "正冲正冲己丑", "ts": "碓磨厕房内北" }, "d1110": { "y": "沐浴.扫舍.捕捉.畋猎.解除.塞穴.余事勿取.", "j": "嫁娶.入宅.开市.安床.破土.修坟.", "c": "生肖冲虎", "s": "煞南", "ch": "收", "zc": "正冲正冲庚寅", "ts": "厨灶炉房内北" }, "d1111": { "y": "嫁娶.冠笄.祭祀.祈福.求嗣.斋醮.开光.出行.解除.动土.开市.交易.立券.挂匾.拆卸.破土.", "j": "伐木.上梁.修造.入殓.理发.会亲友.入宅.安门.安葬.作灶.", "c": "生肖冲兔", "s": "煞東", "ch": "开", "zc": "正冲正冲辛卯", "ts": "仓库门房内北" }, "d1112": { "y": "合帐.裁衣.嫁娶.安床.入殓.移柩.破土.造畜椆栖.", "j": "置产.造船.开光.掘井.作灶.", "c": "生肖冲龙", "s": "煞北", "ch": "闭", "zc": "正冲正冲壬辰", "ts": "房床栖房内南" }, "d1113": { "y": "解除.修饰垣墙.冠笄.出行.余事勿取.", "j": "开市.动土.破土.嫁娶.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "建", "zc": "正冲正冲癸巳", "ts": "占门床房内南" }, "d1114": { "y": "纳采.订盟.嫁娶.祭祀.祈福.求嗣.开光.出行.解除.进人口.开市.立券.挂匾.入宅.移徙.安门.栽种.动土.求医.治病.会亲友.起基.修造.造屋.安葬.", "j": "作灶.经络.安床.", "c": "生肖冲马", "s": "煞南", "ch": "除", "zc": "正冲正冲甲午", "ts": "占碓磨房内南" }, "d1115": { "y": "祭祀.塑绘.理发.会亲友.牧养.开池.造畜椆栖.畋猎.结网.", "j": "祈福.谢土.安葬.上梁.作灶.开市.嫁娶.出行.入宅.动土.", "c": "生肖冲羊", "s": "煞東", "ch": "满", "zc": "正冲正冲乙未", "ts": "厨灶厕房内南" }, "d1116": { "y": "出行.纳财.开市.交易.立券.动土.移徙.入宅.裁衣.会亲友.拆卸.进人口.安香.经络.出货财.修饰垣墙.平治道涂.", "j": "造庙.谢土.作灶.作梁.伐木.安葬.行丧.修坟.探病.", "c": "生肖冲猴", "s": "煞北", "ch": "平", "zc": "正冲正冲丙申", "ts": "仓库炉房内南" }, "d1119": { "y": "祭祀.解除.破屋.坏垣.求医.治病.余事勿取.", "j": "嫁娶.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "破", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d1120": { "y": "祭祀.扫舍.破土.安葬.除服.成服.启攒.移柩.入殓.立碑.余事勿取.", "j": "祭祀.嫁娶.入宅.修造.动土.", "c": "生肖冲鼠", "s": "煞北", "ch": "危", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d1121": { "y": "订盟.纳采.会亲友.祭祀.祈福.修造.动土.安机械.破土.安葬.", "j": "嫁娶.移徙.出火.开市.入宅.", "c": "生肖冲牛", "s": "煞西", "ch": "成", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d1123": { "y": "开市.纳财.出行.祭祀.祈福.求嗣.斋醮.问名.入学.起基.定磉.置产.开渠.掘井.拆卸.栽种.纳畜.牧养.动土.破土.启攒.", "j": "移徙.入宅.出火.入殓.安葬.", "c": "生肖冲兔", "s": "煞東", "ch": "开", "zc": "正冲正冲癸卯", "ts": "占大门外东北" }, "d1124": { "y": "祭祀.理发.置产.塞穴.除服.成服.移柩.入殓.破土.安葬.", "j": "嫁娶.入宅.安床.掘井.开光.", "c": "生肖冲龙", "s": "煞北", "ch": "闭", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d1125": { "y": "祭祀.沐浴.出行.余事勿取.", "j": "开市.动土.破土.行丧.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "建", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d1129": { "y": "订盟.纳采.纳财.开市.立券.祭祀.祈福.移徙.入宅.出行.造屋.起基.修造.动土.竖柱.上梁.安门.安香.出火.教牛马.会亲友.破土.", "j": "嫁娶.安葬.掘井.置产.造船.", "c": "生肖冲鸡", "s": "煞西", "ch": "定", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d1130": { "y": "嫁娶.订盟.纳采.祭祀.祈福.塑绘.开光.移徙.安床.伐木.作梁.捕捉.畋猎.结网.求医.治病.解除.安葬.除服.成服.移柩.入殓.立碑.谢土.", "j": "开市.造庙.动土.破土.", "c": "生肖冲狗", "s": "煞南", "ch": "执", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d1206": { "y": "嫁娶.冠笄.安床.纳采.会亲友.塞穴.捕捉.置产.造畜椆栖.", "j": "开光.掘井.安葬.谢土.修坟.", "c": "生肖冲龙", "s": "煞北", "ch": "闭", "zc": "正冲正冲丙辰", "ts": "仓库栖外东南" }, "d1216": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出行.解除.入宅.移徙.纳畜.入殓.破土.修坟.立碑.", "j": "伐木.作梁.动土.安床.破土.栽种.造桥.", "c": "生肖冲虎", "s": "煞南", "ch": "成", "zc": "正冲正冲丙寅", "ts": "仓库炉外西南" }, "d1229": { "y": "祭祀.沐浴.作灶.纳财.捕捉.畋猎.安床.扫舍.", "j": "开市.斋醮.破土.安葬.", "c": "生肖冲兔", "s": "煞東", "ch": "收", "zc": "正冲正冲己卯", "ts": "占门炉外西北" }, "d1222": { "y": "订盟.纳采.会亲友.安机械.开光.修造.动土.竖柱.上梁.造屋.起基.造桥.栽种.纳畜.造畜椆栖.移柩.入殓.启攒.修坟.立碑.安葬.", "j": "祈福.出火.嫁娶.入宅.开市.动土.破土.", "c": "生肖冲猴", "s": "煞北", "ch": "满", "zc": "正冲正冲壬申", "ts": "房床厕外正南" }, "d1209": { "y": "嫁娶.纳采.订盟.造车器.祭祀.祈福.造庙.安香.出火.出行.归宁.入学.入宅.交易.立券.求医.治病.修造.动土.竖柱.上梁.造屋.起基.安门.", "j": "斋醮.伐木.作梁.安葬.行丧.", "c": "生肖冲羊", "s": "煞東", "ch": "除", "zc": "正冲正冲己未", "ts": "碓磨厕外东南" }, "d1228": { "y": "纳采.订盟.移徙.入宅.出行.安机械.会亲友.祭祀.祈福.斋醮.开光.安香.出火.解除.求医.针灸.治病.造屋.起基.修造.安门.造船.纳畜.牧养.移柩.入殓.启攒.谢土.修坟.立碑.", "j": "嫁娶.动土.安床.造桥.掘井.", "c": "生肖冲虎", "s": "煞南", "ch": "成", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d1208": { "y": "交易.进人口.祭祀.沐浴.捕捉.入殓.除服.成服.安葬.谢土.启攒.修坟.", "j": "斋醮.入宅.修造.动土.破土.", "c": "生肖冲马", "s": "煞南", "ch": "建", "zc": "正冲正冲戊午", "ts": "占门碓外东南" }, "d1201": { "y": "破屋.坏垣.祭祀.余事勿取.", "j": "嫁娶.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "破", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d1202": { "y": "嫁娶.纳采.订盟.祭祀.冠笄.裁衣.伐木.作梁.架马.定磉.开柱眼.作灶.移徙.安床.畋猎.结网.开池.作厕.除服.成服.启攒.入殓.移柩.安葬.", "j": "造屋.造船.动土.破土.", "c": "生肖冲鼠", "s": "煞北", "ch": "危", "zc": "正冲正冲壬子", "ts": "房床碓外正东" }, "d1203": { "y": "纳采.订盟.祭祀.祈福.求嗣.斋醮.开光.会亲友.解除.入学.纳财.交易.立券.经络.起基.动土.定磉.开池.栽种.纳畜.牧养.破土.入殓.立碑.安葬.", "j": "嫁娶.开市.入宅.出火.移徙.", "c": "生肖冲牛", "s": "煞西", "ch": "成", "zc": "正冲正冲癸丑", "ts": "占门厕外正东" }, "d1204": { "y": "捕捉.畋猎.会亲友.解除.入殓.除服.成服.移柩.余事勿取.", "j": "安床.安门.破土.修坟.安葬.", "c": "生肖冲虎", "s": "煞南", "ch": "收", "zc": "正冲正冲甲寅", "ts": "碓磨炉外东南" }, "d1205": { "y": "祭祀.祈福.求嗣.斋醮.沐浴.冠笄.出行.理发.拆卸.解除.起基.动土.定磉.安碓硙.开池.掘井.扫舍.除服.成服.移柩.启攒.立碑.谢土.", "j": "移徙.入宅.安门.作梁.安葬.", "c": "生肖冲兔", "s": "煞東", "ch": "开", "zc": "正冲正冲乙卯", "ts": "厨灶门外东南" }, "d1207": { "y": "沐浴.冠笄.补垣.塞穴.合帐.裁衣.修造.作梁.开柱眼.安碓硙.筑堤.作厕.断蚁.", "j": "移徙.入宅.嫁娶.祈福.开光.掘井.", "c": "生肖冲蛇", "s": "煞西", "ch": "闭", "zc": "正冲正冲丁巳", "ts": "占房床外东南" }, "d1210": { "y": "纳采.订盟.开市.交易.立券.出行.会亲友.安机械.竖柱.上梁.平治道涂.伐木.拆卸.造屋.起基.安床.安门.解除.安葬.启攒.除服.成服.修坟.立碑.移柩.入殓.", "j": "嫁娶.动土.破土.祈福.出火.入宅.", "c": "生肖冲猴", "s": "煞北", "ch": "满", "zc": "正冲正冲庚申", "ts": "厨灶炉外正南" }, "d1211": { "y": "祭祀.平治道涂.除服.成服.安葬.余事勿取.", "j": "嫁娶.入宅.纳采.订盟.掘井.", "c": "生肖冲鸡", "s": "煞西", "ch": "平", "zc": "正冲正冲辛酉", "ts": "仓库门外正南" }, "d1212": { "y": "纳采.订盟.祭祀.祈福.开光.安香.出火.出行.会亲友.安机械.修造.动土.竖柱.上梁.造屋.起基.定磉.安床.安门.拆卸.移徙.造桥.造船.安葬.破土.入殓.", "j": "开市.造庙.置产.掘井.", "c": "生肖冲狗", "s": "煞南", "ch": "定", "zc": "正冲正冲壬戌", "ts": "房床栖外正南" }, "d1213": { "y": "嫁娶.冠笄.祭祀.祈福.求嗣.斋醮.进人口.会亲友.伐木.作梁.开柱眼.安床.掘井.捕捉.畋猎.", "j": "开生坟.破土.行丧.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "执", "zc": "正冲正冲癸亥", "ts": "占门床外正南" }, "d1214": { "y": "破屋.坏垣.治病.余事勿取.", "j": "移徙.入宅.", "c": "生肖冲鼠", "s": "煞北", "ch": "破", "zc": "正冲正冲甲子", "ts": "占碓磨外正南" }, "d1215": { "y": "安床.架马.祭祀.塑绘.开光.出行.理发.伐木.作梁.开柱眼.作厕.畋猎.破土.入殓.除服.成服.移柩.启攒.修坟.立碑.", "j": "作灶.安门.造桥.开市.安葬.", "c": "生肖冲牛", "s": "煞西", "ch": "危", "zc": "正冲正冲乙丑", "ts": "厨灶厕外西南" }, "d1217": { "y": "祭祀.沐浴.理发.纳财.进人口.栽种.扫舍.捕捉.畋猎.结网.", "j": "会亲友.安葬.入宅.移徙.安床.开市.行丧.出火.作灶.安门.", "c": "生肖冲兔", "s": "煞東", "ch": "收", "zc": "正冲正冲丁卯", "ts": "房床门外西南" }, "d1218": { "y": "纳采.订盟.祭祀.祈福.求嗣.塑绘.解除.拆卸.修造.动土.竖柱.上梁.安门.置产.开池.掘井.纳畜.安床.栽种.造畜椆栖.破土.移柩.立碑.", "j": "嫁娶.开市.出火.进人口.入殓.赴任.入宅.移徙.出行.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "开", "zc": "正冲正冲戊辰", "ts": "门鸡栖外西南" }, "d1219": { "y": "入宅.移徙.出行.进人口.修造.动土.起基.上梁.安门.造仓.补垣.塞穴.造畜椆栖.", "j": "嫁娶.开市.安床.栽种.安葬.祈福.开光.掘井.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "闭", "zc": "正冲正冲己巳", "ts": "碓磨床外西南" }, "d1220": { "y": "造畜椆栖.教牛马.", "j": "入宅.移徙.分居.作灶.出火.安香.动土.嫁娶.掘井.扫舍.造桥.", "c": "生肖冲马", "s": "煞南", "ch": "建", "zc": "正冲正冲庚午", "ts": "厨灶碓外西南" }, "d1221": { "y": "订盟.纳采.造车器.祭祀.祈福.出行.安香.修造.动土.上梁.开市.交易.立券.移徙.入宅.会亲友.安机械.栽种.纳畜.造屋.起基.安床.造畜椆栖.", "j": "破土.安葬.行丧.开生坟.", "c": "生肖冲羊", "s": "煞東", "ch": "除", "zc": "正冲正冲辛未", "ts": "仓库厕外西南" }, "d1223": { "y": "祭祀.平治道涂.修坟.除服.成服.余事勿取.", "j": "移徙.入宅.嫁娶.掘井.安葬.", "c": "生肖冲鸡", "s": "煞西", "ch": "平", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d1224": { "y": "嫁娶.冠笄.祭祀.祈福.求嗣.雕刻.开光.安香.出行.入学.修造.动土.竖柱.上梁.造屋.起基.安门.出火.移徙.入宅.掘井.造畜椆栖.安葬.破土.除服.成服.", "j": "开市.纳采.订盟.作灶.造庙.造船.经络.", "c": "生肖冲狗", "s": "煞南", "ch": "定", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d1225": { "y": "嫁娶.订盟.纳采.祭祀.祈福.求嗣.斋醮.安香.出火.修造.起基.造屋.合脊.安门.安碓硙.动土.上梁.移徙.入宅.", "j": "出行.掘井.破土.行丧.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "执", "zc": "正冲正冲乙亥", "ts": "厨灶床外正西" }, "d1227": { "y": "冠笄.纳财.掘井.开池.出火.安床.交易.立券.畋猎.结网.理发.放水.", "j": "安门.动土.破土.行丧.安葬.成服.", "c": "生肖冲牛", "s": "煞西", "ch": "危", "zc": "正冲正冲丁丑", "ts": "房床厕外西北" }, "d1230": { "y": "祈福.斋醮.纳采.订盟.解除.架马.开柱眼.修造.动土.起基.上梁.归岫.造屋.合脊.掘井.除服.成服.破土.栽种.", "j": "移徙.开市.入宅.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "开", "zc": "正冲正冲庚辰", "ts": "厨灶栖外西北" }, "d1231": { "y": "纳采.订盟.祭祀.沐浴.冠笄.合帐.裁衣.修造.动土.拆卸.移徙.入宅.安门.开仓.筑堤.作厕.栽种.纳畜.补垣.塞穴.", "j": "嫁娶.祈福.开光.掘井.安葬.行丧.", "c": "生肖冲蛇", "s": "煞西", "ch": "闭", "zc": "正冲正冲辛巳", "ts": "仓库床外西北" } } ukui-panel-4.0.0.4/plugin-calendar/html/hlnew/hl2027.json0000644000175000017500000012472114560306203021314 0ustar fengfeng{ "d0101": { "j": "开市.纳采.订盟.作灶.造庙", "y": "嫁娶.冠笄.祭祀.祈福.求嗣" }, "d0102": { "j": "出行.掘井.破土.行丧.安葬", "y": "嫁娶.订盟.纳采.祭祀.祈福" }, "d0103": { "j": "嫁娶.移徙.入宅.探病.出行", "y": "祭祀.沐浴.破屋.坏垣.余事勿取" }, "d0104": { "j": "安门.动土.破土.行丧.安葬", "y": "冠笄.纳财.掘井.开池.出火" }, "d0105": { "j": "安床.伐木.祈福.纳畜", "y": "嫁娶.开市.交易.立券.开光" }, "d0106": { "j": "余事勿取", "y": "祭祀.入殓.破土.除服.成服" }, "d0107": { "j": "伐木.行丧.作灶.作梁.安葬", "y": "嫁娶.祭祀.塑绘.开光.出行" }, "d0108": { "j": "嫁娶.栽种.安葬.理髮.造庙", "y": "开市.交易.立券.纳财.纳畜" }, "d0109": { "j": "置产.嫁娶.出行.开光.栽种", "y": "安床.裁衣.交易.立券.入殓" }, "d0110": { "j": "嫁娶.动土.开池.安葬", "y": "祭祀.解除.造畜稠.教牛马.针灸" }, "d0111": { "j": "入宅.安门.祭祀.谢土", "y": "沐浴.塑绘.开光.纳采.订盟" }, "d0112": { "j": "掘井.祈福.谢土.动土.入宅", "y": "嫁娶.出行.理髮.安床.启钻" }, "d0113": { "j": "移徙.入宅.掘井.造庙.栽种", "y": "解除.平治道涂.余事勿取" }, "d0114": { "j": "开市.行丧.栽种.出行.出货财", "y": "嫁娶.祭祀.开光.伐木.出火" }, "d0115": { "j": "伐木.开市.交易.上樑.作灶", "y": "嫁娶.纳采.订盟.入宅.移徙" }, "d0116": { "j": "开市.动土.破土", "y": "祭祀.破屋.坏垣.解除.余事勿取" }, "d0117": { "j": "祈福.造庙.祭祀.安床.谢土", "y": "嫁娶.纳采.订盟.开光.安香" }, "d0118": { "j": "嫁娶.入宅.作灶.纳采.订盟", "y": "祭祀.斋醮.入殓.破土.启钻" }, "d0119": { "j": "嫁娶.开市.入宅.安床.破土", "y": "祭祀.斋醮.纳财.捕捉.畋猎" }, "d0120": { "j": "嫁娶.合帐.入宅.行丧.安葬", "y": "纳采.订盟.祭祀.祈福.求嗣" }, "d0121": { "j": "入宅.置产.嫁娶.动土.栽种", "y": "祭祀.祈福.求嗣.沐浴.问名" }, "d0122": { "j": "嫁娶.入宅.出行.动土.破土", "y": "祭祀.教牛马.造畜稠.祭祀.会亲友" }, "d0123": { "j": "作灶.安葬.祭祀.开市.纳采", "y": "嫁娶.开光.解除.出火.拆卸" }, "d0124": { "j": "挂匾.入宅.上樑.祈福.词讼", "y": "出行.起基.安床.纳财.交易" }, "d0125": { "j": "开光.嫁娶.开仓.出货财.造船", "y": "平治道涂.余事勿取" }, "d0126": { "j": "开市.出行.安葬.行丧", "y": "嫁娶.订盟.纳采.会亲友.祭祀" }, "d0127": { "j": "纳采.订盟.嫁娶.上樑.开市", "y": "沐浴.捕捉.畋猎.理髮.整手足甲" }, "d0128": { "j": "斋醮.嫁娶.开市", "y": "祭祀.破屋.坏垣.余事勿取" }, "d0129": { "j": "祈福.嫁娶.安床.入宅.造船", "y": "沐浴.开仓.出货财.开市.交易" }, "d0130": { "j": "造庙.入宅.修造.安葬.行丧", "y": "祭祀.沐浴.补垣.塞穴.断蚁" }, "d0131": { "j": "开市.安床.安葬.修坟", "y": "嫁娶.纳采.订盟.问名.祭祀" }, "d0201": { "j": "造庙.嫁娶.出行.动土.安葬", "y": "订盟.纳采.会亲友.祭祀.斋醮" }, "d0202": { "j": "开光.嫁娶.开市.动土.破土", "y": "交易.立券.纳财.安床.裁衣" }, "d0203": { "j": "破土.动土.安葬", "y": "祭祀.解除.教牛马.会亲友.余事勿取" }, "d0204": { "j": "诸事不宜", "y": "裁衣.伐木.作梁.纳财.交易" }, "d0205": { "j": "", "y": "动土.上樑.进人口.入宅.移徙" }, "d0206": { "j": "入宅.作灶.治病.安葬.移徙", "y": "嫁娶.冠笄.纳采.出行.会亲友" }, "d0207": { "j": "诸事不宜", "y": "修饰垣墙" }, "d0208": { "j": "开光.盖屋.动土.作灶.栽种", "y": "造车器.纳采.订盟.祭祀.祈福" }, "d0209": { "j": "开市.作灶.安床.入宅.上樑", "y": "动土.入殓.嫁娶.移柩.安葬" }, "d0210": { "j": "开市.嫁娶", "y": "求医.治病.破屋.坏垣.余事勿取" }, "d0211": { "j": "开市.嫁娶.安床.会亲友.入宅", "y": "祭祀.斋醮.沐浴.开生坟.除服" }, "d0212": { "j": "嫁娶.入宅", "y": "祭祀.塞穴.结网.破土.谢土" }, "d0213": { "j": "嫁娶.词讼.行丧.安葬.牧养", "y": "祭祀.沐浴.理髮.作灶.结网" }, "d0214": { "j": "入宅.安葬.伐木.作梁.纳畜", "y": "嫁娶.祭祀.开光.祈福.求嗣" }, "d0215": { "j": "栽种.开光.出行.针灸.嫁娶", "y": "祭祀.祈福.求嗣.纳畜.入殓" }, "d0216": { "j": "入宅.出行.移徙.祭祀.嫁娶", "y": "开光.解除.伐木.竖柱.上樑" }, "d0217": { "j": "移徙.入宅.出火.作灶.掘井", "y": "祭祀.祈福.求嗣.开光.嫁娶" }, "d0218": { "j": "嫁娶.开市.动土.作灶.安葬", "y": "会亲友.冠笄.安床.会亲友.安机械" }, "d0219": { "j": "祭祀.祈福.安葬.安门", "y": "作灶" }, "d0220": { "j": "经络.探病.盖屋.作灶.动土", "y": "嫁娶.祭祀.冠笄.修饰垣墙.置产" }, "d0221": { "j": "开市.入宅.斋醮", "y": "纳采.嫁娶.祭祀.祈福.出行" }, "d0222": { "j": "嫁娶.安葬", "y": "祭祀.沐浴.解除.理髮.扫舍" }, "d0223": { "j": "安床.作灶.造船.会亲友", "y": "纳采.订盟.祭祀.祈福.安香" }, "d0224": { "j": "嫁娶.安门.移徙.入宅.安葬", "y": "塞穴.结网.取渔.畋猎" }, "d0225": { "j": "嫁娶.开市.安葬.破土", "y": "纳采.祭祀.祈福.出行.会亲友" }, "d0226": { "j": "移徙.入宅.出火.安门.安葬", "y": "纳采.嫁娶.祭祀.祈福.出行" }, "d0227": { "j": "嫁娶.动土.开光.盖屋.破土", "y": "祭祀.祈福.求嗣.斋醮.入殓" }, "d0228": { "j": "祭祀.移徙.入宅.动土.破土", "y": "纳采.会亲友.竖柱.上樑.立券" }, "d0301": { "j": "开光.嫁娶.作灶.掘井.纳畜", "y": "祭祀.祈福.斋醮.出行.开市" }, "d0302": { "j": "开市.动土.安葬.破土", "y": "会亲友.求嗣.理髮.冠笄.结网" }, "d0303": { "j": "嫁娶.祈福.掘井.安葬", "y": "祭祀.平治道涂.余事勿取" }, "d0304": { "j": "置产.盖屋.合嵴.开光.探病", "y": "祈福.求嗣.斋醮.纳采.嫁娶" }, "d0305": { "j": "开光.开市.入宅.动土.盖屋", "y": "入学.习艺.出行.纳采.订盟" }, "d0306": { "j": "入宅.安门", "y": "祭祀.开光.塑绘.祈福.斋醮" }, "d0307": { "j": "诸事不宜", "y": "祭祀.治病.破屋.坏垣.余事勿取" }, "d0308": { "j": "造庙.造船.动土.破土.安葬", "y": "纳采.订盟.嫁娶.祭祀.祈福" }, "d0309": { "j": "嫁娶.行丧.架马.作梁.理髮", "y": "开市.立券.交易.挂匾.祭祀" }, "d0310": { "j": "置产.伐木.纳畜.造畜稠.安葬", "y": "理髮.冠笄.嫁娶.进人口" }, "d0311": { "j": "合帐.开市.安葬.入殓", "y": "嫁娶.祭祀.开光.祈福.求嗣" }, "d0312": { "j": "嫁娶.祭祀.开光.出行.出火", "y": "安床.伐木.拆卸.修造.动土" }, "d0313": { "j": "祈福.动土.移徙.入宅", "y": "祭祀.祈福.求嗣.斋醮.嫁娶" }, "d0314": { "j": "嫁娶.作灶.掘井.安葬", "y": "塞穴.整手足甲.解除.捕捉.畋猎" }, "d0315": { "j": "动土.破土.安葬.行丧.赴任", "y": "纳财.开市.立券.交易.开光" }, "d0316": { "j": "开仓.出货财.盖屋.作灶.开市", "y": "祭祀.祈福.嫁娶.冠笄.修饰垣墙" }, "d0317": { "j": "动土.伐木.安葬.行丧", "y": "嫁娶.祭祀.开光.祈福.求嗣" }, "d0318": { "j": "开市.交易.作灶.纳财.上樑", "y": "嫁娶.开光.祭祀.祈福.求嗣" }, "d0319": { "j": "开光.嫁娶", "y": "破屋.坏垣.求医.治病.余事勿取" }, "d0320": { "j": "嫁娶.开光.作灶", "y": "纳采.交易.立券.安床.安机械" }, "d0321": { "j": "嫁娶.定磉.合寿木.安葬.行丧", "y": "祭祀.祈福.求嗣.斋醮.沐浴" }, "d0322": { "j": "入宅.盖屋.竖柱.安葬", "y": "纳财.交易.立券.栽种.捕捉" }, "d0323": { "j": "开市.交易.合帐.安葬", "y": "嫁娶.订盟.纳采.祭祀.祈福" }, "d0324": { "j": "嫁娶.祈福.出火.入宅", "y": "冠笄.立券.交易.修造.动土" }, "d0325": { "j": "嫁娶.动土.掘井.起基.定磉", "y": "祭祀.会亲友.出行.立券.交易" }, "d0326": { "j": "嫁娶.安葬.行丧.安门", "y": "祭祀.沐浴.解除.扫舍.塞穴" }, "d0327": { "j": "移徙.入宅.栽种", "y": "纳财.开市.交易.立券.开光" }, "d0328": { "j": "开市.盖屋.治病.作灶", "y": "嫁娶.冠笄.会亲友.安机械.纳财" }, "d0329": { "j": "纳畜.理髮.合寿木", "y": "嫁娶.造车器.纳采.订盟.祭祀" }, "d0330": { "j": "纳采.开光.安床.嫁娶.开市", "y": "祈福.斋醮.出行.移徙.入宅" }, "d0331": { "j": "嫁娶.移徙.开市.入宅", "y": "破屋.坏垣.余事勿取" }, "d0401": { "j": "塑绘.开光.造桥.除服.成服", "y": "嫁娶.冠笄.祭祀.出行.会亲友" }, "d0402": { "j": "祈福.嫁娶.安葬.破土", "y": "开光.求嗣.出行.纳采.冠笄" }, "d0403": { "j": "纳财.开市.安葬.破土", "y": "理髮.冠笄.嫁娶.进人口.栽种" }, "d0404": { "j": "纳采.动土.开市.交易.安门", "y": "开光.祈福.求嗣.出行.解除" }, "d0405": { "j": "祭祀.入殓.安葬.探病", "y": "嫁娶.祈福.求嗣.开光.出行" }, "d0406": { "j": "嫁娶.掘井.探病.开市.开光", "y": "祭祀.裁衣.冠笄.安床.交易" }, "d0407": { "j": "开光.伐木.安葬.破土", "y": "祭祀.出行.教牛马.扫舍.余事勿取" }, "d0408": { "j": "修坟.造桥.作灶.出行.安葬", "y": "祭祀.祈福.求嗣.开光.纳采" }, "d0409": { "j": "祈福.出火.置产.动土.破土", "y": "开光.出行.交易.塞穴.嫁娶" }, "d0410": { "j": "嫁娶.安床.治病", "y": "祭祀.作灶.畋猎.结网.修饰垣墙" }, "d0411": { "j": "斋醮.开光.嫁娶.入宅.上樑", "y": "沐浴.祭祀.解除.安葬.破土" }, "d0412": { "j": "动土.破土", "y": "祭祀.解除.入殓.移柩.启钻" }, "d0413": { "j": "嫁娶.开市", "y": "祭祀.沐浴.解除.破屋.坏垣" }, "d0414": { "j": "祈福.安葬", "y": "沐浴.塞穴.畋猎.结网.取渔" }, "d0415": { "j": "纳采.问名.订盟.嫁娶.入宅", "y": "开市.交易.立券.挂匾.祭祀" }, "d0416": { "j": "嫁娶.入宅", "y": "祭祀.修门.取渔.纳财.纳畜" }, "d0417": { "j": "作灶.安葬.祭祀.入殓", "y": "安香.出火.纳采.订盟.嫁娶" }, "d0418": { "j": "移徙.入宅.作灶.理髮.开光", "y": "祭祀.出行.修造.动土.合帐" }, "d0419": { "j": "开光.修造.动土.破土", "y": "祭祀.修饰垣墙.余事勿取" }, "d0420": { "j": "纳采.出行.修坟.安葬.开市", "y": "嫁娶.祭祀.祈福.求嗣.斋醮" }, "d0421": { "j": "祈福.入宅.盖屋.动土.破土", "y": "祭祀.塑绘.开光.纳采.嫁娶" }, "d0422": { "j": "安床.入宅.安碓.栽种", "y": "祭祀" }, "d0423": { "j": "移徙.入宅.嫁娶.出行.安床", "y": "祭祀.祈福.求嗣.斋醮.沐浴" }, "d0424": { "j": "嫁娶.开市.纳财.出火", "y": "纳采.祭祀.祈福.求嗣.斋醮" }, "d0425": { "j": "祈福.斋醮.开市.安葬", "y": "祭祀.沐浴.解除.求医.治病" }, "d0426": { "j": "祭祀.嫁娶.入宅.作灶.安葬", "y": "沐浴.捕捉.畋猎.结网.取渔" }, "d0427": { "j": "出火.嫁娶.开市", "y": "祭祀.祈福.求嗣.斋醮.纳采" }, "d0428": { "j": "嫁娶.安葬", "y": "祭祀.捕捉.解除.余事勿取" }, "d0429": { "j": "祈福.动土.破土.安葬.入殓", "y": "纳采.嫁娶.出行.开市.立券" }, "d0430": { "j": "开光.嫁娶.掘井.安葬.安门", "y": "祭祀.祈福.求嗣.斋醮.冠笄" }, "d0501": { "j": "动土.破土.行丧.开光.作梁", "y": "祭祀.解除.教牛马.出行.余事勿取" }, "d0502": { "j": "开市.嫁娶.移徙.入宅.掘井", "y": "沐浴.斋醮.解除.求医.治病" }, "d0503": { "j": "祈福.开市.修造.动土.破土", "y": "求嗣.出行.解除.订盟.纳采" }, "d0504": { "j": "嫁娶.安葬.动土.安床.治病", "y": "祭祀" }, "d0505": { "j": "入宅.动土.开仓.出货财", "y": "造车器.祭祀.祈福.求嗣.斋醮" }, "d0506": { "j": "", "y": "嫁娶.祭祀.祈福.求嗣.开光" }, "d0507": { "j": "祈福.开市.动土.行丧.安葬", "y": "塑绘.冠笄.嫁娶.会亲友.进人口" }, "d0508": { "j": "诸事不宜", "y": "破屋.坏垣.沐浴.解除.余事勿取" }, "d0509": { "j": "开市.立券", "y": "纳采.订盟.嫁娶.造车器.祭祀" }, "d0510": { "j": "嫁娶.掘井.入宅.移徙.安葬", "y": "开市.交易.立券.祭祀.祈福" }, "d0511": { "j": "祭祀.伐木.架马.安床.修造", "y": "解除.出行.纳采.冠笄.竖柱" }, "d0512": { "j": "入宅.移徙.修造.安门.伐木", "y": "祭祀.祈福.求嗣.开光.出行" }, "d0513": { "j": "安床.开渠.上樑.修造.开市", "y": "嫁娶.交易.立券.开厕.补垣" }, "d0514": { "j": "嫁娶.安葬.入宅.出行.动土", "y": "塞穴.断蚁.结网.畋猎.余事勿取" }, "d0515": { "j": "作灶.安床.开仓.盖屋.动土", "y": "纳采.订盟.嫁娶.祭祀.祈福" }, "d0516": { "j": "嫁娶.栽种.修造.动土.出行", "y": "开光.纳采.裁衣.冠笄.安床" }, "d0517": { "j": "伐木.安葬.安床.祭祀.祈福", "y": "纳采.嫁娶.裁衣.理髮.出行" }, "d0518": { "j": "作灶.嫁娶.移徙.入宅.理髮", "y": "开市.交易.立券.挂匾.祭祀" }, "d0519": { "j": "开市.立券.造船.合寿木", "y": "嫁娶.纳采.订盟.祭祀.祈福" }, "d0520": { "j": "开光.安葬", "y": "祭祀.沐浴.解除.破屋.坏垣" }, "d0521": { "j": "作灶.开市.经络", "y": "订盟.纳采.嫁娶.解除.祭祀" }, "d0522": { "j": "安床.上樑.裁衣.入宅.嫁娶", "y": "祭祀.祈福.求嗣.开光.订盟" }, "d0523": { "j": "探病.嫁娶.开市", "y": "祭祀.结网.捕捉.余事勿取" }, "d0524": { "j": "入宅.安门.安葬", "y": "祭祀.祈福.求嗣.开光.纳采" }, "d0525": { "j": "入宅.盖屋.造桥.安门.安葬", "y": "嫁娶.冠笄.祭祀.出行.移徙" }, "d0526": { "j": "嫁娶.安葬", "y": "祭祀.解除.断蚁.会亲友.余事勿取" }, "d0527": { "j": "开市.出行.安床.作灶.安葬", "y": "嫁娶.纳采.订盟.祭祀.祈福" }, "d0528": { "j": "开市.作灶.动土.行丧.安葬", "y": "嫁娶.纳采.订盟.会亲友.安机械" }, "d0529": { "j": "祈福.嫁娶.入宅.安床.作灶", "y": "祭祀.沐浴.移徙.破土.安葬" }, "d0530": { "j": "动土.破土.嫁娶.嫁娶", "y": "祭祀.祈福.斋醮.求嗣.安机械" }, "d0531": { "j": "移徙.入宅.盖屋.架马", "y": "嫁娶.纳采.订盟.斋醮.开光" }, "d0601": { "j": "行丧.安葬", "y": "祭祀.沐浴.解除.破屋.坏垣" }, "d0602": { "j": "斋醮.开市.嫁娶.作灶", "y": "沐浴.扫舍.余事勿取" }, "d0603": { "j": "嫁娶.出火.移徙.入宅", "y": "开市.交易.立券.安机械.会亲友" }, "d0604": { "j": "开市.动土.祭祀.斋醮.安葬", "y": "栽种.捕捉.畋猎.余事勿取" }, "d0605": { "j": "开市.入宅.探病.出火.盖屋", "y": "嫁娶.祭祀.祈福.求嗣.斋醮" }, "d0606": { "j": "诸事不宜", "y": "解除.坏垣.余事勿取" }, "d0607": { "j": "嫁娶.掘井.入宅.移徙.出火", "y": "修造.动土.起基.安门.安床" }, "d0608": { "j": "斋醮.移徙.入宅.动土", "y": "祭祀" }, "d0609": { "j": "行丧.安葬.破土.作灶.伐木", "y": "纳采.订盟.嫁娶.祭祀.祈福" }, "d0610": { "j": "纳采.订盟.安床.谢土.破土", "y": "嫁娶.开光.祭祀.祈福.出行" }, "d0611": { "j": "破土.出行.栽种", "y": "嫁娶.祭祀.理髮.作灶.修饰垣墙" }, "d0612": { "j": "动土.掘井.破土", "y": "嫁娶.纳采.订盟.祭祀.祈福" }, "d0613": { "j": "嫁娶.开市.安葬.启钻.行丧", "y": "畋猎.捕捉.结网.取渔.祭祀" }, "d0614": { "j": "移徙.入宅.开仓.出货财", "y": "祭祀.破屋.坏垣.余事勿取" }, "d0615": { "j": "出火.入宅", "y": "祭祀.斋醮.塑绘.开光.出行" }, "d0616": { "j": "作灶.出火.祭祀.嫁娶.入宅", "y": "开市.交易.立券.挂匾.开光" }, "d0617": { "j": "入宅.出行.掘井.安葬", "y": "祭祀.结网.余事勿取" }, "d0618": { "j": "行丧.置产.入宅.安葬", "y": "嫁娶.纳采.订盟.冠笄.造车器" }, "d0619": { "j": "安床.祈福.出行.安葬.行丧", "y": "嫁娶.合帐.裁衣.冠笄.伐木" }, "d0620": { "j": "斋醮.盖屋.动土.破土", "y": "出行" }, "d0621": { "j": "安葬.开生坟.秋.行丧", "y": "嫁娶.祭祀.祈福.求嗣.开光" }, "d0622": { "j": "嫁娶.安床.作灶.动土.破土", "y": "安机械.祭祀.祈福.求嗣.沐浴" }, "d0623": { "j": "开市.入宅.出行.修造.词讼", "y": "祭祀.沐浴.理髮.整手足甲.修饰垣墙" }, "d0624": { "j": "开光.作灶.盖屋.架马.开仓", "y": "嫁娶.纳采.祭祀.祈福.出行" }, "d0625": { "j": "嫁娶.开市.合寿木.安葬", "y": "纳采.订盟.冠笄.祭祀.祈福" }, "d0626": { "j": "入宅.嫁娶.移徙", "y": "祭祀.沐浴.破屋.坏垣.余事勿取" }, "d0627": { "j": "作灶.理髮.造桥.行丧.安葬", "y": "嫁娶.安机械.交易.出行.祭祀" }, "d0628": { "j": "斋醮.祭祀.移徙.入宅.上樑", "y": "纳采.冠笄.求医.治病.开市" }, "d0629": { "j": "开市.安葬.破土.修坟.掘井", "y": "祭祀.作灶.余事勿取" }, "d0630": { "j": "合帐.上樑.经络.安葬.入殓", "y": "祭祀.祈福.求嗣.斋醮.安香" }, "d0701": { "j": "祈福.开光.掘井.开市.安葬", "y": "嫁娶.冠笄.修造.动土.作灶" }, "d0702": { "j": "斋醮.开渠.上樑.动土.破土", "y": "祭祀.交易.纳财" }, "d0703": { "j": "行丧.伐木.作梁.作灶", "y": "嫁娶.订盟.纳采.冠笄.会亲友" }, "d0704": { "j": "安床.出货财.作灶.动土.破土", "y": "开光.求嗣.出行.冠笄.嫁娶" }, "d0705": { "j": "斋醮.出行.治病.合寿木", "y": "祭祀.沐浴.理髮.嫁娶.作灶" }, "d0706": { "j": "诸事不宜", "y": "祭祀.解除.余事勿取" }, "d0707": { "j": "嫁娶.栽种.行丧.理髮.修坟", "y": "祭祀.祈福.求嗣.开光.伐木" }, "d0708": { "j": "嫁娶.开市.出火.作灶.置产", "y": "解除.祭祀.理髮.入殓.安葬" }, "d0709": { "j": "诸事不宜", "y": "破屋.坏垣.余事勿取" }, "d0710": { "j": "入宅.移徙.作灶.祭祀.谢土", "y": "开市.交易.立券.纳财.动土" }, "d0711": { "j": "掘井.伐木.纳畜.合寿木", "y": "嫁娶.纳采.订盟.祭祀.祈福" }, "d0712": { "j": "开渠.造船.安床.安葬.破土", "y": "祭祀.冠笄.作灶.交易.纳财" }, "d0713": { "j": "移徙.栽种.出行.行丧.破土", "y": "嫁娶.纳采.订盟.祭祀.祈福" }, "d0714": { "j": "开光.治病.嫁娶.掘井.破土", "y": "经络.祭祀.沐浴.补垣.塞穴" }, "d0715": { "j": "移徙.入宅.栽种.动土.破土", "y": "嫁娶.祭祀.出行.裁衣.冠笄" }, "d0716": { "j": "开市.入宅.出行.安床.作灶", "y": "修造.动土.安机械.祭祀.沐浴" }, "d0717": { "j": "上樑.入宅.修造.动土.破土", "y": "嫁娶.纳采.订盟.造车器.开光" }, "d0718": { "j": "动土.破土.治病.开渠", "y": "祭祀.嫁娶.畋猎.结网" }, "d0719": { "j": "嫁娶.作灶.出火.置产.嫁娶", "y": "纳采.订盟.会亲友.入学.祭祀" }, "d0720": { "j": "嫁娶.斋醮.开市.出火.入宅", "y": "祭祀.祈福.解除.整手足甲.安床" }, "d0721": { "j": "嫁娶.安葬", "y": "破屋.坏垣.解除.余事勿取" }, "d0722": { "j": "祭祀.祈福.探病.谢土.造桥", "y": "嫁娶.开市.立券.移徙.入宅" }, "d0723": { "j": "入宅.开市.掘井.词讼.合寿木", "y": "嫁娶.订盟.纳采.祭祀.祈福" }, "d0724": { "j": "安葬.破土.开市.开仓.出货财", "y": "纳采.订盟.嫁娶.移徙.入宅" }, "d0725": { "j": "出行.安葬.造桥", "y": "纳采.订盟.嫁娶.祭祀.沐浴" }, "d0726": { "j": "开市.入宅.嫁娶.开光.盖屋", "y": "祭祀.入殓.除服.成服.移柩" }, "d0727": { "j": "动土.破土.掘井.安葬", "y": "祭祀.修造.出行.盖屋.竖柱" }, "d0728": { "j": "嫁娶.出行.纳采.入宅.作灶", "y": "祭祀.沐浴.塑绘.开光.入学" }, "d0729": { "j": "斋醮.入宅.安门.安葬.破土", "y": "纳财.开市.交易.立券.出行" }, "d0730": { "j": "开市.动土.破土.嫁娶.修造", "y": "祭祀.修饰垣墙.平治道涂" }, "d0731": { "j": "嫁娶.安葬.行丧.破土.修坟", "y": "订盟.纳采.祭祀.祈福.开光" }, "d0801": { "j": "出火.嫁娶.入宅.作灶.破土", "y": "沐浴.理髮.捕捉.入殓.移柩" }, "d0802": { "j": "嫁娶.出行", "y": "求医.治病.破屋.坏垣.余事勿取" }, "d0803": { "j": "祈福.上樑.开仓.掘井.牧养", "y": "纳采.订盟.嫁娶.移徙.入宅" }, "d0804": { "j": "嫁娶.开市.栽种.合寿木", "y": "祭祀.祈福.斋醮.出行.纳采" }, "d0805": { "j": "开市.入宅.安床.动土.安葬", "y": "祭祀.进人口.纳财.纳畜.牧养" }, "d0806": { "j": "盖屋.入宅.作灶.入学.安葬", "y": "祭祀.塑绘.开光.求医.治病" }, "d0807": { "j": "移徙.开市.入宅.嫁娶.开光", "y": "祭祀.塞穴.结网.畋猎.余事勿取" }, "d0808": { "j": "开光.出行.修造.上樑.入宅", "y": "祭祀.动土.筑堤.开池.会亲友" }, "d0809": { "j": "安床.动土.安葬.开生坟.合寿木", "y": "祭祀.裁衣.安门.纳财.扫舍" }, "d0810": { "j": "嫁娶.出行.进人口.作灶.入宅", "y": "祭祀.解除.拆卸.修造.动土" }, "d0811": { "j": "伐木.谢土.行丧.祭祀.作灶", "y": "纳采.订盟.开光.出行.解除" }, "d0812": { "j": "嫁娶.词讼.治病.置产.作梁", "y": "修饰垣墙.平治道涂.祭祀.沐浴.作灶" }, "d0813": { "j": "斋醮.开市.开仓.作灶.造船", "y": "嫁娶.祭祀.祈福.求嗣.出火" }, "d0814": { "j": "嫁娶.入宅.开市.交易", "y": "破土.安葬.移柩.入殓.祭祀" }, "d0815": { "j": "祈福.纳采.订盟.嫁娶.入宅", "y": "破屋.坏垣.治病.余事勿取" }, "d0816": { "j": "掘井.理髮.作灶.动土.破土", "y": "嫁娶.开光.祭祀.祈福.求嗣" }, "d0817": { "j": "入宅.嫁娶.掘井.牧养", "y": "安机械.纳采.订盟.祭祀.祈福" }, "d0818": { "j": "行丧.安葬.出行.作梁.纳畜", "y": "嫁娶.祭祀.祈福.求嗣.裁衣" }, "d0819": { "j": "入宅.上樑.入殓.盖屋.探病", "y": "嫁娶.纳采.订盟.开光.祭祀" }, "d0820": { "j": "嫁娶.入宅.斋醮.开光.针灸", "y": "祭祀.出行.作梁.出火.拆卸" }, "d0821": { "j": "栽种.掘井.动土.安床.破土", "y": "嫁娶.纳采.订盟.祭祀.祈福" }, "d0822": { "j": "出火.嫁娶.开光.进人口.出行", "y": "解除.祭祀.祈福.求嗣.修造" }, "d0823": { "j": "开市.入宅.动土.破土.安葬", "y": "沐浴.理髮.会亲友.塑绘.开光" }, "d0824": { "j": "嫁娶.栽种.祈福.造桥.安葬", "y": "祭祀.理髮.作灶.沐浴.修饰垣墙" }, "d0825": { "j": "开市.立券.置产.作灶.造桥", "y": "嫁娶.纳采.订盟.祭祀.祈福" }, "d0826": { "j": "开市.交易.入宅.嫁娶", "y": "祭祀.普渡.捕捉.解除.结网" }, "d0827": { "j": "斋醮.开市", "y": "沐浴.破屋.坏垣.余事勿取" }, "d0828": { "j": "动土.破土.嫁娶.掘井.安床", "y": "订盟.纳采.祭祀.祈福.安香" }, "d0829": { "j": "纳采.订盟.经络.行丧.安葬", "y": "嫁娶.祭祀.祈福.斋醮.普渡" }, "d0830": { "j": "掘井.出行.破土.行丧.安葬", "y": "嫁娶.订盟.纳采.作灶.冠笄" }, "d0831": { "j": "出火.入宅.盖屋.安门.安葬", "y": "嫁娶.订盟.纳采.祭祀.斋醮" }, "d0901": { "j": "动土.破土.掘井.开光.上樑", "y": "嫁娶.普渡.祭祀.祈福.补垣" }, "d0902": { "j": "开市.动土.破土.安床.开仓", "y": "嫁娶.冠笄.祭祀.沐浴.普渡" }, "d0903": { "j": "嫁娶.出行.入宅.开市.安门", "y": "祭祀.沐浴.理髮.整手足甲.冠笄" }, "d0904": { "j": "诸事不宜", "y": "祭祀.解除.余事勿取" }, "d0905": { "j": "嫁娶.安门.动土.安葬", "y": "出行.沐浴.订盟.纳采.裁衣" }, "d0906": { "j": "开市.立券.纳财.作灶", "y": "纳采.订盟.嫁娶.祭祀.祈福" }, "d0907": { "j": "嫁娶.纳采.订盟.开市.入宅", "y": "祭祀.捕捉.畋猎.纳畜.牧养" }, "d0908": { "j": "诸事不宜", "y": "解除.坏垣.余事勿取" }, "d0909": { "j": "诸事不宜", "y": "祭祀.治病.破屋.坏垣.余事勿取" }, "d0910": { "j": "开市.掘井.开渠.造桥.造船", "y": "嫁娶.纳采.订盟.祭祀.开光" }, "d0911": { "j": "嫁娶.破土.进人口.出行.入宅", "y": "开市.交易.立券.纳财.挂匾" }, "d0912": { "j": "开仓.出货财.伐木.纳畜.开市", "y": "嫁娶.祭祀.理髮.进人口.作灶" }, "d0913": { "j": "开市.入宅.嫁娶.动土.破土", "y": "祭祀.修坟.除服.成服.启钻" }, "d0914": { "j": "祈福.开光.开市.入宅.动土", "y": "嫁娶.冠笄.安机械.解除.纳畜" }, "d0915": { "j": "动土.破土.置产.掘井", "y": "祭祀.出行.沐浴.扫舍.安葬" }, "d0916": { "j": "造庙.行丧.安葬.伐木.作灶", "y": "嫁娶.纳采.祭祀.解除.出行" }, "d0917": { "j": "斋醮.嫁娶.行丧.动土.作灶", "y": "纳采.订盟.开市.交易.立券" }, "d0918": { "j": "嫁娶.入宅.安床.出行", "y": "祭祀.沐浴.修饰垣墙.平治道涂.余事勿取" }, "d0919": { "j": "作灶.出火.进人口.开渠.入宅", "y": "开光.祈福.求嗣.斋醮.修造" }, "d0920": { "j": "出火.入宅.移徙.祈福.祭祀", "y": "开光.解除.拆卸.修造.动土" }, "d0921": { "j": "移徙.入宅", "y": "破屋.坏垣.求医.治病.余事勿取" }, "d0922": { "j": "开市.开仓.安门.安葬", "y": "嫁娶.纳采.订盟.祭祀.祈福" }, "d0923": { "j": "安葬.纳畜.出行.行丧.伐木", "y": "嫁娶.纳采.订盟.祭祀.祈福" }, "d0924": { "j": "嫁娶.开市.盖屋.作梁.合寿木", "y": "祭祀.冠笄.捕捉.余事勿取" }, "d0925": { "j": "开市.祈福.动土.破土.入殓", "y": "祭祀.解除.结网.畋猎.取渔" }, "d0926": { "j": "嫁娶.开市.祭祀.祈福.斋醮", "y": "冠笄.沐浴.出行.修造.动土" }, "d0927": { "j": "嫁娶.入宅.修造.动土.会亲友", "y": "祭祀.出行" }, "d0928": { "j": "针灸.伐木.作梁.造庙.行丧", "y": "嫁娶.订盟.纳采.祭祀.祈福" }, "d0929": { "j": "嫁娶.安葬.动土.造桥", "y": "出行.开市.交易.立券.安机械" }, "d0930": { "j": "斋醮.嫁娶.移徙.出行.上樑", "y": "祭祀.沐浴.修饰垣墙.平治道涂.余事勿取" }, "d1001": { "j": "纳采.订盟.架马.词讼.开渠", "y": "嫁娶.造车器.安机械.祭祀.祈福" }, "d1002": { "j": "祭祀.嫁娶.安床.开市.入宅", "y": "沐浴.捕捉.入殓.除服.成服" }, "d1003": { "j": "探病.余事勿取", "y": "余事勿取" }, "d1004": { "j": "嫁娶.造庙.造桥.造船.作灶", "y": "订盟.纳采.祭祀.祈福.安香" }, "d1005": { "j": "行丧.安葬.合寿木", "y": "开光.求嗣.雕刻.嫁娶.订盟" }, "d1006": { "j": "开光.动土.破土.开市.修造", "y": "祭祀.嫁娶.捕捉" }, "d1007": { "j": "嫁娶.开市.动土.掘井.开池", "y": "祭祀.普渡.解除.会亲友.捕捉" }, "d1008": { "j": "安床.安葬", "y": "嫁娶.祭祀.祈福.求嗣.开光" }, "d1009": { "j": "开光.栽种", "y": "嫁娶.祭祀.祈福.求嗣.动土" }, "d1010": { "j": "伐木.行丧.破土.嫁娶.安葬", "y": "祭祀.祈福.求嗣.开光.出行" }, "d1011": { "j": "嫁娶.安葬.行丧.词讼.造桥", "y": "祭祀.开光.出行.解除.理髮" }, "d1012": { "j": "开市.入宅.出行.嫁娶.修坟", "y": "纳采.订盟.会亲友.沐浴.理髮" }, "d1013": { "j": "嫁娶.开市.交易.入宅.入学", "y": "解除.祭祀.修饰垣墙.平治道涂.造畜稠" }, "d1014": { "j": "开市.入宅.祭祀.置产.补垣", "y": "入殓.破土.启钻.安葬.除服" }, "d1015": { "j": "入宅.移徙.掘井.理髮.伐木", "y": "嫁娶.祭祀.祈福.求嗣.开光" }, "d1016": { "j": "嫁娶.入宅.上樑.出行.安葬", "y": "祭祀.沐浴.破屋.坏垣.余事勿取" }, "d1017": { "j": "祈福.斋醮.纳采.订盟.嫁娶", "y": "祭祀.求嗣.冠笄.进人口.会亲友" }, "d1018": { "j": "探病.纳畜.伐木.起基.作梁", "y": "嫁娶.纳采.订盟.开市.交易" }, "d1019": { "j": "嫁娶.开市.开池.开厕.破土", "y": "祭祀.冠笄.移徙.会亲友.纳财" }, "d1020": { "j": "安门.安床.裁衣.入宅.安葬", "y": "祭祀.祈福.求嗣.斋醮.开光" }, "d1021": { "j": "开市.出行.栽种.置产.词讼", "y": "嫁娶.裁衣.冠笄.合帐.祭祀" }, "d1022": { "j": "出货财.开仓.动土.破土.安葬", "y": "祭祀.造车器.出行.修造.上樑" }, "d1023": { "j": "造庙.嫁娶.掘井.栽种.造桥", "y": "祭祀.开光.出行.解除.伐木" }, "d1024": { "j": "入宅.上樑.斋醮.出火.谢土", "y": "纳采.订盟.开市.交易.立券" }, "d1025": { "j": "嫁娶.开市", "y": "祭祀.平治道涂.余事勿取" }, "d1026": { "j": "开市.交易.祭祀.入宅.安葬", "y": "捕捉.畋猎.余事勿取" }, "d1027": { "j": "开市.破土.掘井.合寿木", "y": "嫁娶.纳采.订盟.祭祀.祈福" }, "d1028": { "j": "开市.嫁娶", "y": "祭祀.沐浴.解除.破屋.坏垣" }, "d1029": { "j": "嫁娶.开市.入宅.祈福.安葬", "y": "订盟.纳采.会亲友.交易.立券" }, "d1030": { "j": "上樑.开光.盖屋.架马.合寿木", "y": "造车器.嫁娶.订盟.纳采.会亲友" }, "d1031": { "j": "动土.破土.开市.安葬", "y": "祭祀.作灶.纳财.捕捉.畋猎" }, "d1101": { "j": "开市.开仓.出货财.安床.安门", "y": "嫁娶.订盟.纳采.祭祀.祈福" }, "d1102": { "j": "开光.嫁娶.会亲友.栽种.针灸", "y": "冠笄.祭祀.沐浴.作灶.理髮" }, "d1103": { "j": "", "y": "祭祀.祈福.求嗣.开光.解除" }, "d1104": { "j": "嫁娶.动土.破土.修坟", "y": "出行.造车器.造畜稠.解除.冠笄" }, "d1105": { "j": "移徙.入宅.出行.祈福.嫁娶", "y": "沐浴.理髮.冠笄.安床.开市" }, "d1106": { "j": "嫁娶.开市.安床.掘井", "y": "祭祀.造畜稠.修饰垣墙.平治道涂.余事勿取" }, "d1107": { "j": "祈福.祭祀.伐木.掘井.作灶", "y": "嫁娶.开光.出行.出火.拆卸" }, "d1108": { "j": "栽种.掘井.置产", "y": "嫁娶.祭祀.祈福.求嗣.开光" }, "d1109": { "j": "嫁娶.动土.造船.开池.掘井", "y": "祭祀.理髮.针灸.解除.进人口" }, "d1110": { "j": "嫁娶.安葬", "y": "破屋.坏垣.求医.治病.余事勿取" }, "d1111": { "j": "上樑.开仓.出货财.盖屋.造船", "y": "纳采.订盟.嫁娶.祭祀.祈福" }, "d1112": { "j": "嫁娶.进人口.入宅.移徙.出火", "y": "祭祀.祈福.求嗣.开光.解除" }, "d1113": { "j": "嫁娶.入宅.开市.安床.破土", "y": "沐浴.扫舍.捕捉.畋猎.解除" }, "d1114": { "j": "伐木.上樑.修造.入殓.理髮", "y": "嫁娶.冠笄.祭祀.祈福.求嗣" }, "d1115": { "j": "置产.造船.开光.掘井.作灶", "y": "合帐.裁衣.嫁娶.安床.入殓" }, "d1116": { "j": "开市.动土.破土.嫁娶.安葬", "y": "解除.修饰垣墙.冠笄.出行.余事勿取" }, "d1117": { "j": "作灶.经络.安床", "y": "纳采.订盟.嫁娶.祭祀.祈福" }, "d1118": { "j": "祈福.谢土.安葬.上樑.作灶", "y": "祭祀.塑绘.理髮.会亲友.牧养" }, "d1119": { "j": "造庙.谢土.作灶.作梁.伐木", "y": "出行.纳财.开市.交易.立券" }, "d1120": { "j": "置产.掘井.词讼.栽种", "y": "嫁娶.纳采.订盟.祭祀.斋醮" }, "d1121": { "j": "破土.动土.安门.作灶.开市", "y": "嫁娶.纳采.订盟.祭祀.开光" }, "d1122": { "j": "嫁娶.安葬", "y": "祭祀.解除.破屋.坏垣.求医" }, "d1123": { "j": "祭祀.嫁娶.入宅.修造.动土", "y": "祭祀.扫舍.破土.安葬.除服" }, "d1124": { "j": "嫁娶.移徙.出火.开市.入宅", "y": "订盟.纳采.会亲友.祭祀.祈福" }, "d1125": { "j": "嫁娶.纳采.订盟.安床.动土", "y": "祭祀.沐浴.捕捉.畋猎.结网" }, "d1126": { "j": "移徙.入宅.出火.入殓.安葬", "y": "开市.纳财.出行.祭祀.祈福" }, "d1127": { "j": "嫁娶.入宅.安床.掘井.开光", "y": "祭祀.理髮.置产.塞穴.除服" }, "d1128": { "j": "开市.动土.破土.行丧.安葬", "y": "祭祀.沐浴.出行.余事勿取" }, "d1129": { "j": "开市.纳采.造庙.安床.开渠", "y": "嫁娶.造车器.出行.会亲友.移徙" }, "d1130": { "j": "嫁娶.开市.祈福.斋醮.安葬", "y": "塑绘.会亲友.安机械.塞穴.结网" }, "d1201": { "j": "开仓.盖屋.造桥.祭祀", "y": "纳采.移徙.纳财.开市.交易" }, "d1202": { "j": "嫁娶.安葬.掘井.置产.造船", "y": "订盟.纳采.纳财.开市.立券" }, "d1203": { "j": "开市.造庙.动土.破土", "y": "嫁娶.订盟.纳采.祭祀.祈福" }, "d1204": { "j": "嫁娶.安葬", "y": "破屋.坏垣.祭祀.余事勿取" }, "d1205": { "j": "盖屋.造船.动土.破土", "y": "嫁娶.纳采.订盟.祭祀.冠笄" }, "d1206": { "j": "嫁娶.开市.入宅.出火.移徙", "y": "纳采.订盟.祭祀.祈福.求嗣" }, "d1207": { "j": "诸事不宜", "y": "解除.扫舍.余事勿取" }, "d1208": { "j": "伐木.纳畜.破土.安葬.开生坟", "y": "祭祀.开光.理髮.整手足甲.安床" }, "d1209": { "j": "嫁娶.进人口.安葬.出行.赴任", "y": "祭祀.祈福.求嗣.开光.拆卸" }, "d1210": { "j": "移徙.入宅.嫁娶.祈福.开光", "y": "沐浴.冠笄.补垣.塞穴" }, "d1211": { "j": "斋醮.入宅.修造.动土.破土", "y": "交易.进人口.祭祀.沐浴.捕捉" }, "d1212": { "j": "斋醮.伐木.作梁.安葬.行丧", "y": "嫁娶.纳采.订盟.造车器.祭祀" }, "d1213": { "j": "嫁娶.动土.破土.祈福.出火", "y": "纳采.订盟.开市.交易.立券" }, "d1214": { "j": "嫁娶.入宅.纳采.订盟.掘井", "y": "祭祀.平治道涂.除服.成服.安葬" }, "d1215": { "j": "开市.造庙.置产.掘井", "y": "纳采.订盟.祭祀.祈福.开光" }, "d1216": { "j": "开生坟.破土.行丧.安葬", "y": "嫁娶.冠笄.祭祀.祈福.求嗣" }, "d1217": { "j": "移徙.入宅", "y": "破屋.坏垣.治病.余事勿取" }, "d1218": { "j": "作灶.安门.造桥.开市.安葬", "y": "安床.架马.祭祀.塑绘.开光" }, "d1219": { "j": "伐木.作梁.动土.安床.破土", "y": "嫁娶.祭祀.祈福.求嗣.开光" }, "d1220": { "j": "会亲友.安葬.入宅.移徙.安床", "y": "祭祀.沐浴.理髮.纳财.进人口" }, "d1221": { "j": "嫁娶.开市.出火.进人口.入殓", "y": "纳采.订盟.祭祀.祈福.求嗣" }, "d1222": { "j": "嫁娶.开市.安床.栽种.安葬", "y": "入宅.移徙.出行.进人口.修造" }, "d1223": { "j": "入宅.移徙.分居.作灶.出火", "y": "造畜稠.教牛马" }, "d1224": { "j": "破土.安葬.行丧.开生坟", "y": "订盟.纳采.造车器.祭祀.祈福" }, "d1225": { "j": "祈福.出火.嫁娶.入宅.开市", "y": "订盟.纳采.会亲友.安机械.开光" }, "d1226": { "j": "移徙.入宅.嫁娶.掘井.安葬", "y": "祭祀.平治道涂.修坟.除服.成服" }, "d1227": { "j": "开市.纳采.订盟.作灶.造庙", "y": "嫁娶.冠笄.祭祀.祈福.求嗣" }, "d1228": { "j": "出行.掘井.破土.行丧.安葬", "y": "嫁娶.订盟.纳采.祭祀.祈福" }, "d1229": { "j": "嫁娶.移徙.入宅.探病.出行", "y": "祭祀.沐浴.破屋.坏垣.余事勿取" }, "d1230": { "j": "安门.动土.破土.行丧.安葬", "y": "冠笄.纳财.掘井.开池.出火" }, "d1231": { "j": "嫁娶.动土.安床.造桥.掘井", "y": "纳采.订盟.移徙.入宅.出行" } } ukui-panel-4.0.0.4/plugin-calendar/html/hlnew/hl2017.json0000644000175000017500000030775114560306203021321 0ustar fengfeng{ "d0101": { "y": "合帐.裁衣.教牛马.余事勿取.", "j": "入宅.动土.破土.嫁娶.作灶.造船.", "c": "生肖冲马", "s": "煞南", "ch": "建", "zc": "正冲正冲壬午", "ts": "房床碓外正北" }, "d0201": { "y": "破屋.坏垣.余事勿取.", "j": "嫁娶.开市.安葬.", "c": "生肖冲牛", "s": "煞西", "ch": "破", "zc": "正冲正冲癸丑", "ts": "占门厕外正东" }, "d0102": { "y": "纳采.订盟.嫁娶.祭祀.祈福.安香.出火.出行.会亲友.经络.求医.治病.解除.拆卸.起基.修造.动土.定磉.扫舍.栽种.牧养.造畜椆栖.", "j": "斋醮.作梁.掘井.行丧.安葬.", "c": "生肖冲羊", "s": "煞東", "ch": "除", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d0103": { "y": "纳财.开市.交易.立券.会亲友.进人口.经络.祭祀.祈福.安香.出火.求医.治病.修造.动土.拆卸.扫舍.安床.栽种.牧养.开生坟.合寿木.入殓.安葬.启攒.", "j": "嫁娶.祈福.出火.移徙.入宅.", "c": "生肖冲猴", "s": "煞北", "ch": "满", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d0104": { "y": "祭祀.入殓.移柩.余事勿取.", "j": "入宅.修造.动土.破土.安门.上梁.", "c": "生肖冲鸡", "s": "煞西", "ch": "平", "zc": "正冲正冲乙酉", "ts": "厨灶门外正北" }, "d0105": { "y": "解除.平治道涂.余事勿取.", "j": "移徙.入宅.掘井.造庙.栽种.针灸.治病.开池.", "c": "生肖冲狗", "s": "煞南", "ch": "平", "zc": "正冲正冲丙戌", "ts": "仓库栖外正北" }, "d0106": { "y": "嫁娶.祭祀.开光.伐木.出火.拆卸.入宅.移徙.修造.动土.上梁.安床.纳畜.", "j": "开市.行丧.栽种.出行.出货财.安葬.置产.词讼.治病.", "c": "生肖冲猪", "s": "煞東", "ch": "定", "zc": "正冲正冲丁亥", "ts": "占房床房内北" }, "d0107": { "y": "嫁娶.纳采.订盟.入宅.移徙.安床.祭祀.祈福.开光.出行.解除.出火.拆卸.动土.纳畜.谢土.安葬.破土.", "j": "伐木.开市.交易.上梁.作灶.安门.造屋.", "c": "生肖冲鼠", "s": "煞北", "ch": "执", "zc": "正冲正冲戊子", "ts": "占门碓房内北" }, "d0108": { "y": "祭祀.破屋.坏垣.解除.余事勿取.", "j": "开市.动土.破土.", "c": "生肖冲牛", "s": "煞西", "ch": "破", "zc": "正冲正冲己丑", "ts": "碓磨厕房内北" }, "d0109": { "y": "嫁娶.纳采.订盟.开光.安香.出火.纳财.开市.交易.立券.裁衣.造屋.起基.修造.动土.安门.移徙.入宅.栽种.牧养.畋猎.掘井.开池.安葬.破土.入殓.除服.成服.立碑.", "j": "祈福.造庙.祭祀.安床.谢土.", "c": "生肖冲虎", "s": "煞南", "ch": "危", "zc": "正冲正冲庚寅", "ts": "厨灶炉房内北" }, "d0110": { "y": "祭祀.斋醮.入殓.破土.启攒.安葬.修坟.立碑.除服.成服.", "j": "嫁娶.入宅.作灶.纳采.订盟.", "c": "生肖冲兔", "s": "煞東", "ch": "成", "zc": "正冲正冲辛卯", "ts": "仓库门房内北" }, "d0111": { "y": "祭祀.斋醮.纳财.捕捉.畋猎.", "j": "嫁娶.开市.入宅.安床.破土.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "收", "zc": "正冲正冲壬辰", "ts": "房床栖房内南" }, "d0112": { "y": "纳采.订盟.祭祀.祈福.求嗣.斋醮.沐浴.进人口.会亲友.入学.治病.安碓硙.掘井.开池.纳畜.牧养.造畜椆栖.", "j": "嫁娶.合帐.入宅.行丧.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "开", "zc": "正冲正冲癸巳", "ts": "占门床房内南" }, "d0113": { "y": "祭祀.祈福.求嗣.沐浴.问名.交易.纳财.入殓.移柩.安葬.修坟.立碑.谢土.造畜椆栖.教牛马.", "j": "入宅.置产.嫁娶.动土.栽种.开市.开光.动土.破土.", "c": "生肖冲马", "s": "煞南", "ch": "闭", "zc": "正冲正冲甲午", "ts": "占碓磨房内南" }, "d0114": { "y": "祭祀.教牛马.造畜椆栖.祭祀.会亲友.解除.余事勿取.", "j": "嫁娶.入宅.出行.动土.破土.安葬.行丧.", "c": "生肖冲羊", "s": "煞東", "ch": "建", "zc": "正冲正冲乙未", "ts": "厨灶厕房内南" }, "d0115": { "y": "嫁娶.开光.解除.出火.拆卸.修造.进人口.入宅.移徙.安床.栽种.入殓.修坟.动土.除服.成服.", "j": "作灶.安葬.祭祀.开市.纳采.订盟.纳畜.谢土.出行.探病.", "c": "生肖冲猴", "s": "煞北", "ch": "除", "zc": "正冲正冲丙申", "ts": "仓库炉房内南" }, "d0116": { "y": "出行.起基.安床.纳财.交易.立券.嫁娶.栽种.入殓.移柩.安葬.", "j": "挂匾.入宅.上梁.祈福.词讼.作梁.作灶.开池.安门.动土.破土.掘井.", "c": "生肖冲鸡", "s": "煞西", "ch": "满", "zc": "正冲正冲丁酉", "ts": "房床门房内南" }, "d0117": { "y": "平治道涂.余事勿取.", "j": "开光.嫁娶.开仓.出货财.造船.安葬.探病.", "c": "生肖冲狗", "s": "煞南", "ch": "平", "zc": "正冲正冲戊戌", "ts": "门鸡栖房内东" }, "d0118": { "y": "嫁娶.订盟.纳采.会亲友.祭祀.安机械.移徙.入宅.造屋.安床.起基.定磉.安香.出火.挂匾.拆卸.置产.", "j": "开市.出行.安葬.行丧.", "c": "生肖冲猪", "s": "煞東", "ch": "定", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d0119": { "y": "沐浴.捕捉.畋猎.理发.整手足甲.入殓.除服.成服.破土.安葬.谢土.立碑.修坟.启攒.", "j": "纳采.订盟.嫁娶.上梁.开市.斋醮.造屋.安门.", "c": "生肖冲鼠", "s": "煞北", "ch": "执", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d0120": { "y": "祭祀.破屋.坏垣.余事勿取.", "j": "斋醮.嫁娶.开市.", "c": "生肖冲牛", "s": "煞西", "ch": "破", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d0121": { "y": "沐浴.开仓.出货财.开市.交易.立券.纳财.栽种.纳畜.牧养.畋猎.入殓.破土.安葬.", "j": "祈福.嫁娶.安床.入宅.造船.", "c": "生肖冲虎", "s": "煞南", "ch": "危", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" }, "d0122": { "y": "祭祀.沐浴.补垣.塞穴.断蚁.解除.余事勿取.", "j": "造庙.入宅.修造.安葬.行丧.嫁娶.", "c": "生肖冲兔", "s": "煞東", "ch": "成", "zc": "正冲正冲癸卯", "ts": "占大门外东北" }, "d0123": { "y": "嫁娶.纳采.订盟.问名.祭祀.冠笄.裁衣.会亲友.进人口.纳财.捕捉.作灶.", "j": "开市.安床.安葬.修坟.", "c": "生肖冲龙", "s": "煞北", "ch": "收", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d0124": { "y": "订盟.纳采.会亲友.祭祀.斋醮.沐浴.塑绘.出火.开光.竖柱.上梁.开市.交易.立券.作梁.开柱眼.伐木.架马.安门.安床.拆卸.牧养.造畜椆栖.掘井.", "j": "造庙.嫁娶.出行.动土.安葬.行丧.", "c": "生肖冲蛇", "s": "煞西", "ch": "开", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d0125": { "y": "交易.立券.纳财.安床.裁衣.造畜椆栖.安葬.谢土.启攒.除服.成服.修坟.立碑.移柩.入殓.", "j": "开光.嫁娶.开市.动土.破土.", "c": "生肖冲马", "s": "煞南", "ch": "闭", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d0126": { "y": "祭祀.解除.教牛马.会亲友.余事勿取.", "j": "破土.动土.安葬.", "c": "生肖冲羊", "s": "煞東", "ch": "建", "zc": "正冲正冲丁未", "ts": "房床厕外东北" }, "d0127": { "y": "纳采.订盟.移徙.纳财.开市.交易.立券.入宅.会亲友.解除.求医.治病.入学.安床.安门.安香.出火.拆卸.扫舍.入宅.挂匾.开生坟.合寿木.破土.修坟.启攒.入殓.", "j": "探病.祭祀.出行.上梁.造屋.谢土.安葬.", "c": "生肖冲猴", "s": "煞北", "ch": "除", "zc": "正冲正冲戊申", "ts": "占门炉外东北" }, "d0128": { "y": "嫁娶.订盟.纳采.祭祀.祈福.求嗣.会亲友.解除.出行.入学.纳财.开市.交易.立券.习艺.经络.安床.开仓.出货财.纳畜.安葬.启攒.修坟.入殓.", "j": "入宅.开光.开市.动土.", "c": "生肖冲鸡", "s": "煞西", "ch": "满", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d0129": { "y": "祭祀.冠笄.嫁娶.会亲友.进人口.裁衣.结网.平治道涂.", "j": "移徙.入宅.造庙.作灶.治病.安葬.", "c": "生肖冲狗", "s": "煞南", "ch": "平", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d0130": { "y": "祭祀.安碓硙.结网.余事勿取.", "j": "嫁娶.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "定", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d0131": { "y": "嫁娶.祭祀.沐浴.裁衣.出行.理发.移徙.捕捉.畋猎.放水.入宅.除服.成服.启攒.安葬.移柩.入殓.", "j": "造屋.开市.动土.破土.", "c": "生肖冲鼠", "s": "煞北", "ch": "执", "zc": "正冲正冲壬子", "ts": "房床碓外正东" }, "d0202": { "y": "纳采.订盟.祭祀.求嗣.出火.塑绘.裁衣.会亲友.入学.拆卸.扫舍.造仓.挂匾.掘井.开池.结网.栽种.纳畜.破土.修坟.立碑.安葬.入殓.", "j": "祈福.嫁娶.造庙.安床.谢土.", "c": "生肖冲虎", "s": "煞南", "ch": "危", "zc": "正冲正冲甲寅", "ts": "碓磨炉外东南" }, "d0225": { "y": "入学.习艺.出行.纳采.订盟.嫁娶.会亲友.进人口.牧养.捕捉.入殓.移柩.安葬.启攒.", "j": "开光.开市.入宅.动土.造屋.", "c": "生肖冲牛", "s": "煞西", "ch": "执", "zc": "正冲正冲丁丑", "ts": "房床厕外西北" }, "d0215": { "y": "纳采.订盟.祭祀.祈福.安香.出火.修造.出行.开市.移徙.入宅.动土.安葬.破土.", "j": "安床.作灶.造船.会亲友.", "c": "生肖冲兔", "s": "煞東", "ch": "危", "zc": "正冲正冲丁卯", "ts": "房床门外西南" }, "d0222": { "y": "会亲友.求嗣.理发.冠笄.结网.捕捉.开光.理发.", "j": "开市.动土.安葬.破土.", "c": "生肖冲狗", "s": "煞南", "ch": "满", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d0212": { "y": "嫁娶.祭祀.冠笄.修饰垣墙.置产.", "j": "经络.探病.造屋.作灶.动土.", "c": "生肖冲鼠", "s": "煞北", "ch": "定", "zc": "正冲正冲甲子", "ts": "占碓磨外正南" }, "d0227": { "y": "祭祀.冠笄.嫁娶.拆卸.修造.动土.起基.上梁.造屋.入宅.开市.开池.塞穴.入殓.除服.成服.移柩.安葬.破土.", "j": "安床.栽种.治病.作灶.", "c": "生肖冲兔", "s": "煞東", "ch": "危", "zc": "正冲正冲己卯", "ts": "占门炉外西北" }, "d0301": { "y": "塑绘.开光.祈福.求嗣.订盟.纳采.裁衣.冠笄.拆卸.修造.动土.起基.安门.安床.移徙.造仓.结网.纳畜.", "j": "伐木.作灶.安葬.取渔.入宅.", "c": "生肖冲蛇", "s": "煞西", "ch": "收", "zc": "正冲正冲辛巳", "ts": "仓库床外西北" }, "d0203": { "y": "祭祀.斋醮.沐浴.开生坟.除服.成服.移柩.入殓.破土.安葬.合寿木.", "j": "开市.嫁娶.安床.会亲友.入宅.作灶.上梁.", "c": "生肖冲兔", "s": "煞東", "ch": "危", "zc": "正冲正冲乙卯", "ts": "厨灶门外东南" }, "d0204": { "y": "祭祀.塞穴.结网.破土.谢土.安葬.移柩.除服.成服.余事勿取.", "j": "嫁娶.入宅.", "c": "生肖冲龙", "s": "煞北", "ch": "成", "zc": "正冲正冲丙辰", "ts": "仓库栖外东南" }, "d0205": { "y": "祭祀.沐浴.理发.作灶.结网.栽种.", "j": "嫁娶.词讼.行丧.安葬.牧养.伐木.作梁.开市.纳畜.造畜椆栖.", "c": "生肖冲蛇", "s": "煞西", "ch": "收", "zc": "正冲正冲丁巳", "ts": "占房床外东南" }, "d0206": { "y": "嫁娶.祭祀.开光.祈福.求嗣.出行.开市.交易.立券.动土.纳财.掘井.会亲友.", "j": "入宅.安葬.伐木.作梁.纳畜.造畜椆栖.作灶.", "c": "生肖冲马", "s": "煞南", "ch": "开", "zc": "正冲正冲戊午", "ts": "占门碓外东南" }, "d0207": { "y": "祭祀.祈福.求嗣.纳畜.入殓.启攒.谢土.除服.成服.", "j": "栽种.开光.出行.针灸.嫁娶.入宅.动土.破土.", "c": "生肖冲羊", "s": "煞東", "ch": "闭", "zc": "正冲正冲己未", "ts": "碓磨厕外东南" }, "d0208": { "y": "开光.解除.伐木.竖柱.上梁.交易.立券.纳畜.入殓.移柩.安葬.", "j": "入宅.出行.移徙.祭祀.嫁娶.动土.破土.作灶.", "c": "生肖冲猴", "s": "煞北", "ch": "建", "zc": "正冲正冲庚申", "ts": "厨灶炉外正南" }, "d0209": { "y": "祭祀.祈福.求嗣.开光.嫁娶.出行.解除.伐木.拆卸.进人口.安床.动土.起基.上梁.栽种.纳畜.破土.谢土.启攒.安葬.", "j": "移徙.入宅.出火.作灶.掘井.", "c": "生肖冲鸡", "s": "煞西", "ch": "除", "zc": "正冲正冲辛酉", "ts": "仓库门外正南" }, "d0210": { "y": "会亲友.冠笄.安床.会亲友.安机械.祭祀.祈福.求嗣.经络.", "j": "嫁娶.开市.动土.作灶.安葬.", "c": "生肖冲狗", "s": "煞南", "ch": "满", "zc": "正冲正冲壬戌", "ts": "房床栖外正南" }, "d0211": { "y": "作灶.解除.平治道涂.余事勿取.", "j": "祭祀.祈福.安葬.安门.", "c": "生肖冲猪", "s": "煞東", "ch": "平", "zc": "正冲正冲癸亥", "ts": "占门床外正南" }, "d0213": { "y": "纳采.嫁娶.祭祀.祈福.出行.修造.动土.移徙.入宅.安葬.破土.", "j": "开市.入宅.斋醮.", "c": "生肖冲牛", "s": "煞西", "ch": "执", "zc": "正冲正冲乙丑", "ts": "厨灶厕外西南" }, "d0214": { "y": "祭祀.沐浴.解除.理发.扫舍.破屋.坏垣.余事勿取.", "j": "嫁娶.安葬.", "c": "生肖冲虎", "s": "煞南", "ch": "破", "zc": "正冲正冲丙寅", "ts": "仓库炉外西南" }, "d0216": { "y": "塞穴.结网.取渔.畋猎.", "j": "嫁娶.安门.移徙.入宅.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "成", "zc": "正冲正冲戊辰", "ts": "门鸡栖外西南" }, "d0217": { "y": "纳采.祭祀.祈福.出行.会亲友.修造.动土.移徙.入宅.", "j": "嫁娶.开市.安葬.破土.", "c": "生肖冲蛇", "s": "煞西", "ch": "收", "zc": "正冲正冲己巳", "ts": "碓磨床外西南" }, "d0218": { "y": "纳采.嫁娶.祭祀.祈福.出行.开市.会亲友.动土.破土.启攒.", "j": "移徙.入宅.出火.安门.安葬.", "c": "生肖冲马", "s": "煞南", "ch": "开", "zc": "正冲正冲庚午", "ts": "厨灶碓外西南" }, "d0219": { "y": "祭祀.祈福.求嗣.斋醮.入殓.除服.成服.移柩.安葬.启攒.", "j": "嫁娶.动土.开光.造屋.破土.", "c": "生肖冲羊", "s": "煞東", "ch": "闭", "zc": "正冲正冲辛未", "ts": "仓库厕外西南" }, "d0220": { "y": "纳采.会亲友.竖柱.上梁.立券.入殓.移柩.安葬.启攒.", "j": "祭祀.移徙.入宅.动土.破土.", "c": "生肖冲猴", "s": "煞北", "ch": "建", "zc": "正冲正冲壬申", "ts": "房床厕外正南" }, "d0221": { "y": "祭祀.祈福.斋醮.出行.开市.立券.动土.移徙.入宅.破土.安葬.", "j": "开光.嫁娶.作灶.掘井.纳畜.", "c": "生肖冲鸡", "s": "煞西", "ch": "除", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d0223": { "y": "祭祀.平治道涂.余事勿取.", "j": "嫁娶.祈福.掘井.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "平", "zc": "正冲正冲乙亥", "ts": "厨灶床外正西" }, "d0224": { "y": "祈福.求嗣.斋醮.纳采.嫁娶.伐木.修造.动土.移徙.入宅.造庙.安机械.开市.入殓.除服.成服.移柩.安葬.破土.谢土.", "j": "置产.造屋.合脊.开光.探病.安门.作灶.", "c": "生肖冲鼠", "s": "煞北", "ch": "定", "zc": "正冲正冲丙子", "ts": "仓库碓外西北" }, "d0226": { "y": "祭祀.沐浴.求医.治病.扫舍.破屋.坏垣.解除.余事勿取.", "j": "入宅.开市.安葬.", "c": "生肖冲虎", "s": "煞南", "ch": "破", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d0228": { "y": "祭祀.结网.入殓.除服.成服.移柩.安葬.破土.", "j": "余事勿取.", "c": "生肖冲龙", "s": "煞北", "ch": "成", "zc": "正冲正冲庚辰", "ts": "厨灶栖外西北" }, "d0401": { "y": "祭祀.嫁娶.纳婿.除服.成服.入殓.移柩.", "j": "动土.作灶.入宅.开光.安床.", "c": "生肖冲鼠", "s": "煞北", "ch": "平", "zc": "正冲正冲壬子", "ts": "房床碓外正东" }, "d0302": { "y": "祭祀.沐浴.开光.塑绘.祈福.求嗣.订盟.纳采.冠笄.裁衣.嫁娶.动土.除服.成服.移柩.破土.启攒.出行.安碓硙.放水.开市.立券.交易.", "j": "安葬.上梁.入宅.作灶.", "c": "生肖冲马", "s": "煞南", "ch": "开", "zc": "正冲正冲壬午", "ts": "房床碓外正北" }, "d0303": { "y": "祭祀.祈福.求嗣.酬神.裁衣.安床.立券.交易.入殓.除服.成服.移柩.谢土.启攒.", "j": "出行.嫁娶.入宅.动土.", "c": "生肖冲羊", "s": "煞東", "ch": "闭", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d0304": { "y": "裁衣.合帐.入殓.除服.成服.会亲友.纳财.", "j": "祭祀.祈福.移徙.嫁娶.入宅.", "c": "生肖冲猴", "s": "煞北", "ch": "建", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d0305": { "y": "祭祀.祈福.求嗣.斋醮.嫁娶.冠笄.出行.开市.交易.会亲友.教牛马.除服.成服.启攒.安葬.移柩.", "j": "祈福.动土.移徙.入宅.", "c": "生肖冲鸡", "s": "煞西", "ch": "建", "zc": "正冲正冲乙酉", "ts": "厨灶门外正北" }, "d0306": { "y": "塞穴.整手足甲.解除.捕捉.畋猎.结网.余事勿取.诸事不宜.", "j": "嫁娶.作灶.掘井.安葬.", "c": "生肖冲狗", "s": "煞南", "ch": "除", "zc": "正冲正冲丙戌", "ts": "仓库栖外正北" }, "d0307": { "y": "纳财.开市.立券.交易.开光.安床.上梁.造屋.修造.起基.", "j": "动土.破土.安葬.行丧.赴任.出行.嫁娶.入宅.移徙.谢土.词讼.", "c": "生肖冲猪", "s": "煞東", "ch": "满", "zc": "正冲正冲丁亥", "ts": "占房床房内北" }, "d0308": { "y": "祭祀.祈福.嫁娶.冠笄.修饰垣墙.置产.平治道涂.", "j": "开仓.出货财.造屋.作灶.开市.交易.立券.栽种.", "c": "生肖冲鼠", "s": "煞北", "ch": "平", "zc": "正冲正冲戊子", "ts": "占门碓房内北" }, "d0309": { "y": "嫁娶.祭祀.开光.祈福.求嗣.出行.出火.进人口.入宅.移徙.安床.拆卸.修造.安门.挂匾.纳财.扫舍.", "j": "动土.伐木.安葬.行丧.", "c": "生肖冲牛", "s": "煞西", "ch": "定", "zc": "正冲正冲己丑", "ts": "碓磨厕房内北" }, "d0310": { "y": "嫁娶.开光.祭祀.祈福.求嗣.出行.出火.入宅.移徙.解除.栽种.伐木.破土.谢土.安葬.", "j": "开市.交易.作灶.纳财.上梁.安床.造屋.造船.", "c": "生肖冲虎", "s": "煞南", "ch": "执", "zc": "正冲正冲庚寅", "ts": "厨灶炉房内北" }, "d0311": { "y": "破屋.坏垣.求医.治病.余事勿取.", "j": "开光.嫁娶.", "c": "生肖冲兔", "s": "煞東", "ch": "破", "zc": "正冲正冲辛卯", "ts": "仓库门房内北" }, "d0312": { "y": "纳采.交易.立券.安床.安机械.安葬.移柩.动土.破土.立碑.", "j": "嫁娶.开光.作灶.", "c": "生肖冲龙", "s": "煞北", "ch": "危", "zc": "正冲正冲壬辰", "ts": "房床栖房内南" }, "d0313": { "y": "祭祀.祈福.求嗣.斋醮.沐浴.开光.理发.经络.解除.治病.治病.立碑.栽种.牧养.掘井.开池.", "j": "嫁娶.定磉.合寿木.安葬.行丧.", "c": "生肖冲蛇", "s": "煞西", "ch": "成", "zc": "正冲正冲癸巳", "ts": "占门床房内南" }, "d0314": { "y": "纳财.交易.立券.栽种.捕捉.结网.取渔.进人口.教牛马.理发.", "j": "入宅.造屋.竖柱.安葬.", "c": "生肖冲马", "s": "煞南", "ch": "收", "zc": "正冲正冲甲午", "ts": "占碓磨房内南" }, "d0315": { "y": "嫁娶.订盟.纳采.祭祀.祈福.出行.修造.动土.移徙.入宅.破土.出火.安门.安床.上梁.立碑.移柩.", "j": "开市.交易.合帐.安葬.", "c": "生肖冲羊", "s": "煞東", "ch": "开", "zc": "正冲正冲乙未", "ts": "厨灶厕房内南" }, "d0316": { "y": "冠笄.立券.交易.修造.动土.安机械.入殓.安葬.破土.", "j": "嫁娶.祈福.出火.入宅.", "c": "生肖冲猴", "s": "煞北", "ch": "闭", "zc": "正冲正冲丙申", "ts": "仓库炉房内南" }, "d0317": { "y": "祭祀.会亲友.出行.立券.交易.冠笄.纳财.", "j": "嫁娶.动土.掘井.起基.定磉.破土.", "c": "生肖冲鸡", "s": "煞西", "ch": "建", "zc": "正冲正冲丁酉", "ts": "房床门房内南" }, "d0318": { "y": "祭祀.沐浴.解除.扫舍.塞穴.牧养.", "j": "嫁娶.安葬.行丧.安门.", "c": "生肖冲狗", "s": "煞南", "ch": "除", "zc": "正冲正冲戊戌", "ts": "门鸡栖房内东" }, "d0319": { "y": "纳财.开市.交易.立券.开光.针灸.会亲友.理发.安床.造仓.结网.", "j": "移徙.入宅.栽种.", "c": "生肖冲猪", "s": "煞東", "ch": "满", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d0320": { "y": "嫁娶.冠笄.会亲友.安机械.纳财.交易.立券.置产.", "j": "开市.造屋.治病.作灶.", "c": "生肖冲鼠", "s": "煞北", "ch": "平", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d0321": { "y": "嫁娶.造车器.纳采.订盟.祭祀.祈福.安机械.移徙.入宅.开市.立券.破土.安葬.", "j": "纳畜.理发.合寿木.", "c": "生肖冲牛", "s": "煞西", "ch": "定", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d0322": { "y": "祈福.斋醮.出行.移徙.入宅.修造.动土.破土.安葬.", "j": "纳采.开光.安床.嫁娶.开市.", "c": "生肖冲虎", "s": "煞南", "ch": "执", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" }, "d0323": { "y": "破屋.坏垣.余事勿取.", "j": "嫁娶.移徙.开市.入宅.", "c": "生肖冲兔", "s": "煞東", "ch": "破", "zc": "正冲正冲癸卯", "ts": "占大门外东北" }, "d0324": { "y": "嫁娶.冠笄.祭祀.出行.会亲友.修造.动土.入殓.破土.", "j": "塑绘.开光.造桥.除服.成服.", "c": "生肖冲龙", "s": "煞北", "ch": "危", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d0325": { "y": "开光.求嗣.出行.纳采.冠笄.出火.拆卸.起基.修造.动土.上梁.移徙.造船.开市.交易.立券.纳财.", "j": "祈福.嫁娶.安葬.破土.", "c": "生肖冲蛇", "s": "煞西", "ch": "成", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d0326": { "y": "理发.冠笄.嫁娶.进人口.栽种.捕捉.针灸.", "j": "纳财.开市.安葬.破土.", "c": "生肖冲马", "s": "煞南", "ch": "收", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d0327": { "y": "开光.祈福.求嗣.出行.解除.伐木.造屋.起基.修造.架马.安门.移徙.入宅.造庙.除服.成服.移柩.谢土.纳畜.牧养.", "j": "纳采.动土.开市.交易.安门.", "c": "生肖冲羊", "s": "煞東", "ch": "开", "zc": "正冲正冲丁未", "ts": "房床厕外东北" }, "d0328": { "y": "裁衣.经络.伐木.开柱眼.拆卸.修造.动土.上梁.合脊.合寿木.入殓.除服.成服.移柩.破土.安葬.启攒.修坟.立碑.", "j": "祭祀.嫁娶.出行.上梁.掘井.", "c": "生肖冲猴", "s": "煞北", "ch": "闭", "zc": "正冲正冲戊申", "ts": "占门炉外东北" }, "d0329": { "y": "祭祀.会亲友.立券.交易.裁衣.合帐.嫁娶.冠笄.进人口.", "j": "栽种.动土.安葬.掘井.修坟.探病.", "c": "生肖冲鸡", "s": "煞西", "ch": "建", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d0330": { "y": "扫舍.塞穴.余事勿取.", "j": "诸事不宜.", "c": "生肖冲狗", "s": "煞南", "ch": "除", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d0331": { "y": "塑绘.开光.订盟.纳采.裁衣.合帐.冠笄.安机械.会亲友.纳财.开市.立券.交易.安床.竖柱.上梁.结网.栽种.解除.经络.", "j": "作灶.出行.入宅.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "满", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d0425": { "y": "求嗣.出行.解除.订盟.纳采.嫁娶.会亲友.进人口.安床.开市.交易.纳畜.牧养.入殓.除服.成服.移柩.安葬.启攒.", "j": "祈福.开市.修造.动土.破土.谢土.", "c": "生肖冲鼠", "s": "煞北", "ch": "满", "zc": "正冲正冲丙子", "ts": "仓库碓外西北" }, "d0428": { "y": "祭祀.祈福.开光.求嗣.斋醮.纳采.订盟.求医.治病.起基.定磉.造船.取渔.解除.安葬.启攒.谢土.入殓.", "j": "开市.动土.掘井.开池.", "c": "生肖冲兔", "s": "煞東", "ch": "执", "zc": "正冲正冲己卯", "ts": "占门炉外西北" }, "d0418": { "y": "沐浴.捕捉.畋猎.结网.取渔.", "j": "祭祀.嫁娶.入宅.作灶.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "危", "zc": "正冲正冲己巳", "ts": "碓磨床外西南" }, "d0408": { "y": "祭祀.修门.取渔.纳财.纳畜.余事勿取.", "j": "嫁娶.入宅.", "c": "生肖冲羊", "s": "煞東", "ch": "收", "zc": "正冲正冲己未", "ts": "碓磨厕外东南" }, "d0531": { "y": "开光.出行.纳采.嫁娶.伐木.架马.出火.拆卸.移徙.入宅.造庙.造桥.造船.造畜椆栖.开市.入殓.除服.成服.移柩.安葬.", "j": "", "c": "生肖冲鼠", "s": "煞北", "ch": "除", "zc": "正冲正冲壬子", "ts": "房床碓外正东" }, "d0501": { "y": "祭祀.塑绘.开光.订盟.纳采.冠笄.裁衣.安机械.拆卸.修造.动土.安床.经络.开市.", "j": "出火.入宅.安葬.伐木.", "c": "生肖冲马", "s": "煞南", "ch": "成", "zc": "正冲正冲壬午", "ts": "房床碓外正北" }, "d0402": { "y": "祈福.求嗣.开光.塑绘.斋醮.订盟.纳采.嫁娶.拆卸.安床.入宅.安香.移柩.修坟.安葬.谢土.栽种.解除.冠笄.裁衣.移徙.修造.动土.竖柱.放水.启攒.立碑.", "j": "赴任.", "c": "生肖冲牛", "s": "煞西", "ch": "定", "zc": "正冲正冲癸丑", "ts": "占门厕外正东" }, "d0403": { "y": "祭祀.解除.入殓.除服.成服.移柩.启攒.安葬.修坟.立碑.谢土.沐浴.扫舍.捕捉.取渔.结网.畋猎.理发.", "j": "安床.嫁娶.作灶.入宅.", "c": "生肖冲虎", "s": "煞南", "ch": "执", "zc": "正冲正冲甲寅", "ts": "碓磨炉外东南" }, "d0404": { "y": "祭祀.解除.入殓.移柩.启攒.安葬.整手足甲.捕捉.畋猎.取渔.除服.成服.扫舍.谢土.斋醮.", "j": "动土.破土.", "c": "生肖冲兔", "s": "煞東", "ch": "执", "zc": "正冲正冲乙卯", "ts": "厨灶门外东南" }, "d0405": { "y": "祭祀.沐浴.解除.破屋.坏垣.求医.治病.余事勿取.", "j": "嫁娶.开市.", "c": "生肖冲龙", "s": "煞北", "ch": "破", "zc": "正冲正冲丙辰", "ts": "仓库栖外东南" }, "d0406": { "y": "沐浴.塞穴.畋猎.结网.取渔.扫舍.余事勿取.", "j": "祈福.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "危", "zc": "正冲正冲丁巳", "ts": "占房床外东南" }, "d0407": { "y": "开市.交易.立券.挂匾.祭祀.开光.祈福.求嗣.安床.解除.修造.安葬.", "j": "纳采.问名.订盟.嫁娶.入宅.开仓.出火.动土.破土.纳畜.伐木.", "c": "生肖冲马", "s": "煞南", "ch": "成", "zc": "正冲正冲戊午", "ts": "占门碓外东南" }, "d0409": { "y": "安香.出火.纳采.订盟.嫁娶.开市.立券.交易.挂匾.开光.出行.解除.安床.栽种.置产.拆卸.修造.动土.", "j": "作灶.安葬.祭祀.入殓.", "c": "生肖冲猴", "s": "煞北", "ch": "开", "zc": "正冲正冲庚申", "ts": "厨灶炉外正南" }, "d0410": { "y": "祭祀.出行.修造.动土.合帐.造畜椆栖.安床.移徙.入殓.移柩.破土.启攒.安葬.开生坟.合寿木.补垣.塞穴.", "j": "移徙.入宅.作灶.理发.开光.安门.", "c": "生肖冲鸡", "s": "煞西", "ch": "闭", "zc": "正冲正冲辛酉", "ts": "仓库门外正南" }, "d0411": { "y": "祭祀.修饰垣墙.余事勿取.", "j": "开光.修造.动土.破土.", "c": "生肖冲狗", "s": "煞南", "ch": "建", "zc": "正冲正冲壬戌", "ts": "房床栖外正南" }, "d0412": { "y": "嫁娶.祭祀.祈福.求嗣.斋醮.开光.出火.移徙.入宅.竖柱.上梁.会亲友.造屋.起基.治病.治病.安门.造车器.掘井.开池.", "j": "纳采.出行.修坟.安葬.开市.立券.作灶.", "c": "生肖冲猪", "s": "煞東", "ch": "除", "zc": "正冲正冲癸亥", "ts": "占门床外正南" }, "d0413": { "y": "祭祀.塑绘.开光.纳采.嫁娶.开市.出行.会亲友.安床.结网.除服.成服.启攒.安葬.移柩.", "j": "祈福.入宅.造屋.动土.破土.探病.", "c": "生肖冲鼠", "s": "煞北", "ch": "满", "zc": "正冲正冲甲子", "ts": "占碓磨外正南" }, "d0414": { "y": "祭祀.作灶.平治道涂.余事勿取.", "j": "安床.入宅.安碓硙.栽种.", "c": "生肖冲牛", "s": "煞西", "ch": "平", "zc": "正冲正冲乙丑", "ts": "厨灶厕外西南" }, "d0415": { "y": "祭祀.祈福.求嗣.斋醮.沐浴.纳畜.入殓.破土.安葬.", "j": "移徙.入宅.嫁娶.出行.安床.", "c": "生肖冲虎", "s": "煞南", "ch": "定", "zc": "正冲正冲丙寅", "ts": "仓库炉外西南" }, "d0416": { "y": "纳采.祭祀.祈福.求嗣.斋醮.出行.起基.造屋.定磉.安门.入殓.安葬.", "j": "嫁娶.开市.纳财.出火.", "c": "生肖冲兔", "s": "煞東", "ch": "执", "zc": "正冲正冲丁卯", "ts": "房床门外西南" }, "d0417": { "y": "祭祀.沐浴.解除.求医.治病.破屋.坏垣.余事勿取.", "j": "祈福.斋醮.开市.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "破", "zc": "正冲正冲戊辰", "ts": "门鸡栖外西南" }, "d0419": { "y": "祭祀.祈福.求嗣.斋醮.纳采.订盟.开光.竖柱.上梁.开仓.出货财.造屋.起基.定磉.安门.诸事不宜.破土.入殓.启攒.谢土.", "j": "出火.嫁娶.开市.", "c": "生肖冲马", "s": "煞南", "ch": "成", "zc": "正冲正冲庚午", "ts": "厨灶碓外西南" }, "d0420": { "y": "祭祀.捕捉.解除.余事勿取.", "j": "嫁娶.安葬.", "c": "生肖冲羊", "s": "煞東", "ch": "收", "zc": "正冲正冲辛未", "ts": "仓库厕外西南" }, "d0421": { "y": "纳采.嫁娶.出行.开市.立券.纳畜.牧养.出火.移徙.入宅.", "j": "祈福.动土.破土.安葬.入殓.", "c": "生肖冲猴", "s": "煞北", "ch": "开", "zc": "正冲正冲壬申", "ts": "房床厕外正南" }, "d0422": { "y": "祭祀.祈福.求嗣.斋醮.冠笄.作灶.纳财.交易.", "j": "开光.嫁娶.掘井.安葬.安门.探病.", "c": "生肖冲鸡", "s": "煞西", "ch": "闭", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d0423": { "y": "祭祀.解除.教牛马.出行.余事勿取.", "j": "动土.破土.行丧.开光.作梁.安葬.探病.", "c": "生肖冲狗", "s": "煞南", "ch": "建", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d0424": { "y": "沐浴.斋醮.解除.求医.治病.会亲友.造畜椆栖.栽种.理发.扫舍.", "j": "开市.嫁娶.移徙.入宅.掘井.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "除", "zc": "正冲正冲乙亥", "ts": "厨灶床外正西" }, "d0426": { "y": "祭祀.作灶.平治道涂.余事勿取.", "j": "嫁娶.安葬.动土.安床.治病.", "c": "生肖冲牛", "s": "煞西", "ch": "平", "zc": "正冲正冲丁丑", "ts": "房床厕外西北" }, "d0427": { "y": "造车器.祭祀.祈福.求嗣.斋醮.开市.交易.安机械.雕刻.开光.造屋.合脊.起基.定磉.安门.纳畜.安葬.开生坟.立碑.谢土.斋醮.", "j": "入宅.动土.开仓.出货财.", "c": "生肖冲虎", "s": "煞南", "ch": "定", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d0429": { "y": "祭祀.沐浴.破屋.坏垣.求医.治病.解除.余事勿取.", "j": "嫁娶.开市.交易.入宅.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "破", "zc": "正冲正冲庚辰", "ts": "厨灶栖外西北" }, "d0430": { "y": "诸事不宜.", "j": "诸事不宜.", "c": "生肖冲蛇", "s": "煞西", "ch": "危", "zc": "正冲正冲辛巳", "ts": "仓库床外西北" }, "d0529": { "y": "余事勿取.", "j": "余事勿取.", "c": "生肖冲狗", "s": "煞南", "ch": "闭", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d0524": { "y": "祭祀.沐浴.解除.破屋.坏垣.余事勿取.", "j": "行丧.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "破", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d0519": { "y": "嫁娶.纳采.订盟.祭祀.祈福.治病.造车器.修造.动土.移徙.入宅.", "j": "开市.出行.安床.作灶.安葬.", "c": "生肖冲鼠", "s": "煞北", "ch": "除", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d0624": { "y": "祭祀.交易.纳财.", "j": "斋醮.开渠.上梁.动土.破土.", "c": "生肖冲鼠", "s": "煞北", "ch": "建", "zc": "正冲正冲丙子", "ts": "仓库碓外西北" }, "d0502": { "y": "祭祀.余事勿取.", "j": "造庙.嫁娶.安床.余事勿取.", "c": "生肖冲羊", "s": "煞東", "ch": "收", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d0503": { "y": "订盟.纳采.嫁娶.进人口.会亲友.交易.立券.动土.除服.谢土.移柩.破土.启攒.赴任.出行.开市.纳财.栽种.", "j": "入殓.安葬.入宅.安床.", "c": "生肖冲猴", "s": "煞北", "ch": "开", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d0504": { "y": "祭祀.祈福.裁衣.合帐.安床.入殓.除服.成服.移柩.破土.启攒.安葬.谢土.立碑.造畜椆栖.", "j": "掘井.安门.嫁娶.纳采.", "c": "生肖冲鸡", "s": "煞西", "ch": "闭", "zc": "正冲正冲乙酉", "ts": "厨灶门外正北" }, "d0505": { "y": "嫁娶.交易.立券.作厕.补垣.塞穴.畋猎.取渔.开生坟.", "j": "安床.开渠.上梁.修造.开市.开光.入宅.移徙.安床.", "c": "生肖冲狗", "s": "煞南", "ch": "闭", "zc": "正冲正冲丙戌", "ts": "仓库栖外正北" }, "d0506": { "y": "塞穴.断蚁.结网.畋猎.余事勿取.", "j": "嫁娶.安葬.入宅.出行.动土.词讼.", "c": "生肖冲猪", "s": "煞東", "ch": "建", "zc": "正冲正冲丁亥", "ts": "占房床房内北" }, "d0507": { "y": "纳采.订盟.嫁娶.祭祀.祈福.求嗣.开光.解除.出行.出火.入宅.移徙.栽种.纳畜.牧养.动土.破土.入殓.安葬.", "j": "作灶.安床.开仓.造屋.动土.安葬.", "c": "生肖冲鼠", "s": "煞北", "ch": "除", "zc": "正冲正冲戊子", "ts": "占门碓房内北" }, "d0508": { "y": "开光.纳采.裁衣.冠笄.安床.作灶.进人口.造仓.塞穴.", "j": "嫁娶.栽种.修造.动土.出行.伐木.作梁.安葬.谢土.", "c": "生肖冲牛", "s": "煞西", "ch": "满", "zc": "正冲正冲己丑", "ts": "碓磨厕房内北" }, "d0509": { "y": "纳采.嫁娶.裁衣.理发.出行.修造.动土.进人口.开市.交易.立券.挂匾.移徙.上梁.栽种.纳畜.", "j": "伐木.安葬.安床.祭祀.祈福.", "c": "生肖冲虎", "s": "煞南", "ch": "平", "zc": "正冲正冲庚寅", "ts": "厨灶炉房内北" }, "d0510": { "y": "开市.交易.立券.挂匾.祭祀.祈福.斋醮.出行.开市.交易.立券.造屋.起基.修造.动土.定磉.安床.安机械.安葬.破土.启攒.除服.成服.立碑.", "j": "作灶.嫁娶.移徙.入宅.理发.", "c": "生肖冲兔", "s": "煞東", "ch": "定", "zc": "正冲正冲辛卯", "ts": "仓库门房内北" }, "d0511": { "y": "嫁娶.纳采.订盟.祭祀.祈福.求嗣.开光.出火.出行.拆卸.动土.修造.进人口.入宅.移徙.安床.解除.挂匾.栽种.破土.谢土.入殓.移柩.安葬.", "j": "开市.立券.造船.合寿木.", "c": "生肖冲龙", "s": "煞北", "ch": "执", "zc": "正冲正冲壬辰", "ts": "房床栖房内南" }, "d0512": { "y": "祭祀.沐浴.解除.破屋.坏垣.余事勿取.", "j": "开光.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "破", "zc": "正冲正冲癸巳", "ts": "占门床房内南" }, "d0513": { "y": "订盟.纳采.嫁娶.解除.祭祀.祈福.求嗣.开光.出行.解除.出火.拆卸.入宅.移徙.安床.栽种.纳畜.动土.破土.谢土.安葬.修坟.", "j": "作灶.开市.经络.", "c": "生肖冲马", "s": "煞南", "ch": "危", "zc": "正冲正冲甲午", "ts": "占碓磨房内南" }, "d0514": { "y": "祭祀.祈福.求嗣.开光.订盟.纳采.解除.动土.起基.进人口.开市.交易.立券.纳财.造仓.开池.栽种.纳畜.破土.安葬.", "j": "安床.上梁.裁衣.入宅.嫁娶.", "c": "生肖冲羊", "s": "煞東", "ch": "成", "zc": "正冲正冲乙未", "ts": "厨灶厕房内南" }, "d0515": { "y": "祭祀.结网.捕捉.余事勿取.", "j": "探病.嫁娶.开市.", "c": "生肖冲猴", "s": "煞北", "ch": "收", "zc": "正冲正冲丙申", "ts": "仓库炉房内南" }, "d0516": { "y": "祭祀.祈福.求嗣.开光.纳采.订盟.嫁娶.出行.动土.破土.会亲友.开市.交易.立券.习艺.拆卸.起基.安碓硙.放水.开池.造仓.开渠.栽种.谢土.启攒.修坟.立碑.", "j": "入宅.安门.安葬.", "c": "生肖冲鸡", "s": "煞西", "ch": "开", "zc": "正冲正冲丁酉", "ts": "房床门房内南" }, "d0517": { "y": "嫁娶.冠笄.祭祀.出行.移徙.入宅.作灶.造车器.补垣.塞穴.作厕.破土.启攒.除服.成服.入殓.", "j": "入宅.造屋.造桥.安门.安葬.上梁.", "c": "生肖冲狗", "s": "煞南", "ch": "闭", "zc": "正冲正冲戊戌", "ts": "门鸡栖房内东" }, "d0518": { "y": "祭祀.解除.断蚁.会亲友.余事勿取.", "j": "嫁娶.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "建", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d0520": { "y": "嫁娶.纳采.订盟.会亲友.安机械.结网.冠笄.祭祀.求嗣.进人口.经络.", "j": "开市.作灶.动土.行丧.安葬.", "c": "生肖冲牛", "s": "煞西", "ch": "满", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d0521": { "y": "祭祀.沐浴.移徙.破土.安葬.扫舍.平治道涂.", "j": "祈福.嫁娶.入宅.安床.作灶.", "c": "生肖冲虎", "s": "煞南", "ch": "平", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" }, "d0522": { "y": "祭祀.祈福.斋醮.求嗣.安机械.纳畜.移徙.入宅.安机械.塑绘.开光.起基.竖柱.上梁.作灶.安门.安香.出火.造屋.启攒.安葬.", "j": "动土.破土.嫁娶.嫁娶.", "c": "生肖冲兔", "s": "煞東", "ch": "定", "zc": "正冲正冲癸卯", "ts": "占大门外东北" }, "d0523": { "y": "嫁娶.纳采.订盟.斋醮.开光.祭祀.祈福.求医.治病.会亲友.动土.解除.捕捉.纳畜.牧养.入殓.破土.安葬.", "j": "移徙.入宅.造屋.架马.", "c": "生肖冲龙", "s": "煞北", "ch": "执", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d0525": { "y": "沐浴.扫舍.余事勿取.", "j": "斋醮.开市.嫁娶.作灶.", "c": "生肖冲马", "s": "煞南", "ch": "危", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d0526": { "y": "开市.交易.立券.安机械.会亲友.开光.求医.治病.造屋.起基.修造.动土.定磉.竖柱.上梁.安门.作灶.放水.作厕.开池.栽种.牧养.造畜椆栖.破土.安葬.立碑.", "j": "嫁娶.出火.移徙.入宅.", "c": "生肖冲羊", "s": "煞東", "ch": "成", "zc": "正冲正冲丁未", "ts": "房床厕外东北" }, "d0527": { "y": "栽种.捕捉.畋猎.余事勿取.", "j": "开市.动土.祭祀.斋醮.安葬.探病.", "c": "生肖冲猴", "s": "煞北", "ch": "收", "zc": "正冲正冲戊申", "ts": "占门炉外东北" }, "d0528": { "y": "嫁娶.祭祀.祈福.求嗣.斋醮.订盟.纳采.解除.出行.动土.破土.习艺.针灸.理发.会亲友.起基.修造.动土.竖柱.定磉.安床.拆卸.纳畜.牧养.放水.破土.除服.成服.修坟.立碑.", "j": "开市.入宅.探病.出火.造屋.", "c": "生肖冲鸡", "s": "煞西", "ch": "开", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d0530": { "y": "塞穴.断蚁.结网.余事勿取.", "j": "破土.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "建", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d0614": { "y": "安机械.祭祀.祈福.求嗣.沐浴.解除.纳采.开市.修造.竖柱.上梁.开柱眼.安碓硙.归岫.补垣.塞穴.拆卸.放水.出火.扫舍.开生坟.合寿木.安葬.谢土.启攒.除服.成服.", "j": "嫁娶.安床.作灶.动土.破土.造船.", "c": "生肖冲虎", "s": "煞南", "ch": "满", "zc": "正冲正冲丙寅", "ts": "仓库炉外西南" }, "d0604": { "y": "嫁娶.纳采.求医.治病.修造.动土.移徙.入宅.破土.安葬.", "j": "开市.开光.", "c": "生肖冲龙", "s": "煞北", "ch": "执", "zc": "正冲正冲丙辰", "ts": "仓库栖外东南" }, "d0613": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出行.解除.出火.拆卸.修造.进人口.入宅.移徙.动土.安床.纳畜.栽种.纳财.交易.立券.挂匾.造畜椆栖.", "j": "安葬.开生坟.合寿木.行丧.", "c": "生肖冲牛", "s": "煞西", "ch": "除", "zc": "正冲正冲乙丑", "ts": "厨灶厕外西南" }, "d0623": { "y": "嫁娶.冠笄.修造.动土.作灶.移徙.入宅.补垣.塞穴.纳畜.牧养.架马.修造.动土.起基.定磉.开池.造船.", "j": "祈福.开光.掘井.开市.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "闭", "zc": "正冲正冲乙亥", "ts": "厨灶床外正西" }, "d0627": { "y": "祭祀.沐浴.理发.嫁娶.作灶.整手足甲.扫舍.修饰垣墙.平治道涂.", "j": "斋醮.出行.治病.合寿木.", "c": "生肖冲兔", "s": "煞東", "ch": "平", "zc": "正冲正冲己卯", "ts": "占门炉外西北" }, "d0724": { "y": "沐浴.理发.捕捉.入殓.移柩.破土.启攒.安葬.", "j": "出火.嫁娶.入宅.作灶.破土.上梁.动土.", "c": "生肖冲马", "s": "煞南", "ch": "执", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d0601": { "y": "进人口.牧养.置产.塞穴.结网.余事勿取.", "j": "诸事不宜.", "c": "生肖冲牛", "s": "煞西", "ch": "满", "zc": "正冲正冲癸丑", "ts": "占门厕外正东" }, "d0602": { "y": "开光.出行.嫁娶.", "j": "会亲友.进人口.修造.动土.起基.移徙.开市.纳畜.入殓.除服.成服.移柩.破土.安葬.修坟.立碑.会亲友.", "c": "生肖冲虎", "s": "煞南", "ch": "平", "zc": "正冲正冲甲寅", "ts": "碓磨炉外东南" }, "d0603": { "y": "嫁娶.纳采.出行.祭祀.祈福.开市.动土.移徙.入宅.破土.安葬.", "j": "安门.", "c": "生肖冲兔", "s": "煞東", "ch": "定", "zc": "正冲正冲乙卯", "ts": "厨灶门外东南" }, "d0605": { "y": "畋猎.捕捉.结网.取渔.祭祀.沐浴.余事勿取.", "j": "嫁娶.开市.安葬.启攒.行丧.", "c": "生肖冲蛇", "s": "煞西", "ch": "执", "zc": "正冲正冲丁巳", "ts": "占房床外东南" }, "d0606": { "y": "祭祀.破屋.坏垣.余事勿取.", "j": "移徙.入宅.开仓.出货财.", "c": "生肖冲马", "s": "煞南", "ch": "破", "zc": "正冲正冲戊午", "ts": "占门碓外东南" }, "d0607": { "y": "祭祀.斋醮.塑绘.开光.出行.修造.动土.造畜椆栖.安床.放水.掘井.开池.作厕.结网.破土.", "j": "出火.入宅.", "c": "生肖冲羊", "s": "煞東", "ch": "危", "zc": "正冲正冲己未", "ts": "碓磨厕外东南" }, "d0608": { "y": "开市.交易.立券.挂匾.开光.解除.拆卸.动土.安床.修造.上梁.置产.栽种.破土.安葬.", "j": "作灶.出火.祭祀.嫁娶.入宅.", "c": "生肖冲猴", "s": "煞北", "ch": "成", "zc": "正冲正冲庚申", "ts": "厨灶炉外正南" }, "d0609": { "y": "祭祀.结网.余事勿取.", "j": "入宅.出行.掘井.安葬.", "c": "生肖冲鸡", "s": "煞西", "ch": "收", "zc": "正冲正冲辛酉", "ts": "仓库门外正南" }, "d0610": { "y": "嫁娶.纳采.订盟.冠笄.造车器.祭祀.开光.祈福.求嗣.出行.解除.伐木.出火.入宅.拆卸.修造.动土.上梁.安床.栽种.破土.", "j": "行丧.置产.入宅.安葬.", "c": "生肖冲狗", "s": "煞南", "ch": "开", "zc": "正冲正冲壬戌", "ts": "房床栖外正南" }, "d0611": { "y": "嫁娶.合帐.裁衣.冠笄.伐木.上梁.出火.拆卸.移徙.修造.动土.安门.纳财.筑堤.栽种.塞穴.", "j": "安床.祈福.出行.安葬.行丧.开光.", "c": "生肖冲猪", "s": "煞東", "ch": "闭", "zc": "正冲正冲癸亥", "ts": "占门床外正南" }, "d0612": { "y": "出行.教牛马.割蜜.余事勿取.", "j": "斋醮.造屋.动土.破土.", "c": "生肖冲鼠", "s": "煞北", "ch": "建", "zc": "正冲正冲甲子", "ts": "占碓磨外正南" }, "d0615": { "y": "祭祀.沐浴.理发.整手足甲.修饰垣墙.平治道涂.余事勿取.", "j": "开市.入宅.出行.修造.词讼.", "c": "生肖冲兔", "s": "煞東", "ch": "平", "zc": "正冲正冲丁卯", "ts": "房床门外西南" }, "d0616": { "y": "嫁娶.纳采.祭祀.祈福.出行.立券.移徙.入宅.动土.破土.安葬.", "j": "开光.作灶.造屋.架马.开仓.", "c": "生肖冲龙", "s": "煞北", "ch": "定", "zc": "正冲正冲戊辰", "ts": "门鸡栖外西南" }, "d0617": { "y": "纳采.订盟.冠笄.祭祀.祈福.斋醮.出行.修造.动土.移徙.入宅.安香.出火.拆卸.造屋.起基.竖柱.上梁.定磉.安门.开池.", "j": "嫁娶.开市.合寿木.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "执", "zc": "正冲正冲己巳", "ts": "碓磨床外西南" }, "d0618": { "y": "祭祀.沐浴.破屋.坏垣.余事勿取.", "j": "入宅.嫁娶.移徙.", "c": "生肖冲马", "s": "煞南", "ch": "破", "zc": "正冲正冲庚午", "ts": "厨灶碓外西南" }, "d0619": { "y": "嫁娶.安机械.交易.出行.祭祀.祈福.求嗣.斋醮.塑绘.开光.合帐.裁衣.放水.开池.掘井.", "j": "作灶.理发.造桥.行丧.安葬.", "c": "生肖冲羊", "s": "煞東", "ch": "危", "zc": "正冲正冲辛未", "ts": "仓库厕外西南" }, "d0620": { "y": "纳采.冠笄.求医.治病.开市.立券.修造.动土.安机械.破土.安葬.", "j": "斋醮.祭祀.移徙.入宅.上梁.嫁娶.", "c": "生肖冲猴", "s": "煞北", "ch": "成", "zc": "正冲正冲壬申", "ts": "房床厕外正南" }, "d0621": { "y": "祭祀.作灶.余事勿取.", "j": "开市.安葬.破土.修坟.掘井.", "c": "生肖冲鸡", "s": "煞西", "ch": "收", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d0622": { "y": "祭祀.祈福.求嗣.斋醮.安香.解除.移徙.入宅.会亲友.求医.治病.动土.破土.开生坟.合寿木.", "j": "合帐.上梁.经络.安葬.入殓.", "c": "生肖冲狗", "s": "煞南", "ch": "开", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d0625": { "y": "嫁娶.订盟.纳采.冠笄.会亲友.安机械.造车器.祭祀.出行.纳财.入宅.安香.出火.入学.塑绘.开光.拆卸.起基.修造.动土.牧养.栽种.安门.作厕.", "j": "行丧.伐木.作梁.作灶.", "c": "生肖冲牛", "s": "煞西", "ch": "除", "zc": "正冲正冲丁丑", "ts": "房床厕外西北" }, "d0626": { "y": "开光.求嗣.出行.冠笄.嫁娶.伐木.架马.开柱眼.修造.移徙.入宅.开市.交易.立券.出行.安香.出火.挂匾.起基.修造.开生坟.合寿木.入殓.除服.成服.移柩.安葬.", "j": "安床.出货财.作灶.动土.破土.", "c": "生肖冲虎", "s": "煞南", "ch": "满", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d0628": { "y": "安机械.移徙.入宅.出行.祭祀.祈福.斋醮.纳采.订盟.安香.出火.解除.会亲友.修造.动土.拆卸.起基.定磉.移徙.入宅.造屋.安床.修造.破土.安葬.入殓.立碑.", "j": "开市.伐木.作梁.作灶.", "c": "生肖冲龙", "s": "煞北", "ch": "定", "zc": "正冲正冲庚辰", "ts": "厨灶栖外西北" }, "d0629": { "y": "祭祀.沐浴.捕捉.结网.畋猎.取渔.余事勿取.", "j": "开市.交易.嫁娶.安葬.行丧.", "c": "生肖冲蛇", "s": "煞西", "ch": "执", "zc": "正冲正冲辛巳", "ts": "仓库床外西北" }, "d0630": { "y": "破屋.坏垣.求医.治病.畋猎.余事勿取.", "j": "嫁娶.入宅.", "c": "生肖冲马", "s": "煞南", "ch": "破", "zc": "正冲正冲壬午", "ts": "房床碓外正北" }, "d0726": { "y": "纳采.订盟.嫁娶.移徙.入宅.出行.开市.交易.立券.纳财.会亲友.安香.出火.拆卸.造屋.起基.安床.作灶.挂匾.安葬.破土.启攒.立碑.入殓.移柩.", "j": "祈福.上梁.开仓.掘井.牧养.", "c": "生肖冲猴", "s": "煞北", "ch": "危", "zc": "正冲正冲戊申", "ts": "占门炉外东北" }, "d0716": { "y": "纳采.订盟.嫁娶.移徙.入宅.出行.祭祀.祈福.斋醮.塑绘.开光.安香.出火.会亲友.解除.入学.竖柱.上梁.拆卸.造屋.起基.栽种.牧养.纳畜.", "j": "安葬.破土.开市.开仓.出货财.启攒.", "c": "生肖冲狗", "s": "煞南", "ch": "收", "zc": "正冲正冲戊戌", "ts": "门鸡栖房内东" }, "d0731": { "y": "开市.纳财.祭祀.塑绘.安机械.冠笄.会亲友.裁衣.开仓.经络.纳畜.造畜椆栖.教牛马.牧养.", "j": "动土.破土.安葬.治病.", "c": "生肖冲牛", "s": "煞西", "ch": "建", "zc": "正冲正冲癸丑", "ts": "占门厕外正东" }, "d0728": { "y": "祭祀.进人口.纳财.纳畜.牧养.捕捉.余事勿取.", "j": "开市.入宅.安床.动土.安葬.", "c": "生肖冲狗", "s": "煞南", "ch": "收", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d0730": { "y": "祭祀.塞穴.结网.畋猎.余事勿取.", "j": "移徙.开市.入宅.嫁娶.开光.安门.", "c": "生肖冲鼠", "s": "煞北", "ch": "闭", "zc": "正冲正冲壬子", "ts": "房床碓外正东" }, "d0718": { "y": "祭祀.入殓.除服.成服.移柩.破土.启攒.安葬.塞穴.断蚁.结网.", "j": "开市.入宅.嫁娶.开光.造屋.", "c": "生肖冲鼠", "s": "煞北", "ch": "闭", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d0826": { "y": "祭祀.沐浴.理发.整手足甲.冠笄.解除.入殓.移柩.破土.启攒.安葬.", "j": "嫁娶.出行.入宅.开市.安门.", "c": "生肖冲兔", "s": "煞東", "ch": "除", "zc": "正冲正冲己卯", "ts": "占门炉外西北" }, "d0701": { "y": "嫁娶.出行.安机械.祭祀.塑绘.开光.治病.经络.安床.结网.塞穴.破土.入殓.", "j": "开市.安门.掘井.作灶.", "c": "生肖冲羊", "s": "煞東", "ch": "危", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d0702": { "y": "订盟.纳采.会亲友.进人口.雕刻.拆卸.修造.动土.起基.开市.栽种.纳畜.牧养.入殓.除服.成服.移柩.破土.安葬.", "j": "", "c": "生肖冲猴", "s": "煞北", "ch": "成", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d0703": { "y": "祭祀.捕捉.取渔.修饰垣墙.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鸡", "s": "煞西", "ch": "收", "zc": "正冲正冲乙酉", "ts": "厨灶门外正北" }, "d0704": { "y": "嫁娶.纳采.祭祀.祈福.求医.治病.出行.动土.移徙.入宅.", "j": "开市.安门.", "c": "生肖冲狗", "s": "煞南", "ch": "开", "zc": "正冲正冲丙戌", "ts": "仓库栖外正北" }, "d0705": { "y": "裁衣.作灶.移徙.入宅.纳畜.", "j": "嫁娶.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "闭", "zc": "正冲正冲丁亥", "ts": "占房床房内北" }, "d0706": { "y": "祭祀.入殓.移柩.启攒.安葬.", "j": "上梁.动土.破土.", "c": "生肖冲鼠", "s": "煞北", "ch": "建", "zc": "正冲正冲戊子", "ts": "占门碓房内北" }, "d0707": { "y": "嫁娶.祭祀.出行.裁衣.冠笄.交易.雕刻.纳财.造畜椆栖.造车器.雕刻.教牛马.", "j": "移徙.入宅.栽种.动土.破土.作灶.安葬.行丧.伐木.上梁.", "c": "生肖冲牛", "s": "煞西", "ch": "建", "zc": "正冲正冲己丑", "ts": "碓磨厕房内北" }, "d0708": { "y": "修造.动土.安机械.祭祀.沐浴.解除.拆卸.治病.作灶.造屋.起基.开池.扫舍.造畜椆栖.开生坟.合寿木.安葬.破土.启攒.移柩.入殓.立碑.", "j": "开市.入宅.出行.安床.作灶.", "c": "生肖冲虎", "s": "煞南", "ch": "除", "zc": "正冲正冲庚寅", "ts": "厨灶炉房内北" }, "d0709": { "y": "嫁娶.纳采.订盟.造车器.开光.出行.拆卸.起基.安床.除服.成服.开市.交易.立券.栽种.牧养.入殓.移柩.启攒.", "j": "上梁.入宅.修造.动土.破土.祭祀.祈福.斋醮.", "c": "生肖冲兔", "s": "煞東", "ch": "满", "zc": "正冲正冲辛卯", "ts": "仓库门房内北" }, "d0710": { "y": "祭祀.嫁娶.畋猎.结网.", "j": "动土.破土.治病.开渠.", "c": "生肖冲龙", "s": "煞北", "ch": "平", "zc": "正冲正冲壬辰", "ts": "房床栖房内南" }, "d0711": { "y": "纳采.订盟.会亲友.入学.祭祀.祈福.求嗣.开光.出行.解除.理发.动土.起基.开市.交易.立券.纳财.造仓.栽种.纳畜.牧养.", "j": "嫁娶.作灶.出火.置产.嫁娶.入宅.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "定", "zc": "正冲正冲癸巳", "ts": "占门床房内南" }, "d0712": { "y": "祭祀.祈福.解除.整手足甲.安床.沐浴.入殓.移柩.破土.启攒.安葬.谢土.", "j": "嫁娶.斋醮.开市.出火.入宅.移徙.出行.作灶.安门.伐木.", "c": "生肖冲马", "s": "煞南", "ch": "执", "zc": "正冲正冲甲午", "ts": "占碓磨房内南" }, "d0713": { "y": "破屋.坏垣.解除.余事勿取.", "j": "嫁娶.安葬.", "c": "生肖冲羊", "s": "煞東", "ch": "破", "zc": "正冲正冲乙未", "ts": "厨灶厕房内南" }, "d0714": { "y": "嫁娶.开市.立券.移徙.入宅.安机械.会亲友.经络.安门.安床.挂匾.拆卸.开仓.出货财.开池.栽种.纳畜.牧养.破土.安葬.启攒.移柩.入殓.立碑.", "j": "祭祀.祈福.探病.谢土.造桥.", "c": "生肖冲猴", "s": "煞北", "ch": "危", "zc": "正冲正冲丙申", "ts": "仓库炉房内南" }, "d0715": { "y": "嫁娶.订盟.纳采.祭祀.祈福.斋醮.开光.会亲友.求医.治病.造屋.起基.竖柱.上梁.安门.安碓硙.筑堤.开池.破土.安葬.除服.成服.", "j": "入宅.开市.掘井.词讼.合寿木.", "c": "生肖冲鸡", "s": "煞西", "ch": "成", "zc": "正冲正冲丁酉", "ts": "房床门房内南" }, "d0717": { "y": "纳采.订盟.嫁娶.祭祀.沐浴.塑绘.开光.出火.治病.习艺.伐木.造屋.竖柱.上梁.安床.作灶.安碓硙.挂匾.掘井.纳畜.", "j": "出行.安葬.造桥.", "c": "生肖冲猪", "s": "煞東", "ch": "开", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d0719": { "y": "祭祀.修造.出行.造屋.竖柱.造车器.教牛马.造畜椆栖.割蜜.", "j": "动土.破土.掘井.安葬.", "c": "生肖冲牛", "s": "煞西", "ch": "建", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d0720": { "y": "祭祀.沐浴.塑绘.开光.入学.解除.扫舍.治病.开池.牧养.", "j": "嫁娶.出行.纳采.入宅.作灶.", "c": "生肖冲虎", "s": "煞南", "ch": "除", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" }, "d0721": { "y": "纳财.开市.交易.立券.出行.祭祀.祈福.求嗣.开光.解除.扫舍.起基.竖柱.安床.移徙.开仓.出货财.补垣.塞穴.栽种.纳畜.牧养.", "j": "斋醮.入宅.安门.安葬.破土.行丧.", "c": "生肖冲兔", "s": "煞東", "ch": "满", "zc": "正冲正冲癸卯", "ts": "占大门外东北" }, "d0722": { "y": "祭祀.修饰垣墙.平治道涂.", "j": "开市.动土.破土.嫁娶.修造.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "平", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d0723": { "y": "订盟.纳采.祭祀.祈福.开光.安香.出火.立券.安机械.移徙.入宅.竖柱.上梁.会亲友.安床.拆卸.挂匾.牧养.教牛马.", "j": "嫁娶.安葬.行丧.破土.修坟.", "c": "生肖冲蛇", "s": "煞西", "ch": "定", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d0725": { "y": "求医.治病.破屋.坏垣.余事勿取.", "j": "嫁娶.出行.", "c": "生肖冲羊", "s": "煞東", "ch": "破", "zc": "正冲正冲丁未", "ts": "房床厕外东北" }, "d0727": { "y": "祭祀.祈福.斋醮.出行.纳采.订盟.安机械.出火.拆卸.修造.动土.起基.移徙.入宅.造庙.入殓.除服.成服.移柩.破土.安葬.谢土.", "j": "嫁娶.开市.栽种.合寿木.", "c": "生肖冲鸡", "s": "煞西", "ch": "成", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d0729": { "y": "祭祀.塑绘.开光.求医.治病.嫁娶.会亲友.放水.掘井.牧养.纳畜.开渠.安碓硙.", "j": "造屋.入宅.作灶.入学.安葬.行丧.", "c": "生肖冲猪", "s": "煞東", "ch": "开", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d0824": { "y": "嫁娶.普渡.祭祀.祈福.补垣.塞穴.断蚁.筑堤.入殓.除服.成服.安葬.", "j": "动土.破土.掘井.开光.上梁.词讼.", "c": "生肖冲牛", "s": "煞西", "ch": "闭", "zc": "正冲正冲丁丑", "ts": "房床厕外西北" }, "d0823": { "y": "嫁娶.订盟.纳采.祭祀.斋醮.普渡.解除.出行.会亲友.开市.纳财.修造.动土.竖柱.上梁.开光.开仓.出货财.纳畜.牧养.开池.破土.启攒.", "j": "出火.入宅.造屋.安门.安葬.", "c": "生肖冲鼠", "s": "煞北", "ch": "开", "zc": "正冲正冲丙子", "ts": "仓库碓外西北" }, "d0814": { "y": "解除.祭祀.祈福.求嗣.修造.动土.竖柱.上梁.安床.纳畜.造屋.合脊.起基.入殓.破土.安葬.", "j": "出火.嫁娶.开光.进人口.出行.词讼.开市.入宅.移徙.赴任.", "c": "生肖冲兔", "s": "煞東", "ch": "除", "zc": "正冲正冲丁卯", "ts": "房床门外西南" }, "d0923": { "y": "嫁娶.造车器.安机械.祭祀.祈福.开光.安香.出火.出行.开市.立券.修造.动土.移徙.入宅.破土.安葬.", "j": "纳采.订盟.架马.词讼.开渠.", "c": "生肖冲羊", "s": "煞東", "ch": "定", "zc": "正冲正冲丁未", "ts": "房床厕外东北" }, "d0801": { "y": "移徙.入宅.治病.会亲友.祭祀.祈福.斋醮.安香.移徙.嫁娶.造屋.起基.", "j": "开市.斋醮.安床.出行.经络.", "c": "生肖冲虎", "s": "煞南", "ch": "除", "zc": "正冲正冲甲寅", "ts": "碓磨炉外东南" }, "d0802": { "y": "塑绘.出行.冠笄.嫁娶.进人口.裁衣.纳婿.造畜椆栖.交易.立券.牧养.开生坟.入殓.除服.成服.移柩.安葬.启攒.", "j": "", "c": "生肖冲兔", "s": "煞東", "ch": "满", "zc": "正冲正冲乙卯", "ts": "厨灶门外东南" }, "d0803": { "y": "祭祀.冠笄.嫁娶.捕捉.结网.畋猎.取渔.余事勿取.", "j": "余事勿取.", "c": "生肖冲龙", "s": "煞北", "ch": "平", "zc": "正冲正冲丙辰", "ts": "仓库栖外东南" }, "d0804": { "y": "沐浴.扫舍.余事勿取.", "j": "诸事不宜.", "c": "生肖冲蛇", "s": "煞西", "ch": "定", "zc": "正冲正冲丁巳", "ts": "占房床外东南" }, "d0805": { "y": "纳采.祭祀.祈福.解除.动土.破土.安葬.", "j": "嫁娶.移徙.入宅.", "c": "生肖冲马", "s": "煞南", "ch": "执", "zc": "正冲正冲戊午", "ts": "占门碓外东南" }, "d0806": { "y": "祭祀.破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲羊", "s": "煞東", "ch": "破", "zc": "正冲正冲己未", "ts": "碓磨厕外东南" }, "d0807": { "y": "破屋.坏垣.治病.余事勿取.", "j": "祈福.纳采.订盟.嫁娶.入宅.安葬.", "c": "生肖冲猴", "s": "煞北", "ch": "破", "zc": "正冲正冲庚申", "ts": "厨灶炉外正南" }, "d0808": { "y": "嫁娶.开光.祭祀.祈福.求嗣.安香.出火.解除.伐木.入宅.移徙.安床.开市.交易.立券.栽种.出火.出行.安葬.", "j": "掘井.理发.作灶.动土.破土.开池.", "c": "生肖冲鸡", "s": "煞西", "ch": "危", "zc": "正冲正冲辛酉", "ts": "仓库门外正南" }, "d0809": { "y": "安机械.纳采.订盟.祭祀.祈福.求嗣.开光.普渡.出行.出火.拆卸.修造.动土.进人口.开市.交易.立券.移徙.安床.栽种.上梁.纳畜.破土.移柩.安葬.", "j": "入宅.嫁娶.掘井.牧养.", "c": "生肖冲狗", "s": "煞南", "ch": "成", "zc": "正冲正冲壬戌", "ts": "房床栖外正南" }, "d0810": { "y": "嫁娶.祭祀.祈福.求嗣.裁衣.冠笄.经络.修造.进人口.安床.动土.竖柱.上梁.移徙.交易.立券.栽种.会亲友.", "j": "行丧.安葬.出行.作梁.纳畜.伐木.造桥.", "c": "生肖冲猪", "s": "煞東", "ch": "收", "zc": "正冲正冲癸亥", "ts": "占门床外正南" }, "d0811": { "y": "嫁娶.纳采.订盟.开光.祭祀.出行.理发.动土.安床.放水.开渠.栽种.进人口.", "j": "入宅.上梁.入殓.造屋.探病.作灶.安门.安葬.纳畜.伐木.", "c": "生肖冲鼠", "s": "煞北", "ch": "开", "zc": "正冲正冲甲子", "ts": "占碓磨外正南" }, "d0812": { "y": "祭祀.出行.作梁.出火.拆卸.修造.动土.起基.安床.补垣.塞穴.入殓.破土.安葬.移柩.造畜椆栖.", "j": "嫁娶.入宅.斋醮.开光.针灸.掘井.", "c": "生肖冲牛", "s": "煞西", "ch": "闭", "zc": "正冲正冲乙丑", "ts": "厨灶厕外西南" }, "d0813": { "y": "嫁娶.纳采.订盟.祭祀.祈福.求嗣.出行.解除.竖柱.入宅.移徙.纳财.上梁.纳畜.入殓.安葬.启攒.", "j": "栽种.掘井.动土.安床.破土.置产.", "c": "生肖冲虎", "s": "煞南", "ch": "建", "zc": "正冲正冲丙寅", "ts": "仓库炉外西南" }, "d0815": { "y": "沐浴.理发.会亲友.塑绘.开光.栽种.牧养.嫁娶.经络.补垣.塞穴.", "j": "开市.入宅.动土.破土.安葬.作灶.上梁.安床.开仓.祈福.", "c": "生肖冲龙", "s": "煞北", "ch": "满", "zc": "正冲正冲戊辰", "ts": "门鸡栖外西南" }, "d0816": { "y": "祭祀.理发.作灶.沐浴.修饰垣墙.平治道涂.", "j": "嫁娶.栽种.祈福.造桥.安葬.安门.伐木.作梁.", "c": "生肖冲蛇", "s": "煞西", "ch": "平", "zc": "正冲正冲己巳", "ts": "碓磨床外西南" }, "d0817": { "y": "嫁娶.纳采.订盟.祭祀.祈福.斋醮.普渡.移徙.入宅.出行.安机械.开光.修造.动土.竖柱.上梁.造屋.起基.定磉.安门.安葬.破土.", "j": "开市.立券.置产.作灶.造桥.", "c": "生肖冲马", "s": "煞南", "ch": "定", "zc": "正冲正冲庚午", "ts": "厨灶碓外西南" }, "d0818": { "y": "祭祀.普渡.捕捉.解除.结网.畋猎.入殓.破土.安葬.", "j": "开市.交易.入宅.嫁娶.", "c": "生肖冲羊", "s": "煞東", "ch": "执", "zc": "正冲正冲辛未", "ts": "仓库厕外西南" }, "d0819": { "y": "沐浴.破屋.坏垣.余事勿取.", "j": "斋醮.开市.", "c": "生肖冲猴", "s": "煞北", "ch": "破", "zc": "正冲正冲壬申", "ts": "房床厕外正南" }, "d0820": { "y": "订盟.纳采.祭祀.祈福.安香.出火.开市.立券.入宅.挂匾.造桥.启攒.安葬.", "j": "动土.破土.嫁娶.掘井.安床.", "c": "生肖冲鸡", "s": "煞西", "ch": "危", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d0821": { "y": "嫁娶.祭祀.祈福.斋醮.普渡.移徙.入宅.动土.治病.开市.交易.立券.开光.修造.造车器.安香.安床.捕捉.畋猎.结网.", "j": "纳采.订盟.经络.行丧.安葬.探病.", "c": "生肖冲狗", "s": "煞南", "ch": "成", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d0822": { "y": "嫁娶.订盟.纳采.作灶.冠笄.裁衣.会亲友.纳畜.牧养.安机械.开市.立券.纳财.安床.", "j": "掘井.出行.破土.行丧.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "收", "zc": "正冲正冲乙亥", "ts": "厨灶床外正西" }, "d0825": { "y": "嫁娶.冠笄.祭祀.沐浴.普渡.出行.纳财.扫舍.纳畜.赴任.", "j": "开市.动土.破土.安床.开仓.上梁.", "c": "生肖冲虎", "s": "煞南", "ch": "建", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d0827": { "y": "塑绘.冠笄.嫁娶.会亲友.进人口.经络.裁衣.栽种.纳畜.牧养.补垣.塞穴.捕捉.", "j": "祈福.开市.动土.行丧.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "满", "zc": "正冲正冲庚辰", "ts": "厨灶栖外西北" }, "d0828": { "y": "出行.沐浴.订盟.纳采.裁衣.竖柱.上梁.移徙.纳畜.牧养.", "j": "嫁娶.安门.动土.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "平", "zc": "正冲正冲辛巳", "ts": "仓库床外西北" }, "d0829": { "y": "纳采.订盟.嫁娶.祭祀.祈福.普渡.开光.安香.出火.移徙.入宅.竖柱.修造.动土.竖柱.上梁.起基.造屋.安门.造庙.造桥.破土.启攒.安葬.", "j": "开市.立券.纳财.作灶.", "c": "生肖冲马", "s": "煞南", "ch": "定", "zc": "正冲正冲壬午", "ts": "房床碓外正北" }, "d0830": { "y": "祭祀.捕捉.畋猎.纳畜.牧养.入殓.除服.成服.移柩.破土.安葬.启攒.", "j": "嫁娶.纳采.订盟.开市.入宅.", "c": "生肖冲羊", "s": "煞東", "ch": "执", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d0831": { "y": "破屋.坏垣.治病.余事勿取.", "j": "行丧.安葬.", "c": "生肖冲猴", "s": "煞北", "ch": "破", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d0913": { "y": "破屋.坏垣.求医.治病.余事勿取.", "j": "移徙.入宅.", "c": "生肖冲鸡", "s": "煞西", "ch": "破", "zc": "正冲正冲丁酉", "ts": "房床门房内南" }, "d0903": { "y": "塑绘.开光.解除.订盟.纳采.嫁娶.出火.修造.动土.移徙.入宅.拆卸.起基.安门.分居.开市.交易.立券.纳财.纳畜.牧养.", "j": "", "c": "生肖冲猪", "s": "煞東", "ch": "收", "zc": "正冲正冲丁亥", "ts": "占房床房内北" }, "d1023": { "y": "祭祀.作灶.纳财.捕捉.畋猎.余事勿取.", "j": "动土.破土.开市.安葬.", "c": "生肖冲牛", "s": "煞西", "ch": "收", "zc": "正冲正冲丁丑", "ts": "房床厕外西北" }, "d0901": { "y": "祈福.斋醮.出行.冠笄.嫁娶.雕刻.开柱眼.入宅.造桥.开市.交易.立券.纳财.入殓.除服.成服.移柩.破土.安葬.启攒.", "j": "动土.破土.订盟.安床.开池.", "c": "生肖冲鸡", "s": "煞西", "ch": "危", "zc": "正冲正冲乙酉", "ts": "厨灶门外正北" }, "d0902": { "y": "祈福.求嗣.解除.订盟.纳采.动土.起基.放水.造仓.开市.纳畜.牧养.开生坟.入殓.除服.成服.移柩.破土.安葬.", "j": "", "c": "生肖冲狗", "s": "煞南", "ch": "成", "zc": "正冲正冲丙戌", "ts": "仓库栖外正北" }, "d0904": { "y": "祈福.出行.订盟.纳采.嫁娶.裁衣.动土.安床.放水.开市.掘井.交易.立券.栽种.开渠.除服.成服.移柩.破土.", "j": "", "c": "生肖冲鼠", "s": "煞北", "ch": "开", "zc": "正冲正冲戊子", "ts": "占门碓房内北" }, "d0905": { "y": "嫁娶.祭祀.祈福.斋醮.作灶.移徙.入宅.", "j": "动土.破土.", "c": "生肖冲牛", "s": "煞西", "ch": "闭", "zc": "正冲正冲己丑", "ts": "碓磨厕房内北" }, "d0906": { "y": "嫁娶.出行.纳畜.祭祀.入殓.启攒.安葬.", "j": "作灶.动土.破土.", "c": "生肖冲虎", "s": "煞南", "ch": "建", "zc": "正冲正冲庚寅", "ts": "厨灶炉房内北" }, "d0907": { "y": "祭祀.出行.沐浴.扫舍.安葬.余事勿取.", "j": "动土.破土.置产.掘井.", "c": "生肖冲兔", "s": "煞東", "ch": "建", "zc": "正冲正冲辛卯", "ts": "仓库门房内北" }, "d0908": { "y": "嫁娶.纳采.祭祀.解除.出行.修造.动土.开市.上梁.安床.整手足甲.扫舍.求医.治病.起基.定磉.造屋.合脊.", "j": "造庙.行丧.安葬.伐木.作灶.造船.", "c": "生肖冲龙", "s": "煞北", "ch": "除", "zc": "正冲正冲壬辰", "ts": "房床栖房内南" }, "d0909": { "y": "纳采.订盟.开市.交易.立券.挂匾.纳财.栽种.进人口.入宅.移徙.安床.开光.出火.拆卸.安门.修造.", "j": "斋醮.嫁娶.行丧.动土.作灶.安葬.破土.", "c": "生肖冲蛇", "s": "煞西", "ch": "满", "zc": "正冲正冲癸巳", "ts": "占门床房内南" }, "d0910": { "y": "祭祀.沐浴.修饰垣墙.平治道涂.余事勿取.", "j": "嫁娶.入宅.安床.出行.", "c": "生肖冲马", "s": "煞南", "ch": "平", "zc": "正冲正冲甲午", "ts": "占碓磨房内南" }, "d0911": { "y": "开光.祈福.求嗣.斋醮.修造.动土.纳财.造仓.作厕.栽种.牧养.会亲友.", "j": "作灶.出火.进人口.开渠.入宅.移徙.祭祀.", "c": "生肖冲羊", "s": "煞東", "ch": "定", "zc": "正冲正冲乙未", "ts": "厨灶厕房内南" }, "d0912": { "y": "开光.解除.拆卸.修造.动土.竖柱.安门.牧养.安葬.修坟.破土.移柩.", "j": "出火.入宅.移徙.祈福.祭祀.安床.开市.嫁娶.探病.", "c": "生肖冲猴", "s": "煞北", "ch": "执", "zc": "正冲正冲丙申", "ts": "仓库炉房内南" }, "d0914": { "y": "嫁娶.纳采.订盟.祭祀.祈福.求嗣.开光.出行.出火.拆卸.修造.动土.进人口.入宅.移徙.安床.上梁.合脊.放水.掘井.破土.移柩.谢土.除服.成服.", "j": "开市.开仓.安门.安葬.", "c": "生肖冲狗", "s": "煞南", "ch": "危", "zc": "正冲正冲戊戌", "ts": "门鸡栖房内东" }, "d0915": { "y": "嫁娶.纳采.订盟.祭祀.祈福.求嗣.开光.解除.进人口.入宅.移徙.出火.安床.开市.交易.立券.挂匾.", "j": "安葬.纳畜.出行.行丧.伐木.栽种.造庙.造桥.", "c": "生肖冲猪", "s": "煞東", "ch": "成", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d0916": { "y": "祭祀.冠笄.捕捉.余事勿取.", "j": "嫁娶.开市.造屋.作梁.合寿木.", "c": "生肖冲鼠", "s": "煞北", "ch": "收", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d0917": { "y": "祭祀.解除.结网.畋猎.取渔.会亲友.入学.移柩.启攒.除服.成服.", "j": "开市.祈福.动土.破土.入殓.安葬.造船.", "c": "生肖冲牛", "s": "煞西", "ch": "开", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d0918": { "y": "冠笄.沐浴.出行.修造.动土.移徙.入宅.破土.安葬.", "j": "嫁娶.开市.祭祀.祈福.斋醮.纳采.修坟.", "c": "生肖冲虎", "s": "煞南", "ch": "闭", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" }, "d0919": { "y": "祭祀.出行.", "j": "嫁娶.入宅.修造.动土.会亲友.破土.", "c": "生肖冲兔", "s": "煞東", "ch": "建", "zc": "正冲正冲癸卯", "ts": "占大门外东北" }, "d0920": { "y": "嫁娶.订盟.纳采.祭祀.祈福.出行.修造.动土.移徙.入宅.", "j": "针灸.伐木.作梁.造庙.行丧.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "除", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d0921": { "y": "出行.开市.交易.立券.安机械.出火.上梁.移徙.", "j": "嫁娶.安葬.动土.造桥.", "c": "生肖冲蛇", "s": "煞西", "ch": "满", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d0922": { "y": "祭祀.沐浴.修饰垣墙.平治道涂.余事勿取.", "j": "斋醮.嫁娶.移徙.出行.上梁.入宅.", "c": "生肖冲马", "s": "煞南", "ch": "平", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d0924": { "y": "沐浴.捕捉.入殓.除服.成服.破土.启攒.安葬.", "j": "祭祀.嫁娶.安床.开市.入宅.探病.上梁.", "c": "生肖冲猴", "s": "煞北", "ch": "执", "zc": "正冲正冲戊申", "ts": "占门炉外东北" }, "d0925": { "y": "余事勿取.", "j": "探病.余事勿取.", "c": "生肖冲鸡", "s": "煞西", "ch": "破", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d0926": { "y": "订盟.纳采.祭祀.祈福.安香.出火.修造.动土.上梁.安门.起基.竖柱.上梁.定磉.开池.移徙.入宅.立券.破土.", "j": "嫁娶.造庙.造桥.造船.作灶.安葬.", "c": "生肖冲狗", "s": "煞南", "ch": "危", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d0927": { "y": "开光.求嗣.雕刻.嫁娶.订盟.纳采.出火.拆卸.修造.动土.起基.上梁.放水.移徙.入宅.造仓.造船.开市.开池.纳畜.牧养.挂匾.", "j": "行丧.安葬.合寿木.", "c": "生肖冲猪", "s": "煞東", "ch": "成", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d0928": { "y": "祭祀.嫁娶.捕捉.", "j": "开光.动土.破土.开市.修造.入宅.安门.", "c": "生肖冲鼠", "s": "煞北", "ch": "收", "zc": "正冲正冲壬子", "ts": "房床碓外正东" }, "d0929": { "y": "祭祀.普渡.解除.会亲友.捕捉.畋猎.启攒.除服.成服.移柩.", "j": "嫁娶.开市.动土.掘井.开池.安葬.", "c": "生肖冲牛", "s": "煞西", "ch": "开", "zc": "正冲正冲癸丑", "ts": "占门厕外正东" }, "d0930": { "y": "祭祀.出行.解除.冠笄.嫁娶.伐木.架马.开柱眼.修造.动土.移徙.入宅.开生坟.合寿木.入殓.移柩.破土.安葬.修坟.", "j": "开光.安床.", "c": "生肖冲虎", "s": "煞南", "ch": "闭", "zc": "正冲正冲甲寅", "ts": "碓磨炉外东南" }, "d1028": { "y": "沐浴.理发.冠笄.安床.开市.立券.会亲友.交易.纳财.结网.教牛马.", "j": "移徙.入宅.出行.祈福.嫁娶.", "c": "生肖冲马", "s": "煞南", "ch": "满", "zc": "正冲正冲壬午", "ts": "房床碓外正北" }, "d1025": { "y": "冠笄.祭祀.沐浴.作灶.理发.整手足甲.扫舍.补垣.塞穴.入殓.破土.启攒.", "j": "开光.嫁娶.会亲友.栽种.针灸.安葬.", "c": "生肖冲兔", "s": "煞東", "ch": "闭", "zc": "正冲正冲己卯", "ts": "占门炉外西北" }, "d1015": { "y": "祭祀.开光.出行.解除.伐木.作梁.出火.拆卸.入宅.移徙.安床.修造.造畜椆栖.扫舍.", "j": "造庙.嫁娶.掘井.栽种.造桥.作灶.动土.", "c": "生肖冲蛇", "s": "煞西", "ch": "除", "zc": "正冲正冲己巳", "ts": "碓磨床外西南" }, "d1005": { "y": "祭祀.会亲友.纳采.嫁娶.开光.塑绘.斋醮.安香.开市.立券.除服.成服.入殓.移柩.安葬.赴任.进人口.出行.裁衣.修造.动土.上梁.经络.交易.", "j": "入宅.伐木.", "c": "生肖冲羊", "s": "煞东", "ch": "定", "zc": "正冲正冲己未", "ts": "碓磨厕外东南" }, "d1031": { "y": "祭祀.祈福.求嗣.斋醮.造庙.出火.安机械.会亲友.开市.交易.立券.纳财.习艺.经络.求医.治病.开池.作厕.畋猎.结网.栽种.牧养.安葬.破土.启攒.", "j": "开光.嫁娶.掘井.伐木.作梁.", "c": "生肖冲鸡", "s": "煞西", "ch": "执", "zc": "正冲正冲乙酉", "ts": "厨灶门外正北" }, "d1024": { "y": "嫁娶.订盟.纳采.祭祀.祈福.出行.求医.治病.出火.移徙.入宅.", "j": "开市.开仓.出货财.安床.安门.安葬.", "c": "生肖冲虎", "s": "煞南", "ch": "开", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d1029": { "y": "祭祀.造畜椆栖.修饰垣墙.平治道涂.余事勿取.", "j": "嫁娶.开市.安床.掘井.", "c": "生肖冲羊", "s": "煞東", "ch": "平", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d1125": { "y": "嫁娶.订盟.纳采.祭祀.祈福.塑绘.开光.移徙.安床.伐木.作梁.捕捉.畋猎.结网.求医.治病.解除.安葬.除服.成服.移柩.入殓.立碑.谢土.", "j": "开市.造庙.动土.破土.", "c": "生肖冲狗", "s": "煞南", "ch": "执", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d1001": { "y": "祭祀.祈福.求嗣.出行.沐浴.交易.扫舍.教牛马.", "j": "动土.作灶.行丧.安葬.修坟.", "c": "生肖冲兔", "s": "煞東", "ch": "建", "zc": "正冲正冲乙卯", "ts": "厨灶门外东南" }, "d1002": { "y": "出行.解除.纳采.冠笄.雕刻.修造.动土.起基.上梁.合脊.安床.移徙.入宅.开市.栽种.作厕.", "j": "造庙.安门.行丧.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "除", "zc": "正冲正冲丙辰", "ts": "仓库栖外东南" }, "d1003": { "y": "祭祀.沐浴.解除.理发.冠笄.安机械.作灶.造仓.开市.开池.作厕.补垣.塞穴.断蚁.结网.", "j": "嫁娶.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "满", "zc": "正冲正冲丁巳", "ts": "占房床外东南" }, "d1004": { "y": "祭祀.沐浴.修饰垣墙.平治道涂.", "j": "嫁娶.入宅.", "c": "生肖冲马", "s": "煞南", "ch": "平", "zc": "正冲正冲戊午", "ts": "占门碓外东南" }, "d1006": { "y": "祭祀.冠笄.会亲友.拆卸.起基.除服.成服.移柩.启攒.安葬.沐浴.捕捉.开光.塑绘.", "j": "作灶.祭祀.入宅.嫁娶.", "c": "生肖冲猴", "s": "煞北", "ch": "执", "zc": "正冲正冲庚申", "ts": "厨灶炉外正南" }, "d1007": { "y": "祭祀.沐浴.破屋.坏垣.余事勿取.", "j": "移徙.入宅.出行.栽种.", "c": "生肖冲鸡", "s": "煞西", "ch": "破", "zc": "正冲正冲辛酉", "ts": "仓库门外正南" }, "d1008": { "y": "祭祀.沐浴.破屋.坏垣.余事勿取.", "j": "嫁娶.入宅.上梁.出行.安葬.", "c": "生肖冲狗", "s": "煞南", "ch": "破", "zc": "正冲正冲壬戌", "ts": "房床栖外正南" }, "d1009": { "y": "祭祀.求嗣.冠笄.进人口.会亲友.安门.安床.经络.纳财.牧养.畋猎.放水.割蜜.", "j": "祈福.斋醮.纳采.订盟.嫁娶.入宅.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "危", "zc": "正冲正冲癸亥", "ts": "占门床外正南" }, "d1010": { "y": "嫁娶.纳采.订盟.开市.交易.立券.挂匾.祭祀.祈福.开光.造车器.挂匾.出行.入宅.移徙.安床.安门.拆卸.修造.动土.栽种.安葬.破土.启攒.除服.成服.入殓.立碑.", "j": "探病.纳畜.伐木.起基.作梁.造屋.", "c": "生肖冲鼠", "s": "煞北", "ch": "成", "zc": "正冲正冲甲子", "ts": "占碓磨外正南" }, "d1011": { "y": "祭祀.冠笄.移徙.会亲友.纳财.理发.捕捉.", "j": "嫁娶.开市.开池.作厕.破土.", "c": "生肖冲牛", "s": "煞西", "ch": "收", "zc": "正冲正冲乙丑", "ts": "厨灶厕外西南" }, "d1012": { "y": "祭祀.祈福.求嗣.斋醮.开光.出行.嫁娶.求医.治病.动土.破土.入学.起基.扫舍.竖柱.上梁.开仓.出货财.置产.栽种.牧养.开生坟.谢土.立碑.", "j": "安门.安床.裁衣.入宅.安葬.", "c": "生肖冲虎", "s": "煞南", "ch": "开", "zc": "正冲正冲丙寅", "ts": "仓库炉外西南" }, "d1013": { "y": "嫁娶.裁衣.冠笄.合帐.祭祀.出行.安床.移徙.塞穴.入殓.破土.移柩.安葬.", "j": "开市.出行.栽种.置产.词讼.安门.掘井.开光.", "c": "生肖冲兔", "s": "煞東", "ch": "闭", "zc": "正冲正冲丁卯", "ts": "房床门外西南" }, "d1014": { "y": "祭祀.造车器.出行.修造.上梁.造屋.安门.安床.造畜椆栖.教牛马.", "j": "出货财.开仓.动土.破土.安葬.行丧.伐木.开渠.栽种.", "c": "生肖冲龙", "s": "煞北", "ch": "建", "zc": "正冲正冲戊辰", "ts": "门鸡栖外西南" }, "d1016": { "y": "纳采.订盟.开市.交易.立券.会亲友.纳畜.牧养.问名.移徙.解除.作厕.入学.起基.安床.开仓.出货财.安葬.启攒.入殓.除服.成服.", "j": "入宅.上梁.斋醮.出火.谢土.", "c": "生肖冲马", "s": "煞南", "ch": "满", "zc": "正冲正冲庚午", "ts": "厨灶碓外西南" }, "d1017": { "y": "祭祀.平治道涂.余事勿取.", "j": "嫁娶.开市.", "c": "生肖冲羊", "s": "煞東", "ch": "平", "zc": "正冲正冲辛未", "ts": "仓库厕外西南" }, "d1018": { "y": "捕捉.畋猎.余事勿取.", "j": "开市.交易.祭祀.入宅.安葬.", "c": "生肖冲猴", "s": "煞北", "ch": "定", "zc": "正冲正冲壬申", "ts": "房床厕外正南" }, "d1019": { "y": "嫁娶.纳采.订盟.祭祀.祈福.求嗣.斋醮.开光.安香.出火.造庙.移徙.出行.入宅.造庙.起基.竖柱.上梁.安床.纳畜.捕捉.纳婿.安葬.", "j": "开市.破土.掘井.合寿木.", "c": "生肖冲鸡", "s": "煞西", "ch": "执", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d1020": { "y": "祭祀.沐浴.解除.破屋.坏垣.余事勿取.", "j": "开市.嫁娶.", "c": "生肖冲狗", "s": "煞南", "ch": "破", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d1021": { "y": "订盟.纳采.会亲友.交易.立券.纳财.栽种.纳畜.牧养.", "j": "嫁娶.开市.入宅.祈福.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "危", "zc": "正冲正冲乙亥", "ts": "厨灶床外正西" }, "d1022": { "y": "造车器.嫁娶.订盟.纳采.会亲友.祭祀.出行.开市.立券.移徙.入宅.破土.安葬.", "j": "上梁.开光.造屋.架马.合寿木.", "c": "生肖冲鼠", "s": "煞北", "ch": "成", "zc": "正冲正冲丙子", "ts": "仓库碓外西北" }, "d1026": { "y": "纳采.订盟.嫁娶.祭祀.祈福.求嗣.置产.求医.治病.开市.交易.立券.会亲友.移徙.竖柱.上梁.造屋.合脊.安门.放水.捕捉.纳畜.", "j": "造庙.造船.动土.破土.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "建", "zc": "正冲正冲庚辰", "ts": "厨灶栖外西北" }, "d1027": { "y": "出行.造车器.造畜椆栖.解除.冠笄.裁衣.作梁.雕刻.会亲友.移徙.入宅.安机械.造畜椆栖.开市.扫舍.", "j": "嫁娶.动土.破土.修坟.", "c": "生肖冲蛇", "s": "煞西", "ch": "除", "zc": "正冲正冲辛巳", "ts": "仓库床外西北" }, "d1030": { "y": "捕捉.结网.入殓.除服.成服.移柩.破土.安葬.启攒.立碑.", "j": "嫁娶.祭祀.入宅.造屋.移徙.", "c": "生肖冲猴", "s": "煞北", "ch": "定", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d1127": { "y": "嫁娶.纳采.订盟.祭祀.冠笄.裁衣.伐木.作梁.架马.定磉.开柱眼.作灶.移徙.安床.畋猎.结网.开池.作厕.除服.成服.启攒.入殓.移柩.安葬.", "j": "造屋.造船.动土.破土.", "c": "生肖冲鼠", "s": "煞北", "ch": "危", "zc": "正冲正冲壬子", "ts": "房床碓外正东" }, "d1122": { "y": "塑绘.会亲友.安机械.塞穴.结网.裁衣.经络.", "j": "嫁娶.开市.祈福.斋醮.安葬.", "c": "生肖冲羊", "s": "煞東", "ch": "满", "zc": "正冲正冲丁未", "ts": "房床厕外东北" }, "d1227": { "y": "合帐.裁衣.教牛马.余事勿取.", "j": "入宅.动土.破土.嫁娶.作灶.造船.", "c": "生肖冲马", "s": "煞南", "ch": "建", "zc": "正冲正冲壬午", "ts": "房床碓外正北" }, "d1101": { "y": "破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲狗", "s": "煞南", "ch": "破", "zc": "正冲正冲丙戌", "ts": "仓库栖外正北" }, "d1102": { "y": "会亲友.嫁娶.订盟.纳采.纳婿.拆卸.修造.动土.起基.竖柱.上梁.安床.会亲友.纳财.", "j": "出行.祈福.安葬.作灶.", "c": "生肖冲猪", "s": "煞東", "ch": "危", "zc": "正冲正冲丁亥", "ts": "占房床房内北" }, "d1103": { "y": "祭祀.塑绘.开光.祈福.斋醮.出行.订盟.纳采.裁衣.嫁娶.拆卸.修造.安床.入宅.安香.入殓.启攒.安葬.谢土.赴任.会亲友.进人口.出行.移徙.上梁.经络.开市.交易.立券.纳财.", "j": "开仓.冠笄.伐木.作梁.", "c": "生肖冲鼠", "s": "煞北", "ch": "成", "zc": "正冲正冲戊子", "ts": "占门碓房内北" }, "d1104": { "y": "祭祀.作灶.入殓.除服.成服.畋猎.", "j": "栽种.动土.安葬.开市.", "c": "生肖冲牛", "s": "煞西", "ch": "收", "zc": "正冲正冲己丑", "ts": "碓磨厕房内北" }, "d1105": { "y": "祭祀.祈福.斋醮.沐浴.竖柱.订盟.纳采.嫁娶.拆卸.入宅.移柩.启攒.谢土.赴任.出火.纳畜.", "j": "作灶.入殓.安葬.安床.", "c": "生肖冲虎", "s": "煞南", "ch": "开", "zc": "正冲正冲庚寅", "ts": "厨灶炉房内北" }, "d1106": { "y": "嫁娶.祭祀.安机械.入殓.破土.安葬.", "j": "动土.上梁.", "c": "生肖冲兔", "s": "煞東", "ch": "闭", "zc": "正冲正冲辛卯", "ts": "仓库门房内北" }, "d1107": { "y": "合帐.裁衣.嫁娶.安床.入殓.移柩.破土.造畜椆栖.", "j": "置产.造船.开光.掘井.作灶.", "c": "生肖冲龙", "s": "煞北", "ch": "闭", "zc": "正冲正冲壬辰", "ts": "房床栖房内南" }, "d1108": { "y": "解除.修饰垣墙.冠笄.出行.余事勿取.", "j": "开市.动土.破土.嫁娶.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "建", "zc": "正冲正冲癸巳", "ts": "占门床房内南" }, "d1109": { "y": "纳采.订盟.嫁娶.祭祀.祈福.求嗣.开光.出行.解除.进人口.开市.立券.挂匾.入宅.移徙.安门.栽种.动土.求医.治病.会亲友.起基.修造.造屋.安葬.", "j": "作灶.经络.安床.", "c": "生肖冲马", "s": "煞南", "ch": "除", "zc": "正冲正冲甲午", "ts": "占碓磨房内南" }, "d1110": { "y": "祭祀.塑绘.理发.会亲友.牧养.开池.造畜椆栖.畋猎.结网.", "j": "祈福.谢土.安葬.上梁.作灶.开市.嫁娶.出行.入宅.动土.", "c": "生肖冲羊", "s": "煞東", "ch": "满", "zc": "正冲正冲乙未", "ts": "厨灶厕房内南" }, "d1111": { "y": "出行.纳财.开市.交易.立券.动土.移徙.入宅.裁衣.会亲友.拆卸.进人口.安香.经络.出货财.修饰垣墙.平治道涂.", "j": "造庙.谢土.作灶.作梁.伐木.安葬.行丧.修坟.探病.", "c": "生肖冲猴", "s": "煞北", "ch": "平", "zc": "正冲正冲丙申", "ts": "仓库炉房内南" }, "d1112": { "y": "嫁娶.纳采.订盟.祭祀.斋醮.开光.安香.出火.出行.出火.拆卸.动土.祈福.进人口.纳财.交易.立券.移徙.安床.修造.安葬.除服.成服.", "j": "置产.掘井.词讼.栽种.", "c": "生肖冲鸡", "s": "煞西", "ch": "定", "zc": "正冲正冲丁酉", "ts": "房床门房内南" }, "d1113": { "y": "嫁娶.纳采.订盟.祭祀.开光.出行.解除.伐木.出火.入宅.移徙.拆卸.修造.栽种.安葬.入殓.", "j": "破土.动土.安门.作灶.开市.交易.", "c": "生肖冲狗", "s": "煞南", "ch": "执", "zc": "正冲正冲戊戌", "ts": "门鸡栖房内东" }, "d1114": { "y": "祭祀.解除.破屋.坏垣.求医.治病.余事勿取.", "j": "嫁娶.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "破", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d1115": { "y": "祭祀.扫舍.破土.安葬.除服.成服.启攒.移柩.入殓.立碑.余事勿取.", "j": "祭祀.嫁娶.入宅.修造.动土.", "c": "生肖冲鼠", "s": "煞北", "ch": "危", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d1116": { "y": "订盟.纳采.会亲友.祭祀.祈福.修造.动土.安机械.破土.安葬.", "j": "嫁娶.移徙.出火.开市.入宅.", "c": "生肖冲牛", "s": "煞西", "ch": "成", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d1117": { "y": "祭祀.沐浴.捕捉.畋猎.结网.扫舍.", "j": "嫁娶.纳采.订盟.安床.动土.破土.安葬.", "c": "生肖冲虎", "s": "煞南", "ch": "收", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" }, "d1118": { "y": "开市.纳财.出行.祭祀.祈福.求嗣.斋醮.问名.入学.起基.定磉.置产.开渠.掘井.拆卸.栽种.纳畜.牧养.动土.破土.启攒.", "j": "移徙.入宅.出火.入殓.安葬.", "c": "生肖冲兔", "s": "煞東", "ch": "开", "zc": "正冲正冲癸卯", "ts": "占大门外东北" }, "d1119": { "y": "祭祀.理发.置产.塞穴.除服.成服.移柩.入殓.破土.安葬.", "j": "嫁娶.入宅.安床.掘井.开光.", "c": "生肖冲龙", "s": "煞北", "ch": "闭", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d1120": { "y": "祭祀.沐浴.出行.余事勿取.", "j": "开市.动土.破土.行丧.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "建", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d1121": { "y": "嫁娶.造车器.出行.会亲友.移徙.入宅.修造.动土.雕刻.开光.安香.出火.理发.会亲友.造屋.合脊.起基.归岫.安门.拆卸.扫舍.栽种.造畜椆栖.", "j": "开市.纳采.造庙.安床.开渠.安葬.", "c": "生肖冲马", "s": "煞南", "ch": "除", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d1123": { "y": "纳采.移徙.纳财.开市.交易.立券.纳财.入宅.修造.动土.竖柱.起基.定磉.造庙.安香.出火.修饰垣墙.平治道涂.会亲友.出行.开池.作厕.", "j": "开仓.造屋.造桥.祭祀.", "c": "生肖冲猴", "s": "煞北", "ch": "平", "zc": "正冲正冲戊申", "ts": "占门炉外东北" }, "d1124": { "y": "订盟.纳采.纳财.开市.立券.祭祀.祈福.移徙.入宅.出行.造屋.起基.修造.动土.竖柱.上梁.安门.安香.出火.教牛马.会亲友.破土.", "j": "嫁娶.安葬.掘井.置产.造船.", "c": "生肖冲鸡", "s": "煞西", "ch": "定", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d1126": { "y": "破屋.坏垣.祭祀.余事勿取.", "j": "嫁娶.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "破", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d1128": { "y": "纳采.订盟.祭祀.祈福.求嗣.斋醮.开光.会亲友.解除.入学.纳财.交易.立券.经络.起基.动土.定磉.开池.栽种.纳畜.牧养.破土.入殓.立碑.安葬.", "j": "嫁娶.开市.入宅.出火.移徙.", "c": "生肖冲牛", "s": "煞西", "ch": "成", "zc": "正冲正冲癸丑", "ts": "占门厕外正东" }, "d1129": { "y": "捕捉.畋猎.会亲友.解除.入殓.除服.成服.移柩.余事勿取.", "j": "安床.安门.破土.修坟.安葬.", "c": "生肖冲虎", "s": "煞南", "ch": "收", "zc": "正冲正冲甲寅", "ts": "碓磨炉外东南" }, "d1130": { "y": "祭祀.祈福.求嗣.斋醮.沐浴.冠笄.出行.理发.拆卸.解除.起基.动土.定磉.安碓硙.开池.掘井.扫舍.除服.成服.移柩.启攒.立碑.谢土.", "j": "移徙.入宅.安门.作梁.安葬.", "c": "生肖冲兔", "s": "煞東", "ch": "开", "zc": "正冲正冲乙卯", "ts": "厨灶门外东南" }, "d1207": { "y": "纳采.订盟.祭祀.祈福.开光.安香.出火.出行.会亲友.安机械.修造.动土.竖柱.上梁.造屋.起基.定磉.安床.安门.拆卸.移徙.造桥.造船.安葬.破土.入殓.", "j": "开市.造庙.置产.掘井.", "c": "生肖冲狗", "s": "煞南", "ch": "定", "zc": "正冲正冲壬戌", "ts": "房床栖外正南" }, "d1217": { "y": "订盟.纳采.会亲友.安机械.开光.修造.动土.竖柱.上梁.造屋.起基.造桥.栽种.纳畜.造畜椆栖.移柩.入殓.启攒.修坟.立碑.安葬.", "j": "祈福.出火.嫁娶.入宅.开市.动土.破土.", "c": "生肖冲猴", "s": "煞北", "ch": "满", "zc": "正冲正冲壬申", "ts": "房床厕外正南" }, "d1221": { "y": "祭祀.沐浴.破屋.坏垣.余事勿取.", "j": "嫁娶.移徙.入宅.探病.出行.造屋.", "c": "生肖冲鼠", "s": "煞北", "ch": "破", "zc": "正冲正冲丙子", "ts": "仓库碓外西北" }, "d1220": { "y": "嫁娶.订盟.纳采.祭祀.祈福.求嗣.斋醮.安香.出火.修造.起基.造屋.合脊.安门.安碓硙.动土.上梁.移徙.入宅.", "j": "出行.掘井.破土.行丧.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "执", "zc": "正冲正冲乙亥", "ts": "厨灶床外正西" }, "d1230": { "y": "祭祀.入殓.移柩.余事勿取.", "j": "入宅.修造.动土.破土.安门.上梁.", "c": "生肖冲鸡", "s": "煞西", "ch": "平", "zc": "正冲正冲乙酉", "ts": "厨灶门外正北" }, "d1224": { "y": "祭祀.沐浴.作灶.纳财.捕捉.畋猎.安床.扫舍.", "j": "开市.斋醮.破土.安葬.", "c": "生肖冲兔", "s": "煞東", "ch": "收", "zc": "正冲正冲己卯", "ts": "占门炉外西北" }, "d1223": { "y": "纳采.订盟.移徙.入宅.出行.安机械.会亲友.祭祀.祈福.斋醮.开光.安香.出火.解除.求医.针灸.治病.造屋.起基.修造.安门.造船.纳畜.牧养.移柩.入殓.启攒.谢土.修坟.立碑.", "j": "嫁娶.动土.安床.造桥.掘井.", "c": "生肖冲虎", "s": "煞南", "ch": "成", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d1210": { "y": "安床.架马.祭祀.塑绘.开光.出行.理发.伐木.作梁.开柱眼.作厕.畋猎.破土.入殓.除服.成服.移柩.启攒.修坟.立碑.", "j": "作灶.安门.造桥.开市.安葬.", "c": "生肖冲牛", "s": "煞西", "ch": "危", "zc": "正冲正冲乙丑", "ts": "厨灶厕外西南" }, "d1222": { "y": "冠笄.纳财.掘井.开池.出火.安床.交易.立券.畋猎.结网.理发.放水.", "j": "安门.动土.破土.行丧.安葬.成服.", "c": "生肖冲牛", "s": "煞西", "ch": "危", "zc": "正冲正冲丁丑", "ts": "房床厕外西北" }, "d1228": { "y": "纳采.订盟.嫁娶.祭祀.祈福.安香.出火.出行.会亲友.经络.求医.治病.解除.拆卸.起基.修造.动土.定磉.扫舍.栽种.牧养.造畜椆栖.", "j": "斋醮.作梁.掘井.行丧.安葬.", "c": "生肖冲羊", "s": "煞東", "ch": "除", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d1201": { "y": "嫁娶.冠笄.安床.纳采.会亲友.塞穴.捕捉.置产.造畜椆栖.", "j": "开光.掘井.安葬.谢土.修坟.", "c": "生肖冲龙", "s": "煞北", "ch": "闭", "zc": "正冲正冲丙辰", "ts": "仓库栖外东南" }, "d1202": { "y": "祭祀.沐浴.余事勿取.", "j": "诸事不宜.", "c": "生肖冲蛇", "s": "煞西", "ch": "建", "zc": "正冲正冲丁巳", "ts": "占房床外东南" }, "d1203": { "y": "祭祀.会亲友.嫁娶.沐浴.修造.动土.祈福.开光.塑绘.出行.订盟.纳采.裁衣.入殓.除服.成服.移柩.启攒.赴任.竖柱.上梁.纳财.扫舍.栽种.纳畜.伐木.", "j": "入宅.作灶.安床.开仓.", "c": "生肖冲马", "s": "煞南", "ch": "除", "zc": "正冲正冲戊午", "ts": "占门碓外东南" }, "d1204": { "y": "理发.会亲友.补垣.塞穴.结网.", "j": "嫁娶.入宅.安门.移徙.", "c": "生肖冲羊", "s": "煞東", "ch": "满", "zc": "正冲正冲己未", "ts": "碓磨厕外东南" }, "d1205": { "y": "祭祀.祈福.订盟.纳采.裁衣.拆卸.修造.动土.起基.安床.移徙.入宅.安香.除服.成服.入殓.移柩.安葬.谢土.赴任.会亲友.进人口.出行.竖柱.上梁.经络.开市.交易.立券.纳财.开仓.", "j": "作灶.治病.伐木.作梁.", "c": "生肖冲猴", "s": "煞北", "ch": "平", "zc": "正冲正冲庚申", "ts": "厨灶炉外正南" }, "d1206": { "y": "祭祀.祈福.订盟.纳采.裁衣.拆卸.修造.动土.起基.安床.移徙.入宅.安香.入殓.移柩.安葬.谢土.赴任.进人口.会亲友.", "j": "作灶.治病.", "c": "生肖冲鸡", "s": "煞西", "ch": "定", "zc": "正冲正冲辛酉", "ts": "仓库门外正南" }, "d1208": { "y": "嫁娶.冠笄.祭祀.祈福.求嗣.斋醮.进人口.会亲友.伐木.作梁.开柱眼.安床.掘井.捕捉.畋猎.", "j": "开生坟.破土.行丧.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "执", "zc": "正冲正冲癸亥", "ts": "占门床外正南" }, "d1209": { "y": "破屋.坏垣.治病.余事勿取.", "j": "移徙.入宅.", "c": "生肖冲鼠", "s": "煞北", "ch": "破", "zc": "正冲正冲甲子", "ts": "占碓磨外正南" }, "d1211": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出行.解除.入宅.移徙.纳畜.入殓.破土.修坟.立碑.", "j": "伐木.作梁.动土.安床.破土.栽种.造桥.", "c": "生肖冲虎", "s": "煞南", "ch": "成", "zc": "正冲正冲丙寅", "ts": "仓库炉外西南" }, "d1212": { "y": "祭祀.沐浴.理发.纳财.进人口.栽种.扫舍.捕捉.畋猎.结网.", "j": "会亲友.安葬.入宅.移徙.安床.开市.行丧.出火.作灶.安门.", "c": "生肖冲兔", "s": "煞東", "ch": "收", "zc": "正冲正冲丁卯", "ts": "房床门外西南" }, "d1213": { "y": "纳采.订盟.祭祀.祈福.求嗣.塑绘.解除.拆卸.修造.动土.竖柱.上梁.安门.置产.开池.掘井.纳畜.安床.栽种.造畜椆栖.破土.移柩.立碑.", "j": "嫁娶.开市.出火.进人口.入殓.赴任.入宅.移徙.出行.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "开", "zc": "正冲正冲戊辰", "ts": "门鸡栖外西南" }, "d1214": { "y": "入宅.移徙.出行.进人口.修造.动土.起基.上梁.安门.造仓.补垣.塞穴.造畜椆栖.", "j": "嫁娶.开市.安床.栽种.安葬.祈福.开光.掘井.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "闭", "zc": "正冲正冲己巳", "ts": "碓磨床外西南" }, "d1215": { "y": "造畜椆栖.教牛马.", "j": "入宅.移徙.分居.作灶.出火.安香.动土.嫁娶.掘井.扫舍.造桥.", "c": "生肖冲马", "s": "煞南", "ch": "建", "zc": "正冲正冲庚午", "ts": "厨灶碓外西南" }, "d1216": { "y": "订盟.纳采.造车器.祭祀.祈福.出行.安香.修造.动土.上梁.开市.交易.立券.移徙.入宅.会亲友.安机械.栽种.纳畜.造屋.起基.安床.造畜椆栖.", "j": "破土.安葬.行丧.开生坟.", "c": "生肖冲羊", "s": "煞東", "ch": "除", "zc": "正冲正冲辛未", "ts": "仓库厕外西南" }, "d1218": { "y": "祭祀.平治道涂.修坟.除服.成服.余事勿取.", "j": "移徙.入宅.嫁娶.掘井.安葬.", "c": "生肖冲鸡", "s": "煞西", "ch": "平", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d1219": { "y": "嫁娶.冠笄.祭祀.祈福.求嗣.雕刻.开光.安香.出行.入学.修造.动土.竖柱.上梁.造屋.起基.安门.出火.移徙.入宅.掘井.造畜椆栖.安葬.破土.除服.成服.", "j": "开市.纳采.订盟.作灶.造庙.造船.经络.", "c": "生肖冲狗", "s": "煞南", "ch": "定", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d1225": { "y": "祈福.斋醮.纳采.订盟.解除.架马.开柱眼.修造.动土.起基.上梁.归岫.造屋.合脊.掘井.除服.成服.破土.栽种.", "j": "移徙.开市.入宅.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "开", "zc": "正冲正冲庚辰", "ts": "厨灶栖外西北" }, "d1226": { "y": "纳采.订盟.祭祀.沐浴.冠笄.合帐.裁衣.修造.动土.拆卸.移徙.入宅.安门.开仓.筑堤.作厕.栽种.纳畜.补垣.塞穴.", "j": "嫁娶.祈福.开光.掘井.安葬.行丧.", "c": "生肖冲蛇", "s": "煞西", "ch": "闭", "zc": "正冲正冲辛巳", "ts": "仓库床外西北" }, "d1229": { "y": "纳财.开市.交易.立券.会亲友.进人口.经络.祭祀.祈福.安香.出火.求医.治病.修造.动土.拆卸.扫舍.安床.栽种.牧养.开生坟.合寿木.入殓.安葬.启攒.", "j": "嫁娶.祈福.出火.移徙.入宅.", "c": "生肖冲猴", "s": "煞北", "ch": "满", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d1231": { "y": "塑绘.开光.订盟.纳采.裁衣.冠笄.拆卸.修造.安床.入宅.出火.安葬.谢土.赴任.", "j": "掘井.伐木.斋醮.作灶.", "c": "生肖冲狗", "s": "煞南", "ch": "定", "zc": "正冲正冲丙戌", "ts": "仓库栖外正北" } } ukui-panel-4.0.0.4/plugin-calendar/html/hlnew/hl2032.json0000644000175000017500000011642314560306203021310 0ustar fengfeng{ "d0101": { "j": "诸事不宜", "y": "治病.破屋.坏垣.余事勿取" }, "d0102": { "j": "造桥.安门.理髮.造庙.栽种", "y": "祭祀.祈福.求嗣.斋醮.开光" }, "d0103": { "j": "诸事不宜", "y": "解除.坏垣.余事勿取" }, "d0104": { "j": "伐木.纳畜.上樑.入宅.作灶", "y": "沐浴.理髮.扫舍" }, "d0105": { "j": "嫁娶.出行.赴任.盖屋.入殓", "y": "祭祀.开光.祈福.解除.作梁" }, "d0106": { "j": "造庙.嫁娶.出行.动土.安葬", "y": "订盟.纳采.会亲友.祭祀.斋醮" }, "d0107": { "j": "开光.嫁娶.开市.动土.破土", "y": "交易.立券.纳财.安床.裁衣" }, "d0108": { "j": "破土.动土.安葬", "y": "祭祀.解除.教牛马.会亲友.余事勿取" }, "d0109": { "j": "探病.祭祀.出行.上樑.盖屋", "y": "纳采.订盟.移徙.纳财.开市" }, "d0110": { "j": "入宅.开光.开市.动土", "y": "嫁娶.订盟.纳采.祭祀.祈福" }, "d0111": { "j": "移徙.入宅.造庙.作灶.治病", "y": "祭祀.冠笄.嫁娶.会亲友.进人口" }, "d0112": { "j": "嫁娶.安葬", "y": "祭祀.安碓.结网.余事勿取" }, "d0113": { "j": "盖屋.开市.动土.破土", "y": "嫁娶.祭祀.沐浴.裁衣.出行" }, "d0114": { "j": "嫁娶.开市.安葬", "y": "破屋.坏垣.余事勿取" }, "d0115": { "j": "祈福.嫁娶.造庙.安床.谢土", "y": "纳采.订盟.祭祀.求嗣.出火" }, "d0116": { "j": "开市.伐木.嫁娶.作梁", "y": "入殓.除服.成服.移柩.启钻" }, "d0117": { "j": "开市.安床", "y": "祭祀.作灶.入殓.除服.余事勿取" }, "d0118": { "j": "嫁娶.入殓.安葬.出行", "y": "塑绘.开光.沐浴.冠笄.会亲友" }, "d0119": { "j": "开仓.嫁娶.移徙.入宅", "y": "祭祀.沐浴.祈福.斋醮.订盟" }, "d0120": { "j": "诸事不宜", "y": "祭祀.解除.余事勿取" }, "d0121": { "j": "作灶.祭祀.上樑.出行", "y": "沐浴.解除.订盟.纳采.裁衣" }, "d0122": { "j": "", "y": "出行.嫁娶.订盟.纳采.入殓" }, "d0123": { "j": "嫁娶.移徙.入宅.开光", "y": "修饰垣墙.平治道涂.入殓.移柩.余事勿取" }, "d0124": { "j": "出行.治病.安葬.开市", "y": "会亲友.纳采.进人口.修造.动土" }, "d0125": { "j": "盖屋.开市.作灶.入宅", "y": "祭祀.会亲友.出行.订盟.纳采" }, "d0126": { "j": "诸事不宜", "y": "解除.破屋.坏垣.余事勿取" }, "d0127": { "j": "入宅.安床", "y": "塑绘.开光.出行.订盟.纳采" }, "d0128": { "j": "破土.伐木", "y": "入殓.除服.成服.移柩.启钻" }, "d0129": { "j": "开仓.盖屋.安葬.安床", "y": "祭祀.祈福.斋醮.塑绘.开光" }, "d0130": { "j": "栽种.嫁娶.入殓.安葬", "y": "祭祀.出行.沐浴.裁衣.祈福" }, "d0131": { "j": "作灶.掘井.嫁娶.入宅", "y": "祭祀.祈福.斋醮.沐浴.安床" }, "d0201": { "j": "余事勿取", "y": "解除.扫舍.祭祀.教牛马.余事勿取" }, "d0202": { "j": "嫁娶.祭祀.出行.置产", "y": "开市.交易.立券.挂匾.开光" }, "d0203": { "j": "修造.上樑.入宅.祈福.探病", "y": "开市.交易.立券.纳财.开池" }, "d0204": { "j": "开市.动土.安葬.破土", "y": "会亲友.求嗣.理髮.冠笄.结网" }, "d0205": { "j": "嫁娶.祈福.掘井.安葬", "y": "祭祀.平治道涂.余事勿取" }, "d0206": { "j": "置产.盖屋.合嵴.开光.探病", "y": "祈福.求嗣.斋醮.纳采.嫁娶" }, "d0207": { "j": "开光.开市.入宅.动土.盖屋", "y": "入学.习艺.出行.纳采.订盟" }, "d0208": { "j": "入宅.开市.安葬", "y": "祭祀.沐浴.求医.治病.扫舍" }, "d0209": { "j": "安床.栽种.治病.作灶", "y": "祭祀.冠笄.嫁娶.拆卸.修造" }, "d0210": { "j": "开市.伐木.作梁.作灶", "y": "安机械.移徙.入宅.出行.祭祀" }, "d0211": { "j": "伐木.作灶.安葬.取渔.入宅", "y": "塑绘.开光.祈福.求嗣.订盟" }, "d0212": { "j": "安葬.上樑.入宅.作灶", "y": "祭祀.沐浴.开光.塑绘.祈福" }, "d0213": { "j": "出行.嫁娶.入宅.动土", "y": "祭祀.祈福.求嗣.酬神.裁衣" }, "d0214": { "j": "祭祀.祈福.移徙.嫁娶.入宅", "y": "裁衣.合帐.入殓.除服.成服" }, "d0215": { "j": "掘井", "y": "祭祀.斋醮.裁衣.合帐.冠笄" }, "d0216": { "j": "斋醮.作灶.安床.安葬", "y": "安床.合帐.入宅.问名.纳采" }, "d0217": { "j": "祭祀.祈福.安葬.安门.余事勿取", "y": "作灶.平治道涂" }, "d0218": { "j": "盖屋.栽种.安葬.作灶", "y": "塑绘.开光.酬神.斋醮.订盟" }, "d0219": { "j": "栽种.动土.开市.作灶", "y": "祭祀.祈福.酬神.订盟.纳采" }, "d0220": { "j": "诸事不宜", "y": "求医.破屋" }, "d0221": { "j": "作灶.安床", "y": "祈福.求嗣.斋醮.塑绘.开光" }, "d0222": { "j": "嫁娶.上樑.入宅.作灶", "y": "取渔.入殓.除服.成服.移柩" }, "d0223": { "j": "安葬.作灶.伐木.作梁", "y": "祭祀.求嗣.沐浴.酬神.订盟" }, "d0224": { "j": "入殓.安葬.作灶.入宅", "y": "祭祀.沐浴.祈福.求嗣.斋醮" }, "d0225": { "j": "开光.掘井.针灸.出行.嫁娶", "y": "祭祀.祈福.求嗣.入殓.启钻" }, "d0226": { "j": "嫁娶.出行.动土.开渠.入宅", "y": "安床.解除.裁衣.竖柱.上樑" }, "d0227": { "j": "掘井.词讼", "y": "嫁娶.安床.开光.出行.祭祀" }, "d0228": { "j": "入宅.移徙.出火.分居.安香", "y": "嫁娶.开光.求嗣.会亲友.安床" }, "d0229": { "j": "栽种.出行.祈福.行丧.纳畜", "y": "作灶.解除.平治道涂" }, "d0301": { "j": "诸事不宜", "y": "解除.沐浴" }, "d0302": { "j": "开市.立券.理髮.作灶", "y": "嫁娶.祭祀.祈福.出行.解除" }, "d0303": { "j": "余事勿取", "y": "祭祀.解除.治病.破屋.坏垣" }, "d0304": { "j": "嫁娶.作灶.安床", "y": "祭祀.祈福.求嗣.开光.出火" }, "d0305": { "j": "塑绘.开光.造桥.除服.成服", "y": "嫁娶.冠笄.祭祀.出行.会亲友" }, "d0306": { "j": "祈福.嫁娶.安葬.破土", "y": "开光.求嗣.出行.纳采.冠笄" }, "d0307": { "j": "纳财.开市.安葬.破土", "y": "理髮.冠笄.嫁娶.进人口.栽种" }, "d0308": { "j": "纳采.动土.开市.交易.安门", "y": "开光.祈福.求嗣.出行.解除" }, "d0309": { "j": "祭祀.嫁娶.出行.上樑.掘井", "y": "裁衣.经络.伐木.开柱眼.拆卸" }, "d0310": { "j": "栽种.动土.安葬.掘井.修坟", "y": "祭祀.会亲友.立券.交易.裁衣" }, "d0311": { "j": "诸事不宜", "y": "扫舍.塞穴.余事勿取" }, "d0312": { "j": "作灶.出行.入宅.安葬", "y": "塑绘.开光.订盟.纳采.裁衣" }, "d0313": { "j": "动土.作灶.入宅.开光.安床", "y": "祭祀.嫁娶.纳婿.除服.成服" }, "d0314": { "j": "赴任", "y": "祈福.求嗣.开光.塑绘.斋醮" }, "d0315": { "j": "安床.嫁娶.作灶.入宅", "y": "祭祀.解除.入殓.除服.成服" }, "d0316": { "j": "诸事不宜", "y": "破屋.坏垣" }, "d0317": { "j": "作梁.造庙", "y": "祭祀.出行.订盟.纳采.裁衣" }, "d0318": { "j": "造庙.嫁娶.伐木.安葬", "y": "祭祀.开光.塑绘.订盟.纳采" }, "d0319": { "j": "嫁娶.入宅.移徙.作灶.安葬", "y": "祭祀.沐浴.捕捉.栽种" }, "d0320": { "j": "栽种.安葬", "y": "祭祀.开光.塑绘.酬神.斋醮" }, "d0321": { "j": "作灶.开光.嫁娶.开市.入宅", "y": "订盟.纳采.冠笄.拆卸.修造" }, "d0322": { "j": "作灶.掘井.动土.栽种", "y": "祈福.开光.塑绘.酬神.订盟" }, "d0323": { "j": "栽种.作灶.安葬.嫁娶", "y": "祭祀.扫舍.塞穴" }, "d0324": { "j": "出行.嫁娶.入宅.安葬", "y": "开光.塑绘.裁衣.冠笄.伐木" }, "d0325": { "j": "盖屋.作灶.治病.探病", "y": "冠笄.入殓.除服.成服.移柩" }, "d0326": { "j": "栽种.伐木", "y": "祭祀.嫁娶.祈福.纳采.裁衣" }, "d0327": { "j": "安床.开市.立券.作灶", "y": "祭祀.祈福.斋醮.订盟.纳采" }, "d0328": { "j": "诸事不宜", "y": "破屋.坏垣.求医.治病" }, "d0329": { "j": "开光.出货财", "y": "祭祀.动土.上樑.订盟.纳采" }, "d0330": { "j": "嫁娶.栽种.伐木.安葬", "y": "祭祀.开光.塑绘.纳采.裁衣" }, "d0331": { "j": "作灶.开市.安葬.作梁", "y": "裁衣.合帐.冠笄.嫁娶.纳婿" }, "d0401": { "j": "作灶.安葬.开市.盖屋", "y": "祭祀.订盟.纳采.修造.动土" }, "d0402": { "j": "祭祀.开光.嫁娶.入宅", "y": "订盟.纳采.裁衣.合帐.冠笄" }, "d0403": { "j": "掘井.动土.作灶.栽种", "y": "祭祀.出行.嫁娶.冠笄.安床" }, "d0404": { "j": "动土.破土.行丧.开光.作梁", "y": "祭祀.解除.教牛马.出行.余事勿取" }, "d0405": { "j": "开市.嫁娶.移徙.入宅.掘井", "y": "沐浴.斋醮.解除.求医.治病" }, "d0406": { "j": "祈福.开市.修造.动土.破土", "y": "求嗣.出行.解除.订盟.纳采" }, "d0407": { "j": "嫁娶.安葬.动土.安床.治病", "y": "祭祀" }, "d0408": { "j": "入宅.动土.开仓.出货财", "y": "造车器.祭祀.祈福.求嗣.斋醮" }, "d0409": { "j": "开市.动土.掘井.开池", "y": "祭祀.祈福.开光.求嗣.斋醮" }, "d0410": { "j": "移徙.开市.入宅.安葬", "y": "祈福.斋醮.纳采.订盟.解除" }, "d0411": { "j": "诸事不宜", "y": "诸事不宜" }, "d0412": { "j": "出火.入宅.安葬.伐木", "y": "祭祀.塑绘.开光.订盟.纳采" }, "d0413": { "j": "造庙.嫁娶.安床.余事勿取", "y": "祭祀.余事勿取" }, "d0414": { "j": "入殓.安葬.入宅.安床", "y": "订盟.纳采.嫁娶.进人口.会亲友" }, "d0415": { "j": "掘井.安门.嫁娶.纳采", "y": "祭祀.祈福.裁衣.合帐.安床" }, "d0416": { "j": "掘井.动土.破土.安葬.开光", "y": "祭祀.进人口.嫁娶.安床.解除" }, "d0417": { "j": "嫁娶.开市.安葬", "y": "纳采.开光.求医.治病.动土" }, "d0418": { "j": "嫁娶.动土.破土", "y": "祭祀.会亲友.开市.安床.启钻" }, "d0419": { "j": "嫁娶.安葬", "y": "祭祀.作灶.掘井.平治道涂" }, "d0420": { "j": "嫁娶.移徙.入宅", "y": "祭祀.斋醮.开市.动土.入殓" }, "d0421": { "j": "开市.动土.破土", "y": "嫁娶.纳采.祭祀.祈福.出行" }, "d0422": { "j": "诸事不宜", "y": "祭祀.求医.治病.解除.余事勿取" }, "d0423": { "j": "嫁娶.入宅.安葬", "y": "沐浴.结网.取渔" }, "d0424": { "j": "诸事不宜", "y": "" }, "d0425": { "j": "诸事不宜", "y": "解除.坏垣.余事勿取" }, "d0426": { "j": "祈福.入殓.祭祀.作灶.安葬", "y": "嫁娶.开光.出行.出火.拆卸" }, "d0427": { "j": "词讼.开光.开市", "y": "嫁娶.出行.合帐.冠笄.安床" }, "d0428": { "j": "诸事不宜", "y": "出行.修饰垣墙.造畜稠.教牛马.余事勿取" }, "d0429": { "j": "嫁娶.纳财.安葬.出行.开市", "y": "祭祀.祈福.开光.求嗣.解除" }, "d0430": { "j": "谢土.祈福.上樑.作灶.斋醮", "y": "纳采.嫁娶.开光.出行.理髮" }, "d0501": { "j": "诸事不宜", "y": "祭祀.平治道涂.解除.修饰垣墙.余事勿取" }, "d0502": { "j": "进人口.出行.嫁娶.置产.安床", "y": "祭祀.祈福.开光.解除.动土" }, "d0503": { "j": "动土.破土.纳财.掘井.挂匾", "y": "祭祀.祈福.求嗣.开光.解除" }, "d0504": { "j": "诸事不宜", "y": "祭祀.解除.破屋.坏垣.余事勿取" }, "d0505": { "j": "行丧.安葬", "y": "祭祀.沐浴.解除.破屋.坏垣" }, "d0506": { "j": "斋醮.开市.嫁娶.作灶", "y": "沐浴.扫舍.余事勿取" }, "d0507": { "j": "嫁娶.出火.移徙.入宅", "y": "开市.交易.立券.安机械.会亲友" }, "d0508": { "j": "开市.动土.祭祀.斋醮.安葬", "y": "栽种.捕捉.畋猎.余事勿取" }, "d0509": { "j": "开市.入宅.探病.出火.盖屋", "y": "嫁娶.祭祀.祈福.求嗣.斋醮" }, "d0510": { "j": "余事勿取", "y": "余事勿取" }, "d0511": { "j": "破土.安葬", "y": "塞穴.断蚁.结网.余事勿取" }, "d0512": { "j": "", "y": "开光.出行.纳采.嫁娶.伐木" }, "d0513": { "j": "诸事不宜", "y": "进人口.牧养.置产.塞穴.结网" }, "d0514": { "j": "会亲友.进人口.修造.动土.起基", "y": "开光.出行.嫁娶" }, "d0515": { "j": "安门", "y": "嫁娶.纳采.出行.祭祀.祈福" }, "d0516": { "j": "开市.开光", "y": "嫁娶.纳采.求医.治病.修造" }, "d0517": { "j": "诸事不宜", "y": "祭祀.破屋.坏垣.余事勿取" }, "d0518": { "j": "祈福.斋醮", "y": "嫁娶.纳采.祭祀.祈福.出行" }, "d0519": { "j": "嫁娶.安葬", "y": "纳采.祭祀.祈福.开市.求医" }, "d0520": { "j": "动土.破土.安葬", "y": "嫁娶.纳采.出行.移徙.入宅" }, "d0521": { "j": "嫁娶.安葬", "y": "订盟.纳采.祭祀.动土.破土" }, "d0522": { "j": "赴任.捕捉", "y": "嫁娶.裁衣.祭祀.出行.安床" }, "d0523": { "j": "诸事不宜", "y": "塞穴.结网.余事勿取" }, "d0524": { "j": "移徙.入宅", "y": "嫁娶.订盟.纳采.出行.祭祀" }, "d0525": { "j": "开市.安葬", "y": "订盟.纳采.会亲友.安床.作灶" }, "d0526": { "j": "诸事不宜", "y": "沐浴.平治道涂.扫舍.入殓.移柩" }, "d0527": { "j": "", "y": "嫁娶.祭祀.祈福.求嗣.开光" }, "d0528": { "j": "嫁娶.上樑.修造.拆卸.架马", "y": "祭祀.开光.出行.解除.塑绘" }, "d0529": { "j": "诸事不宜", "y": "祭祀.解除.破屋.坏垣.余事勿取" }, "d0530": { "j": "", "y": "嫁娶.祭祀.祈福.求嗣.开光" }, "d0531": { "j": "入宅.移徙.理髮.出火.嫁娶", "y": "开市.交易.立券.祭祀.祈福" }, "d0601": { "j": "诸事不宜", "y": "结网.解除.余事勿取" }, "d0602": { "j": "纳畜.入宅.移徙.安葬.探病", "y": "嫁娶.祭祀.祈福.求嗣.开光" }, "d0603": { "j": "开光.掘井.开仓", "y": "嫁娶.祭祀.祈福.求嗣.出行" }, "d0604": { "j": "诸事不宜", "y": "解除.扫舍.余事勿取" }, "d0605": { "j": "斋醮.开渠.上樑.动土.破土", "y": "祭祀.交易.纳财" }, "d0606": { "j": "行丧.伐木.作梁.作灶", "y": "嫁娶.订盟.纳采.冠笄.会亲友" }, "d0607": { "j": "安床.出货财.作灶.动土.破土", "y": "开光.求嗣.出行.冠笄.嫁娶" }, "d0608": { "j": "斋醮.出行.治病.合寿木", "y": "祭祀.沐浴.理髮.嫁娶.作灶" }, "d0609": { "j": "诸事不宜", "y": "祭祀.解除.余事勿取" }, "d0610": { "j": "开市.交易.嫁娶.安葬.行丧", "y": "祭祀.沐浴.捕捉.结网.畋猎" }, "d0611": { "j": "嫁娶.入宅", "y": "破屋.坏垣.求医.治病.畋猎" }, "d0612": { "j": "开市.安门.掘井.作灶", "y": "嫁娶.出行.安机械.祭祀.塑绘" }, "d0613": { "j": "", "y": "订盟.纳采.会亲友.进人口.彫刻" }, "d0614": { "j": "诸事不宜", "y": "祭祀.捕捉.取渔.修饰垣墙.余事勿取" }, "d0615": { "j": "开市.安门", "y": "嫁娶.纳采.祭祀.祈福.求医" }, "d0616": { "j": "嫁娶.安葬", "y": "裁衣.作灶.移徙.入宅.纳畜" }, "d0617": { "j": "上樑.动土.破土", "y": "祭祀.入殓.移柩.启钻.安葬" }, "d0618": { "j": "移徙.入宅.安葬", "y": "订盟.纳采.出行.祈福.斋醮" }, "d0619": { "j": "动土.破土", "y": "嫁娶.纳采.出行.求医.治病" }, "d0620": { "j": "行丧.安葬", "y": "嫁娶.祭祀.沐浴.扫舍.修饰垣墙" }, "d0621": { "j": "作灶", "y": "嫁娶.订盟.纳采.出行.开市" }, "d0622": { "j": "开市.安葬", "y": "订盟.纳采.出行.祭祀.祈福" }, "d0623": { "j": "诸事不宜", "y": "诸事不宜" }, "d0624": { "j": "开光.开市", "y": "嫁娶.订盟.纳采.祭祀.祈福" }, "d0625": { "j": "嫁娶.开光", "y": "开光.求医.治病.动土.上樑" }, "d0626": { "j": "诸事不宜", "y": "祭祀.栽种.余事勿取" }, "d0627": { "j": "安葬.开市.交易.立券", "y": "嫁娶.开光.祭祀.祈福.求嗣" }, "d0628": { "j": "安葬.出行.祈福.栽种", "y": "求嗣.嫁娶.纳采.合帐.裁衣" }, "d0629": { "j": "诸事不宜", "y": "祭祀.解除.余事勿取" }, "d0630": { "j": "安葬.行丧.伐木.作梁", "y": "嫁娶.祭祀.祈福.出火.开光" }, "d0701": { "j": "置产.安床", "y": "开光.求嗣.出行.解除.伐木" }, "d0702": { "j": "出行.安门.修造.嫁娶.上樑", "y": "祭祀.理髮.修饰垣墙.平治道涂.沐浴" }, "d0703": { "j": "", "y": "嫁娶.祭祀.开光.祈福.求嗣" }, "d0704": { "j": "嫁娶.开市.交易.行丧.安葬", "y": "祭祀.祈福.求嗣.开光.出行" }, "d0705": { "j": "诸事不宜", "y": "破屋.坏垣.余事勿取" }, "d0706": { "j": "嫁娶.出行", "y": "求医.治病.破屋.坏垣.余事勿取" }, "d0707": { "j": "祈福.上樑.开仓.掘井.牧养", "y": "纳采.订盟.嫁娶.移徙.入宅" }, "d0708": { "j": "嫁娶.开市.栽种.合寿木", "y": "祭祀.祈福.斋醮.出行.纳采" }, "d0709": { "j": "开市.入宅.安床.动土.安葬", "y": "祭祀.进人口.纳财.纳畜.牧养" }, "d0710": { "j": "盖屋.入宅.作灶.入学.安葬", "y": "祭祀.塑绘.开光.求医.治病" }, "d0711": { "j": "移徙.开市.入宅.嫁娶.开光", "y": "祭祀.塞穴.结网.畋猎.余事勿取" }, "d0712": { "j": "动土.破土.安葬.治病", "y": "开市.纳财.祭祀.塑绘.安机械" }, "d0713": { "j": "开市.斋醮.安床.出行.经络", "y": "移徙.入宅.治病.会亲友.祭祀" }, "d0714": { "j": "", "y": "塑绘.出行.冠笄.嫁娶.进人口" }, "d0715": { "j": "余事勿取", "y": "祭祀.冠笄.嫁娶.捕捉.结网" }, "d0716": { "j": "诸事不宜", "y": "沐浴.扫舍.余事勿取" }, "d0717": { "j": "嫁娶.移徙.入宅", "y": "纳采.祭祀.祈福.解除.动土" }, "d0718": { "j": "诸事不宜", "y": "祭祀.破屋.坏垣.余事勿取" }, "d0719": { "j": "祭祀.祈福", "y": "嫁娶.纳采.开市.出行.动土" }, "d0720": { "j": "赴任", "y": "嫁娶.纳采.开市.出行.动土" }, "d0721": { "j": "开市.破土", "y": "祭祀.作灶.纳财.捕捉" }, "d0722": { "j": "造庙.安葬", "y": "嫁娶.开市.立券.祭祀.祈福" }, "d0723": { "j": "诸事不宜", "y": "补垣.塞穴.结网.入殓.除服" }, "d0724": { "j": "动土.安葬", "y": "嫁娶.纳采.出行.祭祀.祈福" }, "d0725": { "j": "开市.入宅", "y": "嫁娶.祭祀.祈福.斋醮.治病" }, "d0726": { "j": "祈福.动土.破土", "y": "嫁娶.出行.开市.安床.入殓" }, "d0727": { "j": "开仓.出货财.置产.安葬.动土", "y": "嫁娶.祭祀.裁衣.结网.冠笄" }, "d0728": { "j": "嫁娶.破土.置产.栽种.安葬", "y": "入宅.移徙.安床.开光.祈福" }, "d0729": { "j": "嫁娶.入宅.移徙.作灶.开市", "y": "祭祀.解除.沐浴.整手足甲.入殓" }, "d0730": { "j": "诸事不宜", "y": "破屋.坏垣.余事勿取" }, "d0731": { "j": "伐木.祭祀.纳畜.祭祀", "y": "嫁娶.开光.出行.理髮.作梁" }, "d0801": { "j": "", "y": "嫁娶.开光.出行.祈福.求嗣" }, "d0802": { "j": "安葬.经络.修坟.破土.开市", "y": "祭祀.作灶.纳财.栽种.纳畜" }, "d0803": { "j": "嫁娶.出行.安葬.入殓.入宅", "y": "祭祀.祈福.求嗣.开光.开市" }, "d0804": { "j": "余事勿取", "y": "祭祀.入殓.破土.除服.成服" }, "d0805": { "j": "嫁娶.作灶.安葬.动土.词讼", "y": "祭祀.出行.交易.割蜜.造畜稠" }, "d0806": { "j": "", "y": "嫁娶.祭祀.祈福.求嗣.开光" }, "d0807": { "j": "嫁娶.出行.入宅.开市.安门", "y": "祭祀.沐浴.理髮.整手足甲.冠笄" }, "d0808": { "j": "诸事不宜", "y": "祭祀.解除.余事勿取" }, "d0809": { "j": "嫁娶.安门.动土.安葬", "y": "出行.沐浴.订盟.纳采.裁衣" }, "d0810": { "j": "开市.立券.纳财.作灶", "y": "纳采.订盟.嫁娶.祭祀.祈福" }, "d0811": { "j": "嫁娶.纳采.订盟.开市.入宅", "y": "祭祀.捕捉.畋猎.纳畜.牧养" }, "d0812": { "j": "行丧.安葬", "y": "破屋.坏垣.治病.余事勿取" }, "d0813": { "j": "动土.破土.订盟.安床.开池", "y": "祈福.斋醮.出行.冠笄.嫁娶" }, "d0814": { "j": "", "y": "祈福.求嗣.解除.订盟.纳采" }, "d0815": { "j": "", "y": "塑绘.开光.解除.订盟.纳采" }, "d0816": { "j": "", "y": "祈福.出行.订盟.纳采.嫁娶" }, "d0817": { "j": "动土.破土", "y": "嫁娶.祭祀.祈福.斋醮.作灶" }, "d0818": { "j": "作灶.动土.破土", "y": "嫁娶.出行.纳畜.祭祀.入殓" }, "d0819": { "j": "嫁娶.开市", "y": "订盟.纳采.祭祀.祈福.修造" }, "d0820": { "j": "开市.安葬", "y": "订盟.纳采.出行.会亲友.修造" }, "d0821": { "j": "嫁娶.祈福.余事勿取", "y": "沐浴" }, "d0822": { "j": "开市.安葬", "y": "嫁娶.祭祀.祈福.斋醮.动土" }, "d0823": { "j": "嫁娶.入宅", "y": "捕捉.结网.入殓.破土.安葬" }, "d0824": { "j": "诸事不宜", "y": "沐浴.治病.破屋.坏垣.余事勿取" }, "d0825": { "j": "动土.破土", "y": "嫁娶.订盟.纳采.出行.开市" }, "d0826": { "j": "开光.针灸", "y": "嫁娶.订盟.纳采.祭祀.祈福" }, "d0827": { "j": "动土.安葬", "y": "订盟.纳采.祭祀.祈福.安机械" }, "d0828": { "j": "入宅.作梁.安门.伐木.修造", "y": "嫁娶.祭祀.祈福.求嗣.出行" }, "d0829": { "j": "盖屋.开光.理髮.造船.掘井", "y": "嫁娶.祭祀.祈福.求嗣.出行" }, "d0830": { "j": "破土.置产.掘井.动土.安床", "y": "祭祀.祈福.求嗣.开光.出行" }, "d0831": { "j": "嫁娶.会亲友.进人口.出行.入宅", "y": "祭祀.解除.沐浴.理髮.整手足甲" }, "d0901": { "j": "嫁娶.纳财.祈福.安葬.修造", "y": "塑绘.开光.进人口.纳畜.补垣" }, "d0902": { "j": "诸事不宜", "y": "作灶.沐浴.修饰垣墙.平治道涂.余事勿取" }, "d0903": { "j": "嫁娶.移徙", "y": "祭祀.求嗣.开光.出行.伐木" }, "d0904": { "j": "诸事不宜", "y": "祭祀.塞穴.入殓.破土.安葬" }, "d0905": { "j": "诸事不宜", "y": "破屋.坏垣.余事勿取" }, "d0906": { "j": "诸事不宜", "y": "祭祀.入殓.移柩.结网.启钻" }, "d0907": { "j": "嫁娶.造庙.造桥.造船.作灶", "y": "订盟.纳采.祭祀.祈福.安香" }, "d0908": { "j": "行丧.安葬.合寿木", "y": "开光.求嗣.雕刻.嫁娶.订盟" }, "d0909": { "j": "开光.动土.破土.开市.修造", "y": "祭祀.嫁娶.捕捉" }, "d0910": { "j": "嫁娶.开市.动土.掘井.开池", "y": "祭祀.普渡.解除.会亲友.捕捉" }, "d0911": { "j": "祭祀.祈福.开光.开市.安床", "y": "出行.解除.冠笄.嫁娶.伐木" }, "d0912": { "j": "动土.作灶.行丧.安葬.修坟", "y": "祭祀.祈福.求嗣.出行.沐浴" }, "d0913": { "j": "造庙.安门.行丧.安葬", "y": "出行.解除.纳采.冠笄.雕刻" }, "d0914": { "j": "", "y": "开光.塑绘.出行.解除.冠笄" }, "d0915": { "j": "嫁娶.入宅.上樑.安门", "y": "祭祀.祈福.修饰垣墙.平治道涂.入殓" }, "d0916": { "j": "入宅.伐木", "y": "祭祀.会亲友.纳采.嫁娶.开光" }, "d0917": { "j": "作灶.祭祀.入宅.嫁娶", "y": "祭祀.冠笄.会亲友.拆卸.起基" }, "d0918": { "j": "移徙.入宅.出行.栽种", "y": "祭祀.沐浴.破屋.坏垣.余事勿取" }, "d0919": { "j": "造桥.冠笄.盖屋.掘井", "y": "祭祀.塑绘.开光.出行.解除" }, "d0920": { "j": "定磉.安葬", "y": "祭祀.会亲友.进人口.动土.上樑" }, "d0921": { "j": "移徙.入宅.作灶", "y": "祭祀.裁衣.冠笄.嫁娶.纳婿" }, "d0922": { "j": "入殓.安葬.开市.交易", "y": "诸事不宜" }, "d0923": { "j": "安床.开光.开市.交易", "y": "祭祀.裁衣.冠笄.嫁娶.安机械" }, "d0924": { "j": "动土.冠笄.移徙.入宅.开市", "y": "祭祀.出行.成服.除服.沐浴" }, "d0925": { "j": "诸事不宜", "y": "祭祀.沐浴.赴任.出行.余事勿取" }, "d0926": { "j": "诸事不宜", "y": "诸事不宜" }, "d0927": { "j": "嫁娶.移徙.入宅.开市", "y": "沐浴.入殓.移柩.除服.成服" }, "d0928": { "j": "", "y": "嫁娶.祭祀.祈福.求嗣.沐浴" }, "d0929": { "j": "嫁娶.出行.安床.作灶.祭祀", "y": "开光.解除.起基.动土.拆卸" }, "d0930": { "j": "诸事不宜", "y": "破屋.坏垣.余事勿取" }, "d1001": { "j": "", "y": "嫁娶.祈福.求嗣.出行.出火" }, "d1002": { "j": "嫁娶.立碑.出行.伐木.安葬", "y": "开市.交易.立券.挂匾.祭祀" }, "d1003": { "j": "探病.开渠.安葬.伐木.作灶", "y": "祭祀.理髮.会亲友.进人口.嫁娶" }, "d1004": { "j": "余事勿取", "y": "祭祀.立碑.修坟.启钻.除服" }, "d1005": { "j": "掘井.祈福.安床.开市.入宅", "y": "嫁娶.出行.伐木.拆卸.修造" }, "d1006": { "j": "诸事不宜", "y": "祭祀.出行.扫舍.余事勿取" }, "d1007": { "j": "开光.作灶.斋醮.安葬", "y": "嫁娶.祭祀.出行.冠笄.立券" }, "d1008": { "j": "嫁娶.动土.破土.修坟", "y": "出行.造车器.造畜稠.解除.冠笄" }, "d1009": { "j": "移徙.入宅.出行.祈福.嫁娶", "y": "沐浴.理髮.冠笄.安床.开市" }, "d1010": { "j": "嫁娶.开市.安床.掘井", "y": "祭祀.造畜稠.修饰垣墙.平治道涂.余事勿取" }, "d1011": { "j": "嫁娶.祭祀.入宅.盖屋.移徙", "y": "捕捉.结网.入殓.除服.成服" }, "d1012": { "j": "开光.嫁娶.掘井.伐木.作梁", "y": "祭祀.祈福.求嗣.斋醮.造庙" }, "d1013": { "j": "诸事不宜", "y": "破屋.坏垣.余事勿取" }, "d1014": { "j": "出行.祈福.安葬.作灶", "y": "会亲友.嫁娶.订盟.纳采.纳婿" }, "d1015": { "j": "开仓.冠笄.伐木.作梁", "y": "祭祀.塑绘.开光.祈福.斋醮" }, "d1016": { "j": "栽种.动土.安葬.开市", "y": "祭祀.作灶.入殓.除服.成服" }, "d1017": { "j": "作灶.入殓.安葬.安床", "y": "祭祀.祈福.斋醮.沐浴.竖柱" }, "d1018": { "j": "动土.上樑", "y": "嫁娶.祭祀.安机械.入殓.破土" }, "d1019": { "j": "行丧.安葬", "y": "作灶.造畜稠" }, "d1020": { "j": "嫁娶.入宅", "y": "沐浴.理髮.入学.习艺.进人口" }, "d1021": { "j": "开市.动土.破土", "y": "开光.针灸.会亲友.启钻.安葬" }, "d1022": { "j": "余事勿取", "y": "祭祀" }, "d1023": { "j": "移徙.入宅", "y": "入殓.除服.成服.移柩.破土" }, "d1024": { "j": "开市.赴任", "y": "嫁娶.订盟.纳采.出行.祭祀" }, "d1025": { "j": "余事勿取", "y": "祭祀.解除.破屋.坏垣.余事勿取" }, "d1026": { "j": "祈福.安葬", "y": "订盟.纳采.会亲友.安机械.纳财" }, "d1027": { "j": "斋醮.安门", "y": "嫁娶.订盟.纳采.出行.开市" }, "d1028": { "j": "诸事不宜", "y": "祭祀.塞穴.余事勿取" }, "d1029": { "j": "嫁娶.作灶.修坟.安门.入宅", "y": "祭祀.祈福.求嗣.开光.开市" }, "d1030": { "j": "嫁娶.开光.会亲友.掘井.安门", "y": "祭祀.解除.裁衣.理髮.安床" }, "d1031": { "j": "动土.伐木.作梁.行丧.安葬", "y": "祭祀.出行.裁衣.冠笄.会亲友" }, "d1101": { "j": "安葬.修坟.作灶.破土.造庙", "y": "祭祀.祈福.求嗣.开光.出行" }, "d1102": { "j": "嫁娶.作灶.出火.出行.入宅", "y": "开市.交易.立券.纳财.会亲友" }, "d1103": { "j": "诸事不宜", "y": "造畜稠.平治道涂.余事勿取" }, "d1104": { "j": "余事勿取", "y": "入殓.破土.安葬.启钻.除服" }, "d1105": { "j": "余事勿取", "y": "祭祀.入殓.移柩.开生坟.破土" }, "d1106": { "j": "诸事不宜", "y": "祭祀.解除.破屋.坏垣.余事勿取" }, "d1107": { "j": "嫁娶.安葬", "y": "破屋.坏垣.祭祀.余事勿取" }, "d1108": { "j": "盖屋.造船.动土.破土", "y": "嫁娶.纳采.订盟.祭祀.冠笄" }, "d1109": { "j": "嫁娶.开市.入宅.出火.移徙", "y": "纳采.订盟.祭祀.祈福.求嗣" }, "d1110": { "j": "安床.安门.破土.修坟.安葬", "y": "捕捉.畋猎.会亲友.解除.入殓" }, "d1111": { "j": "移徙.入宅.安门.作梁.安葬", "y": "祭祀.祈福.求嗣.斋醮.沐浴" }, "d1112": { "j": "开光.掘井.安葬.谢土.修坟", "y": "嫁娶.冠笄.安床.纳采.会亲友" }, "d1113": { "j": "诸事不宜", "y": "祭祀.沐浴.余事勿取" }, "d1114": { "j": "入宅.作灶.安床.开仓", "y": "祭祀.会亲友.嫁娶.沐浴.修造" }, "d1115": { "j": "嫁娶.入宅.安门.移徙", "y": "理髮.会亲友.补垣.塞穴.结网" }, "d1116": { "j": "作灶.治病.伐木.作梁", "y": "祭祀.祈福.订盟.纳采.裁衣" }, "d1117": { "j": "作灶.治病", "y": "祭祀.祈福.订盟.纳采.裁衣" }, "d1118": { "j": "开市.交易.破土.作灶", "y": "祭祀.塑绘.开光.订盟.纳采" }, "d1119": { "j": "诸事不宜", "y": "祭祀.解除.破屋.坏垣.余事勿取" }, "d1120": { "j": "盖屋.治病", "y": "祭祀.解除.祈福.开光.塑绘" }, "d1121": { "j": "嫁娶.入宅.治病.赴任", "y": "祭祀.祈福.订盟.纳采.裁衣" }, "d1122": { "j": "诸事不宜", "y": "沐浴.扫舍.余事勿取" }, "d1123": { "j": "诸事不宜", "y": "诸事不宜" }, "d1124": { "j": "入宅.作灶", "y": "祈福.斋醮.出行.订盟.纳采" }, "d1125": { "j": "嫁娶.动土.安葬.作灶", "y": "祭祀.沐浴.出行.冠笄.进人口" }, "d1126": { "j": "开市", "y": "祭祀.祈福.斋醮.塑绘.开光" }, "d1127": { "j": "诸事不宜", "y": "诸事不宜" }, "d1128": { "j": "栽种.破土.置产.祭祀.嫁娶", "y": "开市.交易.立券.挂匾.纳财" }, "d1129": { "j": "", "y": "嫁娶.祭祀.祈福.求嗣.开光" }, "d1130": { "j": "嫁娶.开市.出火.栽种.破土", "y": "开光.解除.拆卸.修造.动土" }, "d1201": { "j": "诸事不宜", "y": "破屋.坏垣.余事勿取" }, "d1202": { "j": "探病.安葬", "y": "嫁娶.祭祀.开光.出火.出行" }, "d1203": { "j": "入宅.作灶.词讼.移徙.出行", "y": "祭祀.祈福.求嗣.开光.解除" }, "d1204": { "j": "安床.开市.交易.出货财.安葬", "y": "祭祀.沐浴.结网.移柩.入殓" }, "d1205": { "j": "余事勿取", "y": "解除.余事勿取" }, "d1206": { "j": "余事勿取", "y": "祭祀.结网.入殓.除服.成服" }, "d1207": { "j": "嫁娶.祈福.开光.掘井.安葬", "y": "纳采.订盟.祭祀.沐浴.冠笄" }, "d1208": { "j": "入宅.动土.破土.嫁娶.作灶", "y": "合帐" }, "d1209": { "j": "斋醮.作梁.掘井.行丧.安葬", "y": "纳采.订盟.嫁娶.祭祀.祈福" }, "d1210": { "j": "嫁娶.祈福.出火.移徙.入宅", "y": "纳财.开市.交易.立券.会亲友" }, "d1211": { "j": "入宅.修造.动土.破土.安门", "y": "祭祀.入殓.移柩.余事勿取" }, "d1212": { "j": "掘井.伐木.斋醮.作灶", "y": "塑绘.开光.订盟.纳采.裁衣" }, "d1213": { "j": "出行.安葬.修坟.开市", "y": "祭祀.塑绘.开光.裁衣.冠笄" }, "d1214": { "j": "诸事不宜", "y": "祭祀.求医.破屋.坏垣.余事勿取" }, "d1215": { "j": "开光.栽种.治病.安门.作灶", "y": "祭祀.祈福.斋醮.出行.冠笄" }, "d1216": { "j": "", "y": "塑绘.斋醮.出行.拆卸.解除" }, "d1217": { "j": "开市.破土", "y": "祭祀.沐浴.安床.纳财.畋猎" }, "d1218": { "j": "嫁娶.作灶", "y": "订盟.纳采.祭祀.祈福.修造" }, "d1219": { "j": "入宅.安葬", "y": "出行.沐浴.理髮.补垣.塞穴" }, "d1220": { "j": "入宅.动土.破土.余事勿取", "y": "教牛马.余事勿取" }, "d1221": { "j": "开市.安葬", "y": "嫁娶.出行.求医.治病.祭祀" }, "d1222": { "j": "嫁娶.祈福", "y": "开市.立券.开光.解除.安机械" }, "d1223": { "j": "诸事不宜", "y": "平治道涂.余事勿取" }, "d1224": { "j": "开市.嫁娶", "y": "求嗣.斋醮.塑绘.订盟.纳采" }, "d1225": { "j": "开市.安葬", "y": "嫁娶.订盟.纳采.祭祀.祈福" }, "d1226": { "j": "诸事不宜", "y": "治病.破屋.坏垣.余事勿取" }, "d1227": { "j": "造桥.安门.理髮.造庙.栽种", "y": "祭祀.祈福.求嗣.斋醮.开光" }, "d1228": { "j": "诸事不宜", "y": "解除.坏垣.余事勿取" }, "d1229": { "j": "伐木.纳畜.上樑.入宅.作灶", "y": "沐浴.理髮.扫舍" }, "d1230": { "j": "嫁娶.出行.赴任.盖屋.入殓", "y": "祭祀.开光.祈福.解除.作梁" }, "d1231": { "j": "嫁娶.祈福.掘井.行丧.安葬", "y": "作梁.修造.动土.安门.作灶" } } ukui-panel-4.0.0.4/plugin-calendar/html/hlnew/hl2024.json0000644000175000017500000006542514560306221021316 0ustar fengfeng{ "d0101": { "y": "搬家.开业.入宅.开工.", "j": "结婚.领证.安葬.嫁娶." }, "d0102": { "y": "结婚.领证.安床.纳财.", "j": "开业.开工.安葬.开张." }, "d0103": { "y": "装修.入宅.动土.出行.", "j": "开业.开工.安葬." }, "d0104": { "y": "安床.订婚.安葬.交易.", "j": "结婚.入宅.领证.祭祀." }, "d0105": { "y": "结婚.领证.安床.出行.", "j": "动土.作灶.掘井." }, "d0106": { "y": ".", "j": "结婚.领证.安门.安葬." }, "d0107": { "y": "开业.开工.安门.安床.", "j": "结婚.领证.出行.安葬." }, "d0108": { "y": "结婚.领证.安葬.祭祀.", "j": "入宅.作灶.盖屋." }, "d0109": { "y": "搬家.入宅.安门.出行.", "j": "伐木." }, "d0110": { "y": "搬家.装修.结婚.", "j": "入宅." }, "d0111": { "y": "祭祀.破屋.坏垣.", "j": "." }, "d0112": { "y": "搬家.装修.开业.结婚.", "j": "安葬.作灶.开光." }, "d0113": { "y": "搬家.开业.入宅.开工.", "j": "结婚.领证.安葬.理发." }, "d0114": { "y": "结婚.领证.理发.嫁娶.", "j": "安葬.作灶.破土.纳畜." }, "d0115": { "y": "搬家.结婚.入宅.领证.", "j": "开业.开工.安葬.开张." }, "d0116": { "y": "开业.结婚.领证.开工.", "j": "入宅.安床.安葬." }, "d0117": { "y": "安床.安葬.破土.祈福.", "j": "结婚.领证.安门.订婚." }, "d0118": { "y": "结婚.领证.安床.出行.", "j": "动土.安葬.破土.开光." }, "d0119": { "y": "搬家.入宅.动土.订婚.", "j": "开业.结婚.领证.开工." }, "d0120": { "y": "开业.开工.安床.安葬.", "j": "结婚.领证.动土.破土." }, "d0121": { "y": "作灶.祭祀.掘井.", "j": "结婚.领证.安葬." }, "d0122": { "y": "开业.开工.动土.安葬.", "j": "搬家.结婚.入宅.领证." }, "d0123": { "y": "搬家.结婚.领证.出行.", "j": "开业.开工.动土.开张." }, "d0124": { "y": "祭祀.解除.求医.", "j": "." }, "d0125": { "y": "沐浴.结网.", "j": "结婚.入宅.领证.安葬." }, "d0126": { "y": ".", "j": "." }, "d0127": { "y": "解除.", "j": "." }, "d0128": { "y": "搬家.开业.结婚.入宅.", "j": "安葬.作灶.祈福.祭祀." }, "d0129": { "y": "结婚.领证.安床.出行.", "j": "." }, "d0130": { "y": "开业.开工.开张.开市.", "j": "出行.旅游.教牛马.造畜稠." }, "d0131": { "y": "搬家.装修.入宅.动土.", "j": "开业.结婚.领证." }, "d0201": { "y": "开业.结婚.领证.开工.", "j": "装修.入宅.安门.上梁." }, "d0202": { "y": "祭祀.解除.平治道涂.", "j": "." }, "d0203": { "y": "动土.交易.祈福.祭祀.", "j": "结婚.领证.安床.出行." }, "d0204": { "y": "装修.入宅.安门.安床.", "j": "开业.开工.动土.交易." }, "d0205": { "y": "祭祀.解除.破屋.", "j": "." }, "d0206": { "y": "塞穴.", "j": "." }, "d0207": { "y": "动土.安床.订婚.安葬.", "j": "." }, "d0208": { "y": "解除.", "j": "." }, "d0209": { "y": "搬家.开业.结婚.入宅.", "j": "安葬.祭祀.入殓." }, "d0210": { "y": "安床.安葬.交易.破土.", "j": "开业.结婚.领证.开工." }, "d0211": { "y": "出行.旅游.祭祀.扫舍.", "j": "安葬.破土.开光." }, "d0212": { "y": "订婚.求嗣.祈福.祭祀.", "j": "入宅.出行.安葬.作灶." }, "d0213": { "y": "开业.结婚.领证.开工.", "j": "装修.入宅.动土.安葬." }, "d0214": { "y": "作灶.祭祀.结网.畋猎.", "j": "结婚.领证.安床.嫁娶." }, "d0215": { "y": "安葬.破土.祭祀.解除.", "j": "结婚.入宅.领证.上梁." }, "d0216": { "y": "搬家.开业.结婚.", "j": "." }, "d0217": { "y": "搬家.装修.结婚.入宅.", "j": "开业.开工.开张.开市." }, "d0218": { "y": "祭祀.破屋.", "j": "." }, "d0219": { "y": "搬家.结婚.入宅.领证.", "j": "祈福." }, "d0220": { "y": "开业.开工.动土.订婚.", "j": "结婚.领证.安葬." }, "d0221": { "y": "搬家.结婚.入宅.领证.", "j": "动土.安葬." }, "d0222": { "y": "动土.订婚.交易.破土.", "j": "结婚.领证.安葬." }, "d0223": { "y": "搬家.结婚.入宅.领证.", "j": "赴任." }, "d0224": { "y": "结网.", "j": "." }, "d0225": { "y": "结婚.领证.动土.出行.", "j": "搬家.入宅." }, "d0226": { "y": "安床.订婚.作灶.订盟.", "j": "开业.开工.安葬.开张." }, "d0227": { "y": "安葬.破土.沐浴.启钻.", "j": "." }, "d0228": { "y": "搬家.开业.结婚.入宅.", "j": "." }, "d0229": { "y": "出行.安葬.旅游.破土.", "j": "装修.结婚.入宅.领证." }, "d0301": { "y": "祭祀.解除.破屋.", "j": "." }, "d0302": { "y": "搬家.装修.结婚.入宅.", "j": "." }, "d0303": { "y": "装修.开业.开工.动土.", "j": "搬家.结婚.入宅.领证." }, "d0304": { "y": "解除.", "j": "." }, "d0305": { "y": "开业.结婚.领证.开工.", "j": "搬家.入宅.动土.安门." }, "d0306": { "y": "搬家.装修.结婚.入宅.", "j": "开光.掘井." }, "d0307": { "y": "解除.", "j": "." }, "d0308": { "y": "开业.入宅.开工.动土.", "j": "结婚.领证.安床.作灶." }, "d0309": { "y": "认养.会亲友.", "j": "动土.安葬.上梁.伐木." }, "d0310": { "y": "安葬.破土.沐浴.成服.", "j": "搬家.结婚.领证.安床." }, "d0311": { "y": "搬家.开业.结婚.入宅.", "j": "." }, "d0312": { "y": "装修.结婚.领证.动土.", "j": "." }, "d0313": { "y": "解除.沐浴.破屋.", "j": "." }, "d0314": { "y": "搬家.装修.结婚.入宅.", "j": "开业.开工.开张.开市." }, "d0315": { "y": "开业.开工.动土.安床.", "j": "搬家.结婚.入宅.领证." }, "d0316": { "y": "搬家.入宅.出行.订婚.", "j": "装修.动土.安床.安葬." }, "d0317": { "y": "搬家.开业.开工.动土.", "j": "装修.入宅.安门." }, "d0318": { "y": "搬家.结婚.入宅.领证.", "j": "开业.开工.安门.开张." }, "d0319": { "y": "搬家.入宅.作灶.纳畜.", "j": "结婚.领证.安葬." }, "d0320": { "y": "安葬.祭祀.启钻.入殓.", "j": "动土.上梁." }, "d0321": { "y": "安床.出行.订婚.旅游.", "j": "搬家.入宅.安葬." }, "d0322": { "y": "搬家.开业.结婚.入宅.", "j": "动土." }, "d0323": { "y": "结婚.领证.祭祀.沐浴.", "j": "安葬." }, "d0324": { "y": "搬家.开业.结婚.入宅.", "j": "." }, "d0325": { "y": "搬家.装修.入宅.动土.", "j": "开业.开工.安葬.开张." }, "d0326": { "y": ".", "j": "." }, "d0327": { "y": "结婚.领证.订婚.安葬.", "j": "开业.开工.开张.开市." }, "d0328": { "y": "动土.安葬.上梁.破土.", "j": "结婚.领证.开光." }, "d0329": { "y": "祭祀.", "j": "." }, "d0330": { "y": "搬家.装修.结婚.入宅.", "j": "开业.开工.安葬.交易." }, "d0331": { "y": "装修.结婚.领证.动土.", "j": "出行.安葬.旅游.祈福." }, "d0401": { "y": "祭祀.", "j": "." }, "d0402": { "y": "搬家.开业.结婚.入宅.", "j": "安葬.伐木.作梁." }, "d0403": { "y": "搬家.装修.开业.入宅.", "j": "安床." }, "d0404": { "y": "理发.祭祀.沐浴.扫舍.", "j": "装修.结婚.入宅.领证." }, "d0405": { "y": "搬家.装修.结婚.入宅.", "j": "." }, "d0406": { "y": "搬家.装修.入宅.动土.", "j": "开业.结婚.领证.开工." }, "d0407": { "y": "破屋.", "j": "." }, "d0408": { "y": "装修.开业.开工.动土.", "j": "搬家.结婚.领证.安门." }, "d0409": { "y": "装修.开业.开工.动土.", "j": "搬家.结婚.入宅.领证." }, "d0410": { "y": "作灶.", "j": "." }, "d0411": { "y": "解除.", "j": "." }, "d0412": { "y": "装修.动土.安门.安床.", "j": "搬家.结婚.入宅.领证." }, "d0413": { "y": "祭祀.断蚁.", "j": "搬家.入宅.动土.移徙." }, "d0414": { "y": "搬家.装修.开业.结婚.", "j": "安葬.作灶.破土.伐木." }, "d0415": { "y": "搬家.装修.开业.结婚.", "j": "动土.安床.订婚.破土." }, "d0416": { "y": "结婚.领证.作灶.理发.", "j": "出行.旅游.破土." }, "d0417": { "y": "搬家.装修.结婚.入宅.", "j": "动土.破土." }, "d0418": { "y": "沐浴.", "j": "." }, "d0419": { "y": "动土.订婚.安葬.破土.", "j": "搬家.结婚.入宅.领证." }, "d0420": { "y": "祭祀.破屋.", "j": "." }, "d0421": { "y": "搬家.开业.结婚.入宅.", "j": "祈福." }, "d0422": { "y": "搬家.开业.结婚.入宅.", "j": "." }, "d0423": { "y": "作灶.祭祀.纳财.", "j": "开业.开工.开张.破土." }, "d0424": { "y": "搬家.开业.结婚.入宅.", "j": "安葬." }, "d0425": { "y": "安葬.启钻.成服.除服.", "j": "." }, "d0426": { "y": "搬家.结婚.入宅.领证.", "j": "动土." }, "d0427": { "y": "结婚.领证.安葬.破土.", "j": "开业.入宅.开工.开张." }, "d0428": { "y": "开业.结婚.领证.开工.", "j": "动土.破土." }, "d0429": { "y": "结婚.领证.祭祀.沐浴.", "j": "动土.安葬.破土.掘井." }, "d0430": { "y": "搬家.装修.开业.入宅.", "j": "结婚.领证.安葬.修坟." }, "d0501": { "y": "安葬.破土.祭祀.解除.", "j": "搬家.开业.结婚.入宅." }, "d0502": { "y": "破屋.", "j": "." }, "d0503": { "y": "搬家.装修.开业.结婚.", "j": "祭祀.纳畜." }, "d0504": { "y": "搬家.装修.开业.结婚.", "j": "." }, "d0505": { "y": "作灶.祭祀.纳财.纳畜.", "j": "开业.开工.安床.安葬." }, "d0506": { "y": "开业.开工.开张.理发.", "j": "结婚.入宅.领证.出行." }, "d0507": { "y": "安葬.破土.祭祀.启钻.", "j": "." }, "d0508": { "y": "出行.交易.旅游.祭祀.", "j": "搬家.结婚.领证.动土." }, "d0509": { "y": "搬家.装修.开业.结婚.", "j": "." }, "d0510": { "y": "开业.结婚.领证.开工.", "j": "搬家.装修.入宅.动土." }, "d0511": { "y": "祭祀.", "j": "." }, "d0512": { "y": "装修.入宅.动土.安床.", "j": "结婚.领证.作灶.理发." }, "d0513": { "y": "安葬.理发.破土.祭祀.", "j": "搬家.开业.结婚.入宅." }, "d0514": { "y": "破屋.", "j": "." }, "d0515": { "y": "开业.结婚.领证.开工.", "j": "搬家.入宅.作灶.祭祀." }, "d0516": { "y": "搬家.装修.开业.结婚.", "j": "纳畜.伐木.掘井." }, "d0517": { "y": "交易.作灶.祭祀.牧养.", "j": "开业.开工.安床.出行." }, "d0518": { "y": "装修.结婚.领证.动土.", "j": "搬家.出行.安葬.旅游." }, "d0519": { "y": "祭祀.立碑.沐浴.启钻.", "j": "结婚.领证.安葬.破土." }, "d0520": { "y": "搬家.结婚.入宅.领证.", "j": "动土." }, "d0521": { "y": "结婚.领证.出行.安葬.", "j": "动土.作灶." }, "d0522": { "y": "装修.动土.订婚.安葬.", "j": "开业.结婚.领证.开工." }, "d0523": { "y": "搬家.装修.入宅.出行.", "j": "开业.开工.安葬.开张." }, "d0524": { "y": "沐浴.平治道涂.", "j": "结婚.领证.祈福." }, "d0525": { "y": "搬家.结婚.入宅.领证.", "j": "开业.开工.安葬.开张." }, "d0526": { "y": "安葬.破土.捕捉.结网.", "j": "结婚.入宅.领证." }, "d0527": { "y": "沐浴.破屋.坏垣.", "j": "." }, "d0528": { "y": "搬家.开业.结婚.入宅.", "j": "动土." }, "d0529": { "y": "搬家.结婚.入宅.领证.", "j": "开光." }, "d0530": { "y": "订婚.作灶.祈福.祭祀.", "j": "动土." }, "d0531": { "y": "结婚.领证.动土.安床.", "j": "装修.入宅.安门.上梁." }, "d0601": { "y": "搬家.装修.结婚.领证.", "j": "作灶.理发.开光.盖屋." }, "d0602": { "y": "搬家.安门.出行.安葬.", "j": "动土.安床.破土.掘井." }, "d0603": { "y": "安葬.理发.破土.祭祀.", "j": "搬家.结婚.入宅.领证." }, "d0604": { "y": "牧养.纳畜.开光.塞穴.", "j": "装修.开业.结婚.领证." }, "d0605": { "y": "作灶.沐浴.平治道涂.", "j": "." }, "d0606": { "y": "装修.动土.安床.出行.", "j": "搬家.结婚.领证.嫁娶." }, "d0607": { "y": "安葬.破土.祭祀.塞穴.", "j": "." }, "d0608": { "y": "破屋.", "j": "." }, "d0609": { "y": "安葬.祭祀.启钻.成服.", "j": "." }, "d0610": { "y": "搬家.开业.结婚.入宅.", "j": "出行.作灶.旅游.栽种." }, "d0611": { "y": "交易.祭祀.解除.纳财.", "j": "搬家.结婚.入宅.领证." }, "d0612": { "y": "结婚.领证.安床.出行.", "j": "搬家.入宅.安葬.纳畜." }, "d0613": { "y": "动土.安葬.破土.祭祀.", "j": "装修.入宅.安门.出行." }, "d0614": { "y": "安门.出行.作灶.旅游.", "j": "动土.安床.安葬.开生坟." }, "d0615": { "y": "装修.动土.安门.安床.", "j": "搬家.结婚.入宅.领证." }, "d0616": { "y": "搬家.装修.入宅.安床.", "j": "动土.安葬.作灶.破土." }, "d0617": { "y": "作灶.祭祀.沐浴.平治道涂.", "j": "结婚.领证.安门.安葬." }, "d0618": { "y": "搬家.装修.结婚.入宅.", "j": "开业.开工.开张.作灶." }, "d0619": { "y": "安葬.破土.祭祀.捕捉.", "j": "开业.结婚.入宅.领证." }, "d0620": { "y": "安葬.祭祀.拆卸.沐浴.", "j": "结婚.入宅.领证.作灶." }, "d0621": { "y": "祭祀.沐浴.破屋.", "j": "搬家.入宅.出行.旅游." }, "d0622": { "y": "开业.结婚.入宅.领证.", "j": "盖屋.冠笄.掘井." }, "d0623": { "y": "开业.开工.动土.安床.", "j": "安葬." }, "d0624": { "y": "结婚.领证.祭祀.捕捉.", "j": "搬家.入宅.作灶." }, "d0625": { "y": ".", "j": "开业.开工.安葬.交易." }, "d0626": { "y": "搬家.结婚.入宅.领证.", "j": "开业.开工.安床.交易." }, "d0627": { "y": "出行.旅游.祭祀.沐浴.", "j": "搬家.开业.入宅.开工." }, "d0628": { "y": "出行.旅游.赴任.祭祀.", "j": "." }, "d0629": { "y": ".", "j": "." }, "d0630": { "y": "破土.沐浴.成服.除服.", "j": "搬家.开业.结婚.入宅." }, "d0701": { "y": "搬家.装修.开业.结婚.", "j": "." }, "d0702": { "y": "动土.安葬.上梁.修坟.", "j": "搬家.结婚.入宅.领证." }, "d0703": { "y": "破屋.", "j": "." }, "d0704": { "y": "搬家.装修.开业.结婚.", "j": "." }, "d0705": { "y": "装修.开业.入宅.开工.", "j": "搬家.结婚.领证.出行." }, "d0706": { "y": "结婚.领证.理发.祭祀.", "j": "入宅.安葬.作灶.伐木." }, "d0707": { "y": "修坟.祭祀.立碑.启钻.", "j": "." }, "d0708": { "y": "搬家.装修.结婚.领证.", "j": "开业.入宅.开工.安床." }, "d0709": { "y": "出行.旅游.祭祀.", "j": "." }, "d0710": { "y": "结婚.领证.动土.安床.", "j": "安葬.作灶.伐木.作梁." }, "d0711": { "y": "搬家.开业.入宅.开工.", "j": "结婚.领证.安葬.作灶." }, "d0712": { "y": "祭祀.沐浴.平治道涂.", "j": "." }, "d0713": { "y": "搬家.装修.开业.结婚.", "j": "." }, "d0714": { "y": "解除.", "j": "." }, "d0715": { "y": "祭祀.破屋.坏垣.", "j": "." }, "d0716": { "y": "搬家.装修.结婚.", "j": "开业.开工.开张.开市." }, "d0717": { "y": "开业.开工.动土.安床.", "j": "搬家.结婚.入宅.领证." }, "d0718": { "y": "结婚.领证.作灶.理发.", "j": "开业.开工.上梁.开张." }, "d0719": { "y": "修坟.祭祀.启钻.成服.", "j": "开业.结婚.入宅.领证." }, "d0720": { "y": "结婚.入宅.领证.订婚.", "j": "安床.安葬.作灶." }, "d0721": { "y": "结婚.领证.安葬.破土.", "j": "动土." }, "d0722": { "y": "作灶.", "j": "安葬." }, "d0723": { "y": "入学.理发.沐浴.认养.", "j": "结婚.入宅.领证." }, "d0724": { "y": "安葬.启钻.开光.针灸.", "j": "开业.开工.动土.开张." }, "d0725": { "y": "祭祀.结网.", "j": "." }, "d0726": { "y": "安葬.破土.启钻.成服.", "j": "搬家.入宅." }, "d0727": { "y": "搬家.结婚.入宅.领证.", "j": "开业.开工.开张.赴任." }, "d0728": { "y": "祭祀.解除.破屋.", "j": "." }, "d0729": { "y": "订婚.订盟.牧养.纳财.", "j": "安葬." }, "d0730": { "y": "搬家.开业.结婚.入宅.", "j": "安门." }, "d0731": { "y": "祭祀.", "j": "." }, "d0801": { "y": "开业.开工.动土.出行.", "j": "结婚.入宅.领证.安门." }, "d0802": { "y": "安床.作灶.理发.祭祀.", "j": "结婚.领证.安门.开光." }, "d0803": { "y": "搬家.结婚.领证.出行.", "j": "动土.安葬.伐木.作梁." }, "d0804": { "y": "搬家.安床.出行.旅游.", "j": "结婚.领证.动土.订婚." }, "d0805": { "y": "开业.开工.安葬.交易.", "j": "搬家.结婚.入宅.领证." }, "d0806": { "y": "造畜稠.", "j": "." }, "d0807": { "y": "安葬.破土.启钻.成服.", "j": "." }, "d0808": { "y": "安葬.破土.祭祀.启钻.", "j": "." }, "d0809": { "y": "祭祀.解除.破屋.", "j": "." }, "d0810": { "y": "结婚.领证.订婚.求嗣.", "j": "安门.出行.安葬.上梁." }, "d0811": { "y": "搬家.装修.开业.结婚.", "j": "安葬.修坟.立碑.纳畜." }, "d0812": { "y": "结婚.领证.作灶.祭祀.", "j": "开业.开工.安葬.开张." }, "d0813": { "y": "搬家.开业.结婚.入宅.", "j": "安床." }, "d0814": { "y": "结婚.领证.动土.安床.", "j": "开光." }, "d0815": { "y": "搬家.入宅.安门.安床.", "j": "结婚.领证.安葬.破土." }, "d0816": { "y": "安床.出行.上梁.旅游.", "j": "结婚.领证.动土.安葬." }, "d0817": { "y": "安床.订婚.安葬.理发.", "j": "开业.结婚.入宅." }, "d0818": { "y": "祭祀.解除.造畜稠.平治道涂.", "j": "开业.结婚.入宅.领证." }, "d0819": { "y": "安葬.破土.启钻.成服.", "j": "开业.入宅.开工.开张." }, "d0820": { "y": "搬家.装修.入宅.动土.", "j": "作灶." }, "d0821": { "y": "结婚.领证.安床.订婚.", "j": "开业.开工.交易.开张." }, "d0822": { "y": "祭祀.解除.破屋.", "j": "." }, "d0823": { "y": "搬家.装修.动土.安床.", "j": "盖屋." }, "d0824": { "y": "开业.开工.安床.订婚.", "j": "结婚.入宅.领证.赴任." }, "d0825": { "y": "沐浴.", "j": "." }, "d0826": { "y": ".", "j": "." }, "d0827": { "y": "出行.订婚.安葬.旅游.", "j": "入宅." }, "d0828": { "y": "出行.旅游.祭祀.沐浴.", "j": "结婚.领证.动土.安葬." }, "d0829": { "y": "搬家.结婚.入宅.领证.", "j": "开业.开工.开张." }, "d0830": { "y": ".", "j": "." }, "d0831": { "y": "搬家.开业.入宅.开工.", "j": "结婚.领证.动土.作灶." }, "d0901": { "y": "搬家.装修.结婚.入宅.", "j": "." }, "d0902": { "y": "装修.动土.安床.安葬.", "j": "搬家.开业.结婚.入宅." }, "d0903": { "y": "破屋.", "j": "." }, "d0904": { "y": "搬家.装修.开业.结婚.", "j": "安葬." }, "d0905": { "y": "安葬.理发.求嗣.修坟.", "j": "搬家.入宅.出行.作灶." }, "d0906": { "y": "祭祀.沐浴.成服.除服.", "j": "开业.结婚.领证.开工." }, "d0907": { "y": ".", "j": "." }, "d0908": { "y": "安床.破土.祭祀.启钻.", "j": "搬家.开业.结婚.入宅." }, "d0909": { "y": "祭祀.", "j": "." }, "d0910": { "y": "搬家.装修.结婚.入宅.", "j": "安床." }, "d0911": { "y": "安门.安床.理发.裁衣.", "j": "搬家.结婚.入宅.领证." }, "d0912": { "y": "搬家.装修.开业.结婚.", "j": "作灶.祈福.祭祀.伐木." }, "d0913": { "y": "祭祀.入殓.", "j": "装修.入宅.动土.安门." }, "d0914": { "y": "装修.入宅.安床.订婚.", "j": "作灶.伐木.掘井." }, "d0915": { "y": "搬家.装修.结婚.入宅.", "j": "开业.开工.出行.安葬." }, "d0916": { "y": "祭祀.破屋.坏垣.", "j": "." }, "d0917": { "y": "搬家.入宅.安床.出行.", "j": "安门.作灶.开光.栽种." }, "d0918": { "y": "搬家.装修.出行.旅游.", "j": "." }, "d0919": { "y": "安床.祭祀.沐浴.纳财.", "j": "开业.开工.开张.破土." }, "d0920": { "y": "装修.动土.订婚.上梁.", "j": "结婚.领证.作灶." }, "d0921": { "y": "出行.旅游.理发.沐浴.", "j": "入宅." }, "d0922": { "y": ".", "j": "入宅.动土." }, "d0923": { "y": "结婚.领证.出行.上梁.", "j": "开业.开工.安葬." }, "d0924": { "y": "开业.开工.安葬.上梁.", "j": "结婚.领证.祈福." }, "d0925": { "y": ".", "j": "." }, "d0926": { "y": "装修.动土.订婚.安葬.", "j": "开业.结婚.领证.开工." }, "d0927": { "y": "搬家.装修.结婚.入宅.", "j": "开业.开工.安葬.开张." }, "d0928": { "y": "破屋.坏垣.", "j": "." }, "d0929": { "y": "装修.动土.交易.入学.", "j": "安门.作灶.理发.栽种." }, "d0930": { "y": "解除.", "j": "." }, "d1001": { "y": "理发.沐浴.", "j": "结婚.入宅.领证.安门." }, "d1002": { "y": "动土.安床.破土.祈福.", "j": "搬家.结婚.入宅.领证." }, "d1003": { "y": "装修.动土.安门.作灶.", "j": "结婚.领证.安床.安葬." }, "d1004": { "y": "安葬.启钻.成服.除服.", "j": "." }, "d1005": { "y": "搬家.开业.结婚.入宅.", "j": "安葬.作灶.伐木.塑绘." }, "d1006": { "y": "装修.开业.开工.安床.", "j": "搬家.结婚.入宅.领证." }, "d1007": { "y": "祭祀.", "j": "." }, "d1008": { "y": "入宅.动土.安床.安葬.", "j": "开业.结婚.领证.开工." }, "d1009": { "y": "祭祀.", "j": "." }, "d1010": { "y": "祭祀.沐浴.破屋.", "j": "." }, "d1011": { "y": "动土.安床.求嗣.祈福.", "j": "安门.作灶.栽种." }, "d1012": { "y": "解除.", "j": "." }, "d1013": { "y": "安葬.修坟.立碑.启钻.", "j": "开业.结婚.领证.开工." }, "d1014": { "y": "作灶.祭祀.除服.", "j": "开业.开工.安床.开张." }, "d1015": { "y": "作灶.沐浴.开光.冠笄.", "j": "结婚.领证.出行.安葬." }, "d1016": { "y": "安床.出行.订婚.上梁.", "j": "搬家.结婚.入宅.领证." }, "d1017": { "y": "祭祀.", "j": "." }, "d1018": { "y": "搬家.装修.入宅.动土.", "j": "出行.上梁.作灶.旅游." }, "d1019": { "y": "结婚.领证.安床.出行.", "j": "." }, "d1020": { "y": "入殓.移柩.平治道涂.", "j": "搬家.结婚.入宅.领证." }, "d1021": { "y": "搬家.装修.结婚.入宅.", "j": "开业.开工.出行.安葬." }, "d1022": { "y": "装修.结婚.领证.动土.", "j": "开业.入宅.开工.开张." }, "d1023": { "y": "解除.破屋.", "j": "." }, "d1024": { "y": "结婚.领证.出行.订婚.", "j": "入宅." }, "d1025": { "y": "安葬.立碑.启钻.成服.", "j": "破土." }, "d1026": { "y": "结婚.领证.作灶.祈福.", "j": "安床.安葬.盖屋." }, "d1027": { "y": "开业.结婚.领证.开工.", "j": "结婚.领证.安葬.嫁娶." }, "d1028": { "y": "安床.安葬.交易.祈福.", "j": "结婚.入宅.领证.作灶." }, "d1029": { "y": "祭祀.解除.扫舍.", "j": "." }, "d1030": { "y": "搬家.开业.入宅.开工.", "j": "结婚.领证.出行.旅游." }, "d1031": { "y": "开业.结婚.领证.开工.", "j": "装修.入宅.动土.安门." }, "d1101": { "y": "祭祀.解除.平治道涂.", "j": "." }, "d1102": { "y": "结婚.领证.动土.求嗣.", "j": "开业.入宅.开工.安门." }, "d1103": { "y": "搬家.装修.结婚.入宅.", "j": "开业.开工.安门." }, "d1104": { "y": "破屋.", "j": "." }, "d1105": { "y": "搬家.装修.开业.结婚.", "j": "安床.祈福.纳畜." }, "d1106": { "y": "安葬.修坟.破土.祭祀.", "j": "." }, "d1107": { "y": "祭祀.", "j": "." }, "d1108": { "y": "搬家.开业.入宅.开工.", "j": "结婚.领证.安葬.作灶." }, "d1109": { "y": "安床.安葬.交易.裁衣.", "j": "结婚.入宅.领证.动土." }, "d1110": { "y": "祭祀.解除.针灸.教牛马.", "j": "结婚.领证.动土.安葬." }, "d1111": { "y": "纳财.裁衣.成服.除服.", "j": "搬家.结婚.入宅.领证." }, "d1112": { "y": "结婚.入宅.领证.出行.", "j": "." }, "d1113": { "y": "入宅.安床.订婚.求嗣.", "j": "安葬.作灶." }, "d1114": { "y": "作灶.", "j": "安门.安葬.祈福." }, "d1115": { "y": "装修.动土.安门.安床.", "j": "安葬.作灶.盖屋." }, "d1116": { "y": "搬家.结婚.入宅.领证.", "j": "开业.开工.动土.开张." }, "d1117": { "y": "破屋.", "j": "." }, "d1118": { "y": "装修.结婚.入宅.领证.", "j": "安床." }, "d1119": { "y": "安葬.破土.立碑.成服.", "j": "结婚.入宅.领证.上梁." }, "d1120": { "y": "开业.开工.安床.订婚.", "j": "安葬.作灶.伐木." }, "d1121": { "y": "开业.开工.出行.订婚.", "j": "入宅.安葬.作灶." }, "d1122": { "y": "安葬.求嗣.祈福.祭祀.", "j": "搬家.结婚.入宅.领证." }, "d1123": { "y": "安床.安葬.上梁.交易.", "j": "结婚.入宅.领证.动土." }, "d1124": { "y": "搬家.开业.结婚.入宅.", "j": "掘井.词讼." }, "d1125": { "y": "结婚.领证.安床.求嗣.", "j": "搬家.开业.入宅.开工." }, "d1126": { "y": "作灶.解除.", "j": "安门.出行.安葬.旅游." }, "d1127": { "y": "解除.", "j": "." }, "d1128": { "y": "搬家.结婚.入宅.领证.", "j": "开业.开工.开张.作灶." }, "d1129": { "y": "祭祀.解除.破屋.坏垣.", "j": "." }, "d1130": { "y": "搬家.装修.入宅.动土.", "j": "结婚.领证.安床.作灶." }, "d1201": { "y": "安葬.破土.成服.除服.", "j": "." }, "d1202": { "y": "结婚.领证.动土.求嗣.", "j": "开业.入宅.开工.安门." }, "d1203": { "y": "搬家.装修.结婚.入宅.", "j": "开业.入宅.开工.安门." }, "d1204": { "y": "破屋.", "j": "." }, "d1205": { "y": "搬家.装修.开业.结婚.", "j": "安床.祈福.纳畜." }, "d1206": { "y": "安葬.修坟.破土.祭祀.", "j": "." }, "d1207": { "y": "祭祀.", "j": "." }, "d1208": { "y": "搬家.开业.入宅.开工.", "j": "结婚.领证.安葬.作灶." }, "d1209": { "y": "安床.安葬.交易.裁衣.", "j": "结婚.入宅.领证.动土." }, "d1210": { "y": "祭祀.解除.针灸.教牛马.", "j": "结婚.领证.动土.安葬." }, "d1211": { "y": "纳财.裁衣.成服.除服.", "j": "搬家.结婚.入宅.领证." }, "d1212": { "y": "结婚.入宅.领证.出行.", "j": "." }, "d1213": { "y": "入宅.安床.订婚.求嗣.", "j": "安葬.作灶." }, "d1214": { "y": "作灶.", "j": "安门.安葬.祈福." }, "d1215": { "y": "装修.动土.安门.安床.", "j": "安葬.作灶.盖屋." }, "d1216": { "y": "搬家.结婚.入宅.领证.", "j": "开业.开工.动土.开张." }, "d1217": { "y": "破屋.", "j": "." }, "d1218": { "y": "装修.结婚.入宅.领证.", "j": "安床." }, "d1219": { "y": "安葬.破土.立碑.成服.", "j": "结婚.入宅.领证.上梁." }, "d1220": { "y": "开业.开工.安床.订婚.", "j": "安葬.作灶.伐木." }, "d1221": { "y": "开业.开工.出行.订婚.", "j": "入宅.安葬.作灶." }, "d1222": { "y": "安葬.求嗣.祈福.祭祀.", "j": "搬家.结婚.入宅.领证." }, "d1223": { "y": "安床.安葬.上梁.交易.", "j": "结婚.入宅.领证.动土." }, "d1224": { "y": "搬家.开业.结婚.入宅.", "j": "掘井.词讼." }, "d1225": { "y": "结婚.领证.安床.求嗣.", "j": "搬家.开业.入宅.开工." }, "d1226": { "y": "作灶.解除.", "j": "安门.出行.安葬.旅游." }, "d1227": { "y": "解除.", "j": "." }, "d1228": { "y": "搬家.结婚.入宅.领证.", "j": "开业.开工.开张.作灶." }, "d1229": { "y": "祭祀.解除.破屋.坏垣.", "j": "." }, "d1230": { "y": "结婚.领证.安床.出行.", "j": "动土.作灶.掘井." }, "d1231": { "y": ".", "j": "结婚.领证.安门.安葬." } } ukui-panel-4.0.0.4/plugin-calendar/html/hlnew/hl2034.json0000644000175000017500000011651014560306203021307 0ustar fengfeng{ "d0101": { "j": "诸事不宜", "y": "祭祀.解除.余事勿取" }, "d0102": { "j": "诸事不宜", "y": "破屋.坏垣.祭祀.沐浴.余事勿取" }, "d0103": { "j": "安门.栽种.作灶.治病", "y": "安床.祭祀.祈福.求嗣.冠笄" }, "d0104": { "j": "诸事不宜", "y": "解除.扫舍.余事勿取" }, "d0105": { "j": "开市.伐木.嫁娶.作梁", "y": "入殓.除服.成服.移柩.启钻" }, "d0106": { "j": "开市.安床", "y": "祭祀.作灶.入殓.除服.余事勿取" }, "d0107": { "j": "嫁娶.入殓.安葬.出行", "y": "塑绘.开光.沐浴.冠笄.会亲友" }, "d0108": { "j": "开仓.嫁娶.移徙.入宅", "y": "祭祀.沐浴.祈福.斋醮.订盟" }, "d0109": { "j": "诸事不宜", "y": "祭祀.解除.余事勿取" }, "d0110": { "j": "作灶.祭祀.上樑.出行", "y": "沐浴.解除.订盟.纳采.裁衣" }, "d0111": { "j": "", "y": "出行.嫁娶.订盟.纳采.入殓" }, "d0112": { "j": "嫁娶.移徙.入宅.开光", "y": "修饰垣墙.平治道涂.入殓.移柩.余事勿取" }, "d0113": { "j": "出行.治病.安葬.开市", "y": "会亲友.纳采.进人口.修造.动土" }, "d0114": { "j": "盖屋.开市.作灶.入宅", "y": "祭祀.会亲友.出行.订盟.纳采" }, "d0115": { "j": "诸事不宜", "y": "解除.破屋.坏垣.余事勿取" }, "d0116": { "j": "入宅.安床", "y": "塑绘.开光.出行.订盟.纳采" }, "d0117": { "j": "破土.伐木", "y": "入殓.除服.成服.移柩.启钻" }, "d0118": { "j": "开仓.盖屋.安葬.安床", "y": "祭祀.祈福.斋醮.塑绘.开光" }, "d0119": { "j": "栽种.嫁娶.入殓.安葬", "y": "祭祀.出行.沐浴.裁衣.祈福" }, "d0120": { "j": "作灶.掘井.嫁娶.入宅", "y": "祭祀.祈福.斋醮.沐浴.安床" }, "d0121": { "j": "余事勿取", "y": "解除.扫舍.祭祀.教牛马.余事勿取" }, "d0122": { "j": "嫁娶.祭祀.出行.置产", "y": "开市.交易.立券.挂匾.开光" }, "d0123": { "j": "修造.上樑.入宅.祈福.探病", "y": "开市.交易.立券.纳财.开池" }, "d0124": { "j": "余事勿取", "y": "祭祀.解除.修饰垣墙.平治道涂.余事勿取" }, "d0125": { "j": "掘井.安葬.栽种.出行.作灶", "y": "嫁娶.祭祀.祈福.求嗣.动土" }, "d0126": { "j": "掘井.安葬.栽种.出行.作灶", "y": "嫁娶.祭祀.祈福.求嗣.开光" }, "d0127": { "j": "诸事不宜", "y": "破屋.坏垣.余事勿取" }, "d0128": { "j": "安床.伐木.祈福.纳畜", "y": "嫁娶.开市.交易.立券.开光" }, "d0129": { "j": "余事勿取", "y": "祭祀.入殓.破土.除服.成服" }, "d0130": { "j": "伐木.行丧.作灶.作梁.安葬", "y": "嫁娶.祭祀.塑绘.开光.出行" }, "d0131": { "j": "嫁娶.栽种.安葬.理髮.造庙", "y": "开市.交易.立券.纳财.纳畜" }, "d0201": { "j": "置产.嫁娶.出行.开光.栽种", "y": "安床.裁衣.交易.立券.入殓" }, "d0202": { "j": "嫁娶.动土.开池.安葬", "y": "祭祀.解除.造畜稠.教牛马.针灸" }, "d0203": { "j": "入宅.安门.祭祀.谢土", "y": "沐浴.塑绘.开光.纳采.订盟" }, "d0204": { "j": "掘井", "y": "祭祀.斋醮.裁衣.合帐.冠笄" }, "d0205": { "j": "斋醮.作灶.安床.安葬", "y": "安床.合帐.入宅.问名.纳采" }, "d0206": { "j": "祭祀.祈福.安葬.安门.余事勿取", "y": "作灶.平治道涂" }, "d0207": { "j": "盖屋.栽种.安葬.作灶", "y": "塑绘.开光.酬神.斋醮.订盟" }, "d0208": { "j": "栽种.动土.开市.作灶", "y": "祭祀.祈福.酬神.订盟.纳采" }, "d0209": { "j": "诸事不宜", "y": "求医.破屋" }, "d0210": { "j": "作灶.安床", "y": "祈福.求嗣.斋醮.塑绘.开光" }, "d0211": { "j": "嫁娶.上樑.入宅.作灶", "y": "取渔.入殓.除服.成服.移柩" }, "d0212": { "j": "安葬.作灶.伐木.作梁", "y": "祭祀.求嗣.沐浴.酬神.订盟" }, "d0213": { "j": "入殓.安葬.作灶.入宅", "y": "祭祀.沐浴.祈福.求嗣.斋醮" }, "d0214": { "j": "开光.掘井.针灸.出行.嫁娶", "y": "祭祀.祈福.求嗣.入殓.启钻" }, "d0215": { "j": "嫁娶.出行.动土.开渠.入宅", "y": "安床.解除.裁衣.竖柱.上樑" }, "d0216": { "j": "掘井.词讼", "y": "嫁娶.安床.开光.出行.祭祀" }, "d0217": { "j": "入宅.移徙.出火.分居.安香", "y": "嫁娶.开光.求嗣.会亲友.安床" }, "d0218": { "j": "栽种.出行.祈福.行丧.纳畜", "y": "作灶.解除.平治道涂" }, "d0219": { "j": "诸事不宜", "y": "解除.沐浴" }, "d0220": { "j": "开市.立券.理髮.作灶", "y": "嫁娶.祭祀.祈福.出行.解除" }, "d0221": { "j": "余事勿取", "y": "祭祀.解除.治病.破屋.坏垣" }, "d0222": { "j": "嫁娶.作灶.安床", "y": "祭祀.祈福.求嗣.开光.出火" }, "d0223": { "j": "诸事不宜", "y": "结网.入殓.除服.成服.移柩" }, "d0224": { "j": "嫁娶.安葬.破土.作梁.纳畜", "y": "移徙.祭祀.开光.祈福.出行" }, "d0225": { "j": "入宅.作灶.伐木.安葬.出火", "y": "嫁娶.开光.祈福.求嗣.解除" }, "d0226": { "j": "词讼.出火.入宅", "y": "祭祀.合帐.裁衣.经络.伐木" }, "d0227": { "j": "诸事不宜", "y": "裁衣.伐木.作梁.纳财.交易" }, "d0228": { "j": "", "y": "动土.上樑.进人口.入宅.移徙" }, "d0301": { "j": "入宅.作灶.治病.安葬.移徙", "y": "嫁娶.冠笄.纳采.出行.会亲友" }, "d0302": { "j": "诸事不宜", "y": "修饰垣墙" }, "d0303": { "j": "开光.盖屋.动土.作灶.栽种", "y": "造车器.纳采.订盟.祭祀.祈福" }, "d0304": { "j": "开市.作灶.安床.入宅.上樑", "y": "动土.入殓.嫁娶.移柩.安葬" }, "d0305": { "j": "安床.嫁娶.作灶.入宅", "y": "祭祀.解除.入殓.除服.成服" }, "d0306": { "j": "诸事不宜", "y": "破屋.坏垣" }, "d0307": { "j": "作梁.造庙", "y": "祭祀.出行.订盟.纳采.裁衣" }, "d0308": { "j": "造庙.嫁娶.伐木.安葬", "y": "祭祀.开光.塑绘.订盟.纳采" }, "d0309": { "j": "嫁娶.入宅.移徙.作灶.安葬", "y": "祭祀.沐浴.捕捉.栽种" }, "d0310": { "j": "栽种.安葬", "y": "祭祀.开光.塑绘.酬神.斋醮" }, "d0311": { "j": "作灶.开光.嫁娶.开市.入宅", "y": "订盟.纳采.冠笄.拆卸.修造" }, "d0312": { "j": "作灶.掘井.动土.栽种", "y": "祈福.开光.塑绘.酬神.订盟" }, "d0313": { "j": "栽种.作灶.安葬.嫁娶", "y": "祭祀.扫舍.塞穴" }, "d0314": { "j": "出行.嫁娶.入宅.安葬", "y": "开光.塑绘.裁衣.冠笄.伐木" }, "d0315": { "j": "盖屋.作灶.治病.探病", "y": "冠笄.入殓.除服.成服.移柩" }, "d0316": { "j": "栽种.伐木", "y": "祭祀.嫁娶.祈福.纳采.裁衣" }, "d0317": { "j": "安床.开市.立券.作灶", "y": "祭祀.祈福.斋醮.订盟.纳采" }, "d0318": { "j": "诸事不宜", "y": "破屋.坏垣.求医.治病" }, "d0319": { "j": "开光.出货财", "y": "祭祀.动土.上樑.订盟.纳采" }, "d0320": { "j": "嫁娶.栽种.伐木.安葬", "y": "祭祀.开光.塑绘.纳采.裁衣" }, "d0321": { "j": "作灶.开市.安葬.作梁", "y": "裁衣.合帐.冠笄.嫁娶.纳婿" }, "d0322": { "j": "作灶.安葬.开市.盖屋", "y": "祭祀.订盟.纳采.修造.动土" }, "d0323": { "j": "祭祀.开光.嫁娶.入宅", "y": "订盟.纳采.裁衣.合帐.冠笄" }, "d0324": { "j": "掘井.动土.作灶.栽种", "y": "祭祀.出行.嫁娶.冠笄.安床" }, "d0325": { "j": "安门.作灶.安葬.嫁娶", "y": "塞穴.诸事不宜" }, "d0326": { "j": "出行.斋醮.安葬.嫁娶", "y": "开光.塑绘.求嗣.纳采.裁衣" }, "d0327": { "j": "栽种.盖屋.作灶.入宅", "y": "祭祀.嫁娶.纳婿.安葬" }, "d0328": { "j": "伐木.作梁", "y": "祭祀.会亲友.订盟.裁衣.合帐" }, "d0329": { "j": "入宅.安门", "y": "祭祀.开光.塑绘.祈福.斋醮" }, "d0330": { "j": "诸事不宜", "y": "祭祀.治病.破屋.坏垣.余事勿取" }, "d0331": { "j": "造庙.造船.动土.破土.安葬", "y": "纳采.订盟.嫁娶.祭祀.祈福" }, "d0401": { "j": "嫁娶.行丧.架马.作梁.理髮", "y": "开市.立券.交易.挂匾.祭祀" }, "d0402": { "j": "置产.伐木.纳畜.造畜稠.安葬", "y": "理髮.冠笄.嫁娶.进人口" }, "d0403": { "j": "合帐.开市.安葬.入殓", "y": "嫁娶.祭祀.开光.祈福.求嗣" }, "d0404": { "j": "嫁娶.祭祀.开光.出行.出火", "y": "安床.伐木.拆卸.修造.动土" }, "d0405": { "j": "掘井.安门.嫁娶.纳采", "y": "祭祀.祈福.裁衣.合帐.安床" }, "d0406": { "j": "掘井.动土.破土.安葬.开光", "y": "祭祀.进人口.嫁娶.安床.解除" }, "d0407": { "j": "嫁娶.开市.安葬", "y": "纳采.开光.求医.治病.动土" }, "d0408": { "j": "嫁娶.动土.破土", "y": "祭祀.会亲友.开市.安床.启钻" }, "d0409": { "j": "嫁娶.安葬", "y": "祭祀.作灶.掘井.平治道涂" }, "d0410": { "j": "嫁娶.移徙.入宅", "y": "祭祀.斋醮.开市.动土.入殓" }, "d0411": { "j": "开市.动土.破土", "y": "嫁娶.纳采.祭祀.祈福.出行" }, "d0412": { "j": "诸事不宜", "y": "祭祀.求医.治病.解除.余事勿取" }, "d0413": { "j": "嫁娶.入宅.安葬", "y": "沐浴.结网.取渔" }, "d0414": { "j": "诸事不宜", "y": "" }, "d0415": { "j": "诸事不宜", "y": "解除.坏垣.余事勿取" }, "d0416": { "j": "祈福.入殓.祭祀.作灶.安葬", "y": "嫁娶.开光.出行.出火.拆卸" }, "d0417": { "j": "词讼.开光.开市", "y": "嫁娶.出行.合帐.冠笄.安床" }, "d0418": { "j": "诸事不宜", "y": "出行.修饰垣墙.造畜稠.教牛马.余事勿取" }, "d0419": { "j": "嫁娶.纳财.安葬.出行.开市", "y": "祭祀.祈福.开光.求嗣.解除" }, "d0420": { "j": "谢土.祈福.上樑.作灶.斋醮", "y": "纳采.嫁娶.开光.出行.理髮" }, "d0421": { "j": "诸事不宜", "y": "祭祀.平治道涂.解除.修饰垣墙.余事勿取" }, "d0422": { "j": "进人口.出行.嫁娶.置产.安床", "y": "祭祀.祈福.开光.解除.动土" }, "d0423": { "j": "动土.破土.纳财.掘井.挂匾", "y": "祭祀.祈福.求嗣.开光.解除" }, "d0424": { "j": "诸事不宜", "y": "祭祀.解除.破屋.坏垣.余事勿取" }, "d0425": { "j": "诸事不宜", "y": "塞穴.扫舍.余事勿取" }, "d0426": { "j": "诸事不宜", "y": "祭祀.破屋.坏垣.余事勿取" }, "d0427": { "j": "诸事不宜", "y": "解除.破屋.余事勿取" }, "d0428": { "j": "祭祀.入殓.安葬.探病", "y": "嫁娶.祈福.求嗣.开光.出行" }, "d0429": { "j": "嫁娶.掘井.探病.开市.开光", "y": "祭祀.裁衣.冠笄.安床.交易" }, "d0430": { "j": "开光.伐木.安葬.破土", "y": "祭祀.出行.教牛马.扫舍.余事勿取" }, "d0501": { "j": "修坟.造桥.作灶.出行.安葬", "y": "祭祀.祈福.求嗣.开光.纳采" }, "d0502": { "j": "祈福.出火.置产.动土.破土", "y": "开光.出行.交易.塞穴.嫁娶" }, "d0503": { "j": "嫁娶.安床.治病", "y": "祭祀.作灶.畋猎.结网.修饰垣墙" }, "d0504": { "j": "斋醮.开光.嫁娶.入宅.上樑", "y": "沐浴.祭祀.解除.安葬.破土" }, "d0505": { "j": "安门", "y": "嫁娶.纳采.出行.祭祀.祈福" }, "d0506": { "j": "开市.开光", "y": "嫁娶.纳采.求医.治病.修造" }, "d0507": { "j": "诸事不宜", "y": "祭祀.破屋.坏垣.余事勿取" }, "d0508": { "j": "祈福.斋醮", "y": "嫁娶.纳采.祭祀.祈福.出行" }, "d0509": { "j": "嫁娶.安葬", "y": "纳采.祭祀.祈福.开市.求医" }, "d0510": { "j": "动土.破土.安葬", "y": "嫁娶.纳采.出行.移徙.入宅" }, "d0511": { "j": "嫁娶.安葬", "y": "订盟.纳采.祭祀.动土.破土" }, "d0512": { "j": "赴任.捕捉", "y": "嫁娶.裁衣.祭祀.出行.安床" }, "d0513": { "j": "诸事不宜", "y": "塞穴.结网.余事勿取" }, "d0514": { "j": "移徙.入宅", "y": "嫁娶.订盟.纳采.出行.祭祀" }, "d0515": { "j": "开市.安葬", "y": "订盟.纳采.会亲友.安床.作灶" }, "d0516": { "j": "诸事不宜", "y": "沐浴.平治道涂.扫舍.入殓.移柩" }, "d0517": { "j": "", "y": "嫁娶.祭祀.祈福.求嗣.开光" }, "d0518": { "j": "嫁娶.上樑.修造.拆卸.架马", "y": "祭祀.开光.出行.解除.塑绘" }, "d0519": { "j": "诸事不宜", "y": "祭祀.解除.破屋.坏垣.余事勿取" }, "d0520": { "j": "", "y": "嫁娶.祭祀.祈福.求嗣.开光" }, "d0521": { "j": "入宅.移徙.理髮.出火.嫁娶", "y": "开市.交易.立券.祭祀.祈福" }, "d0522": { "j": "诸事不宜", "y": "结网.解除.余事勿取" }, "d0523": { "j": "纳畜.入宅.移徙.安葬.探病", "y": "嫁娶.祭祀.祈福.求嗣.开光" }, "d0524": { "j": "开光.掘井.开仓", "y": "嫁娶.祭祀.祈福.求嗣.出行" }, "d0525": { "j": "诸事不宜", "y": "解除.扫舍.余事勿取" }, "d0526": { "j": "嫁娶.安床.探病.作灶", "y": "开市.交易.立券.挂匾.开光" }, "d0527": { "j": "塞穴.上樑.动土.伐木.安葬", "y": "进人口.会亲友" }, "d0528": { "j": "嫁娶.移徙.伐木.作梁.安床", "y": "沐浴.平治道涂.扫舍.入殓.破土" }, "d0529": { "j": "", "y": "嫁娶.祭祀.祈福.求嗣.开光" }, "d0530": { "j": "祈福.开市.动土.行丧.安葬", "y": "塑绘.冠笄.嫁娶.会亲友.进人口" }, "d0531": { "j": "诸事不宜", "y": "破屋.坏垣.沐浴.解除.余事勿取" }, "d0601": { "j": "开市.立券", "y": "纳采.订盟.嫁娶.造车器.祭祀" }, "d0602": { "j": "嫁娶.掘井.入宅.移徙.安葬", "y": "开市.交易.立券.祭祀.祈福" }, "d0603": { "j": "祭祀.伐木.架马.安床.修造", "y": "解除.出行.纳采.冠笄.竖柱" }, "d0604": { "j": "入宅.移徙.修造.安门.伐木", "y": "祭祀.祈福.求嗣.开光.出行" }, "d0605": { "j": "开市.安门", "y": "嫁娶.纳采.祭祀.祈福.求医" }, "d0606": { "j": "嫁娶.安葬", "y": "裁衣.作灶.移徙.入宅.纳畜" }, "d0607": { "j": "上樑.动土.破土", "y": "祭祀.入殓.移柩.启钻.安葬" }, "d0608": { "j": "移徙.入宅.安葬", "y": "订盟.纳采.出行.祈福.斋醮" }, "d0609": { "j": "动土.破土", "y": "嫁娶.纳采.出行.求医.治病" }, "d0610": { "j": "行丧.安葬", "y": "嫁娶.祭祀.沐浴.扫舍.修饰垣墙" }, "d0611": { "j": "作灶", "y": "嫁娶.订盟.纳采.出行.开市" }, "d0612": { "j": "开市.安葬", "y": "订盟.纳采.出行.祭祀.祈福" }, "d0613": { "j": "诸事不宜", "y": "诸事不宜" }, "d0614": { "j": "开光.开市", "y": "嫁娶.订盟.纳采.祭祀.祈福" }, "d0615": { "j": "嫁娶.开光", "y": "开光.求医.治病.动土.上樑" }, "d0616": { "j": "诸事不宜", "y": "祭祀.栽种.余事勿取" }, "d0617": { "j": "安葬.开市.交易.立券", "y": "嫁娶.开光.祭祀.祈福.求嗣" }, "d0618": { "j": "安葬.出行.祈福.栽种", "y": "求嗣.嫁娶.纳采.合帐.裁衣" }, "d0619": { "j": "诸事不宜", "y": "祭祀.解除.余事勿取" }, "d0620": { "j": "安葬.行丧.伐木.作梁", "y": "嫁娶.祭祀.祈福.出火.开光" }, "d0621": { "j": "置产.安床", "y": "开光.求嗣.出行.解除.伐木" }, "d0622": { "j": "出行.安门.修造.嫁娶.上樑", "y": "祭祀.理髮.修饰垣墙.平治道涂.沐浴" }, "d0623": { "j": "", "y": "嫁娶.祭祀.开光.祈福.求嗣" }, "d0624": { "j": "嫁娶.开市.交易.行丧.安葬", "y": "祭祀.祈福.求嗣.开光.出行" }, "d0625": { "j": "诸事不宜", "y": "破屋.坏垣.余事勿取" }, "d0626": { "j": "嫁娶.造桥.词讼.移徙.安门", "y": "开市.交易.立券.纳财.开池" }, "d0627": { "j": "嫁娶.出火.伐木.祭祀.入宅", "y": "开市.交易.立券.纳财.栽种" }, "d0628": { "j": "诸事不宜", "y": "祭祀.作灶.余事勿取" }, "d0629": { "j": "诸事不宜", "y": "解除.坏垣.余事勿取" }, "d0630": { "j": "嫁娶.掘井.入宅.移徙.出火", "y": "修造.动土.起基.安门.安床" }, "d0701": { "j": "斋醮.移徙.入宅.动土", "y": "祭祀" }, "d0702": { "j": "行丧.安葬.破土.作灶.伐木", "y": "纳采.订盟.嫁娶.祭祀.祈福" }, "d0703": { "j": "纳采.订盟.安床.谢土.破土", "y": "嫁娶.开光.祭祀.祈福.出行" }, "d0704": { "j": "破土.出行.栽种", "y": "嫁娶.祭祀.理髮.作灶.修饰垣墙" }, "d0705": { "j": "动土.掘井.破土", "y": "嫁娶.纳采.订盟.祭祀.祈福" }, "d0706": { "j": "嫁娶.开市.安葬.启钻.行丧", "y": "畋猎.捕捉.结网.取渔.祭祀" }, "d0707": { "j": "嫁娶.移徙.入宅", "y": "纳采.祭祀.祈福.解除.动土" }, "d0708": { "j": "诸事不宜", "y": "祭祀.破屋.坏垣.余事勿取" }, "d0709": { "j": "祭祀.祈福", "y": "嫁娶.纳采.开市.出行.动土" }, "d0710": { "j": "赴任", "y": "嫁娶.纳采.开市.出行.动土" }, "d0711": { "j": "开市.破土", "y": "祭祀.作灶.纳财.捕捉" }, "d0712": { "j": "造庙.安葬", "y": "嫁娶.开市.立券.祭祀.祈福" }, "d0713": { "j": "诸事不宜", "y": "补垣.塞穴.结网.入殓.除服" }, "d0714": { "j": "动土.安葬", "y": "嫁娶.纳采.出行.祭祀.祈福" }, "d0715": { "j": "开市.入宅", "y": "嫁娶.祭祀.祈福.斋醮.治病" }, "d0716": { "j": "祈福.动土.破土", "y": "嫁娶.出行.开市.安床.入殓" }, "d0717": { "j": "开仓.出货财.置产.安葬.动土", "y": "嫁娶.祭祀.裁衣.结网.冠笄" }, "d0718": { "j": "嫁娶.破土.置产.栽种.安葬", "y": "入宅.移徙.安床.开光.祈福" }, "d0719": { "j": "嫁娶.入宅.移徙.作灶.开市", "y": "祭祀.解除.沐浴.整手足甲.入殓" }, "d0720": { "j": "诸事不宜", "y": "破屋.坏垣.余事勿取" }, "d0721": { "j": "伐木.祭祀.纳畜.祭祀", "y": "嫁娶.开光.出行.理髮.作梁" }, "d0722": { "j": "", "y": "嫁娶.开光.出行.祈福.求嗣" }, "d0723": { "j": "安葬.经络.修坟.破土.开市", "y": "祭祀.作灶.纳财.栽种.纳畜" }, "d0724": { "j": "嫁娶.出行.安葬.入殓.入宅", "y": "祭祀.祈福.求嗣.开光.开市" }, "d0725": { "j": "余事勿取", "y": "祭祀.入殓.破土.除服.成服" }, "d0726": { "j": "嫁娶.作灶.安葬.动土.词讼", "y": "祭祀.出行.交易.割蜜.造畜稠" }, "d0727": { "j": "", "y": "嫁娶.祭祀.祈福.求嗣.开光" }, "d0728": { "j": "作灶.动土.上樑.栽种.入宅", "y": "嫁娶.开光.解除.安床.牧养" }, "d0729": { "j": "嫁娶.开市.交易.入宅.安葬", "y": "祭祀.沐浴.破屋.坏垣.求医" }, "d0730": { "j": "嫁娶.栽种.行丧.理髮.修坟", "y": "祭祀.祈福.求嗣.开光.伐木" }, "d0731": { "j": "嫁娶.开市.出火.作灶.置产", "y": "解除.祭祀.理髮.入殓.安葬" }, "d0801": { "j": "诸事不宜", "y": "破屋.坏垣.余事勿取" }, "d0802": { "j": "入宅.移徙.作灶.祭祀.谢土", "y": "开市.交易.立券.纳财.动土" }, "d0803": { "j": "掘井.伐木.纳畜.合寿木", "y": "嫁娶.纳采.订盟.祭祀.祈福" }, "d0804": { "j": "开渠.造船.安床.安葬.破土", "y": "祭祀.冠笄.作灶.交易.纳财" }, "d0805": { "j": "移徙.栽种.出行.行丧.破土", "y": "嫁娶.纳采.订盟.祭祀.祈福" }, "d0806": { "j": "开光.治病.嫁娶.掘井.破土", "y": "经络.祭祀.沐浴.补垣.塞穴" }, "d0807": { "j": "动土.破土", "y": "嫁娶.祭祀.祈福.斋醮.作灶" }, "d0808": { "j": "作灶.动土.破土", "y": "嫁娶.出行.纳畜.祭祀.入殓" }, "d0809": { "j": "嫁娶.开市", "y": "订盟.纳采.祭祀.祈福.修造" }, "d0810": { "j": "开市.安葬", "y": "订盟.纳采.出行.会亲友.修造" }, "d0811": { "j": "嫁娶.祈福.余事勿取", "y": "沐浴" }, "d0812": { "j": "开市.安葬", "y": "嫁娶.祭祀.祈福.斋醮.动土" }, "d0813": { "j": "嫁娶.入宅", "y": "捕捉.结网.入殓.破土.安葬" }, "d0814": { "j": "诸事不宜", "y": "沐浴.治病.破屋.坏垣.余事勿取" }, "d0815": { "j": "动土.破土", "y": "嫁娶.订盟.纳采.出行.开市" }, "d0816": { "j": "开光.针灸", "y": "嫁娶.订盟.纳采.祭祀.祈福" }, "d0817": { "j": "动土.安葬", "y": "订盟.纳采.祭祀.祈福.安机械" }, "d0818": { "j": "入宅.作梁.安门.伐木.修造", "y": "嫁娶.祭祀.祈福.求嗣.出行" }, "d0819": { "j": "盖屋.开光.理髮.造船.掘井", "y": "嫁娶.祭祀.祈福.求嗣.出行" }, "d0820": { "j": "破土.置产.掘井.动土.安床", "y": "祭祀.祈福.求嗣.开光.出行" }, "d0821": { "j": "嫁娶.会亲友.进人口.出行.入宅", "y": "祭祀.解除.沐浴.理髮.整手足甲" }, "d0822": { "j": "嫁娶.纳财.祈福.安葬.修造", "y": "塑绘.开光.进人口.纳畜.补垣" }, "d0823": { "j": "诸事不宜", "y": "作灶.沐浴.修饰垣墙.平治道涂.余事勿取" }, "d0824": { "j": "嫁娶.移徙", "y": "祭祀.求嗣.开光.出行.伐木" }, "d0825": { "j": "诸事不宜", "y": "祭祀.塞穴.入殓.破土.安葬" }, "d0826": { "j": "诸事不宜", "y": "破屋.坏垣.余事勿取" }, "d0827": { "j": "诸事不宜", "y": "祭祀.入殓.移柩.结网.启钻" }, "d0828": { "j": "栽种.作灶.针灸.出行", "y": "嫁娶.出火.拆卸.祭祀.祈福" }, "d0829": { "j": "动土.破土.嫁娶.理髮.出行", "y": "祭祀.开光.解除.进人口.交易" }, "d0830": { "j": "盖屋.入殓.安葬.伐木.入宅", "y": "嫁娶.祭祀.祈福.求嗣.开光" }, "d0831": { "j": "开光.出行.修造.上樑.入宅", "y": "祭祀.动土.筑堤.开池.会亲友" }, "d0901": { "j": "安床.动土.安葬.开生坟.合寿木", "y": "祭祀.裁衣.安门.纳财.扫舍" }, "d0902": { "j": "嫁娶.出行.进人口.作灶.入宅", "y": "祭祀.解除.拆卸.修造.动土" }, "d0903": { "j": "伐木.谢土.行丧.祭祀.作灶", "y": "纳采.订盟.开光.出行.解除" }, "d0904": { "j": "嫁娶.词讼.治病.置产.作梁", "y": "修饰垣墙.平治道涂.祭祀.沐浴.作灶" }, "d0905": { "j": "斋醮.开市.开仓.作灶.造船", "y": "嫁娶.祭祀.祈福.求嗣.出火" }, "d0906": { "j": "嫁娶.入宅.开市.交易", "y": "破土.安葬.移柩.入殓.祭祀" }, "d0907": { "j": "作灶.祭祀.入宅.嫁娶", "y": "祭祀.冠笄.会亲友.拆卸.起基" }, "d0908": { "j": "移徙.入宅.出行.栽种", "y": "祭祀.沐浴.破屋.坏垣.余事勿取" }, "d0909": { "j": "造桥.冠笄.盖屋.掘井", "y": "祭祀.塑绘.开光.出行.解除" }, "d0910": { "j": "定磉.安葬", "y": "祭祀.会亲友.进人口.动土.上樑" }, "d0911": { "j": "移徙.入宅.作灶", "y": "祭祀.裁衣.冠笄.嫁娶.纳婿" }, "d0912": { "j": "入殓.安葬.开市.交易", "y": "诸事不宜" }, "d0913": { "j": "安床.开光.开市.交易", "y": "祭祀.裁衣.冠笄.嫁娶.安机械" }, "d0914": { "j": "动土.冠笄.移徙.入宅.开市", "y": "祭祀.出行.成服.除服.沐浴" }, "d0915": { "j": "诸事不宜", "y": "祭祀.沐浴.赴任.出行.余事勿取" }, "d0916": { "j": "诸事不宜", "y": "诸事不宜" }, "d0917": { "j": "嫁娶.移徙.入宅.开市", "y": "沐浴.入殓.移柩.除服.成服" }, "d0918": { "j": "", "y": "嫁娶.祭祀.祈福.求嗣.沐浴" }, "d0919": { "j": "嫁娶.出行.安床.作灶.祭祀", "y": "开光.解除.起基.动土.拆卸" }, "d0920": { "j": "诸事不宜", "y": "破屋.坏垣.余事勿取" }, "d0921": { "j": "", "y": "嫁娶.祈福.求嗣.出行.出火" }, "d0922": { "j": "嫁娶.立碑.出行.伐木.安葬", "y": "开市.交易.立券.挂匾.祭祀" }, "d0923": { "j": "探病.开渠.安葬.伐木.作灶", "y": "祭祀.理髮.会亲友.进人口.嫁娶" }, "d0924": { "j": "余事勿取", "y": "祭祀.立碑.修坟.启钻.除服" }, "d0925": { "j": "掘井.祈福.安床.开市.入宅", "y": "嫁娶.出行.伐木.拆卸.修造" }, "d0926": { "j": "诸事不宜", "y": "祭祀.出行.扫舍.余事勿取" }, "d0927": { "j": "开光.作灶.斋醮.安葬", "y": "嫁娶.祭祀.出行.冠笄.立券" }, "d0928": { "j": "作灶.行丧.理髮.乘船.嫁娶", "y": "开市.交易.立券.挂匾.开光" }, "d0929": { "j": "诸事不宜", "y": "祭祀.沐浴.修饰垣墙.平治道涂.余事勿取" }, "d0930": { "j": "", "y": "嫁娶.祭祀.祈福.求嗣.开光" }, "d1001": { "j": "诸事不宜", "y": "解除.坏垣.余事勿取" }, "d1002": { "j": "诸事不宜", "y": "祭祀.治病.破屋.坏垣.余事勿取" }, "d1003": { "j": "开市.掘井.开渠.造桥.造船", "y": "嫁娶.纳采.订盟.祭祀.开光" }, "d1004": { "j": "嫁娶.破土.进人口.出行.入宅", "y": "开市.交易.立券.纳财.挂匾" }, "d1005": { "j": "开仓.出货财.伐木.纳畜.开市", "y": "嫁娶.祭祀.理髮.进人口.作灶" }, "d1006": { "j": "开市.入宅.嫁娶.动土.破土", "y": "祭祀.修坟.除服.成服.启钻" }, "d1007": { "j": "祈福.开光.开市.入宅.动土", "y": "嫁娶.冠笄.安机械.解除.纳畜" }, "d1008": { "j": "动土.上樑", "y": "嫁娶.祭祀.安机械.入殓.破土" }, "d1009": { "j": "行丧.安葬", "y": "作灶.造畜稠" }, "d1010": { "j": "嫁娶.入宅", "y": "沐浴.理髮.入学.习艺.进人口" }, "d1011": { "j": "开市.动土.破土", "y": "开光.针灸.会亲友.启钻.安葬" }, "d1012": { "j": "余事勿取", "y": "祭祀" }, "d1013": { "j": "移徙.入宅", "y": "入殓.除服.成服.移柩.破土" }, "d1014": { "j": "开市.赴任", "y": "嫁娶.订盟.纳采.出行.祭祀" }, "d1015": { "j": "余事勿取", "y": "祭祀.解除.破屋.坏垣.余事勿取" }, "d1016": { "j": "祈福.安葬", "y": "订盟.纳采.会亲友.安机械.纳财" }, "d1017": { "j": "斋醮.安门", "y": "嫁娶.订盟.纳采.出行.开市" }, "d1018": { "j": "诸事不宜", "y": "祭祀.塞穴.余事勿取" }, "d1019": { "j": "嫁娶.作灶.修坟.安门.入宅", "y": "祭祀.祈福.求嗣.开光.开市" }, "d1020": { "j": "嫁娶.开光.会亲友.掘井.安门", "y": "祭祀.解除.裁衣.理髮.安床" }, "d1021": { "j": "动土.伐木.作梁.行丧.安葬", "y": "祭祀.出行.裁衣.冠笄.会亲友" }, "d1022": { "j": "安葬.修坟.作灶.破土.造庙", "y": "祭祀.祈福.求嗣.开光.出行" }, "d1023": { "j": "嫁娶.作灶.出火.出行.入宅", "y": "开市.交易.立券.纳财.会亲友" }, "d1024": { "j": "诸事不宜", "y": "造畜稠.平治道涂.余事勿取" }, "d1025": { "j": "余事勿取", "y": "入殓.破土.安葬.启钻.除服" }, "d1026": { "j": "余事勿取", "y": "祭祀.入殓.移柩.开生坟.破土" }, "d1027": { "j": "诸事不宜", "y": "祭祀.解除.破屋.坏垣.余事勿取" }, "d1028": { "j": "上樑.作灶.伐木.出行.安葬", "y": "嫁娶.求嗣.纳采.进人口.纳财" }, "d1029": { "j": "纳畜.伐木.置产.作梁.行丧", "y": "嫁娶.祭祀.开市.开光.出行" }, "d1030": { "j": "安葬.开市.修坟.立碑", "y": "嫁娶.祭祀.作灶.纳财" }, "d1031": { "j": "安床.安葬", "y": "嫁娶.祭祀.祈福.求嗣.开光" }, "d1101": { "j": "开光.栽种", "y": "嫁娶.祭祀.祈福.求嗣.动土" }, "d1102": { "j": "伐木.行丧.破土.嫁娶.安葬", "y": "祭祀.祈福.求嗣.开光.出行" }, "d1103": { "j": "嫁娶.安葬.行丧.词讼.造桥", "y": "祭祀.开光.出行.解除.理髮" }, "d1104": { "j": "开市.入宅.出行.嫁娶.修坟", "y": "纳采.订盟.会亲友.沐浴.理髮" }, "d1105": { "j": "嫁娶.开市.交易.入宅.入学", "y": "解除.祭祀.修饰垣墙.平治道涂.造畜稠" }, "d1106": { "j": "开市.入宅.祭祀.置产.补垣", "y": "入殓.破土.启钻.安葬.除服" }, "d1107": { "j": "作灶.治病", "y": "祭祀.祈福.订盟.纳采.裁衣" }, "d1108": { "j": "开市.交易.破土.作灶", "y": "祭祀.塑绘.开光.订盟.纳采" }, "d1109": { "j": "诸事不宜", "y": "祭祀.解除.破屋.坏垣.余事勿取" }, "d1110": { "j": "盖屋.治病", "y": "祭祀.解除.祈福.开光.塑绘" }, "d1111": { "j": "嫁娶.入宅.治病.赴任", "y": "祭祀.祈福.订盟.纳采.裁衣" }, "d1112": { "j": "诸事不宜", "y": "沐浴.扫舍.余事勿取" }, "d1113": { "j": "诸事不宜", "y": "诸事不宜" }, "d1114": { "j": "入宅.作灶", "y": "祈福.斋醮.出行.订盟.纳采" }, "d1115": { "j": "嫁娶.动土.安葬.作灶", "y": "祭祀.沐浴.出行.冠笄.进人口" }, "d1116": { "j": "开市", "y": "祭祀.祈福.斋醮.塑绘.开光" }, "d1117": { "j": "诸事不宜", "y": "诸事不宜" }, "d1118": { "j": "栽种.破土.置产.祭祀.嫁娶", "y": "开市.交易.立券.挂匾.纳财" }, "d1119": { "j": "", "y": "嫁娶.祭祀.祈福.求嗣.开光" }, "d1120": { "j": "嫁娶.开市.出火.栽种.破土", "y": "开光.解除.拆卸.修造.动土" }, "d1121": { "j": "诸事不宜", "y": "破屋.坏垣.余事勿取" }, "d1122": { "j": "探病.安葬", "y": "嫁娶.祭祀.开光.出火.出行" }, "d1123": { "j": "入宅.作灶.词讼.移徙.出行", "y": "祭祀.祈福.求嗣.开光.解除" }, "d1124": { "j": "安床.开市.交易.出货财.安葬", "y": "祭祀.沐浴.结网.移柩.入殓" }, "d1125": { "j": "余事勿取", "y": "解除.余事勿取" }, "d1126": { "j": "入宅.移徙.嫁娶.掘井.作灶", "y": "安床.祭祀.开池.补垣.入殓" }, "d1127": { "j": "余事勿取", "y": "祭祀.沐浴.余事勿取" }, "d1128": { "j": "置产.安床", "y": "嫁娶.开光.出行.解除.出火" }, "d1129": { "j": "嫁娶.冠笄.出行.祈福.安葬", "y": "开光.裁衣.安门.会亲友.安床" }, "d1130": { "j": "祈福.祭祀.伐木.掘井.作灶", "y": "嫁娶.开光.出行.出火.拆卸" }, "d1201": { "j": "栽种.掘井.置产", "y": "嫁娶.祭祀.祈福.求嗣.开光" }, "d1202": { "j": "嫁娶.动土.造船.开池.掘井", "y": "祭祀.理髮.针灸.解除.进人口" }, "d1203": { "j": "嫁娶.安葬", "y": "破屋.坏垣.求医.治病.余事勿取" }, "d1204": { "j": "上樑.开仓.出货财.盖屋.造船", "y": "纳采.订盟.嫁娶.祭祀.祈福" }, "d1205": { "j": "嫁娶.进人口.入宅.移徙.出火", "y": "祭祀.祈福.求嗣.开光.解除" }, "d1206": { "j": "嫁娶.入宅.开市.安床.破土", "y": "沐浴.扫舍.捕捉.畋猎.解除" }, "d1207": { "j": "开市.破土", "y": "祭祀.沐浴.安床.纳财.畋猎" }, "d1208": { "j": "嫁娶.作灶", "y": "订盟.纳采.祭祀.祈福.修造" }, "d1209": { "j": "入宅.安葬", "y": "出行.沐浴.理髮.补垣.塞穴" }, "d1210": { "j": "入宅.动土.破土.余事勿取", "y": "教牛马.余事勿取" }, "d1211": { "j": "开市.安葬", "y": "嫁娶.出行.求医.治病.祭祀" }, "d1212": { "j": "嫁娶.祈福", "y": "开市.立券.开光.解除.安机械" }, "d1213": { "j": "诸事不宜", "y": "平治道涂.余事勿取" }, "d1214": { "j": "开市.嫁娶", "y": "求嗣.斋醮.塑绘.订盟.纳采" }, "d1215": { "j": "开市.安葬", "y": "嫁娶.订盟.纳采.祭祀.祈福" }, "d1216": { "j": "诸事不宜", "y": "治病.破屋.坏垣.余事勿取" }, "d1217": { "j": "造桥.安门.理髮.造庙.栽种", "y": "祭祀.祈福.求嗣.斋醮.开光" }, "d1218": { "j": "诸事不宜", "y": "解除.坏垣.余事勿取" }, "d1219": { "j": "伐木.纳畜.上樑.入宅.作灶", "y": "沐浴.理髮.扫舍" }, "d1220": { "j": "嫁娶.出行.赴任.盖屋.入殓", "y": "祭祀.开光.祈福.解除.作梁" }, "d1221": { "j": "嫁娶.祈福.掘井.行丧.安葬", "y": "作梁.修造.动土.安门.作灶" }, "d1222": { "j": "余事勿取", "y": "安葬.启钻.移柩.入殓.除服" }, "d1223": { "j": "作灶.塑绘.行丧.词讼.伐木", "y": "嫁娶.祭祀.祈福.求嗣.出行" }, "d1224": { "j": "入宅.移徙.作灶.祈福.祭祀", "y": "理髮.开光.解除.拆卸.修造" }, "d1225": { "j": "诸事不宜", "y": "祭祀.修饰垣墙.余事勿取" }, "d1226": { "j": "嫁娶.开市.作灶.置产.作梁", "y": "入宅.安床.开光.祭祀.出火" }, "d1227": { "j": "诸事不宜", "y": "祭祀.解除.余事勿取" }, "d1228": { "j": "诸事不宜", "y": "破屋.坏垣.祭祀.沐浴.余事勿取" }, "d1229": { "j": "安门.栽种.作灶.治病", "y": "安床.祭祀.祈福.求嗣.冠笄" }, "d1230": { "j": "诸事不宜", "y": "解除.扫舍.余事勿取" }, "d1231": { "j": "伐木.纳畜.破土.安葬.开生坟", "y": "祭祀.开光.理髮.整手足甲.安床" } } ukui-panel-4.0.0.4/plugin-calendar/html/hlnew/hl2030.json0000644000175000017500000012054114560306203021302 0ustar fengfeng{ "d0101": { "j": "", "y": "塑绘.斋醮.出行.拆卸.解除" }, "d0102": { "j": "开市.破土", "y": "祭祀.沐浴.安床.纳财.畋猎" }, "d0103": { "j": "嫁娶.作灶", "y": "订盟.纳采.祭祀.祈福.修造" }, "d0104": { "j": "入宅.安葬", "y": "出行.沐浴.理髮.补垣.塞穴" }, "d0105": { "j": "入宅.置产.嫁娶.动土.栽种", "y": "祭祀.祈福.求嗣.沐浴.问名" }, "d0106": { "j": "嫁娶.入宅.出行.动土.破土", "y": "祭祀.教牛马.造畜稠.祭祀.会亲友" }, "d0107": { "j": "作灶.安葬.祭祀.开市.纳采", "y": "嫁娶.开光.解除.出火.拆卸" }, "d0108": { "j": "挂匾.入宅.上樑.祈福.词讼", "y": "出行.起基.安床.纳财.交易" }, "d0109": { "j": "开光.嫁娶.开仓.出货财.造船", "y": "平治道涂.余事勿取" }, "d0110": { "j": "开市.出行.安葬.行丧", "y": "嫁娶.订盟.纳采.会亲友.祭祀" }, "d0111": { "j": "纳采.订盟.嫁娶.上樑.开市", "y": "沐浴.捕捉.畋猎.理髮.整手足甲" }, "d0112": { "j": "斋醮.嫁娶.开市", "y": "祭祀.破屋.坏垣.余事勿取" }, "d0113": { "j": "祈福.嫁娶.安床.入宅.造船", "y": "沐浴.开仓.出货财.开市.交易" }, "d0114": { "j": "造庙.入宅.修造.安葬.行丧", "y": "祭祀.沐浴.补垣.塞穴.断蚁" }, "d0115": { "j": "开市.安床.安葬.修坟", "y": "嫁娶.纳采.订盟.问名.祭祀" }, "d0116": { "j": "造庙.嫁娶.出行.动土.安葬", "y": "订盟.纳采.会亲友.祭祀.斋醮" }, "d0117": { "j": "开光.嫁娶.开市.动土.破土", "y": "交易.立券.纳财.安床.裁衣" }, "d0118": { "j": "破土.动土.安葬", "y": "祭祀.解除.教牛马.会亲友.余事勿取" }, "d0119": { "j": "探病.祭祀.出行.上樑.盖屋", "y": "纳采.订盟.移徙.纳财.开市" }, "d0120": { "j": "入宅.开光.开市.动土", "y": "嫁娶.订盟.纳采.祭祀.祈福" }, "d0121": { "j": "移徙.入宅.造庙.作灶.治病", "y": "祭祀.冠笄.嫁娶.会亲友.进人口" }, "d0122": { "j": "嫁娶.安葬", "y": "祭祀.安碓.结网.余事勿取" }, "d0123": { "j": "盖屋.开市.动土.破土", "y": "嫁娶.祭祀.沐浴.裁衣.出行" }, "d0124": { "j": "嫁娶.开市.安葬", "y": "破屋.坏垣.余事勿取" }, "d0125": { "j": "祈福.嫁娶.造庙.安床.谢土", "y": "纳采.订盟.祭祀.求嗣.出火" }, "d0126": { "j": "开市.伐木.嫁娶.作梁", "y": "入殓.除服.成服.移柩.启钻" }, "d0127": { "j": "开市.安床", "y": "祭祀.作灶.入殓.除服.余事勿取" }, "d0128": { "j": "嫁娶.入殓.安葬.出行", "y": "塑绘.开光.沐浴.冠笄.会亲友" }, "d0129": { "j": "开仓.嫁娶.移徙.入宅", "y": "祭祀.沐浴.祈福.斋醮.订盟" }, "d0130": { "j": "诸事不宜", "y": "祭祀.解除.余事勿取" }, "d0131": { "j": "作灶.祭祀.上樑.出行", "y": "沐浴.解除.订盟.纳采.裁衣" }, "d0201": { "j": "", "y": "出行.嫁娶.订盟.纳采.入殓" }, "d0202": { "j": "嫁娶.移徙.入宅.开光", "y": "修饰垣墙.平治道涂.入殓.移柩.余事勿取" }, "d0203": { "j": "出行.治病.安葬.开市", "y": "会亲友.纳采.进人口.修造.动土" }, "d0204": { "j": "经络.探病.盖屋.作灶.动土", "y": "嫁娶.祭祀.冠笄.修饰垣墙.置产" }, "d0205": { "j": "开市.入宅.斋醮", "y": "纳采.嫁娶.祭祀.祈福.出行" }, "d0206": { "j": "嫁娶.安葬", "y": "祭祀.沐浴.解除.理髮.扫舍" }, "d0207": { "j": "安床.作灶.造船.会亲友", "y": "纳采.订盟.祭祀.祈福.安香" }, "d0208": { "j": "嫁娶.安门.移徙.入宅.安葬", "y": "塞穴.结网.取渔.畋猎" }, "d0209": { "j": "嫁娶.开市.安葬.破土", "y": "纳采.祭祀.祈福.出行.会亲友" }, "d0210": { "j": "移徙.入宅.出火.安门.安葬", "y": "纳采.嫁娶.祭祀.祈福.出行" }, "d0211": { "j": "嫁娶.动土.开光.盖屋.破土", "y": "祭祀.祈福.求嗣.斋醮.入殓" }, "d0212": { "j": "祭祀.移徙.入宅.动土.破土", "y": "纳采.会亲友.竖柱.上樑.立券" }, "d0213": { "j": "开光.嫁娶.作灶.掘井.纳畜", "y": "祭祀.祈福.斋醮.出行.开市" }, "d0214": { "j": "开市.动土.安葬.破土", "y": "会亲友.求嗣.理髮.冠笄.结网" }, "d0215": { "j": "嫁娶.祈福.掘井.安葬", "y": "祭祀.平治道涂.余事勿取" }, "d0216": { "j": "置产.盖屋.合嵴.开光.探病", "y": "祈福.求嗣.斋醮.纳采.嫁娶" }, "d0217": { "j": "开光.开市.入宅.动土.盖屋", "y": "入学.习艺.出行.纳采.订盟" }, "d0218": { "j": "入宅.开市.安葬", "y": "祭祀.沐浴.求医.治病.扫舍" }, "d0219": { "j": "安床.栽种.治病.作灶", "y": "祭祀.冠笄.嫁娶.拆卸.修造" }, "d0220": { "j": "开市.伐木.作梁.作灶", "y": "安机械.移徙.入宅.出行.祭祀" }, "d0221": { "j": "伐木.作灶.安葬.取渔.入宅", "y": "塑绘.开光.祈福.求嗣.订盟" }, "d0222": { "j": "安葬.上樑.入宅.作灶", "y": "祭祀.沐浴.开光.塑绘.祈福" }, "d0223": { "j": "出行.嫁娶.入宅.动土", "y": "祭祀.祈福.求嗣.酬神.裁衣" }, "d0224": { "j": "祭祀.祈福.移徙.嫁娶.入宅", "y": "裁衣.合帐.入殓.除服.成服" }, "d0225": { "j": "掘井", "y": "祭祀.斋醮.裁衣.合帐.冠笄" }, "d0226": { "j": "斋醮.作灶.安床.安葬", "y": "安床.合帐.入宅.问名.纳采" }, "d0227": { "j": "祭祀.祈福.安葬.安门.余事勿取", "y": "作灶.平治道涂" }, "d0228": { "j": "盖屋.栽种.安葬.作灶", "y": "塑绘.开光.酬神.斋醮.订盟" }, "d0301": { "j": "栽种.动土.开市.作灶", "y": "祭祀.祈福.酬神.订盟.纳采" }, "d0302": { "j": "诸事不宜", "y": "求医.破屋" }, "d0303": { "j": "作灶.安床", "y": "祈福.求嗣.斋醮.塑绘.开光" }, "d0304": { "j": "嫁娶.上樑.入宅.作灶", "y": "取渔.入殓.除服.成服.移柩" }, "d0305": { "j": "嫁娶.定磉.合寿木.安葬.行丧", "y": "祭祀.祈福.求嗣.斋醮.沐浴" }, "d0306": { "j": "入宅.盖屋.竖柱.安葬", "y": "纳财.交易.立券.栽种.捕捉" }, "d0307": { "j": "开市.交易.合帐.安葬", "y": "嫁娶.订盟.纳采.祭祀.祈福" }, "d0308": { "j": "嫁娶.祈福.出火.入宅", "y": "冠笄.立券.交易.修造.动土" }, "d0309": { "j": "嫁娶.动土.掘井.起基.定磉", "y": "祭祀.会亲友.出行.立券.交易" }, "d0310": { "j": "嫁娶.安葬.行丧.安门", "y": "祭祀.沐浴.解除.扫舍.塞穴" }, "d0311": { "j": "移徙.入宅.栽种", "y": "纳财.开市.交易.立券.开光" }, "d0312": { "j": "开市.盖屋.治病.作灶", "y": "嫁娶.冠笄.会亲友.安机械.纳财" }, "d0313": { "j": "纳畜.理髮.合寿木", "y": "嫁娶.造车器.纳采.订盟.祭祀" }, "d0314": { "j": "纳采.开光.安床.嫁娶.开市", "y": "祈福.斋醮.出行.移徙.入宅" }, "d0315": { "j": "嫁娶.移徙.开市.入宅", "y": "破屋.坏垣.余事勿取" }, "d0316": { "j": "塑绘.开光.造桥.除服.成服", "y": "嫁娶.冠笄.祭祀.出行.会亲友" }, "d0317": { "j": "祈福.嫁娶.安葬.破土", "y": "开光.求嗣.出行.纳采.冠笄" }, "d0318": { "j": "纳财.开市.安葬.破土", "y": "理髮.冠笄.嫁娶.进人口.栽种" }, "d0319": { "j": "纳采.动土.开市.交易.安门", "y": "开光.祈福.求嗣.出行.解除" }, "d0320": { "j": "祭祀.嫁娶.出行.上樑.掘井", "y": "裁衣.经络.伐木.开柱眼.拆卸" }, "d0321": { "j": "栽种.动土.安葬.掘井.修坟", "y": "祭祀.会亲友.立券.交易.裁衣" }, "d0322": { "j": "诸事不宜", "y": "扫舍.塞穴.余事勿取" }, "d0323": { "j": "作灶.出行.入宅.安葬", "y": "塑绘.开光.订盟.纳采.裁衣" }, "d0324": { "j": "动土.作灶.入宅.开光.安床", "y": "祭祀.嫁娶.纳婿.除服.成服" }, "d0325": { "j": "赴任", "y": "祈福.求嗣.开光.塑绘.斋醮" }, "d0326": { "j": "安床.嫁娶.作灶.入宅", "y": "祭祀.解除.入殓.除服.成服" }, "d0327": { "j": "诸事不宜", "y": "破屋.坏垣" }, "d0328": { "j": "作梁.造庙", "y": "祭祀.出行.订盟.纳采.裁衣" }, "d0329": { "j": "造庙.嫁娶.伐木.安葬", "y": "祭祀.开光.塑绘.订盟.纳采" }, "d0330": { "j": "嫁娶.入宅.移徙.作灶.安葬", "y": "祭祀.沐浴.捕捉.栽种" }, "d0331": { "j": "栽种.安葬", "y": "祭祀.开光.塑绘.酬神.斋醮" }, "d0401": { "j": "作灶.开光.嫁娶.开市.入宅", "y": "订盟.纳采.冠笄.拆卸.修造" }, "d0402": { "j": "作灶.掘井.动土.栽种", "y": "祈福.开光.塑绘.酬神.订盟" }, "d0403": { "j": "栽种.作灶.安葬.嫁娶", "y": "祭祀.扫舍.塞穴" }, "d0404": { "j": "出行.嫁娶.入宅.安葬", "y": "开光.塑绘.裁衣.冠笄.伐木" }, "d0405": { "j": "祈福.入宅.盖屋.动土.破土", "y": "祭祀.塑绘.开光.纳采.嫁娶" }, "d0406": { "j": "安床.入宅.安碓.栽种", "y": "祭祀" }, "d0407": { "j": "移徙.入宅.嫁娶.出行.安床", "y": "祭祀.祈福.求嗣.斋醮.沐浴" }, "d0408": { "j": "嫁娶.开市.纳财.出火", "y": "纳采.祭祀.祈福.求嗣.斋醮" }, "d0409": { "j": "祈福.斋醮.开市.安葬", "y": "祭祀.沐浴.解除.求医.治病" }, "d0410": { "j": "祭祀.嫁娶.入宅.作灶.安葬", "y": "沐浴.捕捉.畋猎.结网.取渔" }, "d0411": { "j": "出火.嫁娶.开市", "y": "祭祀.祈福.求嗣.斋醮.纳采" }, "d0412": { "j": "嫁娶.安葬", "y": "祭祀.捕捉.解除.余事勿取" }, "d0413": { "j": "祈福.动土.破土.安葬.入殓", "y": "纳采.嫁娶.出行.开市.立券" }, "d0414": { "j": "开光.嫁娶.掘井.安葬.安门", "y": "祭祀.祈福.求嗣.斋醮.冠笄" }, "d0415": { "j": "动土.破土.行丧.开光.作梁", "y": "祭祀.解除.教牛马.出行.余事勿取" }, "d0416": { "j": "开市.嫁娶.移徙.入宅.掘井", "y": "沐浴.斋醮.解除.求医.治病" }, "d0417": { "j": "祈福.开市.修造.动土.破土", "y": "求嗣.出行.解除.订盟.纳采" }, "d0418": { "j": "嫁娶.安葬.动土.安床.治病", "y": "祭祀" }, "d0419": { "j": "入宅.动土.开仓.出货财", "y": "造车器.祭祀.祈福.求嗣.斋醮" }, "d0420": { "j": "开市.动土.掘井.开池", "y": "祭祀.祈福.开光.求嗣.斋醮" }, "d0421": { "j": "移徙.开市.入宅.安葬", "y": "祈福.斋醮.纳采.订盟.解除" }, "d0422": { "j": "诸事不宜", "y": "诸事不宜" }, "d0423": { "j": "出火.入宅.安葬.伐木", "y": "祭祀.塑绘.开光.订盟.纳采" }, "d0424": { "j": "造庙.嫁娶.安床.余事勿取", "y": "祭祀.余事勿取" }, "d0425": { "j": "入殓.安葬.入宅.安床", "y": "订盟.纳采.嫁娶.进人口.会亲友" }, "d0426": { "j": "掘井.安门.嫁娶.纳采", "y": "祭祀.祈福.裁衣.合帐.安床" }, "d0427": { "j": "掘井.动土.破土.安葬.开光", "y": "祭祀.进人口.嫁娶.安床.解除" }, "d0428": { "j": "嫁娶.开市.安葬", "y": "纳采.开光.求医.治病.动土" }, "d0429": { "j": "嫁娶.动土.破土", "y": "祭祀.会亲友.开市.安床.启钻" }, "d0430": { "j": "嫁娶.安葬", "y": "祭祀.作灶.掘井.平治道涂" }, "d0501": { "j": "嫁娶.移徙.入宅", "y": "祭祀.斋醮.开市.动土.入殓" }, "d0502": { "j": "开市.动土.破土", "y": "嫁娶.纳采.祭祀.祈福.出行" }, "d0503": { "j": "诸事不宜", "y": "祭祀.求医.治病.解除.余事勿取" }, "d0504": { "j": "嫁娶.入宅.安葬", "y": "沐浴.结网.取渔" }, "d0505": { "j": "作灶.开市.经络", "y": "订盟.纳采.嫁娶.解除.祭祀" }, "d0506": { "j": "安床.上樑.裁衣.入宅.嫁娶", "y": "祭祀.祈福.求嗣.开光.订盟" }, "d0507": { "j": "探病.嫁娶.开市", "y": "祭祀.结网.捕捉.余事勿取" }, "d0508": { "j": "入宅.安门.安葬", "y": "祭祀.祈福.求嗣.开光.纳采" }, "d0509": { "j": "入宅.盖屋.造桥.安门.安葬", "y": "嫁娶.冠笄.祭祀.出行.移徙" }, "d0510": { "j": "嫁娶.安葬", "y": "祭祀.解除.断蚁.会亲友.余事勿取" }, "d0511": { "j": "开市.出行.安床.作灶.安葬", "y": "嫁娶.纳采.订盟.祭祀.祈福" }, "d0512": { "j": "开市.作灶.动土.行丧.安葬", "y": "嫁娶.纳采.订盟.会亲友.安机械" }, "d0513": { "j": "祈福.嫁娶.入宅.安床.作灶", "y": "祭祀.沐浴.移徙.破土.安葬" }, "d0514": { "j": "动土.破土.嫁娶.嫁娶", "y": "祭祀.祈福.斋醮.求嗣.安机械" }, "d0515": { "j": "移徙.入宅.盖屋.架马", "y": "嫁娶.纳采.订盟.斋醮.开光" }, "d0516": { "j": "行丧.安葬", "y": "祭祀.沐浴.解除.破屋.坏垣" }, "d0517": { "j": "斋醮.开市.嫁娶.作灶", "y": "沐浴.扫舍.余事勿取" }, "d0518": { "j": "嫁娶.出火.移徙.入宅", "y": "开市.交易.立券.安机械.会亲友" }, "d0519": { "j": "开市.动土.祭祀.斋醮.安葬", "y": "栽种.捕捉.畋猎.余事勿取" }, "d0520": { "j": "开市.入宅.探病.出火.盖屋", "y": "嫁娶.祭祀.祈福.求嗣.斋醮" }, "d0521": { "j": "余事勿取", "y": "余事勿取" }, "d0522": { "j": "破土.安葬", "y": "塞穴.断蚁.结网.余事勿取" }, "d0523": { "j": "", "y": "开光.出行.纳采.嫁娶.伐木" }, "d0524": { "j": "诸事不宜", "y": "进人口.牧养.置产.塞穴.结网" }, "d0525": { "j": "会亲友.进人口.修造.动土.起基", "y": "开光.出行.嫁娶" }, "d0526": { "j": "安门", "y": "嫁娶.纳采.出行.祭祀.祈福" }, "d0527": { "j": "开市.开光", "y": "嫁娶.纳采.求医.治病.修造" }, "d0528": { "j": "诸事不宜", "y": "祭祀.破屋.坏垣.余事勿取" }, "d0529": { "j": "祈福.斋醮", "y": "嫁娶.纳采.祭祀.祈福.出行" }, "d0530": { "j": "嫁娶.安葬", "y": "纳采.祭祀.祈福.开市.求医" }, "d0531": { "j": "动土.破土.安葬", "y": "嫁娶.纳采.出行.移徙.入宅" }, "d0601": { "j": "嫁娶.安葬", "y": "订盟.纳采.祭祀.动土.破土" }, "d0602": { "j": "赴任.捕捉", "y": "嫁娶.裁衣.祭祀.出行.安床" }, "d0603": { "j": "诸事不宜", "y": "塞穴.结网.余事勿取" }, "d0604": { "j": "移徙.入宅", "y": "嫁娶.订盟.纳采.出行.祭祀" }, "d0605": { "j": "安葬.开生坟.秋.行丧", "y": "嫁娶.祭祀.祈福.求嗣.开光" }, "d0606": { "j": "嫁娶.安床.作灶.动土.破土", "y": "安机械.祭祀.祈福.求嗣.沐浴" }, "d0607": { "j": "开市.入宅.出行.修造.词讼", "y": "祭祀.沐浴.理髮.整手足甲.修饰垣墙" }, "d0608": { "j": "开光.作灶.盖屋.架马.开仓", "y": "嫁娶.纳采.祭祀.祈福.出行" }, "d0609": { "j": "嫁娶.开市.合寿木.安葬", "y": "纳采.订盟.冠笄.祭祀.祈福" }, "d0610": { "j": "入宅.嫁娶.移徙", "y": "祭祀.沐浴.破屋.坏垣.余事勿取" }, "d0611": { "j": "作灶.理髮.造桥.行丧.安葬", "y": "嫁娶.安机械.交易.出行.祭祀" }, "d0612": { "j": "斋醮.祭祀.移徙.入宅.上樑", "y": "纳采.冠笄.求医.治病.开市" }, "d0613": { "j": "开市.安葬.破土.修坟.掘井", "y": "祭祀.作灶.余事勿取" }, "d0614": { "j": "合帐.上樑.经络.安葬.入殓", "y": "祭祀.祈福.求嗣.斋醮.安香" }, "d0615": { "j": "祈福.开光.掘井.开市.安葬", "y": "嫁娶.冠笄.修造.动土.作灶" }, "d0616": { "j": "斋醮.开渠.上樑.动土.破土", "y": "祭祀.交易.纳财" }, "d0617": { "j": "行丧.伐木.作梁.作灶", "y": "嫁娶.订盟.纳采.冠笄.会亲友" }, "d0618": { "j": "安床.出货财.作灶.动土.破土", "y": "开光.求嗣.出行.冠笄.嫁娶" }, "d0619": { "j": "斋醮.出行.治病.合寿木", "y": "祭祀.沐浴.理髮.嫁娶.作灶" }, "d0620": { "j": "诸事不宜", "y": "祭祀.解除.余事勿取" }, "d0621": { "j": "开市.交易.嫁娶.安葬.行丧", "y": "祭祀.沐浴.捕捉.结网.畋猎" }, "d0622": { "j": "嫁娶.入宅", "y": "破屋.坏垣.求医.治病.畋猎" }, "d0623": { "j": "开市.安门.掘井.作灶", "y": "嫁娶.出行.安机械.祭祀.塑绘" }, "d0624": { "j": "", "y": "订盟.纳采.会亲友.进人口.彫刻" }, "d0625": { "j": "诸事不宜", "y": "祭祀.捕捉.取渔.修饰垣墙.余事勿取" }, "d0626": { "j": "开市.安门", "y": "嫁娶.纳采.祭祀.祈福.求医" }, "d0627": { "j": "嫁娶.安葬", "y": "裁衣.作灶.移徙.入宅.纳畜" }, "d0628": { "j": "上樑.动土.破土", "y": "祭祀.入殓.移柩.启钻.安葬" }, "d0629": { "j": "移徙.入宅.安葬", "y": "订盟.纳采.出行.祈福.斋醮" }, "d0630": { "j": "动土.破土", "y": "嫁娶.纳采.出行.求医.治病" }, "d0701": { "j": "行丧.安葬", "y": "嫁娶.祭祀.沐浴.扫舍.修饰垣墙" }, "d0702": { "j": "作灶", "y": "嫁娶.订盟.纳采.出行.开市" }, "d0703": { "j": "开市.安葬", "y": "订盟.纳采.出行.祭祀.祈福" }, "d0704": { "j": "诸事不宜", "y": "诸事不宜" }, "d0705": { "j": "开光.开市", "y": "嫁娶.订盟.纳采.祭祀.祈福" }, "d0706": { "j": "嫁娶.开光", "y": "开光.求医.治病.动土.上樑" }, "d0707": { "j": "入宅.开市.掘井.词讼.合寿木", "y": "嫁娶.订盟.纳采.祭祀.祈福" }, "d0708": { "j": "安葬.破土.开市.开仓.出货财", "y": "纳采.订盟.嫁娶.移徙.入宅" }, "d0709": { "j": "出行.安葬.造桥", "y": "纳采.订盟.嫁娶.祭祀.沐浴" }, "d0710": { "j": "开市.入宅.嫁娶.开光.盖屋", "y": "祭祀.入殓.除服.成服.移柩" }, "d0711": { "j": "动土.破土.掘井.安葬", "y": "祭祀.修造.出行.盖屋.竖柱" }, "d0712": { "j": "嫁娶.出行.纳采.入宅.作灶", "y": "祭祀.沐浴.塑绘.开光.入学" }, "d0713": { "j": "斋醮.入宅.安门.安葬.破土", "y": "纳财.开市.交易.立券.出行" }, "d0714": { "j": "开市.动土.破土.嫁娶.修造", "y": "祭祀.修饰垣墙.平治道涂" }, "d0715": { "j": "嫁娶.安葬.行丧.破土.修坟", "y": "订盟.纳采.祭祀.祈福.开光" }, "d0716": { "j": "出火.嫁娶.入宅.作灶.破土", "y": "沐浴.理髮.捕捉.入殓.移柩" }, "d0717": { "j": "嫁娶.出行", "y": "求医.治病.破屋.坏垣.余事勿取" }, "d0718": { "j": "祈福.上樑.开仓.掘井.牧养", "y": "纳采.订盟.嫁娶.移徙.入宅" }, "d0719": { "j": "嫁娶.开市.栽种.合寿木", "y": "祭祀.祈福.斋醮.出行.纳采" }, "d0720": { "j": "开市.入宅.安床.动土.安葬", "y": "祭祀.进人口.纳财.纳畜.牧养" }, "d0721": { "j": "盖屋.入宅.作灶.入学.安葬", "y": "祭祀.塑绘.开光.求医.治病" }, "d0722": { "j": "移徙.开市.入宅.嫁娶.开光", "y": "祭祀.塞穴.结网.畋猎.余事勿取" }, "d0723": { "j": "动土.破土.安葬.治病", "y": "开市.纳财.祭祀.塑绘.安机械" }, "d0724": { "j": "开市.斋醮.安床.出行.经络", "y": "移徙.入宅.治病.会亲友.祭祀" }, "d0725": { "j": "", "y": "塑绘.出行.冠笄.嫁娶.进人口" }, "d0726": { "j": "余事勿取", "y": "祭祀.冠笄.嫁娶.捕捉.结网" }, "d0727": { "j": "诸事不宜", "y": "沐浴.扫舍.余事勿取" }, "d0728": { "j": "嫁娶.移徙.入宅", "y": "纳采.祭祀.祈福.解除.动土" }, "d0729": { "j": "诸事不宜", "y": "祭祀.破屋.坏垣.余事勿取" }, "d0730": { "j": "祭祀.祈福", "y": "嫁娶.纳采.开市.出行.动土" }, "d0731": { "j": "赴任", "y": "嫁娶.纳采.开市.出行.动土" }, "d0801": { "j": "开市.破土", "y": "祭祀.作灶.纳财.捕捉" }, "d0802": { "j": "造庙.安葬", "y": "嫁娶.开市.立券.祭祀.祈福" }, "d0803": { "j": "诸事不宜", "y": "补垣.塞穴.结网.入殓.除服" }, "d0804": { "j": "动土.安葬", "y": "嫁娶.纳采.出行.祭祀.祈福" }, "d0805": { "j": "开市.入宅", "y": "嫁娶.祭祀.祈福.斋醮.治病" }, "d0806": { "j": "祈福.动土.破土", "y": "嫁娶.出行.开市.安床.入殓" }, "d0807": { "j": "开市.入宅.动土.破土.安葬", "y": "沐浴.理髮.会亲友.塑绘.开光" }, "d0808": { "j": "嫁娶.栽种.祈福.造桥.安葬", "y": "祭祀.理髮.作灶.沐浴.修饰垣墙" }, "d0809": { "j": "开市.立券.置产.作灶.造桥", "y": "嫁娶.纳采.订盟.祭祀.祈福" }, "d0810": { "j": "开市.交易.入宅.嫁娶", "y": "祭祀.普渡.捕捉.解除.结网" }, "d0811": { "j": "斋醮.开市", "y": "沐浴.破屋.坏垣.余事勿取" }, "d0812": { "j": "动土.破土.嫁娶.掘井.安床", "y": "订盟.纳采.祭祀.祈福.安香" }, "d0813": { "j": "纳采.订盟.经络.行丧.安葬", "y": "嫁娶.祭祀.祈福.斋醮.普渡" }, "d0814": { "j": "掘井.出行.破土.行丧.安葬", "y": "嫁娶.订盟.纳采.作灶.冠笄" }, "d0815": { "j": "出火.入宅.盖屋.安门.安葬", "y": "嫁娶.订盟.纳采.祭祀.斋醮" }, "d0816": { "j": "动土.破土.掘井.开光.上樑", "y": "嫁娶.普渡.祭祀.祈福.补垣" }, "d0817": { "j": "开市.动土.破土.安床.开仓", "y": "嫁娶.冠笄.祭祀.沐浴.普渡" }, "d0818": { "j": "嫁娶.出行.入宅.开市.安门", "y": "祭祀.沐浴.理髮.整手足甲.冠笄" }, "d0819": { "j": "诸事不宜", "y": "祭祀.解除.余事勿取" }, "d0820": { "j": "嫁娶.安门.动土.安葬", "y": "出行.沐浴.订盟.纳采.裁衣" }, "d0821": { "j": "开市.立券.纳财.作灶", "y": "纳采.订盟.嫁娶.祭祀.祈福" }, "d0822": { "j": "嫁娶.纳采.订盟.开市.入宅", "y": "祭祀.捕捉.畋猎.纳畜.牧养" }, "d0823": { "j": "行丧.安葬", "y": "破屋.坏垣.治病.余事勿取" }, "d0824": { "j": "动土.破土.订盟.安床.开池", "y": "祈福.斋醮.出行.冠笄.嫁娶" }, "d0825": { "j": "", "y": "祈福.求嗣.解除.订盟.纳采" }, "d0826": { "j": "", "y": "塑绘.开光.解除.订盟.纳采" }, "d0827": { "j": "", "y": "祈福.出行.订盟.纳采.嫁娶" }, "d0828": { "j": "动土.破土", "y": "嫁娶.祭祀.祈福.斋醮.作灶" }, "d0829": { "j": "作灶.动土.破土", "y": "嫁娶.出行.纳畜.祭祀.入殓" }, "d0830": { "j": "嫁娶.开市", "y": "订盟.纳采.祭祀.祈福.修造" }, "d0831": { "j": "开市.安葬", "y": "订盟.纳采.出行.会亲友.修造" }, "d0901": { "j": "嫁娶.祈福.余事勿取", "y": "沐浴" }, "d0902": { "j": "开市.安葬", "y": "嫁娶.祭祀.祈福.斋醮.动土" }, "d0903": { "j": "嫁娶.入宅", "y": "捕捉.结网.入殓.破土.安葬" }, "d0904": { "j": "诸事不宜", "y": "沐浴.治病.破屋.坏垣.余事勿取" }, "d0905": { "j": "动土.破土", "y": "嫁娶.订盟.纳采.出行.开市" }, "d0906": { "j": "开光.针灸", "y": "嫁娶.订盟.纳采.祭祀.祈福" }, "d0907": { "j": "安葬.纳畜.出行.行丧.伐木", "y": "嫁娶.纳采.订盟.祭祀.祈福" }, "d0908": { "j": "嫁娶.开市.盖屋.作梁.合寿木", "y": "祭祀.冠笄.捕捉.余事勿取" }, "d0909": { "j": "开市.祈福.动土.破土.入殓", "y": "祭祀.解除.结网.畋猎.取渔" }, "d0910": { "j": "嫁娶.开市.祭祀.祈福.斋醮", "y": "冠笄.沐浴.出行.修造.动土" }, "d0911": { "j": "嫁娶.入宅.修造.动土.会亲友", "y": "祭祀.出行" }, "d0912": { "j": "针灸.伐木.作梁.造庙.行丧", "y": "嫁娶.订盟.纳采.祭祀.祈福" }, "d0913": { "j": "嫁娶.安葬.动土.造桥", "y": "出行.开市.交易.立券.安机械" }, "d0914": { "j": "斋醮.嫁娶.移徙.出行.上樑", "y": "祭祀.沐浴.修饰垣墙.平治道涂.余事勿取" }, "d0915": { "j": "纳采.订盟.架马.词讼.开渠", "y": "嫁娶.造车器.安机械.祭祀.祈福" }, "d0916": { "j": "祭祀.嫁娶.安床.开市.入宅", "y": "沐浴.捕捉.入殓.除服.成服" }, "d0917": { "j": "探病.余事勿取", "y": "余事勿取" }, "d0918": { "j": "嫁娶.造庙.造桥.造船.作灶", "y": "订盟.纳采.祭祀.祈福.安香" }, "d0919": { "j": "行丧.安葬.合寿木", "y": "开光.求嗣.雕刻.嫁娶.订盟" }, "d0920": { "j": "开光.动土.破土.开市.修造", "y": "祭祀.嫁娶.捕捉" }, "d0921": { "j": "嫁娶.开市.动土.掘井.开池", "y": "祭祀.普渡.解除.会亲友.捕捉" }, "d0922": { "j": "祭祀.祈福.开光.开市.安床", "y": "出行.解除.冠笄.嫁娶.伐木" }, "d0923": { "j": "动土.作灶.行丧.安葬.修坟", "y": "祭祀.祈福.求嗣.出行.沐浴" }, "d0924": { "j": "造庙.安门.行丧.安葬", "y": "出行.解除.纳采.冠笄.雕刻" }, "d0925": { "j": "", "y": "开光.塑绘.出行.解除.冠笄" }, "d0926": { "j": "嫁娶.入宅.上樑.安门", "y": "祭祀.祈福.修饰垣墙.平治道涂.入殓" }, "d0927": { "j": "入宅.伐木", "y": "祭祀.会亲友.纳采.嫁娶.开光" }, "d0928": { "j": "作灶.祭祀.入宅.嫁娶", "y": "祭祀.冠笄.会亲友.拆卸.起基" }, "d0929": { "j": "移徙.入宅.出行.栽种", "y": "祭祀.沐浴.破屋.坏垣.余事勿取" }, "d0930": { "j": "造桥.冠笄.盖屋.掘井", "y": "祭祀.塑绘.开光.出行.解除" }, "d1001": { "j": "定磉.安葬", "y": "祭祀.会亲友.进人口.动土.上樑" }, "d1002": { "j": "移徙.入宅.作灶", "y": "祭祀.裁衣.冠笄.嫁娶.纳婿" }, "d1003": { "j": "入殓.安葬.开市.交易", "y": "诸事不宜" }, "d1004": { "j": "安床.开光.开市.交易", "y": "祭祀.裁衣.冠笄.嫁娶.安机械" }, "d1005": { "j": "动土.冠笄.移徙.入宅.开市", "y": "祭祀.出行.成服.除服.沐浴" }, "d1006": { "j": "诸事不宜", "y": "祭祀.沐浴.赴任.出行.余事勿取" }, "d1007": { "j": "诸事不宜", "y": "诸事不宜" }, "d1008": { "j": "入宅.上樑.斋醮.出火.谢土", "y": "纳采.订盟.开市.交易.立券" }, "d1009": { "j": "嫁娶.开市", "y": "祭祀.平治道涂.余事勿取" }, "d1010": { "j": "开市.交易.祭祀.入宅.安葬", "y": "捕捉.畋猎.余事勿取" }, "d1011": { "j": "开市.破土.掘井.合寿木", "y": "嫁娶.纳采.订盟.祭祀.祈福" }, "d1012": { "j": "开市.嫁娶", "y": "祭祀.沐浴.解除.破屋.坏垣" }, "d1013": { "j": "嫁娶.开市.入宅.祈福.安葬", "y": "订盟.纳采.会亲友.交易.立券" }, "d1014": { "j": "上樑.开光.盖屋.架马.合寿木", "y": "造车器.嫁娶.订盟.纳采.会亲友" }, "d1015": { "j": "动土.破土.开市.安葬", "y": "祭祀.作灶.纳财.捕捉.畋猎" }, "d1016": { "j": "开市.开仓.出货财.安床.安门", "y": "嫁娶.订盟.纳采.祭祀.祈福" }, "d1017": { "j": "开光.嫁娶.会亲友.栽种.针灸", "y": "冠笄.祭祀.沐浴.作灶.理髮" }, "d1018": { "j": "", "y": "祭祀.祈福.求嗣.开光.解除" }, "d1019": { "j": "嫁娶.动土.破土.修坟", "y": "出行.造车器.造畜稠.解除.冠笄" }, "d1020": { "j": "移徙.入宅.出行.祈福.嫁娶", "y": "沐浴.理髮.冠笄.安床.开市" }, "d1021": { "j": "嫁娶.开市.安床.掘井", "y": "祭祀.造畜稠.修饰垣墙.平治道涂.余事勿取" }, "d1022": { "j": "嫁娶.祭祀.入宅.盖屋.移徙", "y": "捕捉.结网.入殓.除服.成服" }, "d1023": { "j": "开光.嫁娶.掘井.伐木.作梁", "y": "祭祀.祈福.求嗣.斋醮.造庙" }, "d1024": { "j": "诸事不宜", "y": "破屋.坏垣.余事勿取" }, "d1025": { "j": "出行.祈福.安葬.作灶", "y": "会亲友.嫁娶.订盟.纳采.纳婿" }, "d1026": { "j": "开仓.冠笄.伐木.作梁", "y": "祭祀.塑绘.开光.祈福.斋醮" }, "d1027": { "j": "栽种.动土.安葬.开市", "y": "祭祀.作灶.入殓.除服.成服" }, "d1028": { "j": "作灶.入殓.安葬.安床", "y": "祭祀.祈福.斋醮.沐浴.竖柱" }, "d1029": { "j": "动土.上樑", "y": "嫁娶.祭祀.安机械.入殓.破土" }, "d1030": { "j": "行丧.安葬", "y": "作灶.造畜稠" }, "d1031": { "j": "嫁娶.入宅", "y": "沐浴.理髮.入学.习艺.进人口" }, "d1101": { "j": "开市.动土.破土", "y": "开光.针灸.会亲友.启钻.安葬" }, "d1102": { "j": "余事勿取", "y": "祭祀" }, "d1103": { "j": "移徙.入宅", "y": "入殓.除服.成服.移柩.破土" }, "d1104": { "j": "开市.赴任", "y": "嫁娶.订盟.纳采.出行.祭祀" }, "d1105": { "j": "余事勿取", "y": "祭祀.解除.破屋.坏垣.余事勿取" }, "d1106": { "j": "祈福.安葬", "y": "订盟.纳采.会亲友.安机械.纳财" }, "d1107": { "j": "祭祀.嫁娶.入宅.修造.动土", "y": "祭祀.扫舍.破土.安葬.除服" }, "d1108": { "j": "嫁娶.移徙.出火.开市.入宅", "y": "订盟.纳采.会亲友.祭祀.祈福" }, "d1109": { "j": "嫁娶.纳采.订盟.安床.动土", "y": "祭祀.沐浴.捕捉.畋猎.结网" }, "d1110": { "j": "移徙.入宅.出火.入殓.安葬", "y": "开市.纳财.出行.祭祀.祈福" }, "d1111": { "j": "嫁娶.入宅.安床.掘井.开光", "y": "祭祀.理髮.置产.塞穴.除服" }, "d1112": { "j": "开市.动土.破土.行丧.安葬", "y": "祭祀.沐浴.出行.余事勿取" }, "d1113": { "j": "开市.纳采.造庙.安床.开渠", "y": "嫁娶.造车器.出行.会亲友.移徙" }, "d1114": { "j": "嫁娶.开市.祈福.斋醮.安葬", "y": "塑绘.会亲友.安机械.塞穴.结网" }, "d1115": { "j": "开仓.盖屋.造桥.祭祀", "y": "纳采.移徙.纳财.开市.交易" }, "d1116": { "j": "嫁娶.安葬.掘井.置产.造船", "y": "订盟.纳采.纳财.开市.立券" }, "d1117": { "j": "开市.造庙.动土.破土", "y": "嫁娶.订盟.纳采.祭祀.祈福" }, "d1118": { "j": "嫁娶.安葬", "y": "破屋.坏垣.祭祀.余事勿取" }, "d1119": { "j": "盖屋.造船.动土.破土", "y": "嫁娶.纳采.订盟.祭祀.冠笄" }, "d1120": { "j": "嫁娶.开市.入宅.出火.移徙", "y": "纳采.订盟.祭祀.祈福.求嗣" }, "d1121": { "j": "安床.安门.破土.修坟.安葬", "y": "捕捉.畋猎.会亲友.解除.入殓" }, "d1122": { "j": "移徙.入宅.安门.作梁.安葬", "y": "祭祀.祈福.求嗣.斋醮.沐浴" }, "d1123": { "j": "开光.掘井.安葬.谢土.修坟", "y": "嫁娶.冠笄.安床.纳采.会亲友" }, "d1124": { "j": "诸事不宜", "y": "祭祀.沐浴.余事勿取" }, "d1125": { "j": "入宅.作灶.安床.开仓", "y": "祭祀.会亲友.嫁娶.沐浴.修造" }, "d1126": { "j": "嫁娶.入宅.安门.移徙", "y": "理髮.会亲友.补垣.塞穴.结网" }, "d1127": { "j": "作灶.治病.伐木.作梁", "y": "祭祀.祈福.订盟.纳采.裁衣" }, "d1128": { "j": "作灶.治病", "y": "祭祀.祈福.订盟.纳采.裁衣" }, "d1129": { "j": "开市.交易.破土.作灶", "y": "祭祀.塑绘.开光.订盟.纳采" }, "d1130": { "j": "诸事不宜", "y": "祭祀.解除.破屋.坏垣.余事勿取" }, "d1201": { "j": "盖屋.治病", "y": "祭祀.解除.祈福.开光.塑绘" }, "d1202": { "j": "嫁娶.入宅.治病.赴任", "y": "祭祀.祈福.订盟.纳采.裁衣" }, "d1203": { "j": "诸事不宜", "y": "沐浴.扫舍.余事勿取" }, "d1204": { "j": "诸事不宜", "y": "诸事不宜" }, "d1205": { "j": "入宅.作灶", "y": "祈福.斋醮.出行.订盟.纳采" }, "d1206": { "j": "嫁娶.动土.安葬.作灶", "y": "祭祀.沐浴.出行.冠笄.进人口" }, "d1207": { "j": "入宅.移徙.分居.作灶.出火", "y": "造畜稠.教牛马" }, "d1208": { "j": "破土.安葬.行丧.开生坟", "y": "订盟.纳采.造车器.祭祀.祈福" }, "d1209": { "j": "祈福.出火.嫁娶.入宅.开市", "y": "订盟.纳采.会亲友.安机械.开光" }, "d1210": { "j": "移徙.入宅.嫁娶.掘井.安葬", "y": "祭祀.平治道涂.修坟.除服.成服" }, "d1211": { "j": "开市.纳采.订盟.作灶.造庙", "y": "嫁娶.冠笄.祭祀.祈福.求嗣" }, "d1212": { "j": "出行.掘井.破土.行丧.安葬", "y": "嫁娶.订盟.纳采.祭祀.祈福" }, "d1213": { "j": "嫁娶.移徙.入宅.探病.出行", "y": "祭祀.沐浴.破屋.坏垣.余事勿取" }, "d1214": { "j": "安门.动土.破土.行丧.安葬", "y": "冠笄.纳财.掘井.开池.出火" }, "d1215": { "j": "嫁娶.动土.安床.造桥.掘井", "y": "纳采.订盟.移徙.入宅.出行" }, "d1216": { "j": "开市.斋醮.破土.安葬", "y": "祭祀.沐浴.作灶.纳财.捕捉" }, "d1217": { "j": "余事勿取", "y": "祭祀.结网.入殓.除服.成服" }, "d1218": { "j": "嫁娶.祈福.开光.掘井.安葬", "y": "纳采.订盟.祭祀.沐浴.冠笄" }, "d1219": { "j": "入宅.动土.破土.嫁娶.作灶", "y": "合帐" }, "d1220": { "j": "斋醮.作梁.掘井.行丧.安葬", "y": "纳采.订盟.嫁娶.祭祀.祈福" }, "d1221": { "j": "嫁娶.祈福.出火.移徙.入宅", "y": "纳财.开市.交易.立券.会亲友" }, "d1222": { "j": "入宅.修造.动土.破土.安门", "y": "祭祀.入殓.移柩.余事勿取" }, "d1223": { "j": "掘井.伐木.斋醮.作灶", "y": "塑绘.开光.订盟.纳采.裁衣" }, "d1224": { "j": "出行.安葬.修坟.开市", "y": "祭祀.塑绘.开光.裁衣.冠笄" }, "d1225": { "j": "诸事不宜", "y": "祭祀.求医.破屋.坏垣.余事勿取" }, "d1226": { "j": "开光.栽种.治病.安门.作灶", "y": "祭祀.祈福.斋醮.出行.冠笄" }, "d1227": { "j": "", "y": "塑绘.斋醮.出行.拆卸.解除" }, "d1228": { "j": "开市.破土", "y": "祭祀.沐浴.安床.纳财.畋猎" }, "d1229": { "j": "嫁娶.作灶", "y": "订盟.纳采.祭祀.祈福.修造" }, "d1230": { "j": "入宅.安葬", "y": "出行.沐浴.理髮.补垣.塞穴" }, "d1231": { "j": "入宅.动土.破土.余事勿取", "y": "教牛马.余事勿取" } } ukui-panel-4.0.0.4/plugin-calendar/html/hlnew/hl2009.json0000644000175000017500000027725114560306203021323 0ustar fengfeng{ "d1221": { "y": "教牛马.余事勿取.", "j": "入宅.动土.破土.余事勿取.", "c": "生肖冲马", "s": "煞南", "ch": "建", "zc": "正冲正冲甲午", "ts": "占碓磨房内南" }, "d1121": { "y": "祭祀.解除.祈福.开光.塑绘.斋醮.订盟.纳采.裁衣.冠笄.拆卸.修造.动土.入殓.除服.成服.移柩.启攒.安床.赴任.出行.移徙.竖柱.上梁.伐木.栽种.破土.安葬.纳畜.", "j": "造屋.治病.", "c": "生肖冲鼠", "s": "煞北", "ch": "危", "zc": "正冲正冲甲子", "ts": "占碓磨外正南" }, "d1201": { "y": "开光.解除.拆卸.修造.动土.安床.纳畜.安葬.启攒.入殓.", "j": "嫁娶.开市.出火.栽种.破土.动土.入宅.移徙.安香.分居.掘井.作灶.", "c": "生肖冲狗", "s": "煞南", "ch": "执", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d1202": { "y": "破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲猪", "s": "煞东", "ch": "破", "zc": "正冲正冲乙亥", "ts": "厨灶床外正西" }, "d1203": { "y": "嫁娶.祭祀.开光.出火.出行.拆卸.修造.动土.解除.开市.交易.立券.挂匾.纳财.入宅.移徙.安床.栽种.纳畜.", "j": "探病.安葬.", "c": "生肖冲鼠", "s": "煞北", "ch": "危", "zc": "正冲正冲丙子", "ts": "仓库碓外西北" }, "d1204": { "y": "祭祀.祈福.求嗣.开光.解除.理发.会亲友.栽种.纳畜.牧养.安葬.修坟.立碑.启攒.", "j": "入宅.作灶.词讼.移徙.出行.赴任.", "c": "生肖冲牛", "s": "煞西", "ch": "成", "zc": "正冲正冲丁丑", "ts": "房床厕外西北" }, "d1205": { "y": "祭祀.沐浴.结网.移柩.入殓.除服.成服.", "j": "安床.开市.交易.出货财.安葬.修坟.嫁娶.作灶.", "c": "生肖冲虎", "s": "煞南", "ch": "收", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d1206": { "y": "解除.余事勿取.", "j": "余事勿取.", "c": "生肖冲兔", "s": "煞东", "ch": "开", "zc": "正冲正冲己卯", "ts": "占门炉外西北" }, "d1207": { "y": "祈福.斋醮.纳采.订盟.解除.架马.开柱眼.修造.动土.起基.上梁.归岫.造屋.合脊.掘井.除服.成服.破土.栽种.", "j": "移徙.开市.入宅.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "开", "zc": "正冲正冲庚辰", "ts": "厨灶栖外西北" }, "d1208": { "y": "纳采.订盟.祭祀.沐浴.冠笄.合帐.裁衣.修造.动土.拆卸.移徙.入宅.安门.开仓.筑堤.作厕.栽种.纳畜.补垣.塞穴.", "j": "嫁娶.祈福.开光.掘井.安葬.行丧.", "c": "生肖冲蛇", "s": "煞西", "ch": "闭", "zc": "正冲正冲辛巳", "ts": "仓库床外西北" }, "d1209": { "y": "合帐.裁衣.教牛马.余事勿取.", "j": "入宅.动土.破土.嫁娶.作灶.造船.", "c": "生肖冲马", "s": "煞南", "ch": "建", "zc": "正冲正冲壬午", "ts": "房床碓外正北" }, "d1210": { "y": "纳采.订盟.嫁娶.祭祀.祈福.安香.出火.出行.会亲友.经络.求医.治病.解除.拆卸.起基.修造.动土.定磉.扫舍.栽种.牧养.造畜椆栖.", "j": "斋醮.作梁.掘井.行丧.安葬.", "c": "生肖冲羊", "s": "煞东", "ch": "除", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d1211": { "y": "纳财.开市.交易.立券.会亲友.进人口.经络.祭祀.祈福.安香.出火.求医.治病.修造.动土.拆卸.扫舍.安床.栽种.牧养.开生坟.合寿木.入殓.安葬.启攒.", "j": "嫁娶.祈福.出火.移徙.入宅.", "c": "生肖冲猴", "s": "煞北", "ch": "满", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d1212": { "y": "祭祀.入殓.移柩.余事勿取.", "j": "入宅.修造.动土.破土.安门.上梁.", "c": "生肖冲鸡", "s": "煞西", "ch": "平", "zc": "正冲正冲乙酉", "ts": "厨灶门外正北" }, "d1213": { "y": "塑绘.开光.订盟.纳采.裁衣.冠笄.拆卸.修造.安床.入宅.出火.安葬.谢土.赴任.", "j": "掘井.伐木.斋醮.作灶.", "c": "生肖冲狗", "s": "煞南", "ch": "定", "zc": "正冲正冲丙戌", "ts": "仓库栖外正北" }, "d1214": { "y": "祭祀.塑绘.开光.裁衣.冠笄.嫁娶.纳采.拆卸.修造.动土.竖柱.上梁.安床.移徙.入宅.安香.结网.捕捉.畋猎.伐木.进人口.放水.", "j": "出行.安葬.修坟.开市.", "c": "生肖冲猪", "s": "煞东", "ch": "执", "zc": "正冲正冲丁亥", "ts": "占房床房内北" }, "d1215": { "y": "祭祀.求医.破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鼠", "s": "煞北", "ch": "破", "zc": "正冲正冲戊子", "ts": "占门碓房内北" }, "d1216": { "y": "祭祀.祈福.斋醮.出行.冠笄.安机械.移徙.入宅.安香.安床.除服.成服.移柩.启攒.", "j": "开光.栽种.治病.安门.作灶.", "c": "生肖冲牛", "s": "煞西", "ch": "危", "zc": "正冲正冲己丑", "ts": "碓磨厕房内北" }, "d1217": { "y": "塑绘.斋醮.出行.拆卸.解除.修造.移徙.造船.入殓.除服.成服.移柩.启攒.修坟.立碑.谢土.", "j": "", "c": "生肖冲虎", "s": "煞南", "ch": "成", "zc": "正冲正冲庚寅", "ts": "厨灶炉房内北" }, "d1218": { "y": "祭祀.沐浴.安床.纳财.畋猎.捕捉.", "j": "开市.破土.", "c": "生肖冲兔", "s": "煞东", "ch": "收", "zc": "正冲正冲辛卯", "ts": "仓库门房内北" }, "d1219": { "y": "订盟.纳采.祭祀.祈福.修造.动土.上梁.破土.", "j": "嫁娶.作灶.", "c": "生肖冲龙", "s": "煞北", "ch": "开", "zc": "正冲正冲壬辰", "ts": "房床栖房内南" }, "d1220": { "y": "出行.沐浴.理发.补垣.塞穴.", "j": "入宅.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "闭", "zc": "正冲正冲癸巳", "ts": "占门床房内南" }, "d1222": { "y": "嫁娶.出行.求医.治病.祭祀.祈福.上梁.纳畜.", "j": "开市.安葬.", "c": "生肖冲羊", "s": "煞东", "ch": "除", "zc": "正冲正冲乙未", "ts": "厨灶厕房内南" }, "d1223": { "y": "开市.立券.开光.解除.安机械.上梁.启攒.安葬.", "j": "嫁娶.祈福.", "c": "生肖冲猴", "s": "煞北", "ch": "满", "zc": "正冲正冲丙申", "ts": "仓库炉房内南" }, "d1224": { "y": "平治道涂.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鸡", "s": "煞西", "ch": "平", "zc": "正冲正冲丁酉", "ts": "房床门房内南" }, "d1225": { "y": "求嗣.斋醮.塑绘.订盟.纳采.出火.拆卸.修造.动土.造桥.安机械.栽种.纳畜.牧养.入殓.除服.成服.移柩.破土.安葬.", "j": "开市.嫁娶.", "c": "生肖冲狗", "s": "煞南", "ch": "定", "zc": "正冲正冲戊戌", "ts": "门鸡栖房内东" }, "d1226": { "y": "嫁娶.订盟.纳采.祭祀.祈福.修造.动土.移徙.入宅.", "j": "开市.安葬.", "c": "生肖冲猪", "s": "煞东", "ch": "执", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d1227": { "y": "治病.破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鼠", "s": "煞北", "ch": "破", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d1228": { "y": "祭祀.祈福.求嗣.斋醮.开光.入学.订盟.冠笄.伐木.修造.动土.起基.放水.交易.开池.", "j": "造桥.安门.理发.造庙.栽种.作灶.", "c": "生肖冲牛", "s": "煞西", "ch": "危", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d1229": { "y": "解除.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲虎", "s": "煞南", "ch": "成", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" }, "d1230": { "y": "沐浴.理发.扫舍.", "j": "伐木.纳畜.上梁.入宅.作灶.造畜椆栖.嫁娶.安葬.作梁.造船.安门.", "c": "生肖冲兔", "s": "煞东", "ch": "收", "zc": "正冲正冲癸卯", "ts": "占大门外东北" }, "d1231": { "y": "祭祀.开光.祈福.解除.作梁.动土.安床.掘井.栽种.纳畜.破土.移柩.", "j": "嫁娶.出行.赴任.造屋.入殓.入宅.移徙.出火.进人口.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "开", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d1101": { "y": "祭祀.出行.裁衣.冠笄.会亲友.造畜椆栖.嫁娶.竖柱.上梁.移徙.纳财.纳畜.", "j": "动土.伐木.作梁.行丧.安葬.开生坟.", "c": "生肖冲龙", "s": "煞北", "ch": "建", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d1103": { "y": "开市.交易.立券.纳财.会亲友.开光.理发.入殓.移柩.安葬.启攒.", "j": "嫁娶.作灶.出火.出行.入宅.移徙.安床.祈福.上梁.", "c": "生肖冲马", "s": "煞南", "ch": "满", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d1021": { "y": "沐浴.理发.入学.习艺.进人口.", "j": "嫁娶.入宅.", "c": "生肖冲蛇", "s": "煞西", "ch": "除", "zc": "正冲正冲癸巳", "ts": "占门床房内南" }, "d1102": { "y": "祭祀.祈福.求嗣.开光.出行.解除.移徙.伐木.安床.纳畜.出火.拆卸.", "j": "安葬.修坟.作灶.破土.造庙.动土.嫁娶.纳采.", "c": "生肖冲蛇", "s": "煞西", "ch": "除", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d1104": { "y": "造畜椆栖.平治道涂.余事勿取.", "j": "诸事不宜.", "c": "生肖冲羊", "s": "煞东", "ch": "平", "zc": "正冲正冲丁未", "ts": "房床厕外东北" }, "d1105": { "y": "入殓.破土.安葬.启攒.除服.成服.余事勿取.", "j": "余事勿取.", "c": "生肖冲猴", "s": "煞北", "ch": "定", "zc": "正冲正冲戊申", "ts": "占门炉外东北" }, "d1106": { "y": "祭祀.入殓.移柩.开生坟.破土.启攒.安葬.除服.成服.余事勿取.", "j": "余事勿取.", "c": "生肖冲鸡", "s": "煞西", "ch": "执", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d1107": { "y": "嫁娶.订盟.纳采.祭祀.祈福.塑绘.开光.移徙.安床.伐木.作梁.捕捉.畋猎.结网.求医.治病.解除.安葬.除服.成服.移柩.入殓.立碑.谢土.", "j": "开市.造庙.动土.破土.", "c": "生肖冲狗", "s": "煞南", "ch": "执", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d1108": { "y": "破屋.坏垣.祭祀.余事勿取.", "j": "嫁娶.安葬.", "c": "生肖冲猪", "s": "煞东", "ch": "破", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d1109": { "y": "嫁娶.纳采.订盟.祭祀.冠笄.裁衣.伐木.作梁.架马.定磉.开柱眼.作灶.移徙.安床.畋猎.结网.开池.作厕.除服.成服.启攒.入殓.移柩.安葬.", "j": "造屋.造船.动土.破土.", "c": "生肖冲鼠", "s": "煞北", "ch": "危", "zc": "正冲正冲壬子", "ts": "房床碓外正东" }, "d1110": { "y": "纳采.订盟.祭祀.祈福.求嗣.斋醮.开光.会亲友.解除.入学.纳财.交易.立券.经络.起基.动土.定磉.开池.栽种.纳畜.牧养.破土.入殓.立碑.安葬.", "j": "嫁娶.开市.入宅.出火.移徙.", "c": "生肖冲牛", "s": "煞西", "ch": "成", "zc": "正冲正冲癸丑", "ts": "占门厕外正东" }, "d1111": { "y": "捕捉.畋猎.会亲友.解除.入殓.除服.成服.移柩.余事勿取.", "j": "安床.安门.破土.修坟.安葬.", "c": "生肖冲虎", "s": "煞南", "ch": "收", "zc": "正冲正冲甲寅", "ts": "碓磨炉外东南" }, "d1112": { "y": "祭祀.祈福.求嗣.斋醮.沐浴.冠笄.出行.理发.拆卸.解除.起基.动土.定磉.安碓硙.开池.掘井.扫舍.除服.成服.移柩.启攒.立碑.谢土.", "j": "移徙.入宅.安门.作梁.安葬.", "c": "生肖冲兔", "s": "煞东", "ch": "开", "zc": "正冲正冲乙卯", "ts": "厨灶门外东南" }, "d1113": { "y": "嫁娶.冠笄.安床.纳采.会亲友.塞穴.捕捉.置产.造畜椆栖.", "j": "开光.掘井.安葬.谢土.修坟.", "c": "生肖冲龙", "s": "煞北", "ch": "闭", "zc": "正冲正冲丙辰", "ts": "仓库栖外东南" }, "d1114": { "y": "祭祀.沐浴.余事勿取.", "j": "诸事不宜.", "c": "生肖冲蛇", "s": "煞西", "ch": "建", "zc": "正冲正冲丁巳", "ts": "占房床外东南" }, "d1115": { "y": "祭祀.会亲友.嫁娶.沐浴.修造.动土.祈福.开光.塑绘.出行.订盟.纳采.裁衣.入殓.除服.成服.移柩.启攒.赴任.竖柱.上梁.纳财.扫舍.栽种.纳畜.伐木.", "j": "入宅.作灶.安床.开仓.", "c": "生肖冲马", "s": "煞南", "ch": "除", "zc": "正冲正冲戊午", "ts": "占门碓外东南" }, "d1116": { "y": "理发.会亲友.补垣.塞穴.结网.", "j": "嫁娶.入宅.安门.移徙.", "c": "生肖冲羊", "s": "煞东", "ch": "满", "zc": "正冲正冲己未", "ts": "碓磨厕外东南" }, "d1117": { "y": "祭祀.祈福.订盟.纳采.裁衣.拆卸.修造.动土.起基.安床.移徙.入宅.安香.除服.成服.入殓.移柩.安葬.谢土.赴任.会亲友.进人口.出行.竖柱.上梁.经络.开市.交易.立券.纳财.开仓.", "j": "作灶.治病.伐木.作梁.", "c": "生肖冲猴", "s": "煞北", "ch": "平", "zc": "正冲正冲庚申", "ts": "厨灶炉外正南" }, "d1118": { "y": "祭祀.祈福.订盟.纳采.裁衣.拆卸.修造.动土.起基.安床.移徙.入宅.安香.入殓.移柩.安葬.谢土.赴任.进人口.会亲友.", "j": "作灶.治病.", "c": "生肖冲鸡", "s": "煞西", "ch": "定", "zc": "正冲正冲辛酉", "ts": "仓库门外正南" }, "d1119": { "y": "祭祀.塑绘.开光.订盟.纳采.嫁娶.安床.进人口.入殓.除服.成服.移柩.启攒.安葬.立碑.", "j": "开市.交易.破土.作灶.", "c": "生肖冲狗", "s": "煞南", "ch": "执", "zc": "正冲正冲壬戌", "ts": "房床栖外正南" }, "d1120": { "y": "祭祀.解除.破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲猪", "s": "煞东", "ch": "破", "zc": "正冲正冲癸亥", "ts": "占门床外正南" }, "d1122": { "y": "祭祀.祈福.订盟.纳采.裁衣.合帐.冠笄.安机械.安床.造畜椆栖.入殓.移柩.启攒.安葬.谢土.除服.成服.会亲友.竖柱.上梁.经络.开市.交易.立券.纳财.纳畜.筑堤.", "j": "嫁娶.入宅.治病.赴任.", "c": "生肖冲牛", "s": "煞西", "ch": "成", "zc": "正冲正冲乙丑", "ts": "厨灶厕外西南" }, "d1123": { "y": "沐浴.扫舍.余事勿取.", "j": "诸事不宜.", "c": "生肖冲虎", "s": "煞南", "ch": "收", "zc": "正冲正冲丙寅", "ts": "仓库炉外西南" }, "d1124": { "y": "诸事不宜.", "j": "诸事不宜.", "c": "生肖冲兔", "s": "煞东", "ch": "开", "zc": "正冲正冲丁卯", "ts": "房床门外西南" }, "d1125": { "y": "祈福.斋醮.出行.订盟.纳采.入殓.移柩.破土.安葬.立碑.结网.", "j": "入宅.作灶.", "c": "生肖冲龙", "s": "煞北", "ch": "闭", "zc": "正冲正冲戊辰", "ts": "门鸡栖外西南" }, "d1126": { "y": "祭祀.沐浴.出行.冠笄.进人口.余事勿取.", "j": "嫁娶.动土.安葬.作灶.", "c": "生肖冲蛇", "s": "煞西", "ch": "建", "zc": "正冲正冲己巳", "ts": "碓磨床外西南" }, "d1127": { "y": "祭祀.祈福.斋醮.塑绘.开光.订盟.纳采.裁衣.冠笄.嫁娶.拆卸.入宅.安香.入殓.移柩.理发.安葬.修坟.谢土.赴任.移徙.沐浴.治病.破土.启攒.整手足甲.入学.作梁.", "j": "开市.", "c": "生肖冲马", "s": "煞南", "ch": "除", "zc": "正冲正冲庚午", "ts": "厨灶碓外西南" }, "d1128": { "y": "诸事不宜.", "j": "诸事不宜.", "c": "生肖冲羊", "s": "煞东", "ch": "满", "zc": "正冲正冲辛未", "ts": "仓库厕外西南" }, "d1129": { "y": "开市.交易.立券.挂匾.纳财.开光.出行.入宅.移徙.安床.纳畜.入殓.移柩.安葬.", "j": "栽种.破土.置产.祭祀.嫁娶.动土.作灶.祈福.", "c": "生肖冲猴", "s": "煞北", "ch": "平", "zc": "正冲正冲壬申", "ts": "房床厕外正南" }, "d1130": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出行.解除.出火.出行.拆卸.进人口.入宅.移徙.安床.栽种.动土.修造.纳畜.入殓.安葬.立碑.除服.成服.", "j": "", "c": "生肖冲鸡", "s": "煞西", "ch": "定", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d1131": { "y": "开光.解除.拆卸.修造.动土.安床.纳畜.安葬.启攒.入殓.", "j": "嫁娶.开市.出火.栽种.破土.动土.入宅.移徙.安香.分居.掘井.作灶.", "c": "生肖冲狗", "s": "煞南", "ch": "执", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d1001": { "y": "破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鸡", "s": "煞西", "ch": "破", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d0921": { "y": "祭祀.赴任.动土.上梁.开光.塑绘.冠笄.拆卸.起基.安床.开市.立券.赴任.经络.", "j": "定磉.安葬.", "c": "生肖冲猪", "s": "煞东", "ch": "成", "zc": "正冲正冲癸亥", "ts": "占门床外正南" }, "d1002": { "y": "嫁娶.祈福.求嗣.出行.出火.拆卸.修造.动土.上梁.开光.进人口.开市.交易.立券.挂匾.安床.入宅.移徙.栽种.伐木.入殓.破土.除服.成服.", "j": "", "c": "生肖冲狗", "s": "煞南", "ch": "危", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d1003": { "y": "开市.交易.立券.挂匾.祭祀.开光.进人口.入宅.安床.出火.拆卸.修造.动土.栽种.", "j": "嫁娶.立碑.出行.伐木.安葬.行丧.移徙.纳畜.", "c": "生肖冲猪", "s": "煞东", "ch": "成", "zc": "正冲正冲乙亥", "ts": "厨灶床外正西" }, "d1004": { "y": "祭祀.理发.会亲友.进人口.嫁娶.针灸.入殓.移柩.", "j": "探病.开渠.安葬.伐木.作灶.入宅.", "c": "生肖冲鼠", "s": "煞北", "ch": "收", "zc": "正冲正冲丙子", "ts": "仓库碓外西北" }, "d1005": { "y": "祭祀.立碑.修坟.启攒.除服.成服.余事勿取.", "j": "余事勿取.", "c": "生肖冲牛", "s": "煞西", "ch": "开", "zc": "正冲正冲丁丑", "ts": "房床厕外西北" }, "d1006": { "y": "嫁娶.出行.伐木.拆卸.修造.动土.移徙.安葬.破土.修坟.立碑.", "j": "掘井.祈福.安床.开市.入宅.挂匾.开光.", "c": "生肖冲虎", "s": "煞南", "ch": "闭", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d1007": { "y": "祭祀.出行.扫舍.余事勿取.", "j": "诸事不宜.", "c": "生肖冲兔", "s": "煞东", "ch": "建", "zc": "正冲正冲己卯", "ts": "占门炉外西北" }, "d1008": { "y": "纳采.订盟.嫁娶.祭祀.祈福.求嗣.置产.求医.治病.开市.交易.立券.会亲友.移徙.竖柱.上梁.造屋.合脊.安门.放水.捕捉.纳畜.", "j": "造庙.造船.动土.破土.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "建", "zc": "正冲正冲庚辰", "ts": "厨灶栖外西北" }, "d1009": { "y": "出行.造车器.造畜椆栖.解除.冠笄.裁衣.作梁.雕刻.会亲友.移徙.入宅.安机械.造畜椆栖.开市.扫舍.", "j": "嫁娶.动土.破土.修坟.", "c": "生肖冲蛇", "s": "煞西", "ch": "除", "zc": "正冲正冲辛巳", "ts": "仓库床外西北" }, "d1010": { "y": "沐浴.理发.冠笄.安床.开市.立券.会亲友.交易.纳财.结网.教牛马.", "j": "移徙.入宅.出行.祈福.嫁娶.", "c": "生肖冲马", "s": "煞南", "ch": "满", "zc": "正冲正冲壬午", "ts": "房床碓外正北" }, "d1011": { "y": "祭祀.造畜椆栖.修饰垣墙.平治道涂.余事勿取.", "j": "嫁娶.开市.安床.掘井.", "c": "生肖冲羊", "s": "煞东", "ch": "平", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d1012": { "y": "捕捉.结网.入殓.除服.成服.移柩.破土.安葬.启攒.立碑.", "j": "嫁娶.祭祀.入宅.造屋.移徙.", "c": "生肖冲猴", "s": "煞北", "ch": "定", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d1013": { "y": "祭祀.祈福.求嗣.斋醮.造庙.出火.安机械.会亲友.开市.交易.立券.纳财.习艺.经络.求医.治病.开池.作厕.畋猎.结网.栽种.牧养.安葬.破土.启攒.", "j": "开光.嫁娶.掘井.伐木.作梁.", "c": "生肖冲鸡", "s": "煞西", "ch": "执", "zc": "正冲正冲乙酉", "ts": "厨灶门外正北" }, "d1014": { "y": "破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲狗", "s": "煞南", "ch": "破", "zc": "正冲正冲丙戌", "ts": "仓库栖外正北" }, "d1015": { "y": "会亲友.嫁娶.订盟.纳采.纳婿.拆卸.修造.动土.起基.竖柱.上梁.安床.会亲友.纳财.", "j": "出行.祈福.安葬.作灶.", "c": "生肖冲猪", "s": "煞东", "ch": "危", "zc": "正冲正冲丁亥", "ts": "占房床房内北" }, "d1016": { "y": "祭祀.塑绘.开光.祈福.斋醮.出行.订盟.纳采.裁衣.嫁娶.拆卸.修造.安床.入宅.安香.入殓.启攒.安葬.谢土.赴任.会亲友.进人口.出行.移徙.上梁.经络.开市.交易.立券.纳财.", "j": "开仓.冠笄.伐木.作梁.", "c": "生肖冲鼠", "s": "煞北", "ch": "成", "zc": "正冲正冲戊子", "ts": "占门碓房内北" }, "d1017": { "y": "祭祀.作灶.入殓.除服.成服.畋猎.", "j": "栽种.动土.安葬.开市.", "c": "生肖冲牛", "s": "煞西", "ch": "收", "zc": "正冲正冲己丑", "ts": "碓磨厕房内北" }, "d1018": { "y": "祭祀.祈福.斋醮.沐浴.竖柱.订盟.纳采.嫁娶.拆卸.入宅.移柩.启攒.谢土.赴任.出火.纳畜.", "j": "作灶.入殓.安葬.安床.", "c": "生肖冲虎", "s": "煞南", "ch": "开", "zc": "正冲正冲庚寅", "ts": "厨灶炉房内北" }, "d1019": { "y": "嫁娶.祭祀.安机械.入殓.破土.安葬.", "j": "动土.上梁.", "c": "生肖冲兔", "s": "煞东", "ch": "闭", "zc": "正冲正冲辛卯", "ts": "仓库门房内北" }, "d1020": { "y": "作灶.造畜椆栖.", "j": "行丧.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "建", "zc": "正冲正冲壬辰", "ts": "房床栖房内南" }, "d1022": { "y": "开光.针灸.会亲友.启攒.安葬.", "j": "开市.动土.破土.", "c": "生肖冲马", "s": "煞南", "ch": "满", "zc": "正冲正冲甲午", "ts": "占碓磨房内南" }, "d1023": { "y": "祭祀.结网.造畜椆栖.余事勿取.", "j": "余事勿取.", "c": "生肖冲羊", "s": "煞东", "ch": "平", "zc": "正冲正冲乙未", "ts": "厨灶厕房内南" }, "d1024": { "y": "入殓.除服.成服.移柩.破土.启攒.安葬.", "j": "移徙.入宅.", "c": "生肖冲猴", "s": "煞北", "ch": "定", "zc": "正冲正冲丙申", "ts": "仓库炉房内南" }, "d1025": { "y": "嫁娶.订盟.纳采.出行.祭祀.祈福.动土.移徙.入宅.破土.安葬.", "j": "开市.赴任.", "c": "生肖冲鸡", "s": "煞西", "ch": "执", "zc": "正冲正冲丁酉", "ts": "房床门房内南" }, "d1026": { "y": "祭祀.解除.破屋.坏垣.余事勿取.", "j": "余事勿取.", "c": "生肖冲狗", "s": "煞南", "ch": "破", "zc": "正冲正冲戊戌", "ts": "门鸡栖房内东" }, "d1027": { "y": "订盟.纳采.会亲友.安机械.纳财.牧养.", "j": "祈福.安葬.", "c": "生肖冲猪", "s": "煞东", "ch": "危", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d1028": { "y": "嫁娶.订盟.纳采.出行.开市.祭祀.祈福.动土.移徙.入宅.破土.安葬.", "j": "斋醮.安门.", "c": "生肖冲鼠", "s": "煞北", "ch": "成", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d1029": { "y": "祭祀.塞穴.余事勿取.", "j": "诸事不宜.", "c": "生肖冲牛", "s": "煞西", "ch": "收", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d1030": { "y": "祭祀.祈福.求嗣.开光.开市.出行.解除.动土.起基.置产.栽种.", "j": "嫁娶.作灶.修坟.安门.入宅.立碑.安葬.安床.", "c": "生肖冲虎", "s": "煞南", "ch": "开", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" }, "d1031": { "y": "祭祀.解除.裁衣.理发.安床.作灶.造畜椆栖.放水.筑堤.补垣.塞穴.整手足甲.扫舍.", "j": "嫁娶.开光.会亲友.掘井.安门.栽种.", "c": "生肖冲兔", "s": "煞东", "ch": "闭", "zc": "正冲正冲癸卯", "ts": "占大门外东北" }, "d0901": { "y": "祭祀.解除.沐浴.理发.整手足甲.入殓.移柩.破土.安葬.扫舍.", "j": "嫁娶.会亲友.进人口.出行.入宅.移徙.赴任.作灶.", "c": "生肖冲兔", "s": "煞东", "ch": "除", "zc": "正冲正冲癸卯", "ts": "占大门外东北" }, "d0821": { "y": "订盟.纳采.出行.会亲友.修造.上梁.移徙.入宅.", "j": "开市.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "满", "zc": "正冲正冲壬辰", "ts": "房床栖房内南" }, "d0902": { "y": "塑绘.开光.进人口.纳畜.补垣.塞穴.栽种.牧养.", "j": "嫁娶.纳财.祈福.安葬.修造.开市.交易.立券.动土.上梁.", "c": "生肖冲龙", "s": "煞北", "ch": "满", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d0903": { "y": "祭祀.作灶.沐浴.修饰垣墙.平治道涂.余事勿取.", "j": "诸事不宜.", "c": "生肖冲蛇", "s": "煞西", "ch": "平", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d0904": { "y": "祭祀.求嗣.开光.出行.伐木.作梁.出火.解除.拆卸.进人口.修造.动土.起基.安床.栽种.纳畜.入殓.破土.安葬.除服.成服.", "j": "嫁娶.移徙.", "c": "生肖冲马", "s": "煞南", "ch": "定", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d0905": { "y": "祭祀.求医.捕捉.栽种.塞穴.入殓.破土.安葬.移柩.余事勿取.", "j": "诸事不宜.", "c": "生肖冲羊", "s": "煞东", "ch": "执", "zc": "正冲正冲丁未", "ts": "房床厕外东北" }, "d0906": { "y": "破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲猴", "s": "煞北", "ch": "破", "zc": "正冲正冲戊申", "ts": "占门炉外东北" }, "d0907": { "y": "余事勿取.", "j": "探病.余事勿取.", "c": "生肖冲鸡", "s": "煞西", "ch": "破", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d0908": { "y": "订盟.纳采.祭祀.祈福.安香.出火.修造.动土.上梁.安门.起基.竖柱.上梁.定磉.开池.移徙.入宅.立券.破土.", "j": "嫁娶.造庙.造桥.造船.作灶.安葬.", "c": "生肖冲狗", "s": "煞南", "ch": "危", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d0909": { "y": "开光.求嗣.雕刻.嫁娶.订盟.纳采.出火.拆卸.修造.动土.起基.上梁.放水.移徙.入宅.造仓.造船.开市.开池.纳畜.牧养.挂匾.", "j": "行丧.安葬.合寿木.", "c": "生肖冲猪", "s": "煞东", "ch": "成", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d0910": { "y": "祭祀.嫁娶.捕捉.", "j": "开光.动土.破土.开市.修造.入宅.安门.", "c": "生肖冲鼠", "s": "煞北", "ch": "收", "zc": "正冲正冲壬子", "ts": "房床碓外正东" }, "d0911": { "y": "祭祀.普渡.解除.会亲友.捕捉.畋猎.启攒.除服.成服.移柩.", "j": "嫁娶.开市.动土.掘井.开池.安葬.", "c": "生肖冲牛", "s": "煞西", "ch": "开", "zc": "正冲正冲癸丑", "ts": "占门厕外正东" }, "d0912": { "y": "祭祀.出行.解除.冠笄.嫁娶.伐木.架马.开柱眼.修造.动土.移徙.入宅.开生坟.合寿木.入殓.移柩.破土.安葬.修坟.", "j": "开光.安床.", "c": "生肖冲虎", "s": "煞南", "ch": "闭", "zc": "正冲正冲甲寅", "ts": "碓磨炉外东南" }, "d0913": { "y": "祭祀.祈福.求嗣.出行.沐浴.交易.扫舍.教牛马.", "j": "动土.作灶.行丧.安葬.修坟.", "c": "生肖冲兔", "s": "煞东", "ch": "建", "zc": "正冲正冲乙卯", "ts": "厨灶门外东南" }, "d0914": { "y": "出行.解除.纳采.冠笄.雕刻.修造.动土.起基.上梁.合脊.安床.移徙.入宅.开市.栽种.作厕.", "j": "造庙.安门.行丧.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "除", "zc": "正冲正冲丙辰", "ts": "仓库栖外东南" }, "d0915": { "y": "祭祀.沐浴.解除.理发.冠笄.安机械.作灶.造仓.开市.开池.作厕.补垣.塞穴.断蚁.结网.", "j": "嫁娶.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "满", "zc": "正冲正冲丁巳", "ts": "占房床外东南" }, "d0916": { "y": "祭祀.沐浴.修饰垣墙.平治道涂.", "j": "嫁娶.入宅.", "c": "生肖冲马", "s": "煞南", "ch": "平", "zc": "正冲正冲戊午", "ts": "占门碓外东南" }, "d0917": { "y": "祭祀.会亲友.纳采.嫁娶.开光.塑绘.斋醮.安香.开市.立券.除服.成服.入殓.移柩.安葬.赴任.进人口.出行.裁衣.修造.动土.上梁.经络.交易.", "j": "入宅.伐木.", "c": "生肖冲羊", "s": "煞东", "ch": "定", "zc": "正冲正冲己未", "ts": "碓磨厕外东南" }, "d0918": { "y": "祭祀.冠笄.会亲友.拆卸.起基.除服.成服.移柩.启攒.安葬.沐浴.捕捉.开光.塑绘.", "j": "作灶.祭祀.入宅.嫁娶.", "c": "生肖冲猴", "s": "煞北", "ch": "执", "zc": "正冲正冲庚申", "ts": "厨灶炉外正南" }, "d0919": { "y": "祭祀.沐浴.破屋.坏垣.余事勿取.", "j": "移徙.入宅.出行.栽种.", "c": "生肖冲鸡", "s": "煞西", "ch": "破", "zc": "正冲正冲辛酉", "ts": "仓库门外正南" }, "d0920": { "y": "祭祀.塑绘.开光.出行.解除.订盟.嫁娶.拆卸.起基.安床.入宅.开市.入殓.除服.成服.移柩.破土.谢土.挂匾.开柱眼.交易.", "j": "造桥.冠笄.造屋.掘井.", "c": "生肖冲狗", "s": "煞南", "ch": "危", "zc": "正冲正冲壬戌", "ts": "房床栖外正南" }, "d0922": { "y": "祭祀.裁衣.冠笄.嫁娶.纳婿.会亲友.除服.成服.移柩.捕捉.进人口.入殓.", "j": "移徙.入宅.作灶.安葬.", "c": "生肖冲鼠", "s": "煞北", "ch": "收", "zc": "正冲正冲甲子", "ts": "占碓磨外正南" }, "d0923": { "y": "祭祀.诸事不宜.", "j": "入殓.安葬.开市.交易.", "c": "生肖冲牛", "s": "煞西", "ch": "开", "zc": "正冲正冲乙丑", "ts": "厨灶厕外西南" }, "d0924": { "y": "祭祀.裁衣.冠笄.嫁娶.安机械.拆卸.动土.起基.移徙.入宅.入殓.启攒.安葬.造仓.经络.", "j": "安床.开光.开市.交易.", "c": "生肖冲虎", "s": "煞南", "ch": "闭", "zc": "正冲正冲丙寅", "ts": "仓库炉外西南" }, "d0925": { "y": "祭祀.出行.成服.除服.沐浴.入殓.", "j": "动土.冠笄.移徙.入宅.开市.竖柱.上梁.", "c": "生肖冲兔", "s": "煞东", "ch": "建", "zc": "正冲正冲丁卯", "ts": "房床门外西南" }, "d0926": { "y": "祭祀.沐浴.赴任.出行.余事勿取.", "j": "诸事不宜.", "c": "生肖冲龙", "s": "煞北", "ch": "除", "zc": "正冲正冲戊辰", "ts": "门鸡栖外西南" }, "d0927": { "y": "诸事不宜.", "j": "诸事不宜.", "c": "生肖冲蛇", "s": "煞西", "ch": "满", "zc": "正冲正冲己巳", "ts": "碓磨床外西南" }, "d0928": { "y": "沐浴.入殓.移柩.除服.成服.破土.平治道涂.", "j": "嫁娶.移徙.入宅.开市.", "c": "生肖冲马", "s": "煞南", "ch": "平", "zc": "正冲正冲庚午", "ts": "厨灶碓外西南" }, "d0929": { "y": "嫁娶.祭祀.祈福.求嗣.沐浴.出火.出行.拆卸.修造.动土.进人口.开市.交易.立券.入宅.移徙.安床.栽种.纳畜.入殓.安葬.启攒.除服.成服.", "j": "", "c": "生肖冲羊", "s": "煞东", "ch": "定", "zc": "正冲正冲辛未", "ts": "仓库厕外西南" }, "d0930": { "y": "开光.解除.起基.动土.拆卸.上梁.立碑.修坟.安葬.破土.启攒.移柩.", "j": "嫁娶.出行.安床.作灶.祭祀.入宅.移徙.出火.进人口.置产.", "c": "生肖冲猴", "s": "煞北", "ch": "执", "zc": "正冲正冲壬申", "ts": "房床厕外正南" }, "d0931": { "y": "破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鸡", "s": "煞西", "ch": "破", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d0721": { "y": "嫁娶.纳采.开市.出行.动土.上梁.移徙.入宅.破土.安葬.", "j": "赴任.", "c": "生肖冲鸡", "s": "煞西", "ch": "成", "zc": "正冲正冲辛酉", "ts": "仓库门外正南" }, "d0801": { "y": "嫁娶.开光.出行.理发.作梁.出火.拆卸.修造.开市.交易.立券.挂匾.动土.入宅.移徙.安床.栽种.", "j": "伐木.祭祀.纳畜.祭祀.", "c": "生肖冲猴", "s": "煞北", "ch": "危", "zc": "正冲正冲壬申", "ts": "房床厕外正南" }, "d0802": { "y": "嫁娶.开光.出行.祈福.求嗣.解除.拆卸.动土.修造.进人口.开市.交易.立券.挂匾.入宅.移徙.安床.栽种.纳畜.入殓.移柩.安葬.", "j": "", "c": "生肖冲鸡", "s": "煞西", "ch": "成", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d0803": { "y": "祭祀.作灶.纳财.栽种.纳畜.进人口.", "j": "安葬.经络.修坟.破土.开市.安床.启攒.立碑.", "c": "生肖冲狗", "s": "煞南", "ch": "收", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d0804": { "y": "祭祀.祈福.求嗣.开光.开市.牧养.理发.", "j": "嫁娶.出行.安葬.入殓.入宅.作灶.冠笄.上梁.", "c": "生肖冲猪", "s": "煞东", "ch": "开", "zc": "正冲正冲乙亥", "ts": "厨灶床外正西" }, "d0805": { "y": "祭祀.入殓.破土.除服.成服.移柩.启攒.安葬.谢土.余事勿取.", "j": "余事勿取.", "c": "生肖冲鼠", "s": "煞北", "ch": "闭", "zc": "正冲正冲丙子", "ts": "仓库碓外西北" }, "d0806": { "y": "祭祀.出行.交易.割蜜.造畜椆栖.", "j": "嫁娶.作灶.安葬.动土.词讼.作梁.伐木.掘井.破土.移徙.", "c": "生肖冲牛", "s": "煞西", "ch": "建", "zc": "正冲正冲丁丑", "ts": "房床厕外西北" }, "d0807": { "y": "嫁娶.冠笄.祭祀.沐浴.普渡.出行.纳财.扫舍.纳畜.赴任.", "j": "开市.动土.破土.安床.开仓.上梁.", "c": "生肖冲虎", "s": "煞南", "ch": "建", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d0808": { "y": "祭祀.沐浴.理发.整手足甲.冠笄.解除.入殓.移柩.破土.启攒.安葬.", "j": "嫁娶.出行.入宅.开市.安门.", "c": "生肖冲兔", "s": "煞东", "ch": "除", "zc": "正冲正冲己卯", "ts": "占门炉外西北" }, "d0809": { "y": "塑绘.冠笄.嫁娶.会亲友.进人口.经络.裁衣.栽种.纳畜.牧养.补垣.塞穴.捕捉.", "j": "祈福.开市.动土.行丧.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "满", "zc": "正冲正冲庚辰", "ts": "厨灶栖外西北" }, "d0810": { "y": "出行.沐浴.订盟.纳采.裁衣.竖柱.上梁.移徙.纳畜.牧养.", "j": "嫁娶.安门.动土.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "平", "zc": "正冲正冲辛巳", "ts": "仓库床外西北" }, "d0811": { "y": "纳采.订盟.嫁娶.祭祀.祈福.普渡.开光.安香.出火.移徙.入宅.竖柱.修造.动土.竖柱.上梁.起基.造屋.安门.造庙.造桥.破土.启攒.安葬.", "j": "开市.立券.纳财.作灶.", "c": "生肖冲马", "s": "煞南", "ch": "定", "zc": "正冲正冲壬午", "ts": "房床碓外正北" }, "d0812": { "y": "祭祀.捕捉.畋猎.纳畜.牧养.入殓.除服.成服.移柩.破土.安葬.启攒.", "j": "嫁娶.纳采.订盟.开市.入宅.", "c": "生肖冲羊", "s": "煞东", "ch": "执", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d0813": { "y": "破屋.坏垣.治病.余事勿取.", "j": "行丧.安葬.", "c": "生肖冲猴", "s": "煞北", "ch": "破", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d0814": { "y": "祈福.斋醮.出行.冠笄.嫁娶.雕刻.开柱眼.入宅.造桥.开市.交易.立券.纳财.入殓.除服.成服.移柩.破土.安葬.启攒.", "j": "动土.破土.订盟.安床.开池.", "c": "生肖冲鸡", "s": "煞西", "ch": "危", "zc": "正冲正冲乙酉", "ts": "厨灶门外正北" }, "d0815": { "y": "祈福.求嗣.解除.订盟.纳采.动土.起基.放水.造仓.开市.纳畜.牧养.开生坟.入殓.除服.成服.移柩.破土.安葬.", "j": "", "c": "生肖冲狗", "s": "煞南", "ch": "成", "zc": "正冲正冲丙戌", "ts": "仓库栖外正北" }, "d0816": { "y": "塑绘.开光.解除.订盟.纳采.嫁娶.出火.修造.动土.移徙.入宅.拆卸.起基.安门.分居.开市.交易.立券.纳财.纳畜.牧养.", "j": "", "c": "生肖冲猪", "s": "煞东", "ch": "收", "zc": "正冲正冲丁亥", "ts": "占房床房内北" }, "d0817": { "y": "祈福.出行.订盟.纳采.嫁娶.裁衣.动土.安床.放水.开市.掘井.交易.立券.栽种.开渠.除服.成服.移柩.破土.", "j": "", "c": "生肖冲鼠", "s": "煞北", "ch": "开", "zc": "正冲正冲戊子", "ts": "占门碓房内北" }, "d0818": { "y": "嫁娶.祭祀.祈福.斋醮.作灶.移徙.入宅.", "j": "动土.破土.", "c": "生肖冲牛", "s": "煞西", "ch": "闭", "zc": "正冲正冲己丑", "ts": "碓磨厕房内北" }, "d0819": { "y": "嫁娶.出行.纳畜.祭祀.入殓.启攒.安葬.", "j": "作灶.动土.破土.", "c": "生肖冲虎", "s": "煞南", "ch": "建", "zc": "正冲正冲庚寅", "ts": "厨灶炉房内北" }, "d0820": { "y": "订盟.纳采.祭祀.祈福.修造.动土.上梁.破土.安葬.", "j": "嫁娶.开市.", "c": "生肖冲兔", "s": "煞东", "ch": "除", "zc": "正冲正冲辛卯", "ts": "仓库门房内北" }, "d0822": { "y": "沐浴.修饰垣墙.平治道涂.余事勿取.", "j": "嫁娶.祈福.余事勿取.", "c": "生肖冲蛇", "s": "煞西", "ch": "平", "zc": "正冲正冲癸巳", "ts": "占门床房内南" }, "d0823": { "y": "嫁娶.祭祀.祈福.斋醮.动土.移徙.入宅.", "j": "开市.安葬.", "c": "生肖冲马", "s": "煞南", "ch": "定", "zc": "正冲正冲甲午", "ts": "占碓磨房内南" }, "d0824": { "y": "捕捉.结网.入殓.破土.安葬.", "j": "嫁娶.入宅.", "c": "生肖冲羊", "s": "煞东", "ch": "执", "zc": "正冲正冲乙未", "ts": "厨灶厕房内南" }, "d0825": { "y": "沐浴.治病.破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲猴", "s": "煞北", "ch": "破", "zc": "正冲正冲丙申", "ts": "仓库炉房内南" }, "d0826": { "y": "嫁娶.订盟.纳采.出行.开市.祭祀.祈福.移徙.入宅.启攒.安葬.", "j": "动土.破土.", "c": "生肖冲鸡", "s": "煞西", "ch": "危", "zc": "正冲正冲丁酉", "ts": "房床门房内南" }, "d0827": { "y": "嫁娶.订盟.纳采.祭祀.祈福.求医.治病.动土.移徙.入宅.破土.安葬.", "j": "开光.针灸.", "c": "生肖冲狗", "s": "煞南", "ch": "成", "zc": "正冲正冲戊戌", "ts": "门鸡栖房内东" }, "d0828": { "y": "订盟.纳采.祭祀.祈福.安机械.作灶.纳畜.", "j": "动土.安葬.", "c": "生肖冲猪", "s": "煞东", "ch": "收", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d0829": { "y": "嫁娶.祭祀.祈福.求嗣.出行.动土.安床.掘井.破土.启攒.", "j": "入宅.作梁.安门.伐木.修造.上梁.入殓.造屋.", "c": "生肖冲鼠", "s": "煞北", "ch": "开", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d0830": { "y": "嫁娶.祭祀.祈福.求嗣.出行.出火.拆卸.修造.移徙.动土.安床.入殓.破土.安葬.启攒.", "j": "造屋.开光.理发.造船.掘井.作灶.", "c": "生肖冲牛", "s": "煞西", "ch": "闭", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d0831": { "y": "祭祀.祈福.求嗣.开光.出行.解除.上梁.造屋.移徙.安门.纳财.牧养.纳畜.安葬.启攒.入殓.", "j": "破土.置产.掘井.动土.安床.", "c": "生肖冲虎", "s": "煞南", "ch": "建", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" }, "d0621": { "y": "嫁娶.祭祀.沐浴.扫舍.修饰垣墙.", "j": "行丧.安葬.", "c": "生肖冲兔", "s": "煞东", "ch": "平", "zc": "正冲正冲辛卯", "ts": "仓库门房内北" }, "d0701": { "y": "嫁娶.祭祀.祈福.出火.开光.求嗣.出行.拆卸.开市.交易.立券.挂匾.入宅.移徙.安床.栽种.动土.", "j": "安葬.行丧.伐木.作梁.", "c": "生肖冲牛", "s": "煞西", "ch": "除", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d0702": { "y": "开光.求嗣.出行.解除.伐木.出火.拆卸.修造.上梁.起基.入宅.移徙.开市.交易.立券.栽种.牧养.入殓.安葬.除服.成服.", "j": "置产.安床.", "c": "生肖冲虎", "s": "煞南", "ch": "满", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" }, "d0703": { "y": "祭祀.理发.修饰垣墙.平治道涂.沐浴.整手足甲.扫舍.", "j": "出行.安门.修造.嫁娶.上梁.入宅.", "c": "生肖冲兔", "s": "煞东", "ch": "平", "zc": "正冲正冲癸卯", "ts": "占大门外东北" }, "d0704": { "y": "嫁娶.祭祀.开光.祈福.求嗣.出行.出火.拆卸.动土.修造.进人口.入宅.移徙.安床.挂匾.交易.立券.栽种.纳畜.入殓.破土.启攒.安葬.", "j": "", "c": "生肖冲龙", "s": "煞北", "ch": "定", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d0705": { "y": "祭祀.祈福.求嗣.开光.出行.伐木.出火.拆卸.修造.动土.起基.安床.入宅.移徙.", "j": "嫁娶.开市.交易.行丧.安葬.修坟.", "c": "生肖冲蛇", "s": "煞西", "ch": "执", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d0706": { "y": "破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲马", "s": "煞南", "ch": "破", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d0707": { "y": "求医.治病.破屋.坏垣.余事勿取.", "j": "嫁娶.出行.", "c": "生肖冲羊", "s": "煞东", "ch": "破", "zc": "正冲正冲丁未", "ts": "房床厕外东北" }, "d0708": { "y": "纳采.订盟.嫁娶.移徙.入宅.出行.开市.交易.立券.纳财.会亲友.安香.出火.拆卸.造屋.起基.安床.作灶.挂匾.安葬.破土.启攒.立碑.入殓.移柩.", "j": "祈福.上梁.开仓.掘井.牧养.", "c": "生肖冲猴", "s": "煞北", "ch": "危", "zc": "正冲正冲戊申", "ts": "占门炉外东北" }, "d0709": { "y": "祭祀.祈福.斋醮.出行.纳采.订盟.安机械.出火.拆卸.修造.动土.起基.移徙.入宅.造庙.入殓.除服.成服.移柩.破土.安葬.谢土.", "j": "嫁娶.开市.栽种.合寿木.", "c": "生肖冲鸡", "s": "煞西", "ch": "成", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d0710": { "y": "祭祀.进人口.纳财.纳畜.牧养.捕捉.余事勿取.", "j": "开市.入宅.安床.动土.安葬.", "c": "生肖冲狗", "s": "煞南", "ch": "收", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d0711": { "y": "祭祀.塑绘.开光.求医.治病.嫁娶.会亲友.放水.掘井.牧养.纳畜.开渠.安碓硙.", "j": "造屋.入宅.作灶.入学.安葬.行丧.", "c": "生肖冲猪", "s": "煞东", "ch": "开", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d0712": { "y": "祭祀.塞穴.结网.畋猎.余事勿取.", "j": "移徙.开市.入宅.嫁娶.开光.安门.", "c": "生肖冲鼠", "s": "煞北", "ch": "闭", "zc": "正冲正冲壬子", "ts": "房床碓外正东" }, "d0713": { "y": "开市.纳财.祭祀.塑绘.安机械.冠笄.会亲友.裁衣.开仓.经络.纳畜.造畜椆栖.教牛马.牧养.", "j": "动土.破土.安葬.治病.", "c": "生肖冲牛", "s": "煞西", "ch": "建", "zc": "正冲正冲癸丑", "ts": "占门厕外正东" }, "d0714": { "y": "移徙.入宅.治病.会亲友.祭祀.祈福.斋醮.安香.移徙.嫁娶.造屋.起基.", "j": "开市.斋醮.安床.出行.经络.", "c": "生肖冲虎", "s": "煞南", "ch": "除", "zc": "正冲正冲甲寅", "ts": "碓磨炉外东南" }, "d0715": { "y": "塑绘.出行.冠笄.嫁娶.进人口.裁衣.纳婿.造畜椆栖.交易.立券.牧养.开生坟.入殓.除服.成服.移柩.安葬.启攒.", "j": "", "c": "生肖冲兔", "s": "煞东", "ch": "满", "zc": "正冲正冲乙卯", "ts": "厨灶门外东南" }, "d0716": { "y": "祭祀.冠笄.嫁娶.捕捉.结网.畋猎.取渔.余事勿取.", "j": "余事勿取.", "c": "生肖冲龙", "s": "煞北", "ch": "平", "zc": "正冲正冲丙辰", "ts": "仓库栖外东南" }, "d0717": { "y": "沐浴.扫舍.余事勿取.", "j": "诸事不宜.", "c": "生肖冲蛇", "s": "煞西", "ch": "定", "zc": "正冲正冲丁巳", "ts": "占房床外东南" }, "d0718": { "y": "纳采.祭祀.祈福.解除.动土.破土.安葬.", "j": "嫁娶.移徙.入宅.", "c": "生肖冲马", "s": "煞南", "ch": "执", "zc": "正冲正冲戊午", "ts": "占门碓外东南" }, "d0719": { "y": "祭祀.破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲羊", "s": "煞东", "ch": "破", "zc": "正冲正冲己未", "ts": "碓磨厕外东南" }, "d0720": { "y": "嫁娶.纳采.开市.出行.动土.上梁.移徙.入宅.破土.安葬.", "j": "祭祀.祈福.", "c": "生肖冲猴", "s": "煞北", "ch": "危", "zc": "正冲正冲庚申", "ts": "厨灶炉外正南" }, "d0722": { "y": "祭祀.作灶.纳财.捕捉.", "j": "开市.破土.", "c": "生肖冲狗", "s": "煞南", "ch": "收", "zc": "正冲正冲壬戌", "ts": "房床栖外正南" }, "d0723": { "y": "嫁娶.开市.立券.祭祀.祈福.动土.移徙.入宅.", "j": "造庙.安葬.", "c": "生肖冲猪", "s": "煞东", "ch": "开", "zc": "正冲正冲癸亥", "ts": "占门床外正南" }, "d0724": { "y": "补垣.塞穴.结网.入殓.除服.成服.移柩.安葬.启攒.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鼠", "s": "煞北", "ch": "闭", "zc": "正冲正冲甲子", "ts": "占碓磨外正南" }, "d0725": { "y": "嫁娶.纳采.出行.祭祀.祈福.解除.移徙.入宅.", "j": "动土.安葬.", "c": "生肖冲牛", "s": "煞西", "ch": "建", "zc": "正冲正冲乙丑", "ts": "厨灶厕外西南" }, "d0726": { "y": "嫁娶.祭祀.祈福.斋醮.治病.破土.安葬.", "j": "开市.入宅.", "c": "生肖冲虎", "s": "煞南", "ch": "除", "zc": "正冲正冲丙寅", "ts": "仓库炉外西南" }, "d0727": { "y": "嫁娶.出行.开市.安床.入殓.启攒.安葬.", "j": "祈福.动土.破土.", "c": "生肖冲兔", "s": "煞东", "ch": "满", "zc": "正冲正冲丁卯", "ts": "房床门外西南" }, "d0728": { "y": "嫁娶.祭祀.裁衣.结网.冠笄.沐浴.", "j": "开仓.出货财.置产.安葬.动土.破土.掘井.栽种.", "c": "生肖冲龙", "s": "煞北", "ch": "平", "zc": "正冲正冲戊辰", "ts": "门鸡栖外西南" }, "d0729": { "y": "入宅.移徙.安床.开光.祈福.求嗣.进人口.开市.交易.立券.出火.拆卸.修造.动土.", "j": "嫁娶.破土.置产.栽种.安葬.修坟.行丧.", "c": "生肖冲蛇", "s": "煞西", "ch": "定", "zc": "正冲正冲己巳", "ts": "碓磨床外西南" }, "d0730": { "y": "祭祀.解除.沐浴.整手足甲.入殓.移柩.破土.启攒.安葬.", "j": "嫁娶.入宅.移徙.作灶.开市.交易.安门.栽种.", "c": "生肖冲马", "s": "煞南", "ch": "执", "zc": "正冲正冲庚午", "ts": "厨灶碓外西南" }, "d0731": { "y": "破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲羊", "s": "煞东", "ch": "破", "zc": "正冲正冲辛未", "ts": "仓库厕外西南" }, "d0521": { "y": "嫁娶.纳采.出行.移徙.入宅.", "j": "动土.破土.安葬.", "c": "生肖冲猴", "s": "煞北", "ch": "收", "zc": "正冲正冲庚申", "ts": "厨灶炉外正南" }, "d0601": { "y": "开市.交易.立券.祭祀.祈福.开光.伐木.进人口.安床.拆卸.修造.动土.栽种.破土.移柩.安葬.", "j": "入宅.移徙.理发.出火.嫁娶.出行.", "c": "生肖冲羊", "s": "煞东", "ch": "成", "zc": "正冲正冲辛未", "ts": "仓库厕外西南" }, "d0602": { "y": "结网.解除.余事勿取.", "j": "诸事不宜.", "c": "生肖冲猴", "s": "煞北", "ch": "收", "zc": "正冲正冲壬申", "ts": "房床厕外正南" }, "d0603": { "y": "嫁娶.祭祀.祈福.求嗣.开光.开市.交易.立券.安床.出行.拆卸.", "j": "纳畜.入宅.移徙.安葬.探病.伐木.上梁.安门.入殓.动土.", "c": "生肖冲鸡", "s": "煞西", "ch": "开", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d0604": { "y": "嫁娶.祭祀.祈福.求嗣.出行.出火.拆卸.修造.动土.入宅.移徙.安床.作灶.塞穴.栽种.破土.安葬.", "j": "开光.掘井.开仓.", "c": "生肖冲狗", "s": "煞南", "ch": "闭", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d0605": { "y": "嫁娶.冠笄.修造.动土.作灶.移徙.入宅.补垣.塞穴.纳畜.牧养.架马.修造.动土.起基.定磉.开池.造船.", "j": "祈福.开光.掘井.开市.安葬.", "c": "生肖冲猪", "s": "煞东", "ch": "闭", "zc": "正冲正冲乙亥", "ts": "厨灶床外正西" }, "d0606": { "y": "祭祀.交易.纳财.", "j": "斋醮.开渠.上梁.动土.破土.", "c": "生肖冲鼠", "s": "煞北", "ch": "建", "zc": "正冲正冲丙子", "ts": "仓库碓外西北" }, "d0607": { "y": "嫁娶.订盟.纳采.冠笄.会亲友.安机械.造车器.祭祀.出行.纳财.入宅.安香.出火.入学.塑绘.开光.拆卸.起基.修造.动土.牧养.栽种.安门.作厕.", "j": "行丧.伐木.作梁.作灶.", "c": "生肖冲牛", "s": "煞西", "ch": "除", "zc": "正冲正冲丁丑", "ts": "房床厕外西北" }, "d0608": { "y": "开光.求嗣.出行.冠笄.嫁娶.伐木.架马.开柱眼.修造.移徙.入宅.开市.交易.立券.出行.安香.出火.挂匾.起基.修造.开生坟.合寿木.入殓.除服.成服.移柩.安葬.", "j": "安床.出货财.作灶.动土.破土.", "c": "生肖冲虎", "s": "煞南", "ch": "满", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d0609": { "y": "祭祀.沐浴.理发.嫁娶.作灶.整手足甲.扫舍.修饰垣墙.平治道涂.", "j": "斋醮.出行.治病.合寿木.", "c": "生肖冲兔", "s": "煞东", "ch": "平", "zc": "正冲正冲己卯", "ts": "占门炉外西北" }, "d0610": { "y": "安机械.移徙.入宅.出行.祭祀.祈福.斋醮.纳采.订盟.安香.出火.解除.会亲友.修造.动土.拆卸.起基.定磉.移徙.入宅.造屋.安床.修造.破土.安葬.入殓.立碑.", "j": "开市.伐木.作梁.作灶.", "c": "生肖冲龙", "s": "煞北", "ch": "定", "zc": "正冲正冲庚辰", "ts": "厨灶栖外西北" }, "d0611": { "y": "祭祀.沐浴.捕捉.结网.畋猎.取渔.余事勿取.", "j": "开市.交易.嫁娶.安葬.行丧.", "c": "生肖冲蛇", "s": "煞西", "ch": "执", "zc": "正冲正冲辛巳", "ts": "仓库床外西北" }, "d0612": { "y": "破屋.坏垣.求医.治病.畋猎.余事勿取.", "j": "嫁娶.入宅.", "c": "生肖冲马", "s": "煞南", "ch": "破", "zc": "正冲正冲壬午", "ts": "房床碓外正北" }, "d0613": { "y": "嫁娶.出行.安机械.祭祀.塑绘.开光.治病.经络.安床.结网.塞穴.破土.入殓.", "j": "开市.安门.掘井.作灶.", "c": "生肖冲羊", "s": "煞东", "ch": "危", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d0614": { "y": "订盟.纳采.会亲友.进人口.雕刻.拆卸.修造.动土.起基.开市.栽种.纳畜.牧养.入殓.除服.成服.移柩.破土.安葬.", "j": "", "c": "生肖冲猴", "s": "煞北", "ch": "成", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d0615": { "y": "祭祀.捕捉.取渔.修饰垣墙.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鸡", "s": "煞西", "ch": "收", "zc": "正冲正冲乙酉", "ts": "厨灶门外正北" }, "d0616": { "y": "嫁娶.纳采.祭祀.祈福.求医.治病.出行.动土.移徙.入宅.", "j": "开市.安门.", "c": "生肖冲狗", "s": "煞南", "ch": "开", "zc": "正冲正冲丙戌", "ts": "仓库栖外正北" }, "d0617": { "y": "裁衣.作灶.移徙.入宅.纳畜.", "j": "嫁娶.安葬.", "c": "生肖冲猪", "s": "煞东", "ch": "闭", "zc": "正冲正冲丁亥", "ts": "占房床房内北" }, "d0618": { "y": "祭祀.入殓.移柩.启攒.安葬.", "j": "上梁.动土.破土.", "c": "生肖冲鼠", "s": "煞北", "ch": "建", "zc": "正冲正冲戊子", "ts": "占门碓房内北" }, "d0619": { "y": "订盟.纳采.出行.祈福.斋醮.安床.会亲友.", "j": "移徙.入宅.安葬.", "c": "生肖冲牛", "s": "煞西", "ch": "除", "zc": "正冲正冲己丑", "ts": "碓磨厕房内北" }, "d0620": { "y": "嫁娶.纳采.出行.求医.治病.开市.移徙.入宅.启攒.安葬.", "j": "动土.破土.", "c": "生肖冲虎", "s": "煞南", "ch": "满", "zc": "正冲正冲庚寅", "ts": "厨灶炉房内北" }, "d0622": { "y": "嫁娶.订盟.纳采.出行.开市.祭祀.祈福.动土.移徙.入宅.破土.安葬.", "j": "作灶.", "c": "生肖冲龙", "s": "煞北", "ch": "定", "zc": "正冲正冲壬辰", "ts": "房床栖房内南" }, "d0623": { "y": "订盟.纳采.出行.祭祀.祈福.修造.动土.移徙.入宅.", "j": "开市.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "执", "zc": "正冲正冲癸巳", "ts": "占门床房内南" }, "d0624": { "y": "诸事不宜.", "j": "诸事不宜.", "c": "生肖冲马", "s": "煞南", "ch": "破", "zc": "正冲正冲甲午", "ts": "占碓磨房内南" }, "d0625": { "y": "嫁娶.订盟.纳采.祭祀.祈福.入殓.破土.安葬.", "j": "开光.开市.", "c": "生肖冲羊", "s": "煞东", "ch": "危", "zc": "正冲正冲乙未", "ts": "厨灶厕房内南" }, "d0626": { "y": "开光.求医.治病.动土.上梁.入殓.破土.安葬.", "j": "嫁娶.开光.", "c": "生肖冲猴", "s": "煞北", "ch": "成", "zc": "正冲正冲丙申", "ts": "仓库炉房内南" }, "d0627": { "y": "祭祀.栽种.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鸡", "s": "煞西", "ch": "收", "zc": "正冲正冲丁酉", "ts": "房床门房内南" }, "d0628": { "y": "嫁娶.开光.祭祀.祈福.求嗣.出行.解除.伐木.入宅.移徙.安床.出火.拆卸.修造.上梁.栽种.移柩.", "j": "安葬.开市.交易.立券.", "c": "生肖冲狗", "s": "煞南", "ch": "开", "zc": "正冲正冲戊戌", "ts": "门鸡栖房内东" }, "d0629": { "y": "求嗣.嫁娶.纳采.合帐.裁衣.冠笄.伐木.作梁.修造.动土.起基.竖柱.上梁.安门.作灶.筑堤.造畜椆栖.", "j": "安葬.出行.祈福.栽种.", "c": "生肖冲猪", "s": "煞东", "ch": "闭", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d0630": { "y": "祭祀.解除.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鼠", "s": "煞北", "ch": "建", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d0631": { "y": "嫁娶.祭祀.祈福.出火.开光.求嗣.出行.拆卸.开市.交易.立券.挂匾.入宅.移徙.安床.栽种.动土.", "j": "安葬.行丧.伐木.作梁.", "c": "生肖冲牛", "s": "煞西", "ch": "除", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d0501": { "y": "纳采.嫁娶.开光.出行.理发.会亲友.开市.安床.栽种.牧养.入殓.移柩.启攒.", "j": "谢土.祈福.上梁.作灶.斋醮.修造.入宅.安门.", "c": "生肖冲鼠", "s": "煞北", "ch": "满", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d0421": { "y": "祭祀.斋醮.开市.动土.入殓.破土.安葬.", "j": "嫁娶.移徙.入宅.", "c": "生肖冲虎", "s": "煞南", "ch": "定", "zc": "正冲正冲庚寅", "ts": "厨灶炉房内北" }, "d0502": { "y": "祭祀.平治道涂.解除.修饰垣墙.余事勿取.", "j": "诸事不宜.", "c": "生肖冲牛", "s": "煞西", "ch": "平", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d0503": { "y": "祭祀.祈福.开光.解除.动土.纳财.交易.纳畜.扫舍.", "j": "进人口.出行.嫁娶.置产.安床.赴任.安葬.作灶.", "c": "生肖冲虎", "s": "煞南", "ch": "定", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" }, "d0504": { "y": "祭祀.祈福.求嗣.开光.解除.出火.拆卸.入宅.安床.修造.安门.纳畜.启攒.安葬.", "j": "动土.破土.纳财.掘井.挂匾.开市.伐木.交易.", "c": "生肖冲兔", "s": "煞东", "ch": "执", "zc": "正冲正冲癸卯", "ts": "占大门外东北" }, "d0505": { "y": "嫁娶.纳采.订盟.斋醮.开光.祭祀.祈福.求医.治病.会亲友.动土.解除.捕捉.纳畜.牧养.入殓.破土.安葬.", "j": "移徙.入宅.造屋.架马.", "c": "生肖冲龙", "s": "煞北", "ch": "执", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d0506": { "y": "祭祀.沐浴.解除.破屋.坏垣.余事勿取.", "j": "行丧.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "破", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d0507": { "y": "沐浴.扫舍.余事勿取.", "j": "斋醮.开市.嫁娶.作灶.", "c": "生肖冲马", "s": "煞南", "ch": "危", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d0508": { "y": "开市.交易.立券.安机械.会亲友.开光.求医.治病.造屋.起基.修造.动土.定磉.竖柱.上梁.安门.作灶.放水.作厕.开池.栽种.牧养.造畜椆栖.破土.安葬.立碑.", "j": "嫁娶.出火.移徙.入宅.", "c": "生肖冲羊", "s": "煞东", "ch": "成", "zc": "正冲正冲丁未", "ts": "房床厕外东北" }, "d0509": { "y": "栽种.捕捉.畋猎.余事勿取.", "j": "开市.动土.祭祀.斋醮.安葬.探病.", "c": "生肖冲猴", "s": "煞北", "ch": "收", "zc": "正冲正冲戊申", "ts": "占门炉外东北" }, "d0510": { "y": "嫁娶.祭祀.祈福.求嗣.斋醮.订盟.纳采.解除.出行.动土.破土.习艺.针灸.理发.会亲友.起基.修造.动土.竖柱.定磉.安床.拆卸.纳畜.牧养.放水.破土.除服.成服.修坟.立碑.", "j": "开市.入宅.探病.出火.造屋.", "c": "生肖冲鸡", "s": "煞西", "ch": "开", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d0511": { "y": "余事勿取.", "j": "余事勿取.", "c": "生肖冲狗", "s": "煞南", "ch": "闭", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d0512": { "y": "塞穴.断蚁.结网.余事勿取.", "j": "破土.安葬.", "c": "生肖冲猪", "s": "煞东", "ch": "建", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d0513": { "y": "开光.出行.纳采.嫁娶.伐木.架马.出火.拆卸.移徙.入宅.造庙.造桥.造船.造畜椆栖.开市.入殓.除服.成服.移柩.安葬.", "j": "", "c": "生肖冲鼠", "s": "煞北", "ch": "除", "zc": "正冲正冲壬子", "ts": "房床碓外正东" }, "d0514": { "y": "进人口.牧养.置产.塞穴.结网.余事勿取.", "j": "诸事不宜.", "c": "生肖冲牛", "s": "煞西", "ch": "满", "zc": "正冲正冲癸丑", "ts": "占门厕外正东" }, "d0515": { "y": "开光.出行.嫁娶.", "j": "会亲友.进人口.修造.动土.起基.移徙.开市.纳畜.入殓.除服.成服.移柩.破土.安葬.修坟.立碑.会亲友.", "c": "生肖冲虎", "s": "煞南", "ch": "平", "zc": "正冲正冲甲寅", "ts": "碓磨炉外东南" }, "d0516": { "y": "嫁娶.纳采.出行.祭祀.祈福.开市.动土.移徙.入宅.破土.安葬.", "j": "安门.", "c": "生肖冲兔", "s": "煞东", "ch": "定", "zc": "正冲正冲乙卯", "ts": "厨灶门外东南" }, "d0517": { "y": "嫁娶.纳采.求医.治病.修造.动土.移徙.入宅.破土.安葬.", "j": "开市.开光.", "c": "生肖冲龙", "s": "煞北", "ch": "执", "zc": "正冲正冲丙辰", "ts": "仓库栖外东南" }, "d0518": { "y": "祭祀.破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲蛇", "s": "煞西", "ch": "破", "zc": "正冲正冲丁巳", "ts": "占房床外东南" }, "d0519": { "y": "嫁娶.纳采.祭祀.祈福.出行.动土.上梁.移徙.入宅.破土.安葬.", "j": "祈福.斋醮.", "c": "生肖冲马", "s": "煞南", "ch": "危", "zc": "正冲正冲戊午", "ts": "占门碓外东南" }, "d0520": { "y": "纳采.祭祀.祈福.开市.求医.治病.动土.纳畜.", "j": "嫁娶.安葬.", "c": "生肖冲羊", "s": "煞东", "ch": "成", "zc": "正冲正冲己未", "ts": "碓磨厕外东南" }, "d0522": { "y": "订盟.纳采.祭祀.动土.破土.交易.立券.", "j": "嫁娶.安葬.", "c": "生肖冲鸡", "s": "煞西", "ch": "开", "zc": "正冲正冲辛酉", "ts": "仓库门外正南" }, "d0523": { "y": "嫁娶.裁衣.祭祀.出行.安床.作灶.移徙.入宅.破土.安葬.", "j": "赴任.捕捉.", "c": "生肖冲狗", "s": "煞南", "ch": "闭", "zc": "正冲正冲壬戌", "ts": "房床栖外正南" }, "d0524": { "y": "塞穴.结网.余事勿取.", "j": "诸事不宜.", "c": "生肖冲猪", "s": "煞东", "ch": "建", "zc": "正冲正冲癸亥", "ts": "占门床外正南" }, "d0525": { "y": "嫁娶.订盟.纳采.出行.祭祀.祈福.斋醮.动土.上梁.破土.安葬.", "j": "移徙.入宅.", "c": "生肖冲鼠", "s": "煞北", "ch": "除", "zc": "正冲正冲甲子", "ts": "占碓磨外正南" }, "d0526": { "y": "订盟.纳采.会亲友.安床.作灶.造畜椆栖.", "j": "开市.安葬.", "c": "生肖冲牛", "s": "煞西", "ch": "满", "zc": "正冲正冲乙丑", "ts": "厨灶厕外西南" }, "d0527": { "y": "沐浴.平治道涂.扫舍.入殓.移柩.破土.启攒.安葬.余事勿取.", "j": "诸事不宜.", "c": "生肖冲虎", "s": "煞南", "ch": "平", "zc": "正冲正冲丙寅", "ts": "仓库炉外西南" }, "d0528": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出行.出火.拆卸.动土.上梁.进人口.入宅.移徙.安床.安门.开市.交易.立券.挂匾.栽种.破土.安葬.", "j": "", "c": "生肖冲兔", "s": "煞东", "ch": "定", "zc": "正冲正冲丁卯", "ts": "房床门外西南" }, "d0529": { "y": "祭祀.开光.出行.解除.塑绘.裁衣.入殓.移柩.破土.启攒.安葬.除服.成服.", "j": "嫁娶.上梁.修造.拆卸.架马.入宅.伐木.动土.出火.开柱眼.", "c": "生肖冲龙", "s": "煞北", "ch": "执", "zc": "正冲正冲戊辰", "ts": "门鸡栖外西南" }, "d0530": { "y": "祭祀.解除.破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲蛇", "s": "煞西", "ch": "破", "zc": "正冲正冲己巳", "ts": "碓磨床外西南" }, "d0531": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出行.拆卸.动土.上梁.出火.进人口.入宅.移徙.安床.栽种.纳畜.牧养.竖柱.安门.修造.解除.会亲友.", "j": "", "c": "生肖冲马", "s": "煞南", "ch": "危", "zc": "正冲正冲庚午", "ts": "厨灶碓外西南" }, "d0321": { "y": "祭祀.开光.塑绘.酬神.斋醮.订盟.纳采.嫁娶.裁衣.动土.起基.出火.拆卸.移徙.入宅.安香.修造.竖柱.上梁.纳畜.牧养.祈福.求嗣.解除.伐木.定磉.造屋.安门.", "j": "栽种.安葬.", "c": "生肖冲羊", "s": "煞东", "ch": "开", "zc": "正冲正冲己未", "ts": "碓磨厕外东南" }, "d0401": { "y": "裁衣.合帐.冠笄.嫁娶.纳婿.安床.入殓.纳财.", "j": "作灶.开市.安葬.作梁.", "c": "生肖冲马", "s": "煞南", "ch": "收", "zc": "正冲正冲庚午", "ts": "厨灶碓外西南" }, "d0402": { "y": "祭祀.订盟.纳采.修造.动土.祈福.塑绘.斋醮.沐浴.拆卸.起基.入宅.安香.造庙.移柩.谢土.除服.成服.入学.习艺.出行.竖柱.上梁.掘井.求嗣.解除.伐木.", "j": "作灶.安葬.开市.造屋.", "c": "生肖冲羊", "s": "煞东", "ch": "开", "zc": "正冲正冲辛未", "ts": "仓库厕外西南" }, "d0403": { "y": "订盟.纳采.裁衣.合帐.冠笄.安机械.拆卸.安床.入殓.除服.成服.移柩.破土.启攒.安葬.修坟.立碑.经络.交易.立券.纳财.筑堤.造仓.补垣.塞穴.纳畜.伐木.架马.", "j": "祭祀.开光.嫁娶.入宅.", "c": "生肖冲猴", "s": "煞北", "ch": "闭", "zc": "正冲正冲壬申", "ts": "房床厕外正南" }, "d0404": { "y": "祭祀.祈福.求嗣.斋醮.冠笄.作灶.纳财.交易.", "j": "开光.嫁娶.掘井.安葬.安门.探病.", "c": "生肖冲鸡", "s": "煞西", "ch": "闭", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d0405": { "y": "祭祀.解除.教牛马.出行.余事勿取.", "j": "动土.破土.行丧.开光.作梁.安葬.探病.", "c": "生肖冲狗", "s": "煞南", "ch": "建", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d0406": { "y": "沐浴.斋醮.解除.求医.治病.会亲友.造畜椆栖.栽种.理发.扫舍.", "j": "开市.嫁娶.移徙.入宅.掘井.安葬.", "c": "生肖冲猪", "s": "煞东", "ch": "除", "zc": "正冲正冲乙亥", "ts": "厨灶床外正西" }, "d0407": { "y": "求嗣.出行.解除.订盟.纳采.嫁娶.会亲友.进人口.安床.开市.交易.纳畜.牧养.入殓.除服.成服.移柩.安葬.启攒.", "j": "祈福.开市.修造.动土.破土.谢土.", "c": "生肖冲鼠", "s": "煞北", "ch": "满", "zc": "正冲正冲丙子", "ts": "仓库碓外西北" }, "d0408": { "y": "祭祀.作灶.平治道涂.余事勿取.", "j": "嫁娶.安葬.动土.安床.治病.", "c": "生肖冲牛", "s": "煞西", "ch": "平", "zc": "正冲正冲丁丑", "ts": "房床厕外西北" }, "d0409": { "y": "造车器.祭祀.祈福.求嗣.斋醮.开市.交易.安机械.雕刻.开光.造屋.合脊.起基.定磉.安门.纳畜.安葬.开生坟.立碑.谢土.斋醮.", "j": "入宅.动土.开仓.出货财.", "c": "生肖冲虎", "s": "煞南", "ch": "定", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d0410": { "y": "祭祀.祈福.开光.求嗣.斋醮.纳采.订盟.求医.治病.起基.定磉.造船.取渔.解除.安葬.启攒.谢土.入殓.", "j": "开市.动土.掘井.开池.", "c": "生肖冲兔", "s": "煞东", "ch": "执", "zc": "正冲正冲己卯", "ts": "占门炉外西北" }, "d0411": { "y": "祭祀.沐浴.破屋.坏垣.求医.治病.解除.余事勿取.", "j": "嫁娶.开市.交易.入宅.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "破", "zc": "正冲正冲庚辰", "ts": "厨灶栖外西北" }, "d0412": { "y": "诸事不宜.", "j": "诸事不宜.", "c": "生肖冲蛇", "s": "煞西", "ch": "危", "zc": "正冲正冲辛巳", "ts": "仓库床外西北" }, "d0413": { "y": "祭祀.塑绘.开光.订盟.纳采.冠笄.裁衣.安机械.拆卸.修造.动土.安床.经络.开市.", "j": "出火.入宅.安葬.伐木.", "c": "生肖冲马", "s": "煞南", "ch": "成", "zc": "正冲正冲壬午", "ts": "房床碓外正北" }, "d0414": { "y": "祭祀.余事勿取.", "j": "造庙.嫁娶.安床.余事勿取.", "c": "生肖冲羊", "s": "煞东", "ch": "收", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d0415": { "y": "订盟.纳采.嫁娶.进人口.会亲友.交易.立券.动土.除服.谢土.移柩.破土.启攒.赴任.出行.开市.纳财.栽种.", "j": "入殓.安葬.入宅.安床.", "c": "生肖冲猴", "s": "煞北", "ch": "开", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d0416": { "y": "祭祀.祈福.裁衣.合帐.安床.入殓.除服.成服.移柩.破土.启攒.安葬.谢土.立碑.造畜椆栖.", "j": "掘井.安门.嫁娶.纳采.", "c": "生肖冲鸡", "s": "煞西", "ch": "闭", "zc": "正冲正冲乙酉", "ts": "厨灶门外正北" }, "d0417": { "y": "祭祀.进人口.嫁娶.安床.解除.冠笄.出行.裁衣.扫舍.", "j": "掘井.动土.破土.安葬.开光.", "c": "生肖冲狗", "s": "煞南", "ch": "建", "zc": "正冲正冲丙戌", "ts": "仓库栖外正北" }, "d0418": { "y": "纳采.开光.求医.治病.动土.上梁.移徙.入宅.", "j": "嫁娶.开市.安葬.", "c": "生肖冲猪", "s": "煞东", "ch": "除", "zc": "正冲正冲丁亥", "ts": "占房床房内北" }, "d0419": { "y": "祭祀.会亲友.开市.安床.启攒.安葬.", "j": "嫁娶.动土.破土.", "c": "生肖冲鼠", "s": "煞北", "ch": "满", "zc": "正冲正冲戊子", "ts": "占门碓房内北" }, "d0420": { "y": "祭祀.作灶.掘井.平治道涂.", "j": "嫁娶.安葬.", "c": "生肖冲牛", "s": "煞西", "ch": "平", "zc": "正冲正冲己丑", "ts": "碓磨厕房内北" }, "d0422": { "y": "嫁娶.纳采.祭祀.祈福.出行.移徙.求医.", "j": "开市.动土.破土.", "c": "生肖冲兔", "s": "煞东", "ch": "执", "zc": "正冲正冲辛卯", "ts": "仓库门房内北" }, "d0423": { "y": "祭祀.求医.治病.解除.余事勿取.", "j": "诸事不宜.", "c": "生肖冲龙", "s": "煞北", "ch": "破", "zc": "正冲正冲壬辰", "ts": "房床栖房内南" }, "d0424": { "y": "沐浴.结网.取渔.", "j": "嫁娶.入宅.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "危", "zc": "正冲正冲癸巳", "ts": "占门床房内南" }, "d0425": { "y": "", "j": "诸事不宜.", "c": "生肖冲马", "s": "煞南", "ch": "成", "zc": "正冲正冲甲午", "ts": "占碓磨房内南" }, "d0426": { "y": "解除.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲羊", "s": "煞东", "ch": "收", "zc": "正冲正冲乙未", "ts": "厨灶厕房内南" }, "d0427": { "y": "嫁娶.开光.出行.出火.拆卸.进人口.开市.立券.交易.挂匾.入宅.移徙.安床.栽种.", "j": "祈福.入殓.祭祀.作灶.安葬.探病.", "c": "生肖冲猴", "s": "煞北", "ch": "开", "zc": "正冲正冲丙申", "ts": "仓库炉房内南" }, "d0428": { "y": "嫁娶.出行.合帐.冠笄.安床.除服.成服.作灶.交易.立券.入殓.移柩.破土.安葬.", "j": "词讼.开光.开市.", "c": "生肖冲鸡", "s": "煞西", "ch": "闭", "zc": "正冲正冲丁酉", "ts": "房床门房内南" }, "d0429": { "y": "出行.修饰垣墙.造畜椆栖.教牛马.余事勿取.", "j": "诸事不宜.", "c": "生肖冲狗", "s": "煞南", "ch": "建", "zc": "正冲正冲戊戌", "ts": "门鸡栖房内东" }, "d0430": { "y": "祭祀.祈福.开光.求嗣.解除.伐木.出火.入宅.移徙.安床.拆卸.修造.动土.造畜椆栖.", "j": "嫁娶.纳财.安葬.出行.开市.立券.作灶.栽种.", "c": "生肖冲猪", "s": "煞东", "ch": "除", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d0431": { "y": "纳采.嫁娶.开光.出行.理发.会亲友.开市.安床.栽种.牧养.入殓.移柩.启攒.", "j": "谢土.祈福.上梁.作灶.斋醮.修造.入宅.安门.", "c": "生肖冲鼠", "s": "煞北", "ch": "满", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d0221": { "y": "祈福.求嗣.斋醮.塑绘.开光.订盟.纳采.嫁娶.动土.入宅.安香.移柩.安葬.谢土.出行.沐浴.修造.竖柱.上梁.纳财.破土.解除.安门.放水.", "j": "作灶.安床.", "c": "生肖冲兔", "s": "煞东", "ch": "危", "zc": "正冲正冲辛卯", "ts": "仓库门房内北" }, "d0301": { "y": "作灶.解除.平治道涂.", "j": "栽种.出行.祈福.行丧.纳畜.安葬.安门.伐木.作梁.牧养.", "c": "生肖冲猪", "s": "煞东", "ch": "平", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d0302": { "y": "解除.沐浴.", "j": "诸事不宜.", "c": "生肖冲鼠", "s": "煞北", "ch": "定", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d0303": { "y": "嫁娶.祭祀.祈福.出行.解除.出火.拆卸.动土.入宅.移徙.安床.上梁.栽种.纳畜.破土.启攒.安葬.", "j": "开市.立券.理发.作灶.", "c": "生肖冲牛", "s": "煞西", "ch": "执", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d0304": { "y": "祭祀.解除.治病.破屋.坏垣.扫舍.", "j": "余事勿取.", "c": "生肖冲虎", "s": "煞南", "ch": "破", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" }, "d0305": { "y": "破屋.坏垣.余事勿取.", "j": "嫁娶.移徙.开市.入宅.", "c": "生肖冲兔", "s": "煞东", "ch": "破", "zc": "正冲正冲癸卯", "ts": "占大门外东北" }, "d0306": { "y": "嫁娶.冠笄.祭祀.出行.会亲友.修造.动土.入殓.破土.", "j": "塑绘.开光.造桥.除服.成服.", "c": "生肖冲龙", "s": "煞北", "ch": "危", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d0307": { "y": "开光.求嗣.出行.纳采.冠笄.出火.拆卸.起基.修造.动土.上梁.移徙.造船.开市.交易.立券.纳财.", "j": "祈福.嫁娶.安葬.破土.", "c": "生肖冲蛇", "s": "煞西", "ch": "成", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d0308": { "y": "理发.冠笄.嫁娶.进人口.栽种.捕捉.针灸.", "j": "纳财.开市.安葬.破土.", "c": "生肖冲马", "s": "煞南", "ch": "收", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d0309": { "y": "开光.祈福.求嗣.出行.解除.伐木.造屋.起基.修造.架马.安门.移徙.入宅.造庙.除服.成服.移柩.谢土.纳畜.牧养.", "j": "纳采.动土.开市.交易.安门.", "c": "生肖冲羊", "s": "煞东", "ch": "开", "zc": "正冲正冲丁未", "ts": "房床厕外东北" }, "d0310": { "y": "裁衣.经络.伐木.开柱眼.拆卸.修造.动土.上梁.合脊.合寿木.入殓.除服.成服.移柩.破土.安葬.启攒.修坟.立碑.", "j": "祭祀.嫁娶.出行.上梁.掘井.", "c": "生肖冲猴", "s": "煞北", "ch": "闭", "zc": "正冲正冲戊申", "ts": "占门炉外东北" }, "d0311": { "y": "祭祀.会亲友.立券.交易.裁衣.合帐.嫁娶.冠笄.进人口.", "j": "栽种.动土.安葬.掘井.修坟.探病.", "c": "生肖冲鸡", "s": "煞西", "ch": "建", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d0312": { "y": "扫舍.塞穴.余事勿取.", "j": "诸事不宜.", "c": "生肖冲狗", "s": "煞南", "ch": "除", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d0313": { "y": "塑绘.开光.订盟.纳采.裁衣.合帐.冠笄.安机械.会亲友.纳财.开市.立券.交易.安床.竖柱.上梁.结网.栽种.解除.经络.", "j": "作灶.出行.入宅.安葬.", "c": "生肖冲猪", "s": "煞东", "ch": "满", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d0314": { "y": "祭祀.嫁娶.纳婿.除服.成服.入殓.移柩.", "j": "动土.作灶.入宅.开光.安床.", "c": "生肖冲鼠", "s": "煞北", "ch": "平", "zc": "正冲正冲壬子", "ts": "房床碓外正东" }, "d0315": { "y": "祈福.求嗣.开光.塑绘.斋醮.订盟.纳采.嫁娶.拆卸.安床.入宅.安香.移柩.修坟.安葬.谢土.栽种.解除.冠笄.裁衣.移徙.修造.动土.竖柱.放水.启攒.立碑.", "j": "赴任.", "c": "生肖冲牛", "s": "煞西", "ch": "定", "zc": "正冲正冲癸丑", "ts": "占门厕外正东" }, "d0316": { "y": "祭祀.解除.入殓.除服.成服.移柩.启攒.安葬.修坟.立碑.谢土.沐浴.扫舍.捕捉.取渔.结网.畋猎.理发.", "j": "安床.嫁娶.作灶.入宅.", "c": "生肖冲虎", "s": "煞南", "ch": "执", "zc": "正冲正冲甲寅", "ts": "碓磨炉外东南" }, "d0317": { "y": "破屋.坏垣.", "j": "诸事不宜.", "c": "生肖冲兔", "s": "煞东", "ch": "破", "zc": "正冲正冲乙卯", "ts": "厨灶门外东南" }, "d0318": { "y": "祭祀.出行.订盟.纳采.裁衣.合帐.冠笄.进人口.动土.安床.作灶.入殓.移柩.安葬.破土.结网.取渔.畋猎.", "j": "作梁.造庙.", "c": "生肖冲龙", "s": "煞北", "ch": "危", "zc": "正冲正冲丙辰", "ts": "仓库栖外东南" }, "d0319": { "y": "祭祀.开光.塑绘.订盟.纳采.合帐.冠笄.拆卸.动土.起基.上梁.入宅.安香.开市.立券.纳财.沐浴.求嗣.出火.竖柱.安门.", "j": "造庙.嫁娶.伐木.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "成", "zc": "正冲正冲丁巳", "ts": "占房床外东南" }, "d0320": { "y": "祭祀.沐浴.捕捉.栽种.", "j": "嫁娶.入宅.移徙.作灶.安葬.", "c": "生肖冲马", "s": "煞南", "ch": "收", "zc": "正冲正冲戊午", "ts": "占门碓外东南" }, "d0322": { "y": "订盟.纳采.冠笄.拆卸.修造.动土.安床.入殓.除服.成服.移柩.安葬.破土.启攒.造仓.", "j": "作灶.开光.嫁娶.开市.入宅.", "c": "生肖冲猴", "s": "煞北", "ch": "闭", "zc": "正冲正冲庚申", "ts": "厨灶炉外正南" }, "d0323": { "y": "祈福.开光.塑绘.酬神.订盟.纳采.裁衣.安床.开市.立券.入殓.除服.成服.移柩.启攒.安葬.立碑.赴任.会亲友.出行.交易.竖柱.", "j": "作灶.掘井.动土.栽种.", "c": "生肖冲鸡", "s": "煞西", "ch": "建", "zc": "正冲正冲辛酉", "ts": "仓库门外正南" }, "d0324": { "y": "祭祀.扫舍.塞穴.", "j": "栽种.作灶.安葬.嫁娶.", "c": "生肖冲狗", "s": "煞南", "ch": "除", "zc": "正冲正冲壬戌", "ts": "房床栖外正南" }, "d0325": { "y": "开光.塑绘.裁衣.冠笄.伐木.拆卸.竖柱.上梁.开仓.会亲友.安机械.造仓.造屋.交易.解除.开市.立券.纳财.", "j": "出行.嫁娶.入宅.安葬.", "c": "生肖冲猪", "s": "煞东", "ch": "满", "zc": "正冲正冲癸亥", "ts": "占门床外正南" }, "d0326": { "y": "冠笄.入殓.除服.成服.移柩.平治道涂.修饰垣墙.", "j": "造屋.作灶.治病.探病.", "c": "生肖冲鼠", "s": "煞北", "ch": "平", "zc": "正冲正冲甲子", "ts": "占碓磨外正南" }, "d0327": { "y": "祭祀.嫁娶.祈福.纳采.裁衣.合帐.安床.入宅.安香.入殓.移柩.安葬.谢土.修造.安碓硙.求嗣.会亲友.挂匾.交易.立券.纳财.造仓.放水.", "j": "栽种.伐木.", "c": "生肖冲牛", "s": "煞西", "ch": "定", "zc": "正冲正冲乙丑", "ts": "厨灶厕外西南" }, "d0328": { "y": "祭祀.祈福.斋醮.订盟.纳采.裁衣.合帐.拆卸.修造.动土.上梁.起基.移柩.安葬.谢土.沐浴.扫舍.开柱眼.伐木.出火.", "j": "安床.开市.立券.作灶.", "c": "生肖冲虎", "s": "煞南", "ch": "执", "zc": "正冲正冲丙寅", "ts": "仓库炉外西南" }, "d0329": { "y": "破屋.坏垣.求医.治病.", "j": "诸事不宜.", "c": "生肖冲兔", "s": "煞东", "ch": "破", "zc": "正冲正冲丁卯", "ts": "房床门外西南" }, "d0330": { "y": "祭祀.动土.上梁.订盟.纳采.嫁娶.安机械.拆卸.安床.入宅.安香.入殓.移柩.破土.安葬.立碑.谢土.赴任.出行.移徙.祈福.求嗣.解除.造仓.进人口.", "j": "开光.出货财.", "c": "生肖冲龙", "s": "煞北", "ch": "危", "zc": "正冲正冲戊辰", "ts": "门鸡栖外西南" }, "d0331": { "y": "祭祀.开光.塑绘.纳采.裁衣.拆卸.安床.起基.动土.竖柱.上梁.移徙.入宅.安香.开市.立券.挂匾.沐浴.出行.求嗣.安门.", "j": "嫁娶.栽种.伐木.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "成", "zc": "正冲正冲己巳", "ts": "碓磨床外西南" }, "d0201": { "y": "解除.扫舍.祭祀.教牛马.余事勿取.", "j": "余事勿取.", "c": "生肖冲羊", "s": "煞东", "ch": "建", "zc": "正冲正冲辛未", "ts": "仓库厕外西南" }, "d0121": { "y": "沐浴.解除.订盟.纳采.裁衣.冠笄.拆卸.修造.动土.移徙.入宅.除服.成服.移柩.破土.启攒.安葬.扫舍.修坟.伐木.纳财.交易.立券.", "j": "作灶.祭祀.上梁.出行.", "c": "生肖冲猴", "s": "煞北", "ch": "除", "zc": "正冲正冲庚申", "ts": "厨灶炉外正南" }, "d0202": { "y": "开市.交易.立券.挂匾.开光.解除.伐木.作梁.出火.入宅.移徙.安床.拆卸.动土.上梁.栽种.纳畜.安葬.", "j": "嫁娶.祭祀.出行.置产.", "c": "生肖冲猴", "s": "煞北", "ch": "除", "zc": "正冲正冲壬申", "ts": "房床厕外正南" }, "d0203": { "y": "开市.交易.立券.纳财.开池.补垣.嫁娶.纳采.纳畜.取渔.安床.", "j": "修造.上梁.入宅.祈福.探病.掘井.动土.安门.安葬.作灶.", "c": "生肖冲鸡", "s": "煞西", "ch": "满", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d0204": { "y": "会亲友.求嗣.理发.冠笄.结网.捕捉.开光.理发.", "j": "开市.动土.安葬.破土.", "c": "生肖冲狗", "s": "煞南", "ch": "满", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d0205": { "y": "祭祀.平治道涂.余事勿取.", "j": "嫁娶.祈福.掘井.安葬.", "c": "生肖冲猪", "s": "煞东", "ch": "平", "zc": "正冲正冲乙亥", "ts": "厨灶床外正西" }, "d0206": { "y": "祈福.求嗣.斋醮.纳采.嫁娶.伐木.修造.动土.移徙.入宅.造庙.安机械.开市.入殓.除服.成服.移柩.安葬.破土.谢土.", "j": "置产.造屋.合脊.开光.探病.安门.作灶.", "c": "生肖冲鼠", "s": "煞北", "ch": "定", "zc": "正冲正冲丙子", "ts": "仓库碓外西北" }, "d0207": { "y": "入学.习艺.出行.纳采.订盟.嫁娶.会亲友.进人口.牧养.捕捉.入殓.移柩.安葬.启攒.", "j": "开光.开市.入宅.动土.造屋.", "c": "生肖冲牛", "s": "煞西", "ch": "执", "zc": "正冲正冲丁丑", "ts": "房床厕外西北" }, "d0208": { "y": "祭祀.沐浴.求医.治病.扫舍.破屋.坏垣.解除.余事勿取.", "j": "入宅.开市.安葬.", "c": "生肖冲虎", "s": "煞南", "ch": "破", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d0209": { "y": "祭祀.冠笄.嫁娶.拆卸.修造.动土.起基.上梁.造屋.入宅.开市.开池.塞穴.入殓.除服.成服.移柩.安葬.破土.", "j": "安床.栽种.治病.作灶.", "c": "生肖冲兔", "s": "煞东", "ch": "危", "zc": "正冲正冲己卯", "ts": "占门炉外西北" }, "d0210": { "y": "祭祀.结网.入殓.除服.成服.移柩.安葬.破土.", "j": "余事勿取.", "c": "生肖冲龙", "s": "煞北", "ch": "成", "zc": "正冲正冲庚辰", "ts": "厨灶栖外西北" }, "d0211": { "y": "塑绘.开光.祈福.求嗣.订盟.纳采.裁衣.冠笄.拆卸.修造.动土.起基.安门.安床.移徙.造仓.结网.纳畜.", "j": "伐木.作灶.安葬.取渔.入宅.", "c": "生肖冲蛇", "s": "煞西", "ch": "收", "zc": "正冲正冲辛巳", "ts": "仓库床外西北" }, "d0212": { "y": "祭祀.沐浴.开光.塑绘.祈福.求嗣.订盟.纳采.冠笄.裁衣.嫁娶.动土.除服.成服.移柩.破土.启攒.出行.安碓硙.放水.开市.立券.交易.", "j": "安葬.上梁.入宅.作灶.", "c": "生肖冲马", "s": "煞南", "ch": "开", "zc": "正冲正冲壬午", "ts": "房床碓外正北" }, "d0213": { "y": "祭祀.祈福.求嗣.酬神.裁衣.安床.立券.交易.入殓.除服.成服.移柩.谢土.启攒.", "j": "出行.嫁娶.入宅.动土.", "c": "生肖冲羊", "s": "煞东", "ch": "闭", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d0214": { "y": "裁衣.合帐.入殓.除服.成服.会亲友.纳财.", "j": "祭祀.祈福.移徙.嫁娶.入宅.", "c": "生肖冲猴", "s": "煞北", "ch": "建", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d0215": { "y": "祭祀.斋醮.裁衣.合帐.冠笄.订盟.纳采.嫁娶.入宅.安香.谢土.入殓.移柩.破土.立碑.安香.会亲友.出行.祈福.求嗣.立碑.上梁.放水.", "j": "掘井.", "c": "生肖冲鸡", "s": "煞西", "ch": "除", "zc": "正冲正冲乙酉", "ts": "厨灶门外正北" }, "d0216": { "y": "安床.合帐.入宅.问名.纳采.求嗣.祭祀.开仓.", "j": "斋醮.作灶.安床.安葬.", "c": "生肖冲狗", "s": "煞南", "ch": "满", "zc": "正冲正冲丙戌", "ts": "仓库栖外正北" }, "d0217": { "y": "作灶.平治道涂.", "j": "祭祀.祈福.安葬.安门.余事勿取.", "c": "生肖冲猪", "s": "煞东", "ch": "平", "zc": "正冲正冲丁亥", "ts": "占房床房内北" }, "d0218": { "y": "塑绘.开光.酬神.斋醮.订盟.纳采.裁衣.合帐.拆卸.动土.上梁.安床.安香.造庙.挂匾.会亲友.进人口.出行.修造.纳财.伐木.放水.出火.纳畜.沐浴.安门.", "j": "造屋.栽种.安葬.作灶.", "c": "生肖冲鼠", "s": "煞北", "ch": "定", "zc": "正冲正冲戊子", "ts": "占门碓房内北" }, "d0219": { "y": "祭祀.祈福.酬神.订盟.纳采.冠笄.裁衣.合帐.嫁娶.安床.移徙.入宅.安香.入殓.移柩.启攒.安葬.解除.取渔.捕捉.伐木.安门.出火.", "j": "栽种.动土.开市.作灶.", "c": "生肖冲牛", "s": "煞西", "ch": "执", "zc": "正冲正冲己丑", "ts": "碓磨厕房内北" }, "d0220": { "y": "求医.破屋.", "j": "诸事不宜.", "c": "生肖冲虎", "s": "煞南", "ch": "破", "zc": "正冲正冲庚寅", "ts": "厨灶炉房内北" }, "d0222": { "y": "取渔.入殓.除服.成服.移柩.破土.安葬.立碑.", "j": "嫁娶.上梁.入宅.作灶.", "c": "生肖冲龙", "s": "煞北", "ch": "成", "zc": "正冲正冲壬辰", "ts": "房床栖房内南" }, "d0223": { "y": "祭祀.求嗣.沐浴.酬神.订盟.纳采.裁衣.合帐.冠笄.安机械.安床.造仓.开池.经络.纳财.开市.立券.交易.结网.取渔.纳畜.捕捉.", "j": "安葬.作灶.伐木.作梁.", "c": "生肖冲蛇", "s": "煞西", "ch": "收", "zc": "正冲正冲癸巳", "ts": "占门床房内南" }, "d0224": { "y": "祭祀.沐浴.祈福.求嗣.斋醮.订盟.纳采.裁衣.冠笄.开市.立券.交易.纳财.沐浴.除服.谢土.出行.移柩.", "j": "入殓.安葬.作灶.入宅.", "c": "生肖冲马", "s": "煞南", "ch": "开", "zc": "正冲正冲甲午", "ts": "占碓磨房内南" }, "d0225": { "y": "祭祀.祈福.求嗣.入殓.启攒.安葬.移柩.", "j": "开光.掘井.针灸.出行.嫁娶.入宅.移徙.作灶.动土.", "c": "生肖冲羊", "s": "煞东", "ch": "闭", "zc": "正冲正冲乙未", "ts": "厨灶厕房内南" }, "d0226": { "y": "安床.解除.裁衣.竖柱.上梁.交易.立券.纳财.纳畜.牧养.入殓.移柩.安葬.启攒.", "j": "嫁娶.出行.动土.开渠.入宅.祭祀.掘井.", "c": "生肖冲猴", "s": "煞北", "ch": "建", "zc": "正冲正冲丙申", "ts": "仓库炉房内南" }, "d0227": { "y": "嫁娶.安床.开光.出行.祭祀.动土.出火.解除.会亲友.开市.交易.立券.挂匾.入宅.移徙.拆卸.破土.启攒.安葬.", "j": "掘井.词讼.", "c": "生肖冲鸡", "s": "煞西", "ch": "除", "zc": "正冲正冲丁酉", "ts": "房床门房内南" }, "d0228": { "y": "嫁娶.开光.求嗣.会亲友.安床.牧养.塑绘.针灸.", "j": "入宅.移徙.出火.分居.安香.作灶.开市.交易.立券.安葬.动土.伐木.", "c": "生肖冲狗", "s": "煞南", "ch": "满", "zc": "正冲正冲戊戌", "ts": "门鸡栖房内东" }, "d0229": { "y": "作灶.解除.平治道涂.", "j": "栽种.出行.祈福.行丧.纳畜.安葬.安门.伐木.作梁.牧养.", "c": "生肖冲猪", "s": "煞东", "ch": "平", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d0230": { "y": "作灶.解除.平治道涂.", "j": "栽种.出行.祈福.行丧.纳畜.安葬.安门.伐木.作梁.牧养.", "c": "生肖冲猪", "s": "煞东", "ch": "平", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d0231": { "y": "作灶.解除.平治道涂.", "j": "栽种.出行.祈福.行丧.纳畜.安葬.安门.伐木.作梁.牧养.", "c": "生肖冲猪", "s": "煞东", "ch": "平", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d0101": { "y": "治病.破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鼠", "s": "煞北", "ch": "破", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d0102": { "y": "祭祀.祈福.求嗣.斋醮.开光.入学.订盟.冠笄.伐木.修造.动土.起基.放水.交易.开池.", "j": "造桥.安门.理发.造庙.栽种.作灶.", "c": "生肖冲牛", "s": "煞西", "ch": "危", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d0103": { "y": "解除.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲虎", "s": "煞南", "ch": "成", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" }, "d0104": { "y": "沐浴.理发.扫舍.", "j": "伐木.纳畜.上梁.入宅.作灶.造畜椆栖.嫁娶.安葬.作梁.造船.安门.", "c": "生肖冲兔", "s": "煞东", "ch": "收", "zc": "正冲正冲癸卯", "ts": "占大门外东北" }, "d0105": { "y": "嫁娶.纳采.订盟.问名.祭祀.冠笄.裁衣.会亲友.进人口.纳财.捕捉.作灶.", "j": "开市.安床.安葬.修坟.", "c": "生肖冲龙", "s": "煞北", "ch": "收", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d0106": { "y": "订盟.纳采.会亲友.祭祀.斋醮.沐浴.塑绘.出火.开光.竖柱.上梁.开市.交易.立券.作梁.开柱眼.伐木.架马.安门.安床.拆卸.牧养.造畜椆栖.掘井.", "j": "造庙.嫁娶.出行.动土.安葬.行丧.", "c": "生肖冲蛇", "s": "煞西", "ch": "开", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d0107": { "y": "交易.立券.纳财.安床.裁衣.造畜椆栖.安葬.谢土.启攒.除服.成服.修坟.立碑.移柩.入殓.", "j": "开光.嫁娶.开市.动土.破土.", "c": "生肖冲马", "s": "煞南", "ch": "闭", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d0108": { "y": "祭祀.解除.教牛马.会亲友.余事勿取.", "j": "破土.动土.安葬.", "c": "生肖冲羊", "s": "煞东", "ch": "建", "zc": "正冲正冲丁未", "ts": "房床厕外东北" }, "d0109": { "y": "纳采.订盟.移徙.纳财.开市.交易.立券.入宅.会亲友.解除.求医.治病.入学.安床.安门.安香.出火.拆卸.扫舍.入宅.挂匾.开生坟.合寿木.破土.修坟.启攒.入殓.", "j": "探病.祭祀.出行.上梁.造屋.谢土.安葬.", "c": "生肖冲猴", "s": "煞北", "ch": "除", "zc": "正冲正冲戊申", "ts": "占门炉外东北" }, "d0110": { "y": "嫁娶.订盟.纳采.祭祀.祈福.求嗣.会亲友.解除.出行.入学.纳财.开市.交易.立券.习艺.经络.安床.开仓.出货财.纳畜.安葬.启攒.修坟.入殓.", "j": "入宅.开光.开市.动土.", "c": "生肖冲鸡", "s": "煞西", "ch": "满", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d0111": { "y": "祭祀.冠笄.嫁娶.会亲友.进人口.裁衣.结网.平治道涂.", "j": "移徙.入宅.造庙.作灶.治病.安葬.", "c": "生肖冲狗", "s": "煞南", "ch": "平", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d0112": { "y": "祭祀.安碓硙.结网.余事勿取.", "j": "嫁娶.安葬.", "c": "生肖冲猪", "s": "煞东", "ch": "定", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d0113": { "y": "嫁娶.祭祀.沐浴.裁衣.出行.理发.移徙.捕捉.畋猎.放水.入宅.除服.成服.启攒.安葬.移柩.入殓.", "j": "造屋.开市.动土.破土.", "c": "生肖冲鼠", "s": "煞北", "ch": "执", "zc": "正冲正冲壬子", "ts": "房床碓外正东" }, "d0114": { "y": "破屋.坏垣.余事勿取.", "j": "嫁娶.开市.安葬.", "c": "生肖冲牛", "s": "煞西", "ch": "破", "zc": "正冲正冲癸丑", "ts": "占门厕外正东" }, "d0115": { "y": "纳采.订盟.祭祀.求嗣.出火.塑绘.裁衣.会亲友.入学.拆卸.扫舍.造仓.挂匾.掘井.开池.结网.栽种.纳畜.破土.修坟.立碑.安葬.入殓.", "j": "祈福.嫁娶.造庙.安床.谢土.", "c": "生肖冲虎", "s": "煞南", "ch": "危", "zc": "正冲正冲甲寅", "ts": "碓磨炉外东南" }, "d0116": { "y": "入殓.除服.成服.移柩.启攒.安葬.修坟.立碑.", "j": "开市.伐木.嫁娶.作梁.", "c": "生肖冲兔", "s": "煞东", "ch": "成", "zc": "正冲正冲乙卯", "ts": "厨灶门外东南" }, "d0117": { "y": "祭祀.作灶.入殓.除服.余事勿取.", "j": "开市.安床.", "c": "生肖冲龙", "s": "煞北", "ch": "收", "zc": "正冲正冲丙辰", "ts": "仓库栖外东南" }, "d0118": { "y": "塑绘.开光.沐浴.冠笄.会亲友.作灶.放水.造畜椆栖.", "j": "嫁娶.入殓.安葬.出行.", "c": "生肖冲蛇", "s": "煞西", "ch": "开", "zc": "正冲正冲丁巳", "ts": "占房床外东南" }, "d0119": { "y": "祭祀.沐浴.祈福.斋醮.订盟.纳采.裁衣.拆卸.起基.竖柱.上梁.安床.入殓.除服.成服.移柩.启攒.挂匾.求嗣.出行.合帐.造畜椆栖.", "j": "开仓.嫁娶.移徙.入宅.", "c": "生肖冲马", "s": "煞南", "ch": "闭", "zc": "正冲正冲戊午", "ts": "占门碓外东南" }, "d0120": { "y": "祭祀.解除.余事勿取.", "j": "诸事不宜.", "c": "生肖冲羊", "s": "煞东", "ch": "建", "zc": "正冲正冲己未", "ts": "碓磨厕外东南" }, "d0122": { "y": "出行.嫁娶.订盟.纳采.入殓.安床.启攒.安葬.祭祀.裁衣.会亲友.进人口.", "j": "作灶.掘井.谢土.入宅.", "c": "生肖冲鸡", "s": "煞西", "ch": "满", "zc": "正冲正冲辛酉", "ts": "仓库门外正南" }, "d0123": { "y": "修饰垣墙.平治道涂.入殓.移柩.余事勿取.", "j": "嫁娶.移徙.入宅.开光.", "c": "生肖冲狗", "s": "煞南", "ch": "平", "zc": "正冲正冲壬戌", "ts": "房床栖外正南" }, "d0124": { "y": "会亲友.纳采.进人口.修造.动土.竖柱.上梁.祭祀.开光.塑绘.祈福.斋醮.嫁娶.安床.移徙.入宅.安香.纳畜.", "j": "出行.治病.安葬.开市.", "c": "生肖冲猪", "s": "煞东", "ch": "定", "zc": "正冲正冲癸亥", "ts": "占门床外正南" }, "d0125": { "y": "祭祀.会亲友.出行.订盟.纳采.沐浴.修造.动土.祈福.斋醮.嫁娶.拆卸.安床.入殓.移柩.安葬.谢土.赴任.裁衣.竖柱.上梁.伐木.捕捉.栽种.破土.安门.", "j": "造屋.开市.作灶.入宅.", "c": "生肖冲鼠", "s": "煞北", "ch": "执", "zc": "正冲正冲甲子", "ts": "占碓磨外正南" }, "d0126": { "y": "解除.破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲牛", "s": "煞西", "ch": "破", "zc": "正冲正冲乙丑", "ts": "厨灶厕外西南" }, "d0127": { "y": "塑绘.开光.出行.订盟.纳采.除服.成服.嫁娶.纳婿.入殓.移柩.启攒.安葬.立碑.", "j": "入宅.安床.", "c": "生肖冲虎", "s": "煞南", "ch": "危", "zc": "正冲正冲丙寅", "ts": "仓库炉外西南" }, "d0128": { "y": "入殓.除服.成服.移柩.启攒.安葬.立碑.余事勿取.", "j": "破土.伐木.", "c": "生肖冲兔", "s": "煞东", "ch": "成", "zc": "正冲正冲丁卯", "ts": "房床门外西南" }, "d0129": { "y": "祭祀.祈福.斋醮.塑绘.开光.除服.成服.入殓.作灶.嫁娶.捕捉.畋猎.纳财.", "j": "开仓.造屋.安葬.安床.", "c": "生肖冲龙", "s": "煞北", "ch": "收", "zc": "正冲正冲戊辰", "ts": "门鸡栖外西南" }, "d0130": { "y": "祭祀.出行.沐浴.裁衣.祈福.斋醮.订盟.纳采.嫁娶.安机械.开市.立券.安碓硙.纳畜.", "j": "栽种.嫁娶.入殓.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "开", "zc": "正冲正冲己巳", "ts": "碓磨床外西南" }, "d0131": { "y": "祭祀.祈福.斋醮.沐浴.安床.安机械.造车器.入殓.移柩.启攒.安葬.立碑.合帐.经络.交易.", "j": "作灶.掘井.嫁娶.入宅.", "c": "生肖冲马", "s": "煞南", "ch": "闭", "zc": "正冲正冲庚午", "ts": "厨灶碓外西南" } } ukui-panel-4.0.0.4/plugin-calendar/html/hlnew/hl2012.json0000644000175000017500000030021414560306203021277 0ustar fengfeng{ "d0101": { "y": "祭祀.开光.理发.整手足甲.安床.作灶.扫舍.教牛马.", "j": "伐木.纳畜.破土.安葬.开生坟.嫁娶.开市.动土.交易.作梁.", "c": "生肖冲兔", "s": "煞東", "ch": "收", "zc": "正冲正冲乙卯", "ts": "厨灶门外东南" }, "d0201": { "y": "解除.平治道涂.余事勿取.", "j": "移徙.入宅.掘井.造庙.栽种.针灸.治病.开池.", "c": "生肖冲狗", "s": "煞南", "ch": "平", "zc": "正冲正冲丙戌", "ts": "仓库栖外正北" }, "d0102": { "y": "祭祀.祈福.求嗣.开光.拆卸.修造.动土.上梁.安床.置产.栽种.破土.", "j": "嫁娶.进人口.安葬.出行.赴任.入宅.移徙.入殓.开渠.", "c": "生肖冲龙", "s": "煞北", "ch": "开", "zc": "正冲正冲丙辰", "ts": "仓库栖外东南" }, "d0103": { "y": "沐浴.冠笄.补垣.塞穴.合帐.裁衣.修造.作梁.开柱眼.安碓硙.筑堤.作厕.断蚁.", "j": "移徙.入宅.嫁娶.祈福.开光.掘井.", "c": "生肖冲蛇", "s": "煞西", "ch": "闭", "zc": "正冲正冲丁巳", "ts": "占房床外东南" }, "d0104": { "y": "交易.进人口.祭祀.沐浴.捕捉.入殓.除服.成服.安葬.谢土.启攒.修坟.", "j": "斋醮.入宅.修造.动土.破土.", "c": "生肖冲马", "s": "煞南", "ch": "建", "zc": "正冲正冲戊午", "ts": "占门碓外东南" }, "d0105": { "y": "嫁娶.纳采.订盟.造车器.祭祀.祈福.造庙.安香.出火.出行.归宁.入学.入宅.交易.立券.求医.治病.修造.动土.竖柱.上梁.造屋.起基.安门.", "j": "斋醮.伐木.作梁.安葬.行丧.", "c": "生肖冲羊", "s": "煞東", "ch": "除", "zc": "正冲正冲己未", "ts": "碓磨厕外东南" }, "d0106": { "y": "沐浴.解除.订盟.纳采.裁衣.冠笄.拆卸.修造.动土.移徙.入宅.除服.成服.移柩.破土.启攒.安葬.扫舍.修坟.伐木.纳财.交易.立券.", "j": "作灶.祭祀.上梁.出行.", "c": "生肖冲猴", "s": "煞北", "ch": "除", "zc": "正冲正冲庚申", "ts": "厨灶炉外正南" }, "d0107": { "y": "出行.嫁娶.订盟.纳采.入殓.安床.启攒.安葬.祭祀.裁衣.会亲友.进人口.", "j": "作灶.掘井.谢土.入宅.", "c": "生肖冲鸡", "s": "煞西", "ch": "满", "zc": "正冲正冲辛酉", "ts": "仓库门外正南" }, "d0108": { "y": "修饰垣墙.平治道涂.入殓.移柩.余事勿取.", "j": "嫁娶.移徙.入宅.开光.", "c": "生肖冲狗", "s": "煞南", "ch": "平", "zc": "正冲正冲壬戌", "ts": "房床栖外正南" }, "d0109": { "y": "会亲友.纳采.进人口.修造.动土.竖柱.上梁.祭祀.开光.塑绘.祈福.斋醮.嫁娶.安床.移徙.入宅.安香.纳畜.", "j": "出行.治病.安葬.开市.", "c": "生肖冲猪", "s": "煞東", "ch": "定", "zc": "正冲正冲癸亥", "ts": "占门床外正南" }, "d0110": { "y": "祭祀.会亲友.出行.订盟.纳采.沐浴.修造.动土.祈福.斋醮.嫁娶.拆卸.安床.入殓.移柩.安葬.谢土.赴任.裁衣.竖柱.上梁.伐木.捕捉.栽种.破土.安门.", "j": "造屋.开市.作灶.入宅.", "c": "生肖冲鼠", "s": "煞北", "ch": "执", "zc": "正冲正冲甲子", "ts": "占碓磨外正南" }, "d0111": { "y": "解除.破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲牛", "s": "煞西", "ch": "破", "zc": "正冲正冲乙丑", "ts": "厨灶厕外西南" }, "d0112": { "y": "塑绘.开光.出行.订盟.纳采.除服.成服.嫁娶.纳婿.入殓.移柩.启攒.安葬.立碑.", "j": "入宅.安床.", "c": "生肖冲虎", "s": "煞南", "ch": "危", "zc": "正冲正冲丙寅", "ts": "仓库炉外西南" }, "d0113": { "y": "入殓.除服.成服.移柩.启攒.安葬.立碑.余事勿取.", "j": "破土.伐木.", "c": "生肖冲兔", "s": "煞東", "ch": "成", "zc": "正冲正冲丁卯", "ts": "房床门外西南" }, "d0114": { "y": "祭祀.祈福.斋醮.塑绘.开光.除服.成服.入殓.作灶.嫁娶.捕捉.畋猎.纳财.", "j": "开仓.造屋.安葬.安床.", "c": "生肖冲龙", "s": "煞北", "ch": "收", "zc": "正冲正冲戊辰", "ts": "门鸡栖外西南" }, "d0115": { "y": "祭祀.出行.沐浴.裁衣.祈福.斋醮.订盟.纳采.嫁娶.安机械.开市.立券.安碓硙.纳畜.", "j": "栽种.嫁娶.入殓.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "开", "zc": "正冲正冲己巳", "ts": "碓磨床外西南" }, "d0116": { "y": "祭祀.祈福.斋醮.沐浴.安床.安机械.造车器.入殓.移柩.启攒.安葬.立碑.合帐.经络.交易.", "j": "作灶.掘井.嫁娶.入宅.", "c": "生肖冲马", "s": "煞南", "ch": "闭", "zc": "正冲正冲庚午", "ts": "厨灶碓外西南" }, "d0117": { "y": "解除.扫舍.祭祀.教牛马.余事勿取.", "j": "余事勿取.", "c": "生肖冲羊", "s": "煞東", "ch": "建", "zc": "正冲正冲辛未", "ts": "仓库厕外西南" }, "d0118": { "y": "开市.交易.立券.挂匾.开光.解除.伐木.作梁.出火.入宅.移徙.安床.拆卸.动土.上梁.栽种.纳畜.安葬.", "j": "嫁娶.祭祀.出行.置产.", "c": "生肖冲猴", "s": "煞北", "ch": "除", "zc": "正冲正冲壬申", "ts": "房床厕外正南" }, "d0119": { "y": "开市.交易.立券.纳财.开池.补垣.嫁娶.纳采.纳畜.取渔.安床.", "j": "修造.上梁.入宅.祈福.探病.掘井.动土.安门.安葬.作灶.", "c": "生肖冲鸡", "s": "煞西", "ch": "满", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d0120": { "y": "祭祀.解除.修饰垣墙.平治道涂.余事勿取.", "j": "余事勿取.", "c": "生肖冲狗", "s": "煞南", "ch": "平", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d0121": { "y": "嫁娶.祭祀.祈福.求嗣.动土.会亲友.起基.造仓.纳畜.牧养.作厕.进人口.", "j": "掘井.安葬.栽种.出行.作灶.开市.入宅.安门.", "c": "生肖冲猪", "s": "煞東", "ch": "定", "zc": "正冲正冲乙亥", "ts": "厨灶床外正西" }, "d0122": { "y": "嫁娶.祭祀.祈福.求嗣.开光.入宅.移徙.安床.修造.动土.进人口.", "j": "掘井.安葬.栽种.出行.作灶.开市.入宅.安门.", "c": "生肖冲鼠", "s": "煞北", "ch": "执", "zc": "正冲正冲丙子", "ts": "仓库碓外西北" }, "d0123": { "y": "破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲牛", "s": "煞西", "ch": "破", "zc": "正冲正冲丁丑", "ts": "房床厕外西北" }, "d0124": { "y": "嫁娶.开市.交易.立券.开光.出行.出火.拆卸.修造.入宅.移徙.动土.破土.移柩.安葬.启攒.除服.成服.", "j": "安床.伐木.祈福.纳畜.", "c": "生肖冲虎", "s": "煞南", "ch": "危", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d0125": { "y": "祭祀.入殓.破土.除服.成服.启攒.安葬.修坟.立碑.余事勿取.", "j": "余事勿取.", "c": "生肖冲兔", "s": "煞東", "ch": "成", "zc": "正冲正冲己卯", "ts": "占门炉外西北" }, "d0126": { "y": "祭祀.解除.余事勿取.", "j": "诸事不宜.", "c": "生肖冲龙", "s": "煞北", "ch": "收", "zc": "正冲正冲庚辰", "ts": "厨灶栖外西北" }, "d0127": { "y": "开市.交易.立券.纳财.纳畜.造畜椆栖.入宅.移徙.安床.开光.祈福.求嗣.动土.", "j": "嫁娶.栽种.安葬.理发.造庙.作灶.入殓.行丧.造桥.", "c": "生肖冲蛇", "s": "煞西", "ch": "开", "zc": "正冲正冲辛巳", "ts": "仓库床外西北" }, "d0128": { "y": "安床.裁衣.交易.立券.入殓.移柩.安葬.除服.成服.", "j": "置产.嫁娶.出行.开光.栽种.动土.破土.入宅.治病.", "c": "生肖冲马", "s": "煞南", "ch": "闭", "zc": "正冲正冲壬午", "ts": "房床碓外正北" }, "d0129": { "y": "祭祀.解除.造畜椆栖.教牛马.针灸.余事勿取.", "j": "嫁娶.动土.开池.安葬.", "c": "生肖冲羊", "s": "煞東", "ch": "建", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d0130": { "y": "沐浴.塑绘.开光.纳采.订盟.开市.交易.立券.纳财.起基.动土.定磉.放水.安葬.破土.启攒.修坟.立碑.移柩.", "j": "入宅.安门.祭祀.谢土.", "c": "生肖冲猴", "s": "煞北", "ch": "除", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d0131": { "y": "嫁娶.出行.理发.安床.启攒.安葬.修坟.开市.交易.立券.纳财.开池.牧养.", "j": "掘井.祈福.谢土.动土.入宅.上梁.修造.作灶.", "c": "生肖冲鸡", "s": "煞西", "ch": "满", "zc": "正冲正冲乙酉", "ts": "厨灶门外正北" }, "d0215": { "y": "解除.沐浴.", "j": "诸事不宜.", "c": "生肖冲鼠", "s": "煞北", "ch": "定", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d0205": { "y": "求医.破屋.", "j": "诸事不宜.", "c": "生肖冲虎", "s": "煞南", "ch": "破", "zc": "正冲正冲庚寅", "ts": "厨灶炉房内北" }, "d0226": { "y": "修饰垣墙.平治道涂.祭祀.余事勿取.", "j": "诸事不宜.", "c": "生肖冲猪", "s": "煞東", "ch": "平", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d0216": { "y": "嫁娶.祭祀.祈福.出行.解除.出火.拆卸.动土.入宅.移徙.安床.上梁.栽种.纳畜.破土.启攒.安葬.", "j": "开市.立券.理发.作灶.", "c": "生肖冲牛", "s": "煞西", "ch": "执", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d0225": { "y": "嫁娶.冠笄.纳采.出行.会亲友.上梁.安机械.安床.牧养.畋猎.祭祀.祈福.开光.修造.安门.造屋.起基.", "j": "入宅.作灶.治病.安葬.移徙.", "c": "生肖冲狗", "s": "煞南", "ch": "满", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d0224": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出行.出火.拆卸.动土.上梁.进人口.入宅.移徙.安床.开市.交易.立券.挂匾.入殓.破土.安葬.启攒.除服.成服.", "j": "诸事不宜.", "c": "生肖冲鸡", "s": "煞西", "ch": "除", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d0222": { "y": "祭祀.合帐.裁衣.经络.伐木.作梁.安床.作灶.入殓.安葬.启攒.移柩.", "j": "词讼.出火.入宅.", "c": "生肖冲羊", "s": "煞東", "ch": "闭", "zc": "正冲正冲丁未", "ts": "房床厕外东北" }, "d0212": { "y": "嫁娶.安床.开光.出行.祭祀.动土.出火.解除.会亲友.开市.交易.立券.挂匾.入宅.移徙.拆卸.破土.启攒.安葬.", "j": "掘井.词讼.", "c": "生肖冲鸡", "s": "煞西", "ch": "除", "zc": "正冲正冲丁酉", "ts": "房床门房内南" }, "d0326": { "y": "嫁娶.祭祀.出行.冠笄.立券.交易.进人口.开市.移徙.修造.动土.安床.入殓.移柩.破土.", "j": "开光.作灶.斋醮.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "危", "zc": "正冲正冲庚辰", "ts": "厨灶栖外西北" }, "d0202": { "y": "嫁娶.祭祀.开光.伐木.出火.拆卸.入宅.移徙.修造.动土.上梁.安床.纳畜.", "j": "开市.行丧.栽种.出行.出货财.安葬.置产.词讼.治病.", "c": "生肖冲猪", "s": "煞東", "ch": "定", "zc": "正冲正冲丁亥", "ts": "占房床房内北" }, "d0203": { "y": "嫁娶.纳采.订盟.入宅.移徙.安床.祭祀.祈福.开光.出行.解除.出火.拆卸.动土.纳畜.谢土.安葬.破土.", "j": "伐木.开市.交易.上梁.作灶.安门.造屋.", "c": "生肖冲鼠", "s": "煞北", "ch": "执", "zc": "正冲正冲戊子", "ts": "占门碓房内北" }, "d0204": { "y": "祭祀.祈福.酬神.订盟.纳采.冠笄.裁衣.合帐.嫁娶.安床.移徙.入宅.安香.入殓.移柩.启攒.安葬.解除.取渔.捕捉.伐木.安门.出火.", "j": "栽种.动土.开市.作灶.", "c": "生肖冲牛", "s": "煞西", "ch": "执", "zc": "正冲正冲己丑", "ts": "碓磨厕房内北" }, "d0206": { "y": "祈福.求嗣.斋醮.塑绘.开光.订盟.纳采.嫁娶.动土.入宅.安香.移柩.安葬.谢土.出行.沐浴.修造.竖柱.上梁.纳财.破土.解除.安门.放水.", "j": "作灶.安床.", "c": "生肖冲兔", "s": "煞東", "ch": "危", "zc": "正冲正冲辛卯", "ts": "仓库门房内北" }, "d0207": { "y": "取渔.入殓.除服.成服.移柩.破土.安葬.立碑.", "j": "嫁娶.上梁.入宅.作灶.", "c": "生肖冲龙", "s": "煞北", "ch": "成", "zc": "正冲正冲壬辰", "ts": "房床栖房内南" }, "d0208": { "y": "祭祀.求嗣.沐浴.酬神.订盟.纳采.裁衣.合帐.冠笄.安机械.安床.造仓.开池.经络.纳财.开市.立券.交易.结网.取渔.纳畜.捕捉.", "j": "安葬.作灶.伐木.作梁.", "c": "生肖冲蛇", "s": "煞西", "ch": "收", "zc": "正冲正冲癸巳", "ts": "占门床房内南" }, "d0209": { "y": "祭祀.沐浴.祈福.求嗣.斋醮.订盟.纳采.裁衣.冠笄.开市.立券.交易.纳财.沐浴.除服.谢土.出行.移柩.", "j": "入殓.安葬.作灶.入宅.", "c": "生肖冲马", "s": "煞南", "ch": "开", "zc": "正冲正冲甲午", "ts": "占碓磨房内南" }, "d0210": { "y": "祭祀.祈福.求嗣.入殓.启攒.安葬.移柩.", "j": "开光.掘井.针灸.出行.嫁娶.入宅.移徙.作灶.动土.", "c": "生肖冲羊", "s": "煞东", "ch": "闭", "zc": "正冲正冲乙未", "ts": "厨灶厕房内南" }, "d0211": { "y": "安床.解除.裁衣.竖柱.上梁.交易.立券.纳财.纳畜.牧养.入殓.移柩.安葬.启攒.", "j": "嫁娶.出行.动土.开渠.入宅.祭祀.掘井.", "c": "生肖冲猴", "s": "煞北", "ch": "建", "zc": "正冲正冲丙申", "ts": "仓库炉房内南" }, "d0213": { "y": "嫁娶.开光.求嗣.会亲友.安床.牧养.塑绘.针灸.", "j": "入宅.移徙.出火.分居.安香.作灶.开市.交易.立券.安葬.动土.伐木.", "c": "生肖冲狗", "s": "煞南", "ch": "满", "zc": "正冲正冲戊戌", "ts": "门鸡栖房内东" }, "d0214": { "y": "作灶.解除.平治道涂.", "j": "栽种.出行.祈福.行丧.纳畜.安葬.安门.伐木.作梁.牧养.", "c": "生肖冲猪", "s": "煞東", "ch": "平", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d0217": { "y": "祭祀.解除.治病.破屋.坏垣.扫舍.", "j": "余事勿取.", "c": "生肖冲虎", "s": "煞南", "ch": "破", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" }, "d0218": { "y": "祭祀.祈福.求嗣.开光.出火.出行.拆卸.修造.动土.入宅.移徙.上梁.挂匾.开池.入殓.安葬.破土.启攒.", "j": "嫁娶.作灶.安床.", "c": "生肖冲兔", "s": "煞东", "ch": "危", "zc": "正冲正冲癸卯", "ts": "占大门外东北" }, "d0219": { "y": "结网.入殓.除服.成服.移柩.安葬.破土.", "j": "诸事不宜.", "c": "生肖冲龙", "s": "煞北", "ch": "成", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d0220": { "y": "移徙.祭祀.开光.祈福.出行.解除.进人口.雇庸.安床.动土.起基.上梁.安门.解除.", "j": "嫁娶.安葬.破土.作梁.纳畜.牧养.行丧.作灶.", "c": "生肖冲蛇", "s": "煞西", "ch": "收", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d0221": { "y": "嫁娶.开光.祈福.求嗣.解除.动土.安床.栽种.开池.掘井.祭祀.破土.启攒.", "j": "入宅.作灶.伐木.安葬.出火.出行.纳畜.", "c": "生肖冲马", "s": "煞南", "ch": "开", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d0223": { "y": "裁衣.伐木.作梁.纳财.交易.立券.", "j": "诸事不宜.", "c": "生肖冲猴", "s": "煞北", "ch": "建", "zc": "正冲正冲戊申", "ts": "占门炉外东北" }, "d0227": { "y": "造车器.纳采.订盟.祭祀.祈福.求嗣.移徙.出行.开市.出火.入宅.立券.交易.入宅.安门.安床.安葬.谢土.", "j": "开光.造屋.动土.作灶.栽种.", "c": "生肖冲鼠", "s": "煞北", "ch": "定", "zc": "正冲正冲壬子", "ts": "房床碓外正东" }, "d0228": { "y": "动土.入殓.嫁娶.移柩.安葬.破土.", "j": "开市.作灶.安床.入宅.上梁.裁衣.", "c": "生肖冲牛", "s": "煞西", "ch": "执", "zc": "正冲正冲癸丑", "ts": "占门厕外正东" }, "d0229": { "y": "求医.治病.破屋.坏垣.余事勿取.", "j": "开市.嫁娶.", "c": "生肖冲虎", "s": "煞南", "ch": "破", "zc": "正冲正冲甲寅", "ts": "碓磨炉外东南" }, "d0327": { "y": "开市.立券.交易.挂匾.祭祀.祈福.开光.入宅.移徙.安床.拆卸.动土.上梁.进人口.", "j": "嫁娶.行丧.架马.作梁.理发.牧养.安葬.纳畜.伐木.", "c": "生肖冲蛇", "s": "煞西", "ch": "成", "zc": "正冲正冲辛巳", "ts": "仓库床外西北" }, "d0319": { "y": "祭祀.出行.嫁娶.冠笄.安床.入殓.移柩.安葬.", "j": "掘井.动土.作灶.栽种.", "c": "生肖冲鸡", "s": "煞西", "ch": "建", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d0329": { "y": "嫁娶.祭祀.开光.祈福.求嗣.出火.入宅.移徙.安床.拆卸.动土.破土.谢土.", "j": "合帐.开市.安葬.入殓.", "c": "生肖冲羊", "s": "煞東", "ch": "开", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d0427": { "y": "开光.出行.交易.塞穴.嫁娶.理发.开市.安床.", "j": "祈福.出火.置产.动土.破土.安葬.修造.上梁.置产.入宅.", "c": "生肖冲鼠", "s": "煞北", "ch": "满", "zc": "正冲正冲壬子", "ts": "房床碓外正东" }, "d0301": { "y": "祭祀.斋醮.沐浴.开生坟.除服.成服.移柩.入殓.破土.安葬.合寿木.", "j": "开市.嫁娶.安床.会亲友.入宅.作灶.上梁.", "c": "生肖冲兔", "s": "煞東", "ch": "危", "zc": "正冲正冲乙卯", "ts": "厨灶门外东南" }, "d0302": { "y": "祭祀.塞穴.结网.破土.谢土.安葬.移柩.除服.成服.余事勿取.", "j": "嫁娶.入宅.", "c": "生肖冲龙", "s": "煞北", "ch": "成", "zc": "正冲正冲丙辰", "ts": "仓库栖外东南" }, "d0303": { "y": "祭祀.沐浴.理发.作灶.结网.栽种.", "j": "嫁娶.词讼.行丧.安葬.牧养.伐木.作梁.开市.纳畜.造畜椆栖.", "c": "生肖冲蛇", "s": "煞西", "ch": "收", "zc": "正冲正冲丁巳", "ts": "占房床外东南" }, "d0304": { "y": "嫁娶.祭祀.开光.祈福.求嗣.出行.开市.交易.立券.动土.纳财.掘井.会亲友.", "j": "入宅.安葬.伐木.作梁.纳畜.造畜椆栖.作灶.", "c": "生肖冲马", "s": "煞南", "ch": "开", "zc": "正冲正冲戊午", "ts": "占门碓外东南" }, "d0305": { "y": "祭祀.开光.塑绘.酬神.斋醮.订盟.纳采.嫁娶.裁衣.动土.起基.出火.拆卸.移徙.入宅.安香.修造.竖柱.上梁.纳畜.牧养.祈福.求嗣.解除.伐木.定磉.造屋.安门.", "j": "栽种.安葬.", "c": "生肖冲羊", "s": "煞東", "ch": "开", "zc": "正冲正冲己未", "ts": "碓磨厕外东南" }, "d0306": { "y": "订盟.纳采.冠笄.拆卸.修造.动土.安床.入殓.除服.成服.移柩.安葬.破土.启攒.造仓.", "j": "作灶.开光.嫁娶.开市.入宅.", "c": "生肖冲猴", "s": "煞北", "ch": "闭", "zc": "正冲正冲庚申", "ts": "厨灶炉外正南" }, "d0307": { "y": "祈福.开光.塑绘.酬神.订盟.纳采.裁衣.安床.开市.立券.入殓.除服.成服.移柩.启攒.安葬.立碑.赴任.会亲友.出行.交易.竖柱.", "j": "作灶.掘井.动土.栽种.", "c": "生肖冲鸡", "s": "煞西", "ch": "建", "zc": "正冲正冲辛酉", "ts": "仓库门外正南" }, "d0308": { "y": "祭祀.扫舍.塞穴.", "j": "栽种.作灶.安葬.嫁娶.", "c": "生肖冲狗", "s": "煞南", "ch": "除", "zc": "正冲正冲壬戌", "ts": "房床栖外正南" }, "d0309": { "y": "开光.塑绘.裁衣.冠笄.伐木.拆卸.竖柱.上梁.开仓.会亲友.安机械.造仓.造屋.交易.解除.开市.立券.纳财.", "j": "出行.嫁娶.入宅.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "满", "zc": "正冲正冲癸亥", "ts": "占门床外正南" }, "d0310": { "y": "冠笄.入殓.除服.成服.移柩.平治道涂.修饰垣墙.", "j": "造屋.作灶.治病.探病.", "c": "生肖冲鼠", "s": "煞北", "ch": "平", "zc": "正冲正冲甲子", "ts": "占碓磨外正南" }, "d0311": { "y": "祭祀.嫁娶.祈福.纳采.裁衣.合帐.安床.入宅.安香.入殓.移柩.安葬.谢土.修造.安碓硙.求嗣.会亲友.挂匾.交易.立券.纳财.造仓.放水.", "j": "栽种.伐木.", "c": "生肖冲牛", "s": "煞西", "ch": "定", "zc": "正冲正冲乙丑", "ts": "厨灶厕外西南" }, "d0312": { "y": "祭祀.祈福.斋醮.订盟.纳采.裁衣.合帐.拆卸.修造.动土.上梁.起基.移柩.安葬.谢土.沐浴.扫舍.开柱眼.伐木.出火.", "j": "安床.开市.立券.作灶.", "c": "生肖冲虎", "s": "煞南", "ch": "执", "zc": "正冲正冲丙寅", "ts": "仓库炉外西南" }, "d0313": { "y": "破屋.坏垣.求医.治病.", "j": "诸事不宜.", "c": "生肖冲兔", "s": "煞東", "ch": "破", "zc": "正冲正冲丁卯", "ts": "房床门外西南" }, "d0314": { "y": "祭祀.动土.上梁.订盟.纳采.嫁娶.安机械.拆卸.安床.入宅.安香.入殓.移柩.破土.安葬.立碑.谢土.赴任.出行.移徙.祈福.求嗣.解除.造仓.进人口.", "j": "开光.出货财.", "c": "生肖冲龙", "s": "煞北", "ch": "危", "zc": "正冲正冲戊辰", "ts": "门鸡栖外西南" }, "d0315": { "y": "祭祀.开光.塑绘.纳采.裁衣.拆卸.安床.起基.动土.竖柱.上梁.移徙.入宅.安香.开市.立券.挂匾.沐浴.出行.求嗣.安门.", "j": "嫁娶.栽种.伐木.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "成", "zc": "正冲正冲己巳", "ts": "碓磨床外西南" }, "d0316": { "y": "裁衣.合帐.冠笄.嫁娶.纳婿.安床.入殓.纳财.", "j": "作灶.开市.安葬.作梁.", "c": "生肖冲马", "s": "煞南", "ch": "收", "zc": "正冲正冲庚午", "ts": "厨灶碓外西南" }, "d0317": { "y": "祭祀.订盟.纳采.修造.动土.祈福.塑绘.斋醮.沐浴.拆卸.起基.入宅.安香.造庙.移柩.谢土.除服.成服.入学.习艺.出行.竖柱.上梁.掘井.求嗣.解除.伐木.", "j": "作灶.安葬.开市.造屋.", "c": "生肖冲羊", "s": "煞東", "ch": "开", "zc": "正冲正冲辛未", "ts": "仓库厕外西南" }, "d0318": { "y": "订盟.纳采.裁衣.合帐.冠笄.安机械.拆卸.安床.入殓.除服.成服.移柩.破土.启攒.安葬.修坟.立碑.经络.交易.立券.纳财.筑堤.造仓.补垣.塞穴.纳畜.伐木.架马.", "j": "祭祀.开光.嫁娶.入宅.", "c": "生肖冲猴", "s": "煞北", "ch": "闭", "zc": "正冲正冲壬申", "ts": "房床厕外正南" }, "d0320": { "y": "塞穴.诸事不宜.", "j": "安门.作灶.安葬.嫁娶.", "c": "生肖冲狗", "s": "煞南", "ch": "除", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d0321": { "y": "开光.塑绘.求嗣.纳采.裁衣.合帐.冠笄.安机械.作梁.开柱眼.安门.安床.造仓.祭祀.会亲友.祈福.经络.纳财.开市.立券.交易.入学.求嗣.理发.架马.", "j": "出行.斋醮.安葬.嫁娶.", "c": "生肖冲猪", "s": "煞東", "ch": "满", "zc": "正冲正冲乙亥", "ts": "厨灶床外正西" }, "d0322": { "y": "祭祀.嫁娶.纳婿.安葬.", "j": "栽种.造屋.作灶.入宅.", "c": "生肖冲鼠", "s": "煞北", "ch": "平", "zc": "正冲正冲丙子", "ts": "仓库碓外西北" }, "d0323": { "y": "祭祀.会亲友.订盟.裁衣.合帐.安机械.拆卸.上梁.安门.入殓.除服.成服.移柩.启攒.安葬.立碑.开光.塑绘.入学.出行.起基.定磉.放水.移徙.入宅.竖柱.立券.经络.", "j": "伐木.作梁.", "c": "生肖冲牛", "s": "煞西", "ch": "定", "zc": "正冲正冲丁丑", "ts": "房床厕外西北" }, "d0324": { "y": "祭祀.开光.塑绘.祈福.斋醮.裁衣.合帐.冠笄.嫁娶.拆卸.动土.移徙.入宅.入殓.移柩.安葬.谢土.求嗣.入学.理发.伐木.架马.作梁.出火.修造.起基.定磉.放水.赴任.", "j": "入宅.安门.", "c": "生肖冲虎", "s": "煞南", "ch": "执", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d0325": { "y": "祭祀.治病.破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲兔", "s": "煞東", "ch": "破", "zc": "正冲正冲己卯", "ts": "占门炉外西北" }, "d0328": { "y": "理发.冠笄.嫁娶.进人口.", "j": "置产.伐木.纳畜.造畜椆栖.安葬.破土.作梁.作灶.开生坟.", "c": "生肖冲马", "s": "煞南", "ch": "收", "zc": "正冲正冲壬午", "ts": "房床碓外正北" }, "d0330": { "y": "安床.伐木.拆卸.修造.动土.上梁.立券.交易.栽种.纳畜.牧养.入殓.安葬.", "j": "嫁娶.祭祀.开光.出行.出火.移徙.入宅.安门.", "c": "生肖冲猴", "s": "煞北", "ch": "闭", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d0331": { "y": "祭祀.祈福.求嗣.斋醮.嫁娶.冠笄.出行.开市.交易.会亲友.教牛马.除服.成服.启攒.安葬.移柩.", "j": "祈福.动土.移徙.入宅.", "c": "生肖冲鸡", "s": "煞西", "ch": "建", "zc": "正冲正冲乙酉", "ts": "厨灶门外正北" }, "d0527": { "y": "纳采.订盟.嫁娶.造车器.祭祀.祈福.求嗣.开光.出火.拆卸.修造.动土.进人口.挂匾.入宅.移徙.安床.栽种.入殓.破土.安葬.除服.成服.", "j": "开市.立券.", "c": "生肖冲马", "s": "煞南", "ch": "危", "zc": "正冲正冲壬午", "ts": "房床碓外正北" }, "d0401": { "y": "塞穴.整手足甲.解除.捕捉.畋猎.结网.余事勿取.诸事不宜.", "j": "嫁娶.作灶.掘井.安葬.", "c": "生肖冲狗", "s": "煞南", "ch": "除", "zc": "正冲正冲丙戌", "ts": "仓库栖外正北" }, "d0402": { "y": "纳财.开市.立券.交易.开光.安床.上梁.造屋.修造.起基.", "j": "动土.破土.安葬.行丧.赴任.出行.嫁娶.入宅.移徙.谢土.词讼.", "c": "生肖冲猪", "s": "煞東", "ch": "满", "zc": "正冲正冲丁亥", "ts": "占房床房内北" }, "d0403": { "y": "祭祀.祈福.嫁娶.冠笄.修饰垣墙.置产.平治道涂.", "j": "开仓.出货财.造屋.作灶.开市.交易.立券.栽种.", "c": "生肖冲鼠", "s": "煞北", "ch": "平", "zc": "正冲正冲戊子", "ts": "占门碓房内北" }, "d0404": { "y": "祭祀.作灶.掘井.平治道涂.", "j": "嫁娶.安葬.", "c": "生肖冲牛", "s": "煞西", "ch": "平", "zc": "正冲正冲己丑", "ts": "碓磨厕房内北" }, "d0405": { "y": "祭祀.斋醮.开市.动土.入殓.破土.安葬.", "j": "嫁娶.移徙.入宅.", "c": "生肖冲虎", "s": "煞南", "ch": "定", "zc": "正冲正冲庚寅", "ts": "厨灶炉房内北" }, "d0406": { "y": "嫁娶.纳采.祭祀.祈福.出行.移徙.求医.", "j": "开市.动土.破土.", "c": "生肖冲兔", "s": "煞東", "ch": "执", "zc": "正冲正冲辛卯", "ts": "仓库门房内北" }, "d0407": { "y": "祭祀.求医.治病.解除.余事勿取.", "j": "诸事不宜.", "c": "生肖冲龙", "s": "煞北", "ch": "破", "zc": "正冲正冲壬辰", "ts": "房床栖房内南" }, "d0408": { "y": "沐浴.结网.取渔.", "j": "嫁娶.入宅.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "危", "zc": "正冲正冲癸巳", "ts": "占门床房内南" }, "d0409": { "y": "", "j": "诸事不宜.", "c": "生肖冲马", "s": "煞南", "ch": "成", "zc": "正冲正冲甲午", "ts": "占碓磨房内南" }, "d0410": { "y": "解除.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲羊", "s": "煞东", "ch": "收", "zc": "正冲正冲乙未", "ts": "厨灶厕房内南" }, "d0411": { "y": "嫁娶.开光.出行.出火.拆卸.进人口.开市.立券.交易.挂匾.入宅.移徙.安床.栽种.", "j": "祈福.入殓.祭祀.作灶.安葬.探病.", "c": "生肖冲猴", "s": "煞北", "ch": "开", "zc": "正冲正冲丙申", "ts": "仓库炉房内南" }, "d0412": { "y": "嫁娶.出行.合帐.冠笄.安床.除服.成服.作灶.交易.立券.入殓.移柩.破土.安葬.", "j": "词讼.开光.开市.", "c": "生肖冲鸡", "s": "煞西", "ch": "闭", "zc": "正冲正冲丁酉", "ts": "房床门房内南" }, "d0413": { "y": "出行.修饰垣墙.造畜椆栖.教牛马.余事勿取.", "j": "诸事不宜.", "c": "生肖冲狗", "s": "煞南", "ch": "建", "zc": "正冲正冲戊戌", "ts": "门鸡栖房内东" }, "d0414": { "y": "祭祀.祈福.开光.求嗣.解除.伐木.出火.入宅.移徙.安床.拆卸.修造.动土.造畜椆栖.", "j": "嫁娶.纳财.安葬.出行.开市.立券.作灶.栽种.", "c": "生肖冲猪", "s": "煞東", "ch": "除", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d0415": { "y": "纳采.嫁娶.开光.出行.理发.会亲友.开市.安床.栽种.牧养.入殓.移柩.启攒.", "j": "谢土.祈福.上梁.作灶.斋醮.修造.入宅.安门.", "c": "生肖冲鼠", "s": "煞北", "ch": "满", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d0416": { "y": "祭祀.平治道涂.解除.修饰垣墙.余事勿取.", "j": "诸事不宜.", "c": "生肖冲牛", "s": "煞西", "ch": "平", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d0417": { "y": "祭祀.祈福.开光.解除.动土.纳财.交易.纳畜.扫舍.", "j": "进人口.出行.嫁娶.置产.安床.赴任.安葬.作灶.", "c": "生肖冲虎", "s": "煞南", "ch": "定", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" }, "d0418": { "y": "祭祀.祈福.求嗣.开光.解除.出火.拆卸.入宅.安床.修造.安门.纳畜.启攒.安葬.", "j": "动土.破土.纳财.掘井.挂匾.开市.伐木.交易.", "c": "生肖冲兔", "s": "煞東", "ch": "执", "zc": "正冲正冲癸卯", "ts": "占大门外东北" }, "d0419": { "y": "祭祀.解除.破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲龙", "s": "煞北", "ch": "破", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d0420": { "y": "塞穴.扫舍.余事勿取.", "j": "诸事不宜.", "c": "生肖冲蛇", "s": "煞西", "ch": "危", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d0421": { "y": "祭祀.祈福.求嗣.开光.解除.纳采.冠笄.出火.拆卸.进人口.安床.动土.上梁.造庙.掘井.开池.入殓.移柩.安葬.破土.", "j": "", "c": "生肖冲马", "s": "煞南", "ch": "成", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d0422": { "y": "解除.破屋.余事勿取.", "j": "诸事不宜.", "c": "生肖冲羊", "s": "煞東", "ch": "收", "zc": "正冲正冲丁未", "ts": "房床厕外东北" }, "d0423": { "y": "嫁娶.祈福.求嗣.开光.出行.解除.拆卸.出火.开市.立券.交易.入宅.移徙.安床.动土.破土.谢土.", "j": "祭祀.入殓.安葬.探病.", "c": "生肖冲猴", "s": "煞北", "ch": "开", "zc": "正冲正冲戊申", "ts": "占门炉外东北" }, "d0424": { "y": "祭祀.裁衣.冠笄.安床.交易.立券.开池.补垣.塞穴.入殓.破土.启攒.安葬.谢土.除服.成服.", "j": "嫁娶.掘井.探病.开市.开光.栽种.", "c": "生肖冲鸡", "s": "煞西", "ch": "闭", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d0425": { "y": "祭祀.出行.教牛马.扫舍.余事勿取.", "j": "开光.伐木.安葬.破土.", "c": "生肖冲狗", "s": "煞南", "ch": "建", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d0426": { "y": "祭祀.祈福.求嗣.开光.纳采.订盟.解除.栽种.纳畜.牧养.扫舍.进人口.", "j": "修坟.造桥.作灶.出行.安葬.造屋.入宅.", "c": "生肖冲猪", "s": "煞東", "ch": "除", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d0428": { "y": "祭祀.作灶.畋猎.结网.修饰垣墙.平治道涂.余事勿取.", "j": "嫁娶.安床.治病.", "c": "生肖冲牛", "s": "煞西", "ch": "平", "zc": "正冲正冲癸丑", "ts": "占门厕外正东" }, "d0429": { "y": "沐浴.祭祀.解除.安葬.破土.谢土.移柩.余事勿取.", "j": "斋醮.开光.嫁娶.入宅.上梁.", "c": "生肖冲虎", "s": "煞南", "ch": "定", "zc": "正冲正冲甲寅", "ts": "碓磨炉外东南" }, "d0430": { "y": "祭祀.解除.入殓.移柩.启攒.安葬.整手足甲.捕捉.畋猎.取渔.除服.成服.扫舍.谢土.斋醮.", "j": "动土.破土.", "c": "生肖冲兔", "s": "煞東", "ch": "执", "zc": "正冲正冲乙卯", "ts": "厨灶门外东南" }, "d0522": { "y": "进人口.会亲友.", "j": "塞穴.上梁.动土.伐木.安葬.词讼.", "c": "生肖冲牛", "s": "煞西", "ch": "满", "zc": "正冲正冲丁丑", "ts": "房床厕外西北" }, "d0517": { "y": "结网.解除.余事勿取.", "j": "诸事不宜.", "c": "生肖冲猴", "s": "煞北", "ch": "收", "zc": "正冲正冲壬申", "ts": "房床厕外正南" }, "d0529": { "y": "解除.出行.纳采.冠笄.竖柱.上梁.移徙.作灶.进人口.入宅.纳畜.牧养.", "j": "祭祀.伐木.架马.安床.修造.动土.安葬.修坟.破土.", "c": "生肖冲猴", "s": "煞北", "ch": "收", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d0519": { "y": "嫁娶.祭祀.祈福.求嗣.出行.出火.拆卸.修造.动土.入宅.移徙.安床.作灶.塞穴.栽种.破土.安葬.", "j": "开光.掘井.开仓.", "c": "生肖冲狗", "s": "煞南", "ch": "闭", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d0629": { "y": "嫁娶.祭祀.理发.作灶.修饰垣墙.平治道涂.整手足甲.沐浴.冠笄.", "j": "破土.出行.栽种.", "c": "生肖冲兔", "s": "煞東", "ch": "平", "zc": "正冲正冲乙卯", "ts": "厨灶门外东南" }, "d0501": { "y": "祭祀.沐浴.解除.破屋.坏垣.求医.治病.余事勿取.", "j": "嫁娶.开市.", "c": "生肖冲龙", "s": "煞北", "ch": "破", "zc": "正冲正冲丙辰", "ts": "仓库栖外东南" }, "d0502": { "y": "沐浴.塞穴.畋猎.结网.取渔.扫舍.余事勿取.", "j": "祈福.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "危", "zc": "正冲正冲丁巳", "ts": "占房床外东南" }, "d0503": { "y": "开市.交易.立券.挂匾.祭祀.开光.祈福.求嗣.安床.解除.修造.安葬.", "j": "纳采.问名.订盟.嫁娶.入宅.开仓.出火.动土.破土.纳畜.伐木.", "c": "生肖冲马", "s": "煞南", "ch": "成", "zc": "正冲正冲戊午", "ts": "占门碓外东南" }, "d0504": { "y": "祭祀.修门.取渔.纳财.纳畜.余事勿取.", "j": "嫁娶.入宅.", "c": "生肖冲羊", "s": "煞東", "ch": "收", "zc": "正冲正冲己未", "ts": "碓磨厕外东南" }, "d0505": { "y": "嫁娶.纳采.出行.移徙.入宅.", "j": "动土.破土.安葬.", "c": "生肖冲猴", "s": "煞北", "ch": "收", "zc": "正冲正冲庚申", "ts": "厨灶炉外正南" }, "d0506": { "y": "订盟.纳采.祭祀.动土.破土.交易.立券.", "j": "嫁娶.安葬.", "c": "生肖冲鸡", "s": "煞西", "ch": "开", "zc": "正冲正冲辛酉", "ts": "仓库门外正南" }, "d0507": { "y": "嫁娶.裁衣.祭祀.出行.安床.作灶.移徙.入宅.破土.安葬.", "j": "赴任.捕捉.", "c": "生肖冲狗", "s": "煞南", "ch": "闭", "zc": "正冲正冲壬戌", "ts": "房床栖外正南" }, "d0508": { "y": "塞穴.结网.余事勿取.", "j": "诸事不宜.", "c": "生肖冲猪", "s": "煞東", "ch": "建", "zc": "正冲正冲癸亥", "ts": "占门床外正南" }, "d0509": { "y": "嫁娶.订盟.纳采.出行.祭祀.祈福.斋醮.动土.上梁.破土.安葬.", "j": "移徙.入宅.", "c": "生肖冲鼠", "s": "煞北", "ch": "除", "zc": "正冲正冲甲子", "ts": "占碓磨外正南" }, "d0510": { "y": "订盟.纳采.会亲友.安床.作灶.造畜椆栖.", "j": "开市.安葬.", "c": "生肖冲牛", "s": "煞西", "ch": "满", "zc": "正冲正冲乙丑", "ts": "厨灶厕外西南" }, "d0511": { "y": "沐浴.平治道涂.扫舍.入殓.移柩.破土.启攒.安葬.余事勿取.", "j": "诸事不宜.", "c": "生肖冲虎", "s": "煞南", "ch": "平", "zc": "正冲正冲丙寅", "ts": "仓库炉外西南" }, "d0512": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出行.出火.拆卸.动土.上梁.进人口.入宅.移徙.安床.安门.开市.交易.立券.挂匾.栽种.破土.安葬.", "j": "", "c": "生肖冲兔", "s": "煞東", "ch": "定", "zc": "正冲正冲丁卯", "ts": "房床门外西南" }, "d0513": { "y": "祭祀.开光.出行.解除.塑绘.裁衣.入殓.移柩.破土.启攒.安葬.除服.成服.", "j": "嫁娶.上梁.修造.拆卸.架马.入宅.伐木.动土.出火.开柱眼.", "c": "生肖冲龙", "s": "煞北", "ch": "执", "zc": "正冲正冲戊辰", "ts": "门鸡栖外西南" }, "d0514": { "y": "祭祀.解除.破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲蛇", "s": "煞西", "ch": "破", "zc": "正冲正冲己巳", "ts": "碓磨床外西南" }, "d0515": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出行.拆卸.动土.上梁.出火.进人口.入宅.移徙.安床.栽种.纳畜.牧养.竖柱.安门.修造.解除.会亲友.", "j": "", "c": "生肖冲马", "s": "煞南", "ch": "危", "zc": "正冲正冲庚午", "ts": "厨灶碓外西南" }, "d0516": { "y": "开市.交易.立券.祭祀.祈福.开光.伐木.进人口.安床.拆卸.修造.动土.栽种.破土.移柩.安葬.", "j": "入宅.移徙.理发.出火.嫁娶.出行.", "c": "生肖冲羊", "s": "煞東", "ch": "成", "zc": "正冲正冲辛未", "ts": "仓库厕外西南" }, "d0518": { "y": "嫁娶.祭祀.祈福.求嗣.开光.开市.交易.立券.安床.出行.拆卸.", "j": "纳畜.入宅.移徙.安葬.探病.伐木.上梁.安门.入殓.动土.", "c": "生肖冲鸡", "s": "煞西", "ch": "开", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d0520": { "y": "解除.扫舍.余事勿取.", "j": "诸事不宜.", "c": "生肖冲猪", "s": "煞東", "ch": "建", "zc": "正冲正冲乙亥", "ts": "厨灶床外正西" }, "d0521": { "y": "开市.交易.立券.挂匾.开光.出行.拆卸.进人口.入宅.移柩.动土.安门.上梁.栽种.破土.修坟.安葬.", "j": "嫁娶.安床.探病.作灶.", "c": "生肖冲鼠", "s": "煞北", "ch": "除", "zc": "正冲正冲丙子", "ts": "仓库碓外西北" }, "d0523": { "y": "沐浴.平治道涂.扫舍.入殓.破土.安葬.除服.成服.", "j": "嫁娶.移徙.伐木.作梁.安床.祭祀.祈福.造屋.", "c": "生肖冲虎", "s": "煞南", "ch": "平", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d0524": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出火.出行.拆卸.动土.解除.进人口.开市.交易.立券.挂匾.入宅.移徙.安床.安门.上梁.安葬.破土.谢土.", "j": "", "c": "生肖冲兔", "s": "煞東", "ch": "定", "zc": "正冲正冲己卯", "ts": "占门炉外西北" }, "d0525": { "y": "祭祀.祈福.求嗣.开光.解除.合帐.冠笄.伐木.架马.作梁.修造.进人口.嫁娶.裁衣.合帐.安床.动土.起基.上梁.竖柱.放水.会亲友.", "j": "", "c": "生肖冲龙", "s": "煞北", "ch": "执", "zc": "正冲正冲庚辰", "ts": "厨灶栖外西北" }, "d0526": { "y": "破屋.坏垣.沐浴.解除.余事勿取.", "j": "诸事不宜.", "c": "生肖冲蛇", "s": "煞西", "ch": "破", "zc": "正冲正冲辛巳", "ts": "仓库床外西北" }, "d0528": { "y": "开市.交易.立券.祭祀.祈福.开光.动土.安床.出行.栽种.纳畜.牧养.竖柱.上梁.解除.破土.", "j": "嫁娶.掘井.入宅.移徙.安葬.", "c": "生肖冲羊", "s": "煞東", "ch": "成", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d0530": { "y": "祭祀.祈福.求嗣.开光.出行.开市.交易.立券.栽种.安床.纳畜.移徙.起基.动土.定磉.造仓.置产.破土.启攒.修坟.", "j": "入宅.移徙.修造.安门.伐木.入殓.安葬.造屋.", "c": "生肖冲鸡", "s": "煞西", "ch": "开", "zc": "正冲正冲乙酉", "ts": "厨灶门外正北" }, "d0531": { "y": "嫁娶.交易.立券.作厕.补垣.塞穴.畋猎.取渔.开生坟.", "j": "安床.开渠.上梁.修造.开市.开光.入宅.移徙.安床.", "c": "生肖冲狗", "s": "煞南", "ch": "闭", "zc": "正冲正冲丙戌", "ts": "仓库栖外正北" }, "d0624": { "y": "解除.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲狗", "s": "煞南", "ch": "开", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d0622": { "y": "开市.交易.立券.纳财.栽种.安床.拆卸.修造.动土.上梁.入殓.安葬.破土.除服.成服.", "j": "嫁娶.出火.伐木.祭祀.入宅.移徙.纳畜.探病.", "c": "生肖冲猴", "s": "煞北", "ch": "成", "zc": "正冲正冲戊申", "ts": "占门炉外东北" }, "d0614": { "y": "祭祀.解除.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鼠", "s": "煞北", "ch": "建", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d0612": { "y": "嫁娶.开光.祭祀.祈福.求嗣.出行.解除.伐木.入宅.移徙.安床.出火.拆卸.修造.上梁.栽种.移柩.", "j": "安葬.开市.交易.立券.", "c": "生肖冲狗", "s": "煞南", "ch": "开", "zc": "正冲正冲戊戌", "ts": "门鸡栖房内东" }, "d0619": { "y": "祭祀.祈福.求嗣.开光.出行.伐木.出火.拆卸.修造.动土.起基.安床.入宅.移徙.", "j": "嫁娶.开市.交易.行丧.安葬.修坟.", "c": "生肖冲蛇", "s": "煞西", "ch": "执", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d0627": { "y": "纳采.订盟.嫁娶.祭祀.祈福.开市.纳财.立券.移徙.出行.修造.动土.起基.定磉.竖柱.拆卸.扫舍.放水.安香.安床.造船.开池.掘井.造畜椆栖.栽种.", "j": "行丧.安葬.破土.作灶.伐木.斋醮.", "c": "生肖冲牛", "s": "煞西", "ch": "除", "zc": "正冲正冲癸丑", "ts": "占门厕外正东" }, "d0604": { "y": "纳采.嫁娶.裁衣.理发.出行.修造.动土.进人口.开市.交易.立券.挂匾.移徙.上梁.栽种.纳畜.", "j": "伐木.安葬.安床.祭祀.祈福.", "c": "生肖冲虎", "s": "煞南", "ch": "平", "zc": "正冲正冲庚寅", "ts": "厨灶炉房内北" }, "d0727": { "y": "破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲羊", "s": "煞東", "ch": "破", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d0601": { "y": "塞穴.断蚁.结网.畋猎.余事勿取.", "j": "嫁娶.安葬.入宅.出行.动土.词讼.", "c": "生肖冲猪", "s": "煞東", "ch": "建", "zc": "正冲正冲丁亥", "ts": "占房床房内北" }, "d0602": { "y": "纳采.订盟.嫁娶.祭祀.祈福.求嗣.开光.解除.出行.出火.入宅.移徙.栽种.纳畜.牧养.动土.破土.入殓.安葬.", "j": "作灶.安床.开仓.造屋.动土.安葬.", "c": "生肖冲鼠", "s": "煞北", "ch": "除", "zc": "正冲正冲戊子", "ts": "占门碓房内北" }, "d0603": { "y": "开光.纳采.裁衣.冠笄.安床.作灶.进人口.造仓.塞穴.", "j": "嫁娶.栽种.修造.动土.出行.伐木.作梁.安葬.谢土.", "c": "生肖冲牛", "s": "煞西", "ch": "满", "zc": "正冲正冲己丑", "ts": "碓磨厕房内北" }, "d0605": { "y": "嫁娶.祭祀.沐浴.扫舍.修饰垣墙.", "j": "行丧.安葬.", "c": "生肖冲兔", "s": "煞東", "ch": "平", "zc": "正冲正冲辛卯", "ts": "仓库门房内北" }, "d0606": { "y": "嫁娶.订盟.纳采.出行.开市.祭祀.祈福.动土.移徙.入宅.破土.安葬.", "j": "作灶.", "c": "生肖冲龙", "s": "煞北", "ch": "定", "zc": "正冲正冲壬辰", "ts": "房床栖房内南" }, "d0607": { "y": "订盟.纳采.出行.祭祀.祈福.修造.动土.移徙.入宅.", "j": "开市.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "执", "zc": "正冲正冲癸巳", "ts": "占门床房内南" }, "d0608": { "y": "诸事不宜.", "j": "诸事不宜.", "c": "生肖冲马", "s": "煞南", "ch": "破", "zc": "正冲正冲甲午", "ts": "占碓磨房内南" }, "d0609": { "y": "嫁娶.订盟.纳采.祭祀.祈福.入殓.破土.安葬.", "j": "开光.开市.", "c": "生肖冲羊", "s": "煞東", "ch": "危", "zc": "正冲正冲乙未", "ts": "厨灶厕房内南" }, "d0610": { "y": "开光.求医.治病.动土.上梁.入殓.破土.安葬.", "j": "嫁娶.开光.", "c": "生肖冲猴", "s": "煞北", "ch": "成", "zc": "正冲正冲丙申", "ts": "仓库炉房内南" }, "d0611": { "y": "祭祀.栽种.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鸡", "s": "煞西", "ch": "收", "zc": "正冲正冲丁酉", "ts": "房床门房内南" }, "d0613": { "y": "求嗣.嫁娶.纳采.合帐.裁衣.冠笄.伐木.作梁.修造.动土.起基.竖柱.上梁.安门.作灶.筑堤.造畜椆栖.", "j": "安葬.出行.祈福.栽种.", "c": "生肖冲猪", "s": "煞東", "ch": "闭", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d0615": { "y": "嫁娶.祭祀.祈福.出火.开光.求嗣.出行.拆卸.开市.交易.立券.挂匾.入宅.移徙.安床.栽种.动土.", "j": "安葬.行丧.伐木.作梁.", "c": "生肖冲牛", "s": "煞西", "ch": "除", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d0616": { "y": "开光.求嗣.出行.解除.伐木.出火.拆卸.修造.上梁.起基.入宅.移徙.开市.交易.立券.栽种.牧养.入殓.安葬.除服.成服.", "j": "置产.安床.", "c": "生肖冲虎", "s": "煞南", "ch": "满", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" }, "d0617": { "y": "祭祀.理发.修饰垣墙.平治道涂.沐浴.整手足甲.扫舍.", "j": "出行.安门.修造.嫁娶.上梁.入宅.", "c": "生肖冲兔", "s": "煞東", "ch": "平", "zc": "正冲正冲癸卯", "ts": "占大门外东北" }, "d0618": { "y": "嫁娶.祭祀.开光.祈福.求嗣.出行.出火.拆卸.动土.修造.进人口.入宅.移徙.安床.挂匾.交易.立券.栽种.纳畜.入殓.破土.启攒.安葬.", "j": "", "c": "生肖冲龙", "s": "煞北", "ch": "定", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d0620": { "y": "破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲马", "s": "煞南", "ch": "破", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d0621": { "y": "开市.交易.立券.纳财.开池.作厕.结网.祭祀.修造.动土.安床.放水.经络.破土.", "j": "嫁娶.造桥.词讼.移徙.安门.作灶.栽种.", "c": "生肖冲羊", "s": "煞東", "ch": "危", "zc": "正冲正冲丁未", "ts": "房床厕外东北" }, "d0623": { "y": "祭祀.作灶.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鸡", "s": "煞西", "ch": "收", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d0625": { "y": "修造.动土.起基.安门.安床.栽种.筑堤.补垣.造畜椆栖.", "j": "嫁娶.掘井.入宅.移徙.出火.出行.行丧.安葬.开光.理发.进人口.", "c": "生肖冲猪", "s": "煞東", "ch": "闭", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d0626": { "y": "祭祀.教牛马.断蚁.余事勿取.", "j": "斋醮.移徙.入宅.动土.", "c": "生肖冲鼠", "s": "煞北", "ch": "建", "zc": "正冲正冲壬子", "ts": "房床碓外正东" }, "d0628": { "y": "嫁娶.开光.祭祀.祈福.出行.解除.移徙.入宅.开市.纳财.起基.修造.竖柱.上梁.造屋.作灶.出火.安香.补垣.塞穴.拆卸.放水.扫舍.造仓.造船.栽种.安葬.", "j": "纳采.订盟.安床.谢土.破土.动土.", "c": "生肖冲虎", "s": "煞南", "ch": "满", "zc": "正冲正冲甲寅", "ts": "碓磨炉外东南" }, "d0630": { "y": "嫁娶.纳采.订盟.祭祀.祈福.求嗣.开光.出火.出行.拆卸.修造.动土.进人口.入宅.移徙.安床.交易.立券.挂匾.纳财.入殓.安葬.启攒.除服.成服.", "j": "动土.掘井.破土.", "c": "生肖冲龙", "s": "煞北", "ch": "定", "zc": "正冲正冲丙辰", "ts": "仓库栖外东南" }, "d0728": { "y": "开市.交易.立券.纳财.动土.开光.出行.嫁娶.纳采.订盟.出行.纳财.入学.开仓.出货财.纳畜.牧养.栽种.破土.启攒.安葬.立碑.", "j": "入宅.移徙.作灶.祭祀.谢土.", "c": "生肖冲猴", "s": "煞北", "ch": "危", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d0725": { "y": "祭祀.祈福.求嗣.开光.伐木.出火.拆卸.入宅.安床.修造.动土.上梁.挂匾.纳畜.", "j": "嫁娶.栽种.行丧.理发.修坟.行丧.作灶.", "c": "生肖冲蛇", "s": "煞西", "ch": "定", "zc": "正冲正冲辛巳", "ts": "仓库床外西北" }, "d0718": { "y": "祭祀.作灶.纳财.栽种.纳畜.进人口.", "j": "安葬.经络.修坟.破土.开市.安床.启攒.立碑.", "c": "生肖冲狗", "s": "煞南", "ch": "收", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d0708": { "y": "补垣.塞穴.结网.入殓.除服.成服.移柩.安葬.启攒.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鼠", "s": "煞北", "ch": "闭", "zc": "正冲正冲甲子", "ts": "占碓磨外正南" }, "d0717": { "y": "嫁娶.开光.出行.祈福.求嗣.解除.拆卸.动土.修造.进人口.开市.交易.立券.挂匾.入宅.移徙.安床.栽种.纳畜.入殓.移柩.安葬.", "j": "", "c": "生肖冲鸡", "s": "煞西", "ch": "成", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d0707": { "y": "嫁娶.开市.立券.祭祀.祈福.动土.移徙.入宅.", "j": "造庙.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "开", "zc": "正冲正冲癸亥", "ts": "占门床外正南" }, "d0722": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出火.拆卸.修造.动土.进人口.开市.交易.立券.挂匾.入宅.移徙.栽种.纳畜.入殓.启攒.除服.成服.", "j": "", "c": "生肖冲虎", "s": "煞南", "ch": "除", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d0726": { "y": "解除.祭祀.理发.入殓.安葬.破土.", "j": "嫁娶.开市.出火.作灶.置产.斋醮.入宅.移徙.安门.", "c": "生肖冲马", "s": "煞南", "ch": "执", "zc": "正冲正冲壬午", "ts": "房床碓外正北" }, "d0716": { "y": "嫁娶.开光.出行.理发.作梁.出火.拆卸.修造.开市.交易.立券.挂匾.动土.入宅.移徙.安床.栽种.", "j": "伐木.祭祀.纳畜.祭祀.", "c": "生肖冲猴", "s": "煞北", "ch": "危", "zc": "正冲正冲壬申", "ts": "房床厕外正南" }, "d0712": { "y": "嫁娶.祭祀.裁衣.结网.冠笄.沐浴.", "j": "开仓.出货财.置产.安葬.动土.破土.掘井.栽种.", "c": "生肖冲龙", "s": "煞北", "ch": "平", "zc": "正冲正冲戊辰", "ts": "门鸡栖外西南" }, "d0702": { "y": "祭祀.破屋.坏垣.余事勿取.", "j": "移徙.入宅.开仓.出货财.", "c": "生肖冲马", "s": "煞南", "ch": "破", "zc": "正冲正冲戊午", "ts": "占门碓外东南" }, "d0706": { "y": "嫁娶.纳采.订盟.冠笄.造车器.祭祀.开光.祈福.求嗣.出行.解除.伐木.出火.入宅.拆卸.修造.动土.上梁.安床.栽种.破土.", "j": "行丧.置产.入宅.安葬.", "c": "生肖冲狗", "s": "煞南", "ch": "开", "zc": "正冲正冲壬戌", "ts": "房床栖外正南" }, "d0729": { "y": "嫁娶.纳采.订盟.祭祀.祈福.求嗣.开光.出火.出行.拆卸.修造.动土.进人口.开市.交易.立券.挂匾.入宅.移徙.安床.栽种.入殓.破土.谢土.安葬.", "j": "掘井.伐木.纳畜.合寿木.", "c": "生肖冲鸡", "s": "煞西", "ch": "成", "zc": "正冲正冲乙酉", "ts": "厨灶门外正北" }, "d0719": { "y": "祭祀.祈福.求嗣.开光.开市.牧养.理发.", "j": "嫁娶.出行.安葬.入殓.入宅.作灶.冠笄.上梁.", "c": "生肖冲猪", "s": "煞東", "ch": "开", "zc": "正冲正冲乙亥", "ts": "厨灶床外正西" }, "d0715": { "y": "破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲羊", "s": "煞東", "ch": "破", "zc": "正冲正冲辛未", "ts": "仓库厕外西南" }, "d0826": { "y": "祭祀.动土.筑堤.开池.会亲友.塞穴.入殓.移柩.破土.安葬.", "j": "开光.出行.修造.上梁.入宅.安门.作灶.裁衣.", "c": "生肖冲牛", "s": "煞西", "ch": "闭", "zc": "正冲正冲癸丑", "ts": "占门厕外正东" }, "d0701": { "y": "畋猎.捕捉.结网.取渔.祭祀.沐浴.余事勿取.", "j": "嫁娶.开市.安葬.启攒.行丧.", "c": "生肖冲蛇", "s": "煞西", "ch": "执", "zc": "正冲正冲丁巳", "ts": "占房床外东南" }, "d0703": { "y": "祭祀.斋醮.塑绘.开光.出行.修造.动土.造畜椆栖.安床.放水.掘井.开池.作厕.结网.破土.", "j": "出火.入宅.", "c": "生肖冲羊", "s": "煞東", "ch": "危", "zc": "正冲正冲己未", "ts": "碓磨厕外东南" }, "d0704": { "y": "开市.交易.立券.挂匾.开光.解除.拆卸.动土.安床.修造.上梁.置产.栽种.破土.安葬.", "j": "作灶.出火.祭祀.嫁娶.入宅.", "c": "生肖冲猴", "s": "煞北", "ch": "成", "zc": "正冲正冲庚申", "ts": "厨灶炉外正南" }, "d0705": { "y": "祭祀.结网.余事勿取.", "j": "入宅.出行.掘井.安葬.", "c": "生肖冲鸡", "s": "煞西", "ch": "收", "zc": "正冲正冲辛酉", "ts": "仓库门外正南" }, "d0709": { "y": "嫁娶.纳采.出行.祭祀.祈福.解除.移徙.入宅.", "j": "动土.安葬.", "c": "生肖冲牛", "s": "煞西", "ch": "建", "zc": "正冲正冲乙丑", "ts": "厨灶厕外西南" }, "d0710": { "y": "嫁娶.祭祀.祈福.斋醮.治病.破土.安葬.", "j": "开市.入宅.", "c": "生肖冲虎", "s": "煞南", "ch": "除", "zc": "正冲正冲丙寅", "ts": "仓库炉外西南" }, "d0711": { "y": "嫁娶.出行.开市.安床.入殓.启攒.安葬.", "j": "祈福.动土.破土.", "c": "生肖冲兔", "s": "煞東", "ch": "满", "zc": "正冲正冲丁卯", "ts": "房床门外西南" }, "d0713": { "y": "入宅.移徙.安床.开光.祈福.求嗣.进人口.开市.交易.立券.出火.拆卸.修造.动土.", "j": "嫁娶.破土.置产.栽种.安葬.修坟.行丧.", "c": "生肖冲蛇", "s": "煞西", "ch": "定", "zc": "正冲正冲己巳", "ts": "碓磨床外西南" }, "d0714": { "y": "祭祀.解除.沐浴.整手足甲.入殓.移柩.破土.启攒.安葬.", "j": "嫁娶.入宅.移徙.作灶.开市.交易.安门.栽种.", "c": "生肖冲马", "s": "煞南", "ch": "执", "zc": "正冲正冲庚午", "ts": "厨灶碓外西南" }, "d0720": { "y": "祭祀.入殓.破土.除服.成服.移柩.启攒.安葬.谢土.余事勿取.", "j": "余事勿取.", "c": "生肖冲鼠", "s": "煞北", "ch": "闭", "zc": "正冲正冲丙子", "ts": "仓库碓外西北" }, "d0721": { "y": "祭祀.出行.交易.割蜜.造畜椆栖.", "j": "嫁娶.作灶.安葬.动土.词讼.作梁.伐木.掘井.破土.移徙.", "c": "生肖冲牛", "s": "煞西", "ch": "建", "zc": "正冲正冲丁丑", "ts": "房床厕外西北" }, "d0723": { "y": "嫁娶.开光.解除.安床.牧养.理发.开市.入殓.启攒.移柩.安葬.扫舍.", "j": "作灶.动土.上梁.栽种.入宅.移徙.修造.祈福.", "c": "生肖冲兔", "s": "煞東", "ch": "满", "zc": "正冲正冲己卯", "ts": "占门炉外西北" }, "d0724": { "y": "祭祀.解除.余事勿取.", "j": "诸事不宜.", "c": "生肖冲龙", "s": "煞北", "ch": "平", "zc": "正冲正冲庚辰", "ts": "厨灶栖外西北" }, "d0730": { "y": "祭祀.冠笄.作灶.交易.纳财.栽种.结网.纳畜.牧养.进人口.", "j": "开渠.造船.安床.安葬.破土.出行.修坟.掘井.开市.开生坟.", "c": "生肖冲狗", "s": "煞南", "ch": "收", "zc": "正冲正冲丙戌", "ts": "仓库栖外正北" }, "d0731": { "y": "嫁娶.纳采.订盟.祭祀.祈福.求嗣.纳采.裁衣.冠笄.开光.安床.作梁.修造.动土.作灶.起基.上梁.造屋.纳畜.牧养.", "j": "移徙.栽种.出行.行丧.破土.安葬.词讼.", "c": "生肖冲猪", "s": "煞東", "ch": "开", "zc": "正冲正冲丁亥", "ts": "占房床房内北" }, "d0816": { "y": "祭祀.解除.沐浴.理发.整手足甲.入殓.移柩.破土.安葬.扫舍.", "j": "嫁娶.会亲友.进人口.出行.入宅.移徙.赴任.作灶.", "c": "生肖冲兔", "s": "煞東", "ch": "除", "zc": "正冲正冲癸卯", "ts": "占大门外东北" }, "d0822": { "y": "祭祀.结网.入殓.移柩.启攒.安葬.移柩.除服.成服.合寿木.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鸡", "s": "煞西", "ch": "危", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d0812": { "y": "订盟.纳采.祭祀.祈福.安机械.作灶.纳畜.", "j": "动土.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "收", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d0802": { "y": "嫁娶.祭祀.出行.裁衣.冠笄.交易.雕刻.纳财.造畜椆栖.造车器.雕刻.教牛马.", "j": "移徙.入宅.栽种.动土.破土.作灶.安葬.行丧.伐木.上梁.", "c": "生肖冲牛", "s": "煞西", "ch": "建", "zc": "正冲正冲己丑", "ts": "碓磨厕房内北" }, "d0829": { "y": "纳采.订盟.开光.出行.解除.安香.出火.拆卸.入宅.移徙.修造.上梁.安床.栽种.纳畜.会亲友.安机械.经络.", "j": "伐木.谢土.行丧.祭祀.作灶.动土.破土.安葬.祈福.", "c": "生肖冲龙", "s": "煞北", "ch": "满", "zc": "正冲正冲丙辰", "ts": "仓库栖外东南" }, "d0929": { "y": "开市.交易.立券.纳财.挂匾.栽种.祭祀.祈福.开光.拆卸.动土.安床.", "j": "嫁娶.破土.进人口.出行.入宅.移徙.出火.纳畜.词讼.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "成", "zc": "正冲正冲丁亥", "ts": "占房床房内北" }, "d0801": { "y": "经络.祭祀.沐浴.补垣.塞穴.除服.成服.移柩.入殓.启攒.立碑.", "j": "开光.治病.嫁娶.掘井.破土.安葬.", "c": "生肖冲鼠", "s": "煞北", "ch": "闭", "zc": "正冲正冲戊子", "ts": "占门碓房内北" }, "d0803": { "y": "修造.动土.安机械.祭祀.沐浴.解除.拆卸.治病.作灶.造屋.起基.开池.扫舍.造畜椆栖.开生坟.合寿木.安葬.破土.启攒.移柩.入殓.立碑.", "j": "开市.入宅.出行.安床.作灶.", "c": "生肖冲虎", "s": "煞南", "ch": "除", "zc": "正冲正冲庚寅", "ts": "厨灶炉房内北" }, "d0804": { "y": "嫁娶.纳采.订盟.造车器.开光.出行.拆卸.起基.安床.除服.成服.开市.交易.立券.栽种.牧养.入殓.移柩.启攒.", "j": "上梁.入宅.修造.动土.破土.祭祀.祈福.斋醮.", "c": "生肖冲兔", "s": "煞東", "ch": "满", "zc": "正冲正冲辛卯", "ts": "仓库门房内北" }, "d0805": { "y": "祭祀.嫁娶.畋猎.结网.", "j": "动土.破土.治病.开渠.", "c": "生肖冲龙", "s": "煞北", "ch": "平", "zc": "正冲正冲壬辰", "ts": "房床栖房内南" }, "d0806": { "y": "纳采.订盟.会亲友.入学.祭祀.祈福.求嗣.开光.出行.解除.理发.动土.起基.开市.交易.立券.纳财.造仓.栽种.纳畜.牧养.", "j": "嫁娶.作灶.出火.置产.嫁娶.入宅.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "定", "zc": "正冲正冲癸巳", "ts": "占门床房内南" }, "d0807": { "y": "嫁娶.祭祀.祈福.斋醮.动土.移徙.入宅.", "j": "开市.安葬.", "c": "生肖冲马", "s": "煞南", "ch": "定", "zc": "正冲正冲甲午", "ts": "占碓磨房内南" }, "d0808": { "y": "捕捉.结网.入殓.破土.安葬.", "j": "嫁娶.入宅.", "c": "生肖冲羊", "s": "煞東", "ch": "执", "zc": "正冲正冲乙未", "ts": "厨灶厕房内南" }, "d0809": { "y": "沐浴.治病.破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲猴", "s": "煞北", "ch": "破", "zc": "正冲正冲丙申", "ts": "仓库炉房内南" }, "d0810": { "y": "嫁娶.订盟.纳采.出行.开市.祭祀.祈福.移徙.入宅.启攒.安葬.", "j": "动土.破土.", "c": "生肖冲鸡", "s": "煞西", "ch": "危", "zc": "正冲正冲丁酉", "ts": "房床门房内南" }, "d0811": { "y": "嫁娶.订盟.纳采.祭祀.祈福.求医.治病.动土.移徙.入宅.破土.安葬.", "j": "开光.针灸.", "c": "生肖冲狗", "s": "煞南", "ch": "成", "zc": "正冲正冲戊戌", "ts": "门鸡栖房内东" }, "d0813": { "y": "嫁娶.祭祀.祈福.求嗣.出行.动土.安床.掘井.破土.启攒.", "j": "入宅.作梁.安门.伐木.修造.上梁.入殓.造屋.", "c": "生肖冲鼠", "s": "煞北", "ch": "开", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d0814": { "y": "嫁娶.祭祀.祈福.求嗣.出行.出火.拆卸.修造.移徙.动土.安床.入殓.破土.安葬.启攒.", "j": "造屋.开光.理发.造船.掘井.作灶.", "c": "生肖冲牛", "s": "煞西", "ch": "闭", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d0815": { "y": "祭祀.祈福.求嗣.开光.出行.解除.上梁.造屋.移徙.安门.纳财.牧养.纳畜.安葬.启攒.入殓.", "j": "破土.置产.掘井.动土.安床.", "c": "生肖冲虎", "s": "煞南", "ch": "建", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" }, "d0817": { "y": "塑绘.开光.进人口.纳畜.补垣.塞穴.栽种.牧养.", "j": "嫁娶.纳财.祈福.安葬.修造.开市.交易.立券.动土.上梁.", "c": "生肖冲龙", "s": "煞北", "ch": "满", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d0818": { "y": "祭祀.作灶.沐浴.修饰垣墙.平治道涂.余事勿取.", "j": "诸事不宜.", "c": "生肖冲蛇", "s": "煞西", "ch": "平", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d0819": { "y": "祭祀.求嗣.开光.出行.伐木.作梁.出火.解除.拆卸.进人口.修造.动土.起基.安床.栽种.纳畜.入殓.破土.安葬.除服.成服.", "j": "嫁娶.移徙.", "c": "生肖冲马", "s": "煞南", "ch": "定", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d0820": { "y": "祭祀.求医.捕捉.栽种.塞穴.入殓.破土.安葬.移柩.余事勿取.", "j": "诸事不宜.", "c": "生肖冲羊", "s": "煞东", "ch": "执", "zc": "正冲正冲丁未", "ts": "房床厕外东北" }, "d0821": { "y": "破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲猴", "s": "煞北", "ch": "破", "zc": "正冲正冲戊申", "ts": "占门炉外东北" }, "d0823": { "y": "嫁娶.出火.拆卸.祭祀.祈福.开光.伐木.动土.开市.交易.立券.入宅.移徙.安床.纳畜.入殓.安葬.", "j": "栽种.作灶.针灸.出行.", "c": "生肖冲狗", "s": "煞南", "ch": "成", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d0824": { "y": "祭祀.开光.解除.移徙.裁衣.开市.立券.祈福.求嗣.进人口.交易.纳财.纳畜.", "j": "动土.破土.理发.出行.入宅.分居.安香.出火.", "c": "生肖冲猪", "s": "煞東", "ch": "收", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d0825": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出行.解除.安床.栽种.移柩.进人口.会亲友.除服.成服.", "j": "造屋.入殓.安葬.伐木.入宅.移徙.置产.纳畜.", "c": "生肖冲鼠", "s": "煞北", "ch": "开", "zc": "正冲正冲壬子", "ts": "房床碓外正东" }, "d0827": { "y": "祭祀.裁衣.安门.纳财.扫舍.出行.进人口.作灶.纳畜.造畜椆栖.", "j": "安床.动土.安葬.开生坟.合寿木.", "c": "生肖冲虎", "s": "煞南", "ch": "建", "zc": "正冲正冲甲寅", "ts": "碓磨炉外东南" }, "d0828": { "y": "祭祀.解除.拆卸.修造.动土.起基.上梁.安床.安门.开渠.开池.入殓.破土.启攒.", "j": "嫁娶.出行.进人口.作灶.入宅.移徙.栽种.赴任.", "c": "生肖冲兔", "s": "煞東", "ch": "除", "zc": "正冲正冲乙卯", "ts": "厨灶门外东南" }, "d0830": { "y": "修饰垣墙.平治道涂.祭祀.沐浴.作灶.", "j": "嫁娶.词讼.治病.置产.作梁.祈福.安葬.栽种.伐木.安门.", "c": "生肖冲蛇", "s": "煞西", "ch": "平", "zc": "正冲正冲丁巳", "ts": "占房床外东南" }, "d0831": { "y": "嫁娶.祭祀.祈福.求嗣.出火.出行.开光.解除.拆卸.修造.进人口.安香.交易.立券.入宅.移徙.安床.动土.破土.谢土.安葬.入殓.除服.成服.", "j": "斋醮.开市.开仓.作灶.造船.", "c": "生肖冲马", "s": "煞南", "ch": "定", "zc": "正冲正冲戊午", "ts": "占门碓外东南" }, "d0925": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出行.出火.拆卸.修造.动土.进人口.入宅.移徙.安床.开市.交易.立券.挂匾.栽种.纳畜.入殓.安葬.除服.成服.", "j": "", "c": "生肖冲羊", "s": "煞東", "ch": "定", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d1029": { "y": "祭祀.开光.出行.解除.理发.伐木.出火.拆卸.上梁.合脊.安床.造畜椆栖.", "j": "嫁娶.安葬.行丧.词讼.造桥.作灶.破土.动土.", "c": "生肖冲蛇", "s": "煞西", "ch": "除", "zc": "正冲正冲丁巳", "ts": "占房床外东南" }, "d0901": { "y": "破土.安葬.移柩.入殓.祭祀.捕捉.除服.成服.余事勿取.", "j": "嫁娶.入宅.开市.交易.", "c": "生肖冲羊", "s": "煞東", "ch": "执", "zc": "正冲正冲己未", "ts": "碓磨厕外东南" }, "d0902": { "y": "破屋.坏垣.治病.余事勿取.", "j": "祈福.纳采.订盟.嫁娶.入宅.安葬.", "c": "生肖冲猴", "s": "煞北", "ch": "破", "zc": "正冲正冲庚申", "ts": "厨灶炉外正南" }, "d0903": { "y": "嫁娶.开光.祭祀.祈福.求嗣.安香.出火.解除.伐木.入宅.移徙.安床.开市.交易.立券.栽种.出火.出行.安葬.", "j": "掘井.理发.作灶.动土.破土.开池.", "c": "生肖冲鸡", "s": "煞西", "ch": "危", "zc": "正冲正冲辛酉", "ts": "仓库门外正南" }, "d0904": { "y": "安机械.纳采.订盟.祭祀.祈福.求嗣.开光.普渡.出行.出火.拆卸.修造.动土.进人口.开市.交易.立券.移徙.安床.栽种.上梁.纳畜.破土.移柩.安葬.", "j": "入宅.嫁娶.掘井.牧养.", "c": "生肖冲狗", "s": "煞南", "ch": "成", "zc": "正冲正冲壬戌", "ts": "房床栖外正南" }, "d0905": { "y": "嫁娶.祭祀.祈福.求嗣.裁衣.冠笄.经络.修造.进人口.安床.动土.竖柱.上梁.移徙.交易.立券.栽种.会亲友.", "j": "行丧.安葬.出行.作梁.纳畜.伐木.造桥.", "c": "生肖冲猪", "s": "煞東", "ch": "收", "zc": "正冲正冲癸亥", "ts": "占门床外正南" }, "d0906": { "y": "嫁娶.纳采.订盟.开光.祭祀.出行.理发.动土.安床.放水.开渠.栽种.进人口.", "j": "入宅.上梁.入殓.造屋.探病.作灶.安门.安葬.纳畜.伐木.", "c": "生肖冲鼠", "s": "煞北", "ch": "开", "zc": "正冲正冲甲子", "ts": "占碓磨外正南" }, "d0907": { "y": "祭祀.诸事不宜.", "j": "入殓.安葬.开市.交易.", "c": "生肖冲牛", "s": "煞西", "ch": "开", "zc": "正冲正冲乙丑", "ts": "厨灶厕外西南" }, "d0908": { "y": "祭祀.裁衣.冠笄.嫁娶.安机械.拆卸.动土.起基.移徙.入宅.入殓.启攒.安葬.造仓.经络.", "j": "安床.开光.开市.交易.", "c": "生肖冲虎", "s": "煞南", "ch": "闭", "zc": "正冲正冲丙寅", "ts": "仓库炉外西南" }, "d0909": { "y": "祭祀.出行.成服.除服.沐浴.入殓.", "j": "动土.冠笄.移徙.入宅.开市.竖柱.上梁.", "c": "生肖冲兔", "s": "煞東", "ch": "建", "zc": "正冲正冲丁卯", "ts": "房床门外西南" }, "d0910": { "y": "祭祀.沐浴.赴任.出行.余事勿取.", "j": "诸事不宜.", "c": "生肖冲龙", "s": "煞北", "ch": "除", "zc": "正冲正冲戊辰", "ts": "门鸡栖外西南" }, "d0911": { "y": "诸事不宜.", "j": "诸事不宜.", "c": "生肖冲蛇", "s": "煞西", "ch": "满", "zc": "正冲正冲己巳", "ts": "碓磨床外西南" }, "d0912": { "y": "沐浴.入殓.移柩.除服.成服.破土.平治道涂.", "j": "嫁娶.移徙.入宅.开市.", "c": "生肖冲马", "s": "煞南", "ch": "平", "zc": "正冲正冲庚午", "ts": "厨灶碓外西南" }, "d0913": { "y": "嫁娶.祭祀.祈福.求嗣.沐浴.出火.出行.拆卸.修造.动土.进人口.开市.交易.立券.入宅.移徙.安床.栽种.纳畜.入殓.安葬.启攒.除服.成服.", "j": "", "c": "生肖冲羊", "s": "煞東", "ch": "定", "zc": "正冲正冲辛未", "ts": "仓库厕外西南" }, "d0914": { "y": "开光.解除.起基.动土.拆卸.上梁.立碑.修坟.安葬.破土.启攒.移柩.", "j": "嫁娶.出行.安床.作灶.祭祀.入宅.移徙.出火.进人口.置产.", "c": "生肖冲猴", "s": "煞北", "ch": "执", "zc": "正冲正冲壬申", "ts": "房床厕外正南" }, "d0915": { "y": "破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鸡", "s": "煞西", "ch": "破", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d0916": { "y": "嫁娶.祈福.求嗣.出行.出火.拆卸.修造.动土.上梁.开光.进人口.开市.交易.立券.挂匾.安床.入宅.移徙.栽种.伐木.入殓.破土.除服.成服.", "j": "", "c": "生肖冲狗", "s": "煞南", "ch": "危", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d0917": { "y": "开市.交易.立券.挂匾.祭祀.开光.进人口.入宅.安床.出火.拆卸.修造.动土.栽种.", "j": "嫁娶.立碑.出行.伐木.安葬.行丧.移徙.纳畜.", "c": "生肖冲猪", "s": "煞東", "ch": "成", "zc": "正冲正冲乙亥", "ts": "厨灶床外正西" }, "d0918": { "y": "祭祀.理发.会亲友.进人口.嫁娶.针灸.入殓.移柩.", "j": "探病.开渠.安葬.伐木.作灶.入宅.", "c": "生肖冲鼠", "s": "煞北", "ch": "收", "zc": "正冲正冲丙子", "ts": "仓库碓外西北" }, "d0919": { "y": "祭祀.立碑.修坟.启攒.除服.成服.余事勿取.", "j": "余事勿取.", "c": "生肖冲牛", "s": "煞西", "ch": "开", "zc": "正冲正冲丁丑", "ts": "房床厕外西北" }, "d0920": { "y": "嫁娶.出行.伐木.拆卸.修造.动土.移徙.安葬.破土.修坟.立碑.", "j": "掘井.祈福.安床.开市.入宅.挂匾.开光.", "c": "生肖冲虎", "s": "煞南", "ch": "闭", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d0921": { "y": "祭祀.出行.扫舍.余事勿取.", "j": "诸事不宜.", "c": "生肖冲兔", "s": "煞東", "ch": "建", "zc": "正冲正冲己卯", "ts": "占门炉外西北" }, "d0922": { "y": "嫁娶.祭祀.塑绘.开光.出行.解除.理发.整手足甲.动土.安床.开池.放水.扫舍.", "j": "伐木.行丧.作灶.作梁.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "除", "zc": "正冲正冲庚辰", "ts": "厨灶栖外西北" }, "d0923": { "y": "开市.交易.立券.挂匾.开光.出行.入宅.移徙.安床.出火.上梁.", "j": "作灶.行丧.理发.乘船.嫁娶.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "满", "zc": "正冲正冲辛巳", "ts": "仓库床外西北" }, "d0924": { "y": "祭祀.沐浴.修饰垣墙.平治道涂.余事勿取.", "j": "诸事不宜.", "c": "生肖冲马", "s": "煞南", "ch": "平", "zc": "正冲正冲壬午", "ts": "房床碓外正北" }, "d0926": { "y": "解除.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲猴", "s": "煞北", "ch": "执", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d0927": { "y": "祭祀.治病.破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鸡", "s": "煞西", "ch": "破", "zc": "正冲正冲乙酉", "ts": "厨灶门外正北" }, "d0928": { "y": "嫁娶.纳采.订盟.祭祀.开光.出行.理发.作梁.出火.拆卸.修造.动土.进人口.入宅.移徙.安床.移徙.拆卸.挂匾.栽种.纳畜.破土.安葬.入殓.除服.成服.", "j": "开市.掘井.开渠.造桥.造船.", "c": "生肖冲狗", "s": "煞南", "ch": "危", "zc": "正冲正冲丙戌", "ts": "仓库栖外正北" }, "d0930": { "y": "嫁娶.祭祀.理发.进人口.作灶.移柩.冠笄.会亲友.", "j": "开仓.出货财.伐木.纳畜.开市.上梁.造屋.破土.启攒.栽种.", "c": "生肖冲鼠", "s": "煞北", "ch": "收", "zc": "正冲正冲戊子", "ts": "占门碓房内北" }, "d1025": { "y": "嫁娶.祭祀.作灶.纳财.", "j": "安葬.开市.修坟.立碑.", "c": "生肖冲牛", "s": "煞西", "ch": "收", "zc": "正冲正冲癸丑", "ts": "占门厕外正东" }, "d1015": { "y": "祭祀.解除.裁衣.理发.安床.作灶.造畜椆栖.放水.筑堤.补垣.塞穴.整手足甲.扫舍.", "j": "嫁娶.开光.会亲友.掘井.安门.栽种.", "c": "生肖冲兔", "s": "煞東", "ch": "闭", "zc": "正冲正冲癸卯", "ts": "占大门外东北" }, "d1030": { "y": "纳采.订盟.会亲友.沐浴.理发.裁衣.冠笄.安床.除服.成服.启攒.移柩.安葬.会亲友.开生坟.", "j": "开市.入宅.出行.嫁娶.修坟.祈福.动土.入宅.安门.谢土.上梁.", "c": "生肖冲马", "s": "煞南", "ch": "满", "zc": "正冲正冲戊午", "ts": "占门碓外东南" }, "d1005": { "y": "纳采.订盟.开市.交易.立券.挂匾.纳财.栽种.进人口.入宅.移徙.安床.开光.出火.拆卸.安门.修造.", "j": "斋醮.嫁娶.行丧.动土.作灶.安葬.破土.", "c": "生肖冲蛇", "s": "煞西", "ch": "满", "zc": "正冲正冲癸巳", "ts": "占门床房内南" }, "d1125": { "y": "嫁娶.开光.出行.出火.拆卸.修造.动土.入宅.移徙.安床.上梁.开市.交易.立券.栽种.", "j": "祈福.祭祀.伐木.掘井.作灶.谢土.", "c": "生肖冲猴", "s": "煞北", "ch": "平", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d1001": { "y": "祭祀.修坟.除服.成服.启攒.移柩.余事勿取.", "j": "开市.入宅.嫁娶.动土.破土.安葬.", "c": "生肖冲牛", "s": "煞西", "ch": "开", "zc": "正冲正冲己丑", "ts": "碓磨厕房内北" }, "d1002": { "y": "嫁娶.冠笄.安机械.解除.纳畜.牧养.沐浴.伐木.架马.作梁.安门.扫舍.合寿木.安葬.启攒.立碑.修坟.", "j": "祈福.开光.开市.入宅.动土.", "c": "生肖冲虎", "s": "煞南", "ch": "闭", "zc": "正冲正冲庚寅", "ts": "厨灶炉房内北" }, "d1003": { "y": "祭祀.出行.沐浴.扫舍.安葬.余事勿取.", "j": "动土.破土.置产.掘井.", "c": "生肖冲兔", "s": "煞東", "ch": "建", "zc": "正冲正冲辛卯", "ts": "仓库门房内北" }, "d1004": { "y": "嫁娶.纳采.祭祀.解除.出行.修造.动土.开市.上梁.安床.整手足甲.扫舍.求医.治病.起基.定磉.造屋.合脊.", "j": "造庙.行丧.安葬.伐木.作灶.造船.", "c": "生肖冲龙", "s": "煞北", "ch": "除", "zc": "正冲正冲壬辰", "ts": "房床栖房内南" }, "d1006": { "y": "祭祀.沐浴.修饰垣墙.平治道涂.余事勿取.", "j": "嫁娶.入宅.安床.出行.", "c": "生肖冲马", "s": "煞南", "ch": "平", "zc": "正冲正冲甲午", "ts": "占碓磨房内南" }, "d1007": { "y": "开光.祈福.求嗣.斋醮.修造.动土.纳财.造仓.作厕.栽种.牧养.会亲友.", "j": "作灶.出火.进人口.开渠.入宅.移徙.祭祀.", "c": "生肖冲羊", "s": "煞東", "ch": "定", "zc": "正冲正冲乙未", "ts": "厨灶厕房内南" }, "d1008": { "y": "入殓.除服.成服.移柩.破土.启攒.安葬.", "j": "移徙.入宅.", "c": "生肖冲猴", "s": "煞北", "ch": "定", "zc": "正冲正冲丙申", "ts": "仓库炉房内南" }, "d1009": { "y": "嫁娶.订盟.纳采.出行.祭祀.祈福.动土.移徙.入宅.破土.安葬.", "j": "开市.赴任.", "c": "生肖冲鸡", "s": "煞西", "ch": "执", "zc": "正冲正冲丁酉", "ts": "房床门房内南" }, "d1010": { "y": "祭祀.解除.破屋.坏垣.余事勿取.", "j": "余事勿取.", "c": "生肖冲狗", "s": "煞南", "ch": "破", "zc": "正冲正冲戊戌", "ts": "门鸡栖房内东" }, "d1011": { "y": "订盟.纳采.会亲友.安机械.纳财.牧养.", "j": "祈福.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "危", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d1012": { "y": "嫁娶.订盟.纳采.出行.开市.祭祀.祈福.动土.移徙.入宅.破土.安葬.", "j": "斋醮.安门.", "c": "生肖冲鼠", "s": "煞北", "ch": "成", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d1013": { "y": "祭祀.塞穴.余事勿取.", "j": "诸事不宜.", "c": "生肖冲牛", "s": "煞西", "ch": "收", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d1014": { "y": "祭祀.祈福.求嗣.开光.开市.出行.解除.动土.起基.置产.栽种.", "j": "嫁娶.作灶.修坟.安门.入宅.立碑.安葬.安床.", "c": "生肖冲虎", "s": "煞南", "ch": "开", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" }, "d1016": { "y": "祭祀.出行.裁衣.冠笄.会亲友.造畜椆栖.嫁娶.竖柱.上梁.移徙.纳财.纳畜.", "j": "动土.伐木.作梁.行丧.安葬.开生坟.", "c": "生肖冲龙", "s": "煞北", "ch": "建", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d1017": { "y": "祭祀.祈福.求嗣.开光.出行.解除.移徙.伐木.安床.纳畜.出火.拆卸.", "j": "安葬.修坟.作灶.破土.造庙.动土.嫁娶.纳采.", "c": "生肖冲蛇", "s": "煞西", "ch": "除", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d1018": { "y": "开市.交易.立券.纳财.会亲友.开光.理发.入殓.移柩.安葬.启攒.", "j": "嫁娶.作灶.出火.出行.入宅.移徙.安床.祈福.上梁.", "c": "生肖冲马", "s": "煞南", "ch": "满", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d1019": { "y": "造畜椆栖.平治道涂.余事勿取.", "j": "诸事不宜.", "c": "生肖冲羊", "s": "煞東", "ch": "平", "zc": "正冲正冲丁未", "ts": "房床厕外东北" }, "d1020": { "y": "入殓.破土.安葬.启攒.除服.成服.余事勿取.", "j": "余事勿取.", "c": "生肖冲猴", "s": "煞北", "ch": "定", "zc": "正冲正冲戊申", "ts": "占门炉外东北" }, "d1021": { "y": "祭祀.入殓.移柩.开生坟.破土.启攒.安葬.除服.成服.余事勿取.", "j": "余事勿取.", "c": "生肖冲鸡", "s": "煞西", "ch": "执", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d1022": { "y": "祭祀.解除.破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲狗", "s": "煞南", "ch": "破", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d1023": { "y": "嫁娶.求嗣.纳采.进人口.纳财.结网.纳畜.牧养.会亲友.", "j": "上梁.作灶.伐木.出行.安葬.安门.理发.", "c": "生肖冲猪", "s": "煞東", "ch": "危", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d1024": { "y": "嫁娶.祭祀.开市.开光.出行.入宅.移徙.出火.拆卸.修造.安床.", "j": "纳畜.伐木.置产.作梁.行丧.安葬.修坟.立碑.", "c": "生肖冲鼠", "s": "煞北", "ch": "成", "zc": "正冲正冲壬子", "ts": "房床碓外正东" }, "d1026": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出行.解除.出火.进人口.开市.交易.立券.挂匾.纳财.入宅.移徙.栽种.破土.谢土.", "j": "安床.安葬.", "c": "生肖冲虎", "s": "煞南", "ch": "开", "zc": "正冲正冲甲寅", "ts": "碓磨炉外东南" }, "d1027": { "y": "嫁娶.祭祀.祈福.求嗣.动土.安床.扫舍.入殓.移柩.破土.启攒.安葬.作灶.整手足甲.补垣.除服.成服.", "j": "开光.栽种.", "c": "生肖冲兔", "s": "煞東", "ch": "闭", "zc": "正冲正冲乙卯", "ts": "厨灶门外东南" }, "d1028": { "y": "祭祀.祈福.求嗣.开光.出行.解除.上梁.入宅.移徙.安床.安门.纳财.纳畜.造畜椆栖.", "j": "伐木.行丧.破土.嫁娶.安葬.开渠.", "c": "生肖冲龙", "s": "煞北", "ch": "建", "zc": "正冲正冲丙辰", "ts": "仓库栖外东南" }, "d1031": { "y": "解除.祭祀.修饰垣墙.平治道涂.造畜椆栖.余事勿取.", "j": "嫁娶.开市.交易.入宅.入学.安葬.", "c": "生肖冲羊", "s": "煞東", "ch": "平", "zc": "正冲正冲己未", "ts": "碓磨厕外东南" }, "d1121": { "y": "安床.祭祀.开池.补垣.入殓.移柩.破土.启攒.", "j": "入宅.移徙.嫁娶.掘井.作灶.出火.进人口.开市.开光.", "c": "生肖冲龙", "s": "煞北", "ch": "闭", "zc": "正冲正冲庚辰", "ts": "厨灶栖外西北" }, "d1221": { "y": "入宅.安床.开光.祭祀.出火.拆卸.动土.挂匾.入殓.破土.安葬.纳畜.", "j": "嫁娶.开市.作灶.置产.作梁.伐木.", "c": "生肖冲狗", "s": "煞南", "ch": "定", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d1101": { "y": "入殓.破土.启攒.安葬.除服.成服.余事勿取.", "j": "开市.入宅.祭祀.置产.补垣.塞穴.", "c": "生肖冲猴", "s": "煞北", "ch": "定", "zc": "正冲正冲庚申", "ts": "厨灶炉外正南" }, "d1102": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出行.拆卸.修造.动土.上梁.安床.纳畜.入殓.破土.", "j": "入宅.移徙.掘井.理发.伐木.交易.开市.作灶.", "c": "生肖冲鸡", "s": "煞西", "ch": "执", "zc": "正冲正冲辛酉", "ts": "仓库门外正南" }, "d1103": { "y": "祭祀.沐浴.破屋.坏垣.余事勿取.", "j": "嫁娶.入宅.上梁.出行.安葬.", "c": "生肖冲狗", "s": "煞南", "ch": "破", "zc": "正冲正冲壬戌", "ts": "房床栖外正南" }, "d1104": { "y": "祭祀.求嗣.冠笄.进人口.会亲友.安门.安床.经络.纳财.牧养.畋猎.放水.割蜜.", "j": "祈福.斋醮.纳采.订盟.嫁娶.入宅.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "危", "zc": "正冲正冲癸亥", "ts": "占门床外正南" }, "d1105": { "y": "嫁娶.纳采.订盟.开市.交易.立券.挂匾.祭祀.祈福.开光.造车器.挂匾.出行.入宅.移徙.安床.安门.拆卸.修造.动土.栽种.安葬.破土.启攒.除服.成服.入殓.立碑.", "j": "探病.纳畜.伐木.起基.作梁.造屋.", "c": "生肖冲鼠", "s": "煞北", "ch": "成", "zc": "正冲正冲甲子", "ts": "占碓磨外正南" }, "d1106": { "y": "祭祀.冠笄.移徙.会亲友.纳财.理发.捕捉.", "j": "嫁娶.开市.开池.作厕.破土.", "c": "生肖冲牛", "s": "煞西", "ch": "收", "zc": "正冲正冲乙丑", "ts": "厨灶厕外西南" }, "d1107": { "y": "沐浴.扫舍.余事勿取.", "j": "诸事不宜.", "c": "生肖冲虎", "s": "煞南", "ch": "收", "zc": "正冲正冲丙寅", "ts": "仓库炉外西南" }, "d1108": { "y": "诸事不宜.", "j": "诸事不宜.", "c": "生肖冲兔", "s": "煞東", "ch": "开", "zc": "正冲正冲丁卯", "ts": "房床门外西南" }, "d1109": { "y": "祈福.斋醮.出行.订盟.纳采.入殓.移柩.破土.安葬.立碑.结网.", "j": "入宅.作灶.", "c": "生肖冲龙", "s": "煞北", "ch": "闭", "zc": "正冲正冲戊辰", "ts": "门鸡栖外西南" }, "d1110": { "y": "祭祀.沐浴.出行.冠笄.进人口.余事勿取.", "j": "嫁娶.动土.安葬.作灶.", "c": "生肖冲蛇", "s": "煞西", "ch": "建", "zc": "正冲正冲己巳", "ts": "碓磨床外西南" }, "d1111": { "y": "祭祀.祈福.斋醮.塑绘.开光.订盟.纳采.裁衣.冠笄.嫁娶.拆卸.入宅.安香.入殓.移柩.理发.安葬.修坟.谢土.赴任.移徙.沐浴.治病.破土.启攒.整手足甲.入学.作梁.", "j": "开市.", "c": "生肖冲马", "s": "煞南", "ch": "除", "zc": "正冲正冲庚午", "ts": "厨灶碓外西南" }, "d1112": { "y": "诸事不宜.", "j": "诸事不宜.", "c": "生肖冲羊", "s": "煞東", "ch": "满", "zc": "正冲正冲辛未", "ts": "仓库厕外西南" }, "d1113": { "y": "开市.交易.立券.挂匾.纳财.开光.出行.入宅.移徙.安床.纳畜.入殓.移柩.安葬.", "j": "栽种.破土.置产.祭祀.嫁娶.动土.作灶.祈福.", "c": "生肖冲猴", "s": "煞北", "ch": "平", "zc": "正冲正冲壬申", "ts": "房床厕外正南" }, "d1114": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出行.解除.出火.出行.拆卸.进人口.入宅.移徙.安床.栽种.动土.修造.纳畜.入殓.安葬.立碑.除服.成服.", "j": "", "c": "生肖冲鸡", "s": "煞西", "ch": "定", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d1115": { "y": "开光.解除.拆卸.修造.动土.安床.纳畜.安葬.启攒.入殓.", "j": "嫁娶.开市.出火.栽种.破土.动土.入宅.移徙.安香.分居.掘井.作灶.", "c": "生肖冲狗", "s": "煞南", "ch": "执", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d1116": { "y": "破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲猪", "s": "煞東", "ch": "破", "zc": "正冲正冲乙亥", "ts": "厨灶床外正西" }, "d1117": { "y": "嫁娶.祭祀.开光.出火.出行.拆卸.修造.动土.解除.开市.交易.立券.挂匾.纳财.入宅.移徙.安床.栽种.纳畜.", "j": "探病.安葬.", "c": "生肖冲鼠", "s": "煞北", "ch": "危", "zc": "正冲正冲丙子", "ts": "仓库碓外西北" }, "d1118": { "y": "祭祀.祈福.求嗣.开光.解除.理发.会亲友.栽种.纳畜.牧养.安葬.修坟.立碑.启攒.", "j": "入宅.作灶.词讼.移徙.出行.赴任.", "c": "生肖冲牛", "s": "煞西", "ch": "成", "zc": "正冲正冲丁丑", "ts": "房床厕外西北" }, "d1119": { "y": "祭祀.沐浴.结网.移柩.入殓.除服.成服.", "j": "安床.开市.交易.出货财.安葬.修坟.嫁娶.作灶.", "c": "生肖冲虎", "s": "煞南", "ch": "收", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d1120": { "y": "解除.余事勿取.", "j": "余事勿取.", "c": "生肖冲兔", "s": "煞东", "ch": "开", "zc": "正冲正冲己卯", "ts": "占门炉外西北" }, "d1122": { "y": "祭祀.沐浴.余事勿取.", "j": "余事勿取.", "c": "生肖冲蛇", "s": "煞西", "ch": "建", "zc": "正冲正冲辛巳", "ts": "仓库床外西北" }, "d1123": { "y": "嫁娶.开光.出行.解除.出火.拆卸.修造.进人口.动土.入宅.移徙.栽种.纳畜.掘井.安葬.除服.成服.", "j": "置产.安床.", "c": "生肖冲马", "s": "煞南", "ch": "除", "zc": "正冲正冲壬午", "ts": "房床碓外正北" }, "d1124": { "y": "开光.裁衣.安门.会亲友.安床.结网.理发.", "j": "嫁娶.冠笄.出行.祈福.安葬.伐木.入宅.移徙.出火.栽种.动土.上梁.", "c": "生肖冲羊", "s": "煞東", "ch": "满", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d1126": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出火.出行.拆卸.开市.交易.立券.挂匾.伐木.入宅.移徙.安床.安葬.", "j": "栽种.掘井.置产.", "c": "生肖冲鸡", "s": "煞西", "ch": "定", "zc": "正冲正冲乙酉", "ts": "厨灶门外正北" }, "d1127": { "y": "祭祀.理发.针灸.解除.进人口.整手足甲.", "j": "嫁娶.动土.造船.开池.掘井.出行.修造.入宅.上梁.移徙.安葬.破土.作灶.开市.", "c": "生肖冲狗", "s": "煞南", "ch": "执", "zc": "正冲正冲丙戌", "ts": "仓库栖外正北" }, "d1128": { "y": "破屋.坏垣.求医.治病.余事勿取.", "j": "嫁娶.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "破", "zc": "正冲正冲丁亥", "ts": "占房床房内北" }, "d1129": { "y": "纳采.订盟.嫁娶.祭祀.祈福.雕刻.移徙.开市.入宅.出行.动土.会亲友.入学.修造.动土.起基.安门.安床.造庙.解除.纳财.开池.造畜椆栖.牧养.牧养.", "j": "上梁.开仓.出货财.造屋.造船.", "c": "生肖冲鼠", "s": "煞北", "ch": "危", "zc": "正冲正冲戊子", "ts": "占门碓房内北" }, "d1130": { "y": "祭祀.祈福.求嗣.开光.解除.伐木.拆卸.修造.栽种.纳畜.安葬.修坟.立碑.", "j": "嫁娶.进人口.入宅.移徙.出火.出行.", "c": "生肖冲牛", "s": "煞西", "ch": "成", "zc": "正冲正冲己丑", "ts": "碓磨厕房内北" }, "d1228": { "y": "沐浴.冠笄.补垣.塞穴.合帐.裁衣.修造.作梁.开柱眼.安碓硙.筑堤.作厕.断蚁.", "j": "移徙.入宅.嫁娶.祈福.开光.掘井.", "c": "生肖冲蛇", "s": "煞西", "ch": "闭", "zc": "正冲正冲丁巳", "ts": "占房床外东南" }, "d1226": { "y": "祭祀.开光.理发.整手足甲.安床.作灶.扫舍.教牛马.", "j": "伐木.纳畜.破土.安葬.开生坟.嫁娶.开市.动土.交易.作梁.", "c": "生肖冲兔", "s": "煞東", "ch": "收", "zc": "正冲正冲乙卯", "ts": "厨灶门外东南" }, "d1206": { "y": "祭祀.塑绘.理发.会亲友.牧养.开池.造畜椆栖.畋猎.结网.", "j": "祈福.谢土.安葬.上梁.作灶.开市.嫁娶.出行.入宅.动土.", "c": "生肖冲羊", "s": "煞東", "ch": "满", "zc": "正冲正冲乙未", "ts": "厨灶厕房内南" }, "d1223": { "y": "破屋.坏垣.祭祀.沐浴.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鼠", "s": "煞北", "ch": "破", "zc": "正冲正冲壬子", "ts": "房床碓外正东" }, "d1225": { "y": "解除.扫舍.余事勿取.", "j": "诸事不宜.", "c": "生肖冲虎", "s": "煞南", "ch": "成", "zc": "正冲正冲甲寅", "ts": "碓磨炉外东南" }, "d1201": { "y": "沐浴.扫舍.捕捉.畋猎.解除.塞穴.余事勿取.", "j": "嫁娶.入宅.开市.安床.破土.修坟.", "c": "生肖冲虎", "s": "煞南", "ch": "收", "zc": "正冲正冲庚寅", "ts": "厨灶炉房内北" }, "d1202": { "y": "嫁娶.冠笄.祭祀.祈福.求嗣.斋醮.开光.出行.解除.动土.开市.交易.立券.挂匾.拆卸.破土.", "j": "伐木.上梁.修造.入殓.理发.会亲友.入宅.安门.安葬.作灶.", "c": "生肖冲兔", "s": "煞東", "ch": "开", "zc": "正冲正冲辛卯", "ts": "仓库门房内北" }, "d1203": { "y": "合帐.裁衣.嫁娶.安床.入殓.移柩.破土.造畜椆栖.", "j": "置产.造船.开光.掘井.作灶.", "c": "生肖冲龙", "s": "煞北", "ch": "闭", "zc": "正冲正冲壬辰", "ts": "房床栖房内南" }, "d1204": { "y": "解除.修饰垣墙.冠笄.出行.余事勿取.", "j": "开市.动土.破土.嫁娶.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "建", "zc": "正冲正冲癸巳", "ts": "占门床房内南" }, "d1205": { "y": "纳采.订盟.嫁娶.祭祀.祈福.求嗣.开光.出行.解除.进人口.开市.立券.挂匾.入宅.移徙.安门.栽种.动土.求医.治病.会亲友.起基.修造.造屋.安葬.", "j": "作灶.经络.安床.", "c": "生肖冲马", "s": "煞南", "ch": "除", "zc": "正冲正冲甲午", "ts": "占碓磨房内南" }, "d1207": { "y": "开市.立券.开光.解除.安机械.上梁.启攒.安葬.", "j": "嫁娶.祈福.", "c": "生肖冲猴", "s": "煞北", "ch": "满", "zc": "正冲正冲丙申", "ts": "仓库炉房内南" }, "d1208": { "y": "平治道涂.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鸡", "s": "煞西", "ch": "平", "zc": "正冲正冲丁酉", "ts": "房床门房内南" }, "d1209": { "y": "求嗣.斋醮.塑绘.订盟.纳采.出火.拆卸.修造.动土.造桥.安机械.栽种.纳畜.牧养.入殓.除服.成服.移柩.破土.安葬.", "j": "开市.嫁娶.", "c": "生肖冲狗", "s": "煞南", "ch": "定", "zc": "正冲正冲戊戌", "ts": "门鸡栖房内东" }, "d1210": { "y": "嫁娶.订盟.纳采.祭祀.祈福.修造.动土.移徙.入宅.", "j": "开市.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "执", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d1211": { "y": "治病.破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鼠", "s": "煞北", "ch": "破", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d1212": { "y": "祭祀.祈福.求嗣.斋醮.开光.入学.订盟.冠笄.伐木.修造.动土.起基.放水.交易.开池.", "j": "造桥.安门.理发.造庙.栽种.作灶.", "c": "生肖冲牛", "s": "煞西", "ch": "危", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d1213": { "y": "解除.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲虎", "s": "煞南", "ch": "成", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" }, "d1214": { "y": "沐浴.理发.扫舍.", "j": "伐木.纳畜.上梁.入宅.作灶.造畜椆栖.嫁娶.安葬.作梁.造船.安门.", "c": "生肖冲兔", "s": "煞東", "ch": "收", "zc": "正冲正冲癸卯", "ts": "占大门外东北" }, "d1215": { "y": "祭祀.开光.祈福.解除.作梁.动土.安床.掘井.栽种.纳畜.破土.移柩.", "j": "嫁娶.出行.赴任.造屋.入殓.入宅.移徙.出火.进人口.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "开", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d1216": { "y": "诸事不宜.作梁.修造.动土.安门.作灶.塞穴.开池.作厕.筑堤.补垣.栽种.", "j": "嫁娶.祈福.掘井.行丧.安葬.安床.", "c": "生肖冲蛇", "s": "煞西", "ch": "闭", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d1217": { "y": "安葬.启攒.移柩.入殓.除服.成服.", "j": "余事勿取.", "c": "生肖冲马", "s": "煞南", "ch": "建", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d1218": { "y": "嫁娶.祭祀.祈福.求嗣.出行.出火.拆卸.开市.交易.立券.挂匾.入宅.移徙.安床.栽种.", "j": "作灶.塑绘.行丧.词讼.伐木.安葬.", "c": "生肖冲羊", "s": "煞东", "ch": "除", "zc": "正冲正冲丁未", "ts": "房床厕外东北" }, "d1219": { "y": "理发.开光.解除.拆卸.修造.安葬.开市.交易.立券.挂匾.安床.栽种.", "j": "入宅.移徙.作灶.祈福.祭祀.嫁娶.谢土.掘井.造屋.探病.", "c": "生肖冲猴", "s": "煞北", "ch": "满", "zc": "正冲正冲戊申", "ts": "占门炉外东北" }, "d1220": { "y": "祭祀.修饰垣墙.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鸡", "s": "煞西", "ch": "平", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d1222": { "y": "祭祀.解除.余事勿取.", "j": "诸事不宜.", "c": "生肖冲猪", "s": "煞東", "ch": "执", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d1224": { "y": "安床.祭祀.祈福.求嗣.冠笄.伐木.架马.动土.开池.作厕.结网.入殓.除服.成服.", "j": "安门.栽种.作灶.治病.", "c": "生肖冲牛", "s": "煞西", "ch": "危", "zc": "正冲正冲癸丑", "ts": "占门厕外正东" }, "d1227": { "y": "祭祀.祈福.求嗣.开光.拆卸.修造.动土.上梁.安床.置产.栽种.破土.", "j": "嫁娶.进人口.安葬.出行.赴任.入宅.移徙.入殓.开渠.", "c": "生肖冲龙", "s": "煞北", "ch": "开", "zc": "正冲正冲丙辰", "ts": "仓库栖外东南" }, "d1229": { "y": "交易.进人口.祭祀.沐浴.捕捉.入殓.除服.成服.安葬.谢土.启攒.修坟.", "j": "斋醮.入宅.修造.动土.破土.", "c": "生肖冲马", "s": "煞南", "ch": "建", "zc": "正冲正冲戊午", "ts": "占门碓外东南" }, "d1230": { "y": "嫁娶.纳采.订盟.造车器.祭祀.祈福.造庙.安香.出火.出行.归宁.入学.入宅.交易.立券.求医.治病.修造.动土.竖柱.上梁.造屋.起基.安门.", "j": "斋醮.伐木.作梁.安葬.行丧.", "c": "生肖冲羊", "s": "煞東", "ch": "除", "zc": "正冲正冲己未", "ts": "碓磨厕外东南" }, "d1231": { "y": "纳采.订盟.开市.交易.立券.出行.会亲友.安机械.竖柱.上梁.平治道涂.伐木.拆卸.造屋.起基.安床.安门.解除.安葬.启攒.除服.成服.修坟.立碑.移柩.入殓.", "j": "嫁娶.动土.破土.祈福.出火.入宅.", "c": "生肖冲猴", "s": "煞北", "ch": "满", "zc": "正冲正冲庚申", "ts": "厨灶炉外正南" } } ukui-panel-4.0.0.4/plugin-calendar/html/hlnew/hl2031.json0000644000175000017500000011733414560306203021311 0ustar fengfeng{ "d0101": { "j": "开市.安葬", "y": "嫁娶.出行.求医.治病.祭祀" }, "d0102": { "j": "嫁娶.祈福", "y": "开市.立券.开光.解除.安机械" }, "d0103": { "j": "诸事不宜", "y": "平治道涂.余事勿取" }, "d0104": { "j": "开市.嫁娶", "y": "求嗣.斋醮.塑绘.订盟.纳采" }, "d0105": { "j": "开市.出行.安葬.行丧", "y": "嫁娶.订盟.纳采.会亲友.祭祀" }, "d0106": { "j": "纳采.订盟.嫁娶.上樑.开市", "y": "沐浴.捕捉.畋猎.理髮.整手足甲" }, "d0107": { "j": "斋醮.嫁娶.开市", "y": "祭祀.破屋.坏垣.余事勿取" }, "d0108": { "j": "祈福.嫁娶.安床.入宅.造船", "y": "沐浴.开仓.出货财.开市.交易" }, "d0109": { "j": "造庙.入宅.修造.安葬.行丧", "y": "祭祀.沐浴.补垣.塞穴.断蚁" }, "d0110": { "j": "开市.安床.安葬.修坟", "y": "嫁娶.纳采.订盟.问名.祭祀" }, "d0111": { "j": "造庙.嫁娶.出行.动土.安葬", "y": "订盟.纳采.会亲友.祭祀.斋醮" }, "d0112": { "j": "开光.嫁娶.开市.动土.破土", "y": "交易.立券.纳财.安床.裁衣" }, "d0113": { "j": "破土.动土.安葬", "y": "祭祀.解除.教牛马.会亲友.余事勿取" }, "d0114": { "j": "探病.祭祀.出行.上樑.盖屋", "y": "纳采.订盟.移徙.纳财.开市" }, "d0115": { "j": "入宅.开光.开市.动土", "y": "嫁娶.订盟.纳采.祭祀.祈福" }, "d0116": { "j": "移徙.入宅.造庙.作灶.治病", "y": "祭祀.冠笄.嫁娶.会亲友.进人口" }, "d0117": { "j": "嫁娶.安葬", "y": "祭祀.安碓.结网.余事勿取" }, "d0118": { "j": "盖屋.开市.动土.破土", "y": "嫁娶.祭祀.沐浴.裁衣.出行" }, "d0119": { "j": "嫁娶.开市.安葬", "y": "破屋.坏垣.余事勿取" }, "d0120": { "j": "祈福.嫁娶.造庙.安床.谢土", "y": "纳采.订盟.祭祀.求嗣.出火" }, "d0121": { "j": "开市.伐木.嫁娶.作梁", "y": "入殓.除服.成服.移柩.启钻" }, "d0122": { "j": "开市.安床", "y": "祭祀.作灶.入殓.除服.余事勿取" }, "d0123": { "j": "嫁娶.入殓.安葬.出行", "y": "塑绘.开光.沐浴.冠笄.会亲友" }, "d0124": { "j": "开仓.嫁娶.移徙.入宅", "y": "祭祀.沐浴.祈福.斋醮.订盟" }, "d0125": { "j": "诸事不宜", "y": "祭祀.解除.余事勿取" }, "d0126": { "j": "作灶.祭祀.上樑.出行", "y": "沐浴.解除.订盟.纳采.裁衣" }, "d0127": { "j": "", "y": "出行.嫁娶.订盟.纳采.入殓" }, "d0128": { "j": "嫁娶.移徙.入宅.开光", "y": "修饰垣墙.平治道涂.入殓.移柩.余事勿取" }, "d0129": { "j": "出行.治病.安葬.开市", "y": "会亲友.纳采.进人口.修造.动土" }, "d0130": { "j": "盖屋.开市.作灶.入宅", "y": "祭祀.会亲友.出行.订盟.纳采" }, "d0131": { "j": "诸事不宜", "y": "解除.破屋.坏垣.余事勿取" }, "d0201": { "j": "入宅.安床", "y": "塑绘.开光.出行.订盟.纳采" }, "d0202": { "j": "破土.伐木", "y": "入殓.除服.成服.移柩.启钻" }, "d0203": { "j": "开仓.盖屋.安葬.安床", "y": "祭祀.祈福.斋醮.塑绘.开光" }, "d0204": { "j": "嫁娶.开市.安葬.破土", "y": "纳采.祭祀.祈福.出行.会亲友" }, "d0205": { "j": "移徙.入宅.出火.安门.安葬", "y": "纳采.嫁娶.祭祀.祈福.出行" }, "d0206": { "j": "嫁娶.动土.开光.盖屋.破土", "y": "祭祀.祈福.求嗣.斋醮.入殓" }, "d0207": { "j": "祭祀.移徙.入宅.动土.破土", "y": "纳采.会亲友.竖柱.上樑.立券" }, "d0208": { "j": "开光.嫁娶.作灶.掘井.纳畜", "y": "祭祀.祈福.斋醮.出行.开市" }, "d0209": { "j": "开市.动土.安葬.破土", "y": "会亲友.求嗣.理髮.冠笄.结网" }, "d0210": { "j": "嫁娶.祈福.掘井.安葬", "y": "祭祀.平治道涂.余事勿取" }, "d0211": { "j": "置产.盖屋.合嵴.开光.探病", "y": "祈福.求嗣.斋醮.纳采.嫁娶" }, "d0212": { "j": "开光.开市.入宅.动土.盖屋", "y": "入学.习艺.出行.纳采.订盟" }, "d0213": { "j": "入宅.开市.安葬", "y": "祭祀.沐浴.求医.治病.扫舍" }, "d0214": { "j": "安床.栽种.治病.作灶", "y": "祭祀.冠笄.嫁娶.拆卸.修造" }, "d0215": { "j": "开市.伐木.作梁.作灶", "y": "安机械.移徙.入宅.出行.祭祀" }, "d0216": { "j": "伐木.作灶.安葬.取渔.入宅", "y": "塑绘.开光.祈福.求嗣.订盟" }, "d0217": { "j": "安葬.上樑.入宅.作灶", "y": "祭祀.沐浴.开光.塑绘.祈福" }, "d0218": { "j": "出行.嫁娶.入宅.动土", "y": "祭祀.祈福.求嗣.酬神.裁衣" }, "d0219": { "j": "祭祀.祈福.移徙.嫁娶.入宅", "y": "裁衣.合帐.入殓.除服.成服" }, "d0220": { "j": "掘井", "y": "祭祀.斋醮.裁衣.合帐.冠笄" }, "d0221": { "j": "斋醮.作灶.安床.安葬", "y": "安床.合帐.入宅.问名.纳采" }, "d0222": { "j": "祭祀.祈福.安葬.安门.余事勿取", "y": "作灶.平治道涂" }, "d0223": { "j": "盖屋.栽种.安葬.作灶", "y": "塑绘.开光.酬神.斋醮.订盟" }, "d0224": { "j": "栽种.动土.开市.作灶", "y": "祭祀.祈福.酬神.订盟.纳采" }, "d0225": { "j": "诸事不宜", "y": "求医.破屋" }, "d0226": { "j": "作灶.安床", "y": "祈福.求嗣.斋醮.塑绘.开光" }, "d0227": { "j": "嫁娶.上樑.入宅.作灶", "y": "取渔.入殓.除服.成服.移柩" }, "d0228": { "j": "安葬.作灶.伐木.作梁", "y": "祭祀.求嗣.沐浴.酬神.订盟" }, "d0301": { "j": "入殓.安葬.作灶.入宅", "y": "祭祀.沐浴.祈福.求嗣.斋醮" }, "d0302": { "j": "开光.掘井.针灸.出行.嫁娶", "y": "祭祀.祈福.求嗣.入殓.启钻" }, "d0303": { "j": "嫁娶.出行.动土.开渠.入宅", "y": "安床.解除.裁衣.竖柱.上樑" }, "d0304": { "j": "掘井.词讼", "y": "嫁娶.安床.开光.出行.祭祀" }, "d0305": { "j": "入宅.移徙.出火.分居.安香", "y": "嫁娶.开光.求嗣.会亲友.安床" }, "d0306": { "j": "移徙.入宅.栽种", "y": "纳财.开市.交易.立券.开光" }, "d0307": { "j": "开市.盖屋.治病.作灶", "y": "嫁娶.冠笄.会亲友.安机械.纳财" }, "d0308": { "j": "纳畜.理髮.合寿木", "y": "嫁娶.造车器.纳采.订盟.祭祀" }, "d0309": { "j": "纳采.开光.安床.嫁娶.开市", "y": "祈福.斋醮.出行.移徙.入宅" }, "d0310": { "j": "嫁娶.移徙.开市.入宅", "y": "破屋.坏垣.余事勿取" }, "d0311": { "j": "塑绘.开光.造桥.除服.成服", "y": "嫁娶.冠笄.祭祀.出行.会亲友" }, "d0312": { "j": "祈福.嫁娶.安葬.破土", "y": "开光.求嗣.出行.纳采.冠笄" }, "d0313": { "j": "纳财.开市.安葬.破土", "y": "理髮.冠笄.嫁娶.进人口.栽种" }, "d0314": { "j": "纳采.动土.开市.交易.安门", "y": "开光.祈福.求嗣.出行.解除" }, "d0315": { "j": "祭祀.嫁娶.出行.上樑.掘井", "y": "裁衣.经络.伐木.开柱眼.拆卸" }, "d0316": { "j": "栽种.动土.安葬.掘井.修坟", "y": "祭祀.会亲友.立券.交易.裁衣" }, "d0317": { "j": "诸事不宜", "y": "扫舍.塞穴.余事勿取" }, "d0318": { "j": "作灶.出行.入宅.安葬", "y": "塑绘.开光.订盟.纳采.裁衣" }, "d0319": { "j": "动土.作灶.入宅.开光.安床", "y": "祭祀.嫁娶.纳婿.除服.成服" }, "d0320": { "j": "赴任", "y": "祈福.求嗣.开光.塑绘.斋醮" }, "d0321": { "j": "安床.嫁娶.作灶.入宅", "y": "祭祀.解除.入殓.除服.成服" }, "d0322": { "j": "诸事不宜", "y": "破屋.坏垣" }, "d0323": { "j": "作梁.造庙", "y": "祭祀.出行.订盟.纳采.裁衣" }, "d0324": { "j": "造庙.嫁娶.伐木.安葬", "y": "祭祀.开光.塑绘.订盟.纳采" }, "d0325": { "j": "嫁娶.入宅.移徙.作灶.安葬", "y": "祭祀.沐浴.捕捉.栽种" }, "d0326": { "j": "栽种.安葬", "y": "祭祀.开光.塑绘.酬神.斋醮" }, "d0327": { "j": "作灶.开光.嫁娶.开市.入宅", "y": "订盟.纳采.冠笄.拆卸.修造" }, "d0328": { "j": "作灶.掘井.动土.栽种", "y": "祈福.开光.塑绘.酬神.订盟" }, "d0329": { "j": "栽种.作灶.安葬.嫁娶", "y": "祭祀.扫舍.塞穴" }, "d0330": { "j": "出行.嫁娶.入宅.安葬", "y": "开光.塑绘.裁衣.冠笄.伐木" }, "d0331": { "j": "盖屋.作灶.治病.探病", "y": "冠笄.入殓.除服.成服.移柩" }, "d0401": { "j": "栽种.伐木", "y": "祭祀.嫁娶.祈福.纳采.裁衣" }, "d0402": { "j": "安床.开市.立券.作灶", "y": "祭祀.祈福.斋醮.订盟.纳采" }, "d0403": { "j": "诸事不宜", "y": "破屋.坏垣.求医.治病" }, "d0404": { "j": "开光.出货财", "y": "祭祀.动土.上樑.订盟.纳采" }, "d0405": { "j": "祭祀.嫁娶.入宅.作灶.安葬", "y": "沐浴.捕捉.畋猎.结网.取渔" }, "d0406": { "j": "出火.嫁娶.开市", "y": "祭祀.祈福.求嗣.斋醮.纳采" }, "d0407": { "j": "嫁娶.安葬", "y": "祭祀.捕捉.解除.余事勿取" }, "d0408": { "j": "祈福.动土.破土.安葬.入殓", "y": "纳采.嫁娶.出行.开市.立券" }, "d0409": { "j": "开光.嫁娶.掘井.安葬.安门", "y": "祭祀.祈福.求嗣.斋醮.冠笄" }, "d0410": { "j": "动土.破土.行丧.开光.作梁", "y": "祭祀.解除.教牛马.出行.余事勿取" }, "d0411": { "j": "开市.嫁娶.移徙.入宅.掘井", "y": "沐浴.斋醮.解除.求医.治病" }, "d0412": { "j": "祈福.开市.修造.动土.破土", "y": "求嗣.出行.解除.订盟.纳采" }, "d0413": { "j": "嫁娶.安葬.动土.安床.治病", "y": "祭祀" }, "d0414": { "j": "入宅.动土.开仓.出货财", "y": "造车器.祭祀.祈福.求嗣.斋醮" }, "d0415": { "j": "开市.动土.掘井.开池", "y": "祭祀.祈福.开光.求嗣.斋醮" }, "d0416": { "j": "移徙.开市.入宅.安葬", "y": "祈福.斋醮.纳采.订盟.解除" }, "d0417": { "j": "诸事不宜", "y": "诸事不宜" }, "d0418": { "j": "出火.入宅.安葬.伐木", "y": "祭祀.塑绘.开光.订盟.纳采" }, "d0419": { "j": "造庙.嫁娶.安床.余事勿取", "y": "祭祀.余事勿取" }, "d0420": { "j": "入殓.安葬.入宅.安床", "y": "订盟.纳采.嫁娶.进人口.会亲友" }, "d0421": { "j": "掘井.安门.嫁娶.纳采", "y": "祭祀.祈福.裁衣.合帐.安床" }, "d0422": { "j": "掘井.动土.破土.安葬.开光", "y": "祭祀.进人口.嫁娶.安床.解除" }, "d0423": { "j": "嫁娶.开市.安葬", "y": "纳采.开光.求医.治病.动土" }, "d0424": { "j": "嫁娶.动土.破土", "y": "祭祀.会亲友.开市.安床.启钻" }, "d0425": { "j": "嫁娶.安葬", "y": "祭祀.作灶.掘井.平治道涂" }, "d0426": { "j": "嫁娶.移徙.入宅", "y": "祭祀.斋醮.开市.动土.入殓" }, "d0427": { "j": "开市.动土.破土", "y": "嫁娶.纳采.祭祀.祈福.出行" }, "d0428": { "j": "诸事不宜", "y": "祭祀.求医.治病.解除.余事勿取" }, "d0429": { "j": "嫁娶.入宅.安葬", "y": "沐浴.结网.取渔" }, "d0430": { "j": "诸事不宜", "y": "" }, "d0501": { "j": "诸事不宜", "y": "解除.坏垣.余事勿取" }, "d0502": { "j": "祈福.入殓.祭祀.作灶.安葬", "y": "嫁娶.开光.出行.出火.拆卸" }, "d0503": { "j": "词讼.开光.开市", "y": "嫁娶.出行.合帐.冠笄.安床" }, "d0504": { "j": "诸事不宜", "y": "出行.修饰垣墙.造畜稠.教牛马.余事勿取" }, "d0505": { "j": "嫁娶.纳财.安葬.出行.开市", "y": "祭祀.祈福.开光.求嗣.解除" }, "d0506": { "j": "开市.出行.安床.作灶.安葬", "y": "嫁娶.纳采.订盟.祭祀.祈福" }, "d0507": { "j": "开市.作灶.动土.行丧.安葬", "y": "嫁娶.纳采.订盟.会亲友.安机械" }, "d0508": { "j": "祈福.嫁娶.入宅.安床.作灶", "y": "祭祀.沐浴.移徙.破土.安葬" }, "d0509": { "j": "动土.破土.嫁娶.嫁娶", "y": "祭祀.祈福.斋醮.求嗣.安机械" }, "d0510": { "j": "移徙.入宅.盖屋.架马", "y": "嫁娶.纳采.订盟.斋醮.开光" }, "d0511": { "j": "行丧.安葬", "y": "祭祀.沐浴.解除.破屋.坏垣" }, "d0512": { "j": "斋醮.开市.嫁娶.作灶", "y": "沐浴.扫舍.余事勿取" }, "d0513": { "j": "嫁娶.出火.移徙.入宅", "y": "开市.交易.立券.安机械.会亲友" }, "d0514": { "j": "开市.动土.祭祀.斋醮.安葬", "y": "栽种.捕捉.畋猎.余事勿取" }, "d0515": { "j": "开市.入宅.探病.出火.盖屋", "y": "嫁娶.祭祀.祈福.求嗣.斋醮" }, "d0516": { "j": "余事勿取", "y": "余事勿取" }, "d0517": { "j": "破土.安葬", "y": "塞穴.断蚁.结网.余事勿取" }, "d0518": { "j": "", "y": "开光.出行.纳采.嫁娶.伐木" }, "d0519": { "j": "诸事不宜", "y": "进人口.牧养.置产.塞穴.结网" }, "d0520": { "j": "会亲友.进人口.修造.动土.起基", "y": "开光.出行.嫁娶" }, "d0521": { "j": "安门", "y": "嫁娶.纳采.出行.祭祀.祈福" }, "d0522": { "j": "开市.开光", "y": "嫁娶.纳采.求医.治病.修造" }, "d0523": { "j": "诸事不宜", "y": "祭祀.破屋.坏垣.余事勿取" }, "d0524": { "j": "祈福.斋醮", "y": "嫁娶.纳采.祭祀.祈福.出行" }, "d0525": { "j": "嫁娶.安葬", "y": "纳采.祭祀.祈福.开市.求医" }, "d0526": { "j": "动土.破土.安葬", "y": "嫁娶.纳采.出行.移徙.入宅" }, "d0527": { "j": "嫁娶.安葬", "y": "订盟.纳采.祭祀.动土.破土" }, "d0528": { "j": "赴任.捕捉", "y": "嫁娶.裁衣.祭祀.出行.安床" }, "d0529": { "j": "诸事不宜", "y": "塞穴.结网.余事勿取" }, "d0530": { "j": "移徙.入宅", "y": "嫁娶.订盟.纳采.出行.祭祀" }, "d0531": { "j": "开市.安葬", "y": "订盟.纳采.会亲友.安床.作灶" }, "d0601": { "j": "诸事不宜", "y": "沐浴.平治道涂.扫舍.入殓.移柩" }, "d0602": { "j": "", "y": "嫁娶.祭祀.祈福.求嗣.开光" }, "d0603": { "j": "嫁娶.上樑.修造.拆卸.架马", "y": "祭祀.开光.出行.解除.塑绘" }, "d0604": { "j": "诸事不宜", "y": "祭祀.解除.破屋.坏垣.余事勿取" }, "d0605": { "j": "", "y": "嫁娶.祭祀.祈福.求嗣.开光" }, "d0606": { "j": "作灶.理髮.造桥.行丧.安葬", "y": "嫁娶.安机械.交易.出行.祭祀" }, "d0607": { "j": "斋醮.祭祀.移徙.入宅.上樑", "y": "纳采.冠笄.求医.治病.开市" }, "d0608": { "j": "开市.安葬.破土.修坟.掘井", "y": "祭祀.作灶.余事勿取" }, "d0609": { "j": "合帐.上樑.经络.安葬.入殓", "y": "祭祀.祈福.求嗣.斋醮.安香" }, "d0610": { "j": "祈福.开光.掘井.开市.安葬", "y": "嫁娶.冠笄.修造.动土.作灶" }, "d0611": { "j": "斋醮.开渠.上樑.动土.破土", "y": "祭祀.交易.纳财" }, "d0612": { "j": "行丧.伐木.作梁.作灶", "y": "嫁娶.订盟.纳采.冠笄.会亲友" }, "d0613": { "j": "安床.出货财.作灶.动土.破土", "y": "开光.求嗣.出行.冠笄.嫁娶" }, "d0614": { "j": "斋醮.出行.治病.合寿木", "y": "祭祀.沐浴.理髮.嫁娶.作灶" }, "d0615": { "j": "诸事不宜", "y": "祭祀.解除.余事勿取" }, "d0616": { "j": "开市.交易.嫁娶.安葬.行丧", "y": "祭祀.沐浴.捕捉.结网.畋猎" }, "d0617": { "j": "嫁娶.入宅", "y": "破屋.坏垣.求医.治病.畋猎" }, "d0618": { "j": "开市.安门.掘井.作灶", "y": "嫁娶.出行.安机械.祭祀.塑绘" }, "d0619": { "j": "", "y": "订盟.纳采.会亲友.进人口.彫刻" }, "d0620": { "j": "诸事不宜", "y": "祭祀.捕捉.取渔.修饰垣墙.余事勿取" }, "d0621": { "j": "开市.安门", "y": "嫁娶.纳采.祭祀.祈福.求医" }, "d0622": { "j": "嫁娶.安葬", "y": "裁衣.作灶.移徙.入宅.纳畜" }, "d0623": { "j": "上樑.动土.破土", "y": "祭祀.入殓.移柩.启钻.安葬" }, "d0624": { "j": "移徙.入宅.安葬", "y": "订盟.纳采.出行.祈福.斋醮" }, "d0625": { "j": "动土.破土", "y": "嫁娶.纳采.出行.求医.治病" }, "d0626": { "j": "行丧.安葬", "y": "嫁娶.祭祀.沐浴.扫舍.修饰垣墙" }, "d0627": { "j": "作灶", "y": "嫁娶.订盟.纳采.出行.开市" }, "d0628": { "j": "开市.安葬", "y": "订盟.纳采.出行.祭祀.祈福" }, "d0629": { "j": "诸事不宜", "y": "诸事不宜" }, "d0630": { "j": "开光.开市", "y": "嫁娶.订盟.纳采.祭祀.祈福" }, "d0701": { "j": "嫁娶.开光", "y": "开光.求医.治病.动土.上樑" }, "d0702": { "j": "诸事不宜", "y": "祭祀.栽种.余事勿取" }, "d0703": { "j": "安葬.开市.交易.立券", "y": "嫁娶.开光.祭祀.祈福.求嗣" }, "d0704": { "j": "安葬.出行.祈福.栽种", "y": "求嗣.嫁娶.纳采.合帐.裁衣" }, "d0705": { "j": "诸事不宜", "y": "祭祀.解除.余事勿取" }, "d0706": { "j": "安葬.行丧.伐木.作梁", "y": "嫁娶.祭祀.祈福.出火.开光" }, "d0707": { "j": "嫁娶.出行.纳采.入宅.作灶", "y": "祭祀.沐浴.塑绘.开光.入学" }, "d0708": { "j": "斋醮.入宅.安门.安葬.破土", "y": "纳财.开市.交易.立券.出行" }, "d0709": { "j": "开市.动土.破土.嫁娶.修造", "y": "祭祀.修饰垣墙.平治道涂" }, "d0710": { "j": "嫁娶.安葬.行丧.破土.修坟", "y": "订盟.纳采.祭祀.祈福.开光" }, "d0711": { "j": "出火.嫁娶.入宅.作灶.破土", "y": "沐浴.理髮.捕捉.入殓.移柩" }, "d0712": { "j": "嫁娶.出行", "y": "求医.治病.破屋.坏垣.余事勿取" }, "d0713": { "j": "祈福.上樑.开仓.掘井.牧养", "y": "纳采.订盟.嫁娶.移徙.入宅" }, "d0714": { "j": "嫁娶.开市.栽种.合寿木", "y": "祭祀.祈福.斋醮.出行.纳采" }, "d0715": { "j": "开市.入宅.安床.动土.安葬", "y": "祭祀.进人口.纳财.纳畜.牧养" }, "d0716": { "j": "盖屋.入宅.作灶.入学.安葬", "y": "祭祀.塑绘.开光.求医.治病" }, "d0717": { "j": "移徙.开市.入宅.嫁娶.开光", "y": "祭祀.塞穴.结网.畋猎.余事勿取" }, "d0718": { "j": "动土.破土.安葬.治病", "y": "开市.纳财.祭祀.塑绘.安机械" }, "d0719": { "j": "开市.斋醮.安床.出行.经络", "y": "移徙.入宅.治病.会亲友.祭祀" }, "d0720": { "j": "", "y": "塑绘.出行.冠笄.嫁娶.进人口" }, "d0721": { "j": "余事勿取", "y": "祭祀.冠笄.嫁娶.捕捉.结网" }, "d0722": { "j": "诸事不宜", "y": "沐浴.扫舍.余事勿取" }, "d0723": { "j": "嫁娶.移徙.入宅", "y": "纳采.祭祀.祈福.解除.动土" }, "d0724": { "j": "诸事不宜", "y": "祭祀.破屋.坏垣.余事勿取" }, "d0725": { "j": "祭祀.祈福", "y": "嫁娶.纳采.开市.出行.动土" }, "d0726": { "j": "赴任", "y": "嫁娶.纳采.开市.出行.动土" }, "d0727": { "j": "开市.破土", "y": "祭祀.作灶.纳财.捕捉" }, "d0728": { "j": "造庙.安葬", "y": "嫁娶.开市.立券.祭祀.祈福" }, "d0729": { "j": "诸事不宜", "y": "补垣.塞穴.结网.入殓.除服" }, "d0730": { "j": "动土.安葬", "y": "嫁娶.纳采.出行.祭祀.祈福" }, "d0731": { "j": "开市.入宅", "y": "嫁娶.祭祀.祈福.斋醮.治病" }, "d0801": { "j": "祈福.动土.破土", "y": "嫁娶.出行.开市.安床.入殓" }, "d0802": { "j": "开仓.出货财.置产.安葬.动土", "y": "嫁娶.祭祀.裁衣.结网.冠笄" }, "d0803": { "j": "嫁娶.破土.置产.栽种.安葬", "y": "入宅.移徙.安床.开光.祈福" }, "d0804": { "j": "嫁娶.入宅.移徙.作灶.开市", "y": "祭祀.解除.沐浴.整手足甲.入殓" }, "d0805": { "j": "诸事不宜", "y": "破屋.坏垣.余事勿取" }, "d0806": { "j": "伐木.祭祀.纳畜.祭祀", "y": "嫁娶.开光.出行.理髮.作梁" }, "d0807": { "j": "", "y": "嫁娶.开光.出行.祈福.求嗣" }, "d0808": { "j": "纳采.订盟.经络.行丧.安葬", "y": "嫁娶.祭祀.祈福.斋醮.普渡" }, "d0809": { "j": "掘井.出行.破土.行丧.安葬", "y": "嫁娶.订盟.纳采.作灶.冠笄" }, "d0810": { "j": "出火.入宅.盖屋.安门.安葬", "y": "嫁娶.订盟.纳采.祭祀.斋醮" }, "d0811": { "j": "动土.破土.掘井.开光.上樑", "y": "嫁娶.普渡.祭祀.祈福.补垣" }, "d0812": { "j": "开市.动土.破土.安床.开仓", "y": "嫁娶.冠笄.祭祀.沐浴.普渡" }, "d0813": { "j": "嫁娶.出行.入宅.开市.安门", "y": "祭祀.沐浴.理髮.整手足甲.冠笄" }, "d0814": { "j": "诸事不宜", "y": "祭祀.解除.余事勿取" }, "d0815": { "j": "嫁娶.安门.动土.安葬", "y": "出行.沐浴.订盟.纳采.裁衣" }, "d0816": { "j": "开市.立券.纳财.作灶", "y": "纳采.订盟.嫁娶.祭祀.祈福" }, "d0817": { "j": "嫁娶.纳采.订盟.开市.入宅", "y": "祭祀.捕捉.畋猎.纳畜.牧养" }, "d0818": { "j": "行丧.安葬", "y": "破屋.坏垣.治病.余事勿取" }, "d0819": { "j": "动土.破土.订盟.安床.开池", "y": "祈福.斋醮.出行.冠笄.嫁娶" }, "d0820": { "j": "", "y": "祈福.求嗣.解除.订盟.纳采" }, "d0821": { "j": "", "y": "塑绘.开光.解除.订盟.纳采" }, "d0822": { "j": "", "y": "祈福.出行.订盟.纳采.嫁娶" }, "d0823": { "j": "动土.破土", "y": "嫁娶.祭祀.祈福.斋醮.作灶" }, "d0824": { "j": "作灶.动土.破土", "y": "嫁娶.出行.纳畜.祭祀.入殓" }, "d0825": { "j": "嫁娶.开市", "y": "订盟.纳采.祭祀.祈福.修造" }, "d0826": { "j": "开市.安葬", "y": "订盟.纳采.出行.会亲友.修造" }, "d0827": { "j": "嫁娶.祈福.余事勿取", "y": "沐浴" }, "d0828": { "j": "开市.安葬", "y": "嫁娶.祭祀.祈福.斋醮.动土" }, "d0829": { "j": "嫁娶.入宅", "y": "捕捉.结网.入殓.破土.安葬" }, "d0830": { "j": "诸事不宜", "y": "沐浴.治病.破屋.坏垣.余事勿取" }, "d0831": { "j": "动土.破土", "y": "嫁娶.订盟.纳采.出行.开市" }, "d0901": { "j": "开光.针灸", "y": "嫁娶.订盟.纳采.祭祀.祈福" }, "d0902": { "j": "动土.安葬", "y": "订盟.纳采.祭祀.祈福.安机械" }, "d0903": { "j": "入宅.作梁.安门.伐木.修造", "y": "嫁娶.祭祀.祈福.求嗣.出行" }, "d0904": { "j": "盖屋.开光.理髮.造船.掘井", "y": "嫁娶.祭祀.祈福.求嗣.出行" }, "d0905": { "j": "破土.置产.掘井.动土.安床", "y": "祭祀.祈福.求嗣.开光.出行" }, "d0906": { "j": "嫁娶.会亲友.进人口.出行.入宅", "y": "祭祀.解除.沐浴.理髮.整手足甲" }, "d0907": { "j": "嫁娶.纳财.祈福.安葬.修造", "y": "塑绘.开光.进人口.纳畜.补垣" }, "d0908": { "j": "嫁娶.安葬.动土.造桥", "y": "出行.开市.交易.立券.安机械" }, "d0909": { "j": "斋醮.嫁娶.移徙.出行.上樑", "y": "祭祀.沐浴.修饰垣墙.平治道涂.余事勿取" }, "d0910": { "j": "纳采.订盟.架马.词讼.开渠", "y": "嫁娶.造车器.安机械.祭祀.祈福" }, "d0911": { "j": "祭祀.嫁娶.安床.开市.入宅", "y": "沐浴.捕捉.入殓.除服.成服" }, "d0912": { "j": "探病.余事勿取", "y": "余事勿取" }, "d0913": { "j": "嫁娶.造庙.造桥.造船.作灶", "y": "订盟.纳采.祭祀.祈福.安香" }, "d0914": { "j": "行丧.安葬.合寿木", "y": "开光.求嗣.雕刻.嫁娶.订盟" }, "d0915": { "j": "开光.动土.破土.开市.修造", "y": "祭祀.嫁娶.捕捉" }, "d0916": { "j": "嫁娶.开市.动土.掘井.开池", "y": "祭祀.普渡.解除.会亲友.捕捉" }, "d0917": { "j": "祭祀.祈福.开光.开市.安床", "y": "出行.解除.冠笄.嫁娶.伐木" }, "d0918": { "j": "动土.作灶.行丧.安葬.修坟", "y": "祭祀.祈福.求嗣.出行.沐浴" }, "d0919": { "j": "造庙.安门.行丧.安葬", "y": "出行.解除.纳采.冠笄.雕刻" }, "d0920": { "j": "", "y": "开光.塑绘.出行.解除.冠笄" }, "d0921": { "j": "嫁娶.入宅.上樑.安门", "y": "祭祀.祈福.修饰垣墙.平治道涂.入殓" }, "d0922": { "j": "入宅.伐木", "y": "祭祀.会亲友.纳采.嫁娶.开光" }, "d0923": { "j": "作灶.祭祀.入宅.嫁娶", "y": "祭祀.冠笄.会亲友.拆卸.起基" }, "d0924": { "j": "移徙.入宅.出行.栽种", "y": "祭祀.沐浴.破屋.坏垣.余事勿取" }, "d0925": { "j": "造桥.冠笄.盖屋.掘井", "y": "祭祀.塑绘.开光.出行.解除" }, "d0926": { "j": "定磉.安葬", "y": "祭祀.会亲友.进人口.动土.上樑" }, "d0927": { "j": "移徙.入宅.作灶", "y": "祭祀.裁衣.冠笄.嫁娶.纳婿" }, "d0928": { "j": "入殓.安葬.开市.交易", "y": "诸事不宜" }, "d0929": { "j": "安床.开光.开市.交易", "y": "祭祀.裁衣.冠笄.嫁娶.安机械" }, "d0930": { "j": "动土.冠笄.移徙.入宅.开市", "y": "祭祀.出行.成服.除服.沐浴" }, "d1001": { "j": "诸事不宜", "y": "祭祀.沐浴.赴任.出行.余事勿取" }, "d1002": { "j": "诸事不宜", "y": "诸事不宜" }, "d1003": { "j": "嫁娶.移徙.入宅.开市", "y": "沐浴.入殓.移柩.除服.成服" }, "d1004": { "j": "", "y": "嫁娶.祭祀.祈福.求嗣.沐浴" }, "d1005": { "j": "嫁娶.出行.安床.作灶.祭祀", "y": "开光.解除.起基.动土.拆卸" }, "d1006": { "j": "诸事不宜", "y": "破屋.坏垣.余事勿取" }, "d1007": { "j": "", "y": "嫁娶.祈福.求嗣.出行.出火" }, "d1008": { "j": "嫁娶.开市.入宅.祈福.安葬", "y": "订盟.纳采.会亲友.交易.立券" }, "d1009": { "j": "上樑.开光.盖屋.架马.合寿木", "y": "造车器.嫁娶.订盟.纳采.会亲友" }, "d1010": { "j": "动土.破土.开市.安葬", "y": "祭祀.作灶.纳财.捕捉.畋猎" }, "d1011": { "j": "开市.开仓.出货财.安床.安门", "y": "嫁娶.订盟.纳采.祭祀.祈福" }, "d1012": { "j": "开光.嫁娶.会亲友.栽种.针灸", "y": "冠笄.祭祀.沐浴.作灶.理髮" }, "d1013": { "j": "", "y": "祭祀.祈福.求嗣.开光.解除" }, "d1014": { "j": "嫁娶.动土.破土.修坟", "y": "出行.造车器.造畜稠.解除.冠笄" }, "d1015": { "j": "移徙.入宅.出行.祈福.嫁娶", "y": "沐浴.理髮.冠笄.安床.开市" }, "d1016": { "j": "嫁娶.开市.安床.掘井", "y": "祭祀.造畜稠.修饰垣墙.平治道涂.余事勿取" }, "d1017": { "j": "嫁娶.祭祀.入宅.盖屋.移徙", "y": "捕捉.结网.入殓.除服.成服" }, "d1018": { "j": "开光.嫁娶.掘井.伐木.作梁", "y": "祭祀.祈福.求嗣.斋醮.造庙" }, "d1019": { "j": "诸事不宜", "y": "破屋.坏垣.余事勿取" }, "d1020": { "j": "出行.祈福.安葬.作灶", "y": "会亲友.嫁娶.订盟.纳采.纳婿" }, "d1021": { "j": "开仓.冠笄.伐木.作梁", "y": "祭祀.塑绘.开光.祈福.斋醮" }, "d1022": { "j": "栽种.动土.安葬.开市", "y": "祭祀.作灶.入殓.除服.成服" }, "d1023": { "j": "作灶.入殓.安葬.安床", "y": "祭祀.祈福.斋醮.沐浴.竖柱" }, "d1024": { "j": "动土.上樑", "y": "嫁娶.祭祀.安机械.入殓.破土" }, "d1025": { "j": "行丧.安葬", "y": "作灶.造畜稠" }, "d1026": { "j": "嫁娶.入宅", "y": "沐浴.理髮.入学.习艺.进人口" }, "d1027": { "j": "开市.动土.破土", "y": "开光.针灸.会亲友.启钻.安葬" }, "d1028": { "j": "余事勿取", "y": "祭祀" }, "d1029": { "j": "移徙.入宅", "y": "入殓.除服.成服.移柩.破土" }, "d1030": { "j": "开市.赴任", "y": "嫁娶.订盟.纳采.出行.祭祀" }, "d1031": { "j": "余事勿取", "y": "祭祀.解除.破屋.坏垣.余事勿取" }, "d1101": { "j": "祈福.安葬", "y": "订盟.纳采.会亲友.安机械.纳财" }, "d1102": { "j": "斋醮.安门", "y": "嫁娶.订盟.纳采.出行.开市" }, "d1103": { "j": "诸事不宜", "y": "祭祀.塞穴.余事勿取" }, "d1104": { "j": "嫁娶.作灶.修坟.安门.入宅", "y": "祭祀.祈福.求嗣.开光.开市" }, "d1105": { "j": "嫁娶.开光.会亲友.掘井.安门", "y": "祭祀.解除.裁衣.理髮.安床" }, "d1106": { "j": "动土.伐木.作梁.行丧.安葬", "y": "祭祀.出行.裁衣.冠笄.会亲友" }, "d1107": { "j": "开市.动土.破土.行丧.安葬", "y": "祭祀.沐浴.出行.余事勿取" }, "d1108": { "j": "开市.纳采.造庙.安床.开渠", "y": "嫁娶.造车器.出行.会亲友.移徙" }, "d1109": { "j": "嫁娶.开市.祈福.斋醮.安葬", "y": "塑绘.会亲友.安机械.塞穴.结网" }, "d1110": { "j": "开仓.盖屋.造桥.祭祀", "y": "纳采.移徙.纳财.开市.交易" }, "d1111": { "j": "嫁娶.安葬.掘井.置产.造船", "y": "订盟.纳采.纳财.开市.立券" }, "d1112": { "j": "开市.造庙.动土.破土", "y": "嫁娶.订盟.纳采.祭祀.祈福" }, "d1113": { "j": "嫁娶.安葬", "y": "破屋.坏垣.祭祀.余事勿取" }, "d1114": { "j": "盖屋.造船.动土.破土", "y": "嫁娶.纳采.订盟.祭祀.冠笄" }, "d1115": { "j": "嫁娶.开市.入宅.出火.移徙", "y": "纳采.订盟.祭祀.祈福.求嗣" }, "d1116": { "j": "安床.安门.破土.修坟.安葬", "y": "捕捉.畋猎.会亲友.解除.入殓" }, "d1117": { "j": "移徙.入宅.安门.作梁.安葬", "y": "祭祀.祈福.求嗣.斋醮.沐浴" }, "d1118": { "j": "开光.掘井.安葬.谢土.修坟", "y": "嫁娶.冠笄.安床.纳采.会亲友" }, "d1119": { "j": "诸事不宜", "y": "祭祀.沐浴.余事勿取" }, "d1120": { "j": "入宅.作灶.安床.开仓", "y": "祭祀.会亲友.嫁娶.沐浴.修造" }, "d1121": { "j": "嫁娶.入宅.安门.移徙", "y": "理髮.会亲友.补垣.塞穴.结网" }, "d1122": { "j": "作灶.治病.伐木.作梁", "y": "祭祀.祈福.订盟.纳采.裁衣" }, "d1123": { "j": "作灶.治病", "y": "祭祀.祈福.订盟.纳采.裁衣" }, "d1124": { "j": "开市.交易.破土.作灶", "y": "祭祀.塑绘.开光.订盟.纳采" }, "d1125": { "j": "诸事不宜", "y": "祭祀.解除.破屋.坏垣.余事勿取" }, "d1126": { "j": "盖屋.治病", "y": "祭祀.解除.祈福.开光.塑绘" }, "d1127": { "j": "嫁娶.入宅.治病.赴任", "y": "祭祀.祈福.订盟.纳采.裁衣" }, "d1128": { "j": "诸事不宜", "y": "沐浴.扫舍.余事勿取" }, "d1129": { "j": "诸事不宜", "y": "诸事不宜" }, "d1130": { "j": "入宅.作灶", "y": "祈福.斋醮.出行.订盟.纳采" }, "d1201": { "j": "嫁娶.动土.安葬.作灶", "y": "祭祀.沐浴.出行.冠笄.进人口" }, "d1202": { "j": "开市", "y": "祭祀.祈福.斋醮.塑绘.开光" }, "d1203": { "j": "诸事不宜", "y": "诸事不宜" }, "d1204": { "j": "栽种.破土.置产.祭祀.嫁娶", "y": "开市.交易.立券.挂匾.纳财" }, "d1205": { "j": "", "y": "嫁娶.祭祀.祈福.求嗣.开光" }, "d1206": { "j": "嫁娶.开市.出火.栽种.破土", "y": "开光.解除.拆卸.修造.动土" }, "d1207": { "j": "出行.掘井.破土.行丧.安葬", "y": "嫁娶.订盟.纳采.祭祀.祈福" }, "d1208": { "j": "嫁娶.移徙.入宅.探病.出行", "y": "祭祀.沐浴.破屋.坏垣.余事勿取" }, "d1209": { "j": "安门.动土.破土.行丧.安葬", "y": "冠笄.纳财.掘井.开池.出火" }, "d1210": { "j": "嫁娶.动土.安床.造桥.掘井", "y": "纳采.订盟.移徙.入宅.出行" }, "d1211": { "j": "开市.斋醮.破土.安葬", "y": "祭祀.沐浴.作灶.纳财.捕捉" }, "d1212": { "j": "余事勿取", "y": "祭祀.结网.入殓.除服.成服" }, "d1213": { "j": "嫁娶.祈福.开光.掘井.安葬", "y": "纳采.订盟.祭祀.沐浴.冠笄" }, "d1214": { "j": "入宅.动土.破土.嫁娶.作灶", "y": "合帐" }, "d1215": { "j": "斋醮.作梁.掘井.行丧.安葬", "y": "纳采.订盟.嫁娶.祭祀.祈福" }, "d1216": { "j": "嫁娶.祈福.出火.移徙.入宅", "y": "纳财.开市.交易.立券.会亲友" }, "d1217": { "j": "入宅.修造.动土.破土.安门", "y": "祭祀.入殓.移柩.余事勿取" }, "d1218": { "j": "掘井.伐木.斋醮.作灶", "y": "塑绘.开光.订盟.纳采.裁衣" }, "d1219": { "j": "出行.安葬.修坟.开市", "y": "祭祀.塑绘.开光.裁衣.冠笄" }, "d1220": { "j": "诸事不宜", "y": "祭祀.求医.破屋.坏垣.余事勿取" }, "d1221": { "j": "开光.栽种.治病.安门.作灶", "y": "祭祀.祈福.斋醮.出行.冠笄" }, "d1222": { "j": "", "y": "塑绘.斋醮.出行.拆卸.解除" }, "d1223": { "j": "开市.破土", "y": "祭祀.沐浴.安床.纳财.畋猎" }, "d1224": { "j": "嫁娶.作灶", "y": "订盟.纳采.祭祀.祈福.修造" }, "d1225": { "j": "入宅.安葬", "y": "出行.沐浴.理髮.补垣.塞穴" }, "d1226": { "j": "入宅.动土.破土.余事勿取", "y": "教牛马.余事勿取" }, "d1227": { "j": "开市.安葬", "y": "嫁娶.出行.求医.治病.祭祀" }, "d1228": { "j": "嫁娶.祈福", "y": "开市.立券.开光.解除.安机械" }, "d1229": { "j": "诸事不宜", "y": "平治道涂.余事勿取" }, "d1230": { "j": "开市.嫁娶", "y": "求嗣.斋醮.塑绘.订盟.纳采" }, "d1231": { "j": "开市.安葬", "y": "嫁娶.订盟.纳采.祭祀.祈福" } } ukui-panel-4.0.0.4/plugin-calendar/html/hlnew/hl2028.json0000644000175000017500000012425514560306203021317 0ustar fengfeng{ "d0101": { "j": "开市.斋醮.破土.安葬", "y": "祭祀.沐浴.作灶.纳财.捕捉" }, "d0102": { "j": "余事勿取", "y": "祭祀.结网.入殓.除服.成服" }, "d0103": { "j": "嫁娶.祈福.开光.掘井.安葬", "y": "纳采.订盟.祭祀.沐浴.冠笄" }, "d0104": { "j": "入宅.动土.破土.嫁娶.作灶", "y": "合帐" }, "d0105": { "j": "斋醮.作梁.掘井.行丧.安葬", "y": "纳采.订盟.嫁娶.祭祀.祈福" }, "d0106": { "j": "入宅.安门.祭祀.谢土", "y": "沐浴.塑绘.开光.纳采.订盟" }, "d0107": { "j": "掘井.祈福.谢土.动土.入宅", "y": "嫁娶.出行.理髮.安床.启钻" }, "d0108": { "j": "移徙.入宅.掘井.造庙.栽种", "y": "解除.平治道涂.余事勿取" }, "d0109": { "j": "开市.行丧.栽种.出行.出货财", "y": "嫁娶.祭祀.开光.伐木.出火" }, "d0110": { "j": "伐木.开市.交易.上樑.作灶", "y": "嫁娶.纳采.订盟.入宅.移徙" }, "d0111": { "j": "开市.动土.破土", "y": "祭祀.破屋.坏垣.解除.余事勿取" }, "d0112": { "j": "祈福.造庙.祭祀.安床.谢土", "y": "嫁娶.纳采.订盟.开光.安香" }, "d0113": { "j": "嫁娶.入宅.作灶.纳采.订盟", "y": "祭祀.斋醮.入殓.破土.启钻" }, "d0114": { "j": "嫁娶.开市.入宅.安床.破土", "y": "祭祀.斋醮.纳财.捕捉.畋猎" }, "d0115": { "j": "嫁娶.合帐.入宅.行丧.安葬", "y": "纳采.订盟.祭祀.祈福.求嗣" }, "d0116": { "j": "入宅.置产.嫁娶.动土.栽种", "y": "祭祀.祈福.求嗣.沐浴.问名" }, "d0117": { "j": "嫁娶.入宅.出行.动土.破土", "y": "祭祀.教牛马.造畜稠.祭祀.会亲友" }, "d0118": { "j": "作灶.安葬.祭祀.开市.纳采", "y": "嫁娶.开光.解除.出火.拆卸" }, "d0119": { "j": "挂匾.入宅.上樑.祈福.词讼", "y": "出行.起基.安床.纳财.交易" }, "d0120": { "j": "开光.嫁娶.开仓.出货财.造船", "y": "平治道涂.余事勿取" }, "d0121": { "j": "开市.出行.安葬.行丧", "y": "嫁娶.订盟.纳采.会亲友.祭祀" }, "d0122": { "j": "纳采.订盟.嫁娶.上樑.开市", "y": "沐浴.捕捉.畋猎.理髮.整手足甲" }, "d0123": { "j": "斋醮.嫁娶.开市", "y": "祭祀.破屋.坏垣.余事勿取" }, "d0124": { "j": "祈福.嫁娶.安床.入宅.造船", "y": "沐浴.开仓.出货财.开市.交易" }, "d0125": { "j": "造庙.入宅.修造.安葬.行丧", "y": "祭祀.沐浴.补垣.塞穴.断蚁" }, "d0126": { "j": "开市.安床.安葬.修坟", "y": "嫁娶.纳采.订盟.问名.祭祀" }, "d0127": { "j": "造庙.嫁娶.出行.动土.安葬", "y": "订盟.纳采.会亲友.祭祀.斋醮" }, "d0128": { "j": "开光.嫁娶.开市.动土.破土", "y": "交易.立券.纳财.安床.裁衣" }, "d0129": { "j": "破土.动土.安葬", "y": "祭祀.解除.教牛马.会亲友.余事勿取" }, "d0130": { "j": "探病.祭祀.出行.上樑.盖屋", "y": "纳采.订盟.移徙.纳财.开市" }, "d0131": { "j": "入宅.开光.开市.动土", "y": "嫁娶.订盟.纳采.祭祀.祈福" }, "d0201": { "j": "移徙.入宅.造庙.作灶.治病", "y": "祭祀.冠笄.嫁娶.会亲友.进人口" }, "d0202": { "j": "嫁娶.安葬", "y": "祭祀.安碓.结网.余事勿取" }, "d0203": { "j": "盖屋.开市.动土.破土", "y": "嫁娶.祭祀.沐浴.裁衣.出行" }, "d0204": { "j": "开市.作灶.安床.入宅.上樑", "y": "动土.入殓.嫁娶.移柩.安葬" }, "d0205": { "j": "开市.嫁娶", "y": "求医.治病.破屋.坏垣.余事勿取" }, "d0206": { "j": "开市.嫁娶.安床.会亲友.入宅", "y": "祭祀.斋醮.沐浴.开生坟.除服" }, "d0207": { "j": "嫁娶.入宅", "y": "祭祀.塞穴.结网.破土.谢土" }, "d0208": { "j": "嫁娶.词讼.行丧.安葬.牧养", "y": "祭祀.沐浴.理髮.作灶.结网" }, "d0209": { "j": "入宅.安葬.伐木.作梁.纳畜", "y": "嫁娶.祭祀.开光.祈福.求嗣" }, "d0210": { "j": "栽种.开光.出行.针灸.嫁娶", "y": "祭祀.祈福.求嗣.纳畜.入殓" }, "d0211": { "j": "入宅.出行.移徙.祭祀.嫁娶", "y": "开光.解除.伐木.竖柱.上樑" }, "d0212": { "j": "移徙.入宅.出火.作灶.掘井", "y": "祭祀.祈福.求嗣.开光.嫁娶" }, "d0213": { "j": "嫁娶.开市.动土.作灶.安葬", "y": "会亲友.冠笄.安床.会亲友.安机械" }, "d0214": { "j": "祭祀.祈福.安葬.安门", "y": "作灶" }, "d0215": { "j": "经络.探病.盖屋.作灶.动土", "y": "嫁娶.祭祀.冠笄.修饰垣墙.置产" }, "d0216": { "j": "开市.入宅.斋醮", "y": "纳采.嫁娶.祭祀.祈福.出行" }, "d0217": { "j": "嫁娶.安葬", "y": "祭祀.沐浴.解除.理髮.扫舍" }, "d0218": { "j": "安床.作灶.造船.会亲友", "y": "纳采.订盟.祭祀.祈福.安香" }, "d0219": { "j": "嫁娶.安门.移徙.入宅.安葬", "y": "塞穴.结网.取渔.畋猎" }, "d0220": { "j": "嫁娶.开市.安葬.破土", "y": "纳采.祭祀.祈福.出行.会亲友" }, "d0221": { "j": "移徙.入宅.出火.安门.安葬", "y": "纳采.嫁娶.祭祀.祈福.出行" }, "d0222": { "j": "嫁娶.动土.开光.盖屋.破土", "y": "祭祀.祈福.求嗣.斋醮.入殓" }, "d0223": { "j": "祭祀.移徙.入宅.动土.破土", "y": "纳采.会亲友.竖柱.上樑.立券" }, "d0224": { "j": "开光.嫁娶.作灶.掘井.纳畜", "y": "祭祀.祈福.斋醮.出行.开市" }, "d0225": { "j": "开市.动土.安葬.破土", "y": "会亲友.求嗣.理髮.冠笄.结网" }, "d0226": { "j": "嫁娶.祈福.掘井.安葬", "y": "祭祀.平治道涂.余事勿取" }, "d0227": { "j": "置产.盖屋.合嵴.开光.探病", "y": "祈福.求嗣.斋醮.纳采.嫁娶" }, "d0228": { "j": "开光.开市.入宅.动土.盖屋", "y": "入学.习艺.出行.纳采.订盟" }, "d0229": { "j": "入宅.开市.安葬", "y": "祭祀.沐浴.求医.治病.扫舍" }, "d0301": { "j": "安床.栽种.治病.作灶", "y": "祭祀.冠笄.嫁娶.拆卸.修造" }, "d0302": { "j": "开市.伐木.作梁.作灶", "y": "安机械.移徙.入宅.出行.祭祀" }, "d0303": { "j": "伐木.作灶.安葬.取渔.入宅", "y": "塑绘.开光.祈福.求嗣.订盟" }, "d0304": { "j": "安葬.上樑.入宅.作灶", "y": "祭祀.沐浴.开光.塑绘.祈福" }, "d0305": { "j": "合帐.开市.安葬.入殓", "y": "嫁娶.祭祀.开光.祈福.求嗣" }, "d0306": { "j": "嫁娶.祭祀.开光.出行.出火", "y": "安床.伐木.拆卸.修造.动土" }, "d0307": { "j": "祈福.动土.移徙.入宅", "y": "祭祀.祈福.求嗣.斋醮.嫁娶" }, "d0308": { "j": "嫁娶.作灶.掘井.安葬", "y": "塞穴.整手足甲.解除.捕捉.畋猎" }, "d0309": { "j": "动土.破土.安葬.行丧.赴任", "y": "纳财.开市.立券.交易.开光" }, "d0310": { "j": "开仓.出货财.盖屋.作灶.开市", "y": "祭祀.祈福.嫁娶.冠笄.修饰垣墙" }, "d0311": { "j": "动土.伐木.安葬.行丧", "y": "嫁娶.祭祀.开光.祈福.求嗣" }, "d0312": { "j": "开市.交易.作灶.纳财.上樑", "y": "嫁娶.开光.祭祀.祈福.求嗣" }, "d0313": { "j": "开光.嫁娶", "y": "破屋.坏垣.求医.治病.余事勿取" }, "d0314": { "j": "嫁娶.开光.作灶", "y": "纳采.交易.立券.安床.安机械" }, "d0315": { "j": "嫁娶.定磉.合寿木.安葬.行丧", "y": "祭祀.祈福.求嗣.斋醮.沐浴" }, "d0316": { "j": "入宅.盖屋.竖柱.安葬", "y": "纳财.交易.立券.栽种.捕捉" }, "d0317": { "j": "开市.交易.合帐.安葬", "y": "嫁娶.订盟.纳采.祭祀.祈福" }, "d0318": { "j": "嫁娶.祈福.出火.入宅", "y": "冠笄.立券.交易.修造.动土" }, "d0319": { "j": "嫁娶.动土.掘井.起基.定磉", "y": "祭祀.会亲友.出行.立券.交易" }, "d0320": { "j": "嫁娶.安葬.行丧.安门", "y": "祭祀.沐浴.解除.扫舍.塞穴" }, "d0321": { "j": "移徙.入宅.栽种", "y": "纳财.开市.交易.立券.开光" }, "d0322": { "j": "开市.盖屋.治病.作灶", "y": "嫁娶.冠笄.会亲友.安机械.纳财" }, "d0323": { "j": "纳畜.理髮.合寿木", "y": "嫁娶.造车器.纳采.订盟.祭祀" }, "d0324": { "j": "纳采.开光.安床.嫁娶.开市", "y": "祈福.斋醮.出行.移徙.入宅" }, "d0325": { "j": "嫁娶.移徙.开市.入宅", "y": "破屋.坏垣.余事勿取" }, "d0326": { "j": "塑绘.开光.造桥.除服.成服", "y": "嫁娶.冠笄.祭祀.出行.会亲友" }, "d0327": { "j": "祈福.嫁娶.安葬.破土", "y": "开光.求嗣.出行.纳采.冠笄" }, "d0328": { "j": "纳财.开市.安葬.破土", "y": "理髮.冠笄.嫁娶.进人口.栽种" }, "d0329": { "j": "纳采.动土.开市.交易.安门", "y": "开光.祈福.求嗣.出行.解除" }, "d0330": { "j": "祭祀.嫁娶.出行.上樑.掘井", "y": "裁衣.经络.伐木.开柱眼.拆卸" }, "d0331": { "j": "栽种.动土.安葬.掘井.修坟", "y": "祭祀.会亲友.立券.交易.裁衣" }, "d0401": { "j": "诸事不宜", "y": "扫舍.塞穴.余事勿取" }, "d0402": { "j": "作灶.出行.入宅.安葬", "y": "塑绘.开光.订盟.纳采.裁衣" }, "d0403": { "j": "动土.作灶.入宅.开光.安床", "y": "祭祀.嫁娶.纳婿.除服.成服" }, "d0404": { "j": "嫁娶.安床.治病", "y": "祭祀.作灶.畋猎.结网.修饰垣墙" }, "d0405": { "j": "斋醮.开光.嫁娶.入宅.上樑", "y": "沐浴.祭祀.解除.安葬.破土" }, "d0406": { "j": "动土.破土", "y": "祭祀.解除.入殓.移柩.启钻" }, "d0407": { "j": "嫁娶.开市", "y": "祭祀.沐浴.解除.破屋.坏垣" }, "d0408": { "j": "祈福.安葬", "y": "沐浴.塞穴.畋猎.结网.取渔" }, "d0409": { "j": "纳采.问名.订盟.嫁娶.入宅", "y": "开市.交易.立券.挂匾.祭祀" }, "d0410": { "j": "嫁娶.入宅", "y": "祭祀.修门.取渔.纳财.纳畜" }, "d0411": { "j": "作灶.安葬.祭祀.入殓", "y": "安香.出火.纳采.订盟.嫁娶" }, "d0412": { "j": "移徙.入宅.作灶.理髮.开光", "y": "祭祀.出行.修造.动土.合帐" }, "d0413": { "j": "开光.修造.动土.破土", "y": "祭祀.修饰垣墙.余事勿取" }, "d0414": { "j": "纳采.出行.修坟.安葬.开市", "y": "嫁娶.祭祀.祈福.求嗣.斋醮" }, "d0415": { "j": "祈福.入宅.盖屋.动土.破土", "y": "祭祀.塑绘.开光.纳采.嫁娶" }, "d0416": { "j": "安床.入宅.安碓.栽种", "y": "祭祀" }, "d0417": { "j": "移徙.入宅.嫁娶.出行.安床", "y": "祭祀.祈福.求嗣.斋醮.沐浴" }, "d0418": { "j": "嫁娶.开市.纳财.出火", "y": "纳采.祭祀.祈福.求嗣.斋醮" }, "d0419": { "j": "祈福.斋醮.开市.安葬", "y": "祭祀.沐浴.解除.求医.治病" }, "d0420": { "j": "祭祀.嫁娶.入宅.作灶.安葬", "y": "沐浴.捕捉.畋猎.结网.取渔" }, "d0421": { "j": "出火.嫁娶.开市", "y": "祭祀.祈福.求嗣.斋醮.纳采" }, "d0422": { "j": "嫁娶.安葬", "y": "祭祀.捕捉.解除.余事勿取" }, "d0423": { "j": "祈福.动土.破土.安葬.入殓", "y": "纳采.嫁娶.出行.开市.立券" }, "d0424": { "j": "开光.嫁娶.掘井.安葬.安门", "y": "祭祀.祈福.求嗣.斋醮.冠笄" }, "d0425": { "j": "动土.破土.行丧.开光.作梁", "y": "祭祀.解除.教牛马.出行.余事勿取" }, "d0426": { "j": "开市.嫁娶.移徙.入宅.掘井", "y": "沐浴.斋醮.解除.求医.治病" }, "d0427": { "j": "祈福.开市.修造.动土.破土", "y": "求嗣.出行.解除.订盟.纳采" }, "d0428": { "j": "嫁娶.安葬.动土.安床.治病", "y": "祭祀" }, "d0429": { "j": "入宅.动土.开仓.出货财", "y": "造车器.祭祀.祈福.求嗣.斋醮" }, "d0430": { "j": "开市.动土.掘井.开池", "y": "祭祀.祈福.开光.求嗣.斋醮" }, "d0501": { "j": "移徙.开市.入宅.安葬", "y": "祈福.斋醮.纳采.订盟.解除" }, "d0502": { "j": "诸事不宜", "y": "诸事不宜" }, "d0503": { "j": "出火.入宅.安葬.伐木", "y": "祭祀.塑绘.开光.订盟.纳采" }, "d0504": { "j": "造庙.嫁娶.安床.余事勿取", "y": "祭祀.余事勿取" }, "d0505": { "j": "祭祀.伐木.架马.安床.修造", "y": "解除.出行.纳采.冠笄.竖柱" }, "d0506": { "j": "入宅.移徙.修造.安门.伐木", "y": "祭祀.祈福.求嗣.开光.出行" }, "d0507": { "j": "安床.开渠.上樑.修造.开市", "y": "嫁娶.交易.立券.开厕.补垣" }, "d0508": { "j": "嫁娶.安葬.入宅.出行.动土", "y": "塞穴.断蚁.结网.畋猎.余事勿取" }, "d0509": { "j": "作灶.安床.开仓.盖屋.动土", "y": "纳采.订盟.嫁娶.祭祀.祈福" }, "d0510": { "j": "嫁娶.栽种.修造.动土.出行", "y": "开光.纳采.裁衣.冠笄.安床" }, "d0511": { "j": "伐木.安葬.安床.祭祀.祈福", "y": "纳采.嫁娶.裁衣.理髮.出行" }, "d0512": { "j": "作灶.嫁娶.移徙.入宅.理髮", "y": "开市.交易.立券.挂匾.祭祀" }, "d0513": { "j": "开市.立券.造船.合寿木", "y": "嫁娶.纳采.订盟.祭祀.祈福" }, "d0514": { "j": "开光.安葬", "y": "祭祀.沐浴.解除.破屋.坏垣" }, "d0515": { "j": "作灶.开市.经络", "y": "订盟.纳采.嫁娶.解除.祭祀" }, "d0516": { "j": "安床.上樑.裁衣.入宅.嫁娶", "y": "祭祀.祈福.求嗣.开光.订盟" }, "d0517": { "j": "探病.嫁娶.开市", "y": "祭祀.结网.捕捉.余事勿取" }, "d0518": { "j": "入宅.安门.安葬", "y": "祭祀.祈福.求嗣.开光.纳采" }, "d0519": { "j": "入宅.盖屋.造桥.安门.安葬", "y": "嫁娶.冠笄.祭祀.出行.移徙" }, "d0520": { "j": "嫁娶.安葬", "y": "祭祀.解除.断蚁.会亲友.余事勿取" }, "d0521": { "j": "开市.出行.安床.作灶.安葬", "y": "嫁娶.纳采.订盟.祭祀.祈福" }, "d0522": { "j": "开市.作灶.动土.行丧.安葬", "y": "嫁娶.纳采.订盟.会亲友.安机械" }, "d0523": { "j": "祈福.嫁娶.入宅.安床.作灶", "y": "祭祀.沐浴.移徙.破土.安葬" }, "d0524": { "j": "动土.破土.嫁娶.嫁娶", "y": "祭祀.祈福.斋醮.求嗣.安机械" }, "d0525": { "j": "移徙.入宅.盖屋.架马", "y": "嫁娶.纳采.订盟.斋醮.开光" }, "d0526": { "j": "行丧.安葬", "y": "祭祀.沐浴.解除.破屋.坏垣" }, "d0527": { "j": "斋醮.开市.嫁娶.作灶", "y": "沐浴.扫舍.余事勿取" }, "d0528": { "j": "嫁娶.出火.移徙.入宅", "y": "开市.交易.立券.安机械.会亲友" }, "d0529": { "j": "开市.动土.祭祀.斋醮.安葬", "y": "栽种.捕捉.畋猎.余事勿取" }, "d0530": { "j": "开市.入宅.探病.出火.盖屋", "y": "嫁娶.祭祀.祈福.求嗣.斋醮" }, "d0531": { "j": "余事勿取", "y": "余事勿取" }, "d0601": { "j": "破土.安葬", "y": "塞穴.断蚁.结网.余事勿取" }, "d0602": { "j": "", "y": "开光.出行.纳采.嫁娶.伐木" }, "d0603": { "j": "诸事不宜", "y": "进人口.牧养.置产.塞穴.结网" }, "d0604": { "j": "会亲友.进人口.修造.动土.起基", "y": "开光.出行.嫁娶" }, "d0605": { "j": "破土.出行.栽种", "y": "嫁娶.祭祀.理髮.作灶.修饰垣墙" }, "d0606": { "j": "动土.掘井.破土", "y": "嫁娶.纳采.订盟.祭祀.祈福" }, "d0607": { "j": "嫁娶.开市.安葬.启钻.行丧", "y": "畋猎.捕捉.结网.取渔.祭祀" }, "d0608": { "j": "移徙.入宅.开仓.出货财", "y": "祭祀.破屋.坏垣.余事勿取" }, "d0609": { "j": "出火.入宅", "y": "祭祀.斋醮.塑绘.开光.出行" }, "d0610": { "j": "作灶.出火.祭祀.嫁娶.入宅", "y": "开市.交易.立券.挂匾.开光" }, "d0611": { "j": "入宅.出行.掘井.安葬", "y": "祭祀.结网.余事勿取" }, "d0612": { "j": "行丧.置产.入宅.安葬", "y": "嫁娶.纳采.订盟.冠笄.造车器" }, "d0613": { "j": "安床.祈福.出行.安葬.行丧", "y": "嫁娶.合帐.裁衣.冠笄.伐木" }, "d0614": { "j": "斋醮.盖屋.动土.破土", "y": "出行" }, "d0615": { "j": "安葬.开生坟.秋.行丧", "y": "嫁娶.祭祀.祈福.求嗣.开光" }, "d0616": { "j": "嫁娶.安床.作灶.动土.破土", "y": "安机械.祭祀.祈福.求嗣.沐浴" }, "d0617": { "j": "开市.入宅.出行.修造.词讼", "y": "祭祀.沐浴.理髮.整手足甲.修饰垣墙" }, "d0618": { "j": "开光.作灶.盖屋.架马.开仓", "y": "嫁娶.纳采.祭祀.祈福.出行" }, "d0619": { "j": "嫁娶.开市.合寿木.安葬", "y": "纳采.订盟.冠笄.祭祀.祈福" }, "d0620": { "j": "入宅.嫁娶.移徙", "y": "祭祀.沐浴.破屋.坏垣.余事勿取" }, "d0621": { "j": "作灶.理髮.造桥.行丧.安葬", "y": "嫁娶.安机械.交易.出行.祭祀" }, "d0622": { "j": "斋醮.祭祀.移徙.入宅.上樑", "y": "纳采.冠笄.求医.治病.开市" }, "d0623": { "j": "开市.安葬.破土.修坟.掘井", "y": "祭祀.作灶.余事勿取" }, "d0624": { "j": "合帐.上樑.经络.安葬.入殓", "y": "祭祀.祈福.求嗣.斋醮.安香" }, "d0625": { "j": "祈福.开光.掘井.开市.安葬", "y": "嫁娶.冠笄.修造.动土.作灶" }, "d0626": { "j": "斋醮.开渠.上樑.动土.破土", "y": "祭祀.交易.纳财" }, "d0627": { "j": "行丧.伐木.作梁.作灶", "y": "嫁娶.订盟.纳采.冠笄.会亲友" }, "d0628": { "j": "安床.出货财.作灶.动土.破土", "y": "开光.求嗣.出行.冠笄.嫁娶" }, "d0629": { "j": "斋醮.出行.治病.合寿木", "y": "祭祀.沐浴.理髮.嫁娶.作灶" }, "d0630": { "j": "诸事不宜", "y": "祭祀.解除.余事勿取" }, "d0701": { "j": "开市.交易.嫁娶.安葬.行丧", "y": "祭祀.沐浴.捕捉.结网.畋猎" }, "d0702": { "j": "嫁娶.入宅", "y": "破屋.坏垣.求医.治病.畋猎" }, "d0703": { "j": "开市.安门.掘井.作灶", "y": "嫁娶.出行.安机械.祭祀.塑绘" }, "d0704": { "j": "", "y": "订盟.纳采.会亲友.进人口.彫刻" }, "d0705": { "j": "诸事不宜", "y": "祭祀.捕捉.取渔.修饰垣墙.余事勿取" }, "d0706": { "j": "开渠.造船.安床.安葬.破土", "y": "祭祀.冠笄.作灶.交易.纳财" }, "d0707": { "j": "移徙.栽种.出行.行丧.破土", "y": "嫁娶.纳采.订盟.祭祀.祈福" }, "d0708": { "j": "开光.治病.嫁娶.掘井.破土", "y": "经络.祭祀.沐浴.补垣.塞穴" }, "d0709": { "j": "移徙.入宅.栽种.动土.破土", "y": "嫁娶.祭祀.出行.裁衣.冠笄" }, "d0710": { "j": "开市.入宅.出行.安床.作灶", "y": "修造.动土.安机械.祭祀.沐浴" }, "d0711": { "j": "上樑.入宅.修造.动土.破土", "y": "嫁娶.纳采.订盟.造车器.开光" }, "d0712": { "j": "动土.破土.治病.开渠", "y": "祭祀.嫁娶.畋猎.结网" }, "d0713": { "j": "嫁娶.作灶.出火.置产.嫁娶", "y": "纳采.订盟.会亲友.入学.祭祀" }, "d0714": { "j": "嫁娶.斋醮.开市.出火.入宅", "y": "祭祀.祈福.解除.整手足甲.安床" }, "d0715": { "j": "嫁娶.安葬", "y": "破屋.坏垣.解除.余事勿取" }, "d0716": { "j": "祭祀.祈福.探病.谢土.造桥", "y": "嫁娶.开市.立券.移徙.入宅" }, "d0717": { "j": "入宅.开市.掘井.词讼.合寿木", "y": "嫁娶.订盟.纳采.祭祀.祈福" }, "d0718": { "j": "安葬.破土.开市.开仓.出货财", "y": "纳采.订盟.嫁娶.移徙.入宅" }, "d0719": { "j": "出行.安葬.造桥", "y": "纳采.订盟.嫁娶.祭祀.沐浴" }, "d0720": { "j": "开市.入宅.嫁娶.开光.盖屋", "y": "祭祀.入殓.除服.成服.移柩" }, "d0721": { "j": "动土.破土.掘井.安葬", "y": "祭祀.修造.出行.盖屋.竖柱" }, "d0722": { "j": "嫁娶.出行.纳采.入宅.作灶", "y": "祭祀.沐浴.塑绘.开光.入学" }, "d0723": { "j": "斋醮.入宅.安门.安葬.破土", "y": "纳财.开市.交易.立券.出行" }, "d0724": { "j": "开市.动土.破土.嫁娶.修造", "y": "祭祀.修饰垣墙.平治道涂" }, "d0725": { "j": "嫁娶.安葬.行丧.破土.修坟", "y": "订盟.纳采.祭祀.祈福.开光" }, "d0726": { "j": "出火.嫁娶.入宅.作灶.破土", "y": "沐浴.理髮.捕捉.入殓.移柩" }, "d0727": { "j": "嫁娶.出行", "y": "求医.治病.破屋.坏垣.余事勿取" }, "d0728": { "j": "祈福.上樑.开仓.掘井.牧养", "y": "纳采.订盟.嫁娶.移徙.入宅" }, "d0729": { "j": "嫁娶.开市.栽种.合寿木", "y": "祭祀.祈福.斋醮.出行.纳采" }, "d0730": { "j": "开市.入宅.安床.动土.安葬", "y": "祭祀.进人口.纳财.纳畜.牧养" }, "d0731": { "j": "盖屋.入宅.作灶.入学.安葬", "y": "祭祀.塑绘.开光.求医.治病" }, "d0801": { "j": "移徙.开市.入宅.嫁娶.开光", "y": "祭祀.塞穴.结网.畋猎.余事勿取" }, "d0802": { "j": "动土.破土.安葬.治病", "y": "开市.纳财.祭祀.塑绘.安机械" }, "d0803": { "j": "开市.斋醮.安床.出行.经络", "y": "移徙.入宅.治病.会亲友.祭祀" }, "d0804": { "j": "", "y": "塑绘.出行.冠笄.嫁娶.进人口" }, "d0805": { "j": "余事勿取", "y": "祭祀.冠笄.嫁娶.捕捉.结网" }, "d0806": { "j": "诸事不宜", "y": "沐浴.扫舍.余事勿取" }, "d0807": { "j": "斋醮.开市.开仓.作灶.造船", "y": "嫁娶.祭祀.祈福.求嗣.出火" }, "d0808": { "j": "嫁娶.入宅.开市.交易", "y": "破土.安葬.移柩.入殓.祭祀" }, "d0809": { "j": "祈福.纳采.订盟.嫁娶.入宅", "y": "破屋.坏垣.治病.余事勿取" }, "d0810": { "j": "掘井.理髮.作灶.动土.破土", "y": "嫁娶.开光.祭祀.祈福.求嗣" }, "d0811": { "j": "入宅.嫁娶.掘井.牧养", "y": "安机械.纳采.订盟.祭祀.祈福" }, "d0812": { "j": "行丧.安葬.出行.作梁.纳畜", "y": "嫁娶.祭祀.祈福.求嗣.裁衣" }, "d0813": { "j": "入宅.上樑.入殓.盖屋.探病", "y": "嫁娶.纳采.订盟.开光.祭祀" }, "d0814": { "j": "嫁娶.入宅.斋醮.开光.针灸", "y": "祭祀.出行.作梁.出火.拆卸" }, "d0815": { "j": "栽种.掘井.动土.安床.破土", "y": "嫁娶.纳采.订盟.祭祀.祈福" }, "d0816": { "j": "出火.嫁娶.开光.进人口.出行", "y": "解除.祭祀.祈福.求嗣.修造" }, "d0817": { "j": "开市.入宅.动土.破土.安葬", "y": "沐浴.理髮.会亲友.塑绘.开光" }, "d0818": { "j": "嫁娶.栽种.祈福.造桥.安葬", "y": "祭祀.理髮.作灶.沐浴.修饰垣墙" }, "d0819": { "j": "开市.立券.置产.作灶.造桥", "y": "嫁娶.纳采.订盟.祭祀.祈福" }, "d0820": { "j": "开市.交易.入宅.嫁娶", "y": "祭祀.普渡.捕捉.解除.结网" }, "d0821": { "j": "斋醮.开市", "y": "沐浴.破屋.坏垣.余事勿取" }, "d0822": { "j": "动土.破土.嫁娶.掘井.安床", "y": "订盟.纳采.祭祀.祈福.安香" }, "d0823": { "j": "纳采.订盟.经络.行丧.安葬", "y": "嫁娶.祭祀.祈福.斋醮.普渡" }, "d0824": { "j": "掘井.出行.破土.行丧.安葬", "y": "嫁娶.订盟.纳采.作灶.冠笄" }, "d0825": { "j": "出火.入宅.盖屋.安门.安葬", "y": "嫁娶.订盟.纳采.祭祀.斋醮" }, "d0826": { "j": "动土.破土.掘井.开光.上樑", "y": "嫁娶.普渡.祭祀.祈福.补垣" }, "d0827": { "j": "开市.动土.破土.安床.开仓", "y": "嫁娶.冠笄.祭祀.沐浴.普渡" }, "d0828": { "j": "嫁娶.出行.入宅.开市.安门", "y": "祭祀.沐浴.理髮.整手足甲.冠笄" }, "d0829": { "j": "诸事不宜", "y": "祭祀.解除.余事勿取" }, "d0830": { "j": "嫁娶.安门.动土.安葬", "y": "出行.沐浴.订盟.纳采.裁衣" }, "d0831": { "j": "开市.立券.纳财.作灶", "y": "纳采.订盟.嫁娶.祭祀.祈福" }, "d0901": { "j": "嫁娶.纳采.订盟.开市.入宅", "y": "祭祀.捕捉.畋猎.纳畜.牧养" }, "d0902": { "j": "行丧.安葬", "y": "破屋.坏垣.治病.余事勿取" }, "d0903": { "j": "动土.破土.订盟.安床.开池", "y": "祈福.斋醮.出行.冠笄.嫁娶" }, "d0904": { "j": "", "y": "祈福.求嗣.解除.订盟.纳采" }, "d0905": { "j": "", "y": "塑绘.开光.解除.订盟.纳采" }, "d0906": { "j": "", "y": "祈福.出行.订盟.纳采.嫁娶" }, "d0907": { "j": "开市.入宅.嫁娶.动土.破土", "y": "祭祀.修坟.除服.成服.启钻" }, "d0908": { "j": "祈福.开光.开市.入宅.动土", "y": "嫁娶.冠笄.安机械.解除.纳畜" }, "d0909": { "j": "动土.破土.置产.掘井", "y": "祭祀.出行.沐浴.扫舍.安葬" }, "d0910": { "j": "造庙.行丧.安葬.伐木.作灶", "y": "嫁娶.纳采.祭祀.解除.出行" }, "d0911": { "j": "斋醮.嫁娶.行丧.动土.作灶", "y": "纳采.订盟.开市.交易.立券" }, "d0912": { "j": "嫁娶.入宅.安床.出行", "y": "祭祀.沐浴.修饰垣墙.平治道涂.余事勿取" }, "d0913": { "j": "作灶.出火.进人口.开渠.入宅", "y": "开光.祈福.求嗣.斋醮.修造" }, "d0914": { "j": "出火.入宅.移徙.祈福.祭祀", "y": "开光.解除.拆卸.修造.动土" }, "d0915": { "j": "移徙.入宅", "y": "破屋.坏垣.求医.治病.余事勿取" }, "d0916": { "j": "开市.开仓.安门.安葬", "y": "嫁娶.纳采.订盟.祭祀.祈福" }, "d0917": { "j": "安葬.纳畜.出行.行丧.伐木", "y": "嫁娶.纳采.订盟.祭祀.祈福" }, "d0918": { "j": "嫁娶.开市.盖屋.作梁.合寿木", "y": "祭祀.冠笄.捕捉.余事勿取" }, "d0919": { "j": "开市.祈福.动土.破土.入殓", "y": "祭祀.解除.结网.畋猎.取渔" }, "d0920": { "j": "嫁娶.开市.祭祀.祈福.斋醮", "y": "冠笄.沐浴.出行.修造.动土" }, "d0921": { "j": "嫁娶.入宅.修造.动土.会亲友", "y": "祭祀.出行" }, "d0922": { "j": "针灸.伐木.作梁.造庙.行丧", "y": "嫁娶.订盟.纳采.祭祀.祈福" }, "d0923": { "j": "嫁娶.安葬.动土.造桥", "y": "出行.开市.交易.立券.安机械" }, "d0924": { "j": "斋醮.嫁娶.移徙.出行.上樑", "y": "祭祀.沐浴.修饰垣墙.平治道涂.余事勿取" }, "d0925": { "j": "纳采.订盟.架马.词讼.开渠", "y": "嫁娶.造车器.安机械.祭祀.祈福" }, "d0926": { "j": "祭祀.嫁娶.安床.开市.入宅", "y": "沐浴.捕捉.入殓.除服.成服" }, "d0927": { "j": "探病.余事勿取", "y": "余事勿取" }, "d0928": { "j": "嫁娶.造庙.造桥.造船.作灶", "y": "订盟.纳采.祭祀.祈福.安香" }, "d0929": { "j": "行丧.安葬.合寿木", "y": "开光.求嗣.雕刻.嫁娶.订盟" }, "d0930": { "j": "开光.动土.破土.开市.修造", "y": "祭祀.嫁娶.捕捉" }, "d1001": { "j": "嫁娶.开市.动土.掘井.开池", "y": "祭祀.普渡.解除.会亲友.捕捉" }, "d1002": { "j": "祭祀.祈福.开光.开市.安床", "y": "出行.解除.冠笄.嫁娶.伐木" }, "d1003": { "j": "动土.作灶.行丧.安葬.修坟", "y": "祭祀.祈福.求嗣.出行.沐浴" }, "d1004": { "j": "造庙.安门.行丧.安葬", "y": "出行.解除.纳采.冠笄.雕刻" }, "d1005": { "j": "", "y": "开光.塑绘.出行.解除.冠笄" }, "d1006": { "j": "嫁娶.入宅.上樑.安门", "y": "祭祀.祈福.修饰垣墙.平治道涂.入殓" }, "d1007": { "j": "入宅.伐木", "y": "祭祀.会亲友.纳采.嫁娶.开光" }, "d1008": { "j": "开市.入宅.祭祀.置产.补垣", "y": "入殓.破土.启钻.安葬.除服" }, "d1009": { "j": "入宅.移徙.掘井.理髮.伐木", "y": "嫁娶.祭祀.祈福.求嗣.开光" }, "d1010": { "j": "嫁娶.入宅.上樑.出行.安葬", "y": "祭祀.沐浴.破屋.坏垣.余事勿取" }, "d1011": { "j": "祈福.斋醮.纳采.订盟.嫁娶", "y": "祭祀.求嗣.冠笄.进人口.会亲友" }, "d1012": { "j": "探病.纳畜.伐木.起基.作梁", "y": "嫁娶.纳采.订盟.开市.交易" }, "d1013": { "j": "嫁娶.开市.开池.开厕.破土", "y": "祭祀.冠笄.移徙.会亲友.纳财" }, "d1014": { "j": "安门.安床.裁衣.入宅.安葬", "y": "祭祀.祈福.求嗣.斋醮.开光" }, "d1015": { "j": "开市.出行.栽种.置产.词讼", "y": "嫁娶.裁衣.冠笄.合帐.祭祀" }, "d1016": { "j": "出货财.开仓.动土.破土.安葬", "y": "祭祀.造车器.出行.修造.上樑" }, "d1017": { "j": "造庙.嫁娶.掘井.栽种.造桥", "y": "祭祀.开光.出行.解除.伐木" }, "d1018": { "j": "入宅.上樑.斋醮.出火.谢土", "y": "纳采.订盟.开市.交易.立券" }, "d1019": { "j": "嫁娶.开市", "y": "祭祀.平治道涂.余事勿取" }, "d1020": { "j": "开市.交易.祭祀.入宅.安葬", "y": "捕捉.畋猎.余事勿取" }, "d1021": { "j": "开市.破土.掘井.合寿木", "y": "嫁娶.纳采.订盟.祭祀.祈福" }, "d1022": { "j": "开市.嫁娶", "y": "祭祀.沐浴.解除.破屋.坏垣" }, "d1023": { "j": "嫁娶.开市.入宅.祈福.安葬", "y": "订盟.纳采.会亲友.交易.立券" }, "d1024": { "j": "上樑.开光.盖屋.架马.合寿木", "y": "造车器.嫁娶.订盟.纳采.会亲友" }, "d1025": { "j": "动土.破土.开市.安葬", "y": "祭祀.作灶.纳财.捕捉.畋猎" }, "d1026": { "j": "开市.开仓.出货财.安床.安门", "y": "嫁娶.订盟.纳采.祭祀.祈福" }, "d1027": { "j": "开光.嫁娶.会亲友.栽种.针灸", "y": "冠笄.祭祀.沐浴.作灶.理髮" }, "d1028": { "j": "", "y": "祭祀.祈福.求嗣.开光.解除" }, "d1029": { "j": "嫁娶.动土.破土.修坟", "y": "出行.造车器.造畜稠.解除.冠笄" }, "d1030": { "j": "移徙.入宅.出行.祈福.嫁娶", "y": "沐浴.理髮.冠笄.安床.开市" }, "d1031": { "j": "嫁娶.开市.安床.掘井", "y": "祭祀.造畜稠.修饰垣墙.平治道涂.余事勿取" }, "d1101": { "j": "嫁娶.祭祀.入宅.盖屋.移徙", "y": "捕捉.结网.入殓.除服.成服" }, "d1102": { "j": "开光.嫁娶.掘井.伐木.作梁", "y": "祭祀.祈福.求嗣.斋醮.造庙" }, "d1103": { "j": "诸事不宜", "y": "破屋.坏垣.余事勿取" }, "d1104": { "j": "出行.祈福.安葬.作灶", "y": "会亲友.嫁娶.订盟.纳采.纳婿" }, "d1105": { "j": "开仓.冠笄.伐木.作梁", "y": "祭祀.塑绘.开光.祈福.斋醮" }, "d1106": { "j": "栽种.动土.安葬.开市", "y": "祭祀.作灶.入殓.除服.成服" }, "d1107": { "j": "嫁娶.入宅.开市.安床.破土", "y": "沐浴.扫舍.捕捉.畋猎.解除" }, "d1108": { "j": "伐木.上樑.修造.入殓.理髮", "y": "嫁娶.冠笄.祭祀.祈福.求嗣" }, "d1109": { "j": "置产.造船.开光.掘井.作灶", "y": "合帐.裁衣.嫁娶.安床.入殓" }, "d1110": { "j": "开市.动土.破土.嫁娶.安葬", "y": "解除.修饰垣墙.冠笄.出行.余事勿取" }, "d1111": { "j": "作灶.经络.安床", "y": "纳采.订盟.嫁娶.祭祀.祈福" }, "d1112": { "j": "祈福.谢土.安葬.上樑.作灶", "y": "祭祀.塑绘.理髮.会亲友.牧养" }, "d1113": { "j": "造庙.谢土.作灶.作梁.伐木", "y": "出行.纳财.开市.交易.立券" }, "d1114": { "j": "置产.掘井.词讼.栽种", "y": "嫁娶.纳采.订盟.祭祀.斋醮" }, "d1115": { "j": "破土.动土.安门.作灶.开市", "y": "嫁娶.纳采.订盟.祭祀.开光" }, "d1116": { "j": "嫁娶.安葬", "y": "祭祀.解除.破屋.坏垣.求医" }, "d1117": { "j": "祭祀.嫁娶.入宅.修造.动土", "y": "祭祀.扫舍.破土.安葬.除服" }, "d1118": { "j": "嫁娶.移徙.出火.开市.入宅", "y": "订盟.纳采.会亲友.祭祀.祈福" }, "d1119": { "j": "嫁娶.纳采.订盟.安床.动土", "y": "祭祀.沐浴.捕捉.畋猎.结网" }, "d1120": { "j": "移徙.入宅.出火.入殓.安葬", "y": "开市.纳财.出行.祭祀.祈福" }, "d1121": { "j": "嫁娶.入宅.安床.掘井.开光", "y": "祭祀.理髮.置产.塞穴.除服" }, "d1122": { "j": "开市.动土.破土.行丧.安葬", "y": "祭祀.沐浴.出行.余事勿取" }, "d1123": { "j": "开市.纳采.造庙.安床.开渠", "y": "嫁娶.造车器.出行.会亲友.移徙" }, "d1124": { "j": "嫁娶.开市.祈福.斋醮.安葬", "y": "塑绘.会亲友.安机械.塞穴.结网" }, "d1125": { "j": "开仓.盖屋.造桥.祭祀", "y": "纳采.移徙.纳财.开市.交易" }, "d1126": { "j": "嫁娶.安葬.掘井.置产.造船", "y": "订盟.纳采.纳财.开市.立券" }, "d1127": { "j": "开市.造庙.动土.破土", "y": "嫁娶.订盟.纳采.祭祀.祈福" }, "d1128": { "j": "嫁娶.安葬", "y": "破屋.坏垣.祭祀.余事勿取" }, "d1129": { "j": "盖屋.造船.动土.破土", "y": "嫁娶.纳采.订盟.祭祀.冠笄" }, "d1130": { "j": "嫁娶.开市.入宅.出火.移徙", "y": "纳采.订盟.祭祀.祈福.求嗣" }, "d1201": { "j": "安床.安门.破土.修坟.安葬", "y": "捕捉.畋猎.会亲友.解除.入殓" }, "d1202": { "j": "移徙.入宅.安门.作梁.安葬", "y": "祭祀.祈福.求嗣.斋醮.沐浴" }, "d1203": { "j": "开光.掘井.安葬.谢土.修坟", "y": "嫁娶.冠笄.安床.纳采.会亲友" }, "d1204": { "j": "诸事不宜", "y": "祭祀.沐浴.余事勿取" }, "d1205": { "j": "入宅.作灶.安床.开仓", "y": "祭祀.会亲友.嫁娶.沐浴.修造" }, "d1206": { "j": "斋醮.伐木.作梁.安葬.行丧", "y": "嫁娶.纳采.订盟.造车器.祭祀" }, "d1207": { "j": "嫁娶.动土.破土.祈福.出火", "y": "纳采.订盟.开市.交易.立券" }, "d1208": { "j": "嫁娶.入宅.纳采.订盟.掘井", "y": "祭祀.平治道涂.除服.成服.安葬" }, "d1209": { "j": "开市.造庙.置产.掘井", "y": "纳采.订盟.祭祀.祈福.开光" }, "d1210": { "j": "开生坟.破土.行丧.安葬", "y": "嫁娶.冠笄.祭祀.祈福.求嗣" }, "d1211": { "j": "移徙.入宅", "y": "破屋.坏垣.治病.余事勿取" }, "d1212": { "j": "作灶.安门.造桥.开市.安葬", "y": "安床.架马.祭祀.塑绘.开光" }, "d1213": { "j": "伐木.作梁.动土.安床.破土", "y": "嫁娶.祭祀.祈福.求嗣.开光" }, "d1214": { "j": "会亲友.安葬.入宅.移徙.安床", "y": "祭祀.沐浴.理髮.纳财.进人口" }, "d1215": { "j": "嫁娶.开市.出火.进人口.入殓", "y": "纳采.订盟.祭祀.祈福.求嗣" }, "d1216": { "j": "嫁娶.开市.安床.栽种.安葬", "y": "入宅.移徙.出行.进人口.修造" }, "d1217": { "j": "入宅.移徙.分居.作灶.出火", "y": "造畜稠.教牛马" }, "d1218": { "j": "破土.安葬.行丧.开生坟", "y": "订盟.纳采.造车器.祭祀.祈福" }, "d1219": { "j": "祈福.出火.嫁娶.入宅.开市", "y": "订盟.纳采.会亲友.安机械.开光" }, "d1220": { "j": "移徙.入宅.嫁娶.掘井.安葬", "y": "祭祀.平治道涂.修坟.除服.成服" }, "d1221": { "j": "开市.纳采.订盟.作灶.造庙", "y": "嫁娶.冠笄.祭祀.祈福.求嗣" }, "d1222": { "j": "出行.掘井.破土.行丧.安葬", "y": "嫁娶.订盟.纳采.祭祀.祈福" }, "d1223": { "j": "嫁娶.移徙.入宅.探病.出行", "y": "祭祀.沐浴.破屋.坏垣.余事勿取" }, "d1224": { "j": "安门.动土.破土.行丧.安葬", "y": "冠笄.纳财.掘井.开池.出火" }, "d1225": { "j": "嫁娶.动土.安床.造桥.掘井", "y": "纳采.订盟.移徙.入宅.出行" }, "d1226": { "j": "开市.斋醮.破土.安葬", "y": "祭祀.沐浴.作灶.纳财.捕捉" }, "d1227": { "j": "余事勿取", "y": "祭祀.结网.入殓.除服.成服" }, "d1228": { "j": "嫁娶.祈福.开光.掘井.安葬", "y": "纳采.订盟.祭祀.沐浴.冠笄" }, "d1229": { "j": "入宅.动土.破土.嫁娶.作灶", "y": "合帐" }, "d1230": { "j": "斋醮.作梁.掘井.行丧.安葬", "y": "纳采.订盟.嫁娶.祭祀.祈福" }, "d1231": { "j": "嫁娶.祈福.出火.移徙.入宅", "y": "纳财.开市.交易.立券.会亲友" } } ukui-panel-4.0.0.4/plugin-calendar/html/hlnew/hl2015.json0000644000175000017500000031126414560306203021311 0ustar fengfeng{ "d0101": { "y": "订盟.纳采.造车器.祭祀.祈福.出行.安香.修造.动土.上梁.开市.交易.立券.移徙.入宅.会亲友.安机械.栽种.纳畜.造屋.起基.安床.造畜椆栖.", "j": "破土.安葬.行丧.开生坟.", "c": "生肖冲羊", "s": "煞東", "ch": "除", "zc": "正冲正冲辛未", "ts": "仓库厕外西南" }, "d0201": { "y": "沐浴.开仓.出货财.开市.交易.立券.纳财.栽种.纳畜.牧养.畋猎.入殓.破土.安葬.", "j": "祈福.嫁娶.安床.入宅.造船.", "c": "生肖冲虎", "s": "煞南", "ch": "危", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" }, "d0102": { "y": "订盟.纳采.会亲友.安机械.开光.修造.动土.竖柱.上梁.造屋.起基.造桥.栽种.纳畜.造畜椆栖.移柩.入殓.启攒.修坟.立碑.安葬.", "j": "祈福.出火.嫁娶.入宅.开市.动土.破土.", "c": "生肖冲猴", "s": "煞北", "ch": "满", "zc": "正冲正冲壬申", "ts": "房床厕外正南" }, "d0103": { "y": "祭祀.平治道涂.修坟.除服.成服.余事勿取.", "j": "移徙.入宅.嫁娶.掘井.安葬.", "c": "生肖冲鸡", "s": "煞西", "ch": "平", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d0104": { "y": "嫁娶.冠笄.祭祀.祈福.求嗣.雕刻.开光.安香.出行.入学.修造.动土.竖柱.上梁.造屋.起基.安门.出火.移徙.入宅.掘井.造畜椆栖.安葬.破土.除服.成服.", "j": "开市.纳采.订盟.作灶.造庙.造船.经络.", "c": "生肖冲狗", "s": "煞南", "ch": "定", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d0105": { "y": "嫁娶.订盟.纳采.祭祀.祈福.求嗣.斋醮.安香.出火.修造.起基.造屋.合脊.安门.安碓硙.动土.上梁.移徙.入宅.", "j": "出行.掘井.破土.行丧.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "执", "zc": "正冲正冲乙亥", "ts": "厨灶床外正西" }, "d0106": { "y": "嫁娶.祭祀.祈福.求嗣.开光.入宅.移徙.安床.修造.动土.进人口.", "j": "掘井.安葬.栽种.出行.作灶.开市.入宅.安门.", "c": "生肖冲鼠", "s": "煞北", "ch": "执", "zc": "正冲正冲丙子", "ts": "仓库碓外西北" }, "d0107": { "y": "破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲牛", "s": "煞西", "ch": "破", "zc": "正冲正冲丁丑", "ts": "房床厕外西北" }, "d0108": { "y": "嫁娶.开市.交易.立券.开光.出行.出火.拆卸.修造.入宅.移徙.动土.破土.移柩.安葬.启攒.除服.成服.", "j": "安床.伐木.祈福.纳畜.", "c": "生肖冲虎", "s": "煞南", "ch": "危", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d0109": { "y": "祭祀.入殓.破土.除服.成服.启攒.安葬.修坟.立碑.余事勿取.", "j": "余事勿取.", "c": "生肖冲兔", "s": "煞東", "ch": "成", "zc": "正冲正冲己卯", "ts": "占门炉外西北" }, "d0110": { "y": "祭祀.解除.余事勿取.", "j": "诸事不宜.", "c": "生肖冲龙", "s": "煞北", "ch": "收", "zc": "正冲正冲庚辰", "ts": "厨灶栖外西北" }, "d0111": { "y": "开市.交易.立券.纳财.纳畜.造畜椆栖.入宅.移徙.安床.开光.祈福.求嗣.动土.", "j": "嫁娶.栽种.安葬.理发.造庙.作灶.入殓.行丧.造桥.", "c": "生肖冲蛇", "s": "煞西", "ch": "开", "zc": "正冲正冲辛巳", "ts": "仓库床外西北" }, "d0112": { "y": "安床.裁衣.交易.立券.入殓.移柩.安葬.除服.成服.", "j": "置产.嫁娶.出行.开光.栽种.动土.破土.入宅.治病.", "c": "生肖冲马", "s": "煞南", "ch": "闭", "zc": "正冲正冲壬午", "ts": "房床碓外正北" }, "d0113": { "y": "祭祀.解除.造畜椆栖.教牛马.针灸.余事勿取.", "j": "嫁娶.动土.开池.安葬.", "c": "生肖冲羊", "s": "煞東", "ch": "建", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d0114": { "y": "沐浴.塑绘.开光.纳采.订盟.开市.交易.立券.纳财.起基.动土.定磉.放水.安葬.破土.启攒.修坟.立碑.移柩.", "j": "入宅.安门.祭祀.谢土.", "c": "生肖冲猴", "s": "煞北", "ch": "除", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d0115": { "y": "嫁娶.出行.理发.安床.启攒.安葬.修坟.开市.交易.立券.纳财.开池.牧养.", "j": "掘井.祈福.谢土.动土.入宅.上梁.修造.作灶.", "c": "生肖冲鸡", "s": "煞西", "ch": "满", "zc": "正冲正冲乙酉", "ts": "厨灶门外正北" }, "d0116": { "y": "解除.平治道涂.余事勿取.", "j": "移徙.入宅.掘井.造庙.栽种.针灸.治病.开池.", "c": "生肖冲狗", "s": "煞南", "ch": "平", "zc": "正冲正冲丙戌", "ts": "仓库栖外正北" }, "d0117": { "y": "嫁娶.祭祀.开光.伐木.出火.拆卸.入宅.移徙.修造.动土.上梁.安床.纳畜.", "j": "开市.行丧.栽种.出行.出货财.安葬.置产.词讼.治病.", "c": "生肖冲猪", "s": "煞東", "ch": "定", "zc": "正冲正冲丁亥", "ts": "占房床房内北" }, "d0118": { "y": "嫁娶.纳采.订盟.入宅.移徙.安床.祭祀.祈福.开光.出行.解除.出火.拆卸.动土.纳畜.谢土.安葬.破土.", "j": "伐木.开市.交易.上梁.作灶.安门.造屋.", "c": "生肖冲鼠", "s": "煞北", "ch": "执", "zc": "正冲正冲戊子", "ts": "占门碓房内北" }, "d0119": { "y": "祭祀.破屋.坏垣.解除.余事勿取.", "j": "开市.动土.破土.", "c": "生肖冲牛", "s": "煞西", "ch": "破", "zc": "正冲正冲己丑", "ts": "碓磨厕房内北" }, "d0120": { "y": "嫁娶.纳采.订盟.开光.安香.出火.纳财.开市.交易.立券.裁衣.造屋.起基.修造.动土.安门.移徙.入宅.栽种.牧养.畋猎.掘井.开池.安葬.破土.入殓.除服.成服.立碑.", "j": "祈福.造庙.祭祀.安床.谢土.", "c": "生肖冲虎", "s": "煞南", "ch": "危", "zc": "正冲正冲庚寅", "ts": "厨灶炉房内北" }, "d0121": { "y": "祭祀.斋醮.入殓.破土.启攒.安葬.修坟.立碑.除服.成服.", "j": "嫁娶.入宅.作灶.纳采.订盟.", "c": "生肖冲兔", "s": "煞東", "ch": "成", "zc": "正冲正冲辛卯", "ts": "仓库门房内北" }, "d0122": { "y": "祭祀.斋醮.纳财.捕捉.畋猎.", "j": "嫁娶.开市.入宅.安床.破土.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "收", "zc": "正冲正冲壬辰", "ts": "房床栖房内南" }, "d0123": { "y": "纳采.订盟.祭祀.祈福.求嗣.斋醮.沐浴.进人口.会亲友.入学.治病.安碓硙.掘井.开池.纳畜.牧养.造畜椆栖.", "j": "嫁娶.合帐.入宅.行丧.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "开", "zc": "正冲正冲癸巳", "ts": "占门床房内南" }, "d0124": { "y": "祭祀.祈福.求嗣.沐浴.问名.交易.纳财.入殓.移柩.安葬.修坟.立碑.谢土.造畜椆栖.教牛马.", "j": "入宅.置产.嫁娶.动土.栽种.开市.开光.动土.破土.", "c": "生肖冲马", "s": "煞南", "ch": "闭", "zc": "正冲正冲甲午", "ts": "占碓磨房内南" }, "d0125": { "y": "祭祀.教牛马.造畜椆栖.祭祀.会亲友.解除.余事勿取.", "j": "嫁娶.入宅.出行.动土.破土.安葬.行丧.", "c": "生肖冲羊", "s": "煞東", "ch": "建", "zc": "正冲正冲乙未", "ts": "厨灶厕房内南" }, "d0126": { "y": "嫁娶.开光.解除.出火.拆卸.修造.进人口.入宅.移徙.安床.栽种.入殓.修坟.动土.除服.成服.", "j": "作灶.安葬.祭祀.开市.纳采.订盟.纳畜.谢土.出行.探病.", "c": "生肖冲猴", "s": "煞北", "ch": "除", "zc": "正冲正冲丙申", "ts": "仓库炉房内南" }, "d0127": { "y": "出行.起基.安床.纳财.交易.立券.嫁娶.栽种.入殓.移柩.安葬.", "j": "挂匾.入宅.上梁.祈福.词讼.作梁.作灶.开池.安门.动土.破土.掘井.", "c": "生肖冲鸡", "s": "煞西", "ch": "满", "zc": "正冲正冲丁酉", "ts": "房床门房内南" }, "d0128": { "y": "平治道涂.余事勿取.", "j": "开光.嫁娶.开仓.出货财.造船.安葬.探病.", "c": "生肖冲狗", "s": "煞南", "ch": "平", "zc": "正冲正冲戊戌", "ts": "门鸡栖房内东" }, "d0129": { "y": "嫁娶.订盟.纳采.会亲友.祭祀.安机械.移徙.入宅.造屋.安床.起基.定磉.安香.出火.挂匾.拆卸.置产.", "j": "开市.出行.安葬.行丧.", "c": "生肖冲猪", "s": "煞東", "ch": "定", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d0130": { "y": "沐浴.捕捉.畋猎.理发.整手足甲.入殓.除服.成服.破土.安葬.谢土.立碑.修坟.启攒.", "j": "纳采.订盟.嫁娶.上梁.开市.斋醮.造屋.安门.", "c": "生肖冲鼠", "s": "煞北", "ch": "执", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d0131": { "y": "祭祀.破屋.坏垣.余事勿取.", "j": "斋醮.嫁娶.开市.", "c": "生肖冲牛", "s": "煞西", "ch": "破", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d0213": { "y": "求医.治病.破屋.坏垣.余事勿取.", "j": "开市.嫁娶.", "c": "生肖冲虎", "s": "煞南", "ch": "破", "zc": "正冲正冲甲寅", "ts": "碓磨炉外东南" }, "d0226": { "y": "纳采.订盟.祭祀.祈福.安香.出火.修造.出行.开市.移徙.入宅.动土.安葬.破土.", "j": "安床.作灶.造船.会亲友.", "c": "生肖冲兔", "s": "煞東", "ch": "危", "zc": "正冲正冲丁卯", "ts": "房床门外西南" }, "d0216": { "y": "祭祀.沐浴.理发.作灶.结网.栽种.", "j": "嫁娶.词讼.行丧.安葬.牧养.伐木.作梁.开市.纳畜.造畜椆栖.", "c": "生肖冲蛇", "s": "煞西", "ch": "收", "zc": "正冲正冲丁巳", "ts": "占房床外东南" }, "d0223": { "y": "嫁娶.祭祀.冠笄.修饰垣墙.置产.", "j": "经络.探病.造屋.作灶.动土.", "c": "生肖冲鼠", "s": "煞北", "ch": "定", "zc": "正冲正冲甲子", "ts": "占碓磨外正南" }, "d0203": { "y": "嫁娶.纳采.订盟.问名.祭祀.冠笄.裁衣.会亲友.进人口.纳财.捕捉.作灶.", "j": "开市.安床.安葬.修坟.", "c": "生肖冲龙", "s": "煞北", "ch": "收", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d0206": { "y": "祭祀.合帐.裁衣.经络.伐木.作梁.安床.作灶.入殓.安葬.启攒.移柩.", "j": "词讼.出火.入宅.", "c": "生肖冲羊", "s": "煞東", "ch": "闭", "zc": "正冲正冲丁未", "ts": "房床厕外东北" }, "d0227": { "y": "塞穴.结网.取渔.畋猎.", "j": "嫁娶.安门.移徙.入宅.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "成", "zc": "正冲正冲戊辰", "ts": "门鸡栖外西南" }, "d0301": { "y": "纳采.嫁娶.祭祀.祈福.出行.开市.会亲友.动土.破土.启攒.", "j": "移徙.入宅.出火.安门.安葬.", "c": "生肖冲马", "s": "煞南", "ch": "开", "zc": "正冲正冲庚午", "ts": "厨灶碓外西南" }, "d0202": { "y": "祭祀.沐浴.补垣.塞穴.断蚁.解除.余事勿取.", "j": "造庙.入宅.修造.安葬.行丧.嫁娶.", "c": "生肖冲兔", "s": "煞東", "ch": "成", "zc": "正冲正冲癸卯", "ts": "占大门外东北" }, "d0204": { "y": "移徙.祭祀.开光.祈福.出行.解除.进人口.雇庸.安床.动土.起基.上梁.安门.解除.", "j": "嫁娶.安葬.破土.作梁.纳畜.牧养.行丧.作灶.", "c": "生肖冲蛇", "s": "煞西", "ch": "收", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d0205": { "y": "嫁娶.开光.祈福.求嗣.解除.动土.安床.栽种.开池.掘井.祭祀.破土.启攒.", "j": "入宅.作灶.伐木.安葬.出火.出行.纳畜.", "c": "生肖冲马", "s": "煞南", "ch": "开", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d0207": { "y": "裁衣.伐木.作梁.纳财.交易.立券.", "j": "诸事不宜.", "c": "生肖冲猴", "s": "煞北", "ch": "建", "zc": "正冲正冲戊申", "ts": "占门炉外东北" }, "d0208": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出行.出火.拆卸.动土.上梁.进人口.入宅.移徙.安床.开市.交易.立券.挂匾.入殓.破土.安葬.启攒.除服.成服.", "j": "诸事不宜.", "c": "生肖冲鸡", "s": "煞西", "ch": "除", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d0209": { "y": "嫁娶.冠笄.纳采.出行.会亲友.上梁.安机械.安床.牧养.畋猎.祭祀.祈福.开光.修造.安门.造屋.起基.", "j": "入宅.作灶.治病.安葬.移徙.", "c": "生肖冲狗", "s": "煞南", "ch": "满", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d0210": { "y": "修饰垣墙.平治道涂.祭祀.余事勿取.", "j": "诸事不宜.", "c": "生肖冲猪", "s": "煞東", "ch": "平", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d0211": { "y": "造车器.纳采.订盟.祭祀.祈福.求嗣.移徙.出行.开市.出火.入宅.立券.交易.入宅.安门.安床.安葬.谢土.", "j": "开光.造屋.动土.作灶.栽种.", "c": "生肖冲鼠", "s": "煞北", "ch": "定", "zc": "正冲正冲壬子", "ts": "房床碓外正东" }, "d0212": { "y": "动土.入殓.嫁娶.移柩.安葬.破土.", "j": "开市.作灶.安床.入宅.上梁.裁衣.", "c": "生肖冲牛", "s": "煞西", "ch": "执", "zc": "正冲正冲癸丑", "ts": "占门厕外正东" }, "d0214": { "y": "祭祀.斋醮.沐浴.开生坟.除服.成服.移柩.入殓.破土.安葬.合寿木.", "j": "开市.嫁娶.安床.会亲友.入宅.作灶.上梁.", "c": "生肖冲兔", "s": "煞東", "ch": "危", "zc": "正冲正冲乙卯", "ts": "厨灶门外东南" }, "d0215": { "y": "祭祀.塞穴.结网.破土.谢土.安葬.移柩.除服.成服.余事勿取.", "j": "嫁娶.入宅.", "c": "生肖冲龙", "s": "煞北", "ch": "成", "zc": "正冲正冲丙辰", "ts": "仓库栖外东南" }, "d0217": { "y": "嫁娶.祭祀.开光.祈福.求嗣.出行.开市.交易.立券.动土.纳财.掘井.会亲友.", "j": "入宅.安葬.伐木.作梁.纳畜.造畜椆栖.作灶.", "c": "生肖冲马", "s": "煞南", "ch": "开", "zc": "正冲正冲戊午", "ts": "占门碓外东南" }, "d0218": { "y": "祭祀.祈福.求嗣.纳畜.入殓.启攒.谢土.除服.成服.", "j": "栽种.开光.出行.针灸.嫁娶.入宅.动土.破土.", "c": "生肖冲羊", "s": "煞東", "ch": "闭", "zc": "正冲正冲己未", "ts": "碓磨厕外东南" }, "d0219": { "y": "开光.解除.伐木.竖柱.上梁.交易.立券.纳畜.入殓.移柩.安葬.", "j": "入宅.出行.移徙.祭祀.嫁娶.动土.破土.作灶.", "c": "生肖冲猴", "s": "煞北", "ch": "建", "zc": "正冲正冲庚申", "ts": "厨灶炉外正南" }, "d0220": { "y": "祭祀.祈福.求嗣.开光.嫁娶.出行.解除.伐木.拆卸.进人口.安床.动土.起基.上梁.栽种.纳畜.破土.谢土.启攒.安葬.", "j": "移徙.入宅.出火.作灶.掘井.", "c": "生肖冲鸡", "s": "煞西", "ch": "除", "zc": "正冲正冲辛酉", "ts": "仓库门外正南" }, "d0221": { "y": "会亲友.冠笄.安床.会亲友.安机械.祭祀.祈福.求嗣.经络.", "j": "嫁娶.开市.动土.作灶.安葬.", "c": "生肖冲狗", "s": "煞南", "ch": "满", "zc": "正冲正冲壬戌", "ts": "房床栖外正南" }, "d0222": { "y": "作灶.解除.平治道涂.余事勿取.", "j": "祭祀.祈福.安葬.安门.", "c": "生肖冲猪", "s": "煞東", "ch": "平", "zc": "正冲正冲癸亥", "ts": "占门床外正南" }, "d0224": { "y": "纳采.嫁娶.祭祀.祈福.出行.修造.动土.移徙.入宅.安葬.破土.", "j": "开市.入宅.斋醮.", "c": "生肖冲牛", "s": "煞西", "ch": "执", "zc": "正冲正冲乙丑", "ts": "厨灶厕外西南" }, "d0225": { "y": "祭祀.沐浴.解除.理发.扫舍.破屋.坏垣.余事勿取.", "j": "嫁娶.安葬.", "c": "生肖冲虎", "s": "煞南", "ch": "破", "zc": "正冲正冲丙寅", "ts": "仓库炉外西南" }, "d0228": { "y": "纳采.祭祀.祈福.出行.会亲友.修造.动土.移徙.入宅.", "j": "嫁娶.开市.安葬.破土.", "c": "生肖冲蛇", "s": "煞西", "ch": "收", "zc": "正冲正冲己巳", "ts": "碓磨床外西南" }, "d0327": { "y": "冠笄.立券.交易.修造.动土.安机械.入殓.安葬.破土.", "j": "嫁娶.祈福.出火.入宅.", "c": "生肖冲猴", "s": "煞北", "ch": "闭", "zc": "正冲正冲丙申", "ts": "仓库炉房内南" }, "d0317": { "y": "塞穴.整手足甲.解除.捕捉.畋猎.结网.余事勿取.诸事不宜.", "j": "嫁娶.作灶.掘井.安葬.", "c": "生肖冲狗", "s": "煞南", "ch": "除", "zc": "正冲正冲丙戌", "ts": "仓库栖外正北" }, "d0328": { "y": "祭祀.会亲友.出行.立券.交易.冠笄.纳财.", "j": "嫁娶.动土.掘井.起基.定磉.破土.", "c": "生肖冲鸡", "s": "煞西", "ch": "建", "zc": "正冲正冲丁酉", "ts": "房床门房内南" }, "d0323": { "y": "纳采.交易.立券.安床.安机械.安葬.移柩.动土.破土.立碑.", "j": "嫁娶.开光.作灶.", "c": "生肖冲龙", "s": "煞北", "ch": "危", "zc": "正冲正冲壬辰", "ts": "房床栖房内南" }, "d0307": { "y": "祭祀.嫁娶.纳婿.安葬.", "j": "栽种.造屋.作灶.入宅.", "c": "生肖冲鼠", "s": "煞北", "ch": "平", "zc": "正冲正冲丙子", "ts": "仓库碓外西北" }, "d0326": { "y": "嫁娶.订盟.纳采.祭祀.祈福.出行.修造.动土.移徙.入宅.破土.出火.安门.安床.上梁.立碑.移柩.", "j": "开市.交易.合帐.安葬.", "c": "生肖冲羊", "s": "煞東", "ch": "开", "zc": "正冲正冲乙未", "ts": "厨灶厕房内南" }, "d0325": { "y": "纳财.交易.立券.栽种.捕捉.结网.取渔.进人口.教牛马.理发.", "j": "入宅.造屋.竖柱.安葬.", "c": "生肖冲马", "s": "煞南", "ch": "收", "zc": "正冲正冲甲午", "ts": "占碓磨房内南" }, "d0427": { "y": "纳采.祭祀.祈福.求嗣.斋醮.出行.起基.造屋.定磉.安门.入殓.安葬.", "j": "嫁娶.开市.纳财.出火.", "c": "生肖冲兔", "s": "煞東", "ch": "执", "zc": "正冲正冲丁卯", "ts": "房床门外西南" }, "d0302": { "y": "祭祀.祈福.求嗣.斋醮.入殓.除服.成服.移柩.安葬.启攒.", "j": "嫁娶.动土.开光.造屋.破土.", "c": "生肖冲羊", "s": "煞東", "ch": "闭", "zc": "正冲正冲辛未", "ts": "仓库厕外西南" }, "d0303": { "y": "纳采.会亲友.竖柱.上梁.立券.入殓.移柩.安葬.启攒.", "j": "祭祀.移徙.入宅.动土.破土.", "c": "生肖冲猴", "s": "煞北", "ch": "建", "zc": "正冲正冲壬申", "ts": "房床厕外正南" }, "d0304": { "y": "祭祀.祈福.斋醮.出行.开市.立券.动土.移徙.入宅.破土.安葬.", "j": "开光.嫁娶.作灶.掘井.纳畜.", "c": "生肖冲鸡", "s": "煞西", "ch": "除", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d0305": { "y": "会亲友.求嗣.理发.冠笄.结网.捕捉.开光.理发.", "j": "开市.动土.安葬.破土.", "c": "生肖冲狗", "s": "煞南", "ch": "满", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d0306": { "y": "开光.塑绘.求嗣.纳采.裁衣.合帐.冠笄.安机械.作梁.开柱眼.安门.安床.造仓.祭祀.会亲友.祈福.经络.纳财.开市.立券.交易.入学.求嗣.理发.架马.", "j": "出行.斋醮.安葬.嫁娶.", "c": "生肖冲猪", "s": "煞東", "ch": "满", "zc": "正冲正冲乙亥", "ts": "厨灶床外正西" }, "d0308": { "y": "祭祀.会亲友.订盟.裁衣.合帐.安机械.拆卸.上梁.安门.入殓.除服.成服.移柩.启攒.安葬.立碑.开光.塑绘.入学.出行.起基.定磉.放水.移徙.入宅.竖柱.立券.经络.", "j": "伐木.作梁.", "c": "生肖冲牛", "s": "煞西", "ch": "定", "zc": "正冲正冲丁丑", "ts": "房床厕外西北" }, "d0309": { "y": "祭祀.开光.塑绘.祈福.斋醮.裁衣.合帐.冠笄.嫁娶.拆卸.动土.移徙.入宅.入殓.移柩.安葬.谢土.求嗣.入学.理发.伐木.架马.作梁.出火.修造.起基.定磉.放水.赴任.", "j": "入宅.安门.", "c": "生肖冲虎", "s": "煞南", "ch": "执", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d0310": { "y": "祭祀.治病.破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲兔", "s": "煞東", "ch": "破", "zc": "正冲正冲己卯", "ts": "占门炉外西北" }, "d0311": { "y": "嫁娶.祭祀.出行.冠笄.立券.交易.进人口.开市.移徙.修造.动土.安床.入殓.移柩.破土.", "j": "开光.作灶.斋醮.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "危", "zc": "正冲正冲庚辰", "ts": "厨灶栖外西北" }, "d0312": { "y": "开市.立券.交易.挂匾.祭祀.祈福.开光.入宅.移徙.安床.拆卸.动土.上梁.进人口.", "j": "嫁娶.行丧.架马.作梁.理发.牧养.安葬.纳畜.伐木.", "c": "生肖冲蛇", "s": "煞西", "ch": "成", "zc": "正冲正冲辛巳", "ts": "仓库床外西北" }, "d0313": { "y": "理发.冠笄.嫁娶.进人口.", "j": "置产.伐木.纳畜.造畜椆栖.安葬.破土.作梁.作灶.开生坟.", "c": "生肖冲马", "s": "煞南", "ch": "收", "zc": "正冲正冲壬午", "ts": "房床碓外正北" }, "d0314": { "y": "嫁娶.祭祀.开光.祈福.求嗣.出火.入宅.移徙.安床.拆卸.动土.破土.谢土.", "j": "合帐.开市.安葬.入殓.", "c": "生肖冲羊", "s": "煞東", "ch": "开", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d0315": { "y": "安床.伐木.拆卸.修造.动土.上梁.立券.交易.栽种.纳畜.牧养.入殓.安葬.", "j": "嫁娶.祭祀.开光.出行.出火.移徙.入宅.安门.", "c": "生肖冲猴", "s": "煞北", "ch": "闭", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d0316": { "y": "祭祀.祈福.求嗣.斋醮.嫁娶.冠笄.出行.开市.交易.会亲友.教牛马.除服.成服.启攒.安葬.移柩.", "j": "祈福.动土.移徙.入宅.", "c": "生肖冲鸡", "s": "煞西", "ch": "建", "zc": "正冲正冲乙酉", "ts": "厨灶门外正北" }, "d0318": { "y": "纳财.开市.立券.交易.开光.安床.上梁.造屋.修造.起基.", "j": "动土.破土.安葬.行丧.赴任.出行.嫁娶.入宅.移徙.谢土.词讼.", "c": "生肖冲猪", "s": "煞東", "ch": "满", "zc": "正冲正冲丁亥", "ts": "占房床房内北" }, "d0319": { "y": "祭祀.祈福.嫁娶.冠笄.修饰垣墙.置产.平治道涂.", "j": "开仓.出货财.造屋.作灶.开市.交易.立券.栽种.", "c": "生肖冲鼠", "s": "煞北", "ch": "平", "zc": "正冲正冲戊子", "ts": "占门碓房内北" }, "d0320": { "y": "嫁娶.祭祀.开光.祈福.求嗣.出行.出火.进人口.入宅.移徙.安床.拆卸.修造.安门.挂匾.纳财.扫舍.", "j": "动土.伐木.安葬.行丧.", "c": "生肖冲牛", "s": "煞西", "ch": "定", "zc": "正冲正冲己丑", "ts": "碓磨厕房内北" }, "d0321": { "y": "嫁娶.开光.祭祀.祈福.求嗣.出行.出火.入宅.移徙.解除.栽种.伐木.破土.谢土.安葬.", "j": "开市.交易.作灶.纳财.上梁.安床.造屋.造船.", "c": "生肖冲虎", "s": "煞南", "ch": "执", "zc": "正冲正冲庚寅", "ts": "厨灶炉房内北" }, "d0322": { "y": "破屋.坏垣.求医.治病.余事勿取.", "j": "开光.嫁娶.", "c": "生肖冲兔", "s": "煞东", "ch": "破", "zc": "正冲正冲辛卯", "ts": "仓库门房内北" }, "d0324": { "y": "祭祀.祈福.求嗣.斋醮.沐浴.开光.理发.经络.解除.治病.治病.立碑.栽种.牧养.掘井.开池.", "j": "嫁娶.定磉.合寿木.安葬.行丧.", "c": "生肖冲蛇", "s": "煞西", "ch": "成", "zc": "正冲正冲癸巳", "ts": "占门床房内南" }, "d0329": { "y": "祭祀.沐浴.解除.扫舍.塞穴.牧养.", "j": "嫁娶.安葬.行丧.安门.", "c": "生肖冲狗", "s": "煞南", "ch": "除", "zc": "正冲正冲戊戌", "ts": "门鸡栖房内东" }, "d0330": { "y": "纳财.开市.交易.立券.开光.针灸.会亲友.理发.安床.造仓.结网.", "j": "移徙.入宅.栽种.", "c": "生肖冲猪", "s": "煞東", "ch": "满", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d0331": { "y": "嫁娶.冠笄.会亲友.安机械.纳财.交易.立券.置产.", "j": "开市.造屋.治病.作灶.", "c": "生肖冲鼠", "s": "煞北", "ch": "平", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d0422": { "y": "祭祀.修饰垣墙.余事勿取.", "j": "开光.修造.动土.破土.", "c": "生肖冲狗", "s": "煞南", "ch": "建", "zc": "正冲正冲壬戌", "ts": "房床栖外正南" }, "d0402": { "y": "祈福.斋醮.出行.移徙.入宅.修造.动土.破土.安葬.", "j": "纳采.开光.安床.嫁娶.开市.", "c": "生肖冲虎", "s": "煞南", "ch": "执", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" }, "d0412": { "y": "开光.出行.交易.塞穴.嫁娶.理发.开市.安床.", "j": "祈福.出火.置产.动土.破土.安葬.修造.上梁.置产.入宅.", "c": "生肖冲鼠", "s": "煞北", "ch": "满", "zc": "正冲正冲壬子", "ts": "房床碓外正东" }, "d0421": { "y": "祭祀.出行.修造.动土.合帐.造畜椆栖.安床.移徙.入殓.移柩.破土.启攒.安葬.开生坟.合寿木.补垣.塞穴.", "j": "移徙.入宅.作灶.理发.开光.安门.", "c": "生肖冲鸡", "s": "煞西", "ch": "闭", "zc": "正冲正冲辛酉", "ts": "仓库门外正南" }, "d0522": { "y": "嫁娶.纳采.订盟.祭祀.祈福.求嗣.开光.出火.出行.拆卸.动土.修造.进人口.入宅.移徙.安床.解除.挂匾.栽种.破土.谢土.入殓.移柩.安葬.", "j": "开市.立券.造船.合寿木.", "c": "生肖冲龙", "s": "煞北", "ch": "执", "zc": "正冲正冲壬辰", "ts": "房床栖房内南" }, "d0401": { "y": "嫁娶.造车器.纳采.订盟.祭祀.祈福.安机械.移徙.入宅.开市.立券.破土.安葬.", "j": "纳畜.理发.合寿木.", "c": "生肖冲牛", "s": "煞西", "ch": "定", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d0403": { "y": "破屋.坏垣.余事勿取.", "j": "嫁娶.移徙.开市.入宅.", "c": "生肖冲兔", "s": "煞東", "ch": "破", "zc": "正冲正冲癸卯", "ts": "占大门外东北" }, "d0404": { "y": "嫁娶.冠笄.祭祀.出行.会亲友.修造.动土.入殓.破土.", "j": "塑绘.开光.造桥.除服.成服.", "c": "生肖冲龙", "s": "煞北", "ch": "危", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d0405": { "y": "塞穴.扫舍.余事勿取.", "j": "诸事不宜.", "c": "生肖冲蛇", "s": "煞西", "ch": "危", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d0406": { "y": "祭祀.祈福.求嗣.开光.解除.纳采.冠笄.出火.拆卸.进人口.安床.动土.上梁.造庙.掘井.开池.入殓.移柩.安葬.破土.", "j": "", "c": "生肖冲马", "s": "煞南", "ch": "成", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d0407": { "y": "解除.破屋.余事勿取.", "j": "诸事不宜.", "c": "生肖冲羊", "s": "煞東", "ch": "收", "zc": "正冲正冲丁未", "ts": "房床厕外东北" }, "d0408": { "y": "嫁娶.祈福.求嗣.开光.出行.解除.拆卸.出火.开市.立券.交易.入宅.移徙.安床.动土.破土.谢土.", "j": "祭祀.入殓.安葬.探病.", "c": "生肖冲猴", "s": "煞北", "ch": "开", "zc": "正冲正冲戊申", "ts": "占门炉外东北" }, "d0409": { "y": "祭祀.裁衣.冠笄.安床.交易.立券.开池.补垣.塞穴.入殓.破土.启攒.安葬.谢土.除服.成服.", "j": "嫁娶.掘井.探病.开市.开光.栽种.", "c": "生肖冲鸡", "s": "煞西", "ch": "闭", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d0410": { "y": "祭祀.出行.教牛马.扫舍.余事勿取.", "j": "开光.伐木.安葬.破土.", "c": "生肖冲狗", "s": "煞南", "ch": "建", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d0411": { "y": "祭祀.祈福.求嗣.开光.纳采.订盟.解除.栽种.纳畜.牧养.扫舍.进人口.", "j": "修坟.造桥.作灶.出行.安葬.造屋.入宅.", "c": "生肖冲猪", "s": "煞東", "ch": "除", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d0413": { "y": "祭祀.作灶.畋猎.结网.修饰垣墙.平治道涂.余事勿取.", "j": "嫁娶.安床.治病.", "c": "生肖冲牛", "s": "煞西", "ch": "平", "zc": "正冲正冲癸丑", "ts": "占门厕外正东" }, "d0414": { "y": "沐浴.祭祀.解除.安葬.破土.谢土.移柩.余事勿取.", "j": "斋醮.开光.嫁娶.入宅.上梁.", "c": "生肖冲虎", "s": "煞南", "ch": "定", "zc": "正冲正冲甲寅", "ts": "碓磨炉外东南" }, "d0415": { "y": "祭祀.解除.入殓.移柩.启攒.安葬.整手足甲.捕捉.畋猎.取渔.除服.成服.扫舍.谢土.斋醮.", "j": "动土.破土.", "c": "生肖冲兔", "s": "煞東", "ch": "执", "zc": "正冲正冲乙卯", "ts": "厨灶门外东南" }, "d0416": { "y": "祭祀.沐浴.解除.破屋.坏垣.求医.治病.余事勿取.", "j": "嫁娶.开市.", "c": "生肖冲龙", "s": "煞北", "ch": "破", "zc": "正冲正冲丙辰", "ts": "仓库栖外东南" }, "d0417": { "y": "沐浴.塞穴.畋猎.结网.取渔.扫舍.余事勿取.", "j": "祈福.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "危", "zc": "正冲正冲丁巳", "ts": "占房床外东南" }, "d0418": { "y": "开市.交易.立券.挂匾.祭祀.开光.祈福.求嗣.安床.解除.修造.安葬.", "j": "纳采.问名.订盟.嫁娶.入宅.开仓.出火.动土.破土.纳畜.伐木.", "c": "生肖冲马", "s": "煞南", "ch": "成", "zc": "正冲正冲戊午", "ts": "占门碓外东南" }, "d0419": { "y": "祭祀.修门.取渔.纳财.纳畜.余事勿取.", "j": "嫁娶.入宅.", "c": "生肖冲羊", "s": "煞東", "ch": "收", "zc": "正冲正冲己未", "ts": "碓磨厕外东南" }, "d0420": { "y": "安香.出火.纳采.订盟.嫁娶.开市.立券.交易.挂匾.开光.出行.解除.安床.栽种.置产.拆卸.修造.动土.", "j": "作灶.安葬.祭祀.入殓.", "c": "生肖冲猴", "s": "煞北", "ch": "开", "zc": "正冲正冲庚申", "ts": "厨灶炉外正南" }, "d0423": { "y": "嫁娶.祭祀.祈福.求嗣.斋醮.开光.出火.移徙.入宅.竖柱.上梁.会亲友.造屋.起基.治病.治病.安门.造车器.掘井.开池.", "j": "纳采.出行.修坟.安葬.开市.立券.作灶.", "c": "生肖冲猪", "s": "煞東", "ch": "除", "zc": "正冲正冲癸亥", "ts": "占门床外正南" }, "d0424": { "y": "祭祀.塑绘.开光.纳采.嫁娶.开市.出行.会亲友.安床.结网.除服.成服.启攒.安葬.移柩.", "j": "祈福.入宅.造屋.动土.破土.探病.", "c": "生肖冲鼠", "s": "煞北", "ch": "满", "zc": "正冲正冲甲子", "ts": "占碓磨外正南" }, "d0425": { "y": "祭祀.作灶.平治道涂.余事勿取.", "j": "安床.入宅.安碓硙.栽种.", "c": "生肖冲牛", "s": "煞西", "ch": "平", "zc": "正冲正冲乙丑", "ts": "厨灶厕外西南" }, "d0426": { "y": "祭祀.祈福.求嗣.斋醮.沐浴.纳畜.入殓.破土.安葬.", "j": "移徙.入宅.嫁娶.出行.安床.", "c": "生肖冲虎", "s": "煞南", "ch": "定", "zc": "正冲正冲丙寅", "ts": "仓库炉外西南" }, "d0428": { "y": "祭祀.沐浴.解除.求医.治病.破屋.坏垣.余事勿取.", "j": "祈福.斋醮.开市.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "破", "zc": "正冲正冲戊辰", "ts": "门鸡栖外西南" }, "d0429": { "y": "沐浴.捕捉.畋猎.结网.取渔.", "j": "祭祀.嫁娶.入宅.作灶.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "危", "zc": "正冲正冲己巳", "ts": "碓磨床外西南" }, "d0430": { "y": "祭祀.祈福.求嗣.斋醮.纳采.订盟.开光.竖柱.上梁.开仓.出货财.造屋.起基.定磉.安门.诸事不宜.破土.入殓.启攒.谢土.", "j": "出火.嫁娶.开市.", "c": "生肖冲马", "s": "煞南", "ch": "成", "zc": "正冲正冲庚午", "ts": "厨灶碓外西南" }, "d0526": { "y": "祭祀.结网.捕捉.余事勿取.", "j": "探病.嫁娶.开市.", "c": "生肖冲猴", "s": "煞北", "ch": "收", "zc": "正冲正冲丙申", "ts": "仓库炉房内南" }, "d0516": { "y": "嫁娶.交易.立券.作厕.补垣.塞穴.畋猎.取渔.开生坟.", "j": "安床.开渠.上梁.修造.开市.开光.入宅.移徙.安床.", "c": "生肖冲狗", "s": "煞南", "ch": "闭", "zc": "正冲正冲丙戌", "ts": "仓库栖外正北" }, "d0512": { "y": "纳采.订盟.嫁娶.造车器.祭祀.祈福.求嗣.开光.出火.拆卸.修造.动土.进人口.挂匾.入宅.移徙.安床.栽种.入殓.破土.安葬.除服.成服.", "j": "开市.立券.", "c": "生肖冲马", "s": "煞南", "ch": "危", "zc": "正冲正冲壬午", "ts": "房床碓外正北" }, "d0506": { "y": "开市.交易.立券.挂匾.开光.出行.拆卸.进人口.入宅.移柩.动土.安门.上梁.栽种.破土.修坟.安葬.", "j": "嫁娶.安床.探病.作灶.", "c": "生肖冲鼠", "s": "煞北", "ch": "除", "zc": "正冲正冲丙子", "ts": "仓库碓外西北" }, "d0523": { "y": "祭祀.沐浴.解除.破屋.坏垣.余事勿取.", "j": "开光.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "破", "zc": "正冲正冲癸巳", "ts": "占门床房内南" }, "d0513": { "y": "开市.交易.立券.祭祀.祈福.开光.动土.安床.出行.栽种.纳畜.牧养.竖柱.上梁.解除.破土.", "j": "嫁娶.掘井.入宅.移徙.安葬.", "c": "生肖冲羊", "s": "煞東", "ch": "成", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d0503": { "y": "祭祀.祈福.求嗣.斋醮.冠笄.作灶.纳财.交易.", "j": "开光.嫁娶.掘井.安葬.安门.探病.", "c": "生肖冲鸡", "s": "煞西", "ch": "闭", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d0528": { "y": "嫁娶.冠笄.祭祀.出行.移徙.入宅.作灶.造车器.补垣.塞穴.作厕.破土.启攒.除服.成服.入殓.", "j": "入宅.造屋.造桥.安门.安葬.上梁.", "c": "生肖冲狗", "s": "煞南", "ch": "闭", "zc": "正冲正冲戊戌", "ts": "门鸡栖房内东" }, "d0518": { "y": "纳采.订盟.嫁娶.祭祀.祈福.求嗣.开光.解除.出行.出火.入宅.移徙.栽种.纳畜.牧养.动土.破土.入殓.安葬.", "j": "作灶.安床.开仓.造屋.动土.安葬.", "c": "生肖冲鼠", "s": "煞北", "ch": "除", "zc": "正冲正冲戊子", "ts": "占门碓房内北" }, "d0530": { "y": "嫁娶.纳采.订盟.祭祀.祈福.治病.造车器.修造.动土.移徙.入宅.", "j": "开市.出行.安床.作灶.安葬.", "c": "生肖冲鼠", "s": "煞北", "ch": "除", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d0626": { "y": "祭祀.沐浴.理发.整手足甲.修饰垣墙.平治道涂.余事勿取.", "j": "开市.入宅.出行.修造.词讼.", "c": "生肖冲兔", "s": "煞東", "ch": "平", "zc": "正冲正冲丁卯", "ts": "房床门外西南" }, "d0501": { "y": "祭祀.捕捉.解除.余事勿取.", "j": "嫁娶.安葬.", "c": "生肖冲羊", "s": "煞東", "ch": "收", "zc": "正冲正冲辛未", "ts": "仓库厕外西南" }, "d0502": { "y": "纳采.嫁娶.出行.开市.立券.纳畜.牧养.出火.移徙.入宅.", "j": "祈福.动土.破土.安葬.入殓.", "c": "生肖冲猴", "s": "煞北", "ch": "开", "zc": "正冲正冲壬申", "ts": "房床厕外正南" }, "d0504": { "y": "祭祀.解除.教牛马.出行.余事勿取.", "j": "动土.破土.行丧.开光.作梁.安葬.探病.", "c": "生肖冲狗", "s": "煞南", "ch": "建", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d0505": { "y": "沐浴.斋醮.解除.求医.治病.会亲友.造畜椆栖.栽种.理发.扫舍.", "j": "开市.嫁娶.移徙.入宅.掘井.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "除", "zc": "正冲正冲乙亥", "ts": "厨灶床外正西" }, "d0507": { "y": "进人口.会亲友.", "j": "塞穴.上梁.动土.伐木.安葬.词讼.", "c": "生肖冲牛", "s": "煞西", "ch": "满", "zc": "正冲正冲丁丑", "ts": "房床厕外西北" }, "d0508": { "y": "沐浴.平治道涂.扫舍.入殓.破土.安葬.除服.成服.", "j": "嫁娶.移徙.伐木.作梁.安床.祭祀.祈福.造屋.", "c": "生肖冲虎", "s": "煞南", "ch": "平", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d0509": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出火.出行.拆卸.动土.解除.进人口.开市.交易.立券.挂匾.入宅.移徙.安床.安门.上梁.安葬.破土.谢土.", "j": "", "c": "生肖冲兔", "s": "煞東", "ch": "定", "zc": "正冲正冲己卯", "ts": "占门炉外西北" }, "d0510": { "y": "祭祀.祈福.求嗣.开光.解除.合帐.冠笄.伐木.架马.作梁.修造.进人口.嫁娶.裁衣.合帐.安床.动土.起基.上梁.竖柱.放水.会亲友.", "j": "", "c": "生肖冲龙", "s": "煞北", "ch": "执", "zc": "正冲正冲庚辰", "ts": "厨灶栖外西北" }, "d0511": { "y": "破屋.坏垣.沐浴.解除.余事勿取.", "j": "诸事不宜.", "c": "生肖冲蛇", "s": "煞西", "ch": "破", "zc": "正冲正冲辛巳", "ts": "仓库床外西北" }, "d0514": { "y": "解除.出行.纳采.冠笄.竖柱.上梁.移徙.作灶.进人口.入宅.纳畜.牧养.", "j": "祭祀.伐木.架马.安床.修造.动土.安葬.修坟.破土.", "c": "生肖冲猴", "s": "煞北", "ch": "收", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d0515": { "y": "祭祀.祈福.求嗣.开光.出行.开市.交易.立券.栽种.安床.纳畜.移徙.起基.动土.定磉.造仓.置产.破土.启攒.修坟.", "j": "入宅.移徙.修造.安门.伐木.入殓.安葬.造屋.", "c": "生肖冲鸡", "s": "煞西", "ch": "开", "zc": "正冲正冲乙酉", "ts": "厨灶门外正北" }, "d0517": { "y": "塞穴.断蚁.结网.畋猎.余事勿取.", "j": "嫁娶.安葬.入宅.出行.动土.词讼.", "c": "生肖冲猪", "s": "煞東", "ch": "建", "zc": "正冲正冲丁亥", "ts": "占房床房内北" }, "d0519": { "y": "开光.纳采.裁衣.冠笄.安床.作灶.进人口.造仓.塞穴.", "j": "嫁娶.栽种.修造.动土.出行.伐木.作梁.安葬.谢土.", "c": "生肖冲牛", "s": "煞西", "ch": "满", "zc": "正冲正冲己丑", "ts": "碓磨厕房内北" }, "d0520": { "y": "纳采.嫁娶.裁衣.理发.出行.修造.动土.进人口.开市.交易.立券.挂匾.移徙.上梁.栽种.纳畜.", "j": "伐木.安葬.安床.祭祀.祈福.", "c": "生肖冲虎", "s": "煞南", "ch": "平", "zc": "正冲正冲庚寅", "ts": "厨灶炉房内北" }, "d0521": { "y": "开市.交易.立券.挂匾.祭祀.祈福.斋醮.出行.开市.交易.立券.造屋.起基.修造.动土.定磉.安床.安机械.安葬.破土.启攒.除服.成服.立碑.", "j": "作灶.嫁娶.移徙.入宅.理发.", "c": "生肖冲兔", "s": "煞東", "ch": "定", "zc": "正冲正冲辛卯", "ts": "仓库门房内北" }, "d0524": { "y": "订盟.纳采.嫁娶.解除.祭祀.祈福.求嗣.开光.出行.解除.出火.拆卸.入宅.移徙.安床.栽种.纳畜.动土.破土.谢土.安葬.修坟.", "j": "作灶.开市.经络.", "c": "生肖冲马", "s": "煞南", "ch": "危", "zc": "正冲正冲甲午", "ts": "占碓磨房内南" }, "d0525": { "y": "祭祀.祈福.求嗣.开光.订盟.纳采.解除.动土.起基.进人口.开市.交易.立券.纳财.造仓.开池.栽种.纳畜.破土.安葬.", "j": "安床.上梁.裁衣.入宅.嫁娶.", "c": "生肖冲羊", "s": "煞東", "ch": "成", "zc": "正冲正冲乙未", "ts": "厨灶厕房内南" }, "d0527": { "y": "祭祀.祈福.求嗣.开光.纳采.订盟.嫁娶.出行.动土.破土.会亲友.开市.交易.立券.习艺.拆卸.起基.安碓硙.放水.开池.造仓.开渠.栽种.谢土.启攒.修坟.立碑.", "j": "入宅.安门.安葬.", "c": "生肖冲鸡", "s": "煞西", "ch": "开", "zc": "正冲正冲丁酉", "ts": "房床门房内南" }, "d0529": { "y": "祭祀.解除.断蚁.会亲友.余事勿取.", "j": "嫁娶.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "建", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d0531": { "y": "嫁娶.纳采.订盟.会亲友.安机械.结网.冠笄.祭祀.求嗣.进人口.经络.", "j": "开市.作灶.动土.行丧.安葬.", "c": "生肖冲牛", "s": "煞西", "ch": "满", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d0624": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出行.解除.出火.拆卸.修造.进人口.入宅.移徙.动土.安床.纳畜.栽种.纳财.交易.立券.挂匾.造畜椆栖.", "j": "安葬.开生坟.合寿木.行丧.", "c": "生肖冲牛", "s": "煞西", "ch": "除", "zc": "正冲正冲乙丑", "ts": "厨灶厕外西南" }, "d0614": { "y": "嫁娶.祭祀.理发.作灶.修饰垣墙.平治道涂.整手足甲.沐浴.冠笄.", "j": "破土.出行.栽种.", "c": "生肖冲兔", "s": "煞東", "ch": "平", "zc": "正冲正冲乙卯", "ts": "厨灶门外东南" }, "d0622": { "y": "嫁娶.合帐.裁衣.冠笄.伐木.上梁.出火.拆卸.移徙.修造.动土.安门.纳财.筑堤.栽种.塞穴.", "j": "安床.祈福.出行.安葬.行丧.开光.", "c": "生肖冲猪", "s": "煞東", "ch": "闭", "zc": "正冲正冲癸亥", "ts": "占门床外正南" }, "d0629": { "y": "祭祀.沐浴.破屋.坏垣.余事勿取.", "j": "入宅.嫁娶.移徙.", "c": "生肖冲马", "s": "煞南", "ch": "破", "zc": "正冲正冲庚午", "ts": "厨灶碓外西南" }, "d0604": { "y": "祭祀.沐浴.解除.破屋.坏垣.余事勿取.", "j": "行丧.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "破", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d0628": { "y": "纳采.订盟.冠笄.祭祀.祈福.斋醮.出行.修造.动土.移徙.入宅.安香.出火.拆卸.造屋.起基.竖柱.上梁.定磉.安门.开池.", "j": "嫁娶.开市.合寿木.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "执", "zc": "正冲正冲己巳", "ts": "碓磨床外西南" }, "d0618": { "y": "祭祀.斋醮.塑绘.开光.出行.修造.动土.造畜椆栖.安床.放水.掘井.开池.作厕.结网.破土.", "j": "出火.入宅.", "c": "生肖冲羊", "s": "煞東", "ch": "危", "zc": "正冲正冲己未", "ts": "碓磨厕外东南" }, "d0608": { "y": "祭祀.作灶.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鸡", "s": "煞西", "ch": "收", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d0625": { "y": "安机械.祭祀.祈福.求嗣.沐浴.解除.纳采.开市.修造.竖柱.上梁.开柱眼.安碓硙.归岫.补垣.塞穴.拆卸.放水.出火.扫舍.开生坟.合寿木.安葬.谢土.启攒.除服.成服.", "j": "嫁娶.安床.作灶.动土.破土.造船.", "c": "生肖冲虎", "s": "煞南", "ch": "满", "zc": "正冲正冲丙寅", "ts": "仓库炉外西南" }, "d0630": { "y": "嫁娶.安机械.交易.出行.祭祀.祈福.求嗣.斋醮.塑绘.开光.合帐.裁衣.放水.开池.掘井.", "j": "作灶.理发.造桥.行丧.安葬.", "c": "生肖冲羊", "s": "煞東", "ch": "危", "zc": "正冲正冲辛未", "ts": "仓库厕外西南" }, "d0620": { "y": "祭祀.结网.余事勿取.", "j": "入宅.出行.掘井.安葬.", "c": "生肖冲鸡", "s": "煞西", "ch": "收", "zc": "正冲正冲辛酉", "ts": "仓库门外正南" }, "d0726": { "y": "嫁娶.订盟.纳采.祭祀.祈福.斋醮.开光.会亲友.求医.治病.造屋.起基.竖柱.上梁.安门.安碓硙.筑堤.开池.破土.安葬.除服.成服.", "j": "入宅.开市.掘井.词讼.合寿木.", "c": "生肖冲鸡", "s": "煞西", "ch": "成", "zc": "正冲正冲丁酉", "ts": "房床门房内南" }, "d0601": { "y": "祭祀.沐浴.移徙.破土.安葬.扫舍.平治道涂.", "j": "祈福.嫁娶.入宅.安床.作灶.", "c": "生肖冲虎", "s": "煞南", "ch": "平", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" }, "d0602": { "y": "祭祀.祈福.斋醮.求嗣.安机械.纳畜.移徙.入宅.安机械.塑绘.开光.起基.竖柱.上梁.作灶.安门.安香.出火.造屋.启攒.安葬.", "j": "动土.破土.嫁娶.嫁娶.", "c": "生肖冲兔", "s": "煞東", "ch": "定", "zc": "正冲正冲癸卯", "ts": "占大门外东北" }, "d0603": { "y": "嫁娶.纳采.订盟.斋醮.开光.祭祀.祈福.求医.治病.会亲友.动土.解除.捕捉.纳畜.牧养.入殓.破土.安葬.", "j": "移徙.入宅.造屋.架马.", "c": "生肖冲龙", "s": "煞北", "ch": "执", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d0605": { "y": "沐浴.扫舍.余事勿取.", "j": "斋醮.开市.嫁娶.作灶.", "c": "生肖冲马", "s": "煞南", "ch": "危", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d0606": { "y": "开市.交易.立券.纳财.开池.作厕.结网.祭祀.修造.动土.安床.放水.经络.破土.", "j": "嫁娶.造桥.词讼.移徙.安门.作灶.栽种.", "c": "生肖冲羊", "s": "煞東", "ch": "危", "zc": "正冲正冲丁未", "ts": "房床厕外东北" }, "d0607": { "y": "开市.交易.立券.纳财.栽种.安床.拆卸.修造.动土.上梁.入殓.安葬.破土.除服.成服.", "j": "嫁娶.出火.伐木.祭祀.入宅.移徙.纳畜.探病.", "c": "生肖冲猴", "s": "煞北", "ch": "成", "zc": "正冲正冲戊申", "ts": "占门炉外东北" }, "d0609": { "y": "解除.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲狗", "s": "煞南", "ch": "开", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d0610": { "y": "修造.动土.起基.安门.安床.栽种.筑堤.补垣.造畜椆栖.", "j": "嫁娶.掘井.入宅.移徙.出火.出行.行丧.安葬.开光.理发.进人口.", "c": "生肖冲猪", "s": "煞東", "ch": "闭", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d0611": { "y": "祭祀.教牛马.断蚁.余事勿取.", "j": "斋醮.移徙.入宅.动土.", "c": "生肖冲鼠", "s": "煞北", "ch": "建", "zc": "正冲正冲壬子", "ts": "房床碓外正东" }, "d0612": { "y": "纳采.订盟.嫁娶.祭祀.祈福.开市.纳财.立券.移徙.出行.修造.动土.起基.定磉.竖柱.拆卸.扫舍.放水.安香.安床.造船.开池.掘井.造畜椆栖.栽种.", "j": "行丧.安葬.破土.作灶.伐木.斋醮.", "c": "生肖冲牛", "s": "煞西", "ch": "除", "zc": "正冲正冲癸丑", "ts": "占门厕外正东" }, "d0613": { "y": "嫁娶.开光.祭祀.祈福.出行.解除.移徙.入宅.开市.纳财.起基.修造.竖柱.上梁.造屋.作灶.出火.安香.补垣.塞穴.拆卸.放水.扫舍.造仓.造船.栽种.安葬.", "j": "纳采.订盟.安床.谢土.破土.动土.", "c": "生肖冲虎", "s": "煞南", "ch": "满", "zc": "正冲正冲甲寅", "ts": "碓磨炉外东南" }, "d0615": { "y": "嫁娶.纳采.订盟.祭祀.祈福.求嗣.开光.出火.出行.拆卸.修造.动土.进人口.入宅.移徙.安床.交易.立券.挂匾.纳财.入殓.安葬.启攒.除服.成服.", "j": "动土.掘井.破土.", "c": "生肖冲龙", "s": "煞北", "ch": "定", "zc": "正冲正冲丙辰", "ts": "仓库栖外东南" }, "d0616": { "y": "畋猎.捕捉.结网.取渔.祭祀.沐浴.余事勿取.", "j": "嫁娶.开市.安葬.启攒.行丧.", "c": "生肖冲蛇", "s": "煞西", "ch": "执", "zc": "正冲正冲丁巳", "ts": "占房床外东南" }, "d0617": { "y": "祭祀.破屋.坏垣.余事勿取.", "j": "移徙.入宅.开仓.出货财.", "c": "生肖冲马", "s": "煞南", "ch": "破", "zc": "正冲正冲戊午", "ts": "占门碓外东南" }, "d0619": { "y": "开市.交易.立券.挂匾.开光.解除.拆卸.动土.安床.修造.上梁.置产.栽种.破土.安葬.", "j": "作灶.出火.祭祀.嫁娶.入宅.", "c": "生肖冲猴", "s": "煞北", "ch": "成", "zc": "正冲正冲庚申", "ts": "厨灶炉外正南" }, "d0621": { "y": "嫁娶.纳采.订盟.冠笄.造车器.祭祀.开光.祈福.求嗣.出行.解除.伐木.出火.入宅.拆卸.修造.动土.上梁.安床.栽种.破土.", "j": "行丧.置产.入宅.安葬.", "c": "生肖冲狗", "s": "煞南", "ch": "开", "zc": "正冲正冲壬戌", "ts": "房床栖外正南" }, "d0623": { "y": "出行.教牛马.割蜜.余事勿取.", "j": "斋醮.造屋.动土.破土.", "c": "生肖冲鼠", "s": "煞北", "ch": "建", "zc": "正冲正冲甲子", "ts": "占碓磨外正南" }, "d0627": { "y": "嫁娶.纳采.祭祀.祈福.出行.立券.移徙.入宅.动土.破土.安葬.", "j": "开光.作灶.造屋.架马.开仓.", "c": "生肖冲龙", "s": "煞北", "ch": "定", "zc": "正冲正冲戊辰", "ts": "门鸡栖外西南" }, "d0728": { "y": "纳采.订盟.嫁娶.祭祀.沐浴.塑绘.开光.出火.治病.习艺.伐木.造屋.竖柱.上梁.安床.作灶.安碓硙.挂匾.掘井.纳畜.", "j": "出行.安葬.造桥.", "c": "生肖冲猪", "s": "煞東", "ch": "开", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d0730": { "y": "祭祀.修造.出行.造屋.竖柱.造车器.教牛马.造畜椆栖.割蜜.", "j": "动土.破土.掘井.安葬.", "c": "生肖冲牛", "s": "煞西", "ch": "建", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d0727": { "y": "纳采.订盟.嫁娶.移徙.入宅.出行.祭祀.祈福.斋醮.塑绘.开光.安香.出火.会亲友.解除.入学.竖柱.上梁.拆卸.造屋.起基.栽种.牧养.纳畜.", "j": "安葬.破土.开市.开仓.出货财.启攒.", "c": "生肖冲狗", "s": "煞南", "ch": "收", "zc": "正冲正冲戊戌", "ts": "门鸡栖房内东" }, "d0720": { "y": "嫁娶.纳采.订盟.造车器.开光.出行.拆卸.起基.安床.除服.成服.开市.交易.立券.栽种.牧养.入殓.移柩.启攒.", "j": "上梁.入宅.修造.动土.破土.祭祀.祈福.斋醮.", "c": "生肖冲兔", "s": "煞東", "ch": "满", "zc": "正冲正冲辛卯", "ts": "仓库门房内北" }, "d0717": { "y": "经络.祭祀.沐浴.补垣.塞穴.除服.成服.移柩.入殓.启攒.立碑.", "j": "开光.治病.嫁娶.掘井.破土.安葬.", "c": "生肖冲鼠", "s": "煞北", "ch": "闭", "zc": "正冲正冲戊子", "ts": "占门碓房内北" }, "d0707": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出火.拆卸.修造.动土.进人口.开市.交易.立券.挂匾.入宅.移徙.栽种.纳畜.入殓.启攒.除服.成服.", "j": "", "c": "生肖冲虎", "s": "煞南", "ch": "除", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d0718": { "y": "嫁娶.祭祀.出行.裁衣.冠笄.交易.雕刻.纳财.造畜椆栖.造车器.雕刻.教牛马.", "j": "移徙.入宅.栽种.动土.破土.作灶.安葬.行丧.伐木.上梁.", "c": "生肖冲牛", "s": "煞西", "ch": "建", "zc": "正冲正冲己丑", "ts": "碓磨厕房内北" }, "d0708": { "y": "嫁娶.开光.解除.安床.牧养.理发.开市.入殓.启攒.移柩.安葬.扫舍.", "j": "作灶.动土.上梁.栽种.入宅.移徙.修造.祈福.", "c": "生肖冲兔", "s": "煞東", "ch": "满", "zc": "正冲正冲己卯", "ts": "占门炉外西北" }, "d0828": { "y": "嫁娶.纳采.订盟.祭祀.祈福.斋醮.普渡.移徙.入宅.出行.安机械.开光.修造.动土.竖柱.上梁.造屋.起基.定磉.安门.安葬.破土.", "j": "开市.立券.置产.作灶.造桥.", "c": "生肖冲马", "s": "煞南", "ch": "定", "zc": "正冲正冲庚午", "ts": "厨灶碓外西南" }, "d0701": { "y": "纳采.冠笄.求医.治病.开市.立券.修造.动土.安机械.破土.安葬.", "j": "斋醮.祭祀.移徙.入宅.上梁.嫁娶.", "c": "生肖冲猴", "s": "煞北", "ch": "成", "zc": "正冲正冲壬申", "ts": "房床厕外正南" }, "d0702": { "y": "祭祀.作灶.余事勿取.", "j": "开市.安葬.破土.修坟.掘井.", "c": "生肖冲鸡", "s": "煞西", "ch": "收", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d0703": { "y": "祭祀.祈福.求嗣.斋醮.安香.解除.移徙.入宅.会亲友.求医.治病.动土.破土.开生坟.合寿木.", "j": "合帐.上梁.经络.安葬.入殓.", "c": "生肖冲狗", "s": "煞南", "ch": "开", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d0704": { "y": "嫁娶.冠笄.修造.动土.作灶.移徙.入宅.补垣.塞穴.纳畜.牧养.架马.修造.动土.起基.定磉.开池.造船.", "j": "祈福.开光.掘井.开市.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "闭", "zc": "正冲正冲乙亥", "ts": "厨灶床外正西" }, "d0705": { "y": "祭祀.交易.纳财.", "j": "斋醮.开渠.上梁.动土.破土.", "c": "生肖冲鼠", "s": "煞北", "ch": "建", "zc": "正冲正冲丙子", "ts": "仓库碓外西北" }, "d0706": { "y": "嫁娶.订盟.纳采.冠笄.会亲友.安机械.造车器.祭祀.出行.纳财.入宅.安香.出火.入学.塑绘.开光.拆卸.起基.修造.动土.牧养.栽种.安门.作厕.", "j": "行丧.伐木.作梁.作灶.", "c": "生肖冲牛", "s": "煞西", "ch": "除", "zc": "正冲正冲丁丑", "ts": "房床厕外西北" }, "d0709": { "y": "祭祀.解除.余事勿取.", "j": "诸事不宜.", "c": "生肖冲龙", "s": "煞北", "ch": "平", "zc": "正冲正冲庚辰", "ts": "厨灶栖外西北" }, "d0710": { "y": "祭祀.祈福.求嗣.开光.伐木.出火.拆卸.入宅.安床.修造.动土.上梁.挂匾.纳畜.", "j": "嫁娶.栽种.行丧.理发.修坟.行丧.作灶.", "c": "生肖冲蛇", "s": "煞西", "ch": "定", "zc": "正冲正冲辛巳", "ts": "仓库床外西北" }, "d0711": { "y": "解除.祭祀.理发.入殓.安葬.破土.", "j": "嫁娶.开市.出火.作灶.置产.斋醮.入宅.移徙.安门.", "c": "生肖冲马", "s": "煞南", "ch": "执", "zc": "正冲正冲壬午", "ts": "房床碓外正北" }, "d0712": { "y": "破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲羊", "s": "煞東", "ch": "破", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d0713": { "y": "开市.交易.立券.纳财.动土.开光.出行.嫁娶.纳采.订盟.出行.纳财.入学.开仓.出货财.纳畜.牧养.栽种.破土.启攒.安葬.立碑.", "j": "入宅.移徙.作灶.祭祀.谢土.", "c": "生肖冲猴", "s": "煞北", "ch": "危", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d0714": { "y": "嫁娶.纳采.订盟.祭祀.祈福.求嗣.开光.出火.出行.拆卸.修造.动土.进人口.开市.交易.立券.挂匾.入宅.移徙.安床.栽种.入殓.破土.谢土.安葬.", "j": "掘井.伐木.纳畜.合寿木.", "c": "生肖冲鸡", "s": "煞西", "ch": "成", "zc": "正冲正冲乙酉", "ts": "厨灶门外正北" }, "d0715": { "y": "祭祀.冠笄.作灶.交易.纳财.栽种.结网.纳畜.牧养.进人口.", "j": "开渠.造船.安床.安葬.破土.出行.修坟.掘井.开市.开生坟.", "c": "生肖冲狗", "s": "煞南", "ch": "收", "zc": "正冲正冲丙戌", "ts": "仓库栖外正北" }, "d0716": { "y": "嫁娶.纳采.订盟.祭祀.祈福.求嗣.纳采.裁衣.冠笄.开光.安床.作梁.修造.动土.作灶.起基.上梁.造屋.纳畜.牧养.", "j": "移徙.栽种.出行.行丧.破土.安葬.词讼.", "c": "生肖冲猪", "s": "煞東", "ch": "开", "zc": "正冲正冲丁亥", "ts": "占房床房内北" }, "d0719": { "y": "修造.动土.安机械.祭祀.沐浴.解除.拆卸.治病.作灶.造屋.起基.开池.扫舍.造畜椆栖.开生坟.合寿木.安葬.破土.启攒.移柩.入殓.立碑.", "j": "开市.入宅.出行.安床.作灶.", "c": "生肖冲虎", "s": "煞南", "ch": "除", "zc": "正冲正冲庚寅", "ts": "厨灶炉房内北" }, "d0721": { "y": "祭祀.嫁娶.畋猎.结网.", "j": "动土.破土.治病.开渠.", "c": "生肖冲龙", "s": "煞北", "ch": "平", "zc": "正冲正冲壬辰", "ts": "房床栖房内南" }, "d0722": { "y": "纳采.订盟.会亲友.入学.祭祀.祈福.求嗣.开光.出行.解除.理发.动土.起基.开市.交易.立券.纳财.造仓.栽种.纳畜.牧养.", "j": "嫁娶.作灶.出火.置产.嫁娶.入宅.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "定", "zc": "正冲正冲癸巳", "ts": "占门床房内南" }, "d0723": { "y": "祭祀.祈福.解除.整手足甲.安床.沐浴.入殓.移柩.破土.启攒.安葬.谢土.", "j": "嫁娶.斋醮.开市.出火.入宅.移徙.出行.作灶.安门.伐木.", "c": "生肖冲马", "s": "煞南", "ch": "执", "zc": "正冲正冲甲午", "ts": "占碓磨房内南" }, "d0724": { "y": "破屋.坏垣.解除.余事勿取.", "j": "嫁娶.安葬.", "c": "生肖冲羊", "s": "煞東", "ch": "破", "zc": "正冲正冲乙未", "ts": "厨灶厕房内南" }, "d0725": { "y": "嫁娶.开市.立券.移徙.入宅.安机械.会亲友.经络.安门.安床.挂匾.拆卸.开仓.出货财.开池.栽种.纳畜.牧养.破土.安葬.启攒.移柩.入殓.立碑.", "j": "祭祀.祈福.探病.谢土.造桥.", "c": "生肖冲猴", "s": "煞北", "ch": "危", "zc": "正冲正冲丙申", "ts": "仓库炉房内南" }, "d0729": { "y": "祭祀.入殓.除服.成服.移柩.破土.启攒.安葬.塞穴.断蚁.结网.", "j": "开市.入宅.嫁娶.开光.造屋.", "c": "生肖冲鼠", "s": "煞北", "ch": "闭", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d0731": { "y": "祭祀.沐浴.塑绘.开光.入学.解除.扫舍.治病.开池.牧养.", "j": "嫁娶.出行.纳采.入宅.作灶.", "c": "生肖冲虎", "s": "煞南", "ch": "除", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" }, "d0827": { "y": "祭祀.理发.作灶.沐浴.修饰垣墙.平治道涂.", "j": "嫁娶.栽种.祈福.造桥.安葬.安门.伐木.作梁.", "c": "生肖冲蛇", "s": "煞西", "ch": "平", "zc": "正冲正冲己巳", "ts": "碓磨床外西南" }, "d0825": { "y": "解除.祭祀.祈福.求嗣.修造.动土.竖柱.上梁.安床.纳畜.造屋.合脊.起基.入殓.破土.安葬.", "j": "出火.嫁娶.开光.进人口.出行.词讼.开市.入宅.移徙.赴任.", "c": "生肖冲兔", "s": "煞東", "ch": "除", "zc": "正冲正冲丁卯", "ts": "房床门外西南" }, "d0817": { "y": "破土.安葬.移柩.入殓.祭祀.捕捉.除服.成服.余事勿取.", "j": "嫁娶.入宅.开市.交易.", "c": "生肖冲羊", "s": "煞東", "ch": "执", "zc": "正冲正冲己未", "ts": "碓磨厕外东南" }, "d0815": { "y": "修饰垣墙.平治道涂.祭祀.沐浴.作灶.", "j": "嫁娶.词讼.治病.置产.作梁.祈福.安葬.栽种.伐木.安门.", "c": "生肖冲蛇", "s": "煞西", "ch": "平", "zc": "正冲正冲丁巳", "ts": "占房床外东南" }, "d0830": { "y": "沐浴.破屋.坏垣.余事勿取.", "j": "斋醮.开市.", "c": "生肖冲猴", "s": "煞北", "ch": "破", "zc": "正冲正冲壬申", "ts": "房床厕外正南" }, "d0824": { "y": "嫁娶.纳采.订盟.祭祀.祈福.求嗣.出行.解除.竖柱.入宅.移徙.纳财.上梁.纳畜.入殓.安葬.启攒.", "j": "栽种.掘井.动土.安床.破土.置产.", "c": "生肖冲虎", "s": "煞南", "ch": "建", "zc": "正冲正冲丙寅", "ts": "仓库炉外西南" }, "d0814": { "y": "纳采.订盟.开光.出行.解除.安香.出火.拆卸.入宅.移徙.修造.上梁.安床.栽种.纳畜.会亲友.安机械.经络.", "j": "伐木.谢土.行丧.祭祀.作灶.动土.破土.安葬.祈福.", "c": "生肖冲龙", "s": "煞北", "ch": "满", "zc": "正冲正冲丙辰", "ts": "仓库栖外东南" }, "d0823": { "y": "祭祀.出行.作梁.出火.拆卸.修造.动土.起基.安床.补垣.塞穴.入殓.破土.安葬.移柩.造畜椆栖.", "j": "嫁娶.入宅.斋醮.开光.针灸.掘井.", "c": "生肖冲牛", "s": "煞西", "ch": "闭", "zc": "正冲正冲乙丑", "ts": "厨灶厕外西南" }, "d0831": { "y": "订盟.纳采.祭祀.祈福.安香.出火.开市.立券.入宅.挂匾.造桥.启攒.安葬.", "j": "动土.破土.嫁娶.掘井.安床.", "c": "生肖冲鸡", "s": "煞西", "ch": "危", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d0818": { "y": "破屋.坏垣.治病.余事勿取.", "j": "祈福.纳采.订盟.嫁娶.入宅.安葬.", "c": "生肖冲猴", "s": "煞北", "ch": "破", "zc": "正冲正冲庚申", "ts": "厨灶炉外正南" }, "d0805": { "y": "求医.治病.破屋.坏垣.余事勿取.", "j": "嫁娶.出行.", "c": "生肖冲羊", "s": "煞東", "ch": "破", "zc": "正冲正冲丁未", "ts": "房床厕外东北" }, "d0930": { "y": "祭祀.出行.", "j": "嫁娶.入宅.修造.动土.会亲友.破土.", "c": "生肖冲兔", "s": "煞東", "ch": "建", "zc": "正冲正冲癸卯", "ts": "占大门外东北" }, "d0801": { "y": "纳财.开市.交易.立券.出行.祭祀.祈福.求嗣.开光.解除.扫舍.起基.竖柱.安床.移徙.开仓.出货财.补垣.塞穴.栽种.纳畜.牧养.", "j": "斋醮.入宅.安门.安葬.破土.行丧.", "c": "生肖冲兔", "s": "煞東", "ch": "满", "zc": "正冲正冲癸卯", "ts": "占大门外东北" }, "d0802": { "y": "祭祀.修饰垣墙.平治道涂.", "j": "开市.动土.破土.嫁娶.修造.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "平", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d0803": { "y": "订盟.纳采.祭祀.祈福.开光.安香.出火.立券.安机械.移徙.入宅.竖柱.上梁.会亲友.安床.拆卸.挂匾.牧养.教牛马.", "j": "嫁娶.安葬.行丧.破土.修坟.", "c": "生肖冲蛇", "s": "煞西", "ch": "定", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d0804": { "y": "沐浴.理发.捕捉.入殓.移柩.破土.启攒.安葬.", "j": "出火.嫁娶.入宅.作灶.破土.上梁.动土.", "c": "生肖冲马", "s": "煞南", "ch": "执", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d0806": { "y": "纳采.订盟.嫁娶.移徙.入宅.出行.开市.交易.立券.纳财.会亲友.安香.出火.拆卸.造屋.起基.安床.作灶.挂匾.安葬.破土.启攒.立碑.入殓.移柩.", "j": "祈福.上梁.开仓.掘井.牧养.", "c": "生肖冲猴", "s": "煞北", "ch": "危", "zc": "正冲正冲戊申", "ts": "占门炉外东北" }, "d0807": { "y": "祭祀.祈福.斋醮.出行.纳采.订盟.安机械.出火.拆卸.修造.动土.起基.移徙.入宅.造庙.入殓.除服.成服.移柩.破土.安葬.谢土.", "j": "嫁娶.开市.栽种.合寿木.", "c": "生肖冲鸡", "s": "煞西", "ch": "成", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d0808": { "y": "嫁娶.出火.拆卸.祭祀.祈福.开光.伐木.动土.开市.交易.立券.入宅.移徙.安床.纳畜.入殓.安葬.", "j": "栽种.作灶.针灸.出行.", "c": "生肖冲狗", "s": "煞南", "ch": "成", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d0809": { "y": "祭祀.开光.解除.移徙.裁衣.开市.立券.祈福.求嗣.进人口.交易.纳财.纳畜.", "j": "动土.破土.理发.出行.入宅.分居.安香.出火.", "c": "生肖冲猪", "s": "煞東", "ch": "收", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d0810": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出行.解除.安床.栽种.移柩.进人口.会亲友.除服.成服.", "j": "造屋.入殓.安葬.伐木.入宅.移徙.置产.纳畜.", "c": "生肖冲鼠", "s": "煞北", "ch": "开", "zc": "正冲正冲壬子", "ts": "房床碓外正东" }, "d0811": { "y": "祭祀.动土.筑堤.开池.会亲友.塞穴.入殓.移柩.破土.安葬.", "j": "开光.出行.修造.上梁.入宅.安门.作灶.裁衣.", "c": "生肖冲牛", "s": "煞西", "ch": "闭", "zc": "正冲正冲癸丑", "ts": "占门厕外正东" }, "d0812": { "y": "祭祀.裁衣.安门.纳财.扫舍.出行.进人口.作灶.纳畜.造畜椆栖.", "j": "安床.动土.安葬.开生坟.合寿木.", "c": "生肖冲虎", "s": "煞南", "ch": "建", "zc": "正冲正冲甲寅", "ts": "碓磨炉外东南" }, "d0813": { "y": "祭祀.解除.拆卸.修造.动土.起基.上梁.安床.安门.开渠.开池.入殓.破土.启攒.", "j": "嫁娶.出行.进人口.作灶.入宅.移徙.栽种.赴任.", "c": "生肖冲兔", "s": "煞東", "ch": "除", "zc": "正冲正冲乙卯", "ts": "厨灶门外东南" }, "d0816": { "y": "嫁娶.祭祀.祈福.求嗣.出火.出行.开光.解除.拆卸.修造.进人口.安香.交易.立券.入宅.移徙.安床.动土.破土.谢土.安葬.入殓.除服.成服.", "j": "斋醮.开市.开仓.作灶.造船.", "c": "生肖冲马", "s": "煞南", "ch": "定", "zc": "正冲正冲戊午", "ts": "占门碓外东南" }, "d0819": { "y": "嫁娶.开光.祭祀.祈福.求嗣.安香.出火.解除.伐木.入宅.移徙.安床.开市.交易.立券.栽种.出火.出行.安葬.", "j": "掘井.理发.作灶.动土.破土.开池.", "c": "生肖冲鸡", "s": "煞西", "ch": "危", "zc": "正冲正冲辛酉", "ts": "仓库门外正南" }, "d0820": { "y": "安机械.纳采.订盟.祭祀.祈福.求嗣.开光.普渡.出行.出火.拆卸.修造.动土.进人口.开市.交易.立券.移徙.安床.栽种.上梁.纳畜.破土.移柩.安葬.", "j": "入宅.嫁娶.掘井.牧养.", "c": "生肖冲狗", "s": "煞南", "ch": "成", "zc": "正冲正冲壬戌", "ts": "房床栖外正南" }, "d0821": { "y": "嫁娶.祭祀.祈福.求嗣.裁衣.冠笄.经络.修造.进人口.安床.动土.竖柱.上梁.移徙.交易.立券.栽种.会亲友.", "j": "行丧.安葬.出行.作梁.纳畜.伐木.造桥.", "c": "生肖冲猪", "s": "煞東", "ch": "收", "zc": "正冲正冲癸亥", "ts": "占门床外正南" }, "d0822": { "y": "嫁娶.纳采.订盟.开光.祭祀.出行.理发.动土.安床.放水.开渠.栽种.进人口.", "j": "入宅.上梁.入殓.造屋.探病.作灶.安门.安葬.纳畜.伐木.", "c": "生肖冲鼠", "s": "煞北", "ch": "开", "zc": "正冲正冲甲子", "ts": "占碓磨外正南" }, "d0826": { "y": "沐浴.理发.会亲友.塑绘.开光.栽种.牧养.嫁娶.经络.补垣.塞穴.", "j": "开市.入宅.动土.破土.安葬.作灶.上梁.安床.开仓.祈福.", "c": "生肖冲龙", "s": "煞北", "ch": "满", "zc": "正冲正冲戊辰", "ts": "门鸡栖外西南" }, "d0829": { "y": "祭祀.普渡.捕捉.解除.结网.畋猎.入殓.破土.安葬.", "j": "开市.交易.入宅.嫁娶.", "c": "生肖冲羊", "s": "煞東", "ch": "执", "zc": "正冲正冲辛未", "ts": "仓库厕外西南" }, "d0920": { "y": "纳采.订盟.开市.交易.立券.挂匾.纳财.栽种.进人口.入宅.移徙.安床.开光.出火.拆卸.安门.修造.", "j": "斋醮.嫁娶.行丧.动土.作灶.安葬.破土.", "c": "生肖冲蛇", "s": "煞西", "ch": "满", "zc": "正冲正冲癸巳", "ts": "占门床房内南" }, "d1030": { "y": "嫁娶.纳采.订盟.祭祀.祈福.求嗣.斋醮.开光.安香.出火.造庙.移徙.出行.入宅.造庙.起基.竖柱.上梁.安床.纳畜.捕捉.纳婿.安葬.", "j": "开市.破土.掘井.合寿木.", "c": "生肖冲鸡", "s": "煞西", "ch": "执", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d0901": { "y": "嫁娶.祭祀.祈福.斋醮.普渡.移徙.入宅.动土.治病.开市.交易.立券.开光.修造.造车器.安香.安床.捕捉.畋猎.结网.", "j": "纳采.订盟.经络.行丧.安葬.探病.", "c": "生肖冲狗", "s": "煞南", "ch": "成", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d0902": { "y": "嫁娶.订盟.纳采.作灶.冠笄.裁衣.会亲友.纳畜.牧养.安机械.开市.立券.纳财.安床.", "j": "掘井.出行.破土.行丧.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "收", "zc": "正冲正冲乙亥", "ts": "厨灶床外正西" }, "d0903": { "y": "嫁娶.订盟.纳采.祭祀.斋醮.普渡.解除.出行.会亲友.开市.纳财.修造.动土.竖柱.上梁.开光.开仓.出货财.纳畜.牧养.开池.破土.启攒.", "j": "出火.入宅.造屋.安门.安葬.", "c": "生肖冲鼠", "s": "煞北", "ch": "开", "zc": "正冲正冲丙子", "ts": "仓库碓外西北" }, "d0904": { "y": "嫁娶.普渡.祭祀.祈福.补垣.塞穴.断蚁.筑堤.入殓.除服.成服.安葬.", "j": "动土.破土.掘井.开光.上梁.词讼.", "c": "生肖冲牛", "s": "煞西", "ch": "闭", "zc": "正冲正冲丁丑", "ts": "房床厕外西北" }, "d0905": { "y": "嫁娶.冠笄.祭祀.沐浴.普渡.出行.纳财.扫舍.纳畜.赴任.", "j": "开市.动土.破土.安床.开仓.上梁.", "c": "生肖冲虎", "s": "煞南", "ch": "建", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d0906": { "y": "祭祀.沐浴.理发.整手足甲.冠笄.解除.入殓.移柩.破土.启攒.安葬.", "j": "嫁娶.出行.入宅.开市.安门.", "c": "生肖冲兔", "s": "煞東", "ch": "除", "zc": "正冲正冲己卯", "ts": "占门炉外西北" }, "d0907": { "y": "塑绘.冠笄.嫁娶.会亲友.进人口.经络.裁衣.栽种.纳畜.牧养.补垣.塞穴.捕捉.", "j": "祈福.开市.动土.行丧.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "满", "zc": "正冲正冲庚辰", "ts": "厨灶栖外西北" }, "d0908": { "y": "开市.交易.立券.挂匾.开光.出行.入宅.移徙.安床.出火.上梁.", "j": "作灶.行丧.理发.乘船.嫁娶.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "满", "zc": "正冲正冲辛巳", "ts": "仓库床外西北" }, "d0909": { "y": "祭祀.沐浴.修饰垣墙.平治道涂.余事勿取.", "j": "诸事不宜.", "c": "生肖冲马", "s": "煞南", "ch": "平", "zc": "正冲正冲壬午", "ts": "房床碓外正北" }, "d0910": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出行.出火.拆卸.修造.动土.进人口.入宅.移徙.安床.开市.交易.立券.挂匾.栽种.纳畜.入殓.安葬.除服.成服.", "j": "", "c": "生肖冲羊", "s": "煞東", "ch": "定", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d0911": { "y": "解除.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲猴", "s": "煞北", "ch": "执", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d0912": { "y": "祭祀.治病.破屋.坏垣.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鸡", "s": "煞西", "ch": "破", "zc": "正冲正冲乙酉", "ts": "厨灶门外正北" }, "d0913": { "y": "嫁娶.纳采.订盟.祭祀.开光.出行.理发.作梁.出火.拆卸.修造.动土.进人口.入宅.移徙.安床.移徙.拆卸.挂匾.栽种.纳畜.破土.安葬.入殓.除服.成服.", "j": "开市.掘井.开渠.造桥.造船.", "c": "生肖冲狗", "s": "煞南", "ch": "危", "zc": "正冲正冲丙戌", "ts": "仓库栖外正北" }, "d0914": { "y": "开市.交易.立券.纳财.挂匾.栽种.祭祀.祈福.开光.拆卸.动土.安床.", "j": "嫁娶.破土.进人口.出行.入宅.移徙.出火.纳畜.词讼.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "成", "zc": "正冲正冲丁亥", "ts": "占房床房内北" }, "d0915": { "y": "嫁娶.祭祀.理发.进人口.作灶.移柩.冠笄.会亲友.", "j": "开仓.出货财.伐木.纳畜.开市.上梁.造屋.破土.启攒.栽种.", "c": "生肖冲鼠", "s": "煞北", "ch": "收", "zc": "正冲正冲戊子", "ts": "占门碓房内北" }, "d0916": { "y": "祭祀.修坟.除服.成服.启攒.移柩.余事勿取.", "j": "开市.入宅.嫁娶.动土.破土.安葬.", "c": "生肖冲牛", "s": "煞西", "ch": "开", "zc": "正冲正冲己丑", "ts": "碓磨厕房内北" }, "d0917": { "y": "嫁娶.冠笄.安机械.解除.纳畜.牧养.沐浴.伐木.架马.作梁.安门.扫舍.合寿木.安葬.启攒.立碑.修坟.", "j": "祈福.开光.开市.入宅.动土.", "c": "生肖冲虎", "s": "煞南", "ch": "闭", "zc": "正冲正冲庚寅", "ts": "厨灶炉房内北" }, "d0918": { "y": "祭祀.出行.沐浴.扫舍.安葬.余事勿取.", "j": "动土.破土.置产.掘井.", "c": "生肖冲兔", "s": "煞東", "ch": "建", "zc": "正冲正冲辛卯", "ts": "仓库门房内北" }, "d0919": { "y": "嫁娶.纳采.祭祀.解除.出行.修造.动土.开市.上梁.安床.整手足甲.扫舍.求医.治病.起基.定磉.造屋.合脊.", "j": "造庙.行丧.安葬.伐木.作灶.造船.", "c": "生肖冲龙", "s": "煞北", "ch": "除", "zc": "正冲正冲壬辰", "ts": "房床栖房内南" }, "d0921": { "y": "祭祀.沐浴.修饰垣墙.平治道涂.余事勿取.", "j": "嫁娶.入宅.安床.出行.", "c": "生肖冲马", "s": "煞南", "ch": "平", "zc": "正冲正冲甲午", "ts": "占碓磨房内南" }, "d0922": { "y": "开光.祈福.求嗣.斋醮.修造.动土.纳财.造仓.作厕.栽种.牧养.会亲友.", "j": "作灶.出火.进人口.开渠.入宅.移徙.祭祀.", "c": "生肖冲羊", "s": "煞東", "ch": "定", "zc": "正冲正冲乙未", "ts": "厨灶厕房内南" }, "d0923": { "y": "开光.解除.拆卸.修造.动土.竖柱.安门.牧养.安葬.修坟.破土.移柩.", "j": "出火.入宅.移徙.祈福.祭祀.安床.开市.嫁娶.探病.", "c": "生肖冲猴", "s": "煞北", "ch": "执", "zc": "正冲正冲丙申", "ts": "仓库炉房内南" }, "d0924": { "y": "破屋.坏垣.求医.治病.余事勿取.", "j": "移徙.入宅.", "c": "生肖冲鸡", "s": "煞西", "ch": "破", "zc": "正冲正冲丁酉", "ts": "房床门房内南" }, "d0925": { "y": "嫁娶.纳采.订盟.祭祀.祈福.求嗣.开光.出行.出火.拆卸.修造.动土.进人口.入宅.移徙.安床.上梁.合脊.放水.掘井.破土.移柩.谢土.除服.成服.", "j": "开市.开仓.安门.安葬.", "c": "生肖冲狗", "s": "煞南", "ch": "危", "zc": "正冲正冲戊戌", "ts": "门鸡栖房内东" }, "d0926": { "y": "嫁娶.纳采.订盟.祭祀.祈福.求嗣.开光.解除.进人口.入宅.移徙.出火.安床.开市.交易.立券.挂匾.", "j": "安葬.纳畜.出行.行丧.伐木.栽种.造庙.造桥.", "c": "生肖冲猪", "s": "煞東", "ch": "成", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d0927": { "y": "祭祀.冠笄.捕捉.余事勿取.", "j": "嫁娶.开市.造屋.作梁.合寿木.", "c": "生肖冲鼠", "s": "煞北", "ch": "收", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d0928": { "y": "祭祀.解除.结网.畋猎.取渔.会亲友.入学.移柩.启攒.除服.成服.", "j": "开市.祈福.动土.破土.入殓.安葬.造船.", "c": "生肖冲牛", "s": "煞西", "ch": "开", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d0929": { "y": "冠笄.沐浴.出行.修造.动土.移徙.入宅.破土.安葬.", "j": "嫁娶.开市.祭祀.祈福.斋醮.纳采.修坟.", "c": "生肖冲虎", "s": "煞南", "ch": "闭", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" }, "d1020": { "y": "祭祀.求嗣.冠笄.进人口.会亲友.安门.安床.经络.纳财.牧养.畋猎.放水.割蜜.", "j": "祈福.斋醮.纳采.订盟.嫁娶.入宅.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "危", "zc": "正冲正冲癸亥", "ts": "占门床外正南" }, "d1022": { "y": "祭祀.冠笄.移徙.会亲友.纳财.理发.捕捉.", "j": "嫁娶.开市.开池.作厕.破土.", "c": "生肖冲牛", "s": "煞西", "ch": "收", "zc": "正冲正冲乙丑", "ts": "厨灶厕外西南" }, "d1010": { "y": "嫁娶.祭祀.作灶.纳财.", "j": "安葬.开市.修坟.立碑.", "c": "生肖冲牛", "s": "煞西", "ch": "收", "zc": "正冲正冲癸丑", "ts": "占门厕外正东" }, "d1024": { "y": "嫁娶.裁衣.冠笄.合帐.祭祀.出行.安床.移徙.塞穴.入殓.破土.移柩.安葬.", "j": "开市.出行.栽种.置产.词讼.安门.掘井.开光.", "c": "生肖冲兔", "s": "煞東", "ch": "闭", "zc": "正冲正冲丁卯", "ts": "房床门外西南" }, "d1012": { "y": "嫁娶.祭祀.祈福.求嗣.动土.安床.扫舍.入殓.移柩.破土.启攒.安葬.作灶.整手足甲.补垣.除服.成服.", "j": "开光.栽种.", "c": "生肖冲兔", "s": "煞東", "ch": "闭", "zc": "正冲正冲乙卯", "ts": "厨灶门外东南" }, "d1002": { "y": "出行.开市.交易.立券.安机械.出火.上梁.移徙.", "j": "嫁娶.安葬.动土.造桥.", "c": "生肖冲蛇", "s": "煞西", "ch": "满", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d1027": { "y": "纳采.订盟.开市.交易.立券.会亲友.纳畜.牧养.问名.移徙.解除.作厕.入学.起基.安床.开仓.出货财.安葬.启攒.入殓.除服.成服.", "j": "入宅.上梁.斋醮.出火.谢土.", "c": "生肖冲马", "s": "煞南", "ch": "满", "zc": "正冲正冲庚午", "ts": "厨灶碓外西南" }, "d1124": { "y": "嫁娶.纳采.订盟.祭祀.开光.出行.解除.伐木.出火.入宅.移徙.拆卸.修造.栽种.安葬.入殓.", "j": "破土.动土.安门.作灶.开市.交易.", "c": "生肖冲狗", "s": "煞南", "ch": "执", "zc": "正冲正冲戊戌", "ts": "门鸡栖房内东" }, "d1001": { "y": "嫁娶.订盟.纳采.祭祀.祈福.出行.修造.动土.移徙.入宅.", "j": "针灸.伐木.作梁.造庙.行丧.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "除", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d1003": { "y": "祭祀.沐浴.修饰垣墙.平治道涂.余事勿取.", "j": "斋醮.嫁娶.移徙.出行.上梁.入宅.", "c": "生肖冲马", "s": "煞南", "ch": "平", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d1004": { "y": "嫁娶.造车器.安机械.祭祀.祈福.开光.安香.出火.出行.开市.立券.修造.动土.移徙.入宅.破土.安葬.", "j": "纳采.订盟.架马.词讼.开渠.", "c": "生肖冲羊", "s": "煞東", "ch": "定", "zc": "正冲正冲丁未", "ts": "房床厕外东北" }, "d1005": { "y": "沐浴.捕捉.入殓.除服.成服.破土.启攒.安葬.", "j": "祭祀.嫁娶.安床.开市.入宅.探病.上梁.", "c": "生肖冲猴", "s": "煞北", "ch": "执", "zc": "正冲正冲戊申", "ts": "占门炉外东北" }, "d1006": { "y": "余事勿取.", "j": "探病.余事勿取.", "c": "生肖冲鸡", "s": "煞西", "ch": "破", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d1007": { "y": "订盟.纳采.祭祀.祈福.安香.出火.修造.动土.上梁.安门.起基.竖柱.上梁.定磉.开池.移徙.入宅.立券.破土.", "j": "嫁娶.造庙.造桥.造船.作灶.安葬.", "c": "生肖冲狗", "s": "煞南", "ch": "危", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d1008": { "y": "嫁娶.求嗣.纳采.进人口.纳财.结网.纳畜.牧养.会亲友.", "j": "上梁.作灶.伐木.出行.安葬.安门.理发.", "c": "生肖冲猪", "s": "煞東", "ch": "危", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d1009": { "y": "嫁娶.祭祀.开市.开光.出行.入宅.移徙.出火.拆卸.修造.安床.", "j": "纳畜.伐木.置产.作梁.行丧.安葬.修坟.立碑.", "c": "生肖冲鼠", "s": "煞北", "ch": "成", "zc": "正冲正冲壬子", "ts": "房床碓外正东" }, "d1011": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出行.解除.出火.进人口.开市.交易.立券.挂匾.纳财.入宅.移徙.栽种.破土.谢土.", "j": "安床.安葬.", "c": "生肖冲虎", "s": "煞南", "ch": "开", "zc": "正冲正冲甲寅", "ts": "碓磨炉外东南" }, "d1013": { "y": "祭祀.祈福.求嗣.开光.出行.解除.上梁.入宅.移徙.安床.安门.纳财.纳畜.造畜椆栖.", "j": "伐木.行丧.破土.嫁娶.安葬.开渠.", "c": "生肖冲龙", "s": "煞北", "ch": "建", "zc": "正冲正冲丙辰", "ts": "仓库栖外东南" }, "d1014": { "y": "祭祀.开光.出行.解除.理发.伐木.出火.拆卸.上梁.合脊.安床.造畜椆栖.", "j": "嫁娶.安葬.行丧.词讼.造桥.作灶.破土.动土.", "c": "生肖冲蛇", "s": "煞西", "ch": "除", "zc": "正冲正冲丁巳", "ts": "占房床外东南" }, "d1015": { "y": "纳采.订盟.会亲友.沐浴.理发.裁衣.冠笄.安床.除服.成服.启攒.移柩.安葬.会亲友.开生坟.", "j": "开市.入宅.出行.嫁娶.修坟.祈福.动土.入宅.安门.谢土.上梁.", "c": "生肖冲马", "s": "煞南", "ch": "满", "zc": "正冲正冲戊午", "ts": "占门碓外东南" }, "d1016": { "y": "解除.祭祀.修饰垣墙.平治道涂.造畜椆栖.余事勿取.", "j": "嫁娶.开市.交易.入宅.入学.安葬.", "c": "生肖冲羊", "s": "煞東", "ch": "平", "zc": "正冲正冲己未", "ts": "碓磨厕外东南" }, "d1017": { "y": "入殓.破土.启攒.安葬.除服.成服.余事勿取.", "j": "开市.入宅.祭祀.置产.补垣.塞穴.", "c": "生肖冲猴", "s": "煞北", "ch": "定", "zc": "正冲正冲庚申", "ts": "厨灶炉外正南" }, "d1018": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出行.拆卸.修造.动土.上梁.安床.纳畜.入殓.破土.", "j": "入宅.移徙.掘井.理发.伐木.交易.开市.作灶.", "c": "生肖冲鸡", "s": "煞西", "ch": "执", "zc": "正冲正冲辛酉", "ts": "仓库门外正南" }, "d1019": { "y": "祭祀.沐浴.破屋.坏垣.余事勿取.", "j": "嫁娶.入宅.上梁.出行.安葬.", "c": "生肖冲狗", "s": "煞南", "ch": "破", "zc": "正冲正冲壬戌", "ts": "房床栖外正南" }, "d1021": { "y": "嫁娶.纳采.订盟.开市.交易.立券.挂匾.祭祀.祈福.开光.造车器.挂匾.出行.入宅.移徙.安床.安门.拆卸.修造.动土.栽种.安葬.破土.启攒.除服.成服.入殓.立碑.", "j": "探病.纳畜.伐木.起基.作梁.造屋.", "c": "生肖冲鼠", "s": "煞北", "ch": "成", "zc": "正冲正冲甲子", "ts": "占碓磨外正南" }, "d1023": { "y": "祭祀.祈福.求嗣.斋醮.开光.出行.嫁娶.求医.治病.动土.破土.入学.起基.扫舍.竖柱.上梁.开仓.出货财.置产.栽种.牧养.开生坟.谢土.立碑.", "j": "安门.安床.裁衣.入宅.安葬.", "c": "生肖冲虎", "s": "煞南", "ch": "开", "zc": "正冲正冲丙寅", "ts": "仓库炉外西南" }, "d1025": { "y": "祭祀.造车器.出行.修造.上梁.造屋.安门.安床.造畜椆栖.教牛马.", "j": "出货财.开仓.动土.破土.安葬.行丧.伐木.开渠.栽种.", "c": "生肖冲龙", "s": "煞北", "ch": "建", "zc": "正冲正冲戊辰", "ts": "门鸡栖外西南" }, "d1026": { "y": "祭祀.开光.出行.解除.伐木.作梁.出火.拆卸.入宅.移徙.安床.修造.造畜椆栖.扫舍.", "j": "造庙.嫁娶.掘井.栽种.造桥.作灶.动土.", "c": "生肖冲蛇", "s": "煞西", "ch": "除", "zc": "正冲正冲己巳", "ts": "碓磨床外西南" }, "d1028": { "y": "祭祀.平治道涂.余事勿取.", "j": "嫁娶.开市.", "c": "生肖冲羊", "s": "煞東", "ch": "平", "zc": "正冲正冲辛未", "ts": "仓库厕外西南" }, "d1029": { "y": "捕捉.畋猎.余事勿取.", "j": "开市.交易.祭祀.入宅.安葬.", "c": "生肖冲猴", "s": "煞北", "ch": "定", "zc": "正冲正冲壬申", "ts": "房床厕外正南" }, "d1031": { "y": "祭祀.沐浴.解除.破屋.坏垣.余事勿取.", "j": "开市.嫁娶.", "c": "生肖冲狗", "s": "煞南", "ch": "破", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d1104": { "y": "嫁娶.订盟.纳采.祭祀.祈福.出行.求医.治病.出火.移徙.入宅.", "j": "开市.开仓.出货财.安床.安门.安葬.", "c": "生肖冲虎", "s": "煞南", "ch": "开", "zc": "正冲正冲戊寅", "ts": "占门炉外西北" }, "d1121": { "y": "祭祀.塑绘.理发.会亲友.牧养.开池.造畜椆栖.畋猎.结网.", "j": "祈福.谢土.安葬.上梁.作灶.开市.嫁娶.出行.入宅.动土.", "c": "生肖冲羊", "s": "煞東", "ch": "满", "zc": "正冲正冲乙未", "ts": "厨灶厕房内南" }, "d1224": { "y": "纳采.订盟.祭祀.祈福.求嗣.塑绘.解除.拆卸.修造.动土.竖柱.上梁.安门.置产.开池.掘井.纳畜.安床.栽种.造畜椆栖.破土.移柩.立碑.", "j": "嫁娶.开市.出火.进人口.入殓.赴任.入宅.移徙.出行.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "开", "zc": "正冲正冲戊辰", "ts": "门鸡栖外西南" }, "d1101": { "y": "订盟.纳采.会亲友.交易.立券.纳财.栽种.纳畜.牧养.", "j": "嫁娶.开市.入宅.祈福.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "危", "zc": "正冲正冲乙亥", "ts": "厨灶床外正西" }, "d1102": { "y": "造车器.嫁娶.订盟.纳采.会亲友.祭祀.出行.开市.立券.移徙.入宅.破土.安葬.", "j": "上梁.开光.造屋.架马.合寿木.", "c": "生肖冲鼠", "s": "煞北", "ch": "成", "zc": "正冲正冲丙子", "ts": "仓库碓外西北" }, "d1103": { "y": "祭祀.作灶.纳财.捕捉.畋猎.余事勿取.", "j": "动土.破土.开市.安葬.", "c": "生肖冲牛", "s": "煞西", "ch": "收", "zc": "正冲正冲丁丑", "ts": "房床厕外西北" }, "d1105": { "y": "冠笄.祭祀.沐浴.作灶.理发.整手足甲.扫舍.补垣.塞穴.入殓.破土.启攒.", "j": "开光.嫁娶.会亲友.栽种.针灸.安葬.", "c": "生肖冲兔", "s": "煞東", "ch": "闭", "zc": "正冲正冲己卯", "ts": "占门炉外西北" }, "d1106": { "y": "纳采.订盟.嫁娶.祭祀.祈福.求嗣.置产.求医.治病.开市.交易.立券.会亲友.移徙.竖柱.上梁.造屋.合脊.安门.放水.捕捉.纳畜.", "j": "造庙.造船.动土.破土.安葬.", "c": "生肖冲龙", "s": "煞北", "ch": "建", "zc": "正冲正冲庚辰", "ts": "厨灶栖外西北" }, "d1107": { "y": "出行.造车器.造畜椆栖.解除.冠笄.裁衣.作梁.雕刻.会亲友.移徙.入宅.安机械.造畜椆栖.开市.扫舍.", "j": "嫁娶.动土.破土.修坟.", "c": "生肖冲蛇", "s": "煞西", "ch": "除", "zc": "正冲正冲辛巳", "ts": "仓库床外西北" }, "d1108": { "y": "嫁娶.开光.出行.解除.出火.拆卸.修造.进人口.动土.入宅.移徙.栽种.纳畜.掘井.安葬.除服.成服.", "j": "置产.安床.", "c": "生肖冲马", "s": "煞南", "ch": "除", "zc": "正冲正冲壬午", "ts": "房床碓外正北" }, "d1109": { "y": "开光.裁衣.安门.会亲友.安床.结网.理发.", "j": "嫁娶.冠笄.出行.祈福.安葬.伐木.入宅.移徙.出火.栽种.动土.上梁.", "c": "生肖冲羊", "s": "煞東", "ch": "满", "zc": "正冲正冲癸未", "ts": "占门厕外正北" }, "d1110": { "y": "嫁娶.开光.出行.出火.拆卸.修造.动土.入宅.移徙.安床.上梁.开市.交易.立券.栽种.", "j": "祈福.祭祀.伐木.掘井.作灶.谢土.", "c": "生肖冲猴", "s": "煞北", "ch": "平", "zc": "正冲正冲甲申", "ts": "碓磨炉外正北" }, "d1111": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出火.出行.拆卸.开市.交易.立券.挂匾.伐木.入宅.移徙.安床.安葬.", "j": "栽种.掘井.置产.", "c": "生肖冲鸡", "s": "煞西", "ch": "定", "zc": "正冲正冲乙酉", "ts": "厨灶门外正北" }, "d1112": { "y": "祭祀.理发.针灸.解除.进人口.整手足甲.", "j": "嫁娶.动土.造船.开池.掘井.出行.修造.入宅.上梁.移徙.安葬.破土.作灶.开市.", "c": "生肖冲狗", "s": "煞南", "ch": "执", "zc": "正冲正冲丙戌", "ts": "仓库栖外正北" }, "d1113": { "y": "破屋.坏垣.求医.治病.余事勿取.", "j": "嫁娶.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "破", "zc": "正冲正冲丁亥", "ts": "占房床房内北" }, "d1114": { "y": "纳采.订盟.嫁娶.祭祀.祈福.雕刻.移徙.开市.入宅.出行.动土.会亲友.入学.修造.动土.起基.安门.安床.造庙.解除.纳财.开池.造畜椆栖.牧养.牧养.", "j": "上梁.开仓.出货财.造屋.造船.", "c": "生肖冲鼠", "s": "煞北", "ch": "危", "zc": "正冲正冲戊子", "ts": "占门碓房内北" }, "d1115": { "y": "祭祀.祈福.求嗣.开光.解除.伐木.拆卸.修造.栽种.纳畜.安葬.修坟.立碑.", "j": "嫁娶.进人口.入宅.移徙.出火.出行.", "c": "生肖冲牛", "s": "煞西", "ch": "成", "zc": "正冲正冲己丑", "ts": "碓磨厕房内北" }, "d1116": { "y": "沐浴.扫舍.捕捉.畋猎.解除.塞穴.余事勿取.", "j": "嫁娶.入宅.开市.安床.破土.修坟.", "c": "生肖冲虎", "s": "煞南", "ch": "收", "zc": "正冲正冲庚寅", "ts": "厨灶炉房内北" }, "d1117": { "y": "嫁娶.冠笄.祭祀.祈福.求嗣.斋醮.开光.出行.解除.动土.开市.交易.立券.挂匾.拆卸.破土.", "j": "伐木.上梁.修造.入殓.理发.会亲友.入宅.安门.安葬.作灶.", "c": "生肖冲兔", "s": "煞東", "ch": "开", "zc": "正冲正冲辛卯", "ts": "仓库门房内北" }, "d1118": { "y": "合帐.裁衣.嫁娶.安床.入殓.移柩.破土.造畜椆栖.", "j": "置产.造船.开光.掘井.作灶.", "c": "生肖冲龙", "s": "煞北", "ch": "闭", "zc": "正冲正冲壬辰", "ts": "房床栖房内南" }, "d1119": { "y": "解除.修饰垣墙.冠笄.出行.余事勿取.", "j": "开市.动土.破土.嫁娶.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "建", "zc": "正冲正冲癸巳", "ts": "占门床房内南" }, "d1120": { "y": "纳采.订盟.嫁娶.祭祀.祈福.求嗣.开光.出行.解除.进人口.开市.立券.挂匾.入宅.移徙.安门.栽种.动土.求医.治病.会亲友.起基.修造.造屋.安葬.", "j": "作灶.经络.安床.", "c": "生肖冲马", "s": "煞南", "ch": "除", "zc": "正冲正冲甲午", "ts": "占碓磨房内南" }, "d1122": { "y": "出行.纳财.开市.交易.立券.动土.移徙.入宅.裁衣.会亲友.拆卸.进人口.安香.经络.出货财.修饰垣墙.平治道涂.", "j": "造庙.谢土.作灶.作梁.伐木.安葬.行丧.修坟.探病.", "c": "生肖冲猴", "s": "煞北", "ch": "平", "zc": "正冲正冲丙申", "ts": "仓库炉房内南" }, "d1123": { "y": "嫁娶.纳采.订盟.祭祀.斋醮.开光.安香.出火.出行.出火.拆卸.动土.祈福.进人口.纳财.交易.立券.移徙.安床.修造.安葬.除服.成服.", "j": "置产.掘井.词讼.栽种.", "c": "生肖冲鸡", "s": "煞西", "ch": "定", "zc": "正冲正冲丁酉", "ts": "房床门房内南" }, "d1125": { "y": "祭祀.解除.破屋.坏垣.求医.治病.余事勿取.", "j": "嫁娶.安葬.", "c": "生肖冲猪", "s": "煞东", "ch": "破", "zc": "正冲正冲己亥", "ts": "碓磨床房内东" }, "d1126": { "y": "祭祀.扫舍.破土.安葬.除服.成服.启攒.移柩.入殓.立碑.余事勿取.", "j": "祭祀.嫁娶.入宅.修造.动土.", "c": "生肖冲鼠", "s": "煞北", "ch": "危", "zc": "正冲正冲庚子", "ts": "厨灶碓房内东" }, "d1127": { "y": "订盟.纳采.会亲友.祭祀.祈福.修造.动土.安机械.破土.安葬.", "j": "嫁娶.移徙.出火.开市.入宅.", "c": "生肖冲牛", "s": "煞西", "ch": "成", "zc": "正冲正冲辛丑", "ts": "仓库厕房内东" }, "d1128": { "y": "祭祀.沐浴.捕捉.畋猎.结网.扫舍.", "j": "嫁娶.纳采.订盟.安床.动土.破土.安葬.", "c": "生肖冲虎", "s": "煞南", "ch": "收", "zc": "正冲正冲壬寅", "ts": "房床炉房内东" }, "d1129": { "y": "开市.纳财.出行.祭祀.祈福.求嗣.斋醮.问名.入学.起基.定磉.置产.开渠.掘井.拆卸.栽种.纳畜.牧养.动土.破土.启攒.", "j": "移徙.入宅.出火.入殓.安葬.", "c": "生肖冲兔", "s": "煞東", "ch": "开", "zc": "正冲正冲癸卯", "ts": "占大门外东北" }, "d1130": { "y": "祭祀.理发.置产.塞穴.除服.成服.移柩.入殓.破土.安葬.", "j": "嫁娶.入宅.安床.掘井.开光.", "c": "生肖冲龙", "s": "煞北", "ch": "闭", "zc": "正冲正冲甲辰", "ts": "碓磨栖外东北" }, "d1214": { "y": "交易.进人口.祭祀.沐浴.捕捉.入殓.除服.成服.安葬.谢土.启攒.修坟.", "j": "斋醮.入宅.修造.动土.破土.", "c": "生肖冲马", "s": "煞南", "ch": "建", "zc": "正冲正冲戊午", "ts": "占门碓外东南" }, "d1204": { "y": "纳采.移徙.纳财.开市.交易.立券.纳财.入宅.修造.动土.竖柱.起基.定磉.造庙.安香.出火.修饰垣墙.平治道涂.会亲友.出行.开池.作厕.", "j": "开仓.造屋.造桥.祭祀.", "c": "生肖冲猴", "s": "煞北", "ch": "平", "zc": "正冲正冲戊申", "ts": "占门炉外东北" }, "d1221": { "y": "安床.架马.祭祀.塑绘.开光.出行.理发.伐木.作梁.开柱眼.作厕.畋猎.破土.入殓.除服.成服.移柩.启攒.修坟.立碑.", "j": "作灶.安门.造桥.开市.安葬.", "c": "生肖冲牛", "s": "煞西", "ch": "危", "zc": "正冲正冲乙丑", "ts": "厨灶厕外西南" }, "d1228": { "y": "订盟.纳采.会亲友.安机械.开光.修造.动土.竖柱.上梁.造屋.起基.造桥.栽种.纳畜.造畜椆栖.移柩.入殓.启攒.修坟.立碑.安葬.", "j": "祈福.出火.嫁娶.入宅.开市.动土.破土.", "c": "生肖冲猴", "s": "煞北", "ch": "满", "zc": "正冲正冲壬申", "ts": "房床厕外正南" }, "d1208": { "y": "破屋.坏垣.祭祀.沐浴.余事勿取.", "j": "诸事不宜.", "c": "生肖冲鼠", "s": "煞北", "ch": "破", "zc": "正冲正冲壬子", "ts": "房床碓外正东" }, "d1201": { "y": "祭祀.沐浴.出行.余事勿取.", "j": "开市.动土.破土.行丧.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "建", "zc": "正冲正冲乙巳", "ts": "厨灶床外东北" }, "d1202": { "y": "嫁娶.造车器.出行.会亲友.移徙.入宅.修造.动土.雕刻.开光.安香.出火.理发.会亲友.造屋.合脊.起基.归岫.安门.拆卸.扫舍.栽种.造畜椆栖.", "j": "开市.纳采.造庙.安床.开渠.安葬.", "c": "生肖冲马", "s": "煞南", "ch": "除", "zc": "正冲正冲丙午", "ts": "仓库碓外东北" }, "d1203": { "y": "塑绘.会亲友.安机械.塞穴.结网.裁衣.经络.", "j": "嫁娶.开市.祈福.斋醮.安葬.", "c": "生肖冲羊", "s": "煞東", "ch": "满", "zc": "正冲正冲丁未", "ts": "房床厕外东北" }, "d1205": { "y": "订盟.纳采.纳财.开市.立券.祭祀.祈福.移徙.入宅.出行.造屋.起基.修造.动土.竖柱.上梁.安门.安香.出火.教牛马.会亲友.破土.", "j": "嫁娶.安葬.掘井.置产.造船.", "c": "生肖冲鸡", "s": "煞西", "ch": "定", "zc": "正冲正冲己酉", "ts": "碓磨门外正东" }, "d1206": { "y": "嫁娶.订盟.纳采.祭祀.祈福.塑绘.开光.移徙.安床.伐木.作梁.捕捉.畋猎.结网.求医.治病.解除.安葬.除服.成服.移柩.入殓.立碑.谢土.", "j": "开市.造庙.动土.破土.", "c": "生肖冲狗", "s": "煞南", "ch": "执", "zc": "正冲正冲庚戌", "ts": "厨灶栖外正东" }, "d1207": { "y": "祭祀.解除.余事勿取.", "j": "诸事不宜.", "c": "生肖冲猪", "s": "煞東", "ch": "执", "zc": "正冲正冲辛亥", "ts": "仓库床外正东" }, "d1209": { "y": "安床.祭祀.祈福.求嗣.冠笄.伐木.架马.动土.开池.作厕.结网.入殓.除服.成服.", "j": "安门.栽种.作灶.治病.", "c": "生肖冲牛", "s": "煞西", "ch": "危", "zc": "正冲正冲癸丑", "ts": "占门厕外正东" }, "d1210": { "y": "解除.扫舍.余事勿取.", "j": "诸事不宜.", "c": "生肖冲虎", "s": "煞南", "ch": "成", "zc": "正冲正冲甲寅", "ts": "碓磨炉外东南" }, "d1211": { "y": "祭祀.开光.理发.整手足甲.安床.作灶.扫舍.教牛马.", "j": "伐木.纳畜.破土.安葬.开生坟.嫁娶.开市.动土.交易.作梁.", "c": "生肖冲兔", "s": "煞東", "ch": "收", "zc": "正冲正冲乙卯", "ts": "厨灶门外东南" }, "d1212": { "y": "祭祀.祈福.求嗣.开光.拆卸.修造.动土.上梁.安床.置产.栽种.破土.", "j": "嫁娶.进人口.安葬.出行.赴任.入宅.移徙.入殓.开渠.", "c": "生肖冲龙", "s": "煞北", "ch": "开", "zc": "正冲正冲丙辰", "ts": "仓库栖外东南" }, "d1213": { "y": "沐浴.冠笄.补垣.塞穴.合帐.裁衣.修造.作梁.开柱眼.安碓硙.筑堤.作厕.断蚁.", "j": "移徙.入宅.嫁娶.祈福.开光.掘井.", "c": "生肖冲蛇", "s": "煞西", "ch": "闭", "zc": "正冲正冲丁巳", "ts": "占房床外东南" }, "d1215": { "y": "嫁娶.纳采.订盟.造车器.祭祀.祈福.造庙.安香.出火.出行.归宁.入学.入宅.交易.立券.求医.治病.修造.动土.竖柱.上梁.造屋.起基.安门.", "j": "斋醮.伐木.作梁.安葬.行丧.", "c": "生肖冲羊", "s": "煞東", "ch": "除", "zc": "正冲正冲己未", "ts": "碓磨厕外东南" }, "d1216": { "y": "纳采.订盟.开市.交易.立券.出行.会亲友.安机械.竖柱.上梁.平治道涂.伐木.拆卸.造屋.起基.安床.安门.解除.安葬.启攒.除服.成服.修坟.立碑.移柩.入殓.", "j": "嫁娶.动土.破土.祈福.出火.入宅.", "c": "生肖冲猴", "s": "煞北", "ch": "满", "zc": "正冲正冲庚申", "ts": "厨灶炉外正南" }, "d1217": { "y": "祭祀.平治道涂.除服.成服.安葬.余事勿取.", "j": "嫁娶.入宅.纳采.订盟.掘井.", "c": "生肖冲鸡", "s": "煞西", "ch": "平", "zc": "正冲正冲辛酉", "ts": "仓库门外正南" }, "d1218": { "y": "纳采.订盟.祭祀.祈福.开光.安香.出火.出行.会亲友.安机械.修造.动土.竖柱.上梁.造屋.起基.定磉.安床.安门.拆卸.移徙.造桥.造船.安葬.破土.入殓.", "j": "开市.造庙.置产.掘井.", "c": "生肖冲狗", "s": "煞南", "ch": "定", "zc": "正冲正冲壬戌", "ts": "房床栖外正南" }, "d1219": { "y": "嫁娶.冠笄.祭祀.祈福.求嗣.斋醮.进人口.会亲友.伐木.作梁.开柱眼.安床.掘井.捕捉.畋猎.", "j": "开生坟.破土.行丧.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "执", "zc": "正冲正冲癸亥", "ts": "占门床外正南" }, "d1220": { "y": "破屋.坏垣.治病.余事勿取.", "j": "移徙.入宅.", "c": "生肖冲鼠", "s": "煞北", "ch": "破", "zc": "正冲正冲甲子", "ts": "占碓磨外正南" }, "d1222": { "y": "嫁娶.祭祀.祈福.求嗣.开光.出行.解除.入宅.移徙.纳畜.入殓.破土.修坟.立碑.", "j": "伐木.作梁.动土.安床.破土.栽种.造桥.", "c": "生肖冲虎", "s": "煞南", "ch": "成", "zc": "正冲正冲丙寅", "ts": "仓库炉外西南" }, "d1223": { "y": "祭祀.沐浴.理发.纳财.进人口.栽种.扫舍.捕捉.畋猎.结网.", "j": "会亲友.安葬.入宅.移徙.安床.开市.行丧.出火.作灶.安门.", "c": "生肖冲兔", "s": "煞東", "ch": "收", "zc": "正冲正冲丁卯", "ts": "房床门外西南" }, "d1225": { "y": "入宅.移徙.出行.进人口.修造.动土.起基.上梁.安门.造仓.补垣.塞穴.造畜椆栖.", "j": "嫁娶.开市.安床.栽种.安葬.祈福.开光.掘井.安葬.", "c": "生肖冲蛇", "s": "煞西", "ch": "闭", "zc": "正冲正冲己巳", "ts": "碓磨床外西南" }, "d1226": { "y": "造畜椆栖.教牛马.", "j": "入宅.移徙.分居.作灶.出火.安香.动土.嫁娶.掘井.扫舍.造桥.", "c": "生肖冲马", "s": "煞南", "ch": "建", "zc": "正冲正冲庚午", "ts": "厨灶碓外西南" }, "d1227": { "y": "订盟.纳采.造车器.祭祀.祈福.出行.安香.修造.动土.上梁.开市.交易.立券.移徙.入宅.会亲友.安机械.栽种.纳畜.造屋.起基.安床.造畜椆栖.", "j": "破土.安葬.行丧.开生坟.", "c": "生肖冲羊", "s": "煞東", "ch": "除", "zc": "正冲正冲辛未", "ts": "仓库厕外西南" }, "d1229": { "y": "祭祀.平治道涂.修坟.除服.成服.余事勿取.", "j": "移徙.入宅.嫁娶.掘井.安葬.", "c": "生肖冲鸡", "s": "煞西", "ch": "平", "zc": "正冲正冲癸酉", "ts": "占门厕外正南" }, "d1230": { "y": "嫁娶.冠笄.祭祀.祈福.求嗣.雕刻.开光.安香.出行.入学.修造.动土.竖柱.上梁.造屋.起基.安门.出火.移徙.入宅.掘井.造畜椆栖.安葬.破土.除服.成服.", "j": "开市.纳采.订盟.作灶.造庙.造船.经络.", "c": "生肖冲狗", "s": "煞南", "ch": "定", "zc": "正冲正冲甲戌", "ts": "碓磨栖外正西" }, "d1231": { "y": "嫁娶.订盟.纳采.祭祀.祈福.求嗣.斋醮.安香.出火.修造.起基.造屋.合脊.安门.安碓硙.动土.上梁.移徙.入宅.", "j": "出行.掘井.破土.行丧.安葬.", "c": "生肖冲猪", "s": "煞東", "ch": "执", "zc": "正冲正冲乙亥", "ts": "厨灶床外正西" } } ukui-panel-4.0.0.4/plugin-calendar/html/jiejiari.json0000644000175000017500000003554114560306203021050 0ustar fengfeng{ "worktime.y2011": { "d0101": "2", "d0102": "2", "d0103": "2", "d0130": "1", "d0202": "2", "d0203": "2", "d0204": "2", "d0205": "2", "d0206": "2", "d0207": "2", "d0208": "2", "d0402": "1", "d0403": "2", "d0404": "2", "d0405": "2", "d0430": "2", "d0501": "2", "d0502": "2", "d0604": "2", "d0605": "2", "d0606": "2", "d0910": "2", "d0911": "2", "d0912": "2", "d1001": "2", "d1002": "2", "d1003": "2", "d1004": "2", "d1005": "2", "d1006": "2", "d1007": "2", "d1008": "1", "d1009": "1", "d1231": "1" }, "worktime.y2012": { "d0101": "2", "d0102": "2", "d0103": "2", "d0121": "1", "d0122": "2", "d0123": "2", "d0124": "2", "d0125": "2", "d0126": "2", "d0127": "2", "d0128": "2", "d0129": "1", "d0331": "1", "d0401": "1", "d0402": "2", "d0403": "2", "d0404": "2", "d0428": "1", "d0429": "2", "d0430": "2", "d0501": "2", "d0622": "2", "d0623": "2", "d0624": "2", "d0929": "1", "d0930": "2", "d1001": "2", "d1002": "2", "d1003": "2", "d1004": "2", "d1005": "2", "d1006": "2", "d1007": "2", "d1008": "1" }, "worktime.y2013": { "d0101": "2", "d0102": "2", "d0103": "2", "d0105": "1", "d0106": "1", "d0209": "2", "d0210": "2", "d0211": "2", "d0212": "2", "d0213": "2", "d0214": "2", "d0215": "2", "d0216": "1", "d0217": "1", "d0404": "2", "d0405": "2", "d0406": "2", "d0407": "1", "d0427": "1", "d0428": "1", "d0429": "2", "d0430": "2", "d0501": "2", "d0608": "1", "d0609": "1", "d0610": "2", "d0611": "2", "d0612": "2", "d0919": "2", "d0920": "2", "d0921": "2", "d0922": "1", "d0929": "1", "d1001": "2", "d1002": "2", "d1003": "2", "d1004": "2", "d1005": "2", "d1006": "2", "d1007": "2", "d1012": "1" }, "worktime.y2014": { "d0101": "2", "d0126": "1", "d0131": "2", "d0201": "2", "d0202": "2", "d0203": "2", "d0204": "2", "d0205": "2", "d0206": "2", "d0208": "1", "d0405": "2", "d0407": "2", "d0501": "2", "d0502": "2", "d0503": "2", "d0504": "1", "d0602": "2", "d0908": "2", "d0928": "1", "d1001": "2", "d1002": "2", "d1003": "2", "d1004": "2", "d1005": "2", "d1006": "2", "d1007": "2", "d1011": "1" }, "worktime.y2015": { "d0101": "2", "d0102": "2", "d0103": "2", "d0104": "1", "d0215": "1", "d0218": "2", "d0219": "2", "d0220": "2", "d0221": "2", "d0222": "2", "d0223": "2", "d0224": "2", "d0228": "1", "d0404": "2", "d0405": "2", "d0406": "2", "d0501": "2", "d0502": "2", "d0503": "2", "d0620": "2", "d0621": "2", "d0622": "2", "d0926": "2", "d0927": "2", "d1001": "2", "d1002": "2", "d1003": "2", "d1004": "2", "d1005": "2", "d1006": "2", "d1007": "2", "d1010": "1" }, "worktime.y2016": { "d0101": "2", "d0102": "2", "d0103": "2", "d0206": "1", "d0207": "2", "d0208": "2", "d0209": "2", "d0210": "2", "d0211": "2", "d0212": "2", "d0213": "2", "d0214": "1", "d0402": "2", "d0403": "2", "d0404": "2", "d0430": "2", "d0501": "2", "d0502": "2", "d0609": "2", "d0610": "2", "d0611": "2", "d0612": "1", "d0915": "2", "d0916": "2", "d0917": "2", "d0918": "1", "d1001": "2", "d1002": "2", "d1003": "2", "d1004": "2", "d1005": "2", "d1006": "2", "d1007": "2", "d1008": "1", "d1009": "1", "d1231": "2" }, "worktime.y2017": { "d0101":"2", "d0102":"2", "d0122":"1", "d0127":"2", "d0128":"2", "d0129":"2", "d0130":"2", "d0131":"2", "d0201":"2", "d0202":"2", "d0204":"1", "d0401":"1", "d0402":"2", "d0403":"2", "d0404":"2", "d0429":"2", "d0430":"2", "d0501":"2", "d0527":"1", "d0528":"2", "d0529":"2", "d0530":"2", "d0930":"1", "d1001":"2", "d1002":"2", "d1003":"2", "d1004":"2", "d1005":"2", "d1006":"2", "d1007":"2", "d1008":"2", "d1230":"2", "d1231":"2" }, "worktime.y2018": { "d0101": "2", "d0211": "1", "d0215": "2", "d0216": "2", "d0217": "2", "d0218": "2", "d0219": "2", "d0220": "2", "d0221": "2", "d0224": "1", "d0405": "2", "d0406": "2", "d0407": "2", "d0408": "1", "d0428": "1", "d0429": "2", "d0430": "2", "d0501": "2", "d0616": "2", "d0617": "2", "d0618": "2", "d0922": "2", "d0923": "2", "d0924": "2", "d0929": "1", "d0930": "1", "d1001": "2", "d1002": "2", "d1003": "2", "d1004": "2", "d1005": "2", "d1006": "2", "d1007": "2", "d1229": "1", "d1230": "2", "d1231": "2" }, "worktime.y2019": { "d0101": "2", "d0202": "1", "d0203": "1", "d0204": "2", "d0205": "2", "d0206": "2", "d0207": "2", "d0208": "2", "d0209": "2", "d0210": "2", "d0405": "2", "d0406": "2", "d0407": "2", "d0501": "2", "d0502": "2", "d0503": "2", "d0504": "2", "d0505": "1", "d0607": "2", "d0608": "2", "d0609": "2", "d0913": "2", "d0914": "2", "d0915": "2", "d0929": "1", "d1001": "2", "d1002": "2", "d1003": "2", "d1004": "2", "d1005": "2", "d1006": "2", "d1007": "2", "d1012": "1" }, "worktime.y2020": { "d0101": "2", "d0119": "1", "d0124": "2", "d0125": "2", "d0126": "2", "d0127": "2", "d0128": "2", "d0129": "2", "d0130": "2", "d0201": "1", "d0404": "2", "d0405": "2", "d0406": "2", "d0426": "1", "d0501": "2", "d0502": "2", "d0503": "2", "d0504": "2", "d0505": "2", "d0509": "1", "d0625": "2", "d0626": "2", "d0627": "2", "d0628": "1", "d0927": "1", "d1001": "2", "d1002": "2", "d1003": "2", "d1004": "2", "d1005": "2", "d1006": "2", "d1007": "2", "d1008": "2", "d1010": "1" }, "worktime.y2021": { "d0101": "2", "d0102": "2", "d0103": "2", "d0207": "1", "d0211": "2", "d0212": "2", "d0213": "2", "d0214": "2", "d0215": "2", "d0216": "2", "d0217": "2", "d0220": "1", "d0403": "2", "d0404": "2", "d0405": "2", "d0425": "1", "d0501": "2", "d0502": "2", "d0503": "2", "d0504": "2", "d0505": "2", "d0508": "1", "d0612": "2", "d0613": "2", "d0614": "2", "d0918": "1", "d0919": "2", "d0920": "2", "d0921": "2", "d0926": "1", "d1001": "2", "d1002": "2", "d1003": "2", "d1004": "2", "d1005": "2", "d1006": "2", "d1007": "2", "d1009": "1" }, "worktime.y2022": { "d0101": "2", "d0102": "2", "d0103": "2", "d0129": "1", "d0130": "1", "d0131": "2", "d0201": "2", "d0202": "2", "d0203": "2", "d0204": "2", "d0205": "2", "d0206": "2", "d0402": "1", "d0403": "2", "d0404": "2", "d0405": "2", "d0424": "1", "d0430": "2", "d0501": "2", "d0502": "2", "d0503": "2", "d0504": "2", "d0507": "1", "d0603": "2", "d0604": "2", "d0605": "2", "d0910": "2", "d0911": "2", "d0912": "2", "d1001": "2", "d1002": "2", "d1003": "2", "d1004": "2", "d1005": "2", "d1006": "2", "d1007": "2", "d1008": "1", "d1009": "1", "d1231": "2" }, "worktime.y2023": { "d0101": "2", "d0102": "2", "d0121": "2", "d0122": "2", "d0123": "2", "d0124": "2", "d0125": "2", "d0126": "2", "d0127": "2", "d0128": "1", "d0129": "1", "d0405": "2", "d0423": "1", "d0429": "2", "d0430": "2", "d0501": "2", "d0502": "2", "d0503": "2", "d0506": "1", "d0622": "2", "d0623": "2", "d0624": "2", "d0625": "1", "d0929": "2", "d0930": "2", "d1001": "2", "d1002": "2", "d1003": "2", "d1004": "2", "d1005": "2", "d1006": "2", "d1007": "1", "d1008": "1", "d1230": "2", "d1231": "2" }, "worktime.y2024":{ "d0101": "2", "d0204": "1", "d0210": "2", "d0211": "2", "d0212": "2", "d0213": "2", "d0214": "2", "d0215": "2", "d0216": "2", "d0217": "2", "d0218": "1", "d0404": "2", "d0405": "2", "d0406": "2", "d0407": "1", "d0428": "1", "d0501": "2", "d0502": "2", "d0503": "2", "d0504": "2", "d0505": "2", "d0511": "1", "d0608": "2", "d0609": "2", "d0610": "2", "d0914": "1", "d0915": "2", "d0916": "2", "d0917": "2", "d0929": "1", "d1001": "2", "d1002": "2", "d1003": "2", "d1004": "2", "d1005": "2", "d1006": "2", "d1007": "2", "d1012": "1" } } ukui-panel-4.0.0.4/plugin-calendar/calendarbuttontext.cpp0000644000175000017500000003272414560306221022041 0ustar fengfeng/* * Copyright (C) 2023, KylinSoft Co., Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see #define HOUR_SYSTEM_CONTROL "org.ukui.control-center.panel.plugins" #define DATA_FORMAT "date" //日期格式:yyyy/MM/dd、yyyy-MM-dd #define TIME_FORMAT "hoursystem" //时间格式:12小时制、24小时制 #define SYSTEM_FONT_SET "org.ukui.style" #define SYSTEM_FONT_SIZE "systemFontSize" #define SYSTEM_FONT "systemFont" #define SYSTEM_MIN_FONT 10 #define PANEL_SETTINGS "org.ukui.panel.settings" #define PANEL_POSITION_KEY "panelposition" #define ICON_SIZE_KEY "iconsize" #define PANEL_SIZE_KEY "panelsize" #define CALENDAR_BUTTON_WIDTH 120 #define PANEL_SIZE_LARGE 92 #define PANEL_SIZE_MEDIUM 70 #define PANEL_SIZE_SMALL 46 #define PANEL_SIZE_KEY "panelsize" #define UKUI_CONTROL_CENTER_SERVER "org.freedesktop.Accounts" #define UKUI_CONTROL_CENTER_PATH "/org/freedesktop/Accounts/User1000" #define UKUI_CONTROL_CENTER_INTERFACE "org.freedesktop.Accounts.User" #define PROPERTIES_NAME "FormatsLocale" #define US_FORMATS "en_US.UTF-8" #define ZH_CN_FORMATS "zh_CN.UTF-8" #define BO_CN_FORMATS "bo_CN.UTF-8" //藏文 #define EN_FORMATS "en_US" #define INSIDE_SPAC 6 CalendarButtonText::CalendarButtonText(IUKUIPanelPlugin *plugin, QPushButton *parent): m_plugin(plugin), m_parent(parent) { m_dataTime = QDateTime::currentDateTime(); const QByteArray controlId(HOUR_SYSTEM_CONTROL); if (QGSettings::isSchemaInstalled(controlId)) { m_timeFormat = new QGSettings(controlId); } const QByteArray fontId(SYSTEM_FONT_SET); if (QGSettings::isSchemaInstalled(fontId)) { m_fontGsettings = new QGSettings(fontId); } const QByteArray panelId(PANEL_SETTINGS); if (QGSettings::isSchemaInstalled(panelId)) { m_panelGsettings = new QGSettings(panelId); } } CalendarButtonText::~CalendarButtonText() { if(m_fontGsettings) { m_fontGsettings->deleteLater(); } if(m_panelGsettings) { m_panelGsettings->deleteLater(); } } /* * 更新时间文字显示 * 横向任务栏显示格式(中文): * 24小时制: * hh:mm ddd * yyyy/MM/dd * 12小时制: * AM hh:mm ddd * yyyy/MM/dd * * 纵向任务栏显示格式: * 24小时制: * hh:mm 或 hh:mm * ddd ddd * yyyy/MM/dd MM/dd * 12小时制: * AM AM * hh:mm hh:mm * ddd 或 ddd * yyyy/MM/dd MM/dd */ QString CalendarButtonText::getBtnText() { QString formatsLocale = getFormatsLocale(); if(formatsLocale == ZH_CN_FORMATS) { return getZhCnBtnText(); } else if(formatsLocale == US_FORMATS) { return getEnUsBtnText(); } else { return getOtherBtnText(); } } QString CalendarButtonText::getEnUsBtnText() { QString amPmStr = getAmPm(); QString timeStr = getTime(); QString weekStr = getWeek(); QString dataStr; QString btnTextStr; if(m_plugin->panel()->isHorizontal()) { dataStr = getDate(DateStyle::YEAR_MON_DAY); if(m_timeFormat && m_timeFormat->get(TIME_FORMAT).toString() == "12") { btnTextStr = timeStr + " " + amPmStr + " " + weekStr + "\n" + dataStr; } else { btnTextStr = timeStr + " " + weekStr + "\n" + dataStr; } } else { if(m_panelGsettings->get(PANEL_SIZE_KEY).toInt() < PANEL_SIZE_LARGE) { dataStr = getDate(DateStyle::MON_DAY); } else { dataStr = getDate(DateStyle::YEAR_MON_DAY); } if(m_timeFormat && m_timeFormat->get(TIME_FORMAT).toString() == "12") { btnTextStr = timeStr + "\n" + amPmStr + "\n" + weekStr + "\n" + dataStr; } else { btnTextStr = timeStr + "\n" + weekStr + "\n" + dataStr; } } updateFontSize(btnTextStr); return btnTextStr; } QString CalendarButtonText::getZhCnBtnText() { QString amPmStr = getAmPm(); QString timeStr = getTime(); QString weekStr = getWeek(); QString dataStr; QString btnTextStr; if(m_plugin->panel()->isHorizontal()) { dataStr = getDate(DateStyle::YEAR_MON_DAY); if(m_timeFormat && m_timeFormat->get(TIME_FORMAT).toString() == "12") { btnTextStr = amPmStr + " " + timeStr + " " + weekStr + "\n" + dataStr; } else { btnTextStr = timeStr + " " + weekStr + "\n" + dataStr; } } else { if(m_panelGsettings->get(PANEL_SIZE_KEY).toInt() < PANEL_SIZE_LARGE) { dataStr = getDate(DateStyle::MON_DAY); } else { dataStr = getDate(DateStyle::YEAR_MON_DAY); } if(m_timeFormat && m_timeFormat->get(TIME_FORMAT).toString() == "12") { btnTextStr = amPmStr + "\n" + timeStr + "\n" + weekStr + "\n" + dataStr; } else { btnTextStr = timeStr + "\n" + weekStr + "\n" + dataStr; } } updateFontSize(btnTextStr); return btnTextStr; } QString CalendarButtonText::getOtherBtnText() { QString amPmStr = getAmPm(); QString timeStr = getTime(); QString dataStr; QString btnTextStr; if(m_plugin->panel()->isHorizontal()) { dataStr = getDate(DateStyle::YEAR_MON_DAY); if(m_timeFormat && m_timeFormat->get(TIME_FORMAT).toString() == "12") { btnTextStr = amPmStr + " " + timeStr + "\n" + dataStr; } else { btnTextStr = timeStr + "\n" + dataStr; } } else { //任务栏纵向状态下,大尺寸以下均不显示year if(m_panelGsettings->get(PANEL_SIZE_KEY).toInt() < PANEL_SIZE_LARGE) { dataStr = getDate(DateStyle::MON_DAY); } else { dataStr = getDate(DateStyle::YEAR_MON_DAY); } if(m_timeFormat && m_timeFormat->get(TIME_FORMAT).toString() == "12") { btnTextStr = amPmStr + "\n" + timeStr + "\n" + dataStr; } else { btnTextStr = timeStr + "\n" + dataStr; } } updateFontSize(btnTextStr); return btnTextStr; } QString CalendarButtonText::getToolTipText() { QString formatsLocale = getFormatsLocale(); if(formatsLocale == ZH_CN_FORMATS) { return getZhCnToolTipText(); } else if(formatsLocale == US_FORMATS) { return getEnUsToolTipText(); } else if(formatsLocale == BO_CN_FORMATS) { return getBoCnToolTipText(); } else { return getOtherToolTipText(); } } //英语ToolTip格式:28 August 2023 QString CalendarButtonText::getEnUsToolTipText() { QDateTime dataTime = QDateTime::currentDateTime(); return QString(dataTime.toString("d")+" " +dataTime.toString("MMMM")+" " +dataTime.toString("yyyy")); } //中文ToolTip格式:2023年8月28日 QString CalendarButtonText::getZhCnToolTipText() { QDateTime dataTime = QDateTime::currentDateTime(); return QString(dataTime.toString("yyyy")+tr("year")+ dataTime.toString("M")+tr("month")+ dataTime.toString("d")+tr("day")); } //藏文ToolTip格式:2023年8月28日(藏文) QString CalendarButtonText::getBoCnToolTipText() { QDateTime dataTime = QDateTime::currentDateTime(); return QString(dataTime.toString("yyyy")+tr("year")+ dataTime.toString("M")+tr("month")+ dataTime.toString("d")+tr("day")); } //其他语种ToolTip格式:28 August 2023 QString CalendarButtonText::getOtherToolTipText() { QDateTime dataTime = QDateTime::currentDateTime(); return QString(dataTime.toString("d")+" " +dataTime.toString("MMMM")+" " +dataTime.toString("yyyy")); } QString CalendarButtonText::getAmPm() { QString time = m_dataTime.toString("A hh:mm"); QStringList timeList = time.split(" ", QString::SkipEmptyParts); return timeList.first(); } QString CalendarButtonText::getTime() { QString time = m_dataTime.toString("A hh:mm"); QStringList timeList = time.split(" ", QString::SkipEmptyParts); QString time12 = timeList.last(); QString time24 = m_dataTime.toString("hh:mm"); if(m_timeFormat && m_timeFormat->get(TIME_FORMAT).toString() == "12") { return time12; } else { return time24; } } QString CalendarButtonText::getWeek() { QDBusInterface interface(UKUI_CONTROL_CENTER_SERVER, UKUI_CONTROL_CENTER_PATH, UKUI_CONTROL_CENTER_INTERFACE, QDBusConnection::systemBus()); QString language = interface.property(PROPERTIES_NAME).toString(); if(language == US_FORMATS) { return m_dataTime.toString("ddd"); } else if(language == ZH_CN_FORMATS) { return m_dataTime.toString("dddd"); } } QString CalendarButtonText::getDate(DateStyle dateStyle) { QString year = m_dataTime.toString("yyyy"); QString mon = m_dataTime.toString("MM"); QString day = m_dataTime.toString("dd"); QString spacer = "/"; if(m_timeFormat && m_timeFormat->get(DATA_FORMAT).toString() == "en") { spacer = "-"; } else { spacer = "/"; } if(dateStyle == DateStyle::YEAR_MON_DAY) { return year + spacer + mon + spacer + day; } else { return mon + spacer + day; } } void CalendarButtonText::updateFontSize(QString btnText) { if (m_panelGsettings == nullptr) { qWarning()<panel()->isHorizontal()) { if(m_panelGsettings->get(PANEL_SIZE_KEY).toInt() < PANEL_SIZE_MEDIUM) { if (m_fontGsettings != nullptr) { QString systemFont = m_fontGsettings->get(SYSTEM_FONT).toString(); m_parent->setFont(QFont(systemFont, SYSTEM_MIN_FONT)); } return; } maxLength = CALENDAR_BUTTON_WIDTH; setOptimalFont(textList, maxLength); } else { int m_panelSize = m_panelGsettings->get(PANEL_SIZE_KEY).toInt(); if(m_panelSize >= PANEL_SIZE_SMALL && m_panelSize < PANEL_SIZE_MEDIUM) { maxLength = PANEL_SIZE_SMALL; } else if(m_panelSize >= PANEL_SIZE_MEDIUM && m_panelSize < PANEL_SIZE_LARGE) { maxLength = PANEL_SIZE_MEDIUM; } else if(m_panelSize == PANEL_SIZE_LARGE) { maxLength = PANEL_SIZE_LARGE; } else { maxLength = PANEL_SIZE_SMALL; } setOptimalFont(textList, maxLength); } } //判断最长字体的是否可以显示下,选取最优字体大小显示 void CalendarButtonText::setOptimalFont(QStringList textList, int btnMaxLength) { if (m_fontGsettings == nullptr) { qWarning()<get(SYSTEM_FONT).toString(); double fontSizeCurrent = m_fontGsettings->get(SYSTEM_FONT_SIZE).toDouble(); QList systemFonts; systemFonts<<10<<12<<13.5<<15; //获取最长的行 QFontMetrics fontMetrics(QFont(systemFont, fontSizeCurrent)); int fontWidth = fontMetrics.width(textList.first()); int maxIndex = 0; for(int i=1; i fontWidth) { fontWidth = width; maxIndex = i; } } //判断最长字体的是否可以显示下,选取最优字体 int maxFontWidth = fontMetrics.width(textList.at(maxIndex)); if(maxFontWidth > btnMaxLength-INSIDE_SPAC) { int index = systemFonts.indexOf(fontSizeCurrent); if(index>0) { for(int i=index-1; i>=0; i--) { QFontMetrics fontMetrics(QFont(systemFont, systemFonts.at(i))); int width = fontMetrics.width(textList.at(maxIndex)); if(width <= btnMaxLength-INSIDE_SPAC) { m_parent->setFont(QFont(systemFont, systemFonts.at(i))); break; } } } else { //容错处理,如果系统 org.ukui.style system-font-size 设置错误,也可保证日期正常显示不遮挡 m_parent->setFont(QFont(systemFont, systemFonts.first())); } } else { m_parent->setFont(QFont(systemFont, fontSizeCurrent)); } } QString CalendarButtonText::getFormatsLocale() { QDBusInterface interface(UKUI_CONTROL_CENTER_SERVER, UKUI_CONTROL_CENTER_PATH, UKUI_CONTROL_CENTER_INTERFACE, QDBusConnection::systemBus()); QVariant ret = interface.property(PROPERTIES_NAME); return ret.toString(); } ukui-panel-4.0.0.4/plugin-calendar/resources/0000755000175000017500000000000014560306203017425 5ustar fengfengukui-panel-4.0.0.4/plugin-calendar/resources/calendar.desktop.in0000644000175000017500000000022014560306203023170 0ustar fengfeng[Desktop Entry] Type=Service ServiceTypes=UKUIPanel/Plugin Name=calendar Comment=calendar plugin. Icon=clock #TRANSLATIONS_DIR=../translations ukui-panel-4.0.0.4/plugin-calendar/translation/0000755000175000017500000000000014560306221017751 5ustar fengfengukui-panel-4.0.0.4/plugin-calendar/translation/calendar_zh_CN.ts0000644000175000017500000006520014560306221023156 0ustar fengfeng AlwaysDisplayonPanel Show Taskview CalendarActiveLabel Time and Date 时间与日期 Time and Date Setting 时间日期设置 Config panel 设置任务栏 CalendarButton Time and Date 时间与日期 Time and Date Setting 时间日期设置 ContextMenu Show Taskview Show Desktop Show System Monitor Lock This Panel About Kylin Small Medium Large Adjustment Size Up Bottom Left Right Adjustment Position Hide Panel GeneralSettings Merge icons on the taskbar Always Never Taskbar Position Bottom Up Left Right Panel Size Small Medium Large Lock Panel Hide Panel LunarCalendarItem 消防宣传日 志愿者服务日 全国爱眼日 抗战纪念日 LunarCalendarMonthItem Janurary Februray March April May June July August September October November December LunarCalendarWidget Year Month Today 今天 Sun 星期日 Mon 星期一 Tue 星期二 Wed 星期三 Thur 星期四 Fri 星期五 Sat 星期六 解析json文件错误! Sunday 周日 Monday 周一 Tuesday 周二 Wednesday 周三 Thursday 周四 Friday 周五 Saturday 周六 PipeWireCore Failed to create PipeWire context Failed to connect PipeWire context Failed to start main PipeWire loop ShowDesktop Show Desktop StartMenuButton UKUI Menu User Action Suspend or Hibernate Power Supply Lock Screen Switch User Log Out Hibernate Suspend Restart TimeShutdown Shut Down TaskViewButton Show Taskview ThumbnailView Close Restore Maximize Minimize Keep above Unset keep above UKUITaskButton Unpin from taskbar Pin to taskbar close UkccPlugin Panel /ukccpanel/Panel Always show icon in panel /ukccpanel/Always show icon in panel UkuiWebviewDialog Dialog frmLunarCalendarWidget Form 整体样式 红色风格 选中样式 矩形背景 圆形背景 角标背景 图片背景 星期格式 短名称 普通名称 长名称 英文名称 显示农历 main Use alternate configuration file. Configuration file ukui-panel set mode panel set option ukui-panel-4.0.0.4/plugin-calendar/translation/calendar_bo_CN.ts0000644000175000017500000006502314560306221023140 0ustar fengfeng AlwaysDisplayonPanel Show Taskview CalendarActiveLabel Time and Date ཟླ་ཚེས་དང་དུས་ཚོད། Time and Date Setting དུས་ཚོད་དང་ཚེས་གྲངས་སྒྲིག་འགོད། CalendarButton Time and Date དུས་ཚོད་དང་དུས་ཚོད། Time and Date Setting དུས་ཚོད་དང་དུས་ཚོད་གཏན་འཁེལ་ ContextMenu Show Taskview Show Desktop Show System Monitor Lock This Panel About Kylin Small Medium Large Adjustment Size Up Bottom Left Right Adjustment Position Hide Panel GeneralSettings Merge icons on the taskbar Always Never Taskbar Position Bottom Up Left Right Panel Size Small Medium Large Lock Panel Hide Panel LunarCalendarItem 消防宣传日 消防宣传日 志愿者服务日 志愿者服务日 全国爱眼日 抗战纪念日 LunarCalendarMonthItem Janurary Februray March April May June July August September October November December LunarCalendarWidget Year ལོ། Month ཟླ། Today དེ་རིང་། Sun ཉི་མ། Mon དངུལ་ལོར། Tue ཐུའེ་རིགས། Wed གཉེན་སྒྲིག་བྱས་ཟིན་པ། Thur ཐུའུ་ཨར། Fri ཧྥུ་ལི་ཡ། Sat འཁོར་ལོ་བསྡད་པ། 解析json文件错误! JSON ལ་ཞིབ་འགྲེལ་སྐབས་ནོར་འཁྲུལ་བྱུང་བ། PipeWireCore Failed to create PipeWire context Failed to connect PipeWire context Failed to start main PipeWire loop ShowDesktop Show Desktop StartMenuButton UKUI Menu User Action Suspend or Hibernate Power Supply Lock Screen Switch User Log Out Hibernate Suspend Restart TimeShutdown Shut Down TaskViewButton Show Taskview ThumbnailView Close Restore Maximize Minimize Keep above Unset keep above UKUITaskButton Unpin from taskbar Pin to taskbar close UkccPlugin Panel /ukccpanel/Panel Always show icon in panel /ukccpanel/Always show icon in panel UkuiWebviewDialog Dialog frmLunarCalendarWidget Form 整体样式 红色风格 选中样式 矩形背景 圆形背景 角标背景 图片背景 星期格式 短名称 普通名称 长名称 英文名称 显示农历 main Use alternate configuration file. Configuration file ukui-panel set mode panel set option ukui-panel-4.0.0.4/plugin-calendar/calendarbutton.h0000664000175000017500000000412014576165151020604 0ustar fengfeng/* * Copyright (C) 2019 Tianjin KYLIN Information Technology Co., Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see #include #include #include #include #include #include #include #include #include #include #include #include "../panel/iukuipanelplugin.h" #include "../panel/common_fun/listengsettings.h" #include "calendarbuttontext.h" class CalendarButton : public QPushButton { Q_OBJECT public: CalendarButton(IUKUIPanelPlugin *plugin,QWidget* parent = 0); ~CalendarButton(); protected: void contextMenuEvent(QContextMenuEvent *event); void mousePressEvent(QMouseEvent *event); bool event(QEvent *event); private: void initTimeGsettings(); void initFontGsettings(); Q_SIGNALS: void pressTimeText(); void pressShowHideCalendar(); private Q_SLOTS: void setControlTime(); void updateBtnText(QString timerStr); void setSystemStyle(); void checkUpdateTimer(); private: IUKUIPanelPlugin * m_plugin; QWidget *m_parent; QGSettings *m_styleGsettings; ListenGsettings *m_listenGsettings; int m_panelSize; QGSettings *m_fontGsettings; QString m_systemFontSize; QString m_systemFont; QMenu *m_menuCalender; const qreal m_btnAlphaF = 0.13; //按钮背景透明度暂时使用UKUI3.1版本的透明度 QTimer *m_timer; }; #endif // CALENDARBUTTON_H ukui-panel-4.0.0.4/plugin-calendar/ukuiwebviewdialog.h0000644000175000017500000000364014560306203021315 0ustar fengfeng/* * Copyright (C) 2019 Tianjin KYLIN Information Technology Co., Ltd. * * This program or library is free software; you can redistribute it * and/or modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General * Public License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #ifndef UKUIWEBVIEWDIALOG_H #define UKUIWEBVIEWDIALOG_H #include #include #include "../panel/iukuipanelplugin.h" namespace Ui { class UkuiWebviewDialog; } enum UkuiWebviewDialogStatus{ST_HIDE,ST_SHOW}; enum CalendarShowMode { lunarSunday = 0,//show lunar and first day a week is sunday lunarMonday = 1,//show lunar and first day a week is monday solarSunday = 2,//show solar and first day a week is sunday solarMonday = 3,//show solar and first day a week is monday Unknown = 0xff }; class UkuiWebviewDialog : public QDialog { Q_OBJECT public: explicit UkuiWebviewDialog(QWidget *parent = nullptr); ~UkuiWebviewDialog(); void creatwebview(int _mode, int _panelSize); void showinfo(QString string); Q_SIGNALS: void deactivated(); private: Ui::UkuiWebviewDialog *ui; QSize mQsize; protected: // virtual bool event(QEvent *event); // bool nativeEvent(const QByteArray &eventType, void *message, long *result); bool eventFilter(QObject *, QEvent *); }; #endif // UKUIWEBVIEWDIALOG_H ukui-panel-4.0.0.4/CHANGELOG0000644000175000017500000000005614560306203013561 0ustar fengfengUse 'git log' for a detailed list of changes. ukui-panel-4.0.0.4/plugin-taskbar/0000755000175000017500000000000014564524546015311 5ustar fengfengukui-panel-4.0.0.4/plugin-taskbar/windowThumbnailView.cpp0000644000175000017500000003374514560306221022017 0ustar fengfeng/* * * * Copyright (C) 2023, KylinSoft Co., Ltd. * * * * This program is free software: you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation, either version 3 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program. If not, see . * * * * Authors: Zhang * */ #include "windowThumbnailView.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "../panel/common/common.h" #define NORMAL_WIDTH 272 #define NORMAL_HEIGHT 192 #define TITLE_HEIGHT 50 #define LIST_WIDTH 220 #define LIST_HEIGHT 40 #define LIST_SPACING 8 #define MARGIN 8 ThumbnailView::ThumbnailView(QWindow *parent) :QQuickView(parent) { qRegisterMetaType >("QVector"); setResizeMode(QQuickView::SizeViewToRootObject); setColor(Qt::transparent); setFlags(Qt::FramelessWindowHint | Qt::Popup); engine()->rootContext()->setContextProperty("wThumbnailView", this); engine()->rootContext()->setContextProperty("thumbnailModel", ThumbnailModel::instance()); setSource(QUrl("qrc:/qml/thumbnailView.qml")); connect(ThumbnailModel::instance(), &ThumbnailModel::updateWinIdList, this, &ThumbnailView::setViewModel); //预览图监听主题圆角 const QByteArray styleId(ORG_UKUI_STYLE); if (QGSettings::isSchemaInstalled(styleId)) { m_styleGsettings.reset(new QGSettings(styleId)); if (m_styleGsettings->keys().contains(WINDOW_RADIUS)) { m_windowRadius = m_styleGsettings->get(WINDOW_RADIUS).toInt(); connect(m_styleGsettings.get(), &QGSettings::changed, this, [=] (const QString &key) { if (key == WINDOW_RADIUS) { int radius = m_styleGsettings->get(WINDOW_RADIUS).toInt(); setRadius(radius); } }); } } } bool ThumbnailView::event(QEvent *event) { switch (event->type()) { case QEvent::Expose: { if (isExposed()) { kdk::WindowManager::setSkipTaskBar(this, true); kdk::WindowManager::setSkipSwitcher(this, true); kdk::WindowManager::setGeometry(this, QRect(m_viewPoint, QSize(width(), height()))); } break; } case QEvent::MouseButtonPress: { if (m_menuVisible) { setMenuVisible(false); return true; } break; } default: break; } return QQuickWindow::event(event); } bool ThumbnailView::viewVisible() const { return m_viewShow; } void ThumbnailView::setViewVisible(const bool &viewVisible) { m_viewShow = viewVisible; if (!m_menuVisible && !m_viewShow && !geometry().contains(QCursor::pos())) { KWindowEffects::enableBlurBehind(this->winId(), false, QRegion()); hide(); sendCloseSigToKWin(); m_viewModel.clear(); setViewModel(m_viewModel); //clear qml listview.model } else { updataWindowRegion(); KWindowEffects::enableBlurBehind(this->winId(), true, m_windowRegion); show(); } Q_EMIT viewVisibleChanged(viewVisible); } bool ThumbnailView::menuVisible() const { return m_menuVisible; } void ThumbnailView::setMenuVisible(const bool &menuVisible) { m_menuVisible = menuVisible; } QList ThumbnailView::viewModel() const { return m_viewModel; } bool ThumbnailView::isShowByList() { return m_isShowList; } void ThumbnailView::setShowByList(bool state) { m_isShowList = state; Q_EMIT showByListChanged(m_isShowList); } bool ThumbnailView::isShowHorizontalView() { return m_isHorizontal; } void ThumbnailView::setShowHorizontalView(bool state) { m_isHorizontal = state; Q_EMIT showHorizontalViewChanged(m_isHorizontal); } int ThumbnailView::radius() { return m_windowRadius; } void ThumbnailView::setRadius(int radius) { m_windowRadius = m_isShowList ? (radius < 8 ? radius : 8) : radius; Q_EMIT radiusChanged(m_windowRadius); } QSize ThumbnailView::windowSize(const int &index) { QVector windowsSize = calculateWindowsSize(m_viewModel); updateViewMode(); if (windowsSize.count() == 0) { return {QSize(1, 1)}; } return windowsSize[index]; } void ThumbnailView::updateMprisWindowSize(const int index, int width, int height) { m_mprisWinSize = m_winSizeVector; if (index >= 0 && index < m_mprisWinSize.size()) { m_mprisWinSize.replace(index, QSize(width, height)); m_mprisFlag = true; } } void ThumbnailView::sendSigToKwin(const QVariant &winId) { QDBusMessage message = QDBusMessage::createSignal("/", "com.ukui.kwin", "panelUpdateLayer"); QList args; quint32 intWid = winId.toUInt(); args.append(intWid); message.setArguments(args); QDBusConnection::sessionBus().send(message); } void ThumbnailView::sendCloseSigToKWin() { QDBusMessage message = QDBusMessage::createSignal("/", "com.ukui.kwin", "panelNotUpdateLayer"); QList args; bool flag = true; args.append(flag); message.setArguments(args); QDBusConnection::sessionBus().send(message); } QVector ThumbnailView::calculateWindowsSize(const QList &model) { m_totalLenth = 0; QVector windowsSize; for (const QVariant win : model) { KWindowInfo info(win.toUInt(), NET::WMGeometry | NET::WMName); int appwidth = info.geometry().width(); int appheight =info.geometry().height(); //不包含标题-TITLE_HEIGHT if (appwidth <= 0 || appheight <= 0) { continue; } int tmpWidth = 0; int tmpHeight = 0; if (isShowHorizontalView()) { tmpWidth = (float)appwidth / (float)appheight * (NORMAL_HEIGHT - TITLE_HEIGHT); if (tmpWidth > NORMAL_WIDTH) { tmpWidth = NORMAL_WIDTH; } tmpHeight = NORMAL_HEIGHT; m_totalLenth += tmpWidth; } else { tmpWidth = NORMAL_WIDTH; tmpHeight = (float)appheight / (float)appwidth * NORMAL_WIDTH + TITLE_HEIGHT; if (tmpHeight > NORMAL_HEIGHT) { tmpHeight = NORMAL_HEIGHT; } m_totalLenth += tmpHeight; } windowsSize.append(QSize(tmpWidth, tmpHeight)); } m_winSizeVector = windowsSize; return windowsSize; } void ThumbnailView::updateViewMode() { QRect rect = QApplication::primaryScreen()->geometry(); if (isShowHorizontalView()) { if (m_totalLenth > rect.width()) { //to do 窗口大小自适应 setShowByList(true); m_totalLenth = m_viewModel.count() * (LIST_HEIGHT + LIST_SPACING) - LIST_SPACING; m_totalLenth = qMin(m_totalLenth, rect.height() - MARGIN * 2 - m_panelSize); } else { setShowByList(false); } } else { if (m_totalLenth > rect.height()) { //to do 窗口大小自适应 setShowByList(true); m_totalLenth = m_viewModel.count() * (LIST_HEIGHT + LIST_SPACING) - LIST_SPACING; m_totalLenth = qMin(m_totalLenth, rect.height() - MARGIN * 2); } else { setShowByList(false); } } } void ThumbnailView::setViewModel(const QList &model) { m_viewModel.clear(); if (model.isEmpty()) { Q_EMIT viewModelChanged(m_viewModel); return; } m_viewModel = model; Q_EMIT viewModelChanged(m_viewModel); } void ThumbnailView::setViewPosition(PanelPositionType position, int panelSize, int x, int y) { if (viewModel().isEmpty()) { return; } m_panelSize = panelSize; calculateWindowsSize(m_viewModel); updateViewMode(); int margin = 8; QRect rect = QApplication::primaryScreen()->geometry(); int viewWidth = m_isShowList ? LIST_WIDTH : m_totalLenth; int viewHeight; switch (position) { case PanelPositionType::Top: x = x - (float)viewWidth / 2; //m_totalLenth == this->width() x = x < margin ? margin : x; y = y + margin + panelSize; break; case PanelPositionType::Bottom: viewHeight = m_isShowList ? m_totalLenth : NORMAL_HEIGHT; x = x - (float)viewWidth / 2; x = x < margin ? margin : x; y = rect.height() - margin - panelSize - viewHeight; break; case PanelPositionType::Left: x = x + margin + panelSize; y = y - (float)m_totalLenth / 2; //this->height()返回的不是view整体高度,所以用m_totalLenth y = y < margin ? margin : y; break; case PanelPositionType::Right: viewWidth = m_isShowList ? LIST_WIDTH : NORMAL_WIDTH; x = rect.width() - margin - panelSize - viewWidth; y = y - (float)m_totalLenth / 2; y = y < margin ? margin : y; break; default: break; } m_viewPoint = QPoint(x, y); } void ThumbnailView::updataWindowRegion() { m_windowRegion = QRegion(); if (viewModel().isEmpty()) { return; } if (isShowByList()) { int radius = 6; int nextP = 0; int spacing = 8; QRegion windowRegion; for (int index = 0; index < viewModel().count(); ++index) { QPainterPath path; path.addRoundedRect(1, 1, LIST_WIDTH - 2, LIST_HEIGHT - 2, radius, radius); QRegion childRegion = QRegion(path.toFillPolygon().toPolygon()); childRegion.translate(0, nextP); nextP = nextP + LIST_HEIGHT + spacing; windowRegion = windowRegion.united(childRegion); } m_windowRegion = windowRegion; } else { int radius = 11; int nextP = 0; int spacing = 8; QRegion windowRegion; QSize win; if (m_mprisFlag) { m_winSizeVector = m_mprisWinSize; m_mprisFlag = false; m_mprisWinSize.clear(); } for (int index = 0; index < m_winSizeVector.count(); ++index) { win = m_winSizeVector.at(index); QPainterPath path; path.addRoundedRect(1, 1, win.width() - 2, win.height() - 2, radius, radius); QRegion childRegion = QRegion(path.toFillPolygon().toPolygon()); if (isShowHorizontalView()) { childRegion.translate(nextP, 0); nextP = nextP + win.width() + spacing; } else { childRegion.translate(0, nextP); nextP = nextP + win.height() + spacing; } windowRegion = windowRegion.united(childRegion); } m_windowRegion = windowRegion; } } void ThumbnailView::openMenu(const QVariant &winId) { QMenu *menu = new QMenu(); menu->setAttribute(Qt::WA_DeleteOnClose); QList actionList; kdk::WindowInfo info = kdk::WindowManager::getwindowInfo(winId); //关闭窗口 QAction *closeAction = new QAction(QIcon::fromTheme("window-close-symbolic"), tr("Close"), menu); closeAction->setEnabled(true); connect(closeAction, &QAction::triggered, this, [=] { kdk::WindowManager::closeWindow(winId); ThumbnailModel::instance()->onWindowRemoved(winId); }); //恢复窗口 QAction *restoreAction = new QAction(QIcon::fromTheme("window-restore-symbolic"), tr("Restore")); restoreAction->setEnabled(info.isMaximized() || info.isMinimized()); connect(restoreAction, &QAction::triggered, this, [=] { KWindowSystem::clearState(winId.toUInt(), NET::Max); kdk::WindowManager::activateWindow(winId); }); //最大化窗口 QAction *maximizeAction = new QAction(QIcon::fromTheme("window-maximize-symbolic"), tr("Maximize")); maximizeAction->setEnabled(info.isMaximizable() && !info.isMaximized()); connect(maximizeAction, &QAction::triggered, this, [=] { //kdk::WindowManager::maximizeWindow(winId); //不生效 KWindowSystem::setState(winId.toUInt(), NET::Max); kdk::WindowManager::activateWindow(winId); }); //最小化窗口 QAction *minimizeAction = new QAction(QIcon::fromTheme("window-minimize-symbolic"), tr("Minimize")); minimizeAction->setEnabled(!info.isMinimized()); connect(minimizeAction, &QAction::triggered, this, [=] { kdk::WindowManager::minimizeWindow(winId); }); //置顶窗口 QAction *keepAboveAction = new QAction(QIcon::fromTheme("ukui-fixed-symbolic"), tr("Keep above")); keepAboveAction->setEnabled(!info.isKeepAbove()); connect(keepAboveAction, &QAction::triggered, this, [=] { if (!info.isActive()) { kdk::WindowManager::activateWindow(winId); } kdk::WindowManager::keepWindowAbove(winId); }); //取消置顶窗口 QAction *UnsetKeepAboveAction = new QAction(QIcon::fromTheme("ukui-unfixed-symbolic"), tr("Unset keep above")); UnsetKeepAboveAction->setEnabled(info.isKeepAbove()); connect(UnsetKeepAboveAction, &QAction::triggered, this, [=] { KWindowSystem::clearState(winId.toUInt(), NET::KeepAbove); }); actionList << closeAction << restoreAction << maximizeAction << minimizeAction << keepAboveAction << UnsetKeepAboveAction; menu->addActions(actionList); menu->popup(QCursor::pos()); setMenuVisible(true); connect(menu, &QMenu::aboutToHide, this, [=]() { menu->close(); setMenuVisible(false); setViewVisible(geometry().contains(QCursor::pos())); }); } ukui-panel-4.0.0.4/plugin-taskbar/ukuitaskgroup.cpp0000644000175000017500000004467614560306221020733 0ustar fengfeng/* * * * Copyright (C) 2023, KylinSoft Co., Ltd. * * * * This program is free software: you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation, either version 3 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program. If not, see . * * * * Authors: Nicole * */ #include "ukuitaskgroup.h" #include "../panel/common/common.h" #include #include #include #define SMALL_PANEL_SIZE 46 #define MIDDLE_PANEL_SIZE 70 #define LARGE_PANEL_SIZE 92 UKUITaskGroup::UKUITaskGroup(const QString &groupName, const QString & desktopFileName, QWidget *parent) : QWidget(parent), m_timer(new QTimer(this)), m_groupName(groupName), m_desktopFileName(desktopFileName), m_parent(parent) { this->setObjectName("UKUITaskGroup-" + desktopFileName); m_layout.reset(new UKUi::GridLayout(this)); setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); realign(); QDBusConnection::sessionBus().connect(QString("org.ukui.panel.daemon"), QString("/panel/cornermark"), "org.ukui.panel.daemon", "appsCornerMarkChanged", this, SLOT(appsCornerMarkChangedSlot(QString, int))); const QByteArray id(PANEL_SETTINGS); if (QGSettings::isSchemaInstalled(id)) { m_gsettings.reset(new QGSettings(id)); m_gsettingKeys = m_gsettings->keys(); if (m_gsettingKeys.contains(GROUPING_ENABLE)) m_isGrouping = m_gsettings->get(GROUPING_ENABLE).toBool(); if (m_gsettingKeys.contains(PANEL_POSITION_KEY)) m_panelPosition = m_gsettings->get(PANEL_POSITION_KEY).toInt(); if (m_gsettingKeys.contains(PANEL_SIZE_KEY)) m_panelSize = m_gsettings->get(PANEL_SIZE_KEY).toInt(); if (m_gsettingKeys.contains(TASKBAR_BTN_SPAN)) m_buttonsSpan = m_gsettings->get((TASKBAR_BTN_SPAN)).toInt(); connect(m_gsettings.get(), &QGSettings::changed, this, [&] (const QString &key) { if (key == TASKBAR_BTN_SPAN) { m_buttonsSpan = m_gsettings->get((TASKBAR_BTN_SPAN)).toInt(); changeButtonsSize(); } if (key == GROUPING_ENABLE) { m_isGrouping = m_gsettings->get(GROUPING_ENABLE).toBool(); onExpandModeChanged(m_isGrouping); } if (key == PANEL_POSITION_KEY) { m_panelPosition = m_gsettings->get(PANEL_POSITION_KEY).toInt(); for (WindowId window : qAsConst(m_currentDesktopWindowIdList)) { setButtonsStyle(m_buttonsMap.value(window)); } changeButtonsSize(); } if (key == PANEL_SIZE_KEY) { m_panelSize = m_gsettings->get(PANEL_SIZE_KEY).toInt(); changeButtonsSize(); setCornerMarkSize(); } }); } m_timer->setTimerType(Qt::PreciseTimer); connect(m_timer, &QTimer::timeout, this, &UKUITaskGroup::timeToEmit); } UKUITaskGroup::~UKUITaskGroup() { if (m_gsettings) { m_gsettings.reset(nullptr); } } QString UKUITaskGroup::getGroupName() { return m_groupName; } QString UKUITaskGroup::getDesktopFileName() { return m_desktopFileName; } void UKUITaskGroup::setDesktopFileName(QString desktopFileName) { m_desktopFileName = desktopFileName; } QMap > UKUITaskGroup::getButtonsInfo() { return m_buttonsMap; } bool UKUITaskGroup::isPinned() { return m_isPinned; } void UKUITaskGroup::addWindow(WindowId window) { if (m_groupName.isEmpty()) { m_groupName = kdk::WindowManager::getWindowGroup(window); } if (m_buttonsMap.contains(window)) { return; } std::shared_ptr btn(new UKUITaskButton(window, "")); connect(btn.get(), &UKUITaskButton::pinToTaskbar, this, [&](){ emit pinToTaskbarSignal(m_desktopFileName);}); connect(btn.get(), &UKUITaskButton::unPinFromTaskbar, this, [&](){ emit unpinFromTaskbarSignal(m_desktopFileName);}); connect(btn.get(), &UKUITaskButton::closeGroup, this, &UKUITaskGroup::closeAllWindowInGroup); connect(btn.get(), &UKUITaskButton::enterButton, this, [=](QList winIdList, QString groupName, int x, int y){ emit enterGroup(winIdList, groupName, x, y); }); connect(btn.get(), &UKUITaskButton::leaveButton, this, [=](QList winIdList, QString groupName, int x, int y){ emit leaveGroup(groupName); }); btn->setDesktopFileName(m_desktopFileName); qDebug() << btn->desktopFileName(); btn->onButtonsStatusChanged(m_isPinned); m_buttonsMap.insert(window, btn); if (btn->isOnCurrentDesktop()) { m_currentDesktopWindowIdList.append(window); this->setVisible(true); } m_layout->addWidget(btn.get()); realign(); changeButtonsCount(); refreshButtonsVisible(); setButtonsStyle(btn); changeButtonsSize(); } void UKUITaskGroup::removeWindow(WindowId window) { if (m_buttonsMap.keys().contains(window)) { std::shared_ptr btn = m_buttonsMap.value(window); m_layout->removeWidget(btn.get()); m_buttonsMap.remove(window); if (m_currentDesktopWindowIdList.contains(window)) m_currentDesktopWindowIdList.removeAll(window); btn.reset(); } changeButtonsCount(); calculGroupSize(); //固定且所有打开窗口已关闭,则显示出固定按钮 if (isOnlyPinned()) { m_buttonsMap.begin().value()->setVisible(true); } else if (m_currentDesktopWindowIdList.isEmpty()) { this->setVisible(false); } } void UKUITaskGroup::changeButtonsCount() { for (WindowId window : qAsConst(m_currentDesktopWindowIdList)) { m_buttonsMap.value(window)->onButtonsCountChanged(m_currentDesktopWindowIdList.size()); } if (isOnlyPinned()) { m_buttonsMap.begin().value()->onButtonsCountChanged(0); } } bool UKUITaskGroup::isHorizontalPanel() { return m_panelPosition == PanelPosition::Bottom || m_panelPosition == PanelPosition::Top; } bool UKUITaskGroup::isOnlyPinned() { return m_isPinned && m_currentDesktopWindowIdList.isEmpty(); } void UKUITaskGroup::refreshButtonsVisible() { //只固定无打开,保持不变; if (isOnlyPinned()) { return; } if (m_isGrouping) { //合并且打开,仅显示当前桌面的Leader Window; for (QMap>::const_iterator i = m_buttonsMap.begin(); i != m_buttonsMap.end(); i++) { std::shared_ptr btn = i.value(); btn->setVisible(/*btn->isLeaderWindow() &&*/ btn->isOnCurrentDesktop()); } } else { //展开固定且打开,隐藏固定按钮,其余全显示 if (m_isPinned) { m_buttonsMap.begin().value()->setVisible(false); } for (WindowId window : qAsConst(m_currentDesktopWindowIdList)) { m_buttonsMap.value(window)->setVisible(true); } } } void UKUITaskGroup::setButtonsStyle(std::shared_ptr btn) { if (m_isGrouping) { btn->setToolButtonStyle(Qt::ToolButtonIconOnly); } else { btn->setVisible(btn->isOnCurrentDesktop()); if (isHorizontalPanel()) { btn->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); btn->updateCaption(); } else { btn->setToolButtonStyle(Qt::ToolButtonIconOnly); } } btn->repaint(); } void UKUITaskGroup::pinToTaskbar(QString desktopFileName) { if (m_isPinned) { qDebug() << "This App has pinned on taskbar!"; return; } std::shared_ptr pinBtn(new UKUITaskButton(0, desktopFileName)); connect(pinBtn.get(), &UKUITaskButton::pinToTaskbar, this, [&](){ emit pinToTaskbarSignal(m_desktopFileName);}); connect(pinBtn.get(), &UKUITaskButton::unPinFromTaskbar, this, [&](){ emit unpinFromTaskbarSignal(m_desktopFileName);}); connect(pinBtn.get(), &UKUITaskButton::clicked, this, [&](){ if (pinBtn) pinBtn->execAction(); }); //固定按钮始终存储在QMap中的第一位 m_buttonsMap.insert(m_buttonsMap.begin(), 0, pinBtn); m_layout->addWidget(pinBtn.get()); pinBtn->setToolButtonStyle(Qt::ToolButtonIconOnly); pinBtn->setVisible(m_currentDesktopWindowIdList.size() == 0); pinBtn->quickLaunchAction(); m_isPinned = true; changeButtonsStatus(); onCurrentDesktopChanged(); } void UKUITaskGroup::unpinFromTaskbar(QString desktopFileName) { if (!m_isPinned) { qDebug() << "This App has NOT pinned!"; return; } if (m_buttonsMap.begin().value()->desktopFileName() == desktopFileName && m_buttonsMap.keys().contains(0)) { std::shared_ptr pinBtn = m_buttonsMap.value(0); m_layout->removeWidget(pinBtn.get()); m_buttonsMap.remove(0); m_isPinned = false; } changeButtonsStatus(); onCurrentDesktopChanged(); } void UKUITaskGroup::closeAllWindowInGroup() { for (WindowId window : qAsConst(m_currentDesktopWindowIdList)) { kdk::WindowManager::closeWindow(window); } } void UKUITaskGroup::appsCornerMarkChangedSlot(QString arg, int value) { //将软件商店角标数据信息写入ini配置文件,便于重启后立即显示 QString filename = QDir::homePath() + "/.config/ukui/panel.conf"; QSettings *cornerSettings = new QSettings(filename, QSettings::IniFormat); cornerSettings->setIniCodec("utf-8"); if (arg.contains("kylin-software-center")) { qDebug() << "[Panel] write kylin-software-center corner mark data"; cornerSettings->beginGroup("CornerMark"); cornerSettings->setValue("desktop", arg); cornerSettings->setValue("value", value); cornerSettings->endGroup(); } cornerSettings->sync(); if(m_desktopFileName == arg) { if(!m_isHaveCornerMark) { m_badge = new KBadge(this); } m_badge->setColor(Qt::red); m_badge->setValue(value); m_badge->setVisible(true); m_isHaveCornerMark = true; setCornerMarkSize(); } } void UKUITaskGroup::setCornerMarkSize() { if (!m_isHaveCornerMark || m_badge == nullptr) { return; } if(m_panelSize <= SMALL_PANEL_SIZE) { m_badge->setFontSize(8); m_badge->repaint(); m_badge->move((m_panelSize - m_badge->width() - 4), 4); } else if (SMALL_PANEL_SIZE < m_panelSize && m_panelSize <= MIDDLE_PANEL_SIZE) { m_badge->setFontSize(12); m_badge->repaint(); m_badge->move((m_panelSize - m_badge->width() - 4), 4); } else if (MIDDLE_PANEL_SIZE < m_panelSize && m_panelSize <= LARGE_PANEL_SIZE) { m_badge->setFontSize(16); m_badge->repaint(); m_badge->move((m_panelSize - m_badge->width() - 4), 4); } m_badge->raise(); } void UKUITaskGroup::changeButtonsStatus() { for (QMap>::const_iterator i = m_buttonsMap.begin(); i != m_buttonsMap.end(); i++) { std::shared_ptr btn = i.value(); btn->onButtonsStatusChanged(m_isPinned); } } void UKUITaskGroup::onExpandModeChanged(bool isGrouping) { calculGroupSize(); realign(); refreshButtonsVisible(); for (WindowId window : qAsConst(m_currentDesktopWindowIdList)) { setButtonsStyle(m_buttonsMap.value(window)); } changeButtonsSize(); } void UKUITaskGroup::calculGroupSize() { int openWindowsCount = m_currentDesktopWindowIdList.size(); if (m_isGrouping) { this->setFixedSize(m_panelSize, m_panelSize); } else { if (isHorizontalPanel()) { if (m_isPinned && openWindowsCount == 0) { this->setFixedSize(m_panelSize, m_panelSize); } else { this->setFixedSize(m_panelSize * m_buttonsSpan * openWindowsCount, m_panelSize); } } else { if (m_isPinned && openWindowsCount == 0) { this->setFixedSize(m_panelSize, m_panelSize); } else { this->setFixedSize(m_panelSize, m_panelSize * openWindowsCount); } } } } void UKUITaskGroup::changeButtonsSize() { if (m_isPinned) { m_buttonsMap.begin().value()->updateIcon(); m_buttonsMap.begin().value()->setFixedSize(m_panelSize, m_panelSize); } for (WindowId window : qAsConst(m_currentDesktopWindowIdList)) { m_buttonsMap.value(window)->updateIcon(); if (m_isGrouping) { m_buttonsMap.value(window)->setFixedSize(m_panelSize, m_panelSize); } else { if (isHorizontalPanel()) { m_buttonsMap.value(window)->setFixedSize(m_panelSize * m_buttonsSpan, m_panelSize); m_buttonsMap.value(window)->updateCaption(); } else { m_buttonsMap.value(window)->setFixedSize(m_panelSize, m_panelSize); } } } int size = m_layout->count(); for (int j = 0; j < size; ++j) { UKUITaskButton *btn = qobject_cast(m_layout->itemAt(j)->widget()); } } void UKUITaskGroup::realign() { calculGroupSize(); QSize btnSize = QSize(m_panelSize, m_panelSize); if (isHorizontalPanel()) { m_layout->setRowCount(1); m_layout->setColumnCount(0); } else { m_layout->setRowCount(0); m_layout->setColumnCount(1); } m_layout->setCellMinimumSize(btnSize); if (m_isGrouping) { m_layout->setCellMaximumSize(btnSize); } else { m_layout->setCellMaximumSize(btnSize * m_buttonsSpan); } for (WindowId window : qAsConst(m_currentDesktopWindowIdList)) { m_buttonsMap.value(window)->refreshIconGeometry(); } } bool UKUITaskGroup::isHaveCornerMark() { return m_isHaveCornerMark; } void UKUITaskGroup::setHaveCornerMark(bool isHave) { m_isHaveCornerMark = isHave; } KBadge *UKUITaskGroup::getKbadge() { return m_badge; } void UKUITaskGroup::newKbage() { if (m_badge) { return; } m_badge = new KBadge(this); } void UKUITaskGroup::enterEvent(QEvent *e) { m_taskGroupEvent = ENTEREVENT; if (m_currentDesktopWindowIdList.isEmpty() && !m_desktopFileName.isEmpty()) { XdgDesktopFile xdg; if (xdg.load(m_desktopFileName)) { QString nameStr(xdg.localizedValue("Name").toString()); this->setToolTip(nameStr); } } if (m_isGrouping && !m_currentDesktopWindowIdList.isEmpty()) { qDebug() << "all windows' id in this group is :" << m_currentDesktopWindowIdList; this->setToolTip(""); m_event = e; if (m_timer->isActive()) { m_timer->stop(); } m_timer->start(400); } else { e->setAccepted(false); return; } } void UKUITaskGroup::leaveEvent(QEvent *e) { m_taskGroupEvent = LEAVEEVENT; if (m_isGrouping && !m_currentDesktopWindowIdList.isEmpty()) { m_event = e; if (m_timer->isActive()) { m_timer->stop(); } m_timer->start(400); } else { e->setAccepted(false); return; } } void UKUITaskGroup::timeToEmit() { if (m_timer->isActive()) { m_timer->stop(); } QPoint abs = mapToGlobal(QPoint(0, 0)); switch (m_taskGroupEvent) { case ENTEREVENT: if (isHorizontalPanel()) { int groupCenterPositionX = abs.x() + this->width() / 2; emit enterGroup(m_currentDesktopWindowIdList, m_groupName, groupCenterPositionX, 0); } else { int groupCenterPositionY = abs.y() + this->height() / 2; emit enterGroup(m_currentDesktopWindowIdList, m_groupName, 0, groupCenterPositionY); } QWidget::enterEvent(m_event); break; case LEAVEEVENT: if (isHorizontalPanel()) { int groupCenterPositionX = abs.x() + this->width() / 2; emit leaveGroup(m_groupName); } else { int groupCenterPositionY = abs.y() + this->height() / 2; emit leaveGroup(m_groupName); } QWidget::leaveEvent(m_event); break; case OTHEREVENT: default: break; } } void UKUITaskGroup::onCurrentDesktopChanged() { qDebug() << __func__ << kdk::WindowManager::currentDesktop(); m_currentDesktopWindowIdList.clear(); for (QMap>::const_iterator i = m_buttonsMap.begin(); i != m_buttonsMap.end(); i++) { if (i.value()->isOnCurrentDesktop()) { m_currentDesktopWindowIdList.append(i.key()); i.value()->setVisible(true); } else { i.value()->setVisible(false); } } //非固定,当前桌面未打开,但是其他桌面有打开,需要隐藏当前桌面的group if (m_currentDesktopWindowIdList.isEmpty() && !m_isPinned) { this->setVisible(false); } //固定,当前桌面未打开,但是其他桌面有打开,需要只显示固定按钮 if (m_currentDesktopWindowIdList.isEmpty() && m_isPinned) { this->setVisible(true); for (QMap>::const_iterator i = m_buttonsMap.begin(); i != m_buttonsMap.end(); i++) { if (i.key() == 0) { i.value()->setVisible(true); } else { i.value()->setVisible(false); } } } //固定,当前桌面有打开,需要隐藏固定按钮,只显示打开的按钮和样式 if (!m_currentDesktopWindowIdList.isEmpty() && m_isPinned) { this->setVisible(true); m_buttonsMap.value(0)->setVisible(false); } //非固定,当前桌面打开,需要显示出group,否则button无法显示 if(!m_currentDesktopWindowIdList.isEmpty() && !m_isPinned) { this->setVisible(true); } changeButtonsSize(); setCornerMarkSize(); for (WindowId window : qAsConst(m_currentDesktopWindowIdList)) { setButtonsStyle(m_buttonsMap.value(window)); } realign(); } void UKUITaskGroup::mousePressEvent(QMouseEvent *event) { event->setAccepted(false); } ukui-panel-4.0.0.4/plugin-taskbar/qml/0000755000175000017500000000000014560306221016062 5ustar fengfengukui-panel-4.0.0.4/plugin-taskbar/qml/StyleScrollBar.qml0000644000175000017500000000262314560306203021504 0ustar fengfeng/* * * * Copyright (C) 2023, KylinSoft Co., Ltd. * * * * This program is free software: you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation, either version 3 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program. If not, see . * * * */ import QtQuick 2.12 import QtQuick.Controls 2.5 import org.ukui.panel.items 1.0 ScrollBar { id: control property bool visual: true padding: (hovered || pressed) ? 3 : 5 hoverEnabled: true Behavior on padding { NumberAnimation { duration: 200 easing.type: Easing.InOutQuad } } contentItem: StyleBackground { radius: width / 2 useStyleTransparency: false paletteRole: PaletteRole.Button //alpha: control.pressed ? 0.28 : control.hovered ? 0.18 : 0.10 opacity: ((control.policy === ScrollBar.AlwaysOn || control.size < 1.0 ) && control.visual) ? 1.0 : 0.0 } } ukui-panel-4.0.0.4/plugin-taskbar/qml/thumbnailView.qml0000644000175000017500000002537614560306221021430 0ustar fengfeng/* * * * Copyright (C) 2023, KylinSoft Co., Ltd. * * * * This program is free software: you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation, either version 3 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program. If not, see . * * * * Authors: Zhang * */ import QtQuick 2.12 import QtQuick.Layouts 1.12 import QtQml 2.12 import QtQuick.Window 2.12 import QtQuick.Controls 2.5 import org.ukui.panel.items 1.0 import org.ukui.windowThumbnail 1.0 Rectangle { id: root anchors.centerIn: parent radius: wThumbnailView.radius width: listview.width height: listview.height color: "transparent" MouseArea { id: rootMouseArea anchors.fill: parent hoverEnabled: true onEntered: { wThumbnailView.viewVisible = true; } onExited: { wThumbnailView.viewVisible = false; } Component { id: listPage StyleBackground { id: windowView readonly property bool isList: wThumbnailView.isShowByList useStyleTransparency: true paletteRole: PaletteRole.Window alpha: 1.0; borderColor: PaletteRole.BrightText borderAlpha: 0.15 border.width: 1.0; width: isList ? 220 : wThumbnailView.windowSize(index).width height: isList ? 40 : wThumbnailView.windowSize(index).height radius: wThumbnailView.radius Component.onCompleted: { if (isList) { windowView.width = 220; } else { if (windowThumbnail.thumbnailMprisModel.count > 0) { windowView.width = Math.max(windowView.width, 148); windowView.height = Math.max(windowView.height, 192); wThumbnailView.updateMprisWindowSize(index, windowView.width, windowView.height); } } } Timer { id: timer interval : 400 repeat : false onTriggered: { if (windowViewMouseArea.containsMouse) { timer.stop(); wThumbnailView.sendSigToKwin(modelData); } } } MouseArea { id: windowViewMouseArea anchors.fill: parent hoverEnabled: true acceptedButtons: Qt.LeftButton | Qt.RightButton onEntered: { closeButton.visible = true; //高亮显示 windowView.paletteRole = PaletteRole.Button timer.restart(); } onExited: { closeButton.visible = false; //非高亮显示 windowView.paletteRole = PaletteRole.Window } onClicked: { windowView.paletteRole = PaletteRole.Button; if (mouse.button === Qt.RightButton) { wThumbnailView.openMenu(modelData); } else { thumbnailModel.activateWindow(modelData); wThumbnailView.viewVisible = false; } windowView.paletteRole = PaletteRole.Window closeButton.visible = false; } ColumnLayout { anchors.fill: parent anchors.leftMargin: 8 anchors.rightMargin: 8 anchors.topMargin: 8 anchors.bottomMargin: 8 spacing: 8 RowLayout { Layout.fillWidth: true Layout.preferredHeight: 32 Layout.maximumHeight: 32 ThemeIcon { Layout.preferredHeight: windowView.isList ? 16 : 24 Layout.preferredWidth: windowView.isList ? 16 : 24 source: thumbnailModel.getWindowIcon(modelData) } StyleText { id: title Layout.fillHeight: true Layout.fillWidth: true text: thumbnailModel.getWindowTitle(modelData) verticalAlignment: Text.AlignVCenter elide: Text.ElideRight wrapMode: Text.Wrap maximumLineCount: 1 StyleToolTip.text: thumbnailModel.getWindowTitle(modelData) MouseArea { anchors.fill: parent hoverEnabled: true propagateComposedEvents: true onEntered: { title.StyleToolTip.show(title.mapToGlobal(mouseX, mouseY)); } onExited: { title.StyleToolTip.hide(); } } } //关闭按钮 Rectangle { id: closeButton Layout.preferredWidth: 18 Layout.preferredHeight: 18 radius: wThumbnailView.radius < 6 ? wThumbnailView.radius : 6 Layout.alignment: Qt.AlignRight visible: false color: closeBtnArea.containsPress ? "firebrick" : (closeBtnArea.containsMouse ? "red" : "transparent") ThemeIcon { id: icon width: 16 height: width anchors.centerIn: parent highLight: false source: "window-close-symbolic" } MouseArea { id: closeBtnArea anchors.fill: parent hoverEnabled: true propagateComposedEvents: true onEntered: { icon.highLight = true; } onExited: { icon.highLight = false; } onClicked: { icon.highLight = true; thumbnailModel.closeWindow(modelData); } } } } //RowLayout WindowThumbnail { id: windowThumbnail Layout.fillWidth: true Layout.fillHeight: true winId: windowView.isList ? "" : Number.parseInt(modelData) visible: !windowView.isList } } //ColumnLayout } } } //Component ListView { id:listview anchors.left: parent.left width: childrenRect.width height: childrenRect.height interactive: false orientation: ListView.Horizontal spacing: 8 delegate: listPage model: wThumbnailView.viewModel boundsBehavior: Flickable.StopAtBounds ScrollBar.vertical: listViewScrollBar onChildrenRectChanged: { wThumbnailView.width = root.width } onModelChanged: { wThumbnailView.calculateWindowsSize(model); wThumbnailView.updateViewMode(); listview.state = wThumbnailView.isShowByList ? "VerticalList" : (wThumbnailView. isShowHorizontalView ? "HorizontalPage": "VerticalPage") } states: [ State { name: "HorizontalPage" PropertyChanges { target: listview; orientation: ListView.Horizontal; interactive: false; width: childrenRect.width; height: 192 } PropertyChanges { target: root; width: listview.width } }, State { name: "VerticalPage" PropertyChanges { target: listview; orientation: ListView.Vertical; interactive: false; width: 272; height: childrenRect.height } PropertyChanges { target: root; width: listview.width } }, State { name: "VerticalList" PropertyChanges { target: listview; orientation: ListView.Vertical; interactive: true; width: 220; height: Math.min(childrenRect.height, Screen.desktopAvailableHeight - 16) } PropertyChanges { target: root; width: 220 + 14 } } ] } StyleScrollBar { id: listViewScrollBar anchors.left: listview.right anchors.top: listview.top height: listview.height width: 14 visual: rootMouseArea.containsMouse } } } ukui-panel-4.0.0.4/plugin-taskbar/windowThumbnailView.h0000644000175000017500000000732514560306203021457 0ustar fengfeng/* * * * Copyright (C) 2023, KylinSoft Co., Ltd. * * * * This program is free software: you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation, either version 3 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program. If not, see . * * * * Authors: Zhang * */ #ifndef THUMBNAILVIEW_H #define THUMBNAILVIEW_H #include #include #include #include #include "windowThumbnailModel.h" enum PanelPositionType { Bottom = 0, //!< The bottom side of the screen. Top, //!< The top side of the screen. Left, //!< The left side of the screen. Right //!< The right side of the screen. }; class ThumbnailView : public QQuickView { Q_OBJECT Q_PROPERTY(bool viewVisible READ viewVisible WRITE setViewVisible NOTIFY viewVisibleChanged) Q_PROPERTY(bool menuVisible READ menuVisible WRITE setMenuVisible NOTIFY menuVisibleChanged) Q_PROPERTY(QList viewModel READ viewModel WRITE setViewModel NOTIFY viewModelChanged) Q_PROPERTY(bool isShowByList READ isShowByList WRITE setShowByList NOTIFY showByListChanged) Q_PROPERTY(bool isShowHorizontalView READ isShowHorizontalView WRITE setShowHorizontalView NOTIFY showHorizontalViewChanged) Q_PROPERTY(int radius READ radius WRITE setRadius NOTIFY radiusChanged) public: explicit ThumbnailView(QWindow *parent = nullptr); ~ThumbnailView() = default; bool viewVisible() const; void setViewVisible(const bool &viewVisible); bool menuVisible() const; void setMenuVisible(const bool &menuVisible); QList viewModel() const; bool isShowByList(); void setShowByList(bool state); bool isShowHorizontalView(); void setShowHorizontalView(bool state); int radius(); void setRadius(int radius); void setViewPosition(PanelPositionType position, int panelSize, int x, int y); void updataWindowRegion(); Q_INVOKABLE QVector calculateWindowsSize(const QList &model); Q_INVOKABLE void updateViewMode(); Q_INVOKABLE QSize windowSize(const int &index); Q_INVOKABLE void updateMprisWindowSize(const int index, int width, int height); Q_INVOKABLE void sendSigToKwin(const QVariant &winId); Q_INVOKABLE void sendCloseSigToKWin(); /** * @brief 右键菜单 * @param winId */ Q_INVOKABLE void openMenu(const QVariant &winId); protected: bool event(QEvent *event); public Q_SLOTS: void setViewModel(const QList &model); private: bool m_viewShow = false; bool m_menuVisible = false; QList m_viewModel; bool m_isShowList = false; bool m_isHorizontal = true; int m_windowRadius = 12; int m_totalLenth; int m_panelSize = 24; QPoint m_viewPoint; QVector m_winSizeVector; QRegion m_windowRegion; QVector m_mprisWinSize; bool m_mprisFlag = false; std::unique_ptr m_styleGsettings; Q_SIGNALS: void viewVisibleChanged(bool viewVisible); void menuVisibleChanged(bool m_menuVisible); void viewModelChanged(QList viewModel); void showByListChanged(bool state); void showHorizontalViewChanged(bool state); void radiusChanged(int radius); }; #endif // THUMBNAILVIEW_H ukui-panel-4.0.0.4/plugin-taskbar/windowThumbnailManager.h0000644000175000017500000000310514560306203022107 0ustar fengfeng/* * * * Copyright (C) 2023, KylinSoft Co., Ltd. * * * * This program is free software: you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation, either version 3 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program. If not, see . * * * * Authors: Nicole * * Zhang * */ #ifndef WINDOWTHUMBNAILMANAGER_H #define WINDOWTHUMBNAILMANAGER_H #include "ukuitaskgroup.h" #include #include "windowThumbnailView.h" using namespace kdk; class WindowThumbnailManager : public QObject { Q_OBJECT public: WindowThumbnailManager(QObject *parent = nullptr); ~WindowThumbnailManager() override; void show(QList winIdList, QString groupName, int x, int y); void hide(QString groupName); private: bool isHorizontalPanel(); QList m_winIdList; QString m_groupName; ThumbnailView *m_view; PanelPositionType m_panelPosition = PanelPositionType::Bottom; int m_panelSize = 24; int m_x = 0; int m_y = 0; }; #endif //WINDOWTHUMBNAILMANAGER_H ukui-panel-4.0.0.4/plugin-taskbar/windowThumbnailManager.cpp0000644000175000017500000000523614560306221022451 0ustar fengfeng/* * * * Copyright (C) 2023, KylinSoft Co., Ltd. * * * * This program is free software: you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation, either version 3 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program. If not, see . * * * * Authors: Nicole * * Zhang * */ #include "windowThumbnailManager.h" #include "../panel/iukuipanel.h" #include "../panel/common/common.h" #include #include WindowThumbnailManager::WindowThumbnailManager(QObject *parent) { m_view = new ThumbnailView(); connect(m_view, &ThumbnailView::viewModelChanged, this, [=]() { m_view->setViewPosition(m_panelPosition, m_panelSize, m_x, m_y); }); connect(kdk::WindowManager::self(), &WindowManager::currentDesktopChanged, this, [&](){ hide(""); }); } WindowThumbnailManager::~WindowThumbnailManager() { if (m_view != nullptr) { delete m_view; m_view = nullptr; } } void WindowThumbnailManager::show(QList winIdList, QString groupName, int x, int y) { m_winIdList = winIdList; m_groupName = groupName; m_x = x; m_y = y; //get position and size of panel const QByteArray id(PANEL_SETTINGS); if (QGSettings::isSchemaInstalled(id)) { QGSettings *gsettings = new QGSettings(id, QByteArray(), this); m_panelPosition = (PanelPositionType)gsettings->get(PANEL_POSITION_KEY).toInt(); m_panelSize = gsettings->get(PANEL_SIZE_KEY).toInt(); } ThumbnailModel::instance()->clear(); ThumbnailModel::instance()->setModelData(winIdList, groupName); m_view->setShowHorizontalView(isHorizontalPanel()); m_view->setViewModel(winIdList); m_view->setViewPosition(m_panelPosition, m_panelSize, m_x, m_y); m_view->requestActivate(); m_view->setViewVisible(true); } void WindowThumbnailManager::hide(QString groupName) { Q_UNUSED(groupName); if (!m_view->geometry().contains(QCursor::pos())) { m_view->setViewVisible(false); } } bool WindowThumbnailManager::isHorizontalPanel() { return m_panelPosition == PanelPositionType::Bottom || m_panelPosition == PanelPositionType::Top; } ukui-panel-4.0.0.4/plugin-taskbar/ukuitaskbar.cpp0000644000175000017500000007117014560306221020330 0ustar fengfeng/* * * * Copyright (C) 2023, KylinSoft Co., Ltd. * * * * This program is free software: you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation, either version 3 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program. If not, see . * * * * Authors: Nicole * */ #include "ukuitaskbar.h" #include "../panel/common/common.h" #include #include #include #include #include UKUITaskBar::UKUITaskBar(IUKUIPanelPlugin *plugin, QWidget *parent) : QScrollArea(parent), m_plugin(plugin) { setAcceptDrops(true); m_contextWidget.reset(new QWidget(this)); #ifdef QT_DEBUG m_contextWidget->setAutoFillBackground(true); m_contextWidget->setBackgroundRole(QPalette::Dark); #else m_contextWidget->setAttribute(Qt::WA_TranslucentBackground); #endif this->setWidget(m_contextWidget.get()); this->horizontalScrollBar()->setVisible(false); this->verticalScrollBar()->setVisible(false); this->setFrameShape(QFrame::NoFrame); this->setWidgetResizable(true); this->setAcceptDrops(true); //设置背景透明 QPalette pal = this->palette(); pal.setBrush(QPalette::Window, QColor(Qt::transparent)); this->setPalette(pal); m_layout.reset(new UKUi::GridLayout()); m_layout->setMargin(0); m_layout->setStretch(UKUi::GridLayout::StretchHorizontal | UKUi::GridLayout::StretchVertical); m_layout->setEnabled(true); m_contextWidget->setLayout(m_layout.get()); const QByteArray id(PANEL_SETTINGS); if (QGSettings::isSchemaInstalled(id)) { m_gsettings.reset(new QGSettings(id)); m_gsettingKeys = m_gsettings->keys(); if (m_gsettingKeys.contains(GROUPING_ENABLE)) m_isGrouping = m_gsettings->get(GROUPING_ENABLE).toBool(); if (m_gsettingKeys.contains(TASKBAR_BTN_SPAN)) m_buttonSpan = m_gsettings->get((TASKBAR_BTN_SPAN)).toInt(); connect(m_gsettings.get(), &QGSettings::changed, this, [&] (const QString &key) { if (key == TASKBAR_BTN_SPAN) { m_buttonSpan = m_gsettings->get((TASKBAR_BTN_SPAN)).toInt(); this->realign(); } if (key == GROUPING_ENABLE) { m_isGrouping = m_gsettings->get(GROUPING_ENABLE).toBool(); this->realign(); } }); } initQuickLaunchApps(); //应用黑白名单功能 securityControlWatcher(); initExistWindows(); connect(kdk::WindowManager::self(), &WindowManager::windowAdded, this, &UKUITaskBar::onWindowAdded); connect(kdk::WindowManager::self(), &WindowManager::windowRemoved, this, &UKUITaskBar::onWindowRemove); connect(kdk::WindowManager::self(), &WindowManager::currentDesktopChanged, this, &UKUITaskBar::onCurrentDesktopChanged); QDBusConnection::sessionBus().connect(QString(), QString("/taskbar/quicklaunch"), "org.ukui.panel.taskbar", "AddToTaskbar", this, SLOT(pinToTaskbar(QString))); QDBusConnection::sessionBus().connect(QString(), QString("/taskbar/quicklaunch"), "org.ukui.panel.taskbar", "RemoveFromTaskbar", this, SLOT(unpinFromTaskbar(QString))); m_windowThumbnailManager = new WindowThumbnailManager(); horizontalScrollBar()->setStyleSheet("QScrollBar {height:0px;}"); verticalScrollBar()->setStyleSheet("QScrollBar {width:0px;}"); //监听应用卸载 appsUnistallWatcher(); } UKUITaskBar::~UKUITaskBar() { if (m_gsettings) { m_gsettings.reset(nullptr); } if (m_windowThumbnailManager) { delete m_windowThumbnailManager; m_windowThumbnailManager = nullptr; } } void UKUITaskBar::securityControlWatcher() { m_interface = new QDBusInterface("com.kylin.kydevmonit.hedronclient","/kydevmonit/hedronclient", "com.kylin.kydevmonit.hedronclient", QDBusConnection::systemBus(),this); if (m_interface->isValid()) { QDBusReply replay = m_interface->call("get_application_control_mode"); m_mode = replay; QDBusReply list = m_interface->call("get_application_control_list"); m_controlAppList = list; securityControlApps(m_mode); } QDBusConnection::systemBus().connect(QString("com.kylin.kydevmonit.hedronclient"), QString("/com/kylin/kydevmonit/hedron_single"), QString("com.kylin.kydevmonit.hedronsingle"), QString("application_control_mode_signal"), this, SLOT(securityControlApps(QString)) ); } void UKUITaskBar::initQuickLaunchApps() { //gsetting的方式读取写入 apps QList > apps = m_plugin->settings()->readArray("apps"); QString filename = QDir::homePath() + "/.config/ukui/panel.conf"; QSettings user_qsettings(filename, QSettings::IniFormat); QStringList groupname = user_qsettings.childGroups(); //为了兼容3.0版本和3.1版本,3.0版本的固定应用信息在quicklaunch里,3.1版本在taskbar里 //备份还原时需要quicklaunch字段,故不能删除 if (apps.isEmpty() && groupname.contains("quicklaunch")) { apps = copyQuicklaunchConfig(); } addButtonForQuicklanch(apps); } void UKUITaskBar::initExistWindows() { QList existWindowsList = kdk::WindowManager::windows(); for (WindowId window : qAsConst(existWindowsList)) { onWindowAdded(window); } } QList> UKUITaskBar::copyQuicklaunchConfig() { QString filename = QDir::homePath() + "/.config/ukui/panel.conf"; //若taskbar中没有apps,则把quicklaunch中的内容复制到taskbar qDebug()<<"Taskbar is empty, read apps from quicklaunch"; QSettings user_qsettings(filename,QSettings::IniFormat); user_qsettings.beginGroup("quicklaunch"); QList > array; int size = user_qsettings.beginReadArray("apps"); for (int i = 0; i < size; ++i) { user_qsettings.setArrayIndex(i); QMap map; map["desktop"] = user_qsettings.value("desktop"); if (array.contains(map)) { continue; } else { array << map; } } user_qsettings.endArray(); user_qsettings.endGroup(); user_qsettings.sync(); return array; } void UKUITaskBar::addButtonForQuicklanch(QList > apps) { for (const QMap &app : apps) { QString desktop = app.value("desktop", "").toString(); qDebug() << "Pin " << desktop << "to Taskbar"; if (!desktop.isEmpty()) { XdgDesktopFile xdg; if (xdg.load(desktop)) { if (!hasPinnedToTaskbar(desktop)) { pinToTaskbar(desktop); } } } else { qDebug()<<"Desktop file path is not valid"; } } } bool UKUITaskBar::hasPinnedToTaskbar(QString desktopFileName) { QString configDir = QStandardPaths::writableLocation(QStandardPaths::ConfigLocation); QString panelConfPath = QDir(configDir).filePath("ukui/panel.conf"); QSettings settings(panelConfPath, QSettings::IniFormat); for (int i = 0; i < settings.beginReadArray("/taskbar/apps"); ++i) { settings.setArrayIndex(i); qDebug() << "settings.childKeys()" << settings.childKeys(); if (settings.childKeys().contains(desktopFileName)) { return true; } } return false; } void UKUITaskBar::pinToTaskbar(QString desktopFileName) { if (hasPinnedToTaskbar(desktopFileName)) { return; } for (auto i : m_groupList) { if (i->getDesktopFileName() == desktopFileName) { i->pinToTaskbar(desktopFileName); saveSettings(); return; } } std::shared_ptr group(new UKUITaskGroup("", desktopFileName, this)); connect(group.get(), &UKUITaskGroup::unpinFromTaskbarSignal, this, &UKUITaskBar::unpinFromTaskbar, Qt::QueuedConnection); connect(group.get(), &UKUITaskGroup::enterGroup, this, &UKUITaskBar::enterGroupSlot); connect(group.get(), &UKUITaskGroup::leaveGroup, this, &UKUITaskBar::leaveGroupSlot); group->pinToTaskbar(desktopFileName); group->realign(); m_layout->addWidget(group.get()); m_groupList.append(group); saveSettings(); group->setVisible(true); this->realign(); getInitCornerMarkValue(group, desktopFileName); } void UKUITaskBar::unpinFromTaskbar(QString desktopFileName) { for (int i = 0; i < m_groupList.size(); i++) { if (m_groupList.at(i)->getDesktopFileName() == desktopFileName) { m_groupList.at(i)->unpinFromTaskbar(desktopFileName); if (m_groupList.at(i)->getButtonsInfo().size() == 0) { m_layout->removeWidget(m_groupList.at(i).get()); m_groupList.removeAt(i); } } } saveSettings(); this->realign(); } void UKUITaskBar::enterGroupSlot(QList winIdList, QString groupName, int x, int y) { m_windowThumbnailManager->show(winIdList, groupName, x, y); } void UKUITaskBar::leaveGroupSlot(QString groupName) { m_windowThumbnailManager->hide(groupName); } void UKUITaskBar::getInitCornerMarkValue(std::shared_ptr &group, const QString &desktopFileName) { QString desktop; int value; QString panelconf = QDir::homePath() + "/.config/ukui/panel.conf"; QSettings cornerSettings(panelconf, QSettings::IniFormat); cornerSettings.beginGroup("CornerMark"); desktop = cornerSettings.value("desktop").toString(); value = cornerSettings.value("value").toInt(); cornerSettings.endGroup(); if (desktopFileName.compare(desktop) != 0) { return; } qDebug() << "[Panel] init to add cornermark"; if (desktopFileName.compare(desktop) == 0) { if(!group->isHaveCornerMark()) { group->newKbage(); } group->getKbadge()->setColor(Qt::red); group->getKbadge()->setValue(value); group->getKbadge()->setVisible(true); group->setHaveCornerMark(true); group->setCornerMarkSize(); } } void UKUITaskBar::securityControlApps(QString mode) { qDebug() << "Control Mode Changed" << mode; m_mode = mode; if (m_mode == "blacklist") { QDBusReply list = m_interface->call("get_application_control_list"); m_controlAppList = list; qDebug() << "Blacklist Control App list is :" << m_controlAppList; removeBlackListApp(); } else if (m_mode == "whitelist") { QDBusReply list = m_interface->call("get_application_control_list"); m_controlAppList = list; qDebug() << "Whitelist Control App list is :" << m_controlAppList; addWhiteListApp(); } else { for (std::shared_ptr group : qAsConst(m_groupList)) { qDebug() << "Normal mode needs show all btn" << group->getDesktopFileName(); group->setVisible(true); } } } void UKUITaskBar::removeBlackListApp() { for (std::shared_ptr group : qAsConst(m_groupList)) { if (m_controlAppList.contains(group->getDesktopFileName())) { qDebug() << "Blacklist mode needs hide:" << group->getDesktopFileName(); group->setVisible(false); } else { group->setVisible(true); } } } void UKUITaskBar::addWhiteListApp() { for (std::shared_ptr group : qAsConst(m_groupList)) { if (m_controlAppList.contains(group->getDesktopFileName())) { qDebug() << "Whitelist mode needs show:" << group->getDesktopFileName(); group->setVisible(true); } else { group->setVisible(false); } } } void UKUITaskBar::onCurrentDesktopChanged() { securityControlApps(m_mode); for (auto i : m_groupList) { i->onCurrentDesktopChanged(); } this->realign(); } QSize UKUITaskBar::calcContextWidgetSize() { IUKUIPanel *panel = m_plugin->panel(); unsigned int inVisiblePinnedButtonCount = 0, inVisibleOpenedButtonCount = 0, inVisibleGroupCount = 0, visiblePinnedButtonCount = 0, visibleOpenedButtonCount = 0, visibleGroupCount = 0, allOpenedButtonCount = 0, allPinnedButtonCount = 0, allGroupCount = 0; for (auto i : m_groupList) { ++allGroupCount; if (i->isVisible()) { ++visibleGroupCount; for (auto j : i->getButtonsInfo()) { if (j->isVisible()) { if (j->windowId().toUInt() == 0) { ++visiblePinnedButtonCount; ++allPinnedButtonCount; } else { ++visibleOpenedButtonCount; ++allOpenedButtonCount; } } else { if (j->windowId().toUInt() == 0) { ++inVisiblePinnedButtonCount; ++allPinnedButtonCount; } else { ++inVisibleOpenedButtonCount; ++allOpenedButtonCount; } } } } else { ++inVisibleGroupCount; if (i->isPinned()) { ++inVisiblePinnedButtonCount; ++allPinnedButtonCount; inVisibleOpenedButtonCount += i->getButtonsInfo().size() - 1; allOpenedButtonCount += i->getButtonsInfo().size() - 1; } else { inVisibleOpenedButtonCount += i->getButtonsInfo().size(); allOpenedButtonCount += i->getButtonsInfo().size(); } } } if (panel->isHorizontal()) { if (m_isGrouping) { return QSize(visibleGroupCount * panel->panelSize(), panel->panelSize()); } else { return QSize(visibleOpenedButtonCount * panel->panelSize() * m_buttonSpan + visiblePinnedButtonCount * panel->panelSize(), panel->panelSize()); } } else { if (m_isGrouping) { return QSize(panel->panelSize(), visibleGroupCount * panel->panelSize()); } else { return QSize(panel->panelSize(), (visiblePinnedButtonCount + visibleOpenedButtonCount) * panel->panelSize()); } } } void UKUITaskBar::realign() { IUKUIPanel *panel = m_plugin->panel(); QSize btnSize = QSize(m_plugin->panel()->panelSize(), m_plugin->panel()->panelSize()); for (std::shared_ptr group : qAsConst(m_groupList)) { group->realign(); } if (panel->isHorizontal()) { this->setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded); this->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); this->setMinimumHeight(panel->panelSize()); m_contextWidget->setFixedSize(calcContextWidgetSize()); m_layout->setRowCount(panel->lineCount()); m_layout->setColumnCount(0); } else { this->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); this->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded); this->setMinimumWidth(panel->panelSize()); m_contextWidget->setFixedSize(calcContextWidgetSize()); m_layout->setRowCount(0); m_layout->setColumnCount(panel->lineCount()); qWarning() << "panel->lineCount()" << panel->lineCount(); } m_layout->setCellMinimumSize(btnSize); if (m_isGrouping || !m_plugin->panel()->isHorizontal()) { m_layout->setCellMaximumSize(btnSize * m_buttonSpan); } else { m_layout->setCellMaximumSize(btnSize * m_buttonSpan); } } QString UKUITaskBar::tranWinIdToDesktop(WindowId window) { QString desktopName; QDBusInterface *ukuiSearchInterface = new QDBusInterface("com.ukui.search.appdb.service", "/org/ukui/search/appDataBase/dbManager", "org.ukui.search.appDBManager"); if (ukuiSearchInterface->isValid()) { QDBusReply reply = ukuiSearchInterface->call("tranWinIdToDesktopFilePath", QVariant::fromValue(QDBusVariant(window))); if (reply.isValid()) { desktopName = reply.value(); } else { qDebug() << ukuiSearchInterface->lastError(); } } if (desktopName.isEmpty()) { desktopName = tranClassNameToDesktop(window); } return desktopName; } QString UKUITaskBar::tranClassNameToDesktop(WindowId window) { QDBusInterface iface(UKUI_PANEL_DAEMON, UKUI_PANEL_DAEMON_PATH, UKUI_PANEL_DAEMON_INTERFACE, QDBusConnection::sessionBus()); if (!iface.isValid()) { qDebug() << "Invalid Interface:" << iface.lastError(); return ""; } QDBusReply reply = iface.call(UKUI_PANEL_DAEMON_METHOD, window.toInt()); if (!reply.isValid()) { qDebug() << "Invalid QDBusReply:" << reply.error(); return ""; } QString processExeName = reply.value(); qDebug() << __func__ << processExeName; return processExeName; } void UKUITaskBar::wheelEvent(QWheelEvent *event) { IUKUIPanel *panel = m_plugin->panel(); if (panel->isHorizontal()) { if (event->delta() >= 0) { horizontalScrollBar()->setValue(horizontalScrollBar()->value() - 40); } else { horizontalScrollBar()->setValue(horizontalScrollBar()->value() + 40); if (horizontalScrollBar()->value() > m_contextWidget->width()) { horizontalScrollBar()->setValue(m_contextWidget->width()); } } } else { if (event->delta() >= 0) { verticalScrollBar()->setValue(verticalScrollBar()->value() - 40); } else { verticalScrollBar()->setValue(verticalScrollBar()->value() + 40); } } } void UKUITaskBar::mousePressEvent(QMouseEvent *event) { if (!(event->buttons() & Qt::LeftButton)) { return; } m_canDragging = m_contextWidget->geometry().contains(mapToParent(event->pos())); event->setAccepted(true); } void UKUITaskBar::mouseMoveEvent(QMouseEvent *event) { if (!(event->buttons() & Qt::LeftButton)) { return; } if (m_contextWidget->geometry().contains(mapToParent(event->pos())) && m_canDragging) { UKUITaskButton *taskbutton = static_cast(childAt(event->pos())); if (!taskbutton || !taskbutton->objectName().contains("UKUITaskButton")) return; UKUITaskGroup* taskgroup = static_cast(taskbutton->parentWidget()); QByteArray itemData; QDataStream dataStream(&itemData, QIODevice::WriteOnly); dataStream << m_layout->indexOf(taskgroup); QDrag *drag = new QDrag(taskgroup); drag->setMimeData(new QMimeData()); drag->setPixmap(taskbutton->icon().pixmap(m_plugin->panel()->iconSize())); drag->setHotSpot({0, 0}); drag->exec(); event->setAccepted(true); } else { event->setAccepted(false); } } void UKUITaskBar::dragEnterEvent(QDragEnterEvent *event) { if (m_canDragging) { if (event->source() == this) { event->setDropAction(Qt::MoveAction); event->accept(); } else { event->acceptProposedAction(); } } else { event->ignore(); } } void UKUITaskBar::dragMoveEvent(QDragMoveEvent *event) { if (m_contextWidget->geometry().contains(mapToParent(event->pos()))) { UKUITaskButton *taskbuttonDestination = static_cast(childAt(event->pos())); if (!taskbuttonDestination) return; UKUITaskGroup* taskgroupDestination = static_cast(taskbuttonDestination->parentWidget()); if (!taskgroupDestination) return; UKUITaskGroup* taskgroupSource = static_cast(event->source()); if (!taskgroupSource) return; int targetSource = m_layout->indexOf(taskgroupSource); int targetDestination = m_layout->indexOf(taskgroupDestination); qDebug() << "move from: " << targetSource << "to: " << targetDestination; if (targetSource < 0 || targetDestination < 0 || targetSource == targetDestination) return; m_layout->moveItem(targetSource, targetDestination, true); if (event->source() == this) { event->setDropAction(Qt::MoveAction); event->accept(); } else { event->acceptProposedAction(); } event->setAccepted(true); } else { event->setAccepted(false); } } void UKUITaskBar::dropEvent(QDropEvent *event) { //拖拽放下时更新button的iconGeometry for (std::shared_ptr group : qAsConst(m_groupList)) { group->realign(); } event->setAccepted(false); } bool UKUITaskBar::acceptWindow(const WindowId& window) { QString platform = QGuiApplication::platformName(); if (platform.startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) { QString windowTitle = WindowManager::getWindowTitle(window); if (windowTitle == "UKUI Panel") { return false; } bool isSkipTaskbar = kdk::WindowManager::skipTaskBar(window); if (isSkipTaskbar) { return false; } return true; } else { int wid = window.toInt(); QFlags ignoreList; ignoreList |= NET::DesktopMask; ignoreList |= NET::DockMask; ignoreList |= NET::SplashMask; ignoreList |= NET::ToolbarMask; ignoreList |= NET::MenuMask; ignoreList |= NET::PopupMenuMask; ignoreList |= NET::NotificationMask; ignoreList |= NET::UtilityMask; KWindowInfo info(wid, NET::WMWindowType | NET::WMState, NET::WM2TransientFor); if (!info.valid()) { return false; } if (NET::typeMatchesMask(info.windowType(NET::AllTypesMask), ignoreList)) { return false; } if (info.state() & NET::SkipTaskbar) { return false; } // WM_TRANSIENT_FOR hint not set - normal window WId transFor = info.transientFor(); if (transFor == 0 || transFor == wid || transFor == (WId) QX11Info::appRootWindow()) { return true; } info = KWindowInfo(transFor, NET::WMWindowType); QFlags normalFlag; normalFlag |= NET::NormalMask; normalFlag |= NET::DialogMask; normalFlag |= NET::UtilityMask; return !NET::typeMatchesMask(info.windowType(NET::AllTypesMask), normalFlag); } } void UKUITaskBar::onWindowAdded(const WindowId& window) { if (acceptWindow(window)) { const QString groupName = kdk::WindowManager::getWindowGroup(window); const QString desktopFileName = tranWinIdToDesktop(window); qDebug() << "Add window id is :" << window << groupName; m_windowId2GroupName.insert(window, groupName); if (groupName == "") { qWarning() << "Can't get this APP's group name"; return; } for (int i = 0; i < m_groupList.size(); i++) { if (!m_groupList.at(i)->getGroupName().isEmpty() && m_groupList.at(i)->getGroupName() != groupName) { continue; } if (m_groupList.at(i)->getGroupName() == groupName && groupName != "kylin-kmre-window") { qDebug() << "this app has been opened"; m_groupList.at(i)->addWindow(window); if(m_groupList.at(i)->isHaveCornerMark()) { m_groupList.at(i)->appsCornerMarkChangedSlot(m_groupList.at(i)->getDesktopFileName(), m_groupList.at(i)->getKbadge()->value()); } this->realign(); return; } else if (m_groupList.at(i)->getDesktopFileName() == desktopFileName && desktopFileName != "" && m_groupList.at(i)->isPinned()) { m_groupList.at(i)->addWindow(window); if(m_groupList.at(i)->isHaveCornerMark()) { m_groupList.at(i)->appsCornerMarkChangedSlot(m_groupList.at(i)->getDesktopFileName(), m_groupList.at(i)->getKbadge()->value()); } qDebug() << "this app has been pinned"; this->realign(); return; } } std::shared_ptr group(new UKUITaskGroup(groupName, "", this)); group->setDesktopFileName(desktopFileName); connect(group.get(), &UKUITaskGroup::pinToTaskbarSignal, this, &UKUITaskBar::pinToTaskbar); connect(group.get(), &UKUITaskGroup::unpinFromTaskbarSignal, this, &UKUITaskBar::unpinFromTaskbar, Qt::QueuedConnection); connect(group.get(), &UKUITaskGroup::enterGroup, this, &UKUITaskBar::enterGroupSlot); connect(group.get(), &UKUITaskGroup::leaveGroup, this, &UKUITaskBar::leaveGroupSlot); group->realign(); group->addWindow(window); m_layout->addWidget(group.get()); m_groupList.append(group); group->setVisible(true); this->realign(); } } void UKUITaskBar::onWindowRemove(const WindowId& window) { qDebug() << "Remove window id is :" << window << m_windowId2GroupName.value(window); const QString groupName = m_windowId2GroupName.value(window); for (int i = 0; i < m_groupList.size(); i++) { if (m_groupList.at(i)->getGroupName() == "kylin-kmre-window" && m_groupList.at(i)->getButtonsInfo().keys().contains(window)) { m_groupList.at(i)->removeWindow(window); } if (m_groupList.at(i)->getGroupName() == groupName && groupName != "kylin-kmre-window") { m_groupList.at(i)->removeWindow(window); if(m_groupList.at(i)->isPinned() && m_groupList.at(i)->isHaveCornerMark()) { m_groupList.at(i)->appsCornerMarkChangedSlot(m_groupList.at(i)->getDesktopFileName(), m_groupList.at(i)->getKbadge()->value()); } } if (m_groupList.at(i)->getButtonsInfo().size() == 0) { m_layout->removeWidget(m_groupList.at(i).get()); m_groupList.removeAt(i); } } m_windowId2GroupName.remove(window); this->realign(); return; } void UKUITaskBar::saveSettings() { PluginSettings *settings = m_plugin->settings(); settings->remove("apps"); QList> hashList; int size = m_layout->count(); for (int j = 0; j < size; ++j) { UKUITaskGroup *pinBtn = qobject_cast(m_layout->itemAt(j)->widget()); if (!pinBtn || !pinBtn->isPinned()) { continue; } QMap map; map["desktop"] = pinBtn->getDesktopFileName(); hashList << map; } settings->setArray("apps", hashList); } void UKUITaskBar::appsUnistallWatcher() { m_fsWatcher.reset(new QFileSystemWatcher()); m_fsWatcher->addPath(DESKTOP_FILE_PATH); m_fsWatcher->addPath(ANDROID_DESKTOP_FILE_PATH); directoryUpdated(DESKTOP_FILE_PATH); directoryUpdated(ANDROID_DESKTOP_FILE_PATH); connect(m_fsWatcher.get(), &QFileSystemWatcher::directoryChanged, [this](){ directoryUpdated(DESKTOP_FILE_PATH); directoryUpdated(ANDROID_DESKTOP_FILE_PATH); }); } void UKUITaskBar::directoryUpdated(const QString &path) { // 比较最新的内容和保存的内容找出区别(变化) QStringList currentrylist = m_currentContentsMap[path]; const QDir dir(path); QStringList newentrylist = dir.entryList(QDir::NoDotAndDotDot | QDir::AllDirs | QDir::Files, QDir::DirsFirst); QSet newdirset = QSet::fromList(newentrylist); QSet currentdirset = QSet::fromList(currentrylist); // 文件已被移除 QSet deletedfiles = currentdirset - newdirset; QStringList deletefile = deletedfiles.toList(); // 更新当前设置 m_currentContentsMap[path] = newentrylist; if (deletefile.isEmpty()) { return; } foreach (QString file, deletefile) { qDebug() << "Uninstall App is:" << path + file; unpinFromTaskbar(path + file); } } ukui-panel-4.0.0.4/plugin-taskbar/ukuitaskbarplugin.cpp0000644000175000017500000000255014560306203021543 0ustar fengfeng/* * * * Copyright (C) 2023, KylinSoft Co., Ltd. * * * * This program is free software: you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation, either version 3 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program. If not, see . * * * * Authors: Nicole * */ #include "ukuitaskbarplugin.h" UKUITaskBarPlugin::UKUITaskBarPlugin(const IUKUIPanelPluginStartupInfo &startupInfo): QObject(), IUKUIPanelPlugin(startupInfo) { translator(); m_taskBar = new UKUITaskBar(this); } UKUITaskBarPlugin::~UKUITaskBarPlugin() { delete m_taskBar; } void UKUITaskBarPlugin::realign() { m_taskBar->realign(); } void UKUITaskBarPlugin::translator() { QTranslator *translator = new QTranslator(this); translator->load(QLocale(), "taskbar", "_", TASKBAR_TRANSLATION_DIR); QCoreApplication::installTranslator(translator); } ukui-panel-4.0.0.4/plugin-taskbar/kysdk-waylandhelper_global.h0000644000175000017500000000211114560306203022737 0ustar fengfeng/* * libkysdk-waylandhelper's Library * * Copyright (C) 2023, KylinSoft Co., Ltd. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 3 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this library. If not, see . * * Authors: Zhen Sun * */ #ifndef KYSDKWAYLANDHELPER_GLOBAL_H #define KYSDKWAYLANDHELPER_GLOBAL_H #include #if defined(KYSDKWAYLANDHELPER_LIBRARY) # define KYSDKWAYLANDHELPER_EXPORT Q_DECL_EXPORT #else # define KYSDKWAYLANDHELPER_EXPORT Q_DECL_IMPORT #endif #endif // KYSDKWAYLANDHELPER_GLOBAL_H ukui-panel-4.0.0.4/plugin-taskbar/ukui-panel-items/0000755000175000017500000000000014560306221020462 5ustar fengfengukui-panel-4.0.0.4/plugin-taskbar/ukui-panel-items/panel-public-plugin.cpp0000644000175000017500000000341714560306203025042 0ustar fengfeng/* * Copyright (C) 2023, KylinSoft Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * Authors: hxf * Zhang * */ #include "panel-public-plugin.h" #include "theme-palette.h" #include "theme-icon.h" #include "tooltip.h" #include #include #include #include using namespace UkuiQuick; void PanelPublicPlugin::registerTypes(const char *uri) { Q_ASSERT(QLatin1String(uri) == QLatin1String(PLUGIN_IMPORT_URI)); qmlRegisterType(uri, 1, 0, "ThemeIcon"); qmlRegisterUncreatableType(uri, 1, 0, "StyleToolTip", "StytleToolTip."); qmlRegisterUncreatableType(uri, 1, 0, "PaletteRole", "Only enumeration variables are required"); qRegisterMetaType("PaletteRole::ColorGroup"); qRegisterMetaType("PaletteRole::ColorRole"); } void PanelPublicPlugin::initializeEngine(QQmlEngine *engine, const char *uri) { Q_ASSERT(QLatin1String(uri) == QLatin1String(PLUGIN_IMPORT_URI)); engine->rootContext()->setContextProperty("themePal", ThemePalette::getInstance()); } ukui-panel-4.0.0.4/plugin-taskbar/ukui-panel-items/qml/0000755000175000017500000000000014560306203021253 5ustar fengfengukui-panel-4.0.0.4/plugin-taskbar/ukui-panel-items/qml/StyleText.qml0000644000175000017500000000401714560306203023735 0ustar fengfeng/* * Copyright (C) 2022, KylinSoft Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * Authors: hxf * */ import QtQuick 2.0 import org.ukui.panel.items 1.0 //import framework.qmlcomponents 1.0 Text { //颜色枚举值,从调色板中取得 property int paletteRole: PaletteRole.ButtonText; property int pointSizeOffset: 0 property real alpha: 1.0; function updateColor() { color = themePal.paletteColorWithCustomTransparency(paletteRole, PaletteRole.Active, alpha); } function updateFontSize() { if ((themePal.fontSize() + pointSizeOffset) < 0 ) { font.pointSize = themePal.fontSize(); } else { font.pointSize = themePal.fontSize() + pointSizeOffset; } } function updateFont() { font.family = themePal.themeFont(); } onPaletteRoleChanged: { updateColor(); } onAlphaChanged: { updateColor(); } Component.onCompleted: { updateFont(); updateColor(); updateFontSize(); themePal.fontChanged.connect(updateFont); themePal.styleColorChanged.connect(updateColor); themePal.fontSizeChanged.connect(updateFontSize); } Component.onDestruction: { themePal.fontChanged.disconnect(updateFont); themePal.styleColorChanged.disconnect(updateColor); themePal.fontSizeChanged.disconnect(updateFontSize); } } ukui-panel-4.0.0.4/plugin-taskbar/ukui-panel-items/qml/StyleBackground.qml0000644000175000017500000000462514560306203025075 0ustar fengfeng/* * Copyright (C) 2022, KylinSoft Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * Authors: hxf * */ import QtQuick 2.0 import org.ukui.panel.items 1.0 //import framework.qmlcomponents 1.0 Rectangle { //是否跟随系统主题颜色的透明度 property bool useStyleTransparency: true; //背景颜色枚举值,从调色板中取得 property int paletteRole: PaletteRole.Window; property int paletteGroup: PaletteRole.Active; property real alpha: 1.0; property real borderAlpha: 1.0; property int borderColor: PaletteRole.Base; border.width: 0; clip: true; function updateColor() { if (useStyleTransparency) { color = themePal.paletteColorWithTransparency(paletteRole, paletteGroup); } else { color = themePal.paletteColorWithCustomTransparency(paletteRole, paletteGroup, alpha); } } function updateBorderColor() { border.color = themePal.paletteColorWithCustomTransparency(borderColor, PaletteRole.Active, borderAlpha) } //监听系统主题变化 onUseStyleTransparencyChanged: { updateColor(); } onPaletteGroupChanged: { updateColor(); } onPaletteRoleChanged: { updateColor(); } onAlphaChanged: { updateColor(); } onBorderAlphaChanged: { updateBorderColor(); } onBorderColorChanged: { updateBorderColor(); } Component.onCompleted: { updateColor(); updateBorderColor(); themePal.styleColorChanged.connect(updateColor); themePal.styleColorChanged.connect(updateBorderColor); } Component.onDestruction: { themePal.styleColorChanged.disconnect(updateColor); themePal.styleColorChanged.disconnect(updateBorderColor); } } ukui-panel-4.0.0.4/plugin-taskbar/ukui-panel-items/tooltip.cpp0000644000175000017500000000311114560306203022654 0ustar fengfeng/* * Copyright (C) 2023, KylinSoft Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * Authors: hxf * */ #include "tooltip.h" #include #include namespace UkuiQuick { ToolTip::ToolTip(QObject *parent) : QObject(parent) { } QString ToolTip::text() const { return m_text; } void ToolTip::setText(const QString &text) { if (text == m_text) { return; } m_text = text; Q_EMIT textChanged(); } void ToolTip::show(int x, int y) { show(QPoint(x, y)); } void ToolTip::show(QPointF point) { show(QPoint(point.x(), point.y())); } void ToolTip::show(QPoint point) { if (point.isNull()) { QToolTip::showText(QCursor::pos(), m_text); } else { QToolTip::showText(point, m_text); } } void ToolTip::hide() { QToolTip::hideText(); } // ====== ToolTipAttached ====== // ToolTip *ToolTipAttached::qmlAttachedProperties(QObject *object) { return new ToolTip(object); } } // UkuiQuick ukui-panel-4.0.0.4/plugin-taskbar/ukui-panel-items/CMakeLists.txt0000644000175000017500000000410014560306203023215 0ustar fengfengcmake_minimum_required(VERSION 3.16) project(ukui-panel-items) set(CMAKE_INCLUDE_CURRENT_DIR ON) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED ON) #find QT modules find_package(QT NAMES Qt6 Qt5 COMPONENTS Core Gui Qml Widgets Quick REQUIRED) find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Core Qml Gui Widgets Quick REQUIRED) find_package(KF5WindowSystem REQUIRED) #find other modules find_package(PkgConfig REQUIRED) set(PANEL_ITEM_PLUGIN_EXTERNAL_LIBS "") set(PANEL_ITEM_PLUGIN_PC_PKGS gsettings-qt) foreach(external_lib IN ITEMS ${PUBLIC_ITEM_PLUGIN_PC_PKGS}) pkg_check_modules(${external_lib} REQUIRED IMPORTED_TARGET ${external_lib}) if(${${external_lib}_FOUND}) include_directories(${${external_lib}_INCLUDE_DIRS}) link_directories(${${external_lib}_LIBRARY_DIRS}) list(APPEND PUBLIC_ITEM_PLUGIN_EXTERNAL_LIBS PkgConfig::${external_lib}) endif() endforeach() include_directories(.) include_directories(qml) set(PLUGIN_SRCS panel-public-plugin.h panel-public-plugin.cpp theme-palette.h theme-palette.cpp theme-icon.h theme-icon.cpp tooltip.h tooltip.cpp ) add_library(${PROJECT_NAME} SHARED ${PLUGIN_SRCS}) set(PLUGIN_IMPORT_URI "org.ukui.panel.items") set(PLUGIN_INSTALL_PATH "/usr/lib/${CMAKE_LIBRARY_ARCHITECTURE}/qt5/qml/org/ukui/panel/items") target_compile_definitions(${PROJECT_NAME} PRIVATE PLUGIN_IMPORT_URI="${PLUGIN_IMPORT_URI}") target_link_libraries(${PROJECT_NAME} PRIVATE Qt${QT_VERSION_MAJOR}::Core Qt${QT_VERSION_MAJOR}::Qml Qt${QT_VERSION_MAJOR}::Gui Qt${QT_VERSION_MAJOR}::Quick Qt${QT_VERSION_MAJOR}::Gui_EGL Qt${QT_VERSION_MAJOR}::GuiPrivate Qt${QT_VERSION_MAJOR}::Widgets KF5::WindowSystem ${PUBLIC_ITEM_PLUGIN_EXTERNAL_LIBS} ) install(DIRECTORY "qml" DESTINATION "${PLUGIN_INSTALL_PATH}") install(FILES "qmldir" DESTINATION "${PLUGIN_INSTALL_PATH}") install(TARGETS ${PROJECT_NAME} LIBRARY DESTINATION ${PLUGIN_INSTALL_PATH}) ukui-panel-4.0.0.4/plugin-taskbar/ukui-panel-items/tooltip.h0000644000175000017500000000315614560306203022332 0ustar fengfeng/* * Copyright (C) 2023, KylinSoft Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * Authors: hxf * */ #ifndef UKUI_QUICK_ITEMS_TOOLTIP_H #define UKUI_QUICK_ITEMS_TOOLTIP_H #include #include #include #include namespace UkuiQuick { class ToolTip : public QObject { Q_OBJECT Q_PROPERTY(QString text READ text WRITE setText NOTIFY textChanged) public: explicit ToolTip(QObject *parent = nullptr); QString text() const; void setText(const QString &text); Q_INVOKABLE void show(int x = -1, int y = -1); Q_INVOKABLE void show(QPointF point); Q_INVOKABLE void show(QPoint point); Q_INVOKABLE void hide(); Q_SIGNALS: void textChanged(); private: QString m_text; }; class ToolTipAttached : public QObject { Q_OBJECT public: static ToolTip *qmlAttachedProperties(QObject *object); }; } // UkuiQuick QML_DECLARE_TYPEINFO(UkuiQuick::ToolTipAttached, QML_HAS_ATTACHED_PROPERTIES) #endif //UKUI_QUICK_ITEMS_TOOLTIP_H ukui-panel-4.0.0.4/plugin-taskbar/ukui-panel-items/qmldir0000644000175000017500000000020014560306203021665 0ustar fengfengmodule org.ukui.panel.items plugin ukui-panel-items StyleText 1.0 qml/StyleText.qml StyleBackground 1.0 qml/StyleBackground.qml ukui-panel-4.0.0.4/plugin-taskbar/ukui-panel-items/theme-palette.cpp0000644000175000017500000002051714560306203023731 0ustar fengfeng/* * Copyright (C) 2022, KylinSoft Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * Authors: hxf * */ #include "theme-palette.h" #include #include #include #include #define CONTROL_CENTER_SETTING "org.ukui.control-center.personalise" #define CONTROL_CENTER_TRANSPARENCY_KEY "transparency" #define UKUI_STYLE_SETTING "org.ukui.style" #define UKUI_STYLE_NAME_KEY "styleName" #define UKUI_STYLE_THEME_COLOR_KEY "themeColor" #define UKUI_STYLE_SYSTEM_FONT_KEY "systemFont" #define UKUI_STYLE_SYSTEM_FONT_SIZE "systemFontSize" static ThemePalette *globalInstance = nullptr; ThemePalette *ThemePalette::getInstance() { if (!globalInstance) { globalInstance = new ThemePalette(nullptr); } return globalInstance; } ThemePalette::ThemePalette(QObject *parent) : QObject(parent) { initTransparency(); initStyleSetting(); connect(qGuiApp, &QGuiApplication::paletteChanged, this, [=] { Q_EMIT styleColorChanged(); }); } void ThemePalette::initTransparency() { const QByteArray id(CONTROL_CENTER_SETTING); if (QGSettings::isSchemaInstalled(id)) { auto *settings = new QGSettings(id, QByteArray(), this); connect(settings, &QGSettings::changed, this, [=](const QString &key) { if (key == CONTROL_CENTER_TRANSPARENCY_KEY) { m_transparency = settings->get(key).toReal(); Q_EMIT styleColorChanged(); } }); QStringList keys = settings->keys(); if (keys.contains(CONTROL_CENTER_TRANSPARENCY_KEY)) { m_transparency = settings->get(CONTROL_CENTER_TRANSPARENCY_KEY).toReal(); } } } void ThemePalette::initStyleSetting() { const QByteArray id(UKUI_STYLE_SETTING); if (QGSettings::isSchemaInstalled(id)) { auto *settings = new QGSettings(id, QByteArray(), this); connect(settings, &QGSettings::changed, this, [=](const QString &key) { if (key == UKUI_STYLE_NAME_KEY || key == UKUI_STYLE_THEME_COLOR_KEY) { Q_EMIT styleColorChanged(); } else if (key == UKUI_STYLE_SYSTEM_FONT_SIZE) { m_fontSize = settings->get(key).toReal(); Q_EMIT fontSizeChanged(); } else if (key == UKUI_STYLE_SYSTEM_FONT_KEY) { m_font = settings->get(key).toString(); Q_EMIT fontChanged(); } }); QStringList keys = settings->keys(); if (keys.contains(UKUI_STYLE_SYSTEM_FONT_SIZE)) { m_fontSize = settings->get(UKUI_STYLE_SYSTEM_FONT_SIZE).toReal(); } if (keys.contains(UKUI_STYLE_SYSTEM_FONT_KEY)) { m_font = settings->get(UKUI_STYLE_SYSTEM_FONT_KEY).toString(); } } } QColor ThemePalette::paletteColor(PaletteRole::ColorRole colorRole, PaletteRole::ColorGroup colorGroup) const { switch (colorRole) { default: case PaletteRole::Window: return window(colorGroup); case PaletteRole::WindowText: return windowText(colorGroup); case PaletteRole::Base: return base(colorGroup); case PaletteRole::Text: return text(colorGroup); case PaletteRole::AlternateBase: return alternateBase(colorGroup); case PaletteRole::Button: return button(colorGroup); case PaletteRole::ButtonText: return buttonText(colorGroup); case PaletteRole::Light: return light(colorGroup); case PaletteRole::MidLight: return midLight(colorGroup); case PaletteRole::Dark: return dark(colorGroup); case PaletteRole::Mid: return mid(colorGroup); case PaletteRole::Shadow: return shadow(colorGroup); case PaletteRole::Highlight: return highlight(colorGroup); case PaletteRole::HighlightedText: return highlightedText(colorGroup); case PaletteRole::BrightText: return brightText(colorGroup); } } QColor ThemePalette::paletteColorWithCustomTransparency(PaletteRole::ColorRole colorRole, PaletteRole::ColorGroup colorGroup, qreal alphaF) const { QColor color = paletteColor(colorRole, colorGroup); color.setAlphaF(alphaF); return color; } QColor ThemePalette::paletteColorWithTransparency(PaletteRole::ColorRole colorRole, PaletteRole::ColorGroup colorGroup) const { QColor color = paletteColor(colorRole, colorGroup); color.setAlphaF(m_transparency); return color; } QColor ThemePalette::window(PaletteRole::ColorGroup colorGroup) const { return QGuiApplication::palette().color(switchColorGroup(colorGroup), QPalette::Window); } QColor ThemePalette::windowText(PaletteRole::ColorGroup colorGroup) const { return QGuiApplication::palette().color(switchColorGroup(colorGroup), QPalette::WindowText); } QColor ThemePalette::text(PaletteRole::ColorGroup colorGroup) const { return QGuiApplication::palette().color(switchColorGroup(colorGroup), QPalette::Text); } QColor ThemePalette::base(PaletteRole::ColorGroup colorGroup) const { return QGuiApplication::palette().color(switchColorGroup(colorGroup), QPalette::Base); } QColor ThemePalette::alternateBase(PaletteRole::ColorGroup colorGroup) const { return QGuiApplication::palette().color(switchColorGroup(colorGroup), QPalette::AlternateBase); } QColor ThemePalette::button(PaletteRole::ColorGroup colorGroup) const { return QGuiApplication::palette().color(switchColorGroup(colorGroup), QPalette::Button); } QColor ThemePalette::buttonText(PaletteRole::ColorGroup colorGroup) const { return QGuiApplication::palette().color(switchColorGroup(colorGroup), QPalette::ButtonText); } QColor ThemePalette::light(PaletteRole::ColorGroup colorGroup) const { return QGuiApplication::palette().color(switchColorGroup(colorGroup), QPalette::Light); } QColor ThemePalette::midLight(PaletteRole::ColorGroup colorGroup) const { return QGuiApplication::palette().color(switchColorGroup(colorGroup), QPalette::Midlight); } QColor ThemePalette::dark(PaletteRole::ColorGroup colorGroup) const { return QGuiApplication::palette().color(switchColorGroup(colorGroup), QPalette::Dark); } QColor ThemePalette::mid(PaletteRole::ColorGroup colorGroup) const { return QGuiApplication::palette().color(switchColorGroup(colorGroup), QPalette::Mid); } QColor ThemePalette::shadow(PaletteRole::ColorGroup colorGroup) const { return QGuiApplication::palette().color(switchColorGroup(colorGroup), QPalette::Shadow); } QColor ThemePalette::highlight(PaletteRole::ColorGroup colorGroup) const { return QGuiApplication::palette().color(switchColorGroup(colorGroup), QPalette::Highlight); } QColor ThemePalette::highlightedText(PaletteRole::ColorGroup colorGroup) const { return QGuiApplication::palette().color(switchColorGroup(colorGroup), QPalette::HighlightedText); } QColor ThemePalette::brightText(PaletteRole::ColorGroup colorGroup) const { return QGuiApplication::palette().color(switchColorGroup(colorGroup), QPalette::BrightText); } QColor ThemePalette::separator(PaletteRole::ColorGroup colorGroup) const { return QGuiApplication::palette().color(switchColorGroup(colorGroup), QPalette::Window); } qreal ThemePalette::fontSize() const { return m_fontSize; } QString ThemePalette::themeFont() const { return m_font; } QPalette::ColorGroup ThemePalette::switchColorGroup(PaletteRole::ColorGroup colorGroup) { switch (colorGroup) { default: case PaletteRole::Active: return QPalette::Active; case PaletteRole::Disabled: return QPalette::Disabled; case PaletteRole::Inactive: return QPalette::Inactive; } } ukui-panel-4.0.0.4/plugin-taskbar/ukui-panel-items/theme-icon.cpp0000644000175000017500000002144314560306221023222 0ustar fengfeng/* * Copyright (C) 2022, KylinSoft Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * Authors: hxf * */ #include "theme-icon.h" #include #include #include #include #include #include #include #include #include #include #include #define COLOR_DIFFERENCE 10 QColor ThemeIcon::symbolicColor = QColor(31, 32, 34, 192); ThemeIcon::ThemeIcon(QQuickItem *parent) : QQuickPaintedItem(parent) { QPalette pal = qApp->palette(); QGSettings * styleGsettings = nullptr; const QByteArray styleId("org.ukui.style"); if (QGSettings::isSchemaInstalled(styleId)) { styleGsettings = new QGSettings(styleId, QByteArray(), this); QString currentTheme = styleGsettings->get("styleName").toString(); if(currentTheme == "ukui-light"){ setForceHighLight(false); } else { setForceHighLight(true); } } } void ThemeIcon::paint(QPainter *painter) { //默认居中绘制 QRect rect(0, 0, static_cast(width()), static_cast(height())); QPixmap target = m_rawIcon.pixmap({32, 32}); painter->save(); //抗锯齿,平滑过渡 painter->setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform); if (m_disabled) { QPainter p(&target); p.setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform); p.setCompositionMode(QPainter::CompositionMode_SourceIn); p.fillRect(target.rect(), QGuiApplication::palette().color(QPalette::Disabled, QPalette::ButtonText)); } else if (m_highLight) { bool isPureColor = true; if(!m_forceHighlight) { isPureColor = isPixmapPureColor(target); } if (isPureColor) { QPainter p(&target); p.setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform); p.setCompositionMode(QPainter::CompositionMode_SourceIn); p.fillRect(target.rect(), QGuiApplication::palette().color(QPalette::HighlightedText)); } } else if (m_forceHighlight) { if (isPixmapPureColor(target)) { QPainter p(&target); p.setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform); p.setCompositionMode(QPainter::CompositionMode_SourceIn); p.fillRect(target.rect(), QGuiApplication::palette().color(QPalette::HighlightedText)); } } if (m_radius > 0) { int radius = qMin(m_radius, qMin((rect.height() / 2), (rect.width() / 2))); QPainterPath path; path.addRoundedRect(rect, radius, radius); painter->setClipPath(path); } painter->drawPixmap(rect, target, target.rect()); painter->restore(); } QVariant ThemeIcon::getSource() { return m_source; } void ThemeIcon::setSource(const QVariant &source) { if (m_source == source) { return; } m_source = source; updateRawIcon(source); update(); } QString ThemeIcon::getFallBack() { return m_fallback; } void ThemeIcon::setFallBack(const QString &fallback) { if (fallback.isEmpty()) { qWarning() << "ThemeIcon: fallback is empty!"; return; } if (m_rawIcon.isNull()) { setSource(fallback); } } void ThemeIcon::readImage(const QString &path) { QFile file(path); if (!file.exists()) { qDebug() << "Error: ThemeIcon: " << QString("File not found: %1").arg(path); return; } if (!file.open(QFileDevice::ReadOnly)) { qWarning() << "Error: ThemeIcon: " << QString("Cannot open: %1").arg(path); return; } QImageReader imageReader(&file); QImage image; QPixmap pixmap; if (!imageReader.read(&image)) { qWarning() << "Error: ThemeIcon: " << QString("Error decoding: %1").arg(path); return; } pixmap = QPixmap::fromImage(image); m_source = path; file.close(); } bool ThemeIcon::isHighLight() const { return m_highLight; } void ThemeIcon::setHighLight(bool highLight) { m_highLight = highLight; update(); } bool ThemeIcon::isForceHighlight() const { return m_forceHighlight; } void ThemeIcon::setForceHighLight(bool force) { m_forceHighlight = force; update(); } bool ThemeIcon::disable() const { return m_disabled; } void ThemeIcon::setDisable(bool disable) { m_disabled = disable; update(); } //copy from ukui-platform-theme bool ThemeIcon::isPixmapPureColor(const QPixmap &pixmap) { if (pixmap.isNull()) { qWarning("pixmap is null!"); return false; } QImage image = pixmap.toImage(); QVector vector; int total_red = 0; int total_green = 0; int total_blue = 0; bool pure = true; for (int y = 0; y < image.height(); ++y) { for (int x = 0; x < image.width(); ++x) { if (image.pixelColor(x, y).alphaF() > 0.3) { QColor color = image.pixelColor(x, y); vector << color; total_red += color.red(); total_green += color.green(); total_blue += color.blue(); int dr = qAbs(color.red() - symbolicColor.red()); int dg = qAbs(color.green() - symbolicColor.green()); int db = qAbs(color.blue() - symbolicColor.blue()); if (dr > COLOR_DIFFERENCE || dg > COLOR_DIFFERENCE || db > COLOR_DIFFERENCE) pure = false; } } } if (pure) return true; qreal squareRoot_red = 0; qreal squareRoot_green = 0; qreal squareRoot_blue = 0; qreal average_red = total_red / vector.count(); qreal average_green = total_green / vector.count(); qreal average_blue = total_blue / vector.count(); for (QColor color : vector) { squareRoot_red += (color.red() - average_red) * (color.red() - average_red); squareRoot_green += (color.green() - average_green) * (color.green() - average_green); squareRoot_blue += (color.blue() - average_blue) * (color.blue() - average_blue); } qreal arithmeticSquareRoot_red = qSqrt(squareRoot_red / vector.count()); qreal arithmeticSquareRoot_green = qSqrt(squareRoot_green / vector.count()); qreal arithmeticSquareRoot_blue = qSqrt(squareRoot_blue / vector.count()); return arithmeticSquareRoot_red < 2.0 && arithmeticSquareRoot_green < 2.0 && arithmeticSquareRoot_blue < 2.0; } void ThemeIcon::updateRawIcon(const QVariant &icon) { switch (m_source.userType()) { case QMetaType::QPixmap: m_rawIcon = QIcon(m_source.value()); break; case QMetaType::QImage: m_rawIcon = QIcon(QPixmap::fromImage(m_source.value())); break; case QMetaType::QIcon: m_rawIcon = m_source.value(); break; case QMetaType::QString: m_rawIcon = findIcon(m_source.toString()); break; default: break; } if (m_rawIcon.isNull()) { QImage image = QImage(QSize(width(), height()), QImage::Format_Alpha8); image.fill(Qt::transparent); m_rawIcon = QIcon(QPixmap::fromImage(image)); } } QIcon ThemeIcon::findIcon(const QString &source) { QIcon icon; QUrl url(source); QString schema = url.scheme(); if (!schema.isEmpty()) { QString path = url.path(); if (!path.isEmpty()) { if (schema == QLatin1String("qrc")) { path.prepend(QLatin1String(":")); } readImage(path); icon = QIcon(m_source.toString()); } else { qWarning() << "Error: ThemeIcon: source is invalid! schema:" << schema; } } else { //qrc path: :/xxx/xxx.png if (source.startsWith(QLatin1String("/")) || source.startsWith(QLatin1String(":/"))) { readImage(source); icon = QIcon(m_source.toString()); } else { if (!QIcon::hasThemeIcon(source)) { qWarning() << "Error: ThemeIcon: icon dose not exists. name:" << source; } icon = QIcon::fromTheme(source); } } return icon; } int ThemeIcon::radius() { return m_radius; } void ThemeIcon::setRadius(int radius) { m_radius = radius < 0 ? 0 : radius; } ukui-panel-4.0.0.4/plugin-taskbar/ukui-panel-items/theme-palette.h0000644000175000017500000001020514560306203023367 0ustar fengfeng/* * Copyright (C) 2022, KylinSoft Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * Authors: hxf * */ #ifndef UKUI_PANEL_THEME_PALETTE_H #define UKUI_PANEL_THEME_PALETTE_H #include #include class PaletteRole { Q_GADGET public: // Warning 警告: 谨防 qt版本更新后,删除,增加或者调整调色板的枚举值 enum ColorGroup { Active, Disabled, Inactive }; Q_ENUM(ColorGroup) enum ColorRole { Window, WindowText, Base, Text, AlternateBase, Button, ButtonText, Light, MidLight, Dark, Mid, Shadow, Highlight, HighlightedText, BrightText }; Q_ENUM(ColorRole) }; class ThemePalette : public QObject { Q_OBJECT public: static ThemePalette *getInstance(); /** * 根据调色板的枚举值,获取主题调色板的颜色 * @param colorRole * @return */ Q_INVOKABLE QColor paletteColor(PaletteRole::ColorRole colorRole, PaletteRole::ColorGroup colorGroup = PaletteRole::Active) const; /** * 获取自定义透明度的颜色 * @param colorRole * @return */ Q_INVOKABLE QColor paletteColorWithCustomTransparency(PaletteRole::ColorRole colorRole, PaletteRole::ColorGroup colorGroup, qreal alphaF) const; /** * 获取带有主题透明度的颜色 * @param colorRole * @return */ Q_INVOKABLE QColor paletteColorWithTransparency(PaletteRole::ColorRole colorRole, PaletteRole::ColorGroup colorGroup = PaletteRole::Active) const; Q_INVOKABLE QColor window(PaletteRole::ColorGroup colorGroup = PaletteRole::Active) const; Q_INVOKABLE QColor windowText(PaletteRole::ColorGroup colorGroup = PaletteRole::Active) const; Q_INVOKABLE QColor base(PaletteRole::ColorGroup colorGroup = PaletteRole::Active) const; Q_INVOKABLE QColor text(PaletteRole::ColorGroup colorGroup = PaletteRole::Active) const; Q_INVOKABLE QColor alternateBase(PaletteRole::ColorGroup colorGroup = PaletteRole::Active) const; Q_INVOKABLE QColor button(PaletteRole::ColorGroup colorGroup = PaletteRole::Active) const; Q_INVOKABLE QColor buttonText(PaletteRole::ColorGroup colorGroup = PaletteRole::Active) const; Q_INVOKABLE QColor light(PaletteRole::ColorGroup colorGroup = PaletteRole::Active) const; Q_INVOKABLE QColor midLight(PaletteRole::ColorGroup colorGroup = PaletteRole::Active) const; Q_INVOKABLE QColor dark(PaletteRole::ColorGroup colorGroup = PaletteRole::Active) const; Q_INVOKABLE QColor mid(PaletteRole::ColorGroup colorGroup = PaletteRole::Active) const; Q_INVOKABLE QColor shadow(PaletteRole::ColorGroup colorGroup = PaletteRole::Active) const; Q_INVOKABLE QColor highlight(PaletteRole::ColorGroup colorGroup = PaletteRole::Active) const; Q_INVOKABLE QColor highlightedText(PaletteRole::ColorGroup colorGroup = PaletteRole::Active) const; Q_INVOKABLE QColor brightText(PaletteRole::ColorGroup colorGroup = PaletteRole::Active) const; Q_INVOKABLE QColor separator(PaletteRole::ColorGroup colorGroup = PaletteRole::Active) const; Q_INVOKABLE qreal fontSize() const; Q_INVOKABLE QString themeFont() const; Q_SIGNALS: void styleColorChanged(); void fontSizeChanged(); void fontChanged(); private: explicit ThemePalette(QObject *parent = nullptr); static QPalette::ColorGroup switchColorGroup(PaletteRole::ColorGroup colorGroup); void initTransparency(); void initStyleSetting(); private: qreal m_transparency = 1.0; qreal m_fontSize = 12; QString m_font = "Noto Sans CJK SC"; }; #endif //UKUI_PANEL_THEME_PALETTE_H ukui-panel-4.0.0.4/plugin-taskbar/ukui-panel-items/panel-public-plugin.h0000644000175000017500000000230214560306203024477 0ustar fengfeng/* * Copyright (C) 2023, KylinSoft Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * Authors: hxf * Zhang * */ #ifndef UKUI_SIDEBAR_SIDEBAR_PUBLIC_PLUGIN_H #define UKUI_SIDEBAR_SIDEBAR_PUBLIC_PLUGIN_H #include class PanelPublicPlugin : public QQmlExtensionPlugin { Q_OBJECT Q_PLUGIN_METADATA(IID QQmlExtensionInterface_iid) public: void registerTypes(const char *uri) override; void initializeEngine(QQmlEngine *engine, const char *uri) override; }; #endif //UKUI_SIDEBAR_SIDEBAR_PUBLIC_PLUGIN_H ukui-panel-4.0.0.4/plugin-taskbar/ukui-panel-items/theme-icon.h0000644000175000017500000000434714560306203022673 0ustar fengfeng/* * Copyright (C) 2022, KylinSoft Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * Authors: hxf * */ #ifndef UKUI_PANEL_THEME_ICON_H #define UKUI_PANEL_THEME_ICON_H #include #include class ThemeIcon : public QQuickPaintedItem { Q_OBJECT Q_PROPERTY(QVariant source READ getSource WRITE setSource) Q_PROPERTY(QString fallback READ getFallBack WRITE setFallBack) Q_PROPERTY(bool disable READ disable WRITE setDisable) Q_PROPERTY(int radius READ radius WRITE setRadius) Q_PROPERTY(bool highLight READ isHighLight WRITE setHighLight) Q_PROPERTY(bool forceHighlight READ isForceHighlight WRITE setForceHighLight) public: explicit ThemeIcon(QQuickItem *parent = nullptr); void paint(QPainter *painter) override; QVariant getSource(); void setSource(const QVariant& source); QString getFallBack(); void setFallBack(const QString &fallback); bool isHighLight() const; void setHighLight(bool highLight); bool isForceHighlight() const; void setForceHighLight(bool force); bool disable() const; void setDisable(bool disable); int radius(); void setRadius(int radius); private: void readImage(const QString &path); bool isPixmapPureColor(const QPixmap &pixmap); void updateRawIcon(const QVariant &icon); QIcon findIcon(const QString &source); private: bool m_disabled = false; int m_radius = 0; bool m_highLight = false; bool m_forceHighlight = false; QIcon m_rawIcon; QVariant m_source; QString m_fallback; static QColor symbolicColor; }; #endif //UKUI_PANEL_THEME_ICON_H ukui-panel-4.0.0.4/plugin-taskbar/CMakeLists.txt0000644000175000017500000001001314564524546020044 0ustar fengfengset(PLUGIN "taskbar") set(HEADERS ukuitaskbutton.h ukuitaskgroup.h windowThumbnailModel.h windowThumbnailManager.h ukuitaskbar.h ukuitaskbarplugin.h iconTheme.h windowThumbnailView.h kbadge.h ) set(SOURCES ukuitaskbutton.cpp ukuitaskgroup.cpp windowThumbnailModel.cpp windowThumbnailManager.cpp ukuitaskbar.cpp ukuitaskbarplugin.cpp iconTheme.cpp qml.qrc windowThumbnailView.cpp kbadge.cpp ) find_package(QT NAMES Qt6 Qt5 COMPONENTS Core Widgets X11Extras LinguistTools DBus Quick Qml REQUIRED) find_package(KF5Wayland) find_package(KF5WindowSystem) find_package(KF5IconThemes) find_package(Qt5WaylandClient) find_package(PlasmaWaylandProtocols 1.6 REQUIRED) find_package(Qt5Xdg REQUIRED) find_package(ECM ${KF5_MIN_VERSION} REQUIRED NO_MODULE) set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake) include(FindQtWaylandScanner) add_subdirectory(window-thumbnail) add_subdirectory(ukui-panel-items) find_package(PkgConfig REQUIRED) set(UKUI_TASK_MANAGER_PC_PKGS kysdk-waylandhelper) foreach(external_lib IN ITEMS ${UKUI_TASK_MANAGER_PC_PKGS}) pkg_check_modules(${external_lib} REQUIRED IMPORTED_TARGET ${external_lib}) if(${${external_lib}_FOUND}) include_directories(${${external_lib}_INCLUDE_DIRS}) link_directories(${${external_lib}_LIBRARY_DIRS}) list(APPEND UKUI_TASK_MANAGER_EXTERNAL_LIBS PkgConfig::${external_lib}) endif() endforeach() pkg_check_modules(KDKINFO kysdk-sysinfo) if (KDKINFO_FOUND) ADD_DEFINITIONS(-DKDKINFO_FOUND="true") include_directories(${KDKINFO_INCLUDE_DIRS}) link_directories(${KDKINFO_LIBRARY_DIRS}) list(APPEND EXTERNAL_LIBS ${KDKINFO_LIBRARIES}) endif() pkg_check_modules(GIO-UNIX REQUIRED gio-unix-2.0) if (GIO-UNIX_FOUND) include_directories(${GIO-UNIX_INCLUDE_DIRS}) link_directories(${GIO-UNIX_LIBRARY_DIRS}) endif() #qt5_add_resources(qrc_FILES qmlItems.qrc) set(LIBRARIES Qt5Xdg Qt5X11Extras Qt${QT_VERSION_MAJOR}::Core Qt${QT_VERSION_MAJOR}::DBus Qt${QT_VERSION_MAJOR}::Widgets Qt${QT_VERSION_MAJOR}::Quick Qt${QT_VERSION_MAJOR}::X11Extras Qt${QT_VERSION_MAJOR}::Qml ${UKUI_TASK_MANAGER_EXTERNAL_LIBS} KF5::WindowSystem ) #加载翻译文件 file(GLOB TS_FILES "${PROJECT_SOURCE_DIR}/plugin-taskbar/translation/*.ts" ) #更新翻译文件并创建.qm文件 qt5_create_translation(QM_FILES ${PROJECT_SOURCE_DIR}/plugin-taskbar ${TS_FILES}) set(${PLUGIN}_QM_FILES ${QM_FILES}) BUILD_UKUI_PLUGIN(${PLUGIN}) #安装翻译文件 set(TASKBAR_TRANSLATION_DIR "${PACKAGE_DATA_DIR}/plugin-taskbar/translation") add_compile_definitions(TASKBAR_TRANSLATION_DIR="${TASKBAR_TRANSLATION_DIR}") install(FILES ${QM_FILES} DESTINATION ${TASKBAR_TRANSLATION_DIR}) #set(SignalForwarding_SRC # signalforwarding.cpp # waylandhelper.cpp # main.cpp # windowmanager/abstractinterface.cpp # windowmanager/waylandinterface.cpp # windowmanager/windowmanager.cpp # windowmanager/wmregister.cpp # windowmanager/xcbinterface.cpp #) # #set(WINDOW_THUMBNAIL_PLUGIN_PC_PKGS wayland-client) #foreach(external_lib IN ITEMS ${WINDOW_THUMBNAIL_PLUGIN_PC_PKGS}) # pkg_check_modules(${external_lib} REQUIRED IMPORTED_TARGET ${external_lib}) # if(${${external_lib}_FOUND}) # include_directories(${${external_lib}_INCLUDE_DIRS}) # link_directories(${${external_lib}_LIBRARY_DIRS}) # list(APPEND WINDOW_THUMBNAIL_PLUGIN_EXTERNAL_LIBS PkgConfig::${external_lib}) # endif() #endforeach() # #ecm_add_qtwayland_client_protocol(SignalForwarding_SRC # PROTOCOL ${PLASMA_WAYLAND_PROTOCOLS_DIR}/plasma-window-management.xml # BASENAME plasma-window-management #) # #add_executable(signalforwarding ${SignalForwarding_SRC}) # #target_link_libraries(signalforwarding PRIVATE # Qt5::Core # Qt5::Widgets # Qt5::DBus # KF5::WaylandClient # KF5::WindowSystem # KF5::IconThemes # Qt5::X11Extras # ${WINDOW_THUMBNAIL_PLUGIN_EXTERNAL_LIBS}) # #add_subdirectory(sample) ukui-panel-4.0.0.4/plugin-taskbar/ukuitaskbutton.cpp0000644000175000017500000004700714560306221021101 0ustar fengfeng/* * * * Copyright (C) 2023, KylinSoft Co., Ltd. * * * * This program is free software: you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation, either version 3 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program. If not, see . * * * * Authors: Nicole * */ #include #include #include "ukuitaskbutton.h" #include "../panel/common/common.h" #include "../panel/customstyle.h" UKUITaskButton::UKUITaskButton(const WindowId window, const QString desktopFile, QWidget *parent) : QToolButton(nullptr), m_timer(new QTimer(this)), m_windowId(window), m_desktopFileName(desktopFile), m_parent(parent) { this->setObjectName("UKUITaskButton-" + desktopFile); setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); setMinimumWidth(1); setMinimumHeight(1); setToolButtonStyle(Qt::ToolButtonIconOnly); setAcceptDrops(false); setProperty("useButtonPalette",true); setAutoRaise(true); setSystemStyle(); const QByteArray styleId(ORG_UKUI_STYLE); if (QGSettings::isSchemaInstalled(styleId)) { m_styleGsettings.reset(new QGSettings(styleId)); connect(m_styleGsettings.get(), &QGSettings::changed, this, [=] (const QString &key) { if (key == STYLE_NAME) { setSystemStyle(); } if (key == SYSTEM_FONT_SIZE) { updateCaption(); } }); } const QByteArray id(PANEL_SETTINGS); if (QGSettings::isSchemaInstalled(id)) { m_gsettings.reset(new QGSettings(id)); m_gsettingKeys = m_gsettings->keys(); if (m_gsettingKeys.contains(ICON_SIZE_KEY)) m_iconSize = m_gsettings->get(ICON_SIZE_KEY).toInt(); if (m_gsettingKeys.contains(GROUPING_ENABLE)) m_isGrouping = m_gsettings->get(GROUPING_ENABLE).toBool(); if (m_gsettingKeys.contains(PANEL_POSITION_KEY)) m_panelPosition = m_gsettings->get(PANEL_POSITION_KEY).toInt(); if (m_gsettingKeys.contains(PANEL_SIZE_KEY)) m_panelSize = m_gsettings->get(PANEL_SIZE_KEY).toInt(); setFixedSize(m_panelSize, m_panelSize); connect(m_gsettings.get(), &QGSettings::changed, this, [&] (const QString &key) { if (key == ICON_SIZE_KEY) { m_iconSize = m_gsettings->get(ICON_SIZE_KEY).toInt(); updateIcon(); } if (key == TASKBAR_BTN_SPAN) { updateCaption(); } if (key == GROUPING_ENABLE) { m_isGrouping = m_gsettings->get(GROUPING_ENABLE).toBool(); } if (key == PANEL_POSITION_KEY) { m_panelPosition = m_gsettings->get(PANEL_POSITION_KEY).toInt(); } if (key == PANEL_SIZE_KEY) { m_panelSize = m_gsettings->get(PANEL_SIZE_KEY).toInt(); } }); } updateCaption(); updateIcon(); m_timer->setTimerType(Qt::PreciseTimer); connect(m_timer, &QTimer::timeout, this, &UKUITaskButton::timeToEmit); connect(KWindowSystem::self(), static_cast(&KWindowSystem::windowChanged), this, &UKUITaskButton::onWindowChanged); m_hightlightAnimation = new QPropertyAnimation(this, "opacity"); m_hightlightAnimation->setDuration(2000); m_hightlightAnimation->setKeyValueAt(0, 255 * 0.6); m_hightlightAnimation->setKeyValueAt(0.5, 255 * 0.25); m_hightlightAnimation->setKeyValueAt(1,255 * 0.6); m_hightlightAnimation->setLoopCount(3); m_opacityStyle = new CustomStyle("attentionbutton",true); } UKUITaskButton::~UKUITaskButton() { if (m_gsettings) { m_gsettings.reset(nullptr); } if (m_act) { m_act.reset(nullptr); } if (m_styleGsettings) { m_styleGsettings.reset(nullptr); } if (m_hightlightAnimation) { delete m_hightlightAnimation; m_hightlightAnimation = nullptr; } if (m_opacityStyle) { delete m_opacityStyle; m_opacityStyle = nullptr; } } void UKUITaskButton::onWindowChanged(WId id, NET::Properties properties, NET::Properties2 properties2) { if (m_windowId.toUInt() != id || id == 0) { return; } if (properties.testFlag(NET::WMVisibleName) || properties.testFlag(NET::WMName)) { updateCaption(); } if (properties.testFlag(NET::WMIcon)) { updateIcon(); } KWindowInfo info(id, NET::WMState); if (info.state() & NET::DemandsAttention && !m_isDemandingAttention) { this->setStyle(m_opacityStyle); m_hightlightAnimation->start(); m_isDemandingAttention = true; } else if (info.state() & NET::Focused) { if(m_isDemandingAttention) { if(m_hightlightAnimation->state() & QAbstractAnimation::Running) { m_hightlightAnimation->stop(); } this->setStyle(new CustomStyle("taskbutton")); m_isDemandingAttention = false; } } } int UKUITaskButton::opacity() const { return m_alpha; } void UKUITaskButton::setOpacity(int alpha) { m_alpha = alpha; m_opacityStyle->setOpacity(alpha); this->update(); } WindowId UKUITaskButton::windowId() const { return m_windowId; } QString UKUITaskButton::desktopFileName() { return m_desktopFileName; } void UKUITaskButton::setDesktopFileName(QString desktopFileName) { m_desktopFileName = desktopFileName; } void UKUITaskButton::updateIcon() { if (m_windowId != 0) { m_icon = kdk::WindowManager::getWindowIcon(m_windowId); if (m_icon.isNull()) { qDebug() << "Window's icon is NULL. Get icon from desktop"; XdgDesktopFile xdg; if (xdg.load(m_desktopFileName)) { m_icon = xdg.icon(); } else { m_icon = QIcon::fromTheme("application-x-desktop"); } } setIcon(m_icon); setIconSize(QSize(m_iconSize, m_iconSize)); } else if (m_isPinned) { quickLaunchAction(); } } void UKUITaskButton::updateCaption() { m_caption = kdk::WindowManager::getWindowTitle(m_windowId); int btnspan = 1; int panelsize = 46; if (m_gsettingKeys.contains(TASKBAR_BTN_SPAN) && m_gsettingKeys.contains(PANEL_SIZE_KEY)) { btnspan = m_gsettings->get(TASKBAR_BTN_SPAN).toInt(); panelsize = m_gsettings->get(PANEL_SIZE_KEY).toInt(); } QString formatAppName = this->fontMetrics().elidedText(m_caption, Qt::ElideRight, panelsize * (btnspan - 1)); this->setText(formatAppName); } bool UKUITaskButton::isLeaderWindow() { return this->isActiveWindow(); } bool UKUITaskButton::isActiveWindow() { return m_windowId == kdk::WindowManager::currentActiveWindow(); } bool UKUITaskButton::isOnCurrentDesktop() { return kdk::WindowManager::isOnCurrentDesktop(m_windowId); } void UKUITaskButton::refreshIconGeometry() { QString platform = QGuiApplication::platformName(); if (platform.startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) { return; } float scale = qApp->devicePixelRatio(); QRect rect = geometry(); rect.moveTo(mapToGlobal(QPoint(0, 0)).x() * scale, mapToGlobal(QPoint(0, 0)).y() * scale); NETWinInfo info(QX11Info::connection(), windowId().toInt(), (WId) QX11Info::appRootWindow(), NET::WMIconGeometry, 0); NETRect const curr = info.iconGeometry(); if (curr.pos.x != rect.x() || curr.pos.y != rect.y() || curr.size.width != rect.width() || curr.size.height != rect.height()) { NETRect nrect; nrect.pos.x = rect.x(); nrect.pos.y = rect.y(); nrect.size.height = rect.height(); nrect.size.width = rect.width(); info.setIconGeometry(nrect); } } void UKUITaskButton::activeWindow() { if (this->isActiveWindow()) { minimizeWindow(); } else { kdk::WindowManager::activateWindow(m_windowId); setUrgencyHint(false); } } void UKUITaskButton::minimizeWindow() { kdk::WindowManager::minimizeWindow(m_windowId); } void UKUITaskButton::closeWindow() { kdk::WindowManager::closeWindow(m_windowId); } void UKUITaskButton::quickLaunchAction() { XdgDesktopFile xdg; if (xdg.load(m_desktopFileName)) { QString appName = xdg.localizedValue("Name[" + QLocale::system().name() + "]").toString(); if (appName.isEmpty()) { appName = xdg.localizedValue("Name").toString(); } QIcon appIcon = QIcon::fromTheme(xdg.localizedValue("Icon").toString()); if (appIcon.isNull()) { appIcon = xdg.icon(); } if (appIcon.isNull()) { qDebug() << "Can't get icon from desktop"; appIcon = QIcon::fromTheme("application-x-desktop");; } m_act.reset(new QAction()); m_act->setText(appName); m_act->setIcon(appIcon); m_act->setData(xdg.fileName()); if (this->icon().isNull()) { this->setIcon(appIcon); } this->setIconSize(QSize(m_iconSize, m_iconSize)); connect(m_act.get(), &QAction::triggered, this, [this](){ execAction(); }); } } void UKUITaskButton::execAction(QString additionalAction) { XdgDesktopFile xdg; if (xdg.load(m_desktopFileName)) { if (additionalAction.isEmpty()) { QDBusInterface iface("com.kylin.ProcessManager", "/com/kylin/ProcessManager/AppLaunche", "com.kylin.ProcessManager.AppLauncher", QDBusConnection::sessionBus()); QDBusReply reply; if (iface.isValid()) { reply = iface.call("LaunchApp", m_desktopFileName); } if (!iface.isValid() || !reply.isValid() || !reply) { qDebug() << "AppManager Interface is Not Valid! Use GIO Interface instead."; GDesktopAppInfo *appinfo = g_desktop_app_info_new_from_filename(xdg.fileName().toStdString().data()); if (!g_app_info_launch_uris(G_APP_INFO(appinfo), nullptr, nullptr, nullptr)) { qWarning() << "XdgDesktopFile" << m_desktopFileName << "is not valid!"; } g_object_unref(appinfo); } } else { if (!xdg.actionActivate(additionalAction, QStringList{})) { qDebug() << "Can't activate additionalAction:" << additionalAction; } } } } void UKUITaskButton::getAdditionalActions() { for (QAction *act : qAsConst(m_additionalActionsList)) { delete act; act = nullptr; } m_additionalActionsList.clear(); XdgDesktopFile xdg; if (xdg.load(m_desktopFileName)) { if (xdg.actions().isEmpty()) { return; } for (auto const & action : const_cast(xdg.actions())) { QAction *act = new QAction(xdg.actionIcon(action), xdg.actionName(action), this); if (m_act->icon().isNull()) { m_act->setIcon(act->icon()); } act->setData(action); connect(act, &QAction::triggered, [this, act](){ execAction(act->data().toString()); }); m_additionalActionsList.push_back(act); } } } void UKUITaskButton::onButtonsCountChanged(int buttonsCount) { m_buttonsCount = buttonsCount; repaint(); } void UKUITaskButton::onButtonsStatusChanged(bool isPinned) { m_isPinned = isPinned; } void UKUITaskButton::paintEvent(QPaintEvent *event) { QToolButton::paintEvent(event); QStyleOption option; option.initFrom(this); QPainter painter(this); if (m_gsettingKeys.contains(GROUPING_ENABLE)) m_isGrouping = m_gsettings->get(GROUPING_ENABLE).toBool(); if (m_isGrouping) { if (m_buttonsCount > 1) { painter.setRenderHint(QPainter::Antialiasing, true); painter.setPen(QPen(option.palette.color(QPalette::Highlight), 4, Qt::SolidLine, Qt::RoundCap)); painter.drawLine(QPoint(option.rect.center().x() - 6, option.rect.bottomLeft().y() - 3), QPoint(option.rect.center().x() + 6, option.rect.bottomLeft().y() - 3)); } else if (m_buttonsCount == 1) { painter.setRenderHint(QPainter::Antialiasing, true); painter.setPen(QPen(option.palette.color(QPalette::Highlight), 4, Qt::SolidLine, Qt::RoundCap)); painter.drawLine(QPoint(option.rect.center().x() - 2, option.rect.bottomLeft().y() - 3), QPoint(option.rect.center().x() + 2, option.rect.bottomLeft().y() - 3)); } } else { if (m_buttonsCount > 0) { QColor color = palette().color(QPalette::BrightText); color.setAlphaF(0.15); QBrush brush = QBrush(color); painter.setPen(QPen(brush, 1, Qt::SolidLine, Qt::RoundCap)); painter.drawRoundedRect(option.rect.adjusted(2, 2, -2,- 2), 6, 6); } } } void UKUITaskButton::mouseReleaseEvent(QMouseEvent* event) { if (event->button() == Qt::LeftButton) { if (m_buttonsCount == 0) { this->execAction(); } else { if (m_buttonsCount == 1 || !m_isGrouping) { refreshIconGeometry(); if (isActiveWindow()) { minimizeWindow(); } else { activeWindow(); } } else { // TODO: show thumbnails } } } QToolButton::mouseReleaseEvent(event); } void UKUITaskButton::mousePressEvent(QMouseEvent *event) { event->setAccepted(false); } void UKUITaskButton::enterEvent(QEvent *e) { if (m_isGrouping) { e->setAccepted(false); return; } m_taskBtnEvent = ENTEREVENT; if (m_timer->isActive()) { m_timer->stop(); } m_timer->start(400); QToolButton::enterEvent(e); } void UKUITaskButton::leaveEvent(QEvent *e) { if (m_isGrouping) { e->setAccepted(false); return; } m_taskBtnEvent = LEAVEEVENT; if (m_timer->isActive()) { m_timer->stop(); } m_timer->start(400); QToolButton::leaveEvent(e); } void UKUITaskButton::contextMenuEvent(QContextMenuEvent *e) { QMenu *rightMenu = new QMenu(this); rightMenu->setAttribute(Qt::WA_DeleteOnClose); //desktop文件无法解析,不存在或者NoDisplay值为true,右键菜单仅显示退出 XdgDesktopFile xdg; if (!xdg.load(m_desktopFileName) || m_desktopFileName.isEmpty()) { qDebug() << "Can't load desktop:" << m_desktopFileName; rightMenuCloseAction(rightMenu, e->pos()); return; } if (xdg.localizedValue("NoDisplay").toBool()) { qDebug() << "NoDisplay:" << xdg.localizedValue("NoDisplay").toBool(); rightMenuCloseAction(rightMenu, e->pos()); return; } quickLaunchAction(); rightMenu->addAction(m_act.get()); getAdditionalActions(); if (m_additionalActionsList.size() > 0) { rightMenu->addActions(m_additionalActionsList); } rightMenu->addSeparator(); if (m_isPinned) { QAction *unpinAct = rightMenu->addAction(QIcon::fromTheme("ukui-unfixed-symbolic"), tr("Unpin from taskbar")); connect(unpinAct, &QAction::triggered, [this](){ emit unPinFromTaskbar(m_desktopFileName);}); } else { QAction *pinAct = rightMenu->addAction(QIcon::fromTheme("ukui-fixed-symbolic"), tr("Pin to taskbar")); connect(pinAct, &QAction::triggered, [this](){ emit pinToTaskbar(m_desktopFileName);}); } rightMenuCloseAction(rightMenu, e->pos()); QObject::connect(rightMenu, &QMenu::destroyed, this, [&](){ this->setAttribute(Qt::WA_UnderMouse, false); this->setDown(false); this->update(); }); } void UKUITaskButton::timeToEmit() { if (m_timer->isActive()) { m_timer->stop(); } QList winIdList; winIdList.append(m_windowId); QPoint abs = mapToGlobal(QPoint(0, 0)); switch (m_taskBtnEvent) { case ENTEREVENT: if (isHorizontalPanel()) { int buttonCenterPositionX = abs.x() + this->width() / 2; emit enterButton(winIdList, "", buttonCenterPositionX, 0); } else { int buttonCenterPositionY = abs.y() + this->height() / 2; emit enterButton(winIdList, "", 0, buttonCenterPositionY); } break; case LEAVEEVENT: if (isHorizontalPanel()) { int buttonCenterPositionX = abs.x() + this->width() / 2; emit leaveButton(winIdList, "", buttonCenterPositionX, 0); } else { int buttonCenterPositionY = abs.y() + this->height() / 2; emit leaveButton(winIdList, "", 0, buttonCenterPositionY); } break; case OTHEREVENT: default: break; } } void UKUITaskButton::rightMenuCloseAction(QMenu *menu, QPoint pos) { if (m_buttonsCount > 0) { menu->addSeparator(); QAction *closeAct = menu->addAction(QIcon::fromTheme("application-exit-symbolic"), tr("close")); connect(closeAct, &QAction::triggered, [this](){ emit closeGroup();}); } menu->setGeometry(caculateMenuPosition(mapToGlobal(pos), menu->sizeHint())); menu->show(); } QRect UKUITaskButton::caculateMenuPosition(const QPoint &absolutePos, const QSize &windowSize) { int x = absolutePos.x(), y = absolutePos.y(); QRect screen = QApplication::desktop()->screenGeometry(this); switch (m_panelPosition) { case PanelPosition::Top: y = m_panelSize; break; case PanelPosition::Bottom: y = screen.height() - m_panelSize - windowSize.height(); break; case PanelPosition::Left: x = m_panelSize; break; case PanelPosition::Right: x = screen.width() - m_panelSize - windowSize.width(); break; } QRect res(QPoint(x, y), windowSize); if (res.right() > screen.right()) res.moveRight(screen.right()); if (res.bottom() > screen.bottom()) res.moveBottom(screen.bottom()); if (res.left() < screen.left()) res.moveLeft(screen.left()); if (res.top() < screen.top()) res.moveTop(screen.top()); return res; } bool UKUITaskButton::isHorizontalPanel() { return m_panelPosition == PanelPosition::Bottom || m_panelPosition == PanelPosition::Top; } void UKUITaskButton::setSystemStyle() { QPalette pal = this->palette(); QColor col = pal.color(QPalette::Active, QPalette::BrightText); col.setAlphaF(0.13); pal.setColor(QPalette::Button, col); this->setPalette(pal); } void UKUITaskButton::setUrgencyHint(bool set) { if (m_urgencyHint == set) { return; } if (!set) { qWarning() << "qApp->platformName()" << qApp->platformName(); if (qApp->platformName().contains("xcb")) KWindowSystem::demandAttention(this->m_windowId.toUInt(), false); else qWarning() << "wayland not support now"; } m_urgencyHint = set; setProperty("urgent", set); style()->unpolish(this); style()->polish(this); update(); } ukui-panel-4.0.0.4/plugin-taskbar/windowThumbnailModel.cpp0000644000175000017500000001307514560306203022137 0ustar fengfeng/* * * * Copyright (C) 2023, KylinSoft Co., Ltd. * * * * This program is free software: you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation, either version 3 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program. If not, see . * * * * Authors: Nicole * * zyy * */ #include #include #include #include "windowThumbnailModel.h" //=================== Item =================== ThumbnailModelItem::ThumbnailModelItem(const ThumbnailItem &thumbnail) { setData(thumbnail); } QVariant ThumbnailModelItem::winId() const { return m_data.m_winId; } QString ThumbnailModelItem::groupName() const { return m_data.m_groupName; } void ThumbnailModelItem::setData(const ThumbnailItem &thumbnail) { m_data = thumbnail; } //=================== Model =================== class ThumbnailModelPrivate { public: QString m_currentGroupName; QList m_currentWinIDList; QVector m_thumbnails; }; ThumbnailModel *ThumbnailModel::instance() { static ThumbnailModel instance; return &instance; } ThumbnailModel::ThumbnailModel(QObject *parent) : QAbstractListModel(parent), d(new ThumbnailModelPrivate) { } ThumbnailModel::~ThumbnailModel() { if(d) { delete d; d = nullptr; } } QVariant ThumbnailModel::data(const QModelIndex &index, int role) const { if (index.row() < 0 || index.row() > d->m_thumbnails.count()) { return {}; } const ThumbnailModelItem &item = d->m_thumbnails[index.row()]; switch (role) { default: case Qt::UserRole: return item.winId(); break; } return {}; } int ThumbnailModel::rowCount(const QModelIndex &parent) const { Q_UNUSED(parent); return d->m_thumbnails.count(); } void ThumbnailModel::setModelData(const QList &data, const QString &groupName) { if (!d->m_thumbnails.isEmpty()) { d->m_thumbnails.clear(); } d->m_currentGroupName = groupName; ThumbnailItem win; win.m_groupName = groupName; for (QVariant id : data) { win.m_winId = id; ThumbnailModelItem item(win); d->m_thumbnails.append(std::move(item)); } } void ThumbnailModel::clear() { beginRemoveRows(QModelIndex(), 0, d->m_thumbnails.count()); d->m_thumbnails.clear(); endRemoveRows(); } QList ThumbnailModel::getGroupWIndowList(QString groupName) { d->m_currentWinIDList.clear(); if (groupName == d->m_currentGroupName) { for (const ThumbnailModelItem var : d->m_thumbnails) { d->m_currentWinIDList.append(var.winId()); } return d->m_currentWinIDList; } else { return {}; } } void ThumbnailModel::closeWindow(const QVariant &winId) { kdk::WindowManager::closeWindow(winId); onWindowRemoved(winId); } void ThumbnailModel::activateWindow(const QVariant &winId) { kdk::WindowManager::activateWindow(winId); } QString ThumbnailModel::getWindowTitle(const QVariant &winId) { return kdk::WindowManager::getWindowTitle(winId); } QIcon ThumbnailModel::getWindowIcon(const QVariant &winId) { return kdk::WindowManager::getWindowIcon(winId); } QString ThumbnailModel::getWindowUuid(const QVariant &winId) { //to do 需要等底层实现 return QString("WindowUuid"); } void ThumbnailModel::onWIndowAdded(const QVariant &winId, const QString &groupName) { if (d->m_currentGroupName != groupName) { //非当前预览窗口 return; } int index = findThumbnailIndex(winId); if (index >= 0) { // 已经存在预览图窗口,更新 updateWindow(index, winId, groupName); return; } ThumbnailItem win; win.m_winId = winId; win.m_groupName = groupName; ThumbnailModelItem item(win); // 插入数据 beginInsertRows(QModelIndex(), d->m_thumbnails.count(), d->m_thumbnails.count()); d->m_thumbnails.append(std::move(item)); endInsertRows(); Q_EMIT updateWinIdList(getGroupWIndowList(d->m_currentGroupName)); } void ThumbnailModel::onWindowRemoved(const QVariant &winId) { int index = findThumbnailIndex(winId); if (index < 0) { return; } //删除数据 beginRemoveRows(QModelIndex(), index, index); d->m_thumbnails.removeAt(index); endRemoveRows(); Q_EMIT updateWinIdList(getGroupWIndowList(d->m_currentGroupName)); } void ThumbnailModel::updateWindow(int row, const QVariant &winId, const QString &groupName) { Q_UNUSED(winId); Q_UNUSED(groupName); // ThumbnailModelItem &item = d->m_thumbnails[row]; // item.setData(winId, groupName); Q_EMIT dataChanged(index(row), index(row)); } void ThumbnailModel::updateModeData() { } int ThumbnailModel::findThumbnailIndex(const QVariant winId) const { auto it = std::find_if(d->m_thumbnails.constBegin(), d->m_thumbnails.constEnd(), [&winId] (const ThumbnailModelItem &item) { return item.winId() == winId; }); if (it == d->m_thumbnails.constEnd()) { return -1; } return std::distance(d->m_thumbnails.constBegin(), it); } ukui-panel-4.0.0.4/plugin-taskbar/iconTheme.cpp0000644000175000017500000000144014560306203017707 0ustar fengfeng/* * * * Copyright (C) 2023, KylinSoft Co., Ltd. * * * * This program is free software: you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation, either version 3 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program. If not, see . * * * * Authors: Nicole * */ ukui-panel-4.0.0.4/plugin-taskbar/qml.qrc0000644000175000017500000000022014560306203016563 0ustar fengfeng qml/thumbnailView.qml qml/StyleScrollBar.qml ukui-panel-4.0.0.4/plugin-taskbar/kbadge.cpp0000644000175000017500000001061414560306221017214 0ustar fengfeng/* * Copyright (C) 2022, KylinSoft Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * Authors: Nicole * */ #include "kbadge.h" #include #include #include #include #include #include class KBadgePrivate:public QObject { Q_OBJECT Q_DECLARE_PUBLIC(KBadge) public: KBadgePrivate(KBadge* parent); private: KBadge* q_ptr; QColor m_color; int m_value; int m_fontSize; bool m_isShowValue; QRect m_rect; QSize m_size; }; KBadgePrivate::KBadgePrivate(KBadge *parent) :q_ptr(parent) { Q_Q(KBadge); m_value = -1; m_color = q->palette().color(QPalette::Highlight); m_fontSize = 8; m_isShowValue = true; m_rect = QRect(0,0,40,30); } KBadge::KBadge(QWidget *parent) :QToolButton(parent), d_ptr(new KBadgePrivate(this)) { Q_D(KBadge); } QRect KBadge::geometry() { Q_D(KBadge); return d->m_rect; } void KBadge::setGeometry(QRect rect) { Q_D(KBadge); d->m_rect = rect; } void KBadge::setValue(int value) { Q_D(KBadge); d->m_value = value; } void KBadge::setValueVisiable(bool flag) { Q_D(KBadge); d->m_isShowValue = flag; } bool KBadge::isValueVisiable() const { Q_D(const KBadge); return d->m_isShowValue; } int KBadge::value() { Q_D(KBadge); return d->m_value; } QColor KBadge::color() { Q_D(KBadge); return d->m_color; } void KBadge::setColor(const QColor &color) { Q_D(KBadge); d->m_color = color; } int KBadge::fontSize() { Q_D(KBadge); return d->m_fontSize; } void KBadge::setFontSize(int size) { Q_D(KBadge); if(size<1 ||size >100) return; d->m_fontSize = size; updateSize(); } QSize KBadge::updateSize() { Q_D(KBadge); QFont font(QApplication::font()); font.setPixelSize(d->m_fontSize); QFontMetrics fm(font); int height = fm.height(); if (height < 14 ) { height = 14; } int width; if(d->m_value <1 ||!d->m_isShowValue) { this->setVisible(false); } else if(d->m_value >= 1 && d->m_value < 100) { width = fm.width(QString::number(d->m_value)) + 10; width = width > height ? width:height; } else { width = fm.width(QString::number(999)) + 10; width = width > height ? width:height; } this->setFixedSize(QSize(width,height)); //qDebug()<<"=======update kbadge size"<m_color); QRect tmpRect(0, 0, width, height); painter.drawRoundedRect(tmpRect, height/2, height/2); //文字颜色固定 painter.setPen(QToolButton::palette().color(QPalette::Light)); if(d->m_value >= 1 && d->m_value<100 && d->m_isShowValue) { QFont font(QApplication::font()); font.setPixelSize(d->m_fontSize); if (font.family() != QString("Noto Sans CJK SC")) { font.setBold(true); } painter.setFont(font); painter.drawText(tmpRect,Qt::AlignCenter,QString::number(d->m_value)); } if(d->m_value >= 100 && d->m_value < INTMAX_MAX && d->m_isShowValue) { QFont font(QApplication::font()); font.setPixelSize(d->m_fontSize); if (font.family() != QString("Noto Sans CJK SC")) { font.setBold(true); } painter.setFont(font); painter.drawText(tmpRect,Qt::AlignCenter,QString("99+")); } } void KBadge::resizeEvent(QResizeEvent *event) { QToolButton::resizeEvent(event); repaint(); } #include "kbadge.moc" ukui-panel-4.0.0.4/plugin-taskbar/windowThumbnailModel.h0000644000175000017500000000703114560306203021577 0ustar fengfeng/* * * * Copyright (C) 2023, KylinSoft Co., Ltd. * * * * This program is free software: you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation, either version 3 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program. If not, see . * * * * Authors: Nicole * * zyy * */ #ifndef WINDOW_THUMBNAIL_MODEL_H #define WINDOW_THUMBNAIL_MODEL_H #include #include #include #include using namespace kdk; class ThumbnailItem { public: QVariant m_winId; QString m_groupName; }; class ThumbnailModelItem { Q_GADGET public: ThumbnailModelItem() = default; explicit ThumbnailModelItem(const ThumbnailItem &thumbnail); ~ThumbnailModelItem() = default; QVariant winId() const; QString groupName() const; void setData(const ThumbnailItem &thumbnail); private: ThumbnailItem m_data; }; //----------------Model------------------ class ThumbnailModelPrivate; class ThumbnailModel : public QAbstractListModel { Q_OBJECT public: static ThumbnailModel *instance(); ~ThumbnailModel(); QVariant data(const QModelIndex &index, int role) const override; int rowCount(const QModelIndex &parent) const override; /** * @brief 初始化model数据 * @param data */ void setModelData(const QList &data, const QString &groupName); /** * @brief 清除model */ Q_INVOKABLE void clear(); Q_INVOKABLE QList getGroupWIndowList(QString groupName); /** * 关闭窗口 * @param winId */ Q_INVOKABLE void closeWindow(const QVariant &winId); /** * 激活窗口 * @param winId */ Q_INVOKABLE void activateWindow(const QVariant &winId); /** * 窗口标题 * @param winId * @return */ Q_INVOKABLE QString getWindowTitle(const QVariant &winId); /** * 窗口图标 * @param winId * @return */ Q_INVOKABLE QIcon getWindowIcon(const QVariant &winId); /** * @brief 窗口uuid * @param winId * @return */ Q_INVOKABLE QString getWindowUuid(const QVariant &winId); //private Q_SLOTS: public Q_SLOTS: /** * @brief 预览图窗口的增加 * @param winId */ void onWIndowAdded(const QVariant &winId, const QString &groupName); /** * @brief 预览图窗口的减少 * @param winId */ void onWindowRemoved(const QVariant &winId); /** * @brief 预览图窗口的更新 * @param winId */ void updateWindow(int row, const QVariant &winId, const QString &groupName); /** * @brief 悬浮不同的group时更新model中的data信息 */ void updateModeData(); private: explicit ThumbnailModel(QObject *parent = nullptr); // 查找预览图在数组中的索引 int findThumbnailIndex(const QVariant winId) const; ThumbnailModelPrivate *d = nullptr; Q_SIGNALS: void updateWinIdList(QList viewModel); }; #endif //WINDOW_THUMBNAIL_MODEL_H ukui-panel-4.0.0.4/plugin-taskbar/resources/0000755000175000017500000000000014560306203017303 5ustar fengfengukui-panel-4.0.0.4/plugin-taskbar/resources/taskbar.desktop.in0000644000175000017500000000026214560306203022732 0ustar fengfeng[Desktop Entry] Type=Service ServiceTypes=UKUIPanel/Plugin Name=Task manager Comment=Switch between running applications Icon=window-duplicate #TRANSLATIONS_DIR=../translations ukui-panel-4.0.0.4/plugin-taskbar/resources/name-icon.match0000644000175000017500000001472314560306203022176 0ustar fengfengname=Apabi Reader ; icon=com.founder.apabi.reader name=斗鱼 ; icon=air.tv.douyu.android name=咪咕音乐 ; icon=cmccwm.mobilemusic name=新浪财经 ; icon=cn.; icon=com.sina.finance name=大麦 ; icon=cn.damai name=WPS ; icon=Office cn.wps.moffice_eng name=学习强国 ; icon=cn.xuexi.android name=铁路12306 ; icon=com.MobileTicket name=唯品会 ; icon=com.achievo.vipshop name=钉钉 ; icon=com.alibaba.android.rimet name=阿里云盘 ; icon=com.alicloud.databox name=百度网盘 ; icon=com.baidu.netdisk name=百度 ; icon=com.baidu.searchbox name=百度贴吧 ; icon=com.baidu.tieba name=菜鸟 ; icon=com.cainiao.wireless name=跳舞的线 ; icon=com.cmplay.dancingline name=汽车之家 ; icon=com.cubic.autohome name=每日瑜伽 ; icon=com.dailyyoga.cn name=大众点评 ; icon=com.dianping.v1 name=电视家 ; icon=com.dianshijia.tvlive name=豆瓣 ; icon=com.douban.frodo name=豆果美食 ; icon=com.douguo.recipe name=虎牙直播 ; icon=com.duowan.kiwi name=YY ; icon=com.duowan.mobile name=保卫萝卜3 ; icon=com.feiyu.carrot3 name=CAD看图王 ; icon=com.gstarmc.android name=开心消消乐® ; icon=com.happyelements.AndroidAnimal name=同花顺 ; icon=com.hexin.plat.android name=WeLink ; icon=com.huawei.welink name=芒果TV ; icon=com.hunantv.imgo.activity name=京东 ; icon=com.jingdong.app.mall name=前程无忧51job ; icon=com.job.android name=驾校一点通 ; icon=com.jxedt name=酷狗音乐 ; icon=com.kugou.android name=贝壳找房 ; icon=com.lianjia.beike name=蓝信+ ; icon=com.lite.lanxin name=流利说-英语 ; icon=com.liulishuo.engzo name=网易云音乐 ; icon=com.netease.cloudmusic name=网易邮箱 ; icon=com.netease.mobimail name=网易新闻 ; icon=com.netease.newsreader.activity name=向日葵远程控制 ; icon=com.oray.sunlogin name=我的汤姆猫 ; icon=com.outfit7.mytalkingtomfree name=汤姆猫跑酷 ; icon=com.outfit7.talkingtomgoldrun.wdj name=爱奇艺 ; icon=com.qiyi.video name=腾讯微云 ; icon=com.qq.qcloud name=欢乐麻将全集 ; icon=com.qqgame.happymj name=欢乐斗地主 ; icon=com.qqgame.hlddz name=美团 ; icon=com.sankuai.meituan name=网上国网 ; icon=com.sgcc.wsgw.cn name=得物(毒) ; icon=com.shizhuang.duapp name=新浪新闻 ; icon=com.sina.news name=绿洲 ; icon=com.sina.oasis name=微博 ; icon=com.sina.weibo name=快手 ; icon=com.smile.gifmaker name=今日头条 ; icon=com.ss.android.article.news name=西瓜视频 ; icon=com.ss.android.article.video name=懂车帝 ; icon=com.ss.android.auto name=抖音 ; icon=com.ss.android.ugc.aweme name=苏宁易购 ; icon=com.suning.mobile.ebuy name=皮皮虾 ; icon=com.sup.android.superb name=闲鱼 ; icon=com.taobao.idlefish name=飞猪旅行 ; icon=com.taobao.trip name=QQ邮箱 ; icon=com.tencent.androidqqmail name=腾讯课堂 ; icon=com.tencent.edu name=微信 ; icon=com.tencent.mm name=QQ ; icon=com.tencent.mobileqq name=QQ浏览器 ; icon=com.tencent.mtt name=腾讯新闻 ; icon=com.tencent.news name=天天爱消除 ; icon=com.tencent.peng name=欢乐升级 ; icon=com.tencent.qqgame.qqhlupwvga name=天天象棋 ; icon=com.tencent.qqgame.xq name=QQ极速版 ; icon=com.tencent.qqlite name=腾讯视频 ; icon=com.tencent.qqlive name=QQ音乐 ; icon=com.tencent.qqmusic name=腾讯体育 ; icon=com.tencent.qqsports name=和平精英 ; icon=com.tencent.tmgp.pubgmhd name=王者荣耀 ; icon=com.tencent.tmgp.sgame name=QQ飞车 ; icon=com.tencent.tmgp.speedmobile name=腾讯会议 ; icon=com.tencent.wemeet.app name=企业微信 ; icon=com.tencent.wework name=手机天猫 ; icon=com.tmall.wireless name=交管12123 ; icon=com.tmri.app.main name=航旅纵横 ; icon=com.umetrip.android.msky.app name=盒马 ; icon=com.wudaokou.hippo name=下厨房 ; icon=com.xiachufang name=香哈菜谱 ; icon=com.xiangha name=喜马拉雅 ; icon=com.ximalaya.ting.android name=小红书 ; icon=com.xingin.xhs name=迅雷 ; icon=com.xunlei.downloadprovider name=拼多多 ; icon=com.xunmeng.pinduoduo name=易车 ; icon=com.yiche.autoeasy name=印象笔记 ; icon=com.yinxiang name=网易有道词典 ; icon=com.youdao.dict name=有道云笔记 ; icon=com.youdao.note name=优酷视频 ; icon=com.youku.phone name=Gaaiho PDF ; icon=com.zeon.Gaaiho.Reader name=智联招聘 ; icon=com.zhaopin.social name=知乎 ; icon=com.zhihu.android name=携程旅行 ; icon=ctrip.android.view name=蜻蜓FM ; icon=fm.qingting.qtradio name=樊登读书 ; icon=io.dushu.fandengreader name=会见 ; iconorg.suirui.huijian.video name=哔哩哔哩 ; icon=tv.danmaku.bili name=i罗湖 ; icon=cn.gov.szlh.ilh name=福务通 ; icon=com.fdg.csp name=i深圳 ; icon=com.pingan.smt name=深圳天气 ; icon=com.sz.china.weather name=健康深圳 ; icon=com.xky.app.patient name=粤政易 ; icon=com.zwfw.YueZhengYi name=抖音极速版 ; icon=com.ss.android.ugc.aweme.lite name=今日头条极速版 ; icon=com.ss.android.article.lite name=快手极速版 ; icon=com.kuaishou.nebula name=百度极速版 ; icon=com.baidu.searchbox.lite name=爱奇艺极速版 ; icon=com.qiyi.video.lite name=喜马拉雅极速版 ; icon=com.ximalaya.ting.lite name=京东极速版 ; icon=com.jd.jdlite name=微博极速版 ; icon=com.sina.weibolite name=微博国际版 ; icon=com.weico.international name=贴吧极速版 ; icon=com.baidu.tieba_mini name=UC浏览器极速版 ; icon=com.ucmobile.lite name=斗鱼极速版 ; icon=com.douyu.rush name=皮皮虾极速版 ; icon=com.sup.android.slite name=驾考宝典极速版 icon=jiakaokesi.app.good name=驾校一点通极速版 ; icon=com.jxedtjsb name=汽车之家极速版 ; icon=com.autohome.speed name=易车极速版 ; icon=com.yiche.autofast name=央视影音 cn.cntv name=好信云会议 ; icon=com.lc.hx name=中国移动 ; icon=com.greenpoint.android.mc10086.activity name=中国联通 ; icon=com.sinovatech.unicom.ui name=中国建设银行 ; icon=com.chinamworld.main name=个人所得税 ; icon=cn.gov.tax.its name=手机天猫 ; icon=com.tmall.wireless name=美篇 ; icon=com.lanjingren.ivwen ukui-panel-4.0.0.4/plugin-taskbar/ukuitaskbarplugin.h0000644000175000017500000000365414560306203021216 0ustar fengfeng/* * * * Copyright (C) 2023, KylinSoft Co., Ltd. * * * * This program is free software: you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation, either version 3 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program. If not, see . * * * * Authors: Nicole * */ #ifndef UKUITASKBARPLUGIN_H #define UKUITASKBARPLUGIN_H #include "../panel/iukuipanel.h" #include "../panel/iukuipanelplugin.h" #include "ukuitaskbar.h" #include #include #include class UKUITaskBar; class UKUITaskBarPlugin : public QObject, public IUKUIPanelPlugin { Q_OBJECT public: UKUITaskBarPlugin(const IUKUIPanelPluginStartupInfo &startupInfo); ~UKUITaskBarPlugin(); QString themeId() const { return "TaskBar"; } virtual Flags flags() const { return HaveConfigDialog | NeedsHandle; } QWidget *widget() { return m_taskBar; } void realign(); bool isSeparate() const { return true; } bool isExpandable() const { return true; } private: void translator(); private: UKUITaskBar *m_taskBar; }; class UKUITaskBarPluginLibrary: public QObject, public IUKUIPanelPluginLibrary { Q_OBJECT Q_PLUGIN_METADATA(IID "ukui.org/Panel/PluginInterface/3.0") Q_INTERFACES(IUKUIPanelPluginLibrary) public: IUKUIPanelPlugin *instance(const IUKUIPanelPluginStartupInfo &startupInfo) const { return new UKUITaskBarPlugin(startupInfo);} }; #endif // UKUITASKBARPLUGIN_H ukui-panel-4.0.0.4/plugin-taskbar/ukuitaskgroup.h0000644000175000017500000000712314560306203020362 0ustar fengfeng/* * * * Copyright (C) 2023, KylinSoft Co., Ltd. * * * * This program is free software: you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation, either version 3 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program. If not, see . * * * * Authors: Nicole * */ #ifndef UKUITASKGROUP_H #define UKUITASKGROUP_H #include #include #include #include "ukuitaskbutton.h" #include "../panel/common/ukuigridlayout.h" #include "../panel/common/common.h" #include "kbadge.h" class UKUi::GridLayout; class UKUITaskButton; class UKUITaskGroup: public QWidget { Q_OBJECT public: UKUITaskGroup(const QString & groupName, const QString & desktopFileName, QWidget *parent); virtual ~UKUITaskGroup(); enum PanelPosition { Bottom = 0, //!< The bottom side of the screen. Top, //!< The top side of the screen. Left, //!< The left side of the screen. Right //!< The right side of the screen. }; QString getGroupName(); QString getDesktopFileName(); void setDesktopFileName(QString desktopFileName); QMap> getButtonsInfo(); bool isPinned(); void addWindow(WindowId window); void removeWindow(WindowId window); void changeButtonsCount(); bool isHorizontalPanel(); bool isOnlyPinned(); void refreshButtonsVisible(); void setButtonsStyle(std::shared_ptr btn); void changeButtonsStatus(); void onExpandModeChanged(bool isGrouping); void calculGroupSize(); void changeButtonsSize(); void realign(); bool isHaveCornerMark(); void setHaveCornerMark(bool isHave); KBadge *getKbadge(); void newKbage(); public Q_SLOTS: void pinToTaskbar(QString desktopFileName); void unpinFromTaskbar(QString desktopFileName); void closeAllWindowInGroup(); void appsCornerMarkChangedSlot(QString arg, int value); void setCornerMarkSize(); void timeToEmit(); void onCurrentDesktopChanged(); Q_SIGNALS: void pinToTaskbarSignal(QString desktopFileName); void unpinFromTaskbarSignal(QString desktopFileName); void enterGroup(QList, QString groupName, int x, int y); void leaveGroup(QString groupName); protected: void enterEvent(QEvent *e); void leaveEvent(QEvent *e) override; void mousePressEvent(QMouseEvent *event) override; private: QString m_groupName; QString m_desktopFileName; QWidget *m_parent; QMap> m_buttonsMap; QList m_currentDesktopWindowIdList; std::unique_ptr m_gsettings; QStringList m_gsettingKeys; std::unique_ptr m_layout; int m_panelPosition; int m_panelSize; int m_buttonsSpan = 3; bool m_isGrouping = true; bool m_isPinned = false; enum TaskGroupEvent {ENTEREVENT, LEAVEEVENT, OTHEREVENT}; TaskGroupEvent m_taskGroupEvent; QEvent * m_event; QTimer *m_timer; //Corner mark KBadge *m_badge = nullptr; bool m_isHaveCornerMark = false; }; #endif // UKUITASKGROUP_H ukui-panel-4.0.0.4/plugin-taskbar/translation/0000755000175000017500000000000014564524537017647 5ustar fengfengukui-panel-4.0.0.4/plugin-taskbar/translation/taskbar_ky.ts0000644000175000017500000001667414564524537022367 0ustar fengfeng PipeWireCore Failed to create PipeWire context Failed to connect PipeWire context Failed to start main PipeWire loop ThumbnailView Close Restore Maximize Minimize Keep above Unset keep above UKUITaskBar Drop Error Катаны таштоо File/URL '%1' cannot be embedded into QuickLaunch for now Файл/URL '%1' азыр QuickLaunch-ке киргизилбейт UKUITaskButton Application Тиркеме To &Desktop Иш столуна &All Desktops &, бардык иш столдору Desktop &%1 Иш столу &, %1 &To Current Desktop &, учурдагы иш столуна &Move Көчүп баруу Resi&ze Реси &, зе Ma&ximize Ма &, симиз Maximize vertically Вертикалдык максималдуу Maximize horizontally Горизонталдуу максималдуу &Restore Калыбына келтирүү Mi&nimize Ми &, нимиз Roll down Ылдый ыргытуу Roll up Оролуп &Layer &, кат Always on &top Ар дайым &, жогоруда &Normal Нормалдуу Always on &bottom Ар дайым &, түбүндө &Close & жабуу delete from quicklaunch quicklaunch-тен жоготуу Unpin from taskbar Pin to taskbar close жакын UKUITaskGroup Group Топ delete from taskbar тапшырма панелинен жоготуу add to taskbar тапшырма тобуна кошуу close жакын UKUITaskWidget Widget Виджет close жакын restore калыбына келтирүү maximaze максимаза minimize минималдуу above жогоруда clear ачык ukui-panel-4.0.0.4/plugin-taskbar/translation/taskbar_mn.ts0000644000175000017500000002061714564524537022346 0ustar fengfeng PipeWireCore Failed to create PipeWire context Failed to connect PipeWire context Failed to start main PipeWire loop ThumbnailView Close Restore Maximize Minimize Keep above Unset keep above UKUITaskBar Drop Error ᠰᠦᠯᠵᠢᠶ᠎ᠡ ᠳᠠᠰᠤᠷᠬᠤ ᠠᠯᠳᠠᠭ᠎ᠠ File/URL '%1' cannot be embedded into QuickLaunch for now window.File/URL '%1' ᠳᠡᠭᠡᠷ᠎ᠡ ᠢᠯᠡᠷᠡᠬᠦᠯᠬᠦ᠂ QuickLaunch ᠲᠤ᠌/ ᠳ᠋ᠤ᠌ ᠲᠦᠷ ᠰᠢᠬᠢᠳᠬᠡᠵᠤ ᠪᠤᠯᠬᠤ ᠦᠬᠡᠢ UKUITaskButton Application ᠬᠡᠷᠡᠭᠯᠡᠭᠡ To &Desktop ᠱᠢᠷᠡᠬᠡᠨ ᠨᠢᠭᠤᠷ᠎ᠲᠤ ᠬᠦᠷᠬᠦ᠌ &All Desktops ᠪᠦᠬᠦ ᠱᠢᠷᠡᠭᠡᠨ ᠨᠢᠭᠤᠷ Desktop &%1 ᠱᠢᠷᠡᠭᠡᠨ ᠨᠢᠭᠤᠷ %1 &To Current Desktop ᠤᠳᠤᠬᠠᠨ᠎ᠤ ᠱᠢᠷᠡᠭᠡᠨ ᠨᠢᠭᠤᠷ᠎ᠲᠤ ᠬᠦᠷᠬᠡᠬᠦ᠌ &Move ᠱᠢᠯᠵᠢᠬᠦᠯᠬᠦ᠌ Resi&ze ᠶᠡᠬᠡ ᠪᠠᠭ᠎ᠠ ᠬᠡᠮᠵᠢᠶ᠎ᠡ᠎ᠶᠢ ᠵᠤᠬᠢᠴᠠᠭᠤᠯᠬᠤ Ma&ximize ᠬᠠᠮᠤᠭ᠎ᠤᠨ ᠶᠡᠬᠡᠴᠢᠯᠡᠯ Maximize vertically ᠭᠤᠯᠳᠤ ᠬᠠᠮᠤᠭ᠎ᠤᠨ ᠶᠡᠬᠡᠴᠢᠯᠡᠯ Maximize horizontally ᠬᠦᠨᠳᠡᠯᠡᠨ ᠬᠠᠮᠤᠭ᠎ᠤᠨ ᠶᠡᠬᠡᠴᠢᠯᠡᠯ &Restore ᠡᠬᠡᠬᠦᠯᠬᠦ Mi&nimize ᠬᠠᠮᠤᠭ᠎ᠤᠨ ᠪᠠᠭᠠᠴᠢᠯᠠᠯ Roll down ᠳᠤᠷᠤᠭᠱᠢ Roll up ᠳᠡᠭᠡᠭᠱᠢ &Layer ᠳᠠᠪᠬᠤᠷᠭ᠎ᠠ᠎ᠶᠢᠨ ᠲᠤᠭ᠎ᠠ Always on &top ᠬᠡᠵᠢᠶᠡᠳᠡ ᠤᠷᠤᠢ᠎ᠳᠤ ᠪᠠᠢᠬᠤ &Normal ᠠᠶᠠᠳᠠᠯ Always on &bottom ᠬᠡᠵᠢᠶᠡᠳᠡ ᠢᠷᠤᠭᠠᠷ᠎ᠲᠤ ᠪᠠᠢᠬᠤ &Close ᠬᠠᠭᠠᠬᠤ Unpin from taskbar ᠡᠬᠦᠷᠭᠡ᠎ᠶᠢᠨ ᠬᠡᠷᠡᠭᠰᠡᠬᠡ᠎ᠡᠴᠡ ᠬᠡᠪᠱᠢᠮᠡᠯ᠎ᠢ ᠦᠬᠡᠢᠰᠭᠡᠬᠦ᠌ Pin to taskbar ᠡᠬᠦᠷᠭᠡ᠎ᠶᠢᠨ ᠬᠡᠷᠡᠭᠰᠡᠬᠡ᠎ᠳᠦ ᠨᠡᠮᠡᠬᠦ᠌ close ᠬᠠᠭᠠᠬᠤ UKUITaskGroup Group ᠪᠦᠯᠦᠭ Unpin from taskbar ᠡᠬᠦᠷᠭᠡ᠎ᠶᠢᠨ ᠬᠡᠷᠡᠭᠰᠡᠬᠡ᠎ᠡᠴᠡ ᠬᠡᠪᠱᠢᠮᠡᠯ᠎ᠢ ᠦᠬᠡᠢᠰᠭᠡᠬᠦ᠌ Pin to taskbar ᠡᠬᠦᠷᠭᠡ᠎ᠶᠢᠨ ᠬᠡᠷᠡᠭᠰᠡᠬᠡ᠎ᠳᠦ ᠨᠡᠮᠡᠬᠦ᠌ close ᠬᠠᠭᠠᠬᠤ UKUITaskWidget Widget ᠵᠢᠵᠢᠭ ᠲᠤᠨᠤᠭᠯᠠᠯ close ᠬᠠᠭᠠᠬᠤ restore ᠰᠡᠷᠭᠦᠭᠡᠬᠦ maximaze ᠬᠠᠮᠤᠭ᠎ᠤᠨ ᠶᠡᠬᠡᠴᠢᠯᠡᠯ minimize ᠬᠠᠮᠤᠭ᠎ᠤᠨ ᠪᠠᠭᠠᠴᠢᠯᠠᠯ above ᠤᠷᠤᠢ ᠳ᠋ᠤ᠌ ᠭᠠᠷᠭᠠᠬᠤ clear ᠤᠷᠤᠢ ᠳ᠋ᠤ᠌ ᠭᠠᠷᠭᠠᠬᠤ ᠵᠢ ᠦᠬᠡᠢᠰᠬᠡᠬᠦ ukui-panel-4.0.0.4/plugin-taskbar/translation/taskbar_ug.ts0000644000175000017500000001670714564524537022354 0ustar fengfeng PipeWireCore Failed to create PipeWire context Failed to connect PipeWire context Failed to start main PipeWire loop ThumbnailView Close Restore Maximize Minimize Keep above Unset keep above UKUITaskBar Drop Error Drop Error File/URL '%1' cannot be embedded into QuickLaunch for now ھۆججەت/URL '٪1' نى QuickLaunch قا ھازىرچە كىرگۈزگىلى بولمايدۇ UKUITaskButton Application ئىلتىماس قىلىش To &Desktop ئۈستەلئۈستىگە & &All Desktops بارلىق ئۈستەل يۈزى Desktop &%1 ئۈستەل يۈزى &٪1 &To Current Desktop نۆۋەتتىكى ئۈستەل يۈزىگە &Move يۆتكەش Resi&ze Resi&ze Ma&ximize ما&ximize Maximize vertically تىك ھالەتنى ئەڭ چوڭ چەككە چىقىرىش Maximize horizontally ئەڭ چوڭ چەكتە گىرۋىكىدە &Restore ئەسلىگە كەلتۈرۈش Mi&nimize Mi&nimize Roll down يۆگىمە Roll up يۆگىمە &Layer &قەۋەت Always on &top دائىم ئۈستى & ئۈستى &Normal & نورمال Always on &bottom ھەر ۋاقىت & ئاستىدا &Close يېپىش delete from quicklaunch تېز سۈرئەتتە ئۆچۈرۈش Unpin from taskbar Pin to taskbar close يېپىش UKUITaskGroup Group گۇرۇپپا delete from taskbar ۋەزىپە ئىسكىلاتىدىن ئۆچۈرۈش add to taskbar ۋەزىپە ئىستونىغا قوشۇش close يېپىش UKUITaskWidget Widget ۋىكىپىدىيە close يېپىش restore ئەسلىگە كەلتۈرۈش maximaze maximaze minimize كىچىكلىتىش above يۇقىرىدا clear سۈزۈك ukui-panel-4.0.0.4/plugin-taskbar/translation/taskbar_zh_HK.ts0000644000175000017500000001575114564524537022742 0ustar fengfeng PipeWireCore Failed to create PipeWire context Failed to connect PipeWire context Failed to start main PipeWire loop ThumbnailView Close Restore Maximize Minimize Keep above Unset keep above UKUITaskBar Drop Error 掉線錯誤 File/URL '%1' cannot be embedded into QuickLaunch for now 顯示在window. File/URL '%1'上,暫時不能嵌入QuickLaunch中。 UKUITaskButton Application 應用 To &Desktop 到桌面 &All Desktops 全部桌面 Desktop &%1 桌面%1 &To Current Desktop 至當前桌面 &Move 移動 Resi&ze 調整大小 Ma&ximize 最大化 Maximize vertically 縱向最大化 Maximize horizontally 橫向最大化 &Restore 還原 Mi&nimize 最小化 Roll down 往下 Roll up 往上 &Layer 層數 Always on &top 始終在頂部 &Normal 預設 Always on &bottom 始終在底部 &Close 關閉 delete from quicklaunch 從任務列取消固定 Unpin from taskbar Pin to taskbar close 退出 UKUITaskGroup Group delete from taskbar 從任務列取消固定 add to taskbar 添加到任務列 close 退出 UKUITaskWidget Widget 小組件 close 退出 restore 恢復 maximaze 最大化 minimize 最小化 above 置頂 clear 取消置頂 ukui-panel-4.0.0.4/plugin-taskbar/translation/taskbar_bo_CN.ts0000644000175000017500000001537414564524537022720 0ustar fengfeng PipeWireCore Failed to create PipeWire context Failed to connect PipeWire context Failed to start main PipeWire loop ThumbnailView Close Restore Maximize Minimize Keep above Unset keep above UKUITaskButton Application ཉེར་སྤྱོད་བྱ་རིམ། Desktop &%1 ཅོག་ངོས་ཀྱི་རྣམ་པ།&%1 &Move སྤོ་བ།&M Resi&ze ཆེ་ཆུང་སྒྱུར་བ།&z Ma&ximize སྒེའུ་ཁུང་ཆེས་ཆེར་སྐྱེད།&x Maximize vertically སྒེའུ་ཁུང་དྲང་འཕྱང་དུ་ཆེས་ཆེར་སྐྱེད། Maximize horizontally སྒེའུ་ཁུང་ཆུ་སྙོམས་སུ་ཆེས་ཆེར་སྐྱེད། &Restore ཕྱིར་ལོག&R Mi&nimize སྒེའུ་ཁུང་ཆུང་སྒྱུར།&n Roll down མར་དུ་འདེད། Roll up ཡར་དུ་འདེད།་ &Layer རིས་རིམ།&L Always on &top ནམ་ཡང་རྩེ་མོར་གནས་པ།&t &Normal དཀྱུས་མ།&N &Close ཁ་རྒྱག་པ།&C delete from quicklaunch ལས་འགན་སྡེ་ནས་གཏན་འཇགས་འདོར་བ། Unpin from taskbar Pin to taskbar close ཁ་རྒྱག UKUITaskGroup delete from taskbar ལས་འགན་སྡེ་ནས་གཏན་འཇགས་འདོར་བ། add to taskbar ལས་འགན་སྡེ་རུ་ཁ་སྣོན་བྱེད་པ། close ཁ་རྒྱག UKUITaskWidget close ཁ་རྒྱག restore སླར་གསོ། maximaze ཆེ་སྒྱུར། minimize ཆུང་སྒྱུར། above ཡན་ཆད། clear གཙང་སེལ། ukui-panel-4.0.0.4/plugin-taskbar/translation/taskbar_de.ts0000644000175000017500000001072014564524537022316 0ustar fengfeng PipeWireCore Failed to create PipeWire context Failed to connect PipeWire context Failed to start main PipeWire loop ThumbnailView Close Restore Maximize Minimize Keep above Unset keep above UKUITaskBar Drop Error Drop-Fehler File/URL '%1' cannot be embedded into QuickLaunch for now Datei/URL '%1' kann derzeit nicht in die Schnellstartleiste eingebettet werden UKUITaskButton Unpin from taskbar Von der Taskleiste lösen Pin to taskbar An Taskleiste anheften close schließen UKUITaskGroup Group Gruppe Unpin from taskbar Von der Taskleiste lösen Pin to taskbar An Taskleiste anheften close schließen UKUITaskWidget Widget Widget close schließen restore wiederherstellen maximaze Maximaze minimize minimieren above über clear klar ukui-panel-4.0.0.4/plugin-taskbar/translation/taskbar_es.ts0000644000175000017500000001071314564524537022337 0ustar fengfeng PipeWireCore Failed to create PipeWire context Failed to connect PipeWire context Failed to start main PipeWire loop ThumbnailView Close Restore Maximize Minimize Keep above Unset keep above UKUITaskBar Drop Error Error de caída File/URL '%1' cannot be embedded into QuickLaunch for now El archivo/URL '%1' no se puede incrustar en QuickLaunch por ahora UKUITaskButton Unpin from taskbar Desanclar de la barra de tareas Pin to taskbar Anclar a la barra de tareas close cerrar UKUITaskGroup Group Grupo Unpin from taskbar Desanclar de la barra de tareas Pin to taskbar Anclar a la barra de tareas close cerrar UKUITaskWidget Widget Widget close cerrar restore restaurar maximaze maximaze minimize minimizar above encima clear claro ukui-panel-4.0.0.4/plugin-taskbar/translation/taskbar_fr.ts0000644000175000017500000001100614564524537022333 0ustar fengfeng PipeWireCore Failed to create PipeWire context Failed to connect PipeWire context Failed to start main PipeWire loop ThumbnailView Close Restore Maximize Minimize Keep above Unset keep above UKUITaskBar Drop Error Erreur de chute File/URL '%1' cannot be embedded into QuickLaunch for now Le fichier/URL '%1' ne peut pas être incorporé dans QuickLaunch pour l’instant UKUITaskButton Unpin from taskbar Détacher de la barre des tâches Pin to taskbar Épingler à la barre des tâches close fermer UKUITaskGroup Group Groupe Unpin from taskbar Détacher de la barre des tâches Pin to taskbar Épingler à la barre des tâches close fermer UKUITaskWidget Widget Widget close fermer restore restaurer maximaze Maximaze (en anglais seulement) minimize minimiser above au-dessus clear clair ukui-panel-4.0.0.4/plugin-taskbar/translation/taskbar_kk.ts0000644000175000017500000001671414564524537022344 0ustar fengfeng PipeWireCore Failed to create PipeWire context Failed to connect PipeWire context Failed to start main PipeWire loop ThumbnailView Close Restore Maximize Minimize Keep above Unset keep above UKUITaskBar Drop Error Қатені тастау File/URL '%1' cannot be embedded into QuickLaunch for now Файл/URL '% 1' дегенді қазір QuickLaunch файлына ендіру мүмкін емес UKUITaskButton Application Қолданба To &Desktop & Жұмыс үстеліне &All Desktops Барлық үстелдер Desktop &%1 Жұмыс үстелі & 1 &To Current Desktop & Назардағы үстелге &Move Жылжыту Resi&ze Реси-зе Ma&ximize Ma> ximize Maximize vertically Тігінен барынша көбейту Maximize horizontally Көлденеңінен барынша көбейту &Restore Қалпына келтіру Mi&nimize Ми-нимиз Roll down Домалату Roll up Домалату &Layer Қабат Always on &top Әрқашан жоғары &Normal > Қалыпты Always on &bottom Әрқашан > төмен &Close Жабу@ action: inmenu delete from quicklaunch жылдам іске қосудан жою Unpin from taskbar Pin to taskbar close жабу UKUITaskGroup Group Топ delete from taskbar тапсырмалар тақтасынан жою add to taskbar тапсырмалар тақтасына қосу close жабу UKUITaskWidget Widget Виджет close жабу restore қалпына келтіру maximaze Максимаз minimize кішірейту above жоғарыдағы clear түсінікті ukui-panel-4.0.0.4/plugin-taskbar/translation/taskbar_zh_CN.ts0000644000175000017500000000523314564524537022732 0ustar fengfeng PipeWireCore Failed to create PipeWire context 创建PipeWire上下文失败 Failed to connect PipeWire context 连接PipeWire上下文失败 Failed to start main PipeWire loop 开启PipeWire主循环失败 ThumbnailView Close 退出 Restore 恢复 Maximize 最大化 Minimize 最小化 Keep above 置顶 Unset keep above 取消置顶 UKUITaskButton delete from quicklaunch 从任务栏取消固定 Unpin from taskbar 从任务栏取消固定 Pin to taskbar 固定到任务栏 close 退出 ukui-panel-4.0.0.4/plugin-taskbar/windowmanager/0000755000175000017500000000000014560306203020133 5ustar fengfengukui-panel-4.0.0.4/plugin-taskbar/windowmanager/abstractinterface.h0000644000175000017500000000725014560306203023774 0ustar fengfeng/* * libkysdk-waylandhelper's Library * * Copyright (C) 2023, KylinSoft Co., Ltd. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 3 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this library. If not, see . * * Authors: Zhen Sun * */ #ifndef ABSTRACTINTERFACE_H #define ABSTRACTINTERFACE_H #include #include #include #include "windowinfo.h" #include "netwm.h" namespace kdk { using WindowId = QVariant; class KWindows; class AbstractInterface:public QObject { Q_OBJECT public: AbstractInterface(QObject* parent=nullptr); virtual ~AbstractInterface(); virtual WindowInfo requestInfo(WindowId wid) = 0; virtual void requestActivate(WindowId wid) = 0; virtual void requestClose(WindowId wid) = 0; virtual void requestToggleKeepAbove(WindowId wid) = 0; virtual void requestToggleMinimized(WindowId wid) = 0; virtual void requestToggleMaximized(WindowId wid) = 0; virtual WindowId activeWindow() = 0; virtual QIcon iconFor(WindowId wid) = 0; virtual QString titleFor(WindowId wid) = 0; virtual QString windowGroupFor(WindowId wid) = 0; virtual bool windowCanBeDragged(WindowId wid) = 0; virtual bool windowCanBeMaximized(WindowId wid) = 0; virtual void showCurrentDesktop() = 0; virtual void hideCurrentDesktop() = 0; virtual quint32 pid(WindowId wid) = 0; virtual void setGeometry(QWindow *window, const QRect &rect) = 0; virtual NET::WindowType windowType(WindowId wid) = 0; virtual void setSkipTaskBar(QWindow* window,bool skip) = 0; virtual void setSkipSwitcher(QWindow* window,bool skip) = 0; virtual bool skipTaskBar(const WindowId &wid) = 0; virtual bool skipSwitcher(const WindowId &wid) = 0; virtual bool isShowingDesktop() = 0; virtual void setOnAllDesktops(const WindowId &wid) = 0; bool inCurrentDesktopActivity(const WindowInfo &winfo) ; bool isPlasmaDesktop(const QRect &wGeometry); QString currentDesktop() ; QString currentActivity() ; void setPlasmaDesktop(WindowId wid); bool isValidFor(const WindowId &wid) ; QList windows(); virtual void setPanelTakefocus(QWindow *window, bool flag) = 0; virtual void demandAttention(const WindowId &wid, bool set = true) = 0; Q_SIGNALS: void activeWindowChanged(WindowId wid); void windowChanged(WindowId winfo); void windowAdded(WindowId wid); void windowRemoved(WindowId wid); void currentDesktopChanged(); void isShowingDesktopChanged(); //since 2.3 void titleChanged(WindowId wid); void iconChanged(WindowId wid); void activeChanged(WindowId wid); void fullscreenChanged(WindowId wid); void keepAboveChanged(WindowId wid); void minimizedChanged(WindowId wid); void maximizedChanged(WindowId wid); void onAllDesktopsChanged(WindowId wid); void demandsAttentionChanged(WindowId wid); void skipTaskbarChanged(WindowId wid); void skipSwitcherChanged(WindowId wid); void geometryChanged(WindowId wid); public: QMap m_windows; QString m_currentDesktop; QString m_currentActivity; }; } #endif // ABSTRACTINTERFACE_H ukui-panel-4.0.0.4/plugin-taskbar/windowmanager/xcbinterface.cpp0000644000175000017500000003335714560306203023307 0ustar fengfeng/* * libkysdk-waylandhelper's Library * * Copyright (C) 2023, KylinSoft Co., Ltd. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 3 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this library. If not, see . * * Authors: Zhen Sun * */ #include "xcbinterface.h" #include #include #include #include #include #include #include #include #include #include XcbInterface::XcbInterface(QObject *parent) :AbstractInterface(parent) { m_currentDesktop = QString::number(KWindowSystem::self()->currentDesktop()); connect(KWindowSystem::self(),&KWindowSystem::showingDesktopChanged,this,&AbstractInterface::isShowingDesktopChanged); connect(KWindowSystem::self(), &KWindowSystem::activeWindowChanged, this, &AbstractInterface::activeWindowChanged); connect(KWindowSystem::self(), &KWindowSystem::windowAdded, this, [=](WindowId wid){ if (!m_windows.contains(wid)) { m_windows.insert(wid, this->requestInfo(wid)); } emit windowAdded(wid);}); connect(KWindowSystem::self(), &KWindowSystem::windowRemoved, this, [=](WindowId wid){ m_windows.remove(wid); emit windowRemoved(wid); }); connect(KWindowSystem::self(), &KWindowSystem::currentDesktopChanged, this, [&](int desktop) { m_currentDesktop = QString::number(desktop); emit currentDesktopChanged(); }); connect(KWindowSystem::self() , static_cast (&KWindowSystem::windowChanged) , this, &XcbInterface::windowChangedProxy); } XcbInterface::~XcbInterface() { } WindowInfo XcbInterface::requestInfo(WindowId wid) { const KWindowInfo winfo{wid.value(), NET::WMFrameExtents | NET::WMWindowType | NET::WMGeometry | NET::WMDesktop | NET::WMState | NET::WMName | NET::WMVisibleName, NET::WM2WindowClass | NET::WM2Activities | NET::WM2AllowedActions | NET::WM2TransientFor}; bool isDesktop{false}; if (winfo.windowClassName() == "plasmashell" && isPlasmaDesktop(winfo.geometry())) { isDesktop = true; this->setPlasmaDesktop(wid); } WindowInfo windowInfo; if (!winfo.valid()) { windowInfo.setIsValid(false); } else if (isValidWindow(winfo) && !isDesktop) { windowInfo.setIsValid(true); windowInfo.setWid(wid); windowInfo.setIsPlasmaDesktop(false); //windowInfo.setParentId(winfo.transientFor()); windowInfo.setIsActive(KWindowSystem::activeWindow() == wid.value()); windowInfo.setIsMinimized(winfo.hasState(NET::Hidden)); windowInfo.setIsMaxVert(winfo.hasState(NET::MaxVert)); windowInfo.setIsMaxHoriz(winfo.hasState(NET::MaxHoriz)); windowInfo.setIsFullscreen(winfo.hasState(NET::FullScreen)); windowInfo.setIsShaded(winfo.hasState(NET::Shaded)); windowInfo.setIsOnAllDesktops(winfo.onAllDesktops()); windowInfo.setIsOnAllActivities(winfo.activities().empty()); //windowInfo.setGeometry(winfo.frameGeometry()); windowInfo.setIsKeepAbove(winfo.hasState(NET::KeepAbove)); windowInfo.setHasSkipTaskbar(winfo.hasState(NET::SkipTaskbar)); //! Window Abilities windowInfo.setIsClosable(winfo.actionSupported(NET::ActionClose)); windowInfo.setIsFullScreenable(winfo.actionSupported(NET::ActionFullScreen)); windowInfo.setIsMaximizable(winfo.actionSupported(NET::ActionMax)); windowInfo.setIsMinimizable(winfo.actionSupported(NET::ActionMinimize)); windowInfo.setIsMovable(winfo.actionSupported(NET::ActionMove)); windowInfo.setIsResizable(winfo.actionSupported(NET::ActionResize)); windowInfo.setIsShadeable(winfo.actionSupported(NET::ActionShade)); windowInfo.setIsVirtualDesktopsChangeable(winfo.actionSupported(NET::ActionChangeDesktop)); //! Window Abilities //windowInfo.setDisplay(winfo.visibleName()); windowInfo.setDesktops({QString::number(winfo.desktop())}); //windowInfo.setActivities(winfo.activities()); } else if (m_desktopId == wid) { windowInfo.setIsValid(true); windowInfo.setIsPlasmaDesktop(true); windowInfo.setWid(wid); //windowInfo.setParentId(0); windowInfo.setHasSkipTaskbar(true); //! Window Abilities windowInfo.setIsClosable(false); windowInfo.setIsFullScreenable(false); windowInfo.setIsGroupable(false); windowInfo.setIsMaximizable(false); windowInfo.setIsMinimizable(false); windowInfo.setIsMovable(false); windowInfo.setIsResizable(false); windowInfo.setIsShadeable(false); windowInfo.setIsVirtualDesktopsChangeable(false); //! Window Abilities } return windowInfo; } void XcbInterface::requestActivate(WindowId wid) { KWindowSystem::activateWindow(wid.toInt()); } void XcbInterface::requestClose(WindowId wid) { WindowInfo wInfo = requestInfo(wid); if (!wInfo.isValid() || wInfo.isPlasmaDesktop()) { return; } NETRootInfo ri(QX11Info::connection(), NET::CloseWindow); ri.closeWindowRequest(wInfo.wid().toUInt()); } void XcbInterface::requestToggleKeepAbove(WindowId wid) { WindowInfo wInfo = requestInfo(wid); if (!wInfo.isValid() || wInfo.isPlasmaDesktop()) { return; } NETWinInfo ni(QX11Info::connection(), wid.toUInt(), QX11Info::appRootWindow(), NET::WMState, NET::Properties2()); if (wInfo.isKeepAbove()) { ni.setState(NET::States(), NET::StaysOnTop); } else { ni.setState(NET::StaysOnTop, NET::StaysOnTop); } } void XcbInterface::requestToggleMinimized(WindowId wid) { WindowInfo wInfo = requestInfo(wid); if (!wInfo.isValid() || wInfo.isPlasmaDesktop() || !inCurrentDesktopActivity(wInfo)) { return; } if (wInfo.isMinimized()) { bool onCurrent = wInfo.isOnDesktop(m_currentDesktop); KWindowSystem::unminimizeWindow(wid.toUInt()); if (onCurrent) { KWindowSystem::forceActiveWindow(wid.toUInt()); } } else { KWindowSystem::minimizeWindow(wid.toUInt()); } } void XcbInterface::requestToggleMaximized(WindowId wid) { WindowInfo wInfo = requestInfo(wid); if (!windowCanBeMaximized(wid) || !inCurrentDesktopActivity(wInfo)) { return; } bool restore = wInfo.isMaxHoriz() && wInfo.isMaxVert(); if (wInfo.isMinimized()) { KWindowSystem::unminimizeWindow(wid.toUInt()); } NETWinInfo ni(QX11Info::connection(), wid.toInt(), QX11Info::appRootWindow(), NET::WMState, NET::Properties2()); if (restore) { ni.setState(NET::States(), NET::Max); } else { ni.setState(NET::Max, NET::Max); } } QIcon XcbInterface::iconFor(WindowId wid) { QIcon icon; icon.addPixmap(KWindowSystem::icon(wid.value(), KIconLoader::SizeSmall, KIconLoader::SizeSmall, false)); icon.addPixmap(KWindowSystem::icon(wid.value(), KIconLoader::SizeSmallMedium, KIconLoader::SizeSmallMedium, false)); icon.addPixmap(KWindowSystem::icon(wid.value(), KIconLoader::SizeMedium, KIconLoader::SizeMedium, false)); icon.addPixmap(KWindowSystem::icon(wid.value(), KIconLoader::SizeLarge, KIconLoader::SizeLarge, false)); icon.addPixmap(KWindowSystem::icon(wid.value(), KIconLoader::SizeLarge, KIconLoader::SizeHuge, false)); icon.addPixmap(KWindowSystem::icon(wid.value(), KIconLoader::SizeLarge, KIconLoader::SizeEnormous, false)); return icon; } QString XcbInterface::titleFor(WindowId wid) { const KWindowInfo winfo{wid.value(), NET::WMName}; if(winfo.valid()) return winfo.name(); else return QString(); } QString XcbInterface::windowGroupFor(WindowId wid) { KWindowInfo winfo(wid.toULongLong(), NET::WMName, NET::WM2WindowClass); if(winfo.valid()) return winfo.windowClassClass(); else return QString(); } void XcbInterface::showCurrentDesktop() { KWindowSystem::setShowingDesktop(true); } void XcbInterface::hideCurrentDesktop() { KWindowSystem::setShowingDesktop(false); } quint32 XcbInterface::pid(WindowId wid) { quint64 pid = 0; const KWindowInfo winfo{wid.value(), NET::WMName}; if(!winfo.valid()) return pid; else { pid = winfo.pid(); } return pid; } WindowId XcbInterface::activeWindow() { WId wid = KWindowSystem::self()->activeWindow(); return QVariant::fromValue(wid); } bool XcbInterface::windowCanBeDragged(WindowId wid) { WindowInfo winfo = requestInfo(wid); return (winfo.isValid() && !winfo.isMinimized() && winfo.isMovable() && inCurrentDesktopActivity(winfo) && !winfo.isPlasmaDesktop()); } bool XcbInterface::windowCanBeMaximized(WindowId wid) { WindowInfo winfo = requestInfo(wid); return (winfo.isValid() && !winfo.isMinimized() && winfo.isMaximizable() && inCurrentDesktopActivity(winfo) && !winfo.isPlasmaDesktop()); } void XcbInterface::setGeometry(QWindow *window, const QRect &rect) { if(window) window->setGeometry(rect); } void XcbInterface::setSkipTaskBar(QWindow *window, bool skip) { if(skip) KWindowSystem::setState(window->winId(),NET::SkipTaskbar); else KWindowSystem::clearState(window->winId(),NET::SkipTaskbar); } void XcbInterface::setSkipSwitcher(QWindow *window, bool skip) { if(skip) KWindowSystem::setState(window->winId(),NET::SkipSwitcher); else KWindowSystem::clearState(window->winId(),NET::SkipSwitcher); } bool XcbInterface::skipTaskBar(const WindowId &wid) { const KWindowInfo winfo(wid.value(), NET::WMState); return winfo.valid() ? winfo.hasState(NET::SkipTaskbar) : false; } bool XcbInterface::skipSwitcher(const WindowId &wid) { const KWindowInfo winfo(wid.value(), NET::WMState); return winfo.valid() ? winfo.hasState(NET::SkipSwitcher) : false; } bool XcbInterface::isShowingDesktop() { return KWindowSystem::showingDesktop(); } void XcbInterface::setOnAllDesktops(const WindowId &wid) { WindowInfo wInfo = requestInfo(wid); if (!wInfo.isValid()) { return; } if (KWindowSystem::numberOfDesktops() <= 1) { return; } if (wInfo.isOnAllDesktops()) { KWindowSystem::setOnDesktop(wid.toUInt(), KWindowSystem::currentDesktop()); KWindowSystem::forceActiveWindow(wid.toUInt()); } else { KWindowSystem::setOnAllDesktops(wid.toUInt(), true); } } void XcbInterface::setPanelTakefocus(QWindow *window, bool flag) { //do nothing return; } NET::WindowType XcbInterface::windowType(WindowId wid) { KWindowInfo info(wid.value(),NET::WMWindowType|NET::WMState,NET::WM2TransientFor); return info.windowType(NET::AllTypesMask); } void XcbInterface::demandAttention(const WindowId &wid, bool set) { KWindowSystem::demandAttention(wid.value(), set); } bool XcbInterface::isValidWindow(WindowId wid) { if (this->isValidFor(wid)) { return true; } const KWindowInfo winfo{wid.value(), NET::WMWindowType | NET::WMState}; return isValidWindow(winfo); } bool XcbInterface::isValidWindow(const KWindowInfo &winfo) { if (this->isValidFor(winfo.win())) { return true; } //! ignored windows from tracking // if (m_ignoredWindows.contains(winfo.win())) { // return false; // } if (m_desktopId == winfo.win()) { return false; } bool hasSkipTaskbar = winfo.hasState(NET::SkipTaskbar); bool hasSkipPager = winfo.hasState(NET::SkipPager); bool isSkipped = hasSkipTaskbar && hasSkipPager; return !isSkipped; } void XcbInterface::windowChangedProxy(WId wid, NET::Properties prop1, NET::Properties2 prop2) { if (prop1 == 0 && !(prop2 & (NET::WM2Activities | NET::WM2TransientFor))) { return; } if (!isValidWindow(wid)) { return; } emit windowChanged(wid); KWindowInfo info(wid,prop1,prop2); if(prop1.testFlag(NET::WMState)) { if(info.hasState(NET::State::FullScreen)) emit fullscreenChanged(wid); if(info.hasState(NET::State::KeepAbove)) emit keepAboveChanged(wid); if(info.hasState(NET::State::SkipSwitcher)) emit skipSwitcherChanged(wid); if(info.hasState(NET::State::SkipTaskbar)) emit skipTaskbarChanged(wid); if(info.hasState(NET::State::DemandsAttention)) emit demandsAttentionChanged(wid); if(info.hasState(NET::State::Max)) emit maximizedChanged(wid); if(info.hasState(NET::State::Hidden)) emit minimizedChanged(wid); } if(prop1.testFlag(NET::WMIcon)) emit iconChanged(wid); if(prop1.testFlag(NET::ActiveWindow)) emit activeChanged(wid); if(prop1.testFlag(NET::WMName) || prop1.testFlag(NET::WMVisibleName)) emit titleChanged(wid); if(prop1.testFlag(NET::WMGeometry)) emit geometryChanged(wid); if(info.onAllDesktops()) emit onAllDesktopsChanged(wid); } ukui-panel-4.0.0.4/plugin-taskbar/windowmanager/waylandinterface.cpp0000644000175000017500000005265514560306203024174 0ustar fengfeng/* * libkysdk-waylandhelper's Library * * Copyright (C) 2023, KylinSoft Co., Ltd. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 3 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this library. If not, see . * * Authors: Zhen Sun * */ #include "waylandinterface.h" #include #include #include #include #include #include #include "wayland-plasma-window-management-client-protocol.h" WaylandInterface::WaylandInterface(QObject *parent) :AbstractInterface(parent) { m_connection = KWayland::Client::ConnectionThread::fromApplication(qApp); auto registry = new Registry(this); registry->create(m_connection->display()); connect(registry, &KWayland::Client::Registry::plasmaShellAnnounced, this, [=](){ const auto interface = registry->interface(KWayland::Client::Registry::Interface::PlasmaShell); if (interface.name != 0) { m_plasmaShell = registry->createPlasmaShell(interface.name, interface.version, this); } }); connect(registry, &Registry::plasmaWindowManagementAnnounced, this, [=](){ const auto interface = registry->interface(Registry::Interface::PlasmaWindowManagement); if (interface.name != 0) { m_windowManager = registry->createPlasmaWindowManagement(interface.name, interface.version, this); } if(m_windowManager) { connect(m_windowManager, &PlasmaWindowManagement::showingDesktopChanged,this,&AbstractInterface::isShowingDesktopChanged); connect(m_windowManager, &PlasmaWindowManagement::windowCreated, this, &WaylandInterface::windowCreatedProxy); connect(m_windowManager, &PlasmaWindowManagement::activeWindowChanged, this, [&]() noexcept { auto w = m_windowManager->activeWindow(); if(w) { emit activeWindowChanged(w ? w->internalId() : 0); } }, Qt::QueuedConnection); connect(m_windowManager, &PlasmaWindowManagement::windowCreated,this, [this](PlasmaWindow *window) { if (!m_windows.contains(window->internalId())) { m_windows.insert(window->internalId(), this->requestInfo(window->internalId())); } emit windowAdded(window->internalId()); }); } }); connect(registry, &KWayland::Client::Registry::plasmaVirtualDesktopManagementAnnounced, [this, registry] (quint32 name, quint32 version) { m_virtualDesktopManagement = registry->createPlasmaVirtualDesktopManagement(name, version, this); if(m_virtualDesktopManagement) { connect(m_virtualDesktopManagement, &KWayland::Client::PlasmaVirtualDesktopManagement::desktopCreated, this, [this](const QString &id, quint32 position) { addDesktop(id, position); }); connect(m_virtualDesktopManagement, &KWayland::Client::PlasmaVirtualDesktopManagement::desktopRemoved, this, [this](const QString &id) { m_desktops.removeAll(id); if (m_currentDesktop == id) { setCurrentDesktop(QString()); } }); } }); connect(registry, &KWayland::Client::Registry::shellAnnounced, this, [=](){ const auto interface = registry->interface(KWayland::Client::Registry::Interface::Shell); if (interface.name != 0) { m_shell = registry->createShell(interface.name, interface.version, this); } }); registry->setup(); m_connection->roundtrip(); } WaylandInterface::~WaylandInterface() { } WindowInfo WaylandInterface::requestInfo(WindowId wid) { WindowInfo windowInfo; auto w = windowFor(wid); if (w) { if (isPlasmaDesktop(w)) { windowInfo.setIsValid(true); windowInfo.setIsPlasmaDesktop(true); windowInfo.setWid(wid); //! Window Abilities windowInfo.setIsClosable(false); windowInfo.setIsFullScreenable(false); windowInfo.setIsGroupable(false); windowInfo.setIsMaximizable(false); windowInfo.setIsMinimizable(false); windowInfo.setIsMovable(false); windowInfo.setIsResizable(false); windowInfo.setIsShadeable(false); windowInfo.setIsVirtualDesktopsChangeable(false); //! Window Abilities } else if (isValidWindow(w)) { windowInfo.setIsValid(true); windowInfo.setWid(wid); windowInfo.setIsActive(w->isActive()); windowInfo.setIsMinimized(w->isMinimized()); windowInfo.setIsMaxVert(w->isMaximized()); windowInfo.setIsMaxHoriz(w->isMaximized()); windowInfo.setIsFullscreen(w->isFullscreen()); windowInfo.setIsShaded(w->isShaded()); windowInfo.setIsOnAllDesktops(w->isOnAllDesktops()); windowInfo.setIsOnAllActivities(true); windowInfo.setHasSkipTaskbar(w->skipTaskbar()); windowInfo.setHasSkipSwitcher(w->skipSwitcher()); windowInfo.setIsKeepAbove(w->isKeepAbove()); //! Window Abilities windowInfo.setIsClosable(w->isCloseable()); windowInfo.setIsFullScreenable(w->isFullscreenable()); windowInfo.setIsMaximizable(w->isMaximizeable()); windowInfo.setIsMinimizable(w->isMinimizeable()); windowInfo.setIsMovable(w->isMovable()); windowInfo.setIsResizable(w->isResizable()); windowInfo.setIsShadeable(w->isShadeable()); windowInfo.setIsVirtualDesktopsChangeable(w->isVirtualDesktopChangeable()); //! Window Abilities windowInfo.setDesktops(w->plasmaVirtualDesktops()); } } else { windowInfo.setIsValid(false); } return windowInfo; } void WaylandInterface::requestActivate(WindowId wid) { auto w = windowFor(wid); if (w) { w->requestActivate(); m_connection->roundtrip(); emit windowChanged(w->internalId()); } } void WaylandInterface::requestClose(WindowId wid) { auto w = windowFor(wid); if (w) { w->requestClose(); m_connection->roundtrip(); } } void WaylandInterface::requestToggleKeepAbove(WindowId wid) { auto w = windowFor(wid); if (w) { w->requestToggleKeepAbove(); m_connection->roundtrip(); emit windowChanged(w->internalId()); } } void WaylandInterface::requestToggleMinimized(WindowId wid) { auto w = windowFor(wid); if (w) { w->requestToggleMinimized(); m_connection->roundtrip(); } } void WaylandInterface::requestToggleMaximized(WindowId wid) { auto w = windowFor(wid); if (w) { w->requestToggleMaximized(); m_connection->roundtrip(); } } QIcon WaylandInterface::iconFor(WindowId wid) { auto window = windowFor(wid); if (window) { return window->icon(); } return QIcon(); } QString WaylandInterface::titleFor(WindowId wid) { auto window = windowFor(wid); if (window) { return window->title(); } return QString(); } QString WaylandInterface::windowGroupFor(WindowId wid) { auto window = windowFor(wid); if (window) { m_connection->roundtrip(); return window->appId(); } else return QString(); } quint32 WaylandInterface::pid(WindowId wid) { quint32 pid = 0; auto window = windowFor(wid); if (window) { m_connection->roundtrip(); return window->pid(); } else return pid; } void WaylandInterface::showCurrentDesktop() { if(m_windowManager) { m_windowManager->showDesktop(); m_connection->roundtrip(); } } void WaylandInterface::hideCurrentDesktop() { if(m_windowManager) { m_windowManager->hideDesktop(); m_connection->roundtrip(); } } bool WaylandInterface::windowCanBeDragged(WindowId wid) { auto w = windowFor(wid); if (w && isValidWindow(w)) { WindowInfo winfo = requestInfo(wid); return (winfo.isValid() && w->isMovable() && !winfo.isMinimized() && inCurrentDesktopActivity(winfo) && !winfo.isPlasmaDesktop()); } return false; } bool WaylandInterface::windowCanBeMaximized(WindowId wid) { auto w = windowFor(wid); if (w && isValidWindow(w)) { WindowInfo winfo = requestInfo(wid); return (winfo.isValid() && w->isMaximizeable() && !winfo.isMinimized() && inCurrentDesktopActivity(winfo) && !winfo.isPlasmaDesktop()); } return false; } WindowId WaylandInterface::activeWindow() { if (!m_windowManager) { return 0; } m_connection->roundtrip(); auto wid = m_windowManager->activeWindow(); return wid ? QVariant(wid->internalId()) : 0; } void WaylandInterface::setGeometry(QWindow *window, const QRect &rect) { if(!window) return; if (!m_plasmaShell) return; auto surface = KWayland::Client::Surface::fromWindow(window); if (!surface) return; if(!m_surfaces.contains(window)) { m_surfaces.insert(window,surface); } auto plasmaShellSurface = m_plasmaShell->createSurface(surface, window); if (!plasmaShellSurface) return; if(!m_plasmaShellSurfaces.contains(window)) { m_plasmaShellSurfaces.insert(window,plasmaShellSurface); } plasmaShellSurface->setPosition(rect.topLeft()); window->resize(rect.size()); window->installEventFilter(this); } void WaylandInterface::setSkipTaskBar(QWindow *window, bool skip) { if(!window) return; if (!m_plasmaShell) return; auto surface = KWayland::Client::Surface::fromWindow(window); if (!surface) return; if(!m_surfaces.contains(window)) m_surfaces.insert(window,surface); auto plasmaShellSurface = m_plasmaShell->createSurface(surface, window); if (!plasmaShellSurface) return; if(!m_plasmaShellSurfaces.contains(window)) m_plasmaShellSurfaces.insert(window,plasmaShellSurface); plasmaShellSurface->setSkipTaskbar(skip); window->installEventFilter(this); } void WaylandInterface::setSkipSwitcher(QWindow *window, bool skip) { if(!window) return; if (!m_plasmaShell) return; auto surface = KWayland::Client::Surface::fromWindow(window); if (!surface) return; if(!m_surfaces.contains(window)) m_surfaces.insert(window,surface); auto plasmaShellSurface = m_plasmaShell->createSurface(surface, window); if (!plasmaShellSurface) return; if(!m_plasmaShellSurfaces.contains(window)) m_plasmaShellSurfaces.insert(window,plasmaShellSurface); plasmaShellSurface->setSkipSwitcher(skip); window->installEventFilter(this); } bool WaylandInterface::skipTaskBar(const WindowId &wid) { auto window = windowFor(wid); return window ? window->skipTaskbar() : false; } bool WaylandInterface::skipSwitcher(const WindowId &wid) { auto window = windowFor(wid); return window ? window->skipSwitcher() : false; } bool WaylandInterface::isShowingDesktop() { bool flag = false; if(m_windowManager) { flag = m_windowManager->isShowingDesktop(); m_connection->roundtrip(); } return flag; } void WaylandInterface::setOnAllDesktops(const WindowId &wid) { auto w = windowFor(wid); if (w && isValidWindow(w) && m_desktops.count() > 1) { if (w->isOnAllDesktops()) { w->requestEnterVirtualDesktop(m_currentDesktop); } else { const QStringList &now = w->plasmaVirtualDesktops(); foreach (const QString &desktop, now) { w->requestLeaveVirtualDesktop(desktop); } } } } void WaylandInterface::setPanelTakefocus(QWindow *window,bool flag) { if(!window) return; if (!m_plasmaShell) return; auto surface = KWayland::Client::Surface::fromWindow(window); if (!surface) return; if(!m_surfaces.contains(window)) { m_surfaces.insert(window,surface); } auto plasmaShellSurface = m_plasmaShell->createSurface(surface, window); if (!plasmaShellSurface) return; if(!m_plasmaShellSurfaces.contains(window)) { m_plasmaShellSurfaces.insert(window,plasmaShellSurface); } plasmaShellSurface->setPanelTakesFocus(flag); window->installEventFilter(this); } NET::WindowType WaylandInterface::windowType(WindowId wid) { return NET::WindowType::Normal; } void WaylandInterface::demandAttention(const WindowId &wid, bool set) { auto w = windowFor(wid); if (w) { org_kde_plasma_window_set_state(*w, ORG_KDE_PLASMA_WINDOW_MANAGEMENT_STATE_DEMANDS_ATTENTION, ORG_KDE_PLASMA_WINDOW_MANAGEMENT_STATE_DEMANDS_ATTENTION); m_connection->roundtrip(); } } bool WaylandInterface::eventFilter(QObject *obj, QEvent *ev) { auto window = qobject_cast(obj); if(window && ev->type() == QEvent::Hide) { if(m_plasmaShellSurfaces.contains(window)) { auto plasmaShellSurface = m_plasmaShellSurfaces.value(window); if(plasmaShellSurface) { plasmaShellSurface->release(); plasmaShellSurface->destroy(); } m_plasmaShellSurfaces.remove(window); } if(m_surfaces.contains(window)) { auto surface = m_surfaces.value(window); if(surface) { surface->release(); surface->destroy(); } m_surfaces.remove(window); } } return QObject::eventFilter(obj,ev); } void WaylandInterface::updateWindow() { PlasmaWindow* w = qobject_cast(QObject::sender()); if(w && !isPlasmaPanel(w)) { m_connection->roundtrip(); emit windowChanged(w->internalId()); } } void WaylandInterface::windowUnmapped() { PlasmaWindow *pW = qobject_cast(QObject::sender()); if (pW) { untrackWindow(pW); if (!m_windows.contains(pW->internalId())) { m_windows.remove(pW->internalId()); } emit windowRemoved(pW->internalId()); } } PlasmaWindow *WaylandInterface::windowFor(WindowId wid) { auto it = std::find_if(m_windowManager->windows().constBegin(), m_windowManager->windows().constEnd(), [&wid](PlasmaWindow * w) noexcept { return w->isValid() && w->internalId() == wid; }); if (it == m_windowManager->windows().constEnd()) { return nullptr; } return *it; } bool WaylandInterface::isValidWindow(const PlasmaWindow *w) { return w->isValid(); } bool WaylandInterface::isPlasmaDesktop(const PlasmaWindow *w) { if (!w || (w->appId() != QLatin1String("org.kde.plasmashell"))) { return false; } return AbstractInterface::isPlasmaDesktop(w->geometry()); } bool WaylandInterface::isPlasmaPanel(const PlasmaWindow *w) { if(w && w->appId() == QLatin1String("ukui-panel")) return true; else return false; } void WaylandInterface::windowCreatedProxy(PlasmaWindow *w) { if (!isValidWindow(w)) { return; } if ((w->appId() == QLatin1String("org.kde.plasmashell")) && isPlasmaPanel(w)) { return; } else { trackWindow(w); } } void WaylandInterface::trackWindow(PlasmaWindow *w) { if(!w || isPlasmaPanel(w)){ return; } //兼容旧的windowchanged信号 connect(w, &PlasmaWindow::titleChanged, this, &WaylandInterface::updateWindow); connect(w, &PlasmaWindow::fullscreenChanged, this, &WaylandInterface::updateWindow); connect(w, &PlasmaWindow::geometryChanged, this, &WaylandInterface::updateWindow); connect(w, &PlasmaWindow::maximizedChanged, this, &WaylandInterface::updateWindow); connect(w, &PlasmaWindow::minimizedChanged, this, &WaylandInterface::updateWindow); connect(w, &PlasmaWindow::shadedChanged, this, &WaylandInterface::updateWindow); connect(w, &PlasmaWindow::skipTaskbarChanged, this, &WaylandInterface::updateWindow); connect(w, &PlasmaWindow::onAllDesktopsChanged, this, &WaylandInterface::updateWindow); connect(w, &PlasmaWindow::parentWindowChanged, this, &WaylandInterface::updateWindow); connect(w, &PlasmaWindow::iconChanged, this, &WaylandInterface::updateWindow); connect(w, &PlasmaWindow::plasmaVirtualDesktopEntered, this, &WaylandInterface::updateWindow); connect(w, &PlasmaWindow::plasmaVirtualDesktopLeft, this, &WaylandInterface::updateWindow); connect(w, &PlasmaWindow::unmapped, this, &WaylandInterface::windowUnmapped); //按照具体事件新增信号,since2.3 connect(w, &PlasmaWindow::titleChanged, this, [=](){emit titleChanged(w->internalId());}); connect(w, &PlasmaWindow::fullscreenChanged, this, [=](){emit fullscreenChanged(w->internalId());}); connect(w, &PlasmaWindow::iconChanged, this, [=](){emit iconChanged(w->internalId());}); connect(w, &PlasmaWindow::activeChanged, this, [=](){emit activeChanged(w->internalId());}); connect(w, &PlasmaWindow::keepAboveChanged, this, [=](){emit keepAboveChanged(w->internalId());}); connect(w, &PlasmaWindow::minimizedChanged, this, [=](){emit minimizedChanged(w->internalId());}); connect(w, &PlasmaWindow::maximizedChanged, this, [=](){emit maximizedChanged(w->internalId());}); connect(w, &PlasmaWindow::onAllDesktopsChanged, this, [=](){emit onAllDesktopsChanged(w->internalId());}); connect(w, &PlasmaWindow::demandsAttentionChanged, this, [=](){emit demandsAttentionChanged(w->internalId());}); connect(w, &PlasmaWindow::skipTaskbarChanged, this, [=](){emit skipTaskbarChanged(w->internalId());}); connect(w, &PlasmaWindow::skipSwitcherChanged, this, [=](){emit skipSwitcherChanged(w->internalId());}); connect(w, &PlasmaWindow::geometryChanged, this, [=](){emit geometryChanged(w->internalId());}); } void WaylandInterface::untrackWindow(PlasmaWindow *w) { if (!w) { return; } disconnect(w, &PlasmaWindow::activeChanged, this, &WaylandInterface::updateWindow); disconnect(w, &PlasmaWindow::titleChanged, this, &WaylandInterface::updateWindow); disconnect(w, &PlasmaWindow::fullscreenChanged, this, &WaylandInterface::updateWindow); disconnect(w, &PlasmaWindow::geometryChanged, this, &WaylandInterface::updateWindow); disconnect(w, &PlasmaWindow::maximizedChanged, this, &WaylandInterface::updateWindow); disconnect(w, &PlasmaWindow::minimizedChanged, this, &WaylandInterface::updateWindow); disconnect(w, &PlasmaWindow::shadedChanged, this, &WaylandInterface::updateWindow); disconnect(w, &PlasmaWindow::skipTaskbarChanged, this, &WaylandInterface::updateWindow); disconnect(w, &PlasmaWindow::onAllDesktopsChanged, this, &WaylandInterface::updateWindow); disconnect(w, &PlasmaWindow::parentWindowChanged, this, &WaylandInterface::updateWindow); disconnect(w, &PlasmaWindow::plasmaVirtualDesktopEntered, this, &WaylandInterface::updateWindow); disconnect(w, &PlasmaWindow::plasmaVirtualDesktopLeft, this, &WaylandInterface::updateWindow); disconnect(w, &PlasmaWindow::unmapped, this, &WaylandInterface::windowUnmapped); disconnect(w, &PlasmaWindow::titleChanged, 0, 0); disconnect(w, &PlasmaWindow::iconChanged, 0, 0); disconnect(w, &PlasmaWindow::activeChanged, 0, 0); disconnect(w, &PlasmaWindow::keepAboveChanged, 0, 0); disconnect(w, &PlasmaWindow::keepBelowChanged, 0, 0); disconnect(w, &PlasmaWindow::minimizedChanged, 0, 0); disconnect(w, &PlasmaWindow::maximizedChanged, 0, 0); disconnect(w, &PlasmaWindow::onAllDesktopsChanged, 0, 0); disconnect(w, &PlasmaWindow::demandsAttentionChanged, 0, 0); disconnect(w, &PlasmaWindow::skipTaskbarChanged, 0, 0); disconnect(w, &PlasmaWindow::skipSwitcherChanged, 0, 0); disconnect(w, &PlasmaWindow::geometryChanged, 0, 0); } void WaylandInterface::setCurrentDesktop(QString desktop) { if (m_currentDesktop == desktop) { return; } m_currentDesktop = desktop; emit currentDesktopChanged(); } void WaylandInterface::addDesktop(const QString &id, quint32 position) { if (m_desktops.contains(id)) { return; } m_desktops.append(id); const KWayland::Client::PlasmaVirtualDesktop *desktop = m_virtualDesktopManagement->getVirtualDesktop(id); QObject::connect(desktop, &KWayland::Client::PlasmaVirtualDesktop::activated, this, [desktop, this]() { setCurrentDesktop(desktop->id()); } ); if (desktop->isActive()) { setCurrentDesktop(id); } } ukui-panel-4.0.0.4/plugin-taskbar/windowmanager/wmregister.cpp0000644000175000017500000000277014560306203023035 0ustar fengfeng/* * libkysdk-waylandhelper's Library * * Copyright (C) 2023, KylinSoft Co., Ltd. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 3 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this library. If not, see . * * Authors: Zhen Sun * */ #include "wmregister.h" #include #include #include #include #include "../waylandhelper.h" #include "waylandinterface.h" #include "xcbinterface.h" using namespace kdk; using namespace KWayland::Client; kdk::WmRegister::WmRegister(QObject *parent) :QObject(parent) { QString platform = QGuiApplication::platformName(); if(platform.startsWith(QLatin1String("wayland"),Qt::CaseInsensitive)) m_winInterface = new WaylandInterface(this); else m_winInterface = new XcbInterface(this); } WmRegister::~WmRegister() { } AbstractInterface *WmRegister::winInterface() { return m_winInterface; } ukui-panel-4.0.0.4/plugin-taskbar/windowmanager/xcbinterface.h0000644000175000017500000000506414560306203022746 0ustar fengfeng/* * libkysdk-waylandhelper's Library * * Copyright (C) 2023, KylinSoft Co., Ltd. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 3 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this library. If not, see . * * Authors: Zhen Sun * */ #ifndef XCBINTERFACE_H #define XCBINTERFACE_H #include "abstractinterface.h" #include #include using namespace kdk; class XcbInterface:public AbstractInterface { public: XcbInterface(QObject* parent=nullptr); ~XcbInterface(); WindowInfo requestInfo(WindowId wid) override; void requestActivate(WindowId wid) override; void requestClose(WindowId wid) ; void requestToggleKeepAbove(WindowId wid) override; void requestToggleMinimized(WindowId wid) override; void requestToggleMaximized(WindowId wid) override; QIcon iconFor(WindowId wid) override; QString titleFor(WindowId wid) override; QString windowGroupFor(WindowId wid) override; void showCurrentDesktop() override; void hideCurrentDesktop() override; quint32 pid(WindowId wid) override; WindowId activeWindow() override; bool windowCanBeDragged(WindowId wid) override; bool windowCanBeMaximized(WindowId wid) override; void setGeometry(QWindow *window, const QRect &rect) override; void setSkipTaskBar(QWindow* window,bool skip) override; void setSkipSwitcher(QWindow* window,bool skip) override; bool skipTaskBar(const WindowId &wid) override; bool skipSwitcher(const WindowId &wid) override; bool isShowingDesktop(); void setOnAllDesktops(const WindowId &wid); NET::WindowType windowType(WindowId wid) override; void setPanelTakefocus(QWindow *window, bool flag) override; void demandAttention(const WindowId &wid, bool set = true) override; private: bool isValidWindow(WindowId wid) ; bool isValidWindow(const KWindowInfo &winfo) ; void windowChangedProxy(WId wid, NET::Properties prop1, NET::Properties2 prop2); private: WindowId m_desktopId{-1}; }; #endif // XCBINTERFACE_H ukui-panel-4.0.0.4/plugin-taskbar/windowmanager/netwm.h0000644000175000017500000015260314560306203021445 0ustar fengfeng/* Copyright (c) 2000 Troll Tech AS Copyright (c) 2003 Lubos Lunak Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #ifndef netwm_h #define netwm_h #include #include #include #if KWINDOWSYSTEM_HAVE_X11 #include #include #include "netwm_def.h" #define KDE_ALL_ACTIVITIES_UUID "00000000-0000-0000-0000-000000000000" // forward declaration struct NETRootInfoPrivate; struct NETWinInfoPrivate; template class NETRArray; /** Common API for root window properties/protocols. The NETRootInfo class provides a common API for clients and window managers to set/read/change properties on the root window as defined by the NET Window Manager Specification.. @author Bradley T. Hughes @see NET @see NETWinInfo **/ class KWINDOWSYSTEM_EXPORT NETRootInfo : public NET { public: /** Indexes for the properties array. **/ // update also NETRootInfoPrivate::properties[] size when extending this enum { PROTOCOLS, WINDOW_TYPES, STATES, PROTOCOLS2, ACTIONS, PROPERTIES_SIZE }; /** Window Managers should use this constructor to create a NETRootInfo object, which will be used to set/update information stored on the rootWindow. The application role is automatically set to WindowManager when using this constructor. @param connection XCB connection @param supportWindow The Window id of the supportWindow. The supportWindow must be created by the window manager as a child of the rootWindow. The supportWindow must not be destroyed until the Window Manager exits. @param wmName A string which should be the window manager's name (ie. "KWin" or "Blackbox"). @param properties The properties the window manager supports @param windowTypes The window types the window manager supports @param states The states the window manager supports @param properties2 The properties2 the window manager supports @param actions The actions the window manager supports @param screen For Window Managers that support multiple screen (ie. "multiheaded") displays, the screen number may be explicitly defined. If this argument is omitted, the default screen will be used. @param doActivate true to activate the window **/ NETRootInfo(xcb_connection_t *connection, xcb_window_t supportWindow, const char *wmName, NET::Properties properties, NET::WindowTypes windowTypes, NET::States states, NET::Properties2 properties2, NET::Actions actions, int screen = -1, bool doActivate = true); /** Clients should use this constructor to create a NETRootInfo object, which will be used to query information set on the root window. The application role is automatically set to Client when using this constructor. @param connection XCB connection @param properties The properties the client is interested in. @param properties2 The properties2 the client is interested in. @param properties_size The number of elements in the properties array. @param screen For Clients that support multiple screen (ie. "multiheaded") displays, the screen number may be explicitly defined. If this argument is omitted, the default screen will be used. @param doActivate true to call activate() to do an initial data read/update of the query information. **/ NETRootInfo(xcb_connection_t *connection, NET::Properties properties, NET::Properties2 properties2 = NET::Properties2(), int screen = -1, bool doActivate = true); /** Creates a shared copy of the specified NETRootInfo object. @param rootinfo the NETRootInfo object to copy **/ NETRootInfo(const NETRootInfo &rootinfo); /** Destroys the NETRootInfo object. **/ virtual ~NETRootInfo(); /** Returns the xcb connection used. @return the XCB connection **/ xcb_connection_t *xcbConnection() const; /** Returns the Window id of the rootWindow. @return the id of the root window **/ xcb_window_t rootWindow() const; /** Returns the Window id of the supportWindow. @return the id of the support window **/ xcb_window_t supportWindow() const; /** Returns the name of the Window Manager. @return the name of the window manager **/ const char *wmName() const; /** Sets the given property if on is true, and clears the property otherwise. In WindowManager mode this function updates _NET_SUPPORTED. In Client mode this function does nothing. @since 4.4 **/ void setSupported(NET::Property property, bool on = true); /** @overload @since 4.4 **/ void setSupported(NET::Property2 property, bool on = true); /** @overload @since 4.4 **/ void setSupported(NET::WindowTypeMask property, bool on = true); /** @overload @since 4.4 **/ void setSupported(NET::State property, bool on = true); /** @overload @since 4.4 **/ void setSupported(NET::Action property, bool on = true); /** Returns true if the given property is supported by the window manager. Note that for Client mode, NET::Supported needs to be passed in the properties argument for this to work. **/ bool isSupported(NET::Property property) const; /** @overload **/ bool isSupported(NET::Property2 property) const; /** @overload **/ bool isSupported(NET::WindowTypeMask type) const; /** @overload **/ bool isSupported(NET::State state) const; /** @overload **/ bool isSupported(NET::Action action) const; /** In the Window Manager mode, this is equivalent to the properties argument passed to the constructor. In the Client mode, if NET::Supported was passed in the properties argument, the returned value are all properties supported by the Window Manager. Other supported protocols and properties are returned by the specific methods. @see supportedProperties2() @see supportedStates() @see supportedWindowTypes() @see supportedActions() **/ NET::Properties supportedProperties() const; /** * In the Window Manager mode, this is equivalent to the properties2 * argument passed to the constructor. In the Client mode, if * NET::Supported was passed in the properties argument, the returned * value are all properties2 supported by the Window Manager. Other supported * protocols and properties are returned by the specific methods. * @see supportedProperties() * @see supportedStates() * @see supportedWindowTypes() * @see supportedActions() * @since 5.0 **/ NET::Properties2 supportedProperties2() const; /** * In the Window Manager mode, this is equivalent to the states * argument passed to the constructor. In the Client mode, if * NET::Supported was passed in the properties argument, the returned * value are all states supported by the Window Manager. Other supported * protocols and properties are returned by the specific methods. * @see supportedProperties() @see supportedProperties2() * @see supportedWindowTypes() * @see supportedActions() * @since 5.0 **/ NET::States supportedStates() const; /** * In the Window Manager mode, this is equivalent to the windowTypes * argument passed to the constructor. In the Client mode, if * NET::Supported was passed in the properties argument, the returned * value are all window types supported by the Window Manager. Other supported * protocols and properties are returned by the specific methods. * @see supportedProperties() @see supportedProperties2() * @see supportedStates() * @see supportedActions() * @since 5.0 **/ NET::WindowTypes supportedWindowTypes() const; /** * In the Window Manager mode, this is equivalent to the actions * argument passed to the constructor. In the Client mode, if * NET::Supported was passed in the properties argument, the returned * value are all actions supported by the Window Manager. Other supported * protocols and properties are returned by the specific methods. * @see supportedProperties() @see supportedProperties2() * @see supportedStates() * @see supportedWindowTypes() * @since 5.0 **/ NET::Actions supportedActions() const; /** * @returns the properties argument passed to the constructor. * @see passedProperties2() * @see passedStates() * @see passedWindowTypes() * @see passedActions() **/ NET::Properties passedProperties() const; /** * @returns the properties2 argument passed to the constructor. * @see passedProperties() * @see passedStates() * @see passedWindowTypes() * @see passedActions() * @since 5.0 **/ NET::Properties2 passedProperties2() const; /** * @returns the states argument passed to the constructor. * @see passedProperties() * @see passedProperties2() * @see passedWindowTypes() * @see passedActions() * @since 5.0 **/ NET::States passedStates() const; /** * @returns the windowTypes argument passed to the constructor. * @see passedProperties() * @see passedProperties2() * @see passedStates() * @see passedActions() * @since 5.0 **/ NET::WindowTypes passedWindowTypes() const; /** * @returns the actions argument passed to the constructor. * @see passedProperties() * @see passedProperties2() * @see passedStates() * @see passedWindowTypes() * @since 5.0 **/ NET::Actions passedActions() const; /** Returns an array of Window id's, which contain all managed windows. @return the array of Window id's @see clientListCount() **/ const xcb_window_t *clientList() const; /** Returns the number of managed windows in clientList array. @return the number of managed windows in the clientList array @see clientList() **/ int clientListCount() const; /** Returns an array of Window id's, which contain all managed windows in stacking order. @return the array of Window id's in stacking order @see clientListStackingCount() **/ const xcb_window_t *clientListStacking() const; /** Returns the number of managed windows in the clientListStacking array. @return the number of Window id's in the client list @see clientListStacking() **/ int clientListStackingCount() const; /** Returns the desktop geometry size. NOTE: KDE uses virtual desktops and does not directly support viewport in any way. You should use calls for virtual desktops, viewport is mapped to them if needed. @return the size of the desktop **/ NETSize desktopGeometry() const; /** Returns the viewport of the specified desktop. NOTE: KDE uses virtual desktops and does not directly support viewport in any way. You should use calls for virtual desktops, viewport is mapped to them if needed. @param desktop the number of the desktop @return the position of the desktop's viewport **/ NETPoint desktopViewport(int desktop) const; /** Returns the workArea for the specified desktop. @param desktop the number of the desktop @return the size of the work area **/ NETRect workArea(int desktop) const; /** Returns the name for the specified desktop. @param desktop the number of the desktop @return the name of the desktop **/ const char *desktopName(int desktop) const; /** Returns an array of Window id's, which contain the virtual root windows. @return the array of Window id's @see virtualRootsCount() **/ const xcb_window_t *virtualRoots() const; /** Returns the number of window in the virtualRoots array. @return the number of Window id's in the virtual root array @see virtualRoots() **/ int virtualRootsCount() const; /** Returns the desktop layout orientation. **/ NET::Orientation desktopLayoutOrientation() const; /** Returns the desktop layout number of columns and rows. Note that either may be 0 (see _NET_DESKTOP_LAYOUT). **/ QSize desktopLayoutColumnsRows() const; /** Returns the desktop layout starting corner. **/ NET::DesktopLayoutCorner desktopLayoutCorner() const; /** Returns the number of desktops. NOTE: KDE uses virtual desktops and does not directly support viewport in any way. They are however mapped to virtual desktops if needed. @param ignore_viewport if false, viewport is mapped to virtual desktops @return the number of desktops **/ int numberOfDesktops(bool ignore_viewport = false) const; /** Returns the current desktop. NOTE: KDE uses virtual desktops and does not directly support viewport in any way. They are however mapped to virtual desktops if needed. @param ignore_viewport if false, viewport is mapped to virtual desktops @return the number of the current desktop **/ int currentDesktop(bool ignore_viewport = false) const; /** Returns the active (focused) window. @return the id of the active window **/ xcb_window_t activeWindow() const; /** Window Managers must call this after creating the NETRootInfo object, and before using any other method in the class. This method sets initial data on the root window and does other post-construction duties. Clients must also call this after creating the object to do an initial data read/update. **/ void activate(); /** Sets the list of managed windows on the Root/Desktop window. @param windows The array of Window id's @param count The number of windows in the array **/ void setClientList(const xcb_window_t *windows, unsigned int count); /** Sets the list of managed windows in stacking order on the Root/Desktop window. @param windows The array of Window id's @param count The number of windows in the array. **/ void setClientListStacking(const xcb_window_t *windows, unsigned int count); /** Sets the current desktop to the specified desktop. NOTE: KDE uses virtual desktops and does not directly support viewport in any way. It is however mapped to virtual desktops if needed. @param desktop the number of the desktop @param ignore_viewport if false, viewport is mapped to virtual desktops **/ void setCurrentDesktop(int desktop, bool ignore_viewport = false); /** Sets the desktop geometry to the specified geometry. NOTE: KDE uses virtual desktops and does not directly support viewport in any way. You should use calls for virtual desktops, viewport is mapped to them if needed. @param geometry the new size of the desktop **/ void setDesktopGeometry(const NETSize &geometry); /** Sets the viewport for the current desktop to the specified point. NOTE: KDE uses virtual desktops and does not directly support viewport in any way. You should use calls for virtual desktops, viewport is mapped to them if needed. @param desktop the number of the desktop @param viewport the new position of the desktop's viewport **/ void setDesktopViewport(int desktop, const NETPoint &viewport); /** Sets the number of desktops to the specified number. NOTE: KDE uses virtual desktops and does not directly support viewport in any way. Viewport is mapped to virtual desktops if needed, but not for this call. @param numberOfDesktops the number of desktops **/ void setNumberOfDesktops(int numberOfDesktops); /** Sets the name of the specified desktop. NOTE: KDE uses virtual desktops and does not directly support viewport in any way. Viewport is mapped to virtual desktops if needed, but not for this call. @param desktop the number of the desktop @param desktopName the new name of the desktop **/ void setDesktopName(int desktop, const char *desktopName); /** Requests that the specified window becomes the active (focused) one. @param window the id of the new active window @param src whether the request comes from normal application or from a pager or similar tool @param timestamp X server timestamp of the user action that caused the request @param active_window active window of the requesting application, if any **/ void setActiveWindow(xcb_window_t window, NET::RequestSource src, xcb_timestamp_t timestamp, xcb_window_t active_window); /** Sets the active (focused) window the specified window. This should be used only in the window manager mode. @param window the if of the new active window **/ void setActiveWindow(xcb_window_t window); /** Sets the workarea for the specified desktop @param desktop the number of the desktop @param workArea the new work area of the desktop **/ void setWorkArea(int desktop, const NETRect &workArea); /** Sets the list of virtual root windows on the root window. @param windows The array of Window id's @param count The number of windows in the array. **/ void setVirtualRoots(const xcb_window_t *windows, unsigned int count); /** Sets the desktop layout. This is set by the pager. When setting, the pager must own the _NET_DESKTOP_LAYOUT_Sn manager selection. See _NET_DESKTOP_LAYOUT for details. **/ void setDesktopLayout(NET::Orientation orientation, int columns, int rows, NET::DesktopLayoutCorner corner); /** * Sets the _NET_SHOWING_DESKTOP status (whether desktop is being shown). */ void setShowingDesktop(bool showing); /** * Returns the status of _NET_SHOWING_DESKTOP. */ bool showingDesktop() const; /** Assignment operator. Ensures that the shared data reference counts are correct. **/ const NETRootInfo &operator=(const NETRootInfo &rootinfo); /** Clients (such as pagers/taskbars) that wish to close a window should call this function. This will send a request to the Window Manager, which usually can usually decide how to react to such requests. @param window the id of the window to close **/ void closeWindowRequest(xcb_window_t window); /** Clients (such as pagers/taskbars) that wish to start a WMMoveResize (where the window manager controls the resize/movement, i.e. _NET_WM_MOVERESIZE) should call this function. This will send a request to the Window Manager. @param window The client window that would be resized/moved. @param x_root X position of the cursor relative to the root window. @param y_root Y position of the cursor relative to the root window. @param direction One of NET::Direction (see base class documentation for a description of the different directions). **/ void moveResizeRequest(xcb_window_t window, int x_root, int y_root, Direction direction); /** Clients (such as pagers/taskbars) that wish to move/resize a window using WM2MoveResizeWindow (_NET_MOVERESIZE_WINDOW) should call this function. This will send a request to the Window Manager. See _NET_MOVERESIZE_WINDOW description for details. @param window The client window that would be resized/moved. @param flags Flags specifying the operation (see _NET_MOVERESIZE_WINDOW description) @param x Requested X position for the window @param y Requested Y position for the window @param width Requested width for the window @param height Requested height for the window **/ void moveResizeWindowRequest(xcb_window_t window, int flags, int x, int y, int width, int height); /** Sends the _NET_RESTACK_WINDOW request. **/ void restackRequest(xcb_window_t window, RequestSource source, xcb_window_t above, int detail, xcb_timestamp_t timestamp); /** Sends a ping with the given timestamp to the window, using the _NET_WM_PING protocol. */ void sendPing(xcb_window_t window, xcb_timestamp_t timestamp); #if KWINDOWSYSTEM_ENABLE_DEPRECATED_SINCE(5, 0) /** This function takes the passed XEvent and returns an OR'ed list of NETRootInfo properties that have changed in the properties argument. The new information will be read immediately by the class. The elements of the properties argument are as they would be passed to the constructor, if the array is not large enough, changed properties that don't fit in it won't be listed there (they'll be updated in the class though). @param event the event @param properties properties that changed @param properties_size size of the passed properties array @deprecated since 5.0 use event(xcb_generic_event_t*, NET::Properties*, NET::Properties2*) **/ KWINDOWSYSTEM_DEPRECATED_VERSION(5, 0, "Use NETRootInfo::event(xcb_generic_event_t*, NET::Properties*, NET::Properties2*)") void event(xcb_generic_event_t *event, unsigned long *properties, int properties_size); #endif /** * This function takes the passed xcb_generic_event_t and returns the updated properties in the passed in arguments. * * The new information will be read immediately by the class. It is possible to pass in a * null pointer in the arguments. In that case the passed in argument will obviously not * be updated, but the class will process the information nevertheless. * * @param event the event * @param properties The NET::Properties that changed * @param properties2 The NET::Properties2 that changed * @since 5.0 **/ void event(xcb_generic_event_t *event, NET::Properties *properties, NET::Properties2 *properties2 = nullptr); /** This function takes the passed XEvent and returns an OR'ed list of NETRootInfo properties that have changed. The new information will be read immediately by the class. This overloaded version returns only a single mask, and therefore cannot check state of all properties like the other variant. @param event the event @return the properties **/ NET::Properties event(xcb_generic_event_t *event); protected: /** A Client should subclass NETRootInfo and reimplement this function when it wants to know when a window has been added. @param window the id of the window to add **/ virtual void addClient(xcb_window_t window) { Q_UNUSED(window); } /** A Client should subclass NETRootInfo and reimplement this function when it wants to know when a window has been removed. @param window the id of the window to remove **/ virtual void removeClient(xcb_window_t window) { Q_UNUSED(window); } /** A Window Manager should subclass NETRootInfo and reimplement this function when it wants to know when a Client made a request to change the number of desktops. @param numberOfDesktops the new number of desktops **/ virtual void changeNumberOfDesktops(int numberOfDesktops) { Q_UNUSED(numberOfDesktops); } /** A Window Manager should subclass NETRootInfo and reimplement this function when it wants to know when a Client made a request to change the specified desktop geometry. @param desktop the number of the desktop @param geom the new size **/ virtual void changeDesktopGeometry(int desktop, const NETSize &geom) { Q_UNUSED(desktop); Q_UNUSED(geom); } /** A Window Manager should subclass NETRootInfo and reimplement this function when it wants to know when a Client made a request to change the specified desktop viewport. @param desktop the number of the desktop @param viewport the new position of the viewport **/ virtual void changeDesktopViewport(int desktop, const NETPoint &viewport) { Q_UNUSED(desktop); Q_UNUSED(viewport); } /** A Window Manager should subclass NETRootInfo and reimplement this function when it wants to know when a Client made a request to change the current desktop. @param desktop the number of the desktop **/ virtual void changeCurrentDesktop(int desktop) { Q_UNUSED(desktop); } /** A Window Manager should subclass NETRootInfo and reimplement this function when it wants to know when a Client made a request to close a window. @param window the id of the window to close **/ virtual void closeWindow(xcb_window_t window) { Q_UNUSED(window); } /** A Window Manager should subclass NETRootInfo and reimplement this function when it wants to know when a Client made a request to start a move/resize. @param window The window that wants to move/resize @param x_root X position of the cursor relative to the root window. @param y_root Y position of the cursor relative to the root window. @param direction One of NET::Direction (see base class documentation for a description of the different directions). **/ virtual void moveResize(xcb_window_t window, int x_root, int y_root, unsigned long direction) { Q_UNUSED(window); Q_UNUSED(x_root); Q_UNUSED(y_root); Q_UNUSED(direction); } /** A Window Manager should subclass NETRootInfo and reimplement this function when it wants to receive replies to the _NET_WM_PING protocol. @param window the window from which the reply came @param timestamp timestamp of the ping */ virtual void gotPing(xcb_window_t window, xcb_timestamp_t timestamp) { Q_UNUSED(window); Q_UNUSED(timestamp); } /** A Window Manager should subclass NETRootInfo and reimplement this function when it wants to know when a Client made a request to change the active (focused) window. @param window the id of the window to activate @param src the source from which the request came @param timestamp the timestamp of the user action causing this request @param active_window active window of the requesting application, if any **/ virtual void changeActiveWindow(xcb_window_t window, NET::RequestSource src, xcb_timestamp_t timestamp, xcb_window_t active_window) { Q_UNUSED(window); Q_UNUSED(src); Q_UNUSED(timestamp); Q_UNUSED(active_window); } /** A Window Manager should subclass NETRootInfo and reimplement this function when it wants to know when a pager made a request to move/resize a window. See _NET_MOVERESIZE_WINDOW for details. @param window the id of the window to more/resize @param flags Flags specifying the operation (see _NET_MOVERESIZE_WINDOW description) @param x Requested X position for the window @param y Requested Y position for the window @param width Requested width for the window @param height Requested height for the window **/ virtual void moveResizeWindow(xcb_window_t window, int flags, int x, int y, int width, int height) { Q_UNUSED(window); Q_UNUSED(flags); Q_UNUSED(x); Q_UNUSED(y); Q_UNUSED(width); Q_UNUSED(height); } /** A Window Manager should subclass NETRootInfo and reimplement this function when it wants to know when a Client made a request to restack a window. See _NET_RESTACK_WINDOW for details. @param window the id of the window to restack @param source the source of the request @param above other window in the restack request @param detail restack detail @param timestamp the timestamp of the request **/ virtual void restackWindow(xcb_window_t window, RequestSource source, xcb_window_t above, int detail, xcb_timestamp_t timestamp) { Q_UNUSED(window); Q_UNUSED(source); Q_UNUSED(above); Q_UNUSED(detail); Q_UNUSED(timestamp); } /** A Window Manager should subclass NETRootInfo and reimplement this function when it wants to know when a pager made a request to change showing the desktop. See _NET_SHOWING_DESKTOP for details. @param showing whether to activate the showing desktop mode **/ virtual void changeShowingDesktop(bool showing) { Q_UNUSED(showing); } private: void update(NET::Properties properties, NET::Properties2 properties2); void setSupported(); void setDefaultProperties(); void updateSupportedProperties(xcb_atom_t atom); protected: /** Virtual hook, used to add new "virtual" functions while maintaining binary compatibility. Unused in this class. */ virtual void virtual_hook(int id, void *data); private: NETRootInfoPrivate *p; // krazy:exclude=dpointer (implicitly shared) }; /** Common API for application window properties/protocols. The NETWinInfo class provides a common API for clients and window managers to set/read/change properties on an application window as defined by the NET Window Manager Specification. @author Bradley T. Hughes @see NET @see NETRootInfo @see http://www.freedesktop.org/standards/wm-spec/ **/ class KWINDOWSYSTEM_EXPORT NETWinInfo : public NET { public: /** Indexes for the properties array. **/ // update also NETWinInfoPrivate::properties[] size when extending this enum { PROTOCOLS, PROTOCOLS2, PROPERTIES_SIZE }; /** Create a NETWinInfo object, which will be used to set/read/change information stored on an application window. @param connection XCB connection @param window The Window id of the application window. @param rootWindow The Window id of the root window. @param properties The NET::Properties flags @param properties2 The NET::Properties2 flags @param role Select the application role. If this argument is omitted, the role will default to Client. **/ NETWinInfo(xcb_connection_t *connection, xcb_window_t window, xcb_window_t rootWindow, NET::Properties properties, NET::Properties2 properties2, Role role = Client); #if KWINDOWSYSTEM_ENABLE_DEPRECATED_SINCE(5, 0) /** This constructor differs from the above one only in the way it accepts the list of properties the client is interested in. @deprecated since 5.0 use above ctor **/ KWINDOWSYSTEM_DEPRECATED_VERSION(5, 0, "Use NETWinInfo(xcb_connection_t *, xcb_window_t, xcb_window_t, NET::Properties, NET::Properties2, Role") NETWinInfo(xcb_connection_t *connection, xcb_window_t window, xcb_window_t rootWindow, NET::Properties properties, Role role = Client); #endif /** Creates a shared copy of the specified NETWinInfo object. @param wininfo the NETWinInfo to copy **/ NETWinInfo(const NETWinInfo &wininfo); /** Destroys the NETWinInfo object. **/ virtual ~NETWinInfo(); /** Assignment operator. Ensures that the shared data reference counts are correct. **/ const NETWinInfo &operator=(const NETWinInfo &wintinfo); /** Returns the xcb connection used. @return the XCB connection **/ xcb_connection_t *xcbConnection() const; /** Returns true if the window has any window type set, even if the type itself is not known to this implementation. Presence of a window type as specified by the NETWM spec is considered as the window supporting this specification. @return true if the window has support for the NETWM spec **/ bool hasNETSupport() const; /** @returns the properties argument passed to the constructor. @see passedProperties2() **/ NET::Properties passedProperties() const; /** * @returns the properties2 argument passed to the constructor. * @see passedProperties() * @since 5.0 **/ NET::Properties2 passedProperties2() const; /** Returns the icon geometry. @return the geometry of the icon **/ NETRect iconGeometry() const; /** Returns the state of the window (see the NET base class documentation for a description of the various states). @return the state of the window **/ NET::States state() const; /** Returns the extended (partial) strut specified by this client. See _NET_WM_STRUT_PARTIAL in the spec. **/ NETExtendedStrut extendedStrut() const; // Still used internally, e.g. by KWindowSystem::strutChanged() logic /** @deprecated use strutPartial() Returns the strut specified by this client. @return the strut of the window **/ NETStrut strut() const; /** Returns the window type for this client (see the NET base class documentation for a description of the various window types). Since clients may specify several windows types for a window in order to support backwards compatibility and extensions not available in the NETWM spec, you should specify all window types you application supports (see the NET::WindowTypeMask mask values for various window types). This method will return the first window type that is listed in the supported types, or NET::Unknown if none of the window types is supported. @return the type of the window **/ WindowType windowType(WindowTypes supported_types) const; /** This function returns false if the window has not window type specified at all. Used by KWindowInfo::windowType() to return either NET::Normal or NET::Dialog as appropriate as a fallback. **/ bool hasWindowType() const; /** Returns the name of the window in UTF-8 format. @return the name of the window **/ const char *name() const; /** Returns the visible name as set by the window manager in UTF-8 format. @return the visible name of the window **/ const char *visibleName() const; /** Returns the iconic name of the window in UTF-8 format. Note that this has nothing to do with icons, but it's for "iconic" representations of the window (taskbars etc.), that should be shown when the window is in iconic state. See description of _NET_WM_ICON_NAME for details. @return the iconic name **/ const char *iconName() const; /** Returns the visible iconic name as set by the window manager in UTF-8 format. Note that this has nothing to do with icons, but it's for "iconic" representations of the window (taskbars etc.), that should be shown when the window is in iconic state. See description of _NET_WM_VISIBLE_ICON_NAME for details. @return the visible iconic name **/ const char *visibleIconName() const; /** Returns the desktop where the window is residing. NOTE: KDE uses virtual desktops and does not directly support viewport in any way. It is however mapped to virtual desktops if needed. @param ignore_viewport if false, viewport is mapped to virtual desktops @return the number of the window's desktop @see OnAllDesktops() **/ int desktop(bool ignore_viewport = false) const; /** Returns the process id for the client window. @return the process id of the window **/ int pid() const; /** Returns whether or not this client handles icons. @return true if this client handles icons, false otherwise **/ bool handledIcons() const; /** Returns the mapping state for the window (see the NET base class documentation for a description of mapping state). @return the mapping state **/ MappingState mappingState() const; /** Set icons for the application window. If replace is True, then the specified icon is defined to be the only icon. If replace is False, then the specified icon is added to a list of icons. @param icon the new icon @param replace true to replace, false to append to the list of icons **/ void setIcon(NETIcon icon, bool replace = true); /** Set the icon geometry for the application window. @param geometry the new icon geometry **/ void setIconGeometry(NETRect geometry); /** Set the extended (partial) strut for the application window. @param extended_strut the new strut **/ void setExtendedStrut(const NETExtendedStrut &extended_strut); // Still used internally, e.g. by KWindowSystem::strutChanged() logic /** @deprecated use setExtendedStrut() Set the strut for the application window. @param strut the new strut **/ void setStrut(NETStrut strut); /** Set the state for the application window (see the NET base class documentation for a description of window state). @param state the name state @param mask the mask for the state **/ void setState(NET::States state, NET::States mask); /** Sets the window type for this client (see the NET base class documentation for a description of the various window types). @param type the window type **/ void setWindowType(WindowType type); /** Sets the name for the application window. @param name the new name of the window **/ void setName(const char *name); /** For Window Managers only: set the visible name ( i.e. xterm, xterm <2>, xterm <3>, ... ) @param visibleName the new visible name **/ void setVisibleName(const char *visibleName); /** Sets the iconic name for the application window. @param name the new iconic name **/ void setIconName(const char *name); /** For Window Managers only: set the visible iconic name ( i.e. xterm, xterm <2>, xterm <3>, ... ) @param name the new visible iconic name **/ void setVisibleIconName(const char *name); /** Set which window the desktop is (should be) on. NOTE: KDE uses virtual desktops and does not directly support viewport in any way. It is however mapped to virtual desktops if needed. @param desktop the number of the new desktop @param ignore_viewport if false, viewport is mapped to virtual desktops @see OnAllDesktops() **/ void setDesktop(int desktop, bool ignore_viewport = false); /** Set the application window's process id. @param pid the window's process id **/ void setPid(int pid); /** Set whether this application window handles icons. @param handled true if the window handles icons, false otherwise **/ void setHandledIcons(bool handled); /** Set the frame decoration strut, i.e. the width of the decoration borders. @param strut the new strut **/ void setFrameExtents(NETStrut strut); /** Returns the frame decoration strut, i.e. the width of the decoration borders. @since 4.3 **/ NETStrut frameExtents() const; /** Sets the window frame overlap strut, i.e. how far the window frame extends behind the client area on each side. Set the strut values to -1 if you want the window frame to cover the whole client area. The default values are 0. @since 4.4 **/ void setFrameOverlap(NETStrut strut); /** Returns the frame overlap strut, i.e. how far the window frame extends behind the client area on each side. @since 4.4 **/ NETStrut frameOverlap() const; /** Sets the extents of the drop-shadow drawn by the client. @since 5.65 **/ void setGtkFrameExtents(NETStrut strut); /** Returns the extents of the drop-shadow drawn by a GTK client. @since 5.65 **/ NETStrut gtkFrameExtents() const; /** Returns an icon. If width and height are passed, the icon returned will be the closest it can find (the next biggest). If width and height are omitted, then the largest icon in the list is returned. @param width the preferred width for the icon, -1 to ignore @param height the preferred height for the icon, -1 to ignore @return the icon **/ NETIcon icon(int width = -1, int height = -1) const; /** Returns a list of provided icon sizes. Each size is pair width,height, terminated with pair 0,0. @since 4.3 **/ const int *iconSizes() const; /** * Sets user timestamp @p time on the window (property _NET_WM_USER_TIME). * The timestamp is expressed as XServer time. If a window * is shown with user timestamp older than the time of the last * user action, it won't be activated after being shown, with the special * value 0 meaning not to activate the window after being shown. */ void setUserTime(xcb_timestamp_t time); /** * Returns the time of last user action on the window, or -1 if not set. */ xcb_timestamp_t userTime() const; /** * Sets the startup notification id @p id on the window. */ void setStartupId(const char *startup_id); /** * Returns the startup notification id of the window. */ const char *startupId() const; /** * Sets opacity (0 = transparent, 0xffffffff = opaque ) on the window. */ void setOpacity(unsigned long opacity); /** * Returns the opacity of the window. */ unsigned long opacity() const; /** * Sets actions that the window manager allows for the window. */ void setAllowedActions(NET::Actions actions); /** * Returns actions that the window manager allows for the window. */ NET::Actions allowedActions() const; /** * Returns the WM_TRANSIENT_FOR property for the window, i.e. the mainwindow * for this window. */ xcb_window_t transientFor() const; /** * Returns the leader window for the group the window is in, if any. */ xcb_window_t groupLeader() const; /** * Returns whether the UrgencyHint is set in the WM_HINTS.flags. * See ICCCM 4.1.2.4. * * @since 5.3 **/ bool urgency() const; /** * Returns whether the Input flag is set in WM_HINTS. * See ICCCM 4.1.2.4 and 4.1.7. * * The default value is @c true in case the Client is mapped without a WM_HINTS property. * * @since 5.3 **/ bool input() const; /** * Returns the initial mapping state as set in WM_HINTS. * See ICCCM 4.1.2.4 and 4.1.4. * * The default value if @c Withdrawn in case the Client is mapped without * a WM_HINTS property or without the initial state hint set. * * @since 5.5 **/ MappingState initialMappingState() const; /** * Returns the icon pixmap as set in WM_HINTS. * See ICCCM 4.1.2.4. * * The default value is @c XCB_PIXMAP_NONE. * * Using the ICCCM variant for the icon is deprecated and only * offers a limited functionality compared to {@link icon}. * Only use this variant as a fallback. * * @see icccmIconPixmapMask * @see icon * @since 5.7 **/ xcb_pixmap_t icccmIconPixmap() const; /** * Returns the mask for the icon pixmap as set in WM_HINTS. * See ICCCM 4.1.2.4. * * The default value is @c XCB_PIXMAP_NONE. * * @see icccmIconPixmap * @since 5.7 **/ xcb_pixmap_t icccmIconPixmapMask() const; /** * Returns the class component of the window class for the window * (i.e. WM_CLASS property). */ const char *windowClassClass() const; /** * Returns the name component of the window class for the window * (i.e. WM_CLASS property). */ const char *windowClassName() const; /** * Returns the window role for the window (i.e. WM_WINDOW_ROLE property). */ const char *windowRole() const; /** * Returns the client machine for the window (i.e. WM_CLIENT_MACHINE property). */ const char *clientMachine() const; /** * returns a comma-separated list of the activities the window is associated with. * FIXME this might be better as a NETRArray ? * @since 4.6 */ const char *activities() const; /** * Sets the comma-separated list of activities the window is associated with. * @since 5.1 */ void setActivities(const char *activities); /** * Sets whether the client wishes to block compositing (for better performance) * @since 4.7 */ void setBlockingCompositing(bool active); /** * Returns whether the client wishes to block compositing (for better performance) * @since 4.7 */ bool isBlockingCompositing() const; /** Places the window frame geometry in frame, and the application window geometry in window. Both geometries are relative to the root window. @param frame the geometry for the frame @param window the geometry for the window **/ void kdeGeometry(NETRect &frame, NETRect &window); /** Sets the desired multiple-monitor topology (4 monitor indices indicating the top, bottom, left, and right edges of the window) when the fullscreen state is enabled. The indices are from the set returned by the Xinerama extension. See _NET_WM_FULLSCREEN_MONITORS for details. @param topology A struct that models the desired monitor topology, namely: top is the monitor whose top edge defines the top edge of the fullscreen window, bottom is the monitor whose bottom edge defines the bottom edge of the fullscreen window, left is the monitor whose left edge defines the left edge of the fullscreen window, and right is the monitor whose right edge defines the right edge of the fullscreen window. **/ void setFullscreenMonitors(NETFullscreenMonitors topology); /** Returns the desired fullscreen monitor topology for this client, should it be in fullscreen state. See _NET_WM_FULLSCREEN_MONITORS in the spec. **/ NETFullscreenMonitors fullscreenMonitors() const; #if KWINDOWSYSTEM_ENABLE_DEPRECATED_SINCE(5, 0) /** This function takes the passed XEvent and returns an OR'ed list of NETWinInfo properties that have changed in the properties argument. The new information will be read immediately by the class. The elements of the properties argument are as they would be passed to the constructor, if the array is not large enough, changed properties that don't fit in it won't be listed there (they'll be updated in the class though). @param event the event @param properties properties that changed @param properties_size size of the passed properties array @deprecated since 5.0 use event(xcb_generic_event_t*, NET::Properties*, NET::Properties2*) **/ KWINDOWSYSTEM_DEPRECATED_VERSION(5, 0, "Use NETWinInfo::event(xcb_generic_event_t*, NET::Properties*, NET::Properties2*)") void event(xcb_generic_event_t *event, unsigned long *properties, int properties_size); #endif /** * This function takes the passed in xcb_generic_event_t and returns the updated properties * in the passed in arguments. * * The new information will be read immediately by the class. It is possible to pass in a * null pointer in the arguments. In that case the passed in * argument will obviously not be updated, but the class will process the information * nevertheless. * * @param event the event * @param properties The NET::Properties that changed * @param properties2 The NET::Properties2 that changed * @since 5.0 **/ void event(xcb_generic_event_t *event, NET::Properties *properties, NET::Properties2 *properties2 = nullptr); /** This function takes the pass XEvent and returns an OR'ed list of NETWinInfo properties that have changed. The new information will be read immediately by the class. This overloaded version returns only a single mask, and therefore cannot check state of all properties like the other variant. @param event the event @return the properties **/ NET::Properties event(xcb_generic_event_t *event); /** * @returns The window manager protocols this Client supports. * @since 5.3 **/ NET::Protocols protocols() const; /** * @returns @c true if the Client supports the @p protocol. * @param protocol The window manager protocol to test for * @since 5.3 **/ bool supportsProtocol(NET::Protocol protocol) const; /** * @returns The opaque region as specified by the Client. * @since 5.7 **/ std::vector opaqueRegion() const; /** * Sets the @p name as the desktop file name. * * This is either the base name without full path and without file extension of the * desktop file for the window's application (e.g. "org.kde.foo"). * * If the application's desktop file name is not at a standard location it should be * the full path to the desktop file name (e.g. "/opt/kde/share/org.kde.foo.desktop"). * * If the window does not know the desktop file name, it should not set the name at all. * * @since 5.28 **/ void setDesktopFileName(const char *name); /** * @returns The desktop file name of the window's application if present. * @since 5.28 * @see setDesktopFileName **/ const char *desktopFileName() const; /** Sentinel value to indicate that the client wishes to be visible on all desktops. @return the value to be on all desktops **/ static const int OnAllDesktops; protected: /** A Window Manager should subclass NETWinInfo and reimplement this function when it wants to know when a Client made a request to change desktops (ie. move to another desktop). @param desktop the number of the desktop **/ virtual void changeDesktop(int desktop) { Q_UNUSED(desktop); } /** A Window Manager should subclass NETWinInfo and reimplement this function when it wants to know when a Client made a request to change state (ie. to Shade / Unshade). @param state the new state @param mask the mask for the state **/ virtual void changeState(NET::States state, NET::States mask) { Q_UNUSED(state); Q_UNUSED(mask); } /** A Window Manager should subclass NETWinInfo2 and reimplement this function when it wants to know when a Client made a request to change the fullscreen monitor topology for its fullscreen state. @param topology A structure (top, bottom, left, right) representing the fullscreen monitor topology. **/ virtual void changeFullscreenMonitors(NETFullscreenMonitors topology) { Q_UNUSED(topology); } private: void update(NET::Properties dirtyProperties, NET::Properties2 dirtyProperties2 = NET::Properties2()); void updateWMState(); void setIconInternal(NETRArray &icons, int &icon_count, xcb_atom_t property, NETIcon icon, bool replace); NETIcon iconInternal(NETRArray &icons, int icon_count, int width, int height) const; protected: /** Virtual hook, used to add new "virtual" functions while maintaining binary compatibility. Unused in this class. */ virtual void virtual_hook(int id, void *data); private: NETWinInfoPrivate *p; // krazy:exclude=dpointer (implicitly shared) }; //#define KWIN_FOCUS #endif #endif // netwm_h ukui-panel-4.0.0.4/plugin-taskbar/windowmanager/waylandinterface.h0000644000175000017500000000734014560306203023630 0ustar fengfeng/* * libkysdk-waylandhelper's Library * * Copyright (C) 2023, KylinSoft Co., Ltd. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 3 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this library. If not, see . * * Authors: Zhen Sun * */ #ifndef WAYLANDINTERFACE_H #define WAYLANDINTERFACE_H #include "abstractinterface.h" #include #include #include #include #include #include #include using namespace kdk; using namespace KWayland::Client; class Q_DECL_HIDDEN WaylandInterface:public AbstractInterface { public: WaylandInterface(QObject* parent=nullptr); ~WaylandInterface(); WindowInfo requestInfo(WindowId wid) override; void requestActivate(WindowId wid) override; void requestClose(WindowId wid) override; void requestToggleKeepAbove(WindowId wid) override; void requestToggleMinimized(WindowId wid) override; void requestToggleMaximized(WindowId wid) override; QIcon iconFor(WindowId wid) override; QString titleFor(WindowId wid) override; QString windowGroupFor(WindowId wid) override; quint32 pid(WindowId wid) override; void showCurrentDesktop() override; void hideCurrentDesktop() override; bool windowCanBeDragged(WindowId wid) override; bool windowCanBeMaximized(WindowId wid) override; WindowId activeWindow() override; void setGeometry(QWindow *window, const QRect &rect) override; void setSkipTaskBar(QWindow* window,bool skip) override; void setSkipSwitcher(QWindow* window,bool skip) override; bool skipTaskBar(const WindowId &wid) override; bool skipSwitcher(const WindowId &wid) override; bool isShowingDesktop(); void setOnAllDesktops(const WindowId &wid); NET::WindowType windowType(WindowId wid) override; void setPanelTakefocus(QWindow *window, bool flag) override; void demandAttention(const WindowId &wid, bool set = true) override; protected: bool eventFilter(QObject *obj, QEvent *ev) override; private slots: void updateWindow(); void windowUnmapped(); private: PlasmaWindow *windowFor(WindowId wid) ; bool isValidWindow(const KWayland::Client::PlasmaWindow *w) ; bool isPlasmaDesktop(const KWayland::Client::PlasmaWindow *w) ; bool isPlasmaPanel(const KWayland::Client::PlasmaWindow *w) ; void windowCreatedProxy(KWayland::Client::PlasmaWindow *w); void trackWindow(KWayland::Client::PlasmaWindow *w); void untrackWindow(KWayland::Client::PlasmaWindow *w); void setCurrentDesktop(QString desktop); void addDesktop(const QString &id, quint32 position); private: ConnectionThread *m_connection=nullptr; PlasmaShell *m_plasmaShell = nullptr; Shell *m_shell = nullptr; PlasmaWindowManagement *m_windowManager = nullptr; PlasmaWindow *m_appWindow = nullptr; PlasmaVirtualDesktopManagement *m_virtualDesktopManagement{nullptr}; QStringList m_desktops; QMapm_surfaces; QMapm_plasmaShellSurfaces; }; #endif // WAYLANDINTERFACE_H ukui-panel-4.0.0.4/plugin-taskbar/windowmanager/windowmanager.h0000644000175000017500000001722214560306203023152 0ustar fengfeng/* * libkysdk-waylandhelper's Library * * Copyright (C) 2023, KylinSoft Co., Ltd. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 3 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this library. If not, see . * * Authors: Zhen Sun * */ #ifndef WINDOWMANAGER_H #define WINDOWMANAGER_H #include #include #include #include "windowinfo.h" #include "wmregister.h" namespace kdk { using WindowId = QVariant; class WindowManager : public QObject { Q_OBJECT public: /** * @brief self * @return */ static WindowManager* self(); /** * @brief 获取窗口信息 * @param windowId * @return */ static WindowInfo getwindowInfo(const WindowId& windowId); /** * @brief 获取当前活动窗口 * @return */ static WindowId currentActiveWindow(); /** * @brief 置顶窗口 * @param windowId */ static void keepWindowAbove(const WindowId& windowId); /** * @brief 获取窗口标题 * @param windowId * @return */ static QString getWindowTitle(const WindowId& windowId); /** * @brief 获取窗口图标 * @param windowId * @return */ static QIcon getWindowIcon(const WindowId& windowId); /** * @brief 获取窗口所在组的组名 * @param windowId * @return */ static QString getWindowGroup(const WindowId& windowId); /** * @brief 关闭窗口 * @param windowId */ static void closeWindow(const WindowId& windowId); /** * @brief 激活窗口 * @param windowId */ static void activateWindow(const WindowId& windowId); /** * @brief 最大化窗口 * @param windowId */ static void maximizeWindow(const WindowId& windowId); /** * @brief 最小化窗口 * @param windowId */ static void minimizeWindow(const WindowId& windowId); /** * @brief 获取窗口进程pid * @return */ static quint32 getPid(const WindowId& windowId); /** * @brief 显示当前桌面 */ static void showDesktop(); /** * @brief 取消显示当前桌面 */ static void hideDesktop(); /** * @brief 获取当前桌面的名称 * @return */ static QString currentDesktop(); /** * @brief 获取当前窗口列表 * @return */ static QList windows(); /** * @brief 获取窗口类型,仅适用于X环境下,wayland下统一返回normal * @param windowId * @return */ static NET::WindowType getWindowType(const WindowId& windowId); /** * @brief 设置窗口位置 * @param window * @param rect */ static void setGeometry(QWindow *window,const QRect &rect); /** * @brief 设置是否跳过任务栏,since 2.0 * @param window * @param skip */ static void setSkipTaskBar(QWindow *window,bool skip); /** * @brief 设置是否跳过窗口选择,,since 2.0 * @param window * @param skip */ static void setSkipSwitcher(QWindow *window,bool skip); /** * @brief 判断窗体是否跳过任务栏,since 2.0 * @param windowId * @return */ static bool skipTaskBar(const WindowId& windowId); /** * @brief 判断窗体是否跳过窗口选择,since 2.0 * @param windowId * @return */ static bool skipSwitcher(const WindowId& windowId); /** * @brief 判断桌面是否处于显示状态,,since 2.0 * @return */ static bool isShowingDesktop(); /** * @brief 设置窗口在所有桌面中显示,since 2.0 * @param wid */ static void setOnAllDesktops(const WindowId &windowId); /** * @brief 判断窗口在所有桌面中显示,since 2.0 * @param windowId * @return */ static bool isOnAllDesktops(const WindowId &windowId); /** * @brief 判断窗口是否在当前桌面 * @param 窗口id * @return */ static bool isOnCurrentDesktop(const WindowId& id); /** * @brief 判断窗口是否在指定桌面 * @param 窗口id * @param 桌面id * @return */ static bool isOnDesktop(const WindowId &id, int desktop); /** * @brief 设置panel属性窗体是否获取焦点,仅wayland环境下生效,since 2.3 * @param window * @param flag */ static void setPanelTakefocus(QWindow *window, bool flag); /** * @brief 发送demandAttention状态,since 2.3 * @param wid */ static void demandAttention(const WindowId &wid, bool set = true); Q_SIGNALS: /** * @brief 窗口添加信号 * @param windowId */ void windowAdded(const WindowId& windowId); /** * @brief 窗口删除信号 * @param windowId */ void windowRemoved(const WindowId& windowId); /** * @brief 活动窗口改变信号 * @param wid */ void activeWindowChanged(const WindowId& wid); /** * @brief 窗口改变信号 * @param wid */ void windowChanged(const WindowId& wid); /** * @brief 当前桌面改变信号 * @param wid */ void currentDesktopChanged(); /** * @brief 桌面显示状态变化信号 */ void isShowingDesktopChanged(); /** * @brief 窗口标题改变信号,since 2.3 * @param wid */ void titleChanged(const WindowId& wid); /** * @brief 窗口图标改变信号,since 2.3 * @param wid */ void iconChanged(const WindowId& wid); /** * @brief 窗口活动状态改变信号,since 2.3 * @param wid */ void activeChanged(const WindowId& wid); /** * @brief 窗口全屏状态改变信号,since 2.3 * @param wid */ void fullscreenChanged(const WindowId& wid); /** * @brief 窗口置顶状态改变信号,since 2.3 * @param wid */ void keepAboveChanged(const WindowId& wid); /** * @brief 窗口最小化状态改变信号,since 2.3 * @param wid */ void minimizedChanged(const WindowId& wid); /** * @brief 窗口最大化状态改变信号,since 2.3 * @param wid */ void maximizedChanged(const WindowId& wid); /** * @brief onAllDesktopsChanged,since 2.3 * @param wid */ void onAllDesktopsChanged(const WindowId& wid); /** * @brief demandsAttention状态改变信号,since 2.3 * @param wid */ void demandsAttentionChanged(const WindowId& wid); /** * @brief 跳过任务栏状态改变信号,since 2.3 * @param wid */ void skipTaskbarChanged(const WindowId& wid); /** * @brief 跳过窗口选择器状态改变信号,since 2.3 * @param wid */ void skipSwitcherChanged(const WindowId& wid); /** * @brief 窗口位置改变信号,since 2.3 * @param wid */ void geometryChanged(const WindowId& wid); private: WindowManager(QObject *parent = nullptr); }; } #endif // WINDOWMANAGER_H ukui-panel-4.0.0.4/plugin-taskbar/windowmanager/abstractinterface.cpp0000644000175000017500000000433114560306203024324 0ustar fengfeng/* * libkysdk-waylandhelper's Library * * Copyright (C) 2023, KylinSoft Co., Ltd. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 3 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this library. If not, see . * * Authors: Zhen Sun * */ #include "abstractinterface.h" #include #include #include using namespace kdk; AbstractInterface::AbstractInterface(QObject *parent) :QObject(parent) { } AbstractInterface::~AbstractInterface() { } bool AbstractInterface::inCurrentDesktopActivity(const WindowInfo &winfo) { if(winfo.isValid() && winfo.isOnDesktop(currentDesktop())) return (winfo.isValid() && winfo.isOnDesktop(currentDesktop()) /*&& winfo.isOnActivity(currentActivity())*/); } bool AbstractInterface::isPlasmaDesktop(const QRect &wGeometry) { if (wGeometry.isEmpty()) { return false; } for (const auto scr : qGuiApp->screens()) { if (wGeometry == scr->geometry()) { return true; } } return false; } QString AbstractInterface::currentDesktop() { return m_currentDesktop; } QString AbstractInterface::currentActivity() { return m_currentActivity; } void AbstractInterface::setPlasmaDesktop(WindowId wid) { if (!m_windows.contains(wid)) { return; } if (!m_windows[wid].isPlasmaDesktop()) { m_windows[wid].setIsPlasmaDesktop(true); //updateAllHints(); } } bool AbstractInterface::isValidFor(const WindowId &wid) { if (!m_windows.contains(wid)) { return false; } return m_windows[wid].isValid() && !m_windows[wid].isPlasmaDesktop(); } QList AbstractInterface::windows() { return m_windows.keys(); } ukui-panel-4.0.0.4/plugin-taskbar/windowmanager/windowmanager.cpp0000644000175000017500000001743414560306203023512 0ustar fengfeng/* * libkysdk-waylandhelper's Library * * Copyright (C) 2023, KylinSoft Co., Ltd. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 3 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this library. If not, see . * * Authors: Zhen Sun * */ #include "windowmanager.h" #include #include #include using namespace kdk; static WindowManager* g_windowmanger = nullptr; static WmRegister* m_wm =nullptr; kdk::WindowManager::WindowManager(QObject *parent) :QObject(parent) { m_wm = new WmRegister(this); connect(m_wm->winInterface(),&AbstractInterface::windowAdded,this,&WindowManager::windowAdded); connect(m_wm->winInterface(),&AbstractInterface::windowRemoved,this,&WindowManager::windowRemoved); connect(m_wm->winInterface(),&AbstractInterface::activeWindowChanged,this,&WindowManager::activeWindowChanged); connect(m_wm->winInterface(),&AbstractInterface::windowChanged,this,&WindowManager::windowChanged); connect(m_wm->winInterface(),&AbstractInterface::currentDesktopChanged,this,&WindowManager::currentDesktopChanged); connect(m_wm->winInterface(),&AbstractInterface::isShowingDesktopChanged,this,&WindowManager::isShowingDesktopChanged); connect(m_wm->winInterface(),&AbstractInterface::titleChanged,this,&WindowManager::titleChanged); connect(m_wm->winInterface(),&AbstractInterface::iconChanged,this,&WindowManager::iconChanged); connect(m_wm->winInterface(),&AbstractInterface::activeChanged,this,&WindowManager::activeChanged); connect(m_wm->winInterface(),&AbstractInterface::fullscreenChanged,this,&WindowManager::fullscreenChanged); connect(m_wm->winInterface(),&AbstractInterface::keepAboveChanged,this,&WindowManager::keepAboveChanged); connect(m_wm->winInterface(),&AbstractInterface::minimizedChanged,this,&WindowManager::minimizedChanged); connect(m_wm->winInterface(),&AbstractInterface::maximizedChanged,this,&WindowManager::maximizedChanged); connect(m_wm->winInterface(),&AbstractInterface::onAllDesktopsChanged,this,&WindowManager::onAllDesktopsChanged); connect(m_wm->winInterface(),&AbstractInterface::demandsAttentionChanged,this,&WindowManager::demandsAttentionChanged); connect(m_wm->winInterface(),&AbstractInterface::skipTaskbarChanged,this,&WindowManager::skipTaskbarChanged); connect(m_wm->winInterface(),&AbstractInterface::skipSwitcherChanged,this,&WindowManager::skipSwitcherChanged); connect(m_wm->winInterface(),&AbstractInterface::geometryChanged,this,&WindowManager::geometryChanged); } WindowId WindowManager::currentActiveWindow() { self(); if(!m_wm) return QVariant(); return m_wm->winInterface()->activeWindow(); } void WindowManager::keepWindowAbove(const WindowId &windowId) { self(); if(!m_wm) return; m_wm->winInterface()->requestToggleKeepAbove(windowId); } QString WindowManager::getWindowTitle(const WindowId &windowId) { self(); if(!m_wm) return QString(); return m_wm->winInterface()->titleFor(windowId); } QIcon WindowManager::getWindowIcon(const WindowId &windowId) { self(); if(!m_wm) return QIcon(); return m_wm->winInterface()->iconFor(windowId); } QString WindowManager::getWindowGroup(const WindowId &windowId) { if(!m_wm) return QString(); self(); return m_wm->winInterface()->windowGroupFor(windowId); } void WindowManager::closeWindow(const WindowId &windowId) { self(); if(!m_wm) return; m_wm->winInterface()->requestClose(windowId); } void WindowManager::activateWindow(const WindowId &windowId) { self(); if(!m_wm) return; m_wm->winInterface()->requestActivate(windowId); } void WindowManager::maximizeWindow(const WindowId &windowId) { self(); if(!m_wm) return; m_wm->winInterface()->requestToggleMaximized(windowId); } void WindowManager::minimizeWindow(const WindowId &windowId) { self(); if(!m_wm) return; m_wm->winInterface()->requestToggleMinimized(windowId); } quint32 WindowManager::getPid(const WindowId &windowId) { self(); quint32 pid = 0; if(!m_wm) return pid; pid = m_wm->winInterface()->pid(windowId); return pid; } WindowManager *WindowManager::self() { if(g_windowmanger) return g_windowmanger; g_windowmanger = new WindowManager(); return g_windowmanger; } WindowInfo WindowManager::getwindowInfo(const WindowId &windowId) { self(); if(!m_wm) return WindowInfo(); return m_wm->winInterface()->requestInfo(windowId); } void WindowManager::showDesktop() { self(); if(!m_wm) return; m_wm->winInterface()->showCurrentDesktop(); } void WindowManager::hideDesktop() { self(); if(!m_wm) return; m_wm->winInterface()->hideCurrentDesktop(); } QString WindowManager::currentDesktop() { self(); if(!m_wm) return 0; return m_wm->winInterface()->currentDesktop(); } QList WindowManager::windows() { self(); if(!m_wm) return QList(); return m_wm->winInterface()->windows(); } NET::WindowType WindowManager::getWindowType(const WindowId &windowId) { self(); if(!m_wm) return NET::WindowType::Unknown; return m_wm->winInterface()->windowType(windowId); } void WindowManager::setGeometry(QWindow *window, const QRect &rect) { self(); if(!m_wm) return; m_wm->winInterface()->setGeometry(window,rect); } void WindowManager::setSkipTaskBar(QWindow *window, bool skip) { self(); if(!m_wm) return; m_wm->winInterface()->setSkipTaskBar(window,skip); } void WindowManager::setSkipSwitcher(QWindow *window, bool skip) { self(); if(!m_wm) return; m_wm->winInterface()->setSkipSwitcher(window,skip); } bool WindowManager::skipTaskBar(const WindowId &windowId) { self(); if(!m_wm) return false; return m_wm->winInterface()->skipTaskBar(windowId); } bool WindowManager::skipSwitcher(const WindowId &windowId) { self(); if(!m_wm) return false; return m_wm->winInterface()->skipSwitcher(windowId); } bool WindowManager::isShowingDesktop() { self(); if(!m_wm) return false; return m_wm->winInterface()->isShowingDesktop(); } void WindowManager::setOnAllDesktops(const WindowId &windowId) { self(); if(!m_wm) return; m_wm->winInterface()->setOnAllDesktops(windowId); } bool WindowManager::isOnAllDesktops(const WindowId &windowId) { kdk::WindowInfo windowInfo = WindowManager::getwindowInfo(windowId); return windowInfo.isOnAllDesktops(); } bool WindowManager::isOnCurrentDesktop(const WindowId &windowId) { kdk::WindowInfo windowinfo = WindowManager::getwindowInfo(windowId); return windowinfo.isOnDesktop(currentDesktop()); } bool WindowManager::isOnDesktop(const WindowId &windowId, int desktop) { kdk::WindowInfo windowinfo = WindowManager::getwindowInfo(windowId); return windowinfo.isOnDesktop(QString::number(desktop)); } void WindowManager::setPanelTakefocus(QWindow *window,bool flag) { self(); if(!m_wm || !window) return; m_wm->winInterface()->setPanelTakefocus(window,flag); } void WindowManager::demandAttention(const WindowId &wid, bool set) { self(); if(!m_wm) return; m_wm->winInterface()->demandAttention(wid, set); } ukui-panel-4.0.0.4/plugin-taskbar/windowmanager/wmregister.h0000644000175000017500000000222514560306203022475 0ustar fengfeng/* * libkysdk-waylandhelper's Library * * Copyright (C) 2023, KylinSoft Co., Ltd. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 3 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this library. If not, see . * * Authors: Zhen Sun * */ #ifndef WMREGISTER_H #define WMREGISTER_H #include #include #include "abstractinterface.h" namespace kdk { class WmRegister:public QObject { public: WmRegister(QObject*parent = nullptr); ~WmRegister(); AbstractInterface* winInterface(); private: AbstractInterface *m_winInterface{nullptr}; }; } #endif // WMREGISTER_H ukui-panel-4.0.0.4/plugin-taskbar/windowmanager/windowinfo.h0000644000175000017500000002464214560306203022477 0ustar fengfeng/* * libkysdk-waylandhelper's Library * * Copyright (C) 2023, KylinSoft Co., Ltd. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 3 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this library. If not, see . * * Authors: Zhen Sun * */ #ifndef WINDOWINFO_H #define WINDOWINFO_H #include #include #include namespace kdk { class WindowInfo { using WindowId = QVariant; public: WindowInfo(): m_handle(nullptr) , m_isValid(false) , m_isActive(false) , m_isMinimized(false) , m_isMaxVert(false) , m_isMaxHoriz(false) , m_isFullscreen(false) , m_isShaded(false) , m_isPlasmaDesktop(false) , m_isKeepAbove(false) , m_hasSkipTaskbar(false) , m_hasSkipSwitcher(false) , m_isOnAllDesktops(false) , m_isOnAllActivities(false) , m_isClosable(false) , m_isFullScreenable(false) , m_isGroupable(false) , m_isMaximizable(false) , m_isMinimizable(false) , m_isMovable(false) , m_isResizable(false) , m_isShadeable(false) , m_isVirtualDesktopsChangeable(false){} inline bool isPlasmaDesktop() const; inline void setIsPlasmaDesktop(bool isPlasmaDesktop); inline bool isValid() const; inline void setIsValid(bool isValid); inline bool isActive() const noexcept; inline void setIsActive(bool isActive) noexcept; inline bool isMaxVert() const; inline void setIsMaxVert(bool isMaxVert); inline bool isMaxHoriz() const; inline void setIsMaxHoriz(bool isMaxHoriz); inline WindowId wid() const; inline void setWid(const WindowId &wid); inline bool isKeepAbove() const; inline void setIsKeepAbove(bool isKeepAbove); inline bool isMinimized() const; inline void setIsMinimized(bool isMinimized); inline bool isMaximized() const; inline bool isFullscreen() const noexcept; inline void setIsFullscreen(bool isFullscreen) noexcept; inline bool isShaded() const noexcept; inline void setIsShaded(bool isShaded) noexcept; inline bool hasSkipTaskbar() const noexcept; inline void setHasSkipTaskbar(bool skipTaskbar) noexcept; inline bool hasSkipSwitcher() const noexcept; inline void setHasSkipSwitcher(bool skipSwitcher) noexcept; inline bool isOnAllDesktops() const noexcept; inline void setIsOnAllDesktops(bool alldesktops) noexcept; inline bool isOnAllActivities() const noexcept; inline void setIsOnAllActivities(bool allactivities) noexcept; //ability inline bool isCloseable() const noexcept; inline void setIsClosable(bool closable) noexcept; inline bool isFullScreenable() const noexcept; inline void setIsFullScreenable(bool fullscreenable) noexcept; inline bool isGroupable() const noexcept; inline void setIsGroupable(bool groupable) noexcept; inline bool isMaximizable() const; inline void setIsMaximizable(bool maximizable); inline bool isMinimizable() const; inline void setIsMinimizable(bool minimizable); inline bool isMovable() const noexcept; inline void setIsMovable(bool movable) noexcept; inline bool isResizable() const noexcept; inline void setIsResizable(bool resizable) noexcept; inline bool isShadeable() const noexcept; inline void setIsShadeable(bool shadeble) noexcept; inline bool isVirtualDesktopsChangeable() const noexcept; inline void setIsVirtualDesktopsChangeable(bool virtualdesktopchangeable) noexcept; // //ability // inline bool isMainWindow() const noexcept; // inline bool isChildWindow() const noexcept; // inline QRect geometry() const noexcept; // inline void setGeometry(const QRect &geometry) noexcept; // inline QString appName() const noexcept; // inline void setAppName(const QString &appName) noexcept; // inline QString display() const noexcept; // inline void setDisplay(const QString &display) noexcept; inline QIcon icon() const noexcept; inline void setIcon(const QIcon &icon) noexcept; // inline WindowId wid() const noexcept; // inline void setWid(const WindowId &wid) noexcept; // inline WindowId parentId() const noexcept; // inline void setParentId(const WindowId &parentId) noexcept; inline QStringList desktops() const noexcept; inline void setDesktops(const QStringList &desktops) noexcept; // inline QStringList activities() const noexcept; // inline void setActivities(const QStringList &activities) noexcept; inline bool isOnDesktop(const QString &desktop) const noexcept; // inline bool isOnActivity(const QString &activity) const noexcept; private: void* m_handle; bool m_isWayland; WindowId m_wid{0}; WindowId m_parentId{0}; QRect m_geometry; bool m_isValid : 1; bool m_isActive : 1; bool m_isMinimized : 1; bool m_isMaxVert : 1; bool m_isMaxHoriz : 1; bool m_isFullscreen : 1; bool m_isShaded : 1; bool m_isPlasmaDesktop : 1; bool m_isKeepAbove: 1; bool m_hasSkipTaskbar: 1; bool m_isOnAllDesktops: 1; bool m_isOnAllActivities: 1; bool m_hasSkipSwitcher: 1; //!BEGIN: Window Abilities bool m_isClosable : 1; bool m_isFullScreenable : 1; bool m_isGroupable : 1; bool m_isMaximizable : 1; bool m_isMinimizable : 1; bool m_isMovable : 1; bool m_isResizable : 1; bool m_isShadeable : 1; bool m_isVirtualDesktopsChangeable : 1; QString m_appName; QString m_display; QIcon m_icon; QStringList m_desktops; QStringList m_activities; }; bool WindowInfo::isPlasmaDesktop() const { return m_isPlasmaDesktop; } void WindowInfo::setIsPlasmaDesktop(bool isPlasmaDesktop) { m_isPlasmaDesktop = isPlasmaDesktop; } bool WindowInfo::isValid() const { return m_isValid; } void WindowInfo::setIsValid(bool isValid) { m_isValid = isValid; } bool WindowInfo::isActive() const noexcept { return m_isActive; } void WindowInfo::setIsActive(bool isActive) noexcept { m_isActive = isActive; } bool WindowInfo::isMaxVert() const { return m_isMaxVert; } void WindowInfo::setIsMaxVert(bool isMaxVert) { m_isMaxVert = isMaxVert; } bool WindowInfo::isMaxHoriz() const { return m_isMaxHoriz; } void WindowInfo::setIsMaxHoriz(bool isMaxHoriz) { m_isMaxHoriz = isMaxHoriz; } WindowInfo::WindowId WindowInfo::wid() const { return m_wid; } void WindowInfo::setWid(const WindowId &wid) { m_wid = wid; } bool WindowInfo::isKeepAbove() const { return m_isKeepAbove; } void WindowInfo::setIsKeepAbove(bool isKeepAbove) { m_isKeepAbove = isKeepAbove; } bool WindowInfo::isMinimized() const { return m_isMinimized; } void WindowInfo::setIsMinimized(bool isMinimized) { m_isMinimized = isMinimized; } bool WindowInfo::isMaximized() const { return m_isMaxVert && m_isMaxHoriz; } bool WindowInfo::isFullscreen() const noexcept { return m_isFullscreen; } void WindowInfo::setIsFullscreen(bool isFullscreen) noexcept { m_isFullscreen = isFullscreen; } bool WindowInfo::isShaded() const noexcept { return m_isShaded; } void WindowInfo::setIsShaded(bool isShaded) noexcept { m_isShaded = isShaded; } bool WindowInfo::hasSkipTaskbar() const noexcept { return m_hasSkipTaskbar; } void WindowInfo::setHasSkipTaskbar(bool skipTaskbar) noexcept { m_hasSkipTaskbar = skipTaskbar; } inline bool WindowInfo::hasSkipSwitcher() const noexcept { return m_hasSkipSwitcher; } inline void WindowInfo::setHasSkipSwitcher(bool skipSwitcher) noexcept { m_hasSkipSwitcher = skipSwitcher; } bool WindowInfo::isOnAllDesktops() const noexcept { return m_isOnAllDesktops; } void WindowInfo::setIsOnAllDesktops(bool alldesktops) noexcept { m_isOnAllDesktops = alldesktops; } bool WindowInfo::isOnAllActivities() const noexcept { return m_isOnAllActivities; } void WindowInfo::setIsOnAllActivities(bool allactivities) noexcept { m_isOnAllActivities = allactivities; } bool WindowInfo::isCloseable() const noexcept { return m_isClosable; } void WindowInfo::setIsClosable(bool closable) noexcept { m_isClosable = closable; } bool WindowInfo::isFullScreenable() const noexcept { return m_isFullScreenable; } void WindowInfo::setIsFullScreenable(bool fullscreenable) noexcept { m_isFullScreenable = fullscreenable; } bool WindowInfo::isGroupable() const noexcept { return m_isGroupable; } void WindowInfo::setIsGroupable(bool groupable) noexcept { m_isGroupable = groupable; } bool WindowInfo::isMaximizable() const { return m_isMaximizable; } void WindowInfo::setIsMaximizable(bool maximizable) { m_isMaximizable = maximizable; } bool WindowInfo::isMinimizable() const { return m_isMinimizable; } void WindowInfo::setIsMinimizable(bool minimizable) { m_isMinimizable = minimizable; } bool WindowInfo::isOnDesktop(const QString &desktop) const noexcept { return m_isOnAllDesktops || m_desktops.contains(desktop); } bool WindowInfo::isMovable() const noexcept { return m_isMovable; } void WindowInfo::setIsMovable(bool movable) noexcept { m_isMovable = movable; } bool WindowInfo::isResizable() const noexcept { return m_isResizable; } void WindowInfo::setIsResizable(bool resizable) noexcept { m_isResizable = resizable; } bool WindowInfo::isShadeable() const noexcept { return m_isShadeable; } void WindowInfo::setIsShadeable(bool shadeble) noexcept { m_isShadeable = shadeble; } bool WindowInfo::isVirtualDesktopsChangeable() const noexcept { return m_isVirtualDesktopsChangeable; } void WindowInfo::setIsVirtualDesktopsChangeable(bool virtualdesktopchangeable) noexcept { m_isVirtualDesktopsChangeable = virtualdesktopchangeable; } QIcon WindowInfo::icon() const noexcept { return m_icon; } void WindowInfo::setIcon(const QIcon &icon) noexcept { m_icon = icon; } QStringList WindowInfo::desktops() const noexcept { return m_desktops; } void WindowInfo::setDesktops(const QStringList &desktops) noexcept { m_desktops = desktops; } } #endif // WINDOWINFO_H ukui-panel-4.0.0.4/plugin-taskbar/kbadge.h0000644000175000017500000000410614560306221016660 0ustar fengfeng/* * Copyright (C) 2022, KylinSoft Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * Authors: Nicole * */ #ifndef KBADGE_H #define KBADGE_H #include #include #include #include class KBadgePrivate; /** @defgroup 消息提示模块 * @{ */ /** * @brief KBadge,消息提醒气泡 */ class KBadge : public QToolButton { Q_OBJECT public: KBadge(QWidget *parent); /** * @brief 返回值 * @return */ int value(); /** * @brief 设置值,最大显示数值为99,大于99显示"99+" * @param value */ void setValue(int value); /** * @brief 设置值是否可见 * @param flag */ void setValueVisiable(bool flag); /** * @brief 获取值是否可见 */ bool isValueVisiable() const; /** * @brief 获取背景色 * @return */ QColor color(); /** * @brief 设置背景色 * @param color */ void setColor(const QColor& color); /** * @brief 获取字体大小 * @return */ int fontSize(); /** * @brief 设置字体大小 * @param size */ void setFontSize(int size); QRect geometry(); void setGeometry(QRect rect); QSize updateSize(); protected: void paintEvent(QPaintEvent *event); void resizeEvent(QResizeEvent *event); private: Q_DECLARE_PRIVATE(KBadge) KBadgePrivate*const d_ptr; }; #endif // KBADGE_H ukui-panel-4.0.0.4/plugin-taskbar/iconTheme.h0000644000175000017500000000144014560306203017354 0ustar fengfeng/* * * * Copyright (C) 2023, KylinSoft Co., Ltd. * * * * This program is free software: you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation, either version 3 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program. If not, see . * * * * Authors: Nicole * */ ukui-panel-4.0.0.4/plugin-taskbar/ukuitaskbar.h0000644000175000017500000000715714560306221020001 0ustar fengfeng/* * * * Copyright (C) 2023, KylinSoft Co., Ltd. * * * * This program is free software: you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation, either version 3 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program. If not, see . * * * * Authors: Nicole * */ #ifndef UKUITASKBAR_H #define UKUITASKBAR_H #include "../panel/iukuipanel.h" #include "../panel/iukuipanelplugin.h" #include "../panel/pluginsettings.h" #include "../panel/common/ukuigridlayout.h" #include "ukuitaskgroup.h" #include "ukuitaskbutton.h" #include "windowThumbnailManager.h" #include #include #include class PluginSettings; class UKUITaskBar : public QScrollArea { Q_OBJECT public: explicit UKUITaskBar(IUKUIPanelPlugin *plugin, QWidget* parent = 0); virtual ~UKUITaskBar(); void securityControlWatcher(); void initQuickLaunchApps(); void initExistWindows(); QList> copyQuicklaunchConfig(); void addButtonForQuicklanch(QList > apps); bool hasPinnedToTaskbar(QString desktopFileName); void securityControlApps(QString mode); void removeBlackListApp(); void addWhiteListApp(); void realign(); QString tranWinIdToDesktop(WindowId window); QString tranClassNameToDesktop(WindowId window); bool acceptWindow(const WindowId& window); void saveSettings(); void appsUnistallWatcher(); void directoryUpdated(const QString &path); QSize calcContextWidgetSize(); //固定到任务栏事件埋点 void pinToTaskbarEvent(QString applicationName); protected: void wheelEvent(QWheelEvent* event) override; void mousePressEvent(QMouseEvent *event) override; void mouseMoveEvent(QMouseEvent *event) override; void dragEnterEvent(QDragEnterEvent *event) override; void dragMoveEvent(QDragMoveEvent *event) override; void dropEvent(QDropEvent *event) override; public Q_SLOTS: void onWindowAdded(const WindowId& window); void onWindowRemove(const WindowId& window); void pinToTaskbar(QString desktopFileName); void unpinFromTaskbar(QString desktopFileName); void enterGroupSlot(QList winIdList, QString groupName, int x, int y); void leaveGroupSlot(QString groupName); void onCurrentDesktopChanged(); private: std::unique_ptr m_contextWidget; std::unique_ptr m_layout; std::unique_ptr m_gsettings; QStringList m_gsettingKeys; QDBusInterface *m_interface; QString m_mode; QStringList m_controlAppList; IUKUIPanelPlugin *m_plugin; QList> m_groupList; QMap m_windowId2GroupName; bool m_isGrouping; bool m_canDragging = false; int m_buttonSpan; WindowThumbnailManager *m_windowThumbnailManager = nullptr; std::unique_ptr m_fsWatcher; QMap m_currentContentsMap; //当前每个监控的内容目录列表 //init CornerMark void getInitCornerMarkValue(std::shared_ptr &group, const QString &desktopFileName); }; #endif //UKUITASKBAR_H ukui-panel-4.0.0.4/plugin-taskbar/window-thumbnail/0000755000175000017500000000000014564524546020601 5ustar fengfengukui-panel-4.0.0.4/plugin-taskbar/window-thumbnail/window-thumbnail-plugin.cpp0000644000175000017500000000422414560306203026053 0ustar fengfeng/* * * Copyright (C) 2023, KylinSoft Co., Ltd. * * * * This program is free software: you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation, either version 3 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program. If not, see . * * * * Authors: iaom * */ #include "window-thumbnail-plugin.h" #include #include #include "pipewire-source-item.h" #include "screen-casting.h" #include "screen-casting-request.h" #include "x-window-thumbnail.h" #include "window-thumbnail-config.h" #include "window-thumbnail-mpris-model.h" void WindowThumbnailPlugin::registerTypes(const char *uri) { Q_ASSERT(QLatin1String(uri) == QLatin1String(PLUGIN_IMPORT_URI)); qmlRegisterType(uri, 1, 0, "PipeWireSourceItem"); qmlRegisterType(uri, 1, 0, "ScreenCastingRequest"); qmlRegisterType(uri, 1, 0, "XWindowThumbnail"); qmlRegisterType(uri, 1, 0, "WindowThumbnailMprisModel"); qmlRegisterUncreatableType(uri, 1, 0, "Screencasting", "Only enumeration variables are required"); qmlRegisterUncreatableType(uri, 1, 0, "MprisProperties", "Only enumeration variables are required"); qRegisterMetaType("MprisProperties::Operations"); qRegisterMetaType("MprisProperties::Properties"); } void WindowThumbnailPlugin::initializeEngine(QQmlEngine *engine, const char *uri) { Q_ASSERT(QLatin1String(uri) == QLatin1String(PLUGIN_IMPORT_URI)); engine->rootContext()->setContextProperty("windowThumbnailConfig", new WindowThumbnailConfig); } ukui-panel-4.0.0.4/plugin-taskbar/window-thumbnail/qml/0000755000175000017500000000000014560306221021352 5ustar fengfengukui-panel-4.0.0.4/plugin-taskbar/window-thumbnail/qml/PipeWireThumbnail.qml0000644000175000017500000000072614560306203025462 0ustar fengfeng/* SPDX-FileCopyrightText: 2020 Aleix Pol Gonzalez SPDX-FileCopyrightText: 2023 iaom SPDX-License-Identifier: LGPL-2.0-or-later */ import QtQuick.Window 2.12 import org.ukui.windowThumbnail 1.0 PipeWireSourceItem { visible: waylandItem.nodeId > 0 nodeId: waylandItem.nodeId anchors.fill: parent ScreenCastingRequest { id: waylandItem uuid: {thumbnailSourceItem.winId} } } ukui-panel-4.0.0.4/plugin-taskbar/window-thumbnail/qml/BlurItem.qml0000644000175000017500000000326314560306203023614 0ustar fengfeng/* * * Copyright (C) 2023, KylinSoft Co., Ltd. * * * * This program is free software: you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation, either version 3 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program. If not, see . * * * * Authors: iaom * */ import QtQuick 2.12 import QtGraphicalEffects 1.12 Rectangle { id: root property variant source property int samples: 9 property real blurRadius: Math.floor(samples / 2) property bool hideSource: false color: "transparent" layer.enabled: true layer.effect: OpacityMask { maskSource: Rectangle { width: root.width height: root.height radius: root.radius } } ShaderEffectSource { id: effectSource sourceItem: root.source sourceRect: Qt.rect(root.x, root.y, root.width, root.height) hideSource: root.hideSource width: parent.width height: parent.height } GaussianBlur { anchors.fill: parent source: effectSource radius: root.blurRadius samples: root.samples } //TODO: //关闭特效时,仅绘制固定透明度的base色 } ukui-panel-4.0.0.4/plugin-taskbar/window-thumbnail/qml/WindowThumbnail.qml0000644000175000017500000000230614560306221025201 0ustar fengfengimport QtQuick 2.12 import org.ukui.windowThumbnail 1.0 Item { id: thumbnailSourceItem clip: true property var winId property string desktopEntry: "" property alias thumbnailMprisModel: mprisModel WindowThumbnailMprisModel { id: mprisModel winID: thumbnailSourceItem.winId } Loader { id: thumbnailLoader anchors.fill: parent visible: windowThumbnailConfig.realTimeThumbnailEnable sourceComponent: { if (mprisModel.count > 0) { return mprisPlayerComponent; } else { if (windowThumbnailConfig.pipewireThumbnailEnable) { return piperWireThumbnailComponent; } else { return x11ThumbnailComponent; } } } Component { id: x11ThumbnailComponent XWindowThumbnail { winId: thumbnailSourceItem.winId } } Component { id: piperWireThumbnailComponent PipeWireThumbnail { } } Component { id: mprisPlayerComponent MprisPlayerThumbnail { } } } } ukui-panel-4.0.0.4/plugin-taskbar/window-thumbnail/qml/MprisPlayerThumbnail.qml0000644000175000017500000001301214560306221026175 0ustar fengfengimport QtQuick 2.12 import QtQuick.Layouts 1.12 import QtQuick.Controls 2.12 import org.ukui.panel.items 1.0 import org.ukui.windowThumbnail 1.0 ListView { id: mprisView interactive: false model: mprisModel delegate: Loader { property var artUrl: model.MetaData["mpris:artUrl"] property var title: model.MetaData["xesam:title"] property var artist: model.MetaData["xesam:artist"] property var playbackStatus: model.PlaybackStatus anchors.horizontalCenter: parent.horizontalCenter sourceComponent: { return thumbanilComponent; // if (artUrl) { // return artUrlComponent; // } else { // return thumbanilComponent; // } } } Component { id: artUrlComponent Item { width: 304 height: 96 RowLayout { height: parent.height width: height * 3 Image { id: artUrlImage Layout.fillHeight: true Layout.preferredWidth: artUrlImage.height source: artUrl } BlurItem { Layout.fillHeight: true Layout.fillWidth: true ColumnLayout { anchors.fill: parent anchors.leftMargin: 24 anchors.rightMargin: 24 anchors.bottomMargin: 10 Text { Layout.fillWidth: true text: title elide: Text.ElideRight verticalAlignment: Text.AlignVCenter } Text { Layout.fillWidth: true text: artist elide: Text.ElideRight verticalAlignment: Text.AlignVCenter } Loader { Layout.fillWidth: true Layout.preferredHeight: 28 property var playStatus: playbackStatus sourceComponent: buttonArea } } } } } } Component { id: thumbanilComponent Item { width: 256 height: 144 Loader { id: thumbnailLoader anchors.fill: parent sourceComponent: { if (windowThumbnailConfig.pipewireThumbnailEnable) { return piperWireThumbnailComponent; } else { return x11ThumbnailComponent; } } } BlurItem { x: buttonBase.x y: buttonBase.y width: buttonBase.width height: buttonBase.height radius: 4 blurRadius: 40 samples: 81 source: thumbnailLoader } Loader { id: buttonBase height: 28 width: 128 z: 10 anchors.bottom: parent.bottom anchors.bottomMargin: 16 anchors.horizontalCenter: parent.horizontalCenter property var playStatus: playbackStatus sourceComponent: buttonArea } } } Component { id: buttonArea StyleBackground { useStyleTransparency: false paletteRole: PaletteRole.Base alpha: 0.65 radius: 4 RowLayout { anchors.fill: parent MouseArea { Layout.preferredHeight: 28 Layout.fillWidth: true onClicked: { mprisModel.operation(mprisView.model.index(index, 0), MprisProperties.Previous, []) } ThemeIcon { height: 16 width: 16 anchors.centerIn: parent source: "media-skip-backward-symbolic" } } MouseArea { Layout.preferredHeight: 28 Layout.fillWidth: true onClicked: { mprisModel.operation(mprisView.model.index(index, 0), MprisProperties.PlayPause, []) } ThemeIcon { id: playStatusIcon height: 16 width: 16 anchors.centerIn: parent source: playStatus === "Playing" ? "media-playback-pause-symbolic" : "ukui-play-full-symbolic" } } MouseArea { Layout.preferredHeight: 28 Layout.fillWidth: true onClicked: { mprisModel.operation(mprisView.model.index(index, 0), MprisProperties.Next, []) } ThemeIcon { height: 16 width: 16 anchors.centerIn: parent source: "media-skip-forward-symbolic" } } } } } } ukui-panel-4.0.0.4/plugin-taskbar/window-thumbnail/x-window-thumbnail.h0000644000175000017500000001270414560306221024473 0ustar fengfeng/* * Copyright 2013 by Martin Gräßlin * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as * published by the Free Software Foundation; either version 2, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the * Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef PLASMA_WINDOWTHUMBNAIL_H #define PLASMA_WINDOWTHUMBNAIL_H #define HAVE_XCB_COMPOSITE 1 #include // Qt #include #include #include #include #include // xcb #if HAVE_XCB_COMPOSITE #include #include #include #include #include #if HAVE_EGL #include #include #include // egl.h could include XLib.h #endif // HAVE_EGL #ifdef Bool #undef Bool #endif #endif // HAVE_XCB_COMPOSITE class KWindowInfo; class WindowTextureNode; /** * @brief Renders a thumbnail for the window specified by the @c winId property. * * This declarative item is able to render a live updating thumbnail for the * window specified by the given @c winId property. If it is not possible to get * the thumbnail, the window's icon is rendered instead or in case that the window * Id is invalid a generic fallback icon is used. * * The thumbnail does not necessarily fill out the complete geometry as the * thumbnail gets scaled keeping the aspect ratio. This means the thumbnail gets * rendered into the center of the item's geometry. * * Note: live updating thumbnails are only implemented on the X11 platform. On X11 * a running compositor is not required as this item takes care of redirecting the * window. For technical reasons the window's frame is not included on X11. * * If the window closes, the thumbnail does not get destroyed, which allows to have * a window close animation. * * Example usage: * @code * XWindowThumbnail { * winId: 102760466 * } * @endcode * */ class XWindowThumbnail : public QQuickItem, public QAbstractNativeEventFilter { Q_OBJECT Q_PROPERTY(uint winId READ winId WRITE setWinId NOTIFY winIdChanged) Q_PROPERTY(qreal paintedWidth READ paintedWidth NOTIFY paintedSizeChanged) Q_PROPERTY(qreal paintedHeight READ paintedHeight NOTIFY paintedSizeChanged) Q_PROPERTY(bool thumbnailAvailable READ thumbnailAvailable NOTIFY thumbnailAvailableChanged) public: explicit XWindowThumbnail(QQuickItem *parent = nullptr); ~XWindowThumbnail() override; bool nativeEventFilter(const QByteArray &eventType, void *message, long int *result) override; QSGNode *updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *updatePaintNodeData) override; uint32_t winId() const; void setWinId(uint32_t winId); qreal paintedWidth() const; qreal paintedHeight() const; bool thumbnailAvailable() const; Q_SIGNALS: void winIdChanged(); void paintedSizeChanged(); void thumbnailAvailableChanged(); protected: void itemChange(ItemChange change, const ItemChangeData &data) override; void releaseResources() override; private: void iconToTexture(WindowTextureNode *textureNode); void windowToTexture(WindowTextureNode *textureNode); bool startRedirecting(); void stopRedirecting(); void resetDamaged(); void setThumbnailAvailable(bool thumbnailAvailable); void sceneVisibilityChanged(bool visible); bool m_xcb; bool m_composite; QPointer m_scene; uint32_t m_winId; QSizeF m_paintedSize; bool m_thumbnailAvailable; bool m_redirecting; bool m_damaged; int m_depth; #if HAVE_XCB_COMPOSITE xcb_pixmap_t pixmapForWindow(); bool m_openGLFunctionsResolved; uint8_t m_damageEventBase; xcb_damage_damage_t m_damage; xcb_pixmap_t m_pixmap; /*The following must *only* be used from the render thread*/ uint m_texture; #if HAVE_GLX bool windowToTextureGLX(WindowTextureNode *textureNode); void resolveGLXFunctions(); bool loadGLXTexture(); void bindGLXTexture(); xcb_pixmap_t m_glxPixmap; xcb_visualid_t m_visualid; QFunctionPointer m_bindTexImage; QFunctionPointer m_releaseTexImage; #endif // HAVE_GLX #if HAVE_EGL bool xcbWindowToTextureEGL(WindowTextureNode *textureNode); void resolveEGLFunctions(); void bindEGLTexture(); bool m_eglFunctionsResolved; EGLImageKHR m_image; QFunctionPointer m_eglCreateImageKHR; QFunctionPointer m_eglDestroyImageKHR; QFunctionPointer m_glEGLImageTargetTexture2DOES; #endif // HAVE_EGL // incase that both GLX and EGL are unavailable. QImage convertToQImage(XImage* ximage); bool xlibWindowToTexture(WindowTextureNode *textureNode); #endif }; /** * @brief SimpleTextureNode which cleans up the texture * */ class WindowTextureNode : public QSGSimpleTextureNode { public: WindowTextureNode(); virtual ~WindowTextureNode(); void reset(QSGTexture *texture); private: QScopedPointer m_texture; }; #endif // PLASMA_WINDOWTHUMBNAIL_H ukui-panel-4.0.0.4/plugin-taskbar/window-thumbnail/screen-casting.h0000644000175000017500000000303414560306203023637 0ustar fengfeng/* SPDX-FileCopyrightText: 2020 Aleix Pol Gonzalez SPDX-FileCopyrightText: 2023 iaom SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL */ #ifndef SCREENCASTING_H #define SCREENCASTING_H #include #include #include #include struct zkde_screencast_unstable_v1; namespace KWayland { namespace Client { class PlasmaWindow; class Registry; class Output; } } class ScreencastingPrivate; class ScreencastingStreamPrivate; class ScreencastingStream : public QObject { Q_OBJECT public: ScreencastingStream(QObject *parent); ~ScreencastingStream() override; quint32 nodeId() const; Q_SIGNALS: void created(quint32 nodeid); void failed(const QString &error); void closed(); private: friend class Screencasting; QScopedPointer d; }; class Screencasting : public QObject { Q_OBJECT public: explicit Screencasting(QObject *parent = nullptr); explicit Screencasting(KWayland::Client::Registry *registry, int id, int version, QObject *parent = nullptr); ~Screencasting() override; enum CursorMode { Hidden = 1, Embedded = 2, Metadata = 4, }; Q_ENUM(CursorMode); ScreencastingStream *createWindowStream(const QString &uuid, CursorMode mode); void setup(zkde_screencast_unstable_v1 *screencasting); void destroy(); private: QScopedPointer d; }; #endif // SCREENCASTING_H ukui-panel-4.0.0.4/plugin-taskbar/window-thumbnail/mpris/0000755000175000017500000000000014560306203021713 5ustar fengfengukui-panel-4.0.0.4/plugin-taskbar/window-thumbnail/mpris/org.mpris.MediaPlayer2.Player.xml0000644000175000017500000001072014560306203030065 0ustar fengfeng ukui-panel-4.0.0.4/plugin-taskbar/window-thumbnail/mpris/player-items-model.cpp0000644000175000017500000001647614560306203026146 0ustar fengfeng/* * * Copyright (C) 2023, KylinSoft Co., Ltd. * * * * This program is free software: you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation, either version 3 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program. If not, see . * * * * Authors: iaom * */ #include #include #include "player-items-model.h" #include "player-item.h" #include "mpris-player-collecter.h" PlayerItemsModel::PlayerItemsModel(QObject *parent) : QAbstractListModel(parent) { m_services = MprisPlayerCollecter::self()->playerServices(); connect(MprisPlayerCollecter::self(), &MprisPlayerCollecter::playerAdded, this, &PlayerItemsModel::onPlayerAdded); connect(MprisPlayerCollecter::self(), &MprisPlayerCollecter::playerRemoved, this, &PlayerItemsModel::onPlayerRemoved); connect(MprisPlayerCollecter::self(), &MprisPlayerCollecter::dataChanged, this, &PlayerItemsModel::onDataChanged); } QHash PlayerItemsModel::roleNames() const { QHash roles; QMetaEnum e = QMetaEnum::fromType(); for (int i = 0; i < e.keyCount(); ++i) { roles.insert(e.value(i), e.key(i)); } return roles; } QModelIndex PlayerItemsModel::index(int row, int column, const QModelIndex &parent) const { if (row < 0 || column != 0) { return {}; } return createIndex(row, column, nullptr); } int PlayerItemsModel::rowCount(const QModelIndex &parent) const { return parent.isValid() ? 0 : m_services.count(); } QVariant PlayerItemsModel::data(const QModelIndex &index, int role) const { if (!index.isValid() || index.row() >= m_services.count()) { return {}; } if(role == MprisProperties::Pid) { return MprisPlayerCollecter::self()->pidofService(m_services.at(index.row())); } PlayerItem *item = MprisPlayerCollecter::self()->item(m_services.at(index.row())); switch (role) { case MprisProperties::Valid: return item->valid(); case MprisProperties::CanQuit: return item->canQuit(); case MprisProperties::FullScreen: return item->fullScreen(); case MprisProperties::CanSetFullScreen: return item->canSetFullScreen(); case MprisProperties::CanRaise: return item->canRaise(); case MprisProperties::HasTrackList: return item->hasTrackList(); case MprisProperties::Identity: return item->identity(); case MprisProperties::DesktopEntry: return item->desktopEntry(); case MprisProperties::SupportedUriSchemes: return item->supportedUriSchemes(); case MprisProperties::SupportedMimeTypes: return item->supportedMimeTypes(); case MprisProperties::PlaybackStatus: return item->playbackStatus(); case MprisProperties::LoopStatus: return item->loopStatus(); case MprisProperties::Rate: return item->rate(); case MprisProperties::Shuffle: return item->shuffle(); case MprisProperties::MetaData: return item->metaData(); case MprisProperties::Volume: return item->volume(); case MprisProperties::Position: return item->position(); case MprisProperties::MinimumRate: return item->minimumRate(); case MprisProperties::MaximumRate: return item->maximumRate(); case MprisProperties::CanGoNext: return item->canGoNext(); case MprisProperties::CanGoPrevious: return item->canGoPrevious(); case MprisProperties::CanPlay: return item->canPlay(); case MprisProperties::CanPause: return item->canPause(); case MprisProperties::CanSeek: return item->canSeek(); case MprisProperties::CanControl: return item->canControl(); default: return {}; } Q_UNREACHABLE(); } void PlayerItemsModel::onPlayerAdded(const QString &service, uint pid) { Q_UNUSED(pid); beginInsertRows(QModelIndex(), m_services.size(), m_services.size()); m_services.append(service); endInsertRows(); } void PlayerItemsModel::onPlayerRemoved(const QString &service, uint pid) { Q_UNUSED(pid); int index = m_services.indexOf(service); beginRemoveRows(QModelIndex(), index, index); m_services.removeAll(service); endRemoveRows(); } void PlayerItemsModel::operation(const QModelIndex &index, MprisProperties::Operations operation, const QVariantList &args) { if (!index.isValid() || index.row() >= m_services.count()) { return; } switch (operation) { case MprisProperties::Raise: return MprisPlayerCollecter::self()->item(m_services.at(index.row()))->pause(); case MprisProperties::Quit: return MprisPlayerCollecter::self()->item(m_services.at(index.row()))->quit(); case MprisProperties::Next: return MprisPlayerCollecter::self()->item(m_services.at(index.row()))->next(); case MprisProperties::Previous: return MprisPlayerCollecter::self()->item(m_services.at(index.row()))->previous(); case MprisProperties::Pause: return MprisPlayerCollecter::self()->item(m_services.at(index.row()))->pause(); case MprisProperties::PlayPause: return MprisPlayerCollecter::self()->item(m_services.at(index.row()))->playPause(); case MprisProperties::Stop: return MprisPlayerCollecter::self()->item(m_services.at(index.row()))->stop(); case MprisProperties::Play: return MprisPlayerCollecter::self()->item(m_services.at(index.row()))->play(); case MprisProperties::Seek: if(args.isEmpty()) { qWarning() << "Seek without offset!"; return; } return MprisPlayerCollecter::self()->item(m_services.at(index.row()))->seek(args.at(0).toLongLong()); case MprisProperties::SetPosition: if(args.size() < 2) { qWarning() << "setPosition without enough args!"; return; } return MprisPlayerCollecter::self()->item(m_services.at(index.row()))->setPosition(args.at(0).toString(), args.at(1).toLongLong()); case MprisProperties::OpenUri: if(args.isEmpty()) { qWarning() << "OpenUri without uri!"; return; } return MprisPlayerCollecter::self()->item(m_services.at(index.row()))->openUri(args.at(0).toString()); } Q_UNREACHABLE(); } void PlayerItemsModel::onDataChanged(const QString &service, const QVector &properties) { int row = m_services.indexOf(service); if(row >= 0) { QModelIndex changedIndex = index(row ,0, {}); Q_EMIT dataChanged(changedIndex, changedIndex, properties); } } ukui-panel-4.0.0.4/plugin-taskbar/window-thumbnail/mpris/properties.h0000644000175000017500000000355714560306203024272 0ustar fengfeng/* * * Copyright (C) 2023, KylinSoft Co., Ltd. * * * * This program is free software: you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation, either version 3 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program. If not, see . * * * * Authors: iaom * */ #ifndef UKUI_PANEL_PROPERTIES_H #define UKUI_PANEL_PROPERTIES_H #include class MprisProperties { Q_GADGET public: enum Properties { Pid = 0, Valid, //media player2 properties CanQuit, FullScreen, CanSetFullScreen, CanRaise, HasTrackList, Identity, DesktopEntry, SupportedUriSchemes, SupportedMimeTypes, //media player2 player properties PlaybackStatus, LoopStatus, Rate, Shuffle, MetaData, Volume, Position, MinimumRate, MaximumRate, CanGoNext, CanGoPrevious, CanPlay, CanPause, CanSeek, CanControl }; Q_ENUM(Properties) enum Operations { //media player2 methods Raise, Quit, //media player2 player methods Next, Previous, Pause, PlayPause, Stop, Play, Seek, SetPosition, OpenUri }; Q_ENUM(Operations) }; #endif //UKUI_PANEL_PROPERTIES_H ukui-panel-4.0.0.4/plugin-taskbar/window-thumbnail/mpris/player-item.cpp0000644000175000017500000003755614560306203024667 0ustar fengfeng/* * * Copyright (C) 2023, KylinSoft Co., Ltd. * * * * This program is free software: you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation, either version 3 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program. If not, see . * * * * Authors: iaom * */ #include "player-item.h" #include #include #include #include "dbusproperties.h" #include "mprisplayer2player.h" #include "mprisplayer2.h" static const QString MPRIS2_PATH = QStringLiteral("/org/mpris/MediaPlayer2"); class MediaPlayer2Props { public: bool m_canQuit = false; bool m_fullScreen = false; bool m_canSetFullScreen = false; bool m_canRaise = false; bool m_hasTrackList = false; QString m_identity; QString m_desktopEntry; QStringList m_supportedUriSchemes; QStringList m_supportedMimeTypes; }; class MediaPlayer2PlayerProps { public: QString m_playbackStatus; QString m_loopStatus; double m_rate = 1; bool m_shuffle = false; QVariantMap m_metaData; double m_volume = 0; qint64 m_position = 0; double m_minimumRate = 0; double m_maximumRate = 0; bool m_canGoNext = false; bool m_canGoPrevious = false; bool m_canPlay = false; bool m_canPause = false; bool m_canSeek = false; bool m_canControl = false; }; class PlayerItemPrivate: public QObject { Q_OBJECT public: PlayerItemPrivate(const QString &serviceName, QObject *parent = nullptr); void refresh(); void updateMediaPlayer2Props(QDBusPendingCallWatcher *watcher); void updateMediaPlayer2PropsFromMap(const QVariantMap &map); void updateMediaPlayer2PlayerProps(QDBusPendingCallWatcher *watcher); void updateMediaPlayer2PlayerPropsFromMap(const QVariantMap &map); void propertiesChanged(const QString &interface, const QVariantMap &changedProperties, const QStringList &invalidatedProperties); void onSeeked(quint64 position); OrgFreedesktopDBusPropertiesInterface *m_propsIface = nullptr; OrgMprisMediaPlayer2Interface *m_mprisIface = nullptr; OrgMprisMediaPlayer2PlayerInterface *m_mprisPlayerIface = nullptr; QDBusInterface *m_interfaceMidea = nullptr; QString m_serviceName; uint m_pid = 0; bool m_mp2PropsReceived = false; bool m_mp2PlayerPropsReceived = false; MediaPlayer2Props m_mp2Props; MediaPlayer2PlayerProps m_mp2PlayerProps; bool m_valid = false; PlayerItem *q = nullptr; }; PlayerItemPrivate::PlayerItemPrivate(const QString &serviceName, QObject *parent) { if(serviceName.isEmpty() || !serviceName.startsWith(QLatin1String("org.mpris.MediaPlayer2."))) { qWarning() << "Invalid mpris2 service: " << serviceName; return; } q = qobject_cast(parent); m_serviceName = serviceName; QDBusConnection conn = QDBusConnection::sessionBus(); QDBusReply pidReply = conn.interface()->servicePid(serviceName); if(pidReply.isValid()) { m_pid = pidReply.value(); } m_propsIface = new OrgFreedesktopDBusPropertiesInterface(serviceName, MPRIS2_PATH, conn, this); m_mprisIface = new OrgMprisMediaPlayer2Interface(serviceName, MPRIS2_PATH, conn, this); m_mprisPlayerIface = new OrgMprisMediaPlayer2PlayerInterface(serviceName, MPRIS2_PATH, conn, this); m_interfaceMidea = new QDBusInterface(serviceName, MPRIS2_PATH, "org.mpris.MediaPlayer2.Player", conn, this); if(!m_propsIface->isValid() || !m_mprisIface->isValid() || !m_mprisPlayerIface->isValid()) { qWarning() << "Invalid mpris2 service: " << serviceName; return; } connect(m_propsIface, &OrgFreedesktopDBusPropertiesInterface::PropertiesChanged, this, &PlayerItemPrivate::propertiesChanged); connect(m_mprisPlayerIface, &OrgMprisMediaPlayer2PlayerInterface::Seeked, this, &PlayerItemPrivate::onSeeked); refresh(); m_valid = true; } void PlayerItemPrivate::refresh() { //fetch MediaPlayer2 properties QDBusPendingCall async = m_propsIface->GetAll(OrgMprisMediaPlayer2Interface::staticInterfaceName()); auto watcher = new QDBusPendingCallWatcher(async, this); watcher->setProperty("fetch", true); connect(watcher, &QDBusPendingCallWatcher::finished, this, &PlayerItemPrivate::updateMediaPlayer2Props); //fetch MediaPlayer2.Player properties async = m_propsIface->GetAll(OrgMprisMediaPlayer2PlayerInterface::staticInterfaceName()); watcher = new QDBusPendingCallWatcher(async, this); watcher->setProperty("fetch", true); connect(watcher, &QDBusPendingCallWatcher::finished, this, &PlayerItemPrivate::updateMediaPlayer2PlayerProps); } void PlayerItemPrivate::updateMediaPlayer2Props(QDBusPendingCallWatcher *watcher) { //已收到更新信号后忽略主动查询返回 bool fetch = watcher->property("fetch").toBool(); if(m_mp2PropsReceived && fetch) { return; } QDBusPendingReply propsReply = *watcher; watcher->deleteLater(); if (propsReply.isError()) { qWarning() << m_serviceName << "update Media player2 prop error:" << "Error message:" << propsReply.error().name() << propsReply.error().message(); return; } updateMediaPlayer2PropsFromMap(propsReply.value()); if(!fetch) { m_mp2PropsReceived = true; } watcher->deleteLater(); } void PlayerItemPrivate::updateMediaPlayer2PropsFromMap(const QVariantMap &map) { QVector updateProperties; if(map.find(QStringLiteral("CanQuit")) != map.constEnd()) { m_mp2Props.m_canQuit = map.value(QStringLiteral("CanQuit")).toBool(); updateProperties << MprisProperties::CanQuit; } if(map.find(QStringLiteral("Fullscreen")) != map.constEnd()) { m_mp2Props.m_fullScreen = map.value(QStringLiteral("Fullscreen")).toBool(); updateProperties << MprisProperties::FullScreen; } if(map.find(QStringLiteral("CanSetFullscreen")) != map.constEnd()) { m_mp2Props.m_canSetFullScreen = map.value(QStringLiteral("CanSetFullscreen")).toBool(); updateProperties << MprisProperties::CanSetFullScreen; } if(map.find(QStringLiteral("CanRaise")) != map.constEnd()) { m_mp2Props.m_canRaise = map.value(QStringLiteral("CanRaise")).toBool(); updateProperties << MprisProperties::CanRaise; } if(map.find(QStringLiteral("HasTrackList")) != map.constEnd()) { m_mp2Props.m_hasTrackList = map.value(QStringLiteral("HasTrackList")).toBool(); updateProperties << MprisProperties::HasTrackList; } if(map.find(QStringLiteral("Identity")) != map.constEnd()) { m_mp2Props.m_identity = map.value(QStringLiteral("Identity")).toString(); updateProperties << MprisProperties::Identity; } if(map.find(QStringLiteral("DesktopEntry")) != map.constEnd()) { m_mp2Props.m_desktopEntry = map.value(QStringLiteral("DesktopEntry")).toString(); updateProperties << MprisProperties::DesktopEntry; } if(map.find(QStringLiteral("SupportedUriSchemes")) != map.constEnd()) { m_mp2Props.m_supportedUriSchemes = map.value(QStringLiteral("SupportedUriSchemes")).toStringList(); updateProperties << MprisProperties::SupportedUriSchemes; } if(map.find(QStringLiteral("SupportedMimeTypes")) != map.constEnd()) { m_mp2Props.m_supportedMimeTypes = map.value(QStringLiteral("SupportedMimeTypes")).toStringList(); updateProperties << MprisProperties::SupportedMimeTypes; } if(!updateProperties.isEmpty()) { Q_EMIT q->dataChanged(m_serviceName, updateProperties); } } void PlayerItemPrivate::updateMediaPlayer2PlayerProps(QDBusPendingCallWatcher *watcher) { bool fetch = watcher->property("fetch").toBool(); if(m_mp2PlayerPropsReceived && fetch) { return; } QDBusPendingReply propsReply = *watcher; watcher->deleteLater(); if (propsReply.isError()) { qWarning() << m_serviceName << "update Media player2 player prop error:" << "Error message:" << propsReply.error().name() << propsReply.error().message(); return; } updateMediaPlayer2PlayerPropsFromMap(propsReply.value()); if(!fetch) { m_mp2PlayerPropsReceived = true; } watcher->deleteLater(); } void PlayerItemPrivate::updateMediaPlayer2PlayerPropsFromMap(const QVariantMap &map) { QVector updateProperties; if(map.find(QStringLiteral("PlaybackStatus")) != map.constEnd() || map.find(QStringLiteral("Metadata")) != map.constEnd()) { //m_mp2PlayerProps.m_playbackStatus = map.value(QStringLiteral("PlaybackStatus")).toString(); m_mp2PlayerProps.m_playbackStatus = m_interfaceMidea->property("PlaybackStatus").toString(); updateProperties << MprisProperties::PlaybackStatus; } if(map.find(QStringLiteral("LoopStatus")) != map.constEnd()) { m_mp2PlayerProps.m_loopStatus = map.value(QStringLiteral("LoopStatus")).toString(); updateProperties << MprisProperties::LoopStatus; } if(map.find(QStringLiteral("Rate")) != map.constEnd()) { m_mp2PlayerProps.m_rate = map.value(QStringLiteral("Rate")).toDouble(); updateProperties << MprisProperties::Rate; } if(map.find(QStringLiteral("Shuffle")) != map.constEnd()) { m_mp2PlayerProps.m_shuffle = map.value(QStringLiteral("Shuffle")).toBool(); updateProperties << MprisProperties::Shuffle; } if(map.find(QStringLiteral("Metadata")) != map.constEnd()) { QDBusArgument arg = map.value(QStringLiteral("Metadata")).value(); m_mp2PlayerProps.m_metaData.clear(); arg >> m_mp2PlayerProps.m_metaData; updateProperties << MprisProperties::MetaData; } if(map.find(QStringLiteral("Volume")) != map.constEnd()) { m_mp2PlayerProps.m_volume = map.value(QStringLiteral("Volume")).toDouble(); updateProperties << MprisProperties::Volume; } if(map.find(QStringLiteral("Position")) != map.constEnd()) { m_mp2PlayerProps.m_position = map.value(QStringLiteral("Position")).toLongLong(); updateProperties << MprisProperties::Position; } if(map.find(QStringLiteral("MinimumRate")) != map.constEnd()) { m_mp2PlayerProps.m_minimumRate = map.value(QStringLiteral("MinimumRate")).toDouble(); updateProperties << MprisProperties::MinimumRate; } if(map.find(QStringLiteral("MaximumRate")) != map.constEnd()) { m_mp2PlayerProps.m_maximumRate = map.value(QStringLiteral("MaximumRate")).toDouble(); updateProperties << MprisProperties::MaximumRate; } if(map.find(QStringLiteral("CanGoNext")) != map.constEnd()) { m_mp2PlayerProps.m_canGoNext = map.value(QStringLiteral("CanGoNext")).toBool(); updateProperties << MprisProperties::CanGoNext; } if(map.find(QStringLiteral("CanGoPrevious")) != map.constEnd()) { m_mp2PlayerProps.m_canGoPrevious = map.value(QStringLiteral("CanGoPrevious")).toBool(); updateProperties << MprisProperties::CanGoPrevious; } if(map.find(QStringLiteral("CanPlay")) != map.constEnd()) { m_mp2PlayerProps.m_canPlay = map.value(QStringLiteral("CanPlay")).toBool(); updateProperties << MprisProperties::CanPlay; } if(map.find(QStringLiteral("CanPause")) != map.constEnd()) { m_mp2PlayerProps.m_canPause = map.value(QStringLiteral("CanPause")).toBool(); updateProperties << MprisProperties::CanPause; } if(map.find(QStringLiteral("CanSeek")) != map.constEnd()) { m_mp2PlayerProps.m_canSeek = map.value(QStringLiteral("CanSeek")).toBool(); updateProperties << MprisProperties::CanSeek; } if(map.find(QStringLiteral("CanControl")) != map.constEnd()) { m_mp2PlayerProps.m_canControl = map.value(QStringLiteral("CanControl")).toBool(); updateProperties << MprisProperties::CanControl; } if(!updateProperties.isEmpty()) { Q_EMIT q->dataChanged(m_serviceName, updateProperties); } } void PlayerItemPrivate::propertiesChanged(const QString &interface, const QVariantMap &changedProperties, const QStringList &invalidatedProperties) { if(interface == OrgMprisMediaPlayer2Interface::staticInterfaceName()) { updateMediaPlayer2PropsFromMap(changedProperties); } else if (interface == OrgMprisMediaPlayer2PlayerInterface::staticInterfaceName()) { updateMediaPlayer2PlayerPropsFromMap(changedProperties); } } void PlayerItemPrivate::onSeeked(quint64 position) { m_mp2PlayerProps.m_position = position; Q_EMIT q->dataChanged(m_serviceName, {MprisProperties::Position}); } PlayerItem::PlayerItem(const QString &service, QObject *parent) : QObject(parent), d(new PlayerItemPrivate(service, this)) { } uint PlayerItem::pid() { return d->m_pid; } bool PlayerItem::canQuit() { return d->m_mp2Props.m_canQuit; } bool PlayerItem::fullScreen() { return d->m_mp2Props.m_fullScreen; } bool PlayerItem::canSetFullScreen() { return d->m_mp2Props.m_canSetFullScreen; } bool PlayerItem::canRaise() { return d->m_mp2Props.m_canRaise; } bool PlayerItem::hasTrackList() { return d->m_mp2Props.m_hasTrackList; } QString PlayerItem::identity() { return d->m_mp2Props.m_identity; } QString PlayerItem::desktopEntry() { return d->m_mp2Props.m_desktopEntry; } QStringList PlayerItem::supportedUriSchemes() { return d->m_mp2Props.m_supportedUriSchemes; } QStringList PlayerItem::supportedMimeTypes() { return d->m_mp2Props.m_supportedMimeTypes; } void PlayerItem::raise() { d->m_mprisIface->Raise(); } void PlayerItem::quit() { d->m_mprisIface->Quit(); } QString PlayerItem::playbackStatus() { return d->m_mp2PlayerProps.m_playbackStatus; } QString PlayerItem::loopStatus() { return d->m_mp2PlayerProps.m_loopStatus; } double PlayerItem::rate() { return d->m_mp2PlayerProps.m_rate; } bool PlayerItem::shuffle() { return d->m_mp2PlayerProps.m_shuffle; } QVariantMap PlayerItem::metaData() { return d->m_mp2PlayerProps.m_metaData; } double PlayerItem::volume() { return d->m_mp2PlayerProps.m_volume; } quint64 PlayerItem::position() { return d->m_mp2PlayerProps.m_position; } double PlayerItem::minimumRate() { return d->m_mp2PlayerProps.m_minimumRate; } double PlayerItem::maximumRate() { return d->m_mp2PlayerProps.m_maximumRate; } bool PlayerItem::canGoNext() { return d->m_mp2PlayerProps.m_canGoNext; } bool PlayerItem::canGoPrevious() { return d->m_mp2PlayerProps.m_canGoPrevious; } bool PlayerItem::canPlay() { return d->m_mp2PlayerProps.m_canPlay; } bool PlayerItem::canPause() { return d->m_mp2PlayerProps.m_canPause; } bool PlayerItem::canSeek() { return d->m_mp2PlayerProps.m_canSeek; } bool PlayerItem::canControl() { return d->m_mp2PlayerProps.m_canControl; } void PlayerItem::next() { d->m_mprisPlayerIface->Next(); } void PlayerItem::previous() { d->m_mprisPlayerIface->Previous(); } void PlayerItem::pause() { d->m_mprisPlayerIface->Pause(); } void PlayerItem::playPause() { d->m_mprisPlayerIface->PlayPause(); } void PlayerItem::stop() { d->m_mprisPlayerIface->Stop(); } void PlayerItem::play() { d->m_mprisPlayerIface->Play(); } void PlayerItem::seek(qint64 offset) { d->m_mprisPlayerIface->Seek(offset); } void PlayerItem::setPosition(const QString &trackID, qint64 position) { d->m_mprisPlayerIface->SetPosition(QDBusObjectPath(trackID), position); } void PlayerItem::openUri(const QString &uri) { d->m_mprisPlayerIface->OpenUri(uri); } bool PlayerItem::valid() { return d->m_valid; } #include "player-item.moc" ukui-panel-4.0.0.4/plugin-taskbar/window-thumbnail/mpris/org.freedesktop.DBus.Properties.xml0000644000175000017500000000207514560306203030531 0ustar fengfeng ukui-panel-4.0.0.4/plugin-taskbar/window-thumbnail/mpris/mpris-player-collecter.cpp0000644000175000017500000001351614560306203027023 0ustar fengfeng/* * * Copyright (C) 2023, KylinSoft Co., Ltd. * * * * This program is free software: you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation, either version 3 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program. If not, see . * * * * Authors: iaom * */ #include "mpris-player-collecter.h" #include #include #include #include #include #include static MprisPlayerCollecter *globalInstance = nullptr; static std::once_flag flag; class MprisPlayerCollecterPrivate: public QObject { Q_OBJECT public: explicit MprisPlayerCollecterPrivate(QObject *parent = nullptr); void serviceOwnerChanged(const QString &serviceName, const QString &oldOwner, const QString &newOwner); void removePlayer(const QString &serviceName); void addPlayer(const QString &serviceName); void serviceNameFetched(QDBusPendingCallWatcher *watcher); //QDBusServiceWatcher *m_watcher = nullptr; QHash m_playerServices; QHash m_playerItems; MprisPlayerCollecter *q = nullptr; }; MprisPlayerCollecterPrivate::MprisPlayerCollecterPrivate(QObject *parent) : QObject(parent) { #if 0 m_watcher = new QDBusServiceWatcher(QStringLiteral("org.mpris.MediaPlayer2*"), QDBusConnection::sessionBus(), QDBusServiceWatcher::WatchForOwnerChange, this); connect(m_watcher, &QDBusServiceWatcher::serviceOwnerChanged, this, &MprisPlayerCollecterPrivate::serviceOwnerChanged); #endif QDBusPendingCall async = QDBusConnection::sessionBus().interface()->asyncCall(QStringLiteral("ListNames")); QDBusPendingCallWatcher *callWatcher = new QDBusPendingCallWatcher(async, this); connect(callWatcher, &QDBusPendingCallWatcher::finished, this, &MprisPlayerCollecterPrivate::serviceNameFetched); connect(QDBusConnection::sessionBus().interface(), &QDBusConnectionInterface::serviceOwnerChanged, this, &MprisPlayerCollecterPrivate::serviceOwnerChanged); q = qobject_cast(parent); } void MprisPlayerCollecterPrivate::serviceOwnerChanged(const QString &serviceName, const QString &oldOwner, const QString &newOwner) { if (!serviceName.startsWith(QLatin1String("org.mpris.MediaPlayer2."))) { return; } // QString sourceName = serviceName.mid(23); if(!oldOwner.isEmpty()) { qDebug() << "MPRIS service" << serviceName << "just went offline"; removePlayer(serviceName); } if(!newOwner.isEmpty()) { qDebug() << "MPRIS service" << serviceName << "just came online"; addPlayer(serviceName); } } void MprisPlayerCollecterPrivate::removePlayer(const QString &serviceName) { uint pid = m_playerServices.take(serviceName); if(pid > 0) { Q_EMIT q->playerRemoved(serviceName, pid); if (m_playerItems.take(serviceName)) { m_playerItems.take(serviceName)->deleteLater(); } } } void MprisPlayerCollecterPrivate::addPlayer(const QString &serviceName) { QDBusReply pidReply = QDBusConnection::sessionBus().interface()->servicePid(serviceName); if(pidReply.isValid()) { m_playerServices.insert(serviceName, pidReply.value()); Q_EMIT q->playerAdded(serviceName, pidReply.value()); } else { qWarning() << "Can not get pid for service:" << serviceName; } } void MprisPlayerCollecterPrivate::serviceNameFetched(QDBusPendingCallWatcher *watcher) { QDBusPendingReply propsReply = *watcher; watcher->deleteLater(); if (propsReply.isError()) { qWarning() << "MprisPlayerCollecter: Could not get list of available D-Bus services"; } else { for (const QString &serviceName: propsReply.value()) { if (serviceName.startsWith(QLatin1String("org.mpris.MediaPlayer2."))) { qDebug() << "Found MPRIS service" << serviceName; addPlayer(serviceName); } } } } MprisPlayerCollecter::MprisPlayerCollecter(QObject *parent) : QObject(parent), d(new MprisPlayerCollecterPrivate(this)) { } PlayerItem *MprisPlayerCollecter::item(uint pid) { //这里我们默认每个pid只对应一个service QHashIterator iter(d->m_playerServices); while (iter.hasNext()) { iter.next(); if(iter.value() == pid) { return item(iter.key()); } } return nullptr; } PlayerItem *MprisPlayerCollecter::item(const QString &service) { if(d->m_playerItems.contains(service)) { return d->m_playerItems.value(service); } else { auto item = new PlayerItem(service, d); d->m_playerItems.insert(service, item); connect(item, &PlayerItem::dataChanged, this, &MprisPlayerCollecter::dataChanged); return item; } } QStringList MprisPlayerCollecter::playerServices() { return d->m_playerServices.keys(); } MprisPlayerCollecter *MprisPlayerCollecter::self() { std::call_once(flag, [&] { globalInstance = new MprisPlayerCollecter(); }); return globalInstance; } uint MprisPlayerCollecter::pidofService(const QString &service) { return d->m_playerServices.value(service); } #include "mpris-player-collecter.moc" ukui-panel-4.0.0.4/plugin-taskbar/window-thumbnail/mpris/player-items-model.h0000644000175000017500000000335714560306203025605 0ustar fengfeng/* * * Copyright (C) 2023, KylinSoft Co., Ltd. * * * * This program is free software: you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation, either version 3 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program. If not, see . * * * * Authors: iaom * */ #ifndef UKUI_PANEL_PLAYER_ITEMS_MODEL_H #define UKUI_PANEL_PLAYER_ITEMS_MODEL_H #include #include "properties.h" class MprisPlayerCollecter; class PlayerItemsModel : public QAbstractListModel { Q_OBJECT public: explicit PlayerItemsModel(QObject *parent = nullptr); QHash roleNames() const override; QModelIndex index(int row, int column, const QModelIndex &parent) const override; int rowCount(const QModelIndex &parent) const override; QVariant data(const QModelIndex &index, int role) const override; void operation(const QModelIndex &index, MprisProperties::Operations operation, const QVariantList &args); private Q_SLOTS: void onPlayerAdded(const QString &service, uint pid); void onPlayerRemoved(const QString &service, uint pid); void onDataChanged(const QString &service, const QVector &properties); private: QStringList m_services; }; #endif //UKUI_PANEL_PLAYER_ITEMS_MODEL_H ukui-panel-4.0.0.4/plugin-taskbar/window-thumbnail/mpris/mpris-player-collecter.h0000644000175000017500000000310614560306203026462 0ustar fengfeng/* * * Copyright (C) 2023, KylinSoft Co., Ltd. * * * * This program is free software: you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation, either version 3 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program. If not, see . * * * * Authors: iaom * */ #ifndef UKUI_PANEL_MPRIS_PLAYER_COLLECTER_H #define UKUI_PANEL_MPRIS_PLAYER_COLLECTER_H #include #include "player-item.h" class MprisPlayerCollecterPrivate; class MprisPlayerCollecter : public QObject { Q_OBJECT public: static MprisPlayerCollecter *self(); PlayerItem *item(uint pid); PlayerItem *item(const QString &service); QStringList playerServices(); uint pidofService(const QString &service); Q_SIGNALS: void playerAdded(const QString &service, uint pid); void playerRemoved(const QString &service, uint pid); void dataChanged(const QString &service, const QVector &properties); private: explicit MprisPlayerCollecter(QObject *parent = nullptr); MprisPlayerCollecterPrivate *d = nullptr; }; #endif //UKUI_PANEL_MPRIS_PLAYER_COLLECTER_H ukui-panel-4.0.0.4/plugin-taskbar/window-thumbnail/mpris/window-thumbnail-mpris-model.cpp0000644000175000017500000000612314560306203030137 0ustar fengfeng/* * * Copyright (C) 2023, KylinSoft Co., Ltd. * * * * This program is free software: you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation, either version 3 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program. If not, see . * * * * Authors: iaom * */ #include "window-thumbnail-mpris-model.h" #include "../../windowmanager/windowmanager.h" #include #include "player-items-model.h" #include "properties.h" class WindowThumbnailMprisModelPrivate { public: QString m_winID; uint m_pid; QString m_desktopEntry; PlayerItemsModel *m_sourceModel = nullptr; }; WindowThumbnailMprisModel::WindowThumbnailMprisModel(QObject *parent) : QSortFilterProxyModel(parent), d(new WindowThumbnailMprisModelPrivate) { d->m_sourceModel = new PlayerItemsModel(this); QSortFilterProxyModel::setSourceModel(d->m_sourceModel); connect(this, &WindowThumbnailMprisModel::rowsInserted, this, &WindowThumbnailMprisModel::countChanged); connect(this, &WindowThumbnailMprisModel::rowsRemoved, this, &WindowThumbnailMprisModel::countChanged); connect(this, &WindowThumbnailMprisModel::modelReset, this, &WindowThumbnailMprisModel::countChanged); } WindowThumbnailMprisModel::~WindowThumbnailMprisModel() { if(d) { delete d; d = nullptr; } } bool WindowThumbnailMprisModel::filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const { const QModelIndex sourceIndex = sourceModel()->index(sourceRow, 0, sourceParent); return sourceIndex.data(MprisProperties::Pid).toUInt() == d->m_pid && d->m_pid != 0 && sourceIndex.data(MprisProperties::Valid).toBool() && sourceIndex.data(MprisProperties::CanControl).toBool(); } QString WindowThumbnailMprisModel::winID() { return d->m_winID; } void WindowThumbnailMprisModel::setWinID(const QString &wid) { d->m_winID = wid; d->m_pid = kdk::WindowManager::getPid(wid); invalidate(); Q_EMIT countChanged(); } QString WindowThumbnailMprisModel::desktopEntry() { return d->m_desktopEntry; } void WindowThumbnailMprisModel::setDesktopEntry(const QString &desktopEntry) { d->m_desktopEntry = desktopEntry; } void WindowThumbnailMprisModel::operation(const QModelIndex &index, MprisProperties::Operations operation, const QVariantList &args) { d->m_sourceModel->operation(QSortFilterProxyModel::mapToSource(index), operation, args); } int WindowThumbnailMprisModel::count() const { qDebug() << "WindowThumbnailMprisModel::count()" << QSortFilterProxyModel::rowCount({}); return QSortFilterProxyModel::rowCount({}); } ukui-panel-4.0.0.4/plugin-taskbar/window-thumbnail/mpris/player-item.h0000644000175000017500000000432114560306203024314 0ustar fengfeng/* * * Copyright (C) 2023, KylinSoft Co., Ltd. * * * * This program is free software: you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation, either version 3 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program. If not, see . * * * * Authors: iaom * */ #ifndef UKUI_PANEL_PLAYER_ITEM_H #define UKUI_PANEL_PLAYER_ITEM_H #include #include "properties.h" class PlayerItemPrivate; class PlayerItem : public QObject { Q_OBJECT public: explicit PlayerItem(const QString &service, QObject *parent = nullptr); uint pid(); bool valid(); //media player2 properties bool canQuit(); bool fullScreen(); bool canSetFullScreen(); bool canRaise(); bool hasTrackList(); QString identity(); QString desktopEntry(); QStringList supportedUriSchemes(); QStringList supportedMimeTypes(); //media player2 methods void raise(); void quit(); //media player2 player properties QString playbackStatus(); QString loopStatus(); double rate(); bool shuffle(); QVariantMap metaData(); double volume(); quint64 position(); double minimumRate(); double maximumRate(); bool canGoNext(); bool canGoPrevious(); bool canPlay(); bool canPause(); bool canSeek(); bool canControl(); //media player2 player methods void next(); void previous(); void pause(); void playPause(); void stop(); void play(); void seek(qint64 offset); void setPosition(const QString &trackID, qint64 position); void openUri(const QString &uri); Q_SIGNALS: void dataChanged(const QString &service, QVector); private: PlayerItemPrivate *d; }; #endif //UKUI_PANEL_PLAYER_ITEM_H ukui-panel-4.0.0.4/plugin-taskbar/window-thumbnail/mpris/org.mpris.MediaPlayer2.xml0000644000175000017500000000265614560306203026643 0ustar fengfeng ukui-panel-4.0.0.4/plugin-taskbar/window-thumbnail/mpris/window-thumbnail-mpris-model.h0000644000175000017500000000361014560306203027602 0ustar fengfeng/* * * Copyright (C) 2023, KylinSoft Co., Ltd. * * * * This program is free software: you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation, either version 3 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program. If not, see . * * * * Authors: iaom * */ #ifndef UKUI_PANEL_WINDOW_THUMBNAIL_MPRIS_MODEL_H #define UKUI_PANEL_WINDOW_THUMBNAIL_MPRIS_MODEL_H #include #include "properties.h" class WindowThumbnailMprisModelPrivate; class WindowThumbnailMprisModel : public QSortFilterProxyModel { Q_OBJECT Q_PROPERTY(QString winID READ winID WRITE setWinID) Q_PROPERTY(QString desktopEntry READ desktopEntry WRITE setDesktopEntry) Q_PROPERTY(int count READ rowCount NOTIFY countChanged) public: explicit WindowThumbnailMprisModel(QObject *parent = nullptr); ~WindowThumbnailMprisModel(); QString winID(); void setWinID(const QString &wid); QString desktopEntry(); void setDesktopEntry(const QString &desktopEntry); int count() const; public Q_SLOTS: void operation(const QModelIndex &index, MprisProperties::Operations operation, const QVariantList &args); Q_SIGNALS: void countChanged(); protected: bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const override; private: WindowThumbnailMprisModelPrivate *d = nullptr; }; #endif //UKUI_PANEL_WINDOW_THUMBNAIL_MPRIS_MODEL_H ukui-panel-4.0.0.4/plugin-taskbar/window-thumbnail/screen-casting-request.cpp0000644000175000017500000000711514560306203025664 0ustar fengfeng/* SPDX-FileCopyrightText: 2020 Aleix Pol Gonzalez SPDX-FileCopyrightText: 2023 iaom SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL */ #include "screen-casting-request.h" #include #include #include #include #include #include class ScreencastingSingleton : public QObject { Q_OBJECT public: ScreencastingSingleton(QObject *parent) : QObject(parent) { KWayland::Client::ConnectionThread *connection = KWayland::Client::ConnectionThread::fromApplication(this); if (!connection) { return; } KWayland::Client::Registry *registry = new KWayland::Client::Registry(this); connect(registry, &KWayland::Client::Registry::interfaceAnnounced, this, [this, registry](const QByteArray &interfaceName, quint32 name, quint32 version) { if (interfaceName != "zkde_screencast_unstable_v1") return; m_screencasting = new Screencasting(registry, name, version, this); Q_EMIT created(m_screencasting); }); registry->create(connection); registry->setup(); } static ScreencastingSingleton *self() { static QPointer s_self; if (!s_self && QCoreApplication::instance()) s_self = new ScreencastingSingleton(QCoreApplication::instance()); return s_self; } void requestInterface(ScreenCastingRequest *item) { if (!m_screencasting) { connect(this, &ScreencastingSingleton::created, item, &ScreenCastingRequest::create, Qt::UniqueConnection); } else { item->create(m_screencasting); } } Q_SIGNALS: void created(Screencasting *screencasting); private: Screencasting *m_screencasting = nullptr; }; ScreenCastingRequest::ScreenCastingRequest(QObject *parent) :QObject(parent) { } ScreenCastingRequest::~ScreenCastingRequest() = default; quint32 ScreenCastingRequest::nodeId() const { return m_nodeId; } void ScreenCastingRequest::setNodeid(uint nodeId) { if (nodeId == m_nodeId) { return; } m_nodeId = nodeId; Q_EMIT nodeIdChanged(nodeId); } QString ScreenCastingRequest::uuid() const { return m_uuid; } void ScreenCastingRequest::setUuid(const QString &uuid) { if (m_uuid == uuid) { return; } Q_EMIT closeRunningStreams(); setNodeid(0); m_uuid = uuid; if (!m_uuid.isEmpty()) { ScreencastingSingleton::self()->requestInterface(this); } Q_EMIT uuidChanged(uuid); } void ScreenCastingRequest::create(Screencasting *screencasting) { auto stream = screencasting->createWindowStream(m_uuid, Screencasting::CursorMode::Hidden); stream->setObjectName(m_uuid); connect(stream, &ScreencastingStream::created, this, [stream, this](int nodeId) { if (stream->objectName() == m_uuid) { setNodeid(nodeId); } }); connect(stream, &ScreencastingStream::failed, this, [](const QString &error) { qWarning() << "error creating screencast" << error; }); connect(stream, &ScreencastingStream::closed, this, [this, stream] { if (stream->nodeId() == m_nodeId) { setNodeid(0); } }); connect(this, &ScreenCastingRequest::closeRunningStreams, stream, &QObject::deleteLater); } #include "screen-casting-request.moc" ukui-panel-4.0.0.4/plugin-taskbar/window-thumbnail/CMakeLists.txt0000644000175000017500000001131414564524546023341 0ustar fengfengcmake_minimum_required(VERSION 3.16) project(ukui-window-thumbnail) set(CMAKE_INCLUDE_CURRENT_DIR ON) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED ON) #find QT modules find_package(QT NAMES Qt6 Qt5 COMPONENTS Core Gui Qml X11Extras Quick DBus REQUIRED) find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Core Qml Gui X11Extras Quick DBus REQUIRED) #find kde modules find_package(KF5Wayland) find_package(KF5WindowSystem) find_package(Qt5WaylandClient) find_package(PlasmaWaylandProtocols 1.6 REQUIRED) find_package(ECM ${KF5_MIN_VERSION} REQUIRED NO_MODULE) find_package(XCB MODULE COMPONENTS XCB COMPOSITE DAMAGE SHAPE XFIXES RENDER) message("XCB:"${X11_FOUND}, ${XCB_XCB_FOUND}, ${XCB_COMPOSITE_FOUND}, ${XCB_DAMAGE_FOUND}) if(X11_FOUND AND XCB_XCB_FOUND) set(HAVE_X11 1) endif() if(HAVE_X11 AND XCB_COMPOSITE_FOUND AND XCB_DAMAGE_FOUND) set(HAVE_XCB_COMPOSITE 1) endif() find_package(OpenGL) find_package(EGL MODULE) message("EGL:"${EGL_FOUND}) if (${EGL_FOUND}) set(HAVE_EGL 1) endif() message("OPENGL:"${OPENGL_FOUND},${Qt5Gui_OPENGL_IMPLEMENTATION}) if(OPENGL_FOUND AND (${Qt5Gui_OPENGL_IMPLEMENTATION} STREQUAL "GL")) set(HAVE_GLX ${HAVE_X11}) else() set(HAVE_GLX 0) endif() message("MACRO:"${HAVE_X11},${HAVE_XCB_COMPOSITE},${HAVE_EGL},${HAVE_GLX}) add_compile_definitions(HAVE_X11=${HAVE_X11}) add_compile_definitions(HAVE_EGL=${HAVE_EGL}) add_compile_definitions(HAVE_GLX=${HAVE_GLX}) set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake) include(FindQtWaylandScanner) #find other modules find_package(PkgConfig REQUIRED) set(WINDOW_THUMBNAIL_PLUGIN_PC_PKGS libpipewire-0.3 x11 xcb xcb-damage xcb-composite egl xcb-render wayland-client kysdk-waylandhelper) foreach(external_lib IN ITEMS ${WINDOW_THUMBNAIL_PLUGIN_PC_PKGS}) pkg_check_modules(${external_lib} REQUIRED IMPORTED_TARGET ${external_lib}) if(${${external_lib}_FOUND}) include_directories(${${external_lib}_INCLUDE_DIRS}) link_directories(${${external_lib}_LIBRARY_DIRS}) list(APPEND WINDOW_THUMBNAIL_PLUGIN_EXTERNAL_LIBS PkgConfig::${external_lib}) endif() endforeach() include_directories(mpris) set (PLUGIN_SRCS screen-casting-request.cpp screen-casting.cpp pipewire-core.cpp pipewire-source-stream.cpp pipewire-source-item.cpp window-thumbnail-plugin.cpp x-window-thumbnail.cpp window-thumbnail-config.cpp window-thumbnail-config.h mpris/mpris-player-collecter.cpp mpris/mpris-player-collecter.h mpris/player-item.cpp mpris/player-item.h mpris/player-items-model.cpp mpris/player-items-model.h mpris/window-thumbnail-mpris-model.cpp mpris/window-thumbnail-mpris-model.h mpris/properties.h ) #generate wayland protocol files ecm_add_qtwayland_client_protocol(PLUGIN_SRCS PROTOCOL ${PLASMA_WAYLAND_PROTOCOLS_DIR}/screencast.xml BASENAME zkde-screencast-unstable-v1 ) set_source_files_properties( mpris/org.freedesktop.DBus.Properties.xml mpris/org.mpris.MediaPlayer2.Player.xml mpris/org.mpris.MediaPlayer2.xml PROPERTIES NO_NAMESPACE ON) if(COMMAND qt_add_dbus_interface) qt_add_dbus_interface(PLUGIN_SRCS mpris/org.freedesktop.DBus.Properties.xml dbusproperties) qt_add_dbus_interface(PLUGIN_SRCS mpris/org.mpris.MediaPlayer2.xml mprisplayer2) qt_add_dbus_interface(PLUGIN_SRCS mpris/org.mpris.MediaPlayer2.Player.xml mprisplayer2player) else() qt5_add_dbus_interface(PLUGIN_SRCS mpris/org.freedesktop.DBus.Properties.xml dbusproperties) qt5_add_dbus_interface(PLUGIN_SRCS mpris/org.mpris.MediaPlayer2.xml mprisplayer2) qt5_add_dbus_interface(PLUGIN_SRCS mpris/org.mpris.MediaPlayer2.Player.xml mprisplayer2player) endif() add_library(${PROJECT_NAME} SHARED ${PLUGIN_SRCS}) set(PLUGIN_IMPORT_URI "org.ukui.windowThumbnail") target_compile_definitions(${PROJECT_NAME} PRIVATE PLUGIN_IMPORT_URI="${PLUGIN_IMPORT_URI}") target_link_libraries(${PROJECT_NAME} PRIVATE Qt${QT_VERSION_MAJOR}::Core Qt${QT_VERSION_MAJOR}::Qml Qt${QT_VERSION_MAJOR}::Gui Qt${QT_VERSION_MAJOR}::Quick Qt${QT_VERSION_MAJOR}::Gui_EGL Qt${QT_VERSION_MAJOR}::GuiPrivate Qt${QT_VERSION_MAJOR}::X11Extras Qt${QT_VERSION_MAJOR}::DBus ${WINDOW_THUMBNAIL_PLUGIN_EXTERNAL_LIBS} KF5::WaylandClient KF5::WindowSystem ) set(PLUGIN_INSTALL_PATH "/usr/lib/${CMAKE_LIBRARY_ARCHITECTURE}/qt5/qml/org/ukui/windowThumbnail") install(DIRECTORY "qml" DESTINATION "${PLUGIN_INSTALL_PATH}") install(FILES qmldir DESTINATION ${PLUGIN_INSTALL_PATH}) install(TARGETS ${PROJECT_NAME} LIBRARY DESTINATION ${PLUGIN_INSTALL_PATH}) ukui-panel-4.0.0.4/plugin-taskbar/window-thumbnail/screen-casting.cpp0000644000175000017500000000525014560306203024174 0ustar fengfeng/* SPDX-FileCopyrightText: 2020 Aleix Pol Gonzalez SPDX-FileCopyrightText: 2023 iaom SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL */ #include "screen-casting.h" #include "qwayland-zkde-screencast-unstable-v1.h" #include #include #include #include #include using namespace KWayland::Client; class ScreencastingStreamPrivate : public QtWayland::zkde_screencast_stream_unstable_v1 { public: ScreencastingStreamPrivate(ScreencastingStream *q) : q(q) { } ~ScreencastingStreamPrivate() { close(); q->deleteLater(); } void zkde_screencast_stream_unstable_v1_created(uint32_t node) override { m_nodeId = node; Q_EMIT q->created(node); } void zkde_screencast_stream_unstable_v1_closed() override { Q_EMIT q->closed(); } void zkde_screencast_stream_unstable_v1_failed(const QString &error) override { Q_EMIT q->failed(error); } uint m_nodeId = 0; QPointer q; }; ScreencastingStream::ScreencastingStream(QObject *parent) : QObject(parent) , d(new ScreencastingStreamPrivate(this)) { } ScreencastingStream::~ScreencastingStream() = default; quint32 ScreencastingStream::nodeId() const { return d->m_nodeId; } class ScreencastingPrivate : public QtWayland::zkde_screencast_unstable_v1 { public: ScreencastingPrivate(Registry *registry, int id, int version, Screencasting *q) : QtWayland::zkde_screencast_unstable_v1(*registry, id, version) , q(q) { } ScreencastingPrivate(::zkde_screencast_unstable_v1 *screencasting, Screencasting *q) : QtWayland::zkde_screencast_unstable_v1(screencasting) , q(q) { } ~ScreencastingPrivate() { destroy(); } Screencasting *const q; }; Screencasting::Screencasting(QObject *parent) :QObject(parent) { } Screencasting::Screencasting(Registry *registry, int id, int version, QObject *parent) : QObject(parent) , d(new ScreencastingPrivate(registry, id, version, this)) { } Screencasting::~Screencasting() = default; ScreencastingStream *Screencasting::createWindowStream(const QString &uuid, CursorMode mode) { auto stream = new ScreencastingStream(this); stream->d->init(d->stream_window(uuid, mode)); return stream; } void Screencasting::setup(::zkde_screencast_unstable_v1 *screencasting) { d.reset(new ScreencastingPrivate(screencasting, this)); } void Screencasting::destroy() { d.reset(nullptr); } ukui-panel-4.0.0.4/plugin-taskbar/window-thumbnail/pipewire-source-stream.cpp0000644000175000017500000003276114560306203025711 0ustar fengfeng/* SPDX-FileCopyrightText: 2018-2020 Red Hat Inc SPDX-FileCopyrightText: 2020-2021 Aleix Pol Gonzalez SPDX-FileContributor: Jan Grulich SPDX-FileContributor: iaom SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL */ #include "pipewire-source-stream.h" #include "pipewire-core.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #undef Status #if !PW_CHECK_VERSION(0, 3, 29) #define SPA_POD_PROP_FLAG_MANDATORY (1u << 3) #endif #if !PW_CHECK_VERSION(0, 3, 33) #define SPA_POD_PROP_FLAG_DONT_FIXATE (1u << 4) #endif static uint32_t SpaPixelFormatToDrmFormat(uint32_t spa_format) { switch (spa_format) { case SPA_VIDEO_FORMAT_RGBA: return DRM_FORMAT_ABGR8888; case SPA_VIDEO_FORMAT_RGBx: return DRM_FORMAT_XBGR8888; case SPA_VIDEO_FORMAT_BGRA: return DRM_FORMAT_ARGB8888; case SPA_VIDEO_FORMAT_BGRx: return DRM_FORMAT_XRGB8888; default: return DRM_FORMAT_INVALID; } } static std::vector queryDmaBufModifiers(EGLDisplay display, uint32_t format) { static auto eglQueryDmaBufModifiersEXT = (PFNEGLQUERYDMABUFMODIFIERSEXTPROC)eglGetProcAddress("eglQueryDmaBufModifiersEXT"); static auto eglQueryDmaBufFormatsEXT = (PFNEGLQUERYDMABUFFORMATSEXTPROC)eglGetProcAddress("eglQueryDmaBufFormatsEXT"); if (!eglQueryDmaBufFormatsEXT || !eglQueryDmaBufModifiersEXT) { return {}; } uint32_t drm_format = SpaPixelFormatToDrmFormat(format); if (drm_format == DRM_FORMAT_INVALID) { qDebug() << "Failed to find matching DRM format." << format; return {}; } EGLint count = 0; EGLBoolean success = eglQueryDmaBufFormatsEXT(display, 0, nullptr, &count); if (!success || count == 0) { qWarning() << "Failed to query DMA-BUF format count."; return {}; } std::vector formats(count); if (!eglQueryDmaBufFormatsEXT(display, count, reinterpret_cast(formats.data()), &count)) { if (!success) qWarning() << "Failed to query DMA-BUF formats."; return {}; } if (std::find(formats.begin(), formats.end(), drm_format) == formats.end()) { qDebug() << "Format " << drm_format << " not supported for modifiers."; return {DRM_FORMAT_MOD_INVALID}; } success = eglQueryDmaBufModifiersEXT(display, drm_format, 0, nullptr, nullptr, &count); if (!success) { qWarning() << "Failed to query DMA-BUF modifier count."; return {}; } std::vector modifiers(count); if (count > 0) { if (!eglQueryDmaBufModifiersEXT(display, drm_format, count, modifiers.data(), nullptr, &count)) { qWarning() << "Failed to query DMA-BUF modifiers."; } } // Support modifier-less buffers modifiers.push_back(DRM_FORMAT_MOD_INVALID); return modifiers; } void PipeWireSourceStream::onStreamStateChanged(void *data, pw_stream_state old, pw_stream_state state, const char *error_message) { PipeWireSourceStream *pw = static_cast(data); qDebug() << "state changed" << pw_stream_state_as_string(old) << "->" << pw_stream_state_as_string(state) << error_message; switch (state) { case PW_STREAM_STATE_ERROR: qWarning() << "Stream error: " << error_message; break; case PW_STREAM_STATE_PAUSED: Q_EMIT pw->streamReady(); break; case PW_STREAM_STATE_STREAMING: Q_EMIT pw->startStreaming(); break; case PW_STREAM_STATE_CONNECTING: break; case PW_STREAM_STATE_UNCONNECTED: if (!pw->m_stopped) { Q_EMIT pw->stopStreaming(); } break; } } static spa_pod *buildFormat(spa_pod_builder *builder, spa_video_format format, const std::vector &modifiers = {}) { spa_pod_frame f[2]; const spa_rectangle pw_min_screen_bounds{1, 1}; const spa_rectangle pw_max_screen_bounds{UINT32_MAX, UINT32_MAX}; spa_pod_builder_push_object(builder, &f[0], SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat); spa_pod_builder_add(builder, SPA_FORMAT_mediaType, SPA_POD_Id(SPA_MEDIA_TYPE_video), 0); spa_pod_builder_add(builder, SPA_FORMAT_mediaSubtype, SPA_POD_Id(SPA_MEDIA_SUBTYPE_raw), 0); spa_pod_builder_add(builder, SPA_FORMAT_VIDEO_format, SPA_POD_Id(format), 0); if (modifiers.size()) { auto pw_version = QVersionNumber::fromString(pw_get_library_version()); // SPA_POD_PROP_FLAG_DONT_FIXATE can be used with PipeWire >= 0.3.33 if (pw_version >= QVersionNumber(0, 3, 33)) { spa_pod_builder_prop(builder, SPA_FORMAT_VIDEO_modifier, SPA_POD_PROP_FLAG_MANDATORY | SPA_POD_PROP_FLAG_DONT_FIXATE); } else { spa_pod_builder_prop(builder, SPA_FORMAT_VIDEO_modifier, SPA_POD_PROP_FLAG_MANDATORY); } spa_pod_builder_push_choice(builder, &f[1], SPA_CHOICE_Enum, 0); // mofifiers from the array for (auto it = modifiers.begin(); it != modifiers.end(); it++) { spa_pod_builder_long(builder, *it); if (it == modifiers.begin()) { spa_pod_builder_long(builder, *it); } } spa_pod_builder_pop(builder, &f[1]); } spa_pod_builder_add(builder, SPA_FORMAT_VIDEO_size, SPA_POD_CHOICE_RANGE_Rectangle(&pw_min_screen_bounds, &pw_min_screen_bounds, &pw_max_screen_bounds), 0); return static_cast(spa_pod_builder_pop(builder, &f[0])); } void PipeWireSourceStream::onStreamParamChanged(void *data, uint32_t id, const struct spa_pod *format) { if (!format || id != SPA_PARAM_Format) { return; } PipeWireSourceStream *pw = static_cast(data); spa_format_video_raw_parse(format, &pw->videoFormat); const int32_t width = pw->videoFormat.size.width; const int32_t height = pw->videoFormat.size.height; const int bpp = pw->videoFormat.format == SPA_VIDEO_FORMAT_RGB || pw->videoFormat.format == SPA_VIDEO_FORMAT_BGR ? 3 : 4; const quint32 stride = SPA_ROUND_UP_N(width * bpp, 4); qDebug() << "Stream format changed"; const int32_t size = height * stride; uint8_t paramsBuffer[1024]; spa_pod_builder pod_builder = SPA_POD_BUILDER_INIT(paramsBuffer, sizeof(paramsBuffer)); const auto bufferTypes = pw->m_allowDmaBuf && spa_pod_find_prop(format, nullptr, SPA_FORMAT_VIDEO_modifier) ? (1 << SPA_DATA_DmaBuf) | (1 << SPA_DATA_MemFd) | (1 << SPA_DATA_MemPtr) : (1 << SPA_DATA_MemFd) | (1 << SPA_DATA_MemPtr); const spa_pod *param = (spa_pod *)spa_pod_builder_add_object(&pod_builder, SPA_TYPE_OBJECT_ParamBuffers, SPA_PARAM_Buffers, SPA_PARAM_BUFFERS_buffers, SPA_POD_CHOICE_RANGE_Int(16, 2, 16), SPA_PARAM_BUFFERS_blocks, SPA_POD_Int(1), SPA_PARAM_BUFFERS_size, SPA_POD_Int(size), SPA_PARAM_BUFFERS_stride, SPA_POD_CHOICE_RANGE_Int(stride, stride, INT32_MAX), SPA_PARAM_BUFFERS_align, SPA_POD_Int(16), SPA_PARAM_BUFFERS_dataType, SPA_POD_CHOICE_FLAGS_Int(bufferTypes)); pw_stream_update_params(pw->pwStream, ¶m, 1); } static void onProcess(void *data) { PipeWireSourceStream *stream = static_cast(data); stream->process(); } PipeWireSourceStream::PipeWireSourceStream(QObject *parent) : QObject(parent) { pwStreamEvents.version = PW_VERSION_STREAM_EVENTS; pwStreamEvents.process = &onProcess; pwStreamEvents.state_changed = &PipeWireSourceStream::onStreamStateChanged; pwStreamEvents.param_changed = &PipeWireSourceStream::onStreamParamChanged; } PipeWireSourceStream::~PipeWireSourceStream() { m_stopped = true; if (pwStream) { pw_stream_destroy(pwStream); } } uint PipeWireSourceStream::framerate() { if (pwStream) { return videoFormat.max_framerate.num / videoFormat.max_framerate.denom; } return 0; } uint PipeWireSourceStream::nodeId() { return pwNodeId; } bool PipeWireSourceStream::createStream(uint nodeid) { pwCore = PipeWireCore::self(); if (!pwCore->m_error.isEmpty()) { m_error = pwCore->m_error; return false; } connect(pwCore.data(), &PipeWireCore::pipewireFailed, this, &PipeWireSourceStream::coreFailed); pwStream = pw_stream_new(pwCore->pwCore, "plasma-screencast", nullptr); pwNodeId = nodeid; pw_stream_add_listener(pwStream, &streamListener, &pwStreamEvents, this); uint8_t buffer[4096]; spa_pod_builder podBuilder = SPA_POD_BUILDER_INIT(buffer, sizeof(buffer)); const QVector formats = {SPA_VIDEO_FORMAT_RGBx, SPA_VIDEO_FORMAT_RGBA, SPA_VIDEO_FORMAT_BGRx, SPA_VIDEO_FORMAT_BGRA, SPA_VIDEO_FORMAT_RGB, SPA_VIDEO_FORMAT_BGR}; QVector params; params.reserve(formats.size() * 2); const EGLDisplay display = static_cast(QGuiApplication::platformNativeInterface()->nativeResourceForIntegration("egldisplay")); for (spa_video_format format : formats) { if (m_allowDmaBuf) { if (auto modifiers = queryDmaBufModifiers(display, format); modifiers.size() > 0) { params += buildFormat(&podBuilder, format, modifiers); } } params += buildFormat(&podBuilder, format, {}); } pw_stream_flags s = (pw_stream_flags)(PW_STREAM_FLAG_DONT_RECONNECT | PW_STREAM_FLAG_AUTOCONNECT); if (pw_stream_connect(pwStream, PW_DIRECTION_INPUT, pwNodeId, s, params.data(), params.size()) != 0) { qWarning() << "Could not connect to stream"; pw_stream_destroy(pwStream); return false; } return true; } void PipeWireSourceStream::handleFrame(struct pw_buffer *buffer) { spa_buffer *spaBuffer = buffer->buffer; if (spaBuffer->datas->chunk->size == 0) { return; } if (spaBuffer->datas->type == SPA_DATA_MemFd) { uint8_t *map = static_cast(mmap(nullptr, spaBuffer->datas->maxsize + spaBuffer->datas->mapoffset, PROT_READ, MAP_PRIVATE, spaBuffer->datas->fd, 0)); if (map == MAP_FAILED) { qWarning() << "Failed to mmap the memory: " << strerror(errno); return; } const QImage::Format format = spaBuffer->datas->chunk->stride / videoFormat.size.width == 3 ? QImage::Format_RGB888 : QImage::Format_ARGB32; QImage img(map, videoFormat.size.width, videoFormat.size.height, spaBuffer->datas->chunk->stride, format); Q_EMIT imageTextureReceived(img.copy()); munmap(map, spaBuffer->datas->maxsize + spaBuffer->datas->mapoffset); } else if (spaBuffer->datas->type == SPA_DATA_DmaBuf) { QVector planes; planes.reserve(spaBuffer->n_datas); for (uint i = 0; i < spaBuffer->n_datas; ++i) { const auto &data = spaBuffer->datas[i]; DmaBufPlane plane; plane.fd = data.fd; plane.stride = data.chunk->stride; plane.offset = data.chunk->offset; plane.modifier = DRM_FORMAT_MOD_INVALID; planes += plane; } Q_EMIT dmabufTextureReceived(planes, DRM_FORMAT_ARGB8888); } else if (spaBuffer->datas->type == SPA_DATA_MemPtr) { QImage img(static_cast(spaBuffer->datas->data), videoFormat.size.width, videoFormat.size.height, spaBuffer->datas->chunk->stride, QImage::Format_ARGB32); Q_EMIT imageTextureReceived(img); } else { qWarning() << "unsupported buffer type" << spaBuffer->datas->type; QImage errorImage(200, 200, QImage::Format_ARGB32_Premultiplied); errorImage.fill(Qt::red); Q_EMIT imageTextureReceived(errorImage); } } void PipeWireSourceStream::coreFailed(const QString &errorMessage) { m_error = errorMessage; Q_EMIT stopStreaming(); } void PipeWireSourceStream::process() { pw_buffer *buf = pw_stream_dequeue_buffer(pwStream); if (!buf) { return; } handleFrame(buf); pw_stream_queue_buffer(pwStream, buf); } void PipeWireSourceStream::stop() { if (!m_stopped) pw_stream_set_active(pwStream, false); m_stopped = true; delete this; } void PipeWireSourceStream::setActive(bool active) { Q_ASSERT(pwStream); pw_stream_set_active(pwStream, active); } ukui-panel-4.0.0.4/plugin-taskbar/window-thumbnail/pipewire-source-stream.h0000644000175000017500000000453714560306203025356 0ustar fengfeng/* SPDX-FileCopyrightText: 2018-2020 Red Hat Inc SPDX-FileCopyrightText: 2020-2021 Aleix Pol Gonzalez SPDX-FileContributor: Jan Grulich SPDX-FileContributor: iaom SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL */ #ifndef PIPEWIRESOURCESTREAM_H #define PIPEWIRESOURCESTREAM_H #include #include #include #include #include #include #include #include #undef Status namespace KWin { class AbstractEglBackend; class GLTexture; } class PipeWireCore; typedef void *EGLDisplay; struct DmaBufPlane { int fd; /// The dmabuf file descriptor uint32_t offset; /// The offset from the start of buffer uint32_t stride; /// The distance from the start of a row to the next row in bytes uint64_t modifier = 0; /// The layout modifier }; class PipeWireSourceStream : public QObject { Q_OBJECT public: explicit PipeWireSourceStream(QObject *parent); ~PipeWireSourceStream(); static void onStreamParamChanged(void *data, uint32_t id, const struct spa_pod *format); static void onStreamStateChanged(void *data, pw_stream_state old, pw_stream_state state, const char *error_message); uint framerate(); uint nodeId(); QString error() const { return m_error; } QSize size() const { return QSize(videoFormat.size.width, videoFormat.size.height); } bool createStream(uint nodeid); void stop(); void setActive(bool active); void handleFrame(struct pw_buffer *buffer); void process(); bool setAllowDmaBuf(bool allowed); Q_SIGNALS: void streamReady(); void startStreaming(); void stopStreaming(); void dmabufTextureReceived(const QVector &planes, uint32_t format); void imageTextureReceived(const QImage &image); private: void coreFailed(const QString &errorMessage); QSharedPointer pwCore; pw_stream *pwStream = nullptr; spa_hook streamListener; pw_stream_events pwStreamEvents = {}; uint32_t pwNodeId = 0; bool m_stopped = false; spa_video_info_raw videoFormat; QString m_error; bool m_allowDmaBuf = true; }; #endif // PIPEWIRESOURCESTREAM_H ukui-panel-4.0.0.4/plugin-taskbar/window-thumbnail/window-thumbnail-plugin.h0000644000175000017500000000224614560306203025522 0ustar fengfeng/* * * Copyright (C) 2023, KylinSoft Co., Ltd. * * * * This program is free software: you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation, either version 3 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program. If not, see . * * * * Authors: iaom * */ #ifndef WINDOWTHUMBNAILPLUGIN_H #define WINDOWTHUMBNAILPLUGIN_H #include class WindowThumbnailPlugin : public QQmlExtensionPlugin { Q_OBJECT Q_PLUGIN_METADATA(IID QQmlExtensionInterface_iid) public: void registerTypes(const char *uri) override; void initializeEngine(QQmlEngine *engine, const char *uri) override; }; #endif // WINDOWTHUMBNAILPLUGIN_H ukui-panel-4.0.0.4/plugin-taskbar/window-thumbnail/pipewire-core.h0000644000175000017500000000166414560306203023513 0ustar fengfeng/* SPDX-FileCopyrightText: 2020 Aleix Pol Gonzalez SPDX-FileContributor: Jan Grulich SPDX-FileContributor: iaom SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL */ #ifndef PIPEWIRECORE_H #define PIPEWIRECORE_H #include #include class PipeWireCore : public QObject { Q_OBJECT public: PipeWireCore(); static void onCoreError(void *data, uint32_t id, int seq, int res, const char *message); ~PipeWireCore(); bool init(); static QSharedPointer self(); struct pw_core *pwCore = nullptr; struct pw_context *pwContext = nullptr; struct pw_loop *pwMainLoop = nullptr; spa_hook coreListener; QString m_error; pw_core_events pwCoreEvents = {}; Q_SIGNALS: void pipewireFailed(const QString &message); }; #endif // PIPEWIRECORE_H ukui-panel-4.0.0.4/plugin-taskbar/window-thumbnail/window-thumbnail-config.cpp0000644000175000017500000000214614560306203026023 0ustar fengfeng/* * * Copyright (C) 2023, KylinSoft Co., Ltd. * * * * This program is free software: you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation, either version 3 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program. If not, see . * * * * Authors: iaom * */ #include "window-thumbnail-config.h" #include WindowThumbnailConfig::WindowThumbnailConfig(QObject *parent) : QObject(parent) { } bool WindowThumbnailConfig::realTimeThumbnailEnable() { return true; } bool WindowThumbnailConfig::pipewireThumbnailEnable() { return qApp->platformName() == "wayland";; } ukui-panel-4.0.0.4/plugin-taskbar/window-thumbnail/x-window-thumbnail.cpp0000644000175000017500000007754014560306221025037 0ustar fengfeng/* * Copyright 2013 by Martin Gräßlin * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as * published by the Free Software Foundation; either version 2, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the * Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #include "x-window-thumbnail.h" // KF5 #include // Qt #include #include #include #include #include #include // X11 #if HAVE_GLX #include typedef void (*glXBindTexImageEXT_func)(Display *dpy, GLXDrawable drawable, int buffer, const int *attrib_list); typedef void (*glXReleaseTexImageEXT_func)(Display *dpy, GLXDrawable drawable, int buffer); #endif #if HAVE_EGL typedef EGLImageKHR(*eglCreateImageKHR_func)(EGLDisplay, EGLContext, EGLenum, EGLClientBuffer, const EGLint *); typedef EGLBoolean(*eglDestroyImageKHR_func)(EGLDisplay, EGLImageKHR); typedef GLvoid(*glEGLImageTargetTexture2DOES_func)(GLenum, GLeglImageOES); #endif // HAVE_EGL #include #include #if HAVE_XCB_COMPOSITE #if HAVE_GLX class DiscardGlxPixmapRunnable : public QRunnable { public: DiscardGlxPixmapRunnable( uint, QFunctionPointer, xcb_pixmap_t ); void run() override; private: uint m_texture; QFunctionPointer m_releaseTexImage; xcb_pixmap_t m_glxPixmap; }; DiscardGlxPixmapRunnable::DiscardGlxPixmapRunnable(uint texture, QFunctionPointer deleteFunction, xcb_pixmap_t pixmap) : QRunnable(), m_texture(texture), m_releaseTexImage(deleteFunction), m_glxPixmap(pixmap) {} void DiscardGlxPixmapRunnable::run() { if (m_glxPixmap != XCB_PIXMAP_NONE) { Display *d = QX11Info::display(); ((glXReleaseTexImageEXT_func)(m_releaseTexImage))(d, m_glxPixmap, GLX_FRONT_LEFT_EXT); glXDestroyPixmap(d, m_glxPixmap); glDeleteTextures(1, &m_texture); } } #endif //HAVE_GLX #if HAVE_EGL class DiscardEglPixmapRunnable : public QRunnable { public: DiscardEglPixmapRunnable( uint, QFunctionPointer, EGLImageKHR ); void run() override; private: uint m_texture; QFunctionPointer m_eglDestroyImageKHR; EGLImageKHR m_image; }; DiscardEglPixmapRunnable::DiscardEglPixmapRunnable(uint texture, QFunctionPointer deleteFunction, EGLImageKHR image) : QRunnable(), m_texture(texture), m_eglDestroyImageKHR(deleteFunction), m_image(image) {} void DiscardEglPixmapRunnable::run() { if (m_image != EGL_NO_IMAGE_KHR) { ((eglDestroyImageKHR_func)(m_eglDestroyImageKHR))(eglGetCurrentDisplay(), m_image); glDeleteTextures(1, &m_texture); } } #endif//HAVE_EGL #endif //HAVE_XCB_COMPOSITE WindowTextureNode::WindowTextureNode() : QSGSimpleTextureNode() { } WindowTextureNode::~WindowTextureNode() { } void WindowTextureNode::reset(QSGTexture *texture) { setTexture(texture); m_texture.reset(texture); } XWindowThumbnail::XWindowThumbnail(QQuickItem *parent) : QQuickItem(parent) , QAbstractNativeEventFilter() , m_xcb(false) , m_composite(false) , m_winId(0) , m_paintedSize(QSizeF()) , m_thumbnailAvailable(false) , m_redirecting(false) , m_damaged(false) , m_depth(0) #if HAVE_XCB_COMPOSITE , m_openGLFunctionsResolved(false) , m_damageEventBase(0) , m_damage(XCB_NONE) , m_pixmap(XCB_PIXMAP_NONE) , m_texture(0) #if HAVE_GLX , m_glxPixmap(XCB_PIXMAP_NONE) , m_bindTexImage(nullptr) , m_releaseTexImage(nullptr) #endif // HAVE_GLX #if HAVE_EGL , m_eglFunctionsResolved(false) , m_image(EGL_NO_IMAGE_KHR) , m_eglCreateImageKHR(nullptr) , m_eglDestroyImageKHR(nullptr) , m_glEGLImageTargetTexture2DOES(nullptr) #endif // HAVE_EGL #endif { setFlag(ItemHasContents); if (QGuiApplication *gui = dynamic_cast(QCoreApplication::instance())) { m_xcb = (gui->platformName() == QLatin1String("xcb")); if (m_xcb) { gui->installNativeEventFilter(this); #if HAVE_XCB_COMPOSITE xcb_connection_t *c = QX11Info::connection(); xcb_prefetch_extension_data(c, &xcb_composite_id); const auto *compositeReply = xcb_get_extension_data(c, &xcb_composite_id); m_composite = (compositeReply && compositeReply->present); xcb_prefetch_extension_data(c, &xcb_damage_id); const auto *reply = xcb_get_extension_data(c, &xcb_damage_id); m_damageEventBase = reply->first_event; if (reply->present) { xcb_damage_query_version_unchecked(c, XCB_DAMAGE_MAJOR_VERSION, XCB_DAMAGE_MINOR_VERSION); } #endif } } } XWindowThumbnail::~XWindowThumbnail() { if (m_xcb) { QCoreApplication::instance()->removeNativeEventFilter(this); stopRedirecting(); } } void XWindowThumbnail::itemChange(ItemChange change, const ItemChangeData &data) { switch (change) { case ItemSceneChange: if (m_scene) { disconnect(m_scene.data(), &QWindow::visibleChanged, this, &XWindowThumbnail::sceneVisibilityChanged); } m_scene = data.window; if (m_scene) { connect(m_scene.data(), &QWindow::visibleChanged, this, &XWindowThumbnail::sceneVisibilityChanged); // restart the redirection, it might not have been active yet stopRedirecting(); if (startRedirecting()) { update(); } } break; case ItemEnabledHasChanged: Q_FALLTHROUGH(); case ItemVisibleHasChanged: if (data.boolValue) { if (startRedirecting()) { update(); } } else { stopRedirecting(); releaseResources(); } break; default: break; } } void XWindowThumbnail::releaseResources() { #if HAVE_XCB_COMPOSITE #if HAVE_GLX && HAVE_EGL //only one (or none) should be set, but never both Q_ASSERT(m_glxPixmap == XCB_PIXMAP_NONE || m_image == EGL_NO_IMAGE_KHR); #endif #if HAVE_GLX || HAVE_EGL QQuickWindow::RenderStage m_renderStage = QQuickWindow::NoStage; #endif //data is deleted in the render thread (with relevant GLX calls) //note runnable may be called *after* this is deleted //but the pointer is held by the WindowThumbnail which is in the main thread #if HAVE_GLX if (m_glxPixmap != XCB_PIXMAP_NONE) { window()->scheduleRenderJob(new DiscardGlxPixmapRunnable(m_texture, m_releaseTexImage, m_glxPixmap), m_renderStage); m_glxPixmap = XCB_PIXMAP_NONE; m_texture = 0; } #endif #if HAVE_EGL if (m_image != EGL_NO_IMAGE_KHR) { window()->scheduleRenderJob(new DiscardEglPixmapRunnable(m_texture, m_eglDestroyImageKHR, m_image), m_renderStage); m_image = EGL_NO_IMAGE_KHR; m_texture = 0; } #endif #endif } uint32_t XWindowThumbnail::winId() const { return m_winId; } void XWindowThumbnail::setWinId(uint32_t winId) { if (m_winId == winId) { return; } if (!KWindowSystem::self()->hasWId(winId)) { // invalid Id, don't updated return; } if (window() && winId == window()->winId()) { // don't redirect to yourself return; } stopRedirecting(); m_winId = winId; if (isEnabled() && isVisible()) { startRedirecting(); } emit winIdChanged(); } qreal XWindowThumbnail::paintedWidth() const { return m_paintedSize.width(); } qreal XWindowThumbnail::paintedHeight() const { return m_paintedSize.height(); } bool XWindowThumbnail::thumbnailAvailable() const { return m_thumbnailAvailable; } QSGNode *XWindowThumbnail::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *updatePaintNodeData) { Q_UNUSED(updatePaintNodeData) auto *node = static_cast(oldNode); if (!node) { node = new WindowTextureNode(); node->setFiltering(QSGTexture::Linear); } if (!m_xcb || m_winId == 0 || (window() && window()->winId() == m_winId)) { iconToTexture(node); } else { windowToTexture(node); } node->setRect(boundingRect()); const QSizeF size(node->texture()->textureSize().scaled(boundingRect().size().toSize(), Qt::KeepAspectRatio)); if (size != m_paintedSize) { m_paintedSize = size; emit paintedSizeChanged(); } const qreal x = boundingRect().x() + (boundingRect().width() - size.width()) / 2; const qreal y = boundingRect().y() + (boundingRect().height() - size.height()) / 2; node->setRect(QRectF(QPointF(x, y), size)); return node; } bool XWindowThumbnail::nativeEventFilter(const QByteArray &eventType, void *message, long int *result) { Q_UNUSED(result) if (!m_xcb || !m_composite || eventType != QByteArrayLiteral("xcb_generic_event_t")) { // currently we are only interested in XCB events return false; } #if HAVE_XCB_COMPOSITE xcb_generic_event_t *event = static_cast(message); const uint8_t responseType = event->response_type & ~0x80; if (responseType == m_damageEventBase + XCB_DAMAGE_NOTIFY) { if (reinterpret_cast(event)->drawable == m_winId) { m_damaged = true; update(); } } else if (responseType == XCB_CONFIGURE_NOTIFY) { if (reinterpret_cast(event)->window == m_winId) { releaseResources(); m_damaged = true; update(); } } else if (responseType == XCB_MAP_NOTIFY) { if (reinterpret_cast(event)->window == m_winId) { releaseResources(); m_damaged = true; update(); } } #else Q_UNUSED(message) #endif // do not filter out any events, there might be further WindowThumbnails for the same window return false; } void XWindowThumbnail::iconToTexture(WindowTextureNode *textureNode) { QIcon icon; if (KWindowSystem::self()->hasWId(m_winId)) { icon = KWindowSystem::self()->icon(m_winId, boundingRect().width(), boundingRect().height()); } else { // fallback to plasma icon icon = QIcon::fromTheme(QStringLiteral("plasma")); } QImage image = icon.pixmap(boundingRect().size().toSize()).toImage(); textureNode->reset(window()->createTextureFromImage(image, QQuickWindow::TextureCanUseAtlas)); } #if HAVE_XCB_COMPOSITE #if HAVE_GLX bool XWindowThumbnail::windowToTextureGLX(WindowTextureNode *textureNode) { if (glXGetCurrentContext()) { if (!m_openGLFunctionsResolved) { resolveGLXFunctions(); } if (!m_bindTexImage || !m_releaseTexImage) { return false; } if (m_glxPixmap == XCB_PIXMAP_NONE) { xcb_connection_t *c = QX11Info::connection(); auto attrCookie = xcb_get_window_attributes_unchecked(c, m_winId); auto geometryCookie = xcb_get_geometry_unchecked(c, m_pixmap); QScopedPointer attr(xcb_get_window_attributes_reply(c, attrCookie, nullptr)); QScopedPointer geo(xcb_get_geometry_reply(c, geometryCookie, nullptr)); if (attr.isNull()) { return false; } if (geo.isNull()) { return false; } m_depth = geo->depth; m_visualid = attr->visual; if (!loadGLXTexture()) { return false; } textureNode->reset(window()->createTextureFromId(m_texture, QSize(geo->width, geo->height), QQuickWindow::TextureCanUseAtlas)); } textureNode->texture()->bind(); bindGLXTexture(); return true; } return false; } #endif // HAVE_GLX #if HAVE_EGL bool XWindowThumbnail::xcbWindowToTextureEGL(WindowTextureNode *textureNode) { EGLContext context = eglGetCurrentContext(); if (context != EGL_NO_CONTEXT) { if (!m_eglFunctionsResolved) { resolveEGLFunctions(); } if (QByteArray((char *)glGetString(GL_RENDERER)).contains("llvmpipe")) { return false; } if (!m_eglCreateImageKHR || !m_eglDestroyImageKHR || !m_glEGLImageTargetTexture2DOES) { return false; } if (m_image == EGL_NO_IMAGE_KHR) { xcb_connection_t *c = QX11Info::connection(); auto geometryCookie = xcb_get_geometry_unchecked(c, m_pixmap); const EGLint attribs[] = { EGL_IMAGE_PRESERVED_KHR, EGL_TRUE, EGL_NONE }; m_image = ((eglCreateImageKHR_func)(m_eglCreateImageKHR))(eglGetCurrentDisplay(), EGL_NO_CONTEXT, EGL_NATIVE_PIXMAP_KHR, (EGLClientBuffer)m_pixmap, attribs); if (m_image == EGL_NO_IMAGE_KHR) { qDebug() << "failed to create egl image"; return false; } glGenTextures(1, &m_texture); QScopedPointer geo(xcb_get_geometry_reply(c, geometryCookie, nullptr)); QSize size; if (!geo.isNull()) { size.setWidth(geo->width); size.setHeight(geo->height); } textureNode->reset(window()->createTextureFromId(m_texture, size, QQuickWindow::TextureCanUseAtlas)); } textureNode->texture()->bind(); bindEGLTexture(); return true; } return false; } void XWindowThumbnail::resolveEGLFunctions() { EGLDisplay display = eglGetCurrentDisplay(); if (display == EGL_NO_DISPLAY) { return; } auto *context = window()->openglContext(); QList extensions = QByteArray(eglQueryString(display, EGL_EXTENSIONS)).split(' '); if (extensions.contains(QByteArrayLiteral("EGL_KHR_image")) || (extensions.contains(QByteArrayLiteral("EGL_KHR_image_base")) && extensions.contains(QByteArrayLiteral("EGL_KHR_image_pixmap")))) { if (context->hasExtension(QByteArrayLiteral("GL_OES_EGL_image"))) { qDebug() << "Have EGL texture from pixmap"; m_eglCreateImageKHR = context->getProcAddress(QByteArrayLiteral("eglCreateImageKHR")); m_eglDestroyImageKHR = context->getProcAddress(QByteArrayLiteral("eglDestroyImageKHR")); m_glEGLImageTargetTexture2DOES = context->getProcAddress(QByteArrayLiteral("glEGLImageTargetTexture2DOES")); } } m_eglFunctionsResolved = true; } void XWindowThumbnail::bindEGLTexture() { ((glEGLImageTargetTexture2DOES_func)(m_glEGLImageTargetTexture2DOES))(GL_TEXTURE_2D, (GLeglImageOES)m_image); resetDamaged(); } #endif // HAVE_EGL QImage XWindowThumbnail::convertToQImage(XImage* ximage) { QImage::Format format = QImage::Format_ARGB32_Premultiplied; if (ximage->depth == 24) format = QImage::Format_RGB32; else if (ximage->depth == 16) format = QImage::Format_RGB16; QImage image = QImage(reinterpret_cast(ximage->data), ximage->width, ximage->height, ximage->bytes_per_line, format).copy(); // 大端还是小端? if ((QSysInfo::ByteOrder == QSysInfo::LittleEndian && ximage->byte_order == MSBFirst) || (QSysInfo::ByteOrder == QSysInfo::BigEndian && ximage->byte_order == LSBFirst)) { for (int i = 0; i < image.height(); i++) { if (ximage->depth == 16) { ushort* p = reinterpret_cast(image.scanLine(i)); ushort* end = p + image.width(); while (p < end) { *p = ((*p << 8) & 0xff00) | ((*p >> 8) & 0x00ff); p++; } } else { uint* p = reinterpret_cast(image.scanLine(i)); uint* end = p + image.width(); while (p < end) { *p = ((*p << 24) & 0xff000000) | ((*p << 8) & 0x00ff0000) | ((*p >> 8) & 0x0000ff00) | ((*p >> 24) & 0x000000ff); p++; } } } } // 修复alpha通道 if (format == QImage::Format_RGB32) { QRgb* p = reinterpret_cast(image.bits()); for (int y = 0; y < ximage->height; ++y) { for (int x = 0; x < ximage->width; ++x) p[x] |= 0xff000000; p += ximage->bytes_per_line / 4; } } return image; } bool XWindowThumbnail::xlibWindowToTexture(WindowTextureNode *textureNode) { XWindowAttributes attr; Display *display = QX11Info::display(); XGetWindowAttributes(display, m_winId, &attr); XImage *image = XGetImage(display, m_winId, 0, 0, attr.width, attr.height, 0xffffffff, ZPixmap); if (image) { QImage thumbnail = convertToQImage(image); XDestroyImage(image); textureNode->reset(window()->createTextureFromImage(thumbnail, QQuickWindow::TextureCanUseAtlas)); return true; } qDebug() << "[Warning]: No window thumbnails from X."; return false; } #endif // HAVE_XCB_COMPOSITE void XWindowThumbnail::windowToTexture(WindowTextureNode *textureNode) { if (!m_damaged && textureNode->texture()) { return; } #if HAVE_XCB_COMPOSITE if (!textureNode->texture()) { // the texture got discarded by the scene graph, but our mapping is still valid // let's discard the pixmap to have a clean state again releaseResources(); } if (m_pixmap == XCB_PIXMAP_NONE) { m_pixmap = pixmapForWindow(); } if (m_pixmap == XCB_PIXMAP_NONE) { // create above failed iconToTexture(textureNode); setThumbnailAvailable(false); return; } bool fallbackToIcon = true; #if HAVE_GLX fallbackToIcon = !windowToTextureGLX(textureNode); #endif // HAVE_GLX #if HAVE_EGL if (fallbackToIcon) { // if glx succeeded fallbackToIcon is false, thus we shouldn't try egl fallbackToIcon = !xcbWindowToTextureEGL(textureNode); } #endif // HAVE_EGL if (fallbackToIcon) { // incase both GLX and EGL are unavailable or KWin compositor is not opengl. fallbackToIcon = !xlibWindowToTexture(textureNode); } if (fallbackToIcon) { // just for safety to not crash iconToTexture(textureNode); } setThumbnailAvailable(!fallbackToIcon); textureNode->markDirty(QSGNode::DirtyForceUpdate); #else iconToTexture(textureNode); #endif } #if HAVE_XCB_COMPOSITE xcb_pixmap_t XWindowThumbnail::pixmapForWindow() { if (!m_composite) { return XCB_PIXMAP_NONE; } xcb_connection_t *c = QX11Info::connection(); xcb_pixmap_t pix = xcb_generate_id(c); auto cookie = xcb_composite_name_window_pixmap_checked(c, m_winId, pix); QScopedPointer error(xcb_request_check(c, cookie)); if (error) { return XCB_PIXMAP_NONE; } return pix; } #if HAVE_GLX void XWindowThumbnail::resolveGLXFunctions() { auto *context = window()->openglContext(); QList extensions = QByteArray(glXQueryExtensionsString(QX11Info::display(), QX11Info::appScreen())).split(' '); if (extensions.contains(QByteArrayLiteral("GLX_EXT_texture_from_pixmap"))) { m_bindTexImage = context->getProcAddress(QByteArrayLiteral("glXBindTexImageEXT")); m_releaseTexImage = context->getProcAddress(QByteArrayLiteral("glXReleaseTexImageEXT")); } else qWarning() << "couldn't resolve GLX_EXT_texture_from_pixmap functions"; m_openGLFunctionsResolved = true; } void XWindowThumbnail::bindGLXTexture() { Display *d = QX11Info::display(); ((glXReleaseTexImageEXT_func)(m_releaseTexImage))(d, m_glxPixmap, GLX_FRONT_LEFT_EXT); ((glXBindTexImageEXT_func)(m_bindTexImage))(d, m_glxPixmap, GLX_FRONT_LEFT_EXT, nullptr); resetDamaged(); } struct FbConfigInfo { GLXFBConfig fbConfig; int textureFormat; }; struct GlxGlobalData { GlxGlobalData() { xcb_connection_t * const conn = QX11Info::connection(); // Fetch the render pict formats reply = xcb_render_query_pict_formats_reply(conn, xcb_render_query_pict_formats_unchecked(conn), nullptr); // Init the visual ID -> format ID hash table for (auto screens = xcb_render_query_pict_formats_screens_iterator(reply); screens.rem; xcb_render_pictscreen_next(&screens)) { for (auto depths = xcb_render_pictscreen_depths_iterator(screens.data); depths.rem; xcb_render_pictdepth_next(&depths)) { const xcb_render_pictvisual_t *visuals = xcb_render_pictdepth_visuals(depths.data); const int len = xcb_render_pictdepth_visuals_length(depths.data); for (int i = 0; i < len; i++) visualPictFormatHash.insert(visuals[i].visual, visuals[i].format); } } // Init the format ID -> xcb_render_directformat_t* hash table const xcb_render_pictforminfo_t *formats = xcb_render_query_pict_formats_formats(reply); const int len = xcb_render_query_pict_formats_formats_length(reply); for (int i = 0; i < len; i++) { if (formats[i].type == XCB_RENDER_PICT_TYPE_DIRECT) formatInfoHash.insert(formats[i].id, &formats[i].direct); } // Init the visual ID -> depth hash table const xcb_setup_t *setup = xcb_get_setup(conn); for (auto screen = xcb_setup_roots_iterator(setup); screen.rem; xcb_screen_next(&screen)) { for (auto depth = xcb_screen_allowed_depths_iterator(screen.data); depth.rem; xcb_depth_next(&depth)) { const int len = xcb_depth_visuals_length(depth.data); const xcb_visualtype_t *visuals = xcb_depth_visuals(depth.data); for (int i = 0; i < len; i++) visualDepthHash.insert(visuals[i].visual_id, depth.data->depth); } } } ~GlxGlobalData() { qDeleteAll(visualFbConfigHash); std::free(reply); } xcb_render_query_pict_formats_reply_t *reply; QHash visualPictFormatHash; QHash visualDepthHash; QHash visualFbConfigHash; QHash formatInfoHash; }; Q_GLOBAL_STATIC(GlxGlobalData, g_glxGlobalData) static xcb_render_pictformat_t findPictFormat(xcb_visualid_t visual) { GlxGlobalData *d = g_glxGlobalData; return d->visualPictFormatHash.value(visual); } static const xcb_render_directformat_t *findPictFormatInfo(xcb_render_pictformat_t format) { GlxGlobalData *d = g_glxGlobalData; return d->formatInfoHash.value(format); } static int visualDepth(xcb_visualid_t visual) { GlxGlobalData *d = g_glxGlobalData; return d->visualDepthHash.value(visual); } FbConfigInfo *getConfig(xcb_visualid_t visual) { Display *dpy = QX11Info::display(); const xcb_render_pictformat_t format = findPictFormat(visual); const xcb_render_directformat_t *direct = findPictFormatInfo(format); if (!direct) { return nullptr; } const int red_bits = qPopulationCount(direct->red_mask); const int green_bits = qPopulationCount(direct->green_mask); const int blue_bits = qPopulationCount(direct->blue_mask); const int alpha_bits = qPopulationCount(direct->alpha_mask); const int depth = visualDepth(visual); const auto rgb_sizes = std::tie(red_bits, green_bits, blue_bits); const int attribs[] = { GLX_RENDER_TYPE, GLX_RGBA_BIT, GLX_DRAWABLE_TYPE, GLX_WINDOW_BIT | GLX_PIXMAP_BIT, GLX_X_VISUAL_TYPE, GLX_TRUE_COLOR, GLX_X_RENDERABLE, True, GLX_CONFIG_CAVEAT, int(GLX_DONT_CARE), // The ARGB32 visual is marked non-conformant in Catalyst GLX_FRAMEBUFFER_SRGB_CAPABLE_EXT, int(GLX_DONT_CARE), GLX_BUFFER_SIZE, red_bits + green_bits + blue_bits + alpha_bits, GLX_RED_SIZE, red_bits, GLX_GREEN_SIZE, green_bits, GLX_BLUE_SIZE, blue_bits, GLX_ALPHA_SIZE, alpha_bits, GLX_STENCIL_SIZE, 0, GLX_DEPTH_SIZE, 0, 0 }; if (QByteArray((char *)glGetString(GL_RENDERER)).contains("llvmpipe")) { return nullptr; } int count = 0; GLXFBConfig *configs = glXChooseFBConfig(dpy, QX11Info::appScreen(), attribs, &count); if (count < 1) { return nullptr; } struct FBConfig { GLXFBConfig config; int depth; int stencil; int format; }; QList candidates; for (int i = 0; i < count; i++) { int red, green, blue; glXGetFBConfigAttrib(dpy, configs[i], GLX_RED_SIZE, &red); glXGetFBConfigAttrib(dpy, configs[i], GLX_GREEN_SIZE, &green); glXGetFBConfigAttrib(dpy, configs[i], GLX_BLUE_SIZE, &blue); if (std::tie(red, green, blue) != rgb_sizes) continue; xcb_visualid_t visual; glXGetFBConfigAttrib(dpy, configs[i], GLX_VISUAL_ID, (int *) &visual); if (visualDepth(visual) != depth) continue; int bind_rgb, bind_rgba; glXGetFBConfigAttrib(dpy, configs[i], GLX_BIND_TO_TEXTURE_RGBA_EXT, &bind_rgba); glXGetFBConfigAttrib(dpy, configs[i], GLX_BIND_TO_TEXTURE_RGB_EXT, &bind_rgb); if (!bind_rgb && !bind_rgba) continue; int texture_targets; glXGetFBConfigAttrib(dpy, configs[i], GLX_BIND_TO_TEXTURE_TARGETS_EXT, &texture_targets); if ((texture_targets & GLX_TEXTURE_2D_BIT_EXT) == 0) continue; int depth, stencil; glXGetFBConfigAttrib(dpy, configs[i], GLX_DEPTH_SIZE, &depth); glXGetFBConfigAttrib(dpy, configs[i], GLX_STENCIL_SIZE, &stencil); int texture_format; if (alpha_bits) texture_format = bind_rgba ? GLX_TEXTURE_FORMAT_RGBA_EXT : GLX_TEXTURE_FORMAT_RGB_EXT; else texture_format = bind_rgb ? GLX_TEXTURE_FORMAT_RGB_EXT : GLX_TEXTURE_FORMAT_RGBA_EXT; candidates.append(FBConfig{configs[i], depth, stencil, texture_format}); } if (count > 0) XFree(configs); std::stable_sort(candidates.begin(), candidates.end(), [](const FBConfig &left, const FBConfig &right) { if (left.depth < right.depth) return true; if (left.stencil < right.stencil) return true; return false; }); FbConfigInfo *info = nullptr; if (!candidates.isEmpty()) { const FBConfig &candidate = candidates.front(); info = new FbConfigInfo; info->fbConfig = candidate.config; info->textureFormat = candidate.format; } return info; } bool XWindowThumbnail::loadGLXTexture() { GLXContext glxContext = glXGetCurrentContext(); if (!glxContext) { return false; } FbConfigInfo *info = nullptr; auto &hashTable = g_glxGlobalData->visualFbConfigHash; auto it = hashTable.constFind(m_visualid); if (it != hashTable.constEnd()) { info = *it; } else { info = getConfig(m_visualid); hashTable.insert(m_visualid, info); } if (!info) { return false; } glGenTextures(1, &m_texture); const int attrs[] = { GLX_TEXTURE_FORMAT_EXT, info->textureFormat, GLX_MIPMAP_TEXTURE_EXT, false, GLX_TEXTURE_TARGET_EXT, GLX_TEXTURE_2D_EXT, XCB_NONE }; m_glxPixmap = glXCreatePixmap(QX11Info::display(), info->fbConfig, m_pixmap, attrs); return true; } #endif #endif void XWindowThumbnail::resetDamaged() { m_damaged = false; #if HAVE_XCB_COMPOSITE if (m_damage == XCB_NONE) { return; } xcb_damage_subtract(QX11Info::connection(), m_damage, XCB_NONE, XCB_NONE); #endif } void XWindowThumbnail::stopRedirecting() { if (!m_xcb || !m_composite) { return; } #if HAVE_XCB_COMPOSITE xcb_connection_t *c = QX11Info::connection(); if (m_pixmap != XCB_PIXMAP_NONE) { xcb_free_pixmap(c, m_pixmap); m_pixmap = XCB_PIXMAP_NONE; } if (m_winId == XCB_WINDOW_NONE) { return; } if (m_redirecting) { xcb_composite_unredirect_window(c, m_winId, XCB_COMPOSITE_REDIRECT_AUTOMATIC); } m_redirecting = false; if (m_damage == XCB_NONE) { return; } xcb_damage_destroy(c, m_damage); m_damage = XCB_NONE; #endif } bool XWindowThumbnail::startRedirecting() { if (!m_xcb || !m_composite || !window() || !window()->isVisible() || window()->winId() == m_winId || !isEnabled() || !isVisible()) { return false; } #if HAVE_XCB_COMPOSITE if (m_winId == XCB_WINDOW_NONE) { return false; } xcb_connection_t *c = QX11Info::connection(); // need to get the window attributes for the existing event mask const auto attribsCookie = xcb_get_window_attributes_unchecked(c, m_winId); // redirect the window xcb_composite_redirect_window(c, m_winId, XCB_COMPOSITE_REDIRECT_AUTOMATIC); m_redirecting = true; // generate the damage handle m_damage = xcb_generate_id(c); xcb_damage_create(c, m_damage, m_winId, XCB_DAMAGE_REPORT_LEVEL_NON_EMPTY); QScopedPointer attr(xcb_get_window_attributes_reply(c, attribsCookie, nullptr)); uint32_t events = XCB_EVENT_MASK_STRUCTURE_NOTIFY; if (!attr.isNull()) { events = events | attr->your_event_mask; } // the event mask will not be removed again. We cannot track whether another component also needs STRUCTURE_NOTIFY (e.g. KWindowSystem). // if we would remove the event mask again, other areas will break. xcb_change_window_attributes(c, m_winId, XCB_CW_EVENT_MASK, &events); // force to update the texture m_damaged = true; return true; #else return false; #endif } void XWindowThumbnail::setThumbnailAvailable(bool thumbnailAvailable) { if (m_thumbnailAvailable != thumbnailAvailable) { m_thumbnailAvailable = thumbnailAvailable; emit thumbnailAvailableChanged(); } } void XWindowThumbnail::sceneVisibilityChanged(bool visible) { if (visible) { if (startRedirecting()) { update(); } } else { stopRedirecting(); releaseResources(); } } ukui-panel-4.0.0.4/plugin-taskbar/window-thumbnail/qmldir0000644000175000017500000000015114560306203021771 0ustar fengfengmodule org.ukui.windowThumbnail plugin ukui-window-thumbnail WindowThumbnail 1.0 qml/WindowThumbnail.qml ukui-panel-4.0.0.4/plugin-taskbar/window-thumbnail/pipewire-source-item.h0000644000175000017500000000330514560306203025011 0ustar fengfeng/* Render a PipeWire stream into a QtQuick scene as a standard Item SPDX-FileCopyrightText: 2020 Aleix Pol Gonzalez SPDX-FileContributor: iaom SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL */ #ifndef PIPEWIRESOURCEITEM_H #define PIPEWIRESOURCEITEM_H #include #include #include #include #include #include struct DmaBufPlane; class PipeWireSourceStream; class QSGTexture; class QOpenGLTexture; typedef void *EGLImage; class PipeWireSourceItem : public QQuickItem { Q_OBJECT Q_PROPERTY(uint nodeId READ nodeId WRITE setNodeId NOTIFY nodeIdChanged) public: PipeWireSourceItem(QQuickItem *parent = nullptr); ~PipeWireSourceItem() override; QSGNode *updatePaintNode(QSGNode *node, UpdatePaintNodeData *data) override; Q_SCRIPTABLE QString error() const; void setNodeId(uint nodeId); uint nodeId() const { return m_nodeId; } void componentComplete() override; void releaseResources() override; Q_SIGNALS: void nodeIdChanged(uint nodeId); private: void itemChange(ItemChange change, const ItemChangeData &data) override; void updateTextureDmaBuf(const QVector &plane, uint32_t format); void updateTextureImage(const QImage &image); uint m_nodeId = 0; std::function m_createNextTexture; QScopedPointer m_stream; QScopedPointer m_texture; EGLImage m_image = nullptr; bool m_needsRecreateTexture = false; }; #endif // PIPEWIRESOURCEITEM_H ukui-panel-4.0.0.4/plugin-taskbar/window-thumbnail/pipewire-source-item.cpp0000644000175000017500000002225514560306203025351 0ustar fengfeng/* Render a PipeWire stream into a QtQuick scene as a standard Item SPDX-FileCopyrightText: 2020 Aleix Pol Gonzalez SPDX-FileContributor: iaom SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL */ #include "pipewire-source-item.h" #include "pipewire-source-stream.h" #include #include #include #include #include #include #include #include #include #include #include #include #include static void pwInit() { pw_init(nullptr, nullptr); } Q_COREAPP_STARTUP_FUNCTION(pwInit); class DiscardEglPixmapRunnable : public QRunnable { public: DiscardEglPixmapRunnable(EGLImageKHR image, QOpenGLTexture *texture) : m_image(image) , m_texture(texture) { } void run() override { if (m_image != EGL_NO_IMAGE_KHR) { static auto eglDestroyImageKHR = (PFNEGLDESTROYIMAGEKHRPROC)eglGetProcAddress("eglDestroyImageKHR"); eglDestroyImageKHR(eglGetCurrentDisplay(), m_image); } delete m_texture; } private: const EGLImageKHR m_image; QOpenGLTexture *m_texture; }; PipeWireSourceItem::PipeWireSourceItem(QQuickItem *parent) : QQuickItem(parent) { setFlag(ItemHasContents, true); connect(this, &QQuickItem::visibleChanged, this, [this]() { if (m_stream) m_stream->setActive(isVisible()); }); } PipeWireSourceItem::~PipeWireSourceItem() { } void PipeWireSourceItem::itemChange(QQuickItem::ItemChange change, const QQuickItem::ItemChangeData &data) { switch (change) { case ItemVisibleHasChanged: if (m_stream) m_stream->setActive(isVisible() && data.boolValue && isComponentComplete()); break; case ItemSceneChange: m_needsRecreateTexture = true; releaseResources(); break; default: break; } } void PipeWireSourceItem::releaseResources() { if (window()) { window()->scheduleRenderJob(new DiscardEglPixmapRunnable(m_image, m_texture.take()), QQuickWindow::NoStage); m_image = EGL_NO_IMAGE_KHR; } } void PipeWireSourceItem::setNodeId(uint nodeId) { if (nodeId == m_nodeId) return; m_nodeId = nodeId; if (m_nodeId == 0) { m_stream.reset(nullptr); m_createNextTexture = [] { return nullptr; }; } else { m_stream.reset(new PipeWireSourceStream(this)); m_stream->createStream(m_nodeId); if (!m_stream->error().isEmpty()) { m_stream.reset(nullptr); m_nodeId = 0; return; } m_stream->setActive(isVisible() && isComponentComplete()); connect(m_stream.data(), &PipeWireSourceStream::dmabufTextureReceived, this, &PipeWireSourceItem::updateTextureDmaBuf); connect(m_stream.data(), &PipeWireSourceStream::imageTextureReceived, this, &PipeWireSourceItem::updateTextureImage); } Q_EMIT nodeIdChanged(nodeId); } QSGNode *PipeWireSourceItem::updatePaintNode(QSGNode *node, QQuickItem::UpdatePaintNodeData *) { if (Q_UNLIKELY(!m_createNextTexture)) { return node; } auto texture = m_createNextTexture(); if (!texture) { delete node; return nullptr; } if (m_needsRecreateTexture) { delete node; node = nullptr; m_needsRecreateTexture = false; } QSGImageNode *textureNode = static_cast(node); if (!textureNode) { textureNode = window()->createImageNode(); textureNode->setOwnsTexture(true); } textureNode->setTexture(texture); const auto br = boundingRect().toRect(); QRect rect({0, 0}, texture->textureSize().scaled(br.size(), Qt::KeepAspectRatio)); rect.moveCenter(br.center()); textureNode->setRect(rect); return textureNode; } QString PipeWireSourceItem::error() const { return m_stream->error(); } static EGLImage createImage(EGLDisplay display, const QVector &planes, uint32_t format, const QSize &size) { const bool hasModifiers = planes[0].modifier != DRM_FORMAT_MOD_INVALID; QVector attribs; attribs << EGL_WIDTH << size.width() << EGL_HEIGHT << size.height() << EGL_LINUX_DRM_FOURCC_EXT << EGLint(format) << EGL_DMA_BUF_PLANE0_FD_EXT << planes[0].fd << EGL_DMA_BUF_PLANE0_OFFSET_EXT << EGLint(planes[0].offset) << EGL_DMA_BUF_PLANE0_PITCH_EXT << EGLint(planes[0].stride); if (hasModifiers) { attribs << EGL_DMA_BUF_PLANE0_MODIFIER_LO_EXT << EGLint(planes[0].modifier & 0xffffffff) << EGL_DMA_BUF_PLANE0_MODIFIER_HI_EXT << EGLint(planes[0].modifier >> 32); } if (planes.count() > 1) { attribs << EGL_DMA_BUF_PLANE1_FD_EXT << planes[1].fd << EGL_DMA_BUF_PLANE1_OFFSET_EXT << EGLint(planes[1].offset) << EGL_DMA_BUF_PLANE1_PITCH_EXT << EGLint(planes[1].stride); if (hasModifiers) { attribs << EGL_DMA_BUF_PLANE1_MODIFIER_LO_EXT << EGLint(planes[1].modifier & 0xffffffff) << EGL_DMA_BUF_PLANE1_MODIFIER_HI_EXT << EGLint(planes[1].modifier >> 32); } } if (planes.count() > 2) { attribs << EGL_DMA_BUF_PLANE2_FD_EXT << planes[2].fd << EGL_DMA_BUF_PLANE2_OFFSET_EXT << EGLint(planes[2].offset) << EGL_DMA_BUF_PLANE2_PITCH_EXT << EGLint(planes[2].stride); if (hasModifiers) { attribs << EGL_DMA_BUF_PLANE2_MODIFIER_LO_EXT << EGLint(planes[2].modifier & 0xffffffff) << EGL_DMA_BUF_PLANE2_MODIFIER_HI_EXT << EGLint(planes[2].modifier >> 32); } } if (planes.count() > 3) { attribs << EGL_DMA_BUF_PLANE3_FD_EXT << planes[3].fd << EGL_DMA_BUF_PLANE3_OFFSET_EXT << EGLint(planes[3].offset) << EGL_DMA_BUF_PLANE3_PITCH_EXT << EGLint(planes[3].stride); if (hasModifiers) { attribs << EGL_DMA_BUF_PLANE3_MODIFIER_LO_EXT << EGLint(planes[3].modifier & 0xffffffff) << EGL_DMA_BUF_PLANE3_MODIFIER_HI_EXT << EGLint(planes[3].modifier >> 32); } } attribs << EGL_NONE; static auto eglCreateImageKHR = (PFNEGLCREATEIMAGEKHRPROC)eglGetProcAddress("eglCreateImageKHR"); Q_ASSERT(eglCreateImageKHR); EGLImage ret = eglCreateImageKHR(display, EGL_NO_CONTEXT, EGL_LINUX_DMA_BUF_EXT, (EGLClientBuffer) nullptr, attribs.data()); if (ret == EGL_NO_IMAGE_KHR) { qWarning() << "invalid image" << glGetError(); } // Q_ASSERT(ret); return ret; } void PipeWireSourceItem::updateTextureDmaBuf(const QVector &planes, uint32_t format) { static auto s_glEGLImageTargetTexture2DOES = (PFNGLEGLIMAGETARGETTEXTURE2DOESPROC)eglGetProcAddress("glEGLImageTargetTexture2DOES"); if (!s_glEGLImageTargetTexture2DOES) { qWarning() << "glEGLImageTargetTexture2DOES is not available" << window(); return; } if (!window() || !window()->openglContext() || !m_stream) { qWarning() << "need a window and a context" << window(); return; } const EGLDisplay display = static_cast(QGuiApplication::platformNativeInterface()->nativeResourceForIntegration("egldisplay")); if (m_image) { static auto eglDestroyImageKHR = (PFNEGLDESTROYIMAGEKHRPROC)eglGetProcAddress("eglDestroyImageKHR"); eglDestroyImageKHR(display, m_image); } const auto size = m_stream->size(); m_image = createImage(display, planes, format, size); if (m_image == EGL_NO_IMAGE_KHR) { QImage img(200, 200, QImage::Format_ARGB32_Premultiplied); img.fill(Qt::blue); updateTextureImage(img); return; } m_createNextTexture = [this, size, format] { if (!m_texture) { m_texture.reset(new QOpenGLTexture(QOpenGLTexture::Target2D)); bool created = m_texture->create(); Q_ASSERT(created); } m_texture->bind(); s_glEGLImageTargetTexture2DOES(GL_TEXTURE_2D, (GLeglImageOES)m_image); m_texture->setWrapMode(QOpenGLTexture::ClampToEdge); m_texture->setMinMagFilters(QOpenGLTexture::Linear, QOpenGLTexture::Linear); m_texture->release(); m_texture->setSize(size.width(), size.height()); int textureId = m_texture->textureId(); QQuickWindow::CreateTextureOption textureOption = format == DRM_FORMAT_ARGB8888 ? QQuickWindow::TextureHasAlphaChannel : QQuickWindow::TextureIsOpaque; return window()->createTextureFromId(textureId, size, textureOption); }; if (window()->isVisible()) { update(); } } void PipeWireSourceItem::updateTextureImage(const QImage &image) { if (!window()) { qWarning() << "pass"; return; } m_createNextTexture = [this, image] { return window()->createTextureFromImage(image, QQuickWindow::TextureIsOpaque); }; if (window()->isVisible()) update(); } void PipeWireSourceItem::componentComplete() { if (m_stream) m_stream->setActive(isVisible()); QQuickItem::componentComplete(); } ukui-panel-4.0.0.4/plugin-taskbar/window-thumbnail/window-thumbnail-config.h0000644000175000017500000000273614560306203025475 0ustar fengfeng/* * * * Copyright (C) 2023, KylinSoft Co., Ltd. * * * * This program is free software: you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation, either version 3 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program. If not, see . * * * * Authors: iaom * */ #ifndef UKUI_PANEL_WINDOW_THUMBNAIL_CONFIG_H #define UKUI_PANEL_WINDOW_THUMBNAIL_CONFIG_H #include class WindowThumbnailConfig: public QObject { Q_OBJECT Q_PROPERTY(bool pipewireThumbnailEnable READ pipewireThumbnailEnable NOTIFY pipeWireThumbnailEnableStatusChanged) Q_PROPERTY(bool realTimeThumbnailEnable READ realTimeThumbnailEnable NOTIFY realTimeThumbnailEnableStatusChanged) public: WindowThumbnailConfig(QObject *parent = nullptr); bool pipewireThumbnailEnable(); bool realTimeThumbnailEnable(); Q_SIGNALS: void realTimeThumbnailEnableStatusChanged(); void pipeWireThumbnailEnableStatusChanged(); }; #endif //UKUI_PANEL_WINDOW_THUMBNAIL_CONFIG_H ukui-panel-4.0.0.4/plugin-taskbar/window-thumbnail/pipewire-core.cpp0000644000175000017500000000522614560306203024044 0ustar fengfeng/* SPDX-FileCopyrightText: 2020 Aleix Pol Gonzalez SPDX-FileContributor: Jan Grulich SPDX-FileContributor: iaom SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL */ #include "pipewire-core.h" #include #include #include PipeWireCore::PipeWireCore() { pw_init(nullptr, nullptr); pwCoreEvents.version = PW_VERSION_CORE_EVENTS; pwCoreEvents.error = &PipeWireCore::onCoreError; } void PipeWireCore::onCoreError(void *data, uint32_t id, int seq, int res, const char *message) { Q_UNUSED(seq) qWarning() << "PipeWire remote error: " << message; if (id == PW_ID_CORE && res == -EPIPE) { PipeWireCore *pw = static_cast(data); Q_EMIT pw->pipewireFailed(QString::fromUtf8(message)); } } PipeWireCore::~PipeWireCore() { if (pwMainLoop) { pw_loop_leave(pwMainLoop); } if (pwCore) { pw_core_disconnect(pwCore); } if (pwContext) { pw_context_destroy(pwContext); } if (pwMainLoop) { pw_loop_destroy(pwMainLoop); } } bool PipeWireCore::init() { pwMainLoop = pw_loop_new(nullptr); pw_loop_enter(pwMainLoop); QSocketNotifier *notifier = new QSocketNotifier(pw_loop_get_fd(pwMainLoop), QSocketNotifier::Read, this); connect(notifier, &QSocketNotifier::activated, this, [this] { int result = pw_loop_iterate(pwMainLoop, 0); if (result < 0) qWarning() << "pipewire_loop_iterate failed: " << spa_strerror(result); }); pwContext = pw_context_new(pwMainLoop, nullptr, 0); if (!pwContext) { qWarning() << "Failed to create PipeWire context"; m_error = tr("Failed to create PipeWire context"); return false; } pwCore = pw_context_connect(pwContext, nullptr, 0); if (!pwCore) { qWarning() << "Failed to connect PipeWire context"; m_error = tr("Failed to connect PipeWire context"); return false; } if (pw_loop_iterate(pwMainLoop, 0) < 0) { qWarning() << "Failed to start main PipeWire loop"; m_error = tr("Failed to start main PipeWire loop"); return false; } pw_core_add_listener(pwCore, &coreListener, &pwCoreEvents, this); return true; } QSharedPointer PipeWireCore::self() { static QWeakPointer global; QSharedPointer ret; if (global) { ret = global.toStrongRef(); } else { ret.reset(new PipeWireCore); if (ret->init()) { global = ret; } } return ret; } ukui-panel-4.0.0.4/plugin-taskbar/window-thumbnail/screen-casting-request.h0000644000175000017500000000231014560306203025321 0ustar fengfeng/* SPDX-FileCopyrightText: 2020 Aleix Pol Gonzalez SPDX-FileCopyrightText: 2023 iaom SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL */ #ifndef SCREENCASTINGREQUEST_H #define SCREENCASTINGREQUEST_H #include "screen-casting.h" #include class ScreencastingStream; class ScreenCastingRequest : public QObject { Q_OBJECT Q_PROPERTY(QString uuid READ uuid WRITE setUuid NOTIFY uuidChanged) Q_PROPERTY(quint32 nodeId READ nodeId NOTIFY nodeIdChanged) public: explicit ScreenCastingRequest(QObject *parent = nullptr); ~ScreenCastingRequest(); void setUuid(const QString &uuid); QString uuid() const; quint32 nodeId() const; void create(Screencasting *screencasting); Q_SIGNALS: void nodeIdChanged(quint32 nodeId); void uuidChanged(const QString &uuid); void closeRunningStreams(); void cursorModeChanged(Screencasting::CursorMode cursorMode); private: void setNodeid(uint nodeId); ScreencastingStream *m_stream = nullptr; QString m_uuid; KWayland::Client::Output *m_output = nullptr; quint32 m_nodeId = 0; }; #endif // SCREENCASTINGREQUEST_H ukui-panel-4.0.0.4/plugin-taskbar/ukuitaskbutton.h0000644000175000017500000001037014560306203020537 0ustar fengfeng/* * * * Copyright (C) 2023, KylinSoft Co., Ltd. * * * * This program is free software: you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation, either version 3 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program. If not, see . * * * * Authors: Nicole * */ #ifndef UKUITASKBUTTON_H #define UKUITASKBUTTON_H #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "../panel/customstyle.h" using namespace kdk; class UKUITaskButton : public QToolButton { Q_OBJECT Q_PROPERTY(int opacity READ opacity WRITE setOpacity) public: UKUITaskButton(const WindowId window, const QString desktopFile, QWidget *parent = nullptr); virtual ~UKUITaskButton(); enum PanelPosition{ Bottom = 0, //!< The bottom side of the screen. Top, //!< The top side of the screen. Left, //!< The left side of the screen. Right //!< The right side of the screen. }; WindowId windowId() const; QString desktopFileName(); void setDesktopFileName(QString desktopFileName); void updateIcon(); void updateCaption(); bool isLeaderWindow(); bool isActiveWindow(); bool isOnCurrentDesktop(); void refreshIconGeometry(); void activeWindow(); void minimizeWindow(); void closeWindow(); void quickLaunchAction(); void execAction(QString additionalAction = QString{}); void getAdditionalActions(); void rightMenuCloseAction(QMenu *menu, QPoint pos); QRect caculateMenuPosition(QPoint const & absolutePos, QSize const & windowSize); bool isHorizontalPanel(); void setSystemStyle(); bool hasUrgencyHint() const { return m_urgencyHint; } void setUrgencyHint(bool set); bool m_isDemandingAttention = false; QPropertyAnimation *m_hightlightAnimation = NULL; void setOpacity(int alpha); int opacity() const; int m_alpha; CustomStyle *m_opacityStyle = NULL; Q_SIGNALS: void pinToTaskbar(QString desktopFile); void unPinFromTaskbar(QString desktopFile); void closeGroup(); void enterButton(QListwinIdList, QString groupName, int x, int y); void leaveButton(QListwinIdList, QString groupName, int x, int y); public Q_SLOTS: void onButtonsCountChanged(int buttonsCount); void onButtonsStatusChanged(bool isPinned); void onWindowChanged(WId id, NET::Properties properties, NET::Properties2 properties2); protected: void paintEvent(QPaintEvent *e) override; void enterEvent(QEvent *e) override; void leaveEvent(QEvent *e) override; void contextMenuEvent(QContextMenuEvent *e) override; void mouseReleaseEvent(QMouseEvent *e) override; void mousePressEvent(QMouseEvent *event) override; private: WindowId m_windowId; QString m_desktopFileName; QIcon m_icon; QString m_caption; std::unique_ptr m_styleGsettings; std::unique_ptr m_gsettings; QStringList m_gsettingKeys; std::unique_ptr m_act; QList m_additionalActionsList; QObject *m_parent = nullptr; int m_panelPosition = 0; int m_panelSize = 46; bool m_isDemandAttention = false; bool m_isGrouping = true; int m_iconSize = 32; int m_buttonsCount = 0; bool m_isPinned = false; bool m_urgencyHint = false; enum TaskButtonEvent {ENTEREVENT, LEAVEEVENT, OTHEREVENT}; TaskButtonEvent m_taskBtnEvent; QTimer *m_timer; void timeToEmit(); }; #endif // UKUITASKBUTTON_H ukui-panel-4.0.0.4/panel-daemon/0000755000175000017500000000000014560306203014706 5ustar fengfengukui-panel-4.0.0.4/panel-daemon/dbus-server/0000755000175000017500000000000014560306203017147 5ustar fengfengukui-panel-4.0.0.4/panel-daemon/dbus-server/server.h0000644000175000017500000000305214560306203020626 0ustar fengfeng/* * Copyright (C) 2019 Tianjin KYLIN Information Technology Co., Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see #include #include #include //file #include "filewatcher/filewatcher.h" #include "convert-desktop-windowid/convertdesktoptowinid.h" class Server : public QObject { Q_OBJECT Q_CLASSINFO("D-Bus Interface","org.ukui.panel.daemon") public: explicit Server(QObject *parent = 0); public Q_SLOTS: //desktop 文件路径转换为wid int DesktopToWID(QString desktop); //window Id 转化为desktop文件 QString WIDToDesktop(int id); void DesktopFileDeleteSlot(QString path,QStringList deleteFile); Q_SIGNALS: //desktop文件被删除 QString DesktopFileDelete(QString); // //时间改变 // QString TimeChanged(); private: FileWatcher *m_fileWatcher; ConvertDesktopToWinId *m_desktop; }; #endif // UKUIPANEL_INFORMATION_H ukui-panel-4.0.0.4/panel-daemon/dbus-server/org.ukui.panel.daemon.xml0000644000175000017500000000120614560306203023773 0ustar fengfeng ukui-panel-4.0.0.4/panel-daemon/dbus-server/server.cpp0000644000175000017500000000255714560306203021172 0ustar fengfeng/* * Copyright (C) 2019 Tianjin KYLIN Information Technology Co., Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see #include #include "convert-desktop-windowid/convertdesktoptowinid.h" Server::Server(QObject *parent) : QObject(parent) { m_fileWatcher = new FileWatcher(); connect(m_fileWatcher,&FileWatcher::DesktopDeleteFile,this,&Server::DesktopFileDeleteSlot); m_desktop = new ConvertDesktopToWinId(); } QString Server::WIDToDesktop(int id) { return m_desktop->tranIdToDesktop(id); } int Server::DesktopToWID(QString desktop) { } void Server::DesktopFileDeleteSlot(QString path,QStringList deleteFile){ // emit DesktopFileDelete(path,deleteFile); } //QString Server::TimeChanged() //{ //} ukui-panel-4.0.0.4/panel-daemon/dbus-server/Readme.md0000644000175000017500000000201514560306203020664 0ustar fengfeng/* * Copyright (C) 2019 Tianjin KYLIN Information Technology Co., Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see #include #include "server.h" QT_BEGIN_NAMESPACE class QByteArray; template class QList; template class QMap; class QString; class QStringList; class QVariant; QT_END_NAMESPACE /* * Adaptor class for interface org.ukui.panel.daemon */ class DaemonAdaptor: public QDBusAbstractAdaptor { Q_OBJECT Q_CLASSINFO("D-Bus Interface", "org.ukui.panel.daemon") Q_CLASSINFO("D-Bus Introspection", "" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" "") public: DaemonAdaptor(QObject *parent); virtual ~DaemonAdaptor(); public: // PROPERTIES public Q_SLOTS: // METHODS void DesktopFileDeleteSlot(const QString &path, const QStringList &deleteFile); int DesktopToWID(const QString &desktop); QString WIDToDesktop(int id); Q_SIGNALS: // SIGNALS }; #endif ukui-panel-4.0.0.4/panel-daemon/dbus-server/dbus-adaptor.cpp0000644000175000017500000000303314560306203022237 0ustar fengfeng/* * This file was generated by qdbusxml2cpp version 0.8 * Command line was: qdbusxml2cpp org.ukui.panel.daemon.xml -i server.h -a dbus-adaptor * * qdbusxml2cpp is Copyright (C) 2020 The Qt Company Ltd. * * This is an auto-generated file. * Do not edit! All changes made to it will be lost. */ #include "dbus-adaptor.h" #include #include #include #include #include #include #include /* * Implementation of adaptor class DaemonAdaptor */ DaemonAdaptor::DaemonAdaptor(QObject *parent) : QDBusAbstractAdaptor(parent) { // constructor setAutoRelaySignals(true); } DaemonAdaptor::~DaemonAdaptor() { // destructor } void DaemonAdaptor::DesktopFileDeleteSlot(const QString &path, const QStringList &deleteFile) { // handle method call org.ukui.panel.daemon.DesktopFileDeleteSlot QMetaObject::invokeMethod(parent(), "DesktopFileDeleteSlot", Q_ARG(QString, path), Q_ARG(QStringList, deleteFile)); } int DaemonAdaptor::DesktopToWID(const QString &desktop) { // handle method call org.ukui.panel.daemon.DesktopToWID int out0; QMetaObject::invokeMethod(parent(), "DesktopToWID", Q_RETURN_ARG(int, out0), Q_ARG(QString, desktop)); return out0; } QString DaemonAdaptor::WIDToDesktop(int id) { // handle method call org.ukui.panel.daemon.WIDToDesktop QString out0; QMetaObject::invokeMethod(parent(), "WIDToDesktop", Q_RETURN_ARG(QString, out0), Q_ARG(int, id)); return out0; } ukui-panel-4.0.0.4/panel-daemon/CMakeLists.txt0000644000175000017500000000420614560306203017450 0ustar fengfengcmake_minimum_required(VERSION 3.1.0) project(panel-daemon) #判断编译器类型,如果是gcc编译器,则在编译选项中加入c++11支持 if(CMAKE_COMPILER_IS_GNUCXX) set(CMAKE_CXX_FLAGS "-std=c++11 ${CMAKE_CXX_FLAGS}") message(STATUS "optional:-std=c++11") endif(CMAKE_COMPILER_IS_GNUCXX) set(CMAKE_INCLUDE_CURRENT_DIR ON) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) if(CMAKE_VERSION VERSION_LESS "3.7.0") set(CMAKE_INCLUDE_CURRENT_DIR ON) endif() find_package(Qt5 COMPONENTS Widgets Network REQUIRED) find_package(Qt5DBus REQUIRED) find_package(PkgConfig REQUIRED) find_package(KF5WindowSystem REQUIRED) pkg_check_modules(GLIB2 REQUIRED glib-2.0 gio-2.0) pkg_check_modules(QGS REQUIRED gsettings-qt) include_directories(${GLIB2_INCLUDE_DIRS}) include_directories(${QGS_INCLUDE_DIRS}) add_executable(panel-daemon jsonwathcer/jsonwacther.cpp jsonwathcer/jsonwacther.h filewatcher/filewatcher.cpp filewatcher/filewatcher.h convert-desktop-windowid/convertdesktoptowinid.cpp convert-desktop-windowid/convertdesktoptowinid.h pin-totaskbar/pintotaskbar.cpp pin-totaskbar/pintotaskbar.h pin-totaskbar/taskbar-dbus-adaptor.cpp pin-totaskbar/taskbar-dbus-adaptor.h dbus-server/server.cpp dbus-server/server.h dbus-server/dbus-adaptor.cpp dbus-server/dbus-adaptor.h datewather/datewatcher.cpp datewather/datewatcher.h watchermanager.cpp watchermanager.h main.cpp ) add_definitions(-DQT_MESSAGELOGCONTEXT) pkg_check_modules(KYSDKWAYLANDHELPER_PKG kysdk-waylandhelper) target_include_directories(${PROJECT_NAME} PRIVATE ${KYSDKWAYLANDHELPER_PKG_INCLUDE_DIRS}) target_link_directories(${PROJECT_NAME} PRIVATE ${KYSDKWAYLANDHELPER_PKG_LIBRARY_DIRS} KF5::WindowSystem) target_link_libraries(${PROJECT_NAME} ${KYSDKWAYLANDHELPER_PKG_LIBRARIES}) target_link_libraries(${PROJECT_NAME} Qt5::Widgets Qt5::DBus Qt5::Network ${GLIB2_LIBRARIES} ${QGS_LIBRARIES} KF5::WindowSystem ) install(TARGETS panel-daemon DESTINATION bin) install(FILES resources/ukui-panel-daemon.desktop DESTINATION "/etc/xdg/autostart/" COMPONENT Runtime ) ukui-panel-4.0.0.4/panel-daemon/filewatcher/0000755000175000017500000000000014560306203017203 5ustar fengfengukui-panel-4.0.0.4/panel-daemon/filewatcher/filewatcher.cpp0000644000175000017500000000723514560306203022213 0ustar fengfeng/* * Copyright (C) 2019 Tianjin KYLIN Information Technology Co., Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see #include #include #include #include #define APPLICATION_PATH "/usr/share/applications/" FileWatcher::FileWatcher() { m_fsWatcher=new QFileSystemWatcher(this); m_fsWatcher->addPath(APPLICATION_PATH); initDirMonitor(APPLICATION_PATH); connect(m_fsWatcher,&QFileSystemWatcher::directoryChanged,[this](){ directoryUpdated(APPLICATION_PATH); }); qDebug()<<"********************"; } void FileWatcher::initDirMonitor(QString path) { const QDir dir(path); m_currentContentsMap[path] = dir.entryList(QDir::NoDotAndDotDot | QDir::AllDirs | QDir::Files, QDir::DirsFirst); } //只要任何监控的目录更新(添加、删除、重命名),就会调用。 void FileWatcher::directoryUpdated(const QString &path) { qDebug()<<"********************** "< newDirSet = QSet::fromList(newEntryList); QSet currentDirSet = QSet::fromList(currEntryList); // 添加了文件 QSet newFiles = newDirSet - currentDirSet; QStringList newFile = newFiles.toList(); // 文件已被移除 QSet deletedFiles = currentDirSet - newDirSet; QStringList deleteFile = deletedFiles.toList(); // 更新当前设置 m_currentContentsMap[path] = newEntryList; if (!newFile.isEmpty() && !deleteFile.isEmpty()) { // 文件/目录重命名 if ((newFile.count() == 1) && (deleteFile.count() == 1)) { // qDebug() << QString("File Renamed from %1 to %2").arg(deleteFile.first()).arg(newFile.first()); } } else { // 添加新文件/目录至Dir if (!newFile.isEmpty()) { // foreach (QString file, newFile) // { // // 处理操作每个新文件.... // } } // 从Dir中删除文件/目录 if (!deleteFile.isEmpty()) { // qDebug()<<"***************"< args; args.append(path+deleteFile.at(0)); qDebug()< #include #include #include #include class FileWatcher : public QObject { Q_OBJECT public: FileWatcher(); QFileSystemWatcher *m_fsWatcher; void initDirMonitor(QString path); QMap m_currentContentsMap; // 当前每个监控的内容目录列表 void directoryUpdated(const QString &path); signals: void DesktopDeleteFile(const QString &path, QStringList deleteFile); }; #endif // FILEWACTHER_H ukui-panel-4.0.0.4/panel-daemon/jsonwathcer/0000755000175000017500000000000014560306203017235 5ustar fengfengukui-panel-4.0.0.4/panel-daemon/jsonwathcer/jsonwacther.cpp0000644000175000017500000000142014560306203022265 0ustar fengfeng/* * Copyright (C) 2019 Tianjin KYLIN Information Technology Co., Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see class JsonWacther { public: JsonWacther(); }; #endif // JSONWACTHER_H ukui-panel-4.0.0.4/panel-daemon/resources/0000755000175000017500000000000014560306203016720 5ustar fengfengukui-panel-4.0.0.4/panel-daemon/resources/ukui-panel-daemon.desktop0000644000175000017500000000033414560306203023626 0ustar fengfeng[Desktop Entry] Name=Panel Daemon Name[zh_CN]=任务栏后台服务 Comment=ukui panel daemon Exec=panel-daemon Type=Desktop OnlyShowIn=UKUI; NoDisplay=true; X-UKUI-AutoRestart=true X-UKUI-Autostart-Phase=Initialization ukui-panel-4.0.0.4/panel-daemon/datewather/0000755000175000017500000000000014560306203017036 5ustar fengfengukui-panel-4.0.0.4/panel-daemon/datewather/datewatcher.cpp0000644000175000017500000000146014560306203022036 0ustar fengfeng/* * Copyright (C) 2019 Tianjin KYLIN Information Technology Co., Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see class DateWatcher : public QObject { Q_OBJECT public: explicit DateWatcher(QObject *parent = nullptr); }; #endif // DATEWATCHER_H ukui-panel-4.0.0.4/panel-daemon/watchermanager.cpp0000644000175000017500000000410014560306203020375 0ustar fengfeng/* * Copyright (C) 2019 Tianjin KYLIN Information Technology Co., Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see WatcherManager::WatcherManager(QObject *parent) : QObject(parent) { register_dbus(); } WatcherManager::~WatcherManager() { delete m_taskbarDBus; } void WatcherManager::register_dbus() { Server* dbus=new Server; connect(dbus,&Server::DesktopFileDelete, this,[=](){ qDebug()<<"signal send success!"; }); new DaemonAdaptor(dbus); QDBusConnection con=QDBusConnection::sessionBus(); if(!con.registerService("org.ukui.panel.daemon")) { qDebug()<<"error1:"< int main(int argc, char *argv[]) { QApplication a(argc, argv); WatcherManager manager; return a.exec(); } ukui-panel-4.0.0.4/panel-daemon/pin-totaskbar/0000755000175000017500000000000014560306203017464 5ustar fengfengukui-panel-4.0.0.4/panel-daemon/pin-totaskbar/taskbar-dbus-adaptor.h0000644000175000017500000000333714560306203023655 0ustar fengfeng/* * This file was generated by qdbusxml2cpp version 0.8 * Command line was: qdbusxml2cpp org.ukui.panel.xml -i pintotaskbar.h -a taskbar-dbus-adaptor * * qdbusxml2cpp is Copyright (C) 2020 The Qt Company Ltd. * * This is an auto-generated file. * This file may have been hand-edited. Look for HAND-EDIT comments * before re-generating it. */ #ifndef TASKBAR-DBUS-ADAPTOR_H #define TASKBAR-DBUS-ADAPTOR_H #include #include #include "pintotaskbar.h" QT_BEGIN_NAMESPACE class QByteArray; template class QList; template class QMap; class QString; class QStringList; class QVariant; QT_END_NAMESPACE /* * Adaptor class for interface org.ukui.panel */ class PanelAdaptor: public QDBusAbstractAdaptor { Q_OBJECT Q_CLASSINFO("D-Bus Interface", "org.ukui.panel") Q_CLASSINFO("D-Bus Introspection", "" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" "") public: PanelAdaptor(QObject *parent); virtual ~PanelAdaptor(); public: // PROPERTIES public Q_SLOTS: // METHODS bool AddToTaskbar(const QString &desktop); bool CheckIfExist(const QString &desktop); bool RemoveFromTaskbar(const QString &desktop); Q_SIGNALS: // SIGNALS }; #endif ukui-panel-4.0.0.4/panel-daemon/pin-totaskbar/Readme.md0000644000175000017500000000202314560306203021200 0ustar fengfeng/* * Copyright (C) 2019 Tianjin KYLIN Information Technology Co., Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see ukui-panel-4.0.0.4/panel-daemon/pin-totaskbar/pintotaskbar.cpp0000644000175000017500000000442014560306203022671 0ustar fengfeng/* * Copyright (C) 2019 Tianjin KYLIN Information Technology Co., Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see PinToTaskbar::PinToTaskbar(QObject *parent) : QObject(parent) { } bool PinToTaskbar::AddToTaskbar(const QString &desktop) { QDBusMessage message = QDBusMessage::createSignal("/taskbar/quicklaunch", "org.ukui.panel.taskbar", "AddToTaskbar"); message << desktop; QDBusConnection::sessionBus().send(message); return true; } bool PinToTaskbar::RemoveFromTaskbar(const QString &desktop) { QDBusMessage message = QDBusMessage::createSignal("/taskbar/quicklaunch", "org.ukui.panel.taskbar", "RemoveFromTaskbar"); message << desktop; QDBusConnection::sessionBus().send(message); return true; } bool PinToTaskbar::CheckIfExist(const QString &desktop) { QString fixdDesktop; const auto apps = getTaskbarFixedList(); for (const QMap &app : apps) { fixdDesktop = app.value("desktop", "").toString(); if (fixdDesktop.contains(desktop)) { return true; } } return false; } QList > PinToTaskbar::getTaskbarFixedList() { QSettings settings(QDir::homePath() + "/.config/ukui/panel.conf", QSettings::IniFormat); QList > array; int size = settings.beginReadArray("/taskbar/apps"); for (int i = 0; i < size; ++i) { settings.setArrayIndex(i); QMap hash; const auto keys = settings.childKeys(); for (const QString &key : keys) { hash[key] = settings.value(key); } array << hash; } return array; } ukui-panel-4.0.0.4/panel-daemon/pin-totaskbar/dbus-adaptor.h0000644000175000017500000000330714560306203022225 0ustar fengfeng/* * This file was generated by qdbusxml2cpp version 0.8 * Command line was: qdbusxml2cpp org.ukui.panel.xml -i pintotaskbar.h -a dbus-adaptor * * qdbusxml2cpp is Copyright (C) 2020 The Qt Company Ltd. * * This is an auto-generated file. * This file may have been hand-edited. Look for HAND-EDIT comments * before re-generating it. */ #ifndef DBUS-ADAPTOR_H #define DBUS-ADAPTOR_H #include #include #include "pintotaskbar.h" QT_BEGIN_NAMESPACE class QByteArray; template class QList; template class QMap; class QString; class QStringList; class QVariant; QT_END_NAMESPACE /* * Adaptor class for interface org.ukui.panel */ class PanelAdaptor: public QDBusAbstractAdaptor { Q_OBJECT Q_CLASSINFO("D-Bus Interface", "org.ukui.panel") Q_CLASSINFO("D-Bus Introspection", "" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" "") public: PanelAdaptor(QObject *parent); virtual ~PanelAdaptor(); public: // PROPERTIES public Q_SLOTS: // METHODS bool AddToTaskbar(const QString &desktop); bool CheckIfExist(const QString &desktop); bool RemoceFromTaskbar(const QString &desktop); Q_SIGNALS: // SIGNALS }; #endif ukui-panel-4.0.0.4/panel-daemon/pin-totaskbar/dbus-adaptor.cpp0000644000175000017500000000300514560306203022553 0ustar fengfeng/* * This file was generated by qdbusxml2cpp version 0.8 * Command line was: qdbusxml2cpp org.ukui.panel.xml -i pintotaskbar.h -a dbus-adaptor * * qdbusxml2cpp is Copyright (C) 2020 The Qt Company Ltd. * * This is an auto-generated file. * Do not edit! All changes made to it will be lost. */ #include "dbus-adaptor.h" #include #include #include #include #include #include #include /* * Implementation of adaptor class PanelAdaptor */ PanelAdaptor::PanelAdaptor(QObject *parent) : QDBusAbstractAdaptor(parent) { // constructor setAutoRelaySignals(true); } PanelAdaptor::~PanelAdaptor() { // destructor } bool PanelAdaptor::AddToTaskbar(const QString &desktop) { // handle method call org.ukui.panel.AddToTaskbar bool out0; QMetaObject::invokeMethod(parent(), "AddToTaskbar", Q_RETURN_ARG(bool, out0), Q_ARG(QString, desktop)); return out0; } bool PanelAdaptor::CheckIfExist(const QString &desktop) { // handle method call org.ukui.panel.CheckIfExist bool out0; QMetaObject::invokeMethod(parent(), "CheckIfExist", Q_RETURN_ARG(bool, out0), Q_ARG(QString, desktop)); return out0; } bool PanelAdaptor::RemoceFromTaskbar(const QString &desktop) { // handle method call org.ukui.panel.RemoceFromTaskbar bool out0; QMetaObject::invokeMethod(parent(), "RemoceFromTaskbar", Q_RETURN_ARG(bool, out0), Q_ARG(QString, desktop)); return out0; } ukui-panel-4.0.0.4/panel-daemon/pin-totaskbar/pintotaskbar.h0000644000175000017500000000227414560306203022343 0ustar fengfeng/* * Copyright (C) 2019 Tianjin KYLIN Information Technology Co., Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see class PinToTaskbar : public QObject { Q_OBJECT Q_CLASSINFO("D-Bus Interface","com.ukui.panel.desktop") public: PinToTaskbar(QObject *parent = 0); public Q_SLOTS: bool AddToTaskbar(const QString &desktop); bool RemoveFromTaskbar(const QString &desktop); bool CheckIfExist(const QString &desktop); private: QList > getTaskbarFixedList(); }; #endif // PINTOTASKBAR_H ukui-panel-4.0.0.4/panel-daemon/pin-totaskbar/taskbar-dbus-adaptor.cpp0000644000175000017500000000302514560306203024202 0ustar fengfeng/* * This file was generated by qdbusxml2cpp version 0.8 * Command line was: qdbusxml2cpp org.ukui.panel.xml -i pintotaskbar.h -a taskbar-dbus-adaptor * * qdbusxml2cpp is Copyright (C) 2020 The Qt Company Ltd. * * This is an auto-generated file. * Do not edit! All changes made to it will be lost. */ #include "taskbar-dbus-adaptor.h" #include #include #include #include #include #include #include /* * Implementation of adaptor class PanelAdaptor */ PanelAdaptor::PanelAdaptor(QObject *parent) : QDBusAbstractAdaptor(parent) { // constructor setAutoRelaySignals(true); } PanelAdaptor::~PanelAdaptor() { // destructor } bool PanelAdaptor::AddToTaskbar(const QString &desktop) { // handle method call org.ukui.panel.AddToTaskbar bool out0; QMetaObject::invokeMethod(parent(), "AddToTaskbar", Q_RETURN_ARG(bool, out0), Q_ARG(QString, desktop)); return out0; } bool PanelAdaptor::CheckIfExist(const QString &desktop) { // handle method call org.ukui.panel.CheckIfExist bool out0; QMetaObject::invokeMethod(parent(), "CheckIfExist", Q_RETURN_ARG(bool, out0), Q_ARG(QString, desktop)); return out0; } bool PanelAdaptor::RemoveFromTaskbar(const QString &desktop) { // handle method call org.ukui.panel.RemoveFromTaskbar bool out0; QMetaObject::invokeMethod(parent(), "RemoveFromTaskbar", Q_RETURN_ARG(bool, out0), Q_ARG(QString, desktop)); return out0; } ukui-panel-4.0.0.4/panel-daemon/watchermanager.h0000644000175000017500000000232114560306203020045 0ustar fengfeng/* * Copyright (C) 2019 Tianjin KYLIN Information Technology Co., Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see #include "filewatcher/filewatcher.h" #include "dbus-server/server.h" #include "dbus-server/dbus-adaptor.h" #include "pin-totaskbar/pintotaskbar.h" #include "pin-totaskbar/taskbar-dbus-adaptor.h" class WatcherManager : public QObject { Q_OBJECT public: explicit WatcherManager(QObject *parent = nullptr); ~WatcherManager(); private: void register_dbus(); PinToTaskbar* m_taskbarDBus; }; #endif // WATCHERMANAGER_H ukui-panel-4.0.0.4/panel-daemon/convert-desktop-windowid/0000755000175000017500000000000014560306203021657 5ustar fengfengukui-panel-4.0.0.4/panel-daemon/convert-desktop-windowid/convertdesktoptowinid.h0000644000175000017500000000572114560306203026505 0ustar fengfeng/* * Copyright (C) 2019 Tianjin KYLIN Information Technology Co., Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see #include #include #define AUTOSTART_DEKSTOP_FILE_PATH "/etc/xdg/autostart/" #define DEKSTOP_FILE_PATH "/usr/share/applications/" #define USR_SHARE_APP_CURRENT "/usr/share/applications/." #define USR_SHARE_APP_UPER "/usr/share/applications/.." #define PEONY_TRASH "/usr/share/applications/peony-trash.desktop" #define PEONY_COMUTER "/usr/share/applications/peony-computer.desktop" #define PEONY_HOME "/usr/share/applications/peony-home.desktop" #define PEONY_MAIN "/usr/share/applications/peony.desktop" #define GET_DESKTOP_EXEC_NAME_MAIN "cat %s | awk '{if($1~\"Exec=\")if($2~\"\%\"){print $1} else print}' | cut -d '=' -f 2" #define GET_DESKTOP_NAME_MAIN "cat %s | awk '{if($1~\"Name=\")if($2~\"\%\"){print $1} else print}' | cut -d '=' -f 2" #define ANDROID_FILE_PATH "/.local/share/applications/" #define ANDROID_APP_CURRENT "/.local/share/applications/." #define ANDROID_APP_UPER "/.local/share/applications/.." /** * @brief The ConvertDesktopToWinId class * 需要实现的功能,desktop文件与windowId的转换 * 需要暴露的dbus接口: * 传入desktop文件的路径,转化为(int)WindowId * 传入WindowId 转化为desktop文件路径 */ class ConvertDesktopToWinId: public QObject { Q_OBJECT public: ConvertDesktopToWinId(); ~ConvertDesktopToWinId(); //QList InfoPidList; QString m_desktopfilePath = nullptr; QString m_className = nullptr; QString m_statusName = nullptr; QString m_cmdLine = nullptr; QDir *m_dir = nullptr; QDir *m_androidDir = nullptr; QFileInfoList m_list; QFileInfoList m_androidList; QString tranIdToDesktop(int winId); int getPidFromInfo(int winId); private: QString confirmDesktopFile(int id); void searchFromEnviron(int id); void searchAndroidApp(int id); void searchTXeduApp(WId id); void compareClassName(); void compareCmdExec(); void compareLastStrategy(); void compareCmdName(); void compareDesktopClass(); void containsName(); QString getDesktopFileName(QString cmd); int m_pid; }; #endif // CONVERTDESKTOPTOWINID_H ukui-panel-4.0.0.4/panel-daemon/convert-desktop-windowid/convertdesktoptowinid.cpp0000644000175000017500000002577114560306203027047 0ustar fengfeng/* * Copyright (C) 2019 Tianjin KYLIN Information Technology Co., Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see #include #include #include #include "kysdk/applications/windowmanager/windowmanager.h" ConvertDesktopToWinId::ConvertDesktopToWinId() { //connect(KWindowSystem::self(), &KWindowSystem::windowAdded, this, &ConvertDesktopToWinId::tranIdToDesktop); } QString ConvertDesktopToWinId::tranIdToDesktop(int winId) { QString desktopName = confirmDesktopFile(winId); qDebug() << "desktopName is :" << desktopName; return desktopName; } int ConvertDesktopToWinId::getPidFromInfo(int winId) { //x环境下输入wid转成pid, wayland下windowId转pid KWindowInfo info(winId, NET::WMPid); if (info.valid(/* withdrawn_is_valid = */ true)) { m_pid = info.pid(); } else { m_pid = kdk::WindowManager::getPid(winId); } return m_pid; } QString ConvertDesktopToWinId::confirmDesktopFile(int id) { m_pid = getPidFromInfo(id); if (m_pid == 0) { return {}; } m_desktopfilePath = ""; QDir infoDir(DEKSTOP_FILE_PATH); m_list = infoDir.entryInfoList(); //跳过 ./ 和 ../ 目录 m_list.removeAll(QFile(USR_SHARE_APP_CURRENT)); m_list.removeAll(QFile(USR_SHARE_APP_UPER)); //加入自启动目录下的desktop文件,优先使用/usr/share/applications/下的desktop QDir dir(AUTOSTART_DEKSTOP_FILE_PATH); QFileInfoList autostartList = dir.entryInfoList(); m_list.append(autostartList); //第一种方法:比较名字一致性 if (m_desktopfilePath.isEmpty()) { m_className = kdk::WindowManager::getWindowGroup(id); //匹配安卓兼容 if (m_className == "kylin-kmre-window") { searchAndroidApp(id); return m_desktopfilePath; } //匹配Inter端腾讯教育 if (m_className == "txeduplatform") { searchTXeduApp(id); return m_desktopfilePath; } QFile file(QString("/proc/%1/status").arg(m_pid)); if (file.open(QIODevice::ReadOnly)) { char buf[1024]; qint64 len=file.readLine(buf,sizeof(buf)); if (len!=-1) { m_statusName = QString::fromLocal8Bit(buf).remove("Name:").remove("\t").remove("\n"); } } compareClassName(); } //第二种方法:获取点击应用时大部分desktop文件名 if (m_desktopfilePath.isEmpty()) { searchFromEnviron(id); } //第三种方法:比较cmd命令行操作一致性 if (m_desktopfilePath.isEmpty()) { QFile file(QString("/proc/%1/cmdline").arg(m_pid)); if (file.open(QIODevice::ReadOnly)) { char buf[1024]; qint64 len=file.readLine(buf,sizeof(buf)); if (len!=-1) { m_cmdLine = QString::fromLocal8Bit(buf).remove("\n"); } } compareCmdExec(); } //第四种方法:匹配部分字段 if (m_desktopfilePath.isEmpty()) { compareLastStrategy(); } return m_desktopfilePath; } void ConvertDesktopToWinId::searchAndroidApp(int id) { QDir androidDir(QString(QDir::homePath() + ANDROID_FILE_PATH)); m_androidList = androidDir.entryInfoList(); m_androidList.removeAll(QDir::homePath() + ANDROID_APP_CURRENT); m_androidList.removeAll(QDir::homePath() + ANDROID_APP_UPER); QFile file(QString("/proc/%1/cmdline").arg(m_pid)); file.open(QIODevice::ReadOnly); QByteArray cmd = file.readAll(); file.close(); QList cmdList = cmd.split('\0'); for(int i = 0; i < m_androidList.size(); i++){ QFileInfo fileInfo = m_androidList.at(i); QString desktopName = fileInfo.filePath(); if(!fileInfo.filePath().endsWith(".desktop")){ continue; } desktopName = desktopName.mid(desktopName.lastIndexOf("/") + 1); desktopName = desktopName.left(desktopName.lastIndexOf(".")); if(desktopName == cmdList.at(10)){ m_desktopfilePath = fileInfo.filePath(); break; } } } void ConvertDesktopToWinId::searchTXeduApp(WId id) { KWindowInfo info(id, NET::WMAllProperties); QString name = info.name(); for (int i = 0; i < m_list.size(); i++) { QString cmd; QFileInfo fileInfo = m_list.at(i); if (!fileInfo.filePath().endsWith(".desktop")) { continue; } cmd.sprintf(GET_DESKTOP_NAME_MAIN, fileInfo.filePath().toStdString().data()); QString desktopName = getDesktopFileName(cmd).remove("\n"); if (desktopName == name) { m_desktopfilePath = fileInfo.filePath(); break; } } } void ConvertDesktopToWinId::searchFromEnviron(int id) { QFile file("/proc/" + QString::number(m_pid) + "/environ"); file.open(QIODevice::ReadOnly); QByteArray BA = file.readAll(); file.close(); QList list_BA = BA.split('\0'); for (int i = 0; i < list_BA.length(); i++) { if (list_BA.at(i).startsWith("GIO_LAUNCHED_DESKTOP_FILE=")) { m_desktopfilePath = list_BA.at(i); m_desktopfilePath = m_desktopfilePath.mid(m_desktopfilePath.indexOf("=") + 1); //desktop文件地址需要重写 m_desktopfilePath = m_desktopfilePath.mid(m_desktopfilePath.lastIndexOf("/") + 1); break; } } //desktop文件地址重写 if (!m_desktopfilePath.isEmpty()) { for (int i = 0; i < m_list.size(); i++) { QFileInfo fileInfo = m_list.at(i);; if (fileInfo.filePath() == DEKSTOP_FILE_PATH + m_desktopfilePath) { m_desktopfilePath = fileInfo.filePath(); break; } } } } void ConvertDesktopToWinId::compareClassName() { for (int i = 0; i < m_list.size(); i++) { QFileInfo fileInfo = m_list.at(i);; QString path_desktop_name = fileInfo.filePath(); if (!fileInfo.filePath().endsWith(".desktop")) { continue; } path_desktop_name = path_desktop_name.mid(path_desktop_name.lastIndexOf("/") + 1); path_desktop_name = path_desktop_name.left(path_desktop_name.lastIndexOf(".")); if (path_desktop_name == m_className || path_desktop_name == m_statusName) { m_desktopfilePath = fileInfo.filePath(); break; } } } void ConvertDesktopToWinId::compareCmdExec() { for (int i = 0; i < m_list.size(); i++) { QString cmd; QFileInfo fileInfo = m_list.at(i); if (!fileInfo.filePath().endsWith(".desktop")) { continue; } cmd.sprintf(GET_DESKTOP_EXEC_NAME_MAIN, fileInfo.filePath().toStdString().data()); QString desktopFileExeName = getDesktopFileName(cmd).remove("\n"); if (desktopFileExeName.isEmpty()) { continue; } if (desktopFileExeName == m_cmdLine || desktopFileExeName.startsWith(m_cmdLine) || m_cmdLine.startsWith(desktopFileExeName)) { m_desktopfilePath = fileInfo.filePath(); break; } //仅仅是为了适配微信 if (m_desktopfilePath.isEmpty()) { desktopFileExeName = "/usr/lib/" + desktopFileExeName; if (desktopFileExeName == m_cmdLine || desktopFileExeName.startsWith(m_cmdLine) || m_cmdLine.startsWith(desktopFileExeName)) { m_desktopfilePath = fileInfo.filePath(); } } } } //最后的匹配策略汇总 void ConvertDesktopToWinId::compareLastStrategy() { compareCmdName(); if (m_desktopfilePath.isEmpty()) { compareDesktopClass(); } if (m_desktopfilePath.isEmpty()) { containsName(); } } void ConvertDesktopToWinId::compareCmdName() { for (int i = 0; i < m_list.size(); i++) { QString cmd; QFileInfo fileInfo = m_list.at(i); if (!fileInfo.filePath().endsWith(".desktop")) { continue; } cmd.sprintf(GET_DESKTOP_EXEC_NAME_MAIN, fileInfo.filePath().toStdString().data()); QString desktopFileExeName = getDesktopFileName(cmd).remove("\n"); if (desktopFileExeName.isEmpty()) { continue; } if (desktopFileExeName.startsWith(m_className) || desktopFileExeName.endsWith(m_className)) { m_desktopfilePath = fileInfo.filePath(); break; } } } void ConvertDesktopToWinId::compareDesktopClass() { for (int i = 0; i < m_list.size(); i++) { QFileInfo fileInfo = m_list.at(i); QString path_desktop_name = fileInfo.filePath(); if (!fileInfo.filePath().endsWith(".desktop")) { continue; } path_desktop_name = path_desktop_name.mid(path_desktop_name.lastIndexOf("/") + 1); path_desktop_name = path_desktop_name.left(path_desktop_name.lastIndexOf(".")); if (path_desktop_name.startsWith(m_className) || path_desktop_name.endsWith(m_className)) { m_desktopfilePath = fileInfo.filePath(); break; } else if (m_className.startsWith(path_desktop_name) || m_className.endsWith(path_desktop_name)) { m_desktopfilePath = fileInfo.filePath(); break; } } } void ConvertDesktopToWinId::containsName() { for (int i = 0; i < m_list.size(); i++) { QString cmd; QFileInfo fileInfo = m_list.at(i); QString path_desktop_name = fileInfo.filePath(); if (!fileInfo.filePath().endsWith(".desktop")) { continue; } cmd.sprintf(GET_DESKTOP_EXEC_NAME_MAIN, fileInfo.filePath().toStdString().data()); QString desktopFileExeName = getDesktopFileName(cmd).remove("\n"); path_desktop_name = path_desktop_name.mid(path_desktop_name.lastIndexOf("/") + 1); path_desktop_name = path_desktop_name.left(path_desktop_name.lastIndexOf(".")); if (path_desktop_name.contains(m_className) || desktopFileExeName.contains(m_className)) { m_desktopfilePath = fileInfo.filePath(); break; } } } //执行头文件中宏定义写好的终端指令获取对应的Exec字段 QString ConvertDesktopToWinId::getDesktopFileName(QString cmd) { char name[200]; FILE *fp1 = NULL; if ((fp1 = popen(cmd.toStdString().data(), "r")) == NULL) return QString(); memset(name, 0, sizeof(name)); fgets(name, sizeof(name), fp1); pclose(fp1); return QString(name); } ConvertDesktopToWinId::~ConvertDesktopToWinId() { } ukui-panel-4.0.0.4/plugin-spacer/0000755000175000017500000000000014560306221015117 5ustar fengfengukui-panel-4.0.0.4/plugin-spacer/spacer.h0000644000175000017500000000465014560306221016552 0ustar fengfeng/* BEGIN_COMMON_COPYRIGHT_HEADER * (c)LGPL2+ * * Copyright: 2015 LXQt team * Authors: * * Copyright: 2019 Tianjin KYLIN Information Technology Co., Ltd. * * * This program or library is free software; you can redistribute it * and/or modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * You should have received a copy of the GNU Lesser General * Public License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA * * END_COMMON_COPYRIGHT_HEADER */ #ifndef SPACER_H #define SPACER_H #include "../panel/iukuipanelplugin.h" #include class SpacerWidget : public QFrame { Q_OBJECT Q_PROPERTY(QString type READ getType) Q_PROPERTY(QString orientation READ getOrientation) public: const QString& getType() const throw () { return mType; } void setType(QString const & type); const QString& getOrientation() const throw () { return mOrientation; } void setOrientation(QString const & orientation); private: QString mType; QString mOrientation; }; class Spacer : public QObject, public IUKUIPanelPlugin { Q_OBJECT public: Spacer(const IUKUIPanelPluginStartupInfo &startupInfo); virtual QWidget *widget() override { return &mSpacer; } virtual QString themeId() const override { return QStringLiteral("Spacer"); } bool isSeparate() const override { return true; } bool isExpandable() const override { return mExpandable; } virtual IUKUIPanelPlugin::Flags flags() const override { return HaveConfigDialog; } virtual void realign() override; private: void setSizes(); private: SpacerWidget mSpacer; int mSize; bool mExpandable; }; class SpacerPluginLibrary: public QObject, public IUKUIPanelPluginLibrary { Q_OBJECT // Q_PLUGIN_METADATA(IID "lxqt.org/Panel/PluginInterface/3.0") Q_INTERFACES(IUKUIPanelPluginLibrary) public: IUKUIPanelPlugin *instance(const IUKUIPanelPluginStartupInfo &startupInfo) const { return new Spacer(startupInfo);} }; #endif ukui-panel-4.0.0.4/plugin-spacer/spacer.cpp0000644000175000017500000000546514560306203017112 0ustar fengfeng/* BEGIN_COMMON_COPYRIGHT_HEADER * (c)LGPL2+ * * Copyright: 2015 LXQt team * Authors: * * Copyright: 2019 Tianjin KYLIN Information Technology Co., Ltd. * * * This program or library is free software; you can redistribute it * and/or modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * You should have received a copy of the GNU Lesser General * Public License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA * * END_COMMON_COPYRIGHT_HEADER */ #include "spacer.h" #include void SpacerWidget::setType(QString const & type) { if (type != mType) { mType = type; QEvent e{QEvent::ThemeChange}; QApplication::sendEvent(this, &e); } } void SpacerWidget::setOrientation(QString const & orientation) { if (orientation != mOrientation) { mOrientation = orientation; QEvent e{QEvent::ThemeChange}; QApplication::sendEvent(this, &e); } } /************************************************ ************************************************/ Spacer::Spacer(const IUKUIPanelPluginStartupInfo &startupInfo) : QObject() , IUKUIPanelPlugin(startupInfo) , mSize(8) , mExpandable(false) { } void Spacer::setSizes() { if (mExpandable) { mSpacer.setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); mSpacer.setMinimumSize({1, 1}); mSpacer.setMaximumSize({QWIDGETSIZE_MAX, QWIDGETSIZE_MAX}); mSpacer.setOrientation(panel()->isHorizontal() ? QStringLiteral("horizontal") : QStringLiteral("vertical")); } else { if (panel()->isHorizontal()) { mSpacer.setOrientation(QStringLiteral("horizontal")); mSpacer.setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Expanding); mSpacer.setFixedWidth(mSize); mSpacer.setMinimumHeight(0); mSpacer.setMaximumHeight(QWIDGETSIZE_MAX); } else { mSpacer.setOrientation(QStringLiteral("vertical")); mSpacer.setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); mSpacer.setFixedHeight(mSize); mSpacer.setMinimumWidth(0); mSpacer.setMaximumWidth(QWIDGETSIZE_MAX); } } } /************************************************ ************************************************/ void Spacer::realign() { setSizes(); } ukui-panel-4.0.0.4/plugin-spacer/CMakeLists.txt0000644000175000017500000000015614560306203017661 0ustar fengfengset(PLUGIN "spacer") set(HEADERS spacer.h ) set(SOURCES spacer.cpp ) BUILD_UKUI_PLUGIN(${PLUGIN}) ukui-panel-4.0.0.4/plugin-spacer/resources/0000755000175000017500000000000014560306203017131 5ustar fengfengukui-panel-4.0.0.4/plugin-spacer/resources/spacer.desktop.in0000644000175000017500000000023214560306203022403 0ustar fengfeng[Desktop Entry] Type=Service ServiceTypes=UKUIPanel/Plugin Name=Spacer Comment=Space between widgets Icon=bookmark-new #TRANSLATIONS_DIR=../translations ukui-panel-4.0.0.4/cmake/0000755000175000017500000000000014560306221013426 5ustar fengfengukui-panel-4.0.0.4/cmake/UkuiPluginTranslationTs.cmake0000644000175000017500000000605214560306221021255 0ustar fengfengmacro(ukui_plugin_translate_ts PLUGIN) set(TS_FILES ${CMAKE_CURRENT_SOURCE_DIR}/translation/${PLUGIN}_zh_CN.ts) set(BO_TS_FILES ${CMAKE_CURRENT_SOURCE_DIR}/translation/${PLUGIN}_bo_CN.ts) set(B_QM_FILES ${CMAKE_CURRENT_BINARY_DIR}/translation/) if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/translation/) else() execute_process( COMMAND mkdir ${CMAKE_CURRENT_SOURCE_DIR}/translation/ ) endif() if(EXISTS ${TS_FILES}) message(STATUS "${TS_FILES} is EXISTS") execute_process( COMMAND lupdate -recursive ${CMAKE_CURRENT_SOURCE_DIR} -target-language zh_CN -ts ${TS_FILES} ) execute_process( COMMAND lrelease ${TS_FILES} ) else() execute_process( COMMAND lupdate -recursive ${CMAKE_CURRENT_SOURCE_DIR} -target-language zh_CN -ts ${TS_FILES} ) execute_process( COMMAND lrelease ${TS_FILES} ) endif() if(EXISTS ${BO_TS_FILES}) message(STATUS "${BO_TS_FILES} is EXISTS") execute_process( COMMAND lupdate -recursive ${CMAKE_CURRENT_SOURCE_DIR} -target-language bo_CN -ts ${BO_TS_FILES} ) execute_process( COMMAND lrelease ${BO_TS_FILES} ) else() execute_process( COMMAND lupdate -recursive ${CMAKE_CURRENT_SOURCE_DIR} -target-language bo_CN -ts ${BO_TS_FILES} ) execute_process( COMMAND lrelease ${BO_TS_FILES} ) endif() if(EXISTS ${B_QM_FILES}) message(STATUS "${PLUGIN} buildQM dir is EXISTS") else() message(STATUS "${PLUGIN} buildQM dir is not EXISTS") execute_process( COMMAND mkdir ${B_QM_FILES} ) message(STATUS "${PLUGIN} buildQM dir is created") endif() set(P_QM_FILES ${CMAKE_CURRENT_SOURCE_DIR}/translation/${PLUGIN}_zh_CN.qm) set(BO_QM_FILES ${CMAKE_CURRENT_SOURCE_DIR}/translation/${PLUGIN}_bo_CN.qm) if(EXISTS ${P_QM_FILES}) message(STATUS "${PLUGIN} proQM file is EXISTS") execute_process( COMMAND cp -f ${P_QM_FILES} ${B_QM_FILES} ) execute_process( COMMAND rm -f ${P_QM_FILES} ) message(STATUS "${PLUGIN} buildQM file is created") else() message(STATUS "${PLUGIN} buildQM file is not EXISTS") endif() if(EXISTS ${BO_QM_FILES}) message(STATUS "${PLUGIN} proQM file is EXISTS") execute_process( COMMAND cp -f ${BO_QM_FILES} ${B_QM_FILES} ) execute_process( COMMAND rm -f ${BO_QM_FILES} ) message(STATUS "${PLUGIN} buildQM file is created") else() message(STATUS "${PLUGIN} buildQM file is not EXISTS") endif() if(${PLUGIN} STREQUAL "panel") set(P_QM_INSTALL ${PACKAGE_DATA_DIR}/${PLUGIN}/translation) message(STATUS " panel translation install : ${P_QM_INSTALL}") else() set(P_QM_INSTALL ${PACKAGE_DATA_DIR}/plugin-${PLUGIN}/translation) message(STATUS " plugin ${PLUGIN} translation install : ${P_QM_INSTALL}") endif() install(DIRECTORY ${B_QM_FILES} DESTINATION ${P_QM_INSTALL}) ADD_DEFINITIONS(-DQM_INSTALL=\"${P_QM_INSTALL}/${PLUGIN}_zh_CN.qm\") ADD_DEFINITIONS(-DBO_QM_INSTALL=\"${P_QM_INSTALL}/${PLUGIN}_bo_CN.qm\") ADD_DEFINITIONS(-DPLUGINNAME=\"${PLUGIN}\") endmacro() ukui-panel-4.0.0.4/cmake/ukui-build-tools/0000755000175000017500000000000014560306203016636 5ustar fengfengukui-panel-4.0.0.4/cmake/ukui-build-tools/modules/0000755000175000017500000000000014560306203020306 5ustar fengfengukui-panel-4.0.0.4/cmake/ukui-build-tools/modules/Qt5TranslationLoader.cpp.in0000644000175000017500000000213114560306203025433 0ustar fengfeng/* This file has been generated by the CMake qt_translation_loader(). * It loads Qt application translations. * * Attention: All changes will be overwritten!!! */ #include #include #include #include #include static void loadQtTranslation() { QString locale = QLocale::system().name(); QTranslator *qtTranslator = new QTranslator(qApp); if (qtTranslator->load(QLatin1String("qt_") + locale, QLibraryInfo::location(QLibraryInfo::TranslationsPath))) { qApp->installTranslator(qtTranslator); } else { delete qtTranslator; } QTranslator *appTranslator = new QTranslator(qApp); if (appTranslator->load(QString::fromLocal8Bit("@translations_dir@/@catalog_name@_%1.qm").arg(locale))) { QCoreApplication::installTranslator(appTranslator); } else if (locale == QLatin1String("C") || locale.startsWith(QLatin1String("en"))) { // English is the default. It's translated anyway. delete appTranslator; } } Q_COREAPP_STARTUP_FUNCTION(loadQtTranslation) ukui-panel-4.0.0.4/cmake/ukui-build-tools/modules/ECMFindModuleHelpers.cmake0000644000175000017500000003237014560306203025213 0ustar fengfeng#.rst: # ECMFindModuleHelpers # -------------------- # # Helper macros for find modules: ecm_find_package_version_check(), # ecm_find_package_parse_components() and # ecm_find_package_handle_library_components(). # # :: # # ecm_find_package_version_check() # # Prints warnings if the CMake version or the project's required CMake version # is older than that required by extra-cmake-modules. # # :: # # ecm_find_package_parse_components( # RESULT_VAR # KNOWN_COMPONENTS [ [...]] # [SKIP_DEPENDENCY_HANDLING]) # # This macro will populate with a list of components found in # _FIND_COMPONENTS, after checking that all those components are in the # list of KNOWN_COMPONENTS; if there are any unknown components, it will print # an error or warning (depending on the value of _FIND_REQUIRED) and call # return(). # # The order of components in is guaranteed to match the order they # are listed in the KNOWN_COMPONENTS argument. # # If SKIP_DEPENDENCY_HANDLING is not set, for each component the variable # __component_deps will be checked for dependent components. # If is listed in _FIND_COMPONENTS, then all its (transitive) # dependencies will also be added to . # # :: # # ecm_find_package_handle_library_components( # COMPONENTS [ [...]] # [SKIP_DEPENDENCY_HANDLING]) # [SKIP_PKG_CONFIG]) # # Creates an imported library target for each component. The operation of this # macro depends on the presence of a number of CMake variables. # # The __lib variable should contain the name of this library, # and __header variable should contain the name of a header # file associated with it (whatever relative path is normally passed to # '#include'). __header_subdir variable can be used to specify # which subdirectory of the include path the headers will be found in. # ecm_find_package_components() will then search for the library # and include directory (creating appropriate cache variables) and create an # imported library target named ::. # # Additional variables can be used to provide additional information: # # If SKIP_PKG_CONFIG, the __pkg_config variable is set, and # pkg-config is found, the pkg-config module given by # __pkg_config will be searched for and used to help locate the # library and header file. It will also be used to set # __VERSION. # # Note that if version information is found via pkg-config, # __FIND_VERSION can be set to require a particular version # for each component. # # If SKIP_DEPENDENCY_HANDLING is not set, the INTERFACE_LINK_LIBRARIES property # of the imported target for will be set to contain the imported # targets for the components listed in __component_deps. # _FOUND will also be set to false if any of the compoments in # __component_deps are not found. This requires the components # in __component_deps to be listed before in the # COMPONENTS argument. # # The following variables will be set: # # ``_TARGETS`` # the imported targets # ``_LIBRARIES`` # the found libraries # ``_INCLUDE_DIRS`` # the combined required include directories for the components # ``_DEFINITIONS`` # the "other" CFLAGS provided by pkg-config, if any # ``_VERSION`` # the value of ``__VERSION`` for the first component that # has this variable set (note that components are searched for in the order # they are passed to the macro), although if it is already set, it will not # be altered # # Note that these variables are never cleared, so if # ecm_find_package_handle_library_components() is called multiple times with # different components (typically because of multiple find_package() calls) then # ``_TARGETS``, for example, will contain all the targets found in any # call (although no duplicates). # # Since pre-1.0.0. #============================================================================= # Copyright 2014 Alex Merry # Copyright (c) 2019 Tianjin KYLIN Information Technology Co., Ltd. * # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # 3. The name of the author may not be used to endorse or promote products # derived from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. # IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT # NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. include(CMakeParseArguments) macro(ecm_find_package_version_check module_name) if(CMAKE_VERSION VERSION_LESS 3.1.0) message(FATAL_ERROR "CMake 3.1.0 is required by ukui-build-tools!") endif() if(CMAKE_MINIMUM_REQUIRED_VERSION VERSION_LESS 3.1.0) message(AUTHOR_WARNING "Your project should require at least CMake 3.1.0!") endif() endmacro() macro(ecm_find_package_parse_components module_name) set(ecm_fppc_options SKIP_DEPENDENCY_HANDLING) set(ecm_fppc_oneValueArgs RESULT_VAR) set(ecm_fppc_multiValueArgs KNOWN_COMPONENTS DEFAULT_COMPONENTS) cmake_parse_arguments(ECM_FPPC "${ecm_fppc_options}" "${ecm_fppc_oneValueArgs}" "${ecm_fppc_multiValueArgs}" ${ARGN}) if(ECM_FPPC_UNPARSED_ARGUMENTS) message(FATAL_ERROR "Unexpected arguments to ecm_find_package_parse_components: ${ECM_FPPC_UNPARSED_ARGUMENTS}") endif() if(NOT ECM_FPPC_RESULT_VAR) message(FATAL_ERROR "Missing RESULT_VAR argument to ecm_find_package_parse_components") endif() if(NOT ECM_FPPC_KNOWN_COMPONENTS) message(FATAL_ERROR "Missing KNOWN_COMPONENTS argument to ecm_find_package_parse_components") endif() if(NOT ECM_FPPC_DEFAULT_COMPONENTS) set(ECM_FPPC_DEFAULT_COMPONENTS ${ECM_FPPC_KNOWN_COMPONENTS}) endif() if(${module_name}_FIND_COMPONENTS) set(ecm_fppc_requestedComps ${${module_name}_FIND_COMPONENTS}) if(NOT ECM_FPPC_SKIP_DEPENDENCY_HANDLING) # Make sure deps are included foreach(ecm_fppc_comp ${ecm_fppc_requestedComps}) foreach(ecm_fppc_dep_comp ${${module_name}_${ecm_fppc_comp}_component_deps}) list(FIND ecm_fppc_requestedComps "${ecm_fppc_dep_comp}" ecm_fppc_index) if("${ecm_fppc_index}" STREQUAL "-1") if(NOT ${module_name}_FIND_QUIETLY) message(STATUS "${module_name}: ${ecm_fppc_comp} requires ${${module_name}_${ecm_fppc_comp}_component_deps}") endif() list(APPEND ecm_fppc_requestedComps "${ecm_fppc_dep_comp}") endif() endforeach() endforeach() else() message(STATUS "Skipping dependency handling for ${module_name}") endif() list(REMOVE_DUPLICATES ecm_fppc_requestedComps) # This makes sure components are listed in the same order as # KNOWN_COMPONENTS (potentially important for inter-dependencies) set(${ECM_FPPC_RESULT_VAR}) foreach(ecm_fppc_comp ${ECM_FPPC_KNOWN_COMPONENTS}) list(FIND ecm_fppc_requestedComps "${ecm_fppc_comp}" ecm_fppc_index) if(NOT "${ecm_fppc_index}" STREQUAL "-1") list(APPEND ${ECM_FPPC_RESULT_VAR} "${ecm_fppc_comp}") list(REMOVE_AT ecm_fppc_requestedComps ${ecm_fppc_index}) endif() endforeach() # if there are any left, they are unknown components if(ecm_fppc_requestedComps) set(ecm_fppc_msgType STATUS) if(${module_name}_FIND_REQUIRED) set(ecm_fppc_msgType FATAL_ERROR) endif() if(NOT ${module_name}_FIND_QUIETLY) message(${ecm_fppc_msgType} "${module_name}: requested unknown components ${ecm_fppc_requestedComps}") endif() return() endif() else() set(${ECM_FPPC_RESULT_VAR} ${ECM_FPPC_DEFAULT_COMPONENTS}) endif() endmacro() macro(ecm_find_package_handle_library_components module_name) set(ecm_fpwc_options SKIP_PKG_CONFIG SKIP_DEPENDENCY_HANDLING) set(ecm_fpwc_oneValueArgs) set(ecm_fpwc_multiValueArgs COMPONENTS) cmake_parse_arguments(ECM_FPWC "${ecm_fpwc_options}" "${ecm_fpwc_oneValueArgs}" "${ecm_fpwc_multiValueArgs}" ${ARGN}) if(ECM_FPWC_UNPARSED_ARGUMENTS) message(FATAL_ERROR "Unexpected arguments to ecm_find_package_handle_components: ${ECM_FPWC_UNPARSED_ARGUMENTS}") endif() if(NOT ECM_FPWC_COMPONENTS) message(FATAL_ERROR "Missing COMPONENTS argument to ecm_find_package_handle_components") endif() include(FindPackageHandleStandardArgs) find_package(PkgConfig) foreach(ecm_fpwc_comp ${ECM_FPWC_COMPONENTS}) set(ecm_fpwc_dep_vars) set(ecm_fpwc_dep_targets) if(NOT SKIP_DEPENDENCY_HANDLING) foreach(ecm_fpwc_dep ${${module_name}_${ecm_fpwc_comp}_component_deps}) list(APPEND ecm_fpwc_dep_vars "${module_name}_${ecm_fpwc_dep}_FOUND") list(APPEND ecm_fpwc_dep_targets "${module_name}::${ecm_fpwc_dep}") endforeach() endif() if(NOT ECM_FPWC_SKIP_PKG_CONFIG AND ${module_name}_${ecm_fpwc_comp}_pkg_config) pkg_check_modules(PKG_${module_name}_${ecm_fpwc_comp} ${${module_name}_${ecm_fpwc_comp}_pkg_config}) endif() find_path(${module_name}_${ecm_fpwc_comp}_INCLUDE_DIR NAMES ${${module_name}_${ecm_fpwc_comp}_header} HINTS ${PKG_${module_name}_${ecm_fpwc_comp}_INCLUDE_DIRS} PATH_SUFFIXES ${${module_name}_${ecm_fpwc_comp}_header_subdir} ) find_library(${module_name}_${ecm_fpwc_comp}_LIBRARY NAMES ${${module_name}_${ecm_fpwc_comp}_lib} HINTS ${PKG_${module_name}_${ecm_fpwc_comp}_LIBRARY_DIRS} ) set(${module_name}_${ecm_fpwc_comp}_VERSION "${PKG_${module_name}_${ecm_fpwc_comp}_VERSION}") if(NOT ${module_name}_VERSION) set(${module_name}_VERSION ${${module_name}_${ecm_fpwc_comp}_VERSION}) endif() find_package_handle_standard_args(${module_name}_${ecm_fpwc_comp} FOUND_VAR ${module_name}_${ecm_fpwc_comp}_FOUND REQUIRED_VARS ${module_name}_${ecm_fpwc_comp}_LIBRARY ${module_name}_${ecm_fpwc_comp}_INCLUDE_DIR ${ecm_fpwc_dep_vars} VERSION_VAR ${module_name}_${ecm_fpwc_comp}_VERSION ) mark_as_advanced( ${module_name}_${ecm_fpwc_comp}_LIBRARY ${module_name}_${ecm_fpwc_comp}_INCLUDE_DIR ) if(${module_name}_${ecm_fpwc_comp}_FOUND) list(APPEND ${module_name}_LIBRARIES "${${module_name}_${ecm_fpwc_comp}_LIBRARY}") list(APPEND ${module_name}_INCLUDE_DIRS "${${module_name}_${ecm_fpwc_comp}_INCLUDE_DIR}") set(${module_name}_DEFINITIONS ${${module_name}_DEFINITIONS} ${PKG_${module_name}_${ecm_fpwc_comp}_DEFINITIONS}) if(NOT TARGET ${module_name}::${ecm_fpwc_comp}) add_library(${module_name}::${ecm_fpwc_comp} UNKNOWN IMPORTED) set_target_properties(${module_name}::${ecm_fpwc_comp} PROPERTIES IMPORTED_LOCATION "${${module_name}_${ecm_fpwc_comp}_LIBRARY}" INTERFACE_COMPILE_OPTIONS "${PKG_${module_name}_${ecm_fpwc_comp}_DEFINITIONS}" INTERFACE_INCLUDE_DIRECTORIES "${${module_name}_${ecm_fpwc_comp}_INCLUDE_DIR}" INTERFACE_LINK_LIBRARIES "${ecm_fpwc_dep_targets}" ) endif() list(APPEND ${module_name}_TARGETS "${module_name}::${ecm_fpwc_comp}") endif() endforeach() if(${module_name}_LIBRARIES) list(REMOVE_DUPLICATES ${module_name}_LIBRARIES) endif() if(${module_name}_INCLUDE_DIRS) list(REMOVE_DUPLICATES ${module_name}_INCLUDE_DIRS) endif() if(${module_name}_DEFINITIONS) list(REMOVE_DUPLICATES ${module_name}_DEFINITIONS) endif() if(${module_name}_TARGETS) list(REMOVE_DUPLICATES ${module_name}_TARGETS) endif() endmacro() ukui-panel-4.0.0.4/cmake/ukui-build-tools/modules/Qt5TranslationLoader.cmake0000644000175000017500000000464614560306203025341 0ustar fengfeng#============================================================================= # Copyright 2014 Luís Pereira # Copyright (c) 2019 Tianjin KYLIN Information Technology Co., Ltd. * # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # 3. The name of the author may not be used to endorse or promote products # derived from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. # IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT # NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #============================================================================= # # These functions enables "automatic" translation loading in Qt5 apps # and libs. They generate a .cpp file that takes care of everything. The # user doesn't have to do anything in the source code. # # qt5_translation_loader( ) # # Output: # Appends the generated file to this variable. # # Input: # Full path name to the translations dir. # Translation catalog to be loaded. function(qt5_translation_loader source_files translations_dir catalog_name) configure_file( ${UKUI_CMAKE_MODULES_DIR}/Qt5TranslationLoader.cpp.in Qt5TranslationLoader.cpp @ONLY ) set(${source_files} ${${source_files}} ${CMAKE_CURRENT_BINARY_DIR}/Qt5TranslationLoader.cpp PARENT_SCOPE) endfunction() ukui-panel-4.0.0.4/cmake/ukui-build-tools/modules/UKUiTranslate.cmake0000644000175000017500000000366114560306203024011 0ustar fengfeng#============================================================================= # Copyright 2014 Luís Pereira # Copyright (c) 2019 Tianjin KYLIN Information Technology Co., Ltd. * # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # 3. The name of the author may not be used to endorse or promote products # derived from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. # IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT # NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #============================================================================= # # An convenience module that loads all the UKUi translations modules at once. include(/usr/share/cmake/ukui-build-tools/modules/UKUiTranslateTs.cmake) include(/usr/share/cmake/ukui-build-tools/modules/UKUiTranslateDesktop.cmake) include(/usr/share/cmake/ukui-build-tools/modules/UKUiTranslationLoader.cmake) ukui-panel-4.0.0.4/cmake/ukui-build-tools/modules/UKUiCreatePkgConfigFile.cmake0000644000175000017500000002077614560306203025655 0ustar fengfeng#============================================================================= # Copyright 2015 Luís Pereira # Copyright (c) 2019 Tianjin KYLIN Information Technology Co., Ltd. * # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # 3. The name of the author may not be used to endorse or promote products # derived from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. # IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT # NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #=============================================================================# # ukui_create_pkgconfig_file(PACKAGE_NAME # VERSION # [PREFIX ] # [EXEC_PREFIX ] # [INCLUDEDIR_PREFIX ] # [INCLUDEDIRS ... ] # [LIBDIR_PREFIX ] # [DESCRIPTIVE_NAME ] # [DESCRIPTION ] # [URL ] # [REQUIRES ... ] # [REQUIRES_PRIVATE ... ] # [LIB_INSTALLDIR ] # [CFLAGS ] # [PATH ] # [INSTALL] # [COMPONENT] component) # # # PACKAGE_NAME and VERSION are mandatory. Everything else is optional include(CMakeParseArguments) include(GNUInstallDirs) function(ukui_create_pkgconfig_file) set(options INSTALL) set(oneValueArgs PACKAGE_NAME PREFIX EXEC_PREFIX INCLUDEDIR_PREFIX LIBDIR_PREFIX DESCRIPTIVE_NAME DESCRIPTION URL VERSION PATH COMPONENT ) set(multiValueArgs INCLUDEDIRS REQUIRES REQUIRES_PRIVATE CONFLICTS CFLAGS LIBS LIBS_PRIVATE ) cmake_parse_arguments(USER "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) if (USER_UNPARSED_ARGUMENTS) message(FATAL_ERROR "Unknown keywords given to create_pkgconfig_file(): \"${USER_UNPARSED_ARGUMENTS}\"") endif() # Check for mandatory args. Abort if not set if (NOT DEFINED USER_PACKAGE_NAME) message(FATAL_ERROR "Required argument PACKAGE_NAME missing in generate_pkgconfig_file() call") else() set(_PKGCONFIG_PACKAGE_NAME "${USER_PACKAGE_NAME}") endif() if (NOT DEFINED USER_VERSION) message(FATAL_ERROR "Required argument VERSION missing in generate_pkgconfig_file() call") else() set(_PKGCONFIG_VERSION "${USER_VERSION}") endif() # Optional args if (NOT DEFINED USER_PREFIX) set(_PKGCONFIG_PREFIX "${CMAKE_INSTALL_PREFIX}") endif() if (NOT DEFINED USER_EXEC_PREFIX) set(_PKGCONFIG_EXEC_PREFIX "\${prefix}") endif() if (NOT DEFINED USER_INCLUDEDIR_PREFIX) set(_PKGCONFIG_INCLUDEDIR_PREFIX "\${prefix}/${CMAKE_INSTALL_INCLUDEDIR}") endif() if (NOT DEFINED USER_LIBDIR_PREFIX) set(_PKGCONFIG_LIBDIR_PREFIX "\${prefix}/${CMAKE_INSTALL_LIBDIR}") endif() if (NOT DEFINED USER_DESCRIPTIVE_NAME) set(_PKGCONFIG_DESCRIPTIVE_NAME "") else() set(_PKGCONFIG_DESCRIPTIVE_NAME "${USER_DESCRIPTIVE_NAME}") endif() if (DEFINED USER_INCLUDEDIRS) set(tmp "") foreach(dir ${USER_INCLUDEDIRS}) if (NOT IS_ABSOLUTE "${dir}") list(APPEND tmp "-I\${includedir}/${dir}") endif() endforeach() string(REPLACE ";" " " _INCLUDEDIRS "${tmp}") endif() if (DEFINED USER_REQUIRES) string(REPLACE ";" ", " _PKGCONFIG_REQUIRES "${USER_REQUIRES}") endif() if (DEFINED USER_REQUIRES_PRIVATE) string(REPLACE ";" ", " _PKGCONFIG_REQUIRES_PRIVATE "${USER_REQUIRES_PRIVATE}") else() set(_PKGCONFIG_REQUIRES_PRIVATE "") endif() if (NOT DEFINED USER_CFLAGS) set(_PKGCONFIG_CFLAGS "-I\${includedir} ${_INCLUDEDIRS}") endif() if (NOT DEFINED USER_LIBS) set(_PKGCONFIG_LIBS "-L\${libdir}") else() set(tmp "-L\${libdir}") set(_libs "${USER_LIBS}") foreach(lib ${_libs}) list(APPEND tmp "-l${lib}") endforeach() string(REPLACE ";" " " _PKGCONFIG_LIBS "${tmp}") endif() if (NOT DEFINED USER_LIBS_PRIVATE) set(PKGCONFIG_LIBS "-L\${libdir}") else() set(tmp "") set(_libs "${USER_LIBS_PRIVATE}") foreach(lib ${_libs}) list(APPEND tmp "-l${lib}") endforeach() string(REPLACE ";" " " _PKGCONFIG_LIBS_PRIVATE "${tmp}") endif() if (DEFINED USER_DESCRIPTION) set(_PKGCONFIG_DESCRIPTION "${USER_DESCRIPTION}") else() set(_PKGCONFIG_DESCRIPTION "") endif() if (DEFINED USER_URL) set(_PKFCONFIG_URL "${USER_URL}") else() set(_PKGCONFIG_URL "") endif() if (NOT DEFINED USER_PATH) set(_PKGCONFIG_FILE "${PROJECT_BINARY_DIR}/${_PKGCONFIG_PACKAGE_NAME}.pc") else() if (IS_ABSOLUTE "${USER_PATH}") set(_PKGCONFIG_FILE "${USER_PATH}/${_PKGCONFIG_PACKAGE_NAME}.pc") else() set(_PKGCONFIG_FILE "${PROJECT_BINARY_DIR}/${USER_PATH}/${_PKGCONFIG_PACKAGE_NAME}.pc") endif() endif() # Write the .pc file FILE(WRITE "${_PKGCONFIG_FILE}" "# file generated by create_pkgconfig_file()\n" "prefix=${_PKGCONFIG_PREFIX}\n" "exec_prefix=${_PKGCONFIG_EXEC_PREFIX}\n" "libdir=${_PKGCONFIG_LIBDIR_PREFIX}\n" "includedir=${_PKGCONFIG_INCLUDEDIR_PREFIX}\n" "\n" "Name: ${_PKGCONFIG_DESCRIPTIVE_NAME}\n" ) if (NOT "${_PKGCONFIG_DESCRIPTION}" STREQUAL "") FILE(APPEND ${_PKGCONFIG_FILE} "Description: ${_PKGCONFIG_DESCRIPTION}\n" ) endif() if (NOT "${_PKGCONFIG_URL}" STREQUAL "") FILE(APPEND ${_PKGCONFIG_FILE} "URL: ${_PKGCONFIG_URL}\n") endif() FILE(APPEND ${_PKGCONFIG_FILE} "Version: ${_PKGCONFIG_VERSION}\n") if (NOT "${_PKGCONFIG_REQUIRES}" STREQUAL "") FILE(APPEND ${_PKGCONFIG_FILE} "Requires: ${_PKGCONFIG_REQUIRES}\n") endif() if (NOT "${_PKGCONFIG_REQUIRES_PRIVATE}" STREQUAL "") FILE(APPEND ${_PKGCONFIG_FILE} "Requires.private: ${_PKGCONFIG_REQUIRES_PRIVATE}\n" ) endif() FILE(APPEND ${_PKGCONFIG_FILE} "Cflags: ${_PKGCONFIG_CFLAGS}\n" "Libs: ${_PKGCONFIG_LIBS}\n" ) if (NOT "${_PKGCONFIG_LIBS_PRIVATE}" STREQUAL "") FILE(APPEND ${_PKGCONFIG_FILE} "Libs.private: ${_PKGCONFIG_REQUIRES_PRIVATE}\n" ) endif() if (DEFINED USER_INSTALL) # FreeBSD loves to install files to different locations # https://www.freebsd.org/doc/handbook/dirstructure.html if(${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD") set(_PKGCONFIG_INSTALL_DESTINATION "libdata/pkgconfig") else() set(_PKGCONFIG_INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig") endif() if (DEFINED USER_COMPONENT) set(_COMPONENT "${USER_COMPONENT}") else() set(_COMPONENT "Devel") endif() install(FILES "${_PKGCONFIG_FILE}" DESTINATION "${_PKGCONFIG_INSTALL_DESTINATION}" COMPONENT "${_COMPONENT}") endif() endfunction() ukui-panel-4.0.0.4/cmake/ukui-build-tools/modules/UKUiCompilerSettings.cmake0000644000175000017500000001771114560306203025350 0ustar fengfeng#============================================================================= # Copyright 2015 Luís Pereira # Copyright 2015 Palo Kisa # Copyright 2013 Hong Jen Yee (PCMan) # Copyright (c) 2019 Tianjin KYLIN Information Technology Co., Ltd. * # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # 3. The name of the author may not be used to endorse or promote products # derived from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. # IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT # NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #============================================================================= #----------------------------------------------------------------------------- # Build with release mode by default (turn on compiler optimizations) #----------------------------------------------------------------------------- if (NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE Release) endif() #----------------------------------------------------------------------------- # Honor visibility properties for all target types. # # The ``_VISIBILITY_PRESET`` and # ``VISIBILITY_INLINES_HIDDEN`` target properties affect visibility # of symbols during dynamic linking. When first introduced these properties # affected compilation of sources only in shared libraries, module libraries, # and executables with the ``ENABLE_EXPORTS`` property set. This # was sufficient for the basic use cases of shared libraries and executables # with plugins. However, some sources may be compiled as part of static # libraries or object libraries and then linked into a shared library later. # CMake 3.3 and above prefer to honor these properties for sources compiled # in all target types. This policy preserves compatibility for projects # expecting the properties to work only for some target types. # # The ``OLD`` behavior for this policy is to ignore the visibility properties # for static libraries, object libraries, and executables without exports. # The ``NEW`` behavior for this policy is to honor the visibility properties # for all target types. # # This policy was introduced in CMake version 3.3. CMake version # 3.3.0 warns when the policy is not set and uses ``OLD`` behavior. Use # the ``cmake_policy()`` command to set it to ``OLD`` or ``NEW`` # explicitly. #----------------------------------------------------------------------------- if(COMMAND CMAKE_POLICY) if (POLICY CMP0063) cmake_policy(SET CMP0063 NEW) endif() endif() include(CheckCXXCompilerFlag) #----------------------------------------------------------------------------- # Global definitions #----------------------------------------------------------------------------- add_definitions( -DQT_USE_QSTRINGBUILDER -DQT_NO_FOREACH ) if (CMAKE_BUILD_TYPE MATCHES "Debug") add_definitions(-DQT_STRICT_ITERATORS) endif() #----------------------------------------------------------------------------- # Detect Clang compiler #----------------------------------------------------------------------------- if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") set(UKUI_COMPILER_IS_CLANGCXX 1) endif() #----------------------------------------------------------------------------- # Set visibility to hidden to hide symbols, unless they're exported manually # in the code #----------------------------------------------------------------------------- set(CMAKE_C_VISIBILITY_PRESET hidden) set(CMAKE_CXX_VISIBILITY_PRESET hidden) set(CMAKE_VISIBILITY_INLINES_HIDDEN 1) #----------------------------------------------------------------------------- # Disable exceptions #----------------------------------------------------------------------------- if (CMAKE_COMPILER_IS_GNUCXX OR UKUI_COMPILER_IS_CLANGCXX) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-exceptions") endif() #----------------------------------------------------------------------------- # Common warning flags #----------------------------------------------------------------------------- set(__UKUI_COMMON_WARNING_FLAGS "-Wall -Wextra -Wchar-subscripts -Wno-long-long -Wpointer-arith -Wundef -Wformat-security") #----------------------------------------------------------------------------- # Warning flags #----------------------------------------------------------------------------- if (CMAKE_COMPILER_IS_GNUCXX OR UKUI_COMPILER_IS_CLANGCXX) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${__UKUI_COMMON_WARNING_FLAGS} -Wnon-virtual-dtor -Woverloaded-virtual -Wpedantic") endif() if (UKUI_COMPILER_IS_CLANGCXX) # qCDebug(), qCWarning, etc trigger a very verbose warning, about.... nothing. Disable it. # Found when building ukui-session. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-gnu-zero-variadic-macro-arguments") endif() #----------------------------------------------------------------------------- # Linker flags # Do not allow undefined symbols #----------------------------------------------------------------------------- if (CMAKE_COMPILER_IS_GNUCXX OR UKUI_COMPILER_IS_CLANGCXX) # -Bsymbolic-functions: replace dynamic symbols used internally in # shared libs with direct addresses. set(SYMBOLIC_FLAGS "-Wl,-Bsymbolic-functions -Wl,-Bsymbolic" ) set(CMAKE_SHARED_LINKER_FLAGS "-Wl,--no-undefined ${SYMBOLIC_FLAGS} ${CMAKE_SHARED_LINKER_FLAGS}" ) set(CMAKE_MODULE_LINKER_FLAGS "-Wl,--no-undefined ${SYMBOLIC_FLAGS} ${CMAKE_MODULE_LINKER_FLAGS}" ) set(CMAKE_EXE_LINKER_FLAGS "${SYMBOLIC_FLAGS} ${CMAKE_EXE_LINKER_FLAGS}" ) endif() #----------------------------------------------------------------------------- # CXX14 requirements - no checks, we just set it #----------------------------------------------------------------------------- set(CMAKE_CXX_STANDARD_REQUIRED True) set(CMAKE_CXX_STANDARD 14 CACHE STRING "C++ ISO Standard") #----------------------------------------------------------------------------- # Enable colored diagnostics for the CLang/Ninja combination #----------------------------------------------------------------------------- if (CMAKE_GENERATOR STREQUAL "Ninja" AND # Rationale: https://public.kitware.com/Bug/view.php?id=15502 ((CMAKE_COMPILER_IS_GNUCXX AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.9) OR (UKUI_COMPILER_IS_CLANGCXX AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 3.5))) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fdiagnostics-color=always") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fdiagnostics-color=always") endif() #----------------------------------------------------------------------------- # Enable exceptions for an target # # ukui_enable_target_exceptions( # # ) # #----------------------------------------------------------------------------- function(ukui_enable_target_exceptions target mode) target_compile_options(${target} ${mode} "$<$,$>:-fexceptions>" ) endfunction() ukui-panel-4.0.0.4/cmake/ukui-build-tools/modules/Qt5PatchedLinguistToolsMacros.cmake0000644000175000017500000001130014560306203027152 0ustar fengfeng#============================================================================= # Copyright 2005-2011 Kitware, Inc. # Copyright (c) 2019 Tianjin KYLIN Information Technology Co., Ltd. * # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # * Neither the name of Kitware, Inc. nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT # HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #============================================================================= include(CMakeParseArguments) function(QT5_PATCHED_CREATE_TRANSLATION _qm_files) set(options) set(oneValueArgs) set(multiValueArgs OPTIONS) cmake_parse_arguments(_LUPDATE "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) set(_lupdate_files ${_LUPDATE_UNPARSED_ARGUMENTS}) set(_lupdate_options ${_LUPDATE_OPTIONS}) set(_my_sources) set(_my_tsfiles) foreach(_file ${_lupdate_files}) get_filename_component(_ext ${_file} EXT) get_filename_component(_abs_FILE ${_file} ABSOLUTE) if(_ext MATCHES "ts") list(APPEND _my_tsfiles ${_abs_FILE}) else() list(APPEND _my_sources ${_abs_FILE}) endif() endforeach() foreach(_ts_file ${_my_tsfiles}) if(_my_sources) # make a list file to call lupdate on, so we don't make our commands too # long for some systems # get_filename_component(_ts_name ${_ts_file} NAME_WE) get_filename_component(_name ${_ts_file} NAME) string(REGEX REPLACE "^(.+)(\\.[^.]+)$" "\\1" _ts_name ${_name}) set(_ts_lst_file "${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${_ts_name}_lst_file") set(_lst_file_srcs) foreach(_lst_file_src ${_my_sources}) set(_lst_file_srcs "${_lst_file_src}\n${_lst_file_srcs}") endforeach() get_directory_property(_inc_DIRS INCLUDE_DIRECTORIES) foreach(_pro_include ${_inc_DIRS}) get_filename_component(_abs_include "${_pro_include}" ABSOLUTE) set(_lst_file_srcs "-I${_pro_include}\n${_lst_file_srcs}") endforeach() file(WRITE ${_ts_lst_file} "${_lst_file_srcs}") endif() add_custom_command(OUTPUT ${_ts_file} COMMAND ${Qt5_LUPDATE_EXECUTABLE} ARGS ${_lupdate_options} "@${_ts_lst_file}" -ts ${_ts_file} DEPENDS ${_my_sources} ${_ts_lst_file} VERBATIM) endforeach() qt5_patched_add_translation(${_qm_files} ${_my_tsfiles}) set(${_qm_files} ${${_qm_files}} PARENT_SCOPE) endfunction() function(QT5_PATCHED_ADD_TRANSLATION _qm_files) foreach(_current_FILE ${ARGN}) get_filename_component(_abs_FILE ${_current_FILE} ABSOLUTE) # get_filename_component(qm ${_abs_FILE} NAME_WE) get_filename_component(_name ${_abs_FILE} NAME) string(REGEX REPLACE "^(.+)(\\.[^.]+)$" "\\1" qm ${_name}) get_source_file_property(output_location ${_abs_FILE} OUTPUT_LOCATION) if(output_location) file(MAKE_DIRECTORY "${output_location}") set(qm "${output_location}/${qm}.qm") else() set(qm "${CMAKE_CURRENT_BINARY_DIR}/${qm}.qm") endif() add_custom_command(OUTPUT ${qm} COMMAND ${Qt5_LRELEASE_EXECUTABLE} ARGS ${_abs_FILE} -qm ${qm} DEPENDS ${_abs_FILE} VERBATIM ) list(APPEND ${_qm_files} ${qm}) endforeach() set(${_qm_files} ${${_qm_files}} PARENT_SCOPE) endfunction() ukui-panel-4.0.0.4/cmake/ukui-build-tools/modules/UKUiTranslateTs.cmake0000644000175000017500000001320514560306203024313 0ustar fengfeng#============================================================================= # Copyright 2014 Luís Pereira # Copyright (c) 2019 Tianjin KYLIN Information Technology Co., Ltd. * # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # 3. The name of the author may not be used to endorse or promote products # derived from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. # IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT # NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #============================================================================= # # funtion ukui_translate_ts(qmFiles # [USE_QT5 [Yes | No]] # [UPDATE_TRANSLATIONS [Yes | No]] # SOURCES # [UPDATE_OPTIONS] update_options # [TEMPLATE] translation_template # [TRANSLATION_DIR] translation_directory # [INSTALL_DIR] install_directory # [COMPONENT] component # ) # Output: # qmFiles The generated compiled translations (.qm) files # # Input: # USE_QT5 Optional flag to choose between Qt4 and Qt5. Defaults to Qt5 # # UPDATE_TRANSLATIONS Optional flag. Setting it to Yes, extracts and # compiles the translations. Setting it No, only # compiles them. # # UPDATE_OPTIONS Optional options to lupdate when UPDATE_TRANSLATIONS # is True. # # TEMPLATE Optional translations files base name. Defaults to # ${PROJECT_NAME}. An .ts extensions is added. # # TRANSLATION_DIR Optional path to the directory with the .ts files, # relative to the CMakeList.txt. Defaults to # "translations". # # INSTALL_DIR Optional destination of the file compiled files (qmFiles). # If not present no installation is performed # # COMPONENT Optional install component. Only effective if INSTALL_DIR # present. Defaults to "Runtime". # # We use our patched version to round a annoying bug. include(Qt5PatchedLinguistToolsMacros) function(ukui_translate_ts qmFiles) set(oneValueArgs USE_QT5 UPDATE_TRANSLATIONS TEMPLATE TRANSLATION_DIR INSTALL_DIR COMPONENT ) set(multiValueArgs SOURCES UPDATE_OPTIONS) cmake_parse_arguments(TR "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) if (NOT DEFINED TR_UPDATE_TRANSLATIONS) set(TR_UPDATE_TRANSLATIONS "No") endif() if (NOT DEFINED TR_UPDATE_OPTIONS) set(TR_UPDATE_OPTIONS "") endif() if (NOT DEFINED TR_USE_QT5) set(TR_USE_QT5 "Yes") endif() if(NOT DEFINED TR_TEMPLATE) set(TR_TEMPLATE "${PROJECT_NAME}") endif() if (NOT DEFINED TR_TRANSLATION_DIR) set(TR_TRANSLATION_DIR "translations") endif() get_filename_component(TR_TRANSLATION_DIR "${TR_TRANSLATION_DIR}" ABSOLUTE) if (EXISTS "${TR_TRANSLATION_DIR}") file(GLOB tsFiles "${TR_TRANSLATION_DIR}/${TR_TEMPLATE}_*.ts") set(templateFile "${TR_TRANSLATION_DIR}/${TR_TEMPLATE}.ts") endif () if(TR_USE_QT5) # Qt5 if (TR_UPDATE_TRANSLATIONS) qt5_patched_create_translation(QMS ${TR_SOURCES} ${templateFile} OPTIONS ${TR_UPDATE_OPTIONS} ) qt5_patched_create_translation(QM ${TR_SOURCES} ${tsFiles} OPTIONS ${TR_UPDATE_OPTIONS} ) else() qt5_patched_add_translation(QM ${tsFiles}) endif() else() # Qt4 if(TR_UPDATE_TRANSLATIONS) qt4_create_translation(QMS ${TR_SOURCES} ${templateFile} OPTIONS ${TR_UPDATE_OPTIONS} ) qt4_create_translation(QM ${TR_SOURCES} ${tsFiles} OPTIONS ${TR_UPDATE_OPTIONS} ) else() qt4_add_translation(QM ${tsFiles}) endif() endif() if(TR_UPDATE_TRANSLATIONS) add_custom_target("update_${TR_TEMPLATE}_ts" ALL DEPENDS ${QMS}) endif() if(DEFINED TR_INSTALL_DIR) if(NOT DEFINED TR_COMPONENT) set(TR_COMPONENT "Runtime") endif() install(FILES ${QM} DESTINATION "${TR_INSTALL_DIR}" COMPONENT "${TR_COMPONENT}" ) endif() set(${qmFiles} ${QM} PARENT_SCOPE) endfunction() ukui-panel-4.0.0.4/cmake/ukui-build-tools/modules/UKUiCreatePortableHeaders.cmake0000644000175000017500000001037414560306203026243 0ustar fengfeng#============================================================================= # Copyright 2015 Luís Pereira # Copyright (c) 2019 Tianjin KYLIN Information Technology Co., Ltd. * # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # 3. The name of the author may not be used to endorse or promote products # derived from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. # IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT # NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #============================================================================= # ukui_create_portable_headers( # HEADER_NAMES [ [...]] # [OUTPUT_DIR ] # ) # # Creates portable headers; e.g.: # Creates XdgAction from xdgaction.h # XdgAction contents: # #include "xdgaction.h" # # Output: # portable_headers File locations of the created headers # # Input: # HEADER_NAMES Header CamelCaseNames. An CamelCaseName header will be created # that includes camelcasename.h file # # OUTPUT_DIR Specifies where the files will be created. Defaults to # ``${CMAKE_CURRENT_BINARY_DIR}``. If the value is an relative path, it # will be appended to ``${CMAKE_CURRENT_BINARY_DIR}``. # # Use: # set(PUBLIC_CLASSES MyClass YourClass) # ukui_create_portable_headers(PORTABLE_HEADERS ${PUBLIC_CLASSES}) # PORTABLE_HEADER is an return value that contains the full name of the # generated headers. function(ukui_create_portable_headers outfiles) set(options) set(oneValueArgs OUTPUT_DIR PATH_PREFIX NAME_PREFIX) set(multiValueArgs HEADER_NAMES) cmake_parse_arguments(USER "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) if (USER_UNPARSED_ARGUMENTS) message(FATAL_ERROR "Unknown keywords given to ukui_create_portable_headers(): \"${USER_UNPARSED_ARGUMENTS}\"") endif() if (NOT DEFINED USER_HEADER_NAMES) message(FATAL_ERROR "Required argument HEADER_NAMES missing in ukui_create_portable_headers() call") else() set(_HEADER_NAMES "${USER_HEADER_NAMES}") endif() if (NOT DEFINED USER_OUTPUT_DIR) set(_OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}") else() if (IS_ABSOLUTE "${USER_OUTPUT_DIR}") set(_OUTPUT_DIR "${USER_OUTPUT_DIR}") else() set(_OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/${USER_OUTPUT_DIR}") endif() endif() if (NOT DEFINED USER_PATH_PREFIX) set(_PATH_PREFIX "") else() set(_PATH_PREFIX "${USER_PATH_PREFIX}") endif() if (NOT DEFINED USER_NAME_PREFIX) set(_NAME_PREFIX "") else() set(_NAME_PREFIX "${USER_NAME_PREFIX}") endif() set(class_list ${_HEADER_NAMES}) foreach(f ${class_list}) string(TOLOWER "${f}.h" _filename) if ("${_PATH_PREFIX}" STREQUAL "") file(WRITE "${_OUTPUT_DIR}/${f}" "#include \"${_NAME_PREFIX}${_filename}\"") else() file(WRITE "${_OUTPUT_DIR}/${f}" "#include \"${_PATH_PREFIX}${_NAME_PREFIX}/${_filename}\"") endif() list(APPEND ${outfiles} "${_OUTPUT_DIR}/${f}") endforeach() set(${outfiles} ${${outfiles}} PARENT_SCOPE) endfunction() ukui-panel-4.0.0.4/cmake/ukui-build-tools/modules/UKUiConfigVars.cmake0000644000175000017500000000343514560306203024114 0ustar fengfeng# The module defines the following variables # # UKUI_SHARE_DIR - This allows to install and read the configs from non-standard locations # # UKUI_TRANSLATIONS_DIR - The default translations directory # # UKUI_ETC_XDG_DIR - XDG standards expects system-wide configuration files in the # /etc/xdg/ukui location. Unfortunately QSettings we are using internally # can be overriden in the Qt compilation time to use different path for # system-wide configs. (for example configure ... -sysconfdir /etc/settings ...) # This path can be found calling Qt's qmake: # qmake -query QT_INSTALL_CONFIGURATION # # UKUI_DATA_DIR - UKUi base directory relative to which data files should # be searched.Defaults to CMAKE_INSTALL_FULL_DATADIR. It's # added to XDG_DATA_DIRS by the startukui script. set(UKUI_LIBRARY_NAME "ukui") set(UKUI_RELATIVE_SHARE_DIR "ukui") set(UKUI_SHARE_DIR "/usr/share/ukui") set(UKUI_RELATIVE_TRANSLATIONS_DIR "ukui/translations") set(UKUI_TRANSLATIONS_DIR "/usr/share/ukui/translations") set(UKUI_GRAPHICS_DIR "/usr/share/ukui/graphics") set(UKUI_ETC_XDG_DIR "/etc/xdg") set(UKUI_DATA_DIR "/usr/share") add_definitions("-DUKUI_RELATIVE_SHARE_DIR=\"${UKUI_RELATIVE_SHARE_DIR}\"") add_definitions("-DUKUI_SHARE_DIR=\"${UKUI_SHARE_DIR}\"") add_definitions("-DUKUI_RELATIVE_SHARE_TRANSLATIONS_DIR=\"${UKUI_RELATIVE_TRANSLATIONS_DIR}\"") add_definitions("-DUKUI_SHARE_TRANSLATIONS_DIR=\"${UKUI_TRANSLATIONS_DIR}\"") add_definitions("-DUKUI_GRAPHICS_DIR=\"${UKUI_GRAPHICS_DIR}\"") add_definitions("-DUKUI_ETC_XDG_DIR=\"${UKUI_ETC_XDG_DIR}\"") add_definitions("-DUKUI_DATA_DIR=\"${UKUI_DATA_DIR}\"") ukui-panel-4.0.0.4/cmake/ukui-build-tools/modules/UKUiAppTranslationLoader.cpp.in0000644000175000017500000000063414560306203026246 0ustar fengfeng/* This file has been generated by the CMake ukui_app_translation_loader(). * It loads UKUi application translations. * * Attention: All changes will be overwritten!!! */ #include #include "../panel/common/ukuitranslator.h" static void loadAppTranslation() { UKUi::Translator::translateApplication(QStringLiteral("@catalog_name@")); } Q_COREAPP_STARTUP_FUNCTION(loadAppTranslation) ukui-panel-4.0.0.4/cmake/ukui-build-tools/modules/UKUiPreventInSourceBuilds.cmake0000644000175000017500000000627414560306203026315 0ustar fengfeng#============================================================================= # Copyright (c) 2018 Luís Pereira # Copyright (c) 2019 Tianjin KYLIN Information Technology Co., Ltd. * # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # 3. The name of the author may not be used to endorse or promote products # derived from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. # IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT # NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #============================================================================= function(ukui_prevent_in_source_builds) # Handle smarties with symlinks get_filename_component(srcdir "${CMAKE_SOURCE_DIR}" REALPATH) get_filename_component(bindir "${CMAKE_BINARY_DIR}" REALPATH) if("${srcdir}" STREQUAL "${bindir}") # We are in a in source build message("##############################################################") message("# In Source Build detected.") message("# UKUi does not support in source builds.") message("# Out of source build is required.") message("#") message("# The general approach to out of source builds is:") message("# mkdir build") message("# cd build") message("# cmake ") message("# make") message("#") message("# An in source build was attemped. Some files were created.") message("# Use 'git status' to check them. Remove them with:") message("# cd ") message("#") message("# # Don’t actually remove anything, just show what would be done") message("# git clean -n -d") message("#") message("# # Actually remove the files") message("# git clean -f -d") message("#") message("# checkout files out of the index") message("# git checkout --") message("##############################################################") message(FATAL_ERROR "Aborting configuration") endif() endfunction() ukui_prevent_in_source_builds() ukui-panel-4.0.0.4/cmake/ukui-build-tools/modules/UKUiTranslationLoader.cmake0000644000175000017500000000763414560306203025505 0ustar fengfeng#============================================================================= # Copyright 2014 Luís Pereira # Copyright 2019 Tianjin KYLIN Information Technology Co., Ltd. * # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # 3. The name of the author may not be used to endorse or promote products # derived from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. # IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT # NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #============================================================================= # # These functions enables "automatic" translation loading in UKUi Qt5 apps # and libs. They generate a .cpp file that takes care of everything. The # user doesn't have to do anything in the source code. # # Typical use: # include(UKUiTranslationLoader) # ukui_app_translation_loader(ukui-app_QM_LOADER ${PROJECT_NAME}) # add_executable(${PROJECT_NAME} # ${ukui-app_QM_LOADER} # ... # ) # ukui_app_translation_loader( ) # The generated .cpp file is added to # Translations catalog to be loaded function(ukui_app_translation_loader source_files catalog_name) configure_file( #${UKUI_CMAKE_MODULES_DIR}/UKUiAppTranslationLoader.cpp.in ../cmake/ukui-build-tools/modules/UKUiAppTranslationLoader.cpp.in UKUiAppTranslationLoader.cpp @ONLY ) set(${source_files} ${${source_files}} ${CMAKE_CURRENT_BINARY_DIR}/UKUiAppTranslationLoader.cpp PARENT_SCOPE) endfunction() # ukui_lib_translation_loader( ) # The generated .cpp file is added to # Translations catalog to be loaded function(ukui_lib_translation_loader source_files catalog_name) configure_file( #${UKUI_CMAKE_MODULES_DIR}/UKUiLibTranslationLoader.cpp.in ../cmake/ukui-build-tools/modules/UKUiLibTranslationLoader.cpp.in UKUiLibTranslationLoader.cpp @ONLY ) set(${source_files} ${${source_files}} ${CMAKE_CURRENT_BINARY_DIR}/UKUiLibTranslationLoader.cpp PARENT_SCOPE) endfunction() # ukui_plugin_translation_loader( ) # The generated .cpp file is added to # Translations catalog to be loaded # Plugin type. Example: ukui-panel function(ukui_plugin_translation_loader source_files catalog_name plugin_type) configure_file( #${UKUI_CMAKE_MODULES_DIR}/UKUiPluginTranslationLoader.cpp.in #/usr/share/cmake/ukui-build-tools/modules/UKUiPluginTranslationLoader.cpp.in ../cmake/ukui-build-tools/modules/UKUiPluginTranslationLoader.cpp.in UKUiPluginTranslationLoader.cpp @ONLY ) set(${source_files} ${${source_files}} ${CMAKE_CURRENT_BINARY_DIR}/UKUiPluginTranslationLoader.cpp PARENT_SCOPE) endfunction() ukui-panel-4.0.0.4/cmake/ukui-build-tools/modules/UKUiLibTranslationLoader.cpp.in0000644000175000017500000000060514560306203026232 0ustar fengfeng/* This file has been generated by the CMake ukui_app_translation_loader(). * It loads UKUi libraries translations. * * Attention: All changes will be overwritten!!! */ #include #include static void loadLibTranslation() { UKUi::Translator::translateLibrary(QStringLiteral("@catalog_name@")); } Q_COREAPP_STARTUP_FUNCTION(loadLibTranslation) ukui-panel-4.0.0.4/cmake/ukui-build-tools/modules/UKUiPluginTranslationLoader.cpp.in0000644000175000017500000000175214560306203026766 0ustar fengfeng/* This file has been generated by the CMake ukui_plugin_translation_loader(). * It loads UKUi plugin translations. * * Attention: All changes will be overwritten!!! */ #include #include #include "../panel/common/ukuitranslator.h" /* Dummy helper symbol for referencing. * In case plugin is linked as static (lib*.a) unreferenced objects are stripped in linking time * => we need to reference some symbol from this file to be not stripped as a whole. */ void * loadPluginTranslation_@catalog_name@_helper = nullptr; static void loadPluginTranslation() { //XXX: we don't use the QStringLiteral here because it causes SEGFAULT in static finalization time // (the string is stored in static QHash and it's destructor can reference already deleted static QString (generated by QStringLiteral)) UKUi::Translator::translatePlugin(QLatin1String("@catalog_name@"), QLatin1String("@plugin_type@")); } Q_COREAPP_STARTUP_FUNCTION(loadPluginTranslation) ukui-panel-4.0.0.4/cmake/ukui-build-tools/modules/UKUiTranslateDesktop.cmake0000644000175000017500000000753114560306203025343 0ustar fengfeng#============================================================================= # The ukui_translate_desktop() function was copied from the # UKUi UKUiTranslate.cmake # # Original Author: Alexander Sokolov # # funtion ukui_translate_desktop(_RESULT # SOURCES # [TRANSLATION_DIR] translation_directory # ) # Output: # _RESULT The generated .desktop (.desktop) files # # Input: # # SOURCES List of input desktop files (.destktop.in) to be translated # (merged), relative to the CMakeList.txt. # # TRANSLATION_DIR Optional path to the directory with the .ts files, # relative to the CMakeList.txt. Defaults to # "translations". # #============================================================================= function(ukui_translate_desktop _RESULT) # Parse arguments *************************************** set(oneValueArgs TRANSLATION_DIR) set(multiValueArgs SOURCES) cmake_parse_arguments(_ARGS "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) # check for unknown arguments set(_UNPARSED_ARGS ${_ARGS_UNPARSED_ARGUMENTS}) if (NOT ${_UNPARSED_ARGS} STREQUAL "") MESSAGE(FATAL_ERROR "Unknown arguments '${_UNPARSED_ARGS}'.\n" "See ukui_translate_desktop() documentation for more information.\n" ) endif() if (NOT DEFINED _ARGS_SOURCES) set(${_RESULT} "" PARENT_SCOPE) return() else() set(_sources ${_ARGS_SOURCES}) endif() if (NOT DEFINED _ARGS_TRANSLATION_DIR) set(_translationDir "translations") else() set(_translationDir ${_ARGS_TRANSLATION_DIR}) endif() get_filename_component (_translationDir ${_translationDir} ABSOLUTE) foreach (_inFile ${_sources}) get_filename_component(_inFile ${_inFile} ABSOLUTE) get_filename_component(_fileName ${_inFile} NAME_WE) #Extract the real extension ............ get_filename_component(_fileExt ${_inFile} EXT) string(REPLACE ".in" "" _fileExt ${_fileExt}) #....................................... set(_outFile "${CMAKE_CURRENT_BINARY_DIR}/${_fileName}${_fileExt}") file(GLOB _translations ${_translationDir}/${_fileName}_*${_fileExt} ) set(_pattern "'\\[.*]\\s*='") if (_translations) list(SORT _translations) add_custom_command(OUTPUT ${_outFile} COMMAND grep -v -a "'#TRANSLATIONS_DIR='" ${_inFile} > ${_outFile} COMMAND grep -h -a ${_pattern} ${_translations} >> ${_outFile} COMMENT "Generating ${_fileName}${_fileExt}" ) else() add_custom_command(OUTPUT ${_outFile} COMMAND grep -v -a "'#TRANSLATIONS_DIR='" ${_inFile} > ${_outFile} COMMENT "Generating ${_fileName}${_fileExt}" ) endif() set(__result ${__result} ${_outFile}) # TX file *********************************************** set(_txFile "${CMAKE_BINARY_DIR}/tx/${_fileName}${_fileExt}.tx.sh") string(REPLACE "${CMAKE_SOURCE_DIR}/" "" _tx_translationDir ${_translationDir}) string(REPLACE "${CMAKE_SOURCE_DIR}/" "" _tx_inFile ${_inFile}) string(REPLACE "." "" _fileType ${_fileExt}) file(WRITE ${_txFile} "[ -f ${_inFile} ] || exit 0\n" "echo '[ukui.${_fileName}_${_fileType}]'\n" "echo 'type = DESKTOP'\n" "echo 'source_lang = en'\n" "echo 'source_file = ${_tx_inFile}'\n" "echo 'file_filter = ${_tx_translationDir}/${_fileName}_${_fileExt}'\n" "echo ''\n" ) endforeach() set(${_RESULT} ${__result} PARENT_SCOPE) endfunction(ukui_translate_desktop) ukui-panel-4.0.0.4/cmake/ukui-build-tools/ukui-build-tools-config-version.cmake0000644000175000017500000000402714560306203026001 0ustar fengfeng# UDEV_FOUND - system has UDev # UDEV_INCLUDE_DIR - the libudev include directory # UDEV_LIBS - The libudev libraries # Copyright (c) 2010, Rafael Fernández López, # Copyright (c) 2016, Luís Pereira, # Copyright (c) 2019 Tianjin KYLIN Information Technology Co., Ltd. * # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # 3. Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. set(PACKAGE_VERSION "0.6.0") if(PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION) set(PACKAGE_VERSION_COMPATIBLE FALSE) else() set(PACKAGE_VERSION_COMPATIBLE TRUE) if(PACKAGE_FIND_VERSION STREQUAL PACKAGE_VERSION) set(PACKAGE_VERSION_EXACT TRUE) endif() endif() ukui-panel-4.0.0.4/cmake/ukui-build-tools/find-modules/0000755000175000017500000000000014560306203021224 5ustar fengfengukui-panel-4.0.0.4/cmake/ukui-build-tools/find-modules/FindMenuCache.cmake0000644000175000017500000000772214560306203024667 0ustar fengfeng# Copyright (c) 2010, Rafael Fernández López, # Copyright (c) 2016, Luís Pereira, # Copyright (c) 2019 Tianjin KYLIN Information Technology Co., Ltd. * # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # 3. Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. #.rst: # FindMenuCache # ----------- # # Try to find the MenuCache library # # Once done this will define # # :: # # MENUCACHE_FOUND - System has the MenuCache library # MENUCACHE_INCLUDE_DIR - The MenuCache library include directory # MENUCACHE_INCLUDE_DIRS - Location of the headers needed to use the MenuCache library # MENUCACHE_LIBRARIES - The libraries needed to the MenuCache library # MENUCACHE_DEFINITIONS - Compiler switches required for using the MenuCache library # MENUCACHE_VERSION_STRING - the version of MenuCache library found # use pkg-config to get the directories and then use these values # in the find_path() and find_library() calls find_package(PkgConfig) pkg_check_modules(PC_MENUCACHE libmenu-cache) set(MENUCACHE_DEFINITIONS ${PC_MENUCACHE_CFLAGS_OTHER}) find_path(MENUCACHE_INCLUDE_DIRS NAMES menu-cache.h menu-cache/menu-cache.h HINTS ${PC_MENUCACHE_INCLUDEDIR} ${PC_MENUCACHE_INCLUDE_DIRS} PATH_SUFFIXES libmenu-cache ) find_library(MENUCACHE_LIBRARIES NAMES menu-cache libmenu-cache HINTS ${PC_MENUCACHE_LIBDIR} ${PC_MENUCACHE_LIBRARY_DIRS} ) # iterate over all dependencies unset(FD_LIBRARIES) foreach(depend ${PC_MENUCACHE_LIBRARIES}) find_library(_DEPEND_LIBRARIES NAMES ${depend} HINTS ${PC_MENUCACHE_LIBDIR} ${PC_MENUCACHE_LIBRARY_DIRS} ) if (_DEPEND_LIBRARIES) list(APPEND FD_LIBRARIES ${_DEPEND_LIBRARIES}) endif() unset(_DEPEND_LIBRARIES CACHE) endforeach() set(MENUCACHE_VERSION_STRING ${PC_MENUCACHE_VERSION}) set(MENUCACHE_INCLUDE_DIR ${PC_MENUCACHE_INCLUDEDIR}) list(APPEND MENUCACHE_INCLUDE_DIRS ${MENUCACHE_INCLUDE_DIR} ${PC_MENUCACHE_INCLUDE_DIRS} ) list(REMOVE_DUPLICATES MENUCACHE_INCLUDE_DIRS) list(APPEND MENUCACHE_LIBRARIES ${FD_LIBRARIES} ) list(REMOVE_DUPLICATES MENUCACHE_LIBRARIES) # handle the QUIETLY and REQUIRED arguments and set MENUCACHE_FOUND to TRUE if # all listed variables are TRUE include(FindPackageHandleStandardArgs) find_package_handle_standard_args(MenuCache REQUIRED_VARS MENUCACHE_LIBRARIES MENUCACHE_INCLUDE_DIR MENUCACHE_INCLUDE_DIRS VERSION_VAR MENUCACHE_VERSION_STRING) mark_as_advanced(MENUCACHE_INCLUDE_DIR MENUCACHE_LIBRARIES) ukui-panel-4.0.0.4/cmake/ukui-build-tools/find-modules/FindGLIB.cmake0000644000175000017500000001304114560306203023543 0ustar fengfeng# - Try to find Glib and its components (gio, gobject etc) # Once done, this will define # # GLIB_FOUND - system has Glib # GLIB_INCLUDE_DIRS - the Glib include directories # GLIB_LIBRARIES - link these to use Glib # # Optionally, the COMPONENTS keyword can be passed to find_package() # and Glib components can be looked for. Currently, the following # components can be used, and they define the following variables if # found: # # gio: GLIB_GIO_LIBRARIES # gobject: GLIB_GOBJECT_LIBRARIES # gmodule: GLIB_GMODULE_LIBRARIES # gthread: GLIB_GTHREAD_LIBRARIES # # Note that the respective _INCLUDE_DIR variables are not set, since # all headers are in the same directory as GLIB_INCLUDE_DIRS. # # Copyright (C) 2012 Raphael Kubo da Costa # Copyright (C) 2016 Luís Pereira # Copyright (C) 2019 Tianjin KYLIN Information Technology Co., Ltd. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND ITS CONTRIBUTORS ``AS # IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, # THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR ITS # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, # EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. find_package(PkgConfig) pkg_check_modules(PC_GLIB glib-2.0) find_library(GLIB_LIBRARIES NAMES glib-2.0 HINTS ${PC_GLIB_LIBDIR} ${PC_GLIB_LIBRARY_DIRS} ) # Files in glib's main include path may include glibconfig.h, which, # for some odd reason, is normally in $LIBDIR/glib-2.0/include. get_filename_component(_GLIB_LIBRARY_DIR ${GLIB_LIBRARIES} PATH) find_path(GLIBCONFIG_INCLUDE_DIR NAMES glibconfig.h HINTS ${PC_LIBDIR} ${PC_LIBRARY_DIRS} ${_GLIB_LIBRARY_DIR} ${PC_GLIB_INCLUDEDIR} ${PC_GLIB_INCLUDE_DIRS} PATH_SUFFIXES glib-2.0/include ) find_path(GLIB_INCLUDE_DIR NAMES glib.h HINTS ${PC_GLIB_INCLUDEDIR} ${PC_GLIB_INCLUDE_DIRS} PATH_SUFFIXES glib-2.0 ) set(GLIB_INCLUDE_DIRS ${GLIB_INCLUDE_DIR} ${GLIBCONFIG_INCLUDE_DIR}) # Version detection if (EXISTS "${GLIBCONFIG_INCLUDE_DIR}/glibconfig.h") file(READ "${GLIBCONFIG_INCLUDE_DIR}/glibconfig.h" GLIBCONFIG_H_CONTENTS) string(REGEX MATCH "#define GLIB_MAJOR_VERSION ([0-9]+)" _dummy "${GLIBCONFIG_H_CONTENTS}") set(GLIB_VERSION_MAJOR "${CMAKE_MATCH_1}") string(REGEX MATCH "#define GLIB_MINOR_VERSION ([0-9]+)" _dummy "${GLIBCONFIG_H_CONTENTS}") set(GLIB_VERSION_MINOR "${CMAKE_MATCH_1}") string(REGEX MATCH "#define GLIB_MICRO_VERSION ([0-9]+)" _dummy "${GLIBCONFIG_H_CONTENTS}") set(GLIB_VERSION_MICRO "${CMAKE_MATCH_1}") set(GLIB_VERSION "${GLIB_VERSION_MAJOR}.${GLIB_VERSION_MINOR}.${GLIB_VERSION_MICRO}") endif () # Additional Glib components. We only look for libraries, as not all of them # have corresponding headers and all headers are installed alongside the main # glib ones. foreach (_component ${GLIB_FIND_COMPONENTS}) if (${_component} STREQUAL "gio") find_library(GLIB_GIO_LIBRARIES NAMES gio-2.0 HINTS ${_GLIB_LIBRARY_DIR}) set(ADDITIONAL_REQUIRED_VARS ${ADDITIONAL_REQUIRED_VARS} GLIB_GIO_LIBRARIES) elseif (${_component} STREQUAL "gobject") find_library(GLIB_GOBJECT_LIBRARIES NAMES gobject-2.0 HINTS ${_GLIB_LIBRARY_DIR}) set(ADDITIONAL_REQUIRED_VARS ${ADDITIONAL_REQUIRED_VARS} GLIB_GOBJECT_LIBRARIES) elseif (${_component} STREQUAL "gmodule") find_library(GLIB_GMODULE_LIBRARIES NAMES gmodule-2.0 HINTS ${_GLIB_LIBRARY_DIR}) set(ADDITIONAL_REQUIRED_VARS ${ADDITIONAL_REQUIRED_VARS} GLIB_GMODULE_LIBRARIES) elseif (${_component} STREQUAL "gthread") find_library(GLIB_GTHREAD_LIBRARIES NAMES gthread-2.0 HINTS ${_GLIB_LIBRARY_DIR}) set(ADDITIONAL_REQUIRED_VARS ${ADDITIONAL_REQUIRED_VARS} GLIB_GTHREAD_LIBRARIES) elseif (${_component} STREQUAL "gio-unix") pkg_check_modules(GIO_UNIX gio-unix-2.0) find_path(GLIB_GIO_UNIX_INCLUDE_DIR NAMES gio/gunixconnection.h HINTS ${GIO_UNIX_INCLUDEDIR} PATH_SUFFIXES gio-unix-2.0) set(ADDITIONAL_REQUIRED_VARS ${ADDITIONAL_REQUIRED_VARS} GLIB_GIO_UNIX_INCLUDE_DIR) endif () endforeach () include(FindPackageHandleStandardArgs) FIND_PACKAGE_HANDLE_STANDARD_ARGS(GLIB REQUIRED_VARS GLIB_INCLUDE_DIRS GLIB_LIBRARIES ${ADDITIONAL_REQUIRED_VARS} VERSION_VAR GLIB_VERSION) mark_as_advanced( GLIBCONFIG_INCLUDE_DIR GLIB_GIO_LIBRARIES GLIB_GIO_UNIX_INCLUDE_DIR GLIB_GMODULE_LIBRARIES GLIB_GOBJECT_LIBRARIES GLIB_GTHREAD_LIBRARIES GLIB_INCLUDE_DIR GLIB_INCLUDE_DIRS GLIB_LIBRARIES ) ukui-panel-4.0.0.4/cmake/ukui-build-tools/find-modules/FindXCB.cmake0000644000175000017500000000366514560306203023455 0ustar fengfeng#.rst: # FindXCB # ------- # # Find XCB libraries # # Tries to find xcb libraries on unix systems. # # - Be sure to set the COMPONENTS to the components you want to link to # - The XCB_LIBRARIES variable is set ONLY to your COMPONENTS list # - To use only a specific component check the XCB_LIBRARIES_${COMPONENT} variable # # The following values are defined # # :: # # XCB_FOUND - True if xcb is available # XCB_INCLUDE_DIRS - Include directories for xcb # XCB_LIBRARIES - List of libraries for xcb # XCB_DEFINITIONS - List of definitions for xcb # #============================================================================= # Copyright (c) 2015 Jari Vetoniemi # Copyright (c) 2019 Tianjin KYLIN Information Technology Co., Ltd. * # Distributed under the OSI-approved BSD License (the "License"); # # This software is distributed WITHOUT ANY WARRANTY; without even the # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # See the License for more information. #============================================================================= include(FeatureSummary) set_package_properties(XCB PROPERTIES URL "https://xcb.freedesktop.org/" DESCRIPTION "X protocol C-language Binding") find_package(PkgConfig) pkg_check_modules(PC_XCB xcb ${XCB_FIND_COMPONENTS}) find_library(XCB_LIBRARIES xcb HINTS ${PC_XCB_LIBRARY_DIRS}) find_path(XCB_INCLUDE_DIRS xcb/xcb.h PATH_SUFFIXES xcb HINTS ${PC_XCB_INCLUDE_DIRS}) foreach(COMPONENT ${XCB_FIND_COMPONENTS}) find_library(XCB_LIBRARIES_${COMPONENT} ${COMPONENT} HINTS ${PC_XCB_LIBRARY_DIRS}) list(APPEND XCB_LIBRARIES ${XCB_LIBRARIES_${COMPONENT}}) mark_as_advanced(XCB_LIBRARIES_${COMPONENT}) endforeach(COMPONENT ${XCB_FIND_COMPONENTS}) set(XCB_DEFINITIONS ${PC_XCB_CFLAGS_OTHER}) include(FindPackageHandleStandardArgs) find_package_handle_standard_args(XCB DEFAULT_MSG XCB_LIBRARIES XCB_INCLUDE_DIRS) mark_as_advanced(XCB_INCLUDE_DIRS XCB_LIBRARIES XCB_DEFINITIONS) ukui-panel-4.0.0.4/cmake/ukui-build-tools/find-modules/FindUDev.cmake0000644000175000017500000000527314560306203023701 0ustar fengfeng# - Try to find the UDev library # Once done this will define # # UDEV_FOUND - system has UDev # UDEV_INCLUDE_DIR - the libudev include directory # UDEV_LIBS - The libudev libraries # Copyright (c) 2010, Rafael Fernández López, # Copyright (c) 2016, Luís Pereira, # Copyright (c) 2019 Tianjin KYLIN Information Technology Co., Ltd. * # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # 3. Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. find_package(PkgConfig) pkg_check_modules(PC_UDEV libudev) find_path(UDEV_INCLUDE_DIR libudev.h HINTS ${PC_UDEV_INCLUDEDIR} ${PC_UDEV_INCLUDE_DIRS}) find_library(UDEV_LIBS udev HINTS ${PC_UDEV_LIBDIR} ${PC_UDEV_LIBRARY_DIRS}) if(UDEV_INCLUDE_DIR AND UDEV_LIBS) include(CheckFunctionExists) include(CMakePushCheckState) cmake_push_check_state() set(CMAKE_REQUIRED_LIBRARIES ${UDEV_LIBS} ) cmake_pop_check_state() endif() set(UDEV_VERSION_STRING ${PC_UDEV_VERSION}) include(FindPackageHandleStandardArgs) find_package_handle_standard_args(UDev REQUIRED_VARS UDEV_INCLUDE_DIR UDEV_LIBS VERSION_VAR ${UDEV_VERSION_STRING}) mark_as_advanced(UDEV_INCLUDE_DIR UDEV_LIBS) include(FeatureSummary) set_package_properties(UDev PROPERTIES URL "https://www.kernel.org/pub/linux/utils/kernel/hotplug/udev/udev.html" DESCRIPTION "Linux dynamic device management") ukui-panel-4.0.0.4/cmake/ukui-build-tools/find-modules/FindXKBCommon.cmake0000644000175000017500000001022314560306203024622 0ustar fengfeng#.rst: # FindXKBCommon # ----------- # # Try to find XKBCommon. # # This is a component-based find module, which makes use of the COMPONENTS # and OPTIONAL_COMPONENTS arguments to find_module. The following components # are available:: # # XKBCommon X11 # # If no components are specified, this module will act as though all components # were passed to OPTIONAL_COMPONENTS. # # This module will define the following variables, independently of the # components searched for or found: # # ``XKBCommon_FOUND`` # TRUE if (the requested version of) XKBCommon is available # ``XKBCommon_VERSION`` # Found XKBCommon version # ``XKBCommon_TARGETS`` # A list of all targets imported by this module (note that there may be more # than the components that were requested) # ``XKBCommon_LIBRARIES`` # This can be passed to target_link_libraries() instead of the imported # targets # ``XKBCommon_INCLUDE_DIRS`` # This should be passed to target_include_directories() if the targets are # not used for linking # ``XKBCommon_DEFINITIONS`` # This should be passed to target_compile_options() if the targets are not # used for linking # # For each searched-for components, ``XKBCommon__FOUND`` will be set to # TRUE if the corresponding XKBCommon library was found, and FALSE otherwise. If # ``XKBCommon__FOUND`` is TRUE, the imported target # ``XKBCommon::`` will be defined. #============================================================================= # Copyright 2017 Luís Pereira # Copyright (c) 2019 Tianjin KYLIN Information Technology Co., Ltd. * # Documentation adapted from the KF5 FindWayland module. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # 3. The name of the author may not be used to endorse or promote products # derived from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. # IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT # NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #============================================================================= include(ECMFindModuleHelpers) ecm_find_package_version_check(XKBCommon) set(XKBCommon_known_components XKBCommon X11) unset(XKBCommon_XKBCommon_component_deps) set(XKBCommon_XKBCommon_pkg_config "xkbcommon") set(XKBCommon_XKBCommon_lib "xkbcommon") set(XKBCommon_XKBCommon_header "xkbcommon/xkbcommon.h") set(XKBCommon_X11_component_deps XKBCommon) set(XKBCommon_X11_pkg_config "xkbcommon-x11") set(XKBCommon_X11_lib "xkbcommon-x11") set(XKBCommon_X11_header "xkbcommon/xkbcommon-x11.h") ecm_find_package_parse_components(XKBCommon RESULT_VAR XKBCommon_components KNOWN_COMPONENTS ${XKBCommon_known_components} ) ecm_find_package_handle_library_components(XKBCommon COMPONENTS ${XKBCommon_components} ) find_package_handle_standard_args(XKBCommon FOUND_VAR XKBCommon_FOUND REQUIRED_VARS XKBCommon_LIBRARIES XKBCommon_INCLUDE_DIRS VERSION_VAR XKBCommon_VERSION HANDLE_COMPONENTS ) include(FeatureSummary) set_package_properties(XKBCommon PROPERTIES URL "https://xkbcommon.org" DESCRIPTION "A library to handle keyboard descriptions" ) ukui-panel-4.0.0.4/cmake/ukui-build-tools/find-modules/FindXdgUserDirs.cmake0000644000175000017500000000456414560306203025243 0ustar fengfeng#============================================================================= # Copyright 2015 Luís Pereira # Copyright (c) 2019 Tianjin KYLIN Information Technology Co., Ltd. * # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # 3. The name of the author may not be used to endorse or promote products # derived from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. # IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT # NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #============================================================================= # FindXdgUserDirs # # Try to find xdg-user-dirs-update. # # If the xdg-user-dirs-update executable is not in your PATH, you can provide # an alternative name or full path location with the # `XdgUserDirsUpdate_EXECUTABLE` variable. # # This will define the following variables: # # `XdgUserDirs_FOUND` # True if xdg-user-dirs-update is available. # # `XdgUserDirsUpdate_EXECUTABLE` # The xdg-user-dirs-update executable. # # Find xdg-user-dirs-update find_program(XdgUserDirsUpdate_EXECUTABLE NAMES xdg-user-dirs-update) include(FindPackageHandleStandardArgs) find_package_handle_standard_args(XdgUserDirs FOUND_VAR XdgUserDirs_FOUND REQUIRED_VARS XdgUserDirsUpdate_EXECUTABLE ) mark_as_advanced(XdgUserDirsUpdate_EXECUTABLE) ukui-panel-4.0.0.4/cmake/ukui-build-tools/find-modules/FindExif.cmake0000644000175000017500000000722314560306203023726 0ustar fengfeng# Copyright (c) 2010, Rafael Fernández López, # Copyright (c) 2016, Luís Pereira, # Copyright (c) 2019 Tianjin KYLIN Information Technology Co., Ltd. * # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # 3. Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. #.rst: # FindExif # ----------- # # Try to find the Exif library # # Once done this will define # # :: # # EXIF_FOUND - System has the Exif library # EXIF_INCLUDE_DIR - The Exif library include directory # EXIF_INCLUDE_DIRS - Location of the headers needed to use the Exif library # EXIF_LIBRARIES - The libraries needed to use the Exif library # EXIF_DEFINITIONS - Compiler switches required for using the Exif library # EXIF_VERSION_STRING - the version of the Exif library found # use pkg-config to get the directories and then use these values # in the find_path() and find_library() calls find_package(PkgConfig) pkg_check_modules(PC_EXIF libexif) set(EXIF_DEFINITIONS ${PC_EXIF_CFLAGS_OTHER}) find_path(EXIF_INCLUDE_DIR NAMES libexif/exif-data.h HINTS ${PC_EXIF_INCLUDEDIR} ${PC_EXIF_INCLUDE_DIRS} PATH_SUFFIXES libexif ) find_library(EXIF_LIBRARIES NAMES exif libexif HINTS ${PC_EXIF_LIBDIR} ${PC_EXIF_LIBRARY_DIRS} ) # iterate over all dependencies unset(FD_LIBRARIES) foreach(depend ${PC_EXIF_LIBRARIES}) find_library(_DEPEND_LIBRARIES NAMES ${depend} HINTS ${PC_EXIF_LIBDIR} ${PC_EXIF_LIBRARY_DIRS} ) if (_DEPEND_LIBRARIES) list(APPEND FD_LIBRARIES ${_DEPEND_LIBRARIES}) endif() unset(_DEPEND_LIBRARIES CACHE) endforeach() set(EXIF_VERSION_STRING ${PC_EXIF_VERSION}) set(EXIF_INCLUDE_DIR ${PC_EXIF_INCLUDEDIR}) list(APPEND EXIF_INCLUDE_DIRS ${EXIF_INCLUDE_DIR} ${PC_EXIF_INCLUDE_DIRS} ) list(REMOVE_DUPLICATES EXIF_INCLUDE_DIRS) list(APPEND EXIF_LIBRARIES ${FD_LIBRARIES} ) list(REMOVE_DUPLICATES EXIF_LIBRARIES) # handle the QUIETLY and REQUIRED arguments and set EXIF_FOUND to TRUE if # all listed variables are TRUE include(FindPackageHandleStandardArgs) find_package_handle_standard_args(Exif REQUIRED_VARS EXIF_LIBRARIES EXIF_INCLUDE_DIR EXIF_INCLUDE_DIRS VERSION_VAR EXIF_VERSION_STRING) mark_as_advanced(EXIF_INCLUDE_DIR EXIF_LIBRARIES) ukui-panel-4.0.0.4/cmake/ukui-build-tools/ukui-build-tools-config.cmake0000644000175000017500000000564014560306203024320 0ustar fengfeng# UDEV_FOUND - system has UDev # UDEV_INCLUDE_DIR - the libudev include directory # UDEV_LIBS - The libudev libraries # Copyright (c) 2010, Rafael Fernández López, # Copyright (c) 2016, Luís Pereira, # Copyright (c) 2019 Tianjin KYLIN Information Technology Co., Ltd. * # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # 3. Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. ####### Expanded from @PACKAGE_INIT@ by configure_package_config_file() ####### ####### Any changes to this file will be overwritten by the next CMake run #### ####### The input file was ukui-build-tools-config.cmake.in ######## get_filename_component(PACKAGE_PREFIX_DIR "${CMAKE_CURRENT_LIST_DIR}/../../../" ABSOLUTE) macro(set_and_check _var _file) set(${_var} "${_file}") if(NOT EXISTS "${_file}") message(FATAL_ERROR "File or directory ${_file} referenced by variable ${_var} does not exist !") endif() endmacro() macro(check_required_components _NAME) foreach(comp ${${_NAME}_FIND_COMPONENTS}) if(NOT ${_NAME}_${comp}_FOUND) if(${_NAME}_FIND_REQUIRED_${comp}) set(${_NAME}_FOUND FALSE) endif() endif() endforeach() endmacro() #################################################################################### set(UKUI_CMAKE_MODULES_DIR "${PACKAGE_PREFIX_DIR}/share/cmake/ukui-build-tools/modules/") set(UKUI_CMAKE_FIND_MODULES_DIR "${PACKAGE_PREFIX_DIR}/share/cmake/ukui-build-tools/find-modules/") list(APPEND CMAKE_MODULE_PATH "${UKUI_CMAKE_MODULES_DIR}" "${UKUI_CMAKE_FIND_MODULES_DIR}" ) ukui-panel-4.0.0.4/cmake/BuildPlugin.cmake0000644000175000017500000000750014560306203016650 0ustar fengfeng# - Try to find the UDev library # Once done this will define # # UDEV_FOUND - system has UDev # UDEV_INCLUDE_DIR - the libudev include directory # UDEV_LIBS - The libudev libraries # Copyright (c) 2010, Rafael Fernández López, # Copyright (c) 2016, Luís Pereira, # Copyright (c) 2019 Tianjin KYLIN Information Technology Co., Ltd. * # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # 3. Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. MACRO (BUILD_UKUI_PLUGIN NAME) set(PROGRAM "ukui-panel") project(${PROGRAM}_${NAME}) set(PROG_SHARE_DIR ${CMAKE_INSTALL_FULL_DATAROOTDIR}/ukui/${PROGRAM}) set(PLUGIN_SHARE_DIR ${PROG_SHARE_DIR}/${NAME}) # Translations ********************************** # ukui_translate_ts(${PROJECT_NAME}_QM_FILES # UPDATE_TRANSLATIONS ${UPDATE_TRANSLATIONS} # SOURCES # ${HEADERS} # ${SOURCES} # ${MOCS} # ${UIS} # TEMPLATE # ${NAME} # INSTALL_DIR # ${UKUI_TRANSLATIONS_DIR}/${PROGRAM}/${NAME} # ) file (GLOB ${PROJECT_NAME}_DESKTOP_FILES_IN resources/*.desktop.in) ukui_translate_desktop(DESKTOP_FILES SOURCES ${${PROJECT_NAME}_DESKTOP_FILES_IN} ) #************************************************ file (GLOB CONFIG_FILES resources/*.conf) if (NOT DEFINED PLUGIN_DIR) set (PLUGIN_DIR ${CMAKE_INSTALL_FULL_LIBDIR}/${PROGRAM}) endif (NOT DEFINED PLUGIN_DIR) set(QTX_LIBRARIES Qt5::Widgets) if(QT_USE_QTXML) set(QTX_LIBRARIES ${QTX_LIBRARIES} Qt5::Xml) endif() if(QT_USE_QTDBUS) set(QTX_LIBRARIES ${QTX_LIBRARIES} Qt5::DBus) endif() list(FIND STATIC_PLUGINS ${NAME} IS_STATIC) set(SRC ${HEADERS} ${SOURCES} ${QM_LOADER} ${MOC_SOURCES} ${${NAME}_QM_FILES} ${RESOURCES} ${UIS} ${DESKTOP_FILES}) if (${IS_STATIC} EQUAL -1) # not static add_library(${NAME} MODULE ${SRC}) # build dynamically loadable modules install(TARGETS ${NAME} DESTINATION ${PLUGIN_DIR}) # install the *.so file else() # static add_library(${NAME} STATIC ${SRC}) # build statically linked lib endif() #target_link_libraries(${NAME} ${QTX_LIBRARIES} ${LIBRARIES} KF5::WindowSystem) target_link_libraries(${NAME} ${QTX_LIBRARIES} ${LIBRARIES} KF5::WindowSystem) install(FILES ${CONFIG_FILES} DESTINATION ${PLUGIN_SHARE_DIR}) install(FILES ${DESKTOP_FILES} DESTINATION ${PROG_SHARE_DIR}) ENDMACRO(BUILD_UKUI_PLUGIN) ukui-panel-4.0.0.4/man/0000755000175000017500000000000014567026260013132 5ustar fengfengukui-panel-4.0.0.4/man/panel-daemon.10000644000175000017500000000042014567026260015550 0ustar fengfeng.TH ukui "1" "2024-02-20" "UKUI 4.0.0" "UKUI Desktop Panel Module" .SH NAME panel-daemon \- The config daemon for ukui-panel .SH SYNOPSIS .B panel-daemon .br .SH DESCRIPTION panel daemon .SH "REPORTING BUGS" Report bugs to https://gitee.com/openkylin/ukui-panel/issues .P ukui-panel-4.0.0.4/man/ukui-panel.10000644000175000017500000000217514567026260015273 0ustar fengfeng.TH ukui "1" "2024-02-20" "UKUI 4.0.0" "UKUI Desktop Panel Module" .SH NAME ukui-panel \- The Panel for the UKUI Desktop Environment .SH SYNOPSIS .B ukui-panel .br .SH DESCRIPTION This module adds a panel, with optional plugins, to the desktop. .SH BEHAVIOR The panel can be run independently of \fBUKUI\fR, autostarted at logon, and have multiple instances. A horizontal bottom panel shows by default on the desktop, but the size, autohide, and other attributes .P The panel is comprised of plugins which provide a visual widget; like the startmenu, taskbar, or quicklaunch. They can be added or removed in the panel Widget settings. .P Several plugins are loaded by default; the desktop menu and windows workspaces are also managed here. .SH CONFIGURATIONS Right-click over any plugin to reach the panel Configure settings option, or that of each respective plugin. .SH "REPORTING BUGS" Report bugs to https://gitee.com/openkylin/ukui-panel/issues .SH "SEE ALSO" .SS Ukui Panel documentation can be found under "Help" by right-clicking on \fBukui-panel\fR. Further information may also be available at: https://gitee.com/openkylin/ukui-panel .P ukui-panel-4.0.0.4/man/ukui-flash-disk.10000644000175000017500000000112514567026260016213 0ustar fengfeng.TH ukui "1" "2024-02-20" "UKUI 4.0.0" "UKUI Desktop Environment" .SH NAME ukui-flash-disk \- The Tray Application for the UKUI Desktop Environment .SH SYNOPSIS .B ukui-flash-disk .br .SH DESCRIPTION This is tray application for ukui-panel .SH BEHAVIOR Ukui-flash-disk tray application can detect whether there is external storage medium mounted Click to open the content of the storage medium .P Ukui-flash-disk can according to the detected signal to determine whether to display in the tray bar .SH "REPORTING BUGS" Report bugs to https://gitee.com/openkylin/ukui-panel/issues .SH "SEE ALSO" ukui-panel-4.0.0.4/man/sni-xembed-proxy.10000644000175000017500000000044614567026260016432 0ustar fengfeng.TH ukui "1" "2024-02-20" "UKUI 4.0.0" "UKUI Desktop Panel Module" .SH NAME sni-xembed-proxy \- The sni xembed proxy for ukui-panel .SH SYNOPSIS .B sni-xembed-proxy .br .SH DESCRIPTION sni xembed proxy daemon .SH "REPORTING BUGS" Report bugs to https://gitee.com/openkylin/ukui-panel/issues .P ukui-panel-4.0.0.4/man/sni-daemon.10000644000175000017500000000040714567026260015247 0ustar fengfeng.TH ukui "1" "2024-02-20" "UKUI 4.0.0" "UKUI Desktop Panel Module" .SH NAME sni-daemon \- The sni daemon for ukui-panel .SH SYNOPSIS .B sni-daemon .br .SH DESCRIPTION sni daemon .SH "REPORTING BUGS" Report bugs to https://gitee.com/openkylin/ukui-panel/issues .P ukui-panel-4.0.0.4/ukui-panel.md0000644000175000017500000001641514560306221014751 0ustar fengfeng``` 此文档主要介绍任务栏的接口和主要功能实现逻辑。 ``` ## 任务栏介绍 任务栏采用插件加载机制,主要包含startbar(开始菜单),taskbar(窗口切换区),statusnotifier(托盘区),calendar(日历),showdesktop(显示桌面)这6个插件,下面依次介绍每个插件的功能: * startbar 此插件包含开始菜单按钮和显示任务视图按钮,当这两个按钮被左键点击时,任务栏会调用并执行开始菜单或多任务视图所对应的二进制文件,实现相应的功能。 在开始菜单按钮上右键可以看到任务栏提供的一些操作(1)用户操作,包括锁屏和注销;(2)休眠或睡眠,依据机器是否支持休眠操作决定休眠选项是否可选;(3)电源,包括重启,定时关机和关机操作。 显示任务视图按钮是否展示对应任务栏空白处右键菜单的“显示任务视图按钮”项是否勾选 * taskbar 此区域主要用来展示用户固定到任务栏的应用,以及所有已经打开的应用的图标,通过图标的点击可实现窗口切换。taskbar提供的接口主要有: (1)将应用固定到任务栏:此接口主要提供给开始菜单和搜索将应用固定到任务栏使用,它们向任务栏; (2)从任务栏取消固定:此接口主要提供给开始菜单和搜索将应用固定到任务栏使用; (3)应用分组显示接口:此接口主要实现让同一应用的图标显示在一起,每个应用都有一个组名,组名相同的则将图标放在一起显示,此接口主要由panel-daemon后台服务进程供,当有新窗口打开时,首先检测是否存在已经打开的此应用,如有则作为一组图标显示,若没有则在任务栏增加新的按钮。 * statusnotifier 托盘区的功能是为应用创建一个快捷操作按钮,可以执行相关操作或显示应用状态。应用可通过SNI协议将图标注册到托盘区域。 * calendar 日历插件主要用于显示日历界面和时间,左键单击可以调出日历界面,右键单击可进入控制面板的时间和日期的设置界面。 * showdesktop 显示桌面按钮的功能是在当前窗口和桌面之间进行切换。 ## 任务栏的主要功能 * 调整位置和调整大小 任务栏有上下左右四个位置可供选择,每个位置有大中小三个尺寸,可通过右键点击任务栏空白处调出右键菜单进行调节,也可通过gsettings命令进行调节。 获取任务栏当前位置命令:gsettings get org.ukui.panel.settings panelposition ,其中0代表下,1代表上,2代表左,3代表右。 调整位置命令:gsettings set org.ukui.panel.settings panelposition 1,表示将任务栏设置为上方。 获取任务栏当前大小命名:gsettings get org.ukui.panel.settings panelsize,返回值为任务栏的高度像素值,小尺寸为46,中尺寸为70,大尺寸为92。 调整大小命令:gsettings set org.ukui.panel.settings panelsize 92,表示将任务栏设置为大尺寸,设置的数值可以为任意值 * 隐藏任务栏 点击任务栏右键菜单中的隐藏任务栏选项,任务栏进入隐藏状态,留有四像素边距,鼠标进入此边距时可以唤醒任务栏,鼠标离开后又会进入隐藏状态。此状态存储于任务栏配置文件中的hidable中。 * 锁定任务栏 点击任务栏右键菜单中的锁定任务栏选项后,任务栏将不能被修改位置和大小,不能设置隐藏。此状态存储于任务栏配置文件中的lockPanel中。 ## 配置文件与用户设置 * 配置文件作用 根目录任务栏配置文件地址:/usr/share/ukui/panel.conf 用户目录任务栏配置文件地址:~/.config/ukui/panel.conf 它们的作用分别是: (1)根目录下的配置文件决定了任务栏需要加载哪些插件,即/usr/share/ukui/panel.conf文件中 [panel1] 字段的plugins的值; (2)用户目录下的配置文件保存了用户的设置,包括任务栏固定了哪些应用图标,任务栏的位置和大小,隐藏和显示,以及托盘区哪些应用显示在收纳栏里的设置; (3)每次安装任务栏的包或者是进行任务栏升级,更新的只有根目录下的配置文件,而不会修改用户目录下的配置文件,避免了装包或升级导致的用户配置消失的问题。 * 配置文件内容 [panel1] alignment=-1 【任务栏位置居左,0代表居中,1代表居右】 animation-duration=100 【隐藏任务栏的动画时间为100ms】 desktop=0 【任务栏位于0桌面】 hidable=false 【任务栏是否隐藏,false代表不隐藏,true代表隐藏】 lineCount=1 【任务栏单行显示】 lockPanel=false 【任务栏是否锁定,false代表不锁定,true代表锁定】 plugins=startbar,taskbar,statusnotifier,calendar, showdesktop 【任务栏所需要加载的插件,注:此字段从根目录下的配置文件中读取】 position=Bottom 【任务栏的位置,Bottom代表下,Top代表上,Left代表左, Right代表右】 reserve-space=true show-delay=0 【延迟显示的时间】 visible-margin=true width=100 【任务栏的长度,数值代表的是占屏幕长度的百分比】 width-percent=true 【任务栏长度是否以百分比的形式显示】 其余字段为各个插件的显示位置和内容,如:3.1以上版本的任务栏的[taskbar]字段包含了固定在任务栏的应用有哪些,默认的是文件管理器,奇安信浏览器,WPS和软件商店 [statusnotifier]字段包含了托盘应用哪些放在收纳栏里面(hideApp),哪些放在收纳栏外边(showApp)。 ## 编译 在编译任务栏代码前需要安装debian/control文件中写到的编译依赖,安装完所有依赖后,新建一个build文件夹,在build目录下执行cmake .. && make -j12 && sudo make install进行编译,编译通过后执行./panel/ukui-panel运行。 ## 调试 任务栏采用了ukui-log4qt模块的日志功能,输出的日志在用户目录下的.log文件夹内的ukui-panel.log中,如需调试可在终端输入tail -f ukui-panel.log命令,可实时查看任务栏的日志输出 ## 运行 任务栏的进程共有4个: ukui-panel 任务栏的GUI界面 panel-daemon 任务栏后台进程,负责监听任务栏添加和删除应用,以及应用的分组显示 sni-daemon SNI协议后台进程,负责托盘区图标的注册 sni-xembed-proxy 将使用X协议注册的托盘图标转换成SNI协议 任务栏的进程均为开机自启动进程 ## 任务栏提供的DBUS接口 * 服务:com.ukui.panel.desktop 路径:/ 接口:com.ukui.panel.desktop 方法:AddToTaskbar (String desktop) ↦ (Boolean arg_0) //添加到任务栏 方法:CheckIfExist (String desktop) ↦ (Boolean arg_0) //检测任务栏是否已经存在此应用 方法:RemoveFromTaskbar (String desktop) ↦ (Boolean arg_0) //从任务栏移除 * 服务:org.ukui.panel.daemon 路径:/convert/desktopwid 接口:org.ukui.panel.daemon 方法:WIDToDesktop (Int32 id) ↦ (String arg_0) //根据窗口id找到其对应的desktop文件,进行分组显示 ukui-panel-4.0.0.4/sni-xembed-proxy/0000755000175000017500000000000014560306203015560 5ustar fengfengukui-panel-4.0.0.4/sni-xembed-proxy/snidbus.cpp0000755000175000017500000000765114560306203017747 0ustar fengfeng/* * Copyright (C) 2019 Tianjin KYLIN Information Technology Co., Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see #include //mostly copied from KStatusNotiferItemDbus.cpps from knotification KDbusImageStruct::KDbusImageStruct() { } KDbusImageStruct::KDbusImageStruct(const QImage &image) { width = image.size().width(); height = image.size().height(); if (image.format() == QImage::Format_ARGB32) { data = QByteArray((char *)image.bits(), image.byteCount()); } else { QImage image32 = image.convertToFormat(QImage::Format_ARGB32); data = QByteArray((char *)image32.bits(), image32.byteCount()); } //swap to network byte order if we are little endian if (QSysInfo::ByteOrder == QSysInfo::LittleEndian) { quint32 *uintBuf = (quint32 *) data.data(); for (uint i = 0; i < data.size() / sizeof(quint32); ++i) { *uintBuf = qToBigEndian(*uintBuf); ++uintBuf; } } } // Marshall the ImageStruct data into a D-BUS argument const QDBusArgument &operator<<(QDBusArgument &argument, const KDbusImageStruct &icon) { argument.beginStructure(); argument << icon.width; argument << icon.height; argument << icon.data; argument.endStructure(); return argument; } // Retrieve the ImageStruct data from the D-BUS argument const QDBusArgument &operator>>(const QDBusArgument &argument, KDbusImageStruct &icon) { qint32 width; qint32 height; QByteArray data; argument.beginStructure(); argument >> width; argument >> height; argument >> data; argument.endStructure(); icon.width = width; icon.height = height; icon.data = data; return argument; } // Marshall the ImageVector data into a D-BUS argument const QDBusArgument &operator<<(QDBusArgument &argument, const KDbusImageVector &iconVector) { argument.beginArray(qMetaTypeId()); for (int i = 0; i < iconVector.size(); ++i) { argument << iconVector[i]; } argument.endArray(); return argument; } // Retrieve the ImageVector data from the D-BUS argument const QDBusArgument &operator>>(const QDBusArgument &argument, KDbusImageVector &iconVector) { argument.beginArray(); iconVector.clear(); while (!argument.atEnd()) { KDbusImageStruct element; argument >> element; iconVector.append(element); } argument.endArray(); return argument; } // Marshall the ToolTipStruct data into a D-BUS argument const QDBusArgument &operator<<(QDBusArgument &argument, const KDbusToolTipStruct &toolTip) { argument.beginStructure(); argument << toolTip.icon; argument << toolTip.image; argument << toolTip.title; argument << toolTip.subTitle; argument.endStructure(); return argument; } // Retrieve the ToolTipStruct data from the D-BUS argument const QDBusArgument &operator>>(const QDBusArgument &argument, KDbusToolTipStruct &toolTip) { QString icon; KDbusImageVector image; QString title; QString subTitle; argument.beginStructure(); argument >> icon; argument >> image; argument >> title; argument >> subTitle; argument.endStructure(); toolTip.icon = icon; toolTip.image = image; toolTip.title = title; toolTip.subTitle = subTitle; return argument; } ukui-panel-4.0.0.4/sni-xembed-proxy/xtestsender.cpp0000644000175000017500000000222614560306203020636 0ustar fengfeng/* Wrap XLIB code in a new file as it defines keywords that conflict with Qt * * Copyright (C) 2017 David Edmundson * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ #include #include "xtestsender.h" void sendXTestPressed(Display *display, int button) { XTestFakeButtonEvent(display, button, true, 0); } void sendXTestReleased(Display *display, int button) { XTestFakeButtonEvent(display, button, false, 0); } ukui-panel-4.0.0.4/sni-xembed-proxy/snidbus.h0000755000175000017500000000411214560306203017401 0ustar fengfeng/* * SNI Dbus serialisers * Copyright 2015 David Edmundson * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 2 of * the License or (at your option) version 3 or any later version * accepted by the membership of KDE e.V. (or its successor approved * by the membership of KDE e.V.), which shall act as a proxy * defined in Section 14 of version 3 of the license. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * */ #ifndef SNIDBUS_H #define SNIDBUS_H #include #include #include #include #include //Custom message type for DBus struct KDbusImageStruct { KDbusImageStruct(); KDbusImageStruct(const QImage &image); int width; int height; QByteArray data; }; typedef QVector KDbusImageVector; struct KDbusToolTipStruct { QString icon; KDbusImageVector image; QString title; QString subTitle; }; const QDBusArgument &operator<<(QDBusArgument &argument, const KDbusImageStruct &icon); const QDBusArgument &operator>>(const QDBusArgument &argument, KDbusImageStruct &icon); Q_DECLARE_METATYPE(KDbusImageStruct) const QDBusArgument &operator<<(QDBusArgument &argument, const KDbusImageVector &iconVector); const QDBusArgument &operator>>(const QDBusArgument &argument, KDbusImageVector &iconVector); Q_DECLARE_METATYPE(KDbusImageVector) const QDBusArgument &operator<<(QDBusArgument &argument, const KDbusToolTipStruct &toolTip); const QDBusArgument &operator>>(const QDBusArgument &argument, KDbusToolTipStruct &toolTip); Q_DECLARE_METATYPE(KDbusToolTipStruct) #endif // SNIDBUS_H ukui-panel-4.0.0.4/sni-xembed-proxy/org.freedesktop.DBus.Properties.xml0000755000175000017500000000207514560306203024401 0ustar fengfeng ukui-panel-4.0.0.4/sni-xembed-proxy/CMakeLists.txt0000644000175000017500000000250314560306203020320 0ustar fengfengcmake_minimum_required(VERSION 3.1.0) project(sni-xembed-proxy) set(CMAKE_INCLUDE_CURRENT_DIR ON) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) if(CMAKE_VERSION VERSION_LESS "3.7.0") set(CMAKE_INCLUDE_CURRENT_DIR ON) endif() find_package(Qt5 COMPONENTS Widgets Network REQUIRED) find_package(Qt5DBus REQUIRED) find_package(PkgConfig REQUIRED) find_package(KF5WindowSystem REQUIRED) find_package(Qt5X11Extras REQUIRED) find_package(X11 REQUIRED) add_executable(sni-xembed-proxy main.cpp snixembedproxy.cpp sniproxy.cpp snidbus.cpp statusnotifierwatcher_interface.cpp xtestsender.cpp snixembedproxy.h sniproxy.h snidbus.h statusnotifierwatcher_interface.h systemtraytypedefs.h xcbutilss.h xtestsender.h ) target_link_libraries(sni-xembed-proxy Qt5::X11Extras Qt5::Widgets Qt5::DBus KF5::WindowSystem xcb xcb-util xcb-damage xcb-image xcb-composite xcb-shape -lukui-log4qt -lQt5Xdg ${XCB_LIBS} ${X11_XTest_LIB} ) add_definitions(-DQT_NO_KEYWORDS) add_definitions(-DQT_MESSAGELOGCONTEXT) install(TARGETS sni-xembed-proxy DESTINATION bin) install(FILES resources/sni-xembed-proxy.desktop DESTINATION "/etc/xdg/autostart/" COMPONENT Runtime ) ukui-panel-4.0.0.4/sni-xembed-proxy/xtestsender.h0000644000175000017500000000207414560306203020304 0ustar fengfeng/* Wrap XLIB code in a new file as it defines keywords that conflict with Qt * * Copyright (C) 2017 David Edmundson * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ #ifndef XTEST_SENDER_H #define XTEST_SENDER_H typedef _XDisplay Display; void sendXTestPressed(Display *display, int button); void sendXTestReleased(Display *display, int button); #endif ukui-panel-4.0.0.4/sni-xembed-proxy/kf5_org.kde.StatusNotifierWatcher.xml0000644000175000017500000000217714560306203024707 0ustar fengfeng ukui-panel-4.0.0.4/sni-xembed-proxy/sniproxy.cpp0000755000175000017500000005730214560306203020171 0ustar fengfeng/* * Holds one embedded window, registers as DBus entry * Copyright (C) 2015 David Edmundson * Copyright (C) 2019 Konrad Materka * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ #include "sniproxy.h" #include #include #include #include #include #include #include "xcbutilss.h" #include #include #include #include #include #include #include #include #include #include #include #include //#include "statusnotifieritemadaptor.h" #include "statusnotifierwatcher_interface.h" #include "xtestsender.h" //#define VISUAL_DEBUG #define SNI_WATCHER_SERVICE_NAME "org.kde.StatusNotifierWatcher" #define SNI_WATCHER_PATH "/StatusNotifierWatcher" #define UKUI_PANEL_DAEMON "org.ukui.panel.daemon" #define UKUI_PANEL_DAEMON_PATH "/convert/desktopwid" #define UKUI_PANEL_DAEMON_INTERFACE "org.ukui.panel.daemon" #define UKUI_PANEL_DAEMON_METHOD "WIDToDesktop" static uint16_t s_embedSize = 32; //max size of window to embed. We no longer resize the embedded window as Chromium acts stupidly. static unsigned int XEMBED_VERSION = 0; int SNIProxy::s_serviceCount = 0; void xembed_message_send(xcb_window_t towin, long message, long d1, long d2, long d3) { xcb_client_message_event_t ev; ev.response_type = XCB_CLIENT_MESSAGE; ev.window = towin; ev.format = 32; ev.data.data32[0] = XCB_CURRENT_TIME; ev.data.data32[1] = message; ev.data.data32[2] = d1; ev.data.data32[3] = d2; ev.data.data32[4] = d3; ev.type = Xcb::atoms->xembedAtom; xcb_send_event(QX11Info::connection(), false, towin, XCB_EVENT_MASK_NO_EVENT, (char *) &ev); } SNIProxy::SNIProxy(xcb_window_t wid, QObject* parent): QObject(parent), //Work round a bug in our SNIWatcher with multiple SNIs per connection. //there is an undocumented feature that you can register an SNI by path, however it doesn't detect an object on a service being removed, only the entire service closing //instead lets use one DBus connection per SNI m_dbus(QDBusConnection::connectToBus(QDBusConnection::SessionBus, QStringLiteral("XembedSniProxy%1").arg(s_serviceCount++))), m_windowId(wid), sendingClickEvent(false), m_injectMode(Direct) { //create new SNI qRegisterMetaType("KDbusImageStruct"); qDBusRegisterMetaType(); qRegisterMetaType("KDbusImageVector"); qDBusRegisterMetaType(); m_dbus.registerObject(QStringLiteral("/StatusNotifierItem"), this,QDBusConnection::ExportAllContents); auto statusNotifierWatcher = new org::kde::StatusNotifierWatcher(QStringLiteral(SNI_WATCHER_SERVICE_NAME), QStringLiteral(SNI_WATCHER_PATH), QDBusConnection::sessionBus(), this); qDebug()<<"sni-proxy:RegisterStatusNotifierItem = " <RegisterStatusNotifierItem(m_dbus.baseService()); reply.waitForFinished(); if (reply.isError()) { qWarning() << "could not register SNI:" << reply.error().message(); } auto c = QX11Info::connection(); //create a container window auto screen = xcb_setup_roots_iterator (xcb_get_setup (c)).data; m_containerWid = xcb_generate_id(c); uint32_t values[3]; uint32_t mask = XCB_CW_BACK_PIXEL | XCB_CW_OVERRIDE_REDIRECT | XCB_CW_EVENT_MASK; values[0] = screen->black_pixel; //draw a solid background so the embedded icon doesn't get garbage in it values[1] = true; //bypass wM values[2] = XCB_EVENT_MASK_VISIBILITY_CHANGE | // receive visibility change, to handle KWin restart #357443 // Redirect and handle structure (size, position) requests from the embedded window. XCB_EVENT_MASK_STRUCTURE_NOTIFY | XCB_EVENT_MASK_SUBSTRUCTURE_NOTIFY | XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT; xcb_create_window (c, /* connection */ XCB_COPY_FROM_PARENT, /* depth */ m_containerWid, /* window Id */ screen->root, /* parent window */ 0, 0, /* x, y */ s_embedSize, s_embedSize, /* width, height */ 0, /* border_width */ XCB_WINDOW_CLASS_INPUT_OUTPUT,/* class */ screen->root_visual, /* visual */ mask, values); /* masks */ /* We need the window to exist and be mapped otherwise the child won't render it's contents We also need it to exist in the right place to get the clicks working as GTK will check sendEvent locations to see if our window is in the right place. So even though our contents are drawn via compositing we still put this window in the right place We can't composite it away anything parented owned by the root window (apparently) Stack Under works in the non composited case, but it doesn't seem to work in kwin's composited case (probably need set relevant NETWM hint) As a last resort set opacity to 0 just to make sure this container never appears */ #ifndef VISUAL_DEBUG stackContainerWindow(XCB_STACK_MODE_BELOW); NETWinInfo wm(c, m_containerWid, screen->root, NET::Properties(), NET::Properties2()); wm.setOpacity(0); #endif xcb_flush(c); xcb_map_window(c, m_containerWid); xcb_reparent_window(c, wid, m_containerWid, 0, 0); /* * Render the embedded window offscreen */ xcb_composite_redirect_window(c, wid, XCB_COMPOSITE_REDIRECT_MANUAL); /* we grab the window, but also make sure it's automatically reparented back * to the root window if we should die. */ xcb_change_save_set(c, XCB_SET_MODE_INSERT, wid); //tell client we're embedding it xembed_message_send(wid, XEMBED_EMBEDDED_NOTIFY, 0, m_containerWid, XEMBED_VERSION); //move window we're embedding const uint32_t windowMoveConfigVals[2] = { 0, 0 }; xcb_configure_window(c, wid, XCB_CONFIG_WINDOW_X | XCB_CONFIG_WINDOW_Y, windowMoveConfigVals); QSize clientWindowSize = calculateClientWindowSize(); //show the embedded window otherwise nothing happens xcb_map_window(c, wid); xcb_clear_area(c, 0, wid, 0, 0, clientWindowSize.width(), clientWindowSize.height()); xcb_flush(c); //guess which input injection method to use //we can either send an X event to the client or XTest //some don't support direct X events (GTK3/4), and some don't support XTest because reasons //note also some clients might not have the XTest extension. We may as well assume it does and just fail to send later. //we query if the client selected button presses in the event mask //if the client does supports that we send directly, otherwise we'll use xtest auto waCookie = xcb_get_window_attributes(c, wid); QScopedPointer windowAttributes(xcb_get_window_attributes_reply(c, waCookie, nullptr)); if (windowAttributes && ! (windowAttributes->all_event_masks & XCB_EVENT_MASK_BUTTON_PRESS)) { m_injectMode = XTest; } //there's no damage event for the first paint, and sometimes it's not drawn immediately //not ideal, but it works better than nothing //test with xchat before changing QTimer::singleShot(500, this, &SNIProxy::update); } SNIProxy::~SNIProxy() { auto c = QX11Info::connection(); xcb_destroy_window(c, m_containerWid); QDBusConnection::disconnectFromBus(m_dbus.name()); } void SNIProxy::update() { const QImage image = getImageNonComposite(); if (image.isNull()) { qDebug() << "No xembed icon for" << m_windowId << Title(); return; } int w = image.width(); int h = image.height(); m_pixmap = QPixmap::fromImage(image); if (w > s_embedSize || h > s_embedSize) { qDebug() << "Scaling pixmap of window" << m_windowId << Title() << "from w*h" << w << h; m_pixmap = m_pixmap.scaled(s_embedSize, s_embedSize, Qt::KeepAspectRatio, Qt::SmoothTransformation); } Q_EMIT NewIcon(); Q_EMIT NewToolTip(); } void SNIProxy::resizeWindow(const uint16_t width, const uint16_t height) const { auto connection = QX11Info::connection(); uint16_t widthNormalized = std::min(width, s_embedSize); uint16_t heighNormalized = std::min(height, s_embedSize); const uint32_t windowSizeConfigVals[2] = { widthNormalized, heighNormalized }; xcb_configure_window(connection, m_windowId, XCB_CONFIG_WINDOW_WIDTH | XCB_CONFIG_WINDOW_HEIGHT, windowSizeConfigVals); xcb_flush(connection); } void SNIProxy::hideContainerWindow(xcb_window_t windowId) const { if (m_containerWid == windowId && !sendingClickEvent) { qDebug() << "Container window visible, stack below"; stackContainerWindow(XCB_STACK_MODE_BELOW); } } QSize SNIProxy::calculateClientWindowSize() const { auto c = QX11Info::connection(); auto cookie = xcb_get_geometry(c, m_windowId); QScopedPointer clientGeom(xcb_get_geometry_reply(c, cookie, nullptr)); QSize clientWindowSize; if (clientGeom) { clientWindowSize = QSize(clientGeom->width, clientGeom->height); } //if the window is a clearly stupid size resize to be something sensible //this is needed as chromium and such when resized just fill the icon with transparent space and only draw in the middle //however KeePass2 does need this as by default the window size is 273px wide and is not transparent //use an artbitrary heuristic to make sure icons are always sensible if (clientWindowSize.isEmpty() || clientWindowSize.width() > s_embedSize || clientWindowSize.height() > s_embedSize) { qDebug() << "Resizing window" << m_windowId << Title() << "from w*h" << clientWindowSize; resizeWindow(s_embedSize, s_embedSize); clientWindowSize = QSize(s_embedSize, s_embedSize); } return clientWindowSize; } void sni_cleanup_xcb_image(void *data) { xcb_image_destroy(static_cast(data)); } bool SNIProxy::isTransparentImage(const QImage& image) const { int w = image.width(); int h = image.height(); // check for the center and sub-center pixels first and avoid full image scan if (! (qAlpha(image.pixel(w >> 1, h >> 1)) + qAlpha(image.pixel(w >> 2, h >> 2)) == 0)) return false; // skip scan altogether if sub-center pixel found to be opaque // and break out from the outer loop too on full scan for (int x = 0; x < w; ++x) { for (int y = 0; y < h; ++y) { if (qAlpha(image.pixel(x, y))) { // Found an opaque pixel. return false; } } } return true; } QImage SNIProxy::getImageNonComposite() const { auto c = QX11Info::connection(); QSize clientWindowSize = calculateClientWindowSize(); xcb_image_t *image = xcb_image_get(c, m_windowId, 0, 0, clientWindowSize.width(), clientWindowSize.height(), 0xFFFFFFFF, XCB_IMAGE_FORMAT_Z_PIXMAP); // Don't hook up cleanup yet, we may use a different QImage after all QImage naiveConversion; if (image) { naiveConversion = QImage(image->data, image->width, image->height, QImage::Format_ARGB32); } else { qDebug() << "Skip NULL image returned from xcb_image_get() for" << m_windowId << Title(); return QImage(); } if (isTransparentImage(naiveConversion)) { QImage elaborateConversion = QImage(convertFromNative(image)); // Update icon only if it is at least partially opaque. // This is just a workaround for X11 bug: xembed icon may suddenly // become transparent for a one or few frames. Reproducible at least // with WINE applications. if (isTransparentImage(elaborateConversion)) { qDebug() << "Skip transparent xembed icon for" << m_windowId << Title(); return QImage(); } else return elaborateConversion; } else { // Now we are sure we can eventually delete the xcb_image_t with this version return QImage(image->data, image->width, image->height, image->stride, QImage::Format_ARGB32, sni_cleanup_xcb_image, image); } } QImage SNIProxy::convertFromNative(xcb_image_t *xcbImage) const { QImage::Format format = QImage::Format_Invalid; switch (xcbImage->depth) { case 1: format = QImage::Format_MonoLSB; break; case 16: format = QImage::Format_RGB16; break; case 24: format = QImage::Format_RGB32; break; case 30: { // Qt doesn't have a matching image format. We need to convert manually quint32 *pixels = reinterpret_cast(xcbImage->data); for (uint i = 0; i < (xcbImage->size / 4); i++) { int r = (pixels[i] >> 22) & 0xff; int g = (pixels[i] >> 12) & 0xff; int b = (pixels[i] >> 2) & 0xff; pixels[i] = qRgba(r, g, b, 0xff); } // fall through, Qt format is still Format_ARGB32_Premultiplied Q_FALLTHROUGH(); } case 32: format = QImage::Format_ARGB32_Premultiplied; break; default: return QImage(); // we don't know } QImage image(xcbImage->data, xcbImage->width, xcbImage->height, xcbImage->stride, format, sni_cleanup_xcb_image, xcbImage); if (image.isNull()) { return QImage(); } if (format == QImage::Format_RGB32 && xcbImage->bpp == 32) { QImage m = image.createHeuristicMask(); QBitmap mask(QPixmap::fromImage(m)); QPixmap p = QPixmap::fromImage(image); p.setMask(mask); image = p.toImage(); } // work around an abort in QImage::color if (image.format() == QImage::Format_MonoLSB) { image.setColorCount(2); image.setColor(0, QColor(Qt::white).rgb()); image.setColor(1, QColor(Qt::black).rgb()); } return image; } /* Wine is using XWindow Shape Extension for transparent tray icons. We need to find first clickable point starting from top-left. */ QPoint SNIProxy::calculateClickPoint() const { QPoint clickPoint = QPoint(0, 0); auto c = QX11Info::connection(); // request extent to check if shape has been set xcb_shape_query_extents_cookie_t extentsCookie = xcb_shape_query_extents(c, m_windowId); // at the same time make the request for rectangles (even if this request isn't needed) xcb_shape_get_rectangles_cookie_t rectaglesCookie = xcb_shape_get_rectangles(c, m_windowId, XCB_SHAPE_SK_BOUNDING); QScopedPointer extentsReply(xcb_shape_query_extents_reply(c, extentsCookie, nullptr)); QScopedPointer rectanglesReply(xcb_shape_get_rectangles_reply(c, rectaglesCookie, nullptr)); if (!extentsReply || !rectanglesReply || !extentsReply->bounding_shaped) { return clickPoint; } xcb_rectangle_t *rectangles = xcb_shape_get_rectangles_rectangles(rectanglesReply.get()); if (!rectangles) { return clickPoint; } const QImage image = getImageNonComposite(); double minLength = sqrt(pow(image.height(), 2) + pow(image.width(), 2)); const int nRectangles = xcb_shape_get_rectangles_rectangles_length(rectanglesReply.get()); for (int i = 0; i < nRectangles; ++i) { double length = sqrt(pow(rectangles[i].x, 2) + pow(rectangles[i].y, 2)); if (length < minLength) { minLength = length; clickPoint = QPoint(rectangles[i].x, rectangles[i].y); } } qDebug() << "Click point:" << clickPoint; return clickPoint; } void SNIProxy::stackContainerWindow(const uint32_t stackMode) const { auto c = QX11Info::connection(); const uint32_t stackData[] = {stackMode}; xcb_configure_window(c, m_containerWid, XCB_CONFIG_WINDOW_STACK_MODE, stackData); } QString SNIProxy::winidtoDesktopFileName(const WId& wid) const { QDBusInterface iface(UKUI_PANEL_DAEMON, UKUI_PANEL_DAEMON_PATH, UKUI_PANEL_DAEMON_INTERFACE, QDBusConnection::sessionBus()); if(iface.isValid()) { QDBusReply reply = iface.call(UKUI_PANEL_DAEMON_METHOD, int(wid)); QString processExeName = reply.value(); return processExeName; } else { return QString(); } } //____________properties__________ QString SNIProxy::Category() const { return QStringLiteral("ApplicationStatus"); } QString SNIProxy::Id() const { KWindowInfo window (m_windowId, NET::WMName,NET::WM2WindowClass); const auto title = window.windowClassClass(); //we always need /some/ ID so if no window title exists, just use the winId. if (title.isEmpty()) { return QString::number(m_windowId); } return title; } KDbusImageVector SNIProxy::IconPixmap() const { KDbusImageStruct dbusImage(m_pixmap.toImage()); return KDbusImageVector() << dbusImage; } bool SNIProxy::ItemIsMenu() const { return false; } QString SNIProxy::Status() const { return QStringLiteral("Active"); } QString SNIProxy::Title() const { KWindowInfo window (m_windowId, NET::WMName,NET::WM2WindowClass); //根据应用的dekstop文件查找中文名 QString toolTip; QString appDesktopPath = winidtoDesktopFileName(window.win()); if(QFile::exists(appDesktopPath)){ XdgDesktopFile xdg; xdg.load(appDesktopPath); toolTip = xdg.localizedValue("Name").toString(); if(!toolTip.isEmpty()){ return toolTip; } } toolTip = QString(window.windowClassClass()); return toolTip; } int SNIProxy::WindowId() const { return m_windowId; } //____________actions_____________ void SNIProxy::Activate(int x, int y) { sendClick(XCB_BUTTON_INDEX_1, x, y); } void SNIProxy::SecondaryActivate(int x, int y) { sendClick(XCB_BUTTON_INDEX_2, x, y); } void SNIProxy::ContextMenu(int x, int y) { sendClick(XCB_BUTTON_INDEX_3, x, y); } void SNIProxy::Scroll(int delta, const QString& orientation) { if (orientation == QLatin1String("vertical")) { sendClick(delta > 0 ? XCB_BUTTON_INDEX_4: XCB_BUTTON_INDEX_5, 0, 0); } else { sendClick(delta > 0 ? 6: 7, 0, 0); } } void SNIProxy::sendClick(uint8_t mouseButton, int x, int y) { //it's best not to look at this code //GTK doesn't like send_events and double checks the mouse position matches where the window is and is top level //in order to solve this we move the embed container over to where the mouse is then replay the event using send_event //if patching, test with xchat + xchat context menus //note x,y are not actually where the mouse is, but the plasmoid //ideally we should make this match the plasmoid hit area // ukui-panel (StatusNotifierHost) send scaled x, y. but pointer get from xcb is not. // rescale input x, y to make sure the calculate work with highdpi sacle. float scale = qApp->devicePixelRatio(); x = x * scale; y = y * scale; qDebug() << "Received click" << mouseButton << "with passed x*y" << x << y; sendingClickEvent = true; auto c = QX11Info::connection(); auto cookieSize = xcb_get_geometry(c, m_windowId); QScopedPointer clientGeom(xcb_get_geometry_reply(c, cookieSize, nullptr)); if (!clientGeom) { return; } auto cookie = xcb_query_pointer(c, m_windowId); QScopedPointer pointer(xcb_query_pointer_reply(c, cookie, nullptr)); //move our window so the mouse is within its geometry uint32_t configVals[2] = {0, 0}; const QPoint clickPoint = calculateClickPoint(); if (mouseButton >= XCB_BUTTON_INDEX_4) { //scroll event, take pointer position configVals[0] = pointer->root_x; configVals[1] = pointer->root_y; } else { if (pointer->root_x > x + clientGeom->width) configVals[0] = pointer->root_x - clientGeom->width + 1; else configVals[0] = static_cast(x - clickPoint.x() - clientGeom->width / 2); if (pointer->root_y > y + clientGeom->height) configVals[1] = pointer->root_y - clientGeom->height + 1; else configVals[1] = static_cast(y - clickPoint.y() - clientGeom->height / 2); } xcb_configure_window(c, m_containerWid, XCB_CONFIG_WINDOW_X | XCB_CONFIG_WINDOW_Y, configVals); //pull window up stackContainerWindow(XCB_STACK_MODE_ABOVE); //mouse down if (m_injectMode == Direct) { xcb_button_press_event_t* event = new xcb_button_press_event_t; memset(event, 0x00, sizeof(xcb_button_press_event_t)); event->response_type = XCB_BUTTON_PRESS; event->event = m_windowId; event->time = QX11Info::getTimestamp(); event->same_screen = 1; event->root = QX11Info::appRootWindow(); event->root_x = x; event->root_y = y; event->event_x = static_cast(clickPoint.x()); event->event_y = static_cast(clickPoint.y()); event->child = 0; event->state = 0; event->detail = mouseButton; xcb_send_event(c, false, m_windowId, XCB_EVENT_MASK_BUTTON_PRESS, (char *) event); qInfo()<<"xEmbedToSNI::Forward button press events through the xcb_send_event"; delete event; } else { sendXTestPressed(QX11Info::display(), mouseButton); qInfo()<<"xEmbedToSNI::Forward button press events through the sendXTestPressed"; } //mouse up if (m_injectMode == Direct) { xcb_button_release_event_t* event = new xcb_button_release_event_t; memset(event, 0x00, sizeof(xcb_button_release_event_t)); event->response_type = XCB_BUTTON_RELEASE; event->event = m_windowId; event->time = QX11Info::getTimestamp(); event->same_screen = 1; event->root = QX11Info::appRootWindow(); event->root_x = x; event->root_y = y; event->event_x = static_cast(clickPoint.x()); event->event_y = static_cast(clickPoint.y()); event->child = 0; event->state = 0; event->detail = mouseButton; xcb_send_event(c, false, m_windowId, XCB_EVENT_MASK_BUTTON_RELEASE, (char *) event); qInfo()<<"xEmbedToSNI::Forward button release events through the xcb_send_event"; delete event; } else { sendXTestReleased(QX11Info::display(), mouseButton); qInfo()<<"xEmbedToSNI::Forward button release events through the sendXTestReleased"; } #ifndef VISUAL_DEBUG stackContainerWindow(XCB_STACK_MODE_BELOW); #endif sendingClickEvent = false; } ukui-panel-4.0.0.4/sni-xembed-proxy/xcbutilss.h0000755000175000017500000000702214560306203017755 0ustar fengfeng/******************************************************************** Copyright (C) 2012, 2013 Martin Graesslin Copyright (C) 2015 David Edmudson This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . *********************************************************************/ #ifndef KWIN_XCB_UTILS_H #define KWIN_XCB_UTILS_H #include #include #include #include #include #include #include #include #include #include /** XEMBED messages */ #define XEMBED_EMBEDDED_NOTIFY 0 #define XEMBED_WINDOW_ACTIVATE 1 #define XEMBED_WINDOW_DEACTIVATE 2 #define XEMBED_REQUEST_FOCUS 3 #define XEMBED_FOCUS_IN 4 #define XEMBED_FOCUS_OUT 5 #define XEMBED_FOCUS_NEXT 6 #define XEMBED_FOCUS_PREV 7 namespace Xcb { typedef xcb_window_t WindowId; template using ScopedCPointer = QScopedPointer; class Atom { public: explicit Atom(const QByteArray &name, bool onlyIfExists = false, xcb_connection_t *c = QX11Info::connection()) : m_connection(c) , m_retrieved(false) , m_cookie(xcb_intern_atom_unchecked(m_connection, onlyIfExists, name.length(), name.constData())) , m_atom(XCB_ATOM_NONE) , m_name(name) { } Atom() = delete; Atom(const Atom &) = delete; ~Atom() { if (!m_retrieved && m_cookie.sequence) { xcb_discard_reply(m_connection, m_cookie.sequence); } } operator xcb_atom_t() const { (const_cast(this))->getReply(); return m_atom; } bool isValid() { getReply(); return m_atom != XCB_ATOM_NONE; } bool isValid() const { (const_cast(this))->getReply(); return m_atom != XCB_ATOM_NONE; } inline const QByteArray &name() const { return m_name; } private: void getReply() { if (m_retrieved || !m_cookie.sequence) { return; } ScopedCPointer reply(xcb_intern_atom_reply(m_connection, m_cookie, nullptr)); if (!reply.isNull()) { m_atom = reply->atom; } m_retrieved = true; } xcb_connection_t *m_connection; bool m_retrieved; xcb_intern_atom_cookie_t m_cookie; xcb_atom_t m_atom; QByteArray m_name; }; class Atoms { public: Atoms() : xembedAtom("_XEMBED"), selectionAtom(xcb_atom_name_by_screen("_NET_SYSTEM_TRAY", QX11Info::appScreen())), opcodeAtom("_NET_SYSTEM_TRAY_OPCODE"), messageData("_NET_SYSTEM_TRAY_MESSAGE_DATA"), visualAtom("_NET_SYSTEM_TRAY_VISUAL") {} Atom xembedAtom; Atom selectionAtom; Atom opcodeAtom; Atom messageData; Atom visualAtom; }; extern Atoms* atoms; } // namespace Xcb #endif // KWIN_XCB_UTILS_H ukui-panel-4.0.0.4/sni-xembed-proxy/sniproxy.h0000755000175000017500000001123614560306203017632 0ustar fengfeng/* * Holds one embedded window, registers as DBus entry * Copyright (C) 2015 David Edmundson * Copyright (C) 2019 Konrad Materka * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ #ifndef SNI_PROXY_H #define SNI_PROXY_H #include #include #include #include #include #include #include #include #include "snidbus.h" class SNIProxy : public QObject { Q_OBJECT Q_CLASSINFO("D-Bus Interface", "org.kde.StatusNotifierItem") Q_PROPERTY(QString Category READ Category) Q_PROPERTY(QString Id READ Id) Q_PROPERTY(QString Title READ Title) Q_PROPERTY(QString Status READ Status) Q_PROPERTY(int WindowId READ WindowId) Q_PROPERTY(bool ItemIsMenu READ ItemIsMenu) Q_PROPERTY(KDbusImageVector IconPixmap READ IconPixmap) public: explicit SNIProxy(xcb_window_t wid, QObject *parent = nullptr); ~SNIProxy() override; void update(); void resizeWindow(const uint16_t width, const uint16_t height) const; void hideContainerWindow(xcb_window_t windowId) const; /** * @return the category of the application associated to this item * @see Category */ QString Category() const; /** * @return the id of this item */ QString Id() const; /** * @return the title of this item */ QString Title() const; /** * @return The status of this item * @see Status */ QString Status() const; /** * @return The id of the main window of the application that controls the item */ int WindowId() const; /** * @return The item only support the context menu, the visualization should prefer sending ContextMenu() instead of Activate() */ bool ItemIsMenu() const; /** * @return a serialization of the icon data */ KDbusImageVector IconPixmap() const; public Q_SLOTS: //interaction /** * Shows the context menu associated to this item * at the desired screen position */ void ContextMenu(int x, int y); /** * Shows the main widget and try to position it on top * of the other windows, if the widget is already visible, hide it. */ void Activate(int x, int y); /** * The user activated the item in an alternate way (for instance with middle mouse button, this depends from the systray implementation) */ void SecondaryActivate(int x, int y); /** * Inform this item that the mouse wheel was used on its representation */ void Scroll(int delta, const QString &orientation); Q_SIGNALS: /** * Inform the systemtray that the own main icon has been changed, * so should be reloaded */ void NewIcon(); /** * Inform the systemtray that there is a new icon to be used as overlay */ void NewOverlayIcon(); /** * Inform the systemtray that the requesting attention icon * has been changed, so should be reloaded */ void NewAttentionIcon(); /** * Inform the systemtray that something in the tooltip has been changed */ void NewToolTip(); /** * Signal the new status when it has been changed * @see Status */ void NewStatus(const QString &status); private: enum InjectMode { Direct, XTest }; QSize calculateClientWindowSize() const; void sendClick(uint8_t mouseButton, int x, int y); QImage getImageNonComposite() const; bool isTransparentImage(const QImage &image) const; QImage convertFromNative(xcb_image_t *xcbImage) const; QPoint calculateClickPoint() const; void stackContainerWindow(const uint32_t stackMode) const; QString winidtoDesktopFileName(const WId& wid) const; QDBusConnection m_dbus; xcb_window_t m_windowId; xcb_window_t m_containerWid; static int s_serviceCount; QPixmap m_pixmap; bool sendingClickEvent; InjectMode m_injectMode; }; #endif // SNIPROXY_H ukui-panel-4.0.0.4/sni-xembed-proxy/resources/0000755000175000017500000000000014560306203017572 5ustar fengfengukui-panel-4.0.0.4/sni-xembed-proxy/resources/sni-xembed-proxy.desktop0000644000175000017500000000041214560306203024374 0ustar fengfeng[Desktop Entry] Name=sni-xembed-proxy Name[zh_CN]=x转sni服务 Comment=sni-xembed-proxy Comment[zh_CN]=x转sni服务 Exec=sni-xembed-proxy Terminal=false Type=Application OnlyShowIn=UKUI NoDisplay=true X-UKUI-AutoRestart=true X-UKUI-Autostart-Phase=Initialization ukui-panel-4.0.0.4/sni-xembed-proxy/main.cpp0000644000175000017500000000451714560306203017217 0ustar fengfeng/* * Copyright (C) 2019 Tianjin KYLIN Information Technology Co., Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see #include #include #include #include #include #include #include "xcbutilss.h" namespace Xcb { Xcb::Atoms* atoms; } int main(int argc, char *argv[]) { QApplication::setAttribute(Qt::AA_EnableHighDpiScaling); QApplication::setAttribute(Qt::AA_UseHighDpiPixmaps); #if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)) QApplication::setHighDpiScaleFactorRoundingPolicy(Qt::HighDpiScaleFactorRoundingPolicy::PassThrough); #endif initUkuiLog4qt("sni-xembed-proxy"); /*单例+vnc模式*/ QStringList homePath = QStandardPaths::standardLocations(QStandardPaths::HomeLocation); int fd = open(QString(homePath.at(0) + "/.config/sni-xembed-proxy.lock").toUtf8().data(), O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR); if (fd < 0) { exit(1); } if (lockf(fd, F_TLOCK, 0)) { syslog(LOG_ERR, "Can't lock single file, sni-xembed-proxy is already running!"); exit(0); } qputenv("QT_QPA_PLATFORM", "xcb"); QGuiApplication::setDesktopSettingsAware(false); QApplication app(argc, argv); auto disableSessionManagement = [](QSessionManager &sm) { sm.setRestartHint(QSessionManager::RestartNever); }; QObject::connect(&app, &QGuiApplication::commitDataRequest, disableSessionManagement); QObject::connect(&app, &QGuiApplication::saveStateRequest, disableSessionManagement); app.setQuitOnLastWindowClosed(false); Xcb::atoms = new Xcb::Atoms(); SniXembedProxy proxy; auto rc = app.exec(); delete Xcb::atoms; return rc; } ukui-panel-4.0.0.4/sni-xembed-proxy/kf5_org.kde.StatusNotifierItem.xml0000644000175000017500000000602714560306203024206 0ustar fengfeng ukui-panel-4.0.0.4/sni-xembed-proxy/statusnotifierwatcher_interface.cpp0000644000175000017500000000161214560306203024745 0ustar fengfeng/* * This file was generated by qdbusxml2cpp version 0.8 * Command line was: qdbusxml2cpp -m -c OrgKdeStatusNotifierWatcherInterface -i systemtraytypedefs.h -p statusnotifierwatcher_interface kf5_org.kde.StatusNotifierWatcher.xml * * qdbusxml2cpp is Copyright (C) 2020 The Qt Company Ltd. * * This is an auto-generated file. * This file may have been hand-edited. Look for HAND-EDIT comments * before re-generating it. */ #include "statusnotifierwatcher_interface.h" /* * Implementation of interface class OrgKdeStatusNotifierWatcherInterface */ OrgKdeStatusNotifierWatcherInterface::OrgKdeStatusNotifierWatcherInterface(const QString &service, const QString &path, const QDBusConnection &connection, QObject *parent) : QDBusAbstractInterface(service, path, staticInterfaceName(), connection, parent) { } OrgKdeStatusNotifierWatcherInterface::~OrgKdeStatusNotifierWatcherInterface() { } ukui-panel-4.0.0.4/sni-xembed-proxy/snixembedproxy.cpp0000644000175000017500000002102314560306203021342 0ustar fengfeng/* * Copyright (C) 2019 Tianjin KYLIN Information Technology Co., Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see #include #include #include #include #include #include #include #include "xcbutilss.h" #include "sniproxy.h" #define SYSTEM_TRAY_REQUEST_DOCK 0 #define SYSTEM_TRAY_BEGIN_MESSAGE 1 #define SYSTEM_TRAY_CANCEL_MESSAGE 2 SniXembedProxy::SniXembedProxy() { m_selectionOwner = new KSelectionOwner(Xcb::atoms->selectionAtom, -1, this); QTimer::singleShot(0, this, &SniXembedProxy::init); } SniXembedProxy::~SniXembedProxy() { } void SniXembedProxy::init() { //load damage extension xcb_connection_t *c = QX11Info::connection(); xcb_prefetch_extension_data(c, &xcb_damage_id); const auto *reply = xcb_get_extension_data(c, &xcb_damage_id); if (reply && reply->present) { m_damageEventBase = reply->first_event; xcb_damage_query_version_unchecked(c, XCB_DAMAGE_MAJOR_VERSION, XCB_DAMAGE_MINOR_VERSION); } else { //no XDamage means qDebug() << "could not load damage extension. Quitting"; qApp->exit(-1); } qApp->installNativeEventFilter(this); connect(m_selectionOwner, &KSelectionOwner::claimedOwnership, this, &SniXembedProxy::onClaimedOwnership); connect(m_selectionOwner, &KSelectionOwner::failedToClaimOwnership, this, &SniXembedProxy::onFailedToClaimOwnership); connect(m_selectionOwner, &KSelectionOwner::lostOwnership, this, &SniXembedProxy::onLostOwnership); m_selectionOwner->claim(false); } bool SniXembedProxy::nativeEventFilter(const QByteArray &eventType, void *message, long int *result) { Q_UNUSED(result) if (eventType != "xcb_generic_event_t") { return false; } xcb_generic_event_t *ev = static_cast(message); const auto responseType = XCB_EVENT_RESPONSE_TYPE(ev); if (responseType == XCB_CLIENT_MESSAGE) { const auto ce = reinterpret_cast(ev); if (ce->type == Xcb::atoms->opcodeAtom) { switch (ce->data.data32[1]) { case SYSTEM_TRAY_REQUEST_DOCK: dock(ce->data.data32[2]); return true; } } } else if (responseType == XCB_UNMAP_NOTIFY) { const auto unmappedWId = reinterpret_cast(ev)->window; if (m_proxies.contains(unmappedWId)) { undock(unmappedWId); } } else if (responseType == XCB_DESTROY_NOTIFY) { const auto destroyedWId = reinterpret_cast(ev)->window; if (m_proxies.contains(destroyedWId)) { undock(destroyedWId); } } else if (responseType == m_damageEventBase + XCB_DAMAGE_NOTIFY) { const auto damagedWId = reinterpret_cast(ev)->drawable; const auto sniProxy = m_proxies.value(damagedWId); if (sniProxy) { sniProxy->update(); xcb_damage_subtract(QX11Info::connection(), m_damageWatches[damagedWId], XCB_NONE, XCB_NONE); } } else if (responseType == XCB_CONFIGURE_REQUEST) { const auto event = reinterpret_cast(ev); const auto sniProxy = m_proxies.value(event->window); if (sniProxy) { // The embedded window tries to move or resize. Ignore move, handle resize only. if ((event->value_mask & XCB_CONFIG_WINDOW_WIDTH) || (event->value_mask & XCB_CONFIG_WINDOW_HEIGHT)) { sniProxy->resizeWindow(event->width, event->height); } } } else if (responseType == XCB_VISIBILITY_NOTIFY) { const auto event = reinterpret_cast(ev); // it's possible that something showed our container window, we have to hide it // workaround for BUG 357443: when KWin is restarted, container window is shown on top if (event->state == XCB_VISIBILITY_UNOBSCURED) { for (auto sniProxy : m_proxies.values()) { sniProxy->hideContainerWindow(event->window); } } } return false; } void SniXembedProxy::dock(xcb_window_t winId) { qDebug() << "trying to dock window " << winId; if (m_proxies.contains(winId)) { return; } if (addDamageWatch(winId)) { m_proxies[winId] = new SNIProxy(winId, this); } } void SniXembedProxy::undock(xcb_window_t winId) { qDebug() << "trying to undock window " << winId; if (!m_proxies.contains(winId)) { return; } m_proxies[winId]->deleteLater(); m_proxies.remove(winId); } bool SniXembedProxy::addDamageWatch(xcb_window_t client) { qDebug() << "adding damage watch for " << client; xcb_connection_t *c = QX11Info::connection(); const auto attribsCookie = xcb_get_window_attributes_unchecked(c, client); const auto damageId = xcb_generate_id(c); m_damageWatches[client] = damageId; xcb_damage_create(c, damageId, client, XCB_DAMAGE_REPORT_LEVEL_NON_EMPTY); xcb_generic_error_t *error = nullptr; QScopedPointer attr(xcb_get_window_attributes_reply(c, attribsCookie, &error)); QScopedPointer getAttrError(error); uint32_t events = XCB_EVENT_MASK_STRUCTURE_NOTIFY; if (!attr.isNull()) { events = events | attr->your_event_mask; } // if window is already gone, there is no need to handle it. if (getAttrError && getAttrError->error_code == XCB_WINDOW) { return false; } // the event mask will not be removed again. We cannot track whether another component also needs STRUCTURE_NOTIFY (e.g. KWindowSystem). // if we would remove the event mask again, other areas will break. const auto changeAttrCookie = xcb_change_window_attributes_checked(c, client, XCB_CW_EVENT_MASK, &events); QScopedPointer changeAttrError(xcb_request_check(c, changeAttrCookie)); // if window is gone by this point, it will be caught by eventFilter, so no need to check later errors. if (changeAttrError && changeAttrError->error_code == XCB_WINDOW) { return false; } return true; } void SniXembedProxy::onClaimedOwnership() { qDebug() << "Manager selection claimed"; setSystemTrayVisual(); } void SniXembedProxy::onFailedToClaimOwnership() { qWarning() << "failed to claim ownership of Systray Manager"; qApp->exit(-1); } void SniXembedProxy::onLostOwnership() { qWarning() << "lost ownership of Systray Manager"; qApp->exit(-1); } void SniXembedProxy::setSystemTrayVisual() { xcb_connection_t *c = QX11Info::connection(); auto screen = xcb_setup_roots_iterator(xcb_get_setup(c)).data; auto trayVisual = screen->root_visual; xcb_depth_iterator_t depth_iterator = xcb_screen_allowed_depths_iterator(screen); xcb_depth_t *depth = nullptr; while (depth_iterator.rem) { if (depth_iterator.data->depth == 32) { depth = depth_iterator.data; break; } xcb_depth_next(&depth_iterator); } if (depth) { xcb_visualtype_iterator_t visualtype_iterator = xcb_depth_visuals_iterator(depth); while (visualtype_iterator.rem) { xcb_visualtype_t *visualtype = visualtype_iterator.data; if (visualtype->_class == XCB_VISUAL_CLASS_TRUE_COLOR) { trayVisual = visualtype->visual_id; break; } xcb_visualtype_next(&visualtype_iterator); } } xcb_change_property(c, XCB_PROP_MODE_REPLACE, m_selectionOwner->ownerWindow(), Xcb::atoms->visualAtom, XCB_ATOM_VISUALID, 32, 1, &trayVisual); } ukui-panel-4.0.0.4/sni-xembed-proxy/snixembedproxy.h0000644000175000017500000000320514560306203021011 0ustar fengfeng/* * Copyright (C) 2019 Tianjin KYLIN Information Technology Co., Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see #include #include #include class KSelectionOwner; class SNIProxy; class SniXembedProxy : public QObject,public QAbstractNativeEventFilter { Q_OBJECT public: SniXembedProxy(); ~SniXembedProxy(); protected: bool nativeEventFilter(const QByteArray &eventType, void *message, long *result) override; private: void init(); bool addDamageWatch(xcb_window_t client); void dock(xcb_window_t embed_win); void undock(xcb_window_t client); void setSystemTrayVisual(); private Q_SLOTS: void onClaimedOwnership(); void onFailedToClaimOwnership(); void onLostOwnership(); private: uint8_t m_damageEventBase; QHash m_damageWatches; QHash m_proxies; KSelectionOwner *m_selectionOwner; }; #endif // SNIXEMBEDPROXY_H ukui-panel-4.0.0.4/sni-xembed-proxy/statusnotifierwatcher_interface.h0000644000175000017500000000535414560306203024421 0ustar fengfeng/* * This file was generated by qdbusxml2cpp version 0.8 * Command line was: qdbusxml2cpp -m -c OrgKdeStatusNotifierWatcherInterface -i systemtraytypedefs.h -p statusnotifierwatcher_interface kf5_org.kde.StatusNotifierWatcher.xml * * qdbusxml2cpp is Copyright (C) 2020 The Qt Company Ltd. * * This is an auto-generated file. * Do not edit! All changes made to it will be lost. */ #ifndef STATUSNOTIFIERWATCHER_INTERFACE_H #define STATUSNOTIFIERWATCHER_INTERFACE_H #include #include #include #include #include #include #include #include //#include "systemtraytypedefs.h" #include "snidbus.h" /* * Proxy class for interface org.kde.StatusNotifierWatcher */ class OrgKdeStatusNotifierWatcherInterface: public QDBusAbstractInterface { Q_OBJECT public: static inline const char *staticInterfaceName() { return "org.kde.StatusNotifierWatcher"; } public: OrgKdeStatusNotifierWatcherInterface(const QString &service, const QString &path, const QDBusConnection &connection, QObject *parent = nullptr); ~OrgKdeStatusNotifierWatcherInterface(); Q_PROPERTY(bool IsStatusNotifierHostRegistered READ isStatusNotifierHostRegistered) inline bool isStatusNotifierHostRegistered() const { return qvariant_cast< bool >(property("IsStatusNotifierHostRegistered")); } Q_PROPERTY(int ProtocolVersion READ protocolVersion) inline int protocolVersion() const { return qvariant_cast< int >(property("ProtocolVersion")); } Q_PROPERTY(QStringList RegisteredStatusNotifierItems READ registeredStatusNotifierItems) inline QStringList registeredStatusNotifierItems() const { return qvariant_cast< QStringList >(property("RegisteredStatusNotifierItems")); } public Q_SLOTS: // METHODS inline QDBusPendingReply<> RegisterStatusNotifierHost(const QString &service) { QList argumentList; argumentList << QVariant::fromValue(service); return asyncCallWithArgumentList(QStringLiteral("RegisterStatusNotifierHost"), argumentList); } inline QDBusPendingReply<> RegisterStatusNotifierItem(const QString &service) { QList argumentList; argumentList << QVariant::fromValue(service); return asyncCallWithArgumentList(QStringLiteral("RegisterStatusNotifierItem"), argumentList); } Q_SIGNALS: // SIGNALS void StatusNotifierHostRegistered(); void StatusNotifierHostUnregistered(); void StatusNotifierItemRegistered(const QString &in0); void StatusNotifierItemUnregistered(const QString &in0); }; namespace org { namespace kde { typedef ::OrgKdeStatusNotifierWatcherInterface StatusNotifierWatcher; } } #endif ukui-panel-4.0.0.4/sni-xembed-proxy/systemtraytypedefs.h0000755000175000017500000000365114560306203021731 0ustar fengfeng/*************************************************************************** * * * Copyright (C) 2009 Marco Martin * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA . * ***************************************************************************/ #ifndef SYSTEMTRAYTYPEDEFS_H #define SYSTEMTRAYTYPEDEFS_H #include #include #include struct KDbusImageStruct { int width; int height; QByteArray data; }; typedef QVector KDbusImageVector; struct KDbusToolTipStruct { QString icon; KDbusImageVector image; QString title; QString subTitle; }; Q_DECLARE_METATYPE(KDbusImageStruct) Q_DECLARE_METATYPE(KDbusImageVector) Q_DECLARE_METATYPE(KDbusToolTipStruct) #endif ukui-panel-4.0.0.4/README.md0000644000175000017500000000134614560306221013631 0ustar fengfeng# ukui-panel ukui-panel represents the taskbar of UKUI ## Table of Contents * [About Project](#About-Project) * [Getting Started](#Getting-Started) * [Document Introduction](#Document-Introduction) ## About Project ukui-panel contains the following plugins: * startbar * taskbar * statusnotifier * calendar * showdesktop ... ## Getting Started ```bash # Install ukui-panel apt install ukui-panel # build from source and test mkdir build & cd build cmake .. make sudo make install ./panel/ukui-panel ``` ## Document Introduction ukui-panel has plugins configuration file in ~/.config/ukui/panel.conf it decide the count and order of the ukui-panel's plugins For more details, please see ukui panel.md ukui-panel-4.0.0.4/COPYING0000644000175000017500000005763614560306203013422 0ustar fengfeng GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 Copyright (C) 1991, 1999 Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below. When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. GNU LESSER GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. 6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with. c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License. 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS ukui-panel-4.0.0.4/.github/0000755000175000017500000000000014560306203013706 5ustar fengfengukui-panel-4.0.0.4/.github/workflows/0000755000175000017500000000000014560306203015743 5ustar fengfengukui-panel-4.0.0.4/.github/workflows/build.yml0000644000175000017500000000741514560306203017574 0ustar fengfengname: Check build on: push: branches: - master pull_request: branches: - master schedule: - cron: '0 0 * * *' jobs: archlinux: name: on Archlinux runs-on: ubuntu-20.04 container: docker.io/library/archlinux:latest steps: - name: Checkout ukui-panel source code uses: actions/checkout@v2 - name: Refresh pacman repository and force upgrade run: pacman -Syyu --noconfirm - name: Install build dependencies run: pacman -S --noconfirm base-devel glibc qt5-base cmake qt5-tools dconf libdbusmenu-qt5 gsettings-qt kwindowsystem libqtxdg qt5-webkit peony - name: CMake configure & Make run: | mkdir build; cd build; cmake ..; make -j$(nproc); debian: name: on Debian Sid runs-on: ubuntu-20.04 container: docker.io/library/debian:sid env: DEBIAN_FRONTEND: noninteractive steps: - name: Checkout ukui-panel source code uses: actions/checkout@v2 - name: Update apt repository run: apt-get update -y - name: Install build dependcies run: apt-get install -y build-essential qt5-default qttools5-dev-tools debhelper-compat cmake libasound2-dev libdbusmenu-qt5-dev libglib2.0-dev libicu-dev libkf5solid-dev libkf5windowsystem-dev libpulse-dev libqt5svg5-dev libqt5x11extras5-dev libsensors4-dev libstatgrab-dev libsysstat-qt5-0-dev libx11-dev libxcb-damage0-dev libxcb-util0-dev libxcb-xkb-dev libxcomposite-dev libxdamage-dev libxkbcommon-dev libxkbcommon-x11-dev libxrender-dev libqt5webkit5-dev qttools5-dev libqt5xdg-dev libgsettings-qt-dev libpoppler-dev libpoppler-qt5-dev libpeony-dev libdconf-dev - name: CMake configure & Make run: | mkdir build; cd build; cmake ..; make -j$(nproc); fedora: name: on Fedora 32 runs-on: ubuntu-20.04 container: docker.io/library/fedora:32 steps: - name: Checkout ukui-panel source code uses: actions/checkout@v2 - name: Install build dependencies run: dnf install -y make gcc gcc-c++ which cmake cmake-rpm-macros autoconf automake intltool rpm-build qt5-devel qt5-rpm-macros qt5-qtbase-devel qt5-qttools-devel glib2-devel qt5-qtbase-devel dbusmenu-qt5-devel gsettings-qt-devel kf5-kwindowsystem-devel poppler-qt5-devel qt5-qtx11extras-devel qt5-qtbase-private-devel libqtxdg-devel libXcomposite-devel libXdamage-devel libXrender-devel dconf-devel libxcb-devel xcb-util-devel xcb-util-cursor-devel xcb-util-keysyms-devel xcb-util-image-devel xcb-util-wm-devel xcb-util-renderutil-devel - name: CMake configure & Make run: | mkdir build; cd build; cmake ..; make -j$(nproc); ubuntu: name: on Ubuntu 20.04 runs-on: ubuntu-20.04 container: docker.io/library/ubuntu:focal env: DEBIAN_FRONTEND: noninteractive steps: - name: Checkout ukui-panel source code uses: actions/checkout@v2 - name: Update apt repository run: apt-get update -y - name: Install build dependcies run: apt-get install -y build-essential qt5-default qttools5-dev-tools debhelper-compat cmake libasound2-dev libdbusmenu-qt5-dev libglib2.0-dev libicu-dev libkf5solid-dev libkf5windowsystem-dev libpulse-dev libqt5svg5-dev libqt5x11extras5-dev libsensors4-dev libstatgrab-dev libsysstat-qt5-0-dev libx11-dev libxcb-damage0-dev libxcb-util0-dev libxcb-xkb-dev libxcomposite-dev libxdamage-dev libxkbcommon-dev libxkbcommon-x11-dev libxrender-dev libqt5webkit5-dev qttools5-dev libqt5xdg-dev libgsettings-qt-dev libpoppler-dev libpoppler-qt5-dev libpeony-dev libdconf-dev - name: CMake configure & Make run: | mkdir build; cd build; cmake ..; make -j$(nproc); ukui-panel-4.0.0.4/plugin-startbar/0000755000175000017500000000000014572773443015505 5ustar fengfengukui-panel-4.0.0.4/plugin-startbar/startmenu_button.cpp0000664000175000017500000002436214572773443021637 0ustar fengfeng/* * Copyright (C) 2019 Tianjin KYLIN Information Technology Co., Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see setIcon(QIcon::fromTheme("kylin-startmenu",QIcon("/usr/share/ukui-panel/panel/img/startmenu.svg"))); QTimer::singleShot(5000,[this] {this->setToolTip(tr("UKUI Menu")); }); this->setIconSize(QSize(m_plugin->panel()->iconSize(),m_plugin->panel()->iconSize())); } StartMenuButton::~StartMenuButton() { } void StartMenuButton::setSystemStyle() { QPalette pal = this->palette(); QColor col = pal.color(QPalette::Active, QPalette::BrightText); col.setAlphaF(0.13); pal.setColor(QPalette::Button, col); this->setPalette(pal); } /*plugin-startmenu refresh function*/ void StartMenuButton::realign() { if (m_plugin->panel()->isHorizontal()) this->setFixedSize(m_plugin->panel()->panelSize(),m_plugin->panel()->panelSize()); else this->setFixedSize(m_plugin->panel()->panelSize(),m_plugin->panel()->panelSize()); this->setIconSize(QSize(m_plugin->panel()->iconSize(),m_plugin->panel()->iconSize())); } void StartMenuButton::mouseReleaseEvent(QMouseEvent* event) { const Qt::MouseButton b = event->button(); if (Qt::LeftButton == b) { QDBusInterface iface("org.ukui.menu", "/org/ukui/menu", "org.ukui.menu", QDBusConnection::sessionBus()); iface.asyncCall("WinKeyResponse"); } QToolButton::mouseReleaseEvent(event); } void StartMenuButton::contextMenuEvent(QContextMenuEvent *event) { rightPressMenu = new QMenu(this); rightPressMenu->setAttribute(Qt::WA_DeleteOnClose); QMenu *pUserAction = new QMenu(tr("User Action"), this); //用户操作 QMenu *pSleepHibernate = new QMenu(tr("Suspend or Hibernate"), this); //休眠或睡眠 QMenu *pPowerSupply = new QMenu(tr("Power Supply"), this); //电源 rightPressMenu->addMenu(pUserAction); if (QString::compare(getCanHibernateResult(),"yes") == 0 || QString::compare(getCanSuspendResult(),"yes") == 0) { rightPressMenu->addMenu(pSleepHibernate); } rightPressMenu->addMenu(pPowerSupply); pUserAction->addAction(QIcon::fromTheme("system-lock-screen-symbolic"), tr("Lock Screen"), this, SLOT(ScreenServer()) ); //锁屏 if (hasMultipleUsers() && canSwitch()) { pUserAction->addAction(QIcon::fromTheme("stock-people-symbolic"), tr("Switch User"), this, SLOT(SessionSwitch()) ); //切换用户 } pUserAction->addAction(QIcon::fromTheme("system-log-out-symbolic"), tr("Log Out"), this, SLOT(SessionLogout()) ); //注销 if(QString::compare(getCanHibernateResult(),"yes") == 0){ pSleepHibernate->addAction(QIcon::fromTheme("kylin-sleep-symbolic"), tr("Hibernate"), this, SLOT(SessionHibernate()) ); //休眠 } if(QString::compare(getCanSuspendResult(),"yes") == 0) { pSleepHibernate->addAction(QIcon::fromTheme("ukui-hebernate-symbolic"), tr("Suspend"), this, SLOT(SessionSuspend()) ); //睡眠 } pPowerSupply->addAction(QIcon::fromTheme("system-reboot-symbolic"), tr("Restart"), this, SLOT(SessionReboot()) ); //重启 QFileInfo file("/usr/bin/time-shutdown"); if(file.exists()) pPowerSupply->addAction(QIcon::fromTheme("ukui-shutdown-timer-symbolic"), tr("TimeShutdown"), this, SLOT(TimeShutdown()) ); //定时开关机 pPowerSupply->addAction(QIcon::fromTheme("system-shutdown-symbolic"), tr("Shut Down"), this, SLOT(SessionShutdown()) ); //关机 rightPressMenu->setGeometry(m_plugin->panel()->calculatePopupWindowPos(mapToGlobal(event->pos()), rightPressMenu->sizeHint())); rightPressMenu->show(); //解决触摸长按时显示出右键菜单后,按钮三态不消失问题 QObject::connect(rightPressMenu, &QMenu::destroyed, this, [&](){ this->setAttribute(Qt::WA_UnderMouse, false); this->setDown(false); this->update(); }); } /*开始菜单按钮右键菜单选项,与开始菜单中电源按钮的右键功能是相同的*/ //锁屏 void StartMenuButton::ScreenServer() { system("ukui-screensaver-command -l"); } //切换用户 void StartMenuButton::SessionSwitch() { QProcess::startDetached(QString("ukui-session-tools --switchuser")); } //注销 void StartMenuButton::SessionLogout() { system("ukui-session-tools --logout"); } //休眠 睡眠 void StartMenuButton::SessionHibernate() { system("ukui-session-tools --hibernate"); } //睡眠 void StartMenuButton::SessionSuspend() { system("ukui-session-tools --suspend"); } //重启 void StartMenuButton::SessionReboot() { system("ukui-session-tools --reboot"); } //定时关机 void StartMenuButton::TimeShutdown() { QProcess *process_timeshutdowm =new QProcess(this); process_timeshutdowm->startDetached("/usr/bin/time-shutdown"); process_timeshutdowm->deleteLater(); } //关机 void StartMenuButton::SessionShutdown() { system("ukui-session-tools --shutdown"); } //获取系统版本,若为ubuntu则取消休眠功能 void StartMenuButton::getOsRelease() { QFile file("/etc/lsb-release"); if (!file.open(QIODevice::ReadOnly)) qDebug() << "Read file Failed."; while (!file.atEnd()) { QByteArray line = file.readLine(); QString str(line); if (str.contains("DISTRIB_ID")){ version=str.remove("DISTRIB_ID="); version=str.remove("\n"); } } } //检测当前系统能否执行休眠操作 QString StartMenuButton::getCanHibernateResult() { QDBusInterface interface(LOGIN_SERVICE, LOGIN_PATH, LOGIN_INTERFACE, QDBusConnection::systemBus()); if (!interface.isValid()) { qCritical() << QDBusConnection::sessionBus().lastError().message(); return QString(""); } /*调用远程的 CanHibernate 方法,判断是否可以执行休眠的操作,返回值为yes为允许执行休眠,no为无法执行休眠 na为交换分区不足*/ QDBusReply reply = interface.call("CanHibernate"); if (reply.isValid()) { return reply.value(); } else { qCritical() << "Call Dbus method failed"; return QString(""); } } //检测当前系统能否执行睡眠操作 QString StartMenuButton::getCanSuspendResult() { QDBusInterface interface(LOGIN_SERVICE, LOGIN_PATH, LOGIN_INTERFACE, QDBusConnection::systemBus()); if (!interface.isValid()) { qCritical() << QDBusConnection::sessionBus().lastError().message(); return QString(""); } QDBusReply reply = interface.call("CanSuspend"); if (reply.isValid()) { return reply.value(); } else { qCritical() << "Call Dbus method failed"; return QString(""); } } bool StartMenuButton::hasMultipleUsers() { QDBusInterface interface("org.freedesktop.Accounts", "/org/freedesktop/Accounts", "org.freedesktop.DBus.Properties", QDBusConnection::systemBus()); if (!interface.isValid()) { qCritical() << QDBusConnection::systemBus().lastError().message(); return false; } QDBusReply reply = interface.call("Get","org.freedesktop.Accounts","HasMultipleUsers"); return reply.value().toBool(); } bool StartMenuButton::canSwitch() { QDBusInterface interface("org.freedesktop.DisplayManager", "/org/freedesktop/DisplayManager/Seat0", "org.freedesktop.DBus.Properties", QDBusConnection::systemBus()); if (!interface.isValid()) { qCritical() << QDBusConnection::systemBus().lastError().message(); return false; } else { QDBusReply reply = interface.call("Get","org.freedesktop.DisplayManager.Seat","CanSwitch"); return reply.value().toBool(); } } void StartMenuButton::enterEvent(QEvent *) { repaint(); return; } void StartMenuButton::leaveEvent(QEvent *) { repaint(); return; } ukui-panel-4.0.0.4/plugin-startbar/startmenu_button.h0000644000175000017500000000414614560306203021257 0ustar fengfeng/* * Copyright (C) 2019 Tianjin KYLIN Information Technology Co., Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see #include #include #include #include #include #include #include #include #include #include "../panel/iukuipanelplugin.h" #include "../panel/customstyle.h" #define LOGIN_SERVICE "org.freedesktop.login1" #define LOGIN_PATH "/org/freedesktop/login1" #define LOGIN_INTERFACE "org.freedesktop.login1.Manager" class StartMenuButton : public QToolButton { Q_OBJECT public: StartMenuButton(IUKUIPanelPlugin *plugin,QWidget* parent = 0); ~StartMenuButton(); void realign(); protected: void contextMenuEvent(QContextMenuEvent *event); void mouseReleaseEvent(QMouseEvent* event); void enterEvent(QEvent *); void leaveEvent(QEvent *); private: QMenu *rightPressMenu; IUKUIPanelPlugin * m_plugin; QString version; QWidget *m_parent; QGSettings *m_gsettings; void getOsRelease(); QString getCanHibernateResult(); QString getCanSuspendResult(); bool hasMultipleUsers(); bool canSwitch(); private slots: void ScreenServer(); void SessionSwitch(); void SessionLogout(); void SessionReboot(); void TimeShutdown(); void SessionShutdown(); void SessionSuspend(); void SessionHibernate(); void setSystemStyle(); }; #endif // STARTMENUBUTTON_H ukui-panel-4.0.0.4/plugin-startbar/taskview_button.cpp0000644000175000017500000001004414560306203021417 0ustar fengfeng/* * Copyright (C) 2019 Tianjin KYLIN Information Technology Co., Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see #include #define ORG_UKUI_STYLE "org.ukui.style" #define STYLE_NAME "styleName" TaskViewButton::TaskViewButton(IUKUIPanelPlugin *plugin,QWidget *parent): QToolButton(parent), m_parent(parent), m_plugin(plugin) { this->setParent(parent); setFocusPolicy(Qt::NoFocus); setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); this->setToolTip(tr("Show Taskview")); setProperty("useButtonPalette",true); setAutoRaise(true); setSystemStyle(); const QByteArray id(ORG_UKUI_STYLE); if (QGSettings::isSchemaInstalled(id)) { m_gsettings = new QGSettings(id); connect(m_gsettings, &QGSettings::changed, this, [=] (const QString &key) { if (key==STYLE_NAME) { setSystemStyle(); } }); } this->setIcon(QIcon::fromTheme("ukui-taskview-black-symbolic",QIcon("/usr/share/ukui-panel/panel/img/taskview-dark.svg"))); this->setProperty("useIconHighlightEffect", 0x2); this->setIconSize(QSize(m_plugin->panel()->iconSize(),m_plugin->panel()->iconSize())); this->setContextMenuPolicy(Qt::PreventContextMenu); } TaskViewButton::~TaskViewButton(){ } void TaskViewButton::setSystemStyle() { QPalette pal = this->palette(); QColor col = pal.color(QPalette::Active, QPalette::BrightText); col.setAlphaF(0.13); pal.setColor(QPalette::Button, col); this->setPalette(pal); } void TaskViewButton::realign() { if (m_plugin->panel()->isHorizontal()) { this->setFixedSize(m_plugin->panel()->panelSize(),m_plugin->panel()->panelSize()); } else { this->setFixedSize(m_plugin->panel()->panelSize(),m_plugin->panel()->panelSize()); } this->setIconSize(QSize(m_plugin->panel()->iconSize(),m_plugin->panel()->iconSize())); } void TaskViewButton::mousePressEvent(QMouseEvent *event) { const Qt::MouseButton b = event->button(); #if 0 //调用dbus接口 QString object = QString(getenv("DISPLAY")); object = object.trimmed().replace(":", "_").replace(".", "_").replace("-", "_"); object = "/org/ukui/WindowSwitch/display/" + object; QDBusInterface interface("org.ukui.WindowSwitch", object, "org.ukui.WindowSwitch", QDBusConnection::sessionBus()); if (!interface.isValid()) { qCritical() << QDBusConnection::sessionBus().lastError().message(); } if (Qt::LeftButton == b && interface.isValid()) { /* Call binary display task view * system("ukui-window-switch --show-workspace"); */ /*调用远程的value方法*/ QDBusReply reply = interface.call("handleWorkspace"); if (reply.isValid()) { if (!reply.value()) qWarning() << "Handle Workspace View Failed"; } else { qCritical() << "Call Dbus method failed"; } } #endif //调用命令 if (Qt::LeftButton == b){ QDBusInterface iface("org.ukui.KWin", "/MultitaskView", "org.ukui.KWin.MultitaskView", QDBusConnection::sessionBus()); iface.call("show"); system("ukui-window-switch --show-workspace"); } QWidget::mousePressEvent(event); } ukui-panel-4.0.0.4/plugin-startbar/startbar.h0000644000175000017500000000477514560306203017474 0ustar fengfeng/* * Copyright (C) 2019 Tianjin KYLIN Information Technology Co., Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see #include #include #include #include #include #include #include #include #include #include #include "../panel/ukuipanel.h" #include #include #include #include "startmenu_button.h" #include "taskview_button.h" #include "divider.h" class UKUIStartBarWidget; class UKUIStartbarPlugin: public QObject, public IUKUIPanelPlugin { Q_OBJECT public: explicit UKUIStartbarPlugin(const IUKUIPanelPluginStartupInfo &startupInfo); ~UKUIStartbarPlugin(); virtual QWidget *widget(); virtual QString themeId() const { return "startbar"; } virtual Flags flags() const { return NeedsHandle; } void realign(); bool isSeparate() const { return true; } private: UKUIStartBarWidget *m_widget; }; class StartBarLibrary: public QObject, public IUKUIPanelPluginLibrary { Q_OBJECT Q_PLUGIN_METADATA(IID "ukui.org/Panel/PluginInterface/3.0") Q_INTERFACES(IUKUIPanelPluginLibrary) public: IUKUIPanelPlugin *m_plugin; IUKUIPanelPlugin *instance(const IUKUIPanelPluginStartupInfo &startupInfo) const { return new UKUIStartbarPlugin(startupInfo); } }; class UKUIStartBarWidget:public QFrame { Q_OBJECT public: UKUIStartBarWidget(IUKUIPanelPlugin *plugin, QWidget* parent = 0); ~UKUIStartBarWidget(); void realign(); protected: private: IUKUIPanelPlugin *m_plugin; StartMenuButton *m_startMenuButton; TaskViewButton *m_taskViewButton; Divider *m_divider; QBoxLayout *m_layout; QGSettings *m_gsettings; private: void translator(); void showTaskviewButton(); }; #endif ukui-panel-4.0.0.4/plugin-startbar/CMakeLists.txt0000644000175000017500000000157114560306203020230 0ustar fengfengset(PLUGIN "startbar") set(HEADERS startbar.h startmenu_button.h taskview_button.h divider.h ) set(SOURCES startbar.cpp startmenu_button.cpp taskview_button.cpp divider.cpp ) set(UIS ) set(LIBRARIES ) install(FILES img/search.png DESTINATION "${PACKAGE_DATA_DIR}/plugin-assistant/img" COMPONENT Runtime ) #加载翻译文件 file(GLOB TS_FILES "${PROJECT_SOURCE_DIR}/plugin-startbar/translation/*.ts" ) #更新翻译文件并创建.qm文件 qt5_create_translation(QM_FILES ${PROJECT_SOURCE_DIR}/plugin-startbar ${TS_FILES}) set(${PLUGIN}_QM_FILES ${QM_FILES}) BUILD_UKUI_PLUGIN(${PLUGIN}) #安装翻译文件 set(STARTBAR_TRANSLATION_DIR "${PACKAGE_DATA_DIR}/plugin-startbar/translation") add_compile_definitions(STARTBAR_TRANSLATION_DIR="${STARTBAR_TRANSLATION_DIR}") install(FILES ${QM_FILES} DESTINATION ${STARTBAR_TRANSLATION_DIR}) ukui-panel-4.0.0.4/plugin-startbar/img/0000755000175000017500000000000014560306203016240 5ustar fengfengukui-panel-4.0.0.4/plugin-startbar/img/search.png0000644000175000017500000000144014560306203020212 0ustar fengfengPNG  IHDR szzIDATXV;KQπŠ Xܙ;.Z]PZ:Š]R”v_Q!>@MQ3/`9~yseG B2 !1.7x83.RZg@8~:c$NKRW/c-ď>םkԛJ̓*ILJN9C $C@{oCTg=yQfZ%E{8 rvï".B@qָh3Ff+sRR8yp7L#Nh8]6!_UX*韥&Z{<&\wj!^{s1nZQ⾔ ,mH\=8hk@q6phbn8zX7 w'ߴ\.׋D+(#q\{7(M,'IENDB`ukui-panel-4.0.0.4/plugin-startbar/divider.h0000644000175000017500000000241614560306203017266 0ustar fengfeng/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- * * Copyright (C) 2022-2023 KylinSoft Co., Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * Modify by zhaikangning 2023/8/2:修正Copyright公司名称 */ #ifndef DIVIDER_H #define DIVIDER_H #include class Divider : public QFrame { public: Divider(bool useLightPal = false, QWidget * parent = nullptr); ~Divider() = default; private: bool m_useLightPal; QColor m_color; private Q_SLOTS: void onPaletteChanged(); protected: void paintEvent(QPaintEvent * e); }; #endif // DIVIDER_H ukui-panel-4.0.0.4/plugin-startbar/resources/0000755000175000017500000000000014560306203017476 5ustar fengfengukui-panel-4.0.0.4/plugin-startbar/resources/startbar.desktop.in0000644000175000017500000000015214560306203023316 0ustar fengfeng[Desktop Entry] Type=Service ServiceTypes=UKUIPanel/Plugin Name=Startbar Comment=startbar Icon=start-menu ukui-panel-4.0.0.4/plugin-startbar/divider.cpp0000644000175000017500000000427414560306203017625 0ustar fengfeng/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- * * Copyright (C) 2022-2023 KylinSoft Co., Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * This File Copy From Kylin-nm Modify by zhaikangning 2023.8.1 */ #include "divider.h" #include #include #include #define THEME_SCHAME "org.ukui.style" #define COLOR_THEME "styleName" Divider::Divider(bool useLightPal, QWidget * parent) :m_useLightPal(useLightPal), QFrame(parent) { /**修改主题时paletteChanged 信号并未触发,这里注释掉并监听主题GSettings进行palette的更新**/ //connect(qApp, &QApplication::paletteChanged, this ,&Divider::onPaletteChanged); onPaletteChanged(); const QByteArray id("org.ukui.style"); if (QGSettings::isSchemaInstalled(id)) { QGSettings *styleGsettings = new QGSettings(id, QByteArray(), this); connect(styleGsettings, &QGSettings::changed, [=](const QString key){ if ((key.compare("style-name") == 0) || (key.compare("styleName") == 0)) { onPaletteChanged(); } }); } } void Divider::onPaletteChanged() { QPalette pal = qApp->palette(); m_color = pal.color(QPalette::BrightText); m_color.setAlphaF(0.08); update(); } void Divider::paintEvent(QPaintEvent * e) { QPainter p(this); p.save(); p.setBrush(m_color); p.setPen(Qt::transparent); p.drawRoundedRect(this->rect(), 0, 0); p.restore(); return QFrame::paintEvent(e); } ukui-panel-4.0.0.4/plugin-startbar/taskview_button.h0000644000175000017500000000245414560306203021072 0ustar fengfeng/* * Copyright (C) 2019 Tianjin KYLIN Information Technology Co., Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see #include #include "../panel/customstyle.h" #include "../panel/iukuipanelplugin.h" class TaskViewButton :public QToolButton { Q_OBJECT public: TaskViewButton(IUKUIPanelPlugin *plugin,QWidget *parent=nullptr); ~TaskViewButton(); void realign(); protected: void mousePressEvent(QMouseEvent* event); private: QWidget *m_parent; IUKUIPanelPlugin * m_plugin; QGSettings *m_gsettings; bool m_isDarkStyle; private slots: void setSystemStyle(); }; #endif // TASKVIEWBUTTON_H ukui-panel-4.0.0.4/plugin-startbar/startbar.cpp0000644000175000017500000000763114560306203020021 0ustar fengfeng/* * Copyright (C) 2019 Tianjin KYLIN Information Technology Co., Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see #include #include #include #include #include #define THEME_QT_SCHEMA "org.ukui.style" #define THEME_Style_Name "styleName" #define UKUI_PANEL_SETTINGS "org.ukui.panel.settings" #define SHOW_TASKVIEW "showtaskview" UKUIStartbarPlugin::UKUIStartbarPlugin(const IUKUIPanelPluginStartupInfo &startupInfo): QObject(), IUKUIPanelPlugin(startupInfo), m_widget(new UKUIStartBarWidget(this)) { m_widget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); } UKUIStartbarPlugin::~UKUIStartbarPlugin() { delete m_widget; } QWidget *UKUIStartbarPlugin::widget() { return m_widget; } void UKUIStartbarPlugin::realign() { m_widget->realign(); } UKUIStartBarWidget::UKUIStartBarWidget( IUKUIPanelPlugin *plugin, QWidget* parent ): m_plugin(plugin), m_layout(new QBoxLayout(QBoxLayout::LeftToRight, this)), m_divider(new Divider(false, this)), m_startMenuButton(new StartMenuButton(plugin, this)) { translator(); m_layout->setContentsMargins(0, 0, 0, 0); m_layout->setSpacing(0); m_layout->addWidget(m_startMenuButton); m_layout->addWidget(m_divider); m_layout->setAlignment(m_divider, Qt::AlignCenter); const QByteArray id(UKUI_PANEL_SETTINGS); if(QGSettings::isSchemaInstalled(id)) { m_gsettings = new QGSettings(id); } showTaskviewButton(); connect(m_gsettings, &QGSettings::changed, this, [=] (const QString &key){ if(key == SHOW_TASKVIEW) showTaskviewButton(); }); realign(); } void UKUIStartBarWidget::translator() { QTranslator *translator = new QTranslator(this); translator->load(QLocale(), "startbar", "_", STARTBAR_TRANSLATION_DIR); QCoreApplication::installTranslator(translator); } UKUIStartBarWidget::~UKUIStartBarWidget() { m_startMenuButton->deleteLater(); m_taskViewButton->deleteLater(); } /*plugin-startmenu refresh function*/ void UKUIStartBarWidget::realign() { if (m_plugin->panel()->isHorizontal()) { m_layout->setDirection(QBoxLayout::LeftToRight); m_divider->setFixedWidth(1); m_divider->setFixedHeight(m_plugin->panel()->panelSize()/3); } else { m_layout->setDirection(QBoxLayout::TopToBottom); m_divider->setFixedHeight(1); m_divider->setFixedWidth(m_plugin->panel()->panelSize()/3); } m_startMenuButton->realign(); if (this->findChild("TaskViewButton")) { m_taskViewButton->realign(); } } void UKUIStartBarWidget::showTaskviewButton() { if(m_gsettings->get(SHOW_TASKVIEW).toBool()){ if (!this->findChild("TaskViewButton")) { m_taskViewButton = new TaskViewButton(m_plugin,this); m_taskViewButton->setObjectName("TaskViewButton"); m_layout->addWidget(m_taskViewButton); } } else { if (this->findChild("TaskViewButton")) { if (m_taskViewButton != nullptr) { m_layout->removeWidget(m_taskViewButton); m_taskViewButton->deleteLater(); } } } } ukui-panel-4.0.0.4/plugin-startbar/translation/0000755000175000017500000000000014560306221020022 5ustar fengfengukui-panel-4.0.0.4/plugin-startbar/translation/startbar_bo_CN.ts0000644000175000017500000000566714560306203023272 0ustar fengfeng StartMenuButton UKUI Menu འགོ་རྩོམ་འདེམས་བྱང་། User Action འགུལ་སྟངས་གཏན་རང་འཁེལ། Suspend or Hibernate ངལ་གསོ། Power Supply གློག་ཁུངས། Lock Screen སྒྲོག་ཡོལ། Switch User སྤྱོད་མཁན་བརྗེ་བ། Log Out ཐོ་ཁོངས་ནས་འདོར་བ། Hibernate མལ་གསོ། Suspend མལ་གསོ་བ་། Restart བསྐྱར་སློང་། TimeShutdown དུས་ཆད་སྒོ་རྒྱག་སྒྲིག་འགོད། Shut Down འཁོར་ཁ་རྒྱག་པ། TaskViewButton Show Taskview ལས་འགན་མཐོང་སྣེ་འཆར་བའི་གནོན་མཐེབ། ukui-panel-4.0.0.4/plugin-startbar/translation/startbar_zh_CN.ts0000644000175000017500000000511014560306203023272 0ustar fengfeng StartMenuButton UKui Menu 开始菜单 UKUI Menu 开始菜单 User Action 用户操作 Suspend or Hibernate 休眠或睡眠 Power Supply 电源 Lock Screen 锁定屏幕 Switch User 切换用户 Log Out 注销 Hibernate 休眠 Suspend 睡眠 Restart 重启 TimeShutdown 定时关机 Shut Down 关机 TaskViewButton Show Taskview 显示任务视图 ukui-panel-4.0.0.4/plugin-ukcc/0000755000175000017500000000000014560306221014567 5ustar fengfengukui-panel-4.0.0.4/plugin-ukcc/alwaysdisplayonpanel.cpp0000644000175000017500000000560314560306221021542 0ustar fengfeng/* * * * Copyright (C) 2023, KylinSoft Co., Ltd. * * * * This program is free software: you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation, either version 3 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program. If not, see . * * * * Authors: Nicole * */ #include "alwaysdisplayonpanel.h" #include AlwaysDisplayonPanel::AlwaysDisplayonPanel(QWidget *parent) : QFrame(parent) { this->setMinimumSize(QSize(550, 0)); this->setMaximumSize(QSize(16777215, 16777215)); this->setFrameShape(QFrame::Box); m_alwaysDisplayonPanelLayout = new QVBoxLayout(this); m_alwaysDisplayonPanelLayout->setContentsMargins(0, 0, 0, 0); m_alwaysDisplayonPanelLayout->setSpacing(0); displayTaskview(); panelBtnDisplayChanged(); } void AlwaysDisplayonPanel::setFrame_Noframe(QFrame *frame) { frame->setMinimumSize(QSize(550, 60)); frame->setMaximumSize(QSize(16777215, 60)); frame->setFrameShape(QFrame::NoFrame); } void AlwaysDisplayonPanel::displayTaskview() { m_taskviewDisplayFrame = new QFrame(this); setFrame_Noframe(m_taskviewDisplayFrame); m_taskviewDisplayLayout = new QHBoxLayout(m_taskviewDisplayFrame); m_taskviewDisplayLayout->setContentsMargins(16, 0, 16, 0); m_taskviewDisplayLabel = new QLabel(m_taskviewDisplayFrame); m_taskviewDisplayLabel->setText(tr("Show Taskview")); m_taskviewDisplayBtn = new KSwitchButton(m_taskviewDisplayFrame); m_taskviewDisplayBtn->setObjectName("taskview"); m_taskviewDisplayBtn->setFixedSize(48,24); m_taskviewDisplayLayout->addWidget(m_taskviewDisplayLabel); m_taskviewDisplayLayout->addWidget(m_taskviewDisplayBtn); m_alwaysDisplayonPanelLayout->addWidget(m_taskviewDisplayFrame); } void AlwaysDisplayonPanel::panelBtnDisplayChanged() { const QByteArray id(UKUI_PANEL_SETTINGS); if(QGSettings::isSchemaInstalled(id)) { m_panelSettings = new QGSettings(id); m_taskviewDisplayBtn->setChecked(m_panelSettings->get(SHOW_TASKVIEW).toBool()); connect(m_panelSettings, &QGSettings::changed, this, [=] (const QString &key) { if (key == SHOW_TASKVIEW) { m_taskviewDisplayBtn->setChecked(m_panelSettings->get(SHOW_TASKVIEW).toBool()); } }); } connect(m_taskviewDisplayBtn, &KSwitchButton::stateChanged, [=](bool checked) { m_panelSettings->set(SHOW_TASKVIEW,checked); }); } ukui-panel-4.0.0.4/plugin-ukcc/CMakeLists.txt0000644000175000017500000000423414560306203017332 0ustar fengfengcmake_minimum_required(VERSION 3.5) project(plugin-panel LANGUAGES CXX) set(CMAKE_INCLUDE_CURRENT_DIR ON) set(CMAKE_AUTOUIC ON) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED ON) find_package(Qt5 COMPONENTS Core Widgets LinguistTools REQUIRED) find_package(PkgConfig) pkg_search_module(SDK_WIDGET REQUIRED kysdk-qtwidgets) pkg_check_modules(Gsetting REQUIRED gsettings-qt) pkg_check_modules(GIO2 REQUIRED gio-2.0) pkg_check_modules(GIOUNIX2 REQUIRED gio-unix-2.0) #加载翻译文件 file(GLOB TS_FILES "${PROJECT_SOURCE_DIR}/translation/*.ts" ) #更新翻译文件并创建.qm文件 qt5_create_translation(QM_FILES ${PROJECT_SOURCE_DIR} ${TS_FILES}) add_library(plugin-panel SHARED ${QM_FILES} ukccplugin.h ukccplugin.cpp generalsettings.h generalsettings.cpp alwaysdisplayonpanel.h alwaysdisplayonpanel.cpp ) include_directories(${SDK_WIDGET_INCLUDE_DIRS} ${Gsetting_INCLUDE_DIRS} ${GIO2_INCLUDE_DIRS} ${GIOUNIX2_INCLUDE_DIRS}) target_link_directories(plugin-panel PRIVATE ${SDK_WIDGET_LIBRARY_DIRS}) target_link_libraries(plugin-panel PRIVATE Qt5::Core Qt5::Widgets Qt5::Gui -lukcc ${Gsetting_LIBRARIES} ${GIO2_LIBRARIES} ${GIOUNIX2_LIBRARIES} ${SDK_WIDGET_LIBRARIES} ) target_compile_definitions(plugin-panel PRIVATE UNTITLED5_LIBRARY) get_target_property(QT_QMAKE_EXECUTABLE ${Qt5Core_QMAKE_EXECUTABLE} IMPORTED_LOCATION) macro(query_qmake args output) exec_program(${QT_QMAKE_EXECUTABLE} ARGS -query ${args} OUTPUT_VARIABLE ${output} RETURN_VALUE exitCode) if(NOT ${exitCode} EQUAL 0) message(FATAL_ERROR "exec ${QT_QMAKE_EXECUTABLE} failed.") endif() endmacro() query_qmake("QT_INSTALL_LIBS" QT_INSTALL_LIBS) #安装目标文件libplugin-panel.so install(TARGETS ${PROJECT_NAME} DESTINATION ${QT_INSTALL_LIBS}/ukui-control-center) message(STATUS ${QT_INSTALL_LIBS}) #安装翻译文件 set(UKCCPANEL_TRANSLATION_DIR "${PACKAGE_DATA_DIR}/plugin-ukccpanel/translation") add_compile_definitions(UKCCPANEL_TRANSLATION_DIR="${UKCCPANEL_TRANSLATION_DIR}") install(FILES ${QM_FILES} ${TS_FILES} DESTINATION ${UKCCPANEL_TRANSLATION_DIR}) ukui-panel-4.0.0.4/plugin-ukcc/ukccplugin.cpp0000644000175000017500000000731714560306221017447 0ustar fengfeng/* * * * Copyright (C) 2023, KylinSoft Co., Ltd. * * * * This program is free software: you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation, either version 3 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program. If not, see . * * * * Authors: Nicole * */ #include "ukccplugin.h" #include UkccPlugin::UkccPlugin() : mFirstLoad(true) { QTranslator *translator = new QTranslator(this); translator->load(QLocale(), "ukccpanel", "_", UKCCPANEL_TRANSLATION_DIR); QApplication::installTranslator(translator); pluginName = tr("Panel"); pluginType = SYSTEM; } UkccPlugin::~UkccPlugin() { } QString UkccPlugin::plugini18nName() { return pluginName; } int UkccPlugin::pluginTypes() { return PERSONALIZED; } QWidget *UkccPlugin::pluginUi() { // 需要加上这个判断标志位,否则每次点击都会新建一个QWidget(只加载一次) if (mFirstLoad) { widget = new QWidget; mFirstLoad = false; initUI(); } return widget; } bool UkccPlugin::isEnable() const { return true; } const QString UkccPlugin::name() const { return QStringLiteral("ukccpanel"); } bool UkccPlugin::isShowOnHomePage() const { //任务栏不需要显示在控制面板首页上 return false; } QIcon UkccPlugin::icon() const { return QIcon("/usr/share/ukui-panel/panel/img/ukui-panel-symbolic.svg"); } QString UkccPlugin::translationPath() const { return "/usr/share/ukui-panel/plugin-ukccpanel/translation/ukccpanel_%1.ts"; } void UkccPlugin::initSearchText() { //~ contents_path /ukccpanel/Panel tr("Panel"); //~ contents_path /ukccpanel/Always show icon in panel tr("Always show icon in panel"); } void UkccPlugin::initUI() { // 整体布局 mverticalLayout = new QVBoxLayout(widget); mverticalLayout->setSpacing(8); mverticalLayout->setContentsMargins(0, 0, 0, 0); generalSettings(); displayBtnOnPanel(); mverticalLayout->addStretch(); } void UkccPlugin::setFrame_Noframe(QFrame *frame) { frame->setMinimumSize(QSize(550, 60)); frame->setMaximumSize(QSize(16777215, 60)); frame->setFrameShape(QFrame::NoFrame); } void UkccPlugin::generalSettings() { CustomTitleLabel = new TitleLabel(widget); CustomTitleLabel->setText(tr("Panel")); mverticalLayout->addWidget(CustomTitleLabel); m_generalSettingsFrame = new GeneralSettings(widget); mverticalLayout->addWidget(m_generalSettingsFrame); QSpacerItem *spaceitem = new QSpacerItem(40, 40, QSizePolicy::Fixed); mverticalLayout->addSpacerItem(spaceitem); } void UkccPlugin::displayBtnOnPanel() { m_panelDisplayLabel = new TitleLabel(widget); m_panelDisplayLabel->setText(tr("Always show icon in panel")); mverticalLayout->addWidget(m_panelDisplayLabel); m_alwaysDisplayonPanelFrame = new AlwaysDisplayonPanel(widget); mverticalLayout->addWidget(m_alwaysDisplayonPanelFrame); } QFrame *UkccPlugin::setLine(QFrame *frame) { QFrame *line = new QFrame(frame); line->setMinimumSize(QSize(0, 1)); line->setMaximumSize(QSize(16777215, 1)); line->setLineWidth(0); line->setFrameShape(QFrame::HLine); line->setFrameShadow(QFrame::Sunken); return line; } ukui-panel-4.0.0.4/plugin-ukcc/generalsettings.cpp0000644000175000017500000002706514560306221020503 0ustar fengfeng/* * * * Copyright (C) 2023, KylinSoft Co., Ltd. * * * * This program is free software: you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation, either version 3 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program. If not, see . * * * * Authors: Nicole * */ #include "generalsettings.h" #include GeneralSettings::GeneralSettings(QWidget *parent) : QFrame(parent) { this->setMinimumSize(QSize(550, 0)); this->setMaximumSize(QSize(16777215, 16777215)); this->setFrameShape(QFrame::Box); m_generalSettingsLayout = new QVBoxLayout(this); m_generalSettingsLayout->setContentsMargins(0, 0, 0, 0); m_generalSettingsLayout->setSpacing(0); mergeTaskgroup(); panelPosition(); panelSize(); hidePanel(); lockPanel(); } void GeneralSettings::setFrame_Noframe(QFrame *frame) { frame->setMinimumSize(QSize(550, 60)); frame->setMaximumSize(QSize(16777215, 60)); frame->setFrameShape(QFrame::NoFrame); } QFrame *GeneralSettings::setLine(QFrame *frame) { QFrame *line = new QFrame(frame); line->setMinimumSize(QSize(0, 1)); line->setMaximumSize(QSize(16777215, 1)); line->setLineWidth(0); line->setFrameShape(QFrame::HLine); line->setFrameShadow(QFrame::Sunken); return line; } void GeneralSettings::mergeTaskgroup() { m_mergeTaskgroupFrame = new QFrame(this); setFrame_Noframe(m_mergeTaskgroupFrame); m_mergeTaskgroupLayout = new QHBoxLayout(m_mergeTaskgroupFrame); m_mergeTaskgroupLayout->setContentsMargins(16, 0, 16, 0); m_mergeTaskgroupLabel = new QLabel(m_mergeTaskgroupFrame); m_mergeTaskgroupLabel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); m_mergeTaskgroupLabel->setText(tr("Merge icons on the taskbar")); m_mergeTaskgroup = new QComboBox(m_mergeTaskgroupFrame); m_mergeTaskgroup->setObjectName(GROUP_ENABLE); m_mergeTaskgroup->setMinimumWidth(320); QStringList panelicon_list; panelicon_list << tr("Always") << tr("Never"); m_mergeTaskgroup->insertItem(0, panelicon_list.at(0), "Always"); m_mergeTaskgroup->insertItem(1, panelicon_list.at(1), "Never"); m_mergeTaskgroupLayout->addWidget(m_mergeTaskgroupLabel); m_mergeTaskgroupLayout->addWidget(m_mergeTaskgroup); m_generalSettingsLayout->addWidget(m_mergeTaskgroupFrame); m_generalSettingsLayout->addWidget(setLine(this)); const QByteArray id(UKUI_PANEL_SETTINGS); if(QGSettings::isSchemaInstalled(id)) { m_panelSettings = new QGSettings(id); if (m_panelSettings->keys().contains(GROUP_ENABLE)) { bool groupenable = m_panelSettings->get(GROUP_ENABLE).toBool(); if(groupenable) { m_mergeTaskgroup->setCurrentIndex(0); } else { m_mergeTaskgroup->setCurrentIndex(1); } connect(m_panelSettings, &QGSettings::changed, this, [=] (const QString &key) { if (key == GROUP_ENABLE) { bool groupenable = m_panelSettings->get(GROUP_ENABLE).toBool(); if(groupenable) { m_mergeTaskgroup->setCurrentIndex(0); } else { m_mergeTaskgroup->setCurrentIndex(1); } } }); } } connect(m_mergeTaskgroup, QOverload::of(&QComboBox::currentIndexChanged), this, [=](int index) { switch (index) { case 0: m_panelSettings->set(GROUP_ENABLE, true); break; case 1: m_panelSettings->set(GROUP_ENABLE,false); break; default: m_panelSettings->set(GROUP_ENABLE, true); break; } }); } void GeneralSettings::panelPosition() { m_panelpositionFrame = new QFrame(this); setFrame_Noframe(m_panelpositionFrame); m_panelpositionLayout = new QHBoxLayout(m_panelpositionFrame); m_panelpositionLayout->setContentsMargins(16,0,16,0); m_panelpositionLebel = new QLabel(m_panelpositionFrame); m_panelpositionLebel->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding); m_panelpositionLebel->setText(tr("Taskbar Position")); m_panelpositionCombox = new QComboBox(m_panelpositionFrame); m_panelpositionCombox->setObjectName(PANEL_POSITION_KEY); m_panelpositionCombox->setMinimumWidth(320); QStringList panelsize_list; panelsize_list<< tr("Bottom") << tr("Up") << tr("Left")<insertItem(0, panelsize_list.at(0), tr("Bottom")); m_panelpositionCombox->insertItem(1, panelsize_list.at(1), tr("Up")); m_panelpositionCombox->insertItem(2, panelsize_list.at(2), tr("Left")); m_panelpositionCombox->insertItem(3, panelsize_list.at(3), tr("Right")); m_panelpositionCombox->setCurrentIndex(m_panelSettings->get(PANEL_POSITION_KEY).toInt()); connect(m_panelpositionCombox, QOverload::of(&QComboBox::currentIndexChanged), this, [=](int index) { m_panelSettings->set(PANEL_POSITION_KEY,index); }); connect(m_panelSettings, &QGSettings::changed, this, [=] (const QString &key) { if (key == PANEL_POSITION_KEY) { m_panelpositionCombox->setCurrentIndex(m_panelSettings->get(PANEL_POSITION_KEY).toInt()); } }); m_panelpositionCombox->setEnabled(!m_panelSettings->get(LOCK_PANEL_KEY).toBool()); m_panelpositionLayout->addWidget(m_panelpositionLebel); m_panelpositionLayout->addWidget(m_panelpositionCombox); m_generalSettingsLayout->addWidget(m_panelpositionFrame); m_generalSettingsLayout->addWidget(setLine(this)); } void GeneralSettings::panelSize() { m_panelsizeFrame = new QFrame(this); setFrame_Noframe(m_panelsizeFrame); m_panelsizeLayout = new QHBoxLayout(m_panelsizeFrame); m_panelsizeLayout->setContentsMargins(16,0,16,0); m_panelsizeLebel = new QLabel(m_panelsizeFrame); m_panelsizeLebel->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding); m_panelsizeLebel->setText(tr("Panel Size")); m_panelsizeCombox = new QComboBox(m_panelsizeFrame); m_panelsizeCombox->setObjectName(PANEL_SIZE_KEY); m_panelsizeCombox->setMinimumWidth(320); QStringList panelsize_list; panelsize_list<< tr("Small") << tr("Medium") << tr("Large"); m_panelsizeCombox->insertItem(0, panelsize_list.at(0), tr("Small")); m_panelsizeCombox->insertItem(1, panelsize_list.at(1), tr("Medium")); m_panelsizeCombox->insertItem(2, panelsize_list.at(2), tr("Large")); setPanelSizeComboxIndex(); connect(m_panelsizeCombox, QOverload::of(&QComboBox::currentIndexChanged), this, [=](int index) { switch (index) { case 1: m_panelSettings->set(PANEL_SIZE_KEY, 70); m_panelSettings->set(ICON_SIZE_KEY, 48); break; case 2: m_panelSettings->set(PANEL_SIZE_KEY, 92); m_panelSettings->set(ICON_SIZE_KEY, 64); break; default: m_panelSettings->set(PANEL_SIZE_KEY, 46); m_panelSettings->set(ICON_SIZE_KEY, 32); break; } }); connect(m_panelSettings, &QGSettings::changed, this, [=] (const QString &key) { if (key == PANEL_SIZE_KEY) { setPanelSizeComboxIndex(); } }); m_panelsizeLayout->addWidget(m_panelsizeLebel); m_panelsizeLayout->addWidget(m_panelsizeCombox); m_generalSettingsLayout->addWidget(m_panelsizeFrame); m_generalSettingsLayout->addWidget(setLine(this)); } void GeneralSettings::setPanelSizeComboxIndex() { int size = m_panelSettings->get(PANEL_SIZE_KEY).toInt(); switch (size) { case 70: m_panelsizeCombox->setCurrentIndex(1); break; case 92: m_panelsizeCombox->setCurrentIndex(2); break; default: m_panelsizeCombox->setCurrentIndex(0); break; } m_panelsizeCombox->setEnabled(!m_panelSettings->get(LOCK_PANEL_KEY).toBool()); } void GeneralSettings::lockPanel() { m_lockPanelFrame = new QFrame(this); setFrame_Noframe(m_lockPanelFrame); m_lockPanelLayout = new QHBoxLayout(m_lockPanelFrame); m_lockPanelLayout->setContentsMargins(16, 0, 16, 0); m_lockPanelLabel = new QLabel(m_lockPanelFrame); m_lockPanelLabel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); m_lockPanelLabel->setText(tr("Lock Panel")); m_lockPanelBtn = new KSwitchButton(m_lockPanelFrame); m_lockPanelBtn->setObjectName("lockpanel"); m_lockPanelBtn->setFixedSize(48,24); m_lockPanelLayout->addWidget(m_lockPanelLabel); m_lockPanelLayout->addWidget(m_lockPanelBtn); m_generalSettingsLayout->addWidget(m_lockPanelFrame); m_lockPanelBtn->setChecked(m_panelSettings->get(LOCK_PANEL_KEY).toBool()); connect(m_lockPanelBtn, &KSwitchButton::stateChanged, [=](bool checked) { m_panelSettings->set(LOCK_PANEL_KEY, checked); }); connect(m_panelSettings, &QGSettings::changed, this, [=](const QString &key){ if(key == LOCK_PANEL_KEY) { m_lockPanelBtn->setChecked(m_panelSettings->get(LOCK_PANEL_KEY).toBool()); if (m_hidePanelBtn) { m_hidePanelBtn->setEnabled(!m_panelSettings->get(LOCK_PANEL_KEY).toBool()); } if (m_panelsizeCombox) { m_panelsizeCombox->setEnabled(!m_panelSettings->get(LOCK_PANEL_KEY).toBool()); } if (m_panelpositionCombox) { m_panelpositionCombox->setEnabled(!m_panelSettings->get(LOCK_PANEL_KEY).toBool()); } } }); } void GeneralSettings::lockPanelChanged(bool lock) { QString filename = QString(QDir::homePath() + ".config/ukui/panel.conf"); QSettings settings(filename, QSettings::IniFormat); settings.setIniCodec("UTF-8"); settings.beginGroup("panel1"); m_lockPanelBtn->setChecked(lock); settings.setValue("lockPanel",lock); settings.endGroup(); settings.sync(); } void GeneralSettings::hidePanel() { m_hidePanelFrame = new QFrame(this); setFrame_Noframe(m_hidePanelFrame); m_hidePanelLayout = new QHBoxLayout(m_hidePanelFrame); m_hidePanelLayout->setContentsMargins(16, 0, 16, 0); m_hidePanelLabel = new QLabel(m_hidePanelFrame); m_hidePanelLabel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); m_hidePanelLabel->setText(tr("Hide Panel")); m_hidePanelBtn = new KSwitchButton(m_hidePanelFrame); m_hidePanelBtn->setObjectName("hidepanel"); m_hidePanelBtn->setFixedSize(48,24); m_hidePanelBtn->setEnabled(!m_panelSettings->get(LOCK_PANEL_KEY).toBool()); m_hidePanelLayout->addWidget(m_hidePanelLabel); m_hidePanelLayout->addWidget(m_hidePanelBtn); m_generalSettingsLayout->addWidget(m_hidePanelFrame); m_generalSettingsLayout->addWidget(setLine(this)); m_hidePanelBtn->setChecked(m_panelSettings->get(HIDE_PANEL_KEY).toBool()); connect(m_hidePanelBtn, &KSwitchButton::stateChanged, [=](bool checked) { m_panelSettings->set(HIDE_PANEL_KEY, checked); }); connect(m_panelSettings, &QGSettings::changed, this, [=](const QString &key){ if(key == HIDE_PANEL_KEY) { m_hidePanelBtn->setChecked(m_panelSettings->get(HIDE_PANEL_KEY).toBool()); } }); } ukui-panel-4.0.0.4/plugin-ukcc/translation/0000755000175000017500000000000014560306203017125 5ustar fengfengukui-panel-4.0.0.4/plugin-ukcc/translation/ukccpanel_fr.ts0000644000175000017500000001124014560306203022127 0ustar fengfeng AlwaysDisplayonPanel Show Taskview Afficher la vue des tâches GeneralSettings Merge icons on the taskbar Fusionner les icônes dans la barre des tâches Always Toujours Never Jamais Taskbar Position Position de la barre des tâches Up En haut Left Gauche Right Droite Bottom Fond Panel Size Taille du panneau Small Petit Medium Douleur moyenne Large Grand Lock Panel Panneau de verrouillage Hide Panel Masquer le groupe de fonctions UkccPlugin Panel Panneau UkccPlugin UkccPlugin (Plug-in de l’Ukcc) /UkccPlugin/UkccPlugin ukccplugin panel Panneau ukccplugin /UkccPlugin/ukccplugin test Always show icon in panel Toujours afficher l’icône dans le panneau 始终显示在任务栏上的图标 Always show icon in panel ukccplugin test 任务栏 /UkccPlugin/ukccplugin test ukui-panel-4.0.0.4/plugin-ukcc/translation/ukccpanel_zh_CN.ts0000644000175000017500000001106714560306203022530 0ustar fengfeng AlwaysDisplayonPanel Show Taskview 多任务视图 GeneralSettings Merge icons on the taskbar 合并任务栏上的图标 Always 始终 Never 从不 Taskbar Position 任务栏在屏幕上的位置 Up 顶部 Left 左侧 Right 右侧 Bottom 底部 Panel Size 任务栏大小 Small Medium Large Lock Panel 锁定任务栏 Hide Panel 自动隐藏任务栏 UkccPlugin Panel 任务栏 UkccPlugin 任务栏 /UkccPlugin/UkccPlugin ukccplugin panel 任务栏 /UkccPlugin/ukccplugin test Always show icon in panel 始终显示在任务栏上的图标 始终显示在任务栏上的图标 Always show icon in panel ukccplugin test 任务栏 /UkccPlugin/ukccplugin test ukui-panel-4.0.0.4/plugin-ukcc/translation/ukccpanel_ug.ts0000644000175000017500000001173514560306203022144 0ustar fengfeng AlwaysDisplayonPanel Show NightMode 显示夜间模式 Show Taskview ۋەزىپە چۈشەندۈرۈشىنى كۆرسەت GeneralSettings Merge icons on the taskbar ۋەزىپە ئىستونىدىكى سىنبەلگىلەرنى بىرلەشتۈرۈش Always Merge دائىم بىرىكتۈرۈش Never merge ھەرگىز بىرىكمە Taskbar Position ۋەزىپە بالداق ئورنى Up يۇقىرىغا Left سول Right توغرىسى Bottom ئاستىنقى Panel Size تاختا چوڭلۇقى Small كىچىك Medium ئوتتۇراھال Large چوڭ Lock Panel قۇلۇپ تاختىسى Hide Panel تاختىنى يوشۇر UkccPlugin Panel تاختا UkccPlugin UkccPlugin /UkccPlugin/UkccPlugin ukccplugin panel ukccplugin تاختىسى /UkccPlugin/ukccplugin test Always show icon in panel تاختىدا ھەر ۋاقىت سىنبەلگىنى كۆرسەت 始终显示在任务栏上的图标 Always show icon in panel ukccplugin test 任务栏 /UkccPlugin/ukccplugin test ukui-panel-4.0.0.4/plugin-ukcc/translation/ukccpanel_mn.ts0000644000175000017500000001335414560306203022142 0ustar fengfeng AlwaysDisplayonPanel Show NightMode 显示夜间模式 Show Taskview ᠤᠯᠠᠨ ᠡᠬᠦᠷᠬᠡ ᠵᠢ ᠢᠯᠡᠷᠡᠬᠦᠯᠬᠦ ᠪᠡᠷ ᠤᠷᠤᠯᠳᠤᠬᠤ GeneralSettings Merge icons on the taskbar ᠡᠬᠦᠷᠬᠡ ᠵᠢᠨ ᠪᠠᠭᠠᠷ ᠳᠡᠭᠡᠷᠡᠬᠢ ᠢᠺᠦᠨ ᠵᠢᠷᠤᠭ ᠢ᠋ ᠨᠡᠢᠯᠡᠬᠦᠯᠬᠦ Always ᠢᠮᠠᠭᠲᠠ ᠨᠡᠢᠯᠡᠬᠦᠯᠬᠦ Never ᠶᠡᠷᠦ ᠡᠴᠡ ᠨᠡᠢᠯᠡᠬᠦᠯᠬᠦ ᠦᠬᠡᠢ Taskbar Position ᠡᠬᠦᠷᠭᠡ ᠵᠢᠨ ᠪᠠᠭᠠᠷ ᠤ᠋ᠨ ᠳᠡᠯᠭᠡᠴᠡᠨ ᠳᠡᠭᠡᠷᠡᠬᠢ ᠪᠠᠢᠷᠢᠯᠠᠯ Up ᠤᠷᠤᠢ ᠳ᠋ᠤ᠌ Left ᠵᠡᠬᠦᠨ ᠲᠠᠯ᠎ᠠ Right ᠪᠠᠷᠠᠭᠤᠨ ᠲᠠᠯ᠎ᠠ Bottom ᠳᠤᠤᠷ᠎ᠠ ᠲᠠᠯ᠎ᠠ Panel Size ᠡᠬᠦᠷᠭᠡ ᠵᠢᠨ ᠪᠠᠭᠠᠷ ᠤ᠋ᠨ ᠶᠡᠬᠡ ᠪᠠᠭ᠎ᠠ ᠵᠢ ᠳᠤᠬᠢᠷᠠᠭᠤᠯᠬᠤ Small ᠪᠠᠭ᠎ᠠ ᠬᠡᠮᠵᠢᠶ᠎ᠡ Medium ᠳᠤᠮᠳᠠ ᠬᠡᠮᠵᠢᠶ᠎ᠡ Large ᠲᠤᠮᠤ ᠬᠡᠮᠵᠢᠶ᠎ᠡ Lock Panel ᠡᠬᠦᠷᠭᠡ ᠵᠢᠨ ᠪᠠᠭᠠᠷ ᠢ᠋ ᠤᠨᠢᠰᠤᠯᠠᠬᠤ Hide Panel ᠡᠬᠦᠷᠭᠡ ᠵᠢᠨ ᠪᠠᠭᠠᠷ ᠢ᠋ ᠨᠢᠭᠤᠴᠠᠯᠠᠬᠤ UkccPlugin Panel ᠡᠬᠦᠷᠭᠡ ᠵᠢᠨ ᠪᠠᠭᠠᠷ UkccPlugin ᠡᠬᠦᠷᠭᠡ ᠵᠢᠨ ᠪᠠᠭᠠᠷ /UkccPlugin/UkccPlugin ukccplugin panel ᠡᠬᠦᠷᠭᠡ ᠵᠢᠨ ᠪᠠᠭᠠᠷ /UkccPlugin/ukccplugin test Always show icon in panel ᠡᠬᠦᠷᠭᠡ ᠵᠢᠨ ᠪᠠᠭᠠᠷ ᠳᠡᠭᠡᠷᠡᠬᠢ ᠢᠺᠦᠨ ᠵᠢᠷᠤᠭ ᠢ᠋ ᠢᠮᠠᠭᠳᠠ ᠢᠯᠡᠷᠡᠬᠦᠯᠬᠦ 始终显示在任务栏上的图标 Always show icon in panel ukccplugin test 任务栏 /UkccPlugin/ukccplugin test ukui-panel-4.0.0.4/plugin-ukcc/translation/ukccpanel_bo_CN.ts0000644000175000017500000001262414560306203022507 0ustar fengfeng AlwaysDisplayonPanel Show Taskview ལས་འགན་མང་པོ་མངོན་ཡོད། GeneralSettings Merge icons on the taskbar མཉམ་སྒྲིལ་ལས་འགན་སྒྲོམ་སྟེང་གི་རི་མོ། Always ཐོག་མཐའ་བར་གསུམ་དུ་ཟླ་སྒྲིལ། Never ཟླ་སྒྲིལ་གཏན་ནས་མི་གཏོང་བ། Taskbar Position ལས་འགན་སྒྲོམ་ནི་བརྙན་ཤེལ་སྟེང་གི་གནས་ན་ཡོད། Up རྩེ་མོ། Left གཡོན་ཕྱོགས། Right གཡས་གཡོན། Bottom མཐིལ་དུ། Panel Size ལས་འགན་སྒྲུབ་སའི་ཆེ་ཆུང་ལེགས་སྒྲིག་བྱེད་པ། Small རིང་ཐུང་ཆུང་བ། Medium རིང་ཐུང་འབྲིང་བ། Large ཆེ་ཆུང་ཆེན་པོ། Lock Panel ལས་འགན་གྱི་རེའུ་མིག་གཏན་འཁེལ་བྱས། Hide Panel ལས་འགན་གསང་བཅད། UkccPlugin Panel ལས་འགན་སྒྲུབ་གཞི། UkccPlugin ལས་འགན་སྒྲུབ་གཞི། /UkccPlugin/UkccPlugin ukccplugin panel ལས་འགན་སྒྲུབ་གཞི། /UkccPlugin/ukccplugin test Always show icon in panel ཐོག་མཐའ་བར་གསུམ་དུ་ལས་འགན་བྱང་བུའི་སྟེང་དུ་མངོན་པའི་རི་མོ། 始终显示在任务栏上的图标 Always show icon in panel ukui-panel-4.0.0.4/plugin-ukcc/translation/ukccpanel_ky.ts0000644000175000017500000001171014560306203022145 0ustar fengfeng AlwaysDisplayonPanel Show NightMode 显示夜间模式 Show Taskview Taskview көрсөтүү GeneralSettings Merge icons on the taskbar Тапшырма пакети боюнча иконаларды бириктирүү Always Merge Ар дайым бириктирүү Never merge Эч качан бириктирүү Taskbar Position Тапшырма пакети Up Жогору Left Солдо Right Туура Bottom Төмөнкү Panel Size Панелдин өлчөмү Small Кичинекей Medium Орто Large Чоң Lock Panel Панелди кулпулоо Hide Panel Панелди жашыруу UkccPlugin Panel Панель UkccPlugin UkccPlugin /UkccPlugin/UkccPlugin ukccplugin panel ukccplugin панели /UkccPlugin/ukccplugin test Always show icon in panel Ар дайым панелде белгини көрсөтүү 始终显示在任务栏上的图标 Always show icon in panel ukccplugin test 任务栏 /UkccPlugin/ukccplugin test ukui-panel-4.0.0.4/plugin-ukcc/translation/ukccpanel_de.ts0000644000175000017500000001114114560306203022110 0ustar fengfeng AlwaysDisplayonPanel Show Taskview Aufgabenansicht anzeigen GeneralSettings Merge icons on the taskbar Zusammenführen von Symbolen in der Taskleiste Always Immer Never Nie Taskbar Position Position der Taskleiste Up Oben Left Links Right Rechts Bottom Unteres Panel Size Panel-Größe Small Klein Medium Mittel Large Groß Lock Panel Bedienfeld sperren Hide Panel Bedienfeld "Ausblenden" UkccPlugin Panel Gremium UkccPlugin UkccPlugin /UkccPlugin/UkccPlugin ukccplugin panel ukccplugin-Bedienfeld /UkccPlugin/ukccplugin test Always show icon in panel Symbol immer im Bedienfeld anzeigen 始终显示在任务栏上的图标 Always show icon in panel ukccplugin test 任务栏 /UkccPlugin/ukccplugin test ukui-panel-4.0.0.4/plugin-ukcc/translation/ukccpanel_zh_HK.ts0000644000175000017500000001133214560306203022525 0ustar fengfeng AlwaysDisplayonPanel Show NightMode 显示夜间模式 Show Taskview 多任務檢視 GeneralSettings Merge icons on the taskbar 合併任務列上的圖示 Always Merge 始終合併 Never merge 從不合併 Taskbar Position 任務欄在螢幕上的位置 Up 頂部 Left 左側 Right 右側 Bottom 底部 Panel Size 任務欄大小 Small Medium Large Lock Panel 鎖定任務列 Hide Panel 自動隱藏任務列 UkccPlugin Panel 任務列 UkccPlugin 任務列 /UkccPlugin/UkccPlugin ukccplugin panel 任務列 /UkccPlugin/ukccplugin test Always show icon in panel 始終顯示在任務列上的圖示 始终显示在任务栏上的图标 Always show icon in panel ukccplugin test 任务栏 /UkccPlugin/ukccplugin test ukui-panel-4.0.0.4/plugin-ukcc/translation/ukccpanel_kk.ts0000644000175000017500000001203314560306203022126 0ustar fengfeng AlwaysDisplayonPanel Show NightMode 显示夜间模式 Show Taskview Тапсырма көрінісін көрсету GeneralSettings Merge icons on the taskbar Тапсырмалар тақтасындағы белгішелерді біріктіру Always Merge Әрқашан біріктіру Never merge Ешқашан біріктірілмесін Taskbar Position Тапсырмалар тақтасы орны Up Жоғары Left Сол жақта Right Оң жақта Bottom Төменгі жағы Panel Size Панель өлшемі Small Кіші Medium Орташа Large Үлкен Lock Panel Бұғаттау панелі Hide Panel Панельді жасыру UkccPlugin Panel Панель UkccPlugin Уккплугин /UkccPlugin/UkccPlugin ukccplugin panel ukccplugin панелі /UkccPlugin/ukccplugin test Always show icon in panel Панельде әрқашан белгіше көрсетілсін 始终显示在任务栏上的图标 Always show icon in panel ukccplugin test 任务栏 /UkccPlugin/ukccplugin test ukui-panel-4.0.0.4/plugin-ukcc/translation/ukccpanel_es.ts0000644000175000017500000001113314560306203022130 0ustar fengfeng AlwaysDisplayonPanel Show Taskview Mostrar vista de tareas GeneralSettings Merge icons on the taskbar Combinar iconos en la barra de tareas Always Siempre Never Nunca Taskbar Position Posición de la barra de tareas Up Hacia arriba Left Izquierda Right Derecha Bottom Fondo Panel Size Tamaño del panel Small Pequeño Medium Medio Large Grande Lock Panel Panel de bloqueo Hide Panel Ocultar panel UkccPlugin Panel Tablero UkccPlugin UkccPlugin /UkccPlugin/UkccPlugin ukccplugin panel Panel ukccplugin /UkccPlugin/ukccplugin test Always show icon in panel Mostrar siempre el icono en el panel 始终显示在任务栏上的图标 Always show icon in panel ukccplugin test 任务栏 /UkccPlugin/ukccplugin test ukui-panel-4.0.0.4/plugin-ukcc/ukccplugin.h0000644000175000017500000000456514560306221017116 0ustar fengfeng/* * * * Copyright (C) 2023, KylinSoft Co., Ltd. * * * * This program is free software: you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation, either version 3 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program. If not, see . * * * * Authors: Nicole * */ #ifndef UKCCPLUGIN_H #define UKCCPLUGIN_H #include #include #include #include #include #include #include #include #include #include #include "kswitchbutton.h" #include "alwaysdisplayonpanel.h" #include "generalsettings.h" using namespace kdk; #include class UkccPlugin : public QObject, CommonInterface { Q_OBJECT Q_PLUGIN_METADATA(IID "org.ukcc.CommonInterface") Q_INTERFACES(CommonInterface) public: UkccPlugin(); ~UkccPlugin(); QString plugini18nName() Q_DECL_OVERRIDE; int pluginTypes() Q_DECL_OVERRIDE; QWidget *pluginUi() Q_DECL_OVERRIDE; bool isEnable() const Q_DECL_OVERRIDE; const QString name() const Q_DECL_OVERRIDE; bool isShowOnHomePage() const Q_DECL_OVERRIDE; QIcon icon() const Q_DECL_OVERRIDE; QString translationPath() const Q_DECL_OVERRIDE; void initUI(); void setFrame_Noframe(QFrame *frame); void displayBtnOnPanel(); void generalSettings(); QFrame *setLine(QFrame *frame); private: QString pluginName; int pluginType; QWidget *widget; bool mFirstLoad; QVBoxLayout *mverticalLayout; TitleLabel *CustomTitleLabel; TitleLabel *m_panelDisplayLabel; AlwaysDisplayonPanel *m_alwaysDisplayonPanelFrame; GeneralSettings *m_generalSettingsFrame; private: void initSearchText(); // 搜索翻译 }; #endif // UKCCPLUGIN_H ukui-panel-4.0.0.4/plugin-ukcc/alwaysdisplayonpanel.h0000644000175000017500000000352514560306221021210 0ustar fengfeng/* * * * Copyright (C) 2023, KylinSoft Co., Ltd. * * * * This program is free software: you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation, either version 3 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program. If not, see . * * * * Authors: Nicole * */ #ifndef ALWAYSDISPLAYONPANEL_H #define ALWAYSDISPLAYONPANEL_H #include #include #include #include #include #include #include #include #include "kswitchbutton.h" using namespace kdk; #define UKUI_PANEL_SETTINGS "org.ukui.panel.settings" #define SHOW_TASKVIEW "showtaskview" #define SHOW_NIGHTMODE "shownightmode" class AlwaysDisplayonPanel : public QFrame { Q_OBJECT public: explicit AlwaysDisplayonPanel(QWidget *parent = nullptr); signals: private: void setFrame_Noframe(QFrame *frame); void displayTaskview(); void panelBtnDisplayChanged(); QVBoxLayout *m_alwaysDisplayonPanelLayout; QFrame *m_taskviewDisplayFrame; QHBoxLayout *m_taskviewDisplayLayout; QLabel *m_taskviewDisplayLabel; KSwitchButton *m_taskviewDisplayBtn; QGSettings *m_panelSettings; private slots: }; #endif // ALWAYSDISPLAYONPANEL_H ukui-panel-4.0.0.4/plugin-ukcc/generalsettings.h0000644000175000017500000000630114560306221020136 0ustar fengfeng/* * * * Copyright (C) 2023, KylinSoft Co., Ltd. * * * * This program is free software: you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation, either version 3 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program. If not, see . * * * * Authors: Nicole * */ #ifndef GENERALSETTINGS_H #define GENERALSETTINGS_H #include #include #include #include #include #include #include #include #include #include #include "kswitchbutton.h" using namespace kdk; #define UKUI_PANEL_SETTINGS "org.ukui.panel.settings" #define GROUP_ENABLE "groupingenable" #define PANEL_SIZE_KEY "panelsize" #define ICON_SIZE_KEY "iconsize" #define PANEL_POSITION_KEY "panelposition" #define LOCK_PANEL_KEY "lockpanel" #define HIDE_PANEL_KEY "hidepanel" #define SHOW_TASKVIEW "showtaskview" #define SHOW_NIGHTMODE "shownightmode" class GeneralSettings : public QFrame { Q_OBJECT public: explicit GeneralSettings(QWidget *parent = nullptr); signals: private: void setFrame_Noframe(QFrame *frame); QFrame *setLine(QFrame *frame); void lockPanel(); void mergeTaskgroup(); void panelSize(); void setPanelSizeComboxIndex(); void panelPosition(); void hidePanel(); QVBoxLayout *m_generalSettingsLayout = nullptr; //合并按钮 QFrame *m_mergeTaskgroupFrame = nullptr; QHBoxLayout *m_mergeTaskgroupLayout = nullptr; QLabel *m_mergeTaskgroupLabel = nullptr; QComboBox *m_mergeTaskgroup = nullptr; //调整任务栏大小 QFrame *m_panelsizeFrame = nullptr; QHBoxLayout *m_panelsizeLayout = nullptr; QLabel *m_panelsizeLebel = nullptr; QComboBox *m_panelsizeCombox = nullptr; //调整任务栏位置 QFrame *m_panelpositionFrame = nullptr; QHBoxLayout *m_panelpositionLayout = nullptr; QLabel *m_panelpositionLebel = nullptr; QComboBox *m_panelpositionCombox = nullptr; //隐藏任务栏按钮 QFrame *m_hidePanelFrame = nullptr; QHBoxLayout *m_hidePanelLayout = nullptr; QLabel *m_hidePanelLabel = nullptr; KSwitchButton *m_hidePanelBtn = nullptr; //锁定任务栏按钮 QFrame *m_lockPanelFrame = nullptr; QHBoxLayout *m_lockPanelLayout = nullptr; QLabel *m_lockPanelLabel = nullptr; KSwitchButton *m_lockPanelBtn = nullptr; QGSettings *m_panelSettings = nullptr; private slots: void lockPanelChanged(bool); }; #endif // GENERALSETTINGS_H ukui-panel-4.0.0.4/panel/0000755000175000017500000000000014567026260013456 5ustar fengfengukui-panel-4.0.0.4/panel/ukuipanelapplication.cpp0000644000175000017500000001662414560306203020403 0ustar fengfeng/* BEGIN_COMMON_COPYRIGHT_HEADER * (c)LGPL2+ * * Copyright: 2010-2011 Razor team * Authors: * Alexander Sokoloff * * Copyright: 2019 Tianjin KYLIN Information Technology Co., Ltd. * * * This program or library is free software; you can redistribute it * and/or modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * You should have received a copy of the GNU Lesser General * Public License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA * * END_COMMON_COPYRIGHT_HEADER */ #include #include "ukuipanelapplication.h" #include "ukuipanelapplication_p.h" #include "ukuipanel.h" //#include #include "common/ukuisettings.h" #include #include #include #include #include #include #include #define CONFIG_FILE_BACKUP "/usr/share/ukui/panel.conf" #define CONFIG_FILE_LOCAL ".config/ukui/panel.conf" UKUIPanelApplicationPrivate::UKUIPanelApplicationPrivate(UKUIPanelApplication *q) : mSettings(0), q_ptr(q) { } UKUIPanelApplication::UKUIPanelApplication(int& argc, char** argv) : QApplication(argc, argv, true), d_ptr(new UKUIPanelApplicationPrivate(this)) { translator(); // bind to SIGTERM siganl to exit with code 15 signal(SIGTERM, sigtermHandler); Q_D(UKUIPanelApplication); QCoreApplication::setApplicationName(QLatin1String("ukui-panel")); const QString VERINFO = QStringLiteral(UKUI_PANEL_VERSION "\nlibukui " "" "\nQt " QT_VERSION_STR); QCoreApplication::setApplicationVersion(VERINFO); QCommandLineParser parser; parser.setApplicationDescription(QLatin1String("UKUi Panel")); parser.addHelpOption(); parser.addVersionOption(); //添加其他参数 QCommandLineOption configFileOption(QStringList() << QLatin1String("c") << QLatin1String("config") << QLatin1String("configfile"), QCoreApplication::translate("main", "Use alternate configuration file."), QCoreApplication::translate("main", "Configuration file")); parser.addOption(configFileOption); QCommandLineOption panelResetOption(QStringList() << QLatin1String("r") << QLatin1String("reset") << QLatin1String("panel reset"), QCoreApplication::translate("main", "ukui-panel set mode "), QCoreApplication::translate("main", "panel set option")); parser.addOption(panelResetOption); parser.process(*this); const QString configFile = parser.value(configFileOption); if (configFile.isEmpty()) { QString defaultConf = QString(PLUGIN_DESKTOPS_DIR)+"/../"; QString loaclCong = QString(qgetenv("HOME"))+"/.config/ukui/"; QFile file(loaclCong+"panel.conf"); if(!file.exists()){ copyFileToPath(defaultConf,loaclCong,"panel.conf",false); // QFile::copy(CONFIG_FILE_BACKUP,QString(qgetenv("HOME"))+CONFIG_FILE_LOCAL); } d->mSettings = new UKUi::Settings(QLatin1String("panel"), this); if(!d->mSettings->contains("plugins")){ QFile::remove(QString(qgetenv("HOME"))+CONFIG_FILE_LOCAL); QFile::copy(CONFIG_FILE_BACKUP,QString(qgetenv("HOME"))+CONFIG_FILE_LOCAL); d->mSettings = new UKUi::Settings(QLatin1String("panel"), this); } } else { qDebug()<<"configFile.is not Empty"<mSettings = new UKUi::Settings(configFile, QSettings::IniFormat, this); } const QString panelReset = parser.value(panelResetOption); if(panelReset.isEmpty()){qDebug()<<"ukui-panel --reset";} if(panelReset == "reset"){system("rm $HOME/.config/ukui/panel.conf");} if(panelReset == "replace"){qDebug()<<"ukui-panel --replace";} if(panelReset == "calendar-new"){system("/usr/share/ukui/ukui-panel/ukui-panel-config.sh calendar new && killall ukui-panel");} if(panelReset == "calendar-old"){system("/usr/share/ukui/ukui-panel/ukui-panel-config.sh calendar old && killall ukui-panel");} connect(this, &QCoreApplication::aboutToQuit, this, &UKUIPanelApplication::cleanup); QStringList panels = d->mSettings->value("panels").toStringList(); // WARNING: Giving a separate icon theme to the panel is wrong and has side effects. // However, it is optional and can be used as the last resort for avoiding a low // contrast in the case of symbolic SVG icons. (The correct way of doing that is // using a Qt widget style that can assign a separate theme/QPalette to the panel.) m_globalIconTheme = QIcon::themeName(); const QString iconTheme = d->mSettings->value("iconTheme").toString(); if (!iconTheme.isEmpty()) QIcon::setThemeName(iconTheme); if (panels.isEmpty()) { panels << "panel1"; } #if (QT_VERSION < QT_VERSION_CHECK(5,7,0)) for(int it=0;it= QT_VERSION_CHECK(5,7,0)) for(const QString& i : qAsConst(panels)){ #endif addPanel(i); } } UKUIPanelApplication::~UKUIPanelApplication() { delete d_ptr; } void UKUIPanelApplication::cleanup() { qDeleteAll(m_panels); } UKUIPanel* UKUIPanelApplication::addPanel(const QString& name) { Q_D(UKUIPanelApplication); UKUIPanel *panel = new UKUIPanel(name, d->mSettings); KWindowEffects::enableBlurBehind(panel->winId(),true); m_panels << panel; // reemit signals connect(panel, &UKUIPanel::pluginAdded, this, &UKUIPanelApplication::pluginAdded); connect(panel, &UKUIPanel::pluginRemoved, this, &UKUIPanelApplication::pluginRemoved); return panel; } bool UKUIPanelApplication::isPluginSingletonAndRunnig(QString const & pluginId) const { for (auto const & panel : m_panels) if (panel->isPluginSingletonAndRunnig(pluginId)) return true; return false; } void UKUIPanelApplication::sigtermHandler(int signo) { qDebug() << "Caught SIGTERM signal, exit with SIGTERM"; exit(signo); } void UKUIPanelApplication::translator() { QTranslator *translator = new QTranslator(this); translator->load(QLocale(), "panel", "_", PANEL_TRANSLATION_DIR); QCoreApplication::installTranslator(translator); } bool UKUIPanelApplication::copyFileToPath(QString sourceDir ,QString toDir, QString fileName, bool coverFileIfExist) { if (sourceDir == toDir){ return true; } if (!QFile::exists(sourceDir+fileName)){ return false; } QDir *createDir = new QDir; bool dirExist = createDir->exists(toDir); if(!dirExist) createDir->mkdir(toDir); QFile *createFile = new QFile; bool fileExist = createFile->exists(toDir+fileName); if (fileExist){ if(coverFileIfExist){ createFile->remove(toDir+fileName); } }//end if free(createDir); free(createFile); if(!QFile::copy(sourceDir+fileName, toDir+fileName)) { return false; } return true; } ukui-panel-4.0.0.4/panel/highlight-effect.cpp0000644000175000017500000003304214560306203017354 0ustar fengfeng/* * Qt5-UKUI's Library * * Copyright (C) 2020, Tianjin KYLIN Information Technology Co., Ltd. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this library. If not, see . * * Authors: Yue Lan * */ #include "highlight-effect.h" #include #include #include #include #include #include #include #include #include #include #define TORLERANCE 36 static QColor symbolic_color = Qt::gray; void HighLightEffect::setSkipEffect(QWidget *w, bool skip) { w->setProperty("skipHighlightIconEffect", skip); } bool HighLightEffect::isPixmapPureColor(const QPixmap &pixmap) { QImage img = pixmap.toImage(); bool init = false; int red = 0; int green = 0; int blue = 0; qreal variance = 0; qreal mean = 0; qreal standardDeviation = 0; QVector pixels; bool isPure = true; bool isFullyPure = true; for (int x = 0; x < img.width(); x++) { for (int y = 0; y < img.height(); y++) { auto color = img.pixelColor(x, y); if (color.alpha() != 0) { int hue = color.hue(); pixels< 0 || dg > 0 || db > 0) { isFullyPure = false; } } if (!same) { if (isPure || isFullyPure) { isPure = false; isFullyPure = false; break; } } } } } } if (isPure) return true; mean = mean/pixels.count(); for (auto hue : pixels) { variance += (hue - mean)*(hue - mean); } standardDeviation = qSqrt(variance/pixels.count()); isFullyPure = standardDeviation == 0 || variance == 0; isPure = standardDeviation < 1 || variance == 0; return isPure; } bool HighLightEffect::setMenuIconHighlightEffect(QMenu *menu, bool set, HighLightEffect::EffectMode mode) { if (!menu) return false; menu->setProperty("useIconHighlightEffect", set); menu->setProperty("iconHighlightEffectMode", mode); return true; } bool HighLightEffect::setViewItemIconHighlightEffect(QAbstractItemView *view, bool set, HighLightEffect::EffectMode mode) { if (!view) return false; view->viewport()->setProperty("useIconHighlightEffect", set); view->viewport()->setProperty("iconHighlightEffectMode", mode); return true; } bool HighLightEffect::setButtonIconHighlightEffect(QAbstractButton *button, bool set, EffectMode mode) { if (!button) return false; button->setProperty("useIconHighlightEffect", set); button->setProperty("iconHighlightEffectMode", mode); return true; } bool HighLightEffect::isWidgetIconUseHighlightEffect(const QWidget *w) { if (w) { return w->property("useIconHighlightEffect").toBool(); } return false; } void HighLightEffect::setSymoblicColor(const QColor &color) { qApp->setProperty("symbolicColor", color); symbolic_color = color; } void HighLightEffect::setWidgetIconFillSymbolicColor(QWidget *widget, bool fill) { widget->setProperty("fillIconSymbolicColor", fill); } const QColor HighLightEffect::getCurrentSymbolicColor() { QIcon symbolic = QIcon::fromTheme("nm-device-wired"); QPixmap pix = symbolic.pixmap(QSize(16, 16)); QImage img = pix.toImage(); for (int x = 0; x < img.width(); x++) { for (int y = 0; y < img.height(); y++) { QColor color = img.pixelColor(x, y); if (color.alpha() > 0) { symbolic_color = color; return color; } } } return symbolic_color; } QPixmap HighLightEffect::generatePixmap(const QPixmap &pixmap, const QStyleOption *option, const QWidget *widget, bool force, EffectMode mode) { if (pixmap.isNull()) return pixmap; if (widget) { if (widget->property("skipHighlightIconEffect").isValid()) { bool skipEffect = widget->property("skipHighlightIconEffect").toBool(); if (skipEffect) return pixmap; } } bool isPurePixmap = isPixmapPureColor(pixmap); if (force) { if (!isPurePixmap) return pixmap; QPixmap target = pixmap; QPainter p(&target); p.setRenderHint(QPainter::Antialiasing); p.setRenderHint(QPainter::SmoothPixmapTransform); p.setCompositionMode(QPainter::CompositionMode_SourceIn); if (option->state & QStyle::State_MouseOver || option->state & QStyle::State_Selected || option->state & QStyle::State_On || option->state & QStyle::State_Sunken) { p.fillRect(target.rect(), option->palette.highlightedText()); } else { if (mode == BothDefaultAndHighlit) p.fillRect(target.rect(), option->palette.dark()); } //p.end(); return target; } if (widget) { if (isWidgetIconUseHighlightEffect(widget)) { bool fillIconSymbolicColor = false; if (widget->property("fillIconSymbolicColor").isValid()) { fillIconSymbolicColor = widget->property("fillIconSymbolicColor").toBool(); } if (widget->property("iconHighlightEffectMode").isValid()) { mode = qvariant_cast(widget->property("iconHighlightEffectMode")); } bool isEnable = option->state.testFlag(QStyle::State_Enabled); bool overOrDown = option->state.testFlag(QStyle::State_MouseOver) || option->state.testFlag(QStyle::State_Sunken) || option->state.testFlag(QStyle::State_On) || option->state.testFlag(QStyle::State_Selected); if (auto button = qobject_cast(widget)) { if (button->isDown() || button->isChecked()) { overOrDown = true; } } if (qobject_cast(widget)) { if (!option->state.testFlag(QStyle::State_Selected)) overOrDown = false; } if (isEnable && overOrDown) { QPixmap target = pixmap; if (fillIconSymbolicColor) { target = filledSymbolicColoredPixmap(pixmap, option->palette.highlightedText().color()); } if (!isPurePixmap) return target; QPainter p(&target); p.setRenderHint(QPainter::Antialiasing); p.setRenderHint(QPainter::SmoothPixmapTransform); p.setCompositionMode(QPainter::CompositionMode_SourceIn); p.fillRect(target.rect(), option->palette.highlightedText()); //p.end(); return target; } else { if (mode == BothDefaultAndHighlit) { QPixmap target = pixmap; if (fillIconSymbolicColor) { target = filledSymbolicColoredPixmap(pixmap, option->palette.highlightedText().color()); } if (!isPurePixmap) return target; QPainter p(&target); p.setRenderHint(QPainter::Antialiasing); p.setRenderHint(QPainter::SmoothPixmapTransform); p.setCompositionMode(QPainter::CompositionMode_SourceIn); p.fillRect(target.rect(), option->palette.dark()); //p.end(); return target; } } } } else { if (!isPurePixmap) return pixmap; bool isEnable = option->state.testFlag(QStyle::State_Enabled); bool overOrDown = option->state.testFlag(QStyle::State_MouseOver) || option->state.testFlag(QStyle::State_Sunken) || option->state.testFlag(QStyle::State_Selected) || option->state.testFlag(QStyle::State_On); if (isEnable && overOrDown) { QPixmap target = pixmap; QPainter p(&target); p.setRenderHint(QPainter::Antialiasing); p.setRenderHint(QPainter::SmoothPixmapTransform); p.setCompositionMode(QPainter::CompositionMode_SourceIn); p.fillRect(target.rect(), option->palette.highlightedText()); //p.end(); return target; } else { if (mode == BothDefaultAndHighlit) { QPixmap target = pixmap; QPainter p(&target); p.setRenderHint(QPainter::Antialiasing); p.setRenderHint(QPainter::SmoothPixmapTransform); p.setCompositionMode(QPainter::CompositionMode_SourceIn); p.fillRect(target.rect(), option->palette.dark()); //p.end(); return target; } } } return pixmap; } HighLightEffect::HighLightEffect(QObject *parent) : QObject(parent) { } QPixmap HighLightEffect::filledSymbolicColoredPixmap(const QPixmap &source, const QColor &baseColor) { QImage img = source.toImage(); for (int x = 0; x < img.width(); x++) { for (int y = 0; y < img.height(); y++) { auto color = img.pixelColor(x, y); if (color.alpha() > 0) { int hue = color.hue(); if (!qAbs(hue - symbolic_color.hue()) < 10) { color.setRed(baseColor.red()); color.setGreen(baseColor.green()); color.setBlue(baseColor.blue()); img.setPixelColor(x, y, color); } } } } return QPixmap::fromImage(img); } QPixmap HighLightEffect::drawSymbolicColoredPixmap(const QPixmap &source) { QColor currentcolor=HighLightEffect::getCurrentSymbolicColor(); QColor gray(128,128,128); QColor standard (31,32,34); QImage img = source.toImage(); for (int x = 0; x < img.width(); x++) { for (int y = 0; y < img.height(); y++) { auto color = img.pixelColor(x, y); if (color.alpha() > 0) { if (qAbs(color.red()-gray.red())<20 && qAbs(color.green()-gray.green())<20 && qAbs(color.blue()-gray.blue())<20) { color.setRed(255); color.setGreen(255); color.setBlue(255); img.setPixelColor(x, y, color); } else if(qAbs(color.red()-standard.red())<20 && qAbs(color.green()-standard.green())<20 && qAbs(color.blue()-standard.blue())<20) { color.setRed(255); color.setGreen(255); color.setBlue(255); img.setPixelColor(x, y, color); } else { img.setPixelColor(x, y, color); } } } } return QPixmap::fromImage(img); } QIcon HighLightEffect::drawSymbolicColoredIcon(const QIcon &source) { QColor currentcolor=HighLightEffect::getCurrentSymbolicColor(); QColor gray(128,128,128); QColor standard (31,32,34); QImage img = source.pixmap(32,32).toImage(); for (int x = 0; x < img.width(); x++) { for (int y = 0; y < img.height(); y++) { auto color = img.pixelColor(x, y); if (color.alpha() > 0) { if (qAbs(color.red()-gray.red())<20 && qAbs(color.green()-gray.green())<20 && qAbs(color.blue()-gray.blue())<20) { color.setRed(255); color.setGreen(255); color.setBlue(255); img.setPixelColor(x, y, color); } else if(qAbs(color.red()-standard.red())<20 && qAbs(color.green()-standard.green())<20 && qAbs(color.blue()-standard.blue())<20) { color.setRed(255); color.setGreen(255); color.setBlue(255); img.setPixelColor(x, y, color); } else { img.setPixelColor(x, y, color); } } } } return QPixmap::fromImage(img); } ukui-panel-4.0.0.4/panel/pluginsettings_p.h0000644000175000017500000000236714560306203017224 0ustar fengfeng/* BEGIN_COMMON_COPYRIGHT_HEADER * (c)LGPL2+ * * Copyright: 2015 LXQt team * Authors: * Paulo Lieuthier * * Copyright: 2019 Tianjin KYLIN Information Technology Co., Ltd. * * * This program or library is free software; you can redistribute it * and/or modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General * Public License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA * * END_COMMON_COPYRIGHT_HEADER */ #ifndef PLUGIN_SETTINGS_P_H #define PLUGIN_SETTINGS_P_H #include "pluginsettings.h" class PluginSettingsFactory { public: static PluginSettings * create(UKUi::Settings *settings, const QString &group, QObject *parent = nullptr); }; #endif //PLUGIN_SETTINGS_P_H ukui-panel-4.0.0.4/panel/customstyle.h0000644000175000017500000002032414560306203016212 0ustar fengfeng/* * Copyright (C) 2019 Tianjin KYLIN Information Technology Co., Ltd. * * This program or library is free software; you can redistribute it * and/or modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General * Public License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #ifndef CUSTOMSTYLE_H #define CUSTOMSTYLE_H #include #include #include /*! * \brief The CustomStyle class * \details * 自定义QStyle * 基于QProxyStyle,默认使用QProxyStyle的实例绘制控件,你需要针对某一个控件重新实现若干对应的接口。 * QProxyStyle可以从现有的qt style实例化,我们只需要知道这个style的名字即可。 * 这种做法带来了不错的扩展性和自由度,因为我们不需要将某个style的代码直接引入我们的项目中, * 也能够“继承”这个style类进行二次开发。 * * 下面的方法展现了QStyle的所有的接口,使用QStyle进行控件的绘制使得qt应用能够进行风格的切换, * 从而达到不修改项目源码却对应用外观产生巨大影响的效果。 * * \note * 需要注意QStyle与QSS并不兼容,因为QSS本身其实上也是QStyle的一种实现,对一个控件而言,本身理论上只能 * 在同一时间调用唯一一个QStyle进行绘制。 */ class CustomStyle : public QProxyStyle { Q_OBJECT public: //proxyStyleName 是关于样式类型的,&proxyStyleName = "windows" 会造成toolTips的样式为windows类型样式 explicit CustomStyle(const QString &proxyStyleName = "ukui",bool multileWins=false, QObject *parent = nullptr); ~CustomStyle(); /*! * \brief drawComplexControl * \param control 比如ScrollBar,对应CC枚举类型 * \param option * \param painter * \param widget * \details * drawComplexControl用于绘制具有子控件的复杂控件,它本身一般不直接绘制控件, * 而是通过QStyle的其它方法将复杂控件分解成子控件再调用其它的draw方法绘制。 * 如果你需要重新实现一个复杂控件的绘制方法,首先考虑的应该是在不改变它原有的绘制流程的情况下, * 对它调用到的其它方法进行重写。 * * 如果你不想使用原有的绘制流程,那你需要重写这个接口,然后自己实现一切, * 包括背景的绘制,子控件的位置和状态计算,子控件的绘制等。 * 所以,你需要对这个控件有足够的了解之后再尝试直接重写这个接口。 */ virtual void drawComplexControl(QStyle::ComplexControl control, const QStyleOptionComplex *option, QPainter *painter, const QWidget *widget = nullptr) const; /*! * \brief drawControl * \param element 比如按钮,对应CE枚举类型 * \param option * \param painter * \param widget * \details * drawControl用于绘制基本控件元素,它本身一般只负责绘制控件的一部分或者一层。 * 如果你想要知道控件具体如何绘制,你需要同时研究这个控件的源码和QStyle中的源码, * 因为它们都有可能改变控件的绘制流程。 * * QStyle一般会遵循QCommonStyle的绘制流程,QCommenStyle是大部分主流style的最基类, * 它本身不能完全称之为一个主题,如果你直接使用它,你的控件将不能被正常绘制,因为它有可能只是 * 在特定的时候执行了特定却未实现的绘制方法,它更像一个框架或者规范。 */ virtual void drawControl(QStyle::ControlElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget = nullptr) const; virtual void drawItemPixmap(QPainter *painter, const QRect &rectangle, int alignment, const QPixmap &pixmap) const; virtual void drawItemText(QPainter *painter, const QRect &rectangle, int alignment, const QPalette &palette, bool enabled, const QString &text, QPalette::ColorRole textRole = QPalette::NoRole) const; /*! * \brief drawPrimitive * \param element 背景绘制,对应PE枚举类型 * \param option * \param painter * \param widget * \details * drawPrimitive用于绘制控件背景,比如按钮和菜单的背景, * 我们一般需要判断控件的状态来绘制不同的背景, * 比如按钮的hover和点击效果。 */ virtual void drawPrimitive(QStyle::PrimitiveElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget = nullptr) const; virtual QPixmap generatedIconPixmap(QIcon::Mode iconMode, const QPixmap &pixmap, const QStyleOption *option) const; virtual QStyle::SubControl hitTestComplexControl(QStyle::ComplexControl control, const QStyleOptionComplex *option, const QPoint &position, const QWidget *widget = nullptr) const; virtual QRect itemPixmapRect(const QRect &rectangle, int alignment, const QPixmap &pixmap) const; virtual QRect itemTextRect(const QFontMetrics &metrics, const QRect &rectangle, int alignment, bool enabled, const QString &text) const; //virtual int layoutSpacing(QSizePolicy::ControlType control1, QSizePolicy::ControlType control2, Qt::Orientation orientation, const QStyleOption *option, const QWidget *widget); virtual int pixelMetric(QStyle::PixelMetric metric, const QStyleOption *option = nullptr, const QWidget *widget = nullptr) const; /*! * \brief polish * \param widget * \details * polish用于对widget进行预处理,一般我们可以在polish中修改其属性, * 另外,polish是对动画和特效实现而言十分重要的一个方法, * 通过polish我们能够使widget和特效和动画形成对应关系。 */ virtual void polish(QWidget *widget); virtual void polish(QApplication *application); virtual void polish(QPalette &palette); virtual void unpolish(QWidget *widget); virtual void unpolish(QApplication *application); virtual QSize sizeFromContents(QStyle::ContentsType type, const QStyleOption *option, const QSize &contentsSize, const QWidget *widget = nullptr) const; virtual QIcon standardIcon(QStyle::StandardPixmap standardIcon, const QStyleOption *option, const QWidget *widget) const; virtual QPalette standardPalette() const; /*! * \brief styleHint * \param hint 对应的枚举是SH * \param option * \param widget * \param returnData * \return * \details * styleHint比较特殊,通过它我们能够改变一些控件的绘制流程或者方式,比如说QMenu是否可以滚动。 */ virtual int styleHint(QStyle::StyleHint hint, const QStyleOption *option = nullptr, const QWidget *widget = nullptr, QStyleHintReturn *returnData = nullptr) const; /*! * \brief subControlRect * \param control * \param option * \param subControl * \param widget * \return * \details * subControlRect返回子控件的位置和大小信息,这个方法一般在内置流程中调用, * 如果我们要重写某个绘制方法,可能需要用到它 */ virtual QRect subControlRect(QStyle::ComplexControl control, const QStyleOptionComplex *option, QStyle::SubControl subControl, const QWidget *widget = nullptr) const; /*! * \brief subElementRect * \param element * \param option * \param widget * \return * \details * 与subControlRect类似 */ virtual QRect subElementRect(QStyle::SubElement element, const QStyleOption *option, const QWidget *widget = nullptr) const; void setOpacity(int alpha); private: QString m_pluginName; bool m_multileWindow = false; bool m_isDarkStyle; QGSettings *m_gsettings; int m_alpha; }; #endif // CUSTOMSTYLE_H ukui-panel-4.0.0.4/panel/common_fun/0000755000175000017500000000000014560306221015605 5ustar fengfengukui-panel-4.0.0.4/panel/common_fun/listengsettings.cpp0000644000175000017500000000304214560306221021536 0ustar fengfeng/* * Copyright (C) 2019 Tianjin KYLIN Information Technology Co., Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see #define PANEL_SETTINGS "org.ukui.panel.settings" #define PANEL_POSITION_KEY "panelposition" #define ICON_SIZE_KEY "iconsize" #define PANEL_SIZE_KEY "panelsize" ListenGsettings::ListenGsettings() { const QByteArray id(PANEL_SETTINGS); m_panelGsettings = new QGSettings(id); QObject::connect(m_panelGsettings, &QGSettings::changed, this, [=] (const QString &key){ if(key == PANEL_POSITION_KEY){ emit panelpositionchanged(m_panelGsettings->get(PANEL_POSITION_KEY).toInt()); } if(key == ICON_SIZE_KEY){ emit iconsizechanged(m_panelGsettings->get(ICON_SIZE_KEY).toInt()); } if(key == PANEL_SIZE_KEY){ emit panelsizechanged(m_panelGsettings->get(PANEL_SIZE_KEY).toInt()); } }); } ukui-panel-4.0.0.4/panel/common_fun/ukuipanel_infomation.cpp0000644000175000017500000001726414560306203022543 0ustar fengfeng/* * Copyright (C) 2019 Tianjin KYLIN Information Technology Co., Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see #define PANEL_SETTINGS "org.ukui.panel.settings" #define PANEL_POSITION_KEY "panelposition" #define ICON_SIZE_KEY "iconsize" #define PANEL_SIZE_KEY "panelsize" QString panelPositionTransform(int p) { switch (p){ case 1: return "Top"; break; case 2: return "Left"; break; case 3: return "Right"; break; default: return "Bottom"; break; } } UKuiPanelInformation::UKuiPanelInformation(QObject *parent) : QObject(parent) { QDBusConnection::sessionBus().connect(QString(), QString( "/panel/position"), "org.ukui.panel", "UKuiPanelPosition", this, SLOT(setPanelInformation(int,int,int,int,int,int)) ); } void UKuiPanelInformation::setPanelInformation(int x, int y, int width, int height, int size, int position) { m_screenX=x; m_screenY=y; m_screenWidth=width; m_screenHeight=height; m_panelSize=size; m_panelPosition=position; QDBusMessage message = QDBusMessage::createSignal("/panel/position", "org.ukui.panel", "PrimaryScreenAvailiableGeometryChanged"); QList args; args.append(m_screenX); args.append(m_screenY); args.append(m_screenWidth); args.append(m_screenHeight); message.setArguments(args); QDBusConnection::sessionBus().send(message); QDBusMessage message_refresh = QDBusMessage::createSignal("/panel/position", "org.ukui.panel", "PanelGeometryRefresh"); QDBusConnection::sessionBus().send(message_refresh); } QVariantList UKuiPanelInformation::GetPrimaryScreenGeometry() { int available_primary_screen_x; int available_primary_screen_y ; int available_primary_screen_width; int available_primary_screen_height; int available_panel_position; QVariantList vlist; switch(m_panelPosition){ case 0: available_primary_screen_x = m_screenX; available_primary_screen_y = m_screenY; available_primary_screen_width = m_screenWidth; available_primary_screen_height = m_screenHeight-m_panelSize; break; case 1: available_primary_screen_x = m_screenX; available_primary_screen_y = m_screenY + m_panelSize; available_primary_screen_width = m_screenWidth; available_primary_screen_height = m_screenHeight - m_panelSize; break; case 2: available_primary_screen_x = m_screenX + m_panelSize; available_primary_screen_y = m_screenY; available_primary_screen_width = m_screenWidth - m_panelSize; available_primary_screen_height = m_screenHeight; break; case 3: available_primary_screen_x = m_screenX; available_primary_screen_y = m_screenY; available_primary_screen_width = m_screenWidth - m_panelSize; available_primary_screen_height = m_screenHeight; break; default: available_primary_screen_x = m_screenX; available_primary_screen_y = m_screenY; available_primary_screen_width = m_screenWidth; available_primary_screen_height = m_screenHeight - m_panelSize; break; } vlist< #include #include class ListenGsettings : public QObject { Q_OBJECT public: ListenGsettings(); QGSettings *m_panelGsettings; Q_SIGNALS: void panelsizechanged(int panelsize); void iconsizechanged(int iconsize); void panelpositionchanged(int panelposition); }; #endif // LISTENGSETTINGS_H ukui-panel-4.0.0.4/panel/common_fun/Readme.md0000644000175000017500000000053114560306203017323 0ustar fengfeng使用工具qdbuscpp2xml从dbus.h生成XML文件; qdbuscpp2xml -M ukuipanel_infomation.h -o org.ukui.panel.information.xml B.使用工具qdbusxml2cpp从XML文件生成继承自QDBusAbstractAdaptor的类,供服务端使用 qdbusxml2cpp com.kylin.security.controller.filectrl.xml -i dbus.h -a dbus-adaptor https://blog.51cto.com/9291927/21184 ukui-panel-4.0.0.4/panel/common_fun/org.ukui.panel.information.xml0000644000175000017500000000156514560306203023523 0ustar fengfeng ukui-panel-4.0.0.4/panel/common_fun/dbus-adaptor.h0000644000175000017500000000421714560306203020347 0ustar fengfeng/* * This file was generated by qdbusxml2cpp version 0.8 * Command line was: qdbusxml2cpp org.ukui.panel.information.xml -i ukuipanel_infomation.h -a dbus-adaptor * * qdbusxml2cpp is Copyright (C) 2020 The Qt Company Ltd. * * This is an auto-generated file. * This file may have been hand-edited. Look for HAND-EDIT comments * before re-generating it. */ #ifndef DBUS-ADAPTOR_H #define DBUS-ADAPTOR_H #include #include #include "ukuipanel_infomation.h" QT_BEGIN_NAMESPACE class QByteArray; template class QList; template class QMap; class QString; class QStringList; class QVariant; QT_END_NAMESPACE /* * Adaptor class for interface org.ukui.panel */ class PanelAdaptor: public QDBusAbstractAdaptor { Q_OBJECT Q_CLASSINFO("D-Bus Interface", "org.ukui.panel") Q_CLASSINFO("D-Bus Introspection", "" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" "") public: PanelAdaptor(QObject *parent); virtual ~PanelAdaptor(); public: // PROPERTIES public Q_SLOTS: // METHODS QString GetPanelPosition(); QVariantList GetPrimaryScreenAvailableGeometry(); QVariantList GetPrimaryScreenGeometry(); QVariantList GetPrimaryScreenPhysicalGeometry(); void setPanelInformation(int in0, int in1, int in2, int in3, int in4, int in5); Q_SIGNALS: // SIGNALS }; #endif ukui-panel-4.0.0.4/panel/common_fun/panel_commission.h0000644000175000017500000000205614560306203021320 0ustar fengfeng/* * Copyright (C) 2019 Tianjin KYLIN Information Technology Co., Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see #include #include class PanelCommission : public QObject { Q_OBJECT public: PanelCommission(); ~PanelCommission(); static void panelConfigFileReset(bool reset); static void panelConfigFileValueInit(bool set); }; #endif ukui-panel-4.0.0.4/panel/common_fun/ukuipanel_infomation.h0000644000175000017500000000310414560306203022174 0ustar fengfeng/* * Copyright (C) 2019 Tianjin KYLIN Information Technology Co., Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see #include #include #include class UKuiPanelInformation : public QObject { Q_OBJECT Q_CLASSINFO("D-Bus Interface","org.ukui.panel") public: explicit UKuiPanelInformation(QObject *parent = 0); private: int m_screenX; int m_screenY; int m_screenWidth; int m_screenHeight; int m_panelPosition; int m_panelSize; enum PanelPosition{ Bottom = 0, Top = 1, Left = 2, Right = 3 }; public Q_SLOTS: QVariantList GetPrimaryScreenGeometry(); QVariantList GetPrimaryScreenAvailableGeometry(); QVariantList GetPrimaryScreenPhysicalGeometry(); QString GetPanelPosition(); void setPanelInformation(int ,int ,int, int, int, int); }; #endif // UKUIPANEL_INFORMATION_H ukui-panel-4.0.0.4/panel/common_fun/dbus-adaptor.cpp0000644000175000017500000000421614560306203020701 0ustar fengfeng/* * This file was generated by qdbusxml2cpp version 0.8 * Command line was: qdbusxml2cpp org.ukui.panel.information.xml -i ukuipanel_infomation.h -a dbus-adaptor * * qdbusxml2cpp is Copyright (C) 2020 The Qt Company Ltd. * * This is an auto-generated file. * Do not edit! All changes made to it will be lost. */ #include "dbus-adaptor.h" #include #include #include #include #include #include #include /* * Implementation of adaptor class PanelAdaptor */ PanelAdaptor::PanelAdaptor(QObject *parent) : QDBusAbstractAdaptor(parent) { // constructor setAutoRelaySignals(true); } PanelAdaptor::~PanelAdaptor() { // destructor } QString PanelAdaptor::GetPanelPosition() { // handle method call org.ukui.panel.GetPanelPosition QString out0; QMetaObject::invokeMethod(parent(), "GetPanelPosition", Q_RETURN_ARG(QString, out0)); return out0; } QVariantList PanelAdaptor::GetPrimaryScreenAvailableGeometry() { // handle method call org.ukui.panel.GetPrimaryScreenAvailableGeometry QVariantList out0; QMetaObject::invokeMethod(parent(), "GetPrimaryScreenAvailableGeometry", Q_RETURN_ARG(QVariantList, out0)); return out0; } QVariantList PanelAdaptor::GetPrimaryScreenGeometry() { // handle method call org.ukui.panel.GetPrimaryScreenGeometry QVariantList out0; QMetaObject::invokeMethod(parent(), "GetPrimaryScreenGeometry", Q_RETURN_ARG(QVariantList, out0)); return out0; } QVariantList PanelAdaptor::GetPrimaryScreenPhysicalGeometry() { // handle method call org.ukui.panel.GetPrimaryScreenPhysicalGeometry QVariantList out0; QMetaObject::invokeMethod(parent(), "GetPrimaryScreenPhysicalGeometry", Q_RETURN_ARG(QVariantList, out0)); return out0; } void PanelAdaptor::setPanelInformation(int in0, int in1, int in2, int in3, int in4, int in5) { // handle method call org.ukui.panel.setPanelInformation QMetaObject::invokeMethod(parent(), "setPanelInformation", Q_ARG(int, in0), Q_ARG(int, in1), Q_ARG(int, in2), Q_ARG(int, in3), Q_ARG(int, in4), Q_ARG(int, in5)); } ukui-panel-4.0.0.4/panel/common_fun/panel_commission.cpp0000644000175000017500000000223514560306203021652 0ustar fengfeng/* * Copyright (C) 2019 Tianjin KYLIN Information Technology Co., Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see * * Copyright: 2019 Tianjin KYLIN Information Technology Co., Ltd. * * * This program or library is free software; you can redistribute it * and/or modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * You should have received a copy of the GNU Lesser General * Public License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA * * END_COMMON_COPYRIGHT_HEADER */ #include "ukuipanellayout.h" #include #include #include #include #include #include #include #include #include #include #include #include #include "plugin.h" #include "common/common.h" #include "iukuipanelplugin.h" #include "ukuipanel.h" #include #include #define ANIMATION_DURATION 250 class ItemMoveAnimation : public QVariantAnimation { public: ItemMoveAnimation(QLayoutItem *item) : mItem(item) { setEasingCurve(QEasingCurve::OutBack); setDuration(ANIMATION_DURATION); } void updateCurrentValue(const QVariant ¤t) { mItem->setGeometry(current.toRect()); } private: QLayoutItem* mItem; }; struct LayoutItemInfo { LayoutItemInfo(QLayoutItem *layoutItem=0); QLayoutItem *item; QRect geometry; bool separate; bool expandable; }; LayoutItemInfo::LayoutItemInfo(QLayoutItem *layoutItem): item(layoutItem), separate(false), expandable(false) { if (!item) return; Plugin *p = qobject_cast(item->widget()); if (p) { separate = p->isSeparate(); expandable = p->isExpandable(); return; } } /************************************************ This is logical plugins grid, it's same for horizontal and vertical panel. Plugins keeps as: <---LineCount--> + ---+----+----+ | P1 | P2 | P3 | +----+----+----+ | P4 | P5 | | +----+----+----+ ... +----+----+----+ | PN | | | +----+----+----+ ************************************************/ class LayoutItemGrid { public: explicit LayoutItemGrid(); ~LayoutItemGrid(); void addItem(QLayoutItem *item); int count() const { return mItems.count(); } QLayoutItem *itemAt(int index) const { return mItems[index]; } QLayoutItem *takeAt(int index); const LayoutItemInfo &itemInfo(int row, int col) const; LayoutItemInfo &itemInfo(int row, int col); void update(); int lineSize() const { return mLineSize; } void setLineSize(int value); int colCount() const { return mColCount; } void setColCount(int value); int usedColCount() const { return mUsedColCount; } int rowCount() const { return mRowCount; } void invalidate() { mValid = false; } bool isValid() const { return mValid; } QSize sizeHint() const { return mSizeHint; } bool horiz() const { return mHoriz; } void setHoriz(bool value); void clear(); void rebuild(); bool isExpandable() const { return mExpandable; } int expandableSize() const { return mExpandableSize; } void moveItem(int from, int to); private: QVector mInfoItems; int mColCount; int mUsedColCount; int mRowCount; bool mValid; int mExpandableSize; int mLineSize; QSize mSizeHint; QSize mMinSize; bool mHoriz; int mNextRow; int mNextCol; bool mExpandable; QList mItems; void doAddToGrid(QLayoutItem *item); }; /************************************************ ************************************************/ LayoutItemGrid::LayoutItemGrid() { mLineSize = 0; mHoriz = true; clear(); } LayoutItemGrid::~LayoutItemGrid() { qDeleteAll(mItems); } /************************************************ ************************************************/ void LayoutItemGrid::clear() { mRowCount = 0; mNextRow = 0; mNextCol = 0; mInfoItems.resize(0); mValid = false; mExpandable = false; mExpandableSize = 0; mUsedColCount = 0; mSizeHint = QSize(0,0); mMinSize = QSize(0,0); } /************************************************ ************************************************/ void LayoutItemGrid::rebuild() { clear(); #if (QT_VERSION < QT_VERSION_CHECK(5,7,0)) for(int i=0;i= QT_VERSION_CHECK(5,7,0)) for(QLayoutItem *item : qAsConst(mItems)){ #endif doAddToGrid(item); } } /************************************************ ************************************************/ void LayoutItemGrid::addItem(QLayoutItem *item) { doAddToGrid(item); mItems.append(item); } /************************************************ ************************************************/ void LayoutItemGrid::doAddToGrid(QLayoutItem *item) { LayoutItemInfo info(item); if (info.separate && mNextCol > 0) { mNextCol = 0; mNextRow++; } int cnt = (mNextRow + 1 ) * mColCount; if (mInfoItems.count() <= cnt) mInfoItems.resize(cnt); int idx = mNextRow * mColCount + mNextCol; mInfoItems[idx] = info; mUsedColCount = qMax(mUsedColCount, mNextCol + 1); mExpandable = mExpandable || info.expandable; mRowCount = qMax(mRowCount, mNextRow+1); if (info.separate || mNextCol >= mColCount-1) { mNextRow++; mNextCol = 0; } else { mNextCol++; } invalidate(); } /************************************************ ************************************************/ QLayoutItem *LayoutItemGrid::takeAt(int index) { QLayoutItem *item = mItems.takeAt(index); rebuild(); return item; } /************************************************ ************************************************/ void LayoutItemGrid::moveItem(int from, int to) { mItems.move(from, to); rebuild(); } /************************************************ ************************************************/ const LayoutItemInfo &LayoutItemGrid::itemInfo(int row, int col) const { return mInfoItems[row * mColCount + col]; } /************************************************ ************************************************/ LayoutItemInfo &LayoutItemGrid::itemInfo(int row, int col) { return mInfoItems[row * mColCount + col]; } /************************************************ ************************************************/ void LayoutItemGrid::update() { mExpandableSize = 0; mSizeHint = QSize(0,0); if (mHoriz) { mSizeHint.setHeight(mLineSize * mColCount); int x = 0; for (int r=0; rsizeHint(); info.geometry = QRect(QPoint(x,y), sz); y += sz.height(); rw = qMax(rw, sz.width()); } x += rw; if (itemInfo(r, 0).expandable) mExpandableSize += rw; mSizeHint.setWidth(x); mSizeHint.rheight() = qMax(mSizeHint.rheight(), y); } } else { mSizeHint.setWidth(mLineSize * mColCount); int y = 0; for (int r=0; rsizeHint(); info.geometry = QRect(QPoint(x,y), sz); x += sz.width(); rh = qMax(rh, sz.height()); } y += rh; if (itemInfo(r, 0).expandable) mExpandableSize += rh; mSizeHint.setHeight(y); mSizeHint.rwidth() = qMax(mSizeHint.rwidth(), x); } } mValid = true; } /************************************************ ************************************************/ void LayoutItemGrid::setLineSize(int value) { mLineSize = qMax(1, value); invalidate(); } /************************************************ ************************************************/ void LayoutItemGrid::setColCount(int value) { mColCount = qMax(1, value); rebuild(); } /************************************************ ************************************************/ void LayoutItemGrid::setHoriz(bool value) { mHoriz = value; invalidate(); } /************************************************ ************************************************/ UKUIPanelLayout::UKUIPanelLayout(QWidget *parent) : QLayout(parent), m_leftGrid(new LayoutItemGrid()), m_rightGrid(new LayoutItemGrid()), m_position(IUKUIPanel::PositionBottom), m_animate(false) { setContentsMargins(0, 0, 0, 0); } /************************************************ ************************************************/ UKUIPanelLayout::~UKUIPanelLayout() { delete m_leftGrid; delete m_rightGrid; } /************************************************ ************************************************/ void UKUIPanelLayout::addItem(QLayoutItem *item) { LayoutItemGrid *grid = m_rightGrid; Plugin *p = qobject_cast(item->widget()); if (p && p->alignment() == Plugin::AlignLeft) grid = m_leftGrid; grid->addItem(item); } /************************************************ ************************************************/ void UKUIPanelLayout::globalIndexToLocal(int index, LayoutItemGrid **grid, int *gridIndex) { if (index < m_leftGrid->count()) { *grid = m_leftGrid; *gridIndex = index; return; } *grid = m_rightGrid; *gridIndex = index - m_leftGrid->count(); } /************************************************ ************************************************/ void UKUIPanelLayout::globalIndexToLocal(int index, LayoutItemGrid **grid, int *gridIndex) const { if (index < m_leftGrid->count()) { *grid = m_leftGrid; *gridIndex = index; return; } *grid = m_rightGrid; *gridIndex = index - m_leftGrid->count(); } /************************************************ ************************************************/ QLayoutItem *UKUIPanelLayout::itemAt(int index) const { if (index < 0 || index >= count()) return 0; LayoutItemGrid *grid=0; int idx=0; globalIndexToLocal(index, &grid, &idx); return grid->itemAt(idx); } /************************************************ ************************************************/ QLayoutItem *UKUIPanelLayout::takeAt(int index) { if (index < 0 || index >= count()) return 0; LayoutItemGrid *grid=0; int idx=0; globalIndexToLocal(index, &grid, &idx); return grid->takeAt(idx); } /************************************************ ************************************************/ int UKUIPanelLayout::count() const { return m_leftGrid->count() + m_rightGrid->count(); } /************************************************ ************************************************/ void UKUIPanelLayout::moveItem(int from, int to, bool withAnimation) { if (from != to) { LayoutItemGrid *fromGrid=0; int fromIdx=0; globalIndexToLocal(from, &fromGrid, &fromIdx); LayoutItemGrid *toGrid=0; int toIdx=0; globalIndexToLocal(to, &toGrid, &toIdx); if (fromGrid == toGrid) { fromGrid->moveItem(fromIdx, toIdx); } else { QLayoutItem *item = fromGrid->takeAt(fromIdx); toGrid->addItem(item); //recalculate position because we removed from one and put to another grid LayoutItemGrid *toGridAux=0; globalIndexToLocal(to, &toGridAux, &toIdx); Q_ASSERT(toGrid == toGridAux); //grid must be the same (if not something is wrong with our logic) toGrid->moveItem(toGridAux->count()-1, toIdx); } } m_animate = withAnimation; invalidate(); } /************************************************ ************************************************/ QSize UKUIPanelLayout::sizeHint() const { if (!m_leftGrid->isValid()) m_leftGrid->update(); if (!m_rightGrid->isValid()) m_rightGrid->update(); QSize ls = m_leftGrid->sizeHint(); QSize rs = m_rightGrid->sizeHint(); if (isHorizontal()) { return QSize(ls.width() + rs.width(), qMax(ls.height(), rs.height())); } else { return QSize(qMax(ls.width(), rs.width()), ls.height() + rs.height()); } } /************************************************ ************************************************/ void UKUIPanelLayout::setGeometry(const QRect &geometry) { if (!m_leftGrid->isValid()) m_leftGrid->update(); if (!m_rightGrid->isValid()) m_rightGrid->update(); QRect my_geometry{geometry}; my_geometry -= contentsMargins(); if (count()) { if (isHorizontal()) setGeometryHoriz(my_geometry); else setGeometryVert(my_geometry); } m_animate = false; QLayout::setGeometry(my_geometry); } /************************************************ ************************************************/ void UKUIPanelLayout::setItemGeometry(QLayoutItem *item, const QRect &geometry, bool withAnimation) { Plugin *plugin = qobject_cast(item->widget()); if (withAnimation && plugin) { ItemMoveAnimation* animation = new ItemMoveAnimation(item); animation->setStartValue(item->geometry()); animation->setEndValue(geometry); animation->start(animation->DeleteWhenStopped); animation->deleteLater(); } else { item->setGeometry(geometry); } } /************************************************ ************************************************/ void UKUIPanelLayout::setGeometryHoriz(const QRect &geometry) { const bool visual_h_reversed = parentWidget() && parentWidget()->isRightToLeft(); // Calc expFactor for expandable plugins like TaskBar. double expFactor; { int expWidth = m_leftGrid->expandableSize() + m_rightGrid->expandableSize(); int nonExpWidth = m_leftGrid->sizeHint().width() - m_leftGrid->expandableSize() + m_rightGrid->sizeHint().width() - m_rightGrid->expandableSize(); expFactor = expWidth ? ((1.0 * geometry.width() - nonExpWidth) / expWidth) : 1; } // Calc baselines for plugins like button. QVector baseLines(qMax(m_leftGrid->colCount(), m_rightGrid->colCount())); const int bh = geometry.height() / baseLines.count(); const int base_center = bh >> 1; const int height_remain = 0 < bh ? geometry.height() % baseLines.size() : 0; { int base = geometry.top(); for (auto i = baseLines.begin(), i_e = baseLines.end(); i_e != i; ++i, base += bh) { *i = base; } } #if 0 qDebug() << "** UKUIPanelLayout::setGeometryHoriz **************"; qDebug() << "geometry: " << geometry; qDebug() << "Left grid"; qDebug() << " cols:" << m_leftGrid->colCount() << " rows:" << m_leftGrid->rowCount(); qDebug() << " usedCols" << m_leftGrid->usedColCount(); qDebug() << "Right grid"; qDebug() << " cols:" << m_rightGrid->colCount() << " rows:" << m_rightGrid->rowCount(); qDebug() << " usedCols" << m_rightGrid->usedColCount(); #endif // Left aligned plugins. int left=geometry.left(); for (int r=0; rrowCount(); ++r) { int rw = 0; int remain = height_remain; for (int c=0; cusedColCount(); ++c) { const LayoutItemInfo &info = m_leftGrid->itemInfo(r, c); if (info.item) { QRect rect; if (info.separate) { rect.setLeft(left); rect.setTop(geometry.top()); rect.setHeight(geometry.height()); if (info.expandable) rect.setWidth(info.geometry.width() * expFactor); else rect.setWidth(info.geometry.width()); } else { int height = bh + (0 < remain-- ? 1 : 0); if (!info.item->expandingDirections().testFlag(Qt::Orientation::Vertical)) height = qMin(info.geometry.height(), height); height = qMin(geometry.height(), height); rect.setHeight(height); rect.setWidth(qMin(info.geometry.width(), geometry.width())); if (height < bh) rect.moveCenter(QPoint(0, baseLines[c] + base_center)); else rect.moveTop(baseLines[c]); rect.moveLeft(left); } rw = qMax(rw, rect.width()); if (visual_h_reversed) rect.moveLeft(geometry.left() + geometry.right() - rect.x() - rect.width() + 1); setItemGeometry(info.item, rect, m_animate); } } left += rw; } // Right aligned plugins. int right=geometry.right(); for (int r=m_rightGrid->rowCount()-1; r>=0; --r) { int rw = 0; int remain = height_remain; for (int c=0; cusedColCount(); ++c) { const LayoutItemInfo &info = m_rightGrid->itemInfo(r, c); if (info.item) { QRect rect; if (info.separate) { rect.setTop(geometry.top()); rect.setHeight(geometry.height()); if (info.expandable) rect.setWidth(info.geometry.width() * expFactor); else rect.setWidth(info.geometry.width()); rect.moveRight(right); } else { int height = bh + (0 < remain-- ? 1 : 0); if (!info.item->expandingDirections().testFlag(Qt::Orientation::Vertical)) height = qMin(info.geometry.height(), height); height = qMin(geometry.height(), height); rect.setHeight(height); rect.setWidth(qMin(info.geometry.width(), geometry.width())); if (height < bh) rect.moveCenter(QPoint(0, baseLines[c] + base_center)); else rect.moveTop(baseLines[c]); rect.moveRight(right); } rw = qMax(rw, rect.width()); if (visual_h_reversed) rect.moveLeft(geometry.left() + geometry.right() - rect.x() - rect.width() + 1); setItemGeometry(info.item, rect, m_animate); } } right -= rw; } } /************************************************ ************************************************/ void UKUIPanelLayout::setGeometryVert(const QRect &geometry) { const bool visual_h_reversed = parentWidget() && parentWidget()->isRightToLeft(); // Calc expFactor for expandable plugins like TaskBar. double expFactor; { int expHeight = m_leftGrid->expandableSize() + m_rightGrid->expandableSize(); int nonExpHeight = m_leftGrid->sizeHint().height() - m_leftGrid->expandableSize() + m_rightGrid->sizeHint().height() - m_rightGrid->expandableSize(); expFactor = expHeight ? ((1.0 * geometry.height() - nonExpHeight) / expHeight) : 1; } // Calc baselines for plugins like button. QVector baseLines(qMax(m_leftGrid->colCount(), m_rightGrid->colCount())); const int bw = geometry.width() / baseLines.count(); const int base_center = bw >> 1; const int width_remain = 0 < bw ? geometry.width() % baseLines.size() : 0; { int base = geometry.left(); for (auto i = baseLines.begin(), i_e = baseLines.end(); i_e != i; ++i, base += bw) { *i = base; } } #if 0 qDebug() << "** UKUIPanelLayout::setGeometryVert **************"; qDebug() << "geometry: " << geometry; qDebug() << "Left grid"; qDebug() << " cols:" << m_leftGrid->colCount() << " rows:" << m_leftGrid->rowCount(); qDebug() << " usedCols" << m_leftGrid->usedColCount(); qDebug() << "Right grid"; qDebug() << " cols:" << m_rightGrid->colCount() << " rows:" << m_rightGrid->rowCount(); qDebug() << " usedCols" << m_rightGrid->usedColCount(); #endif // Top aligned plugins. int top=geometry.top(); for (int r=0; rrowCount(); ++r) { int rh = 0; int remain = width_remain; for (int c=0; cusedColCount(); ++c) { const LayoutItemInfo &info = m_leftGrid->itemInfo(r, c); if (info.item) { QRect rect; if (info.separate) { rect.moveTop(top); rect.setLeft(geometry.left()); rect.setWidth(geometry.width()); if (info.expandable) rect.setHeight(info.geometry.height() * expFactor); else rect.setHeight(info.geometry.height()); } else { rect.setHeight(qMin(info.geometry.height(), geometry.height())); int width = bw + (0 < remain-- ? 1 : 0); if (!info.item->expandingDirections().testFlag(Qt::Orientation::Horizontal)) width = qMin(info.geometry.width(), width); width = qMin(geometry.width(), width); rect.setWidth(width); if (width < bw) rect.moveCenter(QPoint(baseLines[c] + base_center, 0)); else rect.moveLeft(baseLines[c]); rect.moveTop(top); } rh = qMax(rh, rect.height()); if (visual_h_reversed) rect.moveLeft(geometry.left() + geometry.right() - rect.x() - rect.width() + 1); setItemGeometry(info.item, rect, m_animate); } } top += rh; } // Bottom aligned plugins. int bottom=geometry.bottom(); for (int r=m_rightGrid->rowCount()-1; r>=0; --r) { int rh = 0; int remain = width_remain; for (int c=0; cusedColCount(); ++c) { const LayoutItemInfo &info = m_rightGrid->itemInfo(r, c); if (info.item) { QRect rect; if (info.separate) { rect.setLeft(geometry.left()); rect.setWidth(geometry.width()); if (info.expandable) rect.setHeight(info.geometry.height() * expFactor); else rect.setHeight(info.geometry.height()); rect.moveBottom(bottom); } else { rect.setHeight(qMin(info.geometry.height(), geometry.height())); int width = bw + (0 < remain-- ? 1 : 0); if (!info.item->expandingDirections().testFlag(Qt::Orientation::Horizontal)) width = qMin(info.geometry.width(), width); width = qMin(geometry.width(), width); rect.setWidth(width); if (width < bw) rect.moveCenter(QPoint(baseLines[c] + base_center, 0)); else rect.moveLeft(baseLines[c]); rect.moveBottom(bottom); } rh = qMax(rh, rect.height()); if (visual_h_reversed) rect.moveLeft(geometry.left() + geometry.right() - rect.x() - rect.width() + 1); setItemGeometry(info.item, rect, m_animate); } } bottom -= rh; } } /************************************************ ************************************************/ void UKUIPanelLayout::invalidate() { m_leftGrid->invalidate(); m_rightGrid->invalidate(); m_minPluginSize = QSize(); QLayout::invalidate(); } /************************************************ ************************************************/ int UKUIPanelLayout::lineCount() const { return m_leftGrid->colCount(); } /************************************************ ************************************************/ void UKUIPanelLayout::setLineCount(int value) { m_leftGrid->setColCount(value); m_rightGrid->setColCount(value); invalidate(); } /************************************************ ************************************************/ void UKUIPanelLayout::rebuild() { m_leftGrid->rebuild(); m_rightGrid->rebuild(); } /************************************************ ************************************************/ int UKUIPanelLayout::lineSize() const { return m_leftGrid->lineSize(); } /************************************************ ************************************************/ void UKUIPanelLayout::setLineSize(int value) { m_leftGrid->setLineSize(value); m_rightGrid->setLineSize(value); invalidate(); } /************************************************ ************************************************/ void UKUIPanelLayout::setPosition(IUKUIPanel::Position value) { m_position = value; m_leftGrid->setHoriz(isHorizontal()); m_rightGrid->setHoriz(isHorizontal()); } /************************************************ ************************************************/ bool UKUIPanelLayout::isHorizontal() const { return m_position == IUKUIPanel::PositionTop || m_position == IUKUIPanel::PositionBottom; } /************************************************ ************************************************/ bool UKUIPanelLayout::itemIsSeparate(QLayoutItem *item) { if (!item) return true; Plugin *p = qobject_cast(item->widget()); if (!p) return true; return p->isSeparate(); } /************************************************ ************************************************/ void UKUIPanelLayout::moveUpPlugin(Plugin * plugin) { const int i = indexOf(plugin); if (0 < i) moveItem(i, i - 1, true); } /************************************************ ************************************************/ void UKUIPanelLayout::addPlugin(Plugin * plugin) { const int prev_count = count(); addWidget(plugin); //check actual position const int pos = indexOf(plugin); if (prev_count > pos) moveItem(pos, prev_count, false); } ukui-panel-4.0.0.4/panel/CMakeLists.txt0000644000175000017500000001223314567026260016217 0ustar fengfengproject(ukui-panel LANGUAGES C CXX) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) add_subdirectory(common) set(PRIV_HEADERS panelpluginsmodel.h ukuipanel.h ukuipanelapplication.h ukuipanelapplication_p.h ukuipanellayout.h plugin.h pluginsettings_p.h contextmenu.h ) # using UKUi namespace in the public headers. set(PUB_HEADERS ukuipanelglobals.h pluginsettings.h iukuipanelplugin.h iukuipanel.h common/ukuisettings.h common/ukuiplugininfo.h common/ukuitranslator.h common/common.h common/ukuigridlayout.h common/ukuiglobals.h common_fun/listengsettings.h common_fun/ukuipanel_infomation.h common_fun/dbus-adaptor.h common_fun/panel_commission.h customstyle.h ) set(SOURCES main.cpp panelpluginsmodel.cpp windownotifier.cpp ukuipanel.cpp ukuipanelapplication.cpp ukuipanellayout.cpp plugin.cpp pluginsettings.cpp contextmenu.cpp common/ukuiplugininfo.cpp common/ukuisettings.cpp common/ukuitranslator.cpp common/ukuigridlayout.cpp common_fun/listengsettings.cpp common_fun/ukuipanel_infomation.cpp common_fun/dbus-adaptor.cpp common_fun/panel_commission.cpp customstyle.cpp ) set(PLUGIN_DESKTOPS_DIR "${CMAKE_INSTALL_FULL_DATAROOTDIR}/ukui/${PROJECT_NAME}") set(QTX_LIBRARIES Qt5::Widgets Qt5::Xml Qt5::DBus) set(UKUI_PANEL_MAN ../man/ukui-panel.1) set(DESKTOP_FILE resources/ukui-panel.desktop) set(IMAGE_DIR ./img/) set(GSETTINGS_FILE resources/org.ukui.panel.settings.gschema.xml) set(PANEL_GLOBAL_CONFIG_FILES resources/panel-commission.ini) set(PANEL_GLOBAL_CONFIG_EXEC_FILES resources/panel-commission.sh resources/ukui-panel-reset.sh resources/ukui-panel-config.sh) file(GLOB UKUI_PANEL_CONFIG_FILES resources/*.conf) add_definitions(-DCOMPILE_UKUI_PANEL) add_definitions(-DPLUGIN_DESKTOPS_DIR=\"${PLUGIN_DESKTOPS_DIR}\") if (WITH_SCREENSAVER_FALLBACK) message(STATUS "Building with conversion of deprecated 'screensaver' plugin") add_definitions(-DWITH_SCREENSAVER_FALLBACK "-DUKUI_LOCK_DESKTOP=\"${CMAKE_INSTALL_FULL_DATAROOTDIR}/applications/ukui-lockscreen.desktop\"") endif () set_property(SOURCE ${DBUS_INTERFACE_SRCS} ${DBUS_ADAPTOR_SRCS} PROPERTY SKIP_AUTOGEN ON) list(APPEND SOURCES "${DBUS_INTERFACE_SRCS}" "${DBUS_ADAPTOR_SRCS}") # 翻译文件 file(GLOB TS_FILES "translation/*.ts") # 更新翻译并创建.qm文件 qt5_create_translation(QM_FILES ${PROJECT_SOURCE_DIR} ${TS_FILES}) add_executable(${PROJECT_NAME} ${PUB_HEADERS} ${PRIV_HEADERS} ${QM_FILES} ${SOURCES} ) find_package(PkgConfig) pkg_check_modules(GLIB2 REQUIRED glib-2.0) pkg_check_modules(GIO2 REQUIRED gio-2.0) pkg_check_modules(Gsetting REQUIRED gsettings-qt) include_directories(${GLIB2_INCLUDE_DIRS}) include_directories(${GIO2_INCLUDE_DIRS}) include_directories(${Gsetting_INCLUDE_DIRS}) find_package(PkgConfig REQUIRED) find_package(KF5WindowSystem) find_package(KF5Screen) pkg_check_modules(KYSDKWAYLANDHELPER_PKG kysdk-waylandhelper) #ADD_DEFINITIONS(-DQT_NO_KEYWORDS) target_link_libraries(${PROJECT_NAME} ${LIBRARIES} ${QTX_LIBRARIES} KF5::WindowSystem ${STATIC_PLUGINS} Qt5Xdg ${GLIB2_LIBRARIES} ${GIO2_LIBRARIES} ${Gsetting_LIBRARIES} Qt${QT_VERSION_MAJOR}::Quick KF5::Screen ) target_include_directories(${PROJECT_NAME} PRIVATE ${KYSDKWAYLANDHELPER_PKG_INCLUDE_DIRS}) target_link_directories(${PROJECT_NAME} PRIVATE ${KYSDKWAYLANDHELPER_PKG_LIBRARY_DIRS} KF5::WindowSystem) target_link_libraries(${PROJECT_NAME} ${KYSDKWAYLANDHELPER_PKG_LIBRARIES}) target_compile_definitions(${PROJECT_NAME} PRIVATE "UKUI_RELATIVE_SHARE_DIR=\"${UKUI_RELATIVE_SHARE_DIR}\"" "UKUI_RELATIVE_SHARE_TRANSLATIONS_DIR=\"${UKUI_RELATIVE_TRANSLATIONS_DIR}\"" "UKUI_SHARE_TRANSLATIONS_DIR=\"${UKUI_TRANSLATIONS_DIR}\"" "UKUI_GRAPHICS_DIR=\"${UKUI_GRAPHICS_DIR}\"" "UKUI_DATA_DIR=\"${UKUI_DATA_DIR}\"" "UKUI_INSTALL_PREFIX=\"${CMAKE_INSTALL_PREFIX}\"" ) #安装ukui-panel install(TARGETS ${PROJECT_NAME} RUNTIME DESTINATION bin) #DESKTOP FILE install(FILES ${DESKTOP_FILE} DESTINATION "/etc/xdg/autostart/" COMPONENT Runtime) install(FILES ${UKUI_PANEL_CONFIG_FILES} DESTINATION ${CMAKE_INSTALL_DATADIR}/ukui) install(FILES ${PUB_HEADERS} DESTINATION include/ukui) install(FILES ${UKUI_PANEL_MAN} DESTINATION "${CMAKE_INSTALL_MANDIR}/man1" COMPONENT Runtime) install(FILES ${GSETTINGS_FILE} DESTINATION "/usr/share/glib-2.0/schemas" COMPONENT Runtime) install(FILES ${PANEL_GLOBAL_CONFIG_FILES} DESTINATION "/usr/share/ukui/ukui-panel" COMPONENT Runtime PERMISSIONS OWNER_WRITE OWNER_READ GROUP_READ GROUP_WRITE WORLD_READ WORLD_WRITE) install(FILES ${PANEL_GLOBAL_CONFIG_EXEC_FILES} DESTINATION "/usr/share/ukui/ukui-panel" COMPONENT Runtime PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ GROUP_EXECUTE GROUP_READ GROUP_WRITE WORLD_READ WORLD_WRITE WORLD_EXECUTE) install(DIRECTORY ${IMAGE_DIR} DESTINATION "${PACKAGE_DATA_DIR}/panel/img") set(PLUGIN panel) set(PANEL_TRANSLATION_DIR "${PACKAGE_DATA_DIR}/panel/translation") add_compile_definitions(PANEL_TRANSLATION_DIR="${PANEL_TRANSLATION_DIR}") install(FILES ${QM_FILES} DESTINATION "${PANEL_TRANSLATION_DIR}") ukui-panel-4.0.0.4/panel/plugin.h0000644000175000017500000000732014560306203015116 0ustar fengfeng/* BEGIN_COMMON_COPYRIGHT_HEADER * (c)LGPL2+ * * Copyright: 2010-2011 Razor team * Authors: * Alexander Sokoloff * * Copyright: 2019 Tianjin KYLIN Information Technology Co., Ltd. * * * This program or library is free software; you can redistribute it * and/or modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * You should have received a copy of the GNU Lesser General * Public License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA * * END_COMMON_COPYRIGHT_HEADER */ #ifndef PLUGIN_H #define PLUGIN_H #include #include #include //#include //#include #include "common/ukuisettings.h" #include "common/ukuiplugininfo.h" #include "iukuipanel.h" #include "ukuipanelglobals.h" #include "pluginsettings.h" class QPluginLoader; class QSettings; class IUKUIPanelPlugin; class IUKUIPanelPluginLibrary; class UKUIPanel; class QMenu; class UKUI_PANEL_API Plugin : public QFrame { Q_OBJECT Q_PROPERTY(QColor moveMarkerColor READ moveMarkerColor WRITE setMoveMarkerColor) public: enum Alignment { AlignLeft, AlignRight }; explicit Plugin(const UKUi::PluginInfo &desktopFile, UKUi::Settings *settings, const QString &settingsGroup, UKUIPanel *panel); ~Plugin(); bool isLoaded() const { return m_plugin != 0; } Alignment alignment() const { return m_alignment; } void setAlignment(Alignment alignment); QString settingsGroup() const { return m_settings->group(); } void saveSettings(); QMenu* popupMenu() const; const IUKUIPanelPlugin * iPlugin() const { return m_plugin; } const UKUi::PluginInfo desktopFile() const { return m_desktopFile; } bool isSeparate() const; bool isExpandable() const; QWidget *widget() { return m_pluginWidget; } QString name() const { return m_name; } virtual bool eventFilter(QObject * watched, QEvent * event); // For QSS properties .................. static QColor moveMarkerColor() { return m_moveMarkerColor; } static void setMoveMarkerColor(QColor color) { m_moveMarkerColor = color; } public slots: void realign(); void showConfigureDialog(); void requestRemove(); signals: void startMove(); void remove(); /*! * \brief Signal emitted when this widget or some of its children * get the DragLeave event delivered. */ void dragLeft(); protected: void mousePressEvent(QMouseEvent *event); void mouseDoubleClickEvent(QMouseEvent *event); void showEvent(QShowEvent *event); private: bool loadLib(IUKUIPanelPluginLibrary const * pluginLib); bool loadModule(const QString &libraryName); IUKUIPanelPluginLibrary const * findStaticPlugin(const QString &libraryName); void watchWidgets(QObject * const widget); void unwatchWidgets(QObject * const widget); const UKUi::PluginInfo m_desktopFile; QPluginLoader *m_pluginLoader; IUKUIPanelPlugin *m_plugin; QWidget *m_pluginWidget; Alignment m_alignment; PluginSettings *m_settings; UKUIPanel *m_panel; static QColor m_moveMarkerColor; QString m_name; QPointer m_configDialog; //!< plugin's config dialog (if any) private slots: void settingsChanged(); }; #endif // PLUGIN_H ukui-panel-4.0.0.4/panel/ukuipanel.h0000644000175000017500000006346614560306221015632 0ustar fengfeng/* BEGIN_COMMON_COPYRIGHT_HEADER * (c)LGPL2+ * * Copyright: 2010-2011 Razor team * Authors: * Alexander Sokoloff * * Copyright: 2019 Tianjin KYLIN Information Technology Co., Ltd. * * * This program or library is free software; you can redistribute it * and/or modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * You should have received a copy of the GNU Lesser General * Public License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA * * END_COMMON_COPYRIGHT_HEADER */ #ifndef UKUIPANEL_H #define UKUIPANEL_H #include #include #include #include #include #include #include #include #include #include "common/ukuisettings.h" #include "iukuipanel.h" #include "ukuipanelglobals.h" #include "contextmenu.h" #include #include class QMenu; class Plugin; class QAbstractItemModel; namespace UKUi { class Settings; class PluginInfo; } class UKUIPanelLayout; class PanelPluginsModel; class WindowNotifier; /*! \brief The UKUIPanel class provides a single ukui-panel. All UKUIPanel * instances should be created and handled by UKUIPanelApplication. In turn, * all Plugins should be created and handled by UKUIPanels. * * UKUIPanel is just the panel, it does not incorporate any functionality. * Each function of the panel is implemented by Plugins, even the mainmenu * (plugin-mainmenu) and the taskbar (plugin-taskbar). So the UKUIPanel is * just the container for several Plugins while the different Plugins * incorporate the functions of the panel. Without the Plugins, the panel * is quite useless because it is just a box occupying space on the screen. * * UKUIPanel itself is a window (QFrame/QWidget) and this class is mainly * responsible for handling the size and position of this window on the * screen(s) as well as the different settings. The handling of the plugins * is outsourced in PanelPluginsModel and UKUIPanelLayout. PanelPluginsModel * is responsible for loading/creating and handling the plugins. * UKUIPanelLayout is inherited from QLayout and set as layout to the * background of UKUIPanel, so UKUIPanelLayout is responsible for the * layout of all the Plugins. * * \sa UKUIPanelApplication, Plugin, PanelPluginsModel, UKUIPanelLayout. */ class UKUI_PANEL_API UKUIPanel : public QFrame, public IUKUIPanel { Q_OBJECT Q_CLASSINFO("D-Bus Interface", "org.ukui.panel.settings") friend class PanelPluginsModel; public: void configWatch(KScreen::ConfigOperation *op); QRect m_primaryScreenGeometry; /** * @brief Stores how the panel should be aligned. Obviously, this applies * only if the panel does not occupy 100 % of the available space. If the * panel is vertical, AlignmentLeft means align to the top border of the * screen, AlignmentRight means align to the bottom. */ enum Alignment { AlignmentLeft = -1, //!< Align the panel to the left or top AlignmentCenter = 0, //!< Center the panel AlignmentRight = 1 //!< Align the panel to the right or bottom }; /** * @brief Creates and initializes the UKUIPanel. Performs the following * steps: * 1. Sets Qt window title, flags, attributes. * 2. Creates the panel layout. * 3. Prepares the timers. * 4. Connects signals and slots. * 5. Reads the settings for this panel. * 6. Optionally moves the panel to a valid screen (position-dependent). * 7. Loads the Plugins. * 8. Shows the panel, even if it is hidable (but then, starts the timer). * @param configGroup The name of the panel which is used as identifier * in the config file. * @param settings The settings instance of this ukui panel application. * @param parent Parent QWidget, can be omitted. */ UKUIPanel(const QString &configGroup, UKUi::Settings *settings, QWidget *parent = 0); virtual ~UKUIPanel(); /** * @brief Returns the name of this panel which is also used as identifier * in the config file. */ QString name() { return m_configGroup; } /** * @brief Reads all the necessary settings from mSettings and stores them * in local variables. Additionally, calls necessary methods like realign() * or updateStyleSheet() which need to get called after changing settings. */ void readSettings(); /** * @brief Creates and shows the popup menu (right click menu). If a plugin * is given as parameter, the menu will be divided in two groups: * plugin-specific options and panel-related options. As these two are * shown together, this menu has to be created by UKUIPanel. * @param plugin The plugin whose menu options will be included in the * context menu. */ void showPopupMenu(); // IUKUIPanel overrides ........ IUKUIPanel::Position position() const override { return m_position; } QRect globalGeometry() const override; /** * @brief calculatePopupWindowPos 计算任务栏弹窗的位置 * @param absolutePos * @param windowSize 窗口尺寸 * @return */ QRect calculatePopupWindowPos(QPoint const & absolutePos, QSize const & windowSize) const override; QRect calculatePopupWindowPos(const IUKUIPanelPlugin *plugin, const QSize &windowSize) const override; void willShowWindow(QWidget * w) override; void pluginFlagsChanged(const IUKUIPanelPlugin * plugin) override; // ........ end of IUKUIPanel overrides /** * @brief Searches for a Plugin in the Plugins-list of this panel. Takes * an IUKUIPanelPlugin as parameter and returns the corresponding Plugin. * @param iPlugin IUKUIPanelPlugin that we are looking for. * @return The corresponding Plugin if it is loaded in this panel, nullptr * otherwise. */ Plugin *findPlugin(const IUKUIPanelPlugin *iPlugin) const; /** * @brief Returns a string representation of the given position. This * string is human-readable and can be used in config files. * @param position position that should be converted to a string. * @return the string representation of the given position, i.e. * "Top", "Left", "Right" or "Bottom". * * \sa strToPosition() */ static QString positionToStr(IUKUIPanel::Position position); /** * @brief Returns an IUKUIPanel::Position from the given string. This can * be used to retrieve IUKUIPanel::Position values from the config files. * @param str string that should be converted to IUKUIPanel::Position * @param defaultValue value that will be returned if the string can not * be converted to an IUKUIPanel::Position. * @return IUKUIPanel::Position that was determined from str or * defaultValue if str could not be converted. * * \sa positionToStr() */ static IUKUIPanel::Position strToPosition(const QString &str, IUKUIPanel::Position defaultValue); static IUKUIPanel::Position intToPosition(const int p, IUKUIPanel::Position defaultValue); // Settings int iconSize() const override { return m_iconSize; } //!< Implement IUKUIPanel::iconSize(). int lineCount() const override { return m_lineCount; } //!< Implement IUKUIPanel::lineCount(). int panelSize() const override{ return m_panelSize; } int length() const { return m_length; } bool lengthInPercents() const { return m_lengthInPercents; } UKUIPanel::Alignment alignment() const { return m_alignment; } int screenNum() const { return m_screenNum; } QColor fontColor() const { return m_fontColor; } int reserveSpace() const { return m_reserveSpace; } bool visibleMargin() const { return m_visibleMargin; } int animationTime() const { return m_animationTime; } int showDelay() const { return m_showDelayTimer.interval(); } /*! * \brief Checks if a given Plugin is running and has the * IUKUIPanelPlugin::SingleInstance flag set. * \param pluginId Plugin Identifier which is the basename of the * .desktop file that specifies the plugin. * \return true if the Plugin is running and has the * IUKUIPanelPlugin::SingleInstance flag set, false otherwise. */ bool isPluginSingletonAndRunnig(QString const & pluginId) const; /*! * \brief Updates the config dialog. Used for updating its icons * when the panel-specific icon theme changes. */ // void updateConfigDialog() const; public Q_SLOTS: /** * @brief Shows the QWidget and makes it visible on all desktops. This * method is NOT related to showPanel(), hidePanel() and hidePanelWork() * which handle the UKUi hiding by resizing the panel. */ void show(); /** * @brief Shows the panel (immediately) after it had been hidden before. * Stops the QTimer mHideTimer. This it NOT the same as QWidget::show() * because hiding the panel in UKUi is done by making it very thin. So * this method in fact restores the original size of the panel. * \param animate flag for the panel show-up animation disabling (\sa mAnimationTime). * * \sa mHidable, mHidden, mHideTimer, hidePanel(), hidePanelWork() */ void showPanel(bool animate); /** * @brief Hides the panel (delayed) by starting the QTimer mHideTimer. * When this timer times out, hidePanelWork() will be called. So this * method is called when the cursor leaves the panel area but the panel * will be hidden later. * * \sa mHidable, mHidden, mHideTimer, showPanel(), hidePanelWork() */ void hidePanel(); /** * @brief Actually hides the panel. Will be invoked when the QTimer * mHideTimer times out. That timer will be started by showPanel(). This * is NOT the same as QWidget::hide() because hiding the panel in UKUi is * done by making the panel very thin. So this method in fact makes the * panel very thin while the QWidget stays visible. * * \sa mHidable, mHidden, mHideTimer, showPanel(), hidePanel() */ void hidePanelWork(); // Settings /** * @brief All the setter methods are designed similar: * 1. Check if the given value is different from the current value. If not, * do not do anything and return. * 2. Set the value. * 3. If parameter save is true, call saveSettings(true) to store the * new settings on the disk. * 4. If necessary, propagate the new value to child objects, e.g. to * mLayout. * 5. If necessary, call update methods like realign() or * updateStyleSheet(). * @param value The value that should be set. * @param save If true, saveSettings(true) will be called. */ void setPanelSize(int value, bool save); void setIconSize(int value, bool save); //!< \sa setPanelSize() void setLineCount(int value, bool save); //!< \sa setPanelSize() void setLength(int length, bool inPercents, bool save); //!< \sa setPanelSize() void setPosition(int screen, IUKUIPanel::Position position, bool save); //!< \sa setPanelSize() void setAlignment(UKUIPanel::Alignment value, bool save); //!< \sa setPanelSize() void setHidable(bool hidable, bool save); //!< \sa setPanelSize() void setVisibleMargin(bool visibleMargin, bool save); //!< \sa setPanelSize() void setAnimationTime(int animationTime, bool save); //!< \sa setPanelSize() void setShowDelay(int showDelay, bool save); //!< \sa setPanelSize() /** * @brief Saves the current configuration, i.e. writes the current * configuration varibles to mSettings. * @param later Determines if the settings are written immediately or * after a short delay. If later==true, the QTimer mDelaySave is started. * As soon as this timer times out, saveSettings(false) will be called. If * later==false, settings will be written. */ void saveSettings(bool later=false); /** * @brief Checks if the panel can be placed on the current screen at the * current position. If it can not, it will be moved on another screen * where the desired position is possible. */ void ensureVisible(); void primaryChangedSlot(int x, int y, int w, int h, int r); Q_SIGNALS: /** * @brief This signal gets emitted whenever this panel receives a * QEvent::LayoutRequest, i.e. "Widget layout needs to be redone.". * The PanelPluginsModel will connect this signal to the individual * plugins so they can realign, too. */ void realigned(); /** * @brief This signal gets emitted at the end of * userRequestForDeletion() which in turn gets called when the user * decides to remove a panel. This signal is used by * UKUIPanelApplication to get notified whenever an UKUIPanel should * be removed. * @param self This UKUIPanel. UKUIPanelApplication will use this * parameter to identify the UKUIPanel that should be removed. */ void deletedByUser(UKUIPanel *self); /** * @brief This signal is just a relay signal. The pluginAdded signal * of the PanelPluginsModel (mPlugins) will be connected to this * signal. Thereby, we can make this signal of a private member * available as a public signal. * Currently, this signal is used by UKUIPanelApplication which * will further re-emit this signal. */ void pluginAdded(); /** * @brief This signal is just a relay signal. The pluginRemoved signal * of the PanelPluginsModel (mPlugins) will be connected to this * signal. Thereby, we can make this signal of a private member * available as a public signal. * Currently, this signal is used by UKUIPanelApplication which * will further re-emit this signal. */ void pluginRemoved(); protected: /** * @brief Overrides QObject::event(QEvent * e). Some functions of * the panel will be triggered by these events, e.g. showing/hiding * the panel or showing the context menu. * @param event The event that was received. * @return "QObject::event(QEvent *e) should return true if the event e * was recognized and processed." This is done by passing the event to * QFrame::event(QEvent *e) at the end. */ bool event(QEvent *event) override; /** * @brief Overrides QWidget::showEvent(QShowEvent * event). This * method is called when a widget (in this case: the UKUIPanel) is * shown. The call could happen before and after the widget is shown. * This method is just overridden to get notified when the UKUIPanel * will be shown. Then, UKUIPanel will call realign(). * @param event The QShowEvent sent by Qt. */ void showEvent(QShowEvent *event) override; void paintEvent(QPaintEvent *); void mouseMoveEvent(QMouseEvent *event); void mouseReleaseEvent(QMouseEvent* event); void mousePressEvent(QMouseEvent *event); public Q_SLOTS: /** * @brief Shows the ConfigPanelDialog and shows the "Config Panel" * page, i.e. calls showConfigPanelPage(). If the dialog does not * exist yet, it will be created before. * * The "Configure Panel" button in the context menu of the panel will * be connected to this slot so this method gets called whenever the * user clicks that button. * * Furthermore, this method will be called by UKUIPanelApplication * when a new plugin gets added (the UKUIPanel instances are handled * by UKUIPanelApplication). That is why this method/slot has to be * public. */ // void showConfigDialog(); private Q_SLOTS: /** * @brief Shows the ConfigPanelDialog and shows the "Config Plugins" * page, i.e. calls showConfigPluginsPage(). If the dialog does not * exist yet, it will be created before. * * The "Manage Widgets" button in the context menu of the panel will * be connected to this slot so this method gets called whenever the * user clicks that button. */ // void showAddPluginDialog(); /** * @brief Recalculates the geometry of the panel and reserves the * window manager strut, i.e. it calls setPanelGeometry() and * updateWmStrut(). * Two signals will be connected to this slot: * 1. QDesktopWidget::workAreaResized(int screen) which will be emitted * when the work area available (on screen) changes. * 2. UKUi::Application::themeChanged(), i.e. when the user changes * the theme. */ void realign(); /** * @brief Moves a plugin in PanelPluginsModel, i.e. calls * PanelPluginsModel::movePlugin(Plugin * plugin, QString const & nameAfter). * UKUIPanelLayout::pluginMoved() will be connected to this slot so * it gets called whenever a plugin was moved in the layout by the user. * @param plug */ void pluginMoved(Plugin * plug); private: KScreen::ConfigPtr m_config; bool m_isWaylandEnv; /** * @brief The UKUIPanelLayout of this panel. All the Plugins will be added * to the UI via this layout. */ UKUIPanelLayout* m_layout; /** * @brief The UKUi::Settings instance as retrieved from * UKUIPanelApplication. */ UKUi::Settings *m_settings; /** * @brief The background widget for the panel. This background widget will * have the background color or the background image if any of these is * set. This background widget will have the UKUIPanelLayout mLayout which * will in turn contain all the Plugins. */ QFrame *UKUIPanelWidget; /** * @brief The name of the panel which will also be used as an identifier * for config files. */ QString m_configGroup; /** * @brief Pointer to the PanelPluginsModel which will store all the Plugins * that are loaded. */ QScopedPointer m_plugins; /** * @brief object for storing info if some standalone window is shown * (for preventing hide) */ QScopedPointer m_standaloneWindows; /** * @brief Update the window manager struts _NET_WM_PARTIAL_STRUT and * _NET_WM_STRUT for this widget. "The purpose of struts is to reserve * space at the borders of the desktop. This is very useful for a * docking area, a taskbar or a panel, for instance. The Window Manager * should take this reserved area into account when constraining window * positions - maximized windows, for example, should not cover that * area." * \sa http://standards.freedesktop.org/wm-spec/wm-spec-latest.html#NETWMSTRUT */ void updateWmStrut(); /** * @brief Loads the plugins, i.e. creates a new PanelPluginsModel. * Connects the signals and slots and adds all the plugins to the * layout. */ void loadPlugins(); void reloadPlugins(QString model); QStringList readConfig(QString model); void checkPlugins(QStringList list); void movePlugins(QStringList list); /** * @brief Calculates and sets the geometry (i.e. the position and the size * on the screen) of the panel. Considers alignment, position, if the panel * is hidden and if its geometry should be set with animation. * \param animate flag if showing/hiding the panel should be animated. */ void setPanelGeometry(bool animate = false); QRect caculPanelGeometry(QRect primaryscreen); void setPanelAnimation(QRect startrect, QRect endrect); /** * @brief Sets the contents margins of the panel according to its position * and hiddenness. All margins are zero for visible panels. */ void setMargins(); /** * @brief Calculates the height of the panel if it is horizontal or the * width if the panel is vertical. Considers if the panel is hidden and * ensures that the result is at least PANEL_MINIMUM_SIZE. * @return The height/width of the panel. */ int getReserveDimension(); /** * @brief Stores the size of the panel, i.e. the height of a horizontal * panel or the width of a vertical panel in pixels. If the panel is * hidden (which is achieved by making the panel very thin), this value * is unchanged. So this value stores the size of the non-hidden panel. * * \sa panelSize(), setPanelSize(). */ void styleAdjust(); int m_panelSize; /** * @brief Stores the edge length of the panel icons in pixels. * * \sa IUKUIPanel::iconSize(), setIconSize(). */ int m_iconSize; /** * @brief Stores the number of lines/rows of the panel. * * \sa IUKUIPanel::lineCount(), setLineCount(). */ int m_lineCount; /** * @brief Stores the length of the panel, i.e. the width of a horizontal * panel or the height of a vertical panel. The unit of this value is * determined by mLengthInPercents. * * \sa mLengthInPercents */ int m_length; /** * @brief Stores if mLength is stored in pixels or relative to the * screen size in percents. If true, the length is stored in percents, * otherwise in pixels. * * \sa mLength */ bool m_lengthInPercents; /** * @brief Stores how this panel is aligned. The meaning of this value * differs for horizontal and vertical panels. * * \sa Alignment. */ Alignment m_alignment; /** * @brief Stores the position where the panel is shown */ IUKUIPanel::Position m_position; /** * @brief Returns the index of the screen on which this panel should be * shown. This is the user configured value which can differ from the * screen that the panel is actually shown on. If the panel can not be * shown on the configured screen, UKUIPanel will determine another * screen. The screen that the panel is actually shown on is stored in * mActualScreenNum. * * @return The index of the screen on which this panel should be shown. * * \sa mActualScreenNum, canPlacedOn(), findAvailableScreen(). */ int m_screenNum; /** * @brief screen that the panel is currently shown at (this could * differ from mScreenNum). * * \sa mScreenNum, canPlacedOn(), findAvailableScreen(). */ int m_actualScreenNum; /** * @brief QTimer for delayed saving of changed settings. In many cases, * instead of storing changes to disk immediately we start this timer. * If this timer times out, we store the changes to disk. This has the * advantage that we can store a couple of changes with only one write to * disk. * * \sa saveSettings() */ QTimer mDelaySave; /** * @brief Stores if the panel is hidable, i.e. if the panel will be * hidden after the cursor has left the panel area. * * \sa mVisibleMargin, mHidden, mHideTimer, showPanel(), hidePanel(), hidePanelWork() */ bool m_hidable; /** * @brief Stores if the hidable panel should have a visible margin. * * \sa mHidable, mHidden, mHideTimer, showPanel(), hidePanel(), hidePanelWork() */ bool m_visibleMargin; /** * @brief Stores if the panel is currently hidden. * * \sa mHidable, mVisibleMargin, mHideTimer, showPanel(), hidePanel(), hidePanelWork() */ bool m_hidden; /** * @brief QTimer for hiding the panel. When the cursor leaves the panel * area, this timer will be started. After this timer has timed out, the * panel will actually be hidden. * * \sa mHidable, mVisibleMargin, mHidden, showPanel(), hidePanel(), hidePanelWork() */ QTimer m_hideTimer; /** * @brief Stores the duration of auto-hide animation. * * \sa mHidden, mHideTimer, showPanel(), hidePanel(), hidePanelWork() */ int m_animationTime; /** * @brief The timer used for showing an auto-hiding panel wih delay. * * \sa showPanel() */ QTimer m_showDelayTimer; QColor m_fontColor; //!< Font color that is used in the style sheet. /** * @brief Determines the opacity of the background color. The value * should be in the range from 0 to 100. This will not affect the opacity * of a background image. */ int mOpacity; /*! * \brief Flag if the panel should reserve the space under it as not usable * for "normal" windows. Usable for not 100% wide/hight or hiddable panels, * if user wants maximized windows go under the panel. * * \sa updateWmStrut() */ bool m_reserveSpace; /** * @brief Pointer to the current ConfigPanelDialog if there is any. Make * sure to test this pointer for validity because it is lazily loaded. */ /** * @brief The animation used for showing/hiding an auto-hiding panel. */ QPropertyAnimation *m_animation; /** * @brief Flag for providing the configuration options in panel's context menu */ bool m_lockPanel; double m_transparency; // settings should be kept private for security UKUi::Settings *settings() const { return m_settings; } QDBusInterface *m_cloudInterface; IUKUIPanel::Position m_oldPos; QMenu * m_menu; QAction * m_lockAction; QRect m_currentScreenRect; IUKUIPanel::Position areaDivid(QPoint globalpos); int m_moveLock = -1; void connectToServer(); private Q_SLOTS: void keyChangedSlot(const QString &key); void priScreenChanged(int x, int y, int width, int height); void setPanelHide(bool model); public: QGSettings *m_gsettings; QStringList m_gsettingsKeys; QGSettings *m_transparencyGsettings; QTimer *m_time; QDBusInterface *m_interface = nullptr; }; #endif // UKUIPANEL_H ukui-panel-4.0.0.4/panel/windownotifier.cpp0000644000175000017500000000425714560306203017230 0ustar fengfeng/* BEGIN_COMMON_COPYRIGHT_HEADER * (c)LGPL2+ * * Copyright: 2015 LXQt team * Authors: * Palo Kisa * * Copyright: 2019 Tianjin KYLIN Information Technology Co., Ltd. * * * This program or library is free software; you can redistribute it * and/or modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * You should have received a copy of the GNU Lesser General * Public License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA * * END_COMMON_COPYRIGHT_HEADER */ #include "windownotifier.h" #include #include void WindowNotifier::observeWindow(QWidget * w) { //installing the same filter object multiple times doesn't harm w->installEventFilter(this); } bool WindowNotifier::eventFilter(QObject * watched, QEvent * event) { QWidget * widget = qobject_cast(watched); //we're observing only QWidgetw auto it = std::lower_bound(mShownWindows.begin(), mShownWindows.end(), widget); switch (event->type()) { case QEvent::Close: watched->removeEventFilter(this); //no break case QEvent::Hide: Q_ASSERT(mShownWindows.end() != it); // there perhaps cause coredump if (mShownWindows.end() != it) mShownWindows.erase(it); if (mShownWindows.isEmpty()) emit lastHidden(); break; case QEvent::Show: { const bool first_shown = mShownWindows.isEmpty(); mShownWindows.insert(it, widget); //we keep the mShownWindows sorted if (first_shown) emit firstShown(); } default: break; } return false; } ukui-panel-4.0.0.4/panel/iukuipanelplugin.h0000644000175000017500000002042714560306203017210 0ustar fengfeng/* BEGIN_COMMON_COPYRIGHT_HEADER * (c)LGPL2+ * * Copyright: 2012 Razor team * Authors: * Alexander Sokoloff * * Copyright: 2019 Tianjin KYLIN Information Technology Co., Ltd. * * * This program or library is free software; you can redistribute it * and/or modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * You should have received a copy of the GNU Lesser General * Public License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA * * END_COMMON_COPYRIGHT_HEADER */ #ifndef IUKUIPANELPLUGIN_H #define IUKUIPANELPLUGIN_H #include #include "iukuipanel.h" #include "ukuipanelglobals.h" #include /** UKUi panel plugins are standalone sharedlibraries (*.so) located in PLUGIN_DIR (define provided by CMakeLists.txt). Plugin for the panel is a library written in C++. One more necessary thing is a .desktop file describing this plugin. The same may be additional files, like translations. Themselves plugins will be installed to /usr/local/lib/ukui-panel or /usr/lib/ukui-panel (dependent on cmake option -DCMAKE_INSTALL_PREFIX). Desktop files are installed to /usr/local/share/ukui/ukui-panel, translations to /usr/local/share/ukui/ukui-panel/PLUGIN_NAME. **/ class QDialog; class PluginSettings; namespace UKUi { class PluginInfo; } struct UKUI_PANEL_API IUKUIPanelPluginStartupInfo { IUKUIPanel *ukuiPanel; PluginSettings *settings; const UKUi::PluginInfo *desktopFile; }; /** \brief Base abstract class for UKUi panel widgets/plugins. All plugins *must* be inherited from this one. This class provides some basic API and inherited/implemented plugins GUIs will be responsible on the functionality itself. **/ class UKUI_PANEL_API IUKUIPanelPlugin { public: /** This enum describes the properties of a plugin. **/ enum Flag { NoFlags = 0, ///< It does not have any properties set. PreferRightAlignment = 1, /**< The plugin prefers right alignment (for example the clock plugin); otherwise the plugin prefers left alignment (like main menu). This flag is used only at the first start, later positions of all plugins are saved in a config, and this saved information is used. */ HaveConfigDialog = 2, ///< The plugin have a configuration dialog. SingleInstance = 4, ///< The plugin allows only one instance to run. NeedsHandle = 8 ///< The plugin needs a handle for the context menu }; Q_DECLARE_FLAGS(Flags, Flag) /** This enum describes the reason the plugin was activated. **/ enum ActivationReason { Unknown = 0, ///< Unknown reason DoubleClick = 2, ///< The plugin entry was double clicked Trigger = 3, ///< The plugin was clicked MiddleClick = 4 ///< The plugin was clicked with the middle mouse button }; /** Constructs an IUKUIPanelPlugin object with the given startupInfo. You do not have to worry about the startupInfo parameters, IUKUIPanelPlugin processes the parameters itself. **/ IUKUIPanelPlugin(const IUKUIPanelPluginStartupInfo &startupInfo): m_settings(startupInfo.settings), m_panel(startupInfo.ukuiPanel), m_desktopFile(startupInfo.desktopFile) {} /** Destroys the object. **/ virtual ~IUKUIPanelPlugin() {} /** Returns the plugin flags. The base class implementation returns a NoFlags. **/ virtual Flags flags() const { return NoFlags; } /** Returns the string that is used in the theme QSS file. If you return "WorldClock" string, theme author may write something like `#WorldClock { border: 1px solid red; }` to set a custom border for your plugin. **/ virtual QString themeId() const = 0; /** From the user's point of view, your plugin is some visual widget on the panel. This function returns a pointer to it. This method is called only once, so you are free to return the pointer on a class member, or create the widget on the fly. **/ virtual QWidget *widget() = 0; /** Returns the plugin settings dialog. Reimplement this function if your plugin has it. The panel does not take ownership of the dialog, it is probably a good idea to set Qt::WA_DeleteOnClose attribute for the dialog. The default implementation returns 0, no dialog; Note that the flags method has to return HaveConfigDialog flag. To save the settings you should use a ready-to-use IUKUIPanelPlugin::settings() object. **/ virtual QDialog *configureDialog() { return 0; } /** This function is called when values are changed in the plugin settings. Reimplement this function to your plugin corresponded the new settings. The default implementation do nothing. **/ virtual void settingsChanged() {} /** This function is called when the user activates the plugin. reason specifies the reason for activation. IUKUIPanelPlugin::ActivationReason enumerates the various reasons. The default implementation do nothing. **/ virtual void activated(ActivationReason reason) {} /** This function is called when the panel geometry or lines count are changed. The default implementation do nothing. **/ virtual void realign() {} /** Returns the panel object. **/ IUKUIPanel *panel() const { return m_panel; } PluginSettings *settings() const { return m_settings; } const UKUi::PluginInfo *desktopFile() const { return m_desktopFile; } /** Helper functions for calculating global screen position of some popup window with windowSize size. If you need to show some popup window, you can use it, to get global screen position for the new window. **/ virtual QRect calculatePopupWindowPos(const QSize &windowSize) { return m_panel->calculatePopupWindowPos(this, windowSize); } /*! * \brief By calling this function plugin notifies the panel about showing a (standalone) window/menu. * * \param w the shown window * */ inline void willShowWindow(QWidget * w) { m_panel->willShowWindow(w); } /*! * \brief By calling this function, a plugin notifies the panel about change of it's "static" * configuration * * \sa isSeparate(), isExpandable */ inline void pluginFlagsChanged() { m_panel->pluginFlagsChanged(this); } virtual bool isSeparate() const { return false; } virtual bool isExpandable() const { return false; } private: PluginSettings *m_settings; IUKUIPanel *m_panel; const UKUi::PluginInfo *m_desktopFile; }; Q_DECLARE_OPERATORS_FOR_FLAGS(IUKUIPanelPlugin::Flags) /** Every plugin must have the IUKUIPanelPluginLibrary loader. You should only reimplement the instance() method which should return your plugin. Example: @code class UKUiClockPluginLibrary: public QObject, public IUKUIPanelPluginLibrary { Q_OBJECT Q_PLUGIN_METADATA(IID "ukui.org/Panel/PluginInterface/3.0") Q_INTERFACES(IUKUIPanelPluginLibrary) public: IUKUIPanelPlugin *instance(const IUKUIPanelPluginStartupInfo &startupInfo) { return new UKUiClock(startupInfo);} }; @endcode **/ class UKUI_PANEL_API IUKUIPanelPluginLibrary { public: /** Destroys the IUKUIPanelPluginLibrary object. **/ virtual ~IUKUIPanelPluginLibrary() {} /** Returns the root component object of the plugin. When the library is finally unloaded, the root component will automatically be deleted. **/ virtual IUKUIPanelPlugin* instance(const IUKUIPanelPluginStartupInfo &startupInfo) const = 0; }; Q_DECLARE_INTERFACE(IUKUIPanelPluginLibrary, "ukui.org/Panel/PluginInterface/3.0") #endif // IUKUIPANELPLUGIN_H ukui-panel-4.0.0.4/panel/img/0000755000175000017500000000000014560306203014221 5ustar fengfengukui-panel-4.0.0.4/panel/img/tray-down.svg0000644000175000017500000000062714560306203016673 0ustar fengfeng箭头-向下ukui-panel-4.0.0.4/panel/img/leftMask.svg0000644000175000017500000000225614560306203016515 0ustar fengfeng ukui-panel-4.0.0.4/panel/img/tray-left.svg0000644000175000017500000000061114560306203016647 0ustar fengfeng箭头-向左ukui-panel-4.0.0.4/panel/img/up.svg0000644000175000017500000000103514560306203015365 0ustar fengfeng ukui-panel-4.0.0.4/panel/img/taskview-light.svg0000644000175000017500000000174114560306203017707 0ustar fengfeng ukui-panel-4.0.0.4/panel/img/taskview-dark.svg0000644000175000017500000000174414560306203017524 0ustar fengfeng ukui-panel-4.0.0.4/panel/img/nightmode-night.svg0000644000175000017500000000361014560306203020027 0ustar fengfeng ukui-panel-4.0.0.4/panel/img/startmenu.svg0000644000175000017500000001316114560306203016766 0ustar fengfeng ukui-panel-4.0.0.4/panel/img/tray-right.svg0000644000175000017500000000057514560306203017043 0ustar fengfeng箭头-向右ukui-panel-4.0.0.4/panel/img/setting.svg0000644000175000017500000000177214560306203016426 0ustar fengfeng ukui-panel-4.0.0.4/panel/img/tray-up.svg0000644000175000017500000000062214560306203016343 0ustar fengfeng箭头-向上ukui-panel-4.0.0.4/panel/img/nightmode-light.svg0000644000175000017500000000353214560306203020030 0ustar fengfeng ukui-panel-4.0.0.4/panel/img/tick.svg0000644000175000017500000000102614560306203015673 0ustar fengfeng ukui-panel-4.0.0.4/panel/img/ukui-panel-symbolic.svg0000644000175000017500000000047714560306203020643 0ustar fengfengukui-panel-4.0.0.4/panel/img/taskview.svg0000644000175000017500000000057014560306203016601 0ustar fengfeng32ukui-panel-4.0.0.4/panel/ukuipanelapplication.h0000644000175000017500000001202714560306203020041 0ustar fengfeng/* BEGIN_COMMON_COPYRIGHT_HEADER * (c)LGPL2+ * * Copyright: 2010-2011 Razor team * Authors: * Alexander Sokoloff * * Copyright: 2019 Tianjin KYLIN Information Technology Co., Ltd. * * * This program or library is free software; you can redistribute it * and/or modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * You should have received a copy of the GNU Lesser General * Public License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA * * END_COMMON_COPYRIGHT_HEADER */ #ifndef UKUIPanelAPPLICATION_H #define UKUIPanelAPPLICATION_H //#include #include "iukuipanelplugin.h" #include class QScreen; class UKUIPanel; class UKUIPanelApplicationPrivate; /*! * \brief The UKUIPanelApplication class inherits from UKUi::Application and * is therefore the QApplication that we will create and execute in our * main()-function. * * UKUIPanelApplication itself is not a visible panel, rather it is only * the container which holds the visible panels. These visible panels are * UKUIPanel objects which are stored in mPanels. This approach enables us * to have more than one panel (for example one panel at the top and one * panel at the bottom of the screen) without additional effort. */ class UKUIPanelApplication : public QApplication { Q_OBJECT public: /*! * \brief Creates a new UKUIPanelApplication with the given command line * arguments. Performs the following steps: * 1. Initializes the UKUi::Application, sets application name and version. * 2. Handles command line arguments. Currently, the only cmdline argument * is -c = -config = -configfile which chooses a different config file * for the UKUi::Settings. * 3. Creates the UKUi::Settings. * 4. Connects QCoreApplication::aboutToQuit to cleanup(). * 5. Calls addPanel() for each panel found in the config file. If there is * none, adds a new panel. * \param argc * \param argv */ explicit UKUIPanelApplication(int& argc, char** argv); ~UKUIPanelApplication(); /*! * \brief Determines the number of UKUIPanel objects * \return the current number of UKUIPanel objects */ int count() const { return m_panels.count(); } /*! * \brief Checks if a given Plugin is running and has the * IUKUIPanelPlugin::SingleInstance flag set. As Plugins are added to * UKUIPanel instances, this method only iterates over these UKUIPanel * instances and lets them check the conditions. * \param pluginId Plugin Identifier which is the basename of the .desktop * file that specifies the plugin. * \return true if the Plugin is running and has the * IUKUIPanelPlugin::SingleInstance flag set, false otherwise. */ bool isPluginSingletonAndRunnig(QString const & pluginId) const; signals: /*! * \brief Signal that re-emits the signal pluginAdded() from UKUIPanel. */ void pluginAdded(); /*! * \brief Signal that re-emits the signal pluginRemoved() from UKUIPanel. */ void pluginRemoved(); private: /*! * \brief Holds all the instances of UKUIPanel. */ QList m_panels; /*! * \brief The global icon theme used by all apps (except for panels perhaps). */ QString m_globalIconTheme; /*! * \brief Creates a new UKUIPanel with the given name and connects the * appropriate signals and slots. * This method can be used at application startup. * \param name Name of the UKUIPanel as it is used in the config file. * \return The newly created UKUIPanel. */ UKUIPanel* addPanel(const QString &name); /*! * \brief Exit with 15 rather than 0 when killed by SIGTERM signal, * so session manager can restart the panel. * \param caight signal number (15). */ static void sigtermHandler(int signo); void translator(); bool copyFileToPath(QString sourceDir ,QString toDir, QString copyFileToPath, bool coverFileIfExist); private slots: /*! * \brief Deletes all UKUIPanel instances that are stored in mPanels. */ void cleanup(); private: /*! * \brief mSettings is the UKUi::Settings object that is used for the * current instance of ukui-panel. Normally, this refers to the config file * $HOME/.config/ukui/panel.conf (on Unix systems). This behaviour can be * changed with the -c command line option. */ UKUIPanelApplicationPrivate *const d_ptr; Q_DECLARE_PRIVATE(UKUIPanelApplication) Q_DISABLE_COPY(UKUIPanelApplication) }; #endif // UKUIPanelAPPLICATION_H ukui-panel-4.0.0.4/panel/iukuipanel.h0000644000175000017500000001101714560306203015764 0ustar fengfeng/* BEGIN_COMMON_COPYRIGHT_HEADER * (c)LGPL2+ * * Copyright: 2012 Razor team * Authors: * Alexander Sokoloff * * Copyright: 2019 Tianjin KYLIN Information Technology Co., Ltd. * * * This program or library is free software; you can redistribute it * and/or modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * You should have received a copy of the GNU Lesser General * Public License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA * * END_COMMON_COPYRIGHT_HEADER */ #ifndef IUKUIPanel_H #define IUKUIPanel_H #include #include "ukuipanelglobals.h" class IUKUIPanelPlugin; class QWidget; /** **/ class UKUI_PANEL_API IUKUIPanel { public: /** * @brief Specifies the position of the panel on screen. */ enum Position{ PositionBottom, //!< The bottom side of the screen. PositionTop, //!< The top side of the screen. PositionLeft, //!< The left side of the screen. PositionRight //!< The right side of the screen. }; /** * @brief Returns the position of the panel. Possible values for the * return value are described by the Position enum. */ virtual Position position() const = 0; /** * @brief Returns the edge length of the icons that are shown on the panel * in pixels. The icons are square. */ virtual int iconSize() const = 0; virtual int panelSize() const = 0; /** * @brief Returns the number of lines/rows of this panel. */ virtual int lineCount() const = 0; /** * @brief Helper function for convenient direction/alignment checking. * @return True if the panel is on the top or the bottom of the * screen; otherwise returns false. */ bool isHorizontal() const { return position() == PositionBottom || position() == PositionTop; } /** * @brief Helper method that returns the global screen coordinates of the * panel, so you do not need to use QWidget::mapToGlobal() by yourself. * @return The QRect where the panel is located in global screen * coordinates. */ virtual QRect globalGeometry() const = 0; /** * @brief Helper method for calculating the global screen position of a * popup window with size windowSize. * @param absolutePos Contains the global screen coordinates where the * popup should be appear, i.e. the point where the user has clicked. * @param windowSize The size that the window will occupy. * @return The global screen position where the popup window can be shown. */ virtual QRect calculatePopupWindowPos(const QPoint &absolutePos, const QSize &windowSize) const = 0; /** * @brief Helper method for calculating the global screen position of a * popup window with size windowSize. The parameter plugin should be a * plugin * @param plugin Plugin that the popup window will belong to. The position * will be calculated according to the position of the plugin in the panel. * @param windowSize The size that the window will occupy. * @return The global screen position where the popup window can be shown. */ virtual QRect calculatePopupWindowPos(const IUKUIPanelPlugin *plugin, const QSize &windowSize) const = 0; /*! * \brief By calling this function, a plugin (or any other object) notifies the panel * about showing a (standalone) window/menu -> the panel needs this to avoid "hiding" in case any * standalone window is shown. The widget/window must be shown later than this notification call because * the panel needs to observe its show/hide/close events. * * \param w the window that will be shown * */ virtual void willShowWindow(QWidget * w) = 0; /*! * \brief By calling this function, a plugin notifies the panel about change of it's "static" * configuration * * \param plugin the changed plugin * * \sa IUKUIPanelPlugin::isSeparate(), IUKUIPanelPlugin::isExpandable */ virtual void pluginFlagsChanged(const IUKUIPanelPlugin * plugin) = 0; }; #endif // IUKUIPanel_H ukui-panel-4.0.0.4/panel/plugin.cpp0000644000175000017500000003140614560306203015453 0ustar fengfeng/* BEGIN_COMMON_COPYRIGHT_HEADER * (c)LGPL2+ * * Copyright: 2010-2011 Razor team * Authors: * Alexander Sokoloff * * Copyright: 2019 Tianjin KYLIN Information Technology Co., Ltd. * * * This program or library is free software; you can redistribute it * and/or modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * You should have received a copy of the GNU Lesser General * Public License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA * * END_COMMON_COPYRIGHT_HEADER */ #include "plugin.h" #include "iukuipanelplugin.h" #include "pluginsettings_p.h" #include "ukuipanel.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include //#include #include "common/ukuisettings.h" //#include #include "../panel/common/ukuitranslator.h" #include QColor Plugin::m_moveMarkerColor= QColor(255, 0, 0, 255); /************************************************ ************************************************/ Plugin::Plugin(const UKUi::PluginInfo &desktopFile, UKUi::Settings *settings, const QString &settingsGroup,UKUIPanel *panel) : QFrame(panel), m_desktopFile(desktopFile), m_pluginLoader(0), m_plugin(0), m_pluginWidget(0), m_alignment(AlignLeft), m_panel(panel) { m_settings = PluginSettingsFactory::create(settings, settingsGroup); setWindowTitle(desktopFile.name()); m_name = desktopFile.name(); QStringList dirs; dirs << QProcessEnvironment::systemEnvironment().value("UKUIPanel_PLUGIN_PATH").split(":"); dirs << PLUGIN_DIR; bool found = false; if(IUKUIPanelPluginLibrary const * pluginLib = findStaticPlugin(desktopFile.id())) { // this is a static plugin found = true; loadLib(pluginLib); } else { // this plugin is a dynamically loadable module QString baseName = QString("lib%1.so").arg(desktopFile.id()); #if (QT_VERSION < QT_VERSION_CHECK(5,7,0)) for(int i=0;i= QT_VERSION_CHECK(5,7,0)) for(const QString &dirName : qAsConst(dirs)){ #endif QFileInfo fi(QDir(dirName), baseName); if (fi.exists()) { found = true; if (loadModule(fi.absoluteFilePath())) break; } } } if (!isLoaded()) { if (!found) qWarning() << QString("Plugin %1 not found in the").arg(desktopFile.id()) << dirs; return; } setObjectName(m_plugin->themeId() + "Plugin"); // plugin handle for easy context menu setProperty("NeedsHandle", m_plugin->flags().testFlag(IUKUIPanelPlugin::NeedsHandle)); QString s = m_settings->value("alignment").toString(); // Retrun default value if (s.isEmpty()) { m_alignment = (m_plugin->flags().testFlag(IUKUIPanelPlugin::PreferRightAlignment)) ? Plugin::AlignRight : Plugin::AlignLeft; } else { m_alignment = (s.toUpper() == "RIGHT") ? Plugin::AlignRight : Plugin::AlignLeft; } if (m_pluginWidget) { QGridLayout* layout = new QGridLayout(this); layout->setSpacing(0); layout->setContentsMargins(0, 0, 0, 0); setLayout(layout); layout->addWidget(m_pluginWidget, 0, 0); } saveSettings(); // delay the connection to settingsChanged to avoid conflicts // while the plugin is still being initialized connect(m_settings, &PluginSettings::settingsChanged, this, &Plugin::settingsChanged); } /************************************************ ************************************************/ Plugin::~Plugin() { delete m_plugin; delete m_pluginLoader; delete m_settings; } void Plugin::setAlignment(Plugin::Alignment alignment) { m_alignment = alignment; saveSettings(); } /************************************************ ************************************************/ namespace { //helper types for static plugins storage & binary search typedef std::unique_ptr plugin_ptr_t; typedef std::tuple plugin_tuple_t; //NOTE: Please keep the plugins sorted by name while adding new plugins. //NOTE2: we need to reference some (dummy) symbol from (autogenerated) UKUiPluginTranslationLoader.cpp // to be not stripped (as unused/unreferenced) in static linking time static plugin_tuple_t const static_plugins[] = { }; static constexpr plugin_tuple_t const * const plugins_begin = static_plugins; static constexpr plugin_tuple_t const * const plugins_end = static_plugins + sizeof (static_plugins) / sizeof (static_plugins[0]); struct assert_helper { assert_helper() { Q_ASSERT(std::is_sorted(plugins_begin, plugins_end , [] (plugin_tuple_t const & p1, plugin_tuple_t const & p2) -> bool { return std::get<0>(p1) < std::get<0>(p2); })); } }; static assert_helper h; } IUKUIPanelPluginLibrary const * Plugin::findStaticPlugin(const QString &libraryName) { // find a static plugin library by name -> binary search plugin_tuple_t const * plugin = std::lower_bound(plugins_begin, plugins_end, libraryName , [] (plugin_tuple_t const & plugin, QString const & name) -> bool { return std::get<0>(plugin) < name; }); if (plugins_end != plugin && libraryName == std::get<0>(*plugin)) return std::get<1>(*plugin).get(); return nullptr; } // load a plugin from a library bool Plugin::loadLib(IUKUIPanelPluginLibrary const * pluginLib) { IUKUIPanelPluginStartupInfo startupInfo; startupInfo.settings = m_settings; startupInfo.desktopFile = &m_desktopFile; startupInfo.ukuiPanel = m_panel; m_plugin = pluginLib->instance(startupInfo); if (!m_plugin) { qWarning() << QString("Can't load plugin \"%1\". Plugin can't build IUKUIPanelPlugin.").arg(m_desktopFile.id()); return false; } m_pluginWidget = m_plugin->widget(); if (m_pluginWidget) { m_pluginWidget->setObjectName(m_plugin->themeId()); watchWidgets(m_pluginWidget); } this->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); return true; } // load dynamic plugin from a *.so module bool Plugin::loadModule(const QString &libraryName) { m_pluginLoader = new QPluginLoader(libraryName); if (!m_pluginLoader->load()) { qWarning() << m_pluginLoader->errorString(); return false; } QObject *obj = m_pluginLoader->instance(); if (!obj) { qWarning() << m_pluginLoader->errorString(); return false; } IUKUIPanelPluginLibrary* pluginLib= qobject_cast(obj); if (!pluginLib) { qWarning() << QString("Can't load plugin \"%1\". Plugin is not a IUKUIPanelPluginLibrary.").arg(m_pluginLoader->fileName()); delete obj; return false; } return loadLib(pluginLib); } /************************************************ ************************************************/ void Plugin::watchWidgets(QObject * const widget) { // the QWidget might not be fully constructed yet, but we can rely on the isWidgetType() if (!widget->isWidgetType()) return; widget->installEventFilter(this); // watch also children (recursive) for (auto const & child : widget->children()) { watchWidgets(child); } } /************************************************ ************************************************/ void Plugin::unwatchWidgets(QObject * const widget) { widget->removeEventFilter(this); // unwatch also children (recursive) for (auto const & child : widget->children()) { unwatchWidgets(child); } } /************************************************ ************************************************/ void Plugin::settingsChanged() { m_plugin->settingsChanged(); } /************************************************ ************************************************/ void Plugin::saveSettings() { m_settings->setValue("alignment", (m_alignment == AlignLeft) ? "Left" : "Right"); m_settings->setValue("type", m_desktopFile.id()); m_settings->sync(); } void Plugin::mousePressEvent(QMouseEvent *event) { switch (event->button()) { case Qt::LeftButton: m_plugin->activated(IUKUIPanelPlugin::Trigger); break; case Qt::MidButton: m_plugin->activated(IUKUIPanelPlugin::MiddleClick); break; default: break; } } /************************************************ ************************************************/ void Plugin::mouseDoubleClickEvent(QMouseEvent*) { m_plugin->activated(IUKUIPanelPlugin::DoubleClick); } /************************************************ ************************************************/ void Plugin::showEvent(QShowEvent *) { realign(); } /************************************************ ************************************************/ QMenu *Plugin::popupMenu() const { QString name = this->name().replace("&", "&&"); QMenu* menu = new QMenu(windowTitle()); /* //set top menu selection ,do not delete until you get the ui finish if (mPlugin->flags().testFlag(IUKUIPanelPlugin::HaveConfigDialog)) { QAction* configAction = new QAction( XdgIcon::fromTheme(QLatin1String("preferences-other")), tr("Configure \"%1\"").arg(name), menu); menu->addAction(configAction); connect(configAction, SIGNAL(triggered()), this, SLOT(showConfigureDialog())); } QAction* moveAction = new QAction(XdgIcon::fromTheme("transform-move"), tr("Move \"%1\"").arg(name), menu); menu->addAction(moveAction); connect(moveAction, SIGNAL(triggered()), this, SIGNAL(startMove())); menu->addSeparator(); QAction* removeAction = new QAction( XdgIcon::fromTheme(QLatin1String("list-remove")), tr("Remove \"%1\"").arg(name), menu); menu->addAction(removeAction); connect(removeAction, SIGNAL(triggered()), this, SLOT(requestRemove())); */ return menu; } /************************************************ ************************************************/ bool Plugin::isSeparate() const { return m_plugin->isSeparate(); } /************************************************ ************************************************/ bool Plugin::isExpandable() const { return m_plugin->isExpandable(); } /************************************************ ************************************************/ bool Plugin::eventFilter(QObject * watched, QEvent * event) { switch (event->type()) { case QEvent::DragLeave: emit dragLeft(); break; case QEvent::ChildAdded: watchWidgets(dynamic_cast(event)->child()); break; case QEvent::ChildRemoved: unwatchWidgets(dynamic_cast(event)->child()); break; default: break; } return false; } /************************************************ ************************************************/ void Plugin::realign() { if (m_plugin) m_plugin->realign(); } /************************************************ ************************************************/ void Plugin::showConfigureDialog() { if (!m_configDialog) m_configDialog = m_plugin->configureDialog(); if (!m_configDialog) return; connect(this, &Plugin::destroyed, m_configDialog.data(), &QWidget::close); m_panel->willShowWindow(m_configDialog); m_configDialog->show(); m_configDialog->raise(); m_configDialog->activateWindow(); WId wid = m_configDialog->windowHandle()->winId(); KWindowSystem::activateWindow(wid); KWindowSystem::setOnDesktop(wid, KWindowSystem::currentDesktop()); } /************************************************ ************************************************/ void Plugin::requestRemove() { emit remove(); deleteLater(); } ukui-panel-4.0.0.4/panel/contextmenu.cpp0000644000175000017500000001702314560306221016525 0ustar fengfeng/* * Copyright (C) 2022, KylinSoft Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * Authors: Nicole * */ #include "contextmenu.h" #include #include #include ContextMenu::ContextMenu(QWidget *parent) : QMenu(parent) { const QByteArray id(PANEL_SETTINGS); if (QGSettings::isSchemaInstalled(PANEL_SETTINGS)) { m_gsettings = new QGSettings(id); m_gsettingsKeys = m_gsettings->keys(); } //设置任务栏 QAction *setPanel; setPanel = new QAction(this); setPanel->setText(tr("Set Panel")); this->addAction(setPanel); connect(setPanel, &QAction::triggered, [this](){ QProcess::startDetached(QString("ukui-control-center -m ukccpanel")); }); QAction * showtaskview = this->addAction(tr("Show Taskview")); showtaskview->setCheckable(true); if (m_gsettingsKeys.contains(SHOW_TASKVIEW_KEY)) { showtaskview->setChecked(m_gsettings->get(SHOW_TASKVIEW_KEY).toBool()); connect(showtaskview, &QAction::triggered, [this] { showTaskView(); }); } this->addAction(tr("Show Desktop"), this,[=]{showDesktop();} ); this->addSeparator(); if(QFileInfo::exists(QString("/usr/bin/ukui-system-monitor"))) { this->addAction(tr("Show System Monitor"), this,[=] {systeMonitor();} ); } this->addSeparator(); adjustPanel(); QAction * m_lockAction = this->addAction(tr("Lock This Panel")); m_lockAction->setCheckable(true); m_lockAction->setChecked(m_lockPanel); if (m_gsettingsKeys.contains(LOCK_PANEL_KEY)) { connect(m_lockAction, &QAction::triggered, [this] { m_gsettings->set(LOCK_PANEL_KEY,!m_gsettings->get(LOCK_PANEL_KEY).toBool());}); } QAction *about; about = new QAction(this); about->setText(tr("About Kylin")); if (m_gsettingsKeys.contains(ABOUT_KYLIN_DISPLAY)) { if (m_gsettings->get(ABOUT_KYLIN_DISPLAY).toBool()) { this->addAction(about); connect(about,&QAction::triggered, [this] { QProcess::startDetached(QString("ukui-control-center -m About")); }); } } } void ContextMenu::adjustPanel() { if (m_gsettingsKeys.contains(LOCK_PANEL_KEY)) { m_lockPanel = m_gsettings->get(LOCK_PANEL_KEY).toBool(); } else { m_lockPanel = false; } QAction *pmenuaction_s; QAction *pmenuaction_m; QAction *pmenuaction_l; pmenuaction_s = new QAction(this); pmenuaction_s->setText(tr("Small")); pmenuaction_m = new QAction(this); pmenuaction_m->setText(tr("Medium")); pmenuaction_l = new QAction(this); pmenuaction_l->setText(tr("Large")); QMenu *pmenu_panelsize; pmenu_panelsize = new QMenu(this); pmenu_panelsize->setTitle(tr("Adjustment Size")); pmenu_panelsize->addAction(pmenuaction_s); pmenu_panelsize->addAction(pmenuaction_m); pmenu_panelsize->addAction(pmenuaction_l); pmenu_panelsize->setWindowOpacity(0.9); this->addMenu(pmenu_panelsize); pmenuaction_s->setCheckable(true); pmenuaction_m->setCheckable(true); pmenuaction_l->setCheckable(true); if (m_gsettingsKeys.contains(PANEL_SIZE_KEY)) { pmenuaction_s->setChecked(m_gsettings->get(PANEL_SIZE_KEY).toInt()==PANEL_SIZE_SMALL); pmenuaction_m->setChecked(m_gsettings->get(PANEL_SIZE_KEY).toInt()==PANEL_SIZE_MEDIUM); pmenuaction_l->setChecked(m_gsettings->get(PANEL_SIZE_KEY).toInt()==PANEL_SIZE_LARGE); } connect(pmenuaction_s,&QAction::triggered,[this] { m_gsettings->set(PANEL_SIZE_KEY,PANEL_SIZE_SMALL); m_gsettings->set(ICON_SIZE_KEY,ICON_SIZE_SMALL); }); connect(pmenuaction_m,&QAction::triggered,[this] { m_gsettings->set(PANEL_SIZE_KEY,PANEL_SIZE_MEDIUM); m_gsettings->set(ICON_SIZE_KEY,ICON_SIZE_MEDIUM); }); connect(pmenuaction_l,&QAction::triggered,[this] { m_gsettings->set(PANEL_SIZE_KEY,PANEL_SIZE_LARGE); m_gsettings->set(ICON_SIZE_KEY,ICON_SIZE_LARGE); }); pmenu_panelsize->setDisabled(m_lockPanel); QAction *pmenuaction_top; QAction *pmenuaction_bottom; QAction *pmenuaction_left; QAction *pmenuaction_right; pmenuaction_top = new QAction(this); pmenuaction_top->setText(tr("Up")); pmenuaction_bottom = new QAction(this); pmenuaction_bottom->setText(tr("Bottom")); pmenuaction_left = new QAction(this); pmenuaction_left->setText(tr("Left")); pmenuaction_right = new QAction(this); pmenuaction_right->setText(tr("Right")); QMenu *pmenu_positon; pmenu_positon = new QMenu(this); pmenu_positon->setTitle(tr("Adjustment Position")); pmenu_positon->addAction(pmenuaction_top); pmenu_positon->addAction(pmenuaction_bottom); pmenu_positon->addAction(pmenuaction_left); pmenu_positon->addAction(pmenuaction_right); this->addMenu(pmenu_positon); pmenuaction_top->setCheckable(true); pmenuaction_bottom->setCheckable(true); pmenuaction_left->setCheckable(true); pmenuaction_right->setCheckable(true); if (m_gsettingsKeys.contains(PANEL_POSITION_KEY)) { pmenuaction_top->setChecked(m_gsettings->get(PANEL_POSITION_KEY).toInt()==1); pmenuaction_bottom->setChecked(m_gsettings->get(PANEL_POSITION_KEY).toInt()==0); pmenuaction_left->setChecked(m_gsettings->get(PANEL_POSITION_KEY).toInt()==2); pmenuaction_right->setChecked(m_gsettings->get(PANEL_POSITION_KEY).toInt()==3); } connect(pmenuaction_top,&QAction::triggered, [this] { m_gsettings->set(PANEL_POSITION_KEY,1);}); connect(pmenuaction_bottom,&QAction::triggered, [this] { m_gsettings->set(PANEL_POSITION_KEY,0);}); connect(pmenuaction_left,&QAction::triggered, [this] { m_gsettings->set(PANEL_POSITION_KEY,2);}); connect(pmenuaction_right,&QAction::triggered, [this] { m_gsettings->set(PANEL_POSITION_KEY,3);}); pmenu_positon->setWindowOpacity(0.9); pmenu_positon->setDisabled(m_lockPanel); QAction * hidepanel = this->addAction(tr("Hide Panel")); hidepanel->setDisabled(m_lockPanel); hidepanel->setCheckable(true); if (m_gsettingsKeys.contains(HIDE_PANEL_KEY)) { hidepanel->setChecked(m_gsettings->get(HIDE_PANEL_KEY).toBool()); connect(hidepanel, &QAction::triggered, [this] { m_gsettings->set(HIDE_PANEL_KEY,!m_gsettings->get(HIDE_PANEL_KEY).toBool()); }); } } /*右键 系统监视器选项*/ void ContextMenu::systeMonitor() { QProcess *process = new QProcess(this); process->startDetached("/usr/bin/ukui-system-monitor"); process->deleteLater(); } /*右键 显示桌面选项*/ void ContextMenu::showDesktop() { KWindowSystem::setShowingDesktop(!KWindowSystem::showingDesktop()); } /*右键 显示任务视图 选项*/ void ContextMenu::showTaskView() { if (m_gsettingsKeys.contains(SHOW_TASKVIEW_KEY)) { m_gsettings->set(SHOW_TASKVIEW_KEY,!m_gsettings->get(SHOW_TASKVIEW_KEY).toBool()); } } ukui-panel-4.0.0.4/panel/resources/0000755000175000017500000000000014564524546015477 5ustar fengfengukui-panel-4.0.0.4/panel/resources/org.ukui.panel.tray.gschema.xml0000644000175000017500000000166614560306203023437 0ustar fengfeng '' Keybinding Keybinding associated with a custom shortcut. '' Command Command associated with a custom keybinding. '' Name Description associated with a custom keybinding. '' Record Description associated with a custom keybinding. ukui-panel-4.0.0.4/panel/resources/org.ukui.panel.settings.gschema.xml0000644000175000017500000000742514560306221024317 0ustar fengfeng 46 panelsize the size of UKUI Panel 32 IconSize the size of ukui-panel's icon 0 PanelPosition The Position of ukui-panel true show TsskView control taskview show or hide true about kylin display show or hide About Kylin 1 show Quicklaunch Lines show Quicklaunch Lines 8 show Apps Number the size of apps number in quicklaunch 1 show Taskbar Lines show Taskbar Lines 1 show Tray Lines show Tray Lines 1 show Panel Lines show Panel Lines 0 show Panel Quicklaunch size show Panel Quicklaunch size 0 show Panel Taskbar size show Panel Taskbar size 0 show Panel Tray size show Panel Tray size true show Statusnotifier button show Statusnotifier button true If taskbar needs to group If taskbar needs to group false If taskbar needs to lock If taskbar needs to lock false If taskbar needs to hide If taskbar needs to hide 3 Taskbar button width Taskbar button width ukui-panel-4.0.0.4/panel/resources/ukui-panel_tr.ts0000644000175000017500000014406414560306203020617 0ustar fengfeng AddPluginDialog Add Plugins Eklenti Ekle Search: Ara: Add Widget Widget Ekle Close Kapat (only one instance can run at a time) (aynı anda yalnızca bir örnek çalıştırılabilir) CalendarActiveLabel Time and Date Setting Zaman ve Tarih Ayarları Config panel Paneli Ayarla ConfigDialog Dialog ConfigPanelDialog Configure Panel Paneli Ayarla Panel Panel Widgets Widgetler ConfigPanelWidget Configure panel Paneli Ayarla Size Boyut <p>Negative pixel value sets the panel length to that many pixels less than available screen space.</p><p/><p><i>E.g. "Length" set to -100px, screen size is 1000px, then real panel length will be 900 px.</i></p> <p>Negatif piksel değeri, panel uzunluğunu kullanılabilir ekran alanından daha az piksele ayarlar.</p><p/><p><i>E.g. "Length" set to -100px, screen size is 1000px, then real panel length will be 900 px.</i></p> Size: Boyut: Length: Uzunluk: % % px px px px Icon size: Simge Boyutu: Rows: Satırlar: Alignment && position Hizalama & & durum Alignment: Hizalama Left Sol Center Orta Right Sağ Position: Konum: A&uto-hide O&tomatik Gizle Zero means no animation Sıfır, animasyon olmaması anlamına gelir Animation duration: Animasyon süresi: ms ms Zero means no delay Sıfır, gecikme olmadığı anlamına gelir Show with delay: Gecikmeli göster: Visible thin margin for hidden panel Gizli panel için görünür ince kenar boşluğu Don't allow maximized windows go under the panel window Ekranı kaplayan pencerelerin panel penceresinin altına girmesine izin verme Reserve space on display Ekranda rezerv alanı Top of desktop Masaüstünün üstü Left of desktop Masaüstünün Solu Right of desktop Masaüstünün Sağı Bottom of desktop Masaüstünün altı Top of desktop %1 %1 Masaüstünün üstü Left of desktop %1 %1 Masaüstünün solu Right of desktop %1 %1 Masaüstünün sağı Bottom of desktop %1 %1 Masaüstünün altı Top Üst Bottom Alt ConfigPluginsWidget Configure Plugins Eklentileri Yapılandır Note: changes made in this page cannot be reset. Not: bu sayfada yapılan değişiklikler sıfırlanamaz. Move up Yukarı al ... ... Move down Aşağı al Add Ekle Remove Çıkar Configure Yapılandır IndicatorCalendar '<b>'HH:mm:ss'</b><br/><font size="-2">'ddd, d MMM yyyy'<br/>'TT'</font>' MainWindow MainWindow Ana Pencere usb management tool Usb yönetim aracı NightMode nightmode Gece Modu NightModeButton please install new ukui-control-center first Lütfen önce yeni ukui-control-center kurun Turn On NightMode Gece Modunu Aç Set Up NightMode Gece Modunu Ayarla nightmode open Gece Modu Açık nightmode close Gece Modu Kapalı don't contains the keys style-name Anahtarlar stil adını içermiyor please install gtk-theme first ütfen önce gtk-theme yükleyin QClickWidget 弹出 the capacity is empty Kapasite boş blank CD Boş CD QCoreApplication Choose the page to be shown. Gösterilecek sayfayı seçin. [mimetype(s)...] [file | URL] [files | URLs] Available commands: Kullanılabilir komutlar: QObject Power Manager Error Power Manager Hatası QDBusInterface is invalid QDBusInterface geçersiz Power Manager Error (D-BUS call) Power Manager Hatası (D-BUS çağrısı) QuickLaunchAction Error Path Yol Hatası File/URL cannot be opened cause invalid path. Dosya/URL açılamıyor çünkü geçersiz yol. QuickLaunchButton move left Sola al move right Sağa al move to left Sola al move to right Sağa al move to up Yukarı al move to down Aşağı al delete from quicklaunch Hızlı başlattan sil Drop Error Düşme Hatası File/URL '%1' cannot be embedded into QuickLaunch for now Dosya/URL şimdilik Hızlı Başlat'a gömülemiyor ShowDesktop Show Desktop Masaüstünü göster SpacerConfiguration Spacer Settings Boşlık ayarları Space width: Boşluk genişliği: Space type: Boşluk türü: fixed Sabitlendi expandable Genişletilebilir lined Çizgili dotted Noktalı invisible Görünmez StartMenuButton Lock The Screen Ekranı Kilitle Switch The User Kullanıcıyı Değiştir Logout Çıkış Reboot Yeniden Başlat Shutdown Bilgisayarı Kapat TaskView taskviewWindow Önizleme penceresi Show Taskview Görev Görüntüsünü Göster UKUIPanel Set up Panel Paneli Ayarla Show Taskview Görev Görüntüsünü Göster Show Desktop Masaüstünü Göster Show System Monitor Sistem İzleyiciyi Göster Small Küçük Media Medya Medium Orta Large Büyük Adjustment Size Boyut Ayarı Up Üst Bottom Alt Left Sol Right Sağ Adjustment Position Konumu Ayarla Show Nightmode Gecemodunu Göster Lock This Panel Bu Paneli Kilitle About Kylin Ukui Hakkında Remove Panel Paneli Sil Removing a panel can not be undone. Do you want to remove this panel? Panelin silinmesi geri alınamaz. Bu paneli kaldırmak istiyor musunuz? UKUIQuickLaunch Drop Error Bırakma Hatası File/URL '%1' cannot be embedded into QuickLaunch for now Dosya/URL '%1' şimdilik Hızlı Başlat'a gömülemez Drop application icons here Bırakma uygulaması simgeler burada UKUIStartMenuButton Lock The Screen Ekranı Kilitle Switch The User Kullanıcıyı Değiştir Logout Çıkış Reboot Yeniden Başlat Shutdown Bilgisayarı Kapat User Action Kullanıcı Eylemi Sleep or Hibernate Uyku veya Hazırda Bekletme Power Supply Güç kaynağı Lock Screen Ekranı Kilitle Switch User Kullanıcıyı Değiştir Sleep Mode Uyku Modu Hibernate Mode Hazırda Bekletme Modu LogOut Çıkış Restart Yeniden Başlat TimeShutdown Zamanlayıcı anahtarı Power Off Bilgisayarı Kapat UKUITaskButton Application Uygulama To &Desktop Masaüstüne &All Desktops Tüm Masaüstleri Desktop &%1 Masaüstü &%1 &To Current Desktop Mevcut Masaüstüne &Move Oynat Resi&ze Yeniden Boyutlandır Ma&ximize Büyüt Maximize vertically Dikey Büyüt Maximize horizontally Yatay Büyüt &Restore Onar Mi&nimize Küçült Roll down Yuvarlan Roll up Toplan &Layer Katman Always on &top Her zaman üstte &Normal Normal Always on &bottom Her zaman altta &Close &Kapat UKUITaskGroup Group Grup close Kapat UKUITaskWidget Widget close Kapat restore Onar maximaze Büyüt minimize Küçült UKUi::MessageBox UKUi Power Manager Error UKUi Power Manager Hatası Hibernate failed. Hazırda bekletme başarısız oldu. UKUi::NotificationPrivate Notifications Fallback Geribildirim bildirimleri UKUi::PowerManager Hibernate Hazırda Beklet Suspend Beklemeye Al Reboot Yeniden Başlat Shutdown Bilgisayarı Kapat Logout Çıkış UKUi Session Suspend UKUi Oturumu Askıya Alındı Do you want to really suspend your computer?<p>Suspends the computer into a low power state. System state is not preserved if the power is lost. Bilgisayarınızı gerçekten askıya almak istiyor musunuz? Bilgisayarı düşük güç durumuna geçirir. Güç kesilirse sistem durumu korunmaz. UKUi Session Hibernate UKUI Oturumunu Beklemeye Al Do you want to really hibernate your computer?<p>Hibernates the computer into a low power state. System state is preserved if the power is lost. Bilgisayarınızı gerçekten hazırda bekletmek mi istiyorsunuz? Bilgisayarı düşük güç durumuna geçirir. Güç kesilirse sistem durumu korunur. UKUi Session Reboot UKUi Oturumunu Yeniden Başlat Do you want to really restart your computer? All unsaved work will be lost... Bilgisayarınızı gerçekten yeniden başlatmak istiyor musunuz? Kaydedilmemiş tüm işler kaybedilecek ... UKUi Session Shutdown UKUi Oturumu Kapat Do you want to really switch off your computer? All unsaved work will be lost... Bilgisayarınızı gerçekten kapatmak istiyor musunuz? Kaydedilmemiş tüm işler kaybedilecek ... UKUi Session Logout UKUI Oturumundan Çıkış Do you want to really logout? All unsaved work will be lost... Gerçekten çıkış yapmak ister misiniz? Kaydedilmemiş tüm işler kaybedilecek ... UKUi Power Manager Error UKUi Power Manager Hatası Hibernate failed. Hazırda bekletme başarısız oldu. Suspend failed. Askıya alma başarısız oldu. UKUi::ScreenSaver Screen Saver Error Ekran Koruyucu Hatası An error occurred starting screensaver. Syntax error in xdg-screensaver arguments. Ekran koruyucu başlatılırken bir hata oluştu. Xdg-screensaver bağımsız değişkenlerinde sözdizimi hatası. Screen Saver Activation Error Ekran Koruyucu Etkinleştirme Hatası An error occurred starting screensaver. Ensure you have xscreensaver installed and running. Ekran koruyucu başlatılırken bir hata oluştu. Yüklü ve çalışıyor xscreensaver yüklü olduğundan emin olun. An error occurred starting screensaver. Action 'activate' failed. Ensure you have xscreensaver installed and running. Ekran koruyucu başlatılırken bir hata oluştu. İşlem etkinleştirilemedi. Yüklü ve çalışıyor xscreensaver yüklü olduğundan emin olun. An error occurred starting screensaver. Unknown error - undocumented return value from xdg-screensaver: %1. Ekran koruyucu başlatılırken bir hata oluştu. Bilinmeyen hata - xdg-screensaver'dan belgelenmemiş dönüş değeri: %1. Lock Screen Ekranı Kilitle UkuiWebviewDialog Dialog ejectInterface usb has been unplugged safely USB güvenli bir şekilde çıkarıldı usb is occupying unejectable usb reddedilemez işgal ediyor data device has been unloaded veri cihazı kaldırıldı gparted has started Gparted başladı main Use alternate configuration file. Alternatif yapılandırma dosyası kullanın. Configuration file Yapılandırma dosyası ukui-panel-4.0.0.4/panel/resources/ukui-panel-reset.sh0000644000175000017500000000123714560306203021210 0ustar fengfeng#!/bin/bash ## 保证任务栏稳定性 ## 在配置文件异常的情况下 使用默认配置文件 grep -nr "plugins" ${HOME}/.config/ukui/panel.conf if [ $? -ne 0 ]; then echo "配置文件异常" rm ${HOME}/.config/ukui/panel.conf cp /usr/share/ukui/panel.conf ${HOME}/.config/ukui/ fi plugin_conf="" plugin_conf_backup="" while read line do if [[ $line == *plugin* ]];then echo $line plugin_conf=$line fi done < ${HOME}/.config/ukui/panel.conf while read line do if [[ $line == *plugin* ]];then echo $line plugin_conf_backup=$line fi done < /usr/share/ukui/panel.conf echo $plugin_conf echo $plugin_conf_backup ukui-panel-4.0.0.4/panel/resources/ukui-panel_zh_CN.qm0000644000175000017500000001231614560306203021154 0ustar fengfeng R ``v"aRNOܐ { @5LEɾUʨ]ʴ5 ʶ-U@57  l 8| b$ bUm )b ) )? zN5 9N ӱ $2 &? ( V\ u "  G u Pt ` 94 " HL t58w} ~*}WD WD 0gޕ>~ i nNRh Config panelCalendarActiveLabel eNeg Time and DateCalendarActiveLabel eegnTime and Date SettingCalendarActiveLabelQIvN:zzblank CD FDClickWidget}N:zzthe capacity is empty FDClickWidget MainWindow MainWindowusb management tool MainWindow nYj!_Set Up NightModeNightModeButtonYj!_Turn On NightModeNightModeButton Yj!_Qsnight mode closeNightModeButton Yj!__T/night mode openNightModeButton Yj!_Qsnightmode closedNightModeButton Yj!__T/nightmode openedNightModeButtonQIvN:zzblank CD QClickWidget}N:zzthe capacity is empty QClickWidget弹出 QClickWidgetf>y:hLb Show Desktop ShowDesktop Space type:SpacerConfiguration Space width:SpacerConfigurationSpacer SettingsSpacerConfigurationdottedSpacerConfiguration expandableSpacerConfigurationfixedSpacerConfiguration invisibleSpacerConfigurationlinedSpacerConfigurationOw Hibernate ModeStartMenuButton\O Lock ScreenStartMenuButtonlLogoutStartMenuButtonQsg: Power OffStartMenuButtonu5n Power SupplyStartMenuButtonT/RestartStartMenuButtonwaw  Sleep ModeStartMenuButton Ow bwaw Sleep or HibernateStartMenuButtonRcbu(b7 Switch UserStartMenuButton[eQsg: TimeShutdownStartMenuButton_Y˃SU UKUI MenuStartMenuButtonu(b7dO\ User ActionStartMenuButtonQsN About Kylin UKUIPaneletOMnAdjustment Position UKUIPaneletY'\Adjustment Size UKUIPanelN Bottom UKUIPanel NRh Hide Panel UKUIPanelY'\:[Large UKUIPanel]Left UKUIPanel [NRhLock This Panel UKUIPanelN-\:[Medium UKUIPanel Remove Panel UKUIPanelERemoving a panel can not be undone. Do you want to remove this panel? UKUIPanelSRight UKUIPanelf>y:hLb Show Desktop UKUIPanelf>y:Yj!_c Show Nightmode UKUIPanel |~vщVhShow System Monitor UKUIPanelf>y:NRVc  Show Taskview UKUIPanel\\:[Small UKUIPanelN Up UKUIPanel_ Drop Error UKUITaskBar"_'%1'elՈmRR0_T/Rh9File/URL '%1' cannot be embedded into QuickLaunch for now UKUITaskBar &All DesktopsUKUITaskButton&Qs&CloseUKUITaskButton&LayerUKUITaskButton&MoveUKUITaskButton&NormalUKUITaskButton&RestoreUKUITaskButton&To Current DesktopUKUITaskButtonAlways on &bottomUKUITaskButtonAlways on &topUKUITaskButton ApplicationUKUITaskButton Desktop &%1UKUITaskButton Ma&ximizeUKUITaskButtonMaximize horizontallyUKUITaskButtonMaximize verticallyUKUITaskButton Mi&nimizeUKUITaskButtonResi&zeUKUITaskButton Roll downUKUITaskButtonRoll upUKUITaskButton To &DesktopUKUITaskButtonNNRhSmV[delete from quicklaunchUKUITaskButton~Group UKUITaskGroupQsclose UKUITaskGroupWidgetUKUITaskWidgetnvaboveUKUITaskWidgetSmnvclearUKUITaskWidgetQscloseUKUITaskWidgetgY'SmaximazeUKUITaskWidgetg\SminimizeUKUITaskWidgetSrestoreUKUITaskWidgetDialogUkuiWebviewDialogConfiguration filemain!Use alternate configuration file.mainukui-panel-4.0.0.4/panel/resources/panel-commission.sh0000644000175000017500000000071714560306203021275 0ustar fengfeng#!/bin/bash ## 定制版本的配置文件初始化处理 #判断文件是否存在 commissionFile="${HOME}/.config/ukui/panel-commission.ini" if [[ ! -f "$commissionFile" ]]; then cp /usr/share/ukui/ukui-panel/panel-commission.ini ${HOME}/.config/ukui fi ##拷贝配置文件到用户目录 panelConfigFile="${HOME}/.config/ukui/panel.conf" echo $panelConfigFile if [ ! -f "$panelConfigFile" ]; then cp /usr/share/ukui/panel.conf ${HOME}/.config/ukui fi ukui-panel-4.0.0.4/panel/resources/panel.conf0000644000175000017500000000321214560306203017423 0ustar fengfengpanels=panel1 [panel1] alignment=-1 animation-duration=100 desktop=0 hidable=false lineCount=1 lockPanel=false plugins=startbar,taskbar,statusnotifier,calendar, showdesktop position=Bottom reserve-space=true show-delay=0 visible-margin=true width=100 width-percent=true [startmenu] type=startmenu [quicklaunch] alignment=Left apps\1\desktop=/usr/share/applications/peony.desktop apps\2\desktop=/usr/share/applications/kylin-software-center.desktop apps\3\desktop=/usr/share/applications/qaxbrowser-safe.desktop apps\4\desktop=/usr/share/applications/wps-office-wps.desktop apps\size=4 type=quicklaunch [taskbar] alignment=Left apps\1\desktop=/usr/share/applications/peony.desktop apps\1\exec= apps\1\file= apps\1\name= apps\2\desktop=/usr/share/applications/qaxbrowser-safe.desktop apps\2\exec= apps\2\file= apps\2\name= apps\3\desktop=/usr/share/applications/wps-office-prometheus.desktop apps\3\exec= apps\3\file= apps\3\name= apps\4\desktop=/usr/share/applications/kylin-software-center.desktop apps\4\exec= apps\4\file= apps\4\name= apps\size=4 size=4 type=taskbar [tray] type=tray [calendar] type=calendar version=old-calendar [statusnotifier] alignment=Right hideApp= showApp=ukui-search,kylin-nm,ukui-volume-control-applet-qt,Fcitx,fcitx-qimpanel,indicator-china-weather,ukui-flash-disk,sogouimebs-qimpanel,explorer.exe,ukui-power-manager-tray,baidu-qimpanel,iflyime-qim,hedronagent,CTJManageTool,evolution,ukui-bluetooth,kylin-virtual-keyboard fixedApp=ukui-sidebar type=statusnotifier [showdesktop] alignment=Right type=showdesktop [taskview] type=taskview [spacer] type=spacer [segmentation] type=segmentation [startbar] alignment=Left type=startbar ukui-panel-4.0.0.4/panel/resources/ukui-panel_bo.ts0000644000175000017500000017447414560306203020602 0ustar fengfeng AddPluginDialog Add Plugins Search: Add Widget Close (only one instance can run at a time) CalendarActiveLabel Time and Date Setting Config panel ConfigDialog Dialog ConfigPanelDialog Configure Panel Panel Widgets ConfigPanelWidget Configure panel Size <p>Negative pixel value sets the panel length to that many pixels less than available screen space.</p><p/><p><i>E.g. "Length" set to -100px, screen size is 1000px, then real panel length will be 900 px.</i></p> Size: Length: % px px Icon size: Rows: Alignment && position Alignment: Left Center Right Position: A&uto-hide Zero means no animation Animation duration: ms Zero means no delay Show with delay: Visible thin margin for hidden panel Don't allow maximized windows go under the panel window Reserve space on display Custom styling Font color: Background color: Background opacity: <small>Compositing is required for panel transparency.</small> Background image: A partial workaround for widget styles that cannot give a separate theme to the panel. You might also want to disable: UKUi Appearance Configuration → Icons Theme → Colorize icons based on widget style (palette) Override icon &theme Icon theme for panels: Top of desktop Left of desktop Right of desktop Bottom of desktop Top of desktop %1 Left of desktop %1 Right of desktop %1 Bottom of desktop %1 Top Bottom Pick color Pick image Images (*.png *.gif *.jpg) ConfigPluginsWidget Configure Plugins Note: changes made in this page cannot be reset. Move up ... Move down Add Remove Configure IndicatorCalendar '<b>'HH:mm:ss'</b><br/><font size="-2">'ddd, d MMM yyyy'<br/>'TT'</font>' MainWindow MainWindow usb management tool NightModeButton please install Newest ukui-control-center first Turn On NightMode Set Up NightMode nightmode open nightmode close don't contains the keys style-name please install ukui-theme first please install gtk-theme first QClickWidget 弹出 QCoreApplication Choose the page to be shown. QObject Power Manager Error QDBusInterface is invalid Power Manager Error (D-BUS call) QuickLaunchButton move to left move to right delete from quicklaunch ShowDesktop Show Desktop SpacerConfiguration Spacer Settings Space width: Space type: fixed expandable lined dotted invisible TaskView Show Taskview UKUIPanel Panel Set up Panel Show Taskview Show Desktop Show System Monitor Small Media Large Adjustment Size Up Bottom Left Right Adjustment Position Lock This Panel Remove Panel Dialog Title Removing a panel can not be undone. Do you want to remove this panel? UKUIQuickLaunch Drop Error File/URL '%1' cannot be embedded into QuickLaunch for now Drop application icons here UKUIStartMenuButton Lock Screen Switch User LogOut Restart Power Off UKUITaskButton Application To &Desktop &All Desktops Desktop &%1 &To Current Desktop &Move Resi&ze Ma&ximize Maximize vertically Maximize horizontally &Restore Mi&nimize Roll down Roll up &Layer Always on &top &Normal Always on &bottom &Close UKUITaskGroup Group close UKUITaskbarConfiguration Task Manager Settings General Show only windows from desktop Show only windows from &panel's screen Show only minimized windows Raise minimized windows on current desktop Close on middle-click Cycle windows on wheel scrolling Window &grouping Show popup on mouse hover Appearance Button style Maximum button width px Maximum button height Auto&rotate buttons when the panel is vertical Use icons by WindowClass, if available Icon and text Only icon Only text Current UKUi::MessageBox UKUi Power Manager Error Hibernate failed. UKUi::NotificationPrivate Notifications Fallback UKUi::PowerManager Hibernate Suspend Reboot Shutdown Logout UKUi Session Suspend Do you want to really suspend your computer?<p>Suspends the computer into a low power state. System state is not preserved if the power is lost. UKUi Session Hibernate Do you want to really hibernate your computer?<p>Hibernates the computer into a low power state. System state is preserved if the power is lost. UKUi Session Reboot Do you want to really restart your computer? All unsaved work will be lost... UKUi Session Shutdown Do you want to really switch off your computer? All unsaved work will be lost... UKUi Session Logout Do you want to really logout? All unsaved work will be lost... UKUi Power Manager Error Hibernate failed. Suspend failed. UKUi::ScreenSaver Screen Saver Error An error occurred starting screensaver. Syntax error in xdg-screensaver arguments. Screen Saver Activation Error An error occurred starting screensaver. Ensure you have xscreensaver installed and running. An error occurred starting screensaver. Action 'activate' failed. Ensure you have xscreensaver installed and running. An error occurred starting screensaver. Unknown error - undocumented return value from xdg-screensaver: %1. Lock Screen UkuiWebviewDialog Dialog ejectInterface usb has been unplugged safely main Use alternate configuration file. Configuration file ukui-panel-4.0.0.4/panel/resources/panel-commission.ini0000644000175000017500000000061614564524546021460 0ustar fengfeng;任务栏配置文件 [Hibernate] hibernate=show [ShowInTray] trayname=ukui-volume-control-applet-qt,kylin-nm,ukui-sidebar,indicator-china-weather,ukui-flash-disk,fcitx,sogouimebs-qimpanel,fcitx-qimpanel,explorer.exe,ukui-power-manager-tray,baidu-qimpanel,iflyime-qim,hedronagent,CTJManageTool [IgnoreWindow] ignoreWindow=ukui-menu,ukui-sidebar,ukui-search [Thumbnail] thumbnailAvailable=true ukui-panel-4.0.0.4/panel/resources/ukui-panel-plugins-revise.sh0000644000175000017500000000011514560306203023034 0ustar fengfeng#!/bin/bash echo "shell file :$0" echo "plugins $1" echo "第二个参数$2" ukui-panel-4.0.0.4/panel/resources/ukui-panel-config.sh0000644000175000017500000000072614560306203021335 0ustar fengfeng#!/bin/bash ## 主要用于ukui3.0->ukui3.1 过渡阶段任务栏的插件配置 echo $1 echo $2 plugin_name=$1 plugin_config=$2 if [ "$plugin_name" = "calendar" ]; then if [ "$plugin_config" = "new" ]; then sed -i 's/CalendarVersion=old/CalendarVersion=new/' ${HOME}/.config/ukui/panel-commission.ini else sed -i 's/CalendarVersion=new/CalendarVersion=old/' ${HOME}/.config/ukui/panel-commission.ini fi elif [ "$plugin_name" = "tray" ]; then echo "tray" fi ukui-panel-4.0.0.4/panel/resources/ukui-panel.desktop0000644000175000017500000000032614560306203021125 0ustar fengfeng[Desktop Entry] Name=ukui-panel comment=Panel Comment[zh_CN]=任务栏 Exec=ukui-panel Terminal=false Type=Application Icon=panel X-UKUI-AutoRestart=true OnlyShowIn=UKUI NoDisplay=true X-UKUI-Autostart-Phase=Panel ukui-panel-4.0.0.4/panel/resources/ukui-panel_zh_CN.ts0000644000175000017500000014740314560306203021173 0ustar fengfeng BaseDialog Disk test CalendarActiveLabel Time and Date 时间与日期 Time and Date Setting 时间日期设置 Config panel 设置任务栏 ConfigPanelWidget Left Right Bottom DeviceOperation unknown FDClickWidget Eject Unmounted the capacity is empty 负载为空 blank CD 光盘为空 other user device FormateDialog Disk format Formatted successfully! Formatting failed, please unplug the U disk and try again! Format Rom size: Filesystem: Disk name: Completely erase(Time is longer, please confirm!) Cancel Format disk Formatting this volume will erase all data on it. Please back up all retained data before formatting. Do you want to continue? IndicatorCalendar Time and Date 时间与日期 LunarCalendarItem 消防宣传日 志愿者服务日 全国爱眼日 抗战纪念日 LunarCalendarWidget Year Month Today 解析json文件错误! Sun Mon Tue Wed Thur Fri Sat Sunday Monday Tuesday Wednesday Thursday Friday Saturday MainWindow MainWindow usb management tool ukui-flash-disk kindly reminder wrong reminder Please do not pull out the storage device when reading or writing Please do not pull out the CDROM when reading or writing Please do not pull out the SD Card when reading or writing Please do not pull out the USB flash disk when reading or writing Storage device removed telephone device MessageBox OK Cancel NightMode nightmode 夜间模式 NightModeButton please install new ukui-control-center first 请先安装最新的控制面板 Turn On NightMode 夜间模式 Set Up NightMode 设置夜间模式 nightmode opened 夜间模式开启 nightmode closed 夜间模式关闭 night mode open 夜间模式开启 night mode close 夜间模式关闭 nightmode open 夜间模式打开 nightmode close 夜间模式关闭 nightmode open 夜间模式开启 nightmode close 夜间模式关闭 夜间模式关闭 please install gtk-theme first 请先安装gtk主题 QClickWidget 弹出 Unmounted the capacity is empty 负载为空 blank CD 光盘为空 other user device QuickLaunchAction Error Path 路径错误 File/URL cannot be opened cause invalid path. 非法文件路径无法被打开. QuickLaunchButton move left 左移 move right 右移 move to left 左移 move to right 右移 move to up 上移 move to down 下移 delete from quicklaunch 从任务栏取消固定 Drop Error 路径错误 File/URL '%1' cannot be embedded into QuickLaunch for now 路径'%1'无法被添加到快速启动栏 RepairDialogBox Disk test <h4>The system could not recognize the disk contents</h4><p>Check that the disk/drive '%1' is properly connected,make sure the disk is not a read-only disk, and try again.For more information, search for help on read-only files andhow to change read-only files.</p> <h4>The system could not recognize the disk contents</h4><p>Check that the disk/drive is properly connected,make sure the disk is not a read-only disk, and try again.For more information, search for help on read-only files andhow to change read-only files.</p> Format disk Repair RepairProgressBar Disk repair <h3>%1</h3> Attempting a disk repair... Cancel Repair successfully! The repair completed. If the USB flash disk is not mounted, please try formatting the device! ShowDesktop Show Desktop 显示桌面 SpacerConfiguration Spacer Settings Space width: Space type: fixed expandable lined dotted invisible StartMenuButton Lock The Screen 锁定屏幕 Switch The User 切换用户 UKui Menu 开始菜单 UKUI Menu 开始菜单 User Action 用户操作 Sleep or Hibernate 休眠或睡眠 Power Supply 电源 Lock Screen 锁屏 Switch User 切换用户 Logout 注销 Hibernate Mode 休眠 Sleep Mode 睡眠 Restart 重启 TimeShutdown 定时关机 Power Off 关机 Reboot 重启 Shutdown 关机 TaskView taskviewWindow 预览窗口 Show Taskview 显示任务视图 TaskViewButton Show Taskview UKUIPanel Set up Panel 设置任务栏 Show Taskview 显示任务视图按钮 Show Desktop 显示桌面 Show System Monitor 系统监视器 Small 小尺寸 Media 中尺寸 Medium 中尺寸 Large 大尺寸 Adjustment Size 调整大小 Up Bottom Left Right Adjustment Position 调整位置 Hide Panel 隐藏任务栏 Show Nightmode 显示夜间模式按钮 Lock This Panel 锁定任务栏 About Kylin 关于麒麟 Remove Panel Dialog Title Removing a panel can not be undone. Do you want to remove this panel? UKUIStartMenuButton Lock The Screen 锁定屏幕 Switch The User 切换用户 Logout 注销 Reboot 重启计算机 Shutdown 关闭计算机 UKui Menu 开始菜单 User Action 用户操作 Sleep or Hibernate 休眠或睡眠 Power Supply 电源 Lock Screen 锁屏 Switch User 切换用户 Sleep Mode 睡眠 Hibernate Mode 休眠 LogOut 注销 Restart 重启 TimeShutdown 定时关机 Power Off 关机 UKUITaskBar Drop Error 路径错误 File/URL '%1' cannot be embedded into QuickLaunch for now 路径'%1'无法被添加到快速启动栏 UKUITaskButton Application To &Desktop &All Desktops Desktop &%1 &To Current Desktop &Move Resi&ze Ma&ximize Maximize vertically Maximize horizontally &Restore Mi&nimize Roll down Roll up &Layer Always on &top &Normal Always on &bottom &Close &关闭 delete from quicklaunch 从任务栏取消固定 UKUITaskGroup Group delete from taskbar add to taskbar close 关闭 UKUITaskWidget Widget close 关闭 restore 还原 maximaze 最大化 minimize 最小化 above 置顶 clear 取消置顶 UKUi::PowerManager Reboot 重启 Shutdown 关机 Logout 注销 UkuiWebviewDialog Dialog ejectInterface Storage device can be safely unplugged frmLunarCalendarWidget Form 整体样式 红色风格 选中样式 矩形背景 圆形背景 角标背景 图片背景 星期格式 短名称 普通名称 长名称 英文名称 显示农历 gpartedInterface gparted has started,can not eject ok interactiveDialog cdrom is occupying,do you want to eject it sd is occupying,do you want to eject it usb is occupying,do you want to eject it cdrom is occupying sd is occupying usb is occupying cancle yes main Use alternate configuration file. Configuration file ukui-panel set mode panel set option ukui-panel-4.0.0.4/panel/panelpluginsmodel.cpp0000644000175000017500000003222014560306203017672 0ustar fengfeng/* BEGIN_COMMON_COPYRIGHT_HEADER * (c)LGPL2+ * * Copyright: 2010-2011 Razor team * Authors: * Alexander Sokoloff * * Copyright: 2019 Tianjin KYLIN Information Technology Co., Ltd. * * * This program or library is free software; you can redistribute it * and/or modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * You should have received a copy of the GNU Lesser General * Public License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA * * END_COMMON_COPYRIGHT_HEADER */ #include "panelpluginsmodel.h" #include "plugin.h" #include "iukuipanelplugin.h" #include "ukuipanel.h" #include "ukuipanelapplication.h" #include #include #include "common/ukuisettings.h" #include #define CONFIG_FILE_BACKUP "/usr/share/ukui/panel.conf" PanelPluginsModel::PanelPluginsModel(UKUIPanel * panel, QString const & namesKey, QStringList const & desktopDirs, QObject * parent/* = nullptr*/) : QAbstractListModel{parent}, m_namesKey(namesKey), m_panel(panel) { loadPlugins(desktopDirs); } PanelPluginsModel::~PanelPluginsModel() { qDeleteAll(plugins()); } int PanelPluginsModel::rowCount(const QModelIndex & parent/* = QModelIndex()*/) const { return QModelIndex() == parent ? m_plugins.size() : 0; } QVariant PanelPluginsModel::data(const QModelIndex & index, int role/* = Qt::DisplayRole*/) const { Q_ASSERT(QModelIndex() == index.parent() && 0 == index.column() && m_plugins.size() > index.row() ); pluginslist_t::const_reference plugin = m_plugins[index.row()]; QVariant ret; switch (role) { case Qt::DisplayRole: if (plugin.second.isNull()) ret = QString("Unknown (%1)").arg(plugin.first); else ret = QString("%1 (%2)").arg(plugin.second->name(), plugin.first); break; case Qt::DecorationRole: if (plugin.second.isNull()) ret = XdgIcon::fromTheme("preferences-plugin"); else ret = plugin.second->desktopFile().icon(XdgIcon::fromTheme("preferences-plugin")); break; case Qt::UserRole: ret = QVariant::fromValue(const_cast(plugin.second.data())); break; } return ret; } Qt::ItemFlags PanelPluginsModel::flags(const QModelIndex & index) const { return Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemNeverHasChildren; } QStringList PanelPluginsModel::pluginNames() const { QStringList names; for (auto const & p : m_plugins) names.append(p.first); return names; } QList PanelPluginsModel::plugins() const { QList plugins; for (auto const & p : m_plugins) if (!p.second.isNull()) plugins.append(p.second.data()); return plugins; } Plugin* PanelPluginsModel::pluginByName(QString name) const { for (auto const & p : m_plugins) if (p.first == name) return p.second.data(); return nullptr; } Plugin const * PanelPluginsModel::pluginByID(QString id) const { for (auto const & p : m_plugins) { Plugin *plugin = p.second.data(); if (plugin && plugin->desktopFile().id() == id) return plugin; } return nullptr; } void PanelPluginsModel::addPlugin(const UKUi::PluginInfo &desktopFile) { if (dynamic_cast(qApp)->isPluginSingletonAndRunnig(desktopFile.id())) return; QString name = findNewPluginSettingsGroup(desktopFile.id()); QPointer plugin = loadPlugin(desktopFile, name); if (plugin.isNull()) return; qDebug()<< plugin->name()<settings()->setValue(m_namesKey, pluginNames()); emit pluginAdded(plugin.data()); } void PanelPluginsModel::removePlugin(pluginslist_t::iterator plugin) { if (m_plugins.end() != plugin) { m_panel->settings()->remove(plugin->first); Plugin * p = plugin->second.data(); const int row = plugin - m_plugins.begin(); beginRemoveRows(QModelIndex(), row, row); m_plugins.erase(plugin); endRemoveRows(); emit pluginRemoved(p); // p can be nullptr m_panel->settings()->setValue(m_namesKey, pluginNames()); if (nullptr != p) p->deleteLater(); } } void PanelPluginsModel::removePlugin() { Plugin * p = qobject_cast(sender()); auto plugin = std::find_if(m_plugins.begin(), m_plugins.end(), [p] (pluginslist_t::const_reference obj) { return p == obj.second; }); removePlugin(std::move(plugin)); } void PanelPluginsModel::movePlugin(Plugin * plugin, QString const & nameAfter) { //merge list of plugins (try to preserve original position) //subtract mPlugin.begin() from the found Plugins to get the model index const int from = std::find_if(m_plugins.begin(), m_plugins.end(), [plugin] (pluginslist_t::const_reference obj) { return plugin == obj.second.data(); }) - m_plugins.begin(); const int to = std::find_if(m_plugins.begin(), m_plugins.end(), [nameAfter] (pluginslist_t::const_reference obj) { return nameAfter == obj.first; }) - m_plugins.begin(); /* 'from' is the current position of the Plugin to be moved ("moved Plugin"), * 'to' is the position of the Plugin behind the one that is being moved * ("behind Plugin"). There are several cases to distinguish: * 1. from > to: The moved Plugin had been behind the behind Plugin before * and is moved to the front of the behind Plugin. The moved Plugin will * be inserted at position 'to', the behind Plugin and all the following * Plugins (until the former position of the moved Plugin) will increment * their indexes. * 2. from < to: The moved Plugin had already been located before the * behind Plugin. In this case, the move operation only reorders the * Plugins before the behind Plugin. All the Plugins between the moved * Plugin and the behind Plugin will decrement their index. Therefore, the * movedPlugin will not be at position 'to' but rather on position 'to-1'. * 3. from == to: This does not make sense, we catch this case to prevent * errors. * 4. from == to-1: The moved Plugin has not moved because it had already * been located in front of the behind Plugin. */ const int to_plugins = from < to ? to - 1 : to; if (from != to && from != to_plugins) { /* Although the new position of the moved Plugin will be 'to-1' if * from < to, we insert 'to' here. This is exactly how it is done * in the Qt documentation. */ beginMoveRows(QModelIndex(), from, from, QModelIndex(), to); // For the QList::move method, use the right position m_plugins.move(from, to_plugins); endMoveRows(); emit pluginMoved(plugin); m_panel->settings()->setValue(m_namesKey, pluginNames()); } } void PanelPluginsModel::loadPlugins(QStringList const & desktopDirs) { QSettings backup_qsettings(CONFIG_FILE_BACKUP,QSettings::IniFormat); QStringList plugin_names = backup_qsettings.value(m_namesKey).toStringList(); #ifdef DEBUG_PLUGIN_LOADTIME QElapsedTimer timer; timer.start(); qint64 lastTime = 0; #endif for (auto const & name : plugin_names) { pluginslist_t::iterator i = m_plugins.insert(m_plugins.end(), {name, nullptr}); QString type = backup_qsettings.value(name + "/type").toString(); if (type.isEmpty()) { qWarning() << QString("Section \"%1\" not found in %2.").arg(name, backup_qsettings.fileName()); continue; } #ifdef WITH_SCREENSAVER_FALLBACK if (QStringLiteral("screensaver") == type) { //plugin-screensaver was dropped //convert settings to plugin-quicklaunch const QString & lock_desktop = QStringLiteral(UKUI_LOCK_DESKTOP); qWarning().noquote() << "Found deprecated plugin of type 'screensaver', migrating to 'quicklaunch' with '" << lock_desktop << '\''; type = QStringLiteral("quicklaunch"); UKUi::Settings * settings = mPanel->settings(); settings->beginGroup(name); settings->remove(QString{});//remove all existing keys settings->setValue(QStringLiteral("type"), type); settings->beginWriteArray(QStringLiteral("apps"), 1); settings->setArrayIndex(0); settings->setValue(QStringLiteral("desktop"), lock_desktop); settings->endArray(); settings->endGroup(); } #endif UKUi::PluginInfoList list = UKUi::PluginInfo::search(desktopDirs, "UKUIPanel/Plugin", QString("%1.desktop").arg(type)); if( !list.count()) { qWarning() << QString("Plugin \"%1\" not found.").arg(type); continue; } i->second = loadPlugin(list.first(), name); #ifdef DEBUG_PLUGIN_LOADTIME qDebug() << "load plugin" << type << "takes" << (timer.elapsed() - lastTime) << "ms"; lastTime = timer.elapsed(); #endif } } QPointer PanelPluginsModel::loadPlugin(UKUi::PluginInfo const & desktopFile, QString const & settingsGroup) { std::unique_ptr plugin(new Plugin(desktopFile, m_panel->settings(), settingsGroup, m_panel)); if (plugin->isLoaded()) { connect(m_panel, &UKUIPanel::realigned, plugin.get(), &Plugin::realign); connect(plugin.get(), &Plugin::remove, this, static_cast(&PanelPluginsModel::removePlugin)); return plugin.release(); } return nullptr; } QString PanelPluginsModel::findNewPluginSettingsGroup(const QString &pluginType) const { QStringList groups = m_panel->settings()->childGroups(); groups.sort(); // Generate new section name QString pluginName = QString("%1").arg(pluginType); if (!groups.contains(pluginName)) return pluginName; else { for (int i = 2; true; ++i) { pluginName = QString("%1%2").arg(pluginType).arg(i); if (!groups.contains(pluginName)) return pluginName; } } } bool PanelPluginsModel::isIndexValid(QModelIndex const & index) const { return index.isValid() && QModelIndex() == index.parent() && 0 == index.column() && m_plugins.size() > index.row(); } void PanelPluginsModel::onMovePluginUp(QModelIndex const & index) { if (!isIndexValid(index)) return; const int row = index.row(); if (0 >= row) return; //can't move up beginMoveRows(QModelIndex(), row, row, QModelIndex(), row - 1); m_plugins.swap(row - 1, row); endMoveRows(); pluginslist_t::const_reference moved_plugin = m_plugins[row - 1]; pluginslist_t::const_reference prev_plugin = m_plugins[row]; emit pluginMoved(moved_plugin.second.data()); //emit signal for layout only in case both plugins are loaded/displayed if (!moved_plugin.second.isNull() && !prev_plugin.second.isNull()) emit pluginMovedUp(moved_plugin.second.data()); m_panel->settings()->setValue(m_namesKey, pluginNames()); } void PanelPluginsModel::onMovePluginDown(QModelIndex const & index) { if (!isIndexValid(index)) return; const int row = index.row(); if (m_plugins.size() <= row + 1) return; //can't move down beginMoveRows(QModelIndex(), row, row, QModelIndex(), row + 2); m_plugins.swap(row, row + 1); endMoveRows(); pluginslist_t::const_reference moved_plugin = m_plugins[row + 1]; pluginslist_t::const_reference next_plugin = m_plugins[row]; emit pluginMoved(moved_plugin.second.data()); //emit signal for layout only in case both plugins are loaded/displayed if (!moved_plugin.second.isNull() && !next_plugin.second.isNull()) emit pluginMovedUp(next_plugin.second.data()); m_panel->settings()->setValue(m_namesKey, pluginNames()); } void PanelPluginsModel::onConfigurePlugin(QModelIndex const & index) { if (!isIndexValid(index)) return; Plugin * const plugin = m_plugins[index.row()].second.data(); if (nullptr != plugin && (IUKUIPanelPlugin::HaveConfigDialog & plugin->iPlugin()->flags())) plugin->showConfigureDialog(); } void PanelPluginsModel::onRemovePlugin(QModelIndex const & index) { if (!isIndexValid(index)) return; auto plugin = m_plugins.begin() + index.row(); if (plugin->second.isNull()) removePlugin(std::move(plugin)); else plugin->second->requestRemove(); } ukui-panel-4.0.0.4/panel/ukuipanellayout.h0000644000175000017500000000550514560306203017056 0ustar fengfeng/* BEGIN_COMMON_COPYRIGHT_HEADER * (c)LGPL2+ * * Copyright: 2010-2011 Razor team * Authors: * Alexander Sokoloff * * Copyright: 2019 Tianjin KYLIN Information Technology Co., Ltd. * * * This program or library is free software; you can redistribute it * and/or modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * You should have received a copy of the GNU Lesser General * Public License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA * * END_COMMON_COPYRIGHT_HEADER */ #ifndef UKUIPanelLAYOUT_H #define UKUIPanelLAYOUT_H #include #include #include #include #include "iukuipanel.h" #include "ukuipanelglobals.h" class MoveInfo; class QMouseEvent; class QEvent; class Plugin; class LayoutItemGrid; class UKUI_PANEL_API UKUIPanelLayout : public QLayout { Q_OBJECT public: explicit UKUIPanelLayout(QWidget *parent); ~UKUIPanelLayout(); void addItem(QLayoutItem *item); QLayoutItem *itemAt(int index) const; QLayoutItem *takeAt(int index); int count() const; void moveItem(int from, int to, bool withAnimation=false); QSize sizeHint() const; //QSize minimumSize() const; void setGeometry(const QRect &geometry); bool isHorizontal() const; void invalidate(); int lineCount() const; void setLineCount(int value); int lineSize() const; void setLineSize(int value); IUKUIPanel::Position position() const { return m_position; } void setPosition(IUKUIPanel::Position value); /*! \brief Force the layout to re-read items/plugins "static" configuration */ void rebuild(); static bool itemIsSeparate(QLayoutItem *item); signals: void pluginMoved(Plugin * plugin); public slots: void moveUpPlugin(Plugin * plugin); void addPlugin(Plugin * plugin); private: mutable QSize m_minPluginSize; LayoutItemGrid *m_leftGrid; LayoutItemGrid *m_rightGrid; IUKUIPanel::Position m_position; bool m_animate; void setGeometryHoriz(const QRect &geometry); void setGeometryVert(const QRect &geometry); void globalIndexToLocal(int index, LayoutItemGrid **grid, int *gridIndex); void globalIndexToLocal(int index, LayoutItemGrid **grid, int *gridIndex) const; void setItemGeometry(QLayoutItem *item, const QRect &geometry, bool withAnimation); }; #endif // UKUIPanelLAYOUT_H ukui-panel-4.0.0.4/panel/panelpluginsmodel.h0000644000175000017500000003172514560306203017350 0ustar fengfeng/* BEGIN_COMMON_COPYRIGHT_HEADER * (c)LGPL2+ * * Copyright: 2010-2011 Razor team * Authors: * Alexander Sokoloff * * Copyright: 2019 Tianjin KYLIN Information Technology Co., Ltd. * * * This program or library is free software; you can redistribute it * and/or modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * You should have received a copy of the GNU Lesser General * Public License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA * * END_COMMON_COPYRIGHT_HEADER */ #ifndef PANELPLUGINSMODEL_H #define PANELPLUGINSMODEL_H #include #include namespace UKUi { class PluginInfo; struct PluginData; } class UKUIPanel; class Plugin; /*! * \brief The PanelPluginsModel class implements the Model part of the * Qt Model/View architecture for the Plugins, i.e. it is the interface * to access the Plugin data associated with this Panel. The * PanelPluginsModel takes care for read-access as well as changes * like adding, removing or moving Plugins. */ class PanelPluginsModel : public QAbstractListModel { Q_OBJECT public: PanelPluginsModel(UKUIPanel * panel, QString const & namesKey, QStringList const & desktopDirs, QObject * parent = nullptr); ~PanelPluginsModel(); /*! * \brief rowCount returns the number of Plugins. It overrides/implements * QAbstractListModel::rowCount(). * \param parent The parameter parent should be omitted to get the number of * Plugins. If it is given and a valid model index, the method returns 0 * because PanelPluginsModel is not a hierarchical model. */ virtual int rowCount(const QModelIndex & parent = QModelIndex()) const override; /*! * \brief data returns the Plugin data as defined by the Model/View * architecture. The Plugins itself can be accessed with the role * Qt::UserRole but they can also be accessed by the methods plugins(), * pluginByName() and pluginByID(). This method overrides/implements * QAbstractListModel::data(). * \param index should be a valid model index to determine the Plugin * that should be read. * \param role The Qt::ItemDataRole to determine what kind of data should * be read, can be one of the following: * 1. Qt::DisplayRole to return a string that describes the Plugin. * 2. Qt::DecorationRole to return an icon for the Plugin. * 3. Qt::UserRole to return a Plugin*. * \return The data as determined by index and role. */ virtual QVariant data(const QModelIndex & index, int role = Qt::DisplayRole) const override; /*! * \brief flags returns the item flags for the given model index. For * all Plugins, this is the same: * Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemNeverHasChildren. */ virtual Qt::ItemFlags flags(const QModelIndex & index) const override; /*! * \brief pluginNames returns a list of names for all the Plugins in * this panel. The names are not the human-readable names but the names * that are used to identify the Plugins, e.g. in the config files. These * names can be used in the method pluginByName() to get a corresponding * Plugin. * * The plugin names are normally chosen to be equal to the * filename of the corresponding *.desktop-file. If multiple instances * of a single plugin-type are created, their names are created by * appending increasing numbers, e.g. 'mainmenu' and 'mainmenu2'. * * \sa findNewPluginSettingsGroup */ QStringList pluginNames() const; /*! * \brief plugins returns a list of Plugins in this panel. */ QList plugins() const; /*! * \brief pluginByName gets a Plugin by its name. * \param name is the name of the plugin as it is used in the * config files. A list of names can be retrieved with the * method pluginNames(). * \return the Plugin with the given name. * * \sa pluginNames */ Plugin *pluginByName(QString name) const; /*! * \brief pluginByID gets a Plugin by its ID. * \param id is the *.desktop-file-ID of the plugin which in turn is the * QFileInfo::completeBaseName() of the desktop-file, e.g. "mainmenu". * * As these IDs are chosen according to the corresponding * desktop-file, these IDs are not unique. If multiple * instances of a single plugin-type are created, they share * the same ID in this sense. Then, this method will return * the first plugin of the given type. * \return the first Plugin found with the given ID. */ Plugin const *pluginByID(QString id) const; /*! * \brief movePlugin moves a Plugin in the underlying data. * * This method is useful whenever a Plugin should be moved several * positions at once. If a Plugin should only be moved one position * up or down, consider using onMovePluginUp or onMovePluginDown. * * \param plugin Plugin that has been moved * \param nameAfter name of the Plugin that should be located after * the moved Plugin after the move operation, so this parameter * determines the new position of plugin. If an empty string is * given, plugin will be moved to the end of the list. * * \note This method is especially useful for drag and drop reordering. * Therefore, it will be called whenever the user moves a Plugin in * the panel ("Move Plugin" in the context menu of the panel). * * \sa onMovePluginUp, onMovePluginDown */ void movePlugin(Plugin * plugin, QString const & nameAfter); signals: /*! * \brief pluginAdded gets emitted whenever a new Plugin is added * to the panel. */ void pluginAdded(Plugin * plugin); /*! * \brief pluginRemoved gets emitted whenever a Plugin is removed. * \param plugin The Plugin that was removed. This could be a nullptr. */ void pluginRemoved(Plugin * plugin); /*! * \brief pluginMoved gets emitted whenever a Plugin is moved. * * This signal gets emitted in movePlugin, onMovePluginUp and * onMovePluginDown. * * \param plugin The Plugin that was moved. This could be a nullptr. * * \sa pluginMovedUp */ void pluginMoved(Plugin * plugin); //plugin can be nullptr in case of move of not loaded plugin /*! * \brief pluginMovedUp gets emitted whenever a Plugin is moved a single * slot upwards. * * When a Plugin is moved a single slot upwards, this signal will be * emitted additionally to the pluginMoved signal so that two signals * get emitted. * * If a Plugin is moved downwards, that Plugin will swap places with * the following Plugin so that the result equals moving the following * Plugin a single slot upwards. So, whenever two adjacent Plugins * swap their places, this signal gets emitted with the Plugin that * moves upwards as parameter. * * For simplified use, only this signal is implemented. There is no * similar pluginMovedDown-signal. * * This signal gets emitted from onMovePluginUp and onMovePluginDown. * * \param plugin The Plugin that moved a slot upwards. * * \sa pluginMoved */ void pluginMovedUp(Plugin * plugin); public slots: /*! * \brief addPlugin Adds a new Plugin to the model. * * \param desktopFile The PluginInfo (which inherits XdgDesktopFile) * for the Plugin that should be added. * * \note AddPluginDialog::pluginSelected is connected to this slot. */ void addPlugin(const UKUi::PluginInfo &desktopFile); /*! * \brief removePlugin Removes a Plugin from the model. * * The Plugin to remove is identified by the QObject::sender() method * when the slot is called. Therefore, this method should only be called * by connecting a signal that a Plugin will emit to this slot. * Otherwise, nothing will happen. * * \note Plugin::remove is connected to this slot as soon as the * Plugin is loaded in the PanelPluginsModel. */ void removePlugin(); // slots for configuration dialog /*! * \brief onMovePluginUp Moves the Plugin corresponding to the given * model index a slot upwards. * * \note The 'Up' button in the configuration widget is connected to this * slot. */ void onMovePluginUp(QModelIndex const & index); /*! * \brief onMovePluginDown Moves the Plugin corresponding to the given * model index a slot downwards. * * \note The 'Down' button in the configuration widget is connected to this * slot. */ void onMovePluginDown(QModelIndex const & index); /*! * \brief onConfigurePlugin If the Plugin corresponding to the given * model index has a config dialog (checked via the flag * IUKUIPanelPlugin::HaveConfigDialog), this method shows * it by calling plugin->showConfigureDialog(). * * \note The 'Configure' button in the configuration widget is connected to * this slot. */ void onConfigurePlugin(QModelIndex const & index); /*! * \brief onRemovePlugin Removes the Plugin corresponding to the given * model index from the Model. * * \note The 'Remove' button in the configuration widget is connected to * this slot. */ void onRemovePlugin(QModelIndex const & index); private: /*! * \brief pluginslist_t is the data type used for mPlugins which stores * all the Plugins. * * \sa mPlugins */ typedef QList > > pluginslist_t; private: /*! * \brief loadPlugins Loads all the Plugins. * \param desktopDirs These directories are scanned for corresponding * .desktop-files which are necessary to load the plugins. */ void loadPlugins(QStringList const & desktopDirs); /*! * \brief loadPlugin Loads a Plugin and connects signals and slots. * \param desktopFile The desktop file that specifies how to load the * Plugin. * \param settingsGroup QString which specifies the settings group. This * will only be redirected to the Plugin so that it knows how to read * its settings. * \return A QPointer to the Plugin that was loaded. */ QPointer loadPlugin(UKUi::PluginInfo const & desktopFile, QString const & settingsGroup); /*! * \brief findNewPluginSettingsGroup Creates a name for a new Plugin * that is not yet present in the settings file. Whenever multiple * instances of a single Plugin type are created, they have to be * distinguished by this name. * * The first Plugin of a given type will be named like the type, e.g. * "mainmenu". If a name is already present, this method tries to * find a free name by appending increasing integers (starting with 2), * e.g. "mainmenu2". If, for example, only "mainmenu2" exists because * "mainmenu" was deleted, "mainmenu" would be returned. So, the method * always finds the first suitable name that is not yet present in the * settings file. * \param pluginType Type of the Plugin. * \return The created name for the Plugin. */ QString findNewPluginSettingsGroup(const QString &pluginType) const; /*! * \brief isIndexValid Checks if a given model index is valid for the * underlying data (column 0, row lower than number of Plugins and * so on). */ bool isIndexValid(QModelIndex const & index) const; /*! * \brief removePlugin Removes a given Plugin from the model. */ void removePlugin(pluginslist_t::iterator plugin); /*! * \brief mNamesKey The key to the settings-entry that stores the * names of the Plugins in a panel. Set upon creation, passed as * a parameter by the panel. */ const QString m_namesKey; /*! * \brief mPlugins Stores all the Plugins. * * mPlugins is a QList of elements while each element corresponds to a * single Plugin. Each element is a QPair of a QString and a QPointer * while the QPointer points to a Plugin. * * To access the elements, you can use indexing or an iterator on the * list. For each element p, p.first is the name of the Plugin as it * is used in the configuration files, p.second.data() is the Plugin. * * \sa pluginslist_t */ pluginslist_t m_plugins; /*! * \brief mPanel Stores a reference to the UKUIPanel. */ UKUIPanel * m_panel; }; Q_DECLARE_METATYPE(Plugin const *) #endif // PANELPLUGINSMODEL_H ukui-panel-4.0.0.4/panel/main.cpp0000644000175000017500000000460214560306221015077 0ustar fengfeng/* BEGIN_COMMON_COPYRIGHT_HEADER * (c)LGPL2+ * * Copyright: 2010-2011 Razor team * Authors: * Alexander Sokoloff * * Copyright: 2019 Tianjin KYLIN Information Technology Co., Ltd. * * * This program or library is free software; you can redistribute it * and/or modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * You should have received a copy of the GNU Lesser General * Public License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA * * END_COMMON_COPYRIGHT_HEADER */ #include "ukuipanelapplication.h" #include #include #include #include #include #include #include #include #include #include #include #include int main(int argc, char *argv[]) { initUkuiLog4qt("ukui-panel"); qDebug()<<"Main :: ukui-panel start"<= QT_VERSION_CHECK(5, 14, 0)) QApplication::setHighDpiScaleFactorRoundingPolicy(Qt::HighDpiScaleFactorRoundingPolicy::PassThrough); #endif UKUIPanelApplication app(argc, argv); qDebug()<<"Main :: UKUIPanelApplication finished"< ContextMenu Set Panel 设置任务栏 Show Taskview 显示“任务视图”按钮 Show Desktop 显示桌面 Show System Monitor 系统监视器 Lock This Panel 锁定任务栏 About Kylin 关于麒麟 Small 小尺寸 Medium 中尺寸 Large 大尺寸 Adjustment Size 调整大小 Up Bottom Left Right Adjustment Position 调整位置 Hide Panel 隐藏任务栏 UKUIPanel Small 小尺寸 Medium 中尺寸 Large 大尺寸 Adjustment Size 调整大小 Up Bottom Left Right Adjustment Position 调整位置 Hide Panel 隐藏任务栏 Set up Panel 设置任务栏 Show Taskview 显示“任务视图”按钮 Show Desktop 显示桌面 Show System Monitor 系统监视器 Lock This Panel 锁定任务栏 About Kylin 关于麒麟 main Use alternate configuration file. Configuration file ukui-panel set mode panel set option ukui-panel-4.0.0.4/panel/translation/panel_bo_CN.ts0000644000175000017500000001567114560306203020524 0ustar fengfeng ContextMenu Set Panel གཏན་འཁེལ་བྱས་པའི་པང་ལེབ Show Taskview ལས་འགན་མཐོང་སྣེ་འཆར་བའི་གནོན་མཐེབ། Show Desktop ཅོག་ངོས་འཆར་བ། Show System Monitor བརྒྱུད་ཁོངས་ལྟ་ཞིབ་ཆས། Lock This Panel འགན་བྱང་ལ་ཟྭ་རྒྱག་པ། About Kylin དགུ་ཚིགས་ཆིག་ལིན་གྱི་སྐོར། Small ཡིག་གཟུགས་ཆུང་བ། Medium འབྲིང་རིམ། Large ཆེ། Adjustment Size ཆེ་ཆུང་སྙོམས་སྒྲིག Up སྟེང་། Bottom ཞབས་ཁུལ། Left གཡོན། Right གཡས། Adjustment Position གནས་ཡུལ་ལེགས་སྒྲིག Hide Panel ངོས་པང་སྦེད་པ། UKUIPanel Small ཡིག་གཟུགས་ཆུང་བ། Medium འབྲིང་རིམ། Large ཆེ། Adjustment Size ཆེ་ཆུང་སྙོམས་སྒྲིག Up སྟེང་། Bottom ཞབས་ཁུལ། Left གཡོན། Right གཡས། Adjustment Position གནས་ཡུལ་ལེགས་སྒྲིག Hide Panel ངོས་པང་སྦེད་པ། Show Taskview ལས་འགན་མཐོང་སྣེ་འཆར་བའི་གནོན་མཐེབ། Show Nightmode མཚན་ལྗོངས་རྣམ་པ་འཆར་བའི་གནོན་མཐེབ། Show Desktop ཅོག་ངོས་འཆར་བ། Show System Monitor བརྒྱུད་ཁོངས་ལྟ་ཞིབ་ཆས། Lock This Panel འགན་བྱང་ལ་ཟྭ་རྒྱག་པ། About Kylin དགུ་ཚིགས་ཆིག་ལིན་གྱི་སྐོར། main Use alternate configuration file. སྡེབ་སྒྲིག་ཡིག་ཆ་བཀོལ་སྤྱོད། Configuration file སྡེབ་སྒྲིག་ཡིག་ཆ་བཀོལ་སྤྱོད། ukui-panel set mode panel set option ukui-panel-4.0.0.4/panel/ukuipanel.cpp0000644000175000017500000013572714564524546016205 0ustar fengfeng/* BEGIN_COMMON_COPYRIGHT_HEADER * (c)LGPL2+ * * Copyright: 2010-2011 Razor team * Authors: * Alexander Sokoloff * * Copyright: 2019 Tianjin KYLIN Information Technology Co., Ltd. * * * This program or library is free software; you can redistribute it * and/or modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * You should have received a copy of the GNU Lesser General * Public License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA * * END_COMMON_COPYRIGHT_HEADER */ #include "ukuipanel.h" #include "common/common.h" #include "iukuipanelplugin.h" #include "ukuipanelapplication.h" #include "ukuipanellayout.h" #include "plugin.h" #include "panelpluginsmodel.h" #include "windownotifier.h" #include "common/ukuiplugininfo.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include // Turn on this to show the time required to load each plugin during startup // #define DEBUG_PLUGIN_LOADTIME #include "common_fun/ukuipanel_infomation.h" #include "common_fun/dbus-adaptor.h" #include "common_fun/panel_commission.h" #include "windowmanager/windowmanager.h" /************************************************ Returns the Position by the string. String is one of "Top", "Left", "Bottom", "Right", string is not case sensitive. If the string is not correct, returns defaultValue. ************************************************/ IUKUIPanel::Position UKUIPanel::strToPosition(const QString& str, IUKUIPanel::Position defaultValue) { if (str.toUpper() == "TOP") return UKUIPanel::PositionTop; if (str.toUpper() == "LEFT") return UKUIPanel::PositionLeft; if (str.toUpper() == "RIGHT") return UKUIPanel::PositionRight; if (str.toUpper() == "BOTTOM") return UKUIPanel::PositionBottom; return defaultValue; } IUKUIPanel::Position UKUIPanel::intToPosition(const int position, IUKUIPanel::Position defaultValue) { if (position == 1) return UKUIPanel::PositionTop; if (position == 2) return UKUIPanel::PositionLeft; if (position == 3) return UKUIPanel::PositionRight; if (position == 0) return UKUIPanel::PositionBottom; return defaultValue; } /************************************************ Return string representation of the position *******************************************connect(QApplication::desktop(), &QDesktopWidget::resized, this, &UKUIPanel::ensureVisible);*****/ QString UKUIPanel::positionToStr(IUKUIPanel::Position position) { switch (position) { case UKUIPanel::PositionTop: return QString("Top"); case UKUIPanel::PositionLeft: return QString("Left"); case UKUIPanel::PositionRight: return QString("Right"); case UKUIPanel::PositionBottom: return QString("Bottom"); } return QString(); } UKUIPanel::UKUIPanel(const QString &configGroup, UKUi::Settings *settings, QWidget *parent) : QFrame(parent), m_settings(settings), m_configGroup(configGroup), m_plugins{nullptr}, m_standaloneWindows{new WindowNotifier}, m_panelSize(46), m_iconSize(32), m_lineCount(0), m_length(0), m_alignment(AlignmentLeft), m_position(IUKUIPanel::PositionBottom), m_screenNum(0), //whatever (avoid conditional on uninitialized value) m_actualScreenNum(0), m_visibleMargin(true), m_hidden(false), m_animationTime(0), m_reserveSpace(true), m_animation(nullptr) { qDebug()<<"Panel :: Constructor start"; //You can find information about the flags and widget attributes in your //Qt documentation or at https://doc.qt.io/qt-5/qt.html //Qt::FramelessWindowHint = Produces a borderless window. The user cannot //move or resize a borderless window via the window system. On X11, ... //Qt::WindowStaysOnTopHint = Informs the window system that the window //should stay on top of all other windows. Note that on ... Qt::WindowFlags flags = Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint; // NOTE: by PCMan: // In Qt 4, the window is not activated if it has Qt::WA_X11NetWmWindowTypeDock. // Since Qt 5, the default behaviour is changed. A window is always activated on mouse click. // Please see the source code of Qt5: src/plugins/platforms/xcb/qxcbwindow.cpp. // void QXcbWindow::handleButtonPressEvent(const xcb_button_press_event_t *event) // This new behaviour caused ukui bug #161 - Cannot minimize windows from panel 1 when two task managers are open // Besides, this breaks minimizing or restoring windows when clicking on the taskbar buttons. // To workaround this regression bug, we need to add this window flag here. // However, since the panel gets no keyboard focus, this may decrease accessibility since // it's not possible to use the panel with keyboards. We need to find a better solution later. /*部分组建在点击任务栏空白位置的时候,无法收回窗口,想要正常收回窗口,需要取消下面的窗口属性或者其他应用监听点击taskbar的点击信号 * 不使用此窗口属性则需要在开始菜单,任务视图,快速启动栏三个界面组件中设置 setFocusPolicy(Qt::NoFocus); */ flags |= Qt::WindowDoesNotAcceptFocus; setWindowFlags(flags); //Adds _NET_WM_WINDOW_TYPE_DOCK to the window's _NET_WM_WINDOW_TYPE X11 window property. See https://standards.freedesktop.org/wm-spec/ for more details. setAttribute(Qt::WA_X11NetWmWindowTypeDock); //Enables tooltips for inactive windows. setAttribute(Qt::WA_AlwaysShowToolTips); //Indicates that the widget should have a translucent background, i.e., any non-opaque regions of the widgets will be translucent because the widget will have an alpha channel. Setting this ... setAttribute(Qt::WA_TranslucentBackground); //Allows data from drag and drop operations to be dropped onto the widget (see QWidget::setAcceptDrops()). setAttribute(Qt::WA_AcceptDrops); setWindowTitle("UKUI Panel"); setObjectName(QString("UKUIPanel %1").arg(configGroup)); qDebug()<<"Panel :: UKuiPanel setAttribute finished"; //初始化参数调整 PanelCommission::panelConfigFileValueInit(true); PanelCommission::panelConfigFileReset(true); qDebug()<<"Panel :: PanelCommission config finished"; //初始化DBus接口 UKuiPanelInformation* dbus = new UKuiPanelInformation; new PanelAdaptor(dbus); QDBusConnection con = QDBusConnection::sessionBus(); if(!con.registerService("org.ukui.panel") || !con.registerObject("/panel/position",dbus)) { qDebug() << "fail" << con.lastError().message(); } //初始化判断是否为wayland环境,如果是wayland,则任务栏隐藏无动画,且鼠标再次移开任务栏的隐藏操作需要特殊处理 QString platform = QGuiApplication::platformName(); if(platform.startsWith(QLatin1String("wayland"),Qt::CaseInsensitive)) { m_isWaylandEnv =true; } else { m_isWaylandEnv = false; } //UKUIPanel (inherits QFrame) -> lav (QGridLayout) -> UKUIPanelWidget (QFrame) -> UKUIPanelLayout UKUIPanelWidget = new QFrame(this); UKUIPanelWidget->setObjectName("BackgroundWidget"); QGridLayout* lav = new QGridLayout(); lav->setContentsMargins(0, 0, 0, 0); setLayout(lav); this->layout()->addWidget(UKUIPanelWidget); m_layout = new UKUIPanelLayout(UKUIPanelWidget); connect(m_layout, &UKUIPanelLayout::pluginMoved, this, &UKUIPanel::pluginMoved); UKUIPanelWidget->setLayout(m_layout); m_layout->setLineCount(m_lineCount); mDelaySave.setSingleShot(true); mDelaySave.setInterval(SETTINGS_SAVE_DELAY); connect(&mDelaySave, SIGNAL(timeout()), this, SLOT(saveSettings())); m_hideTimer.setSingleShot(true); m_hideTimer.setInterval(PANEL_HIDE_DELAY); connect(&m_hideTimer, SIGNAL(timeout()), this, SLOT(hidePanelWork())); QTimer::singleShot(60 * 1000,[this] { connectToServer();}); m_showDelayTimer.setSingleShot(true); m_showDelayTimer.setInterval(PANEL_SHOW_DELAY); connect(&m_showDelayTimer, &QTimer::timeout, [this] { showPanel(m_animationTime > 0); }); /* 监听屏幕分辨路改变resized 和屏幕数量改变screenCountChanged * 或许存在无法监听到分辨率改变的情况(qt5.6),若出现则可换成 * connect(QApplication::primaryScreen(),&QScreen::geometryChanged, this,&UKUIPanel::ensureVisible); */ connect(QApplication::desktop(), &QDesktopWidget::resized, this, &UKUIPanel::ensureVisible); connect(QApplication::desktop(), &QDesktopWidget::screenCountChanged, this, &UKUIPanel::ensureVisible); // connecting to QDesktopWidget::workAreaResized shouldn't be necessary, // as we've already connceted to QDesktopWidget::resized, but it actually connect(QApplication::desktop(), &QDesktopWidget::workAreaResized, this, &UKUIPanel::ensureVisible); //适配KScreen后,分辨率改变的信号无法获取,需要从SettingsDaemon拿分辨率改变的信号 QDBusConnection::sessionBus().connect(QString(USD_SERVICE), QString(USD_XRANDER_PATH), QString(USD_XRANDER_INTERFACE), QString(PRIMARY_CHANGED), this, SLOT(primaryChangedSlot(int, int, int, int, int))); UKUIPanelApplication *a = reinterpret_cast(qApp); m_primaryScreenGeometry = QGuiApplication::screens().at(0)->geometry(); KScreen::GetConfigOperation *op = new KScreen::GetConfigOperation(); connect(op, &KScreen::GetConfigOperation::finished, this, [this](KScreen::ConfigOperation *op) { configWatch(op); }); connect(UKUi::Settings::globalSettings(), SIGNAL(settingsChanged()), this, SLOT(update())); connect(m_standaloneWindows.data(), &WindowNotifier::firstShown, [this] { showPanel(true); }); connect(m_standaloneWindows.data(), &WindowNotifier::lastHidden, this, &UKUIPanel::hidePanel); const QByteArray id(PANEL_SETTINGS); if (QGSettings::isSchemaInstalled(PANEL_SETTINGS)) { m_gsettings = new QGSettings(id); m_gsettingsKeys = m_gsettings->keys(); if (m_gsettingsKeys.contains(PANEL_POSITION_KEY)) { setPosition(0,intToPosition(m_gsettings->get(PANEL_POSITION_KEY).toInt(),PositionBottom),true); } if (m_gsettingsKeys.contains(HIDE_PANEL_KEY)) { m_hidable = m_gsettings->get(HIDE_PANEL_KEY).toBool(); } if (m_gsettingsKeys.contains(LOCK_PANEL_KEY)) { m_lockPanel = m_gsettings->get(LOCK_PANEL_KEY).toBool(); } connect(m_gsettings, &QGSettings::changed, this, [=] (const QString &key){ if (key == ICON_SIZE_KEY) { setIconSize(m_gsettings->get(ICON_SIZE_KEY).toInt(), true); } if (key == PANEL_SIZE_KEY) { setPanelSize(m_gsettings->get(PANEL_SIZE_KEY).toInt(), true); } if (key == PANEL_POSITION_KEY) { setPosition(0, intToPosition(m_gsettings->get(PANEL_POSITION_KEY).toInt(), PositionBottom), true); } if (key == HIDE_PANEL_KEY) { m_hidable = !m_gsettings->get(HIDE_PANEL_KEY).toBool(); if (m_hidable) m_hideTimer.stop(); setHidable(!m_hidable, true); m_hidden = m_hidable; m_showDelayTimer.start(); m_time->start(1000); } if (key == LOCK_PANEL_KEY) { m_lockPanel = m_gsettings->get(LOCK_PANEL_KEY).toBool(); } }); } if (m_gsettingsKeys.contains(PANEL_SIZE_KEY)) { setPanelSize(m_gsettings->get(PANEL_SIZE_KEY).toInt(),true); } if (m_gsettingsKeys.contains(ICON_SIZE_KEY)) { setIconSize(m_gsettings->get(ICON_SIZE_KEY).toInt(),true); } if (m_gsettingsKeys.contains(PANEL_POSITION_KEY)) { setPosition(0,intToPosition(m_gsettings->get(PANEL_POSITION_KEY).toInt(),PositionBottom),true); } m_time = new QTimer(this); connect(m_time, &QTimer::timeout, this,[=] (){ m_showDelayTimer.stop(); hidePanel(); m_time->stop(); }); qDebug()<<"Panel :: setGeometry finished"; readSettings(); ensureVisible(); qDebug()<<"Panel :: loadPlugins start"; loadPlugins(); qDebug()<<"Panel :: loadPlugins finished"; m_interface = new QDBusInterface("com.kylin.statusmanager.interface","/", "com.kylin.statusmanager.interface", QDBusConnection::sessionBus(),this); if (m_interface->isValid()) { QDBusReply status = m_interface->call("get_current_tabletmode"); setPanelHide(status); } else { qWarning()<<"Cann't connect kylin-status-manager"; setPanelHide(false); } QDBusConnection::sessionBus().connect("com.kylin.statusmanager.interface","/", "com.kylin.statusmanager.interface","mode_change_signal", this,SLOT(setPanelHide(bool))); qDebug()<<"Panel :: show UKuiPanel finished"; //给session发信号,告知任务栏已经启动完成,可以启动下一个组件 QDBusInterface interface(UKUI_SERVICE, UKUI_PATH, UKUI_INTERFACE, QDBusConnection::sessionBus()); interface.call("startupfinished","ukui-panel","finish"); // show it the first time, despite setting if (m_hidable) { showPanel(false); hidePanel(); } styleAdjust(); qDebug()<<"Panel :: UKuiPanel finished"; } void UKUIPanel::configWatch(KScreen::ConfigOperation *op) { m_config = op->config(); KScreen::ConfigMonitor::instance()->addConfig(m_config); // connect(m_config.data(), &KScreen::Config::primaryOutputChanged, // this, [=](const KScreen::OutputPtr &output){ // if (!output.isNull()) { // qDebug() << "primaryOutputChanged:" << output->name() << output->geometry(); // m_primaryScreenGeometry = output->geometry(); // QRect rect = caculPanelGeometry(output->geometry()); // qDebug()<<"primaryOutputChanged panel rect is"<windowHandle(), rect); // realign(); // } // }); connect(m_config.data(), &KScreen::Config::outputAdded, this, [=](const KScreen::OutputPtr &output){ if (!output.isNull()) { KScreen::OutputPtr primary = m_config->primaryOutput(); m_primaryScreenGeometry = primary->geometry(); qDebug()<<"output added primary geometry is"<geometry(); QRect rect = caculPanelGeometry(primary->geometry()); qDebug()<<"output added panel rect is"<windowHandle(), rect); } }); connect(m_config.data(), &KScreen::Config::outputRemoved, this, [=](){ qDebug() << "output removed"; }); } void UKUIPanel::setPanelHide(bool model) { if (model) { hide(); } else { //切换平板模式任务栏hide后再切回来,任务栏的surface发生了改变。wayland下需要重新设置dock属性 setAttribute(Qt::WA_X11NetWmWindowTypeDock); show(); KWindowSystem::setType(effectiveWinId(), NET::Dock); realign(); } } void UKUIPanel::readSettings() { // Read settings ...................................... m_settings->beginGroup(m_configGroup); // Let Hidability be the first thing we read // so that every call to realign() is without side-effect m_hidden = m_hidable; m_visibleMargin = m_settings->value(CFG_KEY_VISIBLE_MARGIN, m_visibleMargin).toBool(); m_animationTime = m_settings->value(CFG_KEY_ANIMATION, m_animationTime).toInt(); m_showDelayTimer.setInterval(m_settings->value(CFG_KEY_SHOW_DELAY, m_showDelayTimer.interval()).toInt()); // By default we are using size & count from theme. setLineCount(m_settings->value(CFG_KEY_LINECNT, PANEL_DEFAULT_LINE_COUNT).toInt(), false); setLength(m_settings->value(CFG_KEY_LENGTH, 100).toInt(), m_settings->value(CFG_KEY_PERCENT, true).toBool(), false); m_screenNum = m_settings->value(CFG_KEY_SCREENNUM, QApplication::desktop()->primaryScreen()).toInt(); // setPosition(mScreenNum, // strToPosition(mSettings->value(CFG_KEY_POSITION).toString(), PositionBottom), // false); setAlignment(Alignment(m_settings->value(CFG_KEY_ALIGNMENT, m_alignment).toInt()), false); m_reserveSpace = m_settings->value(CFG_KEY_RESERVESPACE, true).toBool(); m_settings->endGroup(); } void UKUIPanel::saveSettings(bool later) { mDelaySave.stop(); if (later) { mDelaySave.start(); return; } m_settings->beginGroup(m_configGroup); //Note: save/load of plugin names is completely handled by mPlugins object //mSettings->setValue(CFG_KEY_PLUGINS, mPlugins->pluginNames()); m_settings->setValue(CFG_KEY_LINECNT, m_lineCount); m_settings->setValue(CFG_KEY_LENGTH, m_length); m_settings->setValue(CFG_KEY_PERCENT, m_lengthInPercents); m_settings->setValue(CFG_KEY_SCREENNUM, m_screenNum); m_settings->setValue(CFG_KEY_ALIGNMENT, m_alignment); m_settings->setValue(CFG_KEY_RESERVESPACE, m_reserveSpace); m_settings->setValue(CFG_KEY_VISIBLE_MARGIN, m_visibleMargin); m_settings->setValue(CFG_KEY_ANIMATION, m_animationTime); m_settings->setValue(CFG_KEY_SHOW_DELAY, m_showDelayTimer.interval()); m_settings->endGroup(); } /*确保任务栏在调整分辨率和增加·屏幕之后能保持显示正常*/ void UKUIPanel::ensureVisible() { m_actualScreenNum = m_screenNum; // the screen size might be changed realign(); } void UKUIPanel::primaryChangedSlot(int x, int y, int w, int h, int r) { qDebug() << " primaryChanged from USD " << x << y << w << h << r; if (QGuiApplication::screens().size() < 1) { qWarning() << "No Valid Screen !!!"; return; } if (QGuiApplication::screens().at(0)->geometry().width() != w || QGuiApplication::screens().at(0)->geometry().height() != h) { qWarning() << "The Screen size obtained from USD and QGuiApplication dose not match,Follow QGuiApplication !!"; qWarning() << "---------From USD " << x << y << w << h << r; qWarning() << "---------From QGuiApplication " << QGuiApplication::screens().at(0)->geometry(); } m_primaryScreenGeometry = QGuiApplication::screens().at(0)->geometry(); realign(); } UKUIPanel::~UKUIPanel() { m_layout->setEnabled(false); delete m_animation; delete m_interface; // delete mConfigDialog.data(); // do not save settings because of "user deleted panel" functionality saveSettings(); } void UKUIPanel::show() { QWidget::show(); KWindowSystem::setOnDesktop(effectiveWinId(), NET::OnAllDesktops); } QStringList pluginDesktopDirs() { QStringList dirs; dirs << QString(getenv("UKUI_PANEL_PLUGINS_DIR")).split(':', QString::SkipEmptyParts); dirs << QString("%1/%2").arg(XdgDirs::dataHome(), "/ukui/ukui-panel"); dirs << PLUGIN_DESKTOPS_DIR; return dirs; } /*加载pluginDesktopDirs 获取到的列表中的插件*/ void UKUIPanel::loadPlugins() { QString names_key(m_configGroup); names_key += '/'; names_key += QLatin1String(CFG_KEY_PLUGINS); m_plugins.reset(new PanelPluginsModel(this, names_key, pluginDesktopDirs())); connect(m_plugins.data(), &PanelPluginsModel::pluginAdded, m_layout, &UKUIPanelLayout::addPlugin); connect(m_plugins.data(), &PanelPluginsModel::pluginMovedUp, m_layout, &UKUIPanelLayout::moveUpPlugin); //reemit signals connect(m_plugins.data(), &PanelPluginsModel::pluginAdded, this, &UKUIPanel::pluginAdded); connect(m_plugins.data(), &PanelPluginsModel::pluginRemoved, this, &UKUIPanel::pluginRemoved); const auto plugins = m_plugins->plugins(); for (auto const & plugin : plugins) { m_layout->addPlugin(plugin); connect(plugin, &Plugin::dragLeft, [this] { m_showDelayTimer.stop(); hidePanel();}); } } void UKUIPanel::reloadPlugins(QString model){ QStringList list=readConfig(model); checkPlugins(list); movePlugins(list); } QStringList UKUIPanel::readConfig(QString model){ QStringList list; m_settings->beginGroup(m_configGroup); if(model=="pc") { list = m_settings->value(CFG_KEY_PLUGINS_PC).toStringList(); } else { list = m_settings->value(CFG_KEY_PLUGINS_PAD).toStringList(); } m_settings->endGroup(); return list; } void UKUIPanel::checkPlugins(QStringList list){ const auto plugins = m_plugins->plugins(); for (auto const & plugin : plugins) { plugin->hide(); } for(int i=0;ipluginNames().contains(list[i])) { if(m_plugins->pluginByName(list[i])) { m_plugins->pluginByName(list[i])->show(); } } } } void UKUIPanel::movePlugins(QStringList list) { for(int i=0;icount();i++) { m_layout->removeItem(m_layout->itemAt(i)); } const auto plugins = m_plugins->plugins(); for (auto const & plugin : plugins) { if(!plugin->isHidden()) { m_layout->addWidget(plugin); } } } int UKUIPanel::getReserveDimension() { return m_hidable ? PANEL_HIDE_SIZE : qMax(PANEL_MINIMUM_SIZE, m_panelSize); } /* get primary screen changed in 990*/ void UKUIPanel::priScreenChanged(int x, int y, int width, int height) { m_currentScreenRect.setRect(x, y, width, height); setPanelGeometry(); realign(); } QRect UKUIPanel::caculPanelGeometry(QRect primaryscreen) { QRect rect; if (isHorizontal()) { rect.setHeight(qMax(PANEL_MINIMUM_SIZE, m_panelSize)); rect.setWidth(primaryscreen.width()); rect.setWidth(qMax(rect.size().width(), m_layout->minimumSize().width())); // Horiz panel*************************** if (m_position == IUKUIPanel::PositionTop) { if (m_hidden) { rect.moveBottom(primaryscreen.top() + PANEL_HIDE_SIZE); rect.setX(primaryscreen.x()); rect.setY(primaryscreen.y() - rect.height() + PANEL_HIDE_SIZE); }else { rect.moveTop(primaryscreen.top()); rect.setX(primaryscreen.x()); rect.setY(primaryscreen.y()); rect.setWidth(primaryscreen.width()); } } else { if (m_hidden) { rect.moveTop(primaryscreen.bottom() - PANEL_HIDE_SIZE); rect.setX(primaryscreen.x()); rect.setY(primaryscreen.y() + primaryscreen.height() - PANEL_HIDE_SIZE); }else { rect.moveBottom(primaryscreen.bottom()); rect.setX(primaryscreen.x()); rect.setY(primaryscreen.y() + primaryscreen.height() - m_panelSize); rect.setWidth(primaryscreen.width()); } } } else { // Vert panel *************************** rect.setWidth(qMax(PANEL_MINIMUM_SIZE, m_panelSize)); rect.setHeight(primaryscreen.height()); rect.setHeight(qMax(rect.size().height(), m_layout->minimumSize().height())); if (m_position == IUKUIPanel::PositionLeft) { if (m_hidden) { rect.moveRight(primaryscreen.left() + PANEL_HIDE_SIZE); rect.setX(primaryscreen.x() - rect.width() + PANEL_HIDE_SIZE); rect.setY(primaryscreen.y()); }else { rect.moveLeft(primaryscreen.left()); rect.setX(primaryscreen.x()); rect.setY(primaryscreen.y()); rect.setHeight(primaryscreen.height()); } } else { if (m_hidden) { rect.moveLeft(primaryscreen.right() - PANEL_HIDE_SIZE); rect.setX(primaryscreen.x() + primaryscreen.width() - PANEL_HIDE_SIZE); rect.setY(primaryscreen.y()); }else { rect.moveRight(primaryscreen.right()); rect.setX(primaryscreen.x() + primaryscreen.width() - m_panelSize); rect.setY(primaryscreen.y()); rect.setHeight(primaryscreen.height()); } } } qDebug()<<"ukui-panel Rect is :"<screenGeometry are 0 */ void UKUIPanel::setPanelGeometry(bool animate) { QRect rect = caculPanelGeometry(m_primaryScreenGeometry); if (rect != geometry()) { setFixedSize(rect.size()); if (animate && !m_isWaylandEnv) { setPanelAnimation(geometry(), rect); } else { setMargins(); kdk::WindowManager::setGeometry(this->windowHandle(), rect); } } QDBusMessage message =QDBusMessage::createSignal("/panel/position", "org.ukui.panel", "UKuiPanelPosition"); QList args; args.append(m_primaryScreenGeometry.x()); args.append(m_primaryScreenGeometry.y()); args.append(m_primaryScreenGeometry.width()); args.append(m_primaryScreenGeometry.height()); args.append(panelSize()); args.append(m_gsettings->get(PANEL_POSITION_KEY).toInt()); message.setArguments(args); QDBusConnection::sessionBus().send(message); } void UKUIPanel::setPanelAnimation(QRect startrect, QRect endrect) { if (m_animation == nullptr) { m_animation = new QPropertyAnimation(this, "geometry"); m_animation->setEasingCurve(QEasingCurve::Linear); //Note: for hiding, the margins are set after animation is finished connect(m_animation, &QAbstractAnimation::finished, [this] { if (m_hidden) setMargins(); }); } m_animation->setDuration(m_animationTime); m_animation->setStartValue(startrect); m_animation->setEndValue(endrect); //Note: for showing-up, the margins are removed instantly if (!m_hidden) { setMargins(); } m_animation->start(); } /*设置边距*/ void UKUIPanel::setMargins() { if (m_hidden) { if (isHorizontal()) { if (m_position == IUKUIPanel::PositionTop) m_layout->setContentsMargins(0, 0, 0, PANEL_HIDE_SIZE); else m_layout->setContentsMargins(0, PANEL_HIDE_SIZE, 0, 0); } else { if (m_position == IUKUIPanel::PositionLeft) m_layout->setContentsMargins(0, 0, PANEL_HIDE_SIZE, 0); else m_layout->setContentsMargins(PANEL_HIDE_SIZE, 0, 0, 0); } if (!m_visibleMargin) setWindowOpacity(0.0); } else { m_layout->setContentsMargins(0, 0, 0, 0); if (!m_visibleMargin) setWindowOpacity(1.0); } } /* * ukui-panel 的实时调整功能 * QEvent::LayoutRequest 能监听到widget should be relayouted时候的信号 * emit realigned() 信号在PanelPluginsModel类中传给插件的realign函数 * 所有的插件类都需要重写这个函数用以跟任务栏的位置保持一致 * UKUIPanel::event -> UKUIPanel::realign() -> Plugin::realign() ->UKUITrayPlugin:realign */ void UKUIPanel::realign() { emit realigned(); if (!isVisible()) return; setPanelGeometry(); // Reserve our space on the screen .......... // It's possible that our geometry is not changed, but screen resolution is changed, // so resetting WM_STRUT is still needed. To make it simple, we always do it. updateWmStrut(); } // Update the _NET_WM_PARTIAL_STRUT and _NET_WM_STRUT properties for the window void UKUIPanel::updateWmStrut() { WId wid = effectiveWinId(); if(wid == 0 || !isVisible()) return; if (m_reserveSpace) { const QRect wholeScreen = QApplication::desktop()->geometry(); const QRect rect = geometry(); // NOTE: https://standards.freedesktop.org/wm-spec/wm-spec-latest.html // Quote from the EWMH spec: " Note that the strut is relative to the screen edge, and not the edge of the xinerama monitor." // So, we use the geometry of the whole screen to calculate the strut rather than using the geometry of individual monitors. // Though the spec only mention Xinerama and did not mention XRandR, the rule should still be applied. // At least openbox is implemented like this. switch (m_position) { case UKUIPanel::PositionTop: KWindowSystem::setExtendedStrut(wid, /* Left */ 0, 0, 0, /* Right */ 0, 0, 0, /* Top */ getReserveDimension(), rect.left(), rect.right(), /* Bottom */ 0, 0, 0 ); break; case UKUIPanel::PositionBottom: KWindowSystem::setExtendedStrut(wid, /* Left */ 0, 0, 0, /* Right */ 0, 0, 0, /* Top */ 0, 0, 0, /* Bottom */ getReserveDimension(), rect.left(), rect.right() ); break; case UKUIPanel::PositionLeft: KWindowSystem::setExtendedStrut(wid, /* Left */ getReserveDimension(), rect.top(), rect.bottom(), /* Right */ 0, 0, 0, /* Top */ 0, 0, 0, /* Bottom */ 0, 0, 0 ); break; case UKUIPanel::PositionRight: KWindowSystem::setExtendedStrut(wid, /* Left */ 0, 0, 0, /* Right */ getReserveDimension(), rect.top(), rect.bottom(), /* Top */ 0, 0, 0, /* Bottom */ 0, 0, 0 ); break; } } else { KWindowSystem::setExtendedStrut(wid, /* Left */ 0, 0, 0, /* Right */ 0, 0, 0, /* Top */ 0, 0, 0, /* Bottom */ 0, 0, 0 ); } } /*设置任务栏高度*/ void UKUIPanel::setPanelSize(int value, bool save) { if (m_panelSize != value) { m_panelSize = value; realign(); if (save) saveSettings(true); } } /*设置任务栏图标大小*/ void UKUIPanel::setIconSize(int value, bool save) { if (m_iconSize != value) { m_iconSize = value; m_layout->setLineSize(m_iconSize); if (save) saveSettings(true); realign(); } } void UKUIPanel::setLineCount(int value, bool save) { if (m_lineCount != value) { m_lineCount = value; m_layout->setEnabled(false); m_layout->setLineCount(m_lineCount); m_layout->setEnabled(true); if (save) saveSettings(true); realign(); } } void UKUIPanel::setLength(int length, bool inPercents, bool save) { if (m_length == length && m_lengthInPercents == inPercents) return; m_length = length; m_lengthInPercents = inPercents; if (save) saveSettings(true); realign(); } void UKUIPanel::setPosition(int screen, IUKUIPanel::Position position, bool save) { if (m_screenNum == screen && m_position == position) return; m_actualScreenNum = screen; m_position = position; m_layout->setPosition(m_position); if (save) { m_screenNum = screen; saveSettings(true); } // Qt 5 adds a new class QScreen and add API for setting the screen of a QWindow. // so we had better use it. However, without this, our program should still work // as long as XRandR is used. Since XRandR combined all screens into a large virtual desktop // every screen and their virtual siblings are actually on the same virtual desktop. // So things still work if we don't set the screen correctly, but this is not the case // for other backends, such as the upcoming wayland support. Hence it's better to set it. if(windowHandle()) { // QScreen* newScreen = qApp->screens().at(screen); // QScreen* oldScreen = windowHandle()->screen(); // const bool shouldRecreate = windowHandle()->handle() && !(oldScreen && oldScreen->virtualSiblings().contains(newScreen)); // Q_ASSERT(shouldRecreate == false); // NOTE: When you move a window to another screen, Qt 5 might recreate the window as needed // But luckily, this never happen in XRandR, so Qt bug #40681 is not triggered here. // (The only exception is when the old screen is destroyed, Qt always re-create the window and // this corner case triggers #40681.) // When using other kind of multihead settings, such as Xinerama, this might be different and // unless Qt developers can fix their bug, we have no way to workaround that. windowHandle()->setScreen(qApp->screens().at(screen)); } realign(); m_gsettings->set(PANEL_POSITION_KEY,position); QRect rect = caculPanelGeometry(m_primaryScreenGeometry); kdk::WindowManager::setGeometry(this->windowHandle(), rect); } void UKUIPanel::setAlignment(Alignment value, bool save) { if (m_alignment == value) return; m_alignment = value; if (save) saveSettings(true); realign(); } QRect UKUIPanel::globalGeometry() const { // panel is the the top-most widget/window, no calculation needed return geometry(); } bool UKUIPanel::event(QEvent *event) { switch (event->type()) { case QEvent::ContextMenu: showPopupMenu(); break; case QEvent::LayoutRequest: emit realigned(); break; case QEvent::WinIdChange: { // qDebug() << "WinIdChange" << hex << effectiveWinId(); if(effectiveWinId() == 0) break; // Sometimes Qt needs to re-create the underlying window of the widget and // the winId() may be changed at runtime. So we need to reset all X11 properties // when this happens. //qDebug() << "WinIdChange" << hex << effectiveWinId() << "handle" << windowHandle() << windowHandle()->screen(); // Qt::WA_X11NetWmWindowTypeDock becomes ineffective in Qt 5 // See QTBUG-39887: https://bugreports.qt-project.org/browse/QTBUG-39887 // Let's use KWindowSystem for that KWindowSystem::setType(effectiveWinId(), NET::Dock); updateWmStrut(); // reserve screen space for the panel KWindowSystem::setOnAllDesktops(effectiveWinId(), true); break; } case QEvent::DragEnter: dynamic_cast(event)->setDropAction(Qt::IgnoreAction); event->accept(); //no break intentionally case QEvent::Enter: m_showDelayTimer.start(); break; case QEvent::Leave: setCursor(Qt::ArrowCursor); m_showDelayTimer.stop(); hidePanel(); break; case QEvent::DragLeave: m_showDelayTimer.stop(); hidePanel(); break; default: break; } return QFrame::event(event); } void UKUIPanel::showEvent(QShowEvent *event) { QFrame::showEvent(event); realign(); } void UKUIPanel::styleAdjust() { QString filename = QDir::homePath() + "/.config/ukui/panel-commission.ini"; QSettings m_settings(filename, QSettings::IniFormat); m_settings.setIniCodec("UTF-8"); m_settings.beginGroup("Transparency"); QString transparency_action = m_settings.value("transparency", "").toString(); if (transparency_action.isEmpty()) { transparency_action = "open"; } m_settings.endGroup(); const QByteArray transparency_id(TRANSPARENCY_SETTINGS); if(QGSettings::isSchemaInstalled(transparency_id)) { m_transparencyGsettings = new QGSettings(transparency_id); m_transparency=m_transparencyGsettings->get(TRANSPARENCY_KEY).toDouble()*255; this->update(); connect(m_transparencyGsettings, &QGSettings::changed, this, [=] (const QString &key){ if(key==TRANSPARENCY_KEY && transparency_action=="open") { m_transparency=m_transparencyGsettings->get(TRANSPARENCY_KEY).toDouble()*255; this->update(); } }); } else { m_transparency=0.75; } } void UKUIPanel::paintEvent(QPaintEvent *) { QStyleOption opt; opt.init(this); QPainter p(this); QColor col= palette().color(QPalette::BrightText); col.setAlphaF(0.15); p.setPen(col); QColor color= palette().color(QPalette::Window); color.setAlpha(m_transparency); QBrush brush = QBrush(color); p.setBrush(brush); p.setRenderHint(QPainter::Antialiasing); p.drawRoundedRect(opt.rect,0,0); style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this); } void UKUIPanel::showPopupMenu() { m_menu = new ContextMenu(this); m_menu->setAttribute(Qt::WA_DeleteOnClose); m_menu->setGeometry(calculatePopupWindowPos(QCursor::pos(), m_menu->sizeHint())); willShowWindow(m_menu); m_menu->show(); } Plugin* UKUIPanel::findPlugin(const IUKUIPanelPlugin* iPlugin) const { const auto plugins = m_plugins->plugins(); for (auto const & plug : plugins) if (plug->iPlugin() == iPlugin) return plug; return nullptr; } QRect UKUIPanel::calculatePopupWindowPos(QPoint const & absolutePos, QSize const & windowSize) const { int x = absolutePos.x(), y = absolutePos.y(); switch (position()) { case IUKUIPanel::PositionTop: y = globalGeometry().bottom(); break; case IUKUIPanel::PositionBottom: y = globalGeometry().top() - windowSize.height(); break; case IUKUIPanel::PositionLeft: x = globalGeometry().right(); break; case IUKUIPanel::PositionRight: x = globalGeometry().left() - windowSize.width(); break; } QRect res(QPoint(x, y), windowSize); QRect screen = QApplication::desktop()->screenGeometry(this); // NOTE: We cannot use AvailableGeometry() which returns the work area here because when in a // multihead setup with different resolutions. In this case, the size of the work area is limited // by the smallest monitor and may be much smaller than the current screen and we will place the // menu at the wrong place. This is very bad for UX. So let's use the full size of the screen. if (res.right() > screen.right()) res.moveRight(screen.right()); if (res.bottom() > screen.bottom()) res.moveBottom(screen.bottom()); if (res.left() < screen.left()) res.moveLeft(screen.left()); if (res.top() < screen.top()) res.moveTop(screen.top()); return res; } QRect UKUIPanel::calculatePopupWindowPos(const IUKUIPanelPlugin *plugin, const QSize &windowSize) const { Plugin *panel_plugin = findPlugin(plugin); if (nullptr == panel_plugin) { qWarning() << Q_FUNC_INFO << "Wrong logic? Unable to find Plugin* for" << plugin << "known plugins follow..."; const auto plugins = m_plugins->plugins(); for (auto const & plug : plugins) qWarning() << plug->iPlugin() << plug; return QRect(); } // Note: assuming there are not contentMargins around the "BackgroundWidget" (UKUIPanelWidget) return calculatePopupWindowPos(globalGeometry().topLeft() + panel_plugin->geometry().topLeft(), windowSize); } void UKUIPanel::willShowWindow(QWidget * w) { m_standaloneWindows->observeWindow(w); } void UKUIPanel::pluginFlagsChanged(const IUKUIPanelPlugin * /*plugin*/) { m_layout->rebuild(); } void UKUIPanel::pluginMoved(Plugin * plug) { //get new position of the moved plugin bool found{false}; QString plug_is_before; for (int i=0; icount(); ++i) { Plugin *plugin = qobject_cast(m_layout->itemAt(i)->widget()); if (plugin) { if (found) { //we found our plugin in previous cycle -> is before this (or empty as last) plug_is_before = plugin->settingsGroup(); break; } else { found = (plug == plugin); } } } m_plugins->movePlugin(plug, plug_is_before); } void UKUIPanel::showPanel(bool animate) { if (m_hidable) { m_hideTimer.stop(); if (m_hidden) { m_hidden = false; setPanelGeometry(m_animationTime > 0 && animate); } } } void UKUIPanel::hidePanel() { if (m_hidable && !m_hidden && !m_standaloneWindows->isAnyWindowShown() ) m_hideTimer.start(); } void UKUIPanel::hidePanelWork() { if (!m_standaloneWindows->isAnyWindowShown()) { m_hidden = true; setPanelGeometry(m_animationTime > 0); } else { m_hideTimer.start(); } QDBusMessage message =QDBusMessage::createSignal("/panel", "org.ukui.panel.settings", "PanelHided"); QDBusConnection::sessionBus().send(message); } void UKUIPanel::setHidable(bool hidable, bool save) { if (m_hidable == hidable) return; m_hidable = hidable; if (save) saveSettings(true); realign(); } void UKUIPanel::setVisibleMargin(bool visibleMargin, bool save) { if (m_visibleMargin == visibleMargin) return; m_visibleMargin = visibleMargin; if (save) saveSettings(true); realign(); } void UKUIPanel::setAnimationTime(int animationTime, bool save) { if (m_animationTime == animationTime) return; m_animationTime = animationTime; if (save) saveSettings(true); } void UKUIPanel::setShowDelay(int showDelay, bool save) { if (m_showDelayTimer.interval() == showDelay) return; m_showDelayTimer.setInterval(showDelay); if (save) saveSettings(true); } bool UKUIPanel::isPluginSingletonAndRunnig(QString const & pluginId) const { Plugin const * plugin = m_plugins->pluginByID(pluginId); if (nullptr == plugin) return false; else return plugin->iPlugin()->flags().testFlag(IUKUIPanelPlugin::SingleInstance); } void UKUIPanel::connectToServer(){ m_cloudInterface = new QDBusInterface("org.kylinssoclient.dbus", "/org/kylinssoclient/path", "org.freedesktop.kylinssoclient.interface", QDBusConnection::sessionBus()); if (!m_cloudInterface->isValid()) { qDebug() << "fail to connect to service"; qDebug() << qPrintable(QDBusConnection::systemBus().lastError().message()); return; } // QDBusConnection::sessionBus().connect(cloudInterface, SIGNAL(shortcutChanged()), this, SLOT(shortcutChangedSlot())); QDBusConnection::sessionBus().connect(QString(), QString("/org/kylinssoclient/path"), QString("org.freedesktop.kylinssoclient.interface"), "keyChanged", this, SLOT(keyChangedSlot(QString))); // 将以后所有DBus调用的超时设置为 milliseconds m_cloudInterface->setTimeout(2147483647); // -1 为默认的25s超时 } void UKUIPanel::keyChangedSlot(const QString &key) { if(key == "ukui-panel") { m_settings->beginGroup(m_configGroup); m_settings->sync(); if (m_gsettingsKeys.contains(LOCK_PANEL_KEY)) { m_lockPanel = m_gsettings->get(LOCK_PANEL_KEY).toBool(); } else { m_lockPanel = false; } m_settings->endGroup(); } } ///////////////////////////////////////////////////////////////////////////////// /// \brief UKUIPanel::areaDivid /// \param globalpos /// \return /// 以下所有函数均为任务栏拖拽相关(位置、大小) ///////////////////////////////////////////////////////////////////////////////// IUKUIPanel::Position UKUIPanel::areaDivid(QPoint globalpos) { int x = globalpos.rx(); int y = globalpos.ry(); int x_0 = QApplication::screens().at(0)->geometry().x(); int y_0 = QApplication::screens().at(0)->geometry().y(); float W = QApplication::screens().at(0)->size().width(); float H = QApplication::screens().at(0)->size().height(); float slope = H / W; if ((x - x_0 < 100 || x -x_0 > W - 100) && (y - y_0 > H - 100 || y - y_0 < 100)) return m_position; if ((y - y_0) > (int)((x - x_0) * slope) && (y - y_0) > (int)(H - (x - x_0) * slope)) return PositionBottom; if ((y - y_0) > (int)((x - x_0) * slope) && (y - y_0) < (int)(H - (x - x_0) * slope)) return PositionLeft; if ((y - y_0) < (int)((x - x_0) * slope) && (y - y_0) < (int)(H - (x - x_0) * slope)) return PositionTop; if ((y - y_0) < (int)((x - x_0) * slope) && (y - y_0) > (int)(H - (x - x_0) * slope)) return PositionRight; } void UKUIPanel::mousePressEvent(QMouseEvent *event) { setCursor(Qt::DragMoveCursor); } void UKUIPanel::mouseMoveEvent(QMouseEvent* event) { if (m_lockPanel) return; if (m_moveLock == -1) { if (event->pos().ry() < 10) m_moveLock = 0; else m_moveLock = 1; } if (!m_moveLock) { int panel_h = QApplication::screens().at(0)->size().height() - event->globalPos().ry(); int icon_size = panel_h*0.695652174; setCursor(Qt::SizeVerCursor); if (panel_h <= PANEL_SIZE_LARGE && panel_h >= PANEL_SIZE_SMALL) { setPanelSize(panel_h, true); setIconSize(icon_size, true); if (m_gsettingsKeys.contains(PANEL_SIZE_KEY) && m_gsettingsKeys.contains(ICON_SIZE_KEY)) { m_gsettings->set(PANEL_SIZE_KEY, panel_h); m_gsettings->set(ICON_SIZE_KEY, icon_size); } } return; } setCursor(Qt::SizeAllCursor); IUKUIPanel::Position currentpos = areaDivid(event->globalPos()); if (m_oldPos != currentpos) { setPosition(0,currentpos,true); m_oldPos = currentpos; } } void UKUIPanel::mouseReleaseEvent(QMouseEvent* event) { setCursor(Qt::ArrowCursor); realign(); emit realigned(); m_moveLock = -1; } ukui-panel-4.0.0.4/panel/contextmenu.h0000644000175000017500000000233014560306221016165 0ustar fengfeng/* * Copyright (C) 2022, KylinSoft Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * Authors: Nicole * */ #ifndef CONTEXTMENU_H #define CONTEXTMENU_H #include #include #include #include "common/common.h" class ContextMenu : public QMenu { Q_OBJECT public: explicit ContextMenu(QWidget *parent = nullptr); private: void adjustPanel(); QGSettings *m_gsettings; QStringList m_gsettingsKeys; bool m_lockPanel; //signals: private Q_SLOTS: void systeMonitor(); void showDesktop(); void showTaskView(); }; #endif // CONTEXTMENU_H ukui-panel-4.0.0.4/panel/ukuipanelglobals.h0000644000175000017500000000232514560306203017161 0ustar fengfeng/* BEGIN_COMMON_COPYRIGHT_HEADER * (c)LGPL2+ * * Copyright: 2013 LXQt team * Authors: * Hong Jen Yee (PCMan) * * Copyright: 2019 Tianjin KYLIN Information Technology Co., Ltd. * * * This program or library is free software; you can redistribute it * and/or modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * You should have received a copy of the GNU Lesser General * Public License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA * * END_COMMON_COPYRIGHT_HEADER */ #ifndef __UKUI_PANEL_GLOBALS_H__ #define __UKUI_PANEL_GLOBALS_H__ #include #ifdef COMPILE_UKUI_PANEL #define UKUI_PANEL_API Q_DECL_EXPORT #else #define UKUI_PANEL_API Q_DECL_IMPORT #endif #endif // __UKUI_PANEL_GLOBALS_H__ ukui-panel-4.0.0.4/panel/customstyle.cpp0000644000175000017500000005651014560306203016553 0ustar fengfeng/* * Copyright (C) 2019 Tianjin KYLIN Information Technology Co., Ltd. * * This program or library is free software; you can redistribute it * and/or modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * You should have received a copy of the GNU Lesser General * Public License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #include "customstyle.h" #include #include #include #include "common/common.h" //#if QT_CONFIG(toolbutton) /*以下代码是为了处理toolbutton 的箭头*/ static void drawArrow(const QStyle *style, const QStyleOptionToolButton *toolbutton, const QRect &rect, QPainter *painter, const QWidget *widget = 0) { QStyle::PrimitiveElement pe; switch (toolbutton->arrowType) { case Qt::LeftArrow: pe = QStyle::PE_IndicatorArrowLeft; break; case Qt::RightArrow: pe = QStyle::PE_IndicatorArrowRight; break; case Qt::UpArrow: pe = QStyle::PE_IndicatorArrowUp; break; case Qt::DownArrow: pe = QStyle::PE_IndicatorArrowDown; break; default: return; } QStyleOption arrowOpt = *toolbutton; arrowOpt.rect = rect; style->drawPrimitive(pe, &arrowOpt, painter, widget); } //#endif // QT_CONFIG(toolbutton) CustomStyle::CustomStyle(const QString &proxyStyleName, bool multileWins, QObject *parent) : QProxyStyle (proxyStyleName) { m_pluginName = proxyStyleName; m_multileWindow = multileWins; const QByteArray id(ORG_UKUI_STYLE); QStringList stylelist; stylelist << STYLE_NAME_KEY_DARK << STYLE_NAME_KEY_BLACK << STYLE_NAME_KEY_DEFAULT; if (QGSettings::isSchemaInstalled(id)) { m_gsettings = new QGSettings(id); if (stylelist.contains(m_gsettings->get(STYLE_NAME).toString())) { m_isDarkStyle = true; } else { m_isDarkStyle = false; } } connect(m_gsettings, &QGSettings::changed, this, [=] (const QString &key) { if (key == STYLE_NAME) { if (stylelist.contains(m_gsettings->get(STYLE_NAME).toString())) { m_isDarkStyle = true; } else { m_isDarkStyle = false; } } }); } CustomStyle::~CustomStyle() { if (NULL != m_gsettings) { delete m_gsettings; m_gsettings = NULL; } }; void CustomStyle::setOpacity(int alpha) { m_alpha = alpha; } /*Draws the given control using the provided painter with the style options specified by option.*/ void CustomStyle::drawComplexControl(QStyle::ComplexControl cc, const QStyleOptionComplex *opt, QPainter *p, const QWidget *widget) const { // if(control == CC_ToolButton) // { // /// 我们需要获取ToolButton的详细信息,通过qstyleoption_cast可以得到 // /// 对应的option,通过拷贝构造函数得到一CustomStyle份备份用于绘制子控件 // /// 我们一般不用在意option是怎么得到的,大部分的Qt控件都能够提供了option的init方法 // } switch (cc) { case CC_ToolButton: if (const QStyleOptionToolButton *toolbutton = qstyleoption_cast(opt)) { QRect button, menuarea; button = proxy()->subControlRect(cc, toolbutton, SC_ToolButton, widget); menuarea = proxy()->subControlRect(cc, toolbutton, SC_ToolButtonMenu, widget); State bflags = toolbutton->state & ~State_Sunken; if (bflags & State_AutoRaise) { if (!(bflags & State_MouseOver) || !(bflags & State_Enabled)) { bflags &= ~State_Raised; } } State mflags = bflags; if (toolbutton->state & State_Sunken) { if (toolbutton->activeSubControls & SC_ToolButton) bflags |= State_Sunken; mflags |= State_Sunken; } QStyleOption tool = *toolbutton; if (toolbutton->subControls & SC_ToolButton) { if(QString::compare(m_pluginName,"attentionbutton") == 0) { proxy()->drawPrimitive(PE_PanelButtonTool, &tool, p, widget); } if (bflags & (State_Sunken | State_On | State_Raised)) { tool.rect = button; tool.state = bflags; proxy()->drawPrimitive(PE_PanelButtonTool, &tool, p, widget); } } if (toolbutton->state & State_HasFocus) { QStyleOptionFocusRect fr; fr.QStyleOption::operator=(*toolbutton); fr.rect.adjust(3, 3, -3, -3); if (toolbutton->features & QStyleOptionToolButton::MenuButtonPopup) fr.rect.adjust(0, 0, -proxy()->pixelMetric(QStyle::PM_MenuButtonIndicator, toolbutton, widget), 0); proxy()->drawPrimitive(PE_FrameFocusRect, &fr, p, widget); } QStyleOptionToolButton label = *toolbutton; label.state = bflags; int fw = proxy()->pixelMetric(PM_DefaultFrameWidth, opt, widget); label.rect = button.adjusted(fw, fw, -fw, -fw); proxy()->drawControl(CE_ToolButtonLabel, &label, p, widget); if (toolbutton->subControls & SC_ToolButtonMenu) { tool.rect = menuarea; tool.state = mflags; if (mflags & (State_Sunken | State_On | State_Raised)) proxy()->drawPrimitive(PE_IndicatorButtonDropDown, &tool, p, widget); proxy()->drawPrimitive(PE_IndicatorArrowDown, &tool, p, widget); } else if (toolbutton->features & QStyleOptionToolButton::HasMenu) { int mbi = proxy()->pixelMetric(PM_MenuButtonIndicator, toolbutton, widget); QRect ir = toolbutton->rect; QStyleOptionToolButton newBtn = *toolbutton; newBtn.rect = QRect(ir.right() + 5 - mbi, ir.y() + ir.height() - mbi + 4, mbi - 6, mbi - 6); newBtn.rect = visualRect(toolbutton->direction, button, newBtn.rect); //proxy()->drawPrimitive(PE_IndicatorArrowDown, &newBtn, p, widget); } } return; default: break; } return QProxyStyle::drawComplexControl(cc, opt, p, widget); } /*下面对于CE_ToolButtonLabel 的处理是因为quicklaunch 插件出现了箭头*/ void CustomStyle::drawControl(QStyle::ControlElement element, const QStyleOption *opt, QPainter *p, const QWidget *widget) const { switch (element) { case CE_PushButton: if (const QStyleOptionButton *btn = qstyleoption_cast(opt)) { proxy()->drawControl(CE_PushButtonBevel, btn, p, widget); QStyleOptionButton subopt = *btn; subopt.rect = subElementRect(SE_PushButtonContents, btn, widget); proxy()->drawControl(CE_PushButtonLabel, &subopt, p, widget); } case CE_PushButtonBevel: { if (const QStyleOptionButton *btn = qstyleoption_cast(opt)) { QRect br = btn->rect; int dbi = proxy()->pixelMetric(PM_ButtonDefaultIndicator, btn, widget); if (btn->features & QStyleOptionButton::AutoDefaultButton) br.setCoords(br.left() + dbi, br.top() + dbi, br.right() - dbi, br.bottom() - dbi); QStyleOptionButton tmpBtn = *btn; tmpBtn.rect = br; drawPrimitive(PE_PanelButtonCommand, &tmpBtn, p, widget); return; // qDebug()<<" ************** PushButton *********************** "; // p->save(); // // painter->setRenderHint(QPainter::Antialiasing,true); // // painter->setPen(Qt::NoPen); // // painter->drawRoundedRect(option->rect,6,6); // if (opt->state & State_MouseOver) { // if (opt->state & State_Sunken) { // p->setRenderHint(QPainter::Antialiasing,true); // p->setPen(Qt::NoPen); // p->setBrush(QColor(0xff,0xff,0xff)); // p->drawRoundedRect(opt->rect.adjusted(2,2,-2,-2),6,6); // } else { // p->setRenderHint(QPainter::Antialiasing,true); // p->setPen(Qt::NoPen); // p->setBrush(QColor(0xff,0xff,0xff)); // p->drawRoundedRect(opt->rect.adjusted(2,2,-2,-2),6,6); // } // } // p->restore(); // return; } break; } case CE_ToolButtonLabel: { if (const QStyleOptionToolButton *toolbutton = qstyleoption_cast(opt)) { QRect rect = toolbutton->rect; int shiftX = 0; int shiftY = 0; // if (toolbutton->state & (State_Sunken | State_On)) { // shiftX = proxy()->pixelMetric(PM_ButtonShiftHorizontal, toolbutton, widget); // shiftY = proxy()->pixelMetric(PM_ButtonShiftVertical, toolbutton, widget); // } // Arrow type always overrules and is always shown bool hasArrow = toolbutton->features & QStyleOptionToolButton::Arrow; if (((!hasArrow && toolbutton->icon.isNull()) && !toolbutton->text.isEmpty()) || toolbutton->toolButtonStyle == Qt::ToolButtonTextOnly) { int alignment = Qt::AlignCenter | Qt::TextShowMnemonic; if (!proxy()->styleHint(SH_UnderlineShortcut, opt, widget)) alignment |= Qt::TextHideMnemonic; rect.translate(shiftX, shiftY); p->setFont(toolbutton->font); proxy()->drawItemText(p, rect, alignment, toolbutton->palette, opt->state & State_Enabled, toolbutton->text, QPalette::ButtonText); } else { QPixmap pm; QSize pmSize = toolbutton->iconSize; if (!toolbutton->icon.isNull()) { QIcon::State state = toolbutton->state & State_On ? QIcon::On : QIcon::Off; QIcon::Mode mode; if (!(toolbutton->state & State_Enabled)) mode = QIcon::Disabled; else if ((opt->state & State_MouseOver) && (opt->state & State_AutoRaise)) mode = QIcon::Active; else mode = QIcon::Normal; pm = toolbutton->icon.pixmap(widget->window()->windowHandle(), toolbutton->rect.size().boundedTo(toolbutton->iconSize), mode, state); pmSize = pm.size() / pm.devicePixelRatio(); } if (toolbutton->toolButtonStyle != Qt::ToolButtonIconOnly) { p->setFont(toolbutton->font); QRect pr = rect, tr = rect; int alignment = Qt::TextShowMnemonic; if (!proxy()->styleHint(SH_UnderlineShortcut, opt, widget)) alignment |= Qt::TextHideMnemonic; if (toolbutton->toolButtonStyle == Qt::ToolButtonTextUnderIcon) { pr.setHeight(pmSize.height() + 4); //### 4 is currently hardcoded in QToolButton::sizeHint() tr.adjust(0, pr.height() - 1, 0, -1); pr.translate(shiftX, shiftY); if (!hasArrow) { proxy()->drawItemPixmap(p, pr, Qt::AlignCenter, pm); } else { drawArrow(proxy(), toolbutton, pr, p, widget); } alignment |= Qt::AlignCenter; } else { pr.setWidth(pmSize.width() + 4); //### 4 is currently hardcoded in QToolButton::sizeHint() tr.adjust(pr.width(), 0, 0, 0); pr.translate(shiftX, shiftY); if (!hasArrow) { proxy()->drawItemPixmap(p, QStyle::visualRect(opt->direction, rect, pr), Qt::AlignCenter, pm); } else { drawArrow(proxy(), toolbutton, pr, p, widget); } alignment |= Qt::AlignLeft | Qt::AlignVCenter; } tr.translate(shiftX, shiftY); //const QString text = d->toolButtonElideText(toolbutton, tr, alignment); proxy()->drawItemText(p, QStyle::visualRect(opt->direction, rect, tr), alignment, toolbutton->palette, toolbutton->state & State_Enabled, toolbutton->text, QPalette::ButtonText); } else { rect.translate(shiftX, shiftY); if (hasArrow) { drawArrow(proxy(), toolbutton, rect, p, widget); } else { proxy()->drawItemPixmap(p, rect, Qt::AlignCenter, pm); } } } } return; } default: break; } return QProxyStyle::drawControl(element, opt, p, widget); } void CustomStyle::drawItemPixmap(QPainter *painter, const QRect &rectangle, int alignment, const QPixmap &pixmap) const { return QProxyStyle::drawItemPixmap(painter, rectangle, alignment, pixmap); } void CustomStyle::drawItemText(QPainter *painter, const QRect &rectangle, int alignment, const QPalette &palette, bool enabled, const QString &text, QPalette::ColorRole textRole) const { return QProxyStyle::drawItemText(painter, rectangle, alignment, palette, enabled, text, textRole); } //绘制简单的颜色圆角等 void CustomStyle::drawPrimitive(QStyle::PrimitiveElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget) const { switch (element) { /*绘制 ToolButton * 任务栏的不同插件需要的样式存在差异 * 在同一个PE中有两个toolbutton 的样式 */ case PE_PanelButtonTool:{ if(QString::compare(m_pluginName,"attentionbutton") == 0) { painter->save(); painter->setRenderHint(QPainter::Antialiasing,true); QBrush brush = QBrush(QColor(0x23,0x24,0x26,0x14)); painter->setPen(QPen(brush, 1, Qt::SolidLine, Qt::RoundCap)); painter->setBrush(QColor(0xff,0x91,0x00, m_alpha)); painter->drawRoundedRect(option->rect.adjusted(2,2,-2,-2),6,6); painter->restore(); return; } if (m_isDarkStyle) { if(QString::compare(m_pluginName,"taskbutton")==0) { painter->save(); painter->setRenderHint(QPainter::Antialiasing,true); painter->setPen(Qt::NoPen); painter->setBrush(QColor(0xff,0xff,0xff,0x14)); if (option->state & State_Sunken) { painter->setBrush(QColor(0xff,0xff,0xff,0x0f)); } else if (option->state & State_MouseOver) { painter->setBrush(QColor(0xff,0xff,0xff,0x1f)); } else if (option->state & State_On) { painter->setBrush(QColor(0xff,0xff,0xff,0x33)); } painter->drawRoundedRect(option->rect.adjusted(2,2,-2,-2),6,6); painter->restore(); return; } else { painter->save(); painter->setRenderHint(QPainter::Antialiasing,true); painter->setPen(Qt::NoPen); painter->drawRoundedRect(option->rect,6,6); if (option->state & State_MouseOver) { if (option->state & State_Sunken) { painter->setRenderHint(QPainter::Antialiasing,true); painter->setPen(Qt::NoPen); painter->setBrush(QColor(0xff,0xff,0xff,0x0f)); painter->drawRoundedRect(option->rect.adjusted(2,2,-2,-2),6,6); } else { painter->setRenderHint(QPainter::Antialiasing,true); painter->setPen(Qt::NoPen); painter->setBrush(QColor(0xff,0xff,0xff,0x1f)); painter->drawRoundedRect(option->rect.adjusted(2,2,-2,-2),6,6); } } painter->restore(); return; } //浅色主题 } else { if(QString::compare(m_pluginName,"taskbutton")==0) { painter->save(); painter->setRenderHint(QPainter::Antialiasing,true); painter->setPen(Qt::NoPen); painter->setBrush(QColor(0x00,0x00,0x00,0x14)); if (option->state & State_Sunken) { painter->setBrush(QColor(0x00,0x00,0x00,0x0f)); } else if (option->state & State_MouseOver) { painter->setBrush(QColor(0x00,0x00,0x00,0x1f)); } else if (option->state & State_On) { painter->setBrush(QColor(0x00,0x00,0x00,0x33)); } painter->drawRoundedRect(option->rect.adjusted(2,2,-2,-2),6,6); painter->restore(); return; } else { painter->save(); painter->setRenderHint(QPainter::Antialiasing,true); painter->setPen(Qt::NoPen); painter->drawRoundedRect(option->rect,6,6); if (option->state & State_MouseOver) { if (option->state & State_Sunken) { painter->setRenderHint(QPainter::Antialiasing,true); painter->setPen(Qt::NoPen); painter->setBrush(QColor(0x00,0x00,0x00,0x0f)); painter->drawRoundedRect(option->rect.adjusted(2,2,-2,-2),6,6); } else { painter->setRenderHint(QPainter::Antialiasing,true); painter->setPen(Qt::NoPen); painter->setBrush(QColor(0x00,0x00,0x00,0x1f)); painter->drawRoundedRect(option->rect.adjusted(2,2,-2,-2),6,6); } } painter->restore(); return; } } } case PE_PanelButtonCommand:{ if(const QStyleOptionButton *button = qstyleoption_cast(option)) { painter->save(); if (option->state & State_MouseOver) { if (option->state & State_Sunken) { painter->setRenderHint(QPainter::Antialiasing,true); painter->setPen(Qt::NoPen); painter->setBrush(QColor(0xff,0xff,0xff,0x0f)); painter->drawRoundedRect(button->rect,6,6); } else { painter->setRenderHint(QPainter::Antialiasing,true); painter->setPen(Qt::NoPen); painter->setBrush(QColor(0xff,0xff,0xff,0x1f)); painter->drawRoundedRect(button->rect.adjusted(2,2,-2,-2),6,6); } } painter->restore(); return; } break; } } return QProxyStyle::drawPrimitive(element, option, painter, widget); } QPixmap CustomStyle::generatedIconPixmap(QIcon::Mode iconMode, const QPixmap &pixmap, const QStyleOption *option) const { return QProxyStyle::generatedIconPixmap(iconMode, pixmap, option); } QStyle::SubControl CustomStyle::hitTestComplexControl(QStyle::ComplexControl control, const QStyleOptionComplex *option, const QPoint &position, const QWidget *widget) const { return QProxyStyle::hitTestComplexControl(control, option, position, widget); } QRect CustomStyle::itemPixmapRect(const QRect &rectangle, int alignment, const QPixmap &pixmap) const { return QProxyStyle::itemPixmapRect(rectangle, alignment, pixmap); } QRect CustomStyle::itemTextRect(const QFontMetrics &metrics, const QRect &rectangle, int alignment, bool enabled, const QString &text) const { return QProxyStyle::itemTextRect(metrics, rectangle, alignment, enabled, text); } // int CustomStyle::pixelMetric(QStyle::PixelMetric metric, const QStyleOption *option, const QWidget *widget) const { switch (metric){ case PM_ToolBarIconSize:{ return (int)48*qApp->devicePixelRatio(); } default: break; } return QProxyStyle::pixelMetric(metric, option, widget); } /*使悬浮点击等样式生效*/ void CustomStyle::polish(QWidget *widget) { widget->setAttribute(Qt::WA_Hover); return QProxyStyle::polish(widget); } void CustomStyle::polish(QApplication *application) { return QProxyStyle::polish(application); } // void CustomStyle::polish(QPalette &palette) { // return QProxyStyle::polish(palette); // QProxyStyle::polish(palette); // palette.setBrush(QPalette::Foreground, Qt::black); QColor lightBlue(200, 0, 0); palette.setBrush(QPalette::Highlight, lightBlue); } void CustomStyle::unpolish(QWidget *widget) { return QProxyStyle::unpolish(widget); } void CustomStyle::unpolish(QApplication *application) { return QProxyStyle::unpolish(application); } QSize CustomStyle::sizeFromContents(QStyle::ContentsType type, const QStyleOption *option, const QSize &contentsSize, const QWidget *widget) const { return QProxyStyle::sizeFromContents(type, option, contentsSize, widget); } QIcon CustomStyle::standardIcon(QStyle::StandardPixmap standardIcon, const QStyleOption *option, const QWidget *widget) const { return QProxyStyle::standardIcon(standardIcon, option, widget); } QPalette CustomStyle::standardPalette() const { return QProxyStyle::standardPalette(); } //如果需要背景透明也许需要用到这个函数 int CustomStyle::styleHint(QStyle::StyleHint hint, const QStyleOption *option, const QWidget *widget, QStyleHintReturn *returnData) const { switch (hint) { /// 让ScrollView viewport的绘制区域包含scrollbar和corner widget /// 这个例子中没有什么作用,如果我们需要绘制一个背景透明的滚动条 /// 这个style hint对我们的意义应该很大,因为我们希望视图能够帮助 /// 我们填充滚动条的背景区域,否则当背景透明时底下会出现明显的分割 case SH_ScrollView_FrameOnlyAroundContents: { return false; } default: break; } return QProxyStyle::styleHint(hint, option, widget, returnData); } QRect CustomStyle::subControlRect(QStyle::ComplexControl control, const QStyleOptionComplex *option, QStyle::SubControl subControl, const QWidget *widget) const { return QProxyStyle::subControlRect(control, option, subControl, widget); } QRect CustomStyle::subElementRect(QStyle::SubElement element, const QStyleOption *option, const QWidget *widget) const { return QProxyStyle::subElementRect(element, option, widget); } ukui-panel-4.0.0.4/panel/pluginsettings.h0000644000175000017500000000515014560306203016676 0ustar fengfeng/* BEGIN_COMMON_COPYRIGHT_HEADER * (c)LGPL2+ * * Copyright: 2015 LXQt team * Authors: * Paulo Lieuthier * * Copyright: 2019 Tianjin KYLIN Information Technology Co., Ltd. * * * This program or library is free software; you can redistribute it * and/or modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General * Public License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA * * END_COMMON_COPYRIGHT_HEADER */ #ifndef PLUGIN_SETTINGS_H #define PLUGIN_SETTINGS_H #include #include #include #include "ukuipanelglobals.h" namespace UKUi { class Settings; } class PluginSettingsFactory; class PluginSettingsPrivate; /*! * \brief * Settings for particular plugin. This object/class can be used similarly as \sa QSettings. * Object cannot be constructed direcly (it is the panel's responsibility to construct it for each plugin). * * * \note * We are relying here on so called "back linking" (calling a function defined in executable * back from an external library)... */ class UKUI_PANEL_API PluginSettings : public QObject { Q_OBJECT //for instantiation friend class PluginSettingsFactory; public: ~PluginSettings(); QString group() const; QVariant value(const QString &key, const QVariant &defaultValue = QVariant()) const; void setValue(const QString &key, const QVariant &value); void remove(const QString &key); bool contains(const QString &key) const; QList > readArray(const QString &prefix); void setArray(const QString &prefix, const QList > &hashList); void clear(); void sync(); QStringList allKeys() const; QStringList childGroups() const; void beginGroup(const QString &subGroup); void endGroup(); void loadFromCache(); Q_SIGNALS: void settingsChanged(); private: explicit PluginSettings(UKUi::Settings *settings, const QString &group, QObject *parent = nullptr); private: QScopedPointer d_ptr; Q_DECLARE_PRIVATE(PluginSettings) }; #endif ukui-panel-4.0.0.4/panel/pluginsettings.cpp0000644000175000017500000001350114560306203017230 0ustar fengfeng/* BEGIN_COMMON_COPYRIGHT_HEADER * (c)LGPL2+ * * Copyright: 2015 LXQt team * Authors: * Paulo Lieuthier * * Copyright: 2019 Tianjin KYLIN Information Technology Co., Ltd. * * * This program or library is free software; you can redistribute it * and/or modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General * Public License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA * * END_COMMON_COPYRIGHT_HEADER */ #include "pluginsettings.h" #include "pluginsettings_p.h" //#include #include "common/ukuisettings.h" class PluginSettingsPrivate { public: PluginSettingsPrivate(UKUi::Settings* settings, const QString &group) : mSettings(settings) , mOldSettings(settings) , mGroup(group) { } QString prefix() const; inline QString fullPrefix() const { return mGroup + "/" + prefix(); } UKUi::Settings *mSettings; UKUi::SettingsCache mOldSettings; QString mGroup; QStringList mSubGroups; }; QString PluginSettingsPrivate::prefix() const { if (!mSubGroups.empty()) return mSubGroups.join('/'); return QString(); } PluginSettings::PluginSettings(UKUi::Settings* settings, const QString &group, QObject *parent) : QObject(parent) , d_ptr(new PluginSettingsPrivate{settings, group}) { Q_D(PluginSettings); connect(d->mSettings, &UKUi::Settings::settingsChangedFromExternal, this, &PluginSettings::settingsChanged); } QString PluginSettings::group() const { Q_D(const PluginSettings); return d->mGroup; } PluginSettings::~PluginSettings() { } QVariant PluginSettings::value(const QString &key, const QVariant &defaultValue) const { Q_D(const PluginSettings); d->mSettings->beginGroup(d->fullPrefix()); QVariant value = d->mSettings->value(key, defaultValue); d->mSettings->endGroup(); return value; } void PluginSettings::setValue(const QString &key, const QVariant &value) { Q_D(PluginSettings); d->mSettings->beginGroup(d->fullPrefix()); d->mSettings->setValue(key, value); d->mSettings->endGroup(); emit settingsChanged(); } void PluginSettings::remove(const QString &key) { Q_D(PluginSettings); d->mSettings->beginGroup(d->fullPrefix()); d->mSettings->remove(key); d->mSettings->endGroup(); emit settingsChanged(); } bool PluginSettings::contains(const QString &key) const { Q_D(const PluginSettings); d->mSettings->beginGroup(d->fullPrefix()); bool ret = d->mSettings->contains(key); d->mSettings->endGroup(); return ret; } QList > PluginSettings::readArray(const QString& prefix) { Q_D(PluginSettings); d->mSettings->beginGroup(d->fullPrefix()); QList > array; int size = d->mSettings->beginReadArray(prefix); for (int i = 0; i < size; ++i) { d->mSettings->setArrayIndex(i); QMap map; const auto keys = d->mSettings->childKeys(); for (const QString &key : keys) { map[key] = d->mSettings->value(key); } if (array.contains(map)) { continue; } else { array << map; } } d->mSettings->endArray(); d->mSettings->endGroup(); return array; } void PluginSettings::setArray(const QString &prefix, const QList > &hashList) { Q_D(PluginSettings); d->mSettings->beginGroup(d->fullPrefix()); d->mSettings->beginWriteArray(prefix); int size = hashList.size(); for (int i = 0; i < size; ++i) { d->mSettings->setArrayIndex(i); QMapIterator it(hashList.at(i)); while (it.hasNext()) { it.next(); d->mSettings->setValue(it.key(), it.value()); } } d->mSettings->endArray(); d->mSettings->endGroup(); emit settingsChanged(); } void PluginSettings::clear() { Q_D(PluginSettings); d->mSettings->beginGroup(d->mGroup); d->mSettings->clear(); d->mSettings->endGroup(); emit settingsChanged(); } void PluginSettings::sync() { Q_D(PluginSettings); d->mSettings->beginGroup(d->mGroup); d->mSettings->sync(); d->mOldSettings.loadFromSettings(); d->mSettings->endGroup(); emit settingsChanged(); } QStringList PluginSettings::allKeys() const { Q_D(const PluginSettings); d->mSettings->beginGroup(d->fullPrefix()); QStringList keys = d->mSettings->allKeys(); d->mSettings->endGroup(); return keys; } QStringList PluginSettings::childGroups() const { Q_D(const PluginSettings); d->mSettings->beginGroup(d->fullPrefix()); QStringList groups = d->mSettings->childGroups(); d->mSettings->endGroup(); return groups; } void PluginSettings::beginGroup(const QString &subGroup) { Q_D(PluginSettings); d->mSubGroups.append(subGroup); } void PluginSettings::endGroup() { Q_D(PluginSettings); if (!d->mSubGroups.empty()) d->mSubGroups.removeLast(); } void PluginSettings::loadFromCache() { Q_D(PluginSettings); d->mSettings->beginGroup(d->mGroup); d->mOldSettings.loadToSettings(); d->mSettings->endGroup(); } PluginSettings* PluginSettingsFactory::create(UKUi::Settings *settings, const QString &group, QObject *parent/* = nullptr*/) { return new PluginSettings{settings, group, parent}; } ukui-panel-4.0.0.4/panel/ukuipanelapplication_p.h0000644000175000017500000000247114560306203020362 0ustar fengfeng/* * Copyright (C) 2016 Luís Pereira * Copyright (C) 2019 Tianjin KYLIN Information Technology Co., Ltd. * * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #ifndef UKUIPanelAPPLICATION_P_H #define UKUIPanelAPPLICATION_P_H #include "ukuipanelapplication.h" namespace UKUi { class Settings; } class UKUIPanelApplicationPrivate { Q_DECLARE_PUBLIC(UKUIPanelApplication) public: UKUIPanelApplicationPrivate(UKUIPanelApplication *q); ~UKUIPanelApplicationPrivate() {}; UKUi::Settings *mSettings; private: UKUIPanelApplication *const q_ptr; }; #endif // UKUIPanelAPPLICATION_P_H ukui-panel-4.0.0.4/panel/common/0000755000175000017500000000000014560306221014735 5ustar fengfengukui-panel-4.0.0.4/panel/common/ukuiplugininfo.h0000644000175000017500000000764014560306203020165 0ustar fengfeng/* BEGIN_COMMON_COPYRIGHT_HEADER * (c)LGPL2+ * * Copyright: 2010-2011 Razor team * Authors: * Alexander Sokoloff * * Copyright: 2019 Tianjin KYLIN Information Technology Co., Ltd. * * * This program or library is free software; you can redistribute it * and/or modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * You should have received a copy of the GNU Lesser General * Public License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA * * END_COMMON_COPYRIGHT_HEADER */ #ifndef UKUIPLUGININFO_H #define UKUIPLUGININFO_H #include #include #include #include #include #include "ukuiglobals.h" #include class QLibrary; namespace UKUi { /*! Every plugin needs a .desktop file that describes it. The basename of this file must be same as the basename of the plugin library. ukuipanel_clock2.desktop file [Desktop Entry] Type=Service ServiceTypes=UKUiPanel/Plugin Name=Clock Comment=Clock and calendar PluginInfo class gives the interface for reading the values from the plugin .desktop file. This is a pure virtual class, you must implement libraryDir(), translationDir(), and instance() methods. */ class UKUI_API PluginInfo: public XdgDesktopFile { public: /// Constructs a PluginInfo object for accessing the info stored in the .desktop file. explicit PluginInfo(); //! Reimplemented from XdgDesktopFile. virtual bool load(const QString& fileName); //! Reimplemented from XdgDesktopFile. //PluginInfo& operator=(const PluginInfo& other); //! Returns identification string of this plugin, identified plugin type. Now id is part of the filename. QString id() const { return m_id; } //! This function is provided for convenience. It's equivalent to calling value("ServiceTypes").toString(). QString serviceType() const { return value(QL1S("ServiceTypes")).toString(); } //! Reimplemented from XdgDesktopFile. virtual bool isValid() const; /*! Loads the library and returns QLibrary object if the library was loaded successfully; otherwise returns 0. @parm libDir directory where placed the plugin .so file. */ QLibrary* loadLibrary(const QString& libDir) const; /*! Returns a list of PluginInfo objects for the matched files in the directories. @param desktopFilesDirs - scanned directories names. @param serviceType - type of the plugin, for example "UKUiPanel/Plugin". @param nameFilter - wildcard filter that understands * and ? wildcards. If the same filename is located under multiple directories only the first file should be used. */ static QList search(const QStringList& desktopFilesDirs, const QString& serviceType, const QString& nameFilter = QLatin1String("*")); /// This function is provided for convenience. It's equivalent to new calling search(QString(desktopFilesDir), serviceType, nameFilter) static QList search(const QString& desktopFilesDir, const QString& serviceType, const QString& nameFilter = QLatin1String("*")); private: QString m_id; }; typedef QList PluginInfoList; } // namespace UKUi QDebug operator<<(QDebug dbg, const UKUi::PluginInfo& pi); QDebug operator<<(QDebug dbg, const UKUi::PluginInfo* const pi); QDebug operator<<(QDebug dbg, const UKUi::PluginInfoList& list); QDebug operator<<(QDebug dbg, const UKUi::PluginInfoList* const pluginInfoList); #endif // UKUIPLUGININFO_H ukui-panel-4.0.0.4/panel/common/ukuisettings.h0000644000175000017500000001524414560306203017652 0ustar fengfeng/* BEGIN_COMMON_COPYRIGHT_HEADER * (c)LGPL2+ * * Copyright: 2010-2011 Razor team * Authors: * Alexander Sokoloff * * Copyright: 2019 Tianjin KYLIN Information Technology Co., Ltd. * * * This program or library is free software; you can redistribute it * and/or modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * You should have received a copy of the GNU Lesser General * Public License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA * * END_COMMON_COPYRIGHT_HEADER */ #ifndef UKUISETTINGS_H #define UKUISETTINGS_H #include #include #include #include "ukuiglobals.h" class QEvent; namespace UKUi { class SettingsPrivate; class GlobalSettings; /*! \brief User settings handling */ class UKUI_API Settings : public QSettings { Q_OBJECT public: /*! \brief Constructs a Settings object for accessing settings of the module called module, and with parent parent. Settings can be accessed using the standard interface provided by QSettings, but it also provides some convenience functions and signals. \param module a base name of the config file. It's a name without the extension. For example: if you want to open settings for panel create it as Settings("panel"). The function will create all parent directories necessary to create the file. \param parent It's no need to delete this class manually if it's set. */ explicit Settings(const QString& module, QObject* parent = 0); //explicit Settings(QObject* parent=0); explicit Settings(const QSettings* parentSettings, const QString& subGroup, QObject* parent=0); explicit Settings(const QSettings& parentSettings, const QString& subGroup, QObject* parent=0); Settings(const QString &fileName, QSettings::Format format, QObject *parent = 0); ~Settings(); static const GlobalSettings *globalSettings(); /*! Returns the localized value for key. In the desktop file keys may be postfixed by [LOCALE]. If the localized value doesn't exist, returns non lokalized value. If non localized value doesn't exist, returns defaultValue. LOCALE must be of the form lang_COUNTRY.ENCODING@MODIFIER, where _COUNTRY, .ENCODING, and @MODIFIER may be omitted. If no default value is specified, a default QVariant is returned. */ QVariant localizedValue(const QString& key, const QVariant& defaultValue = QVariant()) const; /*! Sets the value of setting key to value. If a localized version of the key already exists, the previous value is overwritten. Otherwise, it overwrites the the un-localized version. */ void setLocalizedValue(const QString &key, const QVariant &value); Q_SIGNALS: /*! /brief signal for backward compatibility (emitted whenever settingsChangedFromExternal() or settingsChangedByApp() is emitted) */ void settingsChanged(); /*! /brief signal emitted when the settings file is changed by external application */ void settingsChangedFromExternal(); /*! /brief signal emitted when any setting is changed by this object */ void settingsChangedByApp(); protected: bool event(QEvent *event); protected Q_SLOTS: /*! Called when the config file is changed */ virtual void fileChanged(); private Q_SLOTS: void _fileChanged(QString path); private: void addWatchedFile(QString const & path); private: Q_DISABLE_COPY(Settings) SettingsPrivate* const d_ptr; Q_DECLARE_PRIVATE(Settings) }; class UKUiThemeData; /*! \brief QSS theme handling */ class UKUI_API UKUiTheme { public: /// Constructs a null theme. UKUiTheme(); /*! Constructs an theme from the dir with the given path. If path not absolute (i.e. the theme name only) the relevant dir must be found relative to the $XDG_DATA_HOME + $XDG_DATA_DIRS directories. */ UKUiTheme(const QString &path); /// Constructs a copy of other. This is very fast. UKUiTheme(const UKUiTheme &other); UKUiTheme& operator=(const UKUiTheme &other); ~UKUiTheme(); /// Returns the name of the theme. QString name() const; QString path() const; QString previewImage() const; /// Returns true if this theme is valid; otherwise returns false. bool isValid() const; /*! \brief Returns StyleSheet text (not file name, but real text) of the module called module. Paths in url() C/QSS functions are parsed to be real values for the theme, relative to full path */ QString qss(const QString& module) const; /*! \brief A full path to image used as a wallpaper \param screen is an ID of the screen like in Qt. -1 means default (any) screen. Any other value greater than -1 is the exact screen (in dualhead). In themes the index starts from 1 (ix 1 means 1st screen). \retval QString a file name (including path). */ QString desktopBackground(int screen=-1) const; /// Returns the current ukui theme. static const UKUiTheme ¤tTheme(); /// Returns the all themes found in the system. static QList allThemes(); private: static UKUiTheme* m_instance; QSharedDataPointer d; }; /*! A global pointer referring to the unique UKUiTheme object. It is equivalent to the pointer returned by the UKUiTheme::instance() function. Only one theme object can be created. !*/ #define ukuiTheme UKUiTheme::currentTheme() class UKUI_API SettingsCache { public: explicit SettingsCache(QSettings &settings); explicit SettingsCache(QSettings *settings); virtual ~SettingsCache() {} void loadFromSettings(); void loadToSettings(); private: QSettings &m_settings; QHash m_cache; }; class GlobalSettingsPrivate; class GlobalSettings: public Settings { Q_OBJECT public: GlobalSettings(); ~GlobalSettings(); Q_SIGNALS: /// Signal emitted when the icon theme has changed. void iconThemeChanged(); /// Signal emitted when the ukui theme has changed. void ukuiThemeChanged(); protected Q_SLOTS: void fileChanged(); private: GlobalSettingsPrivate* const d_ptr; Q_DECLARE_PRIVATE(GlobalSettings) }; } // namespace UKUi #endif // UKUISETTINGS_H ukui-panel-4.0.0.4/panel/common/ukuisettings.cpp0000644000175000017500000005114114560306203020201 0ustar fengfeng/* BEGIN_COMMON_COPYRIGHT_HEADER * (c)LGPL2+ * * Copyright: 2010-2011 Razor team * Authors: * Alexander Sokoloff * Petr Vanek * * Copyright: 2019 Tianjin KYLIN Information Technology Co., Ltd. * * * This program or library is free software; you can redistribute it * and/or modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * You should have received a copy of the GNU Lesser General * Public License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA * * END_COMMON_COPYRIGHT_HEADER */ #include "ukuisettings.h" #include #include #include #include #include #include #include #include #include #include #if QT_VERSION < QT_VERSION_CHECK(5, 6, 0) #include #endif using namespace UKUi; class UKUi::SettingsPrivate { public: SettingsPrivate(Settings* parent, bool useXdgFallback): mFileChangeTimer(0), mAppChangeTimer(0), mAddWatchTimer(0), mParent(parent) { // HACK: we need to ensure that the user (~/.config/ukui/.conf) // exists to have functional mWatcher if (!mParent->contains(QL1S("__userfile__"))) { mParent->setValue(QL1S("__userfile__"), true); #if defined(WITH_XDG_DIRS_FALLBACK) if (useXdgFallback) { //Note: Qt doesn't support the xdg spec regarding the XDG_CONFIG_DIRS //https://bugreports.qt.io/browse/QTBUG-34919 //(Partial) workaround: if the the user specific config file doesn't exist //we try to find some system-wide configuration file and copy all settings into //the user specific file const QString org = mParent->organizationName(); const QString file_name = QFileInfo{mParent->fileName()}.fileName(); QStringList dirs = XdgDirs::configDirs(); #if QT_VERSION < QT_VERSION_CHECK(5, 6, 0) std::reverse(dirs.begin(), dirs.end()); for (auto dir_i = dirs.begin(), dir_e = dirs.end(); dir_i != dir_e; ++dir_i) #else // QT_VERSION for (auto dir_i = dirs.rbegin(), dir_e = dirs.rend(); dir_i != dir_e; ++dir_i) #endif { QDir dir{*dir_i}; if (dir.cd(mParent->organizationName()) && dir.exists(file_name)) { QSettings system_settings{dir.absoluteFilePath(file_name), QSettings::IniFormat}; const QStringList keys = system_settings.allKeys(); for (const QString & key : keys) { mParent->setValue(key, system_settings.value(key)); } } } } #endif mParent->sync(); } mWatcher.addPath(mParent->fileName()); QObject::connect(&(mWatcher), &QFileSystemWatcher::fileChanged, mParent, &Settings::_fileChanged); } QString localizedKey(const QString& key) const; QFileSystemWatcher mWatcher; int mFileChangeTimer; int mAppChangeTimer; int mAddWatchTimer; private: Settings* mParent; }; UKUiTheme* UKUiTheme::m_instance = 0; class UKUi::UKUiThemeData: public QSharedData { public: UKUiThemeData(): mValid(false) {} QString loadQss(const QString& qssFile) const; QString findTheme(const QString &themeName); QString mName; QString mPath; QString mPreviewImg; bool mValid; }; class UKUi::GlobalSettingsPrivate { public: GlobalSettingsPrivate(GlobalSettings *parent): mParent(parent), mThemeUpdated(0ull) { } GlobalSettings *mParent; QString mIconTheme; QString mUKUiTheme; qlonglong mThemeUpdated; }; /************************************************ ************************************************/ Settings::Settings(const QString& module, QObject* parent) : QSettings(QL1S("ukui"), module, parent), d_ptr(new SettingsPrivate(this, true)) { this->setIniCodec(QTextCodec::codecForName("UTF-8")); } /************************************************ ************************************************/ Settings::Settings(const QString &fileName, QSettings::Format format, QObject *parent): QSettings(fileName, format, parent), d_ptr(new SettingsPrivate(this, false)) { } /************************************************ ************************************************/ Settings::Settings(const QSettings* parentSettings, const QString& subGroup, QObject* parent): QSettings(parentSettings->organizationName(), parentSettings->applicationName(), parent), d_ptr(new SettingsPrivate(this, false)) { beginGroup(subGroup); } /************************************************ ************************************************/ Settings::Settings(const QSettings& parentSettings, const QString& subGroup, QObject* parent): QSettings(parentSettings.organizationName(), parentSettings.applicationName(), parent), d_ptr(new SettingsPrivate(this, false)) { beginGroup(subGroup); } /************************************************ ************************************************/ Settings::~Settings() { // because in the Settings::Settings(const QString& module, QObject* parent) // constructor there is no beginGroup() called... if (!group().isEmpty()) endGroup(); delete d_ptr; } bool Settings::event(QEvent *event) { if (event->type() == QEvent::UpdateRequest) { // delay the settingsChanged* signal emitting for: // - checking in _fileChanged // - merging emitting the signals if(d_ptr->mAppChangeTimer) killTimer(d_ptr->mAppChangeTimer); d_ptr->mAppChangeTimer = startTimer(100); } else if (event->type() == QEvent::Timer) { const int timer = static_cast(event)->timerId(); killTimer(timer); if (timer == d_ptr->mFileChangeTimer) { d_ptr->mFileChangeTimer = 0; fileChanged(); // invoke the real fileChanged() handler. } else if (timer == d_ptr->mAppChangeTimer) { d_ptr->mAppChangeTimer = 0; // do emit the signals emit settingsChangedByApp(); emit settingsChanged(); } else if (timer == d_ptr->mAddWatchTimer) { d_ptr->mAddWatchTimer = 0; //try to re-add filename for watching addWatchedFile(fileName()); } } return QSettings::event(event); } void Settings::fileChanged() { sync(); emit settingsChangedFromExternal(); emit settingsChanged(); } void Settings::_fileChanged(QString path) { // check if the file isn't changed by our logic // FIXME: this is poor implementation; should we rather compute some hash of values if changed by external? if (0 == d_ptr->mAppChangeTimer) { // delay the change notification for 100 ms to avoid // unnecessary repeated loading of the same config file if // the file is changed for several times rapidly. if(d_ptr->mFileChangeTimer) killTimer(d_ptr->mFileChangeTimer); d_ptr->mFileChangeTimer = startTimer(1000); } addWatchedFile(path); } void Settings::addWatchedFile(QString const & path) { // D*mn! yet another Qt 5.4 regression!!! // See the bug report: https://github.com/ukui/ukui/issues/441 // Since Qt 5.4, QSettings uses QSaveFile to save the config files. // https://github.com/qtproject/qtbase/commit/8d15068911d7c0ba05732e2796aaa7a90e34a6a1#diff-e691c0405f02f3478f4f50a27bdaecde // QSaveFile will save the content to a new temp file, and replace the old file later. // Hence the existing config file is not changed. Instead, it's deleted and then replaced. // This new behaviour unfortunately breaks QFileSystemWatcher. // After file deletion, we can no longer receive any new change notifications. // The most ridiculous thing is, QFileSystemWatcher does not provide a // way for us to know if a file is deleted. WT*? // Luckily, I found a workaround: If the file path no longer exists // in the watcher's files(), this file is deleted. if(!d_ptr->mWatcher.files().contains(path)) // in some situations adding fails because of non-existing file (e.g. editting file in external program) if (!d_ptr->mWatcher.addPath(path) && 0 == d_ptr->mAddWatchTimer) d_ptr->mAddWatchTimer = startTimer(100); } /************************************************ ************************************************/ const GlobalSettings *Settings::globalSettings() { static QMutex mutex; static GlobalSettings *instance = 0; if (!instance) { mutex.lock(); if (!instance) instance = new GlobalSettings(); mutex.unlock(); } return instance; } /************************************************ LC_MESSAGES value Possible keys in order of matching lang_COUNTRY@MODIFIER lang_COUNTRY@MODIFIER, lang_COUNTRY, lang@MODIFIER, lang, default value lang_COUNTRY lang_COUNTRY, lang, default value lang@MODIFIER lang@MODIFIER, lang, default value lang lang, default value ************************************************/ QString SettingsPrivate::localizedKey(const QString& key) const { QString lang = QString::fromLocal8Bit(qgetenv("LC_MESSAGES")); if (lang.isEmpty()) lang = QString::fromLocal8Bit(qgetenv("LC_ALL")); if (lang.isEmpty()) lang = QString::fromLocal8Bit(qgetenv("LANG")); QString modifier = lang.section(QL1C('@'), 1); if (!modifier.isEmpty()) lang.truncate(lang.length() - modifier.length() - 1); QString encoding = lang.section(QL1C('.'), 1); if (!encoding.isEmpty()) lang.truncate(lang.length() - encoding.length() - 1); QString country = lang.section(QL1C('_'), 1); if (!country.isEmpty()) lang.truncate(lang.length() - country.length() - 1); //qDebug() << "LC_MESSAGES: " << getenv("LC_MESSAGES"); //qDebug() << "Lang:" << lang; //qDebug() << "Country:" << country; //qDebug() << "Encoding:" << encoding; //qDebug() << "Modifier:" << modifier; if (!modifier.isEmpty() && !country.isEmpty()) { QString k = QString::fromLatin1("%1[%2_%3@%4]").arg(key, lang, country, modifier); //qDebug() << "\t try " << k << mParent->contains(k); if (mParent->contains(k)) return k; } if (!country.isEmpty()) { QString k = QString::fromLatin1("%1[%2_%3]").arg(key, lang, country); //qDebug() << "\t try " << k << mParent->contains(k); if (mParent->contains(k)) return k; } if (!modifier.isEmpty()) { QString k = QString::fromLatin1("%1[%2@%3]").arg(key, lang, modifier); //qDebug() << "\t try " << k << mParent->contains(k); if (mParent->contains(k)) return k; } QString k = QString::fromLatin1("%1[%2]").arg(key, lang); //qDebug() << "\t try " << k << mParent->contains(k); if (mParent->contains(k)) return k; //qDebug() << "\t try " << key << mParent->contains(key); return key; } /************************************************ ************************************************/ QVariant Settings::localizedValue(const QString& key, const QVariant& defaultValue) const { Q_D(const Settings); return value(d->localizedKey(key), defaultValue); } /************************************************ ************************************************/ void Settings::setLocalizedValue(const QString &key, const QVariant &value) { Q_D(const Settings); setValue(d->localizedKey(key), value); } /************************************************ ************************************************/ UKUiTheme::UKUiTheme(): d(new UKUiThemeData) { } /************************************************ ************************************************/ UKUiTheme::UKUiTheme(const QString &path): d(new UKUiThemeData) { if (path.isEmpty()) return; QFileInfo fi(path); if (fi.isAbsolute()) { d->mPath = path; d->mName = fi.fileName(); d->mValid = fi.isDir(); } else { d->mName = path; d->mPath = d->findTheme(path); d->mValid = !(d->mPath.isEmpty()); } if (QDir(path).exists(QL1S("preview.png"))) d->mPreviewImg = path + QL1S("/preview.png"); } /************************************************ ************************************************/ QString UKUiThemeData::findTheme(const QString &themeName) { if (themeName.isEmpty()) return QString(); QStringList paths; QLatin1String fallback(UKUI_INSTALL_PREFIX); paths << XdgDirs::dataHome(false); paths << XdgDirs::dataDirs(); if (!paths.contains(fallback)) paths << fallback; #if (QT_VERSION < QT_VERSION_CHECK(5,7,0)) for(int i=0;imValid; } /************************************************ ************************************************/ QString UKUiTheme::name() const { return d->mName; } /************************************************ ************************************************/ QString UKUiTheme::path() const { return d->mPath; } /************************************************ ************************************************/ QString UKUiTheme::previewImage() const { return d->mPreviewImg; } /************************************************ ************************************************/ QString UKUiTheme::qss(const QString& module) const { return d->loadQss(QStringLiteral("%1/%2.qss").arg(d->mPath, module)); } /************************************************ ************************************************/ QString UKUiThemeData::loadQss(const QString& qssFile) const { QFile f(qssFile); if (! f.open(QIODevice::ReadOnly | QIODevice::Text)) { return QString(); } QString qss = QString::fromLocal8Bit(f.readAll()); f.close(); if (qss.isEmpty()) return QString(); // handle relative paths QString qssDir = QFileInfo(qssFile).canonicalPath(); qss.replace(QRegExp(QL1S("url.[ \\t\\s]*"), Qt::CaseInsensitive, QRegExp::RegExp2), QL1S("url(") + qssDir + QL1C('/')); return qss; } /************************************************ ************************************************/ QString UKUiTheme::desktopBackground(int screen) const { QString wallpaperCfgFileName = QString::fromLatin1("%1/wallpaper.cfg").arg(d->mPath); if (wallpaperCfgFileName.isEmpty()) return QString(); QSettings s(wallpaperCfgFileName, QSettings::IniFormat); QString themeDir = QFileInfo(wallpaperCfgFileName).absolutePath(); // There is something strange... If I remove next line the wallpapers array is not found... s.childKeys(); s.beginReadArray(QL1S("wallpapers")); s.setArrayIndex(screen - 1); if (s.contains(QL1S("file"))) return QString::fromLatin1("%1/%2").arg(themeDir, s.value(QL1S("file")).toString()); s.setArrayIndex(0); if (s.contains(QL1S("file"))) return QString::fromLatin1("%1/%2").arg(themeDir, s.value(QL1S("file")).toString()); return QString(); } /************************************************ ************************************************/ const UKUiTheme &UKUiTheme::currentTheme() { static UKUiTheme theme; QString name = Settings::globalSettings()->value(QL1S("theme")).toString(); if (theme.name() != name) { theme = UKUiTheme(name); } return theme; } /************************************************ ************************************************/ QList UKUiTheme::allThemes() { QList ret; QSet processed; QStringList paths; paths << XdgDirs::dataHome(false); paths << XdgDirs::dataDirs(); #if (QT_VERSION < QT_VERSION_CHECK(5,7,0)) for(int i=0;i::const_iterator i = m_cache.constBegin(); while(i != m_cache.constEnd()) { m_settings.setValue(i.key(), i.value()); ++i; } m_settings.sync(); } /************************************************ ************************************************/ GlobalSettings::GlobalSettings(): Settings(QL1S("ukui")), d_ptr(new GlobalSettingsPrivate(this)) { /*ukui-control-center change the theme rather than panel*/ /* if (value(QL1S("icon_theme")).toString().isEmpty()) { qWarning() << QString::fromLatin1("Icon Theme not set. Fallbacking to Oxygen, if installed"); const QString fallback(QLatin1String("oxygen")); const QDir dir(QLatin1String(UKUI_DATA_DIR) + QLatin1String("/icons")); if (dir.exists(fallback)) { setValue(QL1S("icon_theme"), fallback); sync(); } else { qWarning() << QString::fromLatin1("Fallback Icon Theme (Oxygen) not found"); } } fileChanged(); */ } GlobalSettings::~GlobalSettings() { delete d_ptr; } /************************************************ ************************************************/ void GlobalSettings::fileChanged() { /*ukcc change the theme rather than panel*/ /* Q_D(GlobalSettings); sync(); QString it = value(QL1S("icon_theme")).toString(); if (d->mIconTheme != it) { emit iconThemeChanged(); } QString rt = value(QL1S("theme")).toString(); qlonglong themeUpdated = value(QL1S("__theme_updated__")).toLongLong(); if ((d->mUKUiTheme != rt) || (d->mThemeUpdated != themeUpdated)) { d->mUKUiTheme = rt; emit ukuiThemeChanged(); } emit settingsChangedFromExternal(); emit settingsChanged(); */ } ukui-panel-4.0.0.4/panel/common/CMakeLists.txt0000644000175000017500000001431614560306203017502 0ustar fengfeng set(UKUIBT_MINIMUM_VERSION "0.6.0") set(KF5_MINIMUM_VERSION "5.36.0") set(QT_MINIMUM_VERSION "5.7.1") set(QTXDG_MINIMUM_VERSION "3.3.1") # Major UKUi Version, belong to all components set(UKUI_MAJOR_VERSION 0) # Minor UKUi Version, belong to all components set(UKUI_MINOR_VERSION 14) # # Patch Version, belong *only* to the component # UKUi is 0.13 - libukui is at patch version 0 # The official UKUi version will follow libukui. # # In a perfect world all components would have the same major- and minor- and # patch-version as libukui - in real life it will be fine if every component # has it's own patch version within a major/minor life cyle. # set(UKUI_PATCH_VERSION 1) set(UKUI_VERSION ${UKUI_MAJOR_VERSION}.${UKUI_MINOR_VERSION}.${UKUI_PATCH_VERSION}) option(UPDATE_TRANSLATIONS "Update source translation translations/*.ts files" OFF) #find_package(ukui-build-tools ${UKUIBT_MINIMUM_VERSION} REQUIRED) #find_package(Qt5 ${QT_MINIMUM_VERSION} CONFIG REQUIRED Widgets DBus X11Extras LinguistTools) #find_package(Qt5Xdg ${QTXDG_MINIMUM_VERSION} REQUIRED) #find_package(KF5WindowSystem ${KF5_MINIMUM_VERSION} REQUIRED) #find_package(PolkitQt5-1 REQUIRED) #find_package(X11 REQUIRED) message(STATUS "Building ${PROJECT_NAME} with Qt ${Qt5Core_VERSION}") include(CMakePackageConfigHelpers) include(GNUInstallDirs) # Standard directories for installation set(UKUI_PKG_CONFIG_DESCRIPTION "Shared library for UKUi applications") set(HEADERS ukuisettings.h ukuiplugininfo.h ukuitranslator.h ukuigridlayout.h ukuiglobals.h ) set(PUBLIC_CLASSES Settings PluginInfo Application SingleApplication Translator PageSelectWidget GridLayout Globals ) set(SOURCES ukuiplugininfo.cpp ukuisettings.cpp ukuitranslator.cpp ukuiprogramfinder.cpp ukuigridlayout.cpp ) set(MOCS ukuisettings.h ukuiscreensaver.h ukuiapplication.h ukuigridlayout.h ) set(FORMS configdialog/ukuiconfigdialog.ui ) file(GLOB UKUI_CONFIG_FILES resources/*.conf) set_property(SOURCE ${DBUS_INTERFACE_SRCS} ${DBUS_ADAPTOR_SRCS} PROPERTY SKIP_AUTOGEN ON) list(APPEND SOURCES "${DBUS_INTERFACE_SRCS}" "${DBUS_ADAPTOR_SRCS}") # KF5WindowSystem is missing here. KF5WindowSystem doesn't provide an .pc file. set(UKUI_PKG_CONFIG_REQUIRES "Qt5Xdg >= ${QTXDG_MINIMUM_VERSION}, Qt5Widgets >= ${QT_MINIMUM_VERSION}, Qt5Xml >= ${QT_MINIMUM_VERSION}, Qt5DBus >= ${QT_MINIMUM_VERSION}, Qt5X11Extras >= ${QT_MINIMUM_VERSION}") # Standard directories for installation include(../../cmake/ukui-build-tools/modules/UKUiPreventInSourceBuilds.cmake) include(../../cmake/ukui-build-tools/modules/UKUiCompilerSettings.cmake) include(../../cmake/ukui-build-tools/modules/UKUiCreatePkgConfigFile.cmake) include(../../cmake/ukui-build-tools/modules/UKUiCreatePortableHeaders.cmake) include(../../cmake/ukui-build-tools/modules/UKUiConfigVars.cmake) set(UKUI_INTREE_INCLUDE_DIR "${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/include") set(UKUI_INSTALL_INCLUDE_DIR "${CMAKE_INSTALL_FULL_INCLUDEDIR}/${UKUI_LIBRARY_NAME}") set(UKUI_INSTALL_CMAKE_DIR "${CMAKE_INSTALL_FULL_DATAROOTDIR}/cmake") ## Translations #include(../cmake/ukui-build-tools/modules/UKUiTranslateTs.cmake) #ukui_translate_ts(QM_FILES # UPDATE_TRANSLATIONS # ${UPDATE_TRANSLATIONS} # SOURCES # ${SRCS} # ${FORMS} # INSTALL_DIR # "${UKUI_TRANSLATIONS_DIR}/${PROJECT_NAME}" #) message(STATUS "") message(STATUS "libukui version: ${UKUI_VERSION}") message(STATUS "") # Copy public headers foreach(h ${HEADERS}) get_filename_component(bh ${h} NAME) configure_file(${h} "${UKUI_INTREE_INCLUDE_DIR}/UKUi/${bh}" COPYONLY) endforeach() # Create the portable headers ukui_create_portable_headers(INTREE_PORTABLE_HEADERS NAME_PREFIX "ukui" OUTPUT_DIR "${UKUI_INTREE_INCLUDE_DIR}/UKUi" HEADER_NAMES ${PUBLIC_CLASSES} ) #check_portable_headers(H_FILES ${PUB_HDRS} LINKS "${INTREE_PORTABLE_HEADERS}") #************************************************ # Create in-tree build infrastructure #************************************************ set(CFG_UKUI_TARGETS_FILE "${UKUI_INTREE_TARGETS_FILE}") configure_package_config_file( "${CMAKE_CURRENT_SOURCE_DIR}/cmake/ukui-config.cmake.in" "${CMAKE_BINARY_DIR}/${UKUI_LIBRARY_NAME}-config.cmake" INSTALL_DESTINATION "neverland" # required, altough we don't install it ) #************************************************ # Create installable build infrastructure #************************************************ set(CFG_UKUI_TARGETS_FILE "${UKUI_INSTALL_CMAKE_DIR}/${UKUI_LIBRARY_NAME}/${UKUI_LIBRARY_NAME}-targets.cmake") #install(EXPORT # ${UKUI_LIBRARY_NAME}-targets # DESTINATION "${CMAKE_INSTALL_DATADIR}/cmake/${UKUI_LIBRARY_NAME}" # COMPONENT Devel #) if (Qt5Core_VERSION VERSION_LESS "5.9.0") if (NOT DEFINED WITH_XDG_DIRS_FALLBACK) set(WITH_XDG_DIRS_FALLBACK ON) endif () elseif (WITH_XDG_DIRS_FALLBACK) set(WITH_XDG_DIRS_FALLBACK OFF) message(WARNING "Disabling requested WITH_XDG_DIRS_FALLBACK workaround, as proper implementation is in Qt from v5.9.0") endif () if (WITH_XDG_DIRS_FALLBACK) message(STATUS "Building with homemade QSettings XDG fallback workaround") setByDefault(CUSTOM_QT_5_12_VERSION Yes) if (CUSTOM_QT_5_12_VERSION ) #target_compile_definitions(${UKUI_LIBRARY_NAME} #PRIVATE "WITH_XDG_DIRS_FALLBACK" #) endif(CUSTOM_QT_5_12_VERSION) endif () #install(FILES # ${PUB_HDRS} # DESTINATION "${UKUI_INSTALL_INCLUDE_DIR}/UKUi" # COMPONENT Devel #) #install(FILES # ${INTREE_PORTABLE_HEADERS} # DESTINATION "${UKUI_INSTALL_INCLUDE_DIR}/UKUi" # COMPONENT Devel #) #install(FILES ${UKUI_CONFIG_FILES} # DESTINATION "${CMAKE_INSTALL_FULL_DATADIR}/ukui" # COMPONENT Runtime #) #install(FILES ${POLKIT_FILES} DESTINATION "${POLKITQT-1_POLICY_FILES_INSTALL_DIR}") #************************************************ # Create and install pkgconfig file #************************************************ ukui_create_pkgconfig_file( PACKAGE_NAME ${UKUI_LIBRARY_NAME} DESCRIPTIVE_NAME ${UKUI_LIBRARY_NAME} DESCRIPTION ${UKUI_PKG_CONFIG_DESCRIPTION} INCLUDEDIRS ${UKUI_LIBRARY_NAME} REQUIRES ${UKUI_PKG_CONFIG_REQUIRES} VERSION ${UKUI_VERSION} INSTALL ) #************************************************ ukui-panel-4.0.0.4/panel/common/ukuiplugininfo.cpp0000644000175000017500000001166214560306203020517 0ustar fengfeng/* BEGIN_COMMON_COPYRIGHT_HEADER * (c)LGPL2+ * * Copyright: 2010-2011 Razor team * Authors: * Alexander Sokoloff * * Copyright: 2019 Tianjin KYLIN Information Technology Co., Ltd. * * * This program or library is free software; you can redistribute it * and/or modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * You should have received a copy of the GNU Lesser General * Public License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA * * END_COMMON_COPYRIGHT_HEADER */ #include "ukuiplugininfo.h" #include #include #include #include #include #include #include using namespace UKUi; /************************************************ ************************************************/ PluginInfo::PluginInfo(): XdgDesktopFile() { } /************************************************ ************************************************/ bool PluginInfo::load(const QString& fileName) { XdgDesktopFile::load(fileName); m_id = QFileInfo(fileName).completeBaseName(); return isValid(); } /************************************************ ************************************************/ bool PluginInfo::isValid() const { return XdgDesktopFile::isValid(); } /************************************************ ************************************************/ QLibrary* PluginInfo::loadLibrary(const QString& libDir) const { const QFileInfo fi = QFileInfo(fileName()); const QString path = fi.canonicalPath(); const QString baseName = value(QL1S("X-UKUi-Library"), fi.completeBaseName()).toString(); const QString soPath = QDir(libDir).filePath(QString::fromLatin1("lib%2.so").arg(baseName)); QLibrary* library = new QLibrary(soPath); if (!library->load()) { qWarning() << QString::fromLatin1("Can't load plugin lib \"%1\"").arg(soPath) << library->errorString(); delete library; return 0; } const QString locale = QLocale::system().name(); QTranslator* translator = new QTranslator(library); translator->load(QString::fromLatin1("%1/%2/%2_%3.qm").arg(path, baseName, locale)); qApp->installTranslator(translator); return library; } /************************************************ ************************************************/ PluginInfoList PluginInfo::search(const QStringList& desktopFilesDirs, const QString& serviceType, const QString& nameFilter) { QList res; QSet processed; for (const QString &desktopFilesDir : desktopFilesDirs) { const QDir dir(desktopFilesDir); const QFileInfoList files = dir.entryInfoList(QStringList(nameFilter), QDir::Files | QDir::Readable); for (const QFileInfo &file : files) { if (processed.contains(file.fileName())) continue; processed << file.fileName(); PluginInfo item; item.load(file.canonicalFilePath()); if (item.isValid() && item.serviceType() == serviceType) res.append(item); } } return res; } /************************************************ ************************************************/ PluginInfoList PluginInfo::search(const QString& desktopFilesDir, const QString& serviceType, const QString& nameFilter) { return search(QStringList(desktopFilesDir), serviceType, nameFilter); } /************************************************ ************************************************/ QDebug operator<<(QDebug dbg, const UKUi::PluginInfo &pluginInfo) { dbg.nospace() << QString::fromLatin1("%1").arg(pluginInfo.id()); return dbg.space(); } /************************************************ ************************************************/ QDebug operator<<(QDebug dbg, const UKUi::PluginInfo * const pluginInfo) { return operator<<(dbg, *pluginInfo); } /************************************************ ************************************************/ QDebug operator<<(QDebug dbg, const PluginInfoList& list) { dbg.nospace() << QL1C('('); for (int i=0; iQString { char* p = func(); QString str(p); free(p); return str; } //查询desktop文件 #define UKUI_PANEL_DAEMON "org.ukui.panel.daemon" #define UKUI_PANEL_DAEMON_PATH "/convert/desktopwid" #define UKUI_PANEL_DAEMON_INTERFACE "org.ukui.panel.daemon" #define UKUI_PANEL_DAEMON_METHOD "WIDToDesktop" #define DESKTOP_FILE_PATH "/usr/share/applications/" #define ANDROID_DESKTOP_FILE_PATH "/.local/share/applications/" #define MAX_SIZE_OF_Thumb 16777215 #define PANEL_CONFIG_PATH "/usr/share/ukui/ukui-panel/panel-commission.ini" #endif // COMMON_H ukui-panel-4.0.0.4/panel/common/cmake/0000755000175000017500000000000014560306203016015 5ustar fengfengukui-panel-4.0.0.4/panel/common/cmake/ukui-config.cmake.in0000644000175000017500000000244114560306203021645 0ustar fengfeng# - Finds the ukui package @PACKAGE_INIT@ if (CMAKE_VERSION VERSION_LESS 3.0.2) message(FATAL_ERROR \"@PROJECT_NAME@ requires at least CMake version 3.0.2\") endif() include(CMakeFindDependencyMacro) find_dependency(Qt5Widgets @QT_MINIMUM_VERSION@) find_dependency(Qt5DBus @QT_MINIMUM_VERSION@) find_dependency(Qt5X11Extras @QT_MINIMUM_VERSION@) find_dependency(Qt5LinguistTools @QT_MINIMUM_VERSION@) find_dependency(Qt5Xdg @QTXDG_MINIMUM_VERSION@) find_dependency(KF5WindowSystem) #find_dependency(ukui-build-tools @UKUIBT_MINIMUM_VERSION@) #include(UKUiConfigVars) include(/usr/share/cmake/ukui-build-tools/modules/UKUiConfigVars.cmake) # - Set version informations set(UKUI_MAJOR_VERSION "@UKUI_MAJOR_VERSION@") set(UKUI_MINOR_VERSION "@UKUI_MINOR_VERSION@") set(UKUI_PATCH_VERSION "@UKUI_PATCH_VERSION@") set(UKUI_VERSION "@UKUI_VERSION@") add_definitions("-DUKUI_MAJOR_VERSION=\"${UKUI_MAJOR_VERSION}\"") add_definitions("-DUKUI_MINOR_VERSION=\"${UKUI_MINOR_VERSION}\"") add_definitions("-DUKUI_PATCH_VERSION=\"${UKUI_PATCH_VERSION}\"") add_definitions("-DUKUI_VERSION=\"${UKUI_VERSION}\"") if (NOT TARGET @UKUI_LIBRARY_NAME@) if (POLICY CMP0024) cmake_policy(SET CMP0024 NEW) endif() include("${CMAKE_CURRENT_LIST_DIR}/ukui-targets.cmake") endif() ukui-panel-4.0.0.4/panel/common/ukuitranslator.cpp0000644000175000017500000001506114560306203020533 0ustar fengfeng/* BEGIN_COMMON_COPYRIGHT_HEADER * (c)LGPL2+ * * Copyright: 2013 LXQt team * Authors: * Alexander Sokoloff Luís Pereira * * Copyright: 2019 Tianjin KYLIN Information Technology Co., Ltd. * * * This program or library is free software; you can redistribute it * and/or modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * You should have received a copy of the GNU Lesser General * Public License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA * * END_COMMON_COPYRIGHT_HEADER */ #include "ukuitranslator.h" #include #include #include #include #include #include #include #include #include using namespace UKUi; bool translate(const QString &name, const QString &owner = QString()); /************************************************ ************************************************/ QStringList *getSearchPaths() { static QStringList *searchPath = 0; if (searchPath == 0) { searchPath = new QStringList(); *searchPath << XdgDirs::dataDirs(QL1C('/') + QL1S(UKUI_RELATIVE_SHARE_TRANSLATIONS_DIR)); *searchPath << QL1S(UKUI_SHARE_TRANSLATIONS_DIR); searchPath->removeDuplicates(); } return searchPath; } /************************************************ ************************************************/ QStringList UKUi::Translator::translationSearchPaths() { return *(getSearchPaths()); } /************************************************ ************************************************/ void Translator::setTranslationSearchPaths(const QStringList &paths) { QStringList *p = getSearchPaths(); p->clear(); *p << paths; } /************************************************ ************************************************/ #if (QT_VERSION < QT_VERSION_CHECK(5,7,0)) bool translate(const QString &name, const QString &owner) { const QString locale = QLocale::system().name(); QTranslator *appTranslator = new QTranslator(qApp); QStringList *paths = getSearchPaths(); // for(const QString &path : qAsConst(*paths)) for(int i=0 ;i<(*paths).size();i++) { QStringList subPaths; if (!owner.isEmpty()) { subPaths << (*paths)[i] + QL1C('/') + owner + QL1C('/') + name; } else { subPaths << (*paths)[i] + QL1C('/') + name; subPaths << (*paths)[i]; } // for(const QString &p : qAsConst(subPaths)) for(int i=0;iload(name + QL1C('_') + locale, p)) { QCoreApplication::installTranslator(appTranslator); return true; } else if (locale == QLatin1String("C") || locale.startsWith(QLatin1String("en"))) { // English is the default. Even if there isn't an translation // file, we return true. It's translated anyway. delete appTranslator; return true; } } } // If we got here, no translation was loaded. appTranslator has no use. delete appTranslator; return false; } #endif #if (QT_VERSION >= QT_VERSION_CHECK(5,7,0)) bool translate(const QString &name, const QString &owner) { const QString locale = QLocale::system().name(); QTranslator *appTranslator = new QTranslator(qApp); QStringList *paths = getSearchPaths(); for(const QString &path : qAsConst(*paths)) { QStringList subPaths; if (!owner.isEmpty()) { subPaths << path + QL1C('/') + owner + QL1C('/') + name; } else { subPaths << path + QL1C('/') + name; subPaths << path; } for(const QString &p : qAsConst(subPaths)) { if (appTranslator->load(name + QL1C('_') + locale, p)) { QCoreApplication::installTranslator(appTranslator); return true; } else if (locale == QLatin1String("C") || locale.startsWith(QLatin1String("en"))) { // English is the default. Even if there isn't an translation // file, we return true. It's translated anyway. delete appTranslator; return true; } } } // If we got here, no translation was loaded. appTranslator has no use. delete appTranslator; return false; } #endif /************************************************ ************************************************/ bool Translator::translateApplication(const QString &applicationName) { const QString locale = QLocale::system().name(); QTranslator *qtTranslator = new QTranslator(qApp); if (qtTranslator->load(QL1S("qt_") + locale, QLibraryInfo::location(QLibraryInfo::TranslationsPath))) { qApp->installTranslator(qtTranslator); } else { delete qtTranslator; } if (!applicationName.isEmpty()) return translate(applicationName); else return translate(QFileInfo(QCoreApplication::applicationFilePath()).baseName()); } /************************************************ ************************************************/ bool Translator::translateLibrary(const QString &libraryName) { static QSet loadedLibs; if (loadedLibs.contains(libraryName)) return true; loadedLibs.insert(libraryName); return translate(libraryName); } bool Translator::translatePlugin(const QString &pluginName, const QString& type) { static QSet loadedPlugins; const QString fullName = type % QL1C('/') % pluginName; if (loadedPlugins.contains(fullName)) return true; loadedPlugins.insert(pluginName); return translate(pluginName, type); } static void loadSelfTranslation() { Translator::translateLibrary(QLatin1String("libukui")); } Q_COREAPP_STARTUP_FUNCTION(loadSelfTranslation) ukui-panel-4.0.0.4/panel/common/ukuitranslator.h0000644000175000017500000000470414560306203020202 0ustar fengfeng/* BEGIN_COMMON_COPYRIGHT_HEADER * (c)LGPL2+ * * Copyright: 2013 LXQt team * Authors: * Alexander Sokoloff Luís Pereira * * Copyright: 2019 Tianjin KYLIN Information Technology Co., Ltd. * * * This program or library is free software; you can redistribute it * and/or modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * You should have received a copy of the GNU Lesser General * Public License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA * * END_COMMON_COPYRIGHT_HEADER */ #ifndef UKUITRANSLATOR_H #define UKUITRANSLATOR_H #include #include "ukuiglobals.h" namespace UKUi { /** The Translator class provides internationalization support for application and librarioes. **/ class UKUI_API Translator { public: /** Returns a list of paths that the application will search translations files. **/ static QStringList translationSearchPaths(); /** Sets the list of directories to search translations. All existing paths will be deleted and the path list will consist of the paths given in paths. **/ static void setTranslationSearchPaths(const QStringList &paths); /** Loads translations for application. If applicationName is not specified, then basename of QCoreApplication::applicationFilePath() is used. Returns true if the translation is successfully loaded; otherwise returns false. **/ static bool translateApplication(const QString &applicationName = QString()); /** Loads translations for application. If applicationName is not specified, then basename of QCoreApplication::applicationFilePath() is used. Returns true if the translation is successfully loaded; otherwise returns false. **/ static bool translateLibrary(const QString &libraryName = QString()); static bool translatePlugin(const QString &pluginName, const QString& type); }; } // namespace UKUi #endif // UKUITRANSLATOR_H ukui-panel-4.0.0.4/panel/common/ukuigridlayout.cpp0000644000175000017500000004416514560306203020534 0ustar fengfeng/* BEGIN_COMMON_COPYRIGHT_HEADER * (c)LGPL2+ * * Copyright: 2012 Razor team * Authors: * Alexander Sokoloff * * Copyright: 2019 Tianjin KYLIN Information Technology Co., Ltd. * * * This program or library is free software; you can redistribute it * and/or modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * You should have received a copy of the GNU Lesser General * Public License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA * * END_COMMON_COPYRIGHT_HEADER */ #include "ukuigridlayout.h" #include #include #include #include using namespace UKUi; class UKUi::GridLayoutPrivate { public: GridLayoutPrivate(); ~GridLayoutPrivate(); QList mItems; int mRowCount; int mColumnCount; GridLayout::Direction mDirection; bool mIsValid; QSize mCellSizeHint; QSize mCellMaxSize; int mVisibleCount; GridLayout::Stretch mStretch; bool mAnimate; int mAnimatedItems; //!< counter of currently animated items void updateCache(); int rows() const; int cols() const; void setItemGeometry(QLayoutItem * item, QRect const & geometry); QSize mPrefCellMinSize; QSize mPrefCellMaxSize; QRect mOccupiedGeometry; }; namespace { class ItemMoveAnimation : public QVariantAnimation { public: static void animate(QLayoutItem * item, QRect const & geometry, UKUi::GridLayoutPrivate * layout) { ItemMoveAnimation* animation = new ItemMoveAnimation(item); animation->setStartValue(item->geometry()); animation->setEndValue(geometry); ++layout->mAnimatedItems; connect(animation, &QAbstractAnimation::finished, [=] { --layout->mAnimatedItems; Q_ASSERT(0 <= layout->mAnimatedItems); animation->deleteLater();}); animation->start(DeleteWhenStopped); } ItemMoveAnimation(QLayoutItem *item) : mItem(item) { setDuration(150); } void updateCurrentValue(const QVariant ¤t) { mItem->setGeometry(current.toRect()); } private: QLayoutItem* mItem; }; } /************************************************ ************************************************/ GridLayoutPrivate::GridLayoutPrivate() { mColumnCount = 0; mRowCount = 0; mDirection = GridLayout::LeftToRight; mIsValid = false; mVisibleCount = 0; mStretch = GridLayout::StretchHorizontal | GridLayout::StretchVertical; mAnimate = false; mAnimatedItems = 0; mPrefCellMinSize = QSize(0,0); mPrefCellMaxSize = QSize(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX); } /************************************************ ************************************************/ GridLayoutPrivate::~GridLayoutPrivate() { qDeleteAll(mItems); } /************************************************ ************************************************/ void GridLayoutPrivate::updateCache() { mCellSizeHint = QSize(0, 0); mCellMaxSize = QSize(0, 0); mVisibleCount = 0; const int N = mItems.count(); for (int i=0; i < N; ++i) { QLayoutItem *item = mItems.at(i); if (!item->widget() || item->widget()->isHidden()) continue; int h = qBound(item->minimumSize().height(), item->sizeHint().height(), item->maximumSize().height()); int w = qBound(item->minimumSize().width(), item->sizeHint().width(), item->maximumSize().width()); mCellSizeHint.rheight() = qMax(mCellSizeHint.height(), h); mCellSizeHint.rwidth() = qMax(mCellSizeHint.width(), w); mCellMaxSize.rheight() = qMax(mCellMaxSize.height(), item->maximumSize().height()); mCellMaxSize.rwidth() = qMax(mCellMaxSize.width(), item->maximumSize().width()); mVisibleCount++; #if 0 qDebug() << "-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-"; qDebug() << "item.min" << item->minimumSize().width(); qDebug() << "item.sz " << item->sizeHint().width(); qDebug() << "item.max" << item->maximumSize().width(); qDebug() << "w h" << w << h; qDebug() << "wid.sizeHint" << item->widget()->sizeHint(); qDebug() << "mCellSizeHint:" << mCellSizeHint; qDebug() << "mCellMaxSize: " << mCellMaxSize; qDebug() << "-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-"; #endif } mCellSizeHint.rwidth() = qBound(mPrefCellMinSize.width(), mCellSizeHint.width(), mPrefCellMaxSize.width()); mCellSizeHint.rheight()= qBound(mPrefCellMinSize.height(), mCellSizeHint.height(), mPrefCellMaxSize.height()); mIsValid = !mCellSizeHint.isEmpty(); } /************************************************ ************************************************/ int GridLayoutPrivate::rows() const { if (mRowCount) return mRowCount; if (!mColumnCount) return 1; return ceil(mVisibleCount * 1.0 / mColumnCount); } /************************************************ ************************************************/ int GridLayoutPrivate::cols() const { if (mColumnCount) return mColumnCount; int rows = mRowCount; if (!rows) rows = 1; return ceil(mVisibleCount * 1.0 / rows); } void GridLayoutPrivate::setItemGeometry(QLayoutItem * item, QRect const & geometry) { mOccupiedGeometry |= geometry; if (mAnimate) { ItemMoveAnimation::animate(item, geometry, this); } else { item->setGeometry(geometry); } } /************************************************ ************************************************/ GridLayout::GridLayout(QWidget *parent): QLayout(parent), d_ptr(new GridLayoutPrivate()) { } /************************************************ ************************************************/ GridLayout::~GridLayout() { delete d_ptr; } /************************************************ ************************************************/ void GridLayout::addItem(QLayoutItem *item) { d_ptr->mItems.append(item); } /************************************************ ************************************************/ QLayoutItem *GridLayout::itemAt(int index) const { Q_D(const GridLayout); if (index < 0 || index >= d->mItems.count()) return 0; return d->mItems.at(index); } /************************************************ ************************************************/ QLayoutItem *GridLayout::takeAt(int index) { Q_D(GridLayout); if (index < 0 || index >= d->mItems.count()) return 0; QLayoutItem *item = d->mItems.takeAt(index); return item; } /************************************************ ************************************************/ int GridLayout::count() const { Q_D(const GridLayout); return d->mItems.count(); } /************************************************ ************************************************/ void GridLayout::invalidate() { Q_D(GridLayout); d->mIsValid = false; QLayout::invalidate(); } /************************************************ ************************************************/ int GridLayout::rowCount() const { Q_D(const GridLayout); return d->mRowCount; } /************************************************ ************************************************/ void GridLayout::setRowCount(int value) { Q_D(GridLayout); if (d->mRowCount != value) { d->mRowCount = value; invalidate(); } } /************************************************ ************************************************/ int GridLayout::columnCount() const { Q_D(const GridLayout); return d->mColumnCount; } /************************************************ ************************************************/ void GridLayout::setColumnCount(int value) { Q_D(GridLayout); if (d->mColumnCount != value) { d->mColumnCount = value; invalidate(); } } /************************************************ ************************************************/ GridLayout::Direction GridLayout::direction() const { Q_D(const GridLayout); return d->mDirection; } /************************************************ ************************************************/ void GridLayout::setDirection(GridLayout::Direction value) { Q_D(GridLayout); if (d->mDirection != value) { d->mDirection = value; invalidate(); } } /************************************************ ************************************************/ GridLayout::Stretch GridLayout::stretch() const { Q_D(const GridLayout); return d->mStretch; } /************************************************ ************************************************/ void GridLayout::setStretch(Stretch value) { Q_D(GridLayout); if (d->mStretch != value) { d->mStretch = value; invalidate(); } } /************************************************ ************************************************/ void GridLayout::moveItem(int from, int to, bool withAnimation /*= false*/) { Q_D(GridLayout); d->mAnimate = withAnimation; d->mItems.move(from, to); invalidate(); } /************************************************ ************************************************/ bool GridLayout::animatedMoveInProgress() const { Q_D(const GridLayout); return 0 < d->mAnimatedItems; } /************************************************ ************************************************/ QSize GridLayout::cellMinimumSize() const { Q_D(const GridLayout); return d->mPrefCellMinSize; } /************************************************ ************************************************/ void GridLayout::setCellMinimumSize(QSize minSize) { Q_D(GridLayout); if (d->mPrefCellMinSize != minSize) { d->mPrefCellMinSize = minSize; invalidate(); } } /************************************************ ************************************************/ void GridLayout::setCellMinimumHeight(int value) { Q_D(GridLayout); if (d->mPrefCellMinSize.height() != value) { d->mPrefCellMinSize.setHeight(value); invalidate(); } } /************************************************ ************************************************/ void GridLayout::setCellMinimumWidth(int value) { Q_D(GridLayout); if (d->mPrefCellMinSize.width() != value) { d->mPrefCellMinSize.setWidth(value); invalidate(); } } /************************************************ ************************************************/ QSize GridLayout::cellMaximumSize() const { Q_D(const GridLayout); return d->mPrefCellMaxSize; } /************************************************ ************************************************/ void GridLayout::setCellMaximumSize(QSize maxSize) { Q_D(GridLayout); if (d->mPrefCellMaxSize != maxSize) { d->mPrefCellMaxSize = maxSize; invalidate(); } } /************************************************ ************************************************/ void GridLayout::setCellMaximumHeight(int value) { Q_D(GridLayout); if (d->mPrefCellMaxSize.height() != value) { d->mPrefCellMaxSize.setHeight(value); invalidate(); } } /************************************************ ************************************************/ void GridLayout::setCellMaximumWidth(int value) { Q_D(GridLayout); if (d->mPrefCellMaxSize.width() != value) { d->mPrefCellMaxSize.setWidth(value); invalidate(); } } /************************************************ ************************************************/ void GridLayout::setCellFixedSize(QSize size) { Q_D(GridLayout); if (d->mPrefCellMinSize != size || d->mPrefCellMaxSize != size) { d->mPrefCellMinSize = size; d->mPrefCellMaxSize = size; invalidate(); } } /************************************************ ************************************************/ void GridLayout::setCellFixedHeight(int value) { Q_D(GridLayout); if (d->mPrefCellMinSize.height() != value || d->mPrefCellMaxSize.height() != value) { d->mPrefCellMinSize.setHeight(value); d->mPrefCellMaxSize.setHeight(value); invalidate(); } } /************************************************ ************************************************/ void GridLayout::setCellFixedWidth(int value) { Q_D(GridLayout); if (d->mPrefCellMinSize.width() != value || d->mPrefCellMaxSize.width() != value) { d->mPrefCellMinSize.setWidth(value); d->mPrefCellMaxSize.setWidth(value); invalidate(); } } /************************************************ ************************************************/ QSize GridLayout::sizeHint() const { Q_D(const GridLayout); if (!d->mIsValid) const_cast(d)->updateCache(); return QSize(d->cols() * d->mCellSizeHint.width(), d->rows() * d->mCellSizeHint.height()); } /************************************************ ************************************************/ void GridLayout::setGeometry(const QRect &geometry) { Q_D(GridLayout); const bool visual_h_reversed = parentWidget() && parentWidget()->isRightToLeft(); QLayout::setGeometry(geometry); const QPoint occupied_start = visual_h_reversed ? geometry.topRight() : geometry.topLeft(); d->mOccupiedGeometry.setTopLeft(occupied_start); d->mOccupiedGeometry.setBottomRight(occupied_start); if (!d->mIsValid) d->updateCache(); int y = geometry.top(); int x = geometry.left(); // For historical reasons QRect::right returns left() + width() - 1 // and QRect::bottom() returns top() + height() - 1; // So we use left() + height() and top() + height() // // http://qt-project.org/doc/qt-4.8/qrect.html const int maxX = geometry.left() + geometry.width(); const int maxY = geometry.top() + geometry.height(); const bool stretch_h = d->mStretch.testFlag(StretchHorizontal); const bool stretch_v = d->mStretch.testFlag(StretchVertical); const int cols = d->cols(); int itemWidth = 0; if (stretch_h && 0 < cols) itemWidth = qMin(geometry.width() / cols, d->mCellMaxSize.width()); else itemWidth = d->mCellSizeHint.width(); itemWidth = qBound(qMin(d->mPrefCellMinSize.width(), maxX), itemWidth, d->mPrefCellMaxSize.width()); const int widthRemain = stretch_h && 0 < itemWidth ? geometry.width() % itemWidth : 0; const int rows = d->rows(); int itemHeight = 0; if (stretch_v && 0 < rows) itemHeight = qMin(geometry.height() / rows, d->mCellMaxSize.height()); else itemHeight = d->mCellSizeHint.height(); itemHeight = qBound(qMin(d->mPrefCellMinSize.height(), maxY), itemHeight, d->mPrefCellMaxSize.height()); const int heightRemain = stretch_v && 0 < itemHeight ? geometry.height() % itemHeight : 0; #if 0 qDebug() << "** GridLayout::setGeometry *******************************"; qDebug() << "Geometry:" << geometry; qDebug() << "CellSize:" << d->mCellSizeHint; qDebug() << "Constraints:" << "min" << d->mPrefCellMinSize << "max" << d->mPrefCellMaxSize; qDebug() << "Count" << count(); qDebug() << "Cols:" << d->cols() << "(" << d->mColumnCount << ")"; qDebug() << "Rows:" << d->rows() << "(" << d->mRowCount << ")"; qDebug() << "Stretch:" << "h:" << (d->mStretch.testFlag(StretchHorizontal)) << " v:" << (d->mStretch.testFlag(StretchVertical)); qDebug() << "Item:" << "h:" << itemHeight << " w:" << itemWidth; #endif if (d->mDirection == LeftToRight) { int height = itemHeight, lastHeight = height; #if (QT_VERSION < QT_VERSION_CHECK(5,7,0)) for(int i=0;imItems.size();i++){ QLayoutItem *item=d->mItems[i]; #endif #if (QT_VERSION >= QT_VERSION_CHECK(5,7,0)) for (QLayoutItem *item : qAsConst(d->mItems)){ #endif if (!item->widget() || item->widget()->isHidden()) continue; int width = itemWidth; if(item->widget()) { width = item->widget()->width(); height = item->widget()->height(); } if (x + width > maxX) { x = geometry.left(); y += lastHeight; } const int left = visual_h_reversed ? geometry.left() + geometry.right() - x - width + 1 : x; d->setItemGeometry(item, QRect(left, y, width, height)); x += width; lastHeight = height; } } else { int width = itemWidth; #if (QT_VERSION < QT_VERSION_CHECK(5,7,0)) for(int i=0;imItems.size();i++) { QLayoutItem *item=d->mItems[i]; #endif #if (QT_VERSION >= QT_VERSION_CHECK(5,7,0)) for (QLayoutItem *item : qAsConst(d->mItems)) { #endif if (!item->widget() || item->widget()->isHidden()) continue; int height = itemHeight; if (item->widget()) { height = item->widget()->height(); } if (y + height > maxY) { y = geometry.top(); x += width; width = itemWidth; } const int left = visual_h_reversed ? geometry.left() + geometry.right() - x - width + 1 : x; d->setItemGeometry(item, QRect(left, y, width, height)); y += height; } } d->mAnimate = false; } /************************************************ ************************************************/ QRect GridLayout::occupiedGeometry() const { return d_func()->mOccupiedGeometry; } ukui-panel-4.0.0.4/panel/common/ukuiglobals.h0000644000175000017500000000261114560306203017427 0ustar fengfeng/* BEGIN_COMMON_COPYRIGHT_HEADER * (c)LGPL2+ * * Copyright: 2013 - LXQt team * Authors: * Hong Jen Yee (PCMan) * * Copyright: 2019 Tianjin KYLIN Information Technology Co., Ltd. * * * This program or library is free software; you can redistribute it * and/or modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * You should have received a copy of the GNU Lesser General * Public License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA * * END_COMMON_COPYRIGHT_HEADER */ #ifndef _UKUI_GLOBALS_H_ #define _UKUI_GLOBALS_H_ #include #ifdef COMPILE_LIBUKUI #define UKUI_API Q_DECL_EXPORT #else #define UKUI_API Q_DECL_IMPORT #endif #ifndef QL1S #define QL1S(x) QLatin1String(x) #endif #ifndef QL1C #define QL1C(x) QLatin1Char(x) #endif #ifndef QSL #define QSL(x) QStringLiteral(x) #endif #ifndef QBAL #define QBAL(x) QByteArrayLiteral(x) #endif #endif // _UKUI_GLOBALS_H_ ukui-panel-4.0.0.4/panel/common/ukuigridlayout.h0000644000175000017500000001440314560306203020171 0ustar fengfeng/* BEGIN_COMMON_COPYRIGHT_HEADER * (c)LGPL2+ * * Copyright: 2012 Razor team * Authors: * Alexander Sokoloff * * Copyright: 2019 Tianjin KYLIN Information Technology Co., Ltd. * * * This program or library is free software; you can redistribute it * and/or modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * You should have received a copy of the GNU Lesser General * Public License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA * * END_COMMON_COPYRIGHT_HEADER */ #ifndef UKUIGRIDLAYOUT_H #define UKUIGRIDLAYOUT_H #include #include "ukuiglobals.h" #include namespace UKUi { class GridLayoutPrivate; /** The GridLayout class lays out widgets in a grid. **/ class UKUI_API GridLayout: public QLayout { Q_OBJECT public: /** This enum type is used to describe direction for this grid. **/ enum Direction { LeftToRight, ///< The items are first laid out horizontally and then vertically. TopToBottom ///< The items are first laid out vertically and then horizontally. }; /** This enum type is used to describe stretch. It contains one horizontal and one vertical flags that can be combined to produce the required effect. */ enum StretchFlag { NoStretch = 0, ///< No justifies items StretchHorizontal = 1, ///< Justifies items in the available horizontal space StretchVertical = 2 ///< Justifies items in the available vertical space }; Q_DECLARE_FLAGS(Stretch, StretchFlag) /** Constructs a new GridLayout with parent widget, parent. The layout has one row and zero column initially, and will expand to left when new items are inserted. **/ explicit GridLayout(QWidget *parent = 0); /** Destroys the grid layout. The layout's widgets aren't destroyed. **/ ~GridLayout(); void addItem(QLayoutItem *item); QLayoutItem *itemAt(int index) const; QLayoutItem *takeAt(int index); int count() const; void invalidate(); QSize sizeHint() const; void setGeometry(const QRect &geometry); QRect occupiedGeometry() const; /** Returns the number of rows in this grid. **/ int rowCount() const; /** Sets the number of rows in this grid. If value is 0, then rows count will calculated automatically when new items are inserted. In the most cases you should to set fixed number for one thing, or for rows, or for columns. \sa GridLayout::setColumnCount **/ void setRowCount(int value); /** Returns the number of columns in this grid. **/ int columnCount() const; /** Sets the number of columns in this grid. If value is 0, then columns count will calculated automatically when new items are inserted. In the most cases you should to set fixed number for one thing, or for rows, or for columns. \sa GridLayout::setRowCount **/ void setColumnCount(int value); /** Returns the alignment of this grid. \sa GridLayout::Direction **/ Direction direction() const; /** Sets the direction for this grid. \sa GridLayout::Direction **/ void setDirection(Direction value); /** Returns the stretch flags of this grid. \sa GridLayout::StretchFlag **/ Stretch stretch() const; /** Sets the stretch flags for this grid. \sa GridLayout::StretchFlag **/ void setStretch(Stretch value); /** Moves the item at index position \param from to index position \param to. If \param withAnimation set the reordering will be animated **/ void moveItem(int from, int to, bool withAnimation = false); /** Checks if layout is currently animated after the \sa moveItem() invocation. **/ bool animatedMoveInProgress() const; /** Returns the cells' minimum size. By default, this property contains a size with zero width and height. **/ QSize cellMinimumSize() const; /** Sets the minimum size of all cells to minSize pixels. **/ void setCellMinimumSize(QSize minSize); /** Sets the minimum height of the cells to value without changing the width. Provided for convenience. **/ void setCellMinimumHeight(int value); /** Sets the minimum width of the cells to value without changing the heights. Provided for convenience. **/ void setCellMinimumWidth(int value); /** Returns the cells' maximum size. By default, this property contains a size with zero width and height. **/ QSize cellMaximumSize() const; /** Sets the maximum size of all cells to maxSize pixels. **/ void setCellMaximumSize(QSize maxSize); /** Sets the maximum height of the cells to value without changing the width. Provided for convenience. **/ void setCellMaximumHeight(int value); /** Sets the maximum width of the cells to value without changing the heights. Provided for convenience. **/ void setCellMaximumWidth(int value); /** Sets both the minimum and maximum sizes of the cells to size, thereby preventing it from ever growing or shrinking. **/ void setCellFixedSize(QSize size); /** Sets both the minimum and maximum height of the cells to value without changing the width. Provided for convenience. **/ void setCellFixedHeight(int value); /** Sets both the minimum and maximum width of the cells to value without changing the heights. Provided for convenience. **/ void setCellFixedWidth(int value); private: GridLayoutPrivate* const d_ptr; Q_DECLARE_PRIVATE(GridLayout) }; Q_DECLARE_OPERATORS_FOR_FLAGS(GridLayout::Stretch) } // namespace UKUi #endif // UKUIGRIDLAYOUT_H ukui-panel-4.0.0.4/panel/windownotifier.h0000644000175000017500000000274514560306203016675 0ustar fengfeng/* BEGIN_COMMON_COPYRIGHT_HEADER * (c)LGPL2+ * * Copyright: 2015 LXQt team * Authors: * Palo Kisa * * Copyright: 2019 Tianjin KYLIN Information Technology Co., Ltd. * * * This program or library is free software; you can redistribute it * and/or modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * You should have received a copy of the GNU Lesser General * Public License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA * * END_COMMON_COPYRIGHT_HEADER */ #if !defined(WINDOWNOTIFIER_H) #define WINDOWNOTIFIER_H #include class QWidget; class WindowNotifier : public QObject { Q_OBJECT public: using QObject::QObject; void observeWindow(QWidget * w); inline bool isAnyWindowShown() const { return !mShownWindows.isEmpty(); } virtual bool eventFilter(QObject * watched, QEvent * event) override; signals: void lastHidden(); void firstShown(); private: QList mShownWindows; //!< known shown windows (sorted) }; #endif ukui-panel-4.0.0.4/panel/highlight-effect.h0000644000175000017500000000540114560306203017017 0ustar fengfeng/* * Qt5-UKUI's Library * * Copyright (C) 2020, Tianjin KYLIN Information Technology Co., Ltd. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this library. If not, see . * * Authors: Yue Lan * */ #ifndef HIGHLIGHTEFFECT_H #define HIGHLIGHTEFFECT_H #include #include class QAbstractItemView; class QAbstractButton; class QMenu; class HighLightEffect : public QObject { Q_OBJECT public: enum EffectMode { HighlightOnly, BothDefaultAndHighlit }; Q_ENUM(EffectMode) /*! * \brief setSkipEffect * \param w * \param skip * \details * in ukui-style, some widget such as menu will be set use highlight * icon effect automatically, * but we might not want to compose a special pure color image. * This function is use to skip the effect. */ static void setSkipEffect(QWidget *w, bool skip = true); static bool isPixmapPureColor(const QPixmap &pixmap); static bool setMenuIconHighlightEffect(QMenu *menu, bool set = true, EffectMode mode = HighlightOnly); static bool setViewItemIconHighlightEffect(QAbstractItemView *view, bool set = true, EffectMode mode = HighlightOnly); static bool setButtonIconHighlightEffect(QAbstractButton *button, bool set = true, EffectMode mode = HighlightOnly); static bool isWidgetIconUseHighlightEffect(const QWidget *w); static void setSymoblicColor(const QColor &color); static void setWidgetIconFillSymbolicColor(QWidget *widget, bool fill); static const QColor getCurrentSymbolicColor(); static QPixmap generatePixmap(const QPixmap &pixmap, const QStyleOption *option, const QWidget *widget = nullptr, bool force = false, EffectMode mode = HighlightOnly); static QPixmap filledSymbolicColoredPixmap(const QPixmap &source, const QColor &baseColor); static QPixmap drawSymbolicColoredPixmap(const QPixmap &source); static QIcon drawSymbolicColoredIcon(const QIcon &source); private: explicit HighLightEffect(QObject *parent = nullptr); }; #endif // HIGHLIGHTEFFECT_H ukui-panel-4.0.0.4/plugin-showdesktop/0000755000175000017500000000000014560306221016214 5ustar fengfengukui-panel-4.0.0.4/plugin-showdesktop/showdesktop.cpp0000644000175000017500000000606214560306203021276 0ustar fengfeng/* BEGIN_COMMON_COPYRIGHT_HEADER * (c)LGPL2+ * * Copyright: 2010-2011 Razor team * Authors: * Petr Vanek * * Copyright: 2019 Tianjin KYLIN Information Technology Co., Ltd. * * * This program or library is free software; you can redistribute it * and/or modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * You should have received a copy of the GNU Lesser General * Public License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA * * END_COMMON_COPYRIGHT_HEADER */ //Qt #include #include #include #include #include //Kf5 #include #include #include //panel #include "showdesktop.h" #include "../panel/pluginsettings.h" #define DEFAULT_SHORTCUT "Control+Alt+D" #define DESKTOP_WIDTH (12) #define DESKTOP_WIDGET_HIGHT 100 ShowDesktop::ShowDesktop(const IUKUIPanelPluginStartupInfo &startupInfo) : QWidget(), IUKUIPanelPlugin(startupInfo) { translator(); m_state=NORMAL; this->setToolTip(tr("Show Desktop")); realign(); this->setContextMenuPolicy(Qt::PreventContextMenu); } void ShowDesktop::translator() { QTranslator *translator = new QTranslator(this); translator->load(QLocale(), "showdesktop", "_", SHOWDESKTOP_TRANSLATION_DIR); QCoreApplication::installTranslator(translator); } void ShowDesktop::realign() { if(panel()->isHorizontal()) { this->setFixedSize(DESKTOP_WIDTH,panel()->panelSize()); m_xEndPoint=0; m_yEndPoint=100; } else { this->setFixedSize(panel()->panelSize(),DESKTOP_WIDTH); m_xEndPoint=100; m_yEndPoint=0; } } void ShowDesktop::mousePressEvent(QMouseEvent *) { KWindowSystem::setShowingDesktop(!KWindowSystem::showingDesktop()); } void ShowDesktop::paintEvent(QPaintEvent *) { QStyleOption opt; opt.init(this); QPainter p(this); /*设置画笔的颜色,此处画笔作用与Line,所以必须在drawLine 之前调用*/ p.setPen(QColor(0x62,0x6C,0x6E,0x2f)); switch (m_state) { case NORMAL: p.drawLine(0,0,m_xEndPoint,m_yEndPoint); break; case HOVER: p.setBrush(QBrush(QColor(0xff,0xff,0xff,0x0f))); p.drawLine(0,0,m_xEndPoint,m_yEndPoint); break; default: break; } style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this); } void ShowDesktop::enterEvent(QEvent *event) { m_state=HOVER; update(); } void ShowDesktop::leaveEvent(QEvent *event) { m_state=NORMAL; update(); } #undef DEFAULT_SHORTCUT ukui-panel-4.0.0.4/plugin-showdesktop/CMakeLists.txt0000644000175000017500000000121314560306221020751 0ustar fengfengset(PLUGIN "showdesktop") set(HEADERS showdesktop.h ) set(SOURCES showdesktop.cpp ) #加载翻译文件 file(GLOB TS_FILES "${PROJECT_SOURCE_DIR}/plugin-showdesktop/translation/*.ts" ) #更新翻译文件并创建.qm文件 qt5_create_translation(QM_FILES ${PROJECT_SOURCE_DIR}/plugin-showdesktop ${TS_FILES}) set(${PLUGIN}_QM_FILES ${QM_FILES}) BUILD_UKUI_PLUGIN(${PLUGIN}) #安装翻译文件 set(SHOWDESKTOP_TRANSLATION_DIR "${PACKAGE_DATA_DIR}/plugin-showdesktop/translation") add_compile_definitions(SHOWDESKTOP_TRANSLATION_DIR="${SHOWDESKTOP_TRANSLATION_DIR}") install(FILES ${QM_FILES} DESTINATION ${SHOWDESKTOP_TRANSLATION_DIR}) ukui-panel-4.0.0.4/plugin-showdesktop/resources/0000755000175000017500000000000014560306203020226 5ustar fengfengukui-panel-4.0.0.4/plugin-showdesktop/resources/showdesktop.desktop.in0000644000175000017500000000026414560306203024602 0ustar fengfeng[Desktop Entry] Type=Service ServiceTypes=UKUIPanel/Plugin Name=Show desktop Comment=Minimize all windows and show the desktop Icon=user-desktop #TRANSLATIONS_DIR=../translations ukui-panel-4.0.0.4/plugin-showdesktop/translation/0000755000175000017500000000000014560306221020552 5ustar fengfengukui-panel-4.0.0.4/plugin-showdesktop/translation/showdesktop_zh_CN.ts0000644000175000017500000000050014560365155024563 0ustar fengfeng ShowDesktop Show Desktop 显示桌面 ukui-panel-4.0.0.4/plugin-showdesktop/translation/showdesktop_bo_CN.ts0000644000175000017500000000053614560365155024553 0ustar fengfeng ShowDesktop Show Desktop ཅོག་ངོས་འཆར་བ། ukui-panel-4.0.0.4/plugin-showdesktop/showdesktop.h0000644000175000017500000000406614560306203020745 0ustar fengfeng/* BEGIN_COMMON_COPYRIGHT_HEADER * (c)LGPL2+ * * Copyright: 2010-2011 Razor team * Authors: * Petr Vanek * * Copyright: 2019 Tianjin KYLIN Information Technology Co., Ltd. * * * This program or library is free software; you can redistribute it * and/or modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * You should have received a copy of the GNU Lesser General * Public License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA * * END_COMMON_COPYRIGHT_HEADER */ #ifndef SHOWDESKTOP_H #define SHOWDESKTOP_H #include "../panel/iukuipanelplugin.h" #include #include #include class ShowDesktop : public QWidget, public IUKUIPanelPlugin { Q_OBJECT public: ShowDesktop(const IUKUIPanelPluginStartupInfo &startupInfo); virtual QWidget *widget() { return this; } virtual QString themeId() const { return "ShowDesktop"; } void realign()override; protected: void paintEvent(QPaintEvent *); void enterEvent(QEvent *); void leaveEvent(QEvent *); void mousePressEvent(QMouseEvent *); private: enum showDeskTopState{NORMAL,HOVER}; showDeskTopState m_state; int m_xEndPoint; int m_yEndPoint; private: void translator(); }; class ShowDesktopLibrary: public QObject, public IUKUIPanelPluginLibrary { Q_OBJECT Q_PLUGIN_METADATA(IID "ukui.org/Panel/PluginInterface/3.0") Q_INTERFACES(IUKUIPanelPluginLibrary) public: IUKUIPanelPlugin *instance(const IUKUIPanelPluginStartupInfo &startupInfo) const { return new ShowDesktop(startupInfo); } }; #endif ukui-panel-4.0.0.4/NEWS0000644000175000017500000000013214560306203013041 0ustar fengfeng### ukui-panel 2.0.0 * fork from lxqt-panel ### ukui-panel 1.0.0 * Initial release.