Skip to content

Instantly share code, notes, and snippets.

@devel787
Last active October 2, 2015 14:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save devel787/a82c250871d3ba80ec0a to your computer and use it in GitHub Desktop.
Save devel787/a82c250871d3ba80ec0a to your computer and use it in GitHub Desktop.
for code review | run under Python 3.4.*
#! /usr/bin/env python
# coding: utf-8
import click
import subprocess
def get_postfix(title):
file_path = '/tmp/yakuake_{}_postfix'.format(title)
try:
with open(file_path, 'r') as f:
postfix_number = int(f.readline())
postfix_number += 1
except FileNotFoundError:
postfix_number = 1
with open(file_path, 'w') as f:
f.write(str(postfix_number))
return '{:02}'.format(postfix_number)
@click.command()
@click.argument('title')
def set_yakuake_title(title):
"""
Set Yakuake title for current active tab.
"""
qbus_cmd = 'qdbus org.kde.yakuake'
compound_title = '**{title}-{postfix}**'.format(
title=title,
postfix=get_postfix(title)
)
session_id_cmd = '{qbus} {active_session}'.format(
qbus=qbus_cmd,
active_session='/yakuake/sessions org.kde.yakuake.activeSessionId'
)
set_tab_title_cmd = '{qbus} {tab_title} `{session_id}` "{title}"'.format(
qbus=qbus_cmd,
tab_title='/yakuake/tabs setTabTitle',
session_id=session_id_cmd,
title=compound_title
)
subprocess.call(set_tab_title_cmd, shell=True)
if __name__ == '__main__':
set_yakuake_title()
@o3bvv
Copy link

o3bvv commented Mar 2, 2015

В общем-то нормально, но лично я бы немного подправил бы:

  • subprocess.call можно заменить на os.system.
  • Не совсем понятно, зачем нужны лидирующие подчеркивания в локальных переменных.
  • Я бы 12-18 заменил на try...except.
  • Ещё можно подумать над тем, как формировать file_path. Можно было бы сгруппировать все файлы в одну директорию, чтоб не засорять листинг /tmp.
  • В питоне < 2.7 форматирование с пустыми "{}" не прокатит. Для читаемости можно было бы использовать именованые парамтетры.

@devel787
Copy link
Author

devel787 commented Mar 2, 2015

Спасибо.
Подправил и "перезалил" новую версию.

subprocess.call можно заменить на os.system

Можно, но в документации рекомендуют обратное действие
https://docs.python.org/3.4/library/subprocess.html#replacing-os-system

Не совсем понятно, зачем нужны лидирующие подчеркивания в локальных переменных.

Убрал.

Я бы 12-18 заменил на try...except.

Заменил.

Ещё можно подумать над тем, как формировать file_path. Можно было бы сгруппировать все файлы в одну директорию, чтоб не засорять листинг /tmp.

Не хочу каждый раз после перезагрузки создавать папку.
Текущая реализация в данный момент устраивает.

В питоне < 2.7 форматирование с пустыми "{}" не прокатит.

Забыл сразу написать, что запускает под Python 3.4.*.

Для читаемости можно было бы использовать именованые парамтетры.

Добавил.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment