【小工具】一键隐藏/显示MacOS的应用图标

简介: 【小工具】一键隐藏/显示MacOS的应用图标

不知诸位有没有这样一个需求,当MacOS打开应用多的时候,Dock栏可能会很拥挤:

11.jpg

那么需求就产生了,能不能将某些软件的图标在Dock隐藏掉,同时也不影响日常使用呢?有的,接下来即将给出成熟的解决方案。


此篇文章的灵感来源于昨天的推文:微信钉钉消息监控处理机器人,因为其中有部分代码操作了应用的Info.plist文件,所以便想到做这个小工具,本工具只支持MacOS。


开始


这个工具很简单,我会直接说明解决方案以及全部代码,同时也会说明一下如何编写一个第三方包并上传到pypi。


话说昨天需要提取应用包名的时候,研究了下每个应用下面的Info.plist文件,不说其他的,发现其中的LSUIElement可以控制软件的图标是否可以在Dock里面显示。


那么这就是上述问题的解决方案,只要修改LSUIElement的值即可:


如果需要隐藏图标:设置LSUIElement为1


如果需要显示图标:去掉LSUIElement即可


因此核心逻辑还是很简单的,接下来开始编码。


编码


再写一个项目之前,我们需要想清楚手上做的项目最终目的是什么?然后再想想怎么优雅得实现:


目的:一个终端工具,可以实现对软件进行图标显示与隐藏


实现:用Python实现一个终端工具


好,第一步,建立项目:https://github.com/howie6879/leaf ,顺便附上说明:


A CLI tool for hiding the application’s icon in the Dock. (MacOS Dock栏软件图标隐藏终端工具)


构建项目目录结构:

├── LICENSE
├── Pipfile
├── README.md
├── leaf 
│   ├── __init__.py
│   └── cli.py # 执行脚本
└── setup.py # 项目打包文件
1 directory, 6 files

一目了然,其中cli.py核心代码如下:

def change_app_plist(app_name: str, status: bool = True):
    """
    Used for hiding/displaying the application's icon
    eg: leaf WeChat --status=1
    :param app_name:
    :param status:
    :return:
    """
    info_plist = PLIST_PATH_TEM.format(app_name)
    if os.path.exists(info_plist):
        with open(info_plist, "rb") as fp:
            pl = plistlib.load(fp)
            if status:
                pl["LSUIElement"] = "1"
            else:
                pl.pop("LSUIElement", '')
        with open(info_plist, "wb") as fp:
            plistlib.dump(pl, fp)
            print(f"{app_name} icon is {'hidden' if status else 'shows'} successfully, Please restart it.")
    else:
        output = f"Please make sure the app_name is correct, {app_name} is not in /Applications."
        print("\033[1;31;40m" + output)
def execute():
    fire.Fire(change_app_plist)

还是一目了然,写完可以Debug下,测试功能是否完善,这里介绍一下用法:


隐藏微信图标:

leaf WeChat

重启微信,看看效果:

12.jpg

图标果然隐藏了,哈哈~


如果想恢复,执行显示微信图标:

leaf WeChat --status=0

开源


测试结束后,目前还是只能自己使用。


这不行,不符合我们程序员的开源精神,上传到 https://pypi.org/ 吧(没注册的要先注册才能上传),第一步就是建立setup.py

from setuptools import find_packages, setup
setup(
    name='leaf-cli',
    version='0.0.1',
    description="A CLI tool for hiding the application's icon in the Dock. (MacOS Dock栏软件图标隐藏终端工具)",
    install_requires=['fire'],
    author='Howie Hu',
    author_email='xiaozizayang@gmail.com',
    url="https://github.com/howie6879/leaf",
    packages=find_packages(),
    entry_points={
        'console_scripts': [
            'leaf = leaf.cli:execute'
        ]
    },
)

上述起到一个项目注册的作用,比如申明项目名称等一系列基本信息、依赖包等。


setup.py建立好之后,接下来就是上传了,我推荐使用 https://pypi.org/project/twine/ 包,简单易用:

# 打包
python setup.py sdist bdist_wheel
# 上传
twine upload --repository-url https://test.pypi.org/legacy/ dist/*

传成功后,就可以看到你的项目了,接下来就是等着被别人使用,如果你能收获到成就感,那么你就明白程序员的乐趣了。


比如本项目就会出现在 https://pypi.org/project/leaf-cli/


最后


最后自然是总结,本篇推文比较基础,主要讲的是通过实现一键隐藏/显示MacOS的应用图标,演示一个Python第三方包从零到一的过程。


如果你有什么需求,欢迎提出来,一起写好玩的工具,最后附上本项目的傻瓜使用教程:


安装

pip install leaf-cli
# New features
pip install git+https://github.com/howie6879/leaf
leaf-cli --help

隐藏

leaf WeChat

显示

leaf WeChat --status=0


相关文章
|
4月前
|
Web App开发 iOS开发 MacOS
解决macOS 应用安装在下载目录时遇到的 vscode 掉登录和应用无法随机启动的问题
解决macOS 应用安装在下载目录时遇到的 vscode 掉登录和应用无法随机启动的问题
32 0
|
Dart 安全 IDE
Flutter Web实战项目打造真正跨平台应用(windows,android,ios,linux,macos,web)
Flutter Web项目 Flutter 最近发布了 Flutter V2.5.1,其性能得到了很大提升,支持 Web、macOS、Android 和 iOS。 这就是为什么今天我们使用在 Web、macOS 应用、Android 和 iOS 应用上运行的 flutter 创建响应式博客主题。 此外,我们创建了一个具有自定义悬停动画的动画网络菜单。 最后,您将学习如何使用 Flutter 制作响应式应用程序。
485 0
Flutter Web实战项目打造真正跨平台应用(windows,android,ios,linux,macos,web)
|
iOS开发 MacOS
macOS开发之NSTableView的应用详解(三)
macOS开发之NSTableView的应用详解
458 0
|
iOS开发 MacOS 容器
macOS开发之NSTableView的应用详解(二)
macOS开发之NSTableView的应用详解
490 0
|
开发者 iOS开发 MacOS
macOS开发之NSTableView的应用详解(一)
macOS开发之NSTableView的应用详解
633 0
|
iOS开发 MacOS
macOS 下 Visual Studio Code(VSCODE)安装配置及应用
Visual Studio Code 重新定义了 Code 编辑。 在任何操作系统上编辑和调试应用程序内置 Git 支持1000 种以上的扩展免费和开源 为什么使用VSCODE? 我们来看看以下功能: VSCODE 支持多个光标,用于快速同时编辑: 选择光标处的单词以及后面出现的相同单词:收缩/扩展选择: 选择一列: 下载VSCODE 官方下载地址:https://code.
6491 0
|
测试技术 iOS开发 MacOS
Mac OS下应用Python+Selenium实现web自动化测试
在Mac环境下的自动化测试环境搭建这里有一篇亲测通过的文《mac下怎么搭建selenium python环境?》。 不过在这个过程中要注意两点: 1.在终端联网执行命令“sudo pip install –U selenium”如果失败了的话,可以尝试用命令“sudo easy_install selenium”来安装selenium; 2.安装好PyCharm后新建project,Interpreter一定要选对,默认给出的两个可选项很有可能是不对的。
1718 0
|
存储 iOS开发 MacOS
什么是Nib文件?(Nib文件是一种特殊类型的资源文件,它用于保存iPhone OS或Mac OS X应用程序的用户接口)
Nib文件是一种特殊类型的资源文件,它用于保存iPhone OS或Mac OS X应用程序的用户接口。Nib文件是Interface Builder文档。通常您会使用Interface Builder设计应用程序的可视部分-例如窗口或视图。
1757 0
|
Android开发 iOS开发 开发者
Mac OS X 10.9 应用无法启动,提示“来自身份不明的开发者”问题解决
Mac OS X 10.9 应用无法启动,提示“来自身份不明的开发者”问题解决 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循“署名-非商业用途-保持一致”创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS、Android、Html5、Arduino、pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作。
984 0